# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet v2.6.0-test5 -> 1.1374 # arch/i386/kernel/process.c 1.55 -> 1.56 # drivers/pci/hotplug/cpqphp_core.c 1.22 -> 1.23 # fs/xfs/linux/xfs_lrw.c 1.28 -> 1.30 # fs/afs/vnode.h 1.3 -> 1.4 # drivers/net/wireless/wl3501_cs.c 1.70 -> 1.72 # drivers/pci/hotplug/acpiphp_pci.c 1.8 -> 1.9 # fs/xfs/xfs_dir2_node.c 1.9 -> 1.10 # drivers/net/irda/via-ircc.c 1.2 -> 1.5 # drivers/pci/hotplug/ibmphp_pci.c 1.7 -> 1.8 # fs/afs/mount.h 1.1 -> 1.2 # fs/nls/nls_cp1255.c 1.6 -> 1.8 # drivers/pcmcia/cs_internal.h 1.22 -> 1.23 # include/linux/proc_fs.h 1.26 -> 1.27 # arch/ia64/kernel/fsys.S 1.18 -> 1.20 # net/irda/irproc.c 1.6 -> 1.7 # drivers/block/ps2esdi.c 1.67 -> 1.69 # net/irda/ircomm/ircomm_core.c 1.12 -> 1.13 # drivers/isdn/hardware/eicon/s_4bri.c 1.2 -> 1.3 # fs/nls/nls_koi8-r.c 1.4 -> 1.5 # fs/coda/coda_linux.c 1.10 -> 1.14 # drivers/net/irda/nsc-ircc.c 1.27 -> 1.28 # include/linux/kernel.h 1.40 -> 1.41 # arch/i386/kernel/timers/Makefile 1.8 -> 1.9 # arch/arm/def-configs/graphicsmaster 1.8 -> 1.10 arch/arm/configs/graphicsmaster_defconfig (moved) # fs/xfs/xfs_mount.h 1.18 -> 1.21 # net/ipv4/ipvs/ip_vs_app.c 1.1 -> 1.4 # fs/afs/vlclient.c 1.4 -> 1.5 # include/asm-arm/arch-pxa/idp.h 1.2 -> 1.3 # drivers/scsi/imm.h 1.13 -> 1.14 # arch/arm/mach-sa1100/pfs168.c 1.14 -> 1.15 # arch/ppc/kernel/align.c 1.7 -> 1.8 # drivers/serial/8250.h 1.6 -> 1.7 # arch/arm/def-configs/rpc 1.7 -> 1.9 arch/arm/configs/rpc_defconfig (moved) # drivers/net/tc35815.c 1.14 -> 1.15 # arch/parisc/kernel/pci.c 1.11 -> 1.13 # include/asm-ia64/sn/pci/pcibr_private.h 1.8 -> 1.9 # drivers/usb/media/Kconfig 1.3 -> 1.4 # fs/nls/nls_koi8-ru.c 1.5 -> 1.6 # fs/xfs/linux/xfs_sysctl.h 1.10 -> 1.13 # security/security.c 1.8 -> 1.9 # drivers/net/irda/smc-ircc.c 1.19 -> (deleted) # drivers/input/joystick/Kconfig 1.2 -> 1.3 # fs/nls/nls_tis-620.c 1.4 -> (deleted) # include/linux/smb_mount.h 1.3 -> 1.4 # drivers/block/as-iosched.c 1.17 -> 1.21 # net/llc/af_llc.c 1.44 -> 1.50 # net/ipv4/ipvs/ip_vs_sync.c 1.2 -> 1.3 # fs/xfs/linux/xfs_linux.h 1.20 -> 1.22 # include/asm-ia64/sn/pci/pciio.h 1.6 -> 1.7 # arch/arm/lib/io-writesl.S 1.4 -> 1.5 # net/bluetooth/rfcomm/core.c 1.21.3.1 -> 1.30 # include/asm-ppc/processor.h 1.34 -> 1.36 # arch/arm/def-configs/edb7211 1.4 -> 1.6 arch/arm/configs/edb7211_defconfig (moved) # arch/arm/def-configs/pfs168_satft 1.7 -> 1.9 arch/arm/configs/pfs168_satft_defconfig (moved) # net/ipx/ipx_proc.c 1.8 -> 1.9 # drivers/isdn/hardware/eicon/dlist.c 1.2 -> 1.3 # arch/arm/mm/tlb-v3.S 1.6 -> 1.7 # drivers/net/3c501.c 1.19 -> 1.20 # drivers/net/irda/toshoboe.c 1.20 -> (deleted) # arch/ppc64/mm/Makefile 1.5 -> 1.6 # fs/afs/volume.c 1.2 -> 1.3 # fs/reiserfs/file.c 1.22 -> 1.24 # drivers/mtd/mtd_blkdevs.c 1.6 -> 1.7 # arch/arm/def-configs/clps7500 1.4 -> 1.6 arch/arm/configs/clps7500_defconfig (moved) # drivers/parisc/eisa.c 1.8 -> 1.9 # include/net/llc_sap.h 1.14 -> 1.18 # include/asm-ppc64/page.h 1.19 -> 1.20 # include/asm-ppc64/hvcall.h 1.2 -> 1.3 # fs/afs/vlclient.h 1.1 -> 1.2 # include/asm-sparc64/processor.h 1.19 -> 1.20 # arch/arm/def-configs/cerfcube 1.8 -> 1.10 arch/arm/configs/cerfcube_defconfig (moved) # arch/arm/def-configs/trizeps 1.2 -> 1.4 arch/arm/configs/trizeps_defconfig (moved) # include/asm-parisc/bitops.h 1.4 -> 1.5 # drivers/char/n_tty.c 1.17 -> 1.18 # kernel/ksyms.c 1.218 -> 1.219 # drivers/cdrom/gscd.c 1.36 -> 1.37 # include/linux/if_frad.h 1.4 -> 1.5 # arch/arm/def-configs/pfs168_mqvga 1.7 -> 1.9 arch/arm/configs/pfs168_mqvga_defconfig (moved) # drivers/net/sk98lin/h/skdrv1st.h 1.7 -> 1.9 # net/ipv4/ipvs/ip_vs_wrr.c 1.1 -> 1.2 # drivers/net/e1000/e1000.h 1.33 -> 1.37 # net/ipv4/tcp_diag.c 1.10 -> 1.11 # net/bluetooth/hci_event.c 1.6 -> 1.7 # include/asm-arm/arch-pxa/hardware.h 1.3 -> 1.4 # net/rxrpc/krxiod.c 1.5 -> 1.6 # drivers/isdn/hardware/avm/avm_cs.c 1.10 -> 1.11 # drivers/usb/core/config.c 1.6 -> 1.15 # drivers/char/watchdog/i810-tco.c 1.19 -> 1.20 # fs/autofs4/root.c 1.14 -> 1.15 # include/asm-x86_64/signal.h 1.7 -> 1.8 # mm/fremap.c 1.12 -> 1.14 # arch/i386/kernel/cpu/cpufreq/powernow-k7.c 1.26 -> 1.32 # net/ipv4/proc.c 1.14 -> 1.15 # fs/afs/cell.c 1.1 -> 1.2 # drivers/net/wan/cosa.c 1.25 -> 1.26 # drivers/net/tulip/de4x5.c 1.31 -> 1.32 # arch/arm/mm/proc-arm920.S 1.22 -> 1.24 # include/asm-i386/mach-visws/mach_apic.h 1.7 -> 1.8 # fs/intermezzo/inode.c 1.8 -> 1.9 # drivers/sbus/char/bpp.c 1.15 -> 1.16 # net/ipv4/ipvs/ip_vs_sched.c 1.2 -> 1.3 # arch/arm/def-configs/ebsa110 1.7 -> 1.9 arch/arm/configs/ebsa110_defconfig (moved) # drivers/input/serio/serio.c 1.17 -> 1.20 # net/ipv6/anycast.c 1.6 -> 1.8 # fs/xfs/xfs_inum.h 1.2 -> 1.3 # Documentation/modules.txt 1.4 -> (deleted) # drivers/isdn/hardware/eicon/mntfunc.c 1.2 -> 1.3 # include/linux/elevator.h 1.28 -> 1.29 # drivers/char/Kconfig 1.18 -> 1.21 # net/sched/sch_generic.c 1.6 -> 1.7 # include/asm-mips/processor.h 1.12 -> 1.13 # include/linux/swap.h 1.77 -> 1.78 # drivers/net/hamradio/baycom_ser_hdx.c 1.8 -> 1.10 # drivers/pnp/pnpbios/core.c 1.35 -> 1.38 # arch/ia64/Makefile 1.59 -> 1.60 # fs/xfs/pagebuf/page_buf.c 1.60 -> 1.61 # arch/ia64/kernel/efi.c 1.22 -> 1.24 # fs/nls/nls_cp737.c 1.5 -> 1.6 # include/linux/mm.h 1.129 -> 1.130 # include/asm-i386/processor.h 1.53 -> 1.55 # drivers/parisc/dino.c 1.7 -> 1.8 # fs/xfs/xfs_dir2_block.c 1.7 -> 1.8 # drivers/char/agp/sis-agp.c 1.30 -> 1.31 # net/ipv4/ipconfig.c 1.29 -> 1.31 # drivers/serial/8250.c 1.34 -> 1.36 # drivers/net/net_init.c 1.18 -> 1.19 # arch/ia64/sn/io/sn2/pcibr/pcibr_error.c 1.5 -> 1.6 # arch/parisc/defconfig 1.6 -> 1.7 # arch/i386/kernel/apm.c 1.57 -> 1.58 # drivers/net/dgrs.c 1.20 -> 1.22 # arch/arm/def-configs/freebird_new 1.7 -> 1.9 arch/arm/configs/freebird_new_defconfig (moved) # include/asm-ppc/time.h 1.11 -> 1.12 # drivers/isdn/hardware/eicon/os_bri.c 1.2 -> 1.3 # fs/afs/server.c 1.1 -> 1.2 # drivers/net/skfp/skfddi.c 1.16 -> 1.17 # arch/arm/mm/proc-arm1020.S 1.18 -> 1.20 # net/Kconfig 1.21 -> 1.23 # drivers/net/sb1000.c 1.22 -> 1.24 # arch/arm/def-configs/pfs168_sastn 1.7 -> 1.9 arch/arm/configs/pfs168_sastn_defconfig (moved) # security/selinux/include/security.h 1.1 -> 1.2 # fs/proc/Makefile 1.7 -> 1.8 # include/asm-ia64/sn/sn2/shub_mmr_t.h 1.2 -> 1.3 # mm/mlock.c 1.5 -> 1.6 # arch/ia64/sn/io/sn2/pcibr/pcibr_ate.c 1.5 -> 1.6 # net/llc/llc_conn.c 1.30 -> 1.38 # net/ipv4/ip_input.c 1.17 -> 1.19 # drivers/net/wd.c 1.12 -> 1.13 # init/initramfs.c 1.6 -> 1.8 # arch/arm/def-configs/sherman 1.5 -> 1.7 arch/arm/configs/sherman_defconfig (moved) # fs/nls/nls_euc-jp.c 1.5 -> 1.6 # mm/page_alloc.c 1.171 -> 1.172 # drivers/net/wan/comx-proto-lapb.c 1.7 -> 1.8 # include/asm-ppc64/processor.h 1.31 -> 1.32 # fs/xfs/xfs_itable.c 1.4 -> 1.5 # arch/arm/def-configs/anakin 1.6 -> 1.8 arch/arm/configs/anakin_defconfig (moved) # drivers/char/random.c 1.37 -> 1.39 # include/asm-ia64/spinlock.h 1.16 -> 1.18 # arch/arm/def-configs/shannon 1.7 -> 1.9 arch/arm/configs/shannon_defconfig (moved) # net/802/tr.c 1.14 -> 1.15 # arch/arm/def-configs/integrator 1.7 -> 1.9 arch/arm/configs/integrator_defconfig (moved) # arch/arm/nwfpe/softfloat.h 1.3 -> 1.4 # include/asm-ppc/signal.h 1.6 -> 1.7 # arch/ppc64/kernel/semaphore.c 1.2 -> 1.3 # arch/arm/mach-sa1100/simpad.c 1.12 -> 1.13 # security/selinux/Kconfig 1.2 -> 1.3 # net/llc/llc_proc.c 1.14 -> 1.17 # drivers/net/pcmcia/nmclan_cs.c 1.20 -> 1.21 # drivers/net/tokenring/skisa.c 1.12 -> 1.13 # drivers/net/wan/comx-hw-comx.c 1.12 -> 1.13 # drivers/net/lance.c 1.18 -> 1.19 # arch/i386/kernel/cpu/cpufreq/acpi.c 1.9 -> 1.10 # include/linux/sched.h 1.163 -> 1.167 # kernel/fork.c 1.138 -> 1.141 # arch/arm/boot/compressed/head-sa1100.S 1.6 -> 1.8 # drivers/block/ll_rw_blk.c 1.212 -> 1.214 # drivers/net/Space.c 1.34 -> 1.36 # kernel/sysctl.c 1.52 -> 1.53 # kernel/sys.c 1.55 -> 1.56 # arch/arm/kernel/ptrace.c 1.19 -> 1.20 # net/sched/estimator.c 1.2 -> 1.3 # drivers/net/wireless/airo.c 1.75 -> 1.77 # drivers/cpufreq/cpufreq_userspace.c 1.8 -> 1.10 # drivers/pci/hotplug/ibmphp.h 1.9 -> 1.10 # include/linux/writeback.h 1.21 -> 1.23 # include/asm-ia64/unistd.h 1.35 -> 1.36 # arch/sparc/kernel/sun4d_smp.c 1.12 -> 1.13 # net/rxrpc/krxtimod.c 1.7 -> 1.8 # include/linux/serial_core.h 1.26 -> 1.28 # fs/coda/dir.c 1.24 -> 1.26 # arch/ppc64/kernel/chrp_setup.c 1.30 -> 1.31 # include/asm-arm26/signal.h 1.1 -> 1.2 # drivers/net/wan/sdla_ft1.c 1.7 -> 1.8 # include/asm-ia64/signal.h 1.9 -> 1.11 # arch/arm/def-configs/lubbock 1.4 -> 1.6 arch/arm/configs/lubbock_defconfig (moved) # drivers/net/tlan.c 1.27 -> 1.28 # include/asm-arm/system.h 1.18 -> 1.19 # drivers/atm/firestream.c 1.22 -> 1.24 # fs/smbfs/inode.c 1.43 -> 1.44 # arch/arm/kernel/asm-offsets.c 1.4 -> 1.6 # fs/dcache.c 1.60 -> 1.61 # arch/arm/lib/lib1funcs.S 1.3 -> 1.4 # include/net/rose.h 1.5 -> 1.6 # sound/oss/ac97_codec.c 1.17 -> 1.18 # drivers/isdn/hardware/eicon/divasmain.c 1.11 -> 1.15 # include/asm-parisc/io.h 1.4 -> 1.5 # include/net/llc_actn.h 1.3 -> (deleted) # fs/nls/nls_iso8859-6.c 1.5 -> 1.6 # drivers/serial/sa1100.c 1.22 -> 1.23 # fs/proc/proc_misc.c 1.89 -> 1.91 # include/asm-arm/mmu.h 1.3 -> 1.4 # arch/ppc64/Makefile 1.28 -> 1.32 # sound/core/ioctl32/ioctl32.c 1.17 -> 1.18 # include/rxrpc/call.h 1.2 -> 1.3 # include/asm-arm/arch-pxa/irqs.h 1.3 -> 1.4 # net/llc/llc_stat.c 1.3 -> (deleted) # include/asm-arm/glue.h 1.6 -> 1.8 # drivers/net/3c515.c 1.23 -> 1.25 # arch/ia64/hp/common/sba_iommu.c 1.29 -> 1.32 # include/asm-h8300/processor.h 1.4 -> 1.5 # drivers/net/sk98lin/skge.c 1.25 -> 1.27 # drivers/net/wan/lmc/lmc_ver.h 1.4 -> 1.5 # arch/ppc64/kernel/rtas.c 1.11 -> 1.12 # drivers/block/floppy.c 1.88 -> 1.90 # arch/i386/Kconfig 1.75 -> 1.76 # include/asm-i386/uaccess.h 1.27 -> 1.28 # arch/ia64/sn/kernel/irq.c 1.8 -> 1.9 # drivers/pci/hotplug/ibmphp_ebda.c 1.12 -> 1.13 # drivers/pci/hotplug/cpci_hotplug.h 1.3 -> 1.4 # include/linux/elf.h 1.24 -> 1.25 # fs/jfs/jfs_imap.c 1.25 -> 1.26 # arch/arm/def-configs/freebird 1.7 -> 1.9 arch/arm/configs/freebird_defconfig (moved) # net/x25/x25_proc.c 1.5 -> 1.6 # arch/arm/def-configs/lusl7200 1.6 -> 1.8 arch/arm/configs/lusl7200_defconfig (moved) # net/ipv4/udp.c 1.47 -> 1.50 # arch/arm/def-configs/iq80310 1.16 -> 1.18 arch/arm/configs/iq80310_defconfig (moved) # include/asm-i386/signal.h 1.8 -> 1.9 # include/asm-arm/arch-sa1100/serial.h 1.3 -> 1.4 # fs/devfs/base.c 1.103 -> 1.104 # include/asm-arm/page.h 1.12 -> 1.13 # arch/i386/kernel/traps.c 1.57 -> 1.58 # init/main.c 1.107 -> 1.108 # arch/arm/def-configs/cerfpda 1.8 -> 1.10 arch/arm/configs/cerfpda_defconfig (moved) # include/linux/coda_linux.h 1.10 -> 1.13 # fs/afs/mntpt.c 1.3 -> 1.4 # drivers/net/wan/cycx_x25.c 1.18 -> 1.19 # include/asm-i386/numnodes.h 1.4 -> 1.5 # fs/nls/Makefile 1.8 -> 1.9 # Documentation/networking/ifenslave.c 1.7 -> 1.8 # drivers/parisc/ccio-dma.c 1.12 -> 1.13 # include/asm-m68k/signal.h 1.4 -> 1.5 # drivers/usb/class/usblp.c 1.59 -> 1.60 # arch/mips/kernel/setup.c 1.12 -> 1.13 # include/net/bluetooth/l2cap.h 1.8 -> 1.9 # drivers/usb/Kconfig 1.3 -> 1.4 # net/llc/llc_pdu.c 1.7 -> 1.10 # arch/arm/mm/cache-v4wt.S 1.1 -> 1.2 # net/bluetooth/af_bluetooth.c 1.21.1.1 -> 1.23 # scripts/modpost.c 1.13 -> 1.14 # drivers/pcmcia/sa11xx_core.c 1.12 -> 1.13 # net/llc/llc_evnt.c 1.7 -> (deleted) # arch/sparc/lib/memset.S 1.2 -> 1.3 # include/asm-ia64/sn/nodepda.h 1.7 -> 1.9 # fs/xfs/xfs_vfsops.c 1.39 -> 1.44 # drivers/parisc/iosapic.c 1.6 -> 1.7 # include/asm-sparc64/vga.h 1.1 -> 1.2 # drivers/char/agp/nvidia-agp.c 1.16 -> 1.17 # drivers/net/wan/sdla_ppp.c 1.26 -> 1.27 # arch/arm/mach-l7200/core.c 1.6 -> 1.7 # kernel/Makefile 1.34 -> 1.35 # arch/i386/kernel/cpu/cpufreq/Kconfig 1.8 -> 1.9 # arch/parisc/vmlinux.lds.S 1.14 -> 1.15 arch/parisc/kernel/vmlinux.lds.S (moved) # net/ipv4/netfilter/ip_nat_amanda.c 1.4 -> 1.5 # net/ax25/ax25_uid.c 1.5 -> 1.6 # arch/mips/kernel/mips_ksyms.c 1.10 -> 1.11 # arch/ppc/kernel/traps.c 1.23 -> 1.24 # net/802/p8022.c 1.6 -> 1.7 # drivers/cpufreq/cpufreq.c 1.56 -> 1.59 # arch/ia64/kernel/time.c 1.31 -> 1.33 # arch/arm/mach-sa1100/h3600.c 1.14 -> 1.15 # drivers/net/ibmlana.c 1.8 -> 1.10 # arch/i386/boot98/compressed/misc.c 1.1 -> 1.2 # arch/ppc64/kernel/ppc_ksyms.c 1.22 -> 1.23 # sound/oss/dmasound/awacs_defs.h 1.2 -> 1.3 # drivers/atm/eni.c 1.22 -> 1.23 # drivers/char/watchdog/amd7xx_tco.c 1.6 -> 1.7 # arch/i386/kernel/srat.c 1.3 -> 1.4 # sound/oss/dmasound/Makefile 1.6 -> 1.7 # include/linux/blkdev.h 1.126 -> 1.127 # net/ipv6/ip6_flowlabel.c 1.9 -> 1.12 # drivers/net/fc/iph5526.c 1.28 -> 1.29 # drivers/isdn/hardware/eicon/capimain.c 1.5 -> 1.6 # drivers/block/Kconfig 1.8 -> 1.9 # arch/arm/mm/fault-armv.c 1.22 -> 1.23 # fs/ext2/symlink.c 1.4 -> 1.5 # drivers/atm/zatm.c 1.15 -> 1.16 # drivers/input/mouse/psmouse-base.c 1.26 -> 1.32 # fs/xfs/xfs_dir.c 1.9 -> 1.10 # arch/arm/mm/copypage-v4wt.S 1.2 -> 1.3 # arch/sh/boot/compressed/misc.c 1.1 -> 1.2 # arch/i386/kernel/cpu/mtrr/if.c 1.8 -> 1.9 # drivers/net/pcmcia/3c574_cs.c 1.24 -> 1.25 # net/rxrpc/krxsecd.c 1.6 -> 1.7 # drivers/net/wan/sdladrv.c 1.10 -> 1.13 # drivers/serial/core.c 1.68 -> 1.70 drivers/serial/serial_core.c (moved) # drivers/net/bonding/bond_alb.h 1.1 -> 1.2 # net/llc/llc_actn.c 1.7 -> (deleted) # drivers/net/e1000/e1000_osdep.h 1.12 -> 1.13 # drivers/input/joystick/db9.c 1.8 -> 1.9 # drivers/macintosh/mediabay.c 1.9 -> 1.10 # Documentation/00-INDEX 1.10 -> 1.11 # drivers/net/rrunner.c 1.21 -> 1.23 # arch/arm/def-configs/jornada720 1.9 -> 1.11 arch/arm/configs/jornada720_defconfig (moved) # fs/xfs/xfs_fs.h 1.7 -> 1.8 # include/asm-parisc/uaccess.h 1.3 -> 1.4 # arch/arm/mm/tlb-v4wbi.S 1.1 -> 1.2 # drivers/net/wan/comx-hw-munich.c 1.13 -> 1.14 # net/bluetooth/sco.c 1.20.1.1 -> 1.22 # drivers/scsi/NCR5380.c 1.20 -> 1.21 # arch/ia64/kernel/smpboot.c 1.38 -> 1.39 # arch/arm/def-configs/iq80321 1.4 -> 1.6 arch/arm/configs/iq80321_defconfig (moved) # kernel/softirq.c 1.44 -> 1.45 # net/irda/discovery.c 1.5 -> 1.6 # fs/xfs/xfs_types.h 1.8 -> 1.9 # drivers/net/wan/Kconfig 1.12 -> 1.13 # drivers/net/wan/dscc4.c 1.46 -> 1.48 # drivers/net/bonding/bonding.h 1.2 -> 1.5 # drivers/mtd/maps/sa1100-flash.c 1.12 -> 1.13 # net/irda/irlap_frame.c 1.13 -> 1.14 # fs/nls/nls_iso8859-14.c 1.5 -> 1.6 # drivers/net/skfp/h/targetos.h 1.1 -> 1.3 # include/asm-sparc64/signal.h 1.9 -> 1.10 # drivers/isdn/hardware/eicon/io.c 1.2 -> 1.3 # drivers/pcmcia/cs.c 1.58.1.1 -> 1.63 # drivers/atm/lanai.c 1.17 -> 1.18 # include/asm-arm/pgtable.h 1.17 -> 1.19 # include/asm-i386/timer.h 1.10 -> 1.11 # drivers/char/watchdog/alim1535_wdt.c 1.1 -> 1.2 # arch/ia64/kernel/entry.S 1.49 -> 1.51 # drivers/net/tokenring/abyss.c 1.11 -> 1.12 # arch/arm/def-configs/h3600 1.8 -> 1.10 arch/arm/configs/h3600_defconfig (moved) # fs/fat/file.c 1.21 -> 1.22 # fs/xfs/xfs_alloc.c 1.11 -> 1.12 # net/bluetooth/hci_core.c 1.17 -> 1.18 # include/asm-generic/cpumask_up.h 1.2 -> 1.3 # include/asm-v850/processor.h 1.6 -> 1.7 # Documentation/networking/bonding.txt 1.10 -> 1.11 # drivers/pcmcia/cardbus.c 1.29 -> 1.30 # arch/arm26/boot/compressed/misc.c 1.1 -> 1.2 # drivers/net/tokenring/Kconfig 1.7 -> 1.9 # net/rxrpc/internal.h 1.4 -> 1.5 # fs/afs/main.c 1.3 -> 1.4 # arch/ppc64/defconfig 1.29 -> 1.31 # drivers/net/ni65.c 1.17 -> 1.19 # fs/xfs/linux/xfs_super.h 1.21 -> 1.22 # drivers/pci/hotplug/ibmphp_hpc.c 1.13 -> 1.14 # drivers/char/mwave/mwavedd.c 1.11 -> 1.12 # arch/arm/mach-pxa/generic.c 1.8 -> 1.9 # fs/nls/nls_cp857.c 1.5 -> 1.6 # arch/i386/kernel/cpu/intel.c 1.21 -> 1.22 # crypto/proc.c 1.3 -> 1.4 # include/net/syncppp.h 1.4 -> 1.5 # include/asm-i386/srat.h 1.3 -> 1.5 # fs/smbfs/Makefile 1.7 -> 1.8 # drivers/pcmcia/sa1111_generic.c 1.18 -> 1.20 # drivers/net/mace.c 1.15 -> 1.17 # drivers/eisa/eisa-bus.c 1.11 -> 1.12 # fs/xfs/linux/xfs_stats.h 1.4 -> 1.5 # drivers/net/tokenring/lanstreamer.h 1.3 -> 1.5 # scripts/mkconfigs 1.3 -> 1.5 # net/irda/iriap.c 1.16 -> 1.17 # net/atm/proc.c 1.22 -> 1.30 # net/ipv4/netfilter/ipt_physdev.c 1.8 -> 1.9 # drivers/net/wan/comx-proto-fr.c 1.12 -> 1.13 # arch/ia64/sn/io/machvec/pci_dma.c 1.12 -> 1.13 # drivers/serial/clps711x.c 1.15 -> 1.16 # arch/i386/kernel/reboot.c 1.11 -> 1.12 # net/ipv4/ipvs/ip_vs_proto_tcp.c 1.1 -> 1.2 # arch/arm/def-configs/epxa10db 1.8 -> 1.10 arch/arm/configs/epxa10db_defconfig (moved) # include/rxrpc/message.h 1.1 -> 1.2 # include/rxrpc/packet.h 1.1 -> 1.2 # fs/nls/nls_cp932.c 1.5 -> 1.7 # fs/jbd/transaction.c 1.75 -> 1.76 # drivers/pnp/pnpbios/pnpbios.h 1.2 -> 1.5 # arch/arm/def-configs/a5k 1.5 -> 1.7 arch/arm/configs/a5k_defconfig (moved) # drivers/parisc/led.c 1.10 -> 1.11 # net/ipv4/netfilter/ip_nat_tftp.c 1.4 -> 1.5 # include/asm-ia64/sn/router.h 1.5 -> 1.6 # arch/arm/kernel/entry-armv.S 1.33 -> 1.34 # drivers/usb/gadget/Kconfig 1.5 -> 1.6 # net/bridge/br_forward.c 1.11 -> 1.12 # arch/i386/kernel/mpparse.c 1.49 -> 1.50 # drivers/isdn/hisax/sedlbauer_cs.c 1.12 -> 1.13 # include/asm-ia64/uaccess.h 1.10 -> 1.11 # include/asm-ia64/sn/ksys/l1.h 1.6 -> 1.7 # arch/arm/mm/tlb-v4wb.S 1.7 -> 1.8 # drivers/isdn/hardware/eicon/divacapi.h 1.1 -> 1.2 # include/rxrpc/types.h 1.1 -> 1.2 # include/linux/nls.h 1.3 -> 1.4 # arch/arm/mach-integrator/impd1.c 1.2 -> 1.3 # drivers/video/i810/i810_main.c 1.12 -> 1.14 # include/asm-arm/arch-clps711x/system.h 1.2 -> 1.3 # fs/reiserfs/inode.c 1.84 -> 1.85 # net/ipv4/tcp_ipv4.c 1.65 -> 1.67 # include/asm-mips/signal.h 1.5 -> 1.6 # arch/arm/nwfpe/fpopcode.h 1.6 -> 1.7 # arch/arm/def-configs/neponset 1.13 -> 1.15 arch/arm/configs/neponset_defconfig (moved) # fs/xfs/linux/xfs_iops.c 1.34 -> 1.35 # fs/char_dev.c 1.24 -> 1.25 # net/8021q/vlanproc.c 1.14 -> 1.15 # arch/i386/kernel/io_apic.c 1.78 -> 1.80 # drivers/pci/hotplug/acpiphp_glue.c 1.16 -> 1.17 # include/asm-sh/processor.h 1.12 -> 1.13 # arch/arm/mm/tlb-v4.S 1.7 -> 1.9 # net/decnet/dn_dev.c 1.18 -> 1.19 # drivers/net/sunhme.c 1.42 -> 1.43 # drivers/usb/media/vicam.c 1.39 -> 1.40 # arch/sparc64/defconfig 1.98 -> 1.99 # arch/parisc/kernel/sys_parisc32.c 1.18 -> 1.19 # arch/arm/def-configs/assabet 1.10 -> 1.12 arch/arm/configs/assabet_defconfig (moved) # fs/xfs/linux/xfs_vnode.c 1.16 -> 1.19 # include/asm-ia64/sn/ioc3.h 1.3 -> (deleted) # include/asm-parisc/atomic.h 1.2 -> 1.3 # fs/afs/inode.c 1.5 -> 1.6 # drivers/cdrom/sonycd535.c 1.38 -> 1.39 # mm/filemap.c 1.206 -> 1.207 # arch/arm/def-configs/footbridge 1.9 -> 1.11 arch/arm/configs/footbridge_defconfig (moved) # drivers/input/mouse/synaptics.c 1.2 -> 1.4 # include/asm-ppc64/ioctl.h 1.1 -> 1.2 # sound/oss/dmasound/dmasound_awacs.c 1.14 -> 1.15 # kernel/configs.c 1.3 -> 1.5 # fs/afs/dir.c 1.6 -> 1.7 # fs/afs/vlocation.c 1.1 -> 1.2 # drivers/char/pcmcia/synclink_cs.c 1.25 -> 1.26 # drivers/net/wan/sbni.c 1.22 -> 1.24 # fs/xfs/xfs_mount.c 1.33 -> 1.35 # drivers/pci/hotplug/cpqphp_ctrl.c 1.12 -> 1.13 # include/asm-ia64/numa.h 1.5 -> 1.6 # fs/nls/nls_cp855.c 1.5 -> 1.6 # fs/nls/nls_iso8859-3.c 1.5 -> 1.6 # sound/oss/forte.c 1.4 -> 1.5 # include/asm-ia64/processor.h 1.50 -> 1.51 # include/asm-i386/mach-generic/mach_apic.h 1.4 -> 1.5 # security/capability.c 1.20 -> 1.21 # include/asm-ppc64/mmu_context.h 1.6 -> 1.7 # arch/arm/def-configs/omnimeter 1.6 -> 1.8 arch/arm/configs/omnimeter_defconfig (moved) # net/atm/ipcommon.c 1.2 -> 1.3 # arch/arm/mm/cache-v4.S 1.1 -> 1.2 # include/asm-h8300/signal.h 1.1 -> 1.2 # drivers/atm/uPD98402.c 1.5 -> 1.7 # include/asm-arm/arch-iop3xx/irqs.h 1.5 -> 1.6 # drivers/isdn/hardware/eicon/di.c 1.2 -> 1.3 # arch/arm/Makefile 1.48 -> 1.49 # drivers/isdn/hardware/eicon/divasi.c 1.8 -> 1.9 # sound/oss/rme96xx.c 1.16 -> 1.17 # ipc/sem.c 1.23 -> 1.24 # drivers/net/e1000/e1000_main.c 1.80 -> 1.88 # arch/sparc64/mm/init.c 1.49 -> 1.50 # include/asm-ia64/sn/hcl.h 1.6 -> 1.7 # drivers/pci/hotplug/pci_hotplug.h 1.9 -> 1.10 # drivers/char/hw_random.c 1.11 -> 1.12 # arch/arm/nwfpe/fpa11.c 1.13 -> 1.14 # drivers/pnp/isapnp/proc.c 1.11 -> 1.12 # fs/nls/nls_iso8859-5.c 1.5 -> 1.6 # drivers/net/irda/w83977af_ir.c 1.21 -> 1.22 # fs/nls/nls_cp874.c 1.5 -> 1.7 # drivers/net/hp100.c 1.19 -> 1.21 # fs/exec.c 1.94 -> 1.96 # include/linux/pnpbios.h 1.10 -> 1.12 # arch/arm/def-configs/system3 1.7 -> 1.9 arch/arm/configs/system3_defconfig (moved) # fs/xfs/xfs_acl.c 1.7 -> 1.8 # include/asm-v850/signal.h 1.3 -> 1.4 # net/llc/llc_main.c 1.33 -> 1.45 net/llc/llc_station.c (moved) # drivers/net/pcmcia/xirc2ps_cs.c 1.27 -> 1.28 # drivers/net/wireless/ray_cs.c 1.21 -> 1.23 # fs/eventpoll.c 1.23 -> 1.24 # drivers/pci/hotplug/acpiphp_res.c 1.4 -> 1.5 # drivers/isdn/hardware/eicon/debuglib.c 1.1 -> 1.2 # arch/arm/kernel/bios32.c 1.26 -> 1.27 # net/ipv6/raw.c 1.41 -> 1.44 # mm/fadvise.c 1.7 -> 1.8 # arch/parisc/kernel/irq.c 1.15 -> 1.17 # include/net/llc_main.h 1.11 -> (deleted) # fs/nls/nls_cp936.c 1.4 -> 1.6 # kernel/signal.c 1.95 -> 1.96 # arch/alpha/boot/misc.c 1.1 -> 1.2 # fs/coda/file.c 1.11 -> 1.12 # include/asm-ppc64/paca.h 1.8 -> 1.9 # fs/afs/vnode.c 1.2 -> 1.3 # fs/afs/internal.h 1.5 -> 1.6 # net/atm/br2684.c 1.7 -> 1.8 # drivers/char/keyboard.c 1.34 -> 1.35 # arch/arm/def-configs/lart 1.9 -> 1.11 arch/arm/configs/lart_defconfig (moved) # net/ipv6/proc.c 1.17 -> 1.19 # arch/mips/sgi-ip22/ip22-eisa.c 1.1 -> 1.2 # drivers/net/irda/ali-ircc.c 1.21 -> 1.22 # fs/nls/nls_cp860.c 1.5 -> 1.6 # drivers/char/sx.c 1.38 -> 1.39 # net/rxrpc/sysctl.c 1.4 -> 1.5 # net/netsyms.c 1.98 -> 1.99 # fs/afs/super.c 1.5 -> 1.6 # fs/xfs/xfs_cap.c 1.5 -> 1.6 # drivers/net/ne3210.c 1.8 -> 1.9 # drivers/usb/serial/usb-serial.c 1.91 -> 1.92 # fs/xattr.c 1.15 -> 1.16 # drivers/isdn/hardware/eicon/os_4bri.c 1.2 -> 1.3 # include/asm-i386/mach-numaq/mach_apic.h 1.23 -> 1.24 # include/net/bluetooth/bluetooth.h 1.12 -> 1.13 # arch/arm/kernel/semaphore.c 1.7 -> 1.8 # include/asm-ppc64/signal.h 1.6 -> 1.7 # include/linux/console.h 1.8 -> 1.9 # arch/x86_64/boot/compressed/misc.c 1.7 -> 1.8 # arch/arm/nwfpe/fpopcode.c 1.6 -> 1.7 # mm/shmem.c 1.134 -> 1.135 # drivers/usb/input/hiddev.c 1.38 -> 1.40 # include/asm-arm/arch-iop3xx/iop321-irqs.h 1.1 -> 1.2 # net/Makefile 1.22 -> 1.24 # drivers/isdn/hardware/eicon/diva_pci.h 1.2 -> 1.3 # net/rxrpc/peer.c 1.2 -> 1.3 # arch/x86_64/kernel/pci-gart.c 1.21 -> 1.22 # drivers/net/sis900.c 1.44 -> 1.46 # include/linux/usb.h 1.89 -> 1.90 # include/linux/usb_gadget.h 1.5 -> 1.6 # arch/ppc64/kernel/irq.c 1.31 -> 1.32 # drivers/pci/hotplug/cpci_hotplug_core.c 1.8 -> 1.9 # arch/arm/nwfpe/fpa11.h 1.7 -> 1.8 # arch/parisc/kernel/cache.c 1.4 -> 1.5 # include/linux/input.h 1.36 -> 1.37 # drivers/net/irda/donauboe.c 1.12 -> 1.13 # fs/nls/nls_iso8859-2.c 1.5 -> 1.6 # drivers/net/wan/comx.c 1.20 -> 1.21 # arch/mips/sni/setup.c 1.3 -> 1.4 # include/linux/eventpoll.h 1.11 -> 1.12 # arch/i386/kernel/cpu/cpufreq/Makefile 1.8 -> 1.9 # drivers/net/wan/pc300_tty.c 1.13 -> 1.14 # net/sched/sch_api.c 1.9 -> 1.10 # drivers/ide/ide-cd.c 1.59 -> 1.60 # drivers/atm/Kconfig 1.7 -> 1.8 # fs/xfs/xfs_da_btree.h 1.4 -> 1.6 # drivers/isdn/hardware/eicon/os_pri.c 1.2 -> 1.3 # fs/binfmt_elf.c 1.51 -> 1.53 # fs/reiserfs/super.c 1.67 -> 1.68 # include/asm-ppc/ioctl.h 1.3 -> 1.4 # mm/memory.c 1.134 -> 1.135 # drivers/net/ni5010.c 1.11 -> 1.12 # drivers/net/irda/Makefile 1.18 -> 1.19 # include/linux/llc.h 1.2 -> 1.3 # drivers/net/hamradio/bpqether.c 1.13 -> 1.14 # net/sched/sch_atm.c 1.13 -> 1.14 # fs/jfs/super.c 1.41 -> 1.42 # fs/xfs/xfs_trans.c 1.11 -> 1.12 # lib/inflate.c 1.4 -> 1.5 # drivers/isdn/hardware/eicon/dadapter.c 1.2 -> 1.3 # include/linux/coda.h 1.4 -> 1.7 # drivers/pcmcia/ricoh.h 1.10 -> 1.11 # drivers/net/e1000/e1000_ethtool.c 1.30 -> 1.33 # fs/xfs/pagebuf/page_buf_internal.h 1.9 -> 1.10 # include/asm-ia64/sn/klclock.h 1.3 -> (deleted) # fs/xfs/xfs_dir2_leaf.c 1.6 -> 1.7 # include/asm-ppc64/semaphore.h 1.5 -> 1.6 # fs/nls/nls_euc-kr.c 1.4 -> (deleted) # fs/afs/cmservice.c 1.5 -> 1.6 # drivers/net/acenic.c 1.39 -> 1.40 # drivers/net/pcmcia/com20020_cs.c 1.11 -> 1.13 # drivers/usb/core/hub.c 1.77 -> 1.79 # arch/arm/mm/proc-sa110.S 1.21 -> 1.23 # arch/ia64/kernel/mca.c 1.41 -> 1.42 # drivers/input/mouse/synaptics.h 1.2 -> 1.3 # arch/i386/kernel/setup.c 1.95 -> 1.96 # include/asm-ia64/hw_irq.h 1.9 -> 1.10 # drivers/isdn/hisax/elsa_cs.c 1.8 -> 1.9 # arch/arm/tools/mach-types 1.30 -> 1.32 # arch/ia64/sn/io/sn2/pcibr/pcibr_slot.c 1.8 -> 1.9 # net/wanrouter/wanproc.c 1.20 -> 1.21 # include/asm-arm/signal.h 1.6 -> 1.7 # drivers/atm/idt77252.c 1.19 -> 1.20 # arch/i386/kernel/smpboot.c 1.64 -> 1.65 # include/asm-generic/cpumask_array.h 1.1 -> 1.2 # arch/ppc/kernel/process.c 1.37 -> 1.38 # drivers/input/touchscreen/Kconfig 1.2 -> 1.3 # include/asm-arm/processor.h 1.15 -> 1.16 # arch/arm/mach-integrator/cpu.c 1.18 -> 1.19 # Documentation/DocBook/writing_usb_driver.tmpl 1.4 -> 1.6 # net/ipv4/fib_hash.c 1.15 -> 1.17 # drivers/parisc/hppb.c 1.1 -> 1.2 # drivers/net/wan/cosa.h 1.2 -> 1.3 # drivers/char/agp/intel-agp.c 1.49 -> 1.50 # arch/ia64/kernel/acpi.c 1.48 -> 1.50 # drivers/serial/Makefile 1.19 -> 1.20 # fs/autofs/root.c 1.12 -> 1.13 # drivers/net/tokenring/smctr.c 1.23 -> 1.25 # fs/xfs/xfs_rename.c 1.10 -> 1.12 # arch/ia64/hp/sim/boot/boot_head.S 1.1 -> 1.2 # drivers/serial/8250_cs.c 1.16 -> 1.17 drivers/serial/serial_cs.c (moved) # drivers/net/wan/sdla_chdlc.c 1.32 -> 1.34 # Documentation/DocBook/gadget.tmpl 1.2 -> 1.3 # sound/oss/dmasound/Kconfig 1.2 -> 1.3 # include/asm-ppc/bitops.h 1.13 -> 1.14 # net/netrom/af_netrom.c 1.38 -> 1.40 # net/rose/af_rose.c 1.32 -> 1.33 # arch/sparc64/kernel/time.c 1.47 -> 1.48 # arch/ia64/sn/io/machvec/iomv.c 1.7 -> 1.8 # arch/arm/def-configs/pfs168_mqtft 1.7 -> 1.9 arch/arm/configs/pfs168_mqtft_defconfig (moved) # net/llc/llc_if.c 1.22 -> 1.27 # arch/arm/mm/copypage-v4mc.S 1.4 -> 1.5 # include/linux/tty.h 1.20 -> 1.21 # drivers/net/wireless/atmel_cs.c 1.5 -> 1.6 # include/asm-ia64/param.h 1.3 -> 1.4 # drivers/net/wan/dlci.c 1.12 -> 1.17 # net/netlink/af_netlink.c 1.33 -> 1.34 # fs/coda/inode.c 1.29 -> 1.33 # arch/h8300/kernel/signal.c 1.3 -> 1.4 # include/asm-i386/mmzone.h 1.13 -> 1.15 # include/linux/coda_psdev.h 1.7 -> 1.11 # arch/arm/mach-iop3xx/mm-321.c 1.3 -> 1.4 # fs/xfs/xfs_bmap_btree.h 1.6 -> 1.7 # arch/parisc/kernel/real2.S 1.2 -> 1.3 # fs/afs/types.h 1.1 -> 1.2 # net/core/dev.c 1.100 -> 1.106 # drivers/net/irda/irda-usb.c 1.43 -> 1.44 # arch/ia64/ia32/elfcore32.h 1.2 -> 1.3 # arch/arm/def-configs/adi_evb 1.7 -> 1.9 arch/arm/configs/adi_evb_defconfig (moved) # drivers/usb/core/usb.c 1.139 -> 1.140 # drivers/char/mem.c 1.43 -> 1.44 # include/asm-alpha/signal.h 1.6 -> 1.7 # kernel/posix-timers.c 1.20 -> 1.21 # arch/arm/def-configs/pangolin 1.10 -> 1.12 arch/arm/configs/pangolin_defconfig (moved) # arch/ppc64/kernel/head.S 1.36 -> 1.38 # arch/ppc/kernel/asm-offsets.c 1.4 -> 1.5 # drivers/isdn/hardware/eicon/divamnt.c 1.8 -> 1.9 # drivers/net/depca.c 1.19 -> 1.20 # fs/nls/nls_iso8859-13.c 1.6 -> 1.7 # include/asm-sparc64/bugs.h 1.1 -> 1.2 # fs/xfs/linux/xfs_iomap.c 1.12 -> 1.14 # net/ipv4/ipvs/ip_vs_rr.c 1.1 -> 1.2 # drivers/isdn/hysdn/hysdn_init.c 1.5 -> 1.6 # net/decnet/af_decnet.c 1.32 -> 1.33 # drivers/char/agp/uninorth-agp.c 1.7 -> 1.8 # include/asm-ppc64/uaccess.h 1.11 -> 1.12 # fs/nls/nls_sjis.c 1.4 -> (deleted) # include/asm-arm/string.h 1.1 -> 1.2 # include/asm-arm/proc-fns.h 1.9 -> 1.10 # drivers/net/pcmcia/ibmtr_cs.c 1.18 -> 1.19 # drivers/isdn/hardware/eicon/divasfunc.c 1.3 -> 1.4 # scripts/Makefile 1.34 -> 1.35 # arch/sparc/lib/copy_user.S 1.1 -> 1.2 # arch/ia64/sn/io/sn2/shub.c 1.5 -> 1.7 # net/irda/irlan/irlan_common.c 1.17 -> 1.18 # include/linux/interrupt.h 1.26 -> 1.27 # drivers/net/wireless/arlan-proc.c 1.8 -> 1.10 # drivers/input/joystick/iforce/iforce-packets.c 1.4 -> 1.5 # arch/arm/mm/abort-ev5tej.S 1.6 -> 1.8 arch/arm/mm/abort-ev5tj.S (moved) # arch/arm/mach-anakin/arch.c 1.5 -> 1.6 # arch/arm/mm/proc-arm926.S 1.19 -> 1.21 # arch/arm/Kconfig 1.33 -> 1.35 # fs/xfs/xfs_bmap_btree.c 1.10 -> 1.12 # arch/arm/kernel/setup.c 1.35 -> 1.36 # fs/proc/kcore.c 1.11 -> 1.13 # drivers/usb/net/usbnet.c 1.73 -> 1.75 # fs/xfs/xfs_log_recover.c 1.29 -> 1.31 # drivers/input/serio/Kconfig 1.9 -> 1.10 # net/bluetooth/rfcomm/tty.c 1.26 -> 1.28 # include/asm-m68knommu/signal.h 1.3 -> 1.4 # drivers/isdn/hardware/eicon/Kconfig 1.1 -> 1.2 # drivers/isdn/hardware/eicon/debug.c 1.1 -> 1.2 # fs/nls/nls_iso8859-7.c 1.5 -> 1.6 # include/asm-i386/numaq.h 1.11 -> 1.12 # arch/arm/mm/cache-v4wb.S 1.1 -> 1.3 # net/bluetooth/bnep/bnep.h 1.4 -> 1.5 # arch/ppc64/Kconfig 1.27.1.1 -> 1.29 # drivers/input/input.c 1.35 -> 1.39 # drivers/net/sk_mca.h 1.3 -> 1.5 # drivers/pnp/isapnp/core.c 1.41 -> 1.43 # drivers/pci/hotplug/pcihp_skeleton.c 1.4 -> 1.5 # arch/ppc/kernel/head.S 1.33 -> 1.34 # arch/ppc64/kernel/xics.c 1.25.1.1 -> 1.28 # sound/oss/vwsnd.c 1.11 -> 1.12 # include/asm-sh/signal.h 1.5 -> 1.6 # arch/i386/mm/discontig.c 1.14 -> 1.15 # include/asm-m68knommu/processor.h 1.4 -> 1.5 # net/ipv4/raw.c 1.39 -> 1.42 # arch/i386/boot/setup.S 1.22 -> 1.23 # include/net/llc_if.h 1.12 -> 1.15 # drivers/net/pcmcia/axnet_cs.c 1.18 -> 1.19 # drivers/pcmcia/tcic.c 1.33 -> 1.34 # net/ipv6/tcp_ipv6.c 1.71 -> 1.73 # net/bluetooth/hci_sock.c 1.24 -> 1.26 # drivers/net/wireless/arlan.h 1.6 -> 1.8 # arch/ppc64/kernel/rtc.c 1.7 -> 1.8 # drivers/isdn/hardware/eicon/xdi_adapter.h 1.2 -> 1.3 # fs/nls/nls_cp1250.c 1.3 -> 1.4 # fs/nls/nls_cp865.c 1.5 -> 1.6 # drivers/net/wireless/wavelan_cs.c 1.25 -> 1.26 # kernel/pid.c 1.9 -> 1.10 # fs/xfs/xfs_alloc_btree.c 1.6 -> 1.7 # drivers/usb/media/dabusb.c 1.35 -> 1.36 # net/xfrm/xfrm_user.c 1.37 -> 1.38 # fs/afs/callback.c 1.2 -> 1.3 # drivers/pcmcia/hd64465_ss.c 1.15 -> 1.16 # include/asm-i386/genapic.h 1.4 -> 1.5 # fs/Kconfig 1.28 -> 1.31 # net/sunrpc/cache.c 1.21 -> 1.22 # fs/xfs/xfs_ialloc.c 1.8 -> 1.9 # fs/xfs/xfs_bit.c 1.4 -> 1.5 # drivers/net/hamradio/baycom_ser_fdx.c 1.9 -> 1.11 # drivers/net/tokenring/tms380tr.c 1.13 -> 1.15 # net/bluetooth/syms.c 1.8 -> 1.9 # drivers/char/agp/Kconfig 1.26 -> 1.27 # drivers/block/loop.c 1.107 -> 1.108 # drivers/pnp/resource.c 1.19 -> 1.20 # arch/sparc/mm/srmmu.c 1.35 -> 1.36 # drivers/net/wan/Makefile 1.16 -> 1.17 # arch/sparc/lib/checksum.S 1.2 -> 1.3 # fs/nls/nls_iso8859-1.c 1.5 -> 1.6 # fs/nls/nls_iso8859-4.c 1.5 -> 1.6 # include/asm-arm26/processor.h 1.3 -> 1.4 # include/linux/miscdevice.h 1.8 -> 1.10 # drivers/char/epca.c 1.31 -> 1.32 # arch/ppc64/kernel/htab.c 1.35 -> 1.36 # arch/ppc64/mm/init.c 1.50 -> 1.52 # include/linux/serio.h 1.15 -> 1.16 # fs/afs/kafstimod.c 1.7 -> 1.8 # include/linux/skbuff.h 1.31 -> 1.32 # fs/xfs/xfs_attr.c 1.8 -> 1.10 # drivers/char/tty_io.c 1.119 -> 1.121 # include/asm-sparc/signal.h 1.6 -> 1.7 # arch/i386/boot/compressed/misc.c 1.11 -> 1.12 # net/rxrpc/connection.c 1.3 -> 1.4 # arch/arm/mach-pxa/pm.c 1.4 -> 1.5 # fs/bio.c 1.51 -> 1.53 # fs/proc/array.c 1.48 -> 1.50 # net/ipv6/ndisc.c 1.57 -> 1.58 # arch/ppc64/kernel/process.c 1.37 -> 1.39 # drivers/pci/hotplug/cpqphp_nvram.h 1.2 -> 1.3 # net/rxrpc/proc.c 1.4 -> 1.6 # drivers/net/ni52.c 1.11 -> 1.12 # arch/parisc/Kconfig 1.22 -> 1.23 # net/irda/irttp.c 1.18 -> 1.19 # fs/jffs/inode-v23.c 1.55 -> 1.57 # fs/reiserfs/journal.c 1.72 -> 1.73 # MAINTAINERS 1.160.1.12 -> 1.167 # drivers/isdn/hardware/eicon/diva_didd.c 1.4 -> 1.5 # fs/smbfs/proto.h 1.10 -> 1.11 # fs/afs/Makefile 1.3 -> 1.4 # drivers/pcmcia/yenta_socket.c 1.46 -> 1.48 # drivers/pcmcia/rsrc_mgr.c 1.24 -> 1.25 # usr/gen_init_cpio.c 1.5 -> 1.6 # drivers/ieee1394/nodemgr.c 1.36 -> 1.37 # include/linux/cpufreq.h 1.34 -> 1.36 # arch/ia64/ia32/sys_ia32.c 1.75 -> 1.76 # drivers/char/rio/rio_linux.c 1.28 -> 1.29 # net/ipv4/ipvs/ip_vs_wlc.c 1.1 -> 1.2 # drivers/pcmcia/sa1100_generic.c 1.33 -> 1.34 # arch/ia64/sn/io/sn2/pic.c 1.3 -> 1.4 # arch/arm/mm/copypage-v3.S 1.4 -> 1.5 # include/net/llc_stat.h 1.1 -> (deleted) # drivers/char/istallion.c 1.31 -> 1.32 # net/ipv4/netfilter/ipt_MASQUERADE.c 1.10 -> 1.11 # drivers/isdn/hardware/eicon/message.c 1.2 -> 1.4 # fs/nls/nls_base.c 1.11 -> 1.12 # fs/proc/base.c 1.55 -> 1.58 # drivers/video/i810/i810_main.h 1.9 -> 1.10 # net/rxrpc/Makefile 1.5 -> 1.6 # drivers/pci/hotplug/acpiphp_core.c 1.6 -> 1.7 # drivers/scsi/gdth.c 1.35 -> 1.36 # fs/xfs/linux/xfs_globals.c 1.17 -> 1.19 # arch/arm/boot/bootp/init.S 1.5 -> 1.6 # include/linux/coda_cache.h 1.2 -> 1.3 # fs/coda/psdev.c 1.18 -> 1.20 # net/sched/sch_htb.c 1.14 -> 1.15 # fs/nls/nls_cp850.c 1.5 -> 1.6 # fs/nls/nls_cp862.c 1.5 -> 1.6 # fs/nls/nls_iso8859-15.c 1.5 -> 1.6 # drivers/char/watchdog/wdt_pci.c 1.27 -> 1.28 # include/asm-arm/arch-pxa/pxa-regs.h 1.7 -> 1.8 # drivers/net/wireless/arlan.c 1.18 -> 1.20 # drivers/net/wan/sealevel.c 1.10 -> 1.11 # include/asm-i386/mach-summit/mach_apic.h 1.32 -> 1.34 # include/linux/compiler.h 1.18 -> 1.19 # drivers/pci/hotplug/cpci_hotplug_pci.c 1.13 -> 1.14 # drivers/net/pppoe.c 1.32 -> 1.33 # fs/xfs/xfs_dir2_sf.c 1.5 -> 1.6 # net/bluetooth/rfcomm/sock.c 1.21.1.3 -> 1.24 # arch/arm/mm/mm-armv.c 1.22 -> 1.24 # arch/arm/mm/proc-arm720.S 1.20 -> 1.22 # drivers/block/z2ram.c 1.29 -> 1.30 # arch/m68knommu/kernel/signal.c 1.7 -> 1.8 # fs/nls/nls_cp863.c 1.5 -> 1.6 # fs/nls/nls_iso8859-9.c 1.5 -> 1.6 # arch/ia64/sn/io/drivers/ioconfig_bus.c 1.4 -> 1.5 # fs/xfs/xfs_dinode.h 1.3 -> 1.4 # drivers/pci/hotplug/fakephp.c 1.1 -> 1.2 # drivers/char/agp/alpha-agp.c 1.8 -> 1.9 # include/asm-i386/setup.h 1.5 -> 1.6 # include/asm-ppc/ucontext.h 1.4 -> 1.5 # drivers/net/wan/comx-hw-locomx.c 1.8 -> 1.9 # arch/ppc64/kernel/eeh.c 1.11 -> 1.12 # include/asm-ia64/ptrace.h 1.15 -> 1.16 # drivers/net/rrunner.h 1.4 -> 1.5 # fs/smbfs/smbiod.c 1.7 -> 1.8 # drivers/input/serio/ambakmi.c 1.6 -> 1.7 # arch/ppc64/kernel/asm-offsets.c 1.14 -> 1.15 # drivers/net/bonding/bond_alb.c 1.2 -> 1.5 # drivers/net/ac3200.c 1.12 -> 1.13 # arch/arm/mach-rpc/riscpc.c 1.6 -> 1.7 # drivers/isdn/hisax/avma1_cs.c 1.7 -> 1.8 # arch/arm/def-configs/shark 1.13 -> 1.15 arch/arm/configs/shark_defconfig (moved) # Documentation/video4linux/Zoran 1.3 -> 1.4 # drivers/char/agp/amd64-agp.c 1.60 -> 1.63 # net/packet/af_packet.c 1.33 -> 1.34 # drivers/net/pcmcia/fmvj18x_cs.c 1.25 -> 1.26 # drivers/isdn/hardware/eicon/um_idi.c 1.3 -> 1.4 # arch/i386/kernel/timers/timer_tsc.c 1.24 -> 1.28 # include/asm-sparc64/delay.h 1.7 -> 1.8 # arch/mips/jazz/setup.c 1.3 -> 1.4 # include/linux/ftape.h 1.3 -> 1.4 # fs/autofs4/autofs_i.h 1.7 -> 1.8 # arch/arm/mm/copypage-v4wb.S 1.6 -> 1.7 # drivers/net/pcmcia/smc91c92_cs.c 1.23 -> 1.24 # mm/page-writeback.c 1.73 -> 1.74 # arch/arm/def-configs/huw_webpanel 1.5 -> 1.7 arch/arm/configs/huw_webpanel_defconfig (moved) # arch/arm/common/sa1111-pcipool.c 1.7 -> 1.8 # arch/arm/nwfpe/fpa11_cprt.c 1.7 -> 1.8 # include/asm-ppc64/mmu.h 1.7 -> 1.8 # drivers/parisc/lasi.c 1.3 -> 1.4 # net/bluetooth/bnep/core.c 1.20 -> 1.22 # arch/x86_64/kernel/time.c 1.21 -> 1.22 # net/ax25/ax25_route.c 1.13 -> 1.14 # arch/i386/kernel/timers/timer_cyclone.c 1.10 -> 1.11 # arch/ppc64/mm/numa.c 1.8 -> 1.10 # net/decnet/dn_neigh.c 1.7 -> 1.8 # net/bluetooth/l2cap.c 1.31.1.2 -> 1.34 # include/asm-generic/cpumask_arith.h 1.1 -> 1.2 # arch/arm/def-configs/adsbitsy 1.9 -> 1.11 arch/arm/configs/adsbitsy_defconfig (moved) # drivers/char/rocket.c 1.32 -> 1.33 # net/wanrouter/wanmain.c 1.19 -> 1.20 # drivers/pnp/pnpbios/bioscalls.c 1.1 -> 1.2 # drivers/char/agp/backend.c 1.86 -> 1.89 # arch/ppc64/kernel/syscalls.c 1.12 -> 1.13 # drivers/net/wan/sdla_x25.c 1.25 -> 1.27 # arch/arm/boot/compressed/misc.c 1.5 -> 1.6 # fs/xfs/xfs_rtalloc.h 1.3 -> 1.4 # arch/arm/mach-sa1100/stork.c 1.7 -> 1.8 # include/net/llc_evnt.h 1.5 -> (deleted) # drivers/pci/pci-driver.c 1.33 -> 1.35 # include/linux/ipv6.h 1.11 -> 1.12 # arch/ppc64/kernel/sys_ppc32.c 1.66 -> 1.67 # drivers/parisc/lba_pci.c 1.7 -> 1.8 # arch/arm/mach-integrator/core.c 1.11 -> 1.13 # fs/xfs/Makefile 1.15 -> 1.16 # include/rxrpc/peer.h 1.2 -> 1.3 # CREDITS 1.91.1.6 -> 1.98 # drivers/video/riva/fbdev.c 1.49 -> 1.50 # drivers/net/wireless/strip.c 1.14 -> 1.17 # init/do_mounts_rd.c 1.6 -> 1.7 # drivers/net/e1000/e1000_param.c 1.21 -> 1.23 # arch/m68k/kernel/signal.c 1.13 -> 1.14 # security/Makefile 1.6 -> 1.7 # fs/nls/nls_cp1251.c 1.5 -> 1.6 # drivers/isdn/i4l/isdn_tty.c 1.54 -> 1.55 # drivers/char/agp/ati-agp.c 1.8 -> 1.11 # fs/xfs/xfs_error.h 1.6 -> 1.7 # include/linux/netfilter_ipv4/ipt_physdev.h 1.2 -> 1.3 # drivers/parisc/wax.c 1.3 -> 1.4 # fs/autofs/autofs_i.h 1.11 -> 1.12 # drivers/usb/gadget/inode.c 1.1 -> 1.2 # arch/arm/def-configs/pleb 1.7 -> 1.9 arch/arm/configs/pleb_defconfig (moved) # include/asm-i386/cpufeature.h 1.9 -> 1.10 # arch/ia64/kernel/salinfo.c 1.3 -> 1.4 # arch/i386/kernel/numaq.c 1.8 -> 1.9 # include/asm-ppc64/serial.h 1.1 -> 1.2 # drivers/input/evdev.c 1.29 -> 1.30 # drivers/sbus/char/display7seg.c 1.8 -> 1.9 # net/netrom/nr_timer.c 1.10 -> 1.11 # net/rxrpc/transport.c 1.3 -> 1.4 # drivers/usb/serial/Kconfig 1.8 -> 1.9 # include/asm-s390/signal.h 1.8 -> 1.9 # arch/arm/nwfpe/fpa11_cpdo.c 1.10 -> 1.11 # drivers/net/wan/sdlamain.c 1.19 -> 1.21 # arch/ia64/sn/io/sn2/pcibr/pcibr_intr.c 1.5 -> 1.6 # include/asm-parisc/elf.h 1.6 -> 1.7 # include/asm-m68k/processor.h 1.8 -> 1.9 # fs/autofs4/inode.c 1.12 -> 1.13 # drivers/net/eepro.c 1.19 -> 1.20 # net/bluetooth/bnep/netdev.c 1.4 -> 1.5 # include/linux/devfs_fs_kernel.h 1.46 -> 1.47 # include/asm-arm/bugs.h 1.3 -> 1.4 # arch/ia64/sn/io/sn2/ml_SN_intr.c 1.3 -> 1.5 # Documentation/block/biodoc.txt 1.5 -> 1.6 # fs/afs/file.c 1.3 -> 1.4 # drivers/net/hamradio/hdlcdrv.c 1.6 -> 1.8 # drivers/isdn/hardware/eicon/platform.h 1.3 -> 1.5 # drivers/net/irda/Kconfig 1.10 -> 1.11 # sound/oss/nec_vrc5477.c 1.18 -> 1.19 # drivers/net/hamradio/yam.c 1.20 -> 1.22 # fs/autofs/inode.c 1.14 -> 1.15 # fs/nls/nls_cp866.c 1.5 -> 1.6 # drivers/isdn/hardware/eicon/divasproc.c 1.4 -> 1.5 # arch/arm/def-configs/brutus 1.6 -> 1.8 arch/arm/configs/brutus_defconfig (moved) # arch/ppc64/mm/fault.c 1.11 -> 1.12 # include/net/llc_pdu.h 1.5 -> 1.7 # include/asm-arm/tlbflush.h 1.7 -> 1.8 # arch/ppc64/kernel/vmlinux.lds.S 1.18 -> 1.19 # arch/ppc/kernel/time.c 1.23 -> 1.24 # arch/arm/mm/cache-v3.S 1.1 -> 1.2 # drivers/parisc/sba_iommu.c 1.10 -> 1.11 # drivers/usb/input/Kconfig 1.5 -> 1.6 # fs/coda/cnode.c 1.13 -> 1.16 # arch/arm/mm/proc-sa1100.S 1.4 -> 1.6 # sound/oss/i810_audio.c 1.45 -> 1.46 # drivers/serial/8250_pci.c 1.25 -> 1.26 # fs/xfs/xfs_iocore.c 1.7 -> 1.8 # drivers/net/smc9194.c 1.17 -> 1.19 # arch/alpha/Kconfig 1.27 -> 1.28 # drivers/block/DAC960.c 1.67 -> 1.69 # arch/arm/mm/proc-arm6_7.S 1.20 -> 1.22 # arch/arm/kernel/ecard.c 1.25 -> 1.26 # fs/xfs/linux/xfs_ioctl.c 1.16 -> 1.17 # arch/ppc64/kernel/stab.c 1.12 -> 1.13 # drivers/net/bonding/bond_3ad.c 1.2 -> 1.3 # include/asm-parisc/hil.h 1.2 -> (deleted) # fs/nls/nls_big5.c 1.4 -> (deleted) # include/asm-sparc/sfp-machine.h 1.1 -> 1.2 # drivers/usb/storage/unusual_devs.h 1.53 -> 1.54 # drivers/net/tokenring/olympic.c 1.25 -> 1.26 # fs/xfs/xfs_da_btree.c 1.8 -> 1.10 # arch/ia64/sn/io/machvec/pci_bus_cvlink.c 1.9 -> 1.10 # net/llc/llc_sap.c 1.21 -> 1.30 # drivers/isdn/hardware/eicon/capifunc.h 1.2 -> 1.3 # fs/nls/nls_cp852.c 1.5 -> 1.6 # mm/slab.c 1.99 -> 1.100 # include/linux/eisa.h 1.6 -> 1.7 # arch/arm/def-configs/badge4 1.9 -> 1.11 arch/arm/configs/badge4_defconfig (moved) # include/linux/bio.h 1.33 -> 1.34 # net/core/wireless.c 1.12 -> 1.14 # drivers/isdn/hardware/eicon/diva.c 1.4 -> 1.5 # arch/arm/lib/io-writesb.S 1.3 -> 1.4 # fs/xfs/xfsidbg.c 1.31 -> 1.34 # include/scsi/scsi_tcq.h 1.1 -> 1.2 # arch/arm/mm/consistent.c 1.12 -> 1.13 # include/linux/rtnetlink.h 1.21 -> 1.22 # arch/arm/mach-tbox/core.c 1.3 -> 1.4 # drivers/net/rcpci45.c 1.26 -> 1.27 # kernel/sched.c 1.208 -> 1.214 # drivers/pcmcia/sa1100_assabet.c 1.13 -> 1.14 # fs/nls/nls_cp861.c 1.5 -> 1.6 # drivers/block/deadline-iosched.c 1.25 -> 1.27 # net/atm/resources.h 1.8 -> 1.9 # drivers/char/agp/hp-agp.c 1.26 -> 1.27 # drivers/net/irda/sir_kthread.c 1.7 -> 1.8 # drivers/input/keyboard/atkbd.c 1.31 -> 1.36 # drivers/net/es3210.c 1.8 -> 1.9 # include/rxrpc/connection.h 1.1 -> 1.2 # drivers/net/tulip/de2104x.c 1.24 -> 1.25 # arch/i386/kernel/timers/timer_hpet.c 1.1 -> 1.2 # arch/ia64/sn/io/sn2/pcibr/pcibr_config.c 1.3 -> 1.4 # Documentation/smp.tex 1.1 -> (deleted) # init/Kconfig 1.26 -> 1.28 # net/llc/llc_mac.c 1.23 -> 1.33 net/llc/llc_input.c (moved) # fs/coda/upcall.c 1.14 -> 1.19 # drivers/net/cs89x0.c 1.17 -> 1.19 # fs/coda/cache.c 1.7 -> 1.9 # drivers/block/xd.c 1.57 -> 1.58 # net/ipv4/netfilter/ip_nat_snmp_basic.c 1.12 -> 1.13 # include/net/llc_mac.h 1.7 -> 1.18 include/net/llc.h (moved) # arch/arm/def-configs/empeg 1.3 -> 1.5 arch/arm/configs/empeg_defconfig (moved) # drivers/ide/ide-io.c 1.19 -> 1.20 # sound/pci/ens1370.c 1.35 -> 1.36 # drivers/net/wireless/wavelan_cs.p.h 1.9 -> 1.10 # include/asm-cris/signal.h 1.4 -> 1.5 # net/ipv4/ipvs/ip_vs_lblcr.c 1.2 -> 1.5 # drivers/usb/serial/ipaq.c 1.33 -> 1.34 # net/ipv6/udp.c 1.47 -> 1.49 # drivers/pci/hotplug/pci_hotplug_core.c 1.40 -> 1.41 # drivers/pci/hotplug/cpqphp.h 1.10 -> 1.11 # sound/oss/Kconfig 1.13 -> 1.14 # net/ipv4/netfilter/ipt_REJECT.c 1.22 -> 1.23 # include/asm-parisc/byteorder.h 1.2 -> 1.3 # drivers/input/mouse/Kconfig 1.7 -> 1.9 # drivers/net/wireless/airo_cs.c 1.9 -> 1.10 # net/rxrpc/call.c 1.3 -> 1.4 # include/linux/atmclip.h 1.1 -> 1.2 # drivers/cdrom/Kconfig 1.4 -> 1.5 # drivers/char/agp/via-agp.c 1.51 -> 1.52 # drivers/isdn/hardware/eicon/Makefile 1.4 -> 1.5 # include/asm-ia64/sn/ksys/elsc.h 1.5 -> 1.6 # include/asm-ia64/sn/sn2/intr.h 1.3 -> 1.4 # arch/arm/kernel/fiq.c 1.9 -> 1.10 # drivers/input/joystick/iforce/iforce-usb.c 1.7 -> 1.8 # drivers/net/pcmcia/pcnet_cs.c 1.24 -> 1.25 # arch/arm/mach-clps711x/mm.c 1.3 -> 1.4 # include/rxrpc/rxrpc.h 1.1 -> 1.2 # arch/mips/kernel/irixsig.c 1.9 -> 1.10 # drivers/pnp/quirks.c 1.11 -> 1.12 # arch/sparc/boot/btfixupprep.c 1.3 -> 1.4 # include/linux/coda_fs_i.h 1.5 -> 1.8 # arch/arm/lib/io-readsb.S 1.3 -> 1.5 # arch/arm/mm/proc-xscale.S 1.22 -> 1.24 # drivers/net/hamradio/scc.c 1.23 -> 1.24 # drivers/char/hvc_console.c 1.20 -> 1.21 # fs/xfs/xfs_arch.h 1.3 -> 1.4 # arch/arm/mm/copypage-xscale.S 1.7 -> 1.8 # drivers/char/ftape/lowlevel/ftape-init.c 1.4 -> 1.5 # drivers/net/smc-ultra32.c 1.7 -> 1.8 # net/rxrpc/main.c 1.4 -> 1.5 # fs/nls/nls_cp775.c 1.5 -> 1.6 # arch/ppc64/boot/Makefile 1.16 -> 1.18 # drivers/net/e1000/e1000_hw.h 1.17 -> 1.21 # drivers/pci/hotplug/ibmphp_res.c 1.8 -> 1.9 # arch/ppc64/xmon/xmon.c 1.27 -> 1.29 # net/ipv6/mcast.c 1.33 -> 1.37 # net/ipv4/arp.c 1.27 -> 1.29 # arch/cris/arch-v10/boot/compressed/misc.c 1.7 -> 1.8 # include/net/llc_conn.h 1.14 -> 1.19 # drivers/net/tokenring/tmspci.c 1.14 -> 1.15 # drivers/isdn/hisax/config.c 1.50 -> 1.51 # arch/parisc/kernel/sys_parisc.c 1.8 -> 1.9 # net/llc/Makefile 1.7 -> 1.13 # arch/sparc64/Kconfig 1.32 -> 1.33 # drivers/isdn/hardware/eicon/capifunc.c 1.6 -> 1.7 # fs/afs/volume.h 1.2 -> 1.3 # fs/afs/cache-layout.h 1.1 -> (deleted) # arch/arm/mm/proc-arm922.S 1.17 -> 1.19 # kernel/exit.c 1.112 -> 1.113 # include/asm-ia64/acpi.h 1.7 -> 1.10 # fs/afs/cell.h 1.1 -> 1.2 # arch/parisc/kernel/drivers.c 1.6 -> 1.7 # drivers/input/mouse/psmouse.h 1.2 -> 1.3 # net/netrom/nr_loopback.c 1.4 -> 1.5 # fs/xfs/xfs_fsops.c 1.7 -> 1.9 # net/llc/llc_s_ac.c 1.6 -> 1.10 # drivers/pci/hotplug/cpqphp_nvram.c 1.9 -> 1.10 # drivers/char/specialix.c 1.24 -> 1.25 # arch/arm/mach-integrator/Makefile 1.9 -> 1.10 # fs/xfs/xfs_dir_leaf.c 1.11 -> 1.13 # arch/arm/def-configs/stork 1.7 -> 1.9 arch/arm/configs/stork_defconfig (moved) # drivers/pcmcia/i82365.c 1.44 -> 1.45 # include/asm-arm/arch-sa1100/trizeps.h 1.1 -> 1.2 # drivers/pnp/isapnp/compat.c 1.5 -> 1.6 # drivers/isdn/hardware/eicon/s_bri.c 1.2 -> 1.3 # net/appletalk/atalk_proc.c 1.8 -> 1.9 # net/ipv4/ipvs/ip_vs_lblc.c 1.2 -> 1.4 # fs/ext3/super.c 1.74 -> 1.75 # drivers/net/wireless/orinoco_cs.c 1.24 -> 1.25 # fs/xfs/linux/xfs_aops.c 1.44 -> 1.45 # arch/ia64/sn/io/sn2/pcibr/pcibr_hints.c 1.3 -> 1.4 # net/ipv4/ipvs/ip_vs_ctl.c 1.4 -> 1.9 # arch/parisc/Makefile 1.22 -> 1.23 # arch/arm/kernel/process.c 1.29 -> 1.30 # arch/parisc/hpux/wrappers.S 1.3 -> 1.4 # include/net/bluetooth/hci.h 1.11 -> 1.12 # net/irda/irlmp.c 1.28 -> 1.29 # include/asm-arm/cacheflush.h 1.3 -> 1.4 # arch/i386/kernel/cpu/cpufreq/p4-clockmod.c 1.18 -> 1.19 # net/ipv4/ipvs/ip_vs_conn.c 1.6 -> 1.10 # drivers/net/lne390.c 1.8 -> 1.9 # arch/ppc/kernel/misc.S 1.47 -> 1.48 # arch/arm/common/sa1111.c 1.29 -> 1.32 # fs/xfs/linux/xfs_super.c 1.59 -> 1.60 # drivers/serial/Kconfig 1.15 -> 1.16 # arch/mips/kernel/sysirix.c 1.14 -> 1.15 # Documentation/Changes 1.40 -> 1.42 # drivers/sbus/char/cpwatchdog.c 1.11 -> 1.12 # arch/ia64/hp/sim/boot/bootloader.c 1.10 -> 1.11 # fs/xfs/linux/xfs_stats.c 1.5 -> 1.7 # fs/xfs/xfs_bmap.c 1.14 -> 1.16 # arch/ppc64/kernel/time.c 1.23 -> 1.24 # fs/nls/nls_iso8859-8.c 1.5 -> (deleted) # net/irda/irlap.c 1.26 -> 1.27 # drivers/char/misc.c 1.21 -> 1.24 # drivers/net/bonding/bond_main.c 1.27 -> 1.44 # net/sched/police.c 1.2 -> 1.3 # drivers/bluetooth/hci_usb.c 1.29.1.2 -> 1.32 # net/ipv6/addrconf.c 1.64 -> 1.68 # arch/ia64/kernel/perfmon.c 1.56.1.1 -> 1.61 # drivers/pci/hotplug/cpqphp_pci.c 1.22 -> 1.23 # drivers/net/ppp_generic.c 1.39 -> 1.40 # net/ipv4/icmp.c 1.35 -> 1.36 # include/asm-i386/mach-bigsmp/mach_apic.h 1.17 -> 1.18 # net/ipv4/ipvs/ip_vs_lc.c 1.1 -> 1.2 # fs/locks.c 1.42 -> 1.43 # fs/xfs/xfs_error.c 1.10 -> 1.11 # drivers/pnp/card.c 1.12 -> 1.13 # net/atm/resources.c 1.14 -> 1.16 # security/selinux/hooks.c 1.6 -> 1.7 # include/linux/netdevice.h 1.56 -> 1.58 # arch/ia64/Kconfig 1.39.1.2 -> 1.44 # drivers/char/n_r3964.c 1.14 -> 1.15 # drivers/net/pcmcia/3c589_cs.c 1.22 -> 1.23 # drivers/net/wan/pc300_drv.c 1.13 -> 1.14 # drivers/pci/hotplug/cpqphp_sysfs.c 1.9 -> 1.10 # drivers/parisc/asp.c 1.3 -> 1.4 # drivers/net/hamradio/baycom_par.c 1.6 -> 1.8 # arch/sparc64/solaris/misc.c 1.17 -> 1.18 # drivers/usb/storage/Kconfig 1.3 -> 1.4 # arch/arm/def-configs/flexanet 1.9 -> 1.11 arch/arm/configs/flexanet_defconfig (moved) # include/pcmcia/ss.h 1.24 -> 1.27 # include/asm-ppc64/mmzone.h 1.12 -> 1.13 # include/asm-ppc64/pgtable.h 1.23 -> 1.24 # drivers/char/Makefile 1.58 -> 1.59 # drivers/usb/misc/usbtest.c 1.21 -> 1.22 # drivers/input/keyboard/Kconfig 1.6 -> 1.8 # drivers/pnp/pnpbios/proc.c 1.9 -> 1.10 # drivers/isdn/hardware/eicon/dlist.h 1.2 -> 1.3 # fs/afs/kafsasyncd.c 1.5 -> 1.6 # net/appletalk/aarp.c 1.16 -> 1.18 # arch/ia64/kernel/traps.c 1.37 -> 1.38 # drivers/net/tokenring/proteon.c 1.5 -> 1.6 # net/ipv4/ipvs/ip_vs_sed.c 1.1 -> 1.2 # arch/parisc/kernel/setup.c 1.7 -> 1.8 # arch/arm/nwfpe/fpa11_cpdt.c 1.7 -> 1.8 # include/asm-arm/arch-pxa/keyboard.h 1.1 -> 1.2 # arch/ia64/scripts/toolchain-flags 1.4 -> 1.5 # include/asm-parisc/signal.h 1.3 -> 1.4 # drivers/isdn/hardware/eicon/idifunc.c 1.2 -> 1.3 # drivers/block/cciss.c 1.92 -> 1.95 # drivers/net/ns83820.c 1.29 -> 1.30 # include/asm-ia64/sn/sn2/shub.h 1.2 -> 1.3 # include/net/if_inet6.h 1.7 -> 1.8 # include/asm-parisc/cacheflush.h 1.4 -> 1.5 # fs/nls/nls_cp437.c 1.5 -> 1.6 # fs/nls/nls_cp950.c 1.4 -> 1.6 # include/asm-ppc64/rwsem.h 1.2 -> 1.3 # drivers/net/wan/comx-hw-mixcom.c 1.11 -> 1.12 # fs/xfs/xfs_inode.c 1.31 -> 1.35 # drivers/isdn/hardware/eicon/i4lididrv.c 1.8 -> 1.9 # fs/xfs/xfs_iget.c 1.16 -> 1.17 # include/asm-ppc/highmem.h 1.12 -> 1.13 # drivers/net/wireless/netwave_cs.c 1.21 -> 1.22 # net/rose/rose_route.c 1.10 -> 1.11 # drivers/net/e1000/e1000_hw.c 1.20 -> 1.26 # net/atm/clip.c 1.21 -> 1.23 # drivers/net/ewrk3.c 1.26 -> 1.27 # include/asm-ppc64/topology.h 1.8 -> 1.9 # include/asm-x86_64/processor.h 1.23 -> 1.24 # net/wanrouter/af_wanpipe.c 1.29 -> 1.30 # net/llc/llc_c_ac.c 1.22 -> 1.26 # arch/parisc/kernel/signal.c 1.10 -> 1.11 # drivers/pcmcia/sa1100_simpad.c 1.11 -> 1.12 # arch/arm/mm/abort-xscale.S 1.1 -> 1.3 arch/arm/mm/abort-ev5t.S (moved) # include/asm-arm/hardware/sa1111.h 1.12 -> 1.13 # arch/ppc/kernel/signal.c 1.23 -> 1.24 # fs/xfs/xfs_rw.c 1.9 -> 1.10 # arch/arm/mach-pxa/leds.c 1.2 -> 1.3 # arch/arm/mach-sa1100/trizeps.c 1.2 -> 1.3 # net/ipv4/igmp.c 1.35 -> 1.39 # arch/arm/def-configs/cerfpod 1.8 -> 1.10 arch/arm/configs/cerfpod_defconfig (moved) # include/asm-ppc64/rtas.h 1.6 -> 1.7 # net/netrom/nr_route.c 1.9 -> 1.10 # arch/ia64/sn/io/sn2/pcibr/pcibr_rrb.c 1.5 -> 1.6 # drivers/net/wan/sdla_fr.c 1.28 -> 1.30 # fs/xfs/xfs_trans_ail.c 1.3 -> 1.5 # fs/nls/nls_koi8-u.c 1.6 -> 1.7 # drivers/ide/ide-default.c 1.2 -> 1.3 # arch/ia64/kernel/init_task.c 1.12 -> 1.13 # drivers/pci/hotplug/acpiphp.h 1.6 -> 1.7 # drivers/net/bonding/bond_3ad.h 1.1 -> 1.2 # include/asm-alpha/processor.h 1.9 -> 1.10 # net/ipv4/route.c 1.69 -> 1.71 # arch/parisc/kernel/process.c 1.10 -> 1.11 # drivers/isdn/hardware/eicon/debuglib.h 1.1 -> 1.2 # drivers/block/acsi.c 1.53 -> 1.54 # arch/ia64/kernel/Makefile 1.25 -> 1.26 # arch/i386/kernel/i386_ksyms.c 1.53 -> 1.55 # drivers/isdn/hardware/eicon/diddfunc.c 1.2 -> 1.3 # include/linux/random.h 1.2 -> 1.3 # fs/proc/kmsg.c 1.4 -> 1.5 # fs/nls/nls_gb2312.c 1.4 -> (deleted) # drivers/block/umem.c 1.43 -> 1.44 # drivers/ide/ide-tcq.c 1.7 -> 1.8 # include/asm-sparc/processor.h 1.13 -> 1.14 # drivers/net/ne2.c 1.7 -> 1.9 # fs/proc/generic.c 1.23 -> 1.24 # arch/parisc/kernel/syscall.S 1.13 -> 1.14 # drivers/isdn/hardware/eicon/io.h 1.2 -> 1.3 # drivers/net/hamachi.c 1.30 -> 1.31 # include/asm-ppc64/prom.h 1.8 -> 1.9 # include/linux/seq_file.h 1.7 -> 1.8 # net/802/psnap.c 1.8 -> 1.10 # net/ipv4/netfilter/ip_nat_irc.c 1.8 -> 1.9 # arch/arm/def-configs/fortunet 1.6 -> 1.8 arch/arm/configs/fortunet_defconfig (moved) # arch/parisc/kernel/parisc_ksyms.c 1.9 -> 1.11 # arch/ppc64/kernel/pSeries_lpar.c 1.21 -> 1.22 # arch/sparc/math-emu/sfp-util.h 1.1 -> 1.2 # drivers/net/arm/ether00.c 1.4 -> 1.5 # drivers/net/3c505.c 1.25 -> 1.26 # include/asm-i386/mach-default/mach_apic.h 1.27 -> 1.28 # arch/arm/mach-sa1100/hackkit.c 1.2 -> 1.3 # drivers/usb/misc/speedtch.c 1.94 -> 1.98 # drivers/net/wan/wanpipe_multppp.c 1.14 -> 1.15 # fs/nls/nls_cp869.c 1.5 -> 1.6 # fs/nls/nls_cp949.c 1.4 -> 1.6 # include/asm-arm/arch-pxa/ide.h 1.1 -> 1.2 # drivers/net/wan/sdla.c 1.15 -> 1.18 # drivers/macintosh/adb.c 1.21 -> 1.22 # drivers/usb/media/usbvideo.c 1.39 -> 1.40 # arch/arm/def-configs/graphicsclient 1.10 -> 1.12 arch/arm/configs/graphicsclient_defconfig (moved) # fs/xfs/xfs_log.c 1.22 -> 1.25 # net/ipv4/ipvs/ip_vs_nq.c 1.1 -> 1.2 # drivers/isdn/hardware/eicon/s_pri.c 1.2 -> 1.3 # fs/nls/nls_cp864.c 1.5 -> 1.6 # fs/ufs/namei.c 1.22 -> 1.23 # drivers/pcmcia/i82092.c 1.27 -> 1.29 # drivers/net/wan/comx-proto-ppp.c 1.5 -> 1.6 # arch/arm/def-configs/hackkit 1.1 -> 1.3 arch/arm/configs/hackkit_defconfig (moved) # include/rxrpc/transport.h 1.1 -> 1.2 # arch/ia64/sn/io/sn2/pcibr/pcibr_dvr.c 1.12 -> 1.13 # drivers/net/slip.c 1.21 -> 1.22 # fs/xfs/xfs_vnodeops.c 1.35 -> 1.40 # include/asm-parisc/processor.h 1.11 -> 1.12 # drivers/pci/hotplug/ibmphp_core.c 1.34 -> 1.35 # security/selinux/selinuxfs.c 1.2 -> 1.3 # arch/arm/mm/Makefile 1.19 -> 1.20 # net/ipv4/ipvs/ip_vs_proto_udp.c 1.1 -> 1.2 # arch/parisc/kernel/traps.c 1.10 -> 1.11 # Documentation/kernel-parameters.txt 1.28 -> 1.30 # arch/ppc64/kernel/pSeries_pci.c 1.26 -> 1.27 # scripts/mkcompile_h 1.16 -> 1.17 # arch/ia64/kernel/unwind.c 1.32 -> 1.33 # fs/reiserfs/tail_conversion.c 1.26 -> 1.27 # arch/parisc/kernel/module.c 1.6 -> 1.7 # net/bluetooth/bnep/sock.c 1.11 -> 1.13 # fs/xfs/xfs_dir2.c 1.6 -> 1.8 # fs/afs/super.h 1.1 -> 1.2 # include/net/llc_s_st.h 1.2 -> 1.3 # fs/xfs/linux/xfs_sysctl.c 1.12 -> 1.15 # arch/mips/kernel/irixelf.c 1.6 -> 1.8 # (new) -> 1.4 net/llc/llc_core.c # (new) -> 1.1 sound/oss/dmasound/tas3001c_tables.c # (new) -> 1.1 include/linux/compiler-gcc3.h # (new) -> 1.1 arch/arm/mach-integrator/lm.c # (new) -> 1.1 fs/afs/cache.h # (new) -> 1.1 arch/ia64/oprofile/init.c # (new) -> 1.1 sound/oss/dmasound/tas3001c.c # (new) -> 1.1 include/asm-arm/arch-integrator/lm.h # (new) -> 1.1 sound/oss/dmasound/tas3001c.h # (new) -> 1.1 arch/ia64/oprofile/Makefile # (new) -> 1.1 sound/oss/dmasound/tas_common.h # (new) -> 1.1 sound/oss/dmasound/dac3550a.c # (new) -> 1.1 include/asm-parisc/sections.h # (new) -> 1.1 Documentation/as-iosched.txt # (new) -> 1.1 arch/i386/kernel/timers/common.c # (new) -> 1.1 include/linux/compiler-intel.h # (new) -> 1.1 arch/arm/mm/Kconfig # (new) -> 1.1 security/commoncap.c # (new) -> 1.5 arch/i386/kernel/cpu/cpufreq/speedstep-smi.c # (new) -> 1.1 include/asm-i386/ist.h # (new) -> 1.1 drivers/net/wan/wanxlfw.inc # (new) -> 1.2 arch/arm/mm/proc-arm1026.S # (new) -> 1.2 arch/ppc64/mm/hugetlbpage.c # (new) -> 1.1 sound/oss/dmasound/tas3004.h # (new) -> 1.1 sound/oss/dmasound/tas_eq_prefs.h # (new) -> 1.1 sound/oss/dmasound/tas_common.c # (new) -> 1.1 arch/ia64/kernel/perfmon_hpsim.h # (new) -> 1.2 arch/arm/mm/proc-arm1020e.S # (new) -> 1.1 arch/ia64/oprofile/Kconfig # (new) -> 1.2 net/llc/Kconfig # (new) -> 1.1 drivers/net/wan/wanxl.h # (new) -> 1.1 include/asm-ppc64/local.h # (new) -> 1.1 scripts/bin2c.c # (new) -> 1.1 arch/ppc64/boot/install.sh # (new) -> 1.1 net/llc/llc_output.h # (new) -> 1.1 sound/oss/dmasound/tas_ioctl.h # (new) -> 1.1 sound/oss/dmasound/tas3004_tables.c # (new) -> 1.2 net/llc/llc_output.c # (new) -> 1.1 include/asm-parisc/local.h # (new) -> 1.1 sound/oss/dmasound/tas3004.c # (new) -> 1.1 drivers/net/wan/wanxl.c # (new) -> 1.1 sound/oss/dmasound/trans_16.c # (new) -> 1.2 arch/arm/mm/proc-arm1022.S # (new) -> 1.1 include/linux/compiler-gcc+.h # (new) -> 1.1 include/linux/compiler-gcc.h # (new) -> 1.1 include/asm-ia64/intel_intrin.h # (new) -> 1.1 include/linux/compiler-gcc2.h # (new) -> 1.1 arch/parisc/nm # (new) -> 1.1 drivers/net/wan/wanxlfw.S # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 03/09/08 torvalds@home.osdl.org 1.1217.3.21 # Linux 2.6.0-test5 # -------------------------------------------- # 03/09/08 davej@redhat.com 1.1153.89.6 # [AGPGART] Fix ATI GART for IGP9100/R300 # From the folks at ATI. Some chips hang with this flush. # -------------------------------------------- # 03/09/08 jbarnes@sgi.com 1.1153.79.27 # [PATCH] ia64: misc. sn2 updates # # Fix a couple of sn2 files. # -------------------------------------------- # 03/09/08 jbarnes@sgi.com 1.1153.79.28 # [PATCH] ia64: fix current usage in sn2 code # # For some reason, we had a structure field called 'current'. This patch # fixes that. # -------------------------------------------- # 03/09/08 davidm@tiger.hpl.hp.com 1.1217.3.22 # Merge tiger.hpl.hp.com:/data1/bk/vanilla/linux-2.5 # into tiger.hpl.hp.com:/data1/bk/lia64/to-linus-2.5 # -------------------------------------------- # 03/09/08 rmk@flint.arm.linux.org.uk 1.1217.5.1 # Merge flint.arm.linux.org.uk:/usr/src/bk/linux-2.6 # into flint.arm.linux.org.uk:/usr/src/bk/linux-2.6-pcmcia # -------------------------------------------- # 03/09/09 paulus@samba.org 1.1221 # Merge bk://ppc@ppc.bkbits.net/for-linus-ppc # into samba.org:/home/paulus/kernel/for-linus-ppc # -------------------------------------------- # 03/09/08 suresh.b.siddha@intel.com 1.1217.3.23 # [PATCH] ia64: fix typo in spinlock.h # # -------------------------------------------- # 03/09/08 greg@kroah.com 1.1217.6.1 # Merge kroah.com:/home/greg/linux/BK/bleed-2.5 # into kroah.com:/home/greg/linux/BK/pci-2.6 # -------------------------------------------- # 03/09/08 arun.sharma@intel.com 1.1217.3.24 # [PATCH] ia64: MINSIGSTKSZ on ia32 # # MINSIGSTKSZ is defined differently for i386 and ia64. This patch improves # compatibility with apps which use sigaltstack(2) with sizes between # MINSIGSTKSZ_IA32 and MINSIGSTKSZ. # -------------------------------------------- # 03/09/09 paulus@samba.org 1.1222 # Merge samba.org:/home/paulus/kernel/linux-2.5 # into samba.org:/home/paulus/kernel/for-linus-ppc # -------------------------------------------- # 03/09/08 peterc@gelato.unsw.edu.au 1.1217.3.25 # [PATCH] ia64: unwind.c fix for spinlock-debug compilation # # If you try to compile 2.6.0-test[45] with spinlock debugging on, then # unwind.c won't compile, because it uses a #define magic that hides # the variable in the spinlock debugging code (also called magic). # -------------------------------------------- # 03/09/09 davej@redhat.com 1.1153.89.7 # [AGPGART] Remove unreferenced extern # -------------------------------------------- # 03/09/09 rmk@flint.arm.linux.org.uk 1.1217.7.1 # Merge # -------------------------------------------- # 03/09/09 rmk@flint.arm.linux.org.uk 1.1217.7.2 # [SERIAL] Drop "level" argument from serial PM calls. # # Since the driver model has transitioned away from using multi-level # device suspend/resume, we also drop the multi-level support from # the serial layer. # # Update the 8250 and sa1100 drivers for this change. # -------------------------------------------- # 03/09/09 rmk@flint.arm.linux.org.uk 1.1217.7.3 # [SERIAL] Convert serial config deps to select statements # # The dependencies for CONFIG_SERIAL_CORE / CONFIG_SERIAL_CORE_CONSOLE # were becoming very messy. This cset converts the dependencies to # use "select" statements instead. # -------------------------------------------- # 03/09/09 rmk@flint.arm.linux.org.uk 1.1217.7.4 # [SERIAL] Fix another missing irqreturn_t (clps711x.c) # -------------------------------------------- # 03/09/09 rmk@flint.arm.linux.org.uk 1.1217.7.5 # [SERIAL] Introduce per-port capabilities. # # This allows us to maintain quirks or capabilities on a per-port basis, # so we can handle buggy clones more effectively. # -------------------------------------------- # 03/09/09 Andries.Brouwer@cwi.nl 1.1217.8.1 # [PATCH] compilation fix ufs # # Don't use C++ "argument declarations anywhere" in the kernel, even if # newer versions of gcc accept it. # -------------------------------------------- # 03/09/09 Andries.Brouwer@cwi.nl 1.1217.8.2 # [PATCH] sparse fix sysctl # -------------------------------------------- # 03/09/09 Andries.Brouwer@cwi.nl 1.1217.8.3 # [PATCH] sparse fix eventpoll # -------------------------------------------- # 03/09/09 Andries.Brouwer@cwi.nl 1.1217.8.4 # [PATCH] sparse fix cpufreq # -------------------------------------------- # 03/09/09 Andries.Brouwer@cwi.nl 1.1217.8.5 # [PATCH] sparse fix xattr # -------------------------------------------- # 03/09/09 Andries.Brouwer@cwi.nl 1.1217.8.6 # [PATCH] sparse fix kcore # -------------------------------------------- # 03/09/09 Andries.Brouwer@cwi.nl 1.1217.8.7 # [PATCH] sparse fix ext2_readlink # -------------------------------------------- # 03/09/09 Andries.Brouwer@cwi.nl 1.1217.8.8 # [PATCH] sparse fix reboot # -------------------------------------------- # 03/09/09 Andries.Brouwer@cwi.nl 1.1217.8.9 # [PATCH] sparse fix for proc/misc # -------------------------------------------- # 03/09/09 Andries.Brouwer@cwi.nl 1.1217.8.10 # [PATCH] sparse fix for fat/file.c # -------------------------------------------- # 03/09/09 Andries.Brouwer@cwi.nl 1.1217.8.11 # [PATCH] sparse fix for kmsg # -------------------------------------------- # 03/09/09 Andries.Brouwer@cwi.nl 1.1217.8.12 # [PATCH] sparse fix for proc/generic # -------------------------------------------- # 03/09/09 torvalds@home.osdl.org 1.1217.9.1 # Merge http://lia64.bkbits.net/to-linus-2.5 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/09 jgarzik@pobox.com 1.1217.9.2 # [PATCH] Fix netdev close # # This should fix the "ifconfig down ... ifconfig up" problems some # people have seen. # -------------------------------------------- # 03/09/09 joe@perches.com 1.1217.9.3 # [PATCH] Add SEQ_START_TOKEN #define to seq_file.h # # Code that includes seq_file.h uses a magic pointer "(void*)1" # to start a header seq_printf. # # This patch adds a #define, so that people can start writing more # readable code. # -------------------------------------------- # 03/09/09 axboe@suse.de 1.1217.9.4 # [PATCH] Fix blk_stop_queue bug # # Benh saw some bugs where the queue would end up being in an invalid # state, and this could certainly explain one of them. We must not have a # stopped queue on the plug list, and blk_plug_device() right now will # happily plug a stopped queue. # # We don't need to have it plugged either, blk_start_queue() will make # sure that request_fn gets run. # -------------------------------------------- # 03/09/09 eike-kernel@sf-tec.de 1.1217.9.5 # [PATCH] Fix typo in fs/Kconfig # -------------------------------------------- # 03/09/09 dhowells@redhat.com 1.1217.9.6 # [PATCH] RxRPC update # # Here's a patch to update the RxRPC driver. Most of it is CodingStyle fixes, # but it also includes a few miscellaneous bug fixes. stdint types are also # turned into C99 forms (eg: u32 -> uint32_t). # -------------------------------------------- # 03/09/09 dhowells@redhat.com 1.1217.9.7 # [PATCH] AFS update # -------------------------------------------- # 03/09/09 benh@kernel.crashing.org 1.1217.10.1 # Merge kernel.crashing.org:/home/benh/kernels/linux-2.5 # into kernel.crashing.org:/home/benh/kernels/for-linus-ppc # -------------------------------------------- # 03/09/09 jbarnes@sgi.com 1.1217.3.26 # [PATCH] ia64: cpumask_t fixes # # This patch coverts a few spots to use cpumask_t instead of unsigned # long. # -------------------------------------------- # 03/09/09 torvalds@home.osdl.org 1.1217.9.8 # Merge bk://bk.arm.linux.org.uk/linux-2.6-serial # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/09 benh@kernel.crashing.org 1.1217.9.9 # [PATCH] IDE: Fix request handling with ide-default & ATAPI # # This fixes a bug that happens when a request gets to the IDE layer for a # drive using ide-default (that is with no subdriver attached), like a # Power Management request. In this case, the core will wait for the # device status to match drive->read_stat, but that field contains by # default a value that is not suitable for ATAPI devices. This patch # fixes it. # -------------------------------------------- # 03/09/09 benh@kernel.crashing.org 1.1217.9.10 # [PATCH] IDE: Fix Power Management request race on resume # # The current IDE Power Management code I wrote has a race on wakeup when # the master device got resumed, it may take a request. At this point, a # PM resume request to a slave device of the same hwgroup would clear # hwgroup->rq and cause an Oops when the master device request completes. # # This patch fixes it. Due to the context in which PM resume requests are # sent, just not clearing hwgroup->rq for these is enough. # # I also removed a useless debug message in the PM code that was # actually misleading (people though it indicated a problem while it # didn't, it's really useless) and fix a typo in a comment. # -------------------------------------------- # 03/09/09 benh@kernel.crashing.org 1.1217.10.2 # dmasound update from Christoph Hellwig # -------------------------------------------- # 03/09/09 benh@kernel.crashing.org 1.1223 # Merge bk://ppc@ppc.bkbits.net/for-linus-ppc # into kernel.crashing.org:/home/benh/kernels/for-linus-ppc # -------------------------------------------- # 03/09/10 anton@samba.org 1.1217.1.3 # Merge samba.org:/scratch/anton/linux-2.5 # into samba.org:/scratch/anton/tmp3 # -------------------------------------------- # 03/09/09 armin@melware.de 1.1217.9.11 # [PATCH] eicon ISDN driver: memory attach # # Access to cards memory now uses macros to attach # to the correct memory area of the card. # -------------------------------------------- # 03/09/09 armin@melware.de 1.1217.9.12 # [PATCH] eicon ISDN driver: capi code fix # # Fix application memory allocation, module locking, # building in-kernel, use new internal debug api. # -------------------------------------------- # 03/09/09 armin@melware.de 1.1217.9.13 # [PATCH] eicon ISDN driver: debug # # Module now can be build without debug code, necessary # if the module is built-in the kernel. # # Fixed spelling typos. # -------------------------------------------- # 03/09/09 armin@melware.de 1.1217.9.14 # [PATCH] eicon ISDN driver: list handling # # Fixed internel list handling for modules built-in kernel. # -------------------------------------------- # 03/09/09 armin@melware.de 1.1217.9.15 # [PATCH] eicon ISDN driver: endianess # # fixed endianess errors in common code part. # -------------------------------------------- # 03/09/09 armin@melware.de 1.1217.9.16 # [PATCH] eicon ISDN driver: Kernelconfig # # Main divas modules now may be build in-kernel. # 4BRI cards are configured together with BRI cards. # -------------------------------------------- # 03/09/09 armin@melware.de 1.1217.9.17 # [PATCH] eicon ISDN driver: C comments # # changed // comments to /* */ # -------------------------------------------- # 03/09/09 armin@melware.de 1.1217.9.18 # [PATCH] eicon ISDN driver: update # # Use different var-names if they are non-static, # configure 4BRI like BRI cards, fixed new /proc entries, # inline declarations for common helper functions. # -------------------------------------------- # 03/09/09 rmk@arm.linux.org.uk 1.1217.9.19 # [PATCH] stable AGP pci_device_id tables # # This should fix all the AGP drivers. # # pci_device_id tables can not and must not be marked discardable. They # are used for as long as the driver is registered. # -------------------------------------------- # 03/09/09 rmk@arm.linux.org.uk 1.1217.9.20 # [PATCH] More buggy pci drivers # # This should fix all the remaining pci drivers which mark the pci device # ID tables as being discardable at run time. # -------------------------------------------- # 03/09/10 anton@samba.org 1.1217.1.4 # ppc64: catch bad ioctl size at compile time, from x86 # -------------------------------------------- # 03/09/09 torvalds@home.osdl.org 1.1224 # Merge bk://ppc.bkbits.net/for-linus-ppc # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/09 davej@redhat.com 1.1153.107.25 # [CPUFREQ] Merge speedstep-smi driver. # From: Hiroshi Miura # # Intel SpeedStep driver using a BIOS SMI call. # # Quoting his original announcement: # # "This driver is based on the information from # # 1. Microsoft Windows XP Document. # we can get the SMI interface values from ax=E980/int15 BIOS call. # # 2. Intel SpeedStep Applet Document.(from HP.com) # http://h18007.www1.hp.com/support/files/evonotebook/us/download/10631.html # " Adds code to request transition ownership when processing # the system critical resume message. When a critical hibernate occurs, # the Applet does not receive any system level notification. The change forces # the Applet to re-acquire transition ownership upon resume from a critical hibernate. " # # This is informative. This saied that something 'ownership' call is needed on SMI # interface first. # # 3. Grover, Andrew's int 15h patch posted to cpufreq ml # Message-ID: # code which call BIOS to get SMI values. I included it. # # 4. Malik Martin's rev engineering results. # call is made with BX, CX, EDI register values. # and need signature 'ISG' when call. # find function values. bx=1(get) and bx=2(set) # # 5. Marc Lehmann's 'speedstep' utility, # sample of assembler code to call SMI. # # 6. My work. # find function to return max/min freq which system supportd. (bx=4) # more values are gotten, but I cannot understand... # find 'ownership' function value(bx=0, which is other than 1 2 4..). # # ToDo(in pregress) # support governor "auto" and using smi_event call, imprement auto freqchange # feature. # test on 440BX/ZX platform. # # Memo # module parameters are override result of an int 15h/eax=E890h call. # these parameter value are gotten from Windows XP registory." # # Also includes some bugfixes, updates and workarounds from me. # # NB: A lot of BIOS out there are buggy. You might want to try this driver # also with Intel's default values -- smi_cmd = 0x82 and smi_port = 0xb2 # # -------------------------------------------- # 03/09/09 bunk@fs.tum.de 1.1225 # [PATCH] ATM Ambassador no longer BROKEN_ON_SMP # # Chas Williams fixed the compilation on SMP, so we can remove the Kconfig # annotation now and let people select it in the build again. # -------------------------------------------- # 03/09/09 willy@debian.org 1.1226 # [PATCH] PA-RISC update for 2.6.0-test5 # # PA-RISC updates for 2.6.0-test5. # # Contributions from Paul Bame, James Bottomley, Randolph Chung, Helge # Deller, Grant Grundler, LaMont Jones, Matthew Wilcox # -------------------------------------------- # 03/09/09 davej@redhat.com 1.1153.107.26 # [CPUFREQ] remove $Id$ tags, update filenames # -------------------------------------------- # 03/09/09 davej@redhat.com 1.1153.107.27 # [CPUFREQ] add cpufreq_update_policy() # # Add a new cpufreq_update_policy call: # # Certain cpufreq policy notifers have different needs at different times. # Thus it needs to be possible to re-evaluate an already set cpufreq policy. # Note that the cpufreq policy should only be set by one person: the user. # Not any other in-kernel code [with one exception, of course: during # booting]. # -------------------------------------------- # 03/09/09 torvalds@osdl.org 1.1227 # [PATCH] Fix CONFIG_PCMCIA_WL3501 with older compilers # # We only support named initializers with one leval of naming, ie that # # .foo.bar = baz, # # thing should go. gcc-2.95 doesn't handle it (neither does sparse, I # think). # # Replace such initializers with # # .foo = { # .bar = baz, # }, # # instead. # -------------------------------------------- # 03/09/10 anton@samba.org 1.1217.1.5 # ppc64: Give us a generic local.h until we have atomic64 # -------------------------------------------- # 03/09/09 guillaume@morinfr.org 1.1228 # [PATCH] fix cpu_test_and_set() on UP # # cpumask_up.h is broken. It tries to access the "mask" member although # that cpumask_t is an ulong on UP. This breaks archs which uses cpumask # functions even on UP such as s390. # -------------------------------------------- # 03/09/09 torvalds@home.osdl.org 1.1229 # Merge http://ppc.bkbits.net/for-linus-ppc64 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/09 torvalds@home.osdl.org 1.1230 # Merge bk://linux-dj.bkbits.net/cpufreq # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/09 shemminger@osdl.org 1.1231 # [PATCH] Get rid of Intermezzo warning # # There is a leftover MOD_DEC_USE_COUNT intermezzo, with no matching _INC_ # anywhere. # # Since it sets owner on the file system operations there should be no # need for explicit module manipulation. # -------------------------------------------- # 03/09/09 shemminger@osdl.org 1.1232 # [PATCH] Fix modularization of Siemens line discipline # # Convert SIEMENS R3964 tty line discipline on 2.6.0-test5 to use tty_ldisc owner # instead of explicit MOD_INC/DEC. # # And fix the initializer to be a much more readable C99 one. # -------------------------------------------- # 03/09/09 joe@perches.com 1.1233 # [PATCH] Use SEQ_START_TOKEN in drivers/net/* [1/3] # -------------------------------------------- # 03/09/09 joe@perches.com 1.1234 # [PATCH] Use SEQ_START_TOKEN in include/net/* [2/3] # -------------------------------------------- # 03/09/09 joe@perches.com 1.1235 # [PATCH] Use SEQ_START_TOKEN in include/net/* [3/3] # -------------------------------------------- # 03/09/09 torvalds@home.osdl.org 1.1236 # Make rxrpc use SEQ_START_TOKEN. # -------------------------------------------- # 03/09/09 eyal@eyal.emu.id.au 1.1237 # [PATCH] wl3501 with old compiler # # Fix the ## handling to work with old gcc versions (spaces around the ',' # to make token boundaries work). # -------------------------------------------- # 03/09/09 jbarnes@sgi.com 1.1217.3.27 # [PATCH] ia64: update Kconfig comment for NR_CPUS # # -------------------------------------------- # 03/09/09 torvalds@home.osdl.org 1.1238 # From Stephen Hemminger: we were trying to cast an "unsigned short" # to a pointer. That was a typo. # # Ack'ed by Al Viro. # -------------------------------------------- # 03/09/09 torvalds@home.osdl.org 1.1239 # Fix ray_cs for new interrupt handling. # # Damn 16-bit PCMCIA layer has no type checking. Complete crap. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1240 # [PATCH] s/spin_lock_irqrestore/spin_unlock_irqrestore # # From: Vinay K Nallamothu # # Fix a couple of cut-n-paste errors. # # (Why on earth is a scsi driver poking at the RTC hardware?) # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1241 # [PATCH] calibrate_tsc() fix and consolidation # # From: "Pallipadi, Venkatesh" # # CONFIG_TIMER_CYCLONE doesn't build at present because calibrate_tsc() was # made static. # # The patch fixes that up and moves all calibrate_tsc functions into a common # file, avoiding the current code duplication. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1242 # [PATCH] Initialise devfs_name in various block drivers # # From: Andrey Borzenkov # # Various block drivers are currently devfs-unaware. Andrey's patch attempts # to give them reasonable representations in devfs. # # # "The attached patch suggests some possible names for non-floppy devices # based on reading driver source. I have to ask if these make sense. At # least for cciss Mandrake devfsd patch expects different names but it # seems to be mistake (it assumes single controller always) # # "For floppy it is not as simple. Floppy cannot use genhd and must # create names manually; but I do not know what names are appropriate or # expected. # # "For acsi the target/lun name may have problem of creating compat names # (if any) by devfsd. # # "Please note that none of them created any devfs name under 2.4 as well. # So it is not a regression ..." # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1243 # [PATCH] monolitic_clock, timer_{tsc,hpet} and CPUFREQ # # From: Dmitry Torokhov # # I noticed that although timer_tsc registers cpufreq notifier to detect # frequency changes and adjust cpu_khz it does not set cyc2ns_scale. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1244 # [PATCH] dac960 devfs_name initialisation fix # # From: Andrey Borzenkov # # DAC960.c does it incorrectly (at least in 2.6.0-test4). It will create # _directory_ /dev/rd/cNdM making it impossible to create compat block device # entry with the same name. # # The right thing it to create separate directory for each controller/target as # in attached trivial patch (untested due to lack of hardware). You will need # devfsd support for this but then you will need it for cciss or cpqarray as # well and possibly for others. Which returns us to the problem of devfsd # maintenance ... # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1245 # [PATCH] compiler warning fixes for DAC960 on alpha # # From: Dave Olien # # This patch is forwarded from Jay Estabrook at HP. I've compiled the # patch on ia32 and ia64 machines and it's good. I also recreated # the patch so it would apply to mm5 without fuzzy offsets. # Here's Jay's summary of the patch: # # Here's a very small set of patches against 2.6.0-test4 that help the # DAC960 driver compile cleaner (gets rid of warnings on Alpha) and help # it to work on some old OEM'ed DAC960 cards that were sold in our older # Alphas. # # The warnings are all concerned with "conversions to different size # without cast", as pointers and longs are same size (8-bytes) but ints # are 4-bytes, on Alpha. I don't believe the change to (long) from (int) # will affect any 32-bit architectures, but those using LP64 like Alpha, # ie SPARC64 and prolly IA64, will have the warnings go away. # # The change to make the oldest acceptable firmware version 2.70 instead # of 2.73 is made spcific to Alpha, since it is only those cards that # DEC OEM'ed from Mylex that would have such (as explained a bit better # in the patch itself). # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1246 # [PATCH] Move ikconfig to /proc/config.gz # # From: "Randy.Dunlap" # # # The SuSE kernels place their ikconfig info at /proc/config.gz: in a # different place, and compressed. We thought it was a good idea to do it # that way in 2.6 as well. # # - gzip the /proc config file, put it in /proc/config.gz; # # - Based on a SuSE patch by Oliver Xymoron , which was # derived from a patch by Nicholas Leon # # - change /proc/ikconfig/built_with to /proc/config_build_info; # # - cleanup ikconfig init/exit entry points (static, __init, __exit); # # - Makefile help from Sam Ravnborg; # # DESC # ikconfig cleanup # EDESC # From: Stephen Hemminger # # Simplify and cleanup the code: # - use single interface to seq_file where possible # - don't need to do as much of the /proc interface, only read # - use copy_to_user to avoid char at a time copy # - remove unneccesary globals # - use const char[] rather than const char * where possible. # # Didn't change the version since interface doesn't change. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1247 # [PATCH] reiserfs direct-IO support # # From: Oleg Drokin # # This patch implements DirectIO support for reiserfs v3. This is mostly a # port from 2.4. # # Thanks to Mingming Cao from IBM for some clues in porting. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1248 # [PATCH] Fix imm.c again # # From: Adrian Bunk # # Earlier patch wasn't correct especially in the !CONFIG_SCSI_IZIP_EPP16 # case, reading all uses of this array (IMM_MODE_STRING is used to print the # corresponding string in printks). # # If I'm not misunderstanding it, CONFIG_SCSI_IZIP_EPP16 means "use 16bit # even when 32bit is requested". # # It seems the right solution is # # static char *IMM_MODE_STRING[] = # { # [IMM_AUTODETECT] = "Autodetect", # [IMM_NIBBLE] = "SPP", # [IMM_PS2] = "PS/2", # [IMM_EPP_8] = "EPP 8 bit", # [IMM_EPP_16] = "EPP 16 bit", # #ifdef CONFIG_SCSI_IZIP_EPP16 # [IMM_EPP_32] = "EPP 16 bit", # #else # [IMM_EPP_32] = "EPP 32 bit", # #endif # [IMM_UNKNOWN] = "Unknown", # }; # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1249 # [PATCH] make selinux enable param config option, enabled by # # From: James Morris # # This patch against current bk makes the recently added SELinux boot # parameter feature a configurable option, and enables SELinux by default # when selected. These changes were made following feedback including # discussion on the SELinux list. # # The rationale for the changes is to allow SELinux to be be configured and # enabled unconditionally. If the boot parameter option is selected, then # SELinux is now enabled unless selinux=0 is specified at the kernel command # line. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1250 # [PATCH] sound: remove duplicate includes # # From: "Randy.Dunlap" # # remove duplicate #includes in sound/ # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1251 # [PATCH] remove duplicate includes in kernel/ # # From: "Randy.Dunlap" # # remove duplicate #includes in kernel/ # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1252 # [PATCH] Handle NR_CPUS overflow # # From: john stultz # # Don't try to support more than NR_CPUS cpus: things overflow. # # Also, increase the default in config for some architectures. (Dave # Hansen). # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1253 # [PATCH] ppp devfs oops fix # # From: Christoph Hellwig # # PPP leaves the chardev registered even if we're going to fail the modprobe. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1254 # [PATCH] d_delete-d_lookup race fix # # From: Maneesh Soni # # d_delete() calls dentry_iput() after releasing the per dentry lock. This # can race with __d_lookup and lead to situation where we can make dentry # negative with ref count > 1. The following patch makes dentry_iput() to # hold per dentry lock till d_inode is NULL and dentry has been removed from # d_alias list. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1255 # [PATCH] ia32 idle using PNI monitor/mwait # # From: "Nakajima, Jun" # # Attached is a patch that enables PNI (Prescott New Instructions) # monitor/mwait in the kernel idle handler. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1256 # [PATCH] remap file pages MAP_NONBLOCK fix # # From: Rajesh Venkatasubramanian # # The remap_file_pages system call with MAP_NONBLOCK flag does not # install file-ptes when the required pages are not found in the # page cache. Modify the populate functions to install file-ptes # if the mapping is non-linear and the required pages are not found # in the page cache. # # Patch is for test4-mm6. Compiles and boots. Patch tested using the # programs at: # # http://www-personal.engin.umich.edu/~vrajesh/linux/remap-file-pages/ # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1257 # [PATCH] install_page pte use-after-unmap fix # # From: Rajesh Venkatasubramanian # # Don't deref the pte pointer after having kunmapped the memory it points at. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1258 # [PATCH] really use english date in version string # # From: Andrey Borzenkov # # LANG is not always enough to force date to english. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1259 # [PATCH] tidy up lib/inflate.c error messages # # From: Andre McCurdy # # There is some inconsistency within lib/inflate.c and its users about # whether the error message text or the error() function should provide # the '\n'. # # This patch tries to make everyone consistent - by removing the # newline from all message texts, and adding one to the only error() # function which did not provide it (in init/do_mounts_rd.c). # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1260 # [PATCH] ext3: remove debug code # # ext3 has fancy test harness code which allows you to simulate crashes (for # testing recovery). It will make the underlying disk start ignoring writes a # specified number of seconds after the mount. # # It's inoperative without an additional offline patch anyway, and it's doing # hacky things which scared Al. So kill it; I'll maintain it in the separate # ext3 debug patch. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1261 # [PATCH] mwave locking fixes # # From: Manfred Spraul # # The mwave driver uses a user space daemon for some modem operations. The # user space daemon calls ioctl(,IOCTL_MW_GET_IPC), and the driver returns # after an interrupt arrived. The actual wait used # interruptible_sleep_on(), which can lead to lost wakeups. A local # spinlock on the stack is used to close that race, but this is broken on # SMP, perhaps even with preempt. # # The attached patch fixes that by switching to the normal # add_wait_queue/test_if_race_occured/schedule/remove_wait_queue sequence. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1262 # [PATCH] fix Summit srat.h includes # # From: Dave Hansen # # I was compiling for my plain 'ol PC, and was getting unresolved symbols # for get_memcfg_from_srat() and get_zholes_size(). The CONFIG_NUMA # definition right now allows it to be turned on for plain old X86_PC. # Does anyone know why this is? # # depends on SMP && HIGHMEM64G && # (X86_PC || X86_NUMAQ || X86_GENERICARCH || # (X86_SUMMIT && ACPI && !ACPI_HT_ONLY)) # # In any case, the summit code incorrectly assumes in at least 2 places # that NUMA && !NUMAQ means summit. Someone was evidently trying to cover # the generic subarch case, but that's already taken care of by the lovely # config system and CONFIG_ACPI_SRAT. This patch fixes those assumptions # and adds a nice little warning for people that try to #include srat.h # without having srat support turned on. # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1263 # [PATCH] Reduce random driver lock contention # # From: Matt Mackall # # The new locking in the random driver is consuming 60% of CPU resources in # Anton's monster power5 boxes. # # # Basically, when the primary pool is 7/8th full, we shut off the firehose # and go into a trickle mode to keep the pool fresh. Saves CPU for everyone # and should make the contention drop off the charts too (though the trickle # factor might need adjusting again for Origin-class machines). # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1264 # [PATCH] sys_fadvise needs asmlinkage # -------------------------------------------- # 03/09/10 akpm@osdl.org 1.1265 # [PATCH] CPU scheduler CAN_MIGRATE fix # # From: Andrew Theurer # # This change: # http://linux.bkbits.net:8080/linux-2.5/diffs/kernel/sched.c@1.202 # # does not seem to make sense: # # #define CAN_MIGRATE_TASK(p,rq,this_cpu) \ # ((!idle || (jiffies - (p)->last_run > cache_decay_ticks)) && \ # !task_running(rq, p) && \ # cpu_isset(this_cpu, (p)->cpus_allowed)) # # It should be just the opposite; an idle cpu should be able to have a more # aggressive steal, and a busy cpu should not. # -------------------------------------------- # 03/09/10 axboe@suse.de 1.1266 # [PATCH] get rid of warning in gscd # # From: Stephen Hemminger # # Compiler warning due to missing equal sign. # -------------------------------------------- # 03/09/10 axboe@suse.de 1.1267 # [PATCH] blk API update (and bug fix) to CDU535 cdrom driver # # This is a lot better than what is there know. # # From: Felipe W Damasio # # - cli-sti removal # - blk API update # - set_current_state # - Remove 'panic' line. # # .. and we can now remove the BROKEN_ON_SMP Kconfig annotation. # -------------------------------------------- # 03/09/10 rmk@flint.arm.linux.org.uk 1.1239.1.1 # Merge flint.arm.linux.org.uk:/usr/src/bk/linux-2.6 # into flint.arm.linux.org.uk:/usr/src/bk/linux-2.6-pcmcia # -------------------------------------------- # 03/09/10 willy@debian.org 1.1268 # [PATCH] Fill in ELF OSABI in ELF headers # # This fills in the ELF EI_OSABI field. This doesn't matter for most # architectures, but PA-RISC uses the Linux flavour of the ABI (since HPUX # uses the None flavour). # # Patch by Randolph Chung. # -------------------------------------------- # 03/09/10 armin@melware.de 1.1269 # [PATCH] Eicon ISDN driver: removed __devinitdata from pci_device_id. # # pci_device_id can not be marked __devinitdata, # was re-added with last update by accident. # -------------------------------------------- # 03/09/10 rusty@rustcorp.com.au 1.1270 # [PATCH] Remove modules.txt # # Thanks to Stephen Hemminger for pointing out how obsolete modules.txt is. # # modules.txt contains mainly ancient information which is replicated # in the kconfig help message, README, makefile.txt or the modprobe manual # page. The only part which is not covered elsewhere is the "building # external modules" which is still being debated (and belongs under the # kbuild docs). kmod.txt reference removed from index, too. # -------------------------------------------- # 03/09/10 anton@samba.org 1.1271 # [PATCH] fix oops in hvc_console # # tty_register_driver already calls tty_register_device so there is no need # to do it in hvc_console. Besides, it oopses when we do that. # -------------------------------------------- # 03/09/10 anton@samba.org 1.1272 # [PATCH] Fix initramfs permissions on directories and special files # # Set correct permissions on initramfs directories and special files. We dont # want to obey the umask here, so do the same thing we do on normal files - # call sys_chmod. # -------------------------------------------- # 03/09/10 anton@samba.org 1.1273 # [PATCH] quieten initramfs and fix /dev permissions # # Dont print the contents of the initramfs, for any decent sized cpio it will # overflow the kernel ring buffer. # # Also relax permissions on /dev (755 not 700). # -------------------------------------------- # 03/09/10 willy@debian.org 1.1274 # [PATCH] 1GB stack size limit on PA-RISC # # This patch introduces a 1GB stack size limit for stack-grows-up (ie # PA-RISC), as discussed previously. # -------------------------------------------- # 03/09/10 willy@debian.org 1.1275 # [PATCH] fs/exec.c whitespace cleanups # # Whitespace cleanup (mostly deleting trailing whitespace). # -------------------------------------------- # 03/09/10 willy@debian.org 1.1276 # [PATCH] interrupt.h needs kernel.h # # uses barrier() but does not include . # -------------------------------------------- # 03/09/10 zecke@org.rmk.(none) 1.1239.2.1 # [ARM PATCH] 1653/1: Simpad Flash Partition resubmit # # Patch from Holger Freyther # # This the the resubmit of the flash partition changes for SIMpad. # # # # Two versions one for cramfs one for all jffs2 and also the SIM has two banks instead of one even if they're next to each other... # -------------------------------------------- # 03/09/10 zecke@org.rmk.(none) 1.1239.2.2 # [ARM PATCH] 1654/1: Simpad PCMCIA resubmit # # Patch from Holger Freyther # # This fixes initialization of PCMCIA for the SIMpad # # # # unsigned long now user for the flag # -------------------------------------------- # 03/09/10 zecke@flint.arm.linux.org.uk 1.1239.2.3 # [ARM PATCH] 1656/1: Simpad board update to make it work # # Patch from Holger Freyther # # Make it work ;) # -------------------------------------------- # 03/09/10 joe@perches.com 1.1277 # [PATCH] Fix SEQ_START_TOKEN typo # # My fault. Fix for broken aarp.c which got an extra closing parenthesis. # -------------------------------------------- # 03/09/10 armin@melware.de 1.1278 # [PATCH] Eicon ISDN driver: remove old devfs_handle # # devfs_handle is not used any more. # -------------------------------------------- # 03/09/11 rmk@flint.arm.linux.org.uk 1.1239.2.4 # [ARM] Update SA1111 # # Combine the two initialisation functions, allow SA1111 to be built # as a module, and remove a redundant SA1111 function prototype. # -------------------------------------------- # 03/09/10 torvalds@home.osdl.org 1.1279 # Merge bk://bk.arm.linux.org.uk/linux-2.6-pcmcia # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/10 torvalds@home.osdl.org 1.1280 # Merge bk://bk.arm.linux.org.uk/linux-2.6-rmk # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/10 Andries.Brouwer@cwi.nl 1.1281 # [PATCH] another keyboard problem solved # # A colleague reported that the keyboard of his brandnew laptop # is dead under 2.6 while 2.4 works. # # Now I once wrote # # In order to avoid interference between scancode sequences # or mouse packets and the reponses given to commands, # the keyboard or mouse should always be disabled before # giving a command that requires a response, and probably # enabled afterwards. Some keyboards or mice do the disable # automatically in this situation, but still require an # explicit enable afterwards. # # (http://www.win.tue.nl/~aeb/linux/kbd/scancodes-9.html) # # This is what happens on this laptop. The routine atkbd_probe() # probes for a keyboard, and after detecting it, enables it. # But immediately afterwards the routine atkbd_set_3() reads # the current scancode set and sets the desired set, and as a # side effect of these commands, the keyboard gets disabled again. # # Thus, the keyboard enable must be moved after all command sending # has been done. # # Now that I patch this area anyway: we are almost always in # scancode set 2 but send the ATKBD_CMD_SETALL_MB command # that only works in scancode set 3. At best this is useless. # At worst it confuses the keyboard. So, I put this command # in a separate routine and call that only when we really # are in scancode set 3. # -------------------------------------------- # 03/09/11 viro@parcelfarce.linux.theplanet.co.uk 1.1282 # [PATCH] ps2esdi broken # # The PS/2 ESDI driver has some problems: a couple of typos on the modular # side and misuse of module_init(): # -------------------------------------------- # 03/09/11 piggin@cyberone.com.au 1.1283 # [PATCH] Badness in as_completed_request warning # # Thish fixes Suparna's fsx and aio-stress and Dave Olien's concurrent # mke2fs problems. # # It moves the hash adding into as_add_request. This fixes a small bug # where a request could be added to the merge hash after being put on the # dispatch list. # # It also moves responsibility for handling rbtree aliases (requests with # the same start sector) out of as_add_arq_rb and into its caller. This # cleans up a layering problem which was causing the state machine to go # silly. Now instead of forcing the alias out onto the dispatch list, we # chain the new request behind it, and they get sorted out at dispatch # time. # -------------------------------------------- # 03/09/11 amir.noam@intel.com 1.1284 # [bonding 2.6] fix 802.3ad long fail over with high UDP Tx stress # -------------------------------------------- # 03/09/11 amir.noam@intel.com 1.1285 # [bonding 2.6] fix load balance problem with high UDP Tx stress # -------------------------------------------- # 03/09/11 amir.noam@intel.com 1.1286 # [bonding 2.6] fix ARP monitoring bug # -------------------------------------------- # 03/09/11 amir.noam@intel.com 1.1287 # [bonding 2.6] fix kernel panic when optional feature used # -------------------------------------------- # 03/09/11 amir.noam@intel.com 1.1288 # [bonding 2.6] fix change active command # -------------------------------------------- # 03/09/11 amir.noam@intel.com 1.1289 # [bonding 2.6] fix OOPS in bonding driver, when removing primary # -------------------------------------------- # 03/09/11 amir.noam@intel.com 1.1290 # [bonding 2.6] embed stats struct inside bonding private struct # -------------------------------------------- # 03/09/11 amir.noam@intel.com 1.1291 # [bonding 2.6] fix error handling in init code # -------------------------------------------- # 03/09/11 amir.noam@intel.com 1.1292 # [bonding 2.6] make each bond device use its own /proc entry # -------------------------------------------- # 03/09/11 amir.noam@intel.com 1.1293 # [bonding 2.6] misc fixes: missing include, typos, comments # -------------------------------------------- # 03/09/11 greg@kroah.com 1.1283.1.1 # Merge kroah.com:/home/linux/BK/bleed-2.5 # into kroah.com:/home/linux/BK/pci-2.5 # -------------------------------------------- # 03/09/11 scott.feldman@intel.com 1.1294 # [e1000] new 82541/5/6/7 hardware support # # * Added 82545 (rev3), 82546 (rev3), and 82541/7 (rev2) support # - new device IDs # - internal SERDES support for 82545/6 (rev3) # - don't apply MMRBC workaround for 82545/6 (rev3) # - don't use IO mapping for reset for 82545/6 (rev3) # -------------------------------------------- # 03/09/11 scott.feldman@intel.com 1.1295 # [e1000] 82544 PCI-X hang fix + TSO updates # # * Bug fix: 82544 hang with PCI-X: if outgoing Tx buffers terminate # within evenly-aligned dwords, and the device is sharing the bus # segment with another PCI-X device, 82544 can hang the bus on a # split-completion transaction. Fix is to split buffer into two # buffers with the first one not terminating within evenly-aligned # dword address, and the second one being 4-bytes, which goes as a # non-split-conpletion PCI-X transaction. # * 8254x controllers that support TSO do an internal calculation to # make sure there is enough FIFO space to handle the overhead # of each TSO segment before DMA'ing TSO data from host memory. The # internal calculation is dependent on the mss of the TSO (defines # the number of segments), but the reserved space is a constant, so # we need to adjust the maximum size of each buffer queued to the # hardware to hold the equation and not overrun the FIFO. This is # per TSO because the mss can change from one send to the next. # -------------------------------------------- # 03/09/11 scott.feldman@intel.com 1.1296 # [e1000] Turn off ASF support on Fiber nics # # * Turn off ASF support on fiber nics. Wasn't tested and isn't # known to work, so disable before someone hurts themselves. # -------------------------------------------- # 03/09/11 scott.feldman@intel.com 1.1297 # [e1000] read correct bit from EEPROM for getting WoL settings # # * Bug fix: read the correct bit from the EEPROM that controls the # initial setting for WoL after a reset. # -------------------------------------------- # 03/09/11 scott.feldman@intel.com 1.1298 # [e1000] add ethtool flow control support # # * Add ethtool flow control support # -------------------------------------------- # 03/09/11 scott.feldman@intel.com 1.1299 # [e1000] make function our of setting media type # # * Consolidate code and make function out of setting media type. # -------------------------------------------- # 03/09/11 scott.feldman@intel.com 1.1300 # [e1000] cleanup error return codes # # * clean up error return code propagation and eliminate redundant # DEBUGOUT statements. # -------------------------------------------- # 03/09/11 scott.feldman@intel.com 1.1301 # [e1000] move static to table from .h to .c # # * Move static table from hw.h to hw.c to avoid creating a copy # of table everytime hw.h is included.in .c. # -------------------------------------------- # 03/09/11 scott.feldman@intel.com 1.1302 # [e1000] Add PHY master/slave #define override # # * Add PHY master/slave #define override to address link issues # with 82541/7 (rev2) against some low-end switches. Forcing # master will improve the time-to-link against these switches. # -------------------------------------------- # 03/09/11 scott.feldman@intel.com 1.1303 # [e1000] misc whitespace cleanup, changelog # # * misc whitespace cleanup, changelog # -------------------------------------------- # 03/09/11 rddunlap@osdl.org 1.1304 # [PATCH] tr/olympic probe: remove #warning, improve error handling # # This patch to 2.6.0-test5 removes the #warning in tokenring/olympic.c # and improves error handling in the probe function. # -------------------------------------------- # 03/09/11 felipewd@terra.com.br 1.1305 # [PATCH] slip.c: current state cleanup # -------------------------------------------- # 03/09/11 shemminger@osdl.org 1.1306 # [PATCH] fix build of cosa # # The cosa driver definition of ioctl's either conflicts or was not picked # up in the last round of _IOR redefinition (on 2.6.0-test5). # # The following makes it build, have no idea if it still works # on real hardware. # -------------------------------------------- # 03/09/11 shemminger@osdl.org 1.1307 # [PATCH] (1/4) sdla - move out of Space.c # # Patch against 2.60-test5 to move sdla driver out of Space.c for initialization # in non-module case. Since this driver doesn't come up until the device has # been configured with an ioctl (set_config); there is no way it can have # startup order problems. # -------------------------------------------- # 03/09/11 shemminger@osdl.org 1.1308 # [PATCH] (2/4) get rid of register_frad # # The sdla and dlci drivers have a callback interface which only stores a name # in a table, but doesn't do anything useful. Looks like an interface which has # lost it's usefulness and can be safely removed. # # Tested on 2.6.0-test5 by exercising the higher layer (dlci) without real hardware. # -------------------------------------------- # 03/09/11 shemminger@osdl.org 1.1309 # [PATCH] (3/4) dlci locking and registration changes # # Change the locking for the dlci device list and registration. # - use RTNL instead of a private lock (needed for net notifier in next patch). # - reorder the checks in the dlci_add to avoid complicated unwinds # - use dev->destructor to free # - hold RTNL around deassoc to protect callback from races # -------------------------------------------- # 03/09/11 shemminger@osdl.org 1.1310 # [PATCH] (4/4) dlci netdevice event handling # # Since dlci device is a pseudo device built on top of sdla, change it to # handle unregister events and delete itself. # -------------------------------------------- # 03/09/11 shemminger@osdl.org 1.1311 # [PATCH] (5/4) dlci netdevice event handling # # One more patch, found this in testing # -- need to delete device from list when unregistered # because of callback. # -------------------------------------------- # 03/09/11 romieu@fr.zoreil.com 1.1312 # [PATCH] (1/4) sdla - move out of Space.c # # Apply on top of 2.6.0-test5-bk1 + Stephen sdla patches. Compiles fine. # # # free_netdev() patrol. # # # drivers/net/wan/sdla.c | 2 +- # 1 files changed, 1 insertion(+), 1 deletion(-) # -------------------------------------------- # 03/09/11 Matt_Domsch@Dell.com 1.1283.1.2 # [PATCH] PCI: make new_id rely on CONFIG_HOTPLUG # # > > These either need to be marked __devinit and make "new_id" dependant on # > > CONFIG_HOTPLUG # # Patch below moves all the new_id code under CONFIG_HOTPLUG. Tested # with both CONFIG_HOTPLUG enabled and disabled. No significant code # changes, merely code moving, and in 2 cases, stub functions added. # -------------------------------------------- # 03/09/11 greg@kroah.com 1.1283.1.3 # [PATCH] PCI: remove compiler warning from previous new_id patch # # Also change the #define functions into inline functions to help # catch any future paramater mis-matches. # # And clean up a few minor style issue... # -------------------------------------------- # 03/09/11 greg@kroah.com 1.1283.1.4 # PCI: fix up some pci drivers that had marked their probe functions with __init # # This also required some other functions and variables to be marked as # __devinit # -------------------------------------------- # 03/09/11 torvalds@home.osdl.org 1.1313 # Merge dhcp-2:v2.5/linux into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/12 davej@hardwired.(none) 1.1283.2.1 # Merge hardwired.(none):/mnt/stuff/backups/src/kernel/2.6/trees/bk-linus # into hardwired.(none):/mnt/stuff/backups/src/kernel/2.6/trees/agpgart # -------------------------------------------- # 03/09/11 yoshfuji@linux-ipv6.org 1.1283.3.1 # [NET]: Various /proc/net/* files may drop some data. # -------------------------------------------- # 03/09/11 yoshfuji@linux-ipv6.org 1.1283.3.2 # [NET]: /proc/net/if_inet6 may drop some data. # -------------------------------------------- # 03/09/11 yoshfuji@linux-ipv6.org 1.1283.3.3 # [NET]: Clean up /proc/net/{anycast6/igmp6}. # -------------------------------------------- # 03/09/11 erlend-a@us.his.no 1.1283.3.4 # [CRYPTO]: Add alg. type to /proc/crypto output. # -------------------------------------------- # 03/09/11 laforge@netfilter.org 1.1283.3.5 # [NETFILTER]: Clear nf_debug in ipsec tunnel case. # -------------------------------------------- # 03/09/11 chas@cmf.nrl.navy.mil 1.1283.3.6 # [ATM]: Remove unnecessary GFP_ATOMIC allocation (from levon@movementarian.org) # -------------------------------------------- # 03/09/11 chas@cmf.nrl.navy.mil 1.1283.3.7 # [ATM]: Fix build failure with ATM_BR2684_IPFILTER enabled. # -------------------------------------------- # 03/09/11 hirofumi@mail.parknet.co.jp 1.1283.3.8 # [NETFILTER]: Fix typoe in ip_nat_tftp.c # -------------------------------------------- # 03/09/11 shemminger@osdl.org 1.1283.3.9 # [NET]: Remove some unnecessary proc_fs.h includes # -------------------------------------------- # 03/09/11 shemminger@osdl.org 1.1283.3.10 # [NET]: Convert packet scheduler API to seq_file. # -------------------------------------------- # 03/09/11 felipewd@terra.com.br 1.1283.3.11 # [NET]: Kill unneded version.h in net/sched. # -------------------------------------------- # 03/09/11 q@kampsax.dtu.dk 1.1283.3.12 # [IPV4]: Fix wrong IP address in icmp.c error message. # -------------------------------------------- # 03/09/11 herbert@gondor.apana.org.au 1.1283.3.13 # [XFRM]: Fix ALLOC_SPI for IPCOMP. # -------------------------------------------- # 03/09/11 akpm@osdl.org 1.1283.3.14 # [NET]: Remove spurious TASK_RUNNING setting after schedule_timeout(). # -------------------------------------------- # 03/09/11 yoshfuji@linux-ipv6.org 1.1283.3.15 # [NET]: Use proc_net_fops_create() and proc_net_remove() in net/core. # -------------------------------------------- # 03/09/11 yoshfuji@linux-ipv6.org 1.1283.3.16 # [NET]: Use proc_net_fops_create() and proc_net_remove() in net/ipv4. # -------------------------------------------- # 03/09/11 yoshfuji@linux-ipv6.org 1.1283.3.17 # [NET]: Use proc_net_fops_create() and proc_net_remove() in net/ipv6. # -------------------------------------------- # 03/09/11 shemminger@osdl.org 1.1283.3.18 # [BRIDGE]: Clear hw checksum flags when bridging. # -------------------------------------------- # 03/09/11 jfbeam@bluetronic.net 1.1283.4.1 # [SPARC64]: Fix VT/VT_CONSOLE Kconfig for headless operation. # -------------------------------------------- # 03/09/11 char@cmf.nrl.navy.mil 1.1283.3.19 # [ATM]: seq_file for /proc/net/atm (devices) [1/8] (from romieu@fr.zoreil.com) # # seq_file conversion for proc/atm/devices: # - code inspired from seq_file use in net/core/dev.c; # - atm_dev_lock taken/released in atm_dev_seq_{start/stop}; # - add a helper CREATE_SEQ_ENTRY() similar to CREATE_ENTRY() (both are removed # once conversion is done). # - atm_dev_seq_{start/stop/next} done in net/atm/resource.[ch] to ease # future handling of atm_devs and locking structure (per Chas suggestion) # -------------------------------------------- # 03/09/11 char@cmf.nrl.navy.mil 1.1283.3.20 # [ATM]: seq_file for /proc/net/atm (vc utils) [2/8] (from romieu@fr.zoreil.com) # # Helpers for seq_file conversion of proc/atm/{pvc/svc/vc}: # - struct vcc_state keeps # 1) the struct sock from which the current struct atm_vcc is deduced # 2) the family to which must belong the vcc (PF_ATM{SVC/PVC/any}) # 3) the availability of clip module # - vcc_seq{start/stop} are responsible for vcc_sklist locking # - __vcc_seq_open and vcc_seq_release take care of get/put for the clip module. # # Chas's suggestions applied since last version: # - atm_vc_xxx renamed to vcc_xxx # - atm_vc_common_seq_open renamed __vcc_seq_open (future name clashes # avoidance) # -------------------------------------------- # 03/09/11 char@cmf.nrl.navy.mil 1.1283.3.21 # [ATM]: seq_file for /proc/net/atm (pvc) [3/8] (from romieu@fr.zoreil.com) # # seq_file support for /proc/net/atm/pvc: # - pvc_info(): seq_printf/seq_putc replaces sprintf; # - atm_pvc_info() removal; # - the vc helpers (vcc__seq_xxx) do the remaining work. # # Chas's suggestions applied since last version: # - atm_pvc_xxx renamed to pvc_xxx # - atm_seq_pvc_fops renamed to pvc_seq_fops # -------------------------------------------- # 03/09/11 chas@cmf.nrl.navy.mil 1.1283.3.22 # [ATM]: seq_file for /proc/net/atm (svc) [4/8] (from romieu@fr.zoreil.com) # # seq_file support for /proc/net/atm/svc: # # Exactly same comments as pvc. Just s/p/s/ # -------------------------------------------- # 03/09/11 chas@cmf.nrl.navy.mil 1.1283.3.23 # [ATM]: seq_file for /proc/net/atm (vc) [5/8] (from romieu@fr.zoreil.com) # # seq_file support for /proc/net/atm/vc: # # Same comments as for pvc and svc. # # Extra Chas's suggestion applied since last version: # - atm_vc_xxx renamed to vcc_xxx. # -------------------------------------------- # 03/09/11 chas@cmf.nrl.navy.mil 1.1283.3.24 # [ATM]: seq_file for /proc/net/atm (arp) [6/8] (from romieu@fr.zoreil.com) # # seq_file support for /proc/net/atm/arp: # - svc_addr/atmarp_info(): seq_printf/seq_putc replace sprintf and friends; # - arp_getidx/arp_vcc_walk() take care of the usual seq_file cursor # positionning: they both return NULL until the cursor has reached its # position. struct atm_arp_state is updated accordingly; # - arp_seq_{stop/start} are responsible for clip_tbl_hook (un)locking; # - module refcounting is done in arp_seq_open()/arp_seq_release(); # - atm_lec_info() is removed. # # Chas's suggestions applied since last version: # - atm_arp_xxx renamed to arp_xxx; # - atm_seq_arp_fops renamed to arp_seq_fops. # # Chas didn't ask for it but I renamed arp_vc_walk to arp_vcc_walk. # -------------------------------------------- # 03/09/11 chas@cmf.nrl.navy.mil 1.1283.3.25 # [ATM]: seq_file conversion of /proc/net/atm [7/8] # # seq_file support for /proc/net/atm/lec: # - lec_info(): seq_printf/seq_putc replaces sprintf; # - traversal of the lec structure needs to walk: # -> the lec interfaces # -> the tables of arp tables(lec_arp_tables); # -> the arp tables themselves # -> the misc tables (lec_arp_empty_ones/lec_no_forward/mcast_fwds) # # Sum up of the call tree: # atm_lec_seq_start()/atm_lec_seq_next() # -> atm_lec_get_idx() # -> atm_lec_itf_walk() (responsible for dev_lec/dev_put handling) # -> atm_lec_priv_walk() (responsible for lec_priv locking) # -> atm_lec_arp_walk() # -> atm_lec_tbl_walk() # -> atm_lec_misc_walk() # -> atm_lec_tbl_walk() # # Each of the dedicated functions follows the same convention: return NULL # as long as the seq_file cursor hasn't been digested (i.e. until < 0). # Locking is only done when an entry (i.e. a lec_arp_table) is referenced. # atm_lec_seq_stop()/atm_lec_itf_walk()/atm_lec_priv_walk() are responsible # for getting this point right. # - module refcounting is done in atm_lec_seq_open()/atm_lec_seq_release(); # - atm_lec_info() is removed. # # Chas's suggestions applied since last version: # - atm_seq_lec_fops renamed to lec_seq_fops; # - change in state handling: it wasn't correctly set to its reset value # after a complete interface walk; # - lec_arp_get_status_string() bugfix. # -------------------------------------------- # 03/09/11 chas@cmf.nrl.navy.mil 1.1283.3.26 # [ATM]: seq_file conversion of /proc/net/atm [8/8] (from romieu@fr.zoreil.com) # # - introduction of the struct array 'atm_proc_ents': # - removal of code duplication in atm_proc_cleanup(); # - removal of code duplication in atm_proc_init(); # - removal of the macros CREATE_SEQ_ENTRY() and CREATE_ENTRY(); # - /proc/net/atm/vcc returns to /proc/net/atm/vc; # - credits at the top of the file; # - replaced proc_dev_atm_operations by proc_atm_dev_ops; # - atm_proc_dev_register: removal of tasteless "fail0/fail1" labels. # -------------------------------------------- # 03/09/11 chas@cmf.nrl.navy.mil 1.1283.3.27 # [ATM]: exporting llc_oui[] isn't worth it (from mitch@sfgoth.com) # -------------------------------------------- # 03/09/11 rob@osinvestor.com 1.1283.4.2 # [SPARC32]: Non-controversial gcc-3.3 build fixes. # -------------------------------------------- # 03/09/11 davej@redhat.com 1.1283.3.28 # [IPV6]: Fix non-CONFIG_PROC_FS build. # -------------------------------------------- # 03/09/11 wesolows@foobazco.org 1.1283.4.3 # [SPARC32]: Ignore btfixups in .text.exit # -------------------------------------------- # 03/09/11 dwmw2@infradead.org 1.1283.3.29 # [BLUETOOTH]: Fix bug in set_sk_owner() changes. # -------------------------------------------- # 03/09/11 mroos@linux.ee 1.1283.4.4 # [SPARC64]: BUG on positive addresses in vga.h # -------------------------------------------- # 03/09/11 rusty@rustcorp.com.au 1.1283.3.30 # [NETFILTER]: MASQUERADE target for mostly-static IP addresses. # # Herve Eychenne noted that many ADSL connections get the same # address when the interface comes back up, so some users use SNAT # instead of masquerade. The answer is that MASQUERADE should only # drop connections when the interface comes up, and then only if the # interface address has actually changed. # -------------------------------------------- # 03/09/11 rusty@rustcorp.com.au 1.1283.3.31 # [NETFILTER]: REJECT nonlinear fixes after sync with 2.4 # # Harald synced up ipt_REJECT.c from 2.4 route fixes, but it had # changed a fair bit because of the nonlinear fixes. This repairs it. # # 1) Copying of tcp header onto stack. # 2) ...which also checks length requirement. # 3) Skip checksum check: requires linear packet. # -------------------------------------------- # 03/09/11 davem@kernel.bkbits.net 1.1314 # Merge davem@nuts.ninka.net:/disk1/davem/BK/net-2.5 # into kernel.bkbits.net:/home/davem/net-2.5 # -------------------------------------------- # 03/09/11 davem@nuts.ninka.net 1.1283.4.5 # [SPARC64]: Update defconfig. # -------------------------------------------- # 03/09/11 davem@kernel.bkbits.net 1.1313.1.1 # Merge davem@nuts.ninka.net:/disk1/davem/BK/sparc-2.5 # into kernel.bkbits.net:/home/davem/sparc-2.5 # -------------------------------------------- # 03/09/11 maxk@qualcomm.com 1.1153.68.2 # [Bluetooth] Convert BNEP protocol to dynamic allocation of network devices. # This will allow fixing races with rmmod and sysfs access. # # Patch from Stephen Hemminger # -------------------------------------------- # 03/09/11 torvalds@home.osdl.org 1.1315 # Merge bk://kernel.bkbits.net/davem/sparc-2.5 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/12 maxk@qualcomm.com 1.1316 # Merge bk://linux.bkbits.net/linux-2.5 # into qualcomm.com:/home/kernel/bt-2.5 # -------------------------------------------- # 03/09/12 kpfleming@cox.net 1.1315.1.1 # [NET]: Make netdevice.h more userspace friendly. # -------------------------------------------- # 03/09/12 acme@conectiva.com.br 1.1315.1.2 # [NETFILTER]: Fix typo in recent ip_input.c changes. # -------------------------------------------- # 03/09/12 davem@nuts.ninka.net 1.1317 # Merge bk://linux-bt.bkbits.net/bt-2.5 # into nuts.ninka.net:/disk1/davem/BK/net-2.5 # -------------------------------------------- # 03/09/12 shemminger@osdl.org 1.1318 # [NET]: Better proc_net macros for non-procfs case. # -------------------------------------------- # 03/09/12 krkumar@us.ibm.com 1.1319 # [IPV6]: Export devconf device settings via netlink. # -------------------------------------------- # 03/09/12 davem@nuts.ninka.net 1.1315.2.1 # [SPARC64]: Make sure cpu_data[0].udelay_val gets setup on non-SMP (found by bde@nwlink.com). # -------------------------------------------- # 03/09/12 laforge@netfilter.org 1.1320 # [NETFILTER]: Use u16 for port numbers. # -------------------------------------------- # 03/09/13 davej@redhat.com 1.1153.107.28 # [CPUFREQ] CodingStyle fixes for speedstep-smi # -------------------------------------------- # 03/09/13 davej@redhat.com 1.1153.107.29 # [CPUFREQ] Don't print out speedstep stuff on non-Intel CPUs. # -------------------------------------------- # 03/09/13 davej@redhat.com 1.1153.107.30 # [CPUFREQ] use PFX macro in common printk's # -------------------------------------------- # 03/09/13 davej@redhat.com 1.1153.107.31 # [CPUFREQ] Fix up debug printk formatting string in speedstep-smi # # -------------------------------------------- # 03/09/13 davej@redhat.com 1.1283.2.2 # [AGPGART] Fix silly logic bug in modular AMD64 GART driver. # We found a device, and then claimed we couldn't find one due to a # silly thinko. # # agpgart: Detected AMD 8151 AGP Bridge rev B2 # agpgart: Maximum main memory to use for agp memory: 816M # agpgart: AGP aperture is 64M @ 0xe0000000 # No supported AGP bridge found. # You can try agp_try_unsupported=1 # -------------------------------------------- # 03/09/13 davej@hardwired.(none) 1.1315.3.1 # Merge hardwired.(none):/mnt/stuff/backups/src/kernel/2.6/trees/bk-linus # into hardwired.(none):/mnt/stuff/backups/src/kernel/2.6/trees/cpufreq # -------------------------------------------- # 03/09/13 davej@hardwired.(none) 1.1315.4.1 # Merge hardwired.(none):/mnt/stuff/backups/src/kernel/2.6/trees/bk-linus # into hardwired.(none):/mnt/stuff/backups/src/kernel/2.6/trees/agpgart # -------------------------------------------- # 03/09/15 lord@kernel.bkbits.net 1.1315.5.1 # Merge kernel.bkbits.net:/home/repos/linux-2.5 # into kernel.bkbits.net:/home/lord/xfs-2.6 # -------------------------------------------- # 03/09/15 sandeen@sgi.com 1.1315.5.2 # [XFS] remove doubly-included header files # # SGI Modid: 2.5.x-xfs:slinx:157933a # -------------------------------------------- # 03/09/15 nathans@sgi.com 1.1315.5.3 # [XFS] Implement several additional inode flags - immutable, append-only, etc; contributed by Ethan Benson. # # SGI Modid: 2.5.x-xfs:slinx:158362a # -------------------------------------------- # 03/09/15 sandeen@sgi.com 1.1315.5.4 # [XFS] Re-work xfs stats macros to support per-cpu data # # SGI Modid: 2.5.x-xfs:slinx:156453a # -------------------------------------------- # 03/09/15 nathans@sgi.com 1.1315.5.5 # [XFS] Add inode64 mount option; fix case where growfs can push 32 bit inodes into 64 bit space accidentally - both changes originally from IRIX # # SGI Modid: 2.5.x-xfs:slinx:157935a # -------------------------------------------- # 03/09/15 nathans@sgi.com 1.1315.5.6 # [XFS] Separate the big filesystems macro out into separate big inums and blknos macros; fix the check for too-large filesystems in the process. # # SGI Modid: 2.5.x-xfs:slinx:158361a # -------------------------------------------- # 03/09/15 cattelan@sgi.com 1.1315.5.7 # [XFS] IRIX sets KM_SLEEP to 0 but the support routines sets KM_SLEEP to 1. # So somebodys shortcut on irix is incorrect on linux and results in the sleep # behaviour not being set. # # SGI Modid: 2.5.x-xfs:slinx:157773a # -------------------------------------------- # 03/09/15 nathans@sgi.com 1.1315.5.8 # [XFS] Alternate, cleaner fix for the ENOSPC/ACL lookup problem # # SGI Modid: 2.5.x-xfs:slinx:157531a # -------------------------------------------- # 03/09/15 roehrich@sgi.com 1.1315.5.9 # [XFS] Change dm_send_namesp_event to take vnode ptrs rather than bhv ptrs. # # SGI Modid: 2.5.x-xfs:slinx:157475a # -------------------------------------------- # 03/09/15 cattelan@sgi.com 1.1315.5.10 # [XFS] Fix from Christoph # # gcc 3.3 complains about this and indeed it can only trigger if # someone magically enlarges __uint8_t :) # # SGI Modid: 2.5.x-xfs:slinx:157731a # -------------------------------------------- # 03/09/15 jbarnes@sgi.com 1.1217.3.28 # [PATCH] ia64: turn off SLIT debugging # # This code works pretty well now, so we don't need to dump all this stuff # at boot time (esp. on 128 node systems). # -------------------------------------------- # 03/09/15 jbarnes@sgi.com 1.1217.3.29 # [PATCH] ia64: protect PAL mapping printk with EFI_DEBUG # # Having this print out for every CPU on a large system was a pain, so # protect the printk with EFI_DEBUG. # -------------------------------------------- # 03/09/15 davidm@tiger.hpl.hp.com 1.1217.3.30 # ia64: Re-enable /proc/sal support. Bug reported by Stephane Eranian, patch # by Jesse Barnes. # -------------------------------------------- # 03/09/15 eranian@hpl.hp.co 1.1217.3.31 # [PATCH] ia64: minor perfmon2 patch # # This patch fixes a typo in pfm_write_pmcs() in the test for the default # value. The code was using the lop index instead of the register # index in the PMC_DFL_VAL() macro. This was causing valid values # for some PMCs to be rejected. # -------------------------------------------- # 03/09/15 davem@nuts.ninka.net 1.1321 # [UDP]: In udp_{v6_}flush_pending_frames, reset up->len too. # -------------------------------------------- # 03/09/15 yoshfuji@linux-ipv6.org 1.1322 # [IPV4]: Convert /proc/net/pnp to seq_file. # -------------------------------------------- # 03/09/15 yoshfuji@linux-ipv6.org 1.1323 # [NET]: Use proc_net_fops_create() for /proc/net/wireless # -------------------------------------------- # 03/09/15 dwmw2@infradead.org 1.1324 # [BLUETOOTH]: Add missing owner to bnep_sock_family_ops. # -------------------------------------------- # 03/09/15 davem@nuts.ninka.net 1.1325 # [NET]: Increase ethernet tx_queue_len to 1000. # -------------------------------------------- # 03/09/15 hadi@cyberus.ca 1.1326 # [NET]: Make pfifo_fast actually report statistics. # -------------------------------------------- # 03/09/15 chas@cmf.nrl.navy.mil 1.1327 # [ATM]: [clip] Fix race between modifying entry->vccs and clip_start_xmit(). # -------------------------------------------- # 03/09/15 shemminger@osdl.org 1.1328 # [IPVS]: Convert to seq_file. # -------------------------------------------- # 03/09/16 davej@redhat.com 1.1315.4.2 # [AGPGART] Missing prefixes in printk's # -------------------------------------------- # 03/09/16 acme@conectiva.com.br 1.1320.1.1 # o LLC: introduce llc_type_handlers # # This is the start of the split of LLC into a core part and the # bigger, not needed by ipx, token ring, appletalk, etc, LLC2 stack. # -------------------------------------------- # 03/09/16 acme@conectiva.com.br 1.1320.1.2 # o LLC: move llc_decode_pdu_type to llc_mac # # And also rename it to llc_pdu_type and make it return the type, # this is to make llc_mac more and more autonomous of the rest of # the llc code, to the point where it will be a separate loadable # module. # -------------------------------------------- # 03/09/16 acme@conectiva.com.br 1.1320.1.3 # o LLC: move llc_conn_handler and llc_sap_handler out of llc_mac # -------------------------------------------- # 03/09/16 acme@conectiva.com.br 1.1320.1.4 # o LLC: remove another silly net 4.0 banner # # Also add a prototype for llc_conn_rcv, that will move away in # the next changesets. but for now is needed to kill a warning. # -------------------------------------------- # 03/09/15 davem@nuts.ninka.net 1.1329 # Merge bk://kernel.bkbits.net/acme/llc-2.6 # into nuts.ninka.net:/disk1/davem/BK/net-2.5 # -------------------------------------------- # 03/09/15 mitch@sfgoth.com 1.1330 # [NET]: Tiny af_packet.c cleanup. # -------------------------------------------- # 03/09/16 shaggy@shaggy.austin.ibm.com 1.1315.6.1 # JFS: Fix rampant data corruption # # A recent change causes pervasive data corruption by over-writing inode # metadata with a word of garbage. The field, di_rdev, should only be set # for a device inode. # -------------------------------------------- # 03/09/16 rmk@flint.arm.linux.org.uk 1.1315.7.1 # [ARM] Remove compiler warning in sa1111-pcipool.c # -------------------------------------------- # 03/09/16 acme@conectiva.com.br 1.1320.1.5 # o LLC: move the connection related functions to llc_conn # -------------------------------------------- # 03/09/16 nathans@sgi.com 1.1315.5.11 # [XFS] Automatically set logbsize for larger stripe units # # SGI Modid: 2.5.x-xfs:slinx:157534a # -------------------------------------------- # 03/09/16 acme@conectiva.com.br 1.1320.1.6 # o LLC: move sap functions to llc_sap # -------------------------------------------- # 03/09/16 acme@conectiva.com.br 1.1320.1.7 # o LLC: move the sockets release function outside of llc_sap_close # -------------------------------------------- # 03/09/16 greg@kroah.com 1.1315.8.1 # [PATCH] USB: fix oops when trying to suspend and resume. # # Thanks to Pavel for the original version of this patch. # -------------------------------------------- # 03/09/16 greg@kroah.com 1.1315.8.2 # [PATCH] USB: fix oops in ipaq driver # # Should fix bug number 1227 # -------------------------------------------- # 03/09/16 acme@conectiva.com.br 1.1320.1.8 # o LLC: move llc_build_and_send_ui_pkt to llc_sap # -------------------------------------------- # 03/09/16 baldrick@free.fr 1.1315.8.3 # [PATCH] USB speedtouch: use multiple urbs by default # -------------------------------------------- # 03/09/16 baldrick@free.fr 1.1315.8.4 # [PATCH] USB: New email address for duncan # -------------------------------------------- # 03/09/16 baldrick@free.fr 1.1315.8.5 # [PATCH] USB speedtouch: neater sanity check # # Biscuit for Greg. # -------------------------------------------- # 03/09/16 baldrick@free.fr 1.1315.8.6 # [PATCH] USB speedtouch: bump the version number # -------------------------------------------- # 03/09/16 zaitcev@redhat.com 1.1315.8.7 # [PATCH] USB: Drop debounce printout for 2.6 # # This seems to work well enough, we do not need the printout anymore. # -------------------------------------------- # 03/09/16 david-b@pacbell.net 1.1315.8.8 # [PATCH] USB: usb/gadget/Kconfig, use right PXA2xx symbols # # I just noticed that Linus' tree is using the wrong CONFIG_* symbols # for kicking in the PXA 2xx support (except for "gadgetfs"). It # should use USB_PXA2XX not USB_PXA250, since it handles PXA 255, # PXA 210, PXA 263, and others. # -------------------------------------------- # 03/09/16 acme@conectiva.com.br 1.1320.1.9 # o LLC: move llc_lookup_dgram to llc_sap # # Also move llc_save_primitive to llc_sap, almost untangling the # LLC2 stack from the core. # -------------------------------------------- # 03/09/16 ramune@net-ronin.org 1.1315.8.9 # [PATCH] USB: make pdfdocs problem # # The `make pdfdocs' target still fails for me on the # `writing_usb_drivers' document. There's one small bug in it, and one # problem I haven't figured out yet. # # There is a malformed blah sequence, where the # closing tag is instead an opening tag. Patch for that below. # -------------------------------------------- # 03/09/16 greg@kroah.com 1.1315.8.10 # [PATCH] USB: fix up missing in usb documentation. # # This fixes build problem. # -------------------------------------------- # 03/09/16 rmk@flint.arm.linux.org.uk 1.1315.7.2 # [ARM] Update ARM CPU support. # # Move ARM CPU configuration to arch/arm/mm. Seperate out the selection # of the abort, cache handling, optimised page copying and TLB handling # from the Makefile, and move it into the configuration system. This # allows us to select the correct files in arch/arm/mm and pick the # appropriate definitions in include/asm-arm/* based upon a config # symbol rather than a bunch of configuration symbols. # # Also add ARM1020E, ARM1022 and ARM1026 CPU support. # -------------------------------------------- # 03/09/16 acme@conectiva.com.br 1.1320.1.10 # o LLC: move the pdu routines needed by the upcoming llc_core to llc_pdu.h # # Making them inline, as they are small enough and some very seldomly # used. # -------------------------------------------- # 03/09/16 stern@rowland.harvard.edu 1.1315.8.11 # [PATCH] USB: Use num_altsetting in usbnet and usbtest # # This patch fixes usbnet and usbtest. When checking endpoints, they # iterate through all interfaces out to intf->max_altsetting, but they # should only go up to intf->num_altsetting. The max_altsetting value # refers to the amount of space _allocated_ for usb_host_interface # structures, not the number that are really in use. # -------------------------------------------- # 03/09/16 rmk@flint.arm.linux.org.uk 1.1315.7.3 # [ARM] Detect and fix up CPUs with non-coherent write buffers. # # Jamie Lokier's cache testing program discovered a problem which seems # to be present in some CPU write buffers. This cset allows the kernel # to detect the flaw and activate a workaround to restore the user # space expectations. # -------------------------------------------- # 03/09/16 rmk@flint.arm.linux.org.uk 1.1315.7.4 # [ARM] Provide __HAVE_ARCH_BCOPY # # This squashes another compiler warning. # -------------------------------------------- # 03/09/16 rmk@flint.arm.linux.org.uk 1.1315.7.5 # [ARM] Add newly discovered CR register function. # -------------------------------------------- # 03/09/16 rmk@flint.arm.linux.org.uk 1.1315.7.6 # [ARM] Fix gcc3 multi-line string literal build error. # -------------------------------------------- # 03/09/16 rmk@flint.arm.linux.org.uk 1.1315.7.7 # [ARM] Remove CONFIG_KBDMOUSE from arch/arm/Kconfig # -------------------------------------------- # 03/09/16 rmk@flint.arm.linux.org.uk 1.1315.7.8 # [ARM] Kill gcc preprocessor warning. # -------------------------------------------- # 03/09/16 rmk@flint.arm.linux.org.uk 1.1315.7.9 # [ARM] Fix name of "cache format" cpuinfo description. # -------------------------------------------- # 03/09/16 jaharkes@cs.cmu.edu 1.1315.9.1 # [PATCH] Coda updates [1/5] # # - Remove unused functions and variables. # - Be a bit more strict with the definition of various types that are # shared between kernel and userspace. # - Included a couple of cleanups from Maximilian Attems and Stephen # Hemminger. # -------------------------------------------- # 03/09/16 jaharkes@cs.cmu.edu 1.1315.9.2 # [PATCH] Coda updates [2/5] # # Use a global 'epoch' counter to invalidate cached permissions instead of # traversing a racy linked list of all known Coda inodes. # -------------------------------------------- # 03/09/16 jaharkes@cs.cmu.edu 1.1315.9.3 # [PATCH] Coda updates [3/5] # # Both userspace and the kernel are testing only the fsuid part of the # coda_creds credentials structure. Nothing else is really used, so we now # match the code with the actual usage by only passing fsuid around. The # kernel-userspace API is kept compatible (for now). # -------------------------------------------- # 03/09/16 jaharkes@cs.cmu.edu 1.1315.9.4 # [PATCH] Coda updates [4/5] # # The ViceFid structure is really a Coda server datatype and the kernel # really shouldn't have to know its internal structure. Replace all # instances with struct CodaFid with opaque members. # -------------------------------------------- # 03/09/16 jaharkes@cs.cmu.edu 1.1315.9.5 # [PATCH] Coda updates [5/5] # # Introduce a new kernel-userspace interface that uses 128-bit file # identifiers instead of the previously used 96-bit fileids. We also # replacing the coda_creds structure with only the fsuid. # # This new API has been used by for a couple of months now, people had to # patch their kernels whenever they want to run a current Coda release. # A new Kconfig option is added to fall back on the old API for older Coda # clients and other userspace filesystems that might use our protocol. # -------------------------------------------- # 03/09/16 torvalds@laptop.osdl.org 1.1315.2.2 # Merge bk://kernel.bkbits.net/davem/sparc-2.5 # into laptop.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/16 torvalds@laptop.osdl.org 1.1320.2.1 # Merge bk://kernel.bkbits.net/davem/net-2.5 # into laptop.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/17 davej@redhat.com 1.1315.4.3 # [AGPGART] Fix missing/bogus includes. # -------------------------------------------- # 03/09/17 davej@redhat.com 1.1315.3.2 # [CPUFREQ] Add missing config.h includes # -------------------------------------------- # 03/09/16 shemminger@osdl.org 1.1320.2.2 # [PATCH] use seq_lock for monotonic time # # Monotonic clock code uses reader/writer lock which is prone to same # starvation problems as we saw with xtime. This patch changes it to seq_lock # which is faster and won't starve writers in face of lots of readers. # -------------------------------------------- # 03/09/16 torvalds@laptop.osdl.org 1.1320.2.3 # Merge http://jfs.bkbits.net/linux-2.5 # into laptop.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/17 acme@conectiva.com.br 1.1320.1.11 # o LLC: implement llc_add_pack/llc_remove_pack # -------------------------------------------- # 03/09/17 acme@conectiva.com.br 1.1320.1.12 # o LLC: split llc into llc_core and llc2 modules # # For this some more functions had to be moved around, now one doesn't # have to explicitely select LLC to have access in the menu to ipx, # appletalk, token ring, etc. # # This is not yet as good as I want it to be, but at least makes it # easier for the hordes of users to select stuff, making it look more # like how it was in 2.4. # # In the next changesets I'll fix the fact that CONFIG_TR is a bool # and makes psnap, p8022 and llc_core to be built statically even tho # the token ring drivers are being build as modules. # -------------------------------------------- # 03/09/17 rmk@flint.arm.linux.org.uk 1.1315.7.10 # [ARM] Provide bus type and support for logic modules. # # The IMPD-1 is a logic module (a stackable module) - rather than # trying to abuse platform devices, create our own bus type to handle # these. # -------------------------------------------- # 03/09/17 rmk@flint.arm.linux.org.uk 1.1315.7.11 # [ARM] Clean up PCI error reporting. # # Don't try to clear PCI status on devices which are no longer present. # Only clear PCI status bits which we're interested in. # Use pci_name to report the device name. # -------------------------------------------- # 03/09/17 lord@jen.americas.sgi.com 1.1315.5.12 # [XFS] Some tweaks to the additional inode flags, suggested by Ethan Benson # # SGI Modid: 2.5.x-xfs:slinx:158493a # -------------------------------------------- # 03/09/17 rmk@flint.arm.linux.org.uk 1.1315.7.12 # [ARM] Dynamically allocate SA1111 component devices. # -------------------------------------------- # 03/09/17 rmk@flint.arm.linux.org.uk 1.1315.7.13 # [ARM] Update machine types list. # -------------------------------------------- # 03/09/17 rmk@flint.arm.linux.org.uk 1.1315.7.14 # [ARM] Ensure that MM initialisation warnings are reported as bugs. # -------------------------------------------- # 03/09/17 lord@sgi.com 1.1315.5.13 # [XFS] fix build for gcc 3.2 # # SGI Modid: 2.5.x-xfs:slinx:158511a # -------------------------------------------- # 03/09/17 lord@kernel.bkbits.net 1.1320.2.4 # Merge kernel.bkbits.net:/home/repos/linux-2.5 # into kernel.bkbits.net:/home/lord/xfs-2.6 # -------------------------------------------- # 03/09/17 rmk@flint.arm.linux.org.uk 1.1320.3.1 # [PCMCIA] Fix bug in PCMCIA resource management memory probing # # This prevents us from probing past the memory areas which cardmgr # passes us, and also allows us to correctly remove areas which we # decide are not available for PCMCIA use. # -------------------------------------------- # 03/09/17 davej@redhat.com 1.1315.4.4 # [AGPGART] Add HP AGP 8x bridge and fix ACPI claim # The following patch to the HP ZX1 GART driver # - adds recognition of the "HWP0007" device (an AGP 8X bridge) # - fixes the use of acpi_get_devices() # # The problem with acpi_get_devices() is that it always returns AE_OK, # except when the callback (zx1_gart_probe()) returns a failure. That # means agp_hp_init() cannot use the status from acpi_get_devices() # to distinguish between (1) an AGP bridge was found and successfully # initialized, and (2) no AGP bridge was found at all. # -------------------------------------------- # 03/09/17 nikai@nikai.net 1.1315.8.12 # [PATCH] USB: Remove modules.txt: usb_media, usb_input # -------------------------------------------- # 03/09/17 nikai@nikai.net 1.1315.8.13 # [PATCH] USB: Remove modules.txt: usb serial & storage # -------------------------------------------- # 03/09/17 torvalds@laptop.osdl.org 1.1320.2.5 # Merge bk://bk.arm.linux.org.uk/linux-2.6-rmk # into laptop.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/17 chrisw@osdl.org 1.1320.2.6 # [PATCH] update credits # # Update CREDITS with new contact info. # -------------------------------------------- # 03/09/17 chrisw@osdl.org 1.1320.2.7 # [PATCH] Add LSM maintainer entry # # Add LSM maintainer entry # -------------------------------------------- # 03/09/17 chrisw@osdl.org 1.1320.2.8 # [PATCH] LSM comment fixup # # From: John Levon # # LSM: Update comments in register_security to reflect reality # -------------------------------------------- # 03/09/17 chrisw@osdl.org 1.1320.2.9 # [PATCH] root_plug fixup # # From: bert hubert # # LSM: To recap, this patch allows root_plug to work again. It needs functions # that used to reside in capability.c but linking in capability.c, disabled # root_plug from loading, as a security module is already present then. This # patch splits out the functions root_plug needs from capability.c. # -------------------------------------------- # 03/09/17 piggin@cyberone.com.au 1.1320.2.10 # [PATCH] AS documentation # # The as-iosched.c source code has said this is here for a long time but # it kept getting lost. # -------------------------------------------- # 03/09/17 Urban.Widmark@enlight.net 1.1320.2.11 # [PATCH] smbfs module unload and highuid # # I haven't been doing much smbfs work recently, but here are some bugfixes: # # - Fix module unload (Angus Sawyer). # - Fix the smbfs error handling if kernel_thread() should fail. # - Allow high uids/gids to be used as the fake uid smbfs sets as file owner. # -------------------------------------------- # 03/09/17 axboe@suse.de 1.1320.2.12 # [PATCH] ide-cd capacity "bug" # # From Daniel Pittman # # Using the lra (last recorded address) isn't always reliable on some # drives, so use the regular TOC if it returns 0 capacity. # -------------------------------------------- # 03/09/17 axboe@suse.de 1.1320.2.13 # [PATCH] shared block queue tag map # # This implements the possibility for sharing a tag map between queues. # Some (most?) scsi host adapters needs this, and SATA tcq will need it # for some cases, too. # -------------------------------------------- # 03/09/17 marcelo.tosatti@cyclades.com.br 1.1320.2.14 # [PATCH] WM9712 suspend/resume nopop # # From: Liam Girdwood # # This patch eliminates pop noises when doing a PM suspend/resume with the # WM9712 AC97 codec. # -------------------------------------------- # 03/09/17 rmk@arm.linux.org.uk 1.1320.2.15 # [PATCH] Make /proc/kcore configurable # # This allows /proc/kcore to be entirely disabled and dropped out of the # kernel - we already select between a.out and ELF. # # Right now it only drops /proc/kcore out of the kernel for ARM. # -------------------------------------------- # 03/09/17 andrew.grover@intel.com 1.1320.2.16 # [PATCH] ACPI maintainer change # # This updates the maintainer entry for ACPI. Len has already assumed # most of this responsibility, as other projects demand my attention. # # My team will continue to maintain the OS-independent ACPI CA release, # but Len will be responsible for pulling ACPI CA updates into the Linux # release, and the rest of Linux-specific code in general. # -------------------------------------------- # 03/09/17 acme@conectiva.com.br 1.1320.1.13 # o LLC: add some unlikely wrappings in llc_mac # # Also rename fix_up_incoming_skb to llc_fixup_skb, to be more # namespace friendly. Ah, make it inline too. # -------------------------------------------- # 03/09/17 shemminger@osdl.org 1.1320.2.17 # [PATCH] drivers/char/misc -- use list() macros # # Use list macros for misc_device list. # -------------------------------------------- # 03/09/17 shemminger@osdl.org 1.1320.2.18 # [PATCH] (2/2) drivers/char/misc -- seq_file # # Use seq_file for /proc/misc # -------------------------------------------- # 03/09/17 dan@reactivated.net 1.1315.8.14 # [PATCH] USB: Debug code fixes for vicam # # When compiling vicam with debug info, a compile error occurs. I presume # this is because this part of the code has not been updated since the 2.4 # kernels. This patch fixes this. # -------------------------------------------- # 03/09/17 dan@reactivated.net 1.1315.8.15 # [PATCH] USB: Debug code fixes for usblp # # When compiling usblp with debug info, a compile error occurs. I presume # this is because this part of the code has not been updated since the 2.4 # kernels. This patch fixes this. # I also enhanced the debug output a little, as suggested by Randy Dunlap. # -------------------------------------------- # 03/09/17 rwhron@earthlink.net 1.1315.8.16 # [PATCH] [PATCH] drivers/usb version/include cleanup # # Remove unneeded version.h and doubley included header. # Test compiled on 2.6.0-test5-bk3. # -------------------------------------------- # 03/09/17 stern@rowland.harvard.edu 1.1315.8.17 # [PATCH] USB: Changes to core/config.c (1 of 9) # # This first patch makes only trivial changes. Excess whitespace at the end # of lines is removed and return codes are altered from -1 to symbolic error # values. The only significant difference is that in one spot a valid # return is changed to an error return, when a descriptor does not have the # correct type. # # - Remove excess whitespace at the ends of lines. # - Change return codes to symbolic values. # - Return an error when an invalid endpoint descriptor is found. # -------------------------------------------- # 03/09/17 greg@kroah.com 1.1315.8.18 # [PATCH] USB: make sure we never reference a usbserial port after it has been unregistered. # -------------------------------------------- # 03/09/17 dan@reactivated.net 1.1315.8.19 # [PATCH] USB: Debug code fixes for dabusb # -------------------------------------------- # 03/09/17 david-b@pacbell.net 1.1315.8.20 # [PATCH] USB: psdocs fails for usbgadget # # It updates the "gadget" kerneldoc, removing some (new) warnings, and # showing some fields it hadn't previously been showing (due to # limitations in docproc). Plus it adds a bit of information about recent # changes (new drivers). # -------------------------------------------- # 03/09/17 stern@rowland.harvard.edu 1.1315.8.21 # [PATCH] USB: Changes to core/config.c (2 of 9) # # This patch fixes the most blatant problems that can happen when an error # is encountered during descriptor parsing. # # The struct device embedded within a struct usb_interface is # initialized as soon as the structure is allocated, so that when # put_device() is called it will contain valid data. # # put_device() is not called for unallocated interfaces. # # The pointers in config->extra are freed when the struct # usb_host_config is freed. # # rawdescriptor pointers are initialized to 0 so that they can be # freed without error. # # Partially parsed configurations are remembered so that they will # be deallocated when the entire struct usb_device is freed. # -------------------------------------------- # 03/09/17 stern@rowland.harvard.edu 1.1315.8.22 # [PATCH] USB: Changes to core/config.c (3 of 9) # # This patch includes a bunch of little local improvements to the code, # listed in the patch comments. There are only two notable changes. If a # device has more configurations than our maximum, the code doesn't reject # the device but simply parses as many configurations as it can and ignores # the rest. Likewise, if a configuration contains too many interfaces, the # code parses as many as it can and skips the excess. That way such devices # will be at least partially useable. Since these limits are arbitrary and # set by the implementation (not part of the USB spec), it doesn't make # sense to reject a device that violates them. # # Numerous local programming improvements: # Don't initialize to 0 fields in structures that have been memset to 0. # Don't constantly keep track of how many bytes are parsed. # Use local variables to hold unwieldy values. # Remove redundant tests. # Allow devices to have more configurations or interfaces than we can handle. # -------------------------------------------- # 03/09/17 stern@rowland.harvard.edu 1.1315.8.23 # [PATCH] USB: Changes to core/config.c (4 of 9) # # Although it's hard to tell from reading the patch, this just moves one # section of code to a slightly different spot. Currently the code that # skips over the extra class- and vendor-specific configuration-related # descriptors is part of the loop that parses interface descriptors. The # patch moves it outside, immediately before that loop -- where it belongs. # -------------------------------------------- # 03/09/17 stern@rowland.harvard.edu 1.1315.8.24 # [PATCH] USB: Changes to core/config.c (5 of 9) # # This patch centralizes the error checking for invalid descriptor lengths # and unexpected descriptor types. Instead of doing it in three different # places -- while parsing configuration, interface, and endpoint descriptors # -- the new code does it all at once. Not surprisingly, this yields a net # savings in code size. # -------------------------------------------- # 03/09/17 stern@rowland.harvard.edu 1.1315.8.25 # [PATCH] USB: Changes to core/config.c (6 of 9) # # This patch removes the home-brewed resizeable arrays used to store # altsetting structures, along with the now-unneeded max_altsetting field. # Since we are already making a preliminary pass through all the descriptors # to check their lengths, we take the opportunity to also count the number # of altsetting descriptors for each interface. Then exactly the right # number can be allocated all at once. # # This also moves the code that allocates the altsettings outside the # usb_parse_interface() routine. Though not important now, this change will # come in handy in the next patch. # -------------------------------------------- # 03/09/18 davej@redhat.com 1.1315.4.5 # [AGPGART] Fix module alias. # From OGAWA Hirofumi # -------------------------------------------- # 03/09/17 davidm@tiger.hpl.hp.com 1.1217.3.32 # ia64: In , do not include outside # the #ifdef __KERNEL__ bracket. Doing so pollutes the user- # level namespace. Bug report & proposed fix by GOTO Masanori. # -------------------------------------------- # 03/09/18 acme@conectiva.com.br 1.1320.1.14 # o LLC: create llc_output and move lan_hdrs_init to it # # Renaming lan_hdrs_init to llc_mac_hdr_init and making all places # check if it fails. # -------------------------------------------- # 03/09/18 davej@redhat.com 1.1315.3.3 # [CPUFREQ] Read MSRs before trying to use them in powernow-k7 # Very silly bug spotted by Ducrot Bruno # -------------------------------------------- # 03/09/18 davidm@tiger.hpl.hp.com 1.1217.3.33 # ia64: Control /proc/bus/mckinley/zx1 via separate SBA_PROC_FS macro and turn # SBA_PROC_FS off by default (it's too much of a scalability bottleneck). # -------------------------------------------- # 03/09/18 jes@wildopensource.com 1.1217.3.34 # [PATCH] ia64: small sn2 cleanup # # Attached is a small cleanup patch for the sn2 header files which removes # some cases of excessive header file inclusion. # -------------------------------------------- # 03/09/18 eranian@hpl.hp.com 1.1217.3.35 # [PATCH] ia64: pass si_isr for a few more signal sources # # This patch changes the kernel such that si_isr gets setup for hardware # breakpoints, single-step, and taken-branch traps. This is useful, e.g., to # determine what kind of hw breakpoint triggered the signal. # -------------------------------------------- # 03/09/18 jes@wildopensource.com 1.1217.3.36 # [PATCH] ia64: sn2 header file cleanup # # This patch removes a ton of pointless big endian defines for some # registers on SN2 and cleans up the #include hierachy making it include # some really big header files only when they are really needed. # -------------------------------------------- # 03/09/18 jes@wildopensource.com 1.1217.3.37 # [PATCH] ia64: include/asm-ia64/sn/router.h cleanup # # Minor cleanup. # -------------------------------------------- # 03/09/18 jes@wildopensource.com 1.1217.3.38 # [PATCH] ia64: fix for include/asm-ia64/acpi.h # # asm/acpi.h relies on struct pci_vector_struct which is defined in # asm/system.h. # -------------------------------------------- # 03/09/18 bjorn.helgaas@hp.com 1.1217.3.39 # [PATCH] ia64: trivial sba_iommu patch # # I'm aligning the 2.4 and 2.5 versions of arch/ia64/hp/common/sba_iommu.c # and found a couple nits in the 2.5 version. No functional change, just # whitespace, comment, and parameter name changes (and I made # one function static). # -------------------------------------------- # 03/09/18 davej@redhat.com 1.1315.3.4 # [CPUFREQ] We need to set SGTC when we change powernow-k7 voltage. # -------------------------------------------- # 03/09/18 davej@redhat.com 1.1315.3.5 # [CPUFREQ] Work around buggy powernow-k7 BIOSes with low settling times. # -------------------------------------------- # 03/09/18 davej@redhat.com 1.1315.3.6 # [CPUFREQ] Powernow-k7 latency timer needs to be in values of 10ns. # We were 'slightly' off in our calculations. This increased settling # time might actually increase the stability of some setups. # -------------------------------------------- # 03/09/18 davej@redhat.com 1.1315.3.7 # [CPUFREQ] Explicitly disable scaling we don't need in powernow-k7 # The VIDC/FIDC controls could have been left at 1 from a previous call to # one of the scaling routines. Make sure we set them back to 0 to avoid # writing garbage into the scaling registers. # -------------------------------------------- # 03/09/18 greg@kroah.com 1.1315.8.26 # [PATCH] USB: unusual device fixup for the Y-E floppy drive. # -------------------------------------------- # 03/09/18 stern@rowland.harvard.edu 1.1315.8.27 # [PATCH] USB: Changes to core/config.c (7 of 9) # # This patch changes the usb_parse_interface() routine so that it only # handles a single interface/altsetting descriptor at a time, rather than # trying to handle all the altsettings for an interface at once. Besides # shrinking the code slightly, this has the advantage of not requiring the # interfaces to be listed in order or all the altsetting descriptors for an # interface to be contiguous. While there probably aren't any devices that # have _discontiguous_ altsetting descriptors, there's no harm in allowing # it -- particularly since doing so provides an overall simplification. # # This is another of those hard-to-read patches. It moves most of the body # of the usb_parse_interface() function out of a loop, thereby changing the # indentation level without actually altering the code. # -------------------------------------------- # 03/09/18 stern@rowland.harvard.edu 1.1315.8.28 # [PATCH] USB: Changes to core/config.c (8 of 9) # # This patch adds some extra error checking. The patch-comments list most # it. Particularly worth noting is the check on the endpoint addresses. # Since these addresses are used as indexes for the epmaxpacketin and # epmaxpacketout arrays, illegal values could result in overwriting # unrelated areas of memory. # # Other noteworthy checks involve interface and alsetting numbers. Since # the old code ignored those values, of course it didn't bother to check # them. Here we make sure that the numbers lie in the proper ranges and # that there are no "missing" entries. # # Add error checking and improved error messages: # Check for invalid endpoint descriptors and invalid endpoint addresses. # Check for duplicate interface/altsetting descriptors. # Check for invalid configuration descriptors. # Check for missing interface/altsetting descriptors. # -------------------------------------------- # 03/09/18 stern@rowland.harvard.edu 1.1315.8.29 # [PATCH] USB: Changes to core/config.c (9 of 9) # # This patch implements the change discussed last weekend. Rather than # allocating separate memory areas for the "extra" descriptors and copying # the descriptor contents, it simply makes the "extra" pointers refer to # memory within the rawdescriptor arrays. # -------------------------------------------- # 03/09/18 acme@conectiva.com.br 1.1320.1.15 # o LLC: create a register interface for llc_station_rcv # -------------------------------------------- # 03/09/18 torvalds@laptop.osdl.org 1.1320.2.19 # Merge bk://linux-dj.bkbits.net/agpgart # into laptop.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/18 torvalds@laptop.osdl.org 1.1320.2.20 # Merge bk://linux-dj.bkbits.net/cpufreq # into laptop.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/18 axboe@suse.de 1.1320.2.21 # [PATCH] io scheduler barrier fix # # From: Nick Piggin # # This should be the last piece to ensure correct barrier handling for AS # and DL? # -------------------------------------------- # 03/09/18 Andries.Brouwer@cwi.nl 1.1320.2.22 # [PATCH] fix keycode for rctrl in scancode set 3 # # By mistake the keycode for right control in scancode set 3 # was the same as that for right alt. This fixes that. # -------------------------------------------- # 03/09/18 lord@jen.americas.sgi.com 1.1320.4.1 # [XFS] Fix initialization of inode flags from xfs inode fields. # -------------------------------------------- # 03/09/18 lord@kernel.bkbits.net 1.1320.5.1 # Merge kernel.bkbits.net:/home/repos/linux-2.5 # into kernel.bkbits.net:/home/lord/xfs-2.6 # -------------------------------------------- # 03/09/19 petero2@telia.com 1.1320.6.1 # synaptics.c, psmouse-base.c: # input: Restore synaptics pad mode on module unload. # -------------------------------------------- # 03/09/19 vojtech@suse.cz 1.1320.6.2 # input.c: # input: Don't set autorepeat times in core if already set by driver. # atkbd.c: # input: Automatic forced release of keys if keyrelease gets lost # -------------------------------------------- # 03/09/19 vojtech@suse.cz 1.1320.6.3 # db9.c: # input: Fix Sega Saturn pad support. # -------------------------------------------- # 03/09/19 petero2@telia.com 1.1320.6.4 # Input: Big Synaptics update: # Restore synaptics pad mode on module unload. # Support Synaptics touchpads with multiple buttons. # Make Synaptics touchpad support optional. # Add passthrough support for Synaptics touchpads. [Dmitry] # Add support for old Synaptics protocol. # Set mode byte correctly for old Synaptics pads. # Fix multibutton support of Synaptics pads. # -------------------------------------------- # 03/09/19 petero2@telia.com 1.1320.6.5 # psmouse-base.c: # Fix resume of PS/2 mouse. Uses old PM interface at the moment. # -------------------------------------------- # 03/09/19 vojtech@suse.cz 1.1320.6.6 # psmouse-base.c: # Change the name od the Synaptics protocol to SynPS/2 # -------------------------------------------- # 03/09/19 vojtech@suse.cz 1.1320.6.7 # psmouse-base.c: # Make sure psmouse->pktcnt is zero after passing a byte # to be processed by synaptics code. # -------------------------------------------- # 03/09/19 vojtech@suse.cz 1.1320.6.8 # input.h, keyboard.c, evdev.c: # Fix the INPUT_KEYCODE macro and its usage. # -------------------------------------------- # 03/09/19 vojtech@suse.cz 1.1320.6.9 # psmouse-base.c: # Enlarge the timeout for PS/2 mouse full reset. # -------------------------------------------- # 03/09/19 oliver@neukum.org 1.1320.6.10 # iforce-usb.c, iforce-packets.c: # Fix I-Force sleeping issues. # -------------------------------------------- # 03/09/19 dtor_core@ameritech.net 1.1320.6.11 # serio.c: # claim serio early in serio_open() # -------------------------------------------- # 03/09/19 rmk@flint.arm.linux.org.uk 1.1320.7.1 # [ARM] Massive rename of default configuration files. # # This renames all 48 (800K-ish of) ARM default configuration files, # as required by Sam's latest default configuration file system. # -------------------------------------------- # 03/09/19 rmk@flint.arm.linux.org.uk 1.1320.7.2 # [ARM] Remove private %_config makefile rule # -------------------------------------------- # 03/09/19 rmk@flint.arm.linux.org.uk 1.1320.7.3 # [ARM] Correct comments for abort handler parameters. # -------------------------------------------- # 03/09/19 Andries.Brouwer@cwi.nl 1.1320.6.12 # input: Fix Set3 keycode for right control in atkbd.c # -------------------------------------------- # 03/09/19 lcapitulino@prefeitura.sp.gov.br 1.1320.6.13 # input: Fix a warning in input.c when CONFIG_PROC_FS is not set. # -------------------------------------------- # 03/09/19 lcapitulino@prefeitura.sp.gov.br 1.1320.6.14 # input: Remove a not necessary #ifdef CONFIG_PROC_FS/#endif in input.c # -------------------------------------------- # 03/09/19 vojtech@suse.cz 1.1320.6.15 # input: Fix memory leak in hiddev.c found by Stanford Checker. # -------------------------------------------- # 03/09/19 bunk@fs.tum.de 1.1320.6.16 # input: Fix Kconfig KEYBOARD_ATKBD when SERIO is modular. # -------------------------------------------- # 03/09/19 nathans@sgi.com 1.1320.4.2 # [XFS] Fix some compile warnings and errors from some long-forgotten 2.4 mods # # SGI Modid: 2.5.x-xfs:slinx:158642a # -------------------------------------------- # 03/09/19 rmk@flint.arm.linux.org.uk 1.1320.7.4 # [ARM] Fix abort handler typo affecting Xscale CPUs. # -------------------------------------------- # 03/09/19 rmk@flint.arm.linux.org.uk 1.1320.7.5 # [ARM] Place initial data/code in assembly into the correct section # # We were mixing some data and code in the processor support assembly # files. Place the correct objects into their respective sections. # -------------------------------------------- # 03/09/19 lord@penguin.americas.sgi.com 1.1320.5.2 # Merge ssh://lord@kernel.bkbits.net/xfs-2.6 # into penguin.americas.sgi.com:/src/lord/bitkeeper/xfs-2.6 # -------------------------------------------- # 03/09/19 rmk@flint.arm.linux.org.uk 1.1320.7.6 # [ARM] Optimise io-readsb for CPUs with delay slots after ldr. # -------------------------------------------- # 03/09/19 nico@org.rmk.(none) 1.1320.7.7 # [ARM PATCH] 1528/1: big endian support for io-readsb/io-writesb # # Patch from Nicolas Pitre # # -------------------------------------------- # 03/09/19 rmk@flint.arm.linux.org.uk 1.1320.7.8 # [ARM] Optimise io-writesl for cpus with ldr result delays. # -------------------------------------------- # 03/09/19 rmk@flint.arm.linux.org.uk 1.1320.7.9 # [ARM] Fix AMBA keyboard/mouse driver. # # Fix the AMBA kmi driver which got broken when the name field was # removed from struct device. Change the name used to claim resources # to "kmi-pl050". Fix resume method. # -------------------------------------------- # 03/09/19 rmk@flint.arm.linux.org.uk 1.1320.7.10 # [ARM] Update mach-types with latest version. # -------------------------------------------- # 03/09/19 rmk@flint.arm.linux.org.uk 1.1320.7.11 # [ARM] Update bootp kernel+initrd loader. # # Drop support for old param struct method, and clean up code. # -------------------------------------------- # 03/09/19 acme@conectiva.com.br 1.1320.1.16 # o LLC: rename llc_mac.c to llc_input.c, net/llc_mac.h to net/llc.h # # Next step: to have llc_build_and_send_ui_pkt in llc_output.c, not # using the silly sap state machinery. # -------------------------------------------- # 03/09/19 lord@sgi.com 1.1320.5.3 # [XFS] Make xfs_ichgtime call mark_inode_dirty_sync instead of mark_inode_dirty # makes the just the inode look dirty, and not the inode and the data. # # SGI Modid: 2.5.x-xfs:slinx:158670a # -------------------------------------------- # 03/09/19 sandeen@sgi.com 1.1320.5.4 # [XFS] Update sysctls - use ints, not ulongs, and show pagebuf # values in jiffies like everybody else # # SGI Modid: 2.5.x-xfs:slinx:158665a # -------------------------------------------- # 03/09/19 lord@kernel.bkbits.net 1.1320.2.23 # Merge kernel.bkbits.net:/home/repos/linux-2.5 # into kernel.bkbits.net:/home/lord/xfs-2.6 # -------------------------------------------- # 03/09/19 torvalds@laptop.osdl.org 1.1320.8.1 # Merge http://lia64.bkbits.net/to-linus-2.5 # into laptop.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/19 torvalds@laptop.osdl.org 1.1320.8.2 # Merge bk://linux-dj.bkbits.net/cpufreq # into laptop.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/19 torvalds@laptop.osdl.org 1.1320.8.3 # Merge bk://bk.arm.linux.org.uk/linux-2.6-rmk # into laptop.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/19 torvalds@laptop.osdl.org 1.1320.2.24 # Merge bk://kernel.bkbits.net/lord/xfs-2.6 # into laptop.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/19 vojtech@suse.cz 1.1320.2.25 # [PATCH] Fix a warning in input.c when CONFIG_PROC_FS is not set # -------------------------------------------- # 03/09/19 vojtech@suse.cz 1.1320.2.26 # [PATCH] Remove a not necessary #ifdef CONFIG_PROC_FS/#endif in input.c # -------------------------------------------- # 03/09/19 vojtech@suse.cz 1.1320.2.27 # [PATCH] Fix memory leak in hiddev.c found by Stanford Checker # -------------------------------------------- # 03/09/19 dhollis@davehollis.com 1.1315.8.30 # [PATCH] USB: ethtool_ops and ax8817x fixes for usbnet # # This is a resend of all of my recent usbnet additions which # center on adding ethtool_ops support. All have been re-diffed # against the latest usbnet from BK. # # Changes: # * Add ethtool_ops support to usbnet # * Add GPIO bit toggling upon initialization of ax8817x devices # so that xmit works properly # * Add Wake-On-Lan and eeprom dump support for ax8817x devices # (this only adds the config support for WOL, actual operation # is more of a USB/Power Management function) # * Change ax8817x_set_multicast to not kmalloc for the filter # since there was no clean way to free the memory after URB submit. # Instead, we make use of the 20 byte dev->data. # -------------------------------------------- # 03/09/19 greg@kroah.com 1.1320.2.28 # Merge kroah.com:/home/linux/BK/bleed-2.5 # into kroah.com:/home/linux/BK/gregkh-2.6 # -------------------------------------------- # 03/09/19 acme@conectiva.com.br 1.1320.1.17 # o LLC: trim down llc_core to the very basic support needed by IPX et all # # Renaming the basic support module to llc.ko and introducing llc_core.c, # that has just the basic output path for llc_build_and_send_ui_pkt. # # Next step will be to rename llc_main.c to llc_station.c, then consolidate # all the llc station code in this file, removing all the not needed # llc_station parameters and killing struct llc_station altogether, # no sense in having it as there is just one station, always. BTW in # this changeset parts of llc_main_station was already moved to llc_core.c, # namely the sap list and lock. # -------------------------------------------- # 03/09/20 acme@conectiva.com.br 1.1320.1.18 # o LLC: rename llc_main.[ch] to llc_station.[ch] # # First step at coalescing the station handling into just one file, # killing some useless headers in the process. # -------------------------------------------- # 03/09/20 acme@conectiva.com.br 1.1320.1.19 # o LLC: reorganize llc_station.c to kill useless static prototypes # -------------------------------------------- # 03/09/20 acme@conectiva.com.br 1.1320.1.20 # o LLC: consolidate the LLC station component into llc_station.c # # Deleting llc_actn.[ch], llc_evnt.[ch] & llc_stat.[ch], now it is # clearly separated from the rest and lots of previously externally # visible thru headers stuff is nicely restrained in this file. # # Also remove the silly passing around of pointers to llc_main_station, # use it directly. # -------------------------------------------- # 03/09/20 acme@conectiva.com.br 1.1320.1.21 # o LLC: llc_station.h is not useful anymore, kill it # # Some defines had no place in this header, moved to llc_conn.h, # the struct llc_station, that probably will disappear in the near # future, is used only in llc_station.c, so remove one more # file from the include forest. # -------------------------------------------- # 03/09/20 davem@nuts.ninka.net 1.1331 # Merge nuts.ninka.net:/disk1/davem/BK/network-2.5 # into nuts.ninka.net:/disk1/davem/BK/net-2.5 # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1332 # [IPV4]: In tcp_diag.c, use static, const, and void *, as appropriate. # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1333 # [WAN]: Remove multi-line string literal. # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1334 # [WAN]: Convert taskqueues to workqueues. # -------------------------------------------- # 03/09/20 levon@movementarian.org 1.1335 # [NET]: SEQ_START_TOKEN for af_netlink.c # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1336 # [IRDA]: Eliminate skb_linearize() from irda. # -------------------------------------------- # 03/09/20 chrisw@osdl.org 1.1337 # [IPV4]: Use cpu_relax() in ipconfig.c # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1338 # [IRDA]: proc/net/irda files using seq_file # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1339 # [IRDA]: Convert ircomm to seq_file # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1340 # [WAN]: Use module_exit() in sdladrv. # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1341 # [NET]: More const in skbuff.h # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1342 # [NET]: Remove unneeded includes (tokenring). # -------------------------------------------- # 03/09/20 zaitcev@redhat.com 1.1320.9.1 # [SPARC]: One more multi-line string, from Rob Radez. # -------------------------------------------- # 03/09/20 zaitcev@redhat.com 1.1320.9.2 # [SPARC]: Down with P3's in srmmu.c # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1343 # [NET]: Remove unneeded includes (skfp). # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1344 # [NET]: Remove unneeded includes (sk98lin). # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1345 # [NET]: Remove unneeded includes (wan, from Randy Hron). # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1346 # [NET]: Remove unneeded includes (hamradio, from Randy Hron). # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1347 # [NET]: Remove unneeded includes (wireless, from Randy Hron). # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1348 # [NET]: Remove unneeded includes (wanrouter, from Randy Hron). # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1320.9.3 # [SPARC]: Remove unneeded includes (from Randy Hron). # -------------------------------------------- # 03/09/20 davem@nuts.ninka.net 1.1349 # Merge bk://kernel.bkbits.net/acme/llc-2.6 # into nuts.ninka.net:/disk1/davem/BK/net-2.5 # -------------------------------------------- # 03/09/20 davem@nuts.ninka.net 1.1350 # [IPV4]: Fix skb leak in igmp.c # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1351 # [IPVS]: Get rid of register declarations. # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1352 # [IPVS]: Get rid of SEQ_START_TOKEN define. # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1353 # [IPVS]: Use list_for_each_entry macro. # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1354 # [IPVS]: Use time_before/after. # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1355 # [NET]: Deprecate dev_get(). # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1356 # [NET]: Fix bug in dev_get() deprecation patch. # -------------------------------------------- # 03/09/20 rmk@flint.arm.linux.org.uk 1.1320.10.1 # [ARM] Fix up includes # # Remove duplicate includes, ensure that linux/config.h is included # where necessary, and linux/config.h isn't included where it isn't # needed. # -------------------------------------------- # 03/09/20 mzyngier@freesurf.fr 1.1320.11.1 # [PATCH] depca update # # I finally found some time to hack the depca driver, in basically the # same way I did with the de4x5 driver. The patch is quite big (shuffles # a lot of code around, removes lots of global variables), mainly in # order to use the driver model on every bus supported by this driver. # # I also removed the probing from Space.c, so the usual warning about # device renumbering applies. # # Tested on alpha (DE422, EISA) and i386 (two DE201, ISA), built-in and # modular. The MCA part is completly untested, since I lack the hardware # (no, I do not own every single piece of junk hardware out # there... ;-). # -------------------------------------------- # 03/09/20 felipewd@terra.com.br 1.1320.11.2 # [PATCH] Unneeded memory barrier in net/irda code # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1320.11.3 # [PATCH] replace sppp_of macro with inline # # Replace macro with inline and get some type checking. # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1320.11.4 # [PATCH] janitor: remove unneeded includes (tokenring) # # From: Randy Hron # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1320.11.5 # [PATCH] janitor: remove unneeded includes (sk98lin) # # From: Randy Hron # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1320.11.6 # [PATCH] janitor: remove (or add) unneeded includes # # From: Randy Hron # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1320.11.7 # [PATCH] janitor: remove unneeded includes (skfp) # # From: Randy Hron # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1320.11.8 # [PATCH] janitor: remove (or add) unneeded includes (wireless) # # From: Randy Hron # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1320.11.9 # [PATCH] janitor: remove unneeded includes (hamradio) # # From: Randy Hron # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1320.11.10 # [PATCH] janitor: remove (or add) unneeded includes (drivers/net/) # # From: Randy Hron # -------------------------------------------- # 03/09/20 chrisw@osdl.org 1.1320.11.11 # [netdrvr] use cpu_relax() in busy loop, or mdelay instead of busy loop # # Replace busy loop nop with cpu_relax(), and just use mdelay where it's better. # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1320.11.12 # [PATCH] get rid of old IRDA drivers. # # According to Jean the toshoboe and old smc ircc drivers are no longer needed. # This patch removes them from 2.6.0-test5 # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1320.11.13 # [PATCH] janitor: insert a missing iounmap() # # From: Leann Ogasawara # Subject: [Kernel-janitors] [PATCH] insert missing iounmap() # # Patch inserts a missing iounmap(). # -------------------------------------------- # 03/09/20 rddunlap@osdl.org 1.1320.11.14 # [PATCH] janitor: ns83820 error handling # # Subject: Re: [Kernel-janitors] [PATCH] insert missing free_irq and fix cleanup path # From: Leann Ogasawara # # On Thu, 2003-09-04 at 13:17, Benjamin LaHaise wrote: # > The if()s before free are redundant, turf them and it's good. # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1320.11.15 # [IrDA] irda-usb -- dev_alloc cleanout # # Update irda-usb for 2.6.0-test5 # - use alloc_netdev (but can't use dev->priv area cause that is allocated elsewhere). # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1320.11.16 # [IrDA] w83977af -- dev_alloc cleanout # # Yet another irda driver cleanup for 2.6.0-test5 # - replace dev_alloc with alloc_netdev # - use private data allocated with alloc_netdev # - use free_netdev # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1320.11.17 # [IrDA] donahoboe -- dev_alloc cleanout # # Fixes for donauboe for 2.6.0-test5 # - replace dev_alloc with alloc_netdev # - error unwind cleanup # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1320.11.18 # [IrDA] nsc-ircc -- dev_alloc cleanout # # Cleanup nsc-ircc driver for 2.6.0-test5 # - replace dev_alloc with alloc_netdev # - use private data allocated with alloc_netdev # - error unwind cleanup # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1320.11.19 # [IrDA] via-ircc -- dev_alloc cleanout # # Convert via-ircc 2.6.0-test5 # - use alloc_net_dev not dev_alloc # - allocate private data at same time # - cleanup error unwinds # - call free_netdev. # # Builds and loads, but don't have real hardware. # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1320.11.20 # [IrDA] ali-ircc -- dev_alloc cleanout # # Convert ali-ircc driver to: # - use alloc_net_dev not dev_alloc # - allocate private data at same time # - cleanup error unwinds # - call free_netdev. # # Builds and loads, but don't have real hardware. # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1320.11.21 # [PATCH] sealevel wan driver # # Update sealevel driver to match current net_device interface: # - dynamically allocate netdevice and private data. # - get rid of MOD_INC/DEC # - if_ptr not used # - bugfix: not all of board structure was being zeroed. # # Note: this driver still doesn't probe() correctly since it just assumes that # if loaded the hardware is there! # # Since I don't have one of these boards... # tested it by #ifdef'ing out all the bits that touch actual hardware. # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1320.11.22 # [PATCH] update arcnet/pcmcia driver # # Redo of earlier patch to get rid of MOD_INC/DEC and use alloc_netdev. # This is against 2.6.0-test5 bk latest. # -------------------------------------------- # 03/09/20 amir.noam@intel.com 1.1320.11.23 # [PATCH] [bonding 2.6] consolidate change_active operations # -------------------------------------------- # 03/09/20 amir.noam@intel.com 1.1320.11.24 # [PATCH] [bonding 2.6] fix assign_current_slave # -------------------------------------------- # 03/09/20 amir.noam@intel.com 1.1320.11.25 # [PATCH] [bonding 2.6] Decouple promiscuous handling from multicast mode setting # -------------------------------------------- # 03/09/20 amir.noam@intel.com 1.1320.11.26 # [PATCH] [bonding 2.6] Add support for changing HW address and MTU # -------------------------------------------- # 03/09/20 amir.noam@intel.com 1.1320.11.27 # [PATCH] [bonding 2.6] Add support for changing HW address in ALB/TLB modes # -------------------------------------------- # 03/09/20 amir.noam@intel.com 1.1320.11.28 # [PATCH] [bonding 2.6] Consolidate /proc code, add CHANGENAME handler # -------------------------------------------- # 03/09/20 amir.noam@intel.com 1.1320.11.29 # [PATCH] [bonding 2.6] Enhance netdev notification handling # -------------------------------------------- # 03/09/20 amir.noam@intel.com 1.1320.11.30 # [PATCH] [bonding 2.6] Add missing free_netdev() # -------------------------------------------- # 03/09/20 amir.noam@intel.com 1.1320.11.31 # [PATCH] [bonding 2.6] Fix ipx_hdr compile error # -------------------------------------------- # 03/09/20 akpm@osdl.org 1.1320.11.32 # [PATCH] e1000 bug # # Rick Lindsley wrote: # > # > since it's been out for a while you probably already know, but the patch # > for e1000_main.c has a bug in it. Looks like it will fail at line 1550 if # > compiled with NETIF_F_TSO defined. # > # # So it will. I blame the gcc developers. # # 25-akpm/drivers/net/e1000/e1000_main.c | 13 +++++++++---- # 1 files changed, 9 insertions(+), 4 deletions(-) # -------------------------------------------- # 03/09/20 bunk@fs.tum.de 1.1320.11.33 # [PATCH] fix sbni.c compile with gcc 3.3 # # sbni.c in 2.6.0-test5 fails to compile with gcc 3.3 with the following # error: # # <-- snip --> # # ... # CC drivers/net/wan/sbni.o # ... # drivers/net/wan/sbni.c: In function `calc_crc32': # drivers/net/wan/sbni.c:1568: error: asm-specifier for variable `_crc' # conflicts with asm clobber list # make[3]: *** [drivers/net/wan/sbni.o] Error 1 # # <-- snip --> # # Below is the patch by Margit Schubert-White to fix this issue (it is # already in 2.4). # # cu # Adrian # -------------------------------------------- # 03/09/20 amir.noam@intel.com 1.1320.11.34 # [PATCH] [bonding] Convert /proc to seq_file # # This patch converts /proc/net/bondX/info into /proc/net/bonding/bondX # using the seq_file interface. # # This is based on Stephen's recent patch, but slightly modified to work # with the propagation patch set and with some locking changes to make it # simpler. # # The patch applies both on 2.4 (after the sync set from earlier today) # and on 2.6 (after the propagation set from 2003/11/9). # # Amir # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1320.11.35 # [PATCH] hamradio/scc - # # Update hamradio/scc for 2.6.0-test5 # - use seq_file for /proc # - get rid of dev_get() # - use alloc_netdev # # Don't have hardware, but can load/unload the module fine. # -------------------------------------------- # 03/09/20 jochen@scram.de 1.1320.11.36 # [tokenring] fix breakage in proteon, skisa # # this one fixes both drivers. They have been broken since the # reorganization in June. Unfortunately, my major build platform (alpha) had # some issues with later 2.5.X kernels (cache problems causing all kind of # funny behaviour), so i waited until these problems had been resolved by # the alpha gurus :-/... # # In the mean time i also upgraded pine. I hope the patch corruption issue # is resolved by now. # # -------------------------------------------- # 03/09/20 acme@conectiva.com.br 1.1320.1.22 # o LLC: use list_for_each_entry in llc_sap_find # -------------------------------------------- # 03/09/20 achirica@telefonica.net 1.1320.11.37 # [wireless airo] fix PCI probe # -------------------------------------------- # 03/09/20 achirica@telefonica.net 1.1320.11.38 # [wireless airo] Fix MIC support with CryptoAPI # -------------------------------------------- # 03/09/20 shemminger@osdl.org 1.1320.11.39 # [PATCH] Road Runner HIPPI driver (rrunner) # # Small clean up, to use current APIs. # -------------------------------------------- # 03/09/20 torvalds@home.osdl.org 1.1320.12.1 # Merge bk://kernel.bkbits.net/vojtech/input # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/20 torvalds@home.osdl.org 1.1320.11.40 # Merge bk://kernel.bkbits.net/jgarzik/net-drivers-2.5 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/20 torvalds@home.osdl.org 1.1320.11.41 # Avoid type warning for bit operation in atkbd.c # -------------------------------------------- # 03/09/20 jgarzik@redhat.com 1.1320.13.1 # [sound/oss i810_audio] sync with 2.4 # # * increase length of wait for analog-ready # * fix printk prefix (cosmetic) # * bail out for pure MMIO interfaces, instead of attempting to use it # via PIO and hanging the system. # -------------------------------------------- # 03/09/20 torvalds@home.osdl.org 1.1320.11.42 # Merge bk://kernel.bkbits.net/jgarzik/misc-2.5 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/20 torvalds@home.osdl.org 1.1320.2.29 # Merge bk://kernel.bkbits.net/gregkh/linux/linus-2.6 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/20 torvalds@home.osdl.org 1.1320.2.30 # Don't ask about SERIO selection - let Kconfig select it # automatically as needed. # -------------------------------------------- # 03/09/21 rmk@flint.arm.linux.org.uk 1.1320.10.2 # [ARM] Avoid using clone syscall from kernel_thread() # # Don't issue a system call from kernel_thread(), but call do_fork() # directly. This avoids all the unnecessary syscall overhead. # -------------------------------------------- # 03/09/21 willy@debian.org 1.1320.2.31 # [PATCH] Move EISA_bus # # When I change the setting of CONFIG_EISA, everything rebuilds. This is # because EISA_bus is declared in which is implicitly # included by just about everything. This is a silly place to declare it, # so this patch moves it to include/linux/eisa.h. # # While I'm at it, I also move the variable definition to # drivers/eisa/eisa-bus.c. The rest of this patch is fixing up the fallout # from having to include if you use EISA_bus. # -------------------------------------------- # 03/09/21 torvalds@home.osdl.org 1.1320.2.32 # Disable forced keyrelease in atkbd driver. It breaks modifier keys. # -------------------------------------------- # 03/09/21 albert@users.sourceforge.net 1.1320.2.33 # [PATCH] fix for hidden-task problem # # It's bad to make (CLONE_THREAD | CLONE_DETACHED) tasks # be _completely_ hidden. Resource consumption is hard # to track down if a user can hide a task from /bin/ps. # # This patch, supported by the procps-3.1.13 release, # gives admins the ability to search for such tasks. # The top-level /proc directory remains uncontaminated. # -------------------------------------------- # 03/09/21 ambx1@neo.rr.com 1.1320.2.34 # [PNPBIOS] compilation fix for pnpbios without proc support # # Here's an updated patch that will correct the compile error when PROC # FS is disabled. It also introduces better proc error recovery and # moves the local proc functions to the local include file. Thanks to # Daniele Bellucci for finding the problem and contributing to this # patch. # # -------------------------------------------- # 03/09/21 ambx1@neo.rr.com 1.1320.2.35 # [PNP] release card devices on probe failure # # When a driver's probe routine fails, it may not release all of the # card devices it requested. This patch allows the pnp layer to ensure # that all devices claimed by the failing driver are released properly. # -------------------------------------------- # 03/09/21 ambx1@neo.rr.com 1.1320.2.36 # [PNPBIOS] move detection code into core.c # # This patch moves the detection code to a more appropriate file. # -------------------------------------------- # 03/09/21 ambx1@neo.rr.com 1.1320.2.37 # [PNP] remove DMA 0 restrictions # # The original argument for blocking DMA 0 was to avoid conflicts with # "memory refresh" but such configurations are only found on very old # 8-bit systems that are likely not supported by the linux kernel. # This patch allows dma 0 to be assigned to PnP devices by default. If # for whatever reason dma 0 cannot be used, one can avoid allocating it # by setting the pnp_reserve_dma= kernel parameter. # -------------------------------------------- # 03/09/21 ambx1@neo.rr.com 1.1320.2.38 # [PATCH] janitor: remove unneeded includes (isapnp) # # From: Randy Hron # -------------------------------------------- # 03/09/21 ambx1@neo.rr.com 1.1320.2.39 # [ISAPNP] remove unused isapnp_allow_dma0 modparam # # It looks like this option has been moved from isapnp to resource.c, # but the MODULE_PARM line is still there: # # patch from: Gerald Teschl # -------------------------------------------- # 03/09/21 ambx1@neo.rr.com 1.1320.2.40 # [PNPBIOS] return proper error codes on init failure # -------------------------------------------- # 03/09/21 ambx1@neo.rr.com 1.1320.2.41 # [PNPBIOS] move some more functions to local include file # # This patch moves some unnecessary global functions to the local # pnpbios include file. # # -------------------------------------------- # 03/09/21 rmk@flint.arm.linux.org.uk 1.1320.3.2 # [PCMCIA] Fix deadlocks caused between PCMCIA card fix and device model # # The problem was that the semaphore which prevents ds interfering with # the sleepy card initialisation (skt_sem in pccardd) is blocking insmod # of the socket driver. However, the socket driver is being called with # the PCI bus semaphore held by the driver model. # # pccardd in turn discovered a cardbus card (with skt_sem held), so it # is trying to add the PCI devices to the PCI bus, and this requires the # driver model to grab the PCI bus semaphore, but its already locked. # # We move the class device register into pccardd so we get a natural # ordering between the ds socket initialisation and pccardd trying to # detect inserted cards. # # We also fix a potential use-after-free caused by rmmod'ing the socket # driver before ds has shut down. # -------------------------------------------- # 03/09/21 torvalds@home.osdl.org 1.1320.14.1 # Merge bk://bk.arm.linux.org.uk/linux-2.6-rmk # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/21 torvalds@home.osdl.org 1.1320.14.2 # Merge bk://bk.arm.linux.org.uk/linux-2.6-pcmcia # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.3 # [PATCH] procfs build fix for older gcc # # - declarations come first # # - fix bizarre coding style. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.4 # [PATCH] ECC support # # From: "Nakajima, Jun" # # Split the increasingly messy compiler.h file into per-compiler files and also # add support for non-gcc compilers. # # With the current implementation: # # include/linux/compiler.h defines the compiler-dependent abstractions # which can be overwritten by per-compiler definitions. # # include/linux/compiler-gcc.h contains the common definitions for all gcc # versions. # # include/linux/compiler-gcc[2,3,+].h contains gcc major version specific # definitions. # # include/linux/compiler-intel.h contains intel compiler specific # definitions." # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.5 # [PATCH] real-time enhanced page allocator and throttling # # From: Robert Love # # - Let real-time tasks dip further into the reserves than usual in # __alloc_pages(). There are a lot of ways to special case this. This # patch just cuts z->pages_low in half, before doing the incremental min # thing, for real-time tasks. I do not do anything in the low memory slow # path. We can be a _lot_ more aggressive if we want. Right now, we just # give real-time tasks a little help. # # - Never ever call balance_dirty_pages() on a real-time task. Where and # how exactly we handle this is up for debate. We could, for example, # special case real-time tasks inside balance_dirty_pages(). This would # allow us to perform some of the work (say, waking up pdflush) but not # other work (say, the active throttling). As it stands now, we do the # per-processor accounting in balance_dirty_pages_ratelimited() but we # never call balance_dirty_pages(). Lots of approaches work. What we want # to do is never engage the real-time task in forced writeback. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.6 # [PATCH] Fix setpgid and threads # # From: Jeremy Fitzhardinge # # I'm resending my patch to fix this problem. To recap: every task_struct # has its own copy of the thread group's pgrp. Only the thread group # leader is allowed to change the tgrp's pgrp, but it only updates its own # copy of pgrp, while all the other threads in the tgrp use the old value # they inherited on creation. # # This patch simply updates all the other thread's pgrp when the tgrp # leader changes pgrp. Ulrich has already expressed reservations about # this patch since it is (1) incomplete (it doesn't cover the case of # other ids which have similar problems), (2) racy (it doesn't synchronize # with other threads looking at the task pgrp, so they could see an # inconsistent view) and (3) slow (it takes linear time with respect to # the number of threads in the tgrp). # # My reaction is that (1) it fixes the actual bug I'm encountering in a # real program. (2) doesn't really matter for pgrp, since it is mostly an # issue with respect to the terminal job-control code (which is even more # broken without this patch. Regarding (3), I think there are very few # programs which have a large number of threads which change process group # id on a regular basis (a heavily multi-threaded job-control shell?). # # Ulrich also said he has a (proposed?) much better fix, which I've been # looking forward to. I'm submitting this patch as a stop-gap fix for a # real bug, and perhaps to prompt the improved patch. # # An alternative fix, at least for pgrp, is to change all references to # ->pgrp to group_leader->pgrp. This may be sufficient on its own, but it # would be a reasonably intrusive patch (I count 95 instances in 32 files # in the 2.6.0-test3-mm3 tree). # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.7 # [PATCH] reiserfs: large file 32/64-bit truncation fix # # From: Oleg Drokin # # Fix trucation-induced large file corruption in reiserfs. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.8 # [PATCH] Overflow check for i386 assign_irq_vector # # From: James Cleverdon # # Some very large systems overflow the array and corrupt memory. A BUG_ON will # at least flag the problem until dynamic irq_vector allocation is added. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.9 # [PATCH] mtrr warning fix w/o proc_fs # # From: Stephen Hemminger # # Get rid of warnings (and dead code) if MTRR is compiled without /proc # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.10 # [PATCH] NLS: Remove the nls modules for only alias # # From: OGAWA Hirofumi # # This does the following, # # 1) This removes the nls modules for only alias. For backward # compatible, this adds ->alias, and ->alias provides alias of charset. # # 2) For autoloading the module by the alias, use MODULE_ALIAS mechanism. # # 3) From changelog of module-init-tools, looks like MODULE_ALIAS needs # module-init-tools 0.9.10 or later. So change the "Documentation/Changes". # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.11 # [PATCH] NLS: remove emacs metadata # # From: OGAWA Hirofumi # # This elisp was obsolete on recently emacs's cc-mode. And this should # be personally set. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.12 # [PATCH] scheduler infrastructure # # From: Ingo Molnar # # the attached scheduler patch (against test2-mm2) adds the scheduling # infrastructure items discussed on lkml. I got good feedback - and while i # dont expect it to solve all problems, it does solve a number of bad ones: # # - test_starve.c code from David Mosberger # # - thud.c making the system unusuable due to unfairness # # - fair/accurate sleep average based on a finegrained clock # # - audio skipping way too easily # # other changes in sched-test2-mm2-A3: # # - ia64 sched_clock() code, from David Mosberger. # # - migration thread startup without relying on implicit scheduling # behavior. While the current 2.6 code is correct (due to the cpu-up code # adding CPUs one by one), but it's also fragile - and this code cannot # be carried over into the 2.4 backports. So adding this method would # clean up the startup and would make it easier to have 2.4 backports. # # and here's the original changelog for the scheduler changes: # # - cycle accuracy (nanosec resolution) timekeeping within the scheduler. # This fixes a number of audio artifacts (skipping) i've reproduced. I # dont think we can get away without going cycle accuracy - reading the # cycle counter adds some overhead, but it's acceptable. The first # nanosec-accuracy patch was done by Mike Galbraith - this patch is # different but similar in nature. I went further in also changing the # sleep_avg to be of nanosec resolution. # # - more finegrained timeslices: there's now a timeslice 'sub unit' of 50 # usecs (TIMESLICE_GRANULARITY) - CPU hogs on the same priority level # will roundrobin with this unit. This change is intended to make gaming # latencies shorter. # # - include scheduling latency in sleep bonus calculation. This change # extends the sleep-average calculation to the period of time a task # spends on the runqueue but doesnt get scheduled yet, right after # wakeup. Note that tasks that were preempted (ie. not woken up) and are # still on the runqueue do not get this benefit. This change closes one # of the last hole in the dynamic priority estimation, it should result # in interactive tasks getting more priority under heavy load. This # change also fixes the test-starve.c testcase from David Mosberger. # # # The TSC-based scheduler clock is disabled on ia32 NUMA platforms. (ie. # platforms that have unsynched TSC for sure.) Those platforms should provide # the proper code to rely on the TSC in a global way. (no such infrastructure # exists at the moment - the monotonic TSC-based clock doesnt deal with TSC # offsets either, as far as i can tell.) # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.13 # [PATCH] sched_clock() for ppc, ppc64, x86_64 and sparc64 # # Ingo's CPU scheduler update (in -mm kernels) needs a new sched_clock() # function which returns nanoseconds. # # The patch provides implementations for ppc, ppc64, x86_64 and sparc64. # # The x86_64 version could have overflow issues, the calculation is done in # 32bits only with an multiply. But I hope it's good enough for the scheduler # # The ppc64 version needs scaling: it's only accurate for 1GHz CPUs. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.14 # [PATCH] CPU scheduler balancing fix # # From: Nick Piggin # # The patch changes the imbalance required before a balance to 25% from 50% - # as the comments intend. It also changes a case where the balancing # wouldn't be done if the imbalance was >= 25% but only 1 task difference. # # The downside of the second change is that one task may bounce from one cpu # to another for some loads. This will only bounce once every 200ms, so it # shouldn't be a big problem. # # (Benchmarking results are basically a wash - SDET is increased maybe 0.5%) # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.15 # [PATCH] CPU scheduler interactivity changes # # From: Con Kolivas # # Interactivity scheduler tweaks on top of Ingo's A3 interactivity patch. # # Interactive credit added to task struct to find truly interactive tasks and # treat them differently. # # Extra #defines included as helpers for conversion to/from nanosecond timing, # to work out an average timeslice for nice 0 tasks, and the effective dynamic # priority bonuses that will be given to tasks. # # MAX_SLEEP_AVG modified to change dynamic priority by one for a nice 0 task # sleeping or running for one full timeslice. # # CREDIT_LIMIT is the number of times a task earns sleep_avg over MAX_SLEEP_AVG # before it is considered HIGH_CREDIT (truly interactive); and -CREDIT_LIMIT is # LOW_CREDIT # # TIMESLICE GRANULARITY is modified to be more frequent for more # interactivetasks (10 ms for top 2 dynamic priorities and then halving each # priority belowthat) and less frequent per extra cpu. # # JUST_INTERACTIVE_SLEEP logic created to be a sleep_avg consistent with giving # a task enough dynamic priority to remain on the active array. # # Task preemption of equal priority tasks is dropped as requeuing with # TIMESLICE_GRANULARITY makes this unecessary. # # Dynamic priority bonus simplified. # # User tasks that sleep a long time and not waking from uninterruptible sleep # are sought and categorised as idle. Their sleep avg is limited in it's rise to # prevent them becoming high priority and suddenly turning into cpu hogs. # # Bonus for sleeping is proportionately higher the lower the dynamic priority of # a task is; this allows for very rapid escalation to interactive status. # # Tasks that are LOW_CREDIT are limited in rise per sleep to one priority level. # # Non HIGH_CREDIT tasks waking from uninterruptible sleep are sought to detect # cpu hogs waiting on I/O and their sleep_avg rise is limited to just # interactive state to prevent cpu bound tasks from becoming interactive during # I/O wait. # # Tasks that earn sleep_avg over MAX_SLEEP_AVG get interactive credits. # # On runqueue bonus is not given to non HIGH_CREDIT tasks waking from # uninterruptible sleep. # # Forked tasks and their parents get sleep_avg limited to the minimum necessary # to maintain their effective dynamic priority thus preventing repeated forking # from being a way to get highly interactive, but not penalise them noticably # otherwise. # # CAN_MIGRATE_TASK cleaned up and modified to work with nanosecond timestamps. # # Reverted Ingo's A3 Starvation limit change - it was making interactive tasks # suffer more under increasing load. If a cpu is grossly overloaded and # everyone is going to starve it may as well run interactive tasks # preferentially. # # Task requeuing is limited to interactive tasks only (cpu bound tasks dont need # low latency and derive benefit from longer timeslices), and they must have at # least TIMESLICE_GRANULARITY remaining. # # HIGH_CREDIT tasks get penalised less sleep_avg the more interactive they are # thus keeping them interactive for bursts but if they become sustained cpu hogs # they will slide increasingly rapidly down the dynamic priority scale. # # Tasks that run out of sleep_avg, are still using up cpu time and are not high # or low credit yet get penalised interactive credits to determine LOW_CREDIT # tasks (cpu bound ones). # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.16 # [PATCH] might_sleep diagnostics # # might_sleep() can be triggered by either local interrupts being disabled or # by elevated preempt count. Disambiguate them. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.17 # [PATCH] Move slab objects to the end of the real allocation # # From: Manfred Spraul # # The real memory allocation is usually larger than the actual object size: # either due to L1 cache line padding, or due to page padding with # CONFIG_DEBUG_PAGEALLOC. Right now objects are placed to the beginning of # the real allocation, but to trigger bugs it's better to move objects to the # end of the real allocation: that way accesses behind the end of the # allocation have a larger chance of hitting the (unmapped) next page. The # attached patch moves the objects to align them with the end of the real # allocation. # # Actually it contains 4 seperate changes: # # - Do not page-pad allocations that are <= SMP_CACHE_LINE_SIZE. This # crashes. Right now the limit is hardcoded to 128 bytes, but sooner or # later an arch will appear with 256 byte cache lines. # # - cleanup: redzone bytes are not accessed with inline helper functions, # instead of magic offsets scattered throughout slab.c # # - main change: move objects to the end of the allocation - trivial after # the cleanup. # # - Print old redzone value if a redzone mismatch happens: This makes it # simpler to figure out what happened [single bit error, wrong redzone # code, overwritten] # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.18 # [PATCH] Remove Documentation/smp.tex # # Hopelessly out of date # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.19 # [PATCH] AGP warning fix # # agp_setup() is unreferenced if it's a module. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.20 # [PATCH] mwave char/Kconfig fix # # From: Angus Sawyer # # The mwave driver requires [un]register_char from 8250.c # Make sure 8250.c gets compilied. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.21 # [PATCH] any_online_cpu fix # # From: William Lee Irwin III # # any_online_cpu() is required to and with cpu_online_map before # attempting to find an online cpu somewhere in the map; this patch adds # that logic to the implementation(s) of any_online_cpu(). # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.22 # [PATCH] allow x86 NUMA architecture detection to fail # # From: Dave Hansen # # As described in this bug: http://bugme.osdl.org/show_bug.cgi?id=653 , if # you enable Summit support and NUMA Discontigmem support but boot on a # non-Summit box, the kernel will fail to boot. The problem is that the # Summit code can not correctly get the NUMA memory configuration of a # flat box. The code to do that is in get_memcfg_numa_flat(), but it # never gets called. # # This patch implements a fallback to the generic NUMA code in # get_memcfg_numa_flat() if the Summit detection fails. The patch also # adds the necessary bits to the Summit code so that it *knows* when it # fails. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.23 # [PATCH] misc fixes # # - Remove dead declaration from elevator.h (Nick Piggin) # # - Fix the scheduler selection boot-time message. "Using anticipatory # scheduling io scheduler" is not grammatical. # # - Remove last use of __SMP__ (Randy Dunlap) # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.24 # [PATCH] reiserfs: add checks from 2.4 into 2.5 # # From: Oleg Drokin # # This patch adds more consistency checks to reiserfs (check that transaction # is not bigger than journal, check that we reply blocks not beyond fs and # check that fs fits the block device). Similar patch was included into 2.4 # some time ago. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.25 # [PATCH] remove duplicate SOUND_RME96XX option # # From: Adrian Bunk # # sound/oss/Kconfig in 2.6.0-test5 includes two SOUND_RME96XX entries. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.26 # [PATCH] istallion: use schedule_work # # From: "Krishnakumar. R" # # A missing schedule_task -> schedule_work conversion. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.27 # [PATCH] file locking memory leak # # From: Matthew Wilcox # # This patch fixes a memory leak in the file locking code. Each attempt to # unlock a file would result in the leak of a file lock. Many thanks to # Martin Josefsson for providing the testcase which enabled me to figure out # the problem. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.28 # [PATCH] fix incorrect argv[0] for init # # From: Erik Andersen # # When someone specifies "init=" to select an alternative binary to run # instead of /sbin/init, argv[0] is not set correctly. This is a problem for # programs such as busybox that multiplex applications based on the value of # argv[0]. For example, even if you specify init=/bin/sh" on the kernel # command line, busybox will still receive "/sbin/init" as argv[0] and will # therefore run init rather than /bin/sh... # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.29 # [PATCH] ens1370 PCI driver naming fix # # From: Patrick Mochel # # Two drivers are #including the same .c file. Use them both and we get a # sysfs naming clash. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.30 # [PATCH] Summit sub-arch: Make logical IDs independent of BIOS numbering scheme # # From: James Cleverdon # # In forthcoming IBM x445 systems, the physical APIC ID will not follow the # simple rule laid out by Intel and encoded into xapic_phys_to_log_apicid. # (The BIOS code that sets IDs doesn't work right above 16 CPUs if HT is turned # on, so for > 16-way the BIOS will disable HT and repack the physical CPUs # into APIC clusters.) # # Anyway, it's a good idea to make the APIC code more independent of any # particular BIOS numbering scheme. This patch allocates logical IDs based on # how many CPUs have already been onlined in a particular APIC cluster. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.31 # [PATCH] wanXL serial card driver # # From: Krzysztof Halasa # # This is a driver for SBE Inc. wanXL 4-port sync serial card, second # version. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.32 # [PATCH] floppy cleanup timers/resources on unload # # From: Zwane Mwaikambo # # The floppy driver currently can leave pending timers after unloading # itself. # # This bug has a corresponding bugzilla entry at; # # http://bugme.osdl.org/show_bug.cgi?id=1061 # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.33 # [PATCH] remove /proc/config_build_info # # From: Zwane Mwaikambo # # The same info is already available in /proc/version. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.34 # [PATCH] access_ok is likely # # From Manfred # # While trying to figure out why sysv msg is around 30% slower than pipes for # data transfers I noticed that gcc's autodetection (3.2.2) guesses the # "if(access_ok())" tests in uaccess.h wrong and puts the error memset into the # direct path and the copy out of line. # # So tell the compiler that access_ok() is likely to be true. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.35 # [PATCH] Update Documentation/block/biodoc.txt # # From: Nick Piggin # # This brings biodoc.txt a bit more up to date with recent elevator changes. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.36 # [PATCH] Fix typo in scripts/postmod.c # # From: Kristian Hogsberg # # There's a small typo in scripts/postmod.c # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.37 # [PATCH] Export new char dev functions # # From: Jonathan Corbet # # Nobody told me that the failure to export these (like their block # counterparts) was anything but an oversight; modules will not be able to # use larger device numbers without them. So...this patch exports the new # char device functions. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.38 # [PATCH] hangcheck compile fix # # From: john stultz # # Since monotonic_clock() is not defined on every arch yet, this patch # insures the hangcheck-timer module (currently the only user of # monotonic-clock) is not built where it will not compile. # # I know, I know. Ideally monotonic_clock() would be implemented on all # arches, but I've just not had the time. If any of the non x86/x86-64 # folks feel bored, drop me a line. It'd be a fairly easy project. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.39 # [PATCH] NCR5380 timeout fix # # From: Wagner_Volanin # # I have an old Genius Colorpage-SP2 SCSI scanner. It is shipped with a # MS-PNR 8bit ISA non-pnp proprietary SCSI card from Microtek. # # Although its chipset is a NCR53c400a, it wouldn't work with the appropriate # driver, always accusing timeout, whatever settings I passed to it. # # Today I messed a little with the NCR5380.c file in drivers/scsi which is # included by the g_NCR5380 driver and I couldn't understand one thing: # # Why the function NCR5380_poll_politely() returned the value 'r' on success # if this value should be '0' case everything went ok... # # So I changed "return r;" to "return 0;" and after that my scanner worked # fine, and was easily detected by SANE, without a single error message. :) # # I have not the time to delve into the problem further, but I wanted to # report this. I couldn't find any counter-effects caused by changing these # return values. # # (Acked by Alan) # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.40 # [PATCH] Incorrect value for SIGRTMAX # # From: Corey Minyard # # I was having a problem with signals with POSIX timers, and it turns out # that the value of SIGRTMAX is incorrect. Remember that there is no # signal 0, so the signals should go from 1-_NSIG. However, SIGRTMAX is # defined as (_NSIG-1) in all architectures. The following patch fixes this. # # This define is only used in drivers/usb/core/devio.c and # kernel/posix-timers.c, and both are incorrect without this fix. There's # also no check for zero in posix-timers.c, that fix is part of the diff. # # Also, shouldn't do_sigaction() use this value instead of _NSIG? It's # not a big deal, but some architectures have different values for _NSIG # and SIGRTMAX. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.41 # [PATCH] x445: setup_ioapic_ids_from_mpc fix # # From: James Cleverdon # # 32-way IBM x445s will have I/O xAPICs with IDs greater than 0xF (0x8 to 0xE # isn't enough). This breaks the code in setup_ioapic_ids_from_mpc. # However, the entire unique ID check is unnecessary. Only I/O APICs using # the serial APIC bus need the unique numbers. Those sending messages # through the system bus simply don't use them. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.42 # [PATCH] deadline insert_here fix # # From: Nick Piggin # # Fix fallout from Jens' insert_here removal. Without it its possible that a # request on the dispatch list is on the merge hash as well which is bad. I # don't _think_ this would happen in any code paths, but I haven't looked too # closely. It makes the API a bit less fragile anyway. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.43 # [PATCH] bio_dirty_fn() page leak fix # # bio_dirty_fn() needs to drop its ref against each remaining page in the BIO # before releasing the BIO. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.44 # [PATCH] Speed up direct-io hugetlbpage handling # # This patch short-circuits all the direct-io page dirtying logic for # higher-order pages. Without this, we pointlessly bounce BIOs up to keventd # all the time. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.45 # [PATCH] Handle init_new_context failures # # From: Anton Blanchard # # If init_new_context fails we definitely do not want to call mmput, because # that will call destroy_context against an uninitialised context. Instead # we should back out what we did in init_mm. Fixes some weird failures on # ppc64 when running a fork bomb. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.46 # [PATCH] Fix sem_lock deadlock # # From: Anton Blanchard # # I saw a lockup where 2 cpus were stuck in sem_lock(). It seems like we can # loop back to retry_undos with the lock held. That path takes the lock so # we will deadlock. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.47 # [PATCH] zoran driver documentation fix # # From: Ronald Bultje # # the zoran kernel driver is called 'zoran.o' in its CVS (historical thing, I # don't know why), and it's called zr36067.o in the kernel tree. The # documentation in the kernel tree refers to zoran.o, though, which is (in # the kernel tree) the driver for zr36120-based cards, rather than the driver # for zr360x7-based cards. # # The attached patch fixes the documentation and makes it refer to # zr36067.o instead. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.48 # [PATCH] AS oops fix # # From: Nick Piggin # # If a request is merged with another, it sometimes has to be repositioned on # the rbtree - you just do a delete then an add. This is a quite uncommon # case though. # # I changed the way adding works, so collisions must be handled by the caller # instead of being dumbly fixed by the add routine. Unfortunately the # uncommon callers weren't handling it properly. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.49 # [PATCH] kill superflous kdev_t.h inclusions # # From: Christoph Hellwig # # now that kdev_t is gone very few places needs this still, the only header # of those beeing fs.h # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.50 # [PATCH] move some more initializations out of drivers/char/mem.c # # From: Christoph Hellwig # # keeping init order the same.. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.51 # [PATCH] rio.c: remove TWO_ZERO # # From: Adrian Bunk # # Three drivers under drivers/char/ in 2.5.72 use TWO_ZERO for compatibility # code with ancient 2.0 kernels. The patch below removes this #ifdef'd code. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.52 # [PATCH] mlock error handling fix # # make_pages_present() can fail: propagate that failure back. # # Spotted by Bill Irwin. # -------------------------------------------- # 03/09/21 akpm@osdl.org 1.1320.14.53 # [PATCH] fix cciss memory leaks # # From: Felipe W Damasio # # Fix a few error-path leaks in the cciss block driver. Bug found by smatch # checker. # -------------------------------------------- # 03/09/21 rddunlap@osdl.org 1.1320.14.54 # [PATCH] floppy I/O error handling => Oops # # bad_flp_intr() in floppy.c can cause an Oops if the I/O request is freed # but still points into the I/O request block. Get the error # count out of the request block before ending the IO. # # bad_flp_intr() oopsen reports: # # Andrey: http://marc.theaimsgroup.com/?l=linux-kernel&m=105837886921297&w=2 # John: http://marc.theaimsgroup.com/?l=linux-kernel&m=106303650007125&w=2 # Barry: http://bugme.osdl.org/show_bug.cgi?id=1033 # -------------------------------------------- # 03/09/21 albert@users.sourceforge.net 1.1320.14.55 # [PATCH] fix CONFIG_SECURE trouble in thread-aware procfs # # This fixes the thread-aware /proc for CONFIG_SECURE. # -------------------------------------------- # 03/09/21 torvalds@home.osdl.org 1.1320.2.42 # Merge bk://linux-pnp.bkbits.net/pnp-2.5 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/21 davem@nuts.ninka.net 1.1357 # Merge nuts.ninka.net:/disk1/davem/BK/network-2.5 # into nuts.ninka.net:/disk1/davem/BK/net-2.5 # -------------------------------------------- # 03/09/21 bdschuym@pandora.be 1.1358 # [NETFILTER]: Fix parisc64 alignment problems in ipt_physdev.c # -------------------------------------------- # 03/09/21 wensong@linux-vs.org 1.1359 # [IPVS]: Make __ip_vs_svc_lock local and use __user tags. # -------------------------------------------- # 03/09/21 davem@nuts.ninka.net 1.1360 # Merge bk://kernel.bkbits.net/acme/llc-2.6 # into nuts.ninka.net:/disk1/davem/BK/net-2.5 # -------------------------------------------- # 03/09/21 vinay.nallamothu@gsecone.com 1.1361 # [NETROM]: Timer code cleanup. # -------------------------------------------- # 03/09/21 chas@cmf.nrl.navy.mil 1.1362 # [ATM]: [eni] Correct way to prevent module unload (from shemminger@osdl.org). # -------------------------------------------- # 03/09/21 chas@cmf.nrl.navy.mil 1.1363 # [ATM]: [firestream] Allow module refcounting. # -------------------------------------------- # 03/09/21 chas@cmf.nrl.navy.mil 1.1364 # [ATM]: [idt77252] Get rid of MOD_INC/MOD_DEC. # -------------------------------------------- # 03/09/21 chas@cmf.nrl.navy.mil 1.1365 # [ATM]: [lanai] Get rid of MOD_INC/MOD_DEC (from shemminger@osdl.org). # -------------------------------------------- # 03/09/21 chas@cmf.nrl.navy.mil 1.1366 # [ATM]: [uPD98402] Convert to new-style module. # -------------------------------------------- # 03/09/21 chas@cmf.nrl.navy.mil 1.1367 # [ATM]: [uPD98402] Exported symbols should not be marked __init. # -------------------------------------------- # 03/09/21 chas@cmf.nrl.navy.mil 1.1368 # [ATM]: [zatm] Correct way to prevent module unload (from shemminger@osdl.org). # -------------------------------------------- # 03/09/21 willy@debian.org 1.1369 # [NETFILTER]: Use net/checksum.h instead of asm/checksum.h # -------------------------------------------- # 03/09/21 torvalds@home.osdl.org 1.1320.2.43 # Remove incorrect and unnecessary definition of "errno" that causes # link-time duplicate symbol errors. # -------------------------------------------- # 03/09/21 davem@nuts.ninka.net 1.1370 # [LLC]: llc_core.c needs linux/init.h # -------------------------------------------- # 03/09/21 acme@conectiva.com.br 1.1320.1.23 # o LLC: remove unneeded EXPORT_SYMBOLs from llc_sap # # Now all is in llc2.ko, so no need for exporting those symbols. # Also llc_build_and_send_ui_pkt is now in llc_output.c, where it # is being exported. # -------------------------------------------- # 03/09/21 albert@users.sourceforge.net 1.1320.2.44 # [PATCH] use CLONE_KERNEL # # This uses CLONE_KERNEL in place of the individual # flags, only changing the places where it is an exact # match. # # I strongly suspect that CLONE_KERNEL ought to be # used in many more places, but they require a more # careful examination. # -------------------------------------------- # 03/09/21 davem@kernel.bkbits.net 1.1320.2.45 # Merge davem@nuts.ninka.net:/disk1/davem/BK/sparc-2.5 # into kernel.bkbits.net:/home/davem/sparc-2.5 # -------------------------------------------- # 03/09/21 davem@nuts.ninka.net 1.1371 # Merge bk://kernel.bkbits.net/acme/llc-2.6 # into nuts.ninka.net:/disk1/davem/BK/net-2.5 # -------------------------------------------- # 03/09/21 davem@kernel.bkbits.net 1.1372 # Merge davem@nuts.ninka.net:/disk1/davem/BK/net-2.5 # into kernel.bkbits.net:/home/davem/net-2.5 # -------------------------------------------- # 03/09/21 torvalds@home.osdl.org 1.1373 # Merge bk://kernel.bkbits.net/davem/net-2.5 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/09/21 torvalds@home.osdl.org 1.1374 # Merge bk://kernel.bkbits.net/davem/sparc-2.5 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # diff -Nru a/CREDITS b/CREDITS --- a/CREDITS Mon Sep 22 00:30:23 2003 +++ b/CREDITS Mon Sep 22 00:30:23 2003 @@ -1394,7 +1394,8 @@ N: Marcel Holtmann E: marcel@holtmann.org W: http://www.holtmann.org -D: Author of the Linux Bluetooth Subsystem PC Card drivers +D: Author and maintainer of the various Bluetooth HCI drivers +D: Various other Bluetooth related patches, cleanups and fixes S: Germany N: Rob W. W. Hooft @@ -2795,7 +2796,7 @@ D: Dosemu N: Duncan Sands -E: duncan.sands@wanadoo.fr +E: duncan.sands@free.fr W: http://topo.math.u-psud.fr/~sands D: Alcatel SpeedTouch USB driver S: 69 rue Dunois @@ -3460,11 +3461,11 @@ S: England N: Chris Wright -E: chris@wirex.com +E: chrisw@osdl.org D: hacking on LSM framework and security modules. -S: c/o WireX -S: 920 SW 3rd, Ste. 100 -S: Portland, OR 97204 +S: c/o OSDL +S: 12725 SW Millikan Way, Suite 400 +S: Beaverton, OR 97005 S: USA N: Frank Xia diff -Nru a/Documentation/00-INDEX b/Documentation/00-INDEX --- a/Documentation/00-INDEX Mon Sep 22 00:30:19 2003 +++ b/Documentation/00-INDEX Mon Sep 22 00:30:19 2003 @@ -116,8 +116,6 @@ - listing of various WWW + books that document kernel internals. kernel-parameters.txt - summary listing of command line / boot prompt args for the kernel. -kmod.txt - - info on the kernel module loader/unloader (kerneld replacement). ldm.txt - a brief description of LDM (Windows Dynamic Disks). locks.txt @@ -144,8 +142,6 @@ - script to make /dev entries for SMART controllers (see cciss.txt) mkdev.ida - script to make /dev entries for Intelligent Disk Array Controllers. -modules.txt - - short guide on how to make kernel parts into loadable modules moxa-smartio - info on installing/using Moxa multiport serial driver. mtrr.txt diff -Nru a/Documentation/Changes b/Documentation/Changes --- a/Documentation/Changes Mon Sep 22 00:30:24 2003 +++ b/Documentation/Changes Mon Sep 22 00:30:24 2003 @@ -52,7 +52,7 @@ o Gnu make 3.78 # make --version o binutils 2.12 # ld -v o util-linux 2.10o # fdformat --version -o module-init-tools 0.9.9 # depmod -V +o module-init-tools 0.9.10 # depmod -V o e2fsprogs 1.29 # tune2fs o jfsutils 1.1.3 # fsck.jfs -V o reiserfsprogs 3.6.3 # reiserfsck -V 2>&1|grep reiserfsprogs @@ -62,7 +62,7 @@ o PPP 2.4.0 # pppd --version o isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep version o nfs-utils 1.0.5 # showmount --version -o procps 2.0.9 # ps --version +o procps 3.1.13 # ps --version o oprofile 0.5.3 # oprofiled --version Kernel compilation diff -Nru a/Documentation/DocBook/gadget.tmpl b/Documentation/DocBook/gadget.tmpl --- a/Documentation/DocBook/gadget.tmpl Mon Sep 22 00:30:21 2003 +++ b/Documentation/DocBook/gadget.tmpl Mon Sep 22 00:30:21 2003 @@ -468,6 +468,15 @@ information. +For users of Intel's PXA 2xx series processors, +a pxa2xx_udc driver is available. + + +At this writing, there are people at work on drivers in +this framework for several other USB device controllers, +with plans to make many of them be widely available. + + A partial USB simulator, @@ -500,7 +509,7 @@ There's an ethernet gadget driver, which implements one of the most useful -Communications Device Class models. +Communications Device Class (CDC) models. One of the standards for cable modem interoperability even specifies the use of this ethernet model as one of two mandatory options. @@ -509,6 +518,11 @@ It provides access to a network where the gadget's CPU is one host, which could easily be bridging, routing, or firewalling access to other networks. +Since some hardware can't fully implement the CDC Ethernet +requirements, this driver also implements a "good parts only" +subset of CDC Ethernet. +(That subset doesn't advertise itself as CDC Ethernet, +to avoid creating problems.) There is also support for user mode gadget drivers, @@ -520,6 +534,17 @@ develop and debug user mode drivers, so that once a robust controller driver is available many applications for it won't require new kernel mode software. + + +There's a USB Mass Storage class driver, which provides +a different solution for interoperability with systems such +as MS-Windows and MacOS. +That File-backed Storage driver uses a +file or block device as backing store for a drive, +like the loop driver. +The USB host uses the BBB, CB, or CBI versions of the mass +storage class specification, using transparent SCSI commands +to access the data from the backing store. Support for other kinds of gadget is expected to diff -Nru a/Documentation/DocBook/writing_usb_driver.tmpl b/Documentation/DocBook/writing_usb_driver.tmpl --- a/Documentation/DocBook/writing_usb_driver.tmpl Mon Sep 22 00:30:21 2003 +++ b/Documentation/DocBook/writing_usb_driver.tmpl Mon Sep 22 00:30:21 2003 @@ -209,7 +209,7 @@ The driver now needs to verify that this device is actually one that it can accept. If so, it returns 0. If not, or if any error occurs during initialization, an errorcode - (such as -ENOMEM or -ENODEV) + (such as -ENOMEM or -ENODEV) is returned from the probe function. @@ -327,6 +327,7 @@ talk to the device, the release function in the driver is called. In this function we decrement our private usage count and wait for possible pending writes: + /* decrement our usage count for the device */ --skel->open_count; diff -Nru a/Documentation/as-iosched.txt b/Documentation/as-iosched.txt --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/as-iosched.txt Mon Sep 22 00:30:25 2003 @@ -0,0 +1,53 @@ +Anticipatory IO scheduler +------------------------- +Nick Piggin 13 Sep 2003 + +Attention! Database servers, especially those using "TCQ" disks should +investigate performance with the 'deadline' IO scheduler. Any system with high +disk performance requirements should do so, in fact. + +If you see unusual performance characteristics of your disk systems, or you +see big performance regressions versus the deadline scheduler, please email +me. Database users don't bother unless you're willing to test a lot of patches +from me ;) its a known issue. + + +Selecting IO schedulers +----------------------- +To choose IO schedulers at boot time, use the argument 'elevator=deadline'. +'noop' and 'as' (the default) are also available. IO schedulers are assigned +globally at boot time only presently. + + +Tuning the anticipatory IO scheduler +------------------------------------ +When using 'as', the anticipatory IO scheduler there are 5 parameters under +/sys/block/*/iosched/. All are units of milliseconds. + +The parameters are: +* read_expire + Controls how long until a request becomes "expired". It also controls the + interval between which expired requests are served, so set to 50, a request + might take anywhere < 100ms to be serviced _if_ it is the next on the + expired list. Obviously it won't make the disk go faster. The result + basically equates to the timeslice a single reader gets in the presence of + other IO. 100*((seek time / read_expire) + 1) is very roughly the % + streaming read efficiency your disk should get with multiple readers. + +* read_batch_expire + Controls how much time a batch of reads is given before pending writes are + served. Higher value is more efficient. This might be set below read_expire + if writes are to be given higher priority than reads, but reads are to be + as efficient as possible when there are no writes. Generally though, it + should be some multiple of read_expire. + +* write_expire, and +* write_batch_expire are equivalent to the above, for writes. + +* antic_expire + Controls the maximum amount of time we can anticipate a good read before + giving up. Many other factors may cause anticipation to be stopped early, + or some processes will not be "anticipated" at all. Should be a bit higher + for big seek time devices though not a linear correspondence - most + processes have only a few ms thinktime. + diff -Nru a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt --- a/Documentation/block/biodoc.txt Mon Sep 22 00:30:23 2003 +++ b/Documentation/block/biodoc.txt Mon Sep 22 00:30:23 2003 @@ -6,6 +6,8 @@ Suparna Bhattacharya Last Updated May 2, 2002 +September 2003: Updated I/O Scheduler portions + Nick Piggin Introduction: @@ -220,42 +222,8 @@ It also makes it possible to completely hide the implementation details of the i/o scheduler from block drivers. -New routines to be used instead of accessing the queue directly: - -elv_add_request: Should be called to queue a request -elv_next_request: Should be called to pull of the next request to be serviced - of the queue. It takes care of several things like skipping active requests, - invoking the command pre-builder etc. - -Some new plugins: -e->elevator_next_req_fn - Plugin called to extract the next request to service from the - queue -e->elevator_add_req_fn - Plugin called to add a new request to the queue -e->elevator_init_fn - Plugin called when initializing the queue -e->elevator_exit_fn - Plugin called when destrying the queue - -Elevator Linus and Elevator noop are the existing combinations that can be -directly used, but a driver can provide relevant callbacks, in case -it needs to do something different. - -Elevator noop only attempts to merge requests, but doesn't reorder (sort) -them. Even merging requires a linear scan today (except for the last merged -hint case discussed later) though, which takes take up some CPU cycles. - -[Note: Merging usually helps in general, because there's usually non-trivial -command overhead associated with setting up and starting a command. Sorting, -on the other hand, may not be relevant for intelligent devices that reorder -requests anyway] - -Elevator Linus attempts merging as well as sorting of requests on the queue. -The sorting happens via an insert scan whenever a request comes in. -Often some sorting still makes sense as the depth which most hardware can -handle may be less than the queue lengths during i/o loads. - +I/O scheduler wrappers are to be used instead of accessing the queue directly. +See section 4. The I/O scheduler for details. 1.2 Tuning Based on High level code capabilities @@ -317,32 +285,6 @@ requests. Some bits in the bi_rw flags field in the bio structure are intended to be used for this priority information. - Jens has an implementation of a simple deadline i/o scheduler that - makes a best effort attempt to start requests within a given expiry - time limit, along with trying to optimize disk seeks as in the current - elevator. It does this by sorting a request on two lists, one by - the deadline and one by the sector order. It employs a policy that - follows sector ordering as long as a deadline is not violated, and - tries to keep up with deadlines in so far as it can batch up to at - least a certain minimum number of sector ordered requests to reduce - arbitrary disk seeks. This implementation is constructed in a way - that makes it possible to support advanced compound i/o schedulers - as a combination of several low level schedulers with an overall - class-independent scheduler layered above. - -The current elevator scheme provides a latency bound over how many future -requests can "pass" (get placed before) a given request, and this bound -is determined by the request type (read, write). However, it doesn't -prioritize a new request over existing requests in the queue based on its -latency requirement. A new request could of course get serviced before -earlier requests based on the position on disk which it accesses. This is -due to the sort/merge in the basic elevator scan logic, but irrespective -of the request's own priority/latency value. Interestingly the elevator -sequence or the latency bound setting of the new request is unaffected by the -number of existing requests it has passed, i.e. doesn't depend on where -it is positioned in the queue, but only on the number of requests that pass -it in the future. - 1.3 Direct Access to Low level Device/Driver Capabilities (Bypass mode) (e.g Diagnostics, Systems Management) @@ -964,7 +906,74 @@ 4. The I/O scheduler +I/O schedulers are now per queue. They should be runtime switchable and modular +but aren't yet. Jens has most bits to do this, but the sysfs implementation is +missing. + +A block layer call to the i/o scheduler follows the convention elv_xxx(). This +calls elevator_xxx_fn in the elevator switch (drivers/block/elevator.c). Oh, +xxx and xxx might not match exactly, but use your imagination. If an elevator +doesn't implement a function, the switch does nothing or some minimal house +keeping work. + +4.1. I/O scheduler API + +The functions an elevator may implement are: (* are mandatory) +elevator_merge_fn called to query requests for merge with a bio + +elevator_merge_req_fn " " " with another request + +elevator_merged_fn called when a request in the scheduler has been + involved in a merge. It is used in the deadline + scheduler for example, to reposition the request + if its sorting order has changed. + +*elevator_next_req_fn returns the next scheduled request, or NULL + if there are none (or none are ready). + +*elevator_add_req_fn called to add a new request into the scheduler + +elevator_queue_empty_fn returns true if the merge queue is empty. + Drivers shouldn't use this, but rather check + if elv_next_request is NULL (without losing the + request if one exists!) + +elevator_remove_req_fn This is called when a driver claims ownership of + the target request - it now belongs to the + driver. It must not be modified or merged. + Drivers must not lose the request! A subsequent + call of elevator_next_req_fn must return the + _next_ request. + +elevator_requeue_req_fn called to add a request to the scheduler. This + is used when the request has alrnadebeen + returned by elv_next_request, but hasn't + completed. If this is not implemented then + elevator_add_req_fn is called instead. + +elevator_former_req_fn +elevator_latter_req_fn These return the request before or after the + one specified in disk sort order. Used by the + block layer to find merge possibilities. + +elevator_completed_req_fn called when a request is completed. This might + come about due to being merged with another or + when the device completes the request. + +elevator_may_queue_fn returns true if the scheduler wants to allow the + current context to queue a new request even if + it is over the queue limit. This must be used + very carefully!! + +elevator_set_req_fn +elevator_put_req_fn Must be used to allocate and free any elevator + specific storate for a request. + +elevator_init_fn +elevator_exit_fn Allocate and free any elevator specific storage + for a queue. +4.2 I/O scheduler implementation The generic i/o scheduler algorithm attempts to sort/merge/batch requests for optimal disk scan and request servicing performance (based on generic principles and device capabilities), optimized for: @@ -974,49 +983,58 @@ Characteristics: -i. Linked list for O(n) insert/merge (linear scan) right now - -This is just the same as it was in 2.4. - -There is however an added level of abstraction in the operations for adding -and extracting a request to/from the queue, which makes it possible to -try out alternative queue structures without changes to the users of the queue. -Some things like head-active are thus now handled within elv_next_request -making it possible to mark more than one request to be left alone. - -Aside: -1. The use of a merge hash was explored to reduce merge times and to make - elevator_noop close to noop by avoiding the scan for merge. However the - complexity and locking issues introduced wasn't desirable especially as - with multi-page bios the incidence of merges is expected to be lower. -2. The use of binomial/fibonacci heaps was explored to reduce the scan time; - however the idea was given up due to the complexity and added weight of - data structures, complications for handling barriers, as well as the - advantage of O(1) extraction and deletion (performance critical path) with - the existing list implementation vs heap based implementations. - -ii. Utilizes max_phys/hw_segments, and max_request_size parameters, to merge - within the limits that the device can handle (See 3.2.2) - -iii. Last merge hint - -In 2.5, information about the last merge is saved as a hint for the subsequent -request. This way, if sequential data is coming down the pipe, the hint can -be used to speed up merges without going through a scan. +i. Binary tree +AS and deadline i/o schedulers use red black binary trees for disk position +sorting and searching, and a fifo linked list for time-based searching. This +gives good scalability and good availablility of information. Requests are +almost always dispatched in disk sort order, so a cache is kept of the next +request in sort order to prevent binary tree lookups. + +This arrangement is not a generic block layer characteristic however, so +elevators may implement queues as they please. + +ii. Last merge hint +The last merge hint is part of the generic queue layer. I/O schedulers must do +some management on it. For the most part, the most important thing is to make +sure q->last_merge is cleared (set to NULL) when the request on it is no longer +a candidate for merging (for example if it has been sent to the driver). + +The last merge performed is cached as a hint for the subsequent request. If +sequential data is being submitted, the hint is used to perform merges without +any scanning. This is not sufficient when there are multiple processes doing +I/O though, so a "merge hash" is used by some schedulers. + +iii. Merge hash +AS and deadline use a hash table indexed by the last sector of a request. This +enables merging code to quickly look up "back merge" candidates, even when +multiple I/O streams are being performed at once on one disk. + +"Front merges", a new request being merged at the front of an existing request, +are far less common than "back merges" due to the nature of most I/O patterns. +Front merges are handled by the binary trees in AS and deadline schedulers. iv. Handling barrier cases +A request with flags REQ_HARDBARRIER or REQ_SOFTBARRIER must not be ordered +around. That is, they must be processed after all older requests, and before +any newer ones. This includes merges! + +In AS and deadline schedulers, barriers have the effect of flushing the reorder +queue. The performance cost of this will vary from nothing to a lot depending +on i/o patterns and device characteristics. Obviously they won't improve +performance, so their use should be kept to a minimum. + +v. Handling insertion position directives +A request may be inserted with a position directive. The directives are one of +ELEVATOR_INSERT_BACK, ELEVATOR_INSERT_FRONT, ELEVATOR_INSERT_SORT. + +ELEVATOR_INSERT_SORT is a general directive for non-barrier requests. +ELEVATOR_INSERT_BACK is used to insert a barrier to the back of the queue. +ELEVATOR_INSERT_FRONT is used to insert a barrier to the front of the queue, and +overrides the ordering requested by any previous barriers. In practice this is +harmless and required, because it is used for SCSI requeueing. This does not +require flushing the reorder queue, so does not impose a performance penalty. -As mentioned earlier, barrier support is new to 2.5, and the i/o scheduler -has been modified accordingly. - -When a barrier comes in, then since insert happens in the form of a -linear scan, starting from the end, it just needs to be ensured that this -and future scans stops barrier point. This is achieved by skipping the -entire merge/scan logic for a barrier request, so it gets placed at the -end of the queue, and specifying a zero latency for the request containing -the bio so that no future requests can pass it. - -v. Plugging the queue to batch requests in anticipation of opportunities for +vi. Plugging the queue to batch requests in anticipation of opportunities for merge/sort optimizations This is just the same as in 2.4 so far, though per-device unplugging @@ -1050,6 +1068,12 @@ concerns with just a single tq_disk flush approach. Something like blk_kick_queue() to unplug a specific queue (right away ?) or optionally, all queues, is in the plan. + +4.3 I/O contexts +I/O contexts provide a dynamically allocated per process data area. They may +be used in I/O schedulers, and in the block layer (could be used for IO statis, +priorities for example). See *io_context in drivers/block/ll_rw_blk.c, and +as-iosched.c for an example of usage in an i/o scheduler. 5. Scalability related changes diff -Nru a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt --- a/Documentation/kernel-parameters.txt Mon Sep 22 00:30:25 2003 +++ b/Documentation/kernel-parameters.txt Mon Sep 22 00:30:25 2003 @@ -393,7 +393,7 @@ See Documentation/ide.txt. idle= [HW] - Format: poll + Format: idle=poll or idle=halt in2000= [HW,SCSI] See header of drivers/scsi/in2000.c. @@ -787,6 +787,10 @@ See Documentation/ramdisk.txt. psmouse_noext [HW,MOUSE] Disable probing for PS2 mouse protocol extensions + + psmouse_resetafter= + [HW,MOUSE] Try to reset Synaptics Touchpad after so many + bad packets (0 = never). pss= [HW,OSS] Personal Sound System (ECHO ESC614) Format: ,,,,, diff -Nru a/Documentation/modules.txt b/Documentation/modules.txt --- a/Documentation/modules.txt Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,264 +0,0 @@ -This file describes the strategy for dynamically loadable modules -in the Linux kernel. This is not a technical description on -the internals of module, but mostly a sample of how to compile -and use modules. - -Note: You should ensure that the module-init-tools-X.Y.Z.tar.gz you -are using is the most up to date one for this kernel. Some older -modules packages aren't aware of some of the newer modular features -that the kernel now supports. The current required version is listed -in the file linux/Documentation/Changes. - -In the beginning... -------------------- - -Anyway, your first step is to compile the kernel, as explained in the -file linux/README. It generally goes like: - - make *config <= usually menuconfig or xconfig - make clean - make zImage or make zlilo - -In "make config", you select what you want to include in the "resident" -kernel and what features you want to have available as loadable modules. -You will generally select the minimal resident set that is needed to boot: - - The filesystem of your root partition - A scsi driver, but see below for a list of SCSI modules! - Normal hard drive support - Net support (CONFIG_NET) - TCP/IP support (CONFIG_INET), but no drivers! - - plus those things that you just can't live without... - -The set of modules is constantly increasing, and you will be able to select -the option "m" in "make menuconfig" for those features that the current kernel -can offer as loadable modules. - -You also have a possibility to create modules that are less dependent on -the kernel version. This option can be selected during "make *config", by -enabling CONFIG_MODVERSIONS, and is most useful on "stable" kernel versions, -such as the kernels from the 2. series. -If you have modules that are based on sources that are not included in -the official kernel sources, you will certainly like this option... -See below how to compile modules outside the official kernel. - -Here is a sample of the available modules included in the kernel sources: - - Most filesystems: minix, msdos, umsdos, sysv, isofs, hpfs, - smbfs, nfs - - Mid-level SCSI support (required by top and low level scsi drivers). - Most low-level SCSI drivers: (i.e. aha1542, in2000) - All SCSI high-level drivers: disk, tape, cdrom, generic. - - Most Ethernet drivers: (too many to list, please see the file - ./Documentation/networking/net-modules.txt) - - Most CDROM drivers: - aztcd: Aztech,Orchid,Okano,Wearnes - cm206: Philips/LMS CM206 - gscd: Goldstar GCDR-420 - mcd, mcdx: Mitsumi LU005, FX001 - optcd: Optics Storage Dolphin 8000AT - sjcd: Sanyo CDR-H94A - sbpcd: Matsushita/Panasonic CR52x, CR56x, CD200, - Longshine LCS-7260, TEAC CD-55A - sonycd535: Sony CDU-531/535, CDU-510/515 - - And a lot of misc modules, such as: - lp: line printer - binfmt_elf: elf loader - binfmt_java: java loader - isp16: cdrom interface - serial: the serial (tty) interface - -When you have made the kernel, you create the modules by doing: - - make modules - -This will compile all modules. A module is identified by the -extension .ko, for kernel object. -Now, after you have created all your modules, you should also do: - - make modules_install - -This will copy all newly made modules into subdirectories under -"/lib/modules/kernel_release/", where "kernel_release" is something -like 2.5.54, or whatever the current kernel version is. -Note: Installing modules may require root privileges. - -As soon as you have rebooted the newly made kernel, you can install -and remove modules at will with the utilities: "insmod" and "rmmod". -After reading the man-page for insmod, you will also know how easy -it is to configure a module when you do "insmod" (hint: symbol=value). - -Installing modules in a non-standard location ---------------------------------------------- -When the modules needs to be installed under another directory -the INSTALL_MOD_PATH can be used to prefix "/lib/modules" as seen -in the following example: - -make INSTALL_MOD_PATH=/frodo modules_install - -This will install the modules in the directory /frodo/lib/modules. -/frodo can be a NFS mounted filesystem on another machine, allowing -out-of-the-box support for installation on remote machines. - - -Compiling modules outside the official kernel ---------------------------------------------- -Often modules are developed outside the official kernel. -To keep up with changes in the build system the most portable way -to compile a module outside the kernel is to use the following command-line: - -make -C path/to/kernel/src SUBDIRS=$PWD modules - -This requires that a makefile exits made in accordance to -Documentation/kbuild/makefiles.txt. - -Nifty features: ---------------- - -You also have access to two utilities: "modprobe" and "depmod", where -modprobe is a "wrapper" for (or extension to) "insmod". -These utilities use (and maintain) a set of files that describe all the -modules that are available for the current kernel in the /lib/modules -hierarchy as well as their interdependencies. - -Using the modprobe utility, you can load any module like this: - - /sbin/modprobe module - -without paying much attention to which kernel you are running, or what -other modules this module depends on. - -With the help of the modprobe configuration file: "/etc/modules.conf" -you can tune the behaviour of modprobe in many ways, including an -automatic setting of insmod options for each module. -And, yes, there _are_ man-pages for all this... - -To use modprobe successfully, you generally place the following -command in your /etc/rc.d/rc.S script. (Read more about this in the -"rc.hints" file in the module utilities package, -"module-init-tools-x.y.z.tar.gz".) - - /sbin/depmod -a - -This computes the dependencies between the different modules. -Then if you do, for example - - /sbin/modprobe umsdos - -you will automatically load _both_ the msdos and umsdos modules, -since umsdos runs piggyback on msdos. - - -Using modinfo: --------------- - -Sometimes you need to know what parameters are accepted by a -module or you've found a bug and want to contact the maintainer. -Then modinfo comes in very handy. - -Every module (normally) contains the author/maintainer, -a description and a list of parameters. - -For example "modinfo -a eepro100" will return: - - Maintainer: Andrey V. Savochkin - -and "modinfo -d eepro100" will return a description: - - Intel i82557/i82558 PCI EtherExpressPro driver - -and more important "modinfo -p eepro100" will return this list: - - debug int - options int array (min = 1, max = 8) - full_duplex int array (min = 1, max = 8) - congenb int - txfifo int - rxfifo int - txdmacount int - rxdmacount int - rx_copybreak int - max_interrupt_work int - multicast_filter_limit int - - -The "ultimate" utility: ------------------------ - -OK, you have read all of the above, and feel amply impressed... -Now, we tell you to forget all about how to install and remove -loadable modules... -With the kerneld daemon, all of these chores will be taken care of -automatically. Just answer "Y" to CONFIG_KERNELD in "make config", -and make sure that /sbin/kerneld is started as soon as possible -after boot and that "/sbin/depmod -a" has been executed for the -current kernel. (Read more about this in the module utilities package.) - -Whenever a program wants the kernel to use a feature that is only -available as a loadable module, and if the kernel hasn't got the -module installed yet, the kernel will ask the kerneld daemon to take -care of the situation and make the best of it. - -This is what happens: - - - The kernel notices that a feature is requested that is not - resident in the kernel. - - The kernel sends a message to kerneld, with a symbolic - description of the requested feature. - - The kerneld daemon asks e.g. modprobe to load a module that - fits this symbolic description. - - modprobe looks into its internal "alias" translation table - to see if there is a match. This table can be reconfigured - and expanded by having "alias" lines in "/etc/modules.conf". - - insmod is then asked to insert the module(s) that modprobe - has decided that the kernel needs. Every module will be - configured according to the "options" lines in "/etc/modules.conf". - - modprobe exits and kerneld tells the kernel that the request - succeeded (or failed...) - - The kernel uses the freshly installed feature just as if it - had been configured into the kernel as a "resident" part. - -The icing of the cake is that when an automatically installed module -has been unused for a period of time (usually 1 minute), the module -will be automatically removed from the kernel as well. - -This makes the kernel use the minimal amount of memory at any given time, -making it available for more productive use than as just a placeholder for -unused code. - -Actually, this is only a side-effect from the _real_ benefit of kerneld: -You only have to create a minimal kernel, that is more or less independent -of the actual hardware setup. The setup of the "virtual" kernel is -instead controlled by a configuration file as well as the actual usage -pattern of the current machine and its kernel. -This should be good news for maintainers of multiple machines as well as -for maintainers of distributions. - -To use kerneld with the least amount of "hassle", you need modprobe from -a release that can be considered "recent" w.r.t. your kernel, and also -a configuration file for modprobe ("/etc/modules.conf"). -Since modprobe already knows about most modules, the minimal configuration -file could look something like this: - - alias scsi_hostadapter aha1542 # or whatever SCSI adapter you have - alias eth0 3c509 # or whatever net adapter you have - # you might need an "options" line for some net adapters: - options 3c509 io=0x300 irq=10 - # you might also need an "options" line for some other module: - options cdu31a cdu31a_port=0x1f88 sony_pas_init=1 - -You could add these lines as well, but they are only "cosmetic": - - alias net-pf-3 off # no ax25 module available (yet) - alias net-pf-4 off # if you don't use the ipx module - alias net-pf-5 off # if you don't use the appletalk module - - -Written by: - Jacques Gelinas - Bjorn Ekwall diff -Nru a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt --- a/Documentation/networking/bonding.txt Mon Sep 22 00:30:20 2003 +++ b/Documentation/networking/bonding.txt Mon Sep 22 00:30:20 2003 @@ -527,9 +527,9 @@ 1) Bonding information files ---------------------------- -The bonding driver information files reside in the /proc/net/bond* directories. +The bonding driver information files reside in the /proc/net/bonding directory. -Sample contents of /proc/net/bond0/info after the driver is loaded with +Sample contents of /proc/net/bonding/bond0 after the driver is loaded with parameters of mode=0 and miimon=1000 is shown below. Bonding Mode: load balancing (round-robin) diff -Nru a/Documentation/networking/ifenslave.c b/Documentation/networking/ifenslave.c --- a/Documentation/networking/ifenslave.c Mon Sep 22 00:30:19 2003 +++ b/Documentation/networking/ifenslave.c Mon Sep 22 00:30:19 2003 @@ -140,6 +140,7 @@ #include #include #include +#include #include #include #include diff -Nru a/Documentation/smp.tex b/Documentation/smp.tex --- a/Documentation/smp.tex Mon Sep 22 00:30:24 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,346 +0,0 @@ -From: michael@Physik.Uni-Dortmund.DE (Michael Dirkmann) - -thanks for your information. Attached is the tex-code of your -SMP-documentation : --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -\documentclass[]{article} -\parindent0.0cm -\parskip0.2cm - -\begin{document} - -\begin{center} -\LARGE \bf -An Implementation Of Multiprocessor Linux -\normalsize -\end{center} - -{ \it -This document describes the implementation of a simple SMP -Linux kernel extension and how to use this to develop SMP Linux kernels for -architectures other than the Intel MP v1.1 architecture for Pentium and 486 -processors.} - -\hfill Alan Cox, 1995 - - -The author wishes to thank Caldera Inc. ( http://www.caldera.com ) -whose donation of an ASUS dual Pentium board made this project possible, -and Thomas Radke, whose initial work on multiprocessor Linux formed -the backbone of this project. - -\section{Background: The Intel MP specification.} -Most IBM PC style multiprocessor motherboards combine Intel 486 or Pentium -processors and glue chipsets with a hardware/software specification. The -specification places much of the onus for hard work on the chipset and -hardware rather than the operating system. - -The Intel Pentium processors have a wide variety of inbuilt facilities for -supporting multiprocessing, including hardware cache coherency, built in -interprocessor interrupt handling and a set of atomic test and set, -exchange and similar operations. The cache coherency in particular makes the -operating system's job far easier. - -The specification defines a detailed configuration structure in ROM that -the boot up processor can read to find the full configuration of the -processors and buses. It also defines a procedure for starting up the -other processors. - - -\section{Mutual Exclusion Within A Single Processor Linux Kernel} -For any kernel to function in a sane manner it has to provide internal -locking and protection of its own tables to prevent two processes updating -them at once and for example allocating the same memory block. There are -two strategies for this within current Unix and Unixlike kernels. -Traditional Unix systems from the earliest of days use a scheme of 'Coarse -Grained Locking' where the entire kernel is protected by a small number of -locks only. Some modern systems use fine grained locking. Because fine -grained locking has more overhead it is normally used only on -multiprocessor kernels and real time kernels. In a real time kernel the -fine grained locking reduces the amount of time locks are held and reduces -the critical (to real time programming at least) latency times. - -Within the Linux kernel certain guarantees are made. No process running in -kernel mode will be pre-empted by another kernel mode process unless it -voluntarily sleeps. This ensures that blocks of kernel code are -effectively atomic with respect to other processes and greatly simplifies -many operations. Secondly interrupts may pre-empt a kernel running process, -but will always return to that process. A process in kernel mode may -disable interrupts on the processor and guarantee such an interruption will -not occur. The final guarantee is that an interrupt will not be pre-empted -by a kernel task. That is interrupts will run to completion or be -pre-empted by other interrupts only. - -The SMP kernel chooses to continue these basic guarantees in order to make -initial implementation and deployment easier. A single lock is maintained -across all processors. This lock is required to access the kernel space. -Any processor may hold it and once it is held may also re-enter the kernel -for interrupts and other services whenever it likes until the lock is -relinquished. This lock ensures that a kernel mode process will not be -pre-empted and ensures that blocking interrupts in kernel mode behaves -correctly. This is guaranteed because only the processor holding the lock -can be in kernel mode, only kernel mode processes can disable interrupts -and only the processor holding the lock may handle an interrupt. - -Such a choice is however poor for performance. In the longer term it is -necessary to move to finer grained parallelism in order to get the best -system performance. This can be done hierarchically by gradually refining -the locks to cover smaller areas. With the current kernel highly CPU bound -process sets perform well but I/O bound task sets can easily degenerate to -near single processor performance levels. This refinement will be needed to -get the best from Linux/SMP. - -\subsection{Changes To The Portable Kernel Components} -The kernel changes are split into generic SMP support changes and -architecture specific changes necessary to accommodate each different -processor type Linux is ported to. - - -\subsubsection{Initialisation} -The first problem with a multiprocessor kernel is starting the other -processors up. Linux/SMP defines that a single processor enters the normal -kernel entry point start\_kernel(). Other processors are assumed not to be -started or to have been captured elsewhere. The first processor begins the -normal Linux initialisation sequences and sets up paging, interrupts and -trap handlers. After it has obtained the processor information about the -boot CPU, the architecture specific function - - -{\tt \bf{void smp\_store\_cpu\_info(int processor\_id) }} - -is called to store any information about the processor into a per processor -array. This includes things like the bogomips speed ratings. - -Having completed the kernel initialisation the architecture specific -function - -{\tt \bf void smp\_boot\_cpus(void) } - -is called and is expected to start up each other processor and cause it to -enter start\_kernel() with its paging registers and other control -information correctly loaded. Each other processor skips the setup except -for calling the trap and irq initialisation functions that are needed on -some processors to set each CPU up correctly. These functions will -probably need to be modified in existing kernels to cope with this. - - -Each additional CPU then calls the architecture specific function - -{\tt \bf void smp\_callin(void)} - -which does any final setup and then spins the processor while the boot -up processor forks off enough idle threads for each processor. This is -necessary because the scheduler assumes there is always something to run. -Having generated these threads and forked init the architecture specific - -{\tt \bf void smp\_commence(void)} - -function is invoked. This does any final setup and indicates to the system -that multiprocessor mode is now active. All the processors spinning in the -smp\_callin() function are now released to run the idle processes, which -they will run when they have no real work to process. - - -\subsubsection{Scheduling} -The kernel scheduler implements a simple but very effective task -scheduler. The basic structure of this scheduler is unchanged in the -multiprocessor kernel. A processor field is added to each task, and this -maintains the number of the processor executing a given task, or a magic -constant (NO\_PROC\_ID) indicating the job is not allocated to a processor. - -Each processor executes the scheduler itself and will select the next task -to run from all runnable processes not allocated to a different processor. -The algorithm used by the selection is otherwise unchanged. This is -actually inadequate for the final system because there are advantages to -keeping a process on the same CPU, especially on processor boards with per -processor second level caches. - -Throughout the kernel the variable 'current' is used as a global for the -current process. In Linux/SMP this becomes a macro which expands to -current\_set[smp\_processor\_id()]. This enables almost the entire kernel to -be unaware of the array of running processors, but still allows the SMP -aware kernel modules to see all of the running processes. - -The fork system call is modified to generate multiple processes with a -process id of zero until the SMP kernel starts up properly. This is -necessary because process number 1 must be init, and it is desirable that -all the system threads are process 0. - -The final area within the scheduling of processes that does cause problems -is the fact the uniprocessor kernel hard codes tests for the idle threads -as task[0] and the init process as task[1]. Because there are multiple idle -threads it is necessary to replace these with tests that the process id is -0 and a search for process ID 1, respectively. - -\subsubsection{Memory Management} -The memory management core of the existing Linux system functions -adequately within the multiprocessor framework providing the locking is -used. Certain processor specific areas do need changing, in particular -invalidate() must invalidate the TLBs of all processors before it returns. - - -\subsubsection{Miscellaneous Functions} -The portable SMP code rests on a small set of functions and variables -that are provided by the processor specification functionality. These are - -{\tt \bf int smp\_processor\_id(void) } - -which returns the identity of the processor the call is executed upon. This -call is assumed to be valid at all times. This may mean additional tests -are needed during initialisation. - - -{\tt \bf int smp\_num\_cpus;} - -This is the number of processors in the system. \ - -{\tt \bf void smp\_message\_pass(int target, int msg, unsigned long data, - int wait)} - -This function passes messages between processors. At the moment it is not -sufficiently defined to sensibly document and needs cleaning up and further -work. Refer to the processor specific code documentation for more details. - - -\subsection{Architecture Specific Code For the Intel MP Port} -The architecture specific code for the Intel port splits fairly cleanly -into four sections. Firstly the initialisation code used to boot the -system, secondly the message handling and support code, thirdly the -interrupt and kernel syscall entry function handling and finally the -extensions to standard kernel facilities to cope with multiple processors. - -\subsubsection{Initialisation} -The Intel MP architecture captures all the processors except for a single -processor known as the 'boot processor' in the BIOS at boot time. Thus a -single processor enters the kernel bootup code. The first processor -executes the bootstrap code, loads and uncompresses the kernel. Having -unpacked the kernel it sets up the paging and control registers then enters -the C kernel startup. - -The assembler startup code for the kernel is modified so that it can be -used by the other processors to do the processor identification and various -other low level configurations but does not execute those parts of the -startup code that would damage the running system (such as clearing the BSS -segment). - -In the initialisation done by the first processor the arch/i386/mm/init -code is modified to scan the low page, top page and BIOS for intel MP -signature blocks. This is necessary because the MP signature blocks must -be read and processed before the kernel is allowed to allocate and destroy -the page at the top of low memory. Having established the number of -processors it reserves a set of pages to provide a stack come boot up area -for each processor in the system. These must be allocated at startup to -ensure they fall below the 1Mb boundary. - -Further processors are started up in smp\_boot\_cpus() by programming the -APIC controller registers and sending an inter-processor interrupt (IPI) to -the processor. This message causes the target processor to begin executing -code at the start of any page of memory within the lowest 1Mb, in 16bit -real mode. The kernel uses the single page it allocated for each processor -to use as stack. Before booting a given CPU the relocatable code from -trampoline.S and trampoline32.S is copied to the bottom of its stack page -and used as the target for the startup. - -The trampoline code calculates the desired stack base from the code -segment (since the code segment on startup is the bottom of the stack), - enters 32bit mode and jumps to the kernel entry assembler. This as -described above is modified to only execute the parts necessary for each -processor, and then to enter start\_kernel(). On entering the kernel the -processor initialises its trap and interrupt handlers before entering -smp\_callin(), where it reports its status and sets a flag that causes the -boot processor to continue and look for further processors. The processor -then spins until smp\_commence() is invoked. - -Having started each processor up the smp\_commence( ) function flips a -flag. Each processor spinning in smp\_callin() then loads the task register -with the task state segment (TSS) of its idle thread as is needed for task -switching. - -\subsubsection{Message Handling and Support Code} -The architecture specific code implements the smp\_processor\_id() function -by querying the APIC logical identity register. Because the APIC isn't -mapped into the kernel address space at boot, the initial value returned is -rigged by setting the APIC base pointer to point at a suitable constant. -Once the system starts doing the SMP setup (in smp\_boot\_cpus()), the APIC -is mapped with a vremap() call and the apic pointer is adjusted -appropriately. From then on the real APIC logical identity register is -read. - -Message passing is accomplished using a pair of IPIs on interrupt 13 -(unused by the 80486 FPUs in SMP mode) and interrupt 16. Two are used in -order to separate messages that cannot be processed until the receiver -obtains the kernel spinlock from messages that can be processed -immediately. In effect IRQ 13 is a fast IRQ handler that does not obtain -the locks, and cannot cause a reschedule, while IRQ 16 is a slow IRQ that -must acquire the kernel spinlocks and can cause a reschedule. This -interrupt is used for passing on slave timer messages from the processor -that receives the timer interrupt to the rest of the processors, so that -they can reschedule running tasks. - - -\subsubsection{Entry And Exit Code} -A single spinlock protects the entire kernel. The interrupt handlers, the -syscall entry code and the exception handlers all acquire the lock before -entering the kernel proper. When the processor is trying to acquire the -spinlock it spins continually on the lock with interrupts disabled. This -causes a specific deadlock problem. The lock owner may need to send an -invalidate request to the rest of the processors and wait for these to -complete before continuing. A processor spinning on the lock would not be -able to do this. Thus the loop of the spinlock tests and handles invalidate -requests. If the invalidate bit for the spinning CPU is set the processor -invalidates its TLB and atomically clears the bit. When the spinlock is -obtained that processor will take an IPI and in the IPI test the bit and -skip the invalidate as the bit is clear. - -One complexity of the spinlock is that a process running in kernel mode -can sleep voluntarily and be pre-empted. A switch from such a process to a -process executing in user space may reduce the lock count. To track this -the kernel uses a syscall\_count and a per process lock\_depth parameter to -track the kernel lock state. The switch\_to() function is modified in SMP -mode to adjust the lock appropriately. - -The final problem is the idle thread. In the single processor kernel the -idle thread executes 'hlt' instructions. This saves power and reduces the -running temperature of the processors when they are idle. However it means -the process spends all its time in kernel mode and would thus hold the -kernel spinlock. The SMP idle thread continually reschedules a new task and -returns to user mode. This is far from ideal and will be modified to use -'hlt' instructions and release the spinlock soon. Using 'hlt' is even more -beneficial on a multiprocessor system as it almost completely takes an idle -processor off the bus. - -Interrupts are distributed by an i82489 APIC. This chip is set up to work -as an emulation of the traditional PC interrupt controllers when the -machine boots (so that an Intel MP machine boots one CPU and PC -compatible). The kernel has all the relevant locks but does not yet -reprogram the 82489 to deliver interrupts to arbitrary processors as it -should. This requires further modification of the standard Linux interrupt -handling code, and is particularly messy as the interrupt handler behaviour -has to change as soon as the 82489 is switched into SMP mode. - - -\subsubsection{Extensions To Standard Facilities} -The kernel maintains a set of per processor control information such as -the speed of the processor for delay loops. These functions on the SMP -kernel look the values up in a per processor array that is set up from the -data generated at boot up by the smp\_store\_cpu\_info() function. This -includes other facts such as whether there is an FPU on the processor. The -current kernel does not handle floating point correctly, this requires some -changes to the techniques the single CPU kernel uses to minimise floating -point processor reloads. - -The highly useful atomic bit operations are prefixed with the 'lock' -prefix in the SMP kernel to maintain their atomic properties when used -outside of (and by) the spinlock and message code. Amongst other things -this is needed for the invalidate handler, as all CPU's will invalidate at -the same time without any locks. - -Interrupt 13 floating point error reporting is removed. This facility is -not usable on a multiprocessor board, nor relevant to the Intel MP -architecture which does not cover the 80386/80387 processor pair. \ - -The /proc filesystem support is changed so that the /proc/cpuinfo file -contains a column for each processor present. This information is extracted -from the data saved by smp\_store\_cpu\_info(). - -\end{document} diff -Nru a/Documentation/video4linux/Zoran b/Documentation/video4linux/Zoran --- a/Documentation/video4linux/Zoran Mon Sep 22 00:30:23 2003 +++ b/Documentation/video4linux/Zoran Mon Sep 22 00:30:23 2003 @@ -28,7 +28,7 @@ * Philips saa7111 TV decoder * Philips saa7185 TV encoder Drivers to use: videodev, i2c-core, i2c-algo-bit, - videocodec, saa7111, saa7185, zr36060, zoran + videocodec, saa7111, saa7185, zr36060, zr36067 Inputs/outputs: Composite and S-video Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) Card number: 7 @@ -39,7 +39,7 @@ * Brooktree bt819 TV decoder * Brooktree bt856 TV encoder Drivers to use: videodev, i2c-core, i2c-algo-bit, - videocodec, bt819, bt856, zr36060, zoran + videocodec, bt819, bt856, zr36060, zr36067 Inputs/outputs: Composite and S-video Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) Card number: 5 @@ -50,7 +50,7 @@ * Philips saa7114 TV decoder * Analog Devices adv7170 TV encoder Drivers to use: videodev, i2c-core, i2c-algo-bit, - videocodec, saa7114, adv7170, zr36060, zoran + videocodec, saa7114, adv7170, zr36060, zr36067 Inputs/outputs: Composite and S-video Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) Card number: 6 @@ -61,7 +61,7 @@ * Philips saa7110a TV decoder * Analog Devices adv7176 TV encoder Drivers to use: videodev, i2c-core, i2c-algo-bit, - videocodec, saa7110, adv7175, zr36060, zoran + videocodec, saa7110, adv7175, zr36060, zr36067 Inputs/outputs: Composite, S-video and Internal Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) Card number: 1 @@ -72,7 +72,7 @@ * Philips saa7110a TV decoder * Analog Devices adv7176 TV encoder Drivers to use: videodev, i2c-core, i2c-algo-bit, - videocodec, sa7110, adv7175, zr36060, zoran + videocodec, sa7110, adv7175, zr36060, zr36067 Inputs/outputs: Composite, S-video and Internal Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) Card number: 2 @@ -84,7 +84,7 @@ * Micronas vpx3220a TV decoder * mse3000 TV encoder or Analog Devices adv7176 TV encoder * Drivers to use: videodev, i2c-core, i2c-algo-bit, - videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zoran + videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zr36067 Inputs/outputs: Composite, S-video and Internal Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) Card number: 0 @@ -96,7 +96,7 @@ * Micronas vpx3225d/vpx3220a/vpx3216b TV decoder * Analog Devices adv7176 TV encoder Drivers to use: videodev, i2c-core, i2c-algo-bit, - videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zoran + videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zr36067 Inputs/outputs: Composite, S-video and Internal Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) Card number: 3 @@ -108,7 +108,7 @@ * Micronas vpx3225d/vpx3220a/vpx3216b TV decoder * Analog Devices adv7176 TV encoder Drivers to use: videodev, i2c-core, i2c-algo-bit, - videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36015, zoran + videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36015, zr36067 Inputs/outputs: Composite, S-video and Internal Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) Card number: 4 @@ -229,16 +229,16 @@ 2. How do I get this damn thing to work -Load zoran.o. If it can't autodetect your card, use the card=X insmod +Load zr36067.o. If it can't autodetect your card, use the card=X insmod option with X being the card number as given in the previous section. To have more than one card, use card=X1[,X2[,X3,[X4[..]]]] To automate this, add the following to your /etc/modules.conf: -options zoran card=X1[,X2[,X3[,X4[..]]]] -alias char-major-81-0 zoran +options zr36067 card=X1[,X2[,X3[,X4[..]]]] +alias char-major-81-0 zr36067 -One thing to keep in mind is that this doesn't load zoran.o itself yet. It +One thing to keep in mind is that this doesn't load zr36067.o itself yet. It just automates loading. If you start using xawtv, the device won't load on some systems, since you're trying to load modules as a user, which is not allowed ("permission denied"). A quick workaround is to add 'Load "v4l"' to @@ -500,7 +500,7 @@ 7. It hangs/crashes/fails/whatevers! Help! Make sure that the card has its own interrupts (see /proc/interrupts), check -the output of dmesg at high verbosity (load zoran.o/zr36067.o with debug=2, +the output of dmesg at high verbosity (load zr36067.o with debug=2, load all other modules with debug=1). Check that your mainboard is favorable (see question 2) and if not, test the card in another computer. Also see the notes given in question 3 and try lowering quality/buffersize/capturesize diff -Nru a/MAINTAINERS b/MAINTAINERS --- a/MAINTAINERS Mon Sep 22 00:30:22 2003 +++ b/MAINTAINERS Mon Sep 22 00:30:22 2003 @@ -169,8 +169,8 @@ S: Supported ACPI -P: Andy Grover -M: andrew.grover@intel.com +P: Len Brown +M: len.brown@intel.com L: acpi-devel@lists.sourceforge.net W: http://sf.net/projects/acpi/ S: Maintained @@ -212,7 +212,7 @@ ALCATEL SPEEDTOUCH USB DRIVER P: Duncan Sands -M: duncan.sands@wanadoo.fr +M: duncan.sands@free.fr L: linux-usb-users@lists.sourceforge.net L: linux-usb-devel@lists.sourceforge.net W: http://www.linux-usb.org/SpeedTouch/ @@ -328,18 +328,66 @@ L: linux-kernel@vger.kernel.org S: Maintained -BLUETOOTH SUBSYSTEM (BlueZ) +BLUETOOTH SUBSYSTEM P: Maxim Krasnyansky M: maxk@qualcomm.com W: http://bluez.sf.net S: Maintained -BLUETOOTH SUBSYSTEM (PC Card Drivers) +BLUETOOTH RFCOMM LAYER +P: Maxim Krasnyansky +M: maxk@qualcomm.com +W: http://bluez.sf.net +S: Maintained + +BLUETOOTH BNEP LAYER +P: Maxim Krasnyansky +M: maxk@qualcomm.com +W: http://bluez.sf.net +S: Maintained + +BLUETOOTH HCI USB DRIVER +P: Maxim Krasnyansky +M: maxk@qualcomm.com +W: http://bluez.sf.net +S: Maintained + +BLUETOOTH HCI UART DRIVER +P: Maxim Krasnyansky +M: maxk@qualcomm.com +W: http://bluez.sf.net +S: Maintained + +BLUETOOTH HCI DTL1 DRIVER +P: Marcel Holtmann +M: marcel@holtmann.org +W: http://www.holtmann.org/linux/bluetooth/ +S: Maintained + +BLUETOOTH HCI BLUECARD DRIVER P: Marcel Holtmann M: marcel@holtmann.org W: http://www.holtmann.org/linux/bluetooth/ S: Maintained +BLUETOOTH HCI BT3C DRIVER +P: Marcel Holtmann +M: marcel@holtmann.org +W: http://www.holtmann.org/linux/bluetooth/ +S: Maintained + +BLUETOOTH HCI BTUART DRIVER +P: Marcel Holtmann +M: marcel@holtmann.org +W: http://www.holtmann.org/linux/bluetooth/ +S: Maintained + +BLUETOOTH HCI VHCI DRIVER +P: Maxim Krasnyansky +M: maxk@qualcomm.com +W: http://bluez.sf.net +S: Maintained + BONDING DRIVER P: Chad Tindel M: ctindel@users.sourceforge.net @@ -1157,6 +1205,13 @@ M: anton@au.ibm.com W: http://linuxppc64.org L: linuxppc64-dev@lists.linuxppc.org +S: Supported + +LINUX SECURITY MODULE (LSM) FRAMEWORK +P: Chris Wright +M: chrisw@osdl.org +L: linux-security-module@wirex.com +W: http://lsm.immunix.org S: Supported LOGICAL DISK MANAGER SUPPORT (LDM, Windows 2000/XP Dynamic Disks) diff -Nru a/arch/alpha/Kconfig b/arch/alpha/Kconfig --- a/arch/alpha/Kconfig Mon Sep 22 00:30:23 2003 +++ b/arch/alpha/Kconfig Mon Sep 22 00:30:23 2003 @@ -484,6 +484,9 @@ Otherwise, say N. +config EISA_ALWAYS + def_bool EISA + config SMP bool "Symmetric multi-processing support" depends on ALPHA_SABLE || ALPHA_LYNX || ALPHA_RAWHIDE || ALPHA_DP264 || ALPHA_WILDFIRE || ALPHA_TITAN || ALPHA_GENERIC || ALPHA_SHARK || ALPHA_MARVEL diff -Nru a/arch/alpha/boot/misc.c b/arch/alpha/boot/misc.c --- a/arch/alpha/boot/misc.c Mon Sep 22 00:30:21 2003 +++ b/arch/alpha/boot/misc.c Mon Sep 22 00:30:21 2003 @@ -106,8 +106,8 @@ { void *p; - if (size <0) error("Malloc error\n"); - if (free_mem_ptr <= 0) error("Memory error\n"); + if (size <0) error("Malloc error"); + if (free_mem_ptr <= 0) error("Memory error"); free_mem_ptr = (free_mem_ptr + 3) & ~3; /* Align */ @@ -140,7 +140,7 @@ int fill_inbuf(void) { if (insize != 0) - error("ran out of input data\n"); + error("ran out of input data"); inbuf = input_data; insize = input_data_size; diff -Nru a/arch/arm/Kconfig b/arch/arm/Kconfig --- a/arch/arm/Kconfig Mon Sep 22 00:30:22 2003 +++ b/arch/arm/Kconfig Mon Sep 22 00:30:22 2003 @@ -213,198 +213,7 @@ depends on SA1111 default "9" -comment "Processor Type" - -# Figure out whether this system uses 26-bit or 32-bit CPUs. -config CPU_32 - bool - default y - -# Select CPU types depending on the architecture selected. This selects -# which CPUs we support in the kernel image, and the compiler instruction -# optimiser behaviour. -# ARM610 -config CPU_ARM610 - bool "Support ARM610 processor" - depends on ARCH_RPC - help - The ARM610 is the successor to the ARM3 processor - and was produced by VLSI Technology Inc. - - Say Y if you want support for the ARM610 processor. - Otherwise, say N. - -# ARM710 -config CPU_ARM710 - bool "Support ARM710 processor" if !ARCH_CLPS7500 && ARCH_RPC - default y if ARCH_CLPS7500 - help - A 32-bit RISC microprocessor based on the ARM7 processor core - designed by Advanced RISC Machines Ltd. The ARM710 is the - successor to the ARM610 processor. It was released in - July 1994 by VLSI Technology Inc. - - Say Y if you want support for the ARM710 processor. - Otherwise, say N. - -# ARM720T -config CPU_ARM720T - bool "Support ARM720T processor" if !ARCH_CLPS711X && !ARCH_L7200 && !ARCH_CDB89712 && ARCH_INTEGRATOR - default y if ARCH_CLPS711X || ARCH_L7200 || ARCH_CDB89712 - help - A 32-bit RISC processor with 8kByte Cache, Write Buffer and - MMU built around an ARM7TDMI core. - - Say Y if you want support for the ARM720T processor. - Otherwise, say N. - -# ARM920T -config CPU_ARM920T - bool "Support ARM920T processor" - depends on ARCH_INTEGRATOR - help - The ARM920T is licensed to be produced by numerous vendors, - and is used in the Maverick EP9312. More information at - . - - Say Y if you want support for the ARM920T processor. - Otherwise, say N. - -# ARM922T -config CPU_ARM922T - bool - depends on ARCH_CAMELOT - default y - help - The ARM922T is a version of the ARM920T, but with smaller - instruction and data caches. It is used in Altera's - Excalibur XA device family. - - Say Y if you want support for the ARM922T processor. - Otherwise, say N. - -# ARM926T -config CPU_ARM926T - bool "Support ARM926T processor" - depends on ARCH_INTEGRATOR - help - This is a variant of the ARM920. It has slightly different - instruction sequences for cache and TLB operations. Curiously, - there is no documentation on it at the ARM corporate website. - - Say Y if you want support for the ARM926T processor. - Otherwise, say N. - -# ARM1020 -config CPU_ARM1020 - bool "Support ARM1020 processor" - depends on ARCH_INTEGRATOR - help - The ARM1020 is the cached version of the ARM10 processor, - with an addition of a floating-point unit. - - Say Y if you want support for the ARM1020 processor. - Otherwise, say N. - -# SA110 -config CPU_SA110 - bool "Support StrongARM(R) SA-110 processor" if !ARCH_EBSA110 && !FOOTBRIDGE && !ARCH_TBOX && !ARCH_SHARK && !ARCH_NEXUSPCI && !ARCH_ANAKIN && ARCH_RPC - default y if ARCH_EBSA110 || FOOTBRIDGE || ARCH_TBOX || ARCH_SHARK || ARCH_NEXUSPCI || ARCH_ANAKIN - help - The Intel StrongARM(R) SA-110 is a 32-bit microprocessor and - is available at five speeds ranging from 100 MHz to 233 MHz. - More information is available at - . - - Say Y if you want support for the SA-110 processor. - Otherwise, say N. - -# SA1100 -config CPU_SA1100 - bool - depends on ARCH_SA1100 - default y - -# XScale -config CPU_XSCALE - bool - depends on ARCH_IOP3XX || ARCH_ADIFCC || ARCH_PXA - default y - -# Figure out what processor architecture version we should be using. -# This defines the compiler instruction set which depends on the machine type. -config CPU_32v3 - bool - depends on ARCH_RPC || ARCH_CLPS7500 - default y - -config CPU_32v4 - bool - depends on ARCH_EBSA110 || FOOTBRIDGE || ARCH_TBOX || ARCH_SHARK || ARCH_NEXUSPCI || ARCH_CLPS711X || ARCH_INTEGRATOR || ARCH_SA1100 || ARCH_L7200 || ARCH_ANAKIN || ARCH_CAMELOT - default y - -config CPU_32v5 - bool - depends on ARCH_IOP3XX || ARCH_ADIFCC || ARCH_PXA - default y - -comment "Processor Features" - -config ARM_THUMB - bool "Support Thumb instructions (EXPERIMENTAL)" - depends on (CPU_ARM720T || CPU_ARM920T || CPU_ARM922T || CPU_ARM926T || CPU_ARM1020 || CPU_XSCALE) && EXPERIMENTAL - help - Say Y if you want to have kernel support for ARM Thumb instructions, - fault handlers, and system calls. - - The Thumb instruction set is a compressed form of the standard ARM - instruction set resulting in smaller binaries at the expense of - slightly less efficient code. - - If you don't know what this all is, saying Y is a safe choice. - -config CPU_BIG_ENDIAN - bool "Build big-endian kernel" - depends on ARCH_SUPPORTS_BIG_ENDIAN - help - Say Y if you plan on running a kernel in big-endian mode. - Note that your board must be properly built and your board - port must properly enable and big-endian related features - of your chipset/board/processor. - -config CPU_ICACHE_DISABLE - bool "Disable I-Cache" - depends on CPU_ARM920T || CPU_ARM922T || CPU_ARM926T || CPU_ARM1020 - help - Say Y here to disable the processor instruction cache. Unless - you have a reason not to or are unsure, say N. - -config CPU_DCACHE_DISABLE - bool "Disable D-Cache" - depends on CPU_ARM920T || CPU_ARM922T || CPU_ARM926T || CPU_ARM1020 - help - Say Y here to disable the processor data cache. Unless - you have a reason not to or are unsure, say N. - -config CPU_DCACHE_WRITETHROUGH - bool "Force write through D-cache" - depends on (CPU_ARM920T || CPU_ARM922T || CPU_ARM926T || CPU_ARM1020) && !CPU_DISABLE_DCACHE - help - Say Y here to use the data cache in writethough mode. Unless you - specifically require this or are unsure, say N. - -config CPU_CACHE_ROUND_ROBIN - bool "Round robin I and D cache replacement algorithm" - depends on (CPU_ARM926T || CPU_ARM1020) && (!CPU_ICACHE_DISABLE || !CPU_DCACHE_DISABLE) - help - Say Y here to use the predictable round-robin cache replacement - policy. Unless you specifically require this or are unsure, say N. - -config CPU_BPREDICT_DISABLE - bool "Disable branch prediction" - depends on CPU_ARM1020 - help - Say Y here to disable branch prediction. If unsure, say N. +source arch/arm/mm/Kconfig # bool 'Use XScale PMU as timer source' CONFIG_XSCALE_PMU_TIMER config XSCALE_PMU @@ -841,11 +650,6 @@ source "drivers/input/Kconfig" source "drivers/char/Kconfig" - -config KBDMOUSE - bool - depends on ARCH_ACORN && BUSMOUSE=y && !ARCH_RPC - default y source "drivers/media/Kconfig" diff -Nru a/arch/arm/Makefile b/arch/arm/Makefile --- a/arch/arm/Makefile Mon Sep 22 00:30:20 2003 +++ b/arch/arm/Makefile Mon Sep 22 00:30:20 2003 @@ -172,22 +172,6 @@ i:; $(Q)$(MAKE) $(build)=$(boot) install zi:; $(Q)$(MAKE) $(build)=$(boot) zinstall -# -# Configuration targets. Use these to select a -# configuration for your architecture -%_config: - @( \ - CFG=$(@:_config=); \ - if [ -f arch/arm/def-configs/$$CFG ]; then \ - [ -f .config ] && mv -f .config .config.old; \ - cp arch/arm/def-configs/$$CFG .config; \ - echo "*** Default configuration for $$CFG installed"; \ - echo "*** Next, you may run 'make oldconfig'"; \ - else \ - echo "$$CFG does not exist"; \ - fi; \ - ) - arch/$(ARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \ include/asm-arm/.arch \ include/config/MARKER diff -Nru a/arch/arm/boot/bootp/init.S b/arch/arm/boot/bootp/init.S --- a/arch/arm/boot/bootp/init.S Mon Sep 22 00:30:22 2003 +++ b/arch/arm/boot/bootp/init.S Mon Sep 22 00:30:22 2003 @@ -1,86 +1,69 @@ /* * linux/arch/arm/boot/bootp/init.S * - * Copyright (C) 2000-2002 Russell King + * Copyright (C) 2000-2003 Russell King. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * - * Header file for splitting kernel + initrd. Note that we pass + * "Header" file for splitting kernel + initrd. Note that we pass * r0 through to r3 straight through. + * + * This demonstrates how to append code to the start of the kernel + * zImage, and boot the kernel without copying it around. This + * example would be simpler; if we didn't have an object of unknown + * size immediately following the kernel, we could build this into + * a binary blob, and concatenate the zImage using the cat command. */ .section .start,#alloc,#execinstr .type _start, #function .globl _start -_start: adr r10, initdata - ldr r11, initdata - sub r11, r10, r11 @ work out exec offset - b splitify - .size _entry,. - _entry - - .type initdata, #object -initdata: .word initdata @ compiled address of this - .size initdata,. - initdata - -splitify: adr r13, data - ldmia r13!, {r4-r6} @ move the initrd - add r4, r4, r11 @ correction - bl move + +_start: adr r12, kernel_start @ offset of kernel zImage + ldr r4, [r12, #0x2c] @ length of zImage + adr r13, data + add r4, r4, r12 @ end of zImage, start of initrd + ldmia r13!, {r5-r6} @ r5 = dest, r6 = length + bl move @ move the initrd /* - * Setup the initrd parameters to pass to the kernel. This can either be - * passed in via a param_struct or a tag list. We spot the param_struct - * method by looking at the first word; this should either indicate a page - * size of 4K, 16K or 32K. + * Setup the initrd parameters to pass to the kernel. This can only be + * passed in via the tagged list. */ - ldmia r13, {r4-r8} @ get size and addr of initrd - @ r5 = ATAG_INITRD - @ r6 = initrd start - @ r7 = initrd end - @ r8 = param_struct address - ldr r9, [r8, #0] @ no param struct? - teq r9, #0x1000 @ 4K? - teqne r9, #0x4000 @ 16K? - teqne r9, #0x8000 @ 32K? - beq param_struct - - ldr r9, [r8, #4] @ get first tag - teq r9, r4 - bne taglist @ ok, we have a tag list + ldmia r13, {r5-r9} @ get size and addr of initrd + @ r5 = ATAG_CORE + @ r6 = ATAG_INITRD2 + @ r7 = initrd start + @ r8 = initrd end + @ r9 = param_struct address + ldr r10, [r9, #4] @ get first tag + teq r10, r5 @ is it ATAG_CORE? /* - * We didn't find a valid tag list - create one. + * If we didn't find a valid tag list, create a dummy ATAG_CORE entry. */ - str r4, [r8, #4] - mov r4, #8 - str r4, [r8, #0] - mov r4, #0 - str r4, [r8, #8] + movne r10, #0 @ terminator + movne r4, #2 @ Size of this entry (2 words) + stmneia r8, {r4, r5, r10} @ Size, ATAG_CORE, terminator /* * find the end of the tag list, and then add an INITRD tag on the end. * If there is already an INITRD tag, then we ignore it; the last INITRD * tag takes precidence. */ -taglist: ldr r9, [r8, #0] @ tag length - teq r9, #0 @ last tag? - addne r8, r8, r9 +taglist: ldr r10, [r9, #0] @ tag length + teq r10, #0 @ last tag (zero length)? + addne r9, r9, r10, lsl #2 bne taglist - mov r4, #16 @ length of initrd tag - mov r9, #0 @ end of tag list terminator - stmia r8, {r4, r5, r6, r7, r9} - adr r12, kernel_start + mov r5, #4 @ Size of initrd tag (4 words) + stmia r9, {r5, r6, r7, r8, r10} mov pc, r12 @ call kernel /* - * We found a param struct. Modify the param struct for the initrd + * Move the block of memory length r6 from address r4 to address r5 */ -param_struct: add r8, r8, #16*4 - stmia r8, {r6,r7} @ save in param_struct - mov pc, r12 @ call kernel - move: ldmia r4!, {r7 - r10} @ move 32-bytes at a time stmia r5!, {r7 - r10} ldmia r4!, {r7 - r10} @@ -89,15 +72,18 @@ bcs move mov pc, lr -data: .word initrd_start - .word initrd_addr - .word initrd_len + .size _start, . - _start + + .type data,#object +data: .word initrd_addr @ destination initrd address + .word initrd_len @ initrd size .word 0x54410001 @ r4 = ATAG_CORE - .word 0x54420005 @ r5 = ATAG_INITRD + .word 0x54420005 @ r5 = ATAG_INITRD2 .word initrd_addr @ r6 .word initrd_len @ r7 .word params @ r8 + .size data, . - _data .type initrd_start,#object diff -Nru a/arch/arm/boot/compressed/head-sa1100.S b/arch/arm/boot/compressed/head-sa1100.S --- a/arch/arm/boot/compressed/head-sa1100.S Mon Sep 22 00:30:18 2003 +++ b/arch/arm/boot/compressed/head-sa1100.S Mon Sep 22 00:30:18 2003 @@ -34,6 +34,10 @@ @ REVISIT_PFS168: Temporary until firmware updated to use assigned machine number mov r7, #MACH_TYPE_PFS168 #endif +#ifdef CONFIG_SA1100_SIMPAD + @ UNTIL we've something like an open bootldr + mov r7, #MACH_TYPE_SIMPAD @should be 87 +#endif #ifdef CONFIG_SA1100_VICTOR teq r7, #MACH_TYPE_VICTOR diff -Nru a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c --- a/arch/arm/boot/compressed/misc.c Mon Sep 22 00:30:23 2003 +++ b/arch/arm/boot/compressed/misc.c Mon Sep 22 00:30:23 2003 @@ -191,8 +191,8 @@ { void *p; - if (size <0) error("Malloc error\n"); - if (free_mem_ptr <= 0) error("Memory error\n"); + if (size <0) error("Malloc error"); + if (free_mem_ptr <= 0) error("Memory error"); free_mem_ptr = (free_mem_ptr + 3) & ~3; /* Align */ @@ -236,7 +236,7 @@ int fill_inbuf(void) { if (insize != 0) - error("ran out of input data\n"); + error("ran out of input data"); inbuf = input_data; insize = &input_data_end[0] - &input_data[0]; diff -Nru a/arch/arm/common/sa1111-pcipool.c b/arch/arm/common/sa1111-pcipool.c --- a/arch/arm/common/sa1111-pcipool.c Mon Sep 22 00:30:23 2003 +++ b/arch/arm/common/sa1111-pcipool.c Mon Sep 22 00:30:23 2003 @@ -51,7 +51,7 @@ static inline const char *slot_name(const struct pci_pool *pool) { - const struct pci_dev *pdev = pool->dev; + struct pci_dev *pdev = (struct pci_dev *)pool->dev; if (pdev == 0) return "[0]"; diff -Nru a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c --- a/arch/arm/common/sa1111.c Mon Sep 22 00:30:24 2003 +++ b/arch/arm/common/sa1111.c Mon Sep 22 00:30:24 2003 @@ -14,6 +14,7 @@ * All initialization functions provided here are intended to be called * from machine specific code with proper arguments when required. */ +#include #include #include #include @@ -54,87 +55,74 @@ */ static struct sa1111 *g_sa1111; -static struct sa1111_dev usb_dev = { - .skpcr_mask = SKPCR_UCLKEN, - .devid = SA1111_DEVID_USB, - .irq = { - IRQ_USBPWR, - IRQ_HCIM, - IRQ_HCIBUFFACC, - IRQ_HCIRMTWKP, - IRQ_NHCIMFCIR, - IRQ_USB_PORT_RESUME - }, +struct sa1111_dev_info { + unsigned long offset; + unsigned long skpcr_mask; + unsigned int devid; + unsigned int irq[6]; }; -static struct sa1111_dev sac_dev = { - .skpcr_mask = SKPCR_I2SCLKEN | SKPCR_L3CLKEN, - .devid = SA1111_DEVID_SAC, - .irq = { - AUDXMTDMADONEA, - AUDXMTDMADONEB, - AUDRCVDMADONEA, - AUDRCVDMADONEB +static struct sa1111_dev_info sa1111_devices[] = { + { + .offset = SA1111_USB, + .skpcr_mask = SKPCR_UCLKEN, + .devid = SA1111_DEVID_USB, + .irq = { + IRQ_USBPWR, + IRQ_HCIM, + IRQ_HCIBUFFACC, + IRQ_HCIRMTWKP, + IRQ_NHCIMFCIR, + IRQ_USB_PORT_RESUME + }, }, -}; - -static struct sa1111_dev ssp_dev = { - .skpcr_mask = SKPCR_SCLKEN, - .devid = SA1111_DEVID_SSP, -}; - -static struct sa1111_dev kbd_dev = { - .skpcr_mask = SKPCR_PTCLKEN, - .devid = SA1111_DEVID_PS2, - .irq = { - IRQ_TPRXINT, - IRQ_TPTXINT + { + .offset = 0x0600, + .skpcr_mask = SKPCR_I2SCLKEN | SKPCR_L3CLKEN, + .devid = SA1111_DEVID_SAC, + .irq = { + AUDXMTDMADONEA, + AUDXMTDMADONEB, + AUDRCVDMADONEA, + AUDRCVDMADONEB + }, }, -}; - -static struct sa1111_dev mse_dev = { - .skpcr_mask = SKPCR_PMCLKEN, - .devid = SA1111_DEVID_PS2, - .irq = { - IRQ_MSRXINT, - IRQ_MSTXINT + { + .offset = 0x0800, + .skpcr_mask = SKPCR_SCLKEN, + .devid = SA1111_DEVID_SSP, }, -}; - -static struct sa1111_dev int_dev = { - .skpcr_mask = 0, - .devid = SA1111_DEVID_INT, -}; - -static struct sa1111_dev pcmcia_dev = { - .skpcr_mask = 0, - .devid = SA1111_DEVID_PCMCIA, - .irq = { - IRQ_S0_READY_NINT, - IRQ_S0_CD_VALID, - IRQ_S0_BVD1_STSCHG, - IRQ_S1_READY_NINT, - IRQ_S1_CD_VALID, - IRQ_S1_BVD1_STSCHG, + { + .offset = SA1111_KBD, + .skpcr_mask = SKPCR_PTCLKEN, + .devid = SA1111_DEVID_PS2, + .irq = { + IRQ_TPRXINT, + IRQ_TPTXINT + }, + }, + { + .offset = SA1111_MSE, + .skpcr_mask = SKPCR_PMCLKEN, + .devid = SA1111_DEVID_PS2, + .irq = { + IRQ_MSRXINT, + IRQ_MSTXINT + }, + }, + { + .offset = 0x1800, + .skpcr_mask = 0, + .devid = SA1111_DEVID_PCMCIA, + .irq = { + IRQ_S0_READY_NINT, + IRQ_S0_CD_VALID, + IRQ_S0_BVD1_STSCHG, + IRQ_S1_READY_NINT, + IRQ_S1_CD_VALID, + IRQ_S1_BVD1_STSCHG, + }, }, -}; - -static struct sa1111_dev *devs[] = { - &usb_dev, - &sac_dev, - &ssp_dev, - &kbd_dev, - &mse_dev, - &pcmcia_dev, -}; - -static unsigned int dev_offset[] = { - SA1111_USB, - 0x0600, - 0x0800, - SA1111_KBD, - SA1111_MSE, - 0x1800, }; /* @@ -372,44 +360,45 @@ .wake = sa1111_wake_highirq, }; -static void __init sa1111_init_irq(struct sa1111_dev *sadev) +static void sa1111_setup_irq(struct sa1111 *sachip) { + void *irqbase = sachip->base + SA1111_INTC; unsigned int irq; /* * We're guaranteed that this region hasn't been taken. */ - request_mem_region(sadev->res.start, 512, "irqs"); + request_mem_region(sachip->phys + SA1111_INTC, 512, "irq"); /* disable all IRQs */ - sa1111_writel(0, sadev->mapbase + SA1111_INTEN0); - sa1111_writel(0, sadev->mapbase + SA1111_INTEN1); - sa1111_writel(0, sadev->mapbase + SA1111_WAKEEN0); - sa1111_writel(0, sadev->mapbase + SA1111_WAKEEN1); + sa1111_writel(0, irqbase + SA1111_INTEN0); + sa1111_writel(0, irqbase + SA1111_INTEN1); + sa1111_writel(0, irqbase + SA1111_WAKEEN0); + sa1111_writel(0, irqbase + SA1111_WAKEEN1); /* * detect on rising edge. Note: Feb 2001 Errata for SA1111 * specifies that S0ReadyInt and S1ReadyInt should be '1'. */ - sa1111_writel(0, sadev->mapbase + SA1111_INTPOL0); + sa1111_writel(0, irqbase + SA1111_INTPOL0); sa1111_writel(SA1111_IRQMASK_HI(IRQ_S0_READY_NINT) | SA1111_IRQMASK_HI(IRQ_S1_READY_NINT), - sadev->mapbase + SA1111_INTPOL1); + irqbase + SA1111_INTPOL1); /* clear all IRQs */ - sa1111_writel(~0, sadev->mapbase + SA1111_INTSTATCLR0); - sa1111_writel(~0, sadev->mapbase + SA1111_INTSTATCLR1); + sa1111_writel(~0, irqbase + SA1111_INTSTATCLR0); + sa1111_writel(~0, irqbase + SA1111_INTSTATCLR1); for (irq = IRQ_GPAIN0; irq <= SSPROR; irq++) { set_irq_chip(irq, &sa1111_low_chip); - set_irq_chipdata(irq, sadev->mapbase); + set_irq_chipdata(irq, irqbase); set_irq_handler(irq, do_edge_IRQ); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); } for (irq = AUDXMTDMADONEA; irq <= IRQ_S1_BVD1_STSCHG; irq++) { set_irq_chip(irq, &sa1111_high_chip); - set_irq_chipdata(irq, sadev->mapbase); + set_irq_chipdata(irq, irqbase); set_irq_handler(irq, do_edge_IRQ); set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); } @@ -417,9 +406,9 @@ /* * Register SA1111 interrupt */ - set_irq_type(sadev->irq[0], IRQT_RISING); - set_irq_data(sadev->irq[0], sadev->mapbase); - set_irq_chained_handler(sadev->irq[0], sa1111_irq_handler); + set_irq_type(sachip->irq, IRQT_RISING); + set_irq_data(sachip->irq, irqbase); + set_irq_chained_handler(sachip->irq, sa1111_irq_handler); } /* @@ -529,37 +518,64 @@ #endif -static void +static void sa1111_dev_release(struct device *_dev) +{ + struct sa1111_dev *dev = SA1111_DEV(_dev); + + release_resource(&dev->res); + kfree(dev); +} + +static int sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent, - struct sa1111_dev *sadev, unsigned int offset) + struct sa1111_dev_info *info) { - snprintf(sadev->dev.bus_id, sizeof(sadev->dev.bus_id), - "%4.4x", offset); + struct sa1111_dev *dev; + int ret; + + dev = kmalloc(sizeof(struct sa1111_dev), GFP_KERNEL); + if (!dev) { + ret = -ENOMEM; + goto out; + } + memset(dev, 0, sizeof(struct sa1111_dev)); + + snprintf(dev->dev.bus_id, sizeof(dev->dev.bus_id), + "%4.4lx", info->offset); /* * If the parent device has a DMA mask associated with it, * propagate it down to the children. */ if (sachip->dev->dma_mask) { - sadev->dma_mask = *sachip->dev->dma_mask; - sadev->dev.dma_mask = &sadev->dma_mask; + dev->dma_mask = *sachip->dev->dma_mask; + dev->dev.dma_mask = &dev->dma_mask; } - sadev->dev.parent = sachip->dev; - sadev->dev.bus = &sa1111_bus_type; - sadev->res.start = sachip->phys + offset; - sadev->res.end = sadev->res.start + 511; - sadev->res.name = sadev->dev.bus_id; - sadev->res.flags = IORESOURCE_MEM; - sadev->mapbase = sachip->base + offset; + dev->devid = info->devid; + dev->dev.parent = sachip->dev; + dev->dev.bus = &sa1111_bus_type; + dev->dev.release = sa1111_dev_release; + dev->res.start = sachip->phys + info->offset; + dev->res.end = dev->res.start + 511; + dev->res.name = dev->dev.bus_id; + dev->res.flags = IORESOURCE_MEM; + dev->mapbase = sachip->base + info->offset; - if (request_resource(parent, &sadev->res)) { + ret = request_resource(parent, &dev->res); + if (ret) { printk("SA1111: failed to allocate resource for %s\n", - sadev->res.name); - return; + dev->res.name); + goto out; } - device_register(&sadev->dev); + ret = device_register(&dev->dev); + if (ret) { + release_resource(&dev->res); + out: + kfree(dev); + } + return ret; } /** @@ -655,11 +671,8 @@ * The interrupt controller must be initialised before any * other device to ensure that the interrupts are available. */ - if (irq != NO_IRQ) { - int_dev.irq[0] = irq; - sa1111_init_one_child(sachip, mem, &int_dev, SA1111_INTC); - sa1111_init_irq(&int_dev); - } + if (sachip->irq != NO_IRQ) + sa1111_setup_irq(sachip); g_sa1111 = sachip; @@ -670,9 +683,9 @@ else has_devs &= ~(1 << 1); - for (i = 0; i < ARRAY_SIZE(devs); i++) + for (i = 0; i < ARRAY_SIZE(sa1111_devices); i++) if (has_devs & (1 << i)) - sa1111_init_one_child(sachip, mem, devs[i], dev_offset[i]); + sa1111_init_one_child(sachip, mem, &sa1111_devices[i]); return 0; @@ -685,11 +698,26 @@ static void __sa1111_remove(struct sa1111 *sachip) { - int i; + struct list_head *l, *n; + void *irqbase = sachip->base + SA1111_INTC; + + list_for_each_safe(l, n, &sachip->dev->children) { + struct device *d = list_to_dev(l); - for (i = 0; i < ARRAY_SIZE(devs); i++) { - put_device(&devs[i]->dev); - release_resource(&devs[i]->res); + device_unregister(d); + } + + /* disable all IRQs */ + sa1111_writel(0, irqbase + SA1111_INTEN0); + sa1111_writel(0, irqbase + SA1111_INTEN1); + sa1111_writel(0, irqbase + SA1111_WAKEEN0); + sa1111_writel(0, irqbase + SA1111_WAKEEN1); + + if (sachip->irq != NO_IRQ) { + set_irq_chained_handler(sachip->irq, NULL); + set_irq_data(sachip->irq, NULL); + + release_mem_region(sachip->phys + SA1111_INTC, 512); } iounmap(sachip->base); @@ -958,17 +986,6 @@ }; /* - * Register the SA1111 driver with LDM. - */ -static int sa1111_driver_init(void) -{ - driver_register(&sa1111_device_driver); - return 0; -} - -arch_initcall(sa1111_driver_init); - -/* * Get the parent device driver (us) structure * from a child function device */ @@ -1180,13 +1197,6 @@ .resume = sa1111_bus_resume, }; -static int sa1111_rab_bus_init(void) -{ - return bus_register(&sa1111_bus_type); -} - -postcore_initcall(sa1111_rab_bus_init); - int sa1111_driver_register(struct sa1111_driver *driver) { driver->drv.probe = sa1111_bus_probe; @@ -1199,6 +1209,26 @@ { driver_unregister(&driver->drv); } + +static int __init sa1111_init(void) +{ + int ret = bus_register(&sa1111_bus_type); + if (ret == 0) + driver_register(&sa1111_device_driver); + return ret; +} + +static void __exit sa1111_exit(void) +{ + driver_unregister(&sa1111_device_driver); + bus_unregister(&sa1111_bus_type); +} + +module_init(sa1111_init); +module_exit(sa1111_exit); + +MODULE_DESCRIPTION("Intel Corporation SA1111 core driver"); +MODULE_LICENSE("GPL"); EXPORT_SYMBOL(sa1111_check_dma_bug); EXPORT_SYMBOL(sa1111_select_audio_mode); diff -Nru a/arch/arm/configs/a5k_defconfig b/arch/arm/configs/a5k_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/a5k_defconfig Mon Sep 22 00:30:20 2003 @@ -0,0 +1,526 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_SBUS is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_OBSOLETE=y + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +CONFIG_ARCH_ARCA5K=y +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +CONFIG_ARCH_A5K=y + +# +# Footbridge Implementations +# + +# +# SA11x0 Implementations +# +CONFIG_ARCH_ACORN=y +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +# CONFIG_CPU_32 is not set +CONFIG_CPU_26=y +# CONFIG_PAGESIZE_16 is not set + +# +# Processor Type +# +# CONFIG_DISCONTIGMEM is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_NWFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +# CONFIG_BINFMT_ELF is not set +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set + +# +# Parallel port support +# +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +# CONFIG_PARPORT_PC_FIFO is not set +CONFIG_PARPORT_PC_SUPERIO=y +# CONFIG_PARPORT_ARC is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +# CONFIG_PARPORT_1284 is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +CONFIG_BLK_DEV_FD=y +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Acorn-specific block devices +# +# CONFIG_BLK_DEV_FD1772 is not set +CONFIG_BLK_DEV_MFM=m +CONFIG_BLK_DEV_MFM_AUTODETECT=y + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_ARM_ETHER1=y +CONFIG_ARM_ETHER3=y +# CONFIG_ARM_ETHERH is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDECS is not set +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +CONFIG_BLK_DEV_IDE_ICSIDE=y +# CONFIG_BLK_DEV_IDEDMA_ICS is not set +# CONFIG_IDEDMA_ICS_AUTO is not set +# CONFIG_BLK_DEV_IDEDMA is not set +# CONFIG_BLK_DEV_IDE_RAPIDE is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +# CONFIG_ATOMWIDE_SERIAL is not set +# CONFIG_DUALSP_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_UNIX98_PTYS is not set +# CONFIG_PRINTER is not set +# CONFIG_PPDEV is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_PHILIPSPAR is not set +# CONFIG_I2C_ELV is not set +# CONFIG_I2C_VELLEMAN is not set +# CONFIG_I2C_ALGOPCF is not set +CONFIG_I2C_CHARDEV=y + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=y +# CONFIG_PSMOUSE is not set +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=y +CONFIG_ADFS_FS=y +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +# CONFIG_DEVPTS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_MOUNT_SUBDIR is not set +# CONFIG_NCPFS_NDS_DOMAINS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_ACORN_PARTITION=y +CONFIG_ACORN_PARTITION_ADFS=y +CONFIG_ACORN_PARTITION_ICS=y +CONFIG_ACORN_PARTITION_POWERTEC=y +CONFIG_ACORN_PARTITION_RISCIX=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FB_ACORN=y +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_MFB=y +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +CONFIG_FBCON_FONTS=y +# CONFIG_FONT_8x8 is not set +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +CONFIG_FONT_ACORN_8x8=y + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_NO_PGT_CACHE=y +CONFIG_DEBUG_LL=y diff -Nru a/arch/arm/configs/adi_evb_defconfig b/arch/arm/configs/adi_evb_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/adi_evb_defconfig Mon Sep 22 00:30:21 2003 @@ -0,0 +1,681 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +CONFIG_ARCH_ADIFCC=y +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP310 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +CONFIG_ARCH_ADI_EVB=y +CONFIG_XSCALE_PMU_TIMER=y +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +# CONFIG_CPU_32v4 is not set +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +CONFIG_CPU_32v4=y +CONFIG_CPU_XSCALE=y +CONFIG_ARM_THUMB=y +# CONFIG_XSCALE_TOOLS is not set +CONFIG_XSCALE_WRITE_ALLOC=y +CONFIG_XSCALE_PMU=y +CONFIG_ARM_THUMB=y +# CONFIG_DISCONTIGMEM is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/mtdblock1 mem=32M initrd=0xc0800000,3M" +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +# CONFIG_MTD_SA1100 is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +CONFIG_MTD_ADI_EVB=y +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +# CONFIG_PACKET is not set +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_ARM_AM79C961A is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +# CONFIG_IDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +# CONFIG_VT is not set +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_CMS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_FREEVXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +# CONFIG_ZLIB_FS_INFLATE is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +# CONFIG_MSDOS_PARTITION is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set + +# +# USB support +# +# CONFIG_USB is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_ID75 is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_SLAB=y +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/adsbitsy_defconfig b/arch/arm/configs/adsbitsy_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/adsbitsy_defconfig Mon Sep 22 00:30:23 2003 @@ -0,0 +1,664 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +CONFIG_SA1100_ADSBITSY=y +CONFIG_SA1111=y +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y +# CONFIG_CPU_BIG_ENDIAN is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_CPU_FREQ is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="ip=off mem=32M root=/dev/ram ramdisk=8192 initrd=0xc0800000,4M" +# CONFIG_PFS168_CMDLINE is not set +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +CONFIG_INPUT=y +# CONFIG_INPUT_KEYBDEV is not set +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=38400 +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 +CONFIG_UCB1200=y +CONFIG_TOUCHSCREEN_UCB1200=y +CONFIG_AUDIO_UCB1200=y +CONFIG_ADC_UCB1200=y +# CONFIG_TOUCHSCREEN_BITSY is not set +# CONFIG_PROFILER is not set +# CONFIG_PFS168_SPI is not set +# CONFIG_PFS168_DTMF is not set +# CONFIG_PFS168_MISC is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_SA1100_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +CONFIG_CRAMFS=y +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_E1355 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +# CONFIG_FONT_8x8 is not set +CONFIG_FONT_8x16=y +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=y +CONFIG_USB_OHCI_NOPCI=y +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_HID is not set +# CONFIG_USB_KBD is not set +CONFIG_USB_MOUSE=y +# CONFIG_USB_WACOM is not set +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_PWC is not set +# CONFIG_USB_SE401 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_DABUSB is not set +# CONFIG_USB_PLUSB is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_NET1080 is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_RIO500 is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/anakin_defconfig b/arch/arm/configs/anakin_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/anakin_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,632 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +CONFIG_NET=y +# CONFIG_SYSVIPC is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_SYSCTL is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +CONFIG_ARCH_ANAKIN=y +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP310 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_STORK is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_H3600_SLEEVE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_FORTUNET is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_32v5 is not set +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +CONFIG_CPU_SA110=y +# CONFIG_CPU_SA1100 is not set +# CONFIG_CPU_XSCALE is not set +# CONFIG_XSCALE_PMU is not set + +# +# Processor Features +# + +# +# General setup +# +# CONFIG_DISCONTIGMEM is not set +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_FIQ is not set +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZBOOT_ROM_BSS=0 +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_PREEMPT is not set +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="root=/dev/ram initrd=0xc0800000,4M" +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +# CONFIG_NETDEVICES is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=y + +# +# IrDA protocols +# +# CONFIG_IRLAN is not set +# CONFIG_IRCOMM is not set +# CONFIG_IRDA_ULTRA is not set + +# +# IrDA options +# +# CONFIG_IRDA_CACHE_LAST_LSAP is not set +# CONFIG_IRDA_FAST_RR is not set +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=y +# CONFIG_IRPORT_SIR is not set + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# FIR device drivers +# +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set + +# +# ATA/IDE/MFM/RLL support +# +# CONFIG_IDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN_BOOL is not set + +# +# Input device support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +# CONFIG_GAMEPORT_NS558 is not set +# CONFIG_GAMEPORT_L4 is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_GAMEPORT_PCIGAME is not set +# CONFIG_GAMEPORT_FM801 is not set +# CONFIG_GAMEPORT_CS461x is not set +# CONFIG_SERIO is not set +# CONFIG_SERIO_SERPORT is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_RSA is not set + +# +# Non-8250 serial port support +# + +# +# ARM Serial drivers +# +# CONFIG_ATOMWIDE_SERIAL is not set +# CONFIG_DUALSP_SERIAL is not set +CONFIG_SERIAL_ANAKIN=y +CONFIG_SERIAL_ANAKIN_CONSOLE=y +CONFIG_ANAKIN_DEFAULT_BAUDRATE=115200 +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_TOUCHSCREEN_ANAKIN=y +# CONFIG_UNIX98_PTYS is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_QFMT_V1 is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_QIFACE_COMPAT is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +# CONFIG_DEVPTS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_NFSD_TCP is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_EXPORTFS is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +CONFIG_FB_ANAKIN=y +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_SA1100 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set + +# +# Console Switches +# +# CONFIG_SWITCHES is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_KERNEL is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_ERRORS is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +# CONFIG_ZLIB_INFLATE is not set +# CONFIG_ZLIB_DEFLATE is not set diff -Nru a/arch/arm/configs/assabet_defconfig b/arch/arm/configs/assabet_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/assabet_defconfig Mon Sep 22 00:30:20 2003 @@ -0,0 +1,966 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +CONFIG_SA1100_ASSABET=y +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_USB=m +CONFIG_SA1100_USB_NETLINK=m +# CONFIG_SA1100_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +# CONFIG_ARM_THUMB is not set +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_PCI is not set +CONFIG_ISA=y +# CONFIG_ISA_DMA is not set +CONFIG_CPU_FREQ=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="mem=32M console=ttySA0,38400n8 initrd=0xc0800000,3M root=/dev/ram" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_REDBOOT_PARTS=y +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_CFI_B1 is not set +# CONFIG_MTD_CFI_B2 is not set +CONFIG_MTD_CFI_B4=y +# CONFIG_MTD_CFI_I1 is not set +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_ARM_AM79C961A is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +# CONFIG_IRNET is not set +# CONFIG_IRCOMM is not set +# CONFIG_IRDA_ULTRA is not set +# CONFIG_IRDA_OPTIONS is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +# CONFIG_IRTTY_SIR is not set +# CONFIG_IRPORT_SIR is not set + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# FIR device drivers +# +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set +CONFIG_SA1100_FIR=m + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=38400 +CONFIG_SERIAL_8250=m +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +CONFIG_L3=y +CONFIG_L3_ALGOBIT=y +CONFIG_L3_BIT_SA1100_GPIO=y + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set +CONFIG_BIT_SA1100_GPIO=y + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=m +# CONFIG_MWAVE is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_CMS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_CRAMFS is not set +CONFIG_TMPFS=y +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_FREEVXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +# CONFIG_ZLIB_FS_INFLATE is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +CONFIG_SOUND_SA1100=y +CONFIG_SOUND_UDA1341=y +CONFIG_SOUND_ASSABET_UDA1341=y +# CONFIG_SOUND_H3600_UDA1341 is not set +# CONFIG_SOUND_PANGOLIN_UDA1341 is not set +# CONFIG_SOUND_SA1111_UDA1341 is not set +# CONFIG_SOUND_SA1100SSP is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Multimedia Capabilities Port drivers +# +CONFIG_MCP=y +CONFIG_MCP_SA1100=y +CONFIG_MCP_UCB1200=y +CONFIG_MCP_UCB1200_AUDIO=m +CONFIG_MCP_UCB1200_TS=y + +# +# Console Switches +# +CONFIG_SWITCHES=y +CONFIG_SWITCHES_SA1100=y +CONFIG_SWITCHES_UCB1X00=y + +# +# USB support +# +# CONFIG_USB is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_ID75 is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/badge4_defconfig b/arch/arm/configs/badge4_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/badge4_defconfig Mon Sep 22 00:30:23 2003 @@ -0,0 +1,1162 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +CONFIG_NET=y +# CONFIG_SYSVIPC is not set +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP310 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +CONFIG_SA1100_BADGE4=y +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_STORK is not set +CONFIG_SA1111=y +CONFIG_FORCE_MAX_ZONEORDER=9 +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_H3600_SLEEVE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_FORTUNET is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +# CONFIG_XSCALE_PMU is not set +# CONFIG_ARM_THUMB is not set +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_PCI is not set +CONFIG_ISA=y +# CONFIG_ISA_DMA is not set +# CONFIG_FIQ is not set +CONFIG_CPU_FREQ=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +CONFIG_PCMCIA_PROBE=y +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +CONFIG_FPE_FASTFPE=m +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +# CONFIG_PM is not set +# CONFIG_PREEMPT is not set +# CONFIG_APM is not set +CONFIG_ARTHUR=m +CONFIG_CMDLINE="init=/linuxrc root=/dev/mtdblock3" +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +CONFIG_PARPORT=m +# CONFIG_PARPORT_PC is not set +# CONFIG_PARPORT_ARC is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +# CONFIG_PARPORT_GSC is not set +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +# CONFIG_PARPORT_1284 is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +CONFIG_MTD_DEBUG=y +CONFIG_MTD_DEBUG_VERBOSE=0 +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_CFI_B1 is not set +CONFIG_MTD_CFI_B2=y +# CONFIG_MTD_CFI_B4 is not set +CONFIG_MTD_CFI_I1=y +# CONFIG_MTD_CFI_I2 is not set +# CONFIG_MTD_CFI_I4 is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +CONFIG_MTD_RAM=y +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_2PARTS_IPAQ is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_EPXA10DB is not set +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_NBD=m +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set + +# +# Wireless ISA/PCI cards support +# +# CONFIG_WAVELAN is not set +# CONFIG_AIRO is not set +CONFIG_HERMES=y + +# +# Wireless Pcmcia/Cardbus cards support +# +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_HERMES=y +CONFIG_AIRO_CS=m +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=y +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=y +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_AXNET=m +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +CONFIG_NET_PCMCIA_RADIO=y +CONFIG_PCMCIA_RAYCS=m +# CONFIG_AIRONET4500_CS is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=y + +# +# IrDA protocols +# +CONFIG_IRLAN=y +# CONFIG_IRNET is not set +CONFIG_IRCOMM=y +CONFIG_IRDA_ULTRA=y + +# +# IrDA options +# +# CONFIG_IRDA_CACHE_LAST_LSAP is not set +# CONFIG_IRDA_FAST_RR is not set +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +# CONFIG_IRTTY_SIR is not set +# CONFIG_IRPORT_SIR is not set + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# FIR device drivers +# +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set +CONFIG_SA1100_FIR=y + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_IDECD=m +# CONFIG_BLK_DEV_IDETAPE is not set +CONFIG_BLK_DEV_IDEFLOPPY=m +CONFIG_BLK_DEV_IDESCSI=m + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +CONFIG_SCSI=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_SD_EXTRA_DEVS=40 +CONFIG_CHR_DEV_ST=m +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=y + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +# CONFIG_SCSI_7000FASST is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +# CONFIG_SCSI_AHA1740 is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_DMA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +# CONFIG_SCSI_NCR53C406A is not set +# CONFIG_SCSI_NCR53C7xx is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PCI2000 is not set +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +# CONFIG_SCSI_PCMCIA is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input device support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +# CONFIG_GAMEPORT_NS558 is not set +# CONFIG_GAMEPORT_L4 is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_GAMEPORT_PCIGAME is not set +# CONFIG_GAMEPORT_FM801 is not set +# CONFIG_GAMEPORT_CS461x is not set +# CONFIG_SERIO is not set +# CONFIG_SERIO_SERPORT is not set + +# +# Character devices +# +# CONFIG_VT is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=115200 +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_ATOMWIDE_SERIAL is not set +# CONFIG_DUALSP_SERIAL is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_RSA is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +# CONFIG_PRINTER is not set +# CONFIG_PPDEV is not set + +# +# I2C support +# +CONFIG_I2C=m +CONFIG_I2C_ALGOBIT=m +# CONFIG_I2C_PHILIPSPAR is not set +CONFIG_I2C_ELV=m +CONFIG_I2C_VELLEMAN=m +# CONFIG_I2C_BIT_SA1100_GPIO is not set +CONFIG_I2C_ALGOPCF=m +CONFIG_I2C_ELEKTOR=m +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_PROC=m + +# +# L3 serial bus support +# +CONFIG_L3=y +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set + +# +# Other L3 adapters +# +CONFIG_L3_SA1111=y +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_SOFT_WATCHDOG=m +# CONFIG_WDT is not set +# CONFIG_WDTPCI is not set +# CONFIG_PCWATCHDOG is not set +# CONFIG_ACQUIRE_WDT is not set +# CONFIG_ADVANTECH_WDT is not set +# CONFIG_21285_WATCHDOG is not set +# CONFIG_977_WATCHDOG is not set +CONFIG_SA1100_WATCHDOG=m +# CONFIG_EUROTECH_WDT is not set +# CONFIG_IB700_WDT is not set +# CONFIG_I810_TCO is not set +# CONFIG_MIXCOMWD is not set +# CONFIG_60XX_WDT is not set +# CONFIG_W83877F_WDT is not set +# CONFIG_MACHZ_WDT is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +CONFIG_RTC=m +CONFIG_SA1100_RTC=m +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# + +# +# Multimedia devices +# +CONFIG_VIDEO_DEV=y + +# +# Video For Linux +# +CONFIG_VIDEO_PROC_FS=y +# CONFIG_I2C_PARPORT is not set + +# +# Video Adapters +# +# CONFIG_VIDEO_BT848 is not set +# CONFIG_VIDEO_PMS is not set +# CONFIG_VIDEO_BWQCAM is not set +# CONFIG_VIDEO_CQCAM is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_SAA5249 is not set +# CONFIG_TUNER_3036 is not set +# CONFIG_VIDEO_STRADIS is not set +# CONFIG_VIDEO_ZORAN is not set +# CONFIG_VIDEO_ZORAN_BUZ is not set +# CONFIG_VIDEO_ZORAN_DC10 is not set +# CONFIG_VIDEO_ZORAN_LML33 is not set +# CONFIG_VIDEO_ZR36120 is not set +# CONFIG_VIDEO_MEYE is not set +# CONFIG_VIDEO_CYBERPRO is not set + +# +# Radio Adapters +# +# CONFIG_RADIO_CADET is not set +# CONFIG_RADIO_RTRACK is not set +# CONFIG_RADIO_RTRACK2 is not set +# CONFIG_RADIO_AZTECH is not set +# CONFIG_RADIO_GEMTEK is not set +# CONFIG_RADIO_GEMTEK_PCI is not set +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_MAESTRO is not set +# CONFIG_RADIO_MIROPCM20 is not set +# CONFIG_RADIO_MIROPCM20_RDS is not set +# CONFIG_RADIO_SF16FMI is not set +# CONFIG_RADIO_TERRATEC is not set +# CONFIG_RADIO_TRUST is not set +# CONFIG_RADIO_TYPHOON is not set +# CONFIG_RADIO_ZOLTRIX is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=m +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_CRAMFS=m +CONFIG_TMPFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +CONFIG_MINIX_FS=m +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +CONFIG_DEVFS_FS=y +CONFIG_DEVFS_MOUNT=y +# CONFIG_DEVFS_DEBUG is not set +# CONFIG_DEVPTS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=m +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Sound +# +CONFIG_SOUND=y + +# +# Open Sound System +# +CONFIG_SOUND_PRIME=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +CONFIG_SOUND_SA1100=y +CONFIG_SOUND_UDA1341=y +# CONFIG_SOUND_ASSABET_UDA1341 is not set +# CONFIG_SOUND_H3600_UDA1341 is not set +# CONFIG_SOUND_PANGOLIN_UDA1341 is not set +CONFIG_SOUND_SA1111_UDA1341=y +# CONFIG_SOUND_STORK_UDA1341 is not set +# CONFIG_SOUND_SA1100SSP is not set +# CONFIG_SOUND_STORK_AC97 is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Advanced Linux Sound Architecture +# +# CONFIG_SND is not set + +# +# Multimedia Capabilities Port drivers +# +CONFIG_MCP=y +CONFIG_MCP_SA1100=y +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set + +# +# USB support +# +CONFIG_USB=y +CONFIG_USB_DEBUG=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_EHCI_HCD is not set +# CONFIG_USB_OHCI_HCD is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +CONFIG_USB_OHCI_SA1111=y + +# +# USB Device Class drivers +# +CONFIG_USB_AUDIO=y +CONFIG_USB_BLUETOOTH=m +CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE_DEBUG=y +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# +CONFIG_USB_DC2XX=m +CONFIG_USB_MDC800=m +CONFIG_USB_SCANNER=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_HPUSBSCSI=m + +# +# USB Multimedia devices +# +CONFIG_USB_IBMCAM=m +CONFIG_USB_OV511=m +CONFIG_USB_PWC=m +CONFIG_USB_SE401=m +# CONFIG_USB_STV680 is not set +CONFIG_USB_VICAM=m +CONFIG_USB_DSBR=m +CONFIG_USB_DABUSB=m +CONFIG_USB_KONICAWC=m + +# +# USB Network adaptors +# +CONFIG_USB_PEGASUS=m +CONFIG_USB_KAWETH=m +CONFIG_USB_CATC=m +CONFIG_USB_CDCETHER=m +CONFIG_USB_USBNET=m + +# +# USB port drivers +# +CONFIG_USB_USS720=m + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +# CONFIG_USB_SERIAL_IPAQ is not set +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +CONFIG_USB_SERIAL_MCT_U232=m +# CONFIG_USB_SERIAL_KLSI is not set +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OMNINET=m + +# +# USB Miscellaneous drivers +# +CONFIG_USB_RIO500=m +# CONFIG_USB_AUERSWALD is not set + +# +# Bluetooth support +# +CONFIG_BT=m +CONFIG_BT_L2CAP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIUSB=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIVHCI=m + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y diff -Nru a/arch/arm/configs/brutus_defconfig b/arch/arm/configs/brutus_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/brutus_defconfig Mon Sep 22 00:30:23 2003 @@ -0,0 +1,296 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_SBUS is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +CONFIG_SA1100_BRUTUS=y +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_THINCLIENT is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +CONFIG_ANGELBOOT=y +# CONFIG_SA1100_FREQUENCY_SCALE is not set +# CONFIG_SA1100_VOLTAGE_SCALE is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +CONFIG_CPU_32v4=y +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_PC_KEYMAP=y + +# +# General setup +# +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set +# CONFIG_NET is not set +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_NWFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="mem=4M@0xc0000000 mem=4M@0xc8000000 mem=4M@0xd0000000 mem=4M@0xd8000000 keepinitrd root=/dev/ram ramdisk=8192 initrd=0xd8000000,3M" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_LVM is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_DEV_FLASH is not set + +# +# ATA/IDE/MFM/RLL support +# +# CONFIG_IDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +# CONFIG_TOUCHSCREEN_UCB1200 is not set +# CONFIG_TOUCHSCREEN_BITSY is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set + +# +# Video For Linux +# +# CONFIG_VIDEO_DEV is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_NCPFS_NLS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_NLS is not set + +# +# Console drivers +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_INFO=y +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_LL is not set diff -Nru a/arch/arm/configs/cerfcube_defconfig b/arch/arm/configs/cerfcube_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/cerfcube_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,873 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +CONFIG_SA1100_CERF=y +# CONFIG_SA1100_CERF_FLASH_8MB is not set +CONFIG_SA1100_CERF_FLASH_16MB=y +# CONFIG_SA1100_CERF_FLASH_32MB is not set +# CONFIG_SA1100_CERF_CPLD is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_USB=y +CONFIG_SA1100_USB_NETLINK=y +CONFIG_SA1100_USB_CHAR=y + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +# CONFIG_ARM_THUMB is not set +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_CPU_FREQ=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="console=ttySA0 root=/dev/mtdblock3 rw mem=32M" +# CONFIG_PFS168_CMDLINE is not set +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_SUN_UFLASH is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_TQM8XXL is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_NETSC520 is not set +# CONFIG_MTD_SBC_GXX is not set +# CONFIG_MTD_ELAN_104NC is not set +# CONFIG_MTD_DBOX2 is not set +# CONFIG_MTD_CSTM_MIPS_IXX is not set +# CONFIG_MTD_CFI_FLAGADM is not set +# CONFIG_MTD_SOLUTIONENGINE is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +# CONFIG_MTD_OCELOT is not set +# CONFIG_MTD_L440GX is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_LART is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +# CONFIG_EL1 is not set +# CONFIG_EL2 is not set +# CONFIG_ELPLUS is not set +# CONFIG_EL16 is not set +# CONFIG_ELMC is not set +# CONFIG_ELMC_II is not set +CONFIG_CERF_CS8900A=y +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=9600 +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 +# CONFIG_UCB1200 is not set +# CONFIG_TOUCHSCREEN_UCB1200 is not set +# CONFIG_AUDIO_UCB1200 is not set +# CONFIG_ADC_UCB1200 is not set +# CONFIG_TOUCHSCREEN_H3600 is not set +# CONFIG_PROFILER is not set +# CONFIG_PFS168_SPI is not set +# CONFIG_PFS168_DTMF is not set +# CONFIG_PFS168_MISC is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set +# CONFIG_BIT_SA1100_UCB1200 is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set + +# +# L3 driver support +# +# CONFIG_L3_DRV_UDA1341 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +CONFIG_AUTOFS_FS=y +CONFIG_AUTOFS4_FS=y +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_CMS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_UMSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_FREEVXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +CONFIG_ROMFS_FS=y +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +# CONFIG_FB is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# +# CONFIG_USB_DABUSB is not set + +# +# USB Network adaptors +# +# CONFIG_USB_PLUSB is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# Miscellaneous USB drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_ID75 is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/cerfpda_defconfig b/arch/arm/configs/cerfpda_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/cerfpda_defconfig Mon Sep 22 00:30:19 2003 @@ -0,0 +1,967 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +CONFIG_SA1100_CERF=y +# CONFIG_SA1100_CERF_FLASH_8MB is not set +# CONFIG_SA1100_CERF_FLASH_16MB is not set +CONFIG_SA1100_CERF_FLASH_32MB=y +CONFIG_SA1100_CERF_CPLD=y +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_USB=y +CONFIG_SA1100_USB_NETLINK=y +CONFIG_SA1100_USB_CHAR=y + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +# CONFIG_ARM_THUMB is not set +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_CPU_FREQ=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="console=ttySA0 cpufreq_max=221200 root=/dev/mtdblock3 rw mem=64M" +# CONFIG_PFS168_CMDLINE is not set +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_CFI_B1 is not set +# CONFIG_MTD_CFI_B2 is not set +CONFIG_MTD_CFI_B4=y +# CONFIG_MTD_CFI_I1 is not set +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_SUN_UFLASH is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_TQM8XXL is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_NETSC520 is not set +# CONFIG_MTD_SBC_GXX is not set +# CONFIG_MTD_ELAN_104NC is not set +# CONFIG_MTD_DBOX2 is not set +# CONFIG_MTD_CSTM_MIPS_IXX is not set +# CONFIG_MTD_CFI_FLAGADM is not set +# CONFIG_MTD_SOLUTIONENGINE is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +# CONFIG_MTD_OCELOT is not set +# CONFIG_MTD_L440GX is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_LART is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +# CONFIG_EL1 is not set +# CONFIG_EL2 is not set +# CONFIG_ELPLUS is not set +# CONFIG_EL16 is not set +# CONFIG_ELMC is not set +# CONFIG_ELMC_II is not set +CONFIG_CERF_CS8900A=y +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +CONFIG_STRIP=m +CONFIG_WAVELAN=m +CONFIG_ARLAN=m +CONFIG_AIRONET4500=m +CONFIG_AIRONET4500_NONCS=m +# CONFIG_AIRONET4500_PNP is not set +# CONFIG_AIRONET4500_PCI is not set +# CONFIG_AIRONET4500_ISA is not set +# CONFIG_AIRONET4500_I365 is not set +CONFIG_AIRONET4500_PROC=m + +# +# Wireless Pcmcia cards support +# +CONFIG_PCMCIA_HERMES=m +CONFIG_AIRO_CS=m +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +CONFIG_NET_PCMCIA_RADIO=y +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_AIRONET4500_CS=m + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=38400 +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 +CONFIG_UCB1200=y +CONFIG_TOUCHSCREEN_UCB1200=y +CONFIG_CERF_TS_MANUAL=y +CONFIG_CERF_TS_MAXX="924" +CONFIG_CERF_TS_MAXY="920" +CONFIG_CERF_TS_MINX="57" +CONFIG_CERF_TS_MINY="52" +CONFIG_CERF_TS_RESX="240" +CONFIG_CERF_TS_RESY="320" +# CONFIG_AUDIO_UCB1200 is not set +# CONFIG_ADC_UCB1200 is not set +# CONFIG_TOUCHSCREEN_H3600 is not set +# CONFIG_PROFILER is not set +# CONFIG_PFS168_SPI is not set +# CONFIG_PFS168_DTMF is not set +# CONFIG_PFS168_MISC is not set +CONFIG_SA1100_CERF_KEYPAD=y + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set +# CONFIG_BIT_SA1100_UCB1200 is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set + +# +# L3 driver support +# +# CONFIG_L3_DRV_UDA1341 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_CMS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_UMSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_FREEVXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +CONFIG_ROMFS_FS=y +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +CONFIG_CERF_LCD_38_A=y +# CONFIG_CERF_LCD_57_A is not set +# CONFIG_CERF_LCD_72_A is not set +CONFIG_SA1100_CERF_LCD_BACKLIGHT=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_ASSABET_UDA1341 is not set +# CONFIG_SOUND_H3600_UDA1341 is not set +# CONFIG_SOUND_PANGOLIN_UDA1341 is not set +# CONFIG_SOUND_SA1111_UDA1341 is not set +CONFIG_SOUND_CERF_UDA1341=y +# CONFIG_SOUND_SA1100SSP is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# +# CONFIG_USB_DABUSB is not set + +# +# USB Network adaptors +# +# CONFIG_USB_PLUSB is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# Miscellaneous USB drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_ID75 is not set + +# +# Bluetooth support +# +CONFIG_BT=y +CONFIG_BT_L2CAP=y + +# +# Bluetooth device drivers +# +# CONFIG_BT_HCIUSB is not set +CONFIG_BT_HCIUART=y +# CONFIG_BT_HCIVHCI is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/cerfpod_defconfig b/arch/arm/configs/cerfpod_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/cerfpod_defconfig Mon Sep 22 00:30:25 2003 @@ -0,0 +1,894 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +CONFIG_SA1100_CERF=y +# CONFIG_SA1100_CERF_FLASH_8MB is not set +CONFIG_SA1100_CERF_FLASH_16MB=y +# CONFIG_SA1100_CERF_FLASH_32MB is not set +# CONFIG_SA1100_CERF_CPLD is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_USB=y +CONFIG_SA1100_USB_NETLINK=y +CONFIG_SA1100_USB_CHAR=y + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +# CONFIG_ARM_THUMB is not set +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_CPU_FREQ=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="console=ttySA0 root=/dev/mtdblock3 rw mem=32M" +# CONFIG_PFS168_CMDLINE is not set +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_SUN_UFLASH is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_TQM8XXL is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_NETSC520 is not set +# CONFIG_MTD_SBC_GXX is not set +# CONFIG_MTD_ELAN_104NC is not set +# CONFIG_MTD_DBOX2 is not set +# CONFIG_MTD_CSTM_MIPS_IXX is not set +# CONFIG_MTD_CFI_FLAGADM is not set +# CONFIG_MTD_SOLUTIONENGINE is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +# CONFIG_MTD_OCELOT is not set +# CONFIG_MTD_L440GX is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_LART is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +# CONFIG_EL1 is not set +# CONFIG_EL2 is not set +# CONFIG_ELPLUS is not set +# CONFIG_EL16 is not set +# CONFIG_ELMC is not set +# CONFIG_ELMC_II is not set +CONFIG_CERF_CS8900A=y +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=38400 +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 +CONFIG_UCB1200=y +CONFIG_TOUCHSCREEN_UCB1200=y +# CONFIG_CERF_TS_MANUAL is not set +CONFIG_AUDIO_UCB1200=y +# CONFIG_ADC_UCB1200 is not set +# CONFIG_TOUCHSCREEN_H3600 is not set +# CONFIG_PROFILER is not set +# CONFIG_PFS168_SPI is not set +# CONFIG_PFS168_DTMF is not set +# CONFIG_PFS168_MISC is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set +# CONFIG_BIT_SA1100_UCB1200 is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set + +# +# L3 driver support +# +# CONFIG_L3_DRV_UDA1341 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_CMS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_UMSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_FREEVXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +CONFIG_ROMFS_FS=y +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +# CONFIG_CERF_LCD_38_A is not set +CONFIG_CERF_LCD_57_A=y +# CONFIG_CERF_LCD_72_A is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# +# CONFIG_USB_DABUSB is not set + +# +# USB Network adaptors +# +# CONFIG_USB_PLUSB is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# Miscellaneous USB drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_ID75 is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/clps7500_defconfig b/arch/arm/configs/clps7500_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/clps7500_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,520 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_OBSOLETE=y + +# +# Loadable module support +# +# CONFIG_MODULES is not set + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +CONFIG_ARCH_CLPS7500=y +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_FTVPCI is not set +# CONFIG_ARCH_TBOX is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_CLPS711X is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Footbridge Implementations +# + +# +# SA11x0 Implementations +# + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +CONFIG_CPU_32v3=y +# CONFIG_CPU_32v4 is not set +# CONFIG_CPU_ARM610 is not set +CONFIG_CPU_ARM710=y +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +# CONFIG_DISCONTIGMEM is not set + +# +# General setup +# +CONFIG_ANGELBOOT=y +# CONFIG_PCI is not set +CONFIG_ISA=y +# CONFIG_ISA_DMA is not set +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_SYSCTL is not set +CONFIG_NWFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="mem=16M root=nfs" +# CONFIG_ALIGNMENT_TRAP is not set + +# +# Parallel port support +# +CONFIG_PARPORT=y +CONFIG_PARPORT_PC=y +CONFIG_PARPORT_PC_FIFO=y +# CONFIG_PARPORT_PC_SUPERIO is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +CONFIG_PARPORT_1284=y + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# RAM/ROM Device Drivers +# +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +# CONFIG_MTD_MTDRAM is not set + +# +# Linearly Mapped Flash Device Drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_JEDEC is not set + +# +# Drivers for chip mappings +# + +# +# User modules and translation layers for MTD devices +# +# CONFIG_MTD_CHAR is not set +# CONFIG_MTD_BLOCK is not set +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_DEV_LOOP is not set +CONFIG_BLK_DEV_NBD=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_BLK_DEV_INITRD is not set +# CONFIG_BLK_DEV_FLD7500 is not set + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=y +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +CONFIG_NET_PCI=y +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set +CONFIG_CS89x0=y +# CONFIG_ZNET is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=y +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_ASYNC is not set +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPP_DEFLATE is not set +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPPOE is not set +CONFIG_SLIP=y +CONFIG_SLIP_COMPRESSED=y +# CONFIG_SLIP_SMART is not set +# CONFIG_SLIP_MODE_SLIP6 is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set +# CONFIG_ASH is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +# CONFIG_IDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_PRINTER=y +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_PHILIPSPAR is not set +# CONFIG_I2C_ELV is not set +# CONFIG_I2C_VELLEMAN is not set +# CONFIG_I2C_ALGOPCF is not set +# CONFIG_I2C_CHARDEV is not set + +# +# Mice +# +CONFIG_BUSMOUSE=y +# CONFIG_ATIXL_BUSMOUSE is not set +# CONFIG_LOGIBUSMOUSE is not set +# CONFIG_MS_BUSMOUSE is not set +CONFIG_MOUSE=y +# CONFIG_PSMOUSE is not set +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# + +# +# Game port support +# + +# +# Gameport joysticks +# + +# +# Serial port support +# + +# +# Serial port joysticks +# + +# +# Parallel port joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +CONFIG_CLPS7500_FLASH=y +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +CONFIG_MINIX_FS=y +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +# CONFIG_MSDOS_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Console drivers +# +CONFIG_PC_KEYB=y +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FB_ACORN=y +# CONFIG_CHRONTEL_7003 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +CONFIG_FBCON_MFB=y +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_CFB24=y +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Kernel hacking +# +# CONFIG_FRAME_POINTER is not set +# CONFIG_DEBUG_ERRORS is not set +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_LL=y diff -Nru a/arch/arm/configs/ebsa110_defconfig b/arch/arm/configs/ebsa110_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/ebsa110_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,605 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +CONFIG_ARCH_EBSA110=y +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_ANAKIN is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +CONFIG_CPU_SA110=y +# CONFIG_CPU_SA1100 is not set +# CONFIG_DISCONTIGMEM is not set + +# +# General setup +# +# CONFIG_PCI is not set +CONFIG_ISA=y +# CONFIG_ISA_DMA is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +CONFIG_I82365=y +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +# CONFIG_PCMCIA_SA1100 is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +CONFIG_FPE_FASTFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="root=/dev/nfs rw mem=16M console=ttyS1,38400n8" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y + +# +# Parallel port support +# +CONFIG_PARPORT=y +CONFIG_PARPORT_PC=y +CONFIG_PARPORT_PC_FIFO=y +# CONFIG_PARPORT_PC_SUPERIO is not set +# CONFIG_PARPORT_PC_PCMCIA is not set +# CONFIG_PARPORT_ARC is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +CONFIG_PARPORT_1284=y + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_RTNETLINK=y +CONFIG_NETLINK=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_FWMARK=y +CONFIG_IP_ROUTE_NAT=y +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_TOS is not set +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_ROUTE_LARGE_TABLES is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +CONFIG_INET_ECN=y +CONFIG_SYN_COOKIES=y + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=y +CONFIG_IP_NF_FTP=y +CONFIG_IP_NF_IRC=y +# CONFIG_IP_NF_QUEUE is not set +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_MATCH_LIMIT=y +# CONFIG_IP_NF_MATCH_MAC is not set +CONFIG_IP_NF_MATCH_MARK=y +CONFIG_IP_NF_MATCH_MULTIPORT=y +CONFIG_IP_NF_MATCH_TOS=y +# CONFIG_IP_NF_MATCH_TCPMSS is not set +CONFIG_IP_NF_MATCH_STATE=y +CONFIG_IP_NF_MATCH_UNCLEAN=y +# CONFIG_IP_NF_MATCH_OWNER is not set +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +# CONFIG_IP_NF_TARGET_MIRROR is not set +CONFIG_IP_NF_NAT=y +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=y +CONFIG_IP_NF_TARGET_REDIRECT=y +CONFIG_IP_NF_NAT_IRC=y +CONFIG_IP_NF_NAT_FTP=y +CONFIG_IP_NF_MANGLE=y +CONFIG_IP_NF_TARGET_TOS=y +CONFIG_IP_NF_TARGET_MARK=y +CONFIG_IP_NF_TARGET_LOG=y +# CONFIG_IP_NF_TARGET_TCPMSS is not set +CONFIG_IPV6=y + +# +# IPv6: Netfilter Configuration +# +CONFIG_IP6_NF_IPTABLES=y +CONFIG_IP6_NF_MATCH_LIMIT=y +CONFIG_IP6_NF_MATCH_MARK=y +CONFIG_IP6_NF_FILTER=y +CONFIG_IP6_NF_MANGLE=y +CONFIG_IP6_NF_TARGET_MARK=y +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_ARM_AM79C961A=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +# CONFIG_IDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +# CONFIG_VT is not set +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_SERIAL_EXTENDED=y +# CONFIG_SERIAL_MANY_PORTS is not set +# CONFIG_SERIAL_SHARE_IRQ is not set +# CONFIG_SERIAL_DETECT_IRQ is not set +# CONFIG_SERIAL_MULTIPORT is not set +# CONFIG_HUB6 is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_SOFT_WATCHDOG=y +# CONFIG_WDT is not set +# CONFIG_WDTPCI is not set +# CONFIG_PCWATCHDOG is not set +# CONFIG_ACQUIRE_WDT is not set +# CONFIG_ADVANTECH_WDT is not set +# CONFIG_60XX_WDT is not set +# CONFIG_MIXCOMWD is not set +# CONFIG_I810_TCO is not set +# CONFIG_MACHZ_WDT is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_PCMCIA_SERIAL_CS is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=y +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +CONFIG_MINIX_FS=y +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_EXT2_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +# CONFIG_MSDOS_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/edb7211_defconfig b/arch/arm/configs/edb7211_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/edb7211_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,401 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +# CONFIG_MODULES is not set + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +CONFIG_ARCH_CLPS711X=y + +# +# Archimedes/A5000 Implementations +# + +# +# Footbridge Implementations +# + +# +# SA11x0 Implementations +# + +# +# CLPS711X/EP721X Implementations +# +CONFIG_ARCH_EDB7211=y +CONFIG_EP7211_BOOT_MODE=y +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +CONFIG_ARCH_EP7211=y +# CONFIG_ARCH_EP7212 is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +CONFIG_CPU_ARM720T=y +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_ANGELBOOT is not set +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_NWFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +# CONFIG_IDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +# CONFIG_VT is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIAL_CLPS711X=y +CONFIG_SERIAL_CLPS711X_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +CONFIG_MINIX_FS=y +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +# CONFIG_MSDOS_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_LL=y diff -Nru a/arch/arm/configs/empeg_defconfig b/arch/arm/configs/empeg_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/empeg_defconfig Mon Sep 22 00:30:24 2003 @@ -0,0 +1,265 @@ +# +# +# Example empeg-car kernel configuration file. +# +CONFIG_ARM=y + +# +# System and processor type +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_FOOTBRIDGE is not set +CONFIG_ARCH_SA1100=y +CONFIG_CPU_SA1100=y +# CONFIG_SA1100_BRUTUS is not set +CONFIG_SA1100_EMPEG=y +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_EMPEG_HENRY is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_ISA_DMA is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_ARM2 is not set +# CONFIG_CPU_ARM3 is not set +# CONFIG_CPU_ARM6 is not set +# CONFIG_CPU_ARM7 is not set +CONFIG_CPU_SA110=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_ALIGNMENT_TRAP is not set +# CONFIG_TEXT_SECTIONS is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +# CONFIG_KMOD is not set + +# +# General setup +# +CONFIG_NET=y +# CONFIG_SYSVIPC is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_SYSCTL is not set +CONFIG_NWFPE=y +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_ARTHUR is not set +# CONFIG_PARPORT is not set +CONFIG_CMDLINE="mem=4M@0xc0000000 mem=4M@0xc8000000 root=/dev/hda1 initrd=0xd00b0000,320K" + +# +# Plug and Play support +# +# CONFIG_PNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +CONFIG_BLK_DEV_IDE=y +# CONFIG_BLK_DEV_HD_IDE is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_MD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_DEV_XD is not set +CONFIG_PARIDE_PARPORT=y +# CONFIG_PARIDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# Character devices +# +# CONFIG_VT is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_UNIX98_PTYS is not set +# CONFIG_MOUSE is not set +# CONFIG_QIC02_TAPE is not set +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_EMPEG_IR=y +CONFIG_EMPEG_USB=y + +# +# Video For Linux +# +CONFIG_VIDEO_DEV=y +# CONFIG_RADIO_RTRACK is not set +# CONFIG_RADIO_RTRACK2 is not set +# CONFIG_RADIO_AZTECH is not set +# CONFIG_RADIO_CADET is not set +# CONFIG_RADIO_MIROPCM20 is not set +# CONFIG_RADIO_GEMTEK is not set +CONFIG_RADIO_EMPEG=y +# CONFIG_VIDEO_BT848 is not set +# CONFIG_VIDEO_PMS is not set +# CONFIG_VIDEO_SAA5249 is not set +# CONFIG_RADIO_SF16FMI is not set +# CONFIG_RADIO_TYPHOON is not set +# CONFIG_RADIO_ZOLTRIX is not set + +# +# Joystick support +# +# CONFIG_JOYSTICK is not set +# CONFIG_DTLK is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK is not set +# CONFIG_FIREWALL is not set +# CONFIG_FILTER is not set +# CONFIG_UNIX is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_IP_ROUTER is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_ALIAS is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_RARP is not set +# CONFIG_SKB_LARGE is not set +# CONFIG_IPV6 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_BRIDGE is not set +# CONFIG_LLC is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set +# CONFIG_CPU_IS_SLOW is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA subsystem support +# +# CONFIG_IRDA is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_ETHERNET is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_DLCI is not set +CONFIG_PPP=y +# CONFIG_SLIP is not set +# CONFIG_NET_RADIO is not set +# CONFIG_TR is not set +# CONFIG_SHAPER is not set +# CONFIG_HOSTESS_SV11 is not set +# CONFIG_COSA is not set +# CONFIG_RCPCI is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# Filesystems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFSD is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set + +# +# Partition Types +# +# CONFIG_OSF_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SGI_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ACORN_PARTITION is not set +# CONFIG_NLS is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_USER_BACKTRACE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_LL is not set diff -Nru a/arch/arm/configs/epxa10db_defconfig b/arch/arm/configs/epxa10db_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/epxa10db_defconfig Mon Sep 22 00:30:20 2003 @@ -0,0 +1,566 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +CONFIG_MMU=y +CONFIG_SWAP=y +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_LOG_BUF_SHIFT=14 + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODULE_UNLOAD is not set +CONFIG_OBSOLETE_MODPARM=y +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_EBSA110 is not set +CONFIG_ARCH_CAMELOT=y +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP310 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# + +# +# CLPS711X/EP721X Implementations +# + +# +# Epxa10db +# + +# +# PLD hotswap support +# +CONFIG_PLD=y +# CONFIG_PLD_HOTSWAP is not set + +# +# Footbridge Implementations +# + +# +# IOP310 Implementation Options +# + +# +# IOP310 Chipset Features +# + +# +# Intel PXA250/210 Implementations +# + +# +# SA11x0 Implementations +# + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_ARM922T=y +CONFIG_CPU_32v4=y + +# +# Processor Features +# +# CONFIG_ARM_THUMB is not set +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_WRITETHROUGH is not set + +# +# General setup +# +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZBOOT_ROM_BSS=0 +# CONFIG_HOTPLUG is not set + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_PREEMPT is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="mem=32M console=ttyUA0,38400 root=/dev/mtdblock0 rw" +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +CONFIG_MTD_DEBUG=y +CONFIG_MTD_DEBUG_VERBOSE=0 +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_CONCAT is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +CONFIG_MTD_EPXA10DB=y +# CONFIG_MTD_EDB7312 is not set +# CONFIG_MTD_UCLINUX is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play support +# +# CONFIG_PNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Networking support +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_XFRM_USER is not set +# CONFIG_IPV6 is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IPV6_SCTP__=y +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_LLC is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_ETHER00=m + +# +# Ethernet (1000 Mbit) +# +CONFIG_PPP=y +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_ASYNC=y +CONFIG_PPP_SYNC_TTY=y +# CONFIG_PPP_DEFLATE is not set +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices (depends on LLC=y) +# +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# ATA/ATAPI/MFM/RLL support +# +# CONFIG_IDE is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN_BOOL is not set + +# +# Input device support +# +# CONFIG_INPUT is not set + +# +# Userland interfaces +# + +# +# Input I/O drivers +# +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +# CONFIG_SERIO is not set + +# +# Input Device Drivers +# + +# +# Character devices +# +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_DZ is not set +CONFIG_SERIAL_UART00=y +CONFIG_SERIAL_UART00_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# I2C Hardware Sensors Mainboard support +# + +# +# I2C Hardware Sensors Chip support +# + +# +# L3 serial bus support +# +# CONFIG_L3 is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_QIC02_TAPE is not set + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_GEN_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_RAW_DRIVER is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_FAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_JFFS2_FS_NAND is not set +# CONFIG_CRAMFS is not set +CONFIG_TMPFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +CONFIG_ROMFS_FS=y +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_XFS_FS is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_V4 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +CONFIG_SUNRPC=y +# CONFIG_SUNRPC_GSS is not set +CONFIG_LOCKD=y +# CONFIG_EXPORTFS is not set +# CONFIG_CIFS is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set + +# +# Graphics support +# +# CONFIG_FB is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +# CONFIG_MDA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set + +# +# Console Switches +# +# CONFIG_SWITCHES is not set + +# +# USB support +# + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_KERNEL is not set + +# +# Security options +# +# CONFIG_SECURITY is not set + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y diff -Nru a/arch/arm/configs/flexanet_defconfig b/arch/arm/configs/flexanet_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/flexanet_defconfig Mon Sep 22 00:30:24 2003 @@ -0,0 +1,900 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_EXTENEX1 is not set +CONFIG_SA1100_FLEXANET=y +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_USB=y +CONFIG_SA1100_USB_NETLINK=y +# CONFIG_SA1100_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +# CONFIG_ARM_THUMB is not set +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_PCI is not set +CONFIG_ISA=y +# CONFIG_ISA_DMA is not set +CONFIG_CPU_FREQ=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +CONFIG_FPE_FASTFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="mem=64M root=/dev/ram initrd=0xc0800000,3M" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_REDBOOT_PARTS=y +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +# CONFIG_MTD_CHAR is not set +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_GEOMETRY is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +# CONFIG_IP_PNP_BOOTP is not set +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_ARM_AM79C961A is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRAMCA is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +CONFIG_SMC9194=y +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_WAVELAN is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set +# CONFIG_AIRO is not set +CONFIG_HERMES=m + +# +# Wireless Pcmcia cards support +# +CONFIG_PCMCIA_HERMES=m +# CONFIG_AIRO_CS is not set +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=57600 +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +# CONFIG_ZLIB_FS_INFLATE is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_SA1100 is not set +# CONFIG_SOUND_UDA1341 is not set +# CONFIG_SOUND_ASSABET_UDA1341 is not set +# CONFIG_SOUND_H3600_UDA1341 is not set +# CONFIG_SOUND_PANGOLIN_UDA1341 is not set +# CONFIG_SOUND_SA1111_UDA1341 is not set +# CONFIG_SOUND_SA1100SSP is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_KERNEL is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_ERRORS is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/footbridge_defconfig b/arch/arm/configs/footbridge_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/footbridge_defconfig Mon Sep 22 00:30:20 2003 @@ -0,0 +1,880 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +CONFIG_ARCH_FOOTBRIDGE=y +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_CLPS711X is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +CONFIG_ARCH_EBSA285_HOST=y +CONFIG_ARCH_NETWINDER=y + +# +# SA11x0 Implementations +# + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_ACORN is not set +CONFIG_FOOTBRIDGE=y +CONFIG_FOOTBRIDGE_HOST=y +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_ARCH_EBSA285=y +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +CONFIG_CPU_32v4=y +CONFIG_CPU_SA110=y +# CONFIG_DISCONTIGMEM is not set + +# +# General setup +# +# CONFIG_ANGELBOOT is not set +CONFIG_PCI=y +CONFIG_ISA=y +CONFIG_ISA_DMA=y +CONFIG_PCI_NAMES=y +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_SYSCTL=y +CONFIG_NWFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +# CONFIG_LEDS_CPU is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +CONFIG_PARPORT=y +CONFIG_PARPORT_PC=y +CONFIG_PARPORT_PC_FIFO=y +# CONFIG_PARPORT_PC_SUPERIO is not set +# CONFIG_PARPORT_ARC is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +CONFIG_PARPORT_1284=y + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Plug and Play configuration +# +CONFIG_PNP=y +CONFIG_ISAPNP=y + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +CONFIG_PARIDE=m +CONFIG_PARIDE_PARPORT=y + +# +# Parallel IDE high-level drivers +# +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PT=m +CONFIG_PARIDE_PG=m + +# +# Parallel IDE protocol modules +# +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_INET_ECN is not set +CONFIG_SYN_COOKIES=y +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +CONFIG_ATM=y +# CONFIG_ATM_CLIP is not set +# CONFIG_ATM_LANE is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_NET_VENDOR_3COM=y +# CONFIG_EL1 is not set +# CONFIG_EL2 is not set +# CONFIG_ELPLUS is not set +# CONFIG_EL16 is not set +# CONFIG_EL3 is not set +# CONFIG_3C515 is not set +# CONFIG_ELMC is not set +# CONFIG_ELMC_II is not set +CONFIG_VORTEX=y +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +CONFIG_NET_PCI=y +# CONFIG_PCNET32 is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set +# CONFIG_CS89x0 is not set +CONFIG_TULIP=m +# CONFIG_DE4X5 is not set +# CONFIG_DGRS is not set +# CONFIG_DM9102 is not set +# CONFIG_EEPRO100 is not set +# CONFIG_EEPRO100_PM is not set +# CONFIG_LNE390 is not set +# CONFIG_NATSEMI is not set +CONFIG_NE2K_PCI=y +# CONFIG_NE3210 is not set +# CONFIG_ES3210 is not set +# CONFIG_8139TOO is not set +# CONFIG_RTL8129 is not set +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_TLAN is not set +# CONFIG_VIA_RHINE is not set +# CONFIG_WINBOND_840 is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y +CONFIG_IRDA_OPTIONS=y + +# +# IrDA options +# +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_DEBUG=y + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +# CONFIG_IRTTY_SIR is not set +# CONFIG_IRPORT_SIR is not set + +# +# FIR device drivers +# +# CONFIG_NSC_FIR is not set +CONFIG_WINBOND_FIR=m +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +CONFIG_IDEDISK_MULTI_MODE=y +# CONFIG_BLK_DEV_IDECS is not set +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_BLK_DEV_RZ1000 is not set +CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_OFFBOARD=y +CONFIG_IDEDMA_PCI_AUTO=y +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_AEC62XX_TUNING is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_WDC_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD7409 is not set +# CONFIG_AMD7409_OVERRIDE is not set +# CONFIG_BLK_DEV_CMD64X is not set +CONFIG_BLK_DEV_CY82C693=y +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_PDC202XX_BURST is not set +# CONFIG_BLK_DEV_OSB4 is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +CONFIG_BLK_DEV_SL82C105=y +# CONFIG_IDE_CHIPSETS is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_PCI is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +# CONFIG_SERIAL_EXTENDED is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINK is not set +# CONFIG_N_HDLC is not set +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set +CONFIG_SERIAL_21285=y +CONFIG_SERIAL_21285_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set + +# +# I2C support +# +CONFIG_I2C=m +# CONFIG_I2C_ALGOBIT is not set +# CONFIG_I2C_ALGOPCF is not set +# CONFIG_I2C_CHARDEV is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_SOFT_WATCHDOG=y +# CONFIG_WDT is not set +# CONFIG_WDTPCI is not set +# CONFIG_PCWATCHDOG is not set +# CONFIG_ACQUIRE_WDT is not set +# CONFIG_60XX_WDT is not set +# CONFIG_MIXCOMWD is not set +# CONFIG_I810_TCO is not set +CONFIG_21285_WATCHDOG=m +CONFIG_977_WATCHDOG=m +CONFIG_DS1620=y +CONFIG_NWBUTTON=y +CONFIG_NWBUTTON_REBOOT=y +CONFIG_NWFLASH=m +# CONFIG_INTEL_RNG is not set +CONFIG_NVRAM=m +CONFIG_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# Multimedia devices +# +CONFIG_VIDEO_DEV=m + +# +# Video For Linux +# +CONFIG_VIDEO_PROC_FS=y +# CONFIG_I2C_PARPORT is not set + +# +# Video Adapters +# +# CONFIG_VIDEO_PMS is not set +# CONFIG_VIDEO_BWQCAM is not set +# CONFIG_VIDEO_CQCAM is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_SAA5249 is not set +# CONFIG_TUNER_3036 is not set +# CONFIG_VIDEO_STRADIS is not set +# CONFIG_VIDEO_ZORAN is not set +# CONFIG_VIDEO_BUZ is not set +# CONFIG_VIDEO_ZR36120 is not set +CONFIG_VIDEO_CYBERPRO=m + +# +# Radio Adapters +# +# CONFIG_RADIO_CADET is not set +# CONFIG_RADIO_RTRACK is not set +# CONFIG_RADIO_RTRACK2 is not set +# CONFIG_RADIO_AZTECH is not set +# CONFIG_RADIO_GEMTEK is not set +# CONFIG_RADIO_MAESTRO is not set +# CONFIG_RADIO_MIROPCM20 is not set +# CONFIG_RADIO_SF16FMI is not set +# CONFIG_RADIO_TERRATEC is not set +# CONFIG_RADIO_TRUST is not set +# CONFIG_RADIO_TYPHOON is not set +# CONFIG_RADIO_ZOLTRIX is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=y +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_RAMFS is not set +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +CONFIG_ROOT_NFS=y +CONFIG_NFSD=m +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_MOUNT_SUBDIR is not set +# CONFIG_NCPFS_NDS_DOMAINS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +CONFIG_ACORN_PARTITION=y +# CONFIG_ACORN_PARTITION_ICS is not set +CONFIG_ACORN_PARTITION_ADFS=y +# CONFIG_ACORN_PARTITION_POWERTEC is not set +# CONFIG_ACORN_PARTITION_RISCIX is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=m +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_14 is not set +CONFIG_NLS_ISO8859_15=m +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYB=y +CONFIG_PC_KEYMAP=y +CONFIG_VGA_CONSOLE=y +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_RIVA is not set +# CONFIG_FB_CLGEN is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +CONFIG_FB_CYBER2000=y +# CONFIG_FB_SA1100 is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_CFB24=y +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +CONFIG_FBCON_VGA=y +# CONFIG_FBCON_HGA is not set +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +CONFIG_FBCON_FONTS=y +# CONFIG_FONT_8x8 is not set +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +CONFIG_FONT_ACORN_8x8=y + +# +# Sound +# +CONFIG_SOUND=m +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +CONFIG_SOUND_OSS=m +# CONFIG_SOUND_TRACEINIT is not set +# CONFIG_SOUND_DMAP is not set +# CONFIG_SOUND_AD1816 is not set +# CONFIG_SOUND_SGALAXY is not set +CONFIG_SOUND_ADLIB=m +# CONFIG_SOUND_ACI_MIXER is not set +# CONFIG_SOUND_CS4232 is not set +# CONFIG_SOUND_SSCAPE is not set +# CONFIG_SOUND_GUS is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_VMIDI is not set +# CONFIG_SOUND_TRIX is not set +# CONFIG_SOUND_MSS is not set +# CONFIG_SOUND_MPU401 is not set +# CONFIG_SOUND_NM256 is not set +# CONFIG_SOUND_MAD16 is not set +# CONFIG_SOUND_PAS is not set +# CONFIG_PAS_JOYSTICK is not set +# CONFIG_SOUND_PSS is not set +CONFIG_SOUND_SB=m +# CONFIG_SOUND_AWE32_SYNTH is not set +# CONFIG_SOUND_WAVEFRONT is not set +# CONFIG_SOUND_MAUI is not set +# CONFIG_SOUND_YM3812 is not set +# CONFIG_SOUND_OPL3SA1 is not set +# CONFIG_SOUND_OPL3SA2 is not set +# CONFIG_SOUND_YMPCI is not set +# CONFIG_SOUND_UART6850 is not set +# CONFIG_SOUND_AEDSP16 is not set +CONFIG_SOUND_WAVEARTIST=m +# CONFIG_SOUND_TVMIXER is not set + +# +# USB support +# +CONFIG_USB=m +CONFIG_USB_DEBUG=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=m + +# +# USB Devices +# +CONFIG_USB_PRINTER=m +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +CONFIG_USB_AUDIO=m +# CONFIG_USB_ACM is not set +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_USS720 is not set +# CONFIG_USB_DABUSB is not set +# CONFIG_USB_PLUSB is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_NET1080 is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set diff -Nru a/arch/arm/configs/fortunet_defconfig b/arch/arm/configs/fortunet_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/fortunet_defconfig Mon Sep 22 00:30:25 2003 @@ -0,0 +1,593 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +# CONFIG_MODULES is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +CONFIG_ARCH_CLPS711X=y +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_H3600_SLEEVE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +CONFIG_ARCH_FORTUNET=y +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +CONFIG_CPU_ARM720T=y +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +# CONFIG_ARM_THUMB is not set +# CONFIG_DISCONTIGMEM is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +# CONFIG_FPE_NWFPE is not set +CONFIG_FPE_FASTFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_PARTITIONS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +# CONFIG_MTD_SA1100 is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +CONFIG_MTD_FORTUNET=y +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +# CONFIG_INET is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET_AUNUDP is not set +# CONFIG_ECONET_NATIVE is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +# CONFIG_NETDEVICES is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +# CONFIG_IDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# Synchronous Serial Interface +# +# CONFIG_SSI is not set +# CONFIG_SSI_CLPS711X is not set +# CONFIG_SSI_JUNO is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +# CONFIG_VT is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +CONFIG_SERIAL_CLPS711X=y +CONFIG_SERIAL_CLPS711X_CONSOLE=y +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS_FS=y +CONFIG_JFFS_FS_VERBOSE=0 +# CONFIG_JFFS_PROC_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_ZISOFS_FS is not set +# CONFIG_ZLIB_FS_INFLATE is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set + +# +# USB support +# +# CONFIG_USB is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_RIO500 is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_KERNEL is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_ERRORS is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set +# CONFIG_DEBUG_LL_SER3 is not set diff -Nru a/arch/arm/configs/freebird_defconfig b/arch/arm/configs/freebird_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/freebird_defconfig Mon Sep 22 00:30:19 2003 @@ -0,0 +1,615 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_CLPS711X is not set + +# +# Archimedes/A5000 Implementations +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +CONFIG_SA1100_FREEBIRD=y +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_PFS168 is not set +CONFIG_SA1100_FREEBIRD_OLD=y +# CONFIG_SA1100_FREEBIRD_NEW is not set +CONFIG_SA1100_FL=y +CONFIG_SA1100_USB=m +CONFIG_SA1100_USB_NETLINK=m +CONFIG_SA1100_USB_CHAR=m +# CONFIG_SA1100_FREQUENCY_SCALE is not set +# CONFIG_SA1100_VOLTAGE_SCALE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_ANGELBOOT is not set +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +# CONFIG_FPE_NWFPE is not set +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +CONFIG_PM=y +CONFIG_APM=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="mem=32M root=/dev/ram initrd=0xc0800000,3M" +# CONFIG_PFS168_CMDLINE is not set +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UCB1200 is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_MTDRAM is not set +CONFIG_MTD_CFI=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_SBC_MEDIAGX is not set +# CONFIG_MTD_ELAN_104NC is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_CSTM_CFI_JEDEC is not set +# CONFIG_MTD_JEDEC is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_NAND_SPIA is not set +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m +# CONFIG_IRLAN is not set +# CONFIG_IRNET is not set +# CONFIG_IRCOMM is not set +# CONFIG_IRDA_ULTRA is not set +# CONFIG_IRDA_OPTIONS is not set + +# +# Infrared-port device drivers +# +CONFIG_IRTTY_SIR=m +# CONFIG_IRPORT_SIR is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +CONFIG_SA1100_FIR=m +# CONFIG_DONGLE is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=9600 +# CONFIG_TOUCHSCREEN_UCB1200 is not set +# CONFIG_TOUCHSCREEN_BITSY is not set +CONFIG_FB_TS_BT=y +# CONFIG_PROFILER is not set +# CONFIG_PFS168_SPI is not set +# CONFIG_PFS168_DTMF is not set +# CONFIG_PFS168_MISC is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_PCMCIA_SERIAL is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +CONFIG_SOUND_UDA1341=y +# CONFIG_SOUND_UDA1341_GSM is not set +# CONFIG_SOUND_SA1100_SSP is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/freebird_new_defconfig b/arch/arm/configs/freebird_new_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/freebird_new_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,635 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_CLPS711X is not set + +# +# Archimedes/A5000 Implementations +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +CONFIG_SA1100_FREEBIRD=y +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_FREEBIRD_OLD is not set +CONFIG_SA1100_FREEBIRD_NEW=y +CONFIG_SA1100_FL=m +CONFIG_SA1100_USB=m +CONFIG_SA1100_USB_NETLINK=m +CONFIG_SA1100_USB_CHAR=m +CONFIG_SA1100_FREQUENCY_SCALE=y +# CONFIG_SA1100_VOLTAGE_SCALE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_ANGELBOOT is not set +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=m +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +# CONFIG_FPE_NWFPE is not set +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +CONFIG_APM=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="noinitrd console=ttySA0 init=/linuxrc root=/dev/mtdblock4 mem=32m" +# CONFIG_PFS168_CMDLINE is not set +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UCB1200 is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_MTDRAM is not set +CONFIG_MTD_CFI=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_SBC_MEDIAGX is not set +# CONFIG_MTD_ELAN_104NC is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_CSTM_CFI_JEDEC is not set +# CONFIG_MTD_JEDEC is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_NAND_SPIA is not set +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_NBD=m +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m +# CONFIG_IRLAN is not set +# CONFIG_IRNET is not set +# CONFIG_IRCOMM is not set +# CONFIG_IRDA_ULTRA is not set +# CONFIG_IRDA_OPTIONS is not set + +# +# Infrared-port device drivers +# +# CONFIG_IRTTY_SIR is not set +# CONFIG_IRPORT_SIR is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +CONFIG_SA1100_FIR=m +# CONFIG_DONGLE is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +CONFIG_SERIAL=m +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=9600 +# CONFIG_TOUCHSCREEN_UCB1200 is not set +# CONFIG_TOUCHSCREEN_BITSY is not set +CONFIG_FB_TS_BT=y +# CONFIG_PROFILER is not set +# CONFIG_PFS168_SPI is not set +# CONFIG_PFS168_DTMF is not set +# CONFIG_PFS168_MISC is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +CONFIG_PCMCIA_SERIAL=m + +# +# PCMCIA character device support +# +CONFIG_PCMCIA_SERIAL_CS=m + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +CONFIG_AUTOFS_FS=m +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS_FS=m +CONFIG_JFFS_FS_VERBOSE=0 +# CONFIG_JFFS2_FS is not set +CONFIG_CRAMFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=m +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=m +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=m +CONFIG_LOCKD=m +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +CONFIG_SOUND_UDA1341=y +# CONFIG_SOUND_UDA1341_GSM is not set +# CONFIG_SOUND_SA1100_SSP is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/graphicsclient_defconfig b/arch/arm/configs/graphicsclient_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/graphicsclient_defconfig Mon Sep 22 00:30:25 2003 @@ -0,0 +1,732 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +CONFIG_SA1100_GRAPHICSCLIENT=y +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y +# CONFIG_CPU_BIG_ENDIAN is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_CPU_FREQ is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="ip=off mem=16M@0xc0000000 mem=16M@0xc8000000 root=/dev/ram initrd=0xc0800000,4M" +# CONFIG_PFS168_CMDLINE is not set +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_START=800000 +CONFIG_MTD_PHYSMAP_LEN=1000000 +CONFIG_MTD_PHYSMAP_BUSWIDTH=4 +# CONFIG_MTD_SUN_UFLASH is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_TQM8XXL is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_NETSC520 is not set +# CONFIG_MTD_SBC_GXX is not set +# CONFIG_MTD_ELAN_104NC is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set +# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_DBOX2 is not set +# CONFIG_MTD_CSTM_MIPS_IXX is not set +# CONFIG_MTD_CFI_FLAGADM is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_SOLUTIONENGINE is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +# CONFIG_MTD_OCELOT is not set +# CONFIG_MTD_L440GX is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_LART is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRAMCA is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +CONFIG_SMC9194=y +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=38400 +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 +CONFIG_UCB1200=y +CONFIG_TOUCHSCREEN_UCB1200=y +CONFIG_AUDIO_UCB1200=y +CONFIG_ADC_UCB1200=y +# CONFIG_TOUCHSCREEN_BITSY is not set +# CONFIG_PROFILER is not set +# CONFIG_PFS168_SPI is not set +# CONFIG_PFS168_DTMF is not set +# CONFIG_PFS168_MISC is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_SA1100_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +CONFIG_JFFS_FS=y +CONFIG_JFFS_FS_VERBOSE=0 +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_CRAMFS=y +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_E1355 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +# CONFIG_FONT_8x8 is not set +CONFIG_FONT_8x16=y +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/graphicsmaster_defconfig b/arch/arm/configs/graphicsmaster_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/graphicsmaster_defconfig Mon Sep 22 00:30:17 2003 @@ -0,0 +1,745 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_GRAPHICSMASTER=y +# CONFIG_SA1100_ADSBITSY is not set +CONFIG_SA1111=y +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y +# CONFIG_CPU_BIG_ENDIAN is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_CPU_FREQ is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="ip=off mem=16M@0xc0000000 mem=16M@0xc8000000 root=/dev/ram initrd=0xc0800000,4M" +# CONFIG_PFS168_CMDLINE is not set +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_START=800000 +CONFIG_MTD_PHYSMAP_LEN=1000000 +CONFIG_MTD_PHYSMAP_BUSWIDTH=4 +# CONFIG_MTD_SUN_UFLASH is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_TQM8XXL is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_NETSC520 is not set +# CONFIG_MTD_SBC_GXX is not set +# CONFIG_MTD_ELAN_104NC is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set +# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_DBOX2 is not set +# CONFIG_MTD_CSTM_MIPS_IXX is not set +# CONFIG_MTD_CFI_FLAGADM is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_SOLUTIONENGINE is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +# CONFIG_MTD_OCELOT is not set +# CONFIG_MTD_L440GX is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_LART is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRAMCA is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +CONFIG_SMC9194=y +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +CONFIG_INPUT=y +# CONFIG_INPUT_KEYBDEV is not set +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=38400 +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 +CONFIG_UCB1200=y +CONFIG_TOUCHSCREEN_UCB1200=y +CONFIG_AUDIO_UCB1200=y +CONFIG_ADC_UCB1200=y +# CONFIG_TOUCHSCREEN_BITSY is not set +# CONFIG_PROFILER is not set +# CONFIG_PFS168_SPI is not set +# CONFIG_PFS168_DTMF is not set +# CONFIG_PFS168_MISC is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_SA1100_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +CONFIG_JFFS_FS=y +CONFIG_JFFS_FS_VERBOSE=0 +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_CRAMFS=y +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_E1355 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +# CONFIG_FONT_8x8 is not set +CONFIG_FONT_8x16=y +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=y +CONFIG_USB_OHCI_NOPCI=y +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_HID is not set +# CONFIG_USB_KBD is not set +CONFIG_USB_MOUSE=y +# CONFIG_USB_WACOM is not set +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_PWC is not set +# CONFIG_USB_SE401 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_DABUSB is not set +# CONFIG_USB_PLUSB is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_NET1080 is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_RIO500 is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/h3600_defconfig b/arch/arm/configs/h3600_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/h3600_defconfig Mon Sep 22 00:30:20 2003 @@ -0,0 +1,951 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +CONFIG_SA1100_H3600=y +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_USB=m +CONFIG_SA1100_USB_NETLINK=m +# CONFIG_SA1100_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +# CONFIG_ARM_THUMB is not set +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_PCI is not set +CONFIG_ISA=y +# CONFIG_ISA_DMA is not set +CONFIG_CPU_FREQ=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="" +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_REDBOOT_PARTS=y +CONFIG_MTD_BOOTLDR_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_CFI_B1 is not set +# CONFIG_MTD_CFI_B2 is not set +CONFIG_MTD_CFI_B4=y +# CONFIG_MTD_CFI_I1 is not set +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +# CONFIG_IRDA_ULTRA is not set +# CONFIG_IRDA_OPTIONS is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +# CONFIG_IRTTY_SIR is not set +# CONFIG_IRPORT_SIR is not set + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# FIR device drivers +# +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set +CONFIG_SA1100_FIR=m + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_IDECD=m +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +CONFIG_SERIAL=m +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=38400 +CONFIG_SERIAL_8250=m +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +CONFIG_L3=y +CONFIG_L3_ALGOBIT=y +CONFIG_L3_BIT_SA1100_GPIO=y + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set +CONFIG_BIT_SA1100_GPIO=y + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=m +# CONFIG_PSMOUSE is not set +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=m +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_PCMCIA_SERIAL_CS is not set +# CONFIG_MWAVE is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_CMS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_CRAMFS=m +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_FREEVXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +CONFIG_NFSD=m +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +CONFIG_ZLIB_FS_INFLATE=m + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +# CONFIG_FBCON_CFB8 is not set +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_CFB24 is not set +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +CONFIG_SOUND_SA1100=y +CONFIG_SOUND_UDA1341=y +# CONFIG_SOUND_ASSABET_UDA1341 is not set +CONFIG_SOUND_H3600_UDA1341=y +# CONFIG_SOUND_PANGOLIN_UDA1341 is not set +# CONFIG_SOUND_SA1111_UDA1341 is not set +# CONFIG_SOUND_SA1100SSP is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_ID75 is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/hackkit_defconfig b/arch/arm/configs/hackkit_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/hackkit_defconfig Mon Sep 22 00:30:25 2003 @@ -0,0 +1,654 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +CONFIG_MMU=y +CONFIG_SWAP=y +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODULE_UNLOAD is not set +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP310 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# + +# +# CLPS711X/EP721X Implementations +# + +# +# Epxa10db +# + +# +# Footbridge Implementations +# + +# +# IOP310 Implementation Options +# + +# +# IOP310 Chipset Features +# + +# +# Intel PXA250/210 Implementations +# + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +CONFIG_SA1100_HACKKIT=y +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_STORK is not set +# CONFIG_SA1100_USB is not set + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_SA1100=y +CONFIG_CPU_32v4=y + +# +# Processor Features +# + +# +# General setup +# +CONFIG_DISCONTIGMEM=y +CONFIG_ISA=y +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_24_API=y +CONFIG_CPU_FREQ_26_API=y +# CONFIG_HOTPLUG is not set + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_PREEMPT is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="console=ttySA0,115200 root=/dev/ram0 initrd=0xc0400000,8M init=/rootshell" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +CONFIG_MTD_DEBUG=y +CONFIG_MTD_DEBUG_VERBOSE=3 +# CONFIG_MTD_PARTITIONS is not set +# CONFIG_MTD_CONCAT is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_EDB7312 is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +CONFIG_INET_ECN=y +CONFIG_SYN_COOKIES=y +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_XFRM_USER is not set +# CONFIG_IPV6 is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IPV6_SCTP__=y +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_LLC is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=y +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set + +# +# Wireless ISA/PCI cards support +# +# CONFIG_WAVELAN is not set +# CONFIG_AIRO is not set +# CONFIG_HERMES is not set +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices (depends on LLC=y) +# +# CONFIG_NET_FC is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# ATA/ATAPI/MFM/RLL support +# +# CONFIG_IDE is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN_BOOL is not set + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +# CONFIG_INPUT_TSLIBDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input I/O drivers +# +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +CONFIG_SERIO=y +# CONFIG_SERIO_I8042 is not set +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_CT82C710 is not set + +# +# Input Device Drivers +# +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_GEN_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_RAW_DRIVER is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +CONFIG_CRAMFS=y +CONFIG_TMPFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_XFS_FS is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFSD is not set +# CONFIG_EXPORTFS is not set +# CONFIG_CIFS is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +# CONFIG_FB is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set + +# +# Console Switches +# +# CONFIG_SWITCHES is not set + +# +# USB support +# + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_SLAB=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_WAITQ=y +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_ERRORS=y +CONFIG_KALLSYMS=y +CONFIG_DEBUG_LL=y + +# +# Security options +# +CONFIG_SECURITY_CAPABILITIES=y + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_ZLIB_INFLATE=y diff -Nru a/arch/arm/configs/huw_webpanel_defconfig b/arch/arm/configs/huw_webpanel_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/huw_webpanel_defconfig Mon Sep 22 00:30:23 2003 @@ -0,0 +1,435 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_CLPS711X is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Footbridge Implementations +# + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +CONFIG_SA1100_HUW_WEBPANEL=y +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_FREQUENCY_SCALE is not set +# CONFIG_SA1100_VOLTAGE_SCALE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +CONFIG_CPU_32v4=y +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_ANGELBOOT is not set +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_NWFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="keepinitrd mem=32480K root=/dev/ram initrd=0xc0800000,8M" +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_MTDRAM is not set +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_CFI_B1 is not set +# CONFIG_MTD_CFI_B2 is not set +CONFIG_MTD_CFI_B4=y +# CONFIG_MTD_CFI_I1 is not set +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_SBC_MEDIAGX is not set +# CONFIG_MTD_ELAN_104NC is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_JEDEC is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_NAND_SPIA is not set +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_DEV_FLASH is not set + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +# CONFIG_NETDEVICES is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +# CONFIG_IDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=115200 +CONFIG_TOUCHSCREEN_UCB1200=y +# CONFIG_TOUCHSCREEN_BITSY is not set +# CONFIG_PROFILER is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_SA1100_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_CRAMFS=y +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +CONFIG_ROMFS_FS=y +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_MOUNT_SUBDIR is not set +# CONFIG_NCPFS_NDS_DOMAINS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_NLS is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_LL is not set diff -Nru a/arch/arm/configs/integrator_defconfig b/arch/arm/configs/integrator_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/integrator_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,663 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +CONFIG_ARCH_INTEGRATOR=y +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_ANAKIN is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +CONFIG_CPU_ARM720T=y +CONFIG_CPU_ARM920T=y +CONFIG_CPU_ARM920_CPU_IDLE=y +CONFIG_CPU_ARM920_I_CACHE_ON=y +CONFIG_CPU_ARM920_D_CACHE_ON=y +# CONFIG_CPU_ARM920_WRITETHROUGH is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +# CONFIG_DISCONTIGMEM is not set + +# +# General setup +# +CONFIG_PCI_INTEGRATOR=y +CONFIG_PCI=y +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_CPU_CLOCK=y +CONFIG_PCI_NAMES=y +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +# CONFIG_FPE_NWFPE is not set +CONFIG_FPE_FASTFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="root=1f03 mem=32M" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_BOOTLDR_PARTS is not set +CONFIG_MTD_AFS_PARTS=y + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_CFI_VIRTUAL_ER is not set +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LART_BIT_SWAP is not set +# CONFIG_MTD_CFI_GEOMETRY is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_SUN_UFLASH is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_NETSC520 is not set +# CONFIG_MTD_SBC_GXX is not set +# CONFIG_MTD_ELAN_104NC is not set +# CONFIG_MTD_SA1100 is not set +# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set +# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_DBOX2 is not set +# CONFIG_MTD_CSTM_MIPS_IXX is not set +# CONFIG_MTD_CFI_FLAGADM is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +CONFIG_MTD_ARMFLASH=y + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_NAND_SPIA is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK=y +# CONFIG_RTNETLINK is not set +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +CONFIG_INET_ECN=y +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +CONFIG_NET_PCI=y +# CONFIG_PCNET32 is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_APRICOT is not set +# CONFIG_CS89x0 is not set +# CONFIG_TULIP is not set +# CONFIG_DE4X5 is not set +# CONFIG_DGRS is not set +# CONFIG_DM9102 is not set +CONFIG_EEPRO100=y +CONFIG_EEPRO100_PM=y +# CONFIG_LNE390 is not set +# CONFIG_FEALNX is not set +# CONFIG_NATSEMI is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_NE3210 is not set +# CONFIG_ES3210 is not set +# CONFIG_8139TOO is not set +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_TLAN is not set +# CONFIG_VIA_RHINE is not set +# CONFIG_WINBOND_840 is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +# CONFIG_IDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_PCI is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +CONFIG_SERIAL_AMBA=y +CONFIG_SERIAL_AMBA_CONSOLE=y +CONFIG_SERIAL_INTEGRATOR=y +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +CONFIG_MINIX_FS=y +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +CONFIG_ROMFS_FS=y +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_ROOT_NFS=y +CONFIG_NFSD=y +CONFIG_NFSD_V3=y +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +# CONFIG_MSDOS_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Console drivers +# +CONFIG_KMI_KEYB=y +CONFIG_KMI_MOUSE=y +CONFIG_PC_KEYMAP=y +CONFIG_VGA_CONSOLE=y +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_RIVA is not set +# CONFIG_FB_CLGEN is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_SA1100 is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_E1355 is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/iq80310_defconfig b/arch/arm/configs/iq80310_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/iq80310_defconfig Mon Sep 22 00:30:19 2003 @@ -0,0 +1,770 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +CONFIG_MMU=y +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_LOG_BUF_SHIFT=14 +# CONFIG_EMBEDDED is not set +CONFIG_KALLSYMS=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODULE_UNLOAD is not set +CONFIG_OBSOLETE_MODPARM=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +CONFIG_ARCH_IOP3XX=y +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# CLPS711X/EP721X Implementations +# + +# +# Epxa10db +# + +# +# Footbridge Implementations +# + +# +# IOP3xx Implementation Options +# +CONFIG_ARCH_IQ80310=y +# CONFIG_ARCH_IQ80321 is not set +CONFIG_ARCH_IOP310=y +# CONFIG_ARCH_IOP321 is not set + +# +# IOP3xx Chipset Features +# +# CONFIG_IOP3XX_AAU is not set +# CONFIG_IOP3XX_DMA is not set +# CONFIG_IOP3XX_MU is not set +# CONFIG_IOP3XX_PMON is not set + +# +# ADIFCC Implementation Options +# + +# +# ADI Board Types +# + +# +# Intel PXA250/210 Implementations +# + +# +# SA11x0 Implementations +# + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_XSCALE=y +CONFIG_XS80200=y +CONFIG_CPU_32v5=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +CONFIG_XSCALE_PMU=y + +# +# General setup +# +CONFIG_PCI=y +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0x00060000 +CONFIG_ZBOOT_ROM_BSS=0xa1008000 +# CONFIG_PCI_LEGACY_PROC is not set +CONFIG_PCI_NAMES=y +# CONFIG_HOTPLUG is not set + +# +# MMC/SD Card support +# +# CONFIG_MMC is not set + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_NWFPE_XP is not set +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_PREEMPT is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="console=ttyS0,115200 ip=bootp mem=32M root=/dev/nfs initrd=0xc0800000,4M" +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_CONCAT is not set +CONFIG_MTD_REDBOOT_PARTS=y +# CONFIG_MTD_CMDLINE_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +CONFIG_MTD_IQ80310=y +# CONFIG_MTD_EDB7312 is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play support +# +# CONFIG_PNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Networking support +# +CONFIG_NET=y + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_ARPTABLES is not set +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set + +# +# IP: Virtual Server Configuration +# +# CONFIG_IP_VS is not set +# CONFIG_IPV6 is not set +# CONFIG_XFRM_USER is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IPV6_SCTP__=y +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_LLC is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_MII=y +# CONFIG_SMC91X is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set + +# +# Tulip family network device support +# +# CONFIG_NET_TULIP is not set +# CONFIG_HP100 is not set +CONFIG_NET_PCI=y +# CONFIG_PCNET32 is not set +# CONFIG_AMD8111_ETH is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_B44 is not set +# CONFIG_DGRS is not set +CONFIG_EEPRO100=y +# CONFIG_EEPRO100_PIO is not set +# CONFIG_E100 is not set +# CONFIG_FEALNX is not set +# CONFIG_NATSEMI is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_TLAN is not set +# CONFIG_VIA_RHINE is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_R8169 is not set +# CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set + +# +# Ethernet (10000 Mbit) +# +# CONFIG_IXGB is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices (depends on LLC=y) +# +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# ATA/ATAPI/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_IDE_TASK_IOCTL is not set +# CONFIG_IDE_TASKFILE_IO is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_IDEPCI is not set + +# +# SCSI device support +# +# CONFIG_SCSI is not set + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN_BOOL is not set + +# +# Input device support +# +# CONFIG_INPUT is not set + +# +# Userland interfaces +# + +# +# Input I/O drivers +# +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +# CONFIG_SERIO is not set + +# +# Input Device Drivers +# + +# +# Character devices +# +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_DZ is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# I2C Hardware Sensors Mainboard support +# + +# +# I2C Hardware Sensors Chip support +# +# CONFIG_I2C_SENSOR is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_QIC02_TAPE is not set + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_GEN_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_HANGCHECK_TIMER is not set + +# +# Multimedia devices +# +CONFIG_VIDEO_DEV=y + +# +# Video For Linux +# +# CONFIG_VIDEO_PROC_FS is not set + +# +# Video Adapters +# +# CONFIG_VIDEO_PMS is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_STRADIS is not set +# CONFIG_VIDEO_HEXIUM_ORION is not set +# CONFIG_VIDEO_HEXIUM_GEMINI is not set + +# +# Radio Adapters +# +# CONFIG_RADIO_GEMTEK_PCI is not set +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_MAESTRO is not set + +# +# Digital Video Broadcasting Devices +# +CONFIG_DVB=y +CONFIG_DVB_CORE=y + +# +# Supported Frontend Modules +# +# CONFIG_DVB_STV0299 is not set +# CONFIG_DVB_ALPS_BSRV2 is not set +# CONFIG_DVB_ALPS_TDLB7 is not set +# CONFIG_DVB_ALPS_TDMB7 is not set +# CONFIG_DVB_ATMEL_AT76C651 is not set +# CONFIG_DVB_CX24110 is not set +# CONFIG_DVB_GRUNDIG_29504_491 is not set +# CONFIG_DVB_GRUNDIG_29504_401 is not set +# CONFIG_DVB_MT312 is not set +# CONFIG_DVB_VES1820 is not set +# CONFIG_DVB_TDA1004X is not set + +# +# Supported SAA7146 based PCI Adapters +# +# CONFIG_DVB_AV7110 is not set +# CONFIG_DVB_BUDGET is not set + +# +# Supported FlexCopII (B2C2) Adapters +# +# CONFIG_DVB_B2C2_SKYSTAR is not set +# CONFIG_VIDEO_BTCX is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +# CONFIG_FAT_FS is not set +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +CONFIG_DEVPTS_FS=y +# CONFIG_DEVPTS_FS_XATTR is not set +CONFIG_TMPFS=y +CONFIG_RAMFS=y + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_JFFS2_FS_NAND is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFSD is not set +CONFIG_ROOT_NFS=y +CONFIG_LOCKD=y +# CONFIG_EXPORTFS is not set +CONFIG_SUNRPC=y +# CONFIG_SUNRPC_GSS is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_NEC98_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_EFI_PARTITION is not set + +# +# Graphics support +# +# CONFIG_FB is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set + +# +# Console Switches +# +# CONFIG_SWITCHES is not set + +# +# USB support +# +# CONFIG_USB is not set +# CONFIG_USB_GADGET is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SLAB is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_LL=y + +# +# Security options +# +# CONFIG_SECURITY is not set + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y diff -Nru a/arch/arm/configs/iq80321_defconfig b/arch/arm/configs/iq80321_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/iq80321_defconfig Mon Sep 22 00:30:20 2003 @@ -0,0 +1,776 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +CONFIG_MMU=y +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_LOG_BUF_SHIFT=14 +# CONFIG_EMBEDDED is not set +CONFIG_KALLSYMS=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODULE_UNLOAD is not set +CONFIG_OBSOLETE_MODPARM=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +CONFIG_ARCH_IOP3XX=y +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# CLPS711X/EP721X Implementations +# + +# +# Epxa10db +# + +# +# Footbridge Implementations +# + +# +# IOP3xx Implementation Options +# +# CONFIG_ARCH_IQ80310 is not set +CONFIG_ARCH_IQ80321=y +# CONFIG_ARCH_IOP310 is not set +CONFIG_ARCH_IOP321=y + +# +# IOP3xx Chipset Features +# +# CONFIG_IOP3XX_AAU is not set +# CONFIG_IOP3XX_DMA is not set +# CONFIG_IOP3XX_MU is not set +# CONFIG_IOP3XX_PMON is not set + +# +# ADIFCC Implementation Options +# + +# +# ADI Board Types +# + +# +# Intel PXA250/210 Implementations +# + +# +# SA11x0 Implementations +# + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_XSCALE=y +CONFIG_CPU_32v5=y + +# +# Processor Features +# +# CONFIG_ARM_THUMB is not set +CONFIG_XSCALE_PMU=y + +# +# General setup +# +CONFIG_PCI=y +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +# CONFIG_PCI_LEGACY_PROC is not set +CONFIG_PCI_NAMES=y +# CONFIG_HOTPLUG is not set + +# +# MMC/SD Card support +# +# CONFIG_MMC is not set + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_NWFPE_XP is not set +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_PREEMPT is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="ip=boot root=nfs console=ttyS0,115200 mem=128M@0xa0000000" +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_CONCAT is not set +CONFIG_MTD_REDBOOT_PARTS=y +# CONFIG_MTD_CMDLINE_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_EDB7312 is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play support +# +# CONFIG_PNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Networking support +# +CONFIG_NET=y + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_ARPTABLES is not set +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set + +# +# IP: Virtual Server Configuration +# +# CONFIG_IP_VS is not set +# CONFIG_IPV6 is not set +# CONFIG_XFRM_USER is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IPV6_SCTP__=y +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_LLC is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_MII is not set +# CONFIG_SMC91X is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set + +# +# Tulip family network device support +# +# CONFIG_NET_TULIP is not set +# CONFIG_HP100 is not set +CONFIG_NET_PCI=y +# CONFIG_PCNET32 is not set +# CONFIG_AMD8111_ETH is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_B44 is not set +# CONFIG_DGRS is not set +CONFIG_EEPRO100=y +# CONFIG_EEPRO100_PIO is not set +# CONFIG_E100 is not set +# CONFIG_FEALNX is not set +# CONFIG_NATSEMI is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_TLAN is not set +# CONFIG_VIA_RHINE is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +CONFIG_E1000=y +CONFIG_E1000_NAPI=y +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_R8169 is not set +# CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set + +# +# Ethernet (10000 Mbit) +# +# CONFIG_IXGB is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices (depends on LLC=y) +# +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# ATA/ATAPI/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_IDE_TASK_IOCTL is not set +# CONFIG_IDE_TASKFILE_IO is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_BLK_DEV_GENERIC is not set +# CONFIG_IDEPCI_SHARE_IRQ is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_IDE_TCQ is not set +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +CONFIG_BLK_DEV_ADMA=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +CONFIG_BLK_DEV_CMD64X=y +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_SC1200 is not set +# CONFIG_BLK_DEV_PIIX is not set +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIIMAGE is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_BLK_DEV_SL82C105 is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set + +# +# SCSI device support +# +# CONFIG_SCSI is not set + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN_BOOL is not set + +# +# Input device support +# +# CONFIG_INPUT is not set + +# +# Userland interfaces +# + +# +# Input I/O drivers +# +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +# CONFIG_SERIO is not set + +# +# Input Device Drivers +# + +# +# Character devices +# +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_DZ is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# I2C Hardware Sensors Mainboard support +# + +# +# I2C Hardware Sensors Chip support +# +# CONFIG_I2C_SENSOR is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_QIC02_TAPE is not set + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_GEN_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_HANGCHECK_TIMER is not set + +# +# Multimedia devices +# +CONFIG_VIDEO_DEV=y + +# +# Video For Linux +# +# CONFIG_VIDEO_PROC_FS is not set + +# +# Video Adapters +# +# CONFIG_VIDEO_PMS is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_STRADIS is not set +# CONFIG_VIDEO_HEXIUM_ORION is not set +# CONFIG_VIDEO_HEXIUM_GEMINI is not set + +# +# Radio Adapters +# +# CONFIG_RADIO_GEMTEK_PCI is not set +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_MAESTRO is not set + +# +# Digital Video Broadcasting Devices +# +# CONFIG_DVB is not set +# CONFIG_VIDEO_BTCX is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +# CONFIG_FAT_FS is not set +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +CONFIG_DEVPTS_FS=y +# CONFIG_DEVPTS_FS_XATTR is not set +CONFIG_TMPFS=y +CONFIG_RAMFS=y + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_JFFS2_FS_NAND is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFSD is not set +CONFIG_ROOT_NFS=y +CONFIG_LOCKD=y +# CONFIG_EXPORTFS is not set +CONFIG_SUNRPC=y +# CONFIG_SUNRPC_GSS is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_NEC98_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_EFI_PARTITION is not set + +# +# Graphics support +# +# CONFIG_FB is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set + +# +# Console Switches +# +# CONFIG_SWITCHES is not set + +# +# USB support +# +# CONFIG_USB is not set +# CONFIG_USB_GADGET is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SLAB is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_LL=y + +# +# Security options +# +# CONFIG_SECURITY is not set + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y diff -Nru a/arch/arm/configs/jornada720_defconfig b/arch/arm/configs/jornada720_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/jornada720_defconfig Mon Sep 22 00:30:19 2003 @@ -0,0 +1,897 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +CONFIG_SA1100_JORNADA720=y +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1111=y +CONFIG_FORCE_MAX_ZONEORDER=9 +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_REGISTERS is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +# CONFIG_ARM_THUMB is not set +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_PCI is not set +CONFIG_ISA=y +# CONFIG_ISA_DMA is not set +# CONFIG_CPU_FREQ is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y +# CONFIG_MERCURY_BACKPAQ is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +CONFIG_FPE_FASTFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="keepinitrd mem=32M" +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +CONFIG_MTD_DEBUG=y +CONFIG_MTD_DEBUG_VERBOSE=1 +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_BOOTLDR_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_CHAR=m +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_CFI_B1 is not set +CONFIG_MTD_CFI_B2=y +CONFIG_MTD_CFI_B4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_H3600_BACKPAQ is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_NBD=m +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +CONFIG_WAVELAN=m +CONFIG_ARLAN=m +CONFIG_AIRONET4500=m +CONFIG_AIRONET4500_NONCS=m +# CONFIG_AIRONET4500_PNP is not set +# CONFIG_AIRONET4500_PCI is not set +# CONFIG_AIRONET4500_ISA is not set +# CONFIG_AIRONET4500_I365 is not set +# CONFIG_AIRONET4500_PROC is not set +# CONFIG_AIRO is not set +CONFIG_HERMES=m +CONFIG_PCMCIA_HERMES=m +CONFIG_AIRO_CS=m +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +CONFIG_NET_PCMCIA_RADIO=y +# CONFIG_PCMCIA_RAYCS is not set +# CONFIG_PCMCIA_NETWAVE is not set +CONFIG_PCMCIA_WAVELAN=m +CONFIG_AIRONET4500_CS=m + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m +CONFIG_IRLAN=m +# CONFIG_IRNET is not set +CONFIG_IRCOMM=m +# CONFIG_IRDA_ULTRA is not set +# CONFIG_IRDA_OPTIONS is not set + +# +# Infrared-port device drivers +# +# CONFIG_IRTTY_SIR is not set +# CONFIG_IRPORT_SIR is not set +# CONFIG_DONGLE is not set +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set +CONFIG_SA1100_FIR=m + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_IDECD=m +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +CONFIG_INPUT=y +# CONFIG_INPUT_KEYBDEV is not set +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=m +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=115200 +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 +# CONFIG_NEWTONKBD is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=m +# CONFIG_PSMOUSE is not set +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_INPUT_SERIO is not set +# CONFIG_INPUT_SERPORT is not set +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=m +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_PCMCIA_SERIAL_CS is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set +# CONFIG_V4L2_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=2 +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=m +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +CONFIG_DEVFS_FS=y +CONFIG_DEVFS_MOUNT=y +CONFIG_DEVFS_DEBUG=y +# CONFIG_DRIVERFS_FS is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +# CONFIG_ZLIB_FS_INFLATE is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_SA1100 is not set +CONFIG_FB_EPSON1356=y +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +# CONFIG_FBCON_CFB8 is not set +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_CFB24 is not set +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=m +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +CONFIG_SOUND_SA1100=m +# CONFIG_SOUND_UDA1341 is not set +# CONFIG_SOUND_ASSABET_UDA1341 is not set +# CONFIG_SOUND_H3600_UDA1341 is not set +# CONFIG_SOUND_PANGOLIN_UDA1341 is not set +# CONFIG_SOUND_SA1111_UDA1341 is not set +# CONFIG_SOUND_SA1100SSP is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set + +# +# USB support +# +# CONFIG_USB is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_HID is not set +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_RIO500 is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_SLAB=y +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set +# CONFIG_DEBUG_LL_SER3 is not set diff -Nru a/arch/arm/configs/lart_defconfig b/arch/arm/configs/lart_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/lart_defconfig Mon Sep 22 00:30:21 2003 @@ -0,0 +1,893 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +CONFIG_SA1100_LART=y +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_USB=m +CONFIG_SA1100_USB_NETLINK=m +CONFIG_SA1100_USB_CHAR=m + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y +# CONFIG_CPU_BIG_ENDIAN is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_CPU_FREQ=y +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +CONFIG_APM=m +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="console=ttySA0,9600 root=/dev/ram" +# CONFIG_PFS168_CMDLINE is not set +CONFIG_LEDS=y +# CONFIG_LEDS_TIMER is not set +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +CONFIG_MTD_DEBUG=y +CONFIG_MTD_DEBUG_VERBOSE=1 +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_CFI_INTELEXT is not set +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_SUN_UFLASH is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_TQM8XXL is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_NETSC520 is not set +# CONFIG_MTD_SBC_GXX is not set +# CONFIG_MTD_ELAN_104NC is not set +# CONFIG_MTD_DBOX2 is not set +# CONFIG_MTD_CSTM_MIPS_IXX is not set +# CONFIG_MTD_CFI_FLAGADM is not set +# CONFIG_MTD_SOLUTIONENGINE is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +# CONFIG_MTD_OCELOT is not set +# CONFIG_MTD_L440GX is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +# CONFIG_MTD_SA1100 is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +CONFIG_MTD_LART=y +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=m +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +CONFIG_INET_ECN=y +CONFIG_SYN_COOKIES=y +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPPOE is not set +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +# CONFIG_SLIP_SMART is not set +# CONFIG_SLIP_MODE_SLIP6 is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +# CONFIG_IRDA_ULTRA is not set +CONFIG_IRDA_OPTIONS=y + +# +# IrDA options +# +CONFIG_IRDA_CACHE_LAST_LSAP=y +# CONFIG_IRDA_FAST_RR is not set +CONFIG_IRDA_DEBUG=y + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +# CONFIG_IRTTY_SIR is not set +# CONFIG_IRPORT_SIR is not set + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# FIR device drivers +# +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set +CONFIG_SA1100_FIR=m + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_IDECD=m +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +# CONFIG_VT is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=9600 +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_UCB1200=m +CONFIG_TOUCHSCREEN_UCB1200=m +CONFIG_AUDIO_UCB1200=m +CONFIG_ADC_UCB1200=m +# CONFIG_TOUCHSCREEN_H3600 is not set +CONFIG_PROFILER=m +# CONFIG_PFS168_SPI is not set +# CONFIG_PFS168_DTMF is not set +# CONFIG_PFS168_MISC is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set + +# +# L3 driver support +# +# CONFIG_L3_DRV_UDA1341 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=m +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_CMS_FS is not set +CONFIG_EXT3_FS=m +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=1 +CONFIG_CRAMFS=m +CONFIG_TMPFS=y +CONFIG_RAMFS=m +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +# CONFIG_MINIX_FS is not set +# CONFIG_FREEVXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +CONFIG_UDF_FS=m +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +CONFIG_SUNRPC=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=m +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=m +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=m +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +CONFIG_NLS_ISO8859_15=m +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=m + +# +# Sound +# +CONFIG_SOUND=m +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_ASSABET_UDA1341 is not set +# CONFIG_SOUND_H3600_UDA1341 is not set +# CONFIG_SOUND_PANGOLIN_UDA1341 is not set +# CONFIG_SOUND_SA1111_UDA1341 is not set +CONFIG_SOUND_SA1100SSP=m +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# +# CONFIG_USB_DABUSB is not set + +# +# USB Network adaptors +# +# CONFIG_USB_PLUSB is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# Miscellaneous USB drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_ID75 is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/lubbock_defconfig b/arch/arm/configs/lubbock_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/lubbock_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,882 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +CONFIG_ARCH_PXA=y +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP310 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_STORK is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_H3600_SLEEVE is not set + +# +# Intel PXA250/210 Implementations +# +CONFIG_ARCH_LUBBOCK=y +# CONFIG_ARCH_PXA_IDP is not set +CONFIG_SA1111=y + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_FORTUNET is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set + +# +# IOP310 Implementation Options +# +# CONFIG_ARCH_IQ80310 is not set + +# +# IOP310 Chipset Features +# +# CONFIG_IOP310_AAU is not set +# CONFIG_IOP310_DMA is not set +# CONFIG_IOP310_MU is not set +# CONFIG_IOP310_PMON is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +# CONFIG_CPU_32v4 is not set +CONFIG_CPU_32v5=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +CONFIG_CPU_XSCALE=y +CONFIG_XSCALE_CACHE_ERRATA=y +CONFIG_XSCALE_PMU=y + +# +# Processor Features +# +# CONFIG_ARM_THUMB is not set + +# +# General setup +# +# CONFIG_DISCONTIGMEM is not set +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_FIQ is not set +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZBOOT_ROM_BSS=0 +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +CONFIG_PCMCIA_PROBE=y +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +# CONFIG_PCMCIA_SA1100 is not set +CONFIG_PCMCIA_PXA=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_PREEMPT is not set +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="root=/dev/nfs ip=bootp console=ttyS0,115200 mem=64M" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_CONCAT is not set +CONFIG_MTD_REDBOOT_PARTS=y +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_CFI_B1 is not set +# CONFIG_MTD_CFI_B2 is not set +CONFIG_MTD_CFI_B4=y +# CONFIG_MTD_CFI_I1 is not set +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +# CONFIG_MTD_SA1100 is not set +# CONFIG_MTD_2PARTS_IPAQ is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +CONFIG_MTD_LUBBOCK=y +# CONFIG_MTD_EPXA10DB is not set +# CONFIG_MTD_FORTUNET is not set +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_ARM_AM79C961A is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRAMCA is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +CONFIG_SMC9194=y +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# Tulip family network device support +# +# CONFIG_NET_TULIP is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +# CONFIG_IDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN_BOOL is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +# CONFIG_GAMEPORT_NS558 is not set +# CONFIG_GAMEPORT_L4 is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_GAMEPORT_PCIGAME is not set +# CONFIG_GAMEPORT_FM801 is not set +# CONFIG_GAMEPORT_CS461x is not set +# CONFIG_SERIO is not set +# CONFIG_SERIO_SERPORT is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_JOYSTICK_ANALOG is not set +# CONFIG_JOYSTICK_A3D is not set +# CONFIG_JOYSTICK_ADI is not set +# CONFIG_JOYSTICK_COBRA is not set +# CONFIG_JOYSTICK_GF2K is not set +# CONFIG_JOYSTICK_GRIP is not set +# CONFIG_JOYSTICK_INTERACT is not set +# CONFIG_JOYSTICK_SIDEWINDER is not set +# CONFIG_JOYSTICK_TMDC is not set +# CONFIG_JOYSTICK_IFORCE_USB is not set +# CONFIG_JOYSTICK_IFORCE_232 is not set +# CONFIG_JOYSTICK_WARRIOR is not set +# CONFIG_JOYSTICK_MAGELLAN is not set +# CONFIG_JOYSTICK_SPACEORB is not set +# CONFIG_JOYSTICK_SPACEBALL is not set +# CONFIG_JOYSTICK_STINGER is not set +# CONFIG_JOYSTICK_DB9 is not set +# CONFIG_JOYSTICK_GAMECON is not set +# CONFIG_JOYSTICK_TURBOGRAFX is not set + +# +# Character devices +# +# CONFIG_VT is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_CS is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_RSA is not set + +# +# Non-8250 serial port support +# +# CONFIG_ATOMWIDE_SERIAL is not set +# CONFIG_DUALSP_SERIAL is not set +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X_OLD_NAME is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +CONFIG_BUSMOUSE=y +# CONFIG_ATIXL_BUSMOUSE is not set +# CONFIG_LOGIBUSMOUSE is not set +# CONFIG_MS_BUSMOUSE is not set +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_SYNCLINK_CS is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_QFMT_V1 is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_JFFS2_FS_NAND is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_NFSD_TCP is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_EXPORTFS is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Sound +# +CONFIG_SOUND=y + +# +# Open Sound System +# +CONFIG_SOUND_PRIME=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_PXA_AC97 is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Advanced Linux Sound Architecture +# +# CONFIG_SND is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set +# CONFIG_MCP_UCB1400_TS is not set + +# +# Console Switches +# +# CONFIG_SWITCHES is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set + +# +# Library routines +# +CONFIG_CRC32=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y diff -Nru a/arch/arm/configs/lusl7200_defconfig b/arch/arm/configs/lusl7200_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/lusl7200_defconfig Mon Sep 22 00:30:19 2003 @@ -0,0 +1,488 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +# CONFIG_NET is not set +CONFIG_SYSVIPC=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_SYSCTL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP310 is not set +CONFIG_ARCH_L7200=y +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_STORK is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_H3600_SLEEVE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_FORTUNET is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_32v5 is not set +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +CONFIG_CPU_ARM720T=y +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +# CONFIG_CPU_XSCALE is not set +# CONFIG_XSCALE_PMU is not set + +# +# Processor Features +# +# CONFIG_ARM_THUMB is not set + +# +# General setup +# +# CONFIG_DISCONTIGMEM is not set +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_FIQ=y +CONFIG_ZBOOT_ROM=y +CONFIG_ZBOOT_ROM_TEXT=00010000 +CONFIG_ZBOOT_ROM_BSS=f03e0000 +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set + +# +# At least one math emulation must be selected +# +# CONFIG_FPE_NWFPE is not set +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_PREEMPT is not set +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="console=tty0 console=ttyLU1,115200 root=/dev/ram initrd=0xf1000000,0x005dac7b mem=32M" +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# ATA/IDE/MFM/RLL support +# +# CONFIG_IDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# + +# +# Input device support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +# CONFIG_GAMEPORT_NS558 is not set +# CONFIG_GAMEPORT_L4 is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_GAMEPORT_PCIGAME is not set +# CONFIG_GAMEPORT_FM801 is not set +# CONFIG_GAMEPORT_CS461x is not set +# CONFIG_SERIO is not set +# CONFIG_SERIO_SERPORT is not set + +# +# Character devices +# +# CONFIG_VT is not set +# CONFIG_SERIAL_EXTENDED is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINK is not set +# CONFIG_SYNCLINKMP is not set +# CONFIG_N_HDLC is not set +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_RSA is not set + +# +# Non-8250 serial port support +# + +# +# ARM Serial drivers +# +# CONFIG_ATOMWIDE_SERIAL is not set +# CONFIG_DUALSP_SERIAL is not set +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +# CONFIG_UNIX98_PTYS is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_QFMT_V1 is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_QIFACE_COMPAT is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +# CONFIG_DEVPTS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_SMB_FS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set + +# +# Console Switches +# +# CONFIG_SWITCHES is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_KERNEL is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_ERRORS is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +# CONFIG_ZLIB_INFLATE is not set +# CONFIG_ZLIB_DEFLATE is not set diff -Nru a/arch/arm/configs/neponset_defconfig b/arch/arm/configs/neponset_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/neponset_defconfig Mon Sep 22 00:30:20 2003 @@ -0,0 +1,895 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +CONFIG_MMU=y +CONFIG_SWAP=y +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP310 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# + +# +# CLPS711X/EP721X Implementations +# + +# +# Epxa10db +# + +# +# Footbridge Implementations +# + +# +# IOP310 Implementation Options +# + +# +# IOP310 Chipset Features +# + +# +# Intel PXA250/210 Implementations +# + +# +# SA11x0 Implementations +# +CONFIG_SA1100_ASSABET=y +CONFIG_ASSABET_NEPONSET=y +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_STORK is not set +CONFIG_SA1100_USB=m +CONFIG_SA1100_USB_NETLINK=m +CONFIG_SA1100_USB_CHAR=m +CONFIG_SA1111=y +CONFIG_FORCE_MAX_ZONEORDER=9 + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_SA1100=y +CONFIG_CPU_32v4=y + +# +# Processor Features +# + +# +# General setup +# +CONFIG_DISCONTIGMEM=y +CONFIG_ISA=y +CONFIG_ZBOOT_ROM=y +CONFIG_ZBOOT_ROM_TEXT=0x80000 +CONFIG_ZBOOT_ROM_BSS=0xc1000000 +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_24_API=y +CONFIG_CPU_FREQ_26_API=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_PCMCIA_SA1111=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +# CONFIG_PREEMPT is not set +CONFIG_APM=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="console=ttySA0,38400n8 cpufreq=221200 rw root=/dev/mtdblock2 mtdparts=sa1100:512K(boot),1M(kernel),2560K(initrd),4M(root) load_ramdisk=1 prompt_ramdisk=0 mem=32M noinitrd initrd=0xc0800000,3M" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_CONCAT=y +CONFIG_MTD_REDBOOT_PARTS=y +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +# CONFIG_MTD_CHAR is not set +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_GEOMETRY is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +CONFIG_MTD_RAM=y +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_EDB7312 is not set +CONFIG_MTD_PCMCIA=y +# CONFIG_MTD_UCLINUX is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IPV6_SCTP__=y +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_LLC is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRA is not set +CONFIG_SMC9194=y +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# ATA/ATAPI/MFM/RLL support +# +# CONFIG_IDE is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN_BOOL is not set + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_TSDEV=y +CONFIG_INPUT_TSDEV_SCREEN_X=240 +CONFIG_INPUT_TSDEV_SCREEN_Y=320 +CONFIG_INPUT_TSLIBDEV=y +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input I/O drivers +# +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +CONFIG_SERIO=y +# CONFIG_SERIO_I8042 is not set +CONFIG_SERIO_SERPORT=m +# CONFIG_SERIO_CT82C710 is not set +CONFIG_SERIO_SA1111=y + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_INPUT_MISC is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINK is not set +# CONFIG_SYNCLINKMP is not set +# CONFIG_N_HDLC is not set +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_CONSOLE is not set +CONFIG_SERIAL_8250_CS=y +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_ELV is not set +# CONFIG_I2C_VELLEMAN is not set +# CONFIG_SCx200_ACB is not set +CONFIG_I2C_BIT_SA1100_GPIO=y +# CONFIG_I2C_ALGOPCF is not set +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_PROC=y + +# +# L3 serial bus support +# +CONFIG_L3=y +CONFIG_L3_ALGOBIT=y +CONFIG_L3_BIT_SA1100_GPIO=y +CONFIG_BIT_SA1100_GPIO=y + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_WDT is not set +# CONFIG_WDTPCI is not set +# CONFIG_PCWATCHDOG is not set +# CONFIG_ACQUIRE_WDT is not set +# CONFIG_ADVANTECH_WDT is not set +CONFIG_SA1100_WATCHDOG=m +# CONFIG_EUROTECH_WDT is not set +# CONFIG_IB700_WDT is not set +# CONFIG_I810_TCO is not set +# CONFIG_MIXCOMWD is not set +# CONFIG_SCx200_WDT is not set +# CONFIG_60XX_WDT is not set +# CONFIG_W83877F_WDT is not set +# CONFIG_MACHZ_WDT is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_GEN_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_SYNCLINK_CS is not set +# CONFIG_RAW_DRIVER is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_JFFS2_FS_NAND is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_XFS_FS is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFSD is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_EXPORTFS is not set +# CONFIG_CIFS is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +# CONFIG_MSDOS_PARTITION is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=m +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=m +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FB_SA1100=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_FONTWIDTH8_ONLY=y +# CONFIG_FONT_SUN8x16 is not set +CONFIG_FBCON_FONTS=y +# CONFIG_FONT_8x8 is not set +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +CONFIG_FONT_ACORN_8x8=y +# CONFIG_FONT_MINI_4x6 is not set + +# +# Sound +# +CONFIG_SOUND=y + +# +# Open Sound System +# +CONFIG_SOUND_PRIME=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +CONFIG_SOUND_SA1100=y +CONFIG_SOUND_UDA1341=y +CONFIG_SOUND_ASSABET_UDA1341=y +CONFIG_SOUND_SA1111_UDA1341=y +# CONFIG_SOUND_SA1100SSP is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Advanced Linux Sound Architecture +# +# CONFIG_SND is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# +CONFIG_MCP=y +CONFIG_MCP_SA1100=y +CONFIG_MCP_UCB1200=y +CONFIG_MCP_UCB1200_AUDIO=m +CONFIG_MCP_UCB1200_TS=y + +# +# Console Switches +# +# CONFIG_SWITCHES is not set + +# +# USB support +# +CONFIG_USB=m +CONFIG_USB_DEBUG=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_LONG_TIMEOUT is not set +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_DYNAMIC_MINORS is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_EHCI_HCD is not set +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_UHCI_HCD_ALT is not set +# CONFIG_USB_SL811HS is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH_TTY is not set +# CONFIG_USB_MIDI is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# SCSI support is needed for USB Storage +# + +# +# USB Human Interface Devices (HID) +# +# CONFIG_USB_HID is not set + +# +# USB HID Boot Protocol drivers +# +# CONFIG_USB_KBD is not set +CONFIG_USB_MOUSE=m +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_POWERMATE is not set +# CONFIG_USB_XPAD is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set + +# +# USB Multimedia devices +# +# CONFIG_USB_DABUSB is not set + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_TIGL is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_TEST is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_SLAB=y +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_ERRORS=y +# CONFIG_KALLSYMS is not set +CONFIG_DEBUG_LL=y + +# +# Security options +# +CONFIG_SECURITY_CAPABILITIES=y + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y diff -Nru a/arch/arm/configs/omnimeter_defconfig b/arch/arm/configs/omnimeter_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/omnimeter_defconfig Mon Sep 22 00:30:20 2003 @@ -0,0 +1,571 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_SBUS is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_CLPS711X is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Footbridge Implementations +# + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_SA1100_BRUTUS is not set +CONFIG_SA1100_OMNIMETER=y +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_FREQUENCY_SCALE is not set +# CONFIG_SA1100_VOLTAGE_SCALE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +CONFIG_CPU_32v4=y +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_ANGELBOOT is not set +# CONFIG_PCI is not set +CONFIG_ISA=y +# CONFIG_ISA_DMA is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +CONFIG_I82365=y +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_SA1100_PCMCIA=y +# CONFIG_H3600_SLEEVE is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_NWFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="keepinitrd mem=16M root=/dev/ram ramdisk=8192 initrd=0xd0000000,4M" +# CONFIG_LEDS is not set +# CONFIG_ALIGNMENT_TRAP is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_NBD=m +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set +# CONFIG_BLK_DEV_FLASH is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set +# CONFIG_NET_SB1000 is not set +# CONFIG_NET_SA1100_USB_HOST is not set +# CONFIG_NET_SA1100_USB_CLIENT is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=y +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +CONFIG_NET_PCMCIA_RADIO=y +# CONFIG_PCMCIA_RAYCS is not set +# CONFIG_PCMCIA_NETWAVE is not set +CONFIG_PCMCIA_WAVELAN=y +CONFIG_AIRONET4500_CS=y +CONFIG_PCMCIA_WVLAN=y +CONFIG_PCMCIA_NETCARD=y + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +# CONFIG_TOUCHSCREEN_UCB1200 is not set +# CONFIG_TOUCHSCREEN_BITSY is not set +# CONFIG_TOUCHSCREEN_BITSY_KEYBOARD is not set +# CONFIG_H3600_SLEEVE is not set +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=9600 +# CONFIG_TOUCHSCREEN_UCB1200 is not set +# CONFIG_TOUCHSCREEN_BITSY is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=m +# CONFIG_PSMOUSE is not set +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_SA1100_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +CONFIG_PCMCIA_SERIAL=y + +# +# PCMCIA character device support +# +# CONFIG_PCMCIA_SERIAL_CS is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +# CONFIG_DEVPTS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_MOUNT_SUBDIR is not set +# CONFIG_NCPFS_NDS_DOMAINS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +CONFIG_FBCON_CFB4=y +# CONFIG_FBCON_CFB8 is not set +# CONFIG_FBCON_CFB16 is not set +# CONFIG_FBCON_CFB24 is not set +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_MAGIC_SYSRQ is not set +CONFIG_DEBUG_LL=y diff -Nru a/arch/arm/configs/pangolin_defconfig b/arch/arm/configs/pangolin_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/pangolin_defconfig Mon Sep 22 00:30:22 2003 @@ -0,0 +1,742 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +CONFIG_SA1100_PANGOLIN=y +CONFIG_SA1100_PANGOLIN_PCMCIA_IDE=y +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y +# CONFIG_CPU_BIG_ENDIAN is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_CPU_FREQ is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +# CONFIG_FPE_NWFPE is not set +CONFIG_FPE_FASTFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="keepinitrd mem=128M root=/dev/ram initrd=0xc0800000,3M" +# CONFIG_PFS168_CMDLINE is not set +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_CFI_B1 is not set +# CONFIG_MTD_CFI_B2 is not set +CONFIG_MTD_CFI_B4=y +# CONFIG_MTD_CFI_I1 is not set +# CONFIG_MTD_CFI_I2 is not set +CONFIG_MTD_CFI_I4=y +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_SUN_UFLASH is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_TQM8XXL is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_NETSC520 is not set +# CONFIG_MTD_SBC_GXX is not set +# CONFIG_MTD_ELAN_104NC is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set +# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_DBOX2 is not set +# CONFIG_MTD_CSTM_MIPS_IXX is not set +# CONFIG_MTD_CFI_FLAGADM is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_SOLUTIONENGINE is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +# CONFIG_MTD_OCELOT is not set +# CONFIG_MTD_L440GX is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_LART is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=16384 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRAMCA is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +CONFIG_SMC9194=y +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +CONFIG_NET_PCMCIA_RADIO=y +# CONFIG_PCMCIA_RAYCS is not set +# CONFIG_PCMCIA_NETWAVE is not set +# CONFIG_PCMCIA_WAVELAN is not set +# CONFIG_AIRONET4500_CS is not set +CONFIG_PCMCIA_WVLAN=y + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_PANGOLIN is not set +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=115200 +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 +# CONFIG_UCB1200 is not set +# CONFIG_TOUCHSCREEN_UCB1200 is not set +# CONFIG_AUDIO_UCB1200 is not set +# CONFIG_ADC_UCB1200 is not set +# CONFIG_TOUCHSCREEN_BITSY is not set +CONFIG_PROFILER=y +# CONFIG_PFS168_SPI is not set +# CONFIG_PFS168_DTMF is not set +# CONFIG_PFS168_MISC is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +CONFIG_JFFS_FS=y +CONFIG_JFFS_FS_VERBOSE=0 +# CONFIG_JFFS2_FS is not set +CONFIG_CRAMFS=y +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +CONFIG_NLS_CODEPAGE_950=y +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_SA1100 is not set +CONFIG_FB_MQ200=y +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_E1355 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_CFB24 is not set +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_ASSABET_UDA1341 is not set +CONFIG_SOUND_PANGOLIN_UDA1341=y +# CONFIG_SOUND_BITSY_UDA1341 is not set +# CONFIG_SOUND_SA1111_UDA1341 is not set +# CONFIG_SOUND_SA1100SSP is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_INFO=y +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/pfs168_mqtft_defconfig b/arch/arm/configs/pfs168_mqtft_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/pfs168_mqtft_defconfig Mon Sep 22 00:30:21 2003 @@ -0,0 +1,782 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_CLPS711X is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_PFS168=y +CONFIG_SA1111=y +CONFIG_SA1100_USB=m +CONFIG_SA1100_USB_NETLINK=m +CONFIG_SA1100_USB_CHAR=m +CONFIG_SA1100_FREQUENCY_SCALE=m +# CONFIG_SA1100_VOLTAGE_SCALE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y + +# +# General setup +# + +# +# Please ensure that you have read the help on the next option +# +# CONFIG_ANGELBOOT is not set +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=m +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="root=/dev/nfs mem=16M" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y +CONFIG_UCB1200=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# RAM/ROM Device Drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_MTDRAM is not set + +# +# Linearly Mapped Flash Device Drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_CFI_GEOMETRY is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_SBC_MEDIAGX is not set +# CONFIG_MTD_ELAN_104NC is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_CSTM_CFI_JEDEC is not set +# CONFIG_MTD_JEDEC is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_NAND_SPIA is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +CONFIG_SMC9194=y +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +CONFIG_PCMCIA_SMC91C92=m +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y +# CONFIG_IRDA_OPTIONS is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m +CONFIG_IRPORT_SIR=m + +# +# FIR device drivers +# +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +CONFIG_SA1100_FIR=m + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=115200 +CONFIG_TOUCHSCREEN_UCB1200=y +# CONFIG_TOUCHSCREEN_BITSY is not set +# CONFIG_PROFILER is not set +# CONFIG_PFS168_SPI is not set +CONFIG_PFS168_DTMF=y +CONFIG_PFS168_MISC=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_PHILIPSPAR is not set +# CONFIG_I2C_ELV is not set +# CONFIG_I2C_VELLEMAN is not set +# CONFIG_I2C_ASSABET is not set +CONFIG_I2C_PFS168=y +# CONFIG_I2C_ALGOPCF is not set +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_SENSORS=y +CONFIG_I2C_EEPROM=y +CONFIG_I2C_EEPROM=y +CONFIG_I2C_M41T11=y +CONFIG_I2C_X9221=y +CONFIG_I2C_PCF8574=y + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_SA1100_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +CONFIG_PCMCIA_SERIAL=m + +# +# PCMCIA character device support +# +# CONFIG_PCMCIA_SERIAL_CS is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS_FS=y +CONFIG_JFFS_FS_VERBOSE=0 +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_SA1100 is not set +CONFIG_FB_MQ200=y +# CONFIG_PFS168_MQVGA is not set +CONFIG_PFS168_MQTFT=y +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_CFB24=y +CONFIG_FBCON_CFB32=y +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=m + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +CONFIG_USB_KBD=m +CONFIG_USB_MOUSE=m +# CONFIG_USB_WACOM is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB Multimedia devices +# +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_DABUSB is not set + +# +# USB Network adaptors +# +# CONFIG_USB_PLUSB is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_NET1080 is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB misc drivers +# +# CONFIG_USB_RIO500 is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_INFO=y +CONFIG_MAGIC_SYSRQ=y +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set diff -Nru a/arch/arm/configs/pfs168_mqvga_defconfig b/arch/arm/configs/pfs168_mqvga_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/pfs168_mqvga_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,782 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_CLPS711X is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_PFS168=y +CONFIG_SA1111=y +CONFIG_SA1100_USB=m +CONFIG_SA1100_USB_NETLINK=m +CONFIG_SA1100_USB_CHAR=m +CONFIG_SA1100_FREQUENCY_SCALE=m +# CONFIG_SA1100_VOLTAGE_SCALE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y + +# +# General setup +# + +# +# Please ensure that you have read the help on the next option +# +# CONFIG_ANGELBOOT is not set +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=m +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="root=/dev/nfs mem=16M" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y +CONFIG_UCB1200=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# RAM/ROM Device Drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_MTDRAM is not set + +# +# Linearly Mapped Flash Device Drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_CFI_GEOMETRY is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_SBC_MEDIAGX is not set +# CONFIG_MTD_ELAN_104NC is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_CSTM_CFI_JEDEC is not set +# CONFIG_MTD_JEDEC is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_NAND_SPIA is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +CONFIG_SMC9194=y +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +CONFIG_PCMCIA_SMC91C92=m +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y +# CONFIG_IRDA_OPTIONS is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m +CONFIG_IRPORT_SIR=m + +# +# FIR device drivers +# +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +CONFIG_SA1100_FIR=m + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=115200 +CONFIG_TOUCHSCREEN_UCB1200=y +# CONFIG_TOUCHSCREEN_BITSY is not set +# CONFIG_PROFILER is not set +# CONFIG_PFS168_SPI is not set +CONFIG_PFS168_DTMF=y +CONFIG_PFS168_MISC=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_PHILIPSPAR is not set +# CONFIG_I2C_ELV is not set +# CONFIG_I2C_VELLEMAN is not set +# CONFIG_I2C_ASSABET is not set +CONFIG_I2C_PFS168=y +# CONFIG_I2C_ALGOPCF is not set +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_SENSORS=y +CONFIG_I2C_EEPROM=y +CONFIG_I2C_EEPROM=y +CONFIG_I2C_M41T11=y +CONFIG_I2C_X9221=y +CONFIG_I2C_PCF8574=y + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_SA1100_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +CONFIG_PCMCIA_SERIAL=m + +# +# PCMCIA character device support +# +# CONFIG_PCMCIA_SERIAL_CS is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS_FS=y +CONFIG_JFFS_FS_VERBOSE=0 +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_SA1100 is not set +CONFIG_FB_MQ200=y +CONFIG_PFS168_MQVGA=y +# CONFIG_PFS168_MQTFT is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_CFB24=y +CONFIG_FBCON_CFB32=y +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=m + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +CONFIG_USB_KBD=m +CONFIG_USB_MOUSE=m +# CONFIG_USB_WACOM is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB Multimedia devices +# +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_DABUSB is not set + +# +# USB Network adaptors +# +# CONFIG_USB_PLUSB is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_NET1080 is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB misc drivers +# +# CONFIG_USB_RIO500 is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_INFO=y +CONFIG_MAGIC_SYSRQ=y +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set diff -Nru a/arch/arm/configs/pfs168_sastn_defconfig b/arch/arm/configs/pfs168_sastn_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/pfs168_sastn_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,774 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_CLPS711X is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_PFS168=y +CONFIG_SA1111=y +CONFIG_SA1100_USB=m +CONFIG_SA1100_USB_NETLINK=m +CONFIG_SA1100_USB_CHAR=m +CONFIG_SA1100_FREQUENCY_SCALE=m +# CONFIG_SA1100_VOLTAGE_SCALE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y + +# +# General setup +# + +# +# Please ensure that you have read the help on the next option +# +# CONFIG_ANGELBOOT is not set +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=m +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="root=/dev/nfs mem=16M" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y +CONFIG_UCB1200=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# RAM/ROM Device Drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_MTDRAM is not set + +# +# Linearly Mapped Flash Device Drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_SBC_MEDIAGX is not set +# CONFIG_MTD_ELAN_104NC is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_CSTM_CFI_JEDEC is not set +# CONFIG_MTD_JEDEC is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_NAND_SPIA is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +CONFIG_SMC9194=y +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +CONFIG_PCMCIA_SMC91C92=m +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y +# CONFIG_IRDA_OPTIONS is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m +CONFIG_IRPORT_SIR=m + +# +# FIR device drivers +# +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +CONFIG_SA1100_FIR=m + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=115200 +CONFIG_TOUCHSCREEN_UCB1200=y +# CONFIG_TOUCHSCREEN_BITSY is not set +# CONFIG_PROFILER is not set +# CONFIG_PFS168_SPI is not set +CONFIG_PFS168_DTMF=y +CONFIG_PFS168_MISC=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_PHILIPSPAR is not set +# CONFIG_I2C_ELV is not set +# CONFIG_I2C_VELLEMAN is not set +# CONFIG_I2C_ASSABET is not set +# CONFIG_I2C_ALGOPCF is not set +CONFIG_I2C_CHARDEV=y + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_SA1100_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_PCMCIA_SERIAL_CS is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS_FS=y +CONFIG_JFFS_FS_VERBOSE=0 +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_CFB24=y +CONFIG_FBCON_CFB32=y +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=m + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +CONFIG_USB_KBD=m +CONFIG_USB_MOUSE=m +# CONFIG_USB_WACOM is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB Multimedia devices +# +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_DABUSB is not set + +# +# USB Network adaptors +# +# CONFIG_USB_PLUSB is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_NET1080 is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB misc drivers +# +# CONFIG_USB_RIO500 is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_INFO=y +CONFIG_MAGIC_SYSRQ=y +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/pfs168_satft_defconfig b/arch/arm/configs/pfs168_satft_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/pfs168_satft_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,782 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_CLPS711X is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_PFS168=y +CONFIG_SA1111=y +CONFIG_SA1100_USB=m +CONFIG_SA1100_USB_NETLINK=m +CONFIG_SA1100_USB_CHAR=m +CONFIG_SA1100_FREQUENCY_SCALE=m +# CONFIG_SA1100_VOLTAGE_SCALE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y + +# +# General setup +# + +# +# Please ensure that you have read the help on the next option +# +# CONFIG_ANGELBOOT is not set +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=m +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="root=/dev/nfs mem=16M" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y +CONFIG_UCB1200=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# RAM/ROM Device Drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_MTDRAM is not set + +# +# Linearly Mapped Flash Device Drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_CFI_GEOMETRY is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_SBC_MEDIAGX is not set +# CONFIG_MTD_ELAN_104NC is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_CSTM_CFI_JEDEC is not set +# CONFIG_MTD_JEDEC is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_NAND_SPIA is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +CONFIG_SMC9194=y +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +CONFIG_PCMCIA_SMC91C92=m +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y +# CONFIG_IRDA_OPTIONS is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m +CONFIG_IRPORT_SIR=m + +# +# FIR device drivers +# +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +CONFIG_SA1100_FIR=m + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=115200 +CONFIG_TOUCHSCREEN_UCB1200=y +# CONFIG_TOUCHSCREEN_BITSY is not set +# CONFIG_PROFILER is not set +# CONFIG_PFS168_SPI is not set +CONFIG_PFS168_DTMF=y +CONFIG_PFS168_MISC=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_PHILIPSPAR is not set +# CONFIG_I2C_ELV is not set +# CONFIG_I2C_VELLEMAN is not set +# CONFIG_I2C_ASSABET is not set +CONFIG_I2C_PFS168=y +# CONFIG_I2C_ALGOPCF is not set +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_SENSORS=y +CONFIG_I2C_EEPROM=y +CONFIG_I2C_EEPROM=y +CONFIG_I2C_M41T11=y +CONFIG_I2C_X9221=y +CONFIG_I2C_PCF8574=y + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_SA1100_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +CONFIG_PCMCIA_SERIAL=m + +# +# PCMCIA character device support +# +# CONFIG_PCMCIA_SERIAL_CS is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS_FS=y +CONFIG_JFFS_FS_VERBOSE=0 +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +# CONFIG_PFS168_SASTN is not set +CONFIG_PFS168_SATFT=y +# CONFIG_FB_MQ200 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_CFB24=y +CONFIG_FBCON_CFB32=y +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=m + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +CONFIG_USB_KBD=m +CONFIG_USB_MOUSE=m +# CONFIG_USB_WACOM is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB Multimedia devices +# +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_DABUSB is not set + +# +# USB Network adaptors +# +# CONFIG_USB_PLUSB is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_NET1080 is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB misc drivers +# +# CONFIG_USB_RIO500 is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_INFO=y +CONFIG_MAGIC_SYSRQ=y +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set diff -Nru a/arch/arm/configs/pleb_defconfig b/arch/arm/configs/pleb_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/pleb_defconfig Mon Sep 22 00:30:23 2003 @@ -0,0 +1,535 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_ANAKIN is not set + +# +# Archimedes/A5000 Implementations +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +CONFIG_SA1100_PLEB=y +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y +# CONFIG_CPU_BIG_ENDIAN is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_CPU_FREQ=y +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="console=ttySA0,9600 mem=16M@0xc0000000 mem=16M@0xc8000000 root=/dev/ram initrd=0xc0400000,4M" +# CONFIG_PFS168_CMDLINE is not set +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_CFI_INTELEXT is not set +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_SUN_UFLASH is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_SC520CDP is not set +# CONFIG_MTD_NETSC520 is not set +# CONFIG_MTD_SBC_GXX is not set +# CONFIG_MTD_ELAN_104NC is not set +# CONFIG_MTD_SA1100 is not set +# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set +# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_DBOX2 is not set +# CONFIG_MTD_CSTM_MIPS_IXX is not set +# CONFIG_MTD_CFI_FLAGADM is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +# CONFIG_MTD_OCELOT is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=m +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +CONFIG_INET_ECN=y +CONFIG_SYN_COOKIES=y +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +# CONFIG_IDE is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +# CONFIG_VT is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +# CONFIG_SERIAL_SA1100_OLD is not set +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=9600 +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +# CONFIG_UCB1200 is not set +# CONFIG_TOUCHSCREEN_UCB1200 is not set +# CONFIG_AUDIO_UCB1200 is not set +# CONFIG_ADC_UCB1200 is not set +# CONFIG_TOUCHSCREEN_BITSY is not set +CONFIG_PROFILER=y +# CONFIG_PFS168_SPI is not set +# CONFIG_PFS168_DTMF is not set +# CONFIG_PFS168_MISC is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_TMPFS=y +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/rpc_defconfig b/arch/arm/configs/rpc_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/rpc_defconfig Mon Sep 22 00:30:17 2003 @@ -0,0 +1,781 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +CONFIG_MMU=y +CONFIG_SWAP=y +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP310 is not set +# CONFIG_ARCH_L7200 is not set +CONFIG_ARCH_RPC=y +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# + +# +# CLPS711X/EP721X Implementations +# + +# +# Epxa10db +# + +# +# Footbridge Implementations +# + +# +# IOP310 Implementation Options +# + +# +# IOP310 Chipset Features +# + +# +# Intel PXA250/210 Implementations +# + +# +# SA11x0 Implementations +# +CONFIG_ARCH_ACORN=y + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_ARM610=y +CONFIG_CPU_ARM710=y +CONFIG_CPU_SA110=y +CONFIG_CPU_32v3=y + +# +# Processor Features +# + +# +# General setup +# +CONFIG_FIQ=y +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +# CONFIG_HOTPLUG is not set + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_PREEMPT is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="" +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +CONFIG_PARPORT=y +CONFIG_PARPORT_PC=y +CONFIG_PARPORT_PC_CML1=y +# CONFIG_PARPORT_SERIAL is not set +CONFIG_PARPORT_PC_FIFO=y +# CONFIG_PARPORT_PC_SUPERIO is not set +# CONFIG_PARPORT_ARC is not set +# CONFIG_PARPORT_OTHER is not set +# CONFIG_PARPORT_1284 is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set + +# +# Block devices +# +CONFIG_BLK_DEV_FD=y +# CONFIG_PARIDE is not set +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Acorn-specific block devices +# + +# +# Networking options +# +# CONFIG_PACKET is not set +CONFIG_NETLINK_DEV=y +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IPV6_SCTP__=y +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_LLC is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_ARM_ETHER1=y +CONFIG_ARM_ETHER3=y +CONFIG_ARM_ETHERH=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_ASYNC is not set +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPP_DEFLATE is not set +# CONFIG_PPP_BSDCOMP is not set +CONFIG_PPPOE=m +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_NET_FC is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# ATA/ATAPI/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +CONFIG_IDEDISK_MULTI_MODE=y +# CONFIG_IDEDISK_STROKE is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_BLK_DEV_IDEDMA=y +CONFIG_BLK_DEV_IDE_ICSIDE=y +CONFIG_BLK_DEV_IDEDMA_ICS=y +CONFIG_IDEDMA_ICS_AUTO=y +CONFIG_BLK_DEV_IDE_RAPIDE=y +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set + +# +# SCSI support +# +CONFIG_SCSI=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=m +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=y +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=y + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_REPORT_LUNS is not set +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y + +# +# SCSI low-level drivers +# +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_DMA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +# CONFIG_SCSI_PCI2000 is not set +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_ACORNSCSI_3=m +CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE=y +CONFIG_SCSI_ACORNSCSI_SYNC=y +CONFIG_SCSI_ARXESCSI=m +CONFIG_SCSI_CUMANA_2=m +CONFIG_SCSI_EESOXSCSI=m +CONFIG_SCSI_POWERTECSCSI=y + +# +# The following drivers are not fully supported +# +CONFIG_SCSI_CUMANA_1=m +CONFIG_SCSI_OAK1=m + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN_BOOL is not set + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +# CONFIG_INPUT_TSLIBDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input I/O drivers +# +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +CONFIG_SERIO=y +# CONFIG_SERIO_I8042 is not set +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PARKBD is not set +CONFIG_SERIO_RPCKBD=y + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +CONFIG_INPUT_MOUSE=y +# CONFIG_MOUSE_PS2 is not set +# CONFIG_MOUSE_SERIAL is not set +CONFIG_MOUSE_RISCPC=y +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_8250_ACORN=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set +# CONFIG_TIPAR is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_PHILIPSPAR is not set +# CONFIG_I2C_ELV is not set +# CONFIG_I2C_VELLEMAN is not set +# CONFIG_SCx200_ACB is not set +# CONFIG_I2C_ALGOPCF is not set +CONFIG_I2C_CHARDEV=y +# CONFIG_I2C_PROC is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_GEN_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_RAW_DRIVER is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=m +# CONFIG_REISERFS_FS is not set +CONFIG_ADFS_FS=y +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +# CONFIG_FAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_XFS_FS is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFSD is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_EXPORTFS is not set +# CONFIG_CIFS is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_FS_MBCACHE=y + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +CONFIG_ACORN_PARTITION=y +# CONFIG_ACORN_PARTITION_CUMANA is not set +# CONFIG_ACORN_PARTITION_EESOX is not set +CONFIG_ACORN_PARTITION_ICS=y +CONFIG_ACORN_PARTITION_ADFS=y +CONFIG_ACORN_PARTITION_POWERTEC=y +CONFIG_ACORN_PARTITION_RISCIX=y +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_MINIX_SUBPARTITION is not set +CONFIG_SOLARIS_X86_PARTITION=y +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +CONFIG_SGI_PARTITION=y +# CONFIG_ULTRIX_PARTITION is not set +CONFIG_SUN_PARTITION=y +# CONFIG_EFI_PARTITION is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +CONFIG_NLS_KOI8_R=m +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FB_ACORN=y +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +CONFIG_FBCON_MFB=y +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_CFB24=y +CONFIG_FBCON_CFB32=y +# CONFIG_FBCON_ACCEL is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_HGA is not set +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +CONFIG_FBCON_FONTS=y +# CONFIG_FONT_8x8 is not set +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +CONFIG_FONT_ACORN_8x8=y +# CONFIG_FONT_MINI_4x6 is not set + +# +# Sound +# +CONFIG_SOUND=m + +# +# Open Sound System +# +CONFIG_SOUND_PRIME=m +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +CONFIG_SOUND_OSS=m +# CONFIG_SOUND_TRACEINIT is not set +# CONFIG_SOUND_DMAP is not set +# CONFIG_SOUND_AD1816 is not set +# CONFIG_SOUND_SGALAXY is not set +# CONFIG_SOUND_ADLIB is not set +# CONFIG_SOUND_ACI_MIXER is not set +# CONFIG_SOUND_CS4232 is not set +# CONFIG_SOUND_SSCAPE is not set +# CONFIG_SOUND_GUS is not set +# CONFIG_SOUND_VMIDI is not set +# CONFIG_SOUND_TRIX is not set +# CONFIG_SOUND_MSS is not set +# CONFIG_SOUND_MPU401 is not set +# CONFIG_SOUND_NM256 is not set +# CONFIG_SOUND_MAD16 is not set +# CONFIG_SOUND_PAS is not set +# CONFIG_SOUND_PSS is not set +# CONFIG_SOUND_SB is not set +# CONFIG_SOUND_AWE32_SYNTH is not set +# CONFIG_SOUND_WAVEFRONT is not set +# CONFIG_SOUND_MAUI is not set +# CONFIG_SOUND_YM3812 is not set +# CONFIG_SOUND_OPL3SA1 is not set +# CONFIG_SOUND_OPL3SA2 is not set +# CONFIG_SOUND_UART6850 is not set +# CONFIG_SOUND_AEDSP16 is not set +CONFIG_SOUND_VIDC=m +# CONFIG_SOUND_TVMIXER is not set + +# +# Advanced Linux Sound Architecture +# +# CONFIG_SND is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set + +# +# Console Switches +# +# CONFIG_SWITCHES is not set + +# +# USB support +# + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +CONFIG_DEBUG_ERRORS=y +# CONFIG_KALLSYMS is not set +CONFIG_DEBUG_LL=y + +# +# Security options +# +CONFIG_SECURITY_CAPABILITIES=y + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set diff -Nru a/arch/arm/configs/shannon_defconfig b/arch/arm/configs/shannon_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/shannon_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,735 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_OBSOLETE=y + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# + +# +# Footbridge Implementations +# + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +CONFIG_SA1100_SHANNON=y +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_USB is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +# CONFIG_ARM_THUMB is not set +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_PCI is not set +CONFIG_ISA=y +# CONFIG_ISA_DMA is not set +# CONFIG_CPU_FREQ is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="console=ttySA0,9600 console=tty1 root=/dev/mtdblock2 init=/linuxrc" +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_BOOTLDR_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +# CONFIG_MTD_CFI_INTELEXT is not set +CONFIG_MTD_CFI_AMDSTD=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_IQ80310 is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_NMCLAN is not set +CONFIG_PCMCIA_SMC91C92=y +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDEDISK is not set +# CONFIG_BLK_DEV_IDECS is not set +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_ATARAID is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=9600 +# CONFIG_SERIAL_8250 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set + +# +# Other L3 adapters +# +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_SERIO is not set + +# +# Joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_WDT is not set +# CONFIG_WDTPCI is not set +# CONFIG_PCWATCHDOG is not set +# CONFIG_ACQUIRE_WDT is not set +# CONFIG_ADVANTECH_WDT is not set +CONFIG_SA1100_WATCHDOG=y +# CONFIG_EUROTECH_WDT is not set +# CONFIG_IB700_WDT is not set +# CONFIG_I810_TCO is not set +# CONFIG_MIXCOMWD is not set +# CONFIG_60XX_WDT is not set +# CONFIG_W83877F_WDT is not set +# CONFIG_MACHZ_WDT is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_CMS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +CONFIG_MINIX_FS=y +# CONFIG_FREEVXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_EXT2_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_NFSD is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_ZISOFS_FS is not set +# CONFIG_ZLIB_FS_INFLATE is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FB_SA1100=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +CONFIG_SOUND_SA1100=y +# CONFIG_SOUND_SA1100SSP is not set +# CONFIG_SOUND_OSS is not set + +# +# Multimedia Capabilities Port drivers +# +CONFIG_MCP=y +CONFIG_MCP_SA1100=y +CONFIG_MCP_UCB1200=y +CONFIG_MCP_UCB1200_AUDIO=y +CONFIG_MCP_UCB1200_TS=y + +# +# USB support +# +# CONFIG_USB is not set + +# +# USB Controllers +# + +# +# USB Device Class drivers +# + +# +# USB Human Interface Devices (HID) +# + +# +# USB Imaging devices +# + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# + +# +# USB port drivers +# + +# +# USB Serial Converter support +# + +# +# USB Miscellaneous drivers +# + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +CONFIG_DEBUG_LL=y diff -Nru a/arch/arm/configs/shark_defconfig b/arch/arm/configs/shark_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/shark_defconfig Mon Sep 22 00:30:23 2003 @@ -0,0 +1,852 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +CONFIG_MMU=y +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_LOG_BUF_SHIFT=14 + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_OBSOLETE_MODPARM=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP310 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +CONFIG_ARCH_SHARK=y + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# + +# +# CLPS711X/EP721X Implementations +# + +# +# Epxa10db +# + +# +# Footbridge Implementations +# + +# +# IOP310 Implementation Options +# + +# +# IOP310 Chipset Features +# + +# +# Intel PXA250/210 Implementations +# + +# +# SA11x0 Implementations +# + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_SA110=y +CONFIG_CPU_32v4=y + +# +# Processor Features +# + +# +# General setup +# +CONFIG_PCI=y +CONFIG_PCI_HOST_VIA82C505=y +CONFIG_ISA=y +CONFIG_ISA_DMA=y +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_PCI_LEGACY_PROC=y +# CONFIG_PCI_NAMES is not set +# CONFIG_HOTPLUG is not set + +# +# At least one math emulation must be selected +# +# CONFIG_FPE_NWFPE is not set +CONFIG_FPE_FASTFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_PREEMPT is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +# CONFIG_LEDS_CPU is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +CONFIG_PARPORT=y +CONFIG_PARPORT_PC=y +CONFIG_PARPORT_PC_CML1=y +# CONFIG_PARPORT_SERIAL is not set +# CONFIG_PARPORT_PC_FIFO is not set +# CONFIG_PARPORT_PC_SUPERIO is not set +# CONFIG_PARPORT_ARC is not set +# CONFIG_PARPORT_OTHER is not set +# CONFIG_PARPORT_1284 is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Plug and Play support +# +# CONFIG_PNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Networking support +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_IPV6 is not set +# CONFIG_XFRM_USER is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IPV6_SCTP__=y +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_LLC is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_MII is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set + +# +# Tulip family network device support +# +# CONFIG_NET_TULIP is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +CONFIG_NET_PCI=y +# CONFIG_PCNET32 is not set +# CONFIG_AMD8111_ETH is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set +# CONFIG_B44 is not set +CONFIG_CS89x0=y +# CONFIG_DGRS is not set +# CONFIG_EEPRO100 is not set +# CONFIG_E100 is not set +# CONFIG_FEALNX is not set +# CONFIG_NATSEMI is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_TLAN is not set +# CONFIG_VIA_RHINE is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_R8169 is not set +# CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices (depends on LLC=y) +# +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# ATA/ATAPI/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +CONFIG_BLK_DEV_IDECD=y +CONFIG_BLK_DEV_IDEFLOPPY=y +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_IDEPCI is not set +# CONFIG_IDE_CHIPSETS is not set + +# +# SCSI support +# +CONFIG_SCSI=m + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_CHR_DEV_ST=m +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_REPORT_LUNS is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_7000FASST is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +# CONFIG_SCSI_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 +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_CPQFCTS is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +# CONFIG_SCSI_NCR53C406A is not set +# CONFIG_SCSI_NCR53C7xx is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_NCR53C8XX is not set +# CONFIG_SCSI_SYM53C8XX is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PCI2000 is not set +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_ISP is not set +# CONFIG_SCSI_QLOGIC_FC is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_DEBUG is not set + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN_BOOL is not set + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +# CONFIG_INPUT_TSLIBDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input I/O drivers +# +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PARKBD is not set +# CONFIG_SERIO_PCIPS2 is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_INPORT is not set +# CONFIG_MOUSE_LOGIBM is not set +# CONFIG_MOUSE_PC110PAD is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Character devices +# +# CONFIG_VT is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_DZ is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set +# CONFIG_TIPAR is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# I2C Hardware Sensors Mainboard support +# + +# +# I2C Hardware Sensors Chip support +# + +# +# L3 serial bus support +# +# CONFIG_L3 is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_QIC02_TAPE is not set + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +CONFIG_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_HANGCHECK_TIMER is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_DEVFS_FS=y +CONFIG_DEVFS_MOUNT=y +# CONFIG_DEVFS_DEBUG is not set +# CONFIG_DEVPTS_FS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFSD is not set +CONFIG_LOCKD=y +# CONFIG_EXPORTFS is not set +CONFIG_SUNRPC=y +# CONFIG_SUNRPC_GSS is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_NEC98_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Graphics support +# +CONFIG_FB=y +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +CONFIG_FB_CYBER2000=y +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_RIVA is not set +# 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 +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_VIRTUAL is not set + +# +# Logo configuration +# +# CONFIG_LOGO is not set + +# +# Sound +# +CONFIG_SOUND=m + +# +# Advanced Linux Sound Architecture +# +# CONFIG_SND is not set + +# +# Open Sound System +# +CONFIG_SOUND_PRIME=m +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +CONFIG_SOUND_OSS=m +# CONFIG_SOUND_TRACEINIT is not set +# CONFIG_SOUND_DMAP is not set +# CONFIG_SOUND_AD1816 is not set +# CONFIG_SOUND_SGALAXY is not set +CONFIG_SOUND_ADLIB=m +# CONFIG_SOUND_ACI_MIXER is not set +# CONFIG_SOUND_CS4232 is not set +# CONFIG_SOUND_SSCAPE is not set +# CONFIG_SOUND_GUS is not set +# CONFIG_SOUND_VMIDI is not set +# CONFIG_SOUND_TRIX is not set +# CONFIG_SOUND_MSS is not set +# CONFIG_SOUND_MPU401 is not set +# CONFIG_SOUND_NM256 is not set +# CONFIG_SOUND_MAD16 is not set +# CONFIG_SOUND_PAS is not set +# CONFIG_SOUND_PSS is not set +CONFIG_SOUND_SB=m +# CONFIG_SOUND_AWE32_SYNTH is not set +# CONFIG_SOUND_WAVEFRONT is not set +# CONFIG_SOUND_MAUI is not set +# CONFIG_SOUND_YM3812 is not set +# CONFIG_SOUND_OPL3SA1 is not set +# CONFIG_SOUND_OPL3SA2 is not set +# CONFIG_SOUND_YMFPCI is not set +# CONFIG_SOUND_UART6850 is not set +# CONFIG_SOUND_AEDSP16 is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set + +# +# Console Switches +# +# CONFIG_SWITCHES is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_KERNEL is not set + +# +# Security options +# +# CONFIG_SECURITY is not set + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Library routines +# +CONFIG_CRC32=y diff -Nru a/arch/arm/configs/sherman_defconfig b/arch/arm/configs/sherman_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/sherman_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,215 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y + +# +# System and processor type +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_FOOTBRIDGE is not set +CONFIG_ARCH_SA1100=y +CONFIG_CPU_SA1100=y +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_EMPEG is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_VICTOR is not set +CONFIG_SA1100_SHERMAN=y +# CONFIG_VICTOR_BOARD1 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_ISA_DMA is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_ARM2 is not set +# CONFIG_CPU_ARM3 is not set +# CONFIG_CPU_ARM6 is not set +# CONFIG_CPU_ARM7 is not set +CONFIG_CPU_SA110=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_TEXT_SECTIONS is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# General setup +# +CONFIG_ZBOOT_ROM=y +CONFIG_ZBOOT_ROM_TEXT=0x00050000 +CONFIG_ZBOOT_ROM_BSS=0xc0200000 +# CONFIG_NET is not set +# CONFIG_SYSVIPC is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_SYSCTL is not set +CONFIG_NWFPE=y +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_ARTHUR is not set +# CONFIG_PARPORT is not set +CONFIG_CMDLINE="mem=64M@0xc0000000 mem=64M@0xc8000000 root=/dev/mtdblock2" + +# +# Plug and Play support +# +# CONFIG_PNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_IDE is not set + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_IDEDISK is not set +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_IDE_CHIPSETS is not set + +# +# Additional Block Devices +# +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_MD is not set +CONFIG_BLK_DEV_RAM=y +# CONFIG_BLK_DEV_INITRD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE_PARPORT is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_FLASH=y + +# +# Character devices +# +# CONFIG_VT is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_UNIX98_PTYS is not set +# CONFIG_MOUSE is not set +# CONFIG_QIC02_TAPE is not set +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set + +# +# Video For Linux +# +# CONFIG_VIDEO_DEV is not set + +# +# Joystick support +# +# CONFIG_JOYSTICK is not set +# CONFIG_DTLK is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# Filesystems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Partition Types +# +# CONFIG_OSF_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +# CONFIG_MSDOS_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ACORN_PARTITION is not set +CONFIG_NLS=y + +# +# Native Language Support +# +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_INFO=y +# CONFIG_MAGIC_SYSRQ is not set +CONFIG_DEBUG_LL=y diff -Nru a/arch/arm/configs/stork_defconfig b/arch/arm/configs/stork_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/stork_defconfig Mon Sep 22 00:30:24 2003 @@ -0,0 +1,966 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP310 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3100 is not set +CONFIG_SA1100_H3600=y +# CONFIG_SA1100_H3800 is not set +CONFIG_SA1100_H3XXX=y +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_USB=m +CONFIG_SA1100_USB_NETLINK=m +# CONFIG_SA1100_USB_CHAR is not set +CONFIG_H3600_SLEEVE=m + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_FORTUNET is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +# CONFIG_XSCALE_PMU is not set +# CONFIG_ARM_THUMB is not set +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_PCI is not set +CONFIG_ISA=y +# CONFIG_ISA_DMA is not set +# CONFIG_FIQ is not set +CONFIG_CPU_FREQ=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +CONFIG_PCMCIA_PROBE=y +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=m +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=m +CONFIG_FPE_FASTFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="N" +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_REDBOOT_PARTS=y +CONFIG_MTD_BOOTLDR_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_GEOMETRY is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_EPXA10DB is not set +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +CONFIG_WAVELAN=m +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set +# CONFIG_AIRO is not set +CONFIG_HERMES=m + +# +# Wireless Pcmcia cards support +# +CONFIG_PCMCIA_HERMES=m +# CONFIG_AIRO_CS is not set +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +CONFIG_PCMCIA_XIRC2PS=m +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_IDECD=m +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=115200 +CONFIG_SERIAL_8250=m +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_ATOMWIDE_SERIAL is not set +# CONFIG_DUALSP_SERIAL is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_RSA is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +CONFIG_L3=y +CONFIG_L3_ALGOBIT=y +CONFIG_L3_BIT_SA1100_GPIO=y + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set +CONFIG_BIT_SA1100_GPIO=y + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=m +# CONFIG_PSMOUSE is not set +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=m +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_PCMCIA_SERIAL_CS is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_CRAMFS=y +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +CONFIG_DEVFS_FS=y +CONFIG_DEVFS_MOUNT=y +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +CONFIG_ZLIB_FS_INFLATE=y + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +# CONFIG_FBCON_CFB8 is not set +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_CFB24 is not set +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +CONFIG_SOUND_SA1100=y +CONFIG_SOUND_UDA1341=m +# CONFIG_SOUND_ASSABET_UDA1341 is not set +CONFIG_SOUND_H3600_UDA1341=m +# CONFIG_SOUND_PANGOLIN_UDA1341 is not set +# CONFIG_SOUND_SA1111_UDA1341 is not set +# CONFIG_SOUND_SA1100SSP is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_EHCI_HCD is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set + +# +# SCSI support is needed for USB Storage +# +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_KERNEL is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_ERRORS is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set diff -Nru a/arch/arm/configs/system3_defconfig b/arch/arm/configs/system3_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/system3_defconfig Mon Sep 22 00:30:20 2003 @@ -0,0 +1,967 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +# CONFIG_KMOD is not set + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +CONFIG_SA1100_PT_SYSTEM3=y +CONFIG_SA1111=y +CONFIG_FORCE_MAX_ZONEORDER=9 +CONFIG_SA1100_USB=m +CONFIG_SA1100_USB_NETLINK=m +CONFIG_SA1100_USB_CHAR=m + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +# CONFIG_ARM_THUMB is not set +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_PCI is not set +CONFIG_ISA=y +# CONFIG_ISA_DMA is not set +CONFIG_CPU_FREQ=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=m +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="noinitrd root=/dev/mtdblock3" +CONFIG_LEDS=y +CONFIG_LEDS_TIMER=y +CONFIG_LEDS_CPU=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_REDBOOT_PARTS=m +CONFIG_MTD_BOOTLDR_PARTS=m +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +# CONFIG_MTD_CHAR is not set +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_ARM_AM79C961A is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRAMCA is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +CONFIG_SMC9194=m +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +CONFIG_PCMCIA_SMC91C92=m +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +# CONFIG_IRNET is not set +CONFIG_IRCOMM=m +# CONFIG_IRDA_ULTRA is not set +# CONFIG_IRDA_OPTIONS is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m +CONFIG_IRPORT_SIR=m + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# FIR device drivers +# +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set +CONFIG_SA1100_FIR=m + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=38400 +CONFIG_SERIAL_8250=m +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_INPUT_SERIO is not set +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_SA1100_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=m + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_CRAMFS is not set +CONFIG_TMPFS=y +# CONFIG_RAMFS is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +# CONFIG_ZLIB_FS_INFLATE is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_FONTWIDTH8_ONLY=y +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +CONFIG_USB_OHCI_SA1111=m + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +CONFIG_USB_PRINTER=m + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +CONFIG_USB_HIDDEV=y +CONFIG_USB_KBD=m +CONFIG_USB_MOUSE=m +# CONFIG_USB_WACOM is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +CONFIG_USB_USBNET=m + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_INFO=y +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_SLAB=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_WAITQ=y +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/configs/trizeps_defconfig b/arch/arm/configs/trizeps_defconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/configs/trizeps_defconfig Mon Sep 22 00:30:18 2003 @@ -0,0 +1,851 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# General setup +# +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ADIFCC is not set +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP310 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CEIVA is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_FORTUNET is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set + +# +# Epxa10db +# + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# IOP310 Implementation Options +# +# CONFIG_ARCH_IQ80310 is not set +# CONFIG_IOP310_AAU is not set +# CONFIG_IOP310_DMA is not set +# CONFIG_IOP310_MU is not set +# CONFIG_IOP310_PMON is not set + +# +# Intel PXA250/210 Implementations +# +# CONFIG_ARCH_LUBBOCK is not set +# CONFIG_ARCH_PXA_IDP is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +CONFIG_SA1100_TRIZEPS=y +CONFIG_TRIZEPS_MFTB2=y +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_STORK is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_H3600_SLEEVE is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +# CONFIG_SA1111 is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +# CONFIG_CPU_XSCALE is not set +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_32v5 is not set +# CONFIG_ARM_THUMB is not set + +# +# General setup +# +CONFIG_DISCONTIGMEM=y +# CONFIG_PCI is not set +CONFIG_ISA=y +# CONFIG_ISA_DMA is not set +# CONFIG_FIQ is not set +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZBOOT_ROM_BSS=0 +# CONFIG_CPU_FREQ is not set +# CONFIG_CPU_FREQ_24_API is not set +# CONFIG_CPU_FREQ_26_API is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=m +# CONFIG_PCMCIA_SA1111 is not set +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set +# CONFIG_PREEMPT is not set +# CONFIG_APM is not set +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="keepinitrd mem=16M root=/dev/hda2 1" +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=m +CONFIG_MTD_CONCAT=m +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_AFS_PARTS=m +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +CONFIG_MTD_SA1100=m +# CONFIG_MTD_2PARTS_IPAQ is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_EPXA10DB is not set +# CONFIG_MTD_FORTUNET is not set +# CONFIG_MTD_AUTCPU12 is not set +# CONFIG_MTD_EDB7312 is not set +# CONFIG_MTD_IMPA7 is not set +# CONFIG_MTD_CEIVA is not set +# CONFIG_MTD_PCI is not set +# CONFIG_MTD_PCMCIA is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_PNP_NAMES is not set +# CONFIG_PNP_DEBUG is not set +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IPV6_SCTP__=y +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_LLC is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_E1000_NAPI is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set +# CONFIG_WAVELAN is not set +# CONFIG_AIRO is not set +# CONFIG_HERMES is not set +# CONFIG_PCMCIA_NETWAVE is not set +# CONFIG_PCMCIA_WAVELAN is not set +# CONFIG_PCMCIA_HERMES is not set +CONFIG_AIRO_CS=m +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +# CONFIG_PCMCIA_PCNET is not set +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +CONFIG_NET_PCMCIA_RADIO=y +# CONFIG_PCMCIA_RAYCS is not set +# CONFIG_AIRONET4500_CS is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/ATAPI/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_BLK_DEV_IDE_ICSIDE is not set +# CONFIG_BLK_DEV_IDEDMA_ICS is not set +# CONFIG_IDEDMA_ICS_AUTO is not set +# CONFIG_BLK_DEV_IDEDMA is not set +# CONFIG_BLK_DEV_IDE_RAPIDE is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_DMA_NONPCI is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN_BOOL is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +# CONFIG_INPUT_TSLIBDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set +# CONFIG_GAMEPORT is not set +CONFIG_SOUND_GAMEPORT=y +# CONFIG_GAMEPORT_NS558 is not set +# CONFIG_GAMEPORT_L4 is not set +# CONFIG_GAMEPORT_EMU10K1 is not set +# CONFIG_GAMEPORT_VORTEX is not set +# CONFIG_GAMEPORT_FM801 is not set +# CONFIG_GAMEPORT_CS461x is not set +# CONFIG_SERIO is not set +# CONFIG_SERIO_I8042 is not set +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PARKBD is not set +# CONFIG_SERIO_RPCKBD is not set +# CONFIG_SERIO_AMBAKMI is not set +# CONFIG_SERIO_SA1111 is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_MOUSE_PS2 is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_INPORT is not set +# CONFIG_MOUSE_LOGIBM is not set +# CONFIG_MOUSE_PC110PAD is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_JOYSTICK_ANALOG is not set +# CONFIG_JOYSTICK_A3D is not set +# CONFIG_JOYSTICK_ADI is not set +# CONFIG_JOYSTICK_COBRA is not set +# CONFIG_JOYSTICK_GF2K is not set +# CONFIG_JOYSTICK_GRIP is not set +# CONFIG_JOYSTICK_GRIP_MP is not set +# CONFIG_JOYSTICK_GUILLEMOT is not set +# CONFIG_JOYSTICK_INTERACT is not set +# CONFIG_JOYSTICK_SIDEWINDER is not set +# CONFIG_JOYSTICK_TMDC is not set +# CONFIG_JOYSTICK_IFORCE is not set +# CONFIG_JOYSTICK_WARRIOR is not set +# CONFIG_JOYSTICK_MAGELLAN is not set +# CONFIG_JOYSTICK_SPACEORB is not set +# CONFIG_JOYSTICK_SPACEBALL is not set +# CONFIG_JOYSTICK_STINGER is not set +# CONFIG_JOYSTICK_TWIDDLER is not set +# CONFIG_JOYSTICK_DB9 is not set +# CONFIG_JOYSTICK_GAMECON is not set +# CONFIG_JOYSTICK_TURBOGRAFX is not set +# CONFIG_INPUT_JOYDUMP is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_INPUT_MISC is not set +# CONFIG_INPUT_PCSPKR is not set +# CONFIG_INPUT_UINPUT is not set + +# +# Character devices +# +# CONFIG_VT is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_CS is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_RSA is not set +# CONFIG_SERIAL_ACORN is not set +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X_OLD_NAME is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_UNIX98_PTYS is not set + +# +# I2C support +# +CONFIG_I2C=m +CONFIG_I2C_ALGOBIT=m +# CONFIG_I2C_PHILIPSPAR is not set +# CONFIG_I2C_ELV is not set +# CONFIG_I2C_VELLEMAN is not set +# CONFIG_SCx200_I2C is not set +# CONFIG_SCx200_ACB is not set +# CONFIG_I2C_BIT_SA1100_GPIO is not set +# CONFIG_I2C_ALGOPCF is not set +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_PROC=m + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_GEN_RTC is not set +# CONFIG_SA1100_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_SYNCLINK_CS is not set +# CONFIG_SCx200_GPIO is not set +# CONFIG_RAW_DRIVER is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_QFMT_V1 is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +# CONFIG_DEVPTS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_XFS_FS is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_QUOTA is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_V4 is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_NFSD_V4 is not set +# CONFIG_NFSD_TCP is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_EXPORTFS is not set +# CONFIG_CIFS is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_AFS_FS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set + +# +# Console Switches +# +# CONFIG_SWITCHES is not set +# CONFIG_SWITCHES_SA1100 is not set +# CONFIG_SWITCHES_UCB1X00 is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# +# Kernel hacking +# +# CONFIG_NO_FRAME_POINTER is not set +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SLAB is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_ERRORS=y +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set + +# +# Security options +# +CONFIG_SECURITY_CAPABILITIES=y + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_DEFLATE=m diff -Nru a/arch/arm/def-configs/a5k b/arch/arm/def-configs/a5k --- a/arch/arm/def-configs/a5k Mon Sep 22 00:30:20 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,526 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_SBUS is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -CONFIG_OBSOLETE=y - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -CONFIG_ARCH_ARCA5K=y -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -CONFIG_ARCH_A5K=y - -# -# Footbridge Implementations -# - -# -# SA11x0 Implementations -# -CONFIG_ARCH_ACORN=y -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -# CONFIG_CPU_32 is not set -CONFIG_CPU_26=y -# CONFIG_PAGESIZE_16 is not set - -# -# Processor Type -# -# CONFIG_DISCONTIGMEM is not set - -# -# General setup -# -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_NWFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -# CONFIG_BINFMT_ELF is not set -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set - -# -# Parallel port support -# -CONFIG_PARPORT=m -CONFIG_PARPORT_PC=m -# CONFIG_PARPORT_PC_FIFO is not set -CONFIG_PARPORT_PC_SUPERIO=y -# CONFIG_PARPORT_ARC is not set -# CONFIG_PARPORT_AMIGA is not set -# CONFIG_PARPORT_MFC3 is not set -# CONFIG_PARPORT_ATARI is not set -# CONFIG_PARPORT_SUNBPP is not set -# CONFIG_PARPORT_OTHER is not set -# CONFIG_PARPORT_1284 is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -CONFIG_BLK_DEV_FD=y -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=m -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Acorn-specific block devices -# -# CONFIG_BLK_DEV_FD1772 is not set -CONFIG_BLK_DEV_MFM=m -CONFIG_BLK_DEV_MFM_AUTODETECT=y - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -CONFIG_ARM_ETHER1=y -CONFIG_ARM_ETHER3=y -# CONFIG_ARM_ETHERH is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -# CONFIG_BLK_DEV_IDECS is not set -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -CONFIG_BLK_DEV_IDE_ICSIDE=y -# CONFIG_BLK_DEV_IDEDMA_ICS is not set -# CONFIG_IDEDMA_ICS_AUTO is not set -# CONFIG_BLK_DEV_IDEDMA is not set -# CONFIG_BLK_DEV_IDE_RAPIDE is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_SERIAL=y -CONFIG_SERIAL_CONSOLE=y -# CONFIG_ATOMWIDE_SERIAL is not set -# CONFIG_DUALSP_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_UNIX98_PTYS is not set -# CONFIG_PRINTER is not set -# CONFIG_PPDEV is not set - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_PHILIPSPAR is not set -# CONFIG_I2C_ELV is not set -# CONFIG_I2C_VELLEMAN is not set -# CONFIG_I2C_ALGOPCF is not set -CONFIG_I2C_CHARDEV=y - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -CONFIG_MOUSE=y -# CONFIG_PSMOUSE is not set -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -CONFIG_AUTOFS4_FS=y -CONFIG_ADFS_FS=y -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -CONFIG_FAT_FS=m -CONFIG_MSDOS_FS=m -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -# CONFIG_DEVPTS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_MOUNT_SUBDIR is not set -# CONFIG_NCPFS_NDS_DOMAINS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -CONFIG_ACORN_PARTITION=y -CONFIG_ACORN_PARTITION_ADFS=y -CONFIG_ACORN_PARTITION_ICS=y -CONFIG_ACORN_PARTITION_POWERTEC=y -CONFIG_ACORN_PARTITION_RISCIX=y -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -CONFIG_FB_ACORN=y -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_MFB=y -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -CONFIG_FBCON_FONTS=y -# CONFIG_FONT_8x8 is not set -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_SUN12x22 is not set -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_PEARL_8x8 is not set -CONFIG_FONT_ACORN_8x8=y - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -CONFIG_NO_PGT_CACHE=y -CONFIG_DEBUG_LL=y diff -Nru a/arch/arm/def-configs/adi_evb b/arch/arm/def-configs/adi_evb --- a/arch/arm/def-configs/adi_evb Mon Sep 22 00:30:21 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,681 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -CONFIG_ARCH_ADIFCC=y -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_IOP310 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -CONFIG_ARCH_ADI_EVB=y -CONFIG_XSCALE_PMU_TIMER=y -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_32v3 is not set -# CONFIG_CPU_32v4 is not set -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM926T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -# CONFIG_CPU_SA1100 is not set -CONFIG_CPU_32v4=y -CONFIG_CPU_XSCALE=y -CONFIG_ARM_THUMB=y -# CONFIG_XSCALE_TOOLS is not set -CONFIG_XSCALE_WRITE_ALLOC=y -CONFIG_XSCALE_PMU=y -CONFIG_ARM_THUMB=y -# CONFIG_DISCONTIGMEM is not set - -# -# General setup -# -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/mtdblock1 mem=32M initrd=0xc0800000,3M" -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -# CONFIG_MTD_SA1100 is not set -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -CONFIG_MTD_ADI_EVB=y -# CONFIG_MTD_PCI is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set -# CONFIG_PNPBIOS is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_CISS_SCSI_TAPE is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -# CONFIG_PACKET is not set -CONFIG_NETLINK=y -CONFIG_RTNETLINK=y -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -# CONFIG_IP_PNP_DHCP is not set -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_ARM_AM79C961A is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -# CONFIG_VT is not set -CONFIG_SERIAL=y -CONFIG_SERIAL_CONSOLE=y -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -# CONFIG_SERIAL_SA1100 is not set -# CONFIG_SERIAL_SA1100_CONSOLE is not set -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_HUB6 is not set -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set -# CONFIG_L3_SA1111 is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -CONFIG_MOUSE=y -CONFIG_PSMOUSE=y -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_CMS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_FREEVXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -# CONFIG_NFS_FS is not set -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -# CONFIG_SUNRPC is not set -# CONFIG_LOCKD is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set -# CONFIG_ZISOFS_FS is not set -# CONFIG_ZLIB_FS_INFLATE is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -# CONFIG_MSDOS_PARTITION is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set -# CONFIG_MCP_SA1100 is not set -# CONFIG_MCP_UCB1200 is not set -# CONFIG_MCP_UCB1200_AUDIO is not set -# CONFIG_MCP_UCB1200_TS is not set - -# -# USB support -# -# CONFIG_USB is not set -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set -# CONFIG_USB_OHCI_SA1111 is not set -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_USBNET is not set -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set -# CONFIG_USB_SERIAL_OMNINET is not set -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_ID75 is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_DEBUG_SLAB=y -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_NO_PGT_CACHE is not set -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/adsbitsy b/arch/arm/def-configs/adsbitsy --- a/arch/arm/def-configs/adsbitsy Mon Sep 22 00:30:23 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,664 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -CONFIG_SA1100_ADSBITSY=y -CONFIG_SA1111=y -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y -# CONFIG_CPU_BIG_ENDIAN is not set - -# -# General setup -# -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -# CONFIG_CPU_FREQ is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="ip=off mem=32M root=/dev/ram ramdisk=8192 initrd=0xc0800000,4M" -# CONFIG_PFS168_CMDLINE is not set -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -# CONFIG_IP_PNP_DHCP is not set -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_ACENIC_OMIT_TIGON_I is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=y -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -CONFIG_INPUT=y -# CONFIG_INPUT_KEYBDEV is not set -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=38400 -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 -CONFIG_UCB1200=y -CONFIG_TOUCHSCREEN_UCB1200=y -CONFIG_AUDIO_UCB1200=y -CONFIG_ADC_UCB1200=y -# CONFIG_TOUCHSCREEN_BITSY is not set -# CONFIG_PROFILER is not set -# CONFIG_PFS168_SPI is not set -# CONFIG_PFS168_DTMF is not set -# CONFIG_PFS168_MISC is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_SA1100_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -CONFIG_FAT_FS=y -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -CONFIG_VFAT_FS=y -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_JFFS2_FS is not set -CONFIG_CRAMFS=y -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -CONFIG_ROOT_NFS=y -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_E1355 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -# CONFIG_FONT_8x8 is not set -CONFIG_FONT_8x16=y -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -CONFIG_USB=y -# CONFIG_USB_DEBUG is not set -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -CONFIG_USB_OHCI=y -CONFIG_USB_OHCI_NOPCI=y -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set -# CONFIG_USB_HID is not set -# CONFIG_USB_KBD is not set -CONFIG_USB_MOUSE=y -# CONFIG_USB_WACOM is not set -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_IBMCAM is not set -# CONFIG_USB_OV511 is not set -# CONFIG_USB_PWC is not set -# CONFIG_USB_SE401 is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_DABUSB is not set -# CONFIG_USB_PLUSB is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_NET1080 is not set -# CONFIG_USB_USBNET is not set -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_RIO500 is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/anakin b/arch/arm/def-configs/anakin --- a/arch/arm/def-configs/anakin Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,632 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y - -# -# General setup -# -CONFIG_NET=y -# CONFIG_SYSVIPC is not set -# CONFIG_BSD_PROCESS_ACCT is not set -# CONFIG_SYSCTL is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -CONFIG_ARCH_ANAKIN=y -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_IOP310 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3100 is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_H3800 is not set -# CONFIG_SA1100_H3XXX is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_BADGE4 is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_PT_SYSTEM3 is not set -# CONFIG_SA1100_SHANNON is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_STORK is not set -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set -# CONFIG_H3600_SLEEVE is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_AUTCPU12 is not set -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_FORTUNET is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_32v5 is not set -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM922T is not set -# CONFIG_CPU_ARM926T is not set -# CONFIG_CPU_ARM1020 is not set -CONFIG_CPU_SA110=y -# CONFIG_CPU_SA1100 is not set -# CONFIG_CPU_XSCALE is not set -# CONFIG_XSCALE_PMU is not set - -# -# Processor Features -# - -# -# General setup -# -# CONFIG_DISCONTIGMEM is not set -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -# CONFIG_FIQ is not set -# CONFIG_ZBOOT_ROM is not set -CONFIG_ZBOOT_ROM_TEXT=0 -CONFIG_ZBOOT_ROM_BSS=0 -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_PREEMPT is not set -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="root=/dev/ram initrd=0xc0800000,4M" -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set -# CONFIG_PNPBIOS is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_CISS_SCSI_TAPE is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set - -# -# Appletalk devices -# -# CONFIG_DEV_APPLETALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -# CONFIG_NETDEVICES is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=y - -# -# IrDA protocols -# -# CONFIG_IRLAN is not set -# CONFIG_IRCOMM is not set -# CONFIG_IRDA_ULTRA is not set - -# -# IrDA options -# -# CONFIG_IRDA_CACHE_LAST_LSAP is not set -# CONFIG_IRDA_FAST_RR is not set -# CONFIG_IRDA_DEBUG is not set - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -CONFIG_IRTTY_SIR=y -# CONFIG_IRPORT_SIR is not set - -# -# Dongle support -# -# CONFIG_DONGLE is not set - -# -# FIR device drivers -# -# CONFIG_USB_IRDA is not set -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -# CONFIG_ALI_FIR is not set -# CONFIG_VLSI_FIR is not set - -# -# ATA/IDE/MFM/RLL support -# -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN_BOOL is not set - -# -# Input device support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -# CONFIG_GAMEPORT_NS558 is not set -# CONFIG_GAMEPORT_L4 is not set -# CONFIG_INPUT_EMU10K1 is not set -# CONFIG_GAMEPORT_PCIGAME is not set -# CONFIG_GAMEPORT_FM801 is not set -# CONFIG_GAMEPORT_CS461x is not set -# CONFIG_SERIO is not set -# CONFIG_SERIO_SERPORT is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_RSA is not set - -# -# Non-8250 serial port support -# - -# -# ARM Serial drivers -# -# CONFIG_ATOMWIDE_SERIAL is not set -# CONFIG_DUALSP_SERIAL is not set -CONFIG_SERIAL_ANAKIN=y -CONFIG_SERIAL_ANAKIN_CONSOLE=y -CONFIG_ANAKIN_DEFAULT_BAUDRATE=115200 -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -# CONFIG_SERIAL_SA1100 is not set -# CONFIG_SERIAL_SA1100_CONSOLE is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_TOUCHSCREEN_ANAKIN=y -# CONFIG_UNIX98_PTYS is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set - -# -# Other L3 adapters -# -# CONFIG_L3_SA1111 is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_QFMT_V1 is not set -# CONFIG_QFMT_V2 is not set -# CONFIG_QIFACE_COMPAT is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -# CONFIG_JFS_FS is not set -# CONFIG_JFS_DEBUG is not set -# CONFIG_JFS_STATISTICS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -# CONFIG_DEVPTS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -# CONFIG_NFS_FS is not set -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -# CONFIG_NFSD_TCP is not set -# CONFIG_SUNRPC is not set -# CONFIG_LOCKD is not set -# CONFIG_EXPORTFS is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set -# CONFIG_ZISOFS_FS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -CONFIG_FB_ANAKIN=y -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_SA1100 is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB16=y -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -# CONFIG_FBCON_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set -# CONFIG_MCP_SA1100 is not set -# CONFIG_MCP_UCB1200 is not set -# CONFIG_MCP_UCB1200_AUDIO is not set -# CONFIG_MCP_UCB1200_TS is not set - -# -# Console Switches -# -# CONFIG_SWITCHES is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_KERNEL is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -# CONFIG_DEBUG_ERRORS is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set - -# -# Library routines -# -# CONFIG_CRC32 is not set -# CONFIG_ZLIB_INFLATE is not set -# CONFIG_ZLIB_DEFLATE is not set diff -Nru a/arch/arm/def-configs/assabet b/arch/arm/def-configs/assabet --- a/arch/arm/def-configs/assabet Mon Sep 22 00:30:20 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,966 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -CONFIG_SA1100_ASSABET=y -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -# CONFIG_SA1100_USB_CHAR is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -# CONFIG_ARM_THUMB is not set -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_PCI is not set -CONFIG_ISA=y -# CONFIG_ISA_DMA is not set -CONFIG_CPU_FREQ=y -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -CONFIG_PM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="mem=32M console=ttySA0,38400n8 initrd=0xc0800000,3M root=/dev/ram" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -CONFIG_MTD_REDBOOT_PARTS=y -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_NOSWAP=y -# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -CONFIG_MTD_CFI_GEOMETRY=y -# CONFIG_MTD_CFI_B1 is not set -# CONFIG_MTD_CFI_B2 is not set -CONFIG_MTD_CFI_B4=y -# CONFIG_MTD_CFI_I1 is not set -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_CFI_I4 is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_PCI is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set -# CONFIG_PNPBIOS is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_CISS_SCSI_TAPE is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=m -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_ARM_AM79C961A is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=m - -# -# IrDA protocols -# -CONFIG_IRLAN=m -# CONFIG_IRNET is not set -# CONFIG_IRCOMM is not set -# CONFIG_IRDA_ULTRA is not set -# CONFIG_IRDA_OPTIONS is not set - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -# CONFIG_IRTTY_SIR is not set -# CONFIG_IRPORT_SIR is not set - -# -# Dongle support -# -# CONFIG_DONGLE is not set - -# -# FIR device drivers -# -# CONFIG_USB_IRDA is not set -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -# CONFIG_ALI_FIR is not set -# CONFIG_VLSI_FIR is not set -CONFIG_SA1100_FIR=m - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=y -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_ATARAID is not set -# CONFIG_BLK_DEV_ATARAID_PDC is not set -# CONFIG_BLK_DEV_ATARAID_HPT is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=38400 -CONFIG_SERIAL_8250=m -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_HUB6 is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -CONFIG_L3=y -CONFIG_L3_ALGOBIT=y -CONFIG_L3_BIT_SA1100_GPIO=y - -# -# Other L3 adapters -# -# CONFIG_L3_SA1111 is not set -CONFIG_BIT_SA1100_GPIO=y - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set - -# -# Input core support is needed for gameports -# - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# -CONFIG_PCMCIA_SERIAL_CS=m -# CONFIG_MWAVE is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_CMS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_CRAMFS is not set -CONFIG_TMPFS=y -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_FREEVXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set -# CONFIG_ZISOFS_FS is not set -# CONFIG_ZLIB_FS_INFLATE is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=y -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_CLPS711X is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -CONFIG_SOUND=y -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_MIDI_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_RME96XX is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_MIDI_VIA82CXXX is not set -CONFIG_SOUND_SA1100=y -CONFIG_SOUND_UDA1341=y -CONFIG_SOUND_ASSABET_UDA1341=y -# CONFIG_SOUND_H3600_UDA1341 is not set -# CONFIG_SOUND_PANGOLIN_UDA1341 is not set -# CONFIG_SOUND_SA1111_UDA1341 is not set -# CONFIG_SOUND_SA1100SSP is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_WAVEARTIST is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# Multimedia Capabilities Port drivers -# -CONFIG_MCP=y -CONFIG_MCP_SA1100=y -CONFIG_MCP_UCB1200=y -CONFIG_MCP_UCB1200_AUDIO=m -CONFIG_MCP_UCB1200_TS=y - -# -# Console Switches -# -CONFIG_SWITCHES=y -CONFIG_SWITCHES_SA1100=y -CONFIG_SWITCHES_UCB1X00=y - -# -# USB support -# -# CONFIG_USB is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set -# CONFIG_USB_OHCI_SA1111 is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# - -# -# Input core support is needed for USB HID -# - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# - -# -# USB Network adaptors -# -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_USBNET is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set -# CONFIG_USB_SERIAL_OMNINET is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_ID75 is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_SLAB is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/badge4 b/arch/arm/def-configs/badge4 --- a/arch/arm/def-configs/badge4 Mon Sep 22 00:30:23 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,1162 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y - -# -# General setup -# -CONFIG_NET=y -# CONFIG_SYSVIPC is not set -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# Loadable module support -# -CONFIG_MODULES=y -CONFIG_MODVERSIONS=y -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_IOP310 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3100 is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_H3800 is not set -# CONFIG_SA1100_H3XXX is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -CONFIG_SA1100_BADGE4=y -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_PT_SYSTEM3 is not set -# CONFIG_SA1100_SHANNON is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_STORK is not set -CONFIG_SA1111=y -CONFIG_FORCE_MAX_ZONEORDER=9 -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set -# CONFIG_H3600_SLEEVE is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_AUTCPU12 is not set -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_FORTUNET is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM922T is not set -# CONFIG_CPU_ARM926T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -# CONFIG_XSCALE_PMU is not set -# CONFIG_ARM_THUMB is not set -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_PCI is not set -CONFIG_ISA=y -# CONFIG_ISA_DMA is not set -# CONFIG_FIQ is not set -CONFIG_CPU_FREQ=y -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -CONFIG_PCMCIA_PROBE=y -# CONFIG_I82092 is not set -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -CONFIG_FPE_FASTFPE=m -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=m -CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_MISC=m -# CONFIG_PM is not set -# CONFIG_PREEMPT is not set -# CONFIG_APM is not set -CONFIG_ARTHUR=m -CONFIG_CMDLINE="init=/linuxrc root=/dev/mtdblock3" -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -CONFIG_PARPORT=m -# CONFIG_PARPORT_PC is not set -# CONFIG_PARPORT_ARC is not set -# CONFIG_PARPORT_AMIGA is not set -# CONFIG_PARPORT_MFC3 is not set -# CONFIG_PARPORT_ATARI is not set -# CONFIG_PARPORT_GSC is not set -# CONFIG_PARPORT_SUNBPP is not set -# CONFIG_PARPORT_OTHER is not set -# CONFIG_PARPORT_1284 is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -CONFIG_MTD_DEBUG=y -CONFIG_MTD_DEBUG_VERBOSE=0 -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_NOSWAP=y -# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -CONFIG_MTD_CFI_GEOMETRY=y -# CONFIG_MTD_CFI_B1 is not set -CONFIG_MTD_CFI_B2=y -# CONFIG_MTD_CFI_B4 is not set -CONFIG_MTD_CFI_I1=y -# CONFIG_MTD_CFI_I2 is not set -# CONFIG_MTD_CFI_I4 is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -CONFIG_MTD_RAM=y -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_2PARTS_IPAQ is not set -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_EPXA10DB is not set -# CONFIG_MTD_PCI is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set -# CONFIG_PNPBIOS is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_CISS_SCSI_TAPE is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_NBD=m -# CONFIG_BLK_DEV_RAM is not set -# CONFIG_BLK_DEV_INITRD is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -# CONFIG_NET_ETHERNET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -CONFIG_NET_RADIO=y -# CONFIG_STRIP is not set -# CONFIG_ARLAN is not set -# CONFIG_AIRONET4500 is not set -# CONFIG_AIRONET4500_NONCS is not set -# CONFIG_AIRONET4500_PROC is not set - -# -# Wireless ISA/PCI cards support -# -# CONFIG_WAVELAN is not set -# CONFIG_AIRO is not set -CONFIG_HERMES=y - -# -# Wireless Pcmcia/Cardbus cards support -# -CONFIG_PCMCIA_NETWAVE=m -CONFIG_PCMCIA_WAVELAN=m -CONFIG_PCMCIA_HERMES=y -CONFIG_AIRO_CS=m -CONFIG_NET_WIRELESS=y - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -CONFIG_PCMCIA_3C589=y -CONFIG_PCMCIA_3C574=m -CONFIG_PCMCIA_FMVJ18X=m -CONFIG_PCMCIA_PCNET=y -CONFIG_PCMCIA_NMCLAN=m -CONFIG_PCMCIA_SMC91C92=m -CONFIG_PCMCIA_XIRC2PS=m -CONFIG_PCMCIA_AXNET=m -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -CONFIG_NET_PCMCIA_RADIO=y -CONFIG_PCMCIA_RAYCS=m -# CONFIG_AIRONET4500_CS is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=y - -# -# IrDA protocols -# -CONFIG_IRLAN=y -# CONFIG_IRNET is not set -CONFIG_IRCOMM=y -CONFIG_IRDA_ULTRA=y - -# -# IrDA options -# -# CONFIG_IRDA_CACHE_LAST_LSAP is not set -# CONFIG_IRDA_FAST_RR is not set -# CONFIG_IRDA_DEBUG is not set - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -# CONFIG_IRTTY_SIR is not set -# CONFIG_IRPORT_SIR is not set - -# -# Dongle support -# -# CONFIG_DONGLE is not set - -# -# FIR device drivers -# -# CONFIG_USB_IRDA is not set -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -# CONFIG_ALI_FIR is not set -# CONFIG_VLSI_FIR is not set -CONFIG_SA1100_FIR=y - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=m - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=m - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=m -# CONFIG_IDEDISK_MULTI_MODE is not set -# CONFIG_IDEDISK_STROKE is not set -# CONFIG_BLK_DEV_IDECS is not set -CONFIG_BLK_DEV_IDECD=m -# CONFIG_BLK_DEV_IDETAPE is not set -CONFIG_BLK_DEV_IDEFLOPPY=m -CONFIG_BLK_DEV_IDESCSI=m - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_ATARAID is not set -# CONFIG_BLK_DEV_ATARAID_PDC is not set -# CONFIG_BLK_DEV_ATARAID_HPT is not set - -# -# SCSI support -# -CONFIG_SCSI=y - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=y -CONFIG_SD_EXTRA_DEVS=40 -CONFIG_CHR_DEV_ST=m -# CONFIG_CHR_DEV_OSST is not set -CONFIG_BLK_DEV_SR=m -# CONFIG_BLK_DEV_SR_VENDOR is not set -CONFIG_SR_EXTRA_DEVS=2 -CONFIG_CHR_DEV_SG=y - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# -# CONFIG_SCSI_MULTI_LUN is not set -# CONFIG_SCSI_CONSTANTS is not set -# CONFIG_SCSI_LOGGING is not set - -# -# SCSI low-level drivers -# -# CONFIG_SCSI_7000FASST is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AHA152X is not set -# CONFIG_SCSI_AHA1542 is not set -# CONFIG_SCSI_AHA1740 is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC7XXX_OLD is not set -# CONFIG_SCSI_DPT_I2O is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_IN2000 is not set -# CONFIG_SCSI_AM53C974 is not set -# CONFIG_SCSI_MEGARAID is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_DTC3280 is not set -# CONFIG_SCSI_EATA is not set -# CONFIG_SCSI_EATA_DMA is not set -# CONFIG_SCSI_EATA_PIO is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_GDTH is not set -# CONFIG_SCSI_GENERIC_NCR5380 is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_PPA is not set -# CONFIG_SCSI_IMM is not set -# CONFIG_SCSI_NCR53C406A is not set -# CONFIG_SCSI_NCR53C7xx is not set -# CONFIG_SCSI_PAS16 is not set -# CONFIG_SCSI_PCI2000 is not set -# CONFIG_SCSI_PCI2220I is not set -# CONFIG_SCSI_PSI240I is not set -# CONFIG_SCSI_QLOGIC_FAS is not set -# CONFIG_SCSI_SIM710 is not set -# CONFIG_SCSI_SYM53C416 is not set -# CONFIG_SCSI_T128 is not set -# CONFIG_SCSI_U14_34F is not set -# CONFIG_SCSI_DEBUG is not set - -# -# PCMCIA SCSI adapter support -# -# CONFIG_SCSI_PCMCIA is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input device support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -# CONFIG_GAMEPORT_NS558 is not set -# CONFIG_GAMEPORT_L4 is not set -# CONFIG_INPUT_EMU10K1 is not set -# CONFIG_GAMEPORT_PCIGAME is not set -# CONFIG_GAMEPORT_FM801 is not set -# CONFIG_GAMEPORT_CS461x is not set -# CONFIG_SERIO is not set -# CONFIG_SERIO_SERPORT is not set - -# -# Character devices -# -# CONFIG_VT is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=115200 -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_ATOMWIDE_SERIAL is not set -# CONFIG_DUALSP_SERIAL is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_RSA is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 -# CONFIG_PRINTER is not set -# CONFIG_PPDEV is not set - -# -# I2C support -# -CONFIG_I2C=m -CONFIG_I2C_ALGOBIT=m -# CONFIG_I2C_PHILIPSPAR is not set -CONFIG_I2C_ELV=m -CONFIG_I2C_VELLEMAN=m -# CONFIG_I2C_BIT_SA1100_GPIO is not set -CONFIG_I2C_ALGOPCF=m -CONFIG_I2C_ELEKTOR=m -CONFIG_I2C_CHARDEV=m -CONFIG_I2C_PROC=m - -# -# L3 serial bus support -# -CONFIG_L3=y -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set - -# -# Other L3 adapters -# -CONFIG_L3_SA1111=y -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -CONFIG_WATCHDOG=y -# CONFIG_WATCHDOG_NOWAYOUT is not set -CONFIG_SOFT_WATCHDOG=m -# CONFIG_WDT is not set -# CONFIG_WDTPCI is not set -# CONFIG_PCWATCHDOG is not set -# CONFIG_ACQUIRE_WDT is not set -# CONFIG_ADVANTECH_WDT is not set -# CONFIG_21285_WATCHDOG is not set -# CONFIG_977_WATCHDOG is not set -CONFIG_SA1100_WATCHDOG=m -# CONFIG_EUROTECH_WDT is not set -# CONFIG_IB700_WDT is not set -# CONFIG_I810_TCO is not set -# CONFIG_MIXCOMWD is not set -# CONFIG_60XX_WDT is not set -# CONFIG_W83877F_WDT is not set -# CONFIG_MACHZ_WDT is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -CONFIG_RTC=m -CONFIG_SA1100_RTC=m -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# - -# -# Multimedia devices -# -CONFIG_VIDEO_DEV=y - -# -# Video For Linux -# -CONFIG_VIDEO_PROC_FS=y -# CONFIG_I2C_PARPORT is not set - -# -# Video Adapters -# -# CONFIG_VIDEO_BT848 is not set -# CONFIG_VIDEO_PMS is not set -# CONFIG_VIDEO_BWQCAM is not set -# CONFIG_VIDEO_CQCAM is not set -# CONFIG_VIDEO_CPIA is not set -# CONFIG_VIDEO_SAA5249 is not set -# CONFIG_TUNER_3036 is not set -# CONFIG_VIDEO_STRADIS is not set -# CONFIG_VIDEO_ZORAN is not set -# CONFIG_VIDEO_ZORAN_BUZ is not set -# CONFIG_VIDEO_ZORAN_DC10 is not set -# CONFIG_VIDEO_ZORAN_LML33 is not set -# CONFIG_VIDEO_ZR36120 is not set -# CONFIG_VIDEO_MEYE is not set -# CONFIG_VIDEO_CYBERPRO is not set - -# -# Radio Adapters -# -# CONFIG_RADIO_CADET is not set -# CONFIG_RADIO_RTRACK is not set -# CONFIG_RADIO_RTRACK2 is not set -# CONFIG_RADIO_AZTECH is not set -# CONFIG_RADIO_GEMTEK is not set -# CONFIG_RADIO_GEMTEK_PCI is not set -# CONFIG_RADIO_MAXIRADIO is not set -# CONFIG_RADIO_MAESTRO is not set -# CONFIG_RADIO_MIROPCM20 is not set -# CONFIG_RADIO_MIROPCM20_RDS is not set -# CONFIG_RADIO_SF16FMI is not set -# CONFIG_RADIO_TERRATEC is not set -# CONFIG_RADIO_TRUST is not set -# CONFIG_RADIO_TYPHOON is not set -# CONFIG_RADIO_ZOLTRIX is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -CONFIG_EXT3_FS=m -CONFIG_JBD=m -# CONFIG_JBD_DEBUG is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -# CONFIG_UMSDOS_FS is not set -CONFIG_VFAT_FS=m -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -CONFIG_CRAMFS=m -CONFIG_TMPFS=y -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -CONFIG_MINIX_FS=m -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -CONFIG_DEVFS_FS=y -CONFIG_DEVFS_MOUNT=y -# CONFIG_DEVFS_DEBUG is not set -# CONFIG_DEVPTS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=m -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=m -CONFIG_NFS_V3=y -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=m -CONFIG_LOCKD=m -CONFIG_LOCKD_V4=y -CONFIG_SMB_FS=m -# CONFIG_SMB_NLS_DEFAULT is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set -# CONFIG_ZISOFS_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -CONFIG_SMB_NLS=y -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Sound -# -CONFIG_SOUND=y - -# -# Open Sound System -# -CONFIG_SOUND_PRIME=y -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_MIDI_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_RME96XX is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_MIDI_VIA82CXXX is not set -CONFIG_SOUND_SA1100=y -CONFIG_SOUND_UDA1341=y -# CONFIG_SOUND_ASSABET_UDA1341 is not set -# CONFIG_SOUND_H3600_UDA1341 is not set -# CONFIG_SOUND_PANGOLIN_UDA1341 is not set -CONFIG_SOUND_SA1111_UDA1341=y -# CONFIG_SOUND_STORK_UDA1341 is not set -# CONFIG_SOUND_SA1100SSP is not set -# CONFIG_SOUND_STORK_AC97 is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_WAVEARTIST is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# Advanced Linux Sound Architecture -# -# CONFIG_SND is not set - -# -# Multimedia Capabilities Port drivers -# -CONFIG_MCP=y -CONFIG_MCP_SA1100=y -# CONFIG_MCP_UCB1200 is not set -# CONFIG_MCP_UCB1200_AUDIO is not set -# CONFIG_MCP_UCB1200_TS is not set - -# -# USB support -# -CONFIG_USB=y -CONFIG_USB_DEBUG=y - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set -# CONFIG_USB_LONG_TIMEOUT is not set - -# -# USB Host Controller Drivers -# -# CONFIG_USB_EHCI_HCD is not set -# CONFIG_USB_OHCI_HCD is not set -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set -CONFIG_USB_OHCI_SA1111=y - -# -# USB Device Class drivers -# -CONFIG_USB_AUDIO=y -CONFIG_USB_BLUETOOTH=m -CONFIG_USB_STORAGE=y -CONFIG_USB_STORAGE_DEBUG=y -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -CONFIG_USB_ACM=m -CONFIG_USB_PRINTER=m - -# -# USB Human Interface Devices (HID) -# - -# -# Input core support is needed for USB HID -# - -# -# USB Imaging devices -# -CONFIG_USB_DC2XX=m -CONFIG_USB_MDC800=m -CONFIG_USB_SCANNER=m -CONFIG_USB_MICROTEK=m -CONFIG_USB_HPUSBSCSI=m - -# -# USB Multimedia devices -# -CONFIG_USB_IBMCAM=m -CONFIG_USB_OV511=m -CONFIG_USB_PWC=m -CONFIG_USB_SE401=m -# CONFIG_USB_STV680 is not set -CONFIG_USB_VICAM=m -CONFIG_USB_DSBR=m -CONFIG_USB_DABUSB=m -CONFIG_USB_KONICAWC=m - -# -# USB Network adaptors -# -CONFIG_USB_PEGASUS=m -CONFIG_USB_KAWETH=m -CONFIG_USB_CATC=m -CONFIG_USB_CDCETHER=m -CONFIG_USB_USBNET=m - -# -# USB port drivers -# -CONFIG_USB_USS720=m - -# -# USB Serial Converter support -# -CONFIG_USB_SERIAL=m -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_BELKIN=m -CONFIG_USB_SERIAL_WHITEHEAT=m -CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m -CONFIG_USB_SERIAL_EMPEG=m -CONFIG_USB_SERIAL_FTDI_SIO=m -CONFIG_USB_SERIAL_VISOR=m -# CONFIG_USB_SERIAL_IPAQ is not set -CONFIG_USB_SERIAL_IR=m -CONFIG_USB_SERIAL_EDGEPORT=m -CONFIG_USB_SERIAL_KEYSPAN_PDA=m -CONFIG_USB_SERIAL_KEYSPAN=m -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -CONFIG_USB_SERIAL_MCT_U232=m -# CONFIG_USB_SERIAL_KLSI is not set -CONFIG_USB_SERIAL_PL2303=m -CONFIG_USB_SERIAL_CYBERJACK=m -CONFIG_USB_SERIAL_XIRCOM=m -CONFIG_USB_SERIAL_OMNINET=m - -# -# USB Miscellaneous drivers -# -CONFIG_USB_RIO500=m -# CONFIG_USB_AUERSWALD is not set - -# -# Bluetooth support -# -CONFIG_BT=m -CONFIG_BT_L2CAP=m - -# -# Bluetooth device drivers -# -CONFIG_BT_HCIUSB=m -CONFIG_BT_HCIUART=m -CONFIG_BT_HCIVHCI=m - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_INFO=y -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SLAB is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set - -# -# Library routines -# -# CONFIG_CRC32 is not set -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=y diff -Nru a/arch/arm/def-configs/brutus b/arch/arm/def-configs/brutus --- a/arch/arm/def-configs/brutus Mon Sep 22 00:30:23 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,296 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_SBUS is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -CONFIG_SA1100_BRUTUS=y -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_THINCLIENT is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -CONFIG_ANGELBOOT=y -# CONFIG_SA1100_FREQUENCY_SCALE is not set -# CONFIG_SA1100_VOLTAGE_SCALE is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -CONFIG_CPU_32v4=y -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_PC_KEYMAP=y - -# -# General setup -# -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set -# CONFIG_NET is not set -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_NWFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="mem=4M@0xc0000000 mem=4M@0xc8000000 mem=4M@0xd0000000 mem=4M@0xd8000000 keepinitrd root=/dev/ram ramdisk=8192 initrd=0xd8000000,3M" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -# CONFIG_BLK_DEV_LVM is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y -# CONFIG_BLK_DEV_FLASH is not set - -# -# ATA/IDE/MFM/RLL support -# -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -# CONFIG_TOUCHSCREEN_UCB1200 is not set -# CONFIG_TOUCHSCREEN_BITSY is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set - -# -# Video For Linux -# -# CONFIG_VIDEO_DEV is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set -# CONFIG_NCPFS_NLS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_NLS is not set - -# -# Console drivers -# -# CONFIG_VGA_CONSOLE is not set -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_INFO=y -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_LL is not set diff -Nru a/arch/arm/def-configs/cerfcube b/arch/arm/def-configs/cerfcube --- a/arch/arm/def-configs/cerfcube Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,873 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -CONFIG_SA1100_CERF=y -# CONFIG_SA1100_CERF_FLASH_8MB is not set -CONFIG_SA1100_CERF_FLASH_16MB=y -# CONFIG_SA1100_CERF_FLASH_32MB is not set -# CONFIG_SA1100_CERF_CPLD is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_USB=y -CONFIG_SA1100_USB_NETLINK=y -CONFIG_SA1100_USB_CHAR=y - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -# CONFIG_ARM_THUMB is not set -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_CPU_FREQ=y -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_NET=y -CONFIG_SYSVIPC=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_SYSCTL=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="console=ttySA0 root=/dev/mtdblock3 rw mem=32M" -# CONFIG_PFS168_CMDLINE is not set -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_SUN_UFLASH is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_TQM8XXL is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_NETSC520 is not set -# CONFIG_MTD_SBC_GXX is not set -# CONFIG_MTD_ELAN_104NC is not set -# CONFIG_MTD_DBOX2 is not set -# CONFIG_MTD_CSTM_MIPS_IXX is not set -# CONFIG_MTD_CFI_FLAGADM is not set -# CONFIG_MTD_SOLUTIONENGINE is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set -# CONFIG_MTD_OCELOT is not set -# CONFIG_MTD_L440GX is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_LART is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set -# CONFIG_PNPBIOS is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -CONFIG_NETLINK=y -CONFIG_RTNETLINK=y -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -CONFIG_FILTER=y -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNGEM is not set -CONFIG_NET_VENDOR_3COM=y -# CONFIG_EL1 is not set -# CONFIG_EL2 is not set -# CONFIG_ELPLUS is not set -# CONFIG_EL16 is not set -# CONFIG_ELMC is not set -# CONFIG_ELMC_II is not set -CONFIG_CERF_CS8900A=y -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=m -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_ATARAID is not set -# CONFIG_BLK_DEV_ATARAID_PDC is not set -# CONFIG_BLK_DEV_ATARAID_HPT is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=9600 -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_HUB6 is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 -# CONFIG_UCB1200 is not set -# CONFIG_TOUCHSCREEN_UCB1200 is not set -# CONFIG_AUDIO_UCB1200 is not set -# CONFIG_ADC_UCB1200 is not set -# CONFIG_TOUCHSCREEN_H3600 is not set -# CONFIG_PROFILER is not set -# CONFIG_PFS168_SPI is not set -# CONFIG_PFS168_DTMF is not set -# CONFIG_PFS168_MISC is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set -# CONFIG_BIT_SA1100_UCB1200 is not set - -# -# Other L3 adapters -# -# CONFIG_L3_SA1111 is not set - -# -# L3 driver support -# -# CONFIG_L3_DRV_UDA1341 is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set - -# -# Input core support is needed for gameports -# - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set -# CONFIG_SONYPI is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -CONFIG_AUTOFS_FS=y -CONFIG_AUTOFS4_FS=y -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_CMS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -CONFIG_UMSDOS_FS=y -CONFIG_VFAT_FS=y -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_FREEVXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -CONFIG_ROMFS_FS=y -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -CONFIG_LOCKD_V4=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -# CONFIG_FB is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set -# CONFIG_USB_OHCI_SA1111 is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# - -# -# Input core support is needed for USB HID -# - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# -# CONFIG_USB_DABUSB is not set - -# -# USB Network adaptors -# -# CONFIG_USB_PLUSB is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_USBNET is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_OMNINET is not set - -# -# Miscellaneous USB drivers -# -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_ID75 is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/cerfpda b/arch/arm/def-configs/cerfpda --- a/arch/arm/def-configs/cerfpda Mon Sep 22 00:30:19 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,967 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -CONFIG_SA1100_CERF=y -# CONFIG_SA1100_CERF_FLASH_8MB is not set -# CONFIG_SA1100_CERF_FLASH_16MB is not set -CONFIG_SA1100_CERF_FLASH_32MB=y -CONFIG_SA1100_CERF_CPLD=y -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_USB=y -CONFIG_SA1100_USB_NETLINK=y -CONFIG_SA1100_USB_CHAR=y - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -# CONFIG_ARM_THUMB is not set -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_CPU_FREQ=y -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_NET=y -CONFIG_SYSVIPC=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_SYSCTL=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="console=ttySA0 cpufreq_max=221200 root=/dev/mtdblock3 rw mem=64M" -# CONFIG_PFS168_CMDLINE is not set -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_NOSWAP=y -# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -CONFIG_MTD_CFI_GEOMETRY=y -# CONFIG_MTD_CFI_B1 is not set -# CONFIG_MTD_CFI_B2 is not set -CONFIG_MTD_CFI_B4=y -# CONFIG_MTD_CFI_I1 is not set -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_CFI_I4 is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_SUN_UFLASH is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_TQM8XXL is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_NETSC520 is not set -# CONFIG_MTD_SBC_GXX is not set -# CONFIG_MTD_ELAN_104NC is not set -# CONFIG_MTD_DBOX2 is not set -# CONFIG_MTD_CSTM_MIPS_IXX is not set -# CONFIG_MTD_CFI_FLAGADM is not set -# CONFIG_MTD_SOLUTIONENGINE is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set -# CONFIG_MTD_OCELOT is not set -# CONFIG_MTD_L440GX is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_LART is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set -# CONFIG_PNPBIOS is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -CONFIG_NETLINK=y -CONFIG_RTNETLINK=y -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -CONFIG_FILTER=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_IP_MROUTE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNGEM is not set -CONFIG_NET_VENDOR_3COM=y -# CONFIG_EL1 is not set -# CONFIG_EL2 is not set -# CONFIG_ELPLUS is not set -# CONFIG_EL16 is not set -# CONFIG_ELMC is not set -# CONFIG_ELMC_II is not set -CONFIG_CERF_CS8900A=y -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -CONFIG_NET_RADIO=y -CONFIG_STRIP=m -CONFIG_WAVELAN=m -CONFIG_ARLAN=m -CONFIG_AIRONET4500=m -CONFIG_AIRONET4500_NONCS=m -# CONFIG_AIRONET4500_PNP is not set -# CONFIG_AIRONET4500_PCI is not set -# CONFIG_AIRONET4500_ISA is not set -# CONFIG_AIRONET4500_I365 is not set -CONFIG_AIRONET4500_PROC=m - -# -# Wireless Pcmcia cards support -# -CONFIG_PCMCIA_HERMES=m -CONFIG_AIRO_CS=m -CONFIG_NET_WIRELESS=y - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -CONFIG_PCMCIA_3C589=m -CONFIG_PCMCIA_3C574=m -CONFIG_PCMCIA_FMVJ18X=m -CONFIG_PCMCIA_PCNET=m -CONFIG_PCMCIA_NMCLAN=m -CONFIG_PCMCIA_SMC91C92=m -CONFIG_PCMCIA_XIRC2PS=m -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -CONFIG_NET_PCMCIA_RADIO=y -CONFIG_PCMCIA_RAYCS=m -CONFIG_PCMCIA_NETWAVE=m -CONFIG_PCMCIA_WAVELAN=m -CONFIG_AIRONET4500_CS=m - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_ATARAID is not set -# CONFIG_BLK_DEV_ATARAID_PDC is not set -# CONFIG_BLK_DEV_ATARAID_HPT is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=38400 -CONFIG_SERIAL_8250=y -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_HUB6 is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 -CONFIG_UCB1200=y -CONFIG_TOUCHSCREEN_UCB1200=y -CONFIG_CERF_TS_MANUAL=y -CONFIG_CERF_TS_MAXX="924" -CONFIG_CERF_TS_MAXY="920" -CONFIG_CERF_TS_MINX="57" -CONFIG_CERF_TS_MINY="52" -CONFIG_CERF_TS_RESX="240" -CONFIG_CERF_TS_RESY="320" -# CONFIG_AUDIO_UCB1200 is not set -# CONFIG_ADC_UCB1200 is not set -# CONFIG_TOUCHSCREEN_H3600 is not set -# CONFIG_PROFILER is not set -# CONFIG_PFS168_SPI is not set -# CONFIG_PFS168_DTMF is not set -# CONFIG_PFS168_MISC is not set -CONFIG_SA1100_CERF_KEYPAD=y - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set -# CONFIG_BIT_SA1100_UCB1200 is not set - -# -# Other L3 adapters -# -# CONFIG_L3_SA1111 is not set - -# -# L3 driver support -# -# CONFIG_L3_DRV_UDA1341 is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set - -# -# Input core support is needed for gameports -# - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set -# CONFIG_SONYPI is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_CMS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -CONFIG_UMSDOS_FS=y -CONFIG_VFAT_FS=y -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_FREEVXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -CONFIG_ROMFS_FS=y -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -CONFIG_LOCKD_V4=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -CONFIG_CERF_LCD_38_A=y -# CONFIG_CERF_LCD_57_A is not set -# CONFIG_CERF_LCD_72_A is not set -CONFIG_SA1100_CERF_LCD_BACKLIGHT=y -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -# CONFIG_FBCON_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y - -# -# Sound -# -CONFIG_SOUND=y -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_MIDI_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_RME96XX is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_MIDI_VIA82CXXX is not set -# CONFIG_SOUND_ASSABET_UDA1341 is not set -# CONFIG_SOUND_H3600_UDA1341 is not set -# CONFIG_SOUND_PANGOLIN_UDA1341 is not set -# CONFIG_SOUND_SA1111_UDA1341 is not set -CONFIG_SOUND_CERF_UDA1341=y -# CONFIG_SOUND_SA1100SSP is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_WAVEARTIST is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set -# CONFIG_USB_OHCI_SA1111 is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# - -# -# Input core support is needed for USB HID -# - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# -# CONFIG_USB_DABUSB is not set - -# -# USB Network adaptors -# -# CONFIG_USB_PLUSB is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_USBNET is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_OMNINET is not set - -# -# Miscellaneous USB drivers -# -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_ID75 is not set - -# -# Bluetooth support -# -CONFIG_BT=y -CONFIG_BT_L2CAP=y - -# -# Bluetooth device drivers -# -# CONFIG_BT_HCIUSB is not set -CONFIG_BT_HCIUART=y -# CONFIG_BT_HCIVHCI is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/cerfpod b/arch/arm/def-configs/cerfpod --- a/arch/arm/def-configs/cerfpod Mon Sep 22 00:30:25 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,894 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -CONFIG_SA1100_CERF=y -# CONFIG_SA1100_CERF_FLASH_8MB is not set -CONFIG_SA1100_CERF_FLASH_16MB=y -# CONFIG_SA1100_CERF_FLASH_32MB is not set -# CONFIG_SA1100_CERF_CPLD is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_USB=y -CONFIG_SA1100_USB_NETLINK=y -CONFIG_SA1100_USB_CHAR=y - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -# CONFIG_ARM_THUMB is not set -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_CPU_FREQ=y -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_NET=y -CONFIG_SYSVIPC=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_SYSCTL=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="console=ttySA0 root=/dev/mtdblock3 rw mem=32M" -# CONFIG_PFS168_CMDLINE is not set -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_SUN_UFLASH is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_TQM8XXL is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_NETSC520 is not set -# CONFIG_MTD_SBC_GXX is not set -# CONFIG_MTD_ELAN_104NC is not set -# CONFIG_MTD_DBOX2 is not set -# CONFIG_MTD_CSTM_MIPS_IXX is not set -# CONFIG_MTD_CFI_FLAGADM is not set -# CONFIG_MTD_SOLUTIONENGINE is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set -# CONFIG_MTD_OCELOT is not set -# CONFIG_MTD_L440GX is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_LART is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set -# CONFIG_PNPBIOS is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -CONFIG_NETLINK=y -CONFIG_RTNETLINK=y -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -CONFIG_FILTER=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_IP_MROUTE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNGEM is not set -CONFIG_NET_VENDOR_3COM=y -# CONFIG_EL1 is not set -# CONFIG_EL2 is not set -# CONFIG_ELPLUS is not set -# CONFIG_EL16 is not set -# CONFIG_ELMC is not set -# CONFIG_ELMC_II is not set -CONFIG_CERF_CS8900A=y -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_ATARAID is not set -# CONFIG_BLK_DEV_ATARAID_PDC is not set -# CONFIG_BLK_DEV_ATARAID_HPT is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=38400 -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_HUB6 is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 -CONFIG_UCB1200=y -CONFIG_TOUCHSCREEN_UCB1200=y -# CONFIG_CERF_TS_MANUAL is not set -CONFIG_AUDIO_UCB1200=y -# CONFIG_ADC_UCB1200 is not set -# CONFIG_TOUCHSCREEN_H3600 is not set -# CONFIG_PROFILER is not set -# CONFIG_PFS168_SPI is not set -# CONFIG_PFS168_DTMF is not set -# CONFIG_PFS168_MISC is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set -# CONFIG_BIT_SA1100_UCB1200 is not set - -# -# Other L3 adapters -# -# CONFIG_L3_SA1111 is not set - -# -# L3 driver support -# -# CONFIG_L3_DRV_UDA1341 is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set - -# -# Input core support is needed for gameports -# - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set -# CONFIG_SONYPI is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_CMS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -CONFIG_UMSDOS_FS=y -CONFIG_VFAT_FS=y -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_FREEVXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -CONFIG_ROMFS_FS=y -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -CONFIG_LOCKD_V4=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -# CONFIG_CERF_LCD_38_A is not set -CONFIG_CERF_LCD_57_A=y -# CONFIG_CERF_LCD_72_A is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -# CONFIG_FBCON_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set -# CONFIG_USB_OHCI_SA1111 is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# - -# -# Input core support is needed for USB HID -# - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# -# CONFIG_USB_DABUSB is not set - -# -# USB Network adaptors -# -# CONFIG_USB_PLUSB is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_USBNET is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_OMNINET is not set - -# -# Miscellaneous USB drivers -# -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_ID75 is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/clps7500 b/arch/arm/def-configs/clps7500 --- a/arch/arm/def-configs/clps7500 Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,520 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -CONFIG_OBSOLETE=y - -# -# Loadable module support -# -# CONFIG_MODULES is not set - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -CONFIG_ARCH_CLPS7500=y -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_FTVPCI is not set -# CONFIG_ARCH_TBOX is not set -# CONFIG_ARCH_SHARK is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_CLPS711X is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Footbridge Implementations -# - -# -# SA11x0 Implementations -# - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -CONFIG_CPU_32v3=y -# CONFIG_CPU_32v4 is not set -# CONFIG_CPU_ARM610 is not set -CONFIG_CPU_ARM710=y -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -# CONFIG_CPU_SA1100 is not set -# CONFIG_DISCONTIGMEM is not set - -# -# General setup -# -CONFIG_ANGELBOOT=y -# CONFIG_PCI is not set -CONFIG_ISA=y -# CONFIG_ISA_DMA is not set -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -# CONFIG_SYSCTL is not set -CONFIG_NWFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="mem=16M root=nfs" -# CONFIG_ALIGNMENT_TRAP is not set - -# -# Parallel port support -# -CONFIG_PARPORT=y -CONFIG_PARPORT_PC=y -CONFIG_PARPORT_PC_FIFO=y -# CONFIG_PARPORT_PC_SUPERIO is not set -# CONFIG_PARPORT_AMIGA is not set -# CONFIG_PARPORT_MFC3 is not set -# CONFIG_PARPORT_ATARI is not set -# CONFIG_PARPORT_SUNBPP is not set -# CONFIG_PARPORT_OTHER is not set -CONFIG_PARPORT_1284=y - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# RAM/ROM Device Drivers -# -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_PMC551_BUGFIX is not set -# CONFIG_MTD_PMC551_DEBUG is not set -# CONFIG_MTD_MTDRAM is not set - -# -# Linearly Mapped Flash Device Drivers -# -# CONFIG_MTD_CFI is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_JEDEC is not set - -# -# Drivers for chip mappings -# - -# -# User modules and translation layers for MTD devices -# -# CONFIG_MTD_CHAR is not set -# CONFIG_MTD_BLOCK is not set -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_DEV_LOOP is not set -CONFIG_BLK_DEV_NBD=y -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -# CONFIG_BLK_DEV_INITRD is not set -# CONFIG_BLK_DEV_FLD7500 is not set - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -CONFIG_DUMMY=y -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set -CONFIG_NET_PCI=y -# CONFIG_AC3200 is not set -# CONFIG_APRICOT is not set -CONFIG_CS89x0=y -# CONFIG_ZNET is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC_OMIT_TIGON_I is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -CONFIG_PPP=y -# CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_ASYNC is not set -# CONFIG_PPP_SYNC_TTY is not set -# CONFIG_PPP_DEFLATE is not set -# CONFIG_PPP_BSDCOMP is not set -# CONFIG_PPPOE is not set -CONFIG_SLIP=y -CONFIG_SLIP_COMPRESSED=y -# CONFIG_SLIP_SMART is not set -# CONFIG_SLIP_MODE_SLIP6 is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set -# CONFIG_ASH is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_SERIAL=y -# CONFIG_SERIAL_CONSOLE is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 -CONFIG_PRINTER=y -# CONFIG_LP_CONSOLE is not set -# CONFIG_PPDEV is not set - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_PHILIPSPAR is not set -# CONFIG_I2C_ELV is not set -# CONFIG_I2C_VELLEMAN is not set -# CONFIG_I2C_ALGOPCF is not set -# CONFIG_I2C_CHARDEV is not set - -# -# Mice -# -CONFIG_BUSMOUSE=y -# CONFIG_ATIXL_BUSMOUSE is not set -# CONFIG_LOGIBUSMOUSE is not set -# CONFIG_MS_BUSMOUSE is not set -CONFIG_MOUSE=y -# CONFIG_PSMOUSE is not set -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# - -# -# Game port support -# - -# -# Gameport joysticks -# - -# -# Serial port support -# - -# -# Serial port joysticks -# - -# -# Parallel port joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -CONFIG_CLPS7500_FLASH=y -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -CONFIG_MINIX_FS=y -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UFS_FS is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -CONFIG_ROOT_NFS=y -# CONFIG_NFSD is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -# CONFIG_MSDOS_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Console drivers -# -CONFIG_PC_KEYB=y -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -CONFIG_FB_ACORN=y -# CONFIG_CHRONTEL_7003 is not set -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -CONFIG_FBCON_MFB=y -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_CFB24=y -# CONFIG_FBCON_CFB32 is not set -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_MAC is not set -# CONFIG_FBCON_VGA_PLANES is not set -# CONFIG_FBCON_VGA is not set -# CONFIG_FBCON_HGA is not set -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -# CONFIG_FBCON_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Kernel hacking -# -# CONFIG_FRAME_POINTER is not set -# CONFIG_DEBUG_ERRORS is not set -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_LL=y diff -Nru a/arch/arm/def-configs/ebsa110 b/arch/arm/def-configs/ebsa110 --- a/arch/arm/def-configs/ebsa110 Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,605 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -CONFIG_ARCH_EBSA110=y -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_ANAKIN is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -CONFIG_CPU_SA110=y -# CONFIG_CPU_SA1100 is not set -# CONFIG_DISCONTIGMEM is not set - -# -# General setup -# -# CONFIG_PCI is not set -CONFIG_ISA=y -# CONFIG_ISA_DMA is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=m -CONFIG_I82365=y -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -# CONFIG_PCMCIA_SA1100 is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_SYSCTL=y -CONFIG_FPE_NWFPE=y -CONFIG_FPE_FASTFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="root=/dev/nfs rw mem=16M console=ttyS1,38400n8" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y - -# -# Parallel port support -# -CONFIG_PARPORT=y -CONFIG_PARPORT_PC=y -CONFIG_PARPORT_PC_FIFO=y -# CONFIG_PARPORT_PC_SUPERIO is not set -# CONFIG_PARPORT_PC_PCMCIA is not set -# CONFIG_PARPORT_ARC is not set -# CONFIG_PARPORT_AMIGA is not set -# CONFIG_PARPORT_MFC3 is not set -# CONFIG_PARPORT_ATARI is not set -# CONFIG_PARPORT_SUNBPP is not set -# CONFIG_PARPORT_OTHER is not set -CONFIG_PARPORT_1284=y - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -# CONFIG_BLK_DEV_INITRD is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -CONFIG_NETLINK=y -CONFIG_RTNETLINK=y -# CONFIG_NETLINK_DEV is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_RTNETLINK=y -CONFIG_NETLINK=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_FWMARK=y -CONFIG_IP_ROUTE_NAT=y -# CONFIG_IP_ROUTE_MULTIPATH is not set -# CONFIG_IP_ROUTE_TOS is not set -CONFIG_IP_ROUTE_VERBOSE=y -# CONFIG_IP_ROUTE_LARGE_TABLES is not set -CONFIG_IP_PNP=y -# CONFIG_IP_PNP_DHCP is not set -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_IP_MROUTE is not set -# CONFIG_ARPD is not set -CONFIG_INET_ECN=y -CONFIG_SYN_COOKIES=y - -# -# IP: Netfilter Configuration -# -CONFIG_IP_NF_CONNTRACK=y -CONFIG_IP_NF_FTP=y -CONFIG_IP_NF_IRC=y -# CONFIG_IP_NF_QUEUE is not set -CONFIG_IP_NF_IPTABLES=y -CONFIG_IP_NF_MATCH_LIMIT=y -# CONFIG_IP_NF_MATCH_MAC is not set -CONFIG_IP_NF_MATCH_MARK=y -CONFIG_IP_NF_MATCH_MULTIPORT=y -CONFIG_IP_NF_MATCH_TOS=y -# CONFIG_IP_NF_MATCH_TCPMSS is not set -CONFIG_IP_NF_MATCH_STATE=y -CONFIG_IP_NF_MATCH_UNCLEAN=y -# CONFIG_IP_NF_MATCH_OWNER is not set -CONFIG_IP_NF_FILTER=y -CONFIG_IP_NF_TARGET_REJECT=y -# CONFIG_IP_NF_TARGET_MIRROR is not set -CONFIG_IP_NF_NAT=y -CONFIG_IP_NF_NAT_NEEDED=y -CONFIG_IP_NF_TARGET_MASQUERADE=y -CONFIG_IP_NF_TARGET_REDIRECT=y -CONFIG_IP_NF_NAT_IRC=y -CONFIG_IP_NF_NAT_FTP=y -CONFIG_IP_NF_MANGLE=y -CONFIG_IP_NF_TARGET_TOS=y -CONFIG_IP_NF_TARGET_MARK=y -CONFIG_IP_NF_TARGET_LOG=y -# CONFIG_IP_NF_TARGET_TCPMSS is not set -CONFIG_IPV6=y - -# -# IPv6: Netfilter Configuration -# -CONFIG_IP6_NF_IPTABLES=y -CONFIG_IP6_NF_MATCH_LIMIT=y -CONFIG_IP6_NF_MATCH_MARK=y -CONFIG_IP6_NF_FILTER=y -CONFIG_IP6_NF_MANGLE=y -CONFIG_IP6_NF_TARGET_MARK=y -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -CONFIG_ARM_AM79C961A=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_FILTER is not set -CONFIG_PPP_ASYNC=m -# CONFIG_PPP_SYNC_TTY is not set -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -# CONFIG_PPPOE is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=m -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set - -# -# Character devices -# -# CONFIG_VT is not set -CONFIG_SERIAL=y -CONFIG_SERIAL_CONSOLE=y -CONFIG_SERIAL_EXTENDED=y -# CONFIG_SERIAL_MANY_PORTS is not set -# CONFIG_SERIAL_SHARE_IRQ is not set -# CONFIG_SERIAL_DETECT_IRQ is not set -# CONFIG_SERIAL_MULTIPORT is not set -# CONFIG_HUB6 is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_SA1100 is not set -# CONFIG_SERIAL_SA1100_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 -CONFIG_PRINTER=m -# CONFIG_LP_CONSOLE is not set -# CONFIG_PPDEV is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -CONFIG_WATCHDOG=y -# CONFIG_WATCHDOG_NOWAYOUT is not set -CONFIG_SOFT_WATCHDOG=y -# CONFIG_WDT is not set -# CONFIG_WDTPCI is not set -# CONFIG_PCWATCHDOG is not set -# CONFIG_ACQUIRE_WDT is not set -# CONFIG_ADVANTECH_WDT is not set -# CONFIG_60XX_WDT is not set -# CONFIG_MIXCOMWD is not set -# CONFIG_I810_TCO is not set -# CONFIG_MACHZ_WDT is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# -# CONFIG_PCMCIA_SERIAL_CS is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -CONFIG_AUTOFS4_FS=y -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -CONFIG_MINIX_FS=y -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_EXT2_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -CONFIG_ROOT_NFS=y -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -# CONFIG_MSDOS_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/edb7211 b/arch/arm/def-configs/edb7211 --- a/arch/arm/def-configs/edb7211 Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,401 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -# CONFIG_MODULES is not set - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -CONFIG_ARCH_CLPS711X=y - -# -# Archimedes/A5000 Implementations -# - -# -# Footbridge Implementations -# - -# -# SA11x0 Implementations -# - -# -# CLPS711X/EP721X Implementations -# -CONFIG_ARCH_EDB7211=y -CONFIG_EP7211_BOOT_MODE=y -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -CONFIG_ARCH_EP7211=y -# CONFIG_ARCH_EP7212 is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -CONFIG_CPU_ARM720T=y -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -# CONFIG_CPU_SA1100 is not set -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_ANGELBOOT is not set -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_NWFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -# CONFIG_NET_ETHERNET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set - -# -# Character devices -# -# CONFIG_VT is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -CONFIG_SERIAL_CLPS711X=y -CONFIG_SERIAL_CLPS711X_CONSOLE=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_CRAMFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -CONFIG_MINIX_FS=y -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_NFS_FS is not set -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -# CONFIG_SUNRPC is not set -# CONFIG_LOCKD is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -# CONFIG_MSDOS_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_LL=y diff -Nru a/arch/arm/def-configs/empeg b/arch/arm/def-configs/empeg --- a/arch/arm/def-configs/empeg Mon Sep 22 00:30:24 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,265 +0,0 @@ -# -# -# Example empeg-car kernel configuration file. -# -CONFIG_ARM=y - -# -# System and processor type -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_FOOTBRIDGE is not set -CONFIG_ARCH_SA1100=y -CONFIG_CPU_SA1100=y -# CONFIG_SA1100_BRUTUS is not set -CONFIG_SA1100_EMPEG=y -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_EMPEG_HENRY is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_ISA_DMA is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_ARM2 is not set -# CONFIG_CPU_ARM3 is not set -# CONFIG_CPU_ARM6 is not set -# CONFIG_CPU_ARM7 is not set -CONFIG_CPU_SA110=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_ALIGNMENT_TRAP is not set -# CONFIG_TEXT_SECTIONS is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -CONFIG_MODVERSIONS=y -# CONFIG_KMOD is not set - -# -# General setup -# -CONFIG_NET=y -# CONFIG_SYSVIPC is not set -# CONFIG_BSD_PROCESS_ACCT is not set -# CONFIG_SYSCTL is not set -CONFIG_NWFPE=y -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_ARTHUR is not set -# CONFIG_PARPORT is not set -CONFIG_CMDLINE="mem=4M@0xc0000000 mem=4M@0xc8000000 root=/dev/hda1 initrd=0xd00b0000,320K" - -# -# Plug and Play support -# -# CONFIG_PNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -CONFIG_BLK_DEV_IDE=y -# CONFIG_BLK_DEV_HD_IDE is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -# CONFIG_BLK_DEV_MD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_INITRD=y -# CONFIG_BLK_DEV_XD is not set -CONFIG_PARIDE_PARPORT=y -# CONFIG_PARIDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# Character devices -# -# CONFIG_VT is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_UNIX98_PTYS is not set -# CONFIG_MOUSE is not set -# CONFIG_QIC02_TAPE is not set -# CONFIG_WATCHDOG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_EMPEG_IR=y -CONFIG_EMPEG_USB=y - -# -# Video For Linux -# -CONFIG_VIDEO_DEV=y -# CONFIG_RADIO_RTRACK is not set -# CONFIG_RADIO_RTRACK2 is not set -# CONFIG_RADIO_AZTECH is not set -# CONFIG_RADIO_CADET is not set -# CONFIG_RADIO_MIROPCM20 is not set -# CONFIG_RADIO_GEMTEK is not set -CONFIG_RADIO_EMPEG=y -# CONFIG_VIDEO_BT848 is not set -# CONFIG_VIDEO_PMS is not set -# CONFIG_VIDEO_SAA5249 is not set -# CONFIG_RADIO_SF16FMI is not set -# CONFIG_RADIO_TYPHOON is not set -# CONFIG_RADIO_ZOLTRIX is not set - -# -# Joystick support -# -# CONFIG_JOYSTICK is not set -# CONFIG_DTLK is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK is not set -# CONFIG_FIREWALL is not set -# CONFIG_FILTER is not set -# CONFIG_UNIX is not set -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_IP_ROUTER is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_IP_ALIAS is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_INET_RARP is not set -# CONFIG_SKB_LARGE is not set -# CONFIG_IPV6 is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_BRIDGE is not set -# CONFIG_LLC is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set -# CONFIG_CPU_IS_SLOW is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA subsystem support -# -# CONFIG_IRDA is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_EQUALIZER is not set -# CONFIG_NET_ETHERNET is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_DLCI is not set -CONFIG_PPP=y -# CONFIG_SLIP is not set -# CONFIG_NET_RADIO is not set -# CONFIG_TR is not set -# CONFIG_SHAPER is not set -# CONFIG_HOSTESS_SV11 is not set -# CONFIG_COSA is not set -# CONFIG_RCPCI is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# Filesystems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_NFS_FS is not set -# CONFIG_NFSD is not set -# CONFIG_SUNRPC is not set -# CONFIG_LOCKD is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set - -# -# Partition Types -# -# CONFIG_OSF_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SGI_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ACORN_PARTITION is not set -# CONFIG_NLS is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_USER_BACKTRACE=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_LL is not set diff -Nru a/arch/arm/def-configs/epxa10db b/arch/arm/def-configs/epxa10db --- a/arch/arm/def-configs/epxa10db Mon Sep 22 00:30:20 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,566 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -CONFIG_MMU=y -CONFIG_SWAP=y -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y - -# -# General setup -# -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_LOG_BUF_SHIFT=14 - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODULE_UNLOAD is not set -CONFIG_OBSOLETE_MODPARM=y -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_PXA is not set -# CONFIG_ARCH_EBSA110 is not set -CONFIG_ARCH_CAMELOT=y -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_IOP310 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# - -# -# CLPS711X/EP721X Implementations -# - -# -# Epxa10db -# - -# -# PLD hotswap support -# -CONFIG_PLD=y -# CONFIG_PLD_HOTSWAP is not set - -# -# Footbridge Implementations -# - -# -# IOP310 Implementation Options -# - -# -# IOP310 Chipset Features -# - -# -# Intel PXA250/210 Implementations -# - -# -# SA11x0 Implementations -# - -# -# Processor Type -# -CONFIG_CPU_32=y -CONFIG_CPU_ARM922T=y -CONFIG_CPU_32v4=y - -# -# Processor Features -# -# CONFIG_ARM_THUMB is not set -# CONFIG_CPU_ICACHE_DISABLE is not set -# CONFIG_CPU_DCACHE_DISABLE is not set -# CONFIG_CPU_DCACHE_WRITETHROUGH is not set - -# -# General setup -# -# CONFIG_ZBOOT_ROM is not set -CONFIG_ZBOOT_ROM_TEXT=0 -CONFIG_ZBOOT_ROM_BSS=0 -# CONFIG_HOTPLUG is not set - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_PREEMPT is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="mem=32M console=ttyUA0,38400 root=/dev/mtdblock0 rw" -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -CONFIG_MTD_DEBUG=y -CONFIG_MTD_DEBUG_VERBOSE=0 -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_CONCAT is not set -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_CMDLINE_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -CONFIG_MTD_EPXA10DB=y -# CONFIG_MTD_EDB7312 is not set -# CONFIG_MTD_UCLINUX is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play support -# -# CONFIG_PNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -# CONFIG_BLK_DEV_INITRD is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set - -# -# Networking support -# -CONFIG_NET=y - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_XFRM_USER is not set -# CONFIG_IPV6 is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -CONFIG_IPV6_SCTP__=y -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_LLC is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -CONFIG_NETDEVICES=y -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -CONFIG_ETHER00=m - -# -# Ethernet (1000 Mbit) -# -CONFIG_PPP=y -CONFIG_PPP_MULTILINK=y -CONFIG_PPP_ASYNC=y -CONFIG_PPP_SYNC_TTY=y -# CONFIG_PPP_DEFLATE is not set -# CONFIG_PPP_BSDCOMP is not set -# CONFIG_PPPOE is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices (depends on LLC=y) -# -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# ATA/ATAPI/MFM/RLL support -# -# CONFIG_IDE is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN_BOOL is not set - -# -# Input device support -# -# CONFIG_INPUT is not set - -# -# Userland interfaces -# - -# -# Input I/O drivers -# -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -# CONFIG_SERIO is not set - -# -# Input Device Drivers -# - -# -# Character devices -# -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_8250 is not set - -# -# Non-8250 serial port support -# -# CONFIG_SERIAL_DZ is not set -CONFIG_SERIAL_UART00=y -CONFIG_SERIAL_UART00_CONSOLE=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# I2C Hardware Sensors Mainboard support -# - -# -# I2C Hardware Sensors Chip support -# - -# -# L3 serial bus support -# -# CONFIG_L3 is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_QIC02_TAPE is not set - -# -# IPMI -# -# CONFIG_IPMI_HANDLER is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_GEN_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -# CONFIG_RAW_DRIVER is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_FAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_JFFS2_FS_NAND is not set -# CONFIG_CRAMFS is not set -CONFIG_TMPFS=y -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -CONFIG_ROMFS_FS=y -CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UFS_FS is not set -# CONFIG_XFS_FS is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_NFS_V4 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -CONFIG_SUNRPC=y -# CONFIG_SUNRPC_GSS is not set -CONFIG_LOCKD=y -# CONFIG_EXPORTFS is not set -# CONFIG_CIFS is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set - -# -# Graphics support -# -# CONFIG_FB is not set - -# -# Console display driver support -# -# CONFIG_VGA_CONSOLE is not set -# CONFIG_MDA_CONSOLE is not set -CONFIG_DUMMY_CONSOLE=y - -# -# Misc devices -# - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set - -# -# Console Switches -# -# CONFIG_SWITCHES is not set - -# -# USB support -# - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_KERNEL is not set - -# -# Security options -# -# CONFIG_SECURITY is not set - -# -# Cryptographic options -# -# CONFIG_CRYPTO is not set - -# -# Library routines -# -# CONFIG_CRC32 is not set -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=y diff -Nru a/arch/arm/def-configs/flexanet b/arch/arm/def-configs/flexanet --- a/arch/arm/def-configs/flexanet Mon Sep 22 00:30:24 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,900 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_EXTENEX1 is not set -CONFIG_SA1100_FLEXANET=y -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHANNON is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_USB=y -CONFIG_SA1100_USB_NETLINK=y -# CONFIG_SA1100_USB_CHAR is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_AUTCPU12 is not set -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM922T is not set -# CONFIG_CPU_ARM926T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -# CONFIG_ARM_THUMB is not set -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_PCI is not set -CONFIG_ISA=y -# CONFIG_ISA_DMA is not set -CONFIG_CPU_FREQ=y -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82092 is not set -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -CONFIG_FPE_FASTFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -CONFIG_PM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="mem=64M root=/dev/ram initrd=0xc0800000,3M" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -CONFIG_MTD_REDBOOT_PARTS=y -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -# CONFIG_MTD_CHAR is not set -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_NOSWAP=y -# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_GEOMETRY is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_PCI is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -# CONFIG_IP_PNP_BOOTP is not set -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_ARM_AM79C961A is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -CONFIG_NET_VENDOR_SMC=y -# CONFIG_WD80x3 is not set -# CONFIG_ULTRAMCA is not set -# CONFIG_ULTRA is not set -# CONFIG_ULTRA32 is not set -CONFIG_SMC9194=y -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -CONFIG_NET_RADIO=y -# CONFIG_STRIP is not set -# CONFIG_WAVELAN is not set -# CONFIG_ARLAN is not set -# CONFIG_AIRONET4500 is not set -# CONFIG_AIRONET4500_NONCS is not set -# CONFIG_AIRONET4500_PROC is not set -# CONFIG_AIRO is not set -CONFIG_HERMES=m - -# -# Wireless Pcmcia cards support -# -CONFIG_PCMCIA_HERMES=m -# CONFIG_AIRO_CS is not set -CONFIG_NET_WIRELESS=y - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_PCMCIA_AXNET is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=y -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_ATARAID is not set -# CONFIG_BLK_DEV_ATARAID_PDC is not set -# CONFIG_BLK_DEV_ATARAID_HPT is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=57600 -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_HUB6 is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set - -# -# Other L3 adapters -# -# CONFIG_L3_SA1111 is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set - -# -# Input core support is needed for gameports -# - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -CONFIG_ROOT_NFS=y -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set -# CONFIG_ZISOFS_FS is not set -# CONFIG_ZLIB_FS_INFLATE is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_CLPS711X is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -# CONFIG_FBCON_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y - -# -# Sound -# -CONFIG_SOUND=y -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_MIDI_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_RME96XX is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_MIDI_VIA82CXXX is not set -# CONFIG_SOUND_SA1100 is not set -# CONFIG_SOUND_UDA1341 is not set -# CONFIG_SOUND_ASSABET_UDA1341 is not set -# CONFIG_SOUND_H3600_UDA1341 is not set -# CONFIG_SOUND_PANGOLIN_UDA1341 is not set -# CONFIG_SOUND_SA1111_UDA1341 is not set -# CONFIG_SOUND_SA1100SSP is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_WAVEARTIST is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set -# CONFIG_MCP_SA1100 is not set -# CONFIG_MCP_UCB1200 is not set -# CONFIG_MCP_UCB1200_AUDIO is not set -# CONFIG_MCP_UCB1200_TS is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set -# CONFIG_USB_OHCI_SA1111 is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# - -# -# Input core support is needed for USB HID -# - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# - -# -# USB Network adaptors -# -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_USBNET is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set -# CONFIG_USB_SERIAL_OMNINET is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_RIO500 is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_KERNEL is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -# CONFIG_DEBUG_ERRORS is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/footbridge b/arch/arm/def-configs/footbridge --- a/arch/arm/def-configs/footbridge Mon Sep 22 00:30:20 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,880 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -CONFIG_ARCH_FOOTBRIDGE=y -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_CLPS711X is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -CONFIG_ARCH_EBSA285_HOST=y -CONFIG_ARCH_NETWINDER=y - -# -# SA11x0 Implementations -# - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_ACORN is not set -CONFIG_FOOTBRIDGE=y -CONFIG_FOOTBRIDGE_HOST=y -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_ARCH_EBSA285=y -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -CONFIG_CPU_32v4=y -CONFIG_CPU_SA110=y -# CONFIG_DISCONTIGMEM is not set - -# -# General setup -# -# CONFIG_ANGELBOOT is not set -CONFIG_PCI=y -CONFIG_ISA=y -CONFIG_ISA_DMA=y -CONFIG_PCI_NAMES=y -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_SYSCTL=y -CONFIG_NWFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -# CONFIG_LEDS_CPU is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -CONFIG_PARPORT=y -CONFIG_PARPORT_PC=y -CONFIG_PARPORT_PC_FIFO=y -# CONFIG_PARPORT_PC_SUPERIO is not set -# CONFIG_PARPORT_ARC is not set -# CONFIG_PARPORT_AMIGA is not set -# CONFIG_PARPORT_MFC3 is not set -# CONFIG_PARPORT_ATARI is not set -# CONFIG_PARPORT_SUNBPP is not set -# CONFIG_PARPORT_OTHER is not set -CONFIG_PARPORT_1284=y - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Plug and Play configuration -# -CONFIG_PNP=y -CONFIG_ISAPNP=y - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -CONFIG_PARIDE=m -CONFIG_PARIDE_PARPORT=y - -# -# Parallel IDE high-level drivers -# -CONFIG_PARIDE_PD=m -CONFIG_PARIDE_PCD=m -CONFIG_PARIDE_PF=m -CONFIG_PARIDE_PT=m -CONFIG_PARIDE_PG=m - -# -# Parallel IDE protocol modules -# -CONFIG_PARIDE_ATEN=m -CONFIG_PARIDE_BPCK=m -CONFIG_PARIDE_COMM=m -CONFIG_PARIDE_DSTR=m -CONFIG_PARIDE_FIT2=m -CONFIG_PARIDE_FIT3=m -CONFIG_PARIDE_EPAT=m -CONFIG_PARIDE_EPIA=m -CONFIG_PARIDE_FRIQ=m -CONFIG_PARIDE_FRPW=m -CONFIG_PARIDE_KBIC=m -CONFIG_PARIDE_KTTI=m -CONFIG_PARIDE_ON20=m -CONFIG_PARIDE_ON26=m -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=m -CONFIG_BLK_DEV_NBD=m -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Networking options -# -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_IP_MROUTE is not set -# CONFIG_INET_ECN is not set -CONFIG_SYN_COOKIES=y -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -CONFIG_ATM=y -# CONFIG_ATM_CLIP is not set -# CONFIG_ATM_LANE is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -CONFIG_NET_VENDOR_3COM=y -# CONFIG_EL1 is not set -# CONFIG_EL2 is not set -# CONFIG_ELPLUS is not set -# CONFIG_EL16 is not set -# CONFIG_EL3 is not set -# CONFIG_3C515 is not set -# CONFIG_ELMC is not set -# CONFIG_ELMC_II is not set -CONFIG_VORTEX=y -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set -CONFIG_NET_PCI=y -# CONFIG_PCNET32 is not set -# CONFIG_ADAPTEC_STARFIRE is not set -# CONFIG_AC3200 is not set -# CONFIG_APRICOT is not set -# CONFIG_CS89x0 is not set -CONFIG_TULIP=m -# CONFIG_DE4X5 is not set -# CONFIG_DGRS is not set -# CONFIG_DM9102 is not set -# CONFIG_EEPRO100 is not set -# CONFIG_EEPRO100_PM is not set -# CONFIG_LNE390 is not set -# CONFIG_NATSEMI is not set -CONFIG_NE2K_PCI=y -# CONFIG_NE3210 is not set -# CONFIG_ES3210 is not set -# CONFIG_8139TOO is not set -# CONFIG_RTL8129 is not set -# CONFIG_SIS900 is not set -# CONFIG_EPIC100 is not set -# CONFIG_SUNDANCE is not set -# CONFIG_TLAN is not set -# CONFIG_VIA_RHINE is not set -# CONFIG_WINBOND_840 is not set -# CONFIG_HAPPYMEAL is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -CONFIG_PPP_ASYNC=m -# CONFIG_PPP_SYNC_TTY is not set -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPPOE=m -CONFIG_SLIP=m -CONFIG_SLIP_COMPRESSED=y -CONFIG_SLIP_SMART=y -CONFIG_SLIP_MODE_SLIP6=y - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=m - -# -# IrDA protocols -# -CONFIG_IRLAN=m -CONFIG_IRNET=m -CONFIG_IRCOMM=m -CONFIG_IRDA_ULTRA=y -CONFIG_IRDA_OPTIONS=y - -# -# IrDA options -# -CONFIG_IRDA_CACHE_LAST_LSAP=y -CONFIG_IRDA_FAST_RR=y -CONFIG_IRDA_DEBUG=y - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -# CONFIG_IRTTY_SIR is not set -# CONFIG_IRPORT_SIR is not set - -# -# FIR device drivers -# -# CONFIG_NSC_FIR is not set -CONFIG_WINBOND_FIR=m -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set - -# -# Dongle support -# -# CONFIG_DONGLE is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -CONFIG_IDEDISK_MULTI_MODE=y -# CONFIG_BLK_DEV_IDECS is not set -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_BLK_DEV_RZ1000 is not set -CONFIG_IDEPCI_SHARE_IRQ=y -CONFIG_BLK_DEV_IDEDMA_PCI=y -CONFIG_BLK_DEV_OFFBOARD=y -CONFIG_IDEDMA_PCI_AUTO=y -CONFIG_BLK_DEV_IDEDMA=y -# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set -# CONFIG_BLK_DEV_AEC62XX is not set -# CONFIG_AEC62XX_TUNING is not set -# CONFIG_BLK_DEV_ALI15X3 is not set -# CONFIG_WDC_ALI15X3 is not set -# CONFIG_BLK_DEV_AMD7409 is not set -# CONFIG_AMD7409_OVERRIDE is not set -# CONFIG_BLK_DEV_CMD64X is not set -CONFIG_BLK_DEV_CY82C693=y -# CONFIG_BLK_DEV_CS5530 is not set -# CONFIG_BLK_DEV_HPT34X is not set -# CONFIG_HPT34X_AUTODMA is not set -# CONFIG_BLK_DEV_HPT366 is not set -# CONFIG_BLK_DEV_NS87415 is not set -# CONFIG_BLK_DEV_OPTI621 is not set -# CONFIG_PDC202XX_BURST is not set -# CONFIG_BLK_DEV_OSB4 is not set -# CONFIG_BLK_DEV_SIS5513 is not set -# CONFIG_BLK_DEV_TRM290 is not set -# CONFIG_BLK_DEV_VIA82CXXX is not set -CONFIG_BLK_DEV_SL82C105=y -# CONFIG_IDE_CHIPSETS is not set -CONFIG_IDEDMA_AUTO=y -# CONFIG_IDEDMA_IVB is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_IEEE1394 is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_PCI is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_SERIAL=y -CONFIG_SERIAL_CONSOLE=y -# CONFIG_SERIAL_EXTENDED is not set -CONFIG_SERIAL_NONSTANDARD=y -# CONFIG_COMPUTONE is not set -# CONFIG_ROCKETPORT is not set -# CONFIG_CYCLADES is not set -# CONFIG_DIGIEPCA is not set -# CONFIG_DIGI is not set -# CONFIG_ESPSERIAL is not set -# CONFIG_MOXA_INTELLIO is not set -# CONFIG_MOXA_SMARTIO is not set -# CONFIG_ISI is not set -# CONFIG_SYNCLINK is not set -# CONFIG_N_HDLC is not set -# CONFIG_RISCOM8 is not set -# CONFIG_SPECIALIX is not set -# CONFIG_SX is not set -# CONFIG_RIO is not set -# CONFIG_STALDRV is not set -CONFIG_SERIAL_21285=y -CONFIG_SERIAL_21285_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 -CONFIG_PRINTER=m -# CONFIG_LP_CONSOLE is not set -# CONFIG_PPDEV is not set - -# -# I2C support -# -CONFIG_I2C=m -# CONFIG_I2C_ALGOBIT is not set -# CONFIG_I2C_ALGOPCF is not set -# CONFIG_I2C_CHARDEV is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -CONFIG_MOUSE=y -CONFIG_PSMOUSE=y -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -CONFIG_WATCHDOG=y -# CONFIG_WATCHDOG_NOWAYOUT is not set -CONFIG_SOFT_WATCHDOG=y -# CONFIG_WDT is not set -# CONFIG_WDTPCI is not set -# CONFIG_PCWATCHDOG is not set -# CONFIG_ACQUIRE_WDT is not set -# CONFIG_60XX_WDT is not set -# CONFIG_MIXCOMWD is not set -# CONFIG_I810_TCO is not set -CONFIG_21285_WATCHDOG=m -CONFIG_977_WATCHDOG=m -CONFIG_DS1620=y -CONFIG_NWBUTTON=y -CONFIG_NWBUTTON_REBOOT=y -CONFIG_NWFLASH=m -# CONFIG_INTEL_RNG is not set -CONFIG_NVRAM=m -CONFIG_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# Multimedia devices -# -CONFIG_VIDEO_DEV=m - -# -# Video For Linux -# -CONFIG_VIDEO_PROC_FS=y -# CONFIG_I2C_PARPORT is not set - -# -# Video Adapters -# -# CONFIG_VIDEO_PMS is not set -# CONFIG_VIDEO_BWQCAM is not set -# CONFIG_VIDEO_CQCAM is not set -# CONFIG_VIDEO_CPIA is not set -# CONFIG_VIDEO_SAA5249 is not set -# CONFIG_TUNER_3036 is not set -# CONFIG_VIDEO_STRADIS is not set -# CONFIG_VIDEO_ZORAN is not set -# CONFIG_VIDEO_BUZ is not set -# CONFIG_VIDEO_ZR36120 is not set -CONFIG_VIDEO_CYBERPRO=m - -# -# Radio Adapters -# -# CONFIG_RADIO_CADET is not set -# CONFIG_RADIO_RTRACK is not set -# CONFIG_RADIO_RTRACK2 is not set -# CONFIG_RADIO_AZTECH is not set -# CONFIG_RADIO_GEMTEK is not set -# CONFIG_RADIO_MAESTRO is not set -# CONFIG_RADIO_MIROPCM20 is not set -# CONFIG_RADIO_SF16FMI is not set -# CONFIG_RADIO_TERRATEC is not set -# CONFIG_RADIO_TRUST is not set -# CONFIG_RADIO_TYPHOON is not set -# CONFIG_RADIO_ZOLTRIX is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -CONFIG_AUTOFS4_FS=y -CONFIG_ADFS_FS=m -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -CONFIG_FAT_FS=m -CONFIG_MSDOS_FS=m -# CONFIG_UMSDOS_FS is not set -CONFIG_VFAT_FS=m -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_RAMFS is not set -CONFIG_ISO9660_FS=m -CONFIG_JOLIET=y -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -CONFIG_ROOT_NFS=y -CONFIG_NFSD=m -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_MOUNT_SUBDIR is not set -# CONFIG_NCPFS_NDS_DOMAINS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -CONFIG_ACORN_PARTITION=y -# CONFIG_ACORN_PARTITION_ICS is not set -CONFIG_ACORN_PARTITION_ADFS=y -# CONFIG_ACORN_PARTITION_POWERTEC is not set -# CONFIG_ACORN_PARTITION_RISCIX is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=m -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -CONFIG_NLS_CODEPAGE_850=m -CONFIG_NLS_CODEPAGE_852=m -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -CONFIG_NLS_ISO8859_1=m -CONFIG_NLS_ISO8859_2=m -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_14 is not set -CONFIG_NLS_ISO8859_15=m -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYB=y -CONFIG_PC_KEYMAP=y -CONFIG_VGA_CONSOLE=y -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_RIVA is not set -# CONFIG_FB_CLGEN is not set -# CONFIG_FB_PM2 is not set -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -CONFIG_FB_CYBER2000=y -# CONFIG_FB_SA1100 is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -# CONFIG_FBCON_MFB is not set -# CONFIG_FBCON_CFB2 is not set -# CONFIG_FBCON_CFB4 is not set -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_CFB24=y -# CONFIG_FBCON_CFB32 is not set -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_MAC is not set -# CONFIG_FBCON_VGA_PLANES is not set -CONFIG_FBCON_VGA=y -# CONFIG_FBCON_HGA is not set -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -CONFIG_FBCON_FONTS=y -# CONFIG_FONT_8x8 is not set -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_SUN12x22 is not set -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_PEARL_8x8 is not set -CONFIG_FONT_ACORN_8x8=y - -# -# Sound -# -CONFIG_SOUND=m -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -CONFIG_SOUND_OSS=m -# CONFIG_SOUND_TRACEINIT is not set -# CONFIG_SOUND_DMAP is not set -# CONFIG_SOUND_AD1816 is not set -# CONFIG_SOUND_SGALAXY is not set -CONFIG_SOUND_ADLIB=m -# CONFIG_SOUND_ACI_MIXER is not set -# CONFIG_SOUND_CS4232 is not set -# CONFIG_SOUND_SSCAPE is not set -# CONFIG_SOUND_GUS is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_VMIDI is not set -# CONFIG_SOUND_TRIX is not set -# CONFIG_SOUND_MSS is not set -# CONFIG_SOUND_MPU401 is not set -# CONFIG_SOUND_NM256 is not set -# CONFIG_SOUND_MAD16 is not set -# CONFIG_SOUND_PAS is not set -# CONFIG_PAS_JOYSTICK is not set -# CONFIG_SOUND_PSS is not set -CONFIG_SOUND_SB=m -# CONFIG_SOUND_AWE32_SYNTH is not set -# CONFIG_SOUND_WAVEFRONT is not set -# CONFIG_SOUND_MAUI is not set -# CONFIG_SOUND_YM3812 is not set -# CONFIG_SOUND_OPL3SA1 is not set -# CONFIG_SOUND_OPL3SA2 is not set -# CONFIG_SOUND_YMPCI is not set -# CONFIG_SOUND_UART6850 is not set -# CONFIG_SOUND_AEDSP16 is not set -CONFIG_SOUND_WAVEARTIST=m -# CONFIG_SOUND_TVMIXER is not set - -# -# USB support -# -CONFIG_USB=m -CONFIG_USB_DEBUG=y - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -CONFIG_USB_OHCI=m - -# -# USB Devices -# -CONFIG_USB_PRINTER=m -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -CONFIG_USB_AUDIO=m -# CONFIG_USB_ACM is not set -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_IBMCAM is not set -# CONFIG_USB_OV511 is not set -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_USS720 is not set -# CONFIG_USB_DABUSB is not set -# CONFIG_USB_PLUSB is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_NET1080 is not set - -# -# USB Human Interface Devices (HID) -# - -# -# Input core support is needed for USB HID -# - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set diff -Nru a/arch/arm/def-configs/fortunet b/arch/arm/def-configs/fortunet --- a/arch/arm/def-configs/fortunet Mon Sep 22 00:30:25 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,593 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -# CONFIG_MODULES is not set -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -CONFIG_ARCH_CLPS711X=y -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3100 is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_H3800 is not set -# CONFIG_SA1100_H3XXX is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHANNON is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set -# CONFIG_H3600_SLEEVE is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_AUTCPU12 is not set -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -CONFIG_ARCH_FORTUNET=y -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -CONFIG_CPU_ARM720T=y -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM922T is not set -# CONFIG_CPU_ARM926T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -# CONFIG_CPU_SA1100 is not set -# CONFIG_ARM_THUMB is not set -# CONFIG_DISCONTIGMEM is not set - -# -# General setup -# -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -# CONFIG_FPE_NWFPE is not set -CONFIG_FPE_FASTFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -# CONFIG_MTD_PARTITIONS is not set -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -# CONFIG_MTD_SA1100 is not set -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -CONFIG_MTD_FORTUNET=y -# CONFIG_MTD_PCI is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -# CONFIG_INET is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET_AUNUDP is not set -# CONFIG_ECONET_NATIVE is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -# CONFIG_NETDEVICES is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# Synchronous Serial Interface -# -# CONFIG_SSI is not set -# CONFIG_SSI_CLPS711X is not set -# CONFIG_SSI_JUNO is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -# CONFIG_VT is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -CONFIG_SERIAL_CLPS711X=y -CONFIG_SERIAL_CLPS711X_CONSOLE=y -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -# CONFIG_SERIAL_SA1100 is not set -# CONFIG_SERIAL_SA1100_CONSOLE is not set -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_HUB6 is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set -# CONFIG_L3_SA1111 is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -CONFIG_JFFS_FS=y -CONFIG_JFFS_FS_VERBOSE=0 -# CONFIG_JFFS_PROC_FS is not set -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -# CONFIG_NFS_FS is not set -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -# CONFIG_SUNRPC is not set -# CONFIG_LOCKD is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_ZISOFS_FS is not set -# CONFIG_ZLIB_FS_INFLATE is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set -# CONFIG_MCP_SA1100 is not set -# CONFIG_MCP_UCB1200 is not set -# CONFIG_MCP_UCB1200_AUDIO is not set -# CONFIG_MCP_UCB1200_TS is not set - -# -# USB support -# -# CONFIG_USB is not set -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set -# CONFIG_USB_OHCI_SA1111 is not set -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_USBNET is not set -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set -# CONFIG_USB_SERIAL_OMNINET is not set -# CONFIG_USB_RIO500 is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_KERNEL is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -# CONFIG_DEBUG_ERRORS is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set -# CONFIG_DEBUG_LL_SER3 is not set diff -Nru a/arch/arm/def-configs/freebird b/arch/arm/def-configs/freebird --- a/arch/arm/def-configs/freebird Mon Sep 22 00:30:19 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,615 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_CLPS711X is not set - -# -# Archimedes/A5000 Implementations -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -CONFIG_SA1100_FREEBIRD=y -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_PFS168 is not set -CONFIG_SA1100_FREEBIRD_OLD=y -# CONFIG_SA1100_FREEBIRD_NEW is not set -CONFIG_SA1100_FL=y -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -CONFIG_SA1100_USB_CHAR=m -# CONFIG_SA1100_FREQUENCY_SCALE is not set -# CONFIG_SA1100_VOLTAGE_SCALE is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_ANGELBOOT is not set -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -# CONFIG_FPE_NWFPE is not set -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=m -CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_MISC=m -CONFIG_PM=y -CONFIG_APM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="mem=32M root=/dev/ram initrd=0xc0800000,3M" -# CONFIG_PFS168_CMDLINE is not set -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y -# CONFIG_UCB1200 is not set - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_MTDRAM is not set -CONFIG_MTD_CFI=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_SBC_MEDIAGX is not set -# CONFIG_MTD_ELAN_104NC is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_CSTM_CFI_JEDEC is not set -# CONFIG_MTD_JEDEC is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set -# CONFIG_MTD_NAND is not set -# CONFIG_MTD_NAND_SPIA is not set -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=m -CONFIG_BLK_DEV_NBD=m -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -# CONFIG_NET_ETHERNET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -CONFIG_PPP_ASYNC=m -# CONFIG_PPP_SYNC_TTY is not set -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -# CONFIG_PPPOE is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=m -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=m -# CONFIG_IRLAN is not set -# CONFIG_IRNET is not set -# CONFIG_IRCOMM is not set -# CONFIG_IRDA_ULTRA is not set -# CONFIG_IRDA_OPTIONS is not set - -# -# Infrared-port device drivers -# -CONFIG_IRTTY_SIR=m -# CONFIG_IRPORT_SIR is not set -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -CONFIG_SA1100_FIR=m -# CONFIG_DONGLE is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=m -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=9600 -# CONFIG_TOUCHSCREEN_UCB1200 is not set -# CONFIG_TOUCHSCREEN_BITSY is not set -CONFIG_FB_TS_BT=y -# CONFIG_PROFILER is not set -# CONFIG_PFS168_SPI is not set -# CONFIG_PFS168_DTMF is not set -# CONFIG_PFS168_MISC is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -# CONFIG_PCMCIA_SERIAL is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_NFS_FS is not set -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -# CONFIG_SUNRPC is not set -# CONFIG_LOCKD is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_SUN12x22 is not set -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -CONFIG_SOUND=y -CONFIG_SOUND_UDA1341=y -# CONFIG_SOUND_UDA1341_GSM is not set -# CONFIG_SOUND_SA1100_SSP is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/freebird_new b/arch/arm/def-configs/freebird_new --- a/arch/arm/def-configs/freebird_new Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,635 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_CLPS711X is not set - -# -# Archimedes/A5000 Implementations -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -CONFIG_SA1100_FREEBIRD=y -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_FREEBIRD_OLD is not set -CONFIG_SA1100_FREEBIRD_NEW=y -CONFIG_SA1100_FL=m -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -CONFIG_SA1100_USB_CHAR=m -CONFIG_SA1100_FREQUENCY_SCALE=y -# CONFIG_SA1100_VOLTAGE_SCALE is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_ANGELBOOT is not set -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=m -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=m -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -# CONFIG_FPE_NWFPE is not set -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -CONFIG_PM=y -CONFIG_APM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="noinitrd console=ttySA0 init=/linuxrc root=/dev/mtdblock4 mem=32m" -# CONFIG_PFS168_CMDLINE is not set -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y -# CONFIG_UCB1200 is not set - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_MTDRAM is not set -CONFIG_MTD_CFI=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_SBC_MEDIAGX is not set -# CONFIG_MTD_ELAN_104NC is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_CSTM_CFI_JEDEC is not set -# CONFIG_MTD_JEDEC is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set -# CONFIG_MTD_NAND is not set -# CONFIG_MTD_NAND_SPIA is not set -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=m -CONFIG_BLK_DEV_NBD=m -# CONFIG_BLK_DEV_RAM is not set -# CONFIG_BLK_DEV_INITRD is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -CONFIG_NETLINK=y -CONFIG_RTNETLINK=y -# CONFIG_NETLINK_DEV is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set - -# -# IP: Netfilter Configuration -# -# CONFIG_IP_NF_CONNTRACK is not set -# CONFIG_IP_NF_QUEUE is not set -# CONFIG_IP_NF_IPTABLES is not set -# CONFIG_IP_NF_COMPAT_IPCHAINS is not set -# CONFIG_IP_NF_COMPAT_IPFWADM is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -# CONFIG_NET_ETHERNET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -CONFIG_PPP_ASYNC=m -# CONFIG_PPP_SYNC_TTY is not set -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -# CONFIG_PPPOE is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=m -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=m -# CONFIG_IRLAN is not set -# CONFIG_IRNET is not set -# CONFIG_IRCOMM is not set -# CONFIG_IRDA_ULTRA is not set -# CONFIG_IRDA_OPTIONS is not set - -# -# Infrared-port device drivers -# -# CONFIG_IRTTY_SIR is not set -# CONFIG_IRPORT_SIR is not set -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -CONFIG_SA1100_FIR=m -# CONFIG_DONGLE is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=m - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=m -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=m -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -CONFIG_SERIAL=m -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=9600 -# CONFIG_TOUCHSCREEN_UCB1200 is not set -# CONFIG_TOUCHSCREEN_BITSY is not set -CONFIG_FB_TS_BT=y -# CONFIG_PROFILER is not set -# CONFIG_PFS168_SPI is not set -# CONFIG_PFS168_DTMF is not set -# CONFIG_PFS168_MISC is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -CONFIG_PCMCIA_SERIAL=m - -# -# PCMCIA character device support -# -CONFIG_PCMCIA_SERIAL_CS=m - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -CONFIG_AUTOFS_FS=m -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -CONFIG_JFFS_FS=m -CONFIG_JFFS_FS_VERBOSE=0 -# CONFIG_JFFS2_FS is not set -CONFIG_CRAMFS=y -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=m -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=m -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=m -CONFIG_LOCKD=m -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_SUN12x22 is not set -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -CONFIG_SOUND=y -CONFIG_SOUND_UDA1341=y -# CONFIG_SOUND_UDA1341_GSM is not set -# CONFIG_SOUND_SA1100_SSP is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/graphicsclient b/arch/arm/def-configs/graphicsclient --- a/arch/arm/def-configs/graphicsclient Mon Sep 22 00:30:25 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,732 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -CONFIG_SA1100_GRAPHICSCLIENT=y -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y -# CONFIG_CPU_BIG_ENDIAN is not set - -# -# General setup -# -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -# CONFIG_CPU_FREQ is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="ip=off mem=16M@0xc0000000 mem=16M@0xc8000000 root=/dev/ram initrd=0xc0800000,4M" -# CONFIG_PFS168_CMDLINE is not set -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -CONFIG_MTD_PHYSMAP=y -CONFIG_MTD_PHYSMAP_START=800000 -CONFIG_MTD_PHYSMAP_LEN=1000000 -CONFIG_MTD_PHYSMAP_BUSWIDTH=4 -# CONFIG_MTD_SUN_UFLASH is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_TQM8XXL is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_NETSC520 is not set -# CONFIG_MTD_SBC_GXX is not set -# CONFIG_MTD_ELAN_104NC is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set -# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_DBOX2 is not set -# CONFIG_MTD_CSTM_MIPS_IXX is not set -# CONFIG_MTD_CFI_FLAGADM is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_SOLUTIONENGINE is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set -# CONFIG_MTD_OCELOT is not set -# CONFIG_MTD_L440GX is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_LART is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=m -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -# CONFIG_IP_PNP_DHCP is not set -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -CONFIG_NET_VENDOR_SMC=y -# CONFIG_WD80x3 is not set -# CONFIG_ULTRAMCA is not set -# CONFIG_ULTRA is not set -# CONFIG_ULTRA32 is not set -CONFIG_SMC9194=y -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_ACENIC_OMIT_TIGON_I is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=y -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=38400 -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 -CONFIG_UCB1200=y -CONFIG_TOUCHSCREEN_UCB1200=y -CONFIG_AUDIO_UCB1200=y -CONFIG_ADC_UCB1200=y -# CONFIG_TOUCHSCREEN_BITSY is not set -# CONFIG_PROFILER is not set -# CONFIG_PFS168_SPI is not set -# CONFIG_PFS168_DTMF is not set -# CONFIG_PFS168_MISC is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_SA1100_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -CONFIG_FAT_FS=y -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -CONFIG_VFAT_FS=y -# CONFIG_EFS_FS is not set -CONFIG_JFFS_FS=y -CONFIG_JFFS_FS_VERBOSE=0 -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -CONFIG_CRAMFS=y -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -CONFIG_ROOT_NFS=y -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_E1355 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -# CONFIG_FONT_8x8 is not set -CONFIG_FONT_8x16=y -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/graphicsmaster b/arch/arm/def-configs/graphicsmaster --- a/arch/arm/def-configs/graphicsmaster Mon Sep 22 00:30:17 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,745 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_GRAPHICSMASTER=y -# CONFIG_SA1100_ADSBITSY is not set -CONFIG_SA1111=y -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y -# CONFIG_CPU_BIG_ENDIAN is not set - -# -# General setup -# -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -# CONFIG_CPU_FREQ is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="ip=off mem=16M@0xc0000000 mem=16M@0xc8000000 root=/dev/ram initrd=0xc0800000,4M" -# CONFIG_PFS168_CMDLINE is not set -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -CONFIG_MTD_PHYSMAP=y -CONFIG_MTD_PHYSMAP_START=800000 -CONFIG_MTD_PHYSMAP_LEN=1000000 -CONFIG_MTD_PHYSMAP_BUSWIDTH=4 -# CONFIG_MTD_SUN_UFLASH is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_TQM8XXL is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_NETSC520 is not set -# CONFIG_MTD_SBC_GXX is not set -# CONFIG_MTD_ELAN_104NC is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set -# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_DBOX2 is not set -# CONFIG_MTD_CSTM_MIPS_IXX is not set -# CONFIG_MTD_CFI_FLAGADM is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_SOLUTIONENGINE is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set -# CONFIG_MTD_OCELOT is not set -# CONFIG_MTD_L440GX is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_LART is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=m -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -# CONFIG_IP_PNP_DHCP is not set -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -CONFIG_NET_VENDOR_SMC=y -# CONFIG_WD80x3 is not set -# CONFIG_ULTRAMCA is not set -# CONFIG_ULTRA is not set -# CONFIG_ULTRA32 is not set -CONFIG_SMC9194=y -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_ACENIC_OMIT_TIGON_I is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=y -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -CONFIG_INPUT=y -# CONFIG_INPUT_KEYBDEV is not set -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=38400 -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 -CONFIG_UCB1200=y -CONFIG_TOUCHSCREEN_UCB1200=y -CONFIG_AUDIO_UCB1200=y -CONFIG_ADC_UCB1200=y -# CONFIG_TOUCHSCREEN_BITSY is not set -# CONFIG_PROFILER is not set -# CONFIG_PFS168_SPI is not set -# CONFIG_PFS168_DTMF is not set -# CONFIG_PFS168_MISC is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_SA1100_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -CONFIG_FAT_FS=y -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -CONFIG_VFAT_FS=y -# CONFIG_EFS_FS is not set -CONFIG_JFFS_FS=y -CONFIG_JFFS_FS_VERBOSE=0 -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -CONFIG_CRAMFS=y -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -CONFIG_ROOT_NFS=y -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_E1355 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -# CONFIG_FONT_8x8 is not set -CONFIG_FONT_8x16=y -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -CONFIG_USB=y -# CONFIG_USB_DEBUG is not set -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -CONFIG_USB_OHCI=y -CONFIG_USB_OHCI_NOPCI=y -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set -# CONFIG_USB_HID is not set -# CONFIG_USB_KBD is not set -CONFIG_USB_MOUSE=y -# CONFIG_USB_WACOM is not set -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_IBMCAM is not set -# CONFIG_USB_OV511 is not set -# CONFIG_USB_PWC is not set -# CONFIG_USB_SE401 is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_DABUSB is not set -# CONFIG_USB_PLUSB is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_NET1080 is not set -# CONFIG_USB_USBNET is not set -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_RIO500 is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/h3600 b/arch/arm/def-configs/h3600 --- a/arch/arm/def-configs/h3600 Mon Sep 22 00:30:20 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,951 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -CONFIG_SA1100_H3600=y -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -# CONFIG_SA1100_USB_CHAR is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -# CONFIG_ARM_THUMB is not set -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_PCI is not set -CONFIG_ISA=y -# CONFIG_ISA_DMA is not set -CONFIG_CPU_FREQ=y -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -CONFIG_PM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="" -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -CONFIG_MTD_REDBOOT_PARTS=y -CONFIG_MTD_BOOTLDR_PARTS=y -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_NOSWAP=y -# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -CONFIG_MTD_CFI_GEOMETRY=y -# CONFIG_MTD_CFI_B1 is not set -# CONFIG_MTD_CFI_B2 is not set -CONFIG_MTD_CFI_B4=y -# CONFIG_MTD_CFI_I1 is not set -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_CFI_I4 is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_PCI is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set -# CONFIG_PNPBIOS is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_CISS_SCSI_TAPE is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=m -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set - -# -# Ethernet (10 or 100Mbit) -# -# CONFIG_NET_ETHERNET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_FILTER is not set -CONFIG_PPP_ASYNC=m -# CONFIG_PPP_SYNC_TTY is not set -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -# CONFIG_PPPOE is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=m - -# -# IrDA protocols -# -CONFIG_IRLAN=m -CONFIG_IRNET=m -CONFIG_IRCOMM=m -# CONFIG_IRDA_ULTRA is not set -# CONFIG_IRDA_OPTIONS is not set - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -# CONFIG_IRTTY_SIR is not set -# CONFIG_IRPORT_SIR is not set - -# -# Dongle support -# -# CONFIG_DONGLE is not set - -# -# FIR device drivers -# -# CONFIG_USB_IRDA is not set -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -# CONFIG_ALI_FIR is not set -# CONFIG_VLSI_FIR is not set -CONFIG_SA1100_FIR=m - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=m - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=m - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=m -# CONFIG_IDEDISK_MULTI_MODE is not set -# CONFIG_BLK_DEV_IDECS is not set -CONFIG_BLK_DEV_IDECD=m -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_ATARAID is not set -# CONFIG_BLK_DEV_ATARAID_PDC is not set -# CONFIG_BLK_DEV_ATARAID_HPT is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -CONFIG_SERIAL=m -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=38400 -CONFIG_SERIAL_8250=m -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_HUB6 is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -CONFIG_L3=y -CONFIG_L3_ALGOBIT=y -CONFIG_L3_BIT_SA1100_GPIO=y - -# -# Other L3 adapters -# -# CONFIG_L3_SA1111 is not set -CONFIG_BIT_SA1100_GPIO=y - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -CONFIG_MOUSE=m -# CONFIG_PSMOUSE is not set -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set - -# -# Input core support is needed for gameports -# - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=m -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# -# CONFIG_PCMCIA_SERIAL_CS is not set -# CONFIG_MWAVE is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_CMS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -CONFIG_FAT_FS=m -CONFIG_MSDOS_FS=m -# CONFIG_UMSDOS_FS is not set -CONFIG_VFAT_FS=m -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -CONFIG_CRAMFS=m -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_FREEVXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -CONFIG_NFSD=m -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -CONFIG_SMB_FS=m -# CONFIG_SMB_NLS_DEFAULT is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set -# CONFIG_ZISOFS_FS is not set -CONFIG_ZLIB_FS_INFLATE=m - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -CONFIG_SMB_NLS=y -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_CLPS711X is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -# CONFIG_FBCON_MFB is not set -# CONFIG_FBCON_CFB2 is not set -# CONFIG_FBCON_CFB4 is not set -# CONFIG_FBCON_CFB8 is not set -CONFIG_FBCON_CFB16=y -# CONFIG_FBCON_CFB24 is not set -# CONFIG_FBCON_CFB32 is not set -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_MAC is not set -# CONFIG_FBCON_VGA_PLANES is not set -# CONFIG_FBCON_VGA is not set -# CONFIG_FBCON_HGA is not set -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -CONFIG_SOUND=y -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_MIDI_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_RME96XX is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_MIDI_VIA82CXXX is not set -CONFIG_SOUND_SA1100=y -CONFIG_SOUND_UDA1341=y -# CONFIG_SOUND_ASSABET_UDA1341 is not set -CONFIG_SOUND_H3600_UDA1341=y -# CONFIG_SOUND_PANGOLIN_UDA1341 is not set -# CONFIG_SOUND_SA1111_UDA1341 is not set -# CONFIG_SOUND_SA1100SSP is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_WAVEARTIST is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set -# CONFIG_MCP_SA1100 is not set -# CONFIG_MCP_UCB1200 is not set -# CONFIG_MCP_UCB1200_AUDIO is not set -# CONFIG_MCP_UCB1200_TS is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set -# CONFIG_USB_OHCI_SA1111 is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# - -# -# Input core support is needed for USB HID -# - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# - -# -# USB Network adaptors -# -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_USBNET is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set -# CONFIG_USB_SERIAL_OMNINET is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_ID75 is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_SLAB is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/hackkit b/arch/arm/def-configs/hackkit --- a/arch/arm/def-configs/hackkit Mon Sep 22 00:30:25 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,654 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -CONFIG_MMU=y -CONFIG_SWAP=y -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y - -# -# General setup -# -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODULE_UNLOAD is not set -# CONFIG_MODULE_FORCE_UNLOAD is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_PXA is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_IOP310 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# - -# -# CLPS711X/EP721X Implementations -# - -# -# Epxa10db -# - -# -# Footbridge Implementations -# - -# -# IOP310 Implementation Options -# - -# -# IOP310 Chipset Features -# - -# -# Intel PXA250/210 Implementations -# - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3100 is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_H3800 is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_BADGE4 is not set -# CONFIG_SA1100_JORNADA720 is not set -CONFIG_SA1100_HACKKIT=y -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_PT_SYSTEM3 is not set -# CONFIG_SA1100_SHANNON is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_STORK is not set -# CONFIG_SA1100_USB is not set - -# -# Processor Type -# -CONFIG_CPU_32=y -CONFIG_CPU_SA1100=y -CONFIG_CPU_32v4=y - -# -# Processor Features -# - -# -# General setup -# -CONFIG_DISCONTIGMEM=y -CONFIG_ISA=y -# CONFIG_ZBOOT_ROM is not set -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_24_API=y -CONFIG_CPU_FREQ_26_API=y -# CONFIG_HOTPLUG is not set - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_PREEMPT is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="console=ttySA0,115200 root=/dev/ram0 initrd=0xc0400000,8M init=/rootshell" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -CONFIG_MTD_DEBUG=y -CONFIG_MTD_DEBUG_VERBOSE=3 -# CONFIG_MTD_PARTITIONS is not set -# CONFIG_MTD_CONCAT is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_EDB7312 is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -CONFIG_INET_ECN=y -CONFIG_SYN_COOKIES=y -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_XFRM_USER is not set -# CONFIG_IPV6 is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -CONFIG_IPV6_SCTP__=y -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_LLC is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -CONFIG_DUMMY=y -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -# CONFIG_NET_ETHERNET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -CONFIG_NET_RADIO=y -# CONFIG_STRIP is not set -# CONFIG_ARLAN is not set -# CONFIG_AIRONET4500 is not set - -# -# Wireless ISA/PCI cards support -# -# CONFIG_WAVELAN is not set -# CONFIG_AIRO is not set -# CONFIG_HERMES is not set -CONFIG_NET_WIRELESS=y - -# -# Token Ring devices (depends on LLC=y) -# -# CONFIG_NET_FC is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# ATA/ATAPI/MFM/RLL support -# -# CONFIG_IDE is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN_BOOL is not set - -# -# Input device support -# -CONFIG_INPUT=y - -# -# Userland interfaces -# -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_TSDEV is not set -# CONFIG_INPUT_TSLIBDEV is not set -# CONFIG_INPUT_EVDEV is not set -# CONFIG_INPUT_EVBUG is not set - -# -# Input I/O drivers -# -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -CONFIG_SERIO=y -# CONFIG_SERIO_I8042 is not set -CONFIG_SERIO_SERPORT=y -# CONFIG_SERIO_CT82C710 is not set - -# -# Input Device Drivers -# -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE is not set -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_INPUT_TOUCHSCREEN is not set -# CONFIG_INPUT_MISC is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_HW_CONSOLE=y -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_8250 is not set - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_GEN_RTC is not set -CONFIG_SA1100_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -# CONFIG_RAW_DRIVER is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_JFFS2_FS is not set -CONFIG_CRAMFS=y -CONFIG_TMPFS=y -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UFS_FS is not set -# CONFIG_XFS_FS is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -# CONFIG_NFS_FS is not set -# CONFIG_NFSD is not set -# CONFIG_EXPORTFS is not set -# CONFIG_CIFS is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -# CONFIG_FB is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# Misc devices -# - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set - -# -# Console Switches -# -# CONFIG_SWITCHES is not set - -# -# USB support -# - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_SLAB=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_SPINLOCK=y -CONFIG_DEBUG_WAITQ=y -CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_ERRORS=y -CONFIG_KALLSYMS=y -CONFIG_DEBUG_LL=y - -# -# Security options -# -CONFIG_SECURITY_CAPABILITIES=y - -# -# Cryptographic options -# -# CONFIG_CRYPTO is not set - -# -# Library routines -# -# CONFIG_CRC32 is not set -CONFIG_ZLIB_INFLATE=y diff -Nru a/arch/arm/def-configs/huw_webpanel b/arch/arm/def-configs/huw_webpanel --- a/arch/arm/def-configs/huw_webpanel Mon Sep 22 00:30:23 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,435 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_CLPS711X is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Footbridge Implementations -# - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -CONFIG_SA1100_HUW_WEBPANEL=y -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_FREQUENCY_SCALE is not set -# CONFIG_SA1100_VOLTAGE_SCALE is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -CONFIG_CPU_32v4=y -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_ANGELBOOT is not set -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_NWFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="keepinitrd mem=32480K root=/dev/ram initrd=0xc0800000,8M" -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_MTDRAM is not set -CONFIG_MTD_CFI=y -CONFIG_MTD_CFI_GEOMETRY=y -# CONFIG_MTD_CFI_B1 is not set -# CONFIG_MTD_CFI_B2 is not set -CONFIG_MTD_CFI_B4=y -# CONFIG_MTD_CFI_I1 is not set -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_CFI_I4 is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_SBC_MEDIAGX is not set -# CONFIG_MTD_ELAN_104NC is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_JEDEC is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set -# CONFIG_MTD_NAND is not set -# CONFIG_MTD_NAND_SPIA is not set -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y -# CONFIG_BLK_DEV_FLASH is not set - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -# CONFIG_NETDEVICES is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=115200 -CONFIG_TOUCHSCREEN_UCB1200=y -# CONFIG_TOUCHSCREEN_BITSY is not set -# CONFIG_PROFILER is not set -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_SA1100_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_CRAMFS=y -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -CONFIG_ROMFS_FS=y -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_NFS_FS is not set -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -# CONFIG_SUNRPC is not set -# CONFIG_LOCKD is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_MOUNT_SUBDIR is not set -# CONFIG_NCPFS_NDS_DOMAINS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_NLS is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_DEBUG_LL is not set diff -Nru a/arch/arm/def-configs/integrator b/arch/arm/def-configs/integrator --- a/arch/arm/def-configs/integrator Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,663 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -CONFIG_ARCH_INTEGRATOR=y -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_ANAKIN is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -CONFIG_CPU_ARM720T=y -CONFIG_CPU_ARM920T=y -CONFIG_CPU_ARM920_CPU_IDLE=y -CONFIG_CPU_ARM920_I_CACHE_ON=y -CONFIG_CPU_ARM920_D_CACHE_ON=y -# CONFIG_CPU_ARM920_WRITETHROUGH is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -# CONFIG_CPU_SA1100 is not set -# CONFIG_DISCONTIGMEM is not set - -# -# General setup -# -CONFIG_PCI_INTEGRATOR=y -CONFIG_PCI=y -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_CPU_CLOCK=y -CONFIG_PCI_NAMES=y -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -# CONFIG_FPE_NWFPE is not set -CONFIG_FPE_FASTFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -CONFIG_PM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="root=1f03 mem=32M" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_BOOTLDR_PARTS is not set -CONFIG_MTD_AFS_PARTS=y - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_CFI_VIRTUAL_ER is not set -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_NOSWAP=y -# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LART_BIT_SWAP is not set -# CONFIG_MTD_CFI_GEOMETRY is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_SUN_UFLASH is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_NETSC520 is not set -# CONFIG_MTD_SBC_GXX is not set -# CONFIG_MTD_ELAN_104NC is not set -# CONFIG_MTD_SA1100 is not set -# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set -# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_DBOX2 is not set -# CONFIG_MTD_CSTM_MIPS_IXX is not set -# CONFIG_MTD_CFI_FLAGADM is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set -CONFIG_MTD_ARMFLASH=y - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set -# CONFIG_MTD_NAND_SPIA is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -# CONFIG_BLK_DEV_INITRD is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -CONFIG_NETLINK=y -# CONFIG_RTNETLINK is not set -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -# CONFIG_IP_PNP_DHCP is not set -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_IP_MROUTE is not set -CONFIG_INET_ECN=y -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set -CONFIG_NET_PCI=y -# CONFIG_PCNET32 is not set -# CONFIG_ADAPTEC_STARFIRE is not set -# CONFIG_APRICOT is not set -# CONFIG_CS89x0 is not set -# CONFIG_TULIP is not set -# CONFIG_DE4X5 is not set -# CONFIG_DGRS is not set -# CONFIG_DM9102 is not set -CONFIG_EEPRO100=y -CONFIG_EEPRO100_PM=y -# CONFIG_LNE390 is not set -# CONFIG_FEALNX is not set -# CONFIG_NATSEMI is not set -# CONFIG_NE2K_PCI is not set -# CONFIG_NE3210 is not set -# CONFIG_ES3210 is not set -# CONFIG_8139TOO is not set -# CONFIG_8139TOO_PIO is not set -# CONFIG_8139TOO_TUNE_TWISTER is not set -# CONFIG_8139TOO_8129 is not set -# CONFIG_SIS900 is not set -# CONFIG_EPIC100 is not set -# CONFIG_SUNDANCE is not set -# CONFIG_TLAN is not set -# CONFIG_VIA_RHINE is not set -# CONFIG_WINBOND_840 is not set -# CONFIG_HAPPYMEAL is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_IEEE1394 is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_PCI is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_SA1100 is not set -# CONFIG_SERIAL_SA1100_CONSOLE is not set -CONFIG_SERIAL_AMBA=y -CONFIG_SERIAL_AMBA_CONSOLE=y -CONFIG_SERIAL_INTEGRATOR=y -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -CONFIG_MOUSE=y -CONFIG_PSMOUSE=y -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -CONFIG_MINIX_FS=y -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -CONFIG_ROMFS_FS=y -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_ROOT_NFS=y -CONFIG_NFSD=y -CONFIG_NFSD_V3=y -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -CONFIG_LOCKD_V4=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -# CONFIG_MSDOS_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Console drivers -# -CONFIG_KMI_KEYB=y -CONFIG_KMI_MOUSE=y -CONFIG_PC_KEYMAP=y -CONFIG_VGA_CONSOLE=y -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_RIVA is not set -# CONFIG_FB_CLGEN is not set -# CONFIG_FB_PM2 is not set -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_SA1100 is not set -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_E1355 is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_SUN12x22 is not set -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_NO_PGT_CACHE is not set -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/iq80310 b/arch/arm/def-configs/iq80310 --- a/arch/arm/def-configs/iq80310 Mon Sep 22 00:30:19 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,770 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -CONFIG_MMU=y -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y - -# -# General setup -# -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_LOG_BUF_SHIFT=14 -# CONFIG_EMBEDDED is not set -CONFIG_KALLSYMS=y -CONFIG_FUTEX=y -CONFIG_EPOLL=y -CONFIG_IOSCHED_AS=y -CONFIG_IOSCHED_DEADLINE=y - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODULE_UNLOAD is not set -CONFIG_OBSOLETE_MODPARM=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_PXA is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -CONFIG_ARCH_IOP3XX=y -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_SHARK is not set - -# -# CLPS711X/EP721X Implementations -# - -# -# Epxa10db -# - -# -# Footbridge Implementations -# - -# -# IOP3xx Implementation Options -# -CONFIG_ARCH_IQ80310=y -# CONFIG_ARCH_IQ80321 is not set -CONFIG_ARCH_IOP310=y -# CONFIG_ARCH_IOP321 is not set - -# -# IOP3xx Chipset Features -# -# CONFIG_IOP3XX_AAU is not set -# CONFIG_IOP3XX_DMA is not set -# CONFIG_IOP3XX_MU is not set -# CONFIG_IOP3XX_PMON is not set - -# -# ADIFCC Implementation Options -# - -# -# ADI Board Types -# - -# -# Intel PXA250/210 Implementations -# - -# -# SA11x0 Implementations -# - -# -# Processor Type -# -CONFIG_CPU_32=y -CONFIG_CPU_XSCALE=y -CONFIG_XS80200=y -CONFIG_CPU_32v5=y - -# -# Processor Features -# -CONFIG_ARM_THUMB=y -CONFIG_XSCALE_PMU=y - -# -# General setup -# -CONFIG_PCI=y -# CONFIG_ZBOOT_ROM is not set -CONFIG_ZBOOT_ROM_TEXT=0x00060000 -CONFIG_ZBOOT_ROM_BSS=0xa1008000 -# CONFIG_PCI_LEGACY_PROC is not set -CONFIG_PCI_NAMES=y -# CONFIG_HOTPLUG is not set - -# -# MMC/SD Card support -# -# CONFIG_MMC is not set - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_NWFPE_XP is not set -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_PREEMPT is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="console=ttyS0,115200 ip=bootp mem=32M root=/dev/nfs initrd=0xc0800000,4M" -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_CONCAT is not set -CONFIG_MTD_REDBOOT_PARTS=y -# CONFIG_MTD_CMDLINE_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set -# CONFIG_INFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_CFI_STAA is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_COMPLEX_MAPPINGS is not set -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -CONFIG_MTD_IQ80310=y -# CONFIG_MTD_EDB7312 is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOC2001PLUS is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play support -# -# CONFIG_PNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set - -# -# Networking support -# -CONFIG_NET=y - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK_DEV is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -# CONFIG_IP_PNP_DHCP is not set -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set - -# -# IP: Netfilter Configuration -# -# CONFIG_IP_NF_CONNTRACK is not set -# CONFIG_IP_NF_QUEUE is not set -# CONFIG_IP_NF_IPTABLES is not set -# CONFIG_IP_NF_ARPTABLES is not set -# CONFIG_IP_NF_COMPAT_IPCHAINS is not set -# CONFIG_IP_NF_COMPAT_IPFWADM is not set - -# -# IP: Virtual Server Configuration -# -# CONFIG_IP_VS is not set -# CONFIG_IPV6 is not set -# CONFIG_XFRM_USER is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -CONFIG_IPV6_SCTP__=y -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_LLC is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -CONFIG_MII=y -# CONFIG_SMC91X is not set -# CONFIG_HAPPYMEAL is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set - -# -# Tulip family network device support -# -# CONFIG_NET_TULIP is not set -# CONFIG_HP100 is not set -CONFIG_NET_PCI=y -# CONFIG_PCNET32 is not set -# CONFIG_AMD8111_ETH is not set -# CONFIG_ADAPTEC_STARFIRE is not set -# CONFIG_B44 is not set -# CONFIG_DGRS is not set -CONFIG_EEPRO100=y -# CONFIG_EEPRO100_PIO is not set -# CONFIG_E100 is not set -# CONFIG_FEALNX is not set -# CONFIG_NATSEMI is not set -# CONFIG_NE2K_PCI is not set -# CONFIG_8139CP is not set -# CONFIG_8139TOO is not set -# CONFIG_SIS900 is not set -# CONFIG_EPIC100 is not set -# CONFIG_SUNDANCE is not set -# CONFIG_TLAN is not set -# CONFIG_VIA_RHINE is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_E1000 is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_R8169 is not set -# CONFIG_SK98LIN is not set -# CONFIG_TIGON3 is not set - -# -# Ethernet (10000 Mbit) -# -# CONFIG_IXGB is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices (depends on LLC=y) -# -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# ATA/ATAPI/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -# CONFIG_IDEDISK_STROKE is not set -CONFIG_BLK_DEV_IDECD=y -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_IDE_TASK_IOCTL is not set -# CONFIG_IDE_TASKFILE_IO is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_IDEPCI is not set - -# -# SCSI device support -# -# CONFIG_SCSI is not set - -# -# IEEE 1394 (FireWire) support (EXPERIMENTAL) -# -# CONFIG_IEEE1394 is not set - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN_BOOL is not set - -# -# Input device support -# -# CONFIG_INPUT is not set - -# -# Userland interfaces -# - -# -# Input I/O drivers -# -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -# CONFIG_SERIO is not set - -# -# Input Device Drivers -# - -# -# Character devices -# -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -# CONFIG_SERIAL_8250_EXTENDED is not set - -# -# Non-8250 serial port support -# -# CONFIG_SERIAL_DZ is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# I2C Hardware Sensors Mainboard support -# - -# -# I2C Hardware Sensors Chip support -# -# CONFIG_I2C_SENSOR is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_QIC02_TAPE is not set - -# -# IPMI -# -# CONFIG_IPMI_HANDLER is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_GEN_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -# CONFIG_RAW_DRIVER is not set -# CONFIG_HANGCHECK_TIMER is not set - -# -# Multimedia devices -# -CONFIG_VIDEO_DEV=y - -# -# Video For Linux -# -# CONFIG_VIDEO_PROC_FS is not set - -# -# Video Adapters -# -# CONFIG_VIDEO_PMS is not set -# CONFIG_VIDEO_CPIA is not set -# CONFIG_VIDEO_STRADIS is not set -# CONFIG_VIDEO_HEXIUM_ORION is not set -# CONFIG_VIDEO_HEXIUM_GEMINI is not set - -# -# Radio Adapters -# -# CONFIG_RADIO_GEMTEK_PCI is not set -# CONFIG_RADIO_MAXIRADIO is not set -# CONFIG_RADIO_MAESTRO is not set - -# -# Digital Video Broadcasting Devices -# -CONFIG_DVB=y -CONFIG_DVB_CORE=y - -# -# Supported Frontend Modules -# -# CONFIG_DVB_STV0299 is not set -# CONFIG_DVB_ALPS_BSRV2 is not set -# CONFIG_DVB_ALPS_TDLB7 is not set -# CONFIG_DVB_ALPS_TDMB7 is not set -# CONFIG_DVB_ATMEL_AT76C651 is not set -# CONFIG_DVB_CX24110 is not set -# CONFIG_DVB_GRUNDIG_29504_491 is not set -# CONFIG_DVB_GRUNDIG_29504_401 is not set -# CONFIG_DVB_MT312 is not set -# CONFIG_DVB_VES1820 is not set -# CONFIG_DVB_TDA1004X is not set - -# -# Supported SAA7146 based PCI Adapters -# -# CONFIG_DVB_AV7110 is not set -# CONFIG_DVB_BUDGET is not set - -# -# Supported FlexCopII (B2C2) Adapters -# -# CONFIG_DVB_B2C2_SKYSTAR is not set -# CONFIG_VIDEO_BTCX is not set - -# -# File systems -# -CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set -# CONFIG_XFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set - -# -# CD-ROM/DVD Filesystems -# -# CONFIG_ISO9660_FS is not set -# CONFIG_UDF_FS is not set - -# -# DOS/FAT/NT Filesystems -# -# CONFIG_FAT_FS is not set -# CONFIG_NTFS_FS is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -CONFIG_DEVPTS_FS=y -# CONFIG_DEVPTS_FS_XATTR is not set -CONFIG_TMPFS=y -CONFIG_RAMFS=y - -# -# Miscellaneous filesystems -# -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_JFFS2_FS_NAND is not set -# CONFIG_CRAMFS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set - -# -# Network File Systems -# -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_NFS_V4 is not set -# CONFIG_NFSD is not set -CONFIG_ROOT_NFS=y -CONFIG_LOCKD=y -# CONFIG_EXPORTFS is not set -CONFIG_SUNRPC=y -# CONFIG_SUNRPC_GSS is not set -# CONFIG_SMB_FS is not set -# CONFIG_CIFS is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_NEC98_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_EFI_PARTITION is not set - -# -# Graphics support -# -# CONFIG_FB is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# Misc devices -# - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set - -# -# Console Switches -# -# CONFIG_SWITCHES is not set - -# -# USB support -# -# CONFIG_USB is not set -# CONFIG_USB_GADGET is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SLAB is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_LL=y - -# -# Security options -# -# CONFIG_SECURITY is not set - -# -# Cryptographic options -# -# CONFIG_CRYPTO is not set - -# -# Library routines -# -# CONFIG_CRC32 is not set -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=y diff -Nru a/arch/arm/def-configs/iq80321 b/arch/arm/def-configs/iq80321 --- a/arch/arm/def-configs/iq80321 Mon Sep 22 00:30:20 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,776 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -CONFIG_MMU=y -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y - -# -# General setup -# -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_LOG_BUF_SHIFT=14 -# CONFIG_EMBEDDED is not set -CONFIG_KALLSYMS=y -CONFIG_FUTEX=y -CONFIG_EPOLL=y -CONFIG_IOSCHED_AS=y -CONFIG_IOSCHED_DEADLINE=y - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODULE_UNLOAD is not set -CONFIG_OBSOLETE_MODPARM=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_PXA is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -CONFIG_ARCH_IOP3XX=y -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_SHARK is not set - -# -# CLPS711X/EP721X Implementations -# - -# -# Epxa10db -# - -# -# Footbridge Implementations -# - -# -# IOP3xx Implementation Options -# -# CONFIG_ARCH_IQ80310 is not set -CONFIG_ARCH_IQ80321=y -# CONFIG_ARCH_IOP310 is not set -CONFIG_ARCH_IOP321=y - -# -# IOP3xx Chipset Features -# -# CONFIG_IOP3XX_AAU is not set -# CONFIG_IOP3XX_DMA is not set -# CONFIG_IOP3XX_MU is not set -# CONFIG_IOP3XX_PMON is not set - -# -# ADIFCC Implementation Options -# - -# -# ADI Board Types -# - -# -# Intel PXA250/210 Implementations -# - -# -# SA11x0 Implementations -# - -# -# Processor Type -# -CONFIG_CPU_32=y -CONFIG_CPU_XSCALE=y -CONFIG_CPU_32v5=y - -# -# Processor Features -# -# CONFIG_ARM_THUMB is not set -CONFIG_XSCALE_PMU=y - -# -# General setup -# -CONFIG_PCI=y -# CONFIG_ZBOOT_ROM is not set -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -# CONFIG_PCI_LEGACY_PROC is not set -CONFIG_PCI_NAMES=y -# CONFIG_HOTPLUG is not set - -# -# MMC/SD Card support -# -# CONFIG_MMC is not set - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_NWFPE_XP is not set -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_PREEMPT is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="ip=boot root=nfs console=ttyS0,115200 mem=128M@0xa0000000" -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_CONCAT is not set -CONFIG_MTD_REDBOOT_PARTS=y -# CONFIG_MTD_CMDLINE_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set -# CONFIG_INFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_CFI_STAA is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_COMPLEX_MAPPINGS is not set -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_EDB7312 is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOC2001PLUS is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play support -# -# CONFIG_PNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -# CONFIG_BLK_DEV_INITRD is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set - -# -# Networking support -# -CONFIG_NET=y - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK_DEV is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -# CONFIG_IP_PNP_DHCP is not set -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set - -# -# IP: Netfilter Configuration -# -# CONFIG_IP_NF_CONNTRACK is not set -# CONFIG_IP_NF_QUEUE is not set -# CONFIG_IP_NF_IPTABLES is not set -# CONFIG_IP_NF_ARPTABLES is not set -# CONFIG_IP_NF_COMPAT_IPCHAINS is not set -# CONFIG_IP_NF_COMPAT_IPFWADM is not set - -# -# IP: Virtual Server Configuration -# -# CONFIG_IP_VS is not set -# CONFIG_IPV6 is not set -# CONFIG_XFRM_USER is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -CONFIG_IPV6_SCTP__=y -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_LLC is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_MII is not set -# CONFIG_SMC91X is not set -# CONFIG_HAPPYMEAL is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set - -# -# Tulip family network device support -# -# CONFIG_NET_TULIP is not set -# CONFIG_HP100 is not set -CONFIG_NET_PCI=y -# CONFIG_PCNET32 is not set -# CONFIG_AMD8111_ETH is not set -# CONFIG_ADAPTEC_STARFIRE is not set -# CONFIG_B44 is not set -# CONFIG_DGRS is not set -CONFIG_EEPRO100=y -# CONFIG_EEPRO100_PIO is not set -# CONFIG_E100 is not set -# CONFIG_FEALNX is not set -# CONFIG_NATSEMI is not set -# CONFIG_NE2K_PCI is not set -# CONFIG_8139CP is not set -# CONFIG_8139TOO is not set -# CONFIG_SIS900 is not set -# CONFIG_EPIC100 is not set -# CONFIG_SUNDANCE is not set -# CONFIG_TLAN is not set -# CONFIG_VIA_RHINE is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -CONFIG_E1000=y -CONFIG_E1000_NAPI=y -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_R8169 is not set -# CONFIG_SK98LIN is not set -# CONFIG_TIGON3 is not set - -# -# Ethernet (10000 Mbit) -# -# CONFIG_IXGB is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices (depends on LLC=y) -# -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# ATA/ATAPI/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -# CONFIG_IDEDISK_STROKE is not set -CONFIG_BLK_DEV_IDECD=y -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_IDE_TASK_IOCTL is not set -# CONFIG_IDE_TASKFILE_IO is not set - -# -# IDE chipset support/bugfixes -# -CONFIG_BLK_DEV_IDEPCI=y -# CONFIG_BLK_DEV_GENERIC is not set -# CONFIG_IDEPCI_SHARE_IRQ is not set -CONFIG_BLK_DEV_IDEDMA_PCI=y -# CONFIG_BLK_DEV_IDE_TCQ is not set -# CONFIG_BLK_DEV_OFFBOARD is not set -# CONFIG_BLK_DEV_IDEDMA_FORCED is not set -CONFIG_IDEDMA_PCI_AUTO=y -# CONFIG_IDEDMA_ONLYDISK is not set -CONFIG_BLK_DEV_IDEDMA=y -# CONFIG_IDEDMA_PCI_WIP is not set -CONFIG_BLK_DEV_ADMA=y -# CONFIG_BLK_DEV_AEC62XX is not set -# CONFIG_BLK_DEV_ALI15X3 is not set -# CONFIG_BLK_DEV_AMD74XX is not set -CONFIG_BLK_DEV_CMD64X=y -# CONFIG_BLK_DEV_TRIFLEX is not set -# CONFIG_BLK_DEV_CY82C693 is not set -# CONFIG_BLK_DEV_CS5520 is not set -# CONFIG_BLK_DEV_HPT34X is not set -# CONFIG_BLK_DEV_HPT366 is not set -# CONFIG_BLK_DEV_SC1200 is not set -# CONFIG_BLK_DEV_PIIX is not set -# CONFIG_BLK_DEV_NS87415 is not set -# CONFIG_BLK_DEV_OPTI621 is not set -# CONFIG_BLK_DEV_PDC202XX_OLD is not set -# CONFIG_BLK_DEV_PDC202XX_NEW is not set -# CONFIG_BLK_DEV_SVWKS is not set -# CONFIG_BLK_DEV_SIIMAGE is not set -# CONFIG_BLK_DEV_SLC90E66 is not set -# CONFIG_BLK_DEV_TRM290 is not set -# CONFIG_BLK_DEV_VIA82CXXX is not set -# CONFIG_BLK_DEV_SL82C105 is not set -CONFIG_IDEDMA_AUTO=y -# CONFIG_IDEDMA_IVB is not set - -# -# SCSI device support -# -# CONFIG_SCSI is not set - -# -# IEEE 1394 (FireWire) support (EXPERIMENTAL) -# -# CONFIG_IEEE1394 is not set - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN_BOOL is not set - -# -# Input device support -# -# CONFIG_INPUT is not set - -# -# Userland interfaces -# - -# -# Input I/O drivers -# -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -# CONFIG_SERIO is not set - -# -# Input Device Drivers -# - -# -# Character devices -# -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -# CONFIG_SERIAL_8250_EXTENDED is not set - -# -# Non-8250 serial port support -# -# CONFIG_SERIAL_DZ is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# I2C Hardware Sensors Mainboard support -# - -# -# I2C Hardware Sensors Chip support -# -# CONFIG_I2C_SENSOR is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_QIC02_TAPE is not set - -# -# IPMI -# -# CONFIG_IPMI_HANDLER is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_GEN_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -# CONFIG_RAW_DRIVER is not set -# CONFIG_HANGCHECK_TIMER is not set - -# -# Multimedia devices -# -CONFIG_VIDEO_DEV=y - -# -# Video For Linux -# -# CONFIG_VIDEO_PROC_FS is not set - -# -# Video Adapters -# -# CONFIG_VIDEO_PMS is not set -# CONFIG_VIDEO_CPIA is not set -# CONFIG_VIDEO_STRADIS is not set -# CONFIG_VIDEO_HEXIUM_ORION is not set -# CONFIG_VIDEO_HEXIUM_GEMINI is not set - -# -# Radio Adapters -# -# CONFIG_RADIO_GEMTEK_PCI is not set -# CONFIG_RADIO_MAXIRADIO is not set -# CONFIG_RADIO_MAESTRO is not set - -# -# Digital Video Broadcasting Devices -# -# CONFIG_DVB is not set -# CONFIG_VIDEO_BTCX is not set - -# -# File systems -# -CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set -# CONFIG_XFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set - -# -# CD-ROM/DVD Filesystems -# -# CONFIG_ISO9660_FS is not set -# CONFIG_UDF_FS is not set - -# -# DOS/FAT/NT Filesystems -# -# CONFIG_FAT_FS is not set -# CONFIG_NTFS_FS is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -CONFIG_DEVPTS_FS=y -# CONFIG_DEVPTS_FS_XATTR is not set -CONFIG_TMPFS=y -CONFIG_RAMFS=y - -# -# Miscellaneous filesystems -# -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_JFFS2_FS_NAND is not set -# CONFIG_CRAMFS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set - -# -# Network File Systems -# -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_NFS_V4 is not set -# CONFIG_NFSD is not set -CONFIG_ROOT_NFS=y -CONFIG_LOCKD=y -# CONFIG_EXPORTFS is not set -CONFIG_SUNRPC=y -# CONFIG_SUNRPC_GSS is not set -# CONFIG_SMB_FS is not set -# CONFIG_CIFS is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_NEC98_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_EFI_PARTITION is not set - -# -# Graphics support -# -# CONFIG_FB is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# Misc devices -# - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set - -# -# Console Switches -# -# CONFIG_SWITCHES is not set - -# -# USB support -# -# CONFIG_USB is not set -# CONFIG_USB_GADGET is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SLAB is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_LL=y - -# -# Security options -# -# CONFIG_SECURITY is not set - -# -# Cryptographic options -# -# CONFIG_CRYPTO is not set - -# -# Library routines -# -# CONFIG_CRC32 is not set -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=y diff -Nru a/arch/arm/def-configs/jornada720 b/arch/arm/def-configs/jornada720 --- a/arch/arm/def-configs/jornada720 Mon Sep 22 00:30:19 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,897 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3100 is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_H3800 is not set -# CONFIG_SA1100_H3XXX is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -CONFIG_SA1100_JORNADA720=y -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHANNON is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1111=y -CONFIG_FORCE_MAX_ZONEORDER=9 -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set -# CONFIG_REGISTERS is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_AUTCPU12 is not set -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM922T is not set -# CONFIG_CPU_ARM926T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -# CONFIG_ARM_THUMB is not set -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_PCI is not set -CONFIG_ISA=y -# CONFIG_ISA_DMA is not set -# CONFIG_CPU_FREQ is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82092 is not set -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y -# CONFIG_MERCURY_BACKPAQ is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_FPE_NWFPE=y -CONFIG_FPE_FASTFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=m -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -CONFIG_PM=y -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="keepinitrd mem=32M" -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -CONFIG_MTD_DEBUG=y -CONFIG_MTD_DEBUG_VERBOSE=1 -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -CONFIG_MTD_BOOTLDR_PARTS=y -# CONFIG_MTD_AFS_PARTS is not set -CONFIG_MTD_CHAR=m -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_NOSWAP=y -# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -CONFIG_MTD_CFI_GEOMETRY=y -# CONFIG_MTD_CFI_B1 is not set -CONFIG_MTD_CFI_B2=y -CONFIG_MTD_CFI_B4=y -CONFIG_MTD_CFI_I1=y -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_CFI_I4 is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_H3600_BACKPAQ is not set -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=m -CONFIG_BLK_DEV_NBD=m -# CONFIG_BLK_DEV_RAM is not set -# CONFIG_BLK_DEV_INITRD is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -CONFIG_NETLINK=y -CONFIG_RTNETLINK=y -# CONFIG_NETLINK_DEV is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_FILTER=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_IP_MROUTE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set - -# -# IP: Netfilter Configuration -# -# CONFIG_IP_NF_CONNTRACK is not set -# CONFIG_IP_NF_QUEUE is not set -# CONFIG_IP_NF_IPTABLES is not set -# CONFIG_IP_NF_COMPAT_IPCHAINS is not set -# CONFIG_IP_NF_COMPAT_IPFWADM is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -# CONFIG_NET_ETHERNET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_FILTER is not set -CONFIG_PPP_ASYNC=m -# CONFIG_PPP_SYNC_TTY is not set -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -# CONFIG_PPPOE is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -CONFIG_NET_RADIO=y -# CONFIG_STRIP is not set -CONFIG_WAVELAN=m -CONFIG_ARLAN=m -CONFIG_AIRONET4500=m -CONFIG_AIRONET4500_NONCS=m -# CONFIG_AIRONET4500_PNP is not set -# CONFIG_AIRONET4500_PCI is not set -# CONFIG_AIRONET4500_ISA is not set -# CONFIG_AIRONET4500_I365 is not set -# CONFIG_AIRONET4500_PROC is not set -# CONFIG_AIRO is not set -CONFIG_HERMES=m -CONFIG_PCMCIA_HERMES=m -CONFIG_AIRO_CS=m -CONFIG_NET_WIRELESS=y - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -CONFIG_PCMCIA_3C589=m -CONFIG_PCMCIA_3C574=m -CONFIG_PCMCIA_FMVJ18X=m -CONFIG_PCMCIA_PCNET=m -CONFIG_PCMCIA_NMCLAN=m -CONFIG_PCMCIA_SMC91C92=m -CONFIG_PCMCIA_XIRC2PS=m -# CONFIG_PCMCIA_AXNET is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -CONFIG_NET_PCMCIA_RADIO=y -# CONFIG_PCMCIA_RAYCS is not set -# CONFIG_PCMCIA_NETWAVE is not set -CONFIG_PCMCIA_WAVELAN=m -CONFIG_AIRONET4500_CS=m - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=m -CONFIG_IRLAN=m -# CONFIG_IRNET is not set -CONFIG_IRCOMM=m -# CONFIG_IRDA_ULTRA is not set -# CONFIG_IRDA_OPTIONS is not set - -# -# Infrared-port device drivers -# -# CONFIG_IRTTY_SIR is not set -# CONFIG_IRPORT_SIR is not set -# CONFIG_DONGLE is not set -# CONFIG_USB_IRDA is not set -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -# CONFIG_ALI_FIR is not set -# CONFIG_VLSI_FIR is not set -CONFIG_SA1100_FIR=m - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=m - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=m -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=m -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -CONFIG_BLK_DEV_IDECD=m -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_ATARAID is not set -# CONFIG_BLK_DEV_ATARAID_PDC is not set -# CONFIG_BLK_DEV_ATARAID_HPT is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -CONFIG_INPUT=y -# CONFIG_INPUT_KEYBDEV is not set -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_SERIAL=m -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=115200 -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_HUB6 is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 -# CONFIG_NEWTONKBD is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set -# CONFIG_L3_SA1111 is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -CONFIG_MOUSE=m -# CONFIG_PSMOUSE is not set -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set -# CONFIG_INPUT_NS558 is not set -# CONFIG_INPUT_LIGHTNING is not set -# CONFIG_INPUT_PCIGAME is not set -# CONFIG_INPUT_CS461X is not set -# CONFIG_INPUT_EMU10K1 is not set -# CONFIG_INPUT_SERIO is not set -# CONFIG_INPUT_SERPORT is not set -# CONFIG_INPUT_ANALOG is not set -# CONFIG_INPUT_A3D is not set -# CONFIG_INPUT_ADI is not set -# CONFIG_INPUT_COBRA is not set -# CONFIG_INPUT_GF2K is not set -# CONFIG_INPUT_GRIP is not set -# CONFIG_INPUT_INTERACT is not set -# CONFIG_INPUT_TMDC is not set -# CONFIG_INPUT_SIDEWINDER is not set -# CONFIG_INPUT_IFORCE_USB is not set -# CONFIG_INPUT_IFORCE_232 is not set -# CONFIG_INPUT_WARRIOR is not set -# CONFIG_INPUT_MAGELLAN is not set -# CONFIG_INPUT_SPACEORB is not set -# CONFIG_INPUT_SPACEBALL is not set -# CONFIG_INPUT_STINGER is not set -# CONFIG_INPUT_DB9 is not set -# CONFIG_INPUT_GAMECON is not set -# CONFIG_INPUT_TURBOGRAFX is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=m -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# -# CONFIG_PCMCIA_SERIAL_CS is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set -# CONFIG_V4L2_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=2 -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -CONFIG_ISO9660_FS=m -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -CONFIG_DEVFS_FS=y -CONFIG_DEVFS_MOUNT=y -CONFIG_DEVFS_DEBUG=y -# CONFIG_DRIVERFS_FS is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=m -CONFIG_NFS_V3=y -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=m -CONFIG_LOCKD=m -CONFIG_LOCKD_V4=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set -# CONFIG_ZISOFS_FS is not set -# CONFIG_ZLIB_FS_INFLATE is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_SA1100 is not set -CONFIG_FB_EPSON1356=y -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -# CONFIG_FBCON_MFB is not set -# CONFIG_FBCON_CFB2 is not set -# CONFIG_FBCON_CFB4 is not set -# CONFIG_FBCON_CFB8 is not set -CONFIG_FBCON_CFB16=y -# CONFIG_FBCON_CFB24 is not set -# CONFIG_FBCON_CFB32 is not set -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_MAC is not set -# CONFIG_FBCON_VGA_PLANES is not set -# CONFIG_FBCON_VGA is not set -# CONFIG_FBCON_HGA is not set -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -CONFIG_SOUND=m -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_MIDI_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_RME96XX is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_MIDI_VIA82CXXX is not set -CONFIG_SOUND_SA1100=m -# CONFIG_SOUND_UDA1341 is not set -# CONFIG_SOUND_ASSABET_UDA1341 is not set -# CONFIG_SOUND_H3600_UDA1341 is not set -# CONFIG_SOUND_PANGOLIN_UDA1341 is not set -# CONFIG_SOUND_SA1111_UDA1341 is not set -# CONFIG_SOUND_SA1100SSP is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_WAVEARTIST is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set -# CONFIG_MCP_SA1100 is not set -# CONFIG_MCP_UCB1200 is not set -# CONFIG_MCP_UCB1200_AUDIO is not set -# CONFIG_MCP_UCB1200_TS is not set - -# -# USB support -# -# CONFIG_USB is not set -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set -# CONFIG_USB_OHCI_SA1111 is not set -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set -# CONFIG_USB_HID is not set -# CONFIG_USB_HIDDEV is not set -# CONFIG_USB_KBD is not set -# CONFIG_USB_MOUSE is not set -# CONFIG_USB_WACOM is not set -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_USBNET is not set -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set -# CONFIG_USB_SERIAL_OMNINET is not set -# CONFIG_USB_RIO500 is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_NO_PGT_CACHE is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_SLAB=y -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set -# CONFIG_DEBUG_LL_SER3 is not set diff -Nru a/arch/arm/def-configs/lart b/arch/arm/def-configs/lart --- a/arch/arm/def-configs/lart Mon Sep 22 00:30:21 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,893 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -CONFIG_SA1100_LART=y -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -CONFIG_SA1100_USB_CHAR=m - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y -# CONFIG_CPU_BIG_ENDIAN is not set - -# -# General setup -# -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_CPU_FREQ=y -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -CONFIG_PM=y -CONFIG_APM=m -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="console=ttySA0,9600 root=/dev/ram" -# CONFIG_PFS168_CMDLINE is not set -CONFIG_LEDS=y -# CONFIG_LEDS_TIMER is not set -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -CONFIG_MTD_DEBUG=y -CONFIG_MTD_DEBUG_VERBOSE=1 -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -# CONFIG_MTD_CFI is not set -# CONFIG_MTD_CFI_INTELEXT is not set -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_SUN_UFLASH is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_TQM8XXL is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_NETSC520 is not set -# CONFIG_MTD_SBC_GXX is not set -# CONFIG_MTD_ELAN_104NC is not set -# CONFIG_MTD_DBOX2 is not set -# CONFIG_MTD_CSTM_MIPS_IXX is not set -# CONFIG_MTD_CFI_FLAGADM is not set -# CONFIG_MTD_SOLUTIONENGINE is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set -# CONFIG_MTD_OCELOT is not set -# CONFIG_MTD_L440GX is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -# CONFIG_MTD_SA1100 is not set -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -CONFIG_MTD_LART=y -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set -# CONFIG_PNPBIOS is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=m -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -CONFIG_INET_ECN=y -CONFIG_SYN_COOKIES=y -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -CONFIG_DUMMY=m -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_FILTER is not set -CONFIG_PPP_ASYNC=m -# CONFIG_PPP_SYNC_TTY is not set -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -# CONFIG_PPPOE is not set -CONFIG_SLIP=m -CONFIG_SLIP_COMPRESSED=y -# CONFIG_SLIP_SMART is not set -# CONFIG_SLIP_MODE_SLIP6 is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=m - -# -# IrDA protocols -# -CONFIG_IRLAN=m -CONFIG_IRNET=m -CONFIG_IRCOMM=m -# CONFIG_IRDA_ULTRA is not set -CONFIG_IRDA_OPTIONS=y - -# -# IrDA options -# -CONFIG_IRDA_CACHE_LAST_LSAP=y -# CONFIG_IRDA_FAST_RR is not set -CONFIG_IRDA_DEBUG=y - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -# CONFIG_IRTTY_SIR is not set -# CONFIG_IRPORT_SIR is not set - -# -# Dongle support -# -# CONFIG_DONGLE is not set - -# -# FIR device drivers -# -# CONFIG_USB_IRDA is not set -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -# CONFIG_ALI_FIR is not set -# CONFIG_VLSI_FIR is not set -CONFIG_SA1100_FIR=m - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=m - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=m - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=m -# CONFIG_IDEDISK_MULTI_MODE is not set -# CONFIG_BLK_DEV_IDECS is not set -CONFIG_BLK_DEV_IDECD=m -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_ATARAID is not set -# CONFIG_BLK_DEV_ATARAID_PDC is not set -# CONFIG_BLK_DEV_ATARAID_HPT is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -# CONFIG_VT is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=9600 -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_HUB6 is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 -CONFIG_UCB1200=m -CONFIG_TOUCHSCREEN_UCB1200=m -CONFIG_AUDIO_UCB1200=m -CONFIG_ADC_UCB1200=m -# CONFIG_TOUCHSCREEN_H3600 is not set -CONFIG_PROFILER=m -# CONFIG_PFS168_SPI is not set -# CONFIG_PFS168_DTMF is not set -# CONFIG_PFS168_MISC is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set - -# -# Other L3 adapters -# -# CONFIG_L3_SA1111 is not set - -# -# L3 driver support -# -# CONFIG_L3_DRV_UDA1341 is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set - -# -# Input core support is needed for gameports -# - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=m -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set -# CONFIG_SONYPI is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -CONFIG_REISERFS_FS=m -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_CMS_FS is not set -CONFIG_EXT3_FS=m -CONFIG_JBD=m -# CONFIG_JBD_DEBUG is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=m -CONFIG_JFFS2_FS_DEBUG=1 -CONFIG_CRAMFS=m -CONFIG_TMPFS=y -CONFIG_RAMFS=m -CONFIG_ISO9660_FS=m -CONFIG_JOLIET=y -# CONFIG_MINIX_FS is not set -# CONFIG_FREEVXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -CONFIG_UDF_FS=m -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=m -CONFIG_NFS_V3=y -# CONFIG_ROOT_NFS is not set -CONFIG_NFSD=m -CONFIG_NFSD_V3=y -CONFIG_SUNRPC=m -CONFIG_LOCKD=m -CONFIG_LOCKD_V4=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=m -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -CONFIG_NLS_CODEPAGE_850=m -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -CONFIG_NLS_ISO8859_1=m -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -CONFIG_NLS_ISO8859_15=m -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -CONFIG_NLS_UTF8=m - -# -# Sound -# -CONFIG_SOUND=m -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_RME96XX is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_MIDI_VIA82CXXX is not set -# CONFIG_SOUND_ASSABET_UDA1341 is not set -# CONFIG_SOUND_H3600_UDA1341 is not set -# CONFIG_SOUND_PANGOLIN_UDA1341 is not set -# CONFIG_SOUND_SA1111_UDA1341 is not set -CONFIG_SOUND_SA1100SSP=m -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_WAVEARTIST is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# - -# -# Input core support is needed for USB HID -# - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# -# CONFIG_USB_DABUSB is not set - -# -# USB Network adaptors -# -# CONFIG_USB_PLUSB is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_USBNET is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_OMNINET is not set - -# -# Miscellaneous USB drivers -# -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_ID75 is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_NO_PGT_CACHE is not set -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/lubbock b/arch/arm/def-configs/lubbock --- a/arch/arm/def-configs/lubbock Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,882 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y - -# -# General setup -# -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -CONFIG_ARCH_PXA=y -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_IOP310 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3100 is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_H3800 is not set -# CONFIG_SA1100_H3XXX is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_BADGE4 is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_PT_SYSTEM3 is not set -# CONFIG_SA1100_SHANNON is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_STORK is not set -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set -# CONFIG_H3600_SLEEVE is not set - -# -# Intel PXA250/210 Implementations -# -CONFIG_ARCH_LUBBOCK=y -# CONFIG_ARCH_PXA_IDP is not set -CONFIG_SA1111=y - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_AUTCPU12 is not set -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_FORTUNET is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set - -# -# IOP310 Implementation Options -# -# CONFIG_ARCH_IQ80310 is not set - -# -# IOP310 Chipset Features -# -# CONFIG_IOP310_AAU is not set -# CONFIG_IOP310_DMA is not set -# CONFIG_IOP310_MU is not set -# CONFIG_IOP310_PMON is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -# CONFIG_CPU_32v4 is not set -CONFIG_CPU_32v5=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM922T is not set -# CONFIG_CPU_ARM926T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -# CONFIG_CPU_SA1100 is not set -CONFIG_CPU_XSCALE=y -CONFIG_XSCALE_CACHE_ERRATA=y -CONFIG_XSCALE_PMU=y - -# -# Processor Features -# -# CONFIG_ARM_THUMB is not set - -# -# General setup -# -# CONFIG_DISCONTIGMEM is not set -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -# CONFIG_FIQ is not set -# CONFIG_ZBOOT_ROM is not set -CONFIG_ZBOOT_ROM_TEXT=0 -CONFIG_ZBOOT_ROM_BSS=0 -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -CONFIG_PCMCIA_PROBE=y -# CONFIG_I82092 is not set -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -# CONFIG_PCMCIA_SA1100 is not set -CONFIG_PCMCIA_PXA=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_PREEMPT is not set -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="root=/dev/nfs ip=bootp console=ttyS0,115200 mem=64M" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_CONCAT is not set -CONFIG_MTD_REDBOOT_PARTS=y -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_NOSWAP=y -# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -CONFIG_MTD_CFI_GEOMETRY=y -# CONFIG_MTD_CFI_B1 is not set -# CONFIG_MTD_CFI_B2 is not set -CONFIG_MTD_CFI_B4=y -# CONFIG_MTD_CFI_I1 is not set -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_CFI_I4 is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -# CONFIG_MTD_SA1100 is not set -# CONFIG_MTD_2PARTS_IPAQ is not set -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -CONFIG_MTD_LUBBOCK=y -# CONFIG_MTD_EPXA10DB is not set -# CONFIG_MTD_FORTUNET is not set -# CONFIG_MTD_PCI is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set -# CONFIG_PNPBIOS is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_CISS_SCSI_TAPE is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -# CONFIG_BLK_DEV_RAM is not set -# CONFIG_BLK_DEV_INITRD is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -# CONFIG_IP_PNP_DHCP is not set -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set - -# -# Appletalk devices -# -# CONFIG_DEV_APPLETALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_ARM_AM79C961A is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -CONFIG_NET_VENDOR_SMC=y -# CONFIG_WD80x3 is not set -# CONFIG_ULTRAMCA is not set -# CONFIG_ULTRA is not set -# CONFIG_ULTRA32 is not set -CONFIG_SMC9194=y -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_E1000 is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_TIGON3 is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# Tulip family network device support -# -# CONFIG_NET_TULIP is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_PCMCIA_AXNET is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN_BOOL is not set - -# -# Input device support -# -CONFIG_INPUT=y -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -CONFIG_INPUT_EVDEV=y -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -# CONFIG_GAMEPORT_NS558 is not set -# CONFIG_GAMEPORT_L4 is not set -# CONFIG_INPUT_EMU10K1 is not set -# CONFIG_GAMEPORT_PCIGAME is not set -# CONFIG_GAMEPORT_FM801 is not set -# CONFIG_GAMEPORT_CS461x is not set -# CONFIG_SERIO is not set -# CONFIG_SERIO_SERPORT is not set -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_JOYSTICK_ANALOG is not set -# CONFIG_JOYSTICK_A3D is not set -# CONFIG_JOYSTICK_ADI is not set -# CONFIG_JOYSTICK_COBRA is not set -# CONFIG_JOYSTICK_GF2K is not set -# CONFIG_JOYSTICK_GRIP is not set -# CONFIG_JOYSTICK_INTERACT is not set -# CONFIG_JOYSTICK_SIDEWINDER is not set -# CONFIG_JOYSTICK_TMDC is not set -# CONFIG_JOYSTICK_IFORCE_USB is not set -# CONFIG_JOYSTICK_IFORCE_232 is not set -# CONFIG_JOYSTICK_WARRIOR is not set -# CONFIG_JOYSTICK_MAGELLAN is not set -# CONFIG_JOYSTICK_SPACEORB is not set -# CONFIG_JOYSTICK_SPACEBALL is not set -# CONFIG_JOYSTICK_STINGER is not set -# CONFIG_JOYSTICK_DB9 is not set -# CONFIG_JOYSTICK_GAMECON is not set -# CONFIG_JOYSTICK_TURBOGRAFX is not set - -# -# Character devices -# -# CONFIG_VT is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -# CONFIG_SERIAL_8250_CS is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_RSA is not set - -# -# Non-8250 serial port support -# -# CONFIG_ATOMWIDE_SERIAL is not set -# CONFIG_DUALSP_SERIAL is not set -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X_OLD_NAME is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -# CONFIG_SERIAL_SA1100 is not set -# CONFIG_SERIAL_SA1100_CONSOLE is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set - -# -# Other L3 adapters -# -# CONFIG_L3_SA1111 is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -CONFIG_BUSMOUSE=y -# CONFIG_ATIXL_BUSMOUSE is not set -# CONFIG_LOGIBUSMOUSE is not set -# CONFIG_MS_BUSMOUSE is not set -CONFIG_MOUSE=y -CONFIG_PSMOUSE=y -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# -# CONFIG_SYNCLINK_CS is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_QFMT_V1 is not set -# CONFIG_QFMT_V2 is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_JFFS2_FS_NAND is not set -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -# CONFIG_JFS_FS is not set -# CONFIG_JFS_DEBUG is not set -# CONFIG_JFS_STATISTICS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -CONFIG_ROOT_NFS=y -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -# CONFIG_NFSD_TCP is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_EXPORTFS is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set -# CONFIG_ZISOFS_FS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -# CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -CONFIG_NLS_ISO8859_1=y -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Sound -# -CONFIG_SOUND=y - -# -# Open Sound System -# -CONFIG_SOUND_PRIME=y -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_MIDI_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_RME96XX is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_MIDI_VIA82CXXX is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_WAVEARTIST is not set -# CONFIG_SOUND_PXA_AC97 is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# Advanced Linux Sound Architecture -# -# CONFIG_SND is not set - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set -# CONFIG_MCP_SA1100 is not set -# CONFIG_MCP_UCB1200 is not set -# CONFIG_MCP_UCB1200_AUDIO is not set -# CONFIG_MCP_UCB1200_TS is not set -# CONFIG_MCP_UCB1400_TS is not set - -# -# Console Switches -# -# CONFIG_SWITCHES is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_INFO=y -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SLAB is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set - -# -# Library routines -# -CONFIG_CRC32=y -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=y diff -Nru a/arch/arm/def-configs/lusl7200 b/arch/arm/def-configs/lusl7200 --- a/arch/arm/def-configs/lusl7200 Mon Sep 22 00:30:19 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,488 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y - -# -# General setup -# -# CONFIG_NET is not set -CONFIG_SYSVIPC=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_SYSCTL=y - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_IOP310 is not set -CONFIG_ARCH_L7200=y -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3100 is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_H3800 is not set -# CONFIG_SA1100_H3XXX is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_BADGE4 is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_PT_SYSTEM3 is not set -# CONFIG_SA1100_SHANNON is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_STORK is not set -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set -# CONFIG_H3600_SLEEVE is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_AUTCPU12 is not set -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_FORTUNET is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_32v5 is not set -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -CONFIG_CPU_ARM720T=y -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM922T is not set -# CONFIG_CPU_ARM926T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -# CONFIG_CPU_SA1100 is not set -# CONFIG_CPU_XSCALE is not set -# CONFIG_XSCALE_PMU is not set - -# -# Processor Features -# -# CONFIG_ARM_THUMB is not set - -# -# General setup -# -# CONFIG_DISCONTIGMEM is not set -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_FIQ=y -CONFIG_ZBOOT_ROM=y -CONFIG_ZBOOT_ROM_TEXT=00010000 -CONFIG_ZBOOT_ROM_BSS=f03e0000 -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set - -# -# At least one math emulation must be selected -# -# CONFIG_FPE_NWFPE is not set -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_PREEMPT is not set -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="console=tty0 console=ttyLU1,115200 root=/dev/ram initrd=0xf1000000,0x005dac7b mem=32M" -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set -# CONFIG_PNPBIOS is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_CISS_SCSI_TAPE is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# ATA/IDE/MFM/RLL support -# -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# - -# -# Input device support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -# CONFIG_GAMEPORT_NS558 is not set -# CONFIG_GAMEPORT_L4 is not set -# CONFIG_INPUT_EMU10K1 is not set -# CONFIG_GAMEPORT_PCIGAME is not set -# CONFIG_GAMEPORT_FM801 is not set -# CONFIG_GAMEPORT_CS461x is not set -# CONFIG_SERIO is not set -# CONFIG_SERIO_SERPORT is not set - -# -# Character devices -# -# CONFIG_VT is not set -# CONFIG_SERIAL_EXTENDED is not set -CONFIG_SERIAL_NONSTANDARD=y -# CONFIG_COMPUTONE is not set -# CONFIG_ROCKETPORT is not set -# CONFIG_CYCLADES is not set -# CONFIG_DIGIEPCA is not set -# CONFIG_DIGI is not set -# CONFIG_ESPSERIAL is not set -# CONFIG_MOXA_INTELLIO is not set -# CONFIG_MOXA_SMARTIO is not set -# CONFIG_ISI is not set -# CONFIG_SYNCLINK is not set -# CONFIG_SYNCLINKMP is not set -# CONFIG_N_HDLC is not set -# CONFIG_RISCOM8 is not set -# CONFIG_SPECIALIX is not set -# CONFIG_SX is not set -# CONFIG_RIO is not set -# CONFIG_STALDRV is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_RSA is not set - -# -# Non-8250 serial port support -# - -# -# ARM Serial drivers -# -# CONFIG_ATOMWIDE_SERIAL is not set -# CONFIG_DUALSP_SERIAL is not set -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -# CONFIG_SERIAL_SA1100 is not set -# CONFIG_SERIAL_SA1100_CONSOLE is not set -# CONFIG_UNIX98_PTYS is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set - -# -# Other L3 adapters -# -# CONFIG_L3_SA1111 is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_QFMT_V1 is not set -# CONFIG_QFMT_V2 is not set -# CONFIG_QIFACE_COMPAT is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -# CONFIG_JFS_FS is not set -# CONFIG_JFS_DEBUG is not set -# CONFIG_JFS_STATISTICS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -# CONFIG_DEVPTS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_SMB_FS is not set -# CONFIG_ZISOFS_FS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set -# CONFIG_MCP_SA1100 is not set -# CONFIG_MCP_UCB1200 is not set -# CONFIG_MCP_UCB1200_AUDIO is not set -# CONFIG_MCP_UCB1200_TS is not set - -# -# Console Switches -# -# CONFIG_SWITCHES is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_INFO=y -# CONFIG_DEBUG_KERNEL is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -# CONFIG_DEBUG_ERRORS is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set - -# -# Library routines -# -# CONFIG_CRC32 is not set -# CONFIG_ZLIB_INFLATE is not set -# CONFIG_ZLIB_DEFLATE is not set diff -Nru a/arch/arm/def-configs/neponset b/arch/arm/def-configs/neponset --- a/arch/arm/def-configs/neponset Mon Sep 22 00:30:20 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,895 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -CONFIG_MMU=y -CONFIG_SWAP=y -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y - -# -# General setup -# -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_PXA is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_IOP310 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# - -# -# CLPS711X/EP721X Implementations -# - -# -# Epxa10db -# - -# -# Footbridge Implementations -# - -# -# IOP310 Implementation Options -# - -# -# IOP310 Chipset Features -# - -# -# Intel PXA250/210 Implementations -# - -# -# SA11x0 Implementations -# -CONFIG_SA1100_ASSABET=y -CONFIG_ASSABET_NEPONSET=y -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3100 is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_H3800 is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_BADGE4 is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_PT_SYSTEM3 is not set -# CONFIG_SA1100_SHANNON is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_STORK is not set -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -CONFIG_SA1100_USB_CHAR=m -CONFIG_SA1111=y -CONFIG_FORCE_MAX_ZONEORDER=9 - -# -# Processor Type -# -CONFIG_CPU_32=y -CONFIG_CPU_SA1100=y -CONFIG_CPU_32v4=y - -# -# Processor Features -# - -# -# General setup -# -CONFIG_DISCONTIGMEM=y -CONFIG_ISA=y -CONFIG_ZBOOT_ROM=y -CONFIG_ZBOOT_ROM_TEXT=0x80000 -CONFIG_ZBOOT_ROM_BSS=0xc1000000 -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_24_API=y -CONFIG_CPU_FREQ_26_API=y -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_PCMCIA_SA1111=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -CONFIG_PM=y -# CONFIG_PREEMPT is not set -CONFIG_APM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="console=ttySA0,38400n8 cpufreq=221200 rw root=/dev/mtdblock2 mtdparts=sa1100:512K(boot),1M(kernel),2560K(initrd),4M(root) load_ramdisk=1 prompt_ramdisk=0 mem=32M noinitrd initrd=0xc0800000,3M" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -CONFIG_MTD_CONCAT=y -CONFIG_MTD_REDBOOT_PARTS=y -CONFIG_MTD_CMDLINE_PARTS=y -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -# CONFIG_MTD_CHAR is not set -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_NOSWAP=y -# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_GEOMETRY is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -CONFIG_MTD_RAM=y -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_EDB7312 is not set -CONFIG_MTD_PCMCIA=y -# CONFIG_MTD_UCLINUX is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set - -# -# Networking options -# -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -CONFIG_IPV6_SCTP__=y -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_LLC is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -CONFIG_NET_VENDOR_SMC=y -# CONFIG_WD80x3 is not set -# CONFIG_ULTRA is not set -CONFIG_SMC9194=y -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_PCMCIA_AXNET is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# ATA/ATAPI/MFM/RLL support -# -# CONFIG_IDE is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN_BOOL is not set - -# -# Input device support -# -CONFIG_INPUT=y - -# -# Userland interfaces -# -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -CONFIG_INPUT_TSDEV=y -CONFIG_INPUT_TSDEV_SCREEN_X=240 -CONFIG_INPUT_TSDEV_SCREEN_Y=320 -CONFIG_INPUT_TSLIBDEV=y -# CONFIG_INPUT_EVDEV is not set -# CONFIG_INPUT_EVBUG is not set - -# -# Input I/O drivers -# -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -CONFIG_SERIO=y -# CONFIG_SERIO_I8042 is not set -CONFIG_SERIO_SERPORT=m -# CONFIG_SERIO_CT82C710 is not set -CONFIG_SERIO_SA1111=y - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y -CONFIG_KEYBOARD_ATKBD=y -# CONFIG_KEYBOARD_SUNKBD is not set -# CONFIG_KEYBOARD_XTKBD is not set -# CONFIG_KEYBOARD_NEWTON is not set -# CONFIG_INPUT_MOUSE is not set -# CONFIG_INPUT_JOYSTICK is not set -CONFIG_INPUT_TOUCHSCREEN=y -# CONFIG_TOUCHSCREEN_GUNZE is not set -# CONFIG_INPUT_MISC is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_HW_CONSOLE=y -CONFIG_SERIAL_NONSTANDARD=y -# CONFIG_COMPUTONE is not set -# CONFIG_ROCKETPORT is not set -# CONFIG_CYCLADES is not set -# CONFIG_DIGIEPCA is not set -# CONFIG_DIGI is not set -# CONFIG_ESPSERIAL is not set -# CONFIG_MOXA_INTELLIO is not set -# CONFIG_MOXA_SMARTIO is not set -# CONFIG_ISI is not set -# CONFIG_SYNCLINK is not set -# CONFIG_SYNCLINKMP is not set -# CONFIG_N_HDLC is not set -# CONFIG_RISCOM8 is not set -# CONFIG_SPECIALIX is not set -# CONFIG_SX is not set -# CONFIG_RIO is not set -# CONFIG_STALDRV is not set - -# -# Serial drivers -# -CONFIG_SERIAL_8250=y -# CONFIG_SERIAL_8250_CONSOLE is not set -CONFIG_SERIAL_8250_CS=y -# CONFIG_SERIAL_8250_EXTENDED is not set - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_ELV is not set -# CONFIG_I2C_VELLEMAN is not set -# CONFIG_SCx200_ACB is not set -CONFIG_I2C_BIT_SA1100_GPIO=y -# CONFIG_I2C_ALGOPCF is not set -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_PROC=y - -# -# L3 serial bus support -# -CONFIG_L3=y -CONFIG_L3_ALGOBIT=y -CONFIG_L3_BIT_SA1100_GPIO=y -CONFIG_BIT_SA1100_GPIO=y - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -CONFIG_WATCHDOG=y -# CONFIG_WATCHDOG_NOWAYOUT is not set -# CONFIG_SOFT_WATCHDOG is not set -# CONFIG_WDT is not set -# CONFIG_WDTPCI is not set -# CONFIG_PCWATCHDOG is not set -# CONFIG_ACQUIRE_WDT is not set -# CONFIG_ADVANTECH_WDT is not set -CONFIG_SA1100_WATCHDOG=m -# CONFIG_EUROTECH_WDT is not set -# CONFIG_IB700_WDT is not set -# CONFIG_I810_TCO is not set -# CONFIG_MIXCOMWD is not set -# CONFIG_SCx200_WDT is not set -# CONFIG_60XX_WDT is not set -# CONFIG_W83877F_WDT is not set -# CONFIG_MACHZ_WDT is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_GEN_RTC is not set -CONFIG_SA1100_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# -# CONFIG_SYNCLINK_CS is not set -# CONFIG_RAW_DRIVER is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -CONFIG_FAT_FS=m -CONFIG_MSDOS_FS=m -CONFIG_VFAT_FS=m -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_JFFS2_FS_NAND is not set -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UFS_FS is not set -# CONFIG_XFS_FS is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_NFS_V4 is not set -# CONFIG_NFSD is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_EXPORTFS is not set -# CONFIG_CIFS is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -# CONFIG_MSDOS_PARTITION is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_EFI_PARTITION is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=m -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -CONFIG_NLS_ISO8859_1=m -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -CONFIG_FB_SA1100=y -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_FONTWIDTH8_ONLY=y -# CONFIG_FONT_SUN8x16 is not set -CONFIG_FBCON_FONTS=y -# CONFIG_FONT_8x8 is not set -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -CONFIG_FONT_ACORN_8x8=y -# CONFIG_FONT_MINI_4x6 is not set - -# -# Sound -# -CONFIG_SOUND=y - -# -# Open Sound System -# -CONFIG_SOUND_PRIME=y -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -CONFIG_SOUND_SA1100=y -CONFIG_SOUND_UDA1341=y -CONFIG_SOUND_ASSABET_UDA1341=y -CONFIG_SOUND_SA1111_UDA1341=y -# CONFIG_SOUND_SA1100SSP is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# Advanced Linux Sound Architecture -# -# CONFIG_SND is not set - -# -# Misc devices -# - -# -# Multimedia Capabilities Port drivers -# -CONFIG_MCP=y -CONFIG_MCP_SA1100=y -CONFIG_MCP_UCB1200=y -CONFIG_MCP_UCB1200_AUDIO=m -CONFIG_MCP_UCB1200_TS=y - -# -# Console Switches -# -# CONFIG_SWITCHES is not set - -# -# USB support -# -CONFIG_USB=m -CONFIG_USB_DEBUG=y - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_LONG_TIMEOUT is not set -# CONFIG_USB_BANDWIDTH is not set -# CONFIG_USB_DYNAMIC_MINORS is not set - -# -# USB Host Controller Drivers -# -# CONFIG_USB_EHCI_HCD is not set -CONFIG_USB_OHCI_HCD=m -# CONFIG_USB_UHCI_HCD_ALT is not set -# CONFIG_USB_SL811HS is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH_TTY is not set -# CONFIG_USB_MIDI is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# SCSI support is needed for USB Storage -# - -# -# USB Human Interface Devices (HID) -# -# CONFIG_USB_HID is not set - -# -# USB HID Boot Protocol drivers -# -# CONFIG_USB_KBD is not set -CONFIG_USB_MOUSE=m -# CONFIG_USB_AIPTEK is not set -# CONFIG_USB_WACOM is not set -# CONFIG_USB_POWERMATE is not set -# CONFIG_USB_XPAD is not set - -# -# USB Imaging devices -# -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set - -# -# USB Multimedia devices -# -# CONFIG_USB_DABUSB is not set - -# -# Video4Linux support is needed for USB Multimedia device support -# - -# -# USB Network adaptors -# -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_RTL8150 is not set -# CONFIG_USB_USBNET is not set - -# -# USB port drivers -# - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_TIGL is not set -# CONFIG_USB_AUERSWALD is not set -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_BRLVGER is not set -# CONFIG_USB_LCD is not set -# CONFIG_USB_TEST is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_SLAB=y -CONFIG_MAGIC_SYSRQ=y -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_ERRORS=y -# CONFIG_KALLSYMS is not set -CONFIG_DEBUG_LL=y - -# -# Security options -# -CONFIG_SECURITY_CAPABILITIES=y - -# -# Cryptographic options -# -# CONFIG_CRYPTO is not set - -# -# Library routines -# -# CONFIG_CRC32 is not set -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=y diff -Nru a/arch/arm/def-configs/omnimeter b/arch/arm/def-configs/omnimeter --- a/arch/arm/def-configs/omnimeter Mon Sep 22 00:30:20 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,571 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_SBUS is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_CLPS711X is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Footbridge Implementations -# - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_SA1100_BRUTUS is not set -CONFIG_SA1100_OMNIMETER=y -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_FREQUENCY_SCALE is not set -# CONFIG_SA1100_VOLTAGE_SCALE is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -CONFIG_CPU_32v4=y -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_ANGELBOOT is not set -# CONFIG_PCI is not set -CONFIG_ISA=y -# CONFIG_ISA_DMA is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -CONFIG_I82365=y -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_SA1100_PCMCIA=y -# CONFIG_H3600_SLEEVE is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_NWFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="keepinitrd mem=16M root=/dev/ram ramdisk=8192 initrd=0xd0000000,4M" -# CONFIG_LEDS is not set -# CONFIG_ALIGNMENT_TRAP is not set - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=m -CONFIG_BLK_DEV_NBD=m -# CONFIG_BLK_DEV_RAM is not set -# CONFIG_BLK_DEV_INITRD is not set -# CONFIG_BLK_DEV_FLASH is not set - -# -# Networking options -# -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -CONFIG_NETLINK=y -CONFIG_RTNETLINK=y -# CONFIG_NETLINK_DEV is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_IP_MROUTE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set - -# -# IP: Netfilter Configuration -# -# CONFIG_IP_NF_CONNTRACK is not set -# CONFIG_IP_NF_QUEUE is not set -# CONFIG_IP_NF_IPTABLES is not set -# CONFIG_IP_NF_COMPAT_IPCHAINS is not set -# CONFIG_IP_NF_COMPAT_IPFWADM is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set -# CONFIG_NET_SB1000 is not set -# CONFIG_NET_SA1100_USB_HOST is not set -# CONFIG_NET_SA1100_USB_CLIENT is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -CONFIG_PCMCIA_3C589=y -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -CONFIG_NET_PCMCIA_RADIO=y -# CONFIG_PCMCIA_RAYCS is not set -# CONFIG_PCMCIA_NETWAVE is not set -CONFIG_PCMCIA_WAVELAN=y -CONFIG_AIRONET4500_CS=y -CONFIG_PCMCIA_WVLAN=y -CONFIG_PCMCIA_NETCARD=y - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=y -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -# CONFIG_TOUCHSCREEN_UCB1200 is not set -# CONFIG_TOUCHSCREEN_BITSY is not set -# CONFIG_TOUCHSCREEN_BITSY_KEYBOARD is not set -# CONFIG_H3600_SLEEVE is not set -CONFIG_SERIAL=y -# CONFIG_SERIAL_CONSOLE is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=9600 -# CONFIG_TOUCHSCREEN_UCB1200 is not set -# CONFIG_TOUCHSCREEN_BITSY is not set -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -CONFIG_MOUSE=m -# CONFIG_PSMOUSE is not set -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_SA1100_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -CONFIG_PCMCIA_SERIAL=y - -# -# PCMCIA character device support -# -# CONFIG_PCMCIA_SERIAL_CS is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -# CONFIG_DEVPTS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_MOUNT_SUBDIR is not set -# CONFIG_NCPFS_NDS_DOMAINS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -# CONFIG_FBCON_MFB is not set -# CONFIG_FBCON_CFB2 is not set -CONFIG_FBCON_CFB4=y -# CONFIG_FBCON_CFB8 is not set -# CONFIG_FBCON_CFB16 is not set -# CONFIG_FBCON_CFB24 is not set -# CONFIG_FBCON_CFB32 is not set -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_MAC is not set -# CONFIG_FBCON_VGA_PLANES is not set -# CONFIG_FBCON_VGA is not set -# CONFIG_FBCON_HGA is not set -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_MAGIC_SYSRQ is not set -CONFIG_DEBUG_LL=y diff -Nru a/arch/arm/def-configs/pangolin b/arch/arm/def-configs/pangolin --- a/arch/arm/def-configs/pangolin Mon Sep 22 00:30:22 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,742 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -CONFIG_SA1100_PANGOLIN=y -CONFIG_SA1100_PANGOLIN_PCMCIA_IDE=y -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y -# CONFIG_CPU_BIG_ENDIAN is not set - -# -# General setup -# -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -# CONFIG_CPU_FREQ is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -# CONFIG_FPE_NWFPE is not set -CONFIG_FPE_FASTFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="keepinitrd mem=128M root=/dev/ram initrd=0xc0800000,3M" -# CONFIG_PFS168_CMDLINE is not set -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_NOSWAP=y -# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -CONFIG_MTD_CFI_GEOMETRY=y -# CONFIG_MTD_CFI_B1 is not set -# CONFIG_MTD_CFI_B2 is not set -CONFIG_MTD_CFI_B4=y -# CONFIG_MTD_CFI_I1 is not set -# CONFIG_MTD_CFI_I2 is not set -CONFIG_MTD_CFI_I4=y -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_SUN_UFLASH is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_TQM8XXL is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_NETSC520 is not set -# CONFIG_MTD_SBC_GXX is not set -# CONFIG_MTD_ELAN_104NC is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set -# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_DBOX2 is not set -# CONFIG_MTD_CSTM_MIPS_IXX is not set -# CONFIG_MTD_CFI_FLAGADM is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_SOLUTIONENGINE is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set -# CONFIG_MTD_OCELOT is not set -# CONFIG_MTD_L440GX is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_LART is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=16384 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -CONFIG_NET_VENDOR_SMC=y -# CONFIG_WD80x3 is not set -# CONFIG_ULTRAMCA is not set -# CONFIG_ULTRA is not set -# CONFIG_ULTRA32 is not set -CONFIG_SMC9194=y -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_ACENIC_OMIT_TIGON_I is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -CONFIG_NET_PCMCIA_RADIO=y -# CONFIG_PCMCIA_RAYCS is not set -# CONFIG_PCMCIA_NETWAVE is not set -# CONFIG_PCMCIA_WAVELAN is not set -# CONFIG_AIRONET4500_CS is not set -CONFIG_PCMCIA_WVLAN=y - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=m - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=m -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=m -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -# CONFIG_BLK_DEV_PANGOLIN is not set -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=115200 -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 -# CONFIG_UCB1200 is not set -# CONFIG_TOUCHSCREEN_UCB1200 is not set -# CONFIG_AUDIO_UCB1200 is not set -# CONFIG_ADC_UCB1200 is not set -# CONFIG_TOUCHSCREEN_BITSY is not set -CONFIG_PROFILER=y -# CONFIG_PFS168_SPI is not set -# CONFIG_PFS168_DTMF is not set -# CONFIG_PFS168_MISC is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -# CONFIG_UMSDOS_FS is not set -CONFIG_VFAT_FS=y -# CONFIG_EFS_FS is not set -CONFIG_JFFS_FS=y -CONFIG_JFFS_FS_VERBOSE=0 -# CONFIG_JFFS2_FS is not set -CONFIG_CRAMFS=y -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_NFS_FS is not set -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -# CONFIG_SUNRPC is not set -# CONFIG_LOCKD is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -CONFIG_NLS_CODEPAGE_950=y -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_SA1100 is not set -CONFIG_FB_MQ200=y -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_E1355 is not set -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -# CONFIG_FBCON_MFB is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -# CONFIG_FBCON_CFB24 is not set -# CONFIG_FBCON_CFB32 is not set -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_MAC is not set -# CONFIG_FBCON_VGA_PLANES is not set -# CONFIG_FBCON_VGA is not set -# CONFIG_FBCON_HGA is not set -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -CONFIG_SOUND=y -# CONFIG_SOUND_ASSABET_UDA1341 is not set -CONFIG_SOUND_PANGOLIN_UDA1341=y -# CONFIG_SOUND_BITSY_UDA1341 is not set -# CONFIG_SOUND_SA1111_UDA1341 is not set -# CONFIG_SOUND_SA1100SSP is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_MIDI_VIA82CXXX is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_INFO=y -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/pfs168_mqtft b/arch/arm/def-configs/pfs168_mqtft --- a/arch/arm/def-configs/pfs168_mqtft Mon Sep 22 00:30:21 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,782 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_CLPS711X is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_PFS168=y -CONFIG_SA1111=y -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -CONFIG_SA1100_USB_CHAR=m -CONFIG_SA1100_FREQUENCY_SCALE=m -# CONFIG_SA1100_VOLTAGE_SCALE is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y - -# -# General setup -# - -# -# Please ensure that you have read the help on the next option -# -# CONFIG_ANGELBOOT is not set -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=m -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=m -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="root=/dev/nfs mem=16M" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y -CONFIG_UCB1200=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# RAM/ROM Device Drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_MTDRAM is not set - -# -# Linearly Mapped Flash Device Drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_CFI_GEOMETRY is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_SBC_MEDIAGX is not set -# CONFIG_MTD_ELAN_104NC is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_CSTM_CFI_JEDEC is not set -# CONFIG_MTD_JEDEC is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set -# CONFIG_MTD_NAND_SPIA is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -CONFIG_NET_VENDOR_SMC=y -# CONFIG_WD80x3 is not set -# CONFIG_ULTRA is not set -# CONFIG_ULTRA32 is not set -CONFIG_SMC9194=y -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_PPP_DEFLATE=m -# CONFIG_PPP_BSDCOMP is not set -# CONFIG_PPPOE is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=m -# CONFIG_PCMCIA_NMCLAN is not set -CONFIG_PCMCIA_SMC91C92=m -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=m - -# -# IrDA protocols -# -CONFIG_IRLAN=m -CONFIG_IRNET=m -CONFIG_IRCOMM=m -CONFIG_IRDA_ULTRA=y -# CONFIG_IRDA_OPTIONS is not set - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -CONFIG_IRTTY_SIR=m -CONFIG_IRPORT_SIR=m - -# -# FIR device drivers -# -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -CONFIG_SA1100_FIR=m - -# -# Dongle support -# -# CONFIG_DONGLE is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=m - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=m - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=m -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -CONFIG_INPUT=y -CONFIG_INPUT_KEYBDEV=y -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -CONFIG_SERIAL=y -# CONFIG_SERIAL_CONSOLE is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=115200 -CONFIG_TOUCHSCREEN_UCB1200=y -# CONFIG_TOUCHSCREEN_BITSY is not set -# CONFIG_PROFILER is not set -# CONFIG_PFS168_SPI is not set -CONFIG_PFS168_DTMF=y -CONFIG_PFS168_MISC=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_PHILIPSPAR is not set -# CONFIG_I2C_ELV is not set -# CONFIG_I2C_VELLEMAN is not set -# CONFIG_I2C_ASSABET is not set -CONFIG_I2C_PFS168=y -# CONFIG_I2C_ALGOPCF is not set -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_SENSORS=y -CONFIG_I2C_EEPROM=y -CONFIG_I2C_EEPROM=y -CONFIG_I2C_M41T11=y -CONFIG_I2C_X9221=y -CONFIG_I2C_PCF8574=y - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -CONFIG_MOUSE=y -CONFIG_PSMOUSE=y -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_SA1100_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -CONFIG_PCMCIA_SERIAL=m - -# -# PCMCIA character device support -# -# CONFIG_PCMCIA_SERIAL_CS is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -CONFIG_JFFS_FS=y -CONFIG_JFFS_FS_VERBOSE=0 -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -CONFIG_ROOT_NFS=y -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_SA1100 is not set -CONFIG_FB_MQ200=y -# CONFIG_PFS168_MQVGA is not set -CONFIG_PFS168_MQTFT=y -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -# CONFIG_FBCON_MFB is not set -# CONFIG_FBCON_CFB2 is not set -# CONFIG_FBCON_CFB4 is not set -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_CFB24=y -CONFIG_FBCON_CFB32=y -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_MAC is not set -# CONFIG_FBCON_VGA_PLANES is not set -# CONFIG_FBCON_VGA is not set -# CONFIG_FBCON_HGA is not set -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -CONFIG_USB=m -# CONFIG_USB_DEBUG is not set - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -CONFIG_USB_OHCI=m - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# -CONFIG_USB_HID=m -CONFIG_USB_KBD=m -CONFIG_USB_MOUSE=m -# CONFIG_USB_WACOM is not set - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set - -# -# USB Multimedia devices -# -# CONFIG_USB_IBMCAM is not set -# CONFIG_USB_OV511 is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_DABUSB is not set - -# -# USB Network adaptors -# -# CONFIG_USB_PLUSB is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_NET1080 is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set - -# -# USB misc drivers -# -# CONFIG_USB_RIO500 is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_INFO=y -CONFIG_MAGIC_SYSRQ=y -# CONFIG_NO_PGT_CACHE is not set -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set diff -Nru a/arch/arm/def-configs/pfs168_mqvga b/arch/arm/def-configs/pfs168_mqvga --- a/arch/arm/def-configs/pfs168_mqvga Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,782 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_CLPS711X is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_PFS168=y -CONFIG_SA1111=y -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -CONFIG_SA1100_USB_CHAR=m -CONFIG_SA1100_FREQUENCY_SCALE=m -# CONFIG_SA1100_VOLTAGE_SCALE is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y - -# -# General setup -# - -# -# Please ensure that you have read the help on the next option -# -# CONFIG_ANGELBOOT is not set -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=m -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=m -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="root=/dev/nfs mem=16M" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y -CONFIG_UCB1200=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# RAM/ROM Device Drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_MTDRAM is not set - -# -# Linearly Mapped Flash Device Drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_CFI_GEOMETRY is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_SBC_MEDIAGX is not set -# CONFIG_MTD_ELAN_104NC is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_CSTM_CFI_JEDEC is not set -# CONFIG_MTD_JEDEC is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set -# CONFIG_MTD_NAND_SPIA is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -CONFIG_NET_VENDOR_SMC=y -# CONFIG_WD80x3 is not set -# CONFIG_ULTRA is not set -# CONFIG_ULTRA32 is not set -CONFIG_SMC9194=y -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_PPP_DEFLATE=m -# CONFIG_PPP_BSDCOMP is not set -# CONFIG_PPPOE is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=m -# CONFIG_PCMCIA_NMCLAN is not set -CONFIG_PCMCIA_SMC91C92=m -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=m - -# -# IrDA protocols -# -CONFIG_IRLAN=m -CONFIG_IRNET=m -CONFIG_IRCOMM=m -CONFIG_IRDA_ULTRA=y -# CONFIG_IRDA_OPTIONS is not set - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -CONFIG_IRTTY_SIR=m -CONFIG_IRPORT_SIR=m - -# -# FIR device drivers -# -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -CONFIG_SA1100_FIR=m - -# -# Dongle support -# -# CONFIG_DONGLE is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=m - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=m - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=m -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -CONFIG_INPUT=y -CONFIG_INPUT_KEYBDEV=y -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -CONFIG_SERIAL=y -# CONFIG_SERIAL_CONSOLE is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=115200 -CONFIG_TOUCHSCREEN_UCB1200=y -# CONFIG_TOUCHSCREEN_BITSY is not set -# CONFIG_PROFILER is not set -# CONFIG_PFS168_SPI is not set -CONFIG_PFS168_DTMF=y -CONFIG_PFS168_MISC=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_PHILIPSPAR is not set -# CONFIG_I2C_ELV is not set -# CONFIG_I2C_VELLEMAN is not set -# CONFIG_I2C_ASSABET is not set -CONFIG_I2C_PFS168=y -# CONFIG_I2C_ALGOPCF is not set -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_SENSORS=y -CONFIG_I2C_EEPROM=y -CONFIG_I2C_EEPROM=y -CONFIG_I2C_M41T11=y -CONFIG_I2C_X9221=y -CONFIG_I2C_PCF8574=y - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -CONFIG_MOUSE=y -CONFIG_PSMOUSE=y -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_SA1100_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -CONFIG_PCMCIA_SERIAL=m - -# -# PCMCIA character device support -# -# CONFIG_PCMCIA_SERIAL_CS is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -CONFIG_JFFS_FS=y -CONFIG_JFFS_FS_VERBOSE=0 -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -CONFIG_ROOT_NFS=y -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_SA1100 is not set -CONFIG_FB_MQ200=y -CONFIG_PFS168_MQVGA=y -# CONFIG_PFS168_MQTFT is not set -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -# CONFIG_FBCON_MFB is not set -# CONFIG_FBCON_CFB2 is not set -# CONFIG_FBCON_CFB4 is not set -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_CFB24=y -CONFIG_FBCON_CFB32=y -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_MAC is not set -# CONFIG_FBCON_VGA_PLANES is not set -# CONFIG_FBCON_VGA is not set -# CONFIG_FBCON_HGA is not set -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -CONFIG_USB=m -# CONFIG_USB_DEBUG is not set - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -CONFIG_USB_OHCI=m - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# -CONFIG_USB_HID=m -CONFIG_USB_KBD=m -CONFIG_USB_MOUSE=m -# CONFIG_USB_WACOM is not set - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set - -# -# USB Multimedia devices -# -# CONFIG_USB_IBMCAM is not set -# CONFIG_USB_OV511 is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_DABUSB is not set - -# -# USB Network adaptors -# -# CONFIG_USB_PLUSB is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_NET1080 is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set - -# -# USB misc drivers -# -# CONFIG_USB_RIO500 is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_INFO=y -CONFIG_MAGIC_SYSRQ=y -# CONFIG_NO_PGT_CACHE is not set -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set diff -Nru a/arch/arm/def-configs/pfs168_sastn b/arch/arm/def-configs/pfs168_sastn --- a/arch/arm/def-configs/pfs168_sastn Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,774 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_CLPS711X is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_PFS168=y -CONFIG_SA1111=y -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -CONFIG_SA1100_USB_CHAR=m -CONFIG_SA1100_FREQUENCY_SCALE=m -# CONFIG_SA1100_VOLTAGE_SCALE is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y - -# -# General setup -# - -# -# Please ensure that you have read the help on the next option -# -# CONFIG_ANGELBOOT is not set -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=m -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=m -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="root=/dev/nfs mem=16M" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y -CONFIG_UCB1200=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# RAM/ROM Device Drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_MTDRAM is not set - -# -# Linearly Mapped Flash Device Drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_SBC_MEDIAGX is not set -# CONFIG_MTD_ELAN_104NC is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_CSTM_CFI_JEDEC is not set -# CONFIG_MTD_JEDEC is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set -# CONFIG_MTD_NAND_SPIA is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -CONFIG_NET_VENDOR_SMC=y -# CONFIG_WD80x3 is not set -# CONFIG_ULTRA is not set -# CONFIG_ULTRA32 is not set -CONFIG_SMC9194=y -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_PPP_DEFLATE=m -# CONFIG_PPP_BSDCOMP is not set -# CONFIG_PPPOE is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=m -# CONFIG_PCMCIA_NMCLAN is not set -CONFIG_PCMCIA_SMC91C92=m -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=m - -# -# IrDA protocols -# -CONFIG_IRLAN=m -CONFIG_IRNET=m -CONFIG_IRCOMM=m -CONFIG_IRDA_ULTRA=y -# CONFIG_IRDA_OPTIONS is not set - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -CONFIG_IRTTY_SIR=m -CONFIG_IRPORT_SIR=m - -# -# FIR device drivers -# -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -CONFIG_SA1100_FIR=m - -# -# Dongle support -# -# CONFIG_DONGLE is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=m - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=m - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=m -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -CONFIG_INPUT=y -CONFIG_INPUT_KEYBDEV=y -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -CONFIG_SERIAL=y -# CONFIG_SERIAL_CONSOLE is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=115200 -CONFIG_TOUCHSCREEN_UCB1200=y -# CONFIG_TOUCHSCREEN_BITSY is not set -# CONFIG_PROFILER is not set -# CONFIG_PFS168_SPI is not set -CONFIG_PFS168_DTMF=y -CONFIG_PFS168_MISC=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_PHILIPSPAR is not set -# CONFIG_I2C_ELV is not set -# CONFIG_I2C_VELLEMAN is not set -# CONFIG_I2C_ASSABET is not set -# CONFIG_I2C_ALGOPCF is not set -CONFIG_I2C_CHARDEV=y - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -CONFIG_MOUSE=y -CONFIG_PSMOUSE=y -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_SA1100_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# -# CONFIG_PCMCIA_SERIAL_CS is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -CONFIG_JFFS_FS=y -CONFIG_JFFS_FS_VERBOSE=0 -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -CONFIG_ROOT_NFS=y -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -# CONFIG_FBCON_MFB is not set -# CONFIG_FBCON_CFB2 is not set -# CONFIG_FBCON_CFB4 is not set -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_CFB24=y -CONFIG_FBCON_CFB32=y -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_MAC is not set -# CONFIG_FBCON_VGA_PLANES is not set -# CONFIG_FBCON_VGA is not set -# CONFIG_FBCON_HGA is not set -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -CONFIG_USB=m -# CONFIG_USB_DEBUG is not set - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -CONFIG_USB_OHCI=m - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# -CONFIG_USB_HID=m -CONFIG_USB_KBD=m -CONFIG_USB_MOUSE=m -# CONFIG_USB_WACOM is not set - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set - -# -# USB Multimedia devices -# -# CONFIG_USB_IBMCAM is not set -# CONFIG_USB_OV511 is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_DABUSB is not set - -# -# USB Network adaptors -# -# CONFIG_USB_PLUSB is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_NET1080 is not set -# CONFIG_USB_USBNET is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set - -# -# USB misc drivers -# -# CONFIG_USB_RIO500 is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_INFO=y -CONFIG_MAGIC_SYSRQ=y -# CONFIG_NO_PGT_CACHE is not set -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/pfs168_satft b/arch/arm/def-configs/pfs168_satft --- a/arch/arm/def-configs/pfs168_satft Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,782 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_CLPS711X is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_PFS168=y -CONFIG_SA1111=y -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -CONFIG_SA1100_USB_CHAR=m -CONFIG_SA1100_FREQUENCY_SCALE=m -# CONFIG_SA1100_VOLTAGE_SCALE is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y - -# -# General setup -# - -# -# Please ensure that you have read the help on the next option -# -# CONFIG_ANGELBOOT is not set -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=m -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=m -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="root=/dev/nfs mem=16M" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y -CONFIG_UCB1200=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# RAM/ROM Device Drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_MTDRAM is not set - -# -# Linearly Mapped Flash Device Drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_CFI_GEOMETRY is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_SBC_MEDIAGX is not set -# CONFIG_MTD_ELAN_104NC is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_CSTM_CFI_JEDEC is not set -# CONFIG_MTD_JEDEC is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set -# CONFIG_MTD_NAND_SPIA is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -CONFIG_NET_VENDOR_SMC=y -# CONFIG_WD80x3 is not set -# CONFIG_ULTRA is not set -# CONFIG_ULTRA32 is not set -CONFIG_SMC9194=y -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_PPP_DEFLATE=m -# CONFIG_PPP_BSDCOMP is not set -# CONFIG_PPPOE is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=m -# CONFIG_PCMCIA_NMCLAN is not set -CONFIG_PCMCIA_SMC91C92=m -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=m - -# -# IrDA protocols -# -CONFIG_IRLAN=m -CONFIG_IRNET=m -CONFIG_IRCOMM=m -CONFIG_IRDA_ULTRA=y -# CONFIG_IRDA_OPTIONS is not set - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -CONFIG_IRTTY_SIR=m -CONFIG_IRPORT_SIR=m - -# -# FIR device drivers -# -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -CONFIG_SA1100_FIR=m - -# -# Dongle support -# -# CONFIG_DONGLE is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=m - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=m - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=m -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -CONFIG_INPUT=y -CONFIG_INPUT_KEYBDEV=y -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -CONFIG_SERIAL=y -# CONFIG_SERIAL_CONSOLE is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=115200 -CONFIG_TOUCHSCREEN_UCB1200=y -# CONFIG_TOUCHSCREEN_BITSY is not set -# CONFIG_PROFILER is not set -# CONFIG_PFS168_SPI is not set -CONFIG_PFS168_DTMF=y -CONFIG_PFS168_MISC=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_PHILIPSPAR is not set -# CONFIG_I2C_ELV is not set -# CONFIG_I2C_VELLEMAN is not set -# CONFIG_I2C_ASSABET is not set -CONFIG_I2C_PFS168=y -# CONFIG_I2C_ALGOPCF is not set -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_SENSORS=y -CONFIG_I2C_EEPROM=y -CONFIG_I2C_EEPROM=y -CONFIG_I2C_M41T11=y -CONFIG_I2C_X9221=y -CONFIG_I2C_PCF8574=y - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -CONFIG_MOUSE=y -CONFIG_PSMOUSE=y -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_SA1100_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -CONFIG_PCMCIA_SERIAL=m - -# -# PCMCIA character device support -# -# CONFIG_PCMCIA_SERIAL_CS is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -CONFIG_JFFS_FS=y -CONFIG_JFFS_FS_VERBOSE=0 -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_SYSV_FS_WRITE is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -CONFIG_ROOT_NFS=y -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set -CONFIG_FB=y - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -# CONFIG_PFS168_SASTN is not set -CONFIG_PFS168_SATFT=y -# CONFIG_FB_MQ200 is not set -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -# CONFIG_FBCON_MFB is not set -# CONFIG_FBCON_CFB2 is not set -# CONFIG_FBCON_CFB4 is not set -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_CFB24=y -CONFIG_FBCON_CFB32=y -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_MAC is not set -# CONFIG_FBCON_VGA_PLANES is not set -# CONFIG_FBCON_VGA is not set -# CONFIG_FBCON_HGA is not set -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -CONFIG_USB=m -# CONFIG_USB_DEBUG is not set - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -CONFIG_USB_OHCI=m - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# -CONFIG_USB_HID=m -CONFIG_USB_KBD=m -CONFIG_USB_MOUSE=m -# CONFIG_USB_WACOM is not set - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set - -# -# USB Multimedia devices -# -# CONFIG_USB_IBMCAM is not set -# CONFIG_USB_OV511 is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_DABUSB is not set - -# -# USB Network adaptors -# -# CONFIG_USB_PLUSB is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_NET1080 is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set - -# -# USB misc drivers -# -# CONFIG_USB_RIO500 is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_INFO=y -CONFIG_MAGIC_SYSRQ=y -# CONFIG_NO_PGT_CACHE is not set -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set diff -Nru a/arch/arm/def-configs/pleb b/arch/arm/def-configs/pleb --- a/arch/arm/def-configs/pleb Mon Sep 22 00:30:23 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,535 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_ANAKIN is not set - -# -# Archimedes/A5000 Implementations -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_BITSY is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -CONFIG_SA1100_PLEB=y -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -CONFIG_DISCONTIGMEM=y -# CONFIG_CPU_BIG_ENDIAN is not set - -# -# General setup -# -# CONFIG_PCI is not set -# CONFIG_ISA is not set -# CONFIG_ISA_DMA is not set -CONFIG_CPU_FREQ=y -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="console=ttySA0,9600 mem=16M@0xc0000000 mem=16M@0xc8000000 root=/dev/ram initrd=0xc0400000,4M" -# CONFIG_PFS168_CMDLINE is not set -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# RAM/ROM/Flash chip drivers -# -# CONFIG_MTD_CFI is not set -# CONFIG_MTD_CFI_INTELEXT is not set -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_SUN_UFLASH is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_SC520CDP is not set -# CONFIG_MTD_NETSC520 is not set -# CONFIG_MTD_SBC_GXX is not set -# CONFIG_MTD_ELAN_104NC is not set -# CONFIG_MTD_SA1100 is not set -# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set -# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_DBOX2 is not set -# CONFIG_MTD_CSTM_MIPS_IXX is not set -# CONFIG_MTD_CFI_FLAGADM is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set -# CONFIG_MTD_OCELOT is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=m -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -CONFIG_INET_ECN=y -CONFIG_SYN_COOKIES=y -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -CONFIG_DUMMY=m -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set - -# -# Ethernet (10 or 100Mbit) -# -# CONFIG_NET_ETHERNET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_ACENIC_OMIT_TIGON_I is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set - -# -# Character devices -# -# CONFIG_VT is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -# CONFIG_SERIAL_SA1100_OLD is not set -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=9600 -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 -# CONFIG_UCB1200 is not set -# CONFIG_TOUCHSCREEN_UCB1200 is not set -# CONFIG_AUDIO_UCB1200 is not set -# CONFIG_ADC_UCB1200 is not set -# CONFIG_TOUCHSCREEN_BITSY is not set -CONFIG_PROFILER=y -# CONFIG_PFS168_SPI is not set -# CONFIG_PFS168_DTMF is not set -# CONFIG_PFS168_MISC is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_JOYSTICK is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -CONFIG_TMPFS=y -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_NFS_FS is not set -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -# CONFIG_SUNRPC is not set -# CONFIG_LOCKD is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_NO_PGT_CACHE is not set -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/rpc b/arch/arm/def-configs/rpc --- a/arch/arm/def-configs/rpc Mon Sep 22 00:30:17 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,781 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -CONFIG_MMU=y -CONFIG_SWAP=y -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y - -# -# General setup -# -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_PXA is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_IOP310 is not set -# CONFIG_ARCH_L7200 is not set -CONFIG_ARCH_RPC=y -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# - -# -# CLPS711X/EP721X Implementations -# - -# -# Epxa10db -# - -# -# Footbridge Implementations -# - -# -# IOP310 Implementation Options -# - -# -# IOP310 Chipset Features -# - -# -# Intel PXA250/210 Implementations -# - -# -# SA11x0 Implementations -# -CONFIG_ARCH_ACORN=y - -# -# Processor Type -# -CONFIG_CPU_32=y -CONFIG_CPU_ARM610=y -CONFIG_CPU_ARM710=y -CONFIG_CPU_SA110=y -CONFIG_CPU_32v3=y - -# -# Processor Features -# - -# -# General setup -# -CONFIG_FIQ=y -# CONFIG_ZBOOT_ROM is not set -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -# CONFIG_HOTPLUG is not set - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_PREEMPT is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="" -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -CONFIG_PARPORT=y -CONFIG_PARPORT_PC=y -CONFIG_PARPORT_PC_CML1=y -# CONFIG_PARPORT_SERIAL is not set -CONFIG_PARPORT_PC_FIFO=y -# CONFIG_PARPORT_PC_SUPERIO is not set -# CONFIG_PARPORT_ARC is not set -# CONFIG_PARPORT_OTHER is not set -# CONFIG_PARPORT_1284 is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set - -# -# Block devices -# -CONFIG_BLK_DEV_FD=y -# CONFIG_PARIDE is not set -CONFIG_BLK_DEV_LOOP=m -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set - -# -# Acorn-specific block devices -# - -# -# Networking options -# -# CONFIG_PACKET is not set -CONFIG_NETLINK_DEV=y -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_IP_MROUTE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -CONFIG_IPV6_SCTP__=y -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_LLC is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -CONFIG_ARM_ETHER1=y -CONFIG_ARM_ETHER3=y -CONFIG_ARM_ETHERH=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_ASYNC is not set -# CONFIG_PPP_SYNC_TTY is not set -# CONFIG_PPP_DEFLATE is not set -# CONFIG_PPP_BSDCOMP is not set -CONFIG_PPPOE=m -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_NET_FC is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# ATA/ATAPI/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -CONFIG_IDEDISK_MULTI_MODE=y -# CONFIG_IDEDISK_STROKE is not set -CONFIG_BLK_DEV_IDECD=y -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set -# CONFIG_IDE_TASK_IOCTL is not set - -# -# IDE chipset support/bugfixes -# -CONFIG_BLK_DEV_IDEDMA=y -CONFIG_BLK_DEV_IDE_ICSIDE=y -CONFIG_BLK_DEV_IDEDMA_ICS=y -CONFIG_IDEDMA_ICS_AUTO=y -CONFIG_BLK_DEV_IDE_RAPIDE=y -CONFIG_IDEDMA_AUTO=y -# CONFIG_IDEDMA_IVB is not set - -# -# SCSI support -# -CONFIG_SCSI=y - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=y -CONFIG_CHR_DEV_ST=m -# CONFIG_CHR_DEV_OSST is not set -CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y -CONFIG_SR_EXTRA_DEVS=2 -CONFIG_CHR_DEV_SG=y - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# -# CONFIG_SCSI_MULTI_LUN is not set -# CONFIG_SCSI_REPORT_LUNS is not set -CONFIG_SCSI_CONSTANTS=y -CONFIG_SCSI_LOGGING=y - -# -# SCSI low-level drivers -# -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC7XXX_OLD is not set -# CONFIG_SCSI_DPT_I2O is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_IN2000 is not set -# CONFIG_SCSI_MEGARAID is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_EATA is not set -# CONFIG_SCSI_EATA_DMA is not set -# CONFIG_SCSI_EATA_PIO is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_GDTH is not set -# CONFIG_SCSI_GENERIC_NCR5380 is not set -# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set -CONFIG_SCSI_PPA=m -CONFIG_SCSI_IMM=m -# CONFIG_SCSI_IZIP_EPP16 is not set -# CONFIG_SCSI_IZIP_SLOW_CTR is not set -# CONFIG_SCSI_PCI2000 is not set -# CONFIG_SCSI_PCI2220I is not set -# CONFIG_SCSI_U14_34F is not set -# CONFIG_SCSI_NSP32 is not set -# CONFIG_SCSI_DEBUG is not set -CONFIG_SCSI_ACORNSCSI_3=m -CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE=y -CONFIG_SCSI_ACORNSCSI_SYNC=y -CONFIG_SCSI_ARXESCSI=m -CONFIG_SCSI_CUMANA_2=m -CONFIG_SCSI_EESOXSCSI=m -CONFIG_SCSI_POWERTECSCSI=y - -# -# The following drivers are not fully supported -# -CONFIG_SCSI_CUMANA_1=m -CONFIG_SCSI_OAK1=m - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN_BOOL is not set - -# -# Input device support -# -CONFIG_INPUT=y - -# -# Userland interfaces -# -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_TSDEV is not set -# CONFIG_INPUT_TSLIBDEV is not set -CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_EVBUG is not set - -# -# Input I/O drivers -# -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -CONFIG_SERIO=y -# CONFIG_SERIO_I8042 is not set -# CONFIG_SERIO_SERPORT is not set -# CONFIG_SERIO_CT82C710 is not set -# CONFIG_SERIO_PARKBD is not set -CONFIG_SERIO_RPCKBD=y - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y -CONFIG_KEYBOARD_ATKBD=y -# CONFIG_KEYBOARD_SUNKBD is not set -# CONFIG_KEYBOARD_XTKBD is not set -# CONFIG_KEYBOARD_NEWTON is not set -CONFIG_INPUT_MOUSE=y -# CONFIG_MOUSE_PS2 is not set -# CONFIG_MOUSE_SERIAL is not set -CONFIG_MOUSE_RISCPC=y -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_INPUT_TOUCHSCREEN is not set -# CONFIG_INPUT_MISC is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_HW_CONSOLE=y -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -# CONFIG_SERIAL_8250_EXTENDED is not set - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_8250_ACORN=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 -CONFIG_PRINTER=m -# CONFIG_LP_CONSOLE is not set -# CONFIG_PPDEV is not set -# CONFIG_TIPAR is not set - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_PHILIPSPAR is not set -# CONFIG_I2C_ELV is not set -# CONFIG_I2C_VELLEMAN is not set -# CONFIG_SCx200_ACB is not set -# CONFIG_I2C_ALGOPCF is not set -CONFIG_I2C_CHARDEV=y -# CONFIG_I2C_PROC is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_GEN_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -# CONFIG_RAW_DRIVER is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -CONFIG_AUTOFS4_FS=m -# CONFIG_REISERFS_FS is not set -CONFIG_ADFS_FS=y -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -CONFIG_EXT3_FS=y -CONFIG_EXT3_FS_XATTR=y -# CONFIG_EXT3_FS_POSIX_ACL is not set -CONFIG_JBD=y -# CONFIG_JBD_DEBUG is not set -# CONFIG_FAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -# CONFIG_ZISOFS is not set -# CONFIG_JFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UFS_FS is not set -# CONFIG_XFS_FS is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_NFS_V4 is not set -# CONFIG_NFSD is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_EXPORTFS is not set -# CONFIG_CIFS is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_AFS_FS is not set -CONFIG_FS_MBCACHE=y - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -CONFIG_ACORN_PARTITION=y -# CONFIG_ACORN_PARTITION_CUMANA is not set -# CONFIG_ACORN_PARTITION_EESOX is not set -CONFIG_ACORN_PARTITION_ICS=y -CONFIG_ACORN_PARTITION_ADFS=y -CONFIG_ACORN_PARTITION_POWERTEC=y -CONFIG_ACORN_PARTITION_RISCIX=y -CONFIG_OSF_PARTITION=y -CONFIG_AMIGA_PARTITION=y -# CONFIG_ATARI_PARTITION is not set -CONFIG_MAC_PARTITION=y -CONFIG_MSDOS_PARTITION=y -CONFIG_BSD_DISKLABEL=y -# CONFIG_MINIX_SUBPARTITION is not set -CONFIG_SOLARIS_X86_PARTITION=y -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -CONFIG_SGI_PARTITION=y -# CONFIG_ULTRIX_PARTITION is not set -CONFIG_SUN_PARTITION=y -# CONFIG_EFI_PARTITION is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=m -CONFIG_NLS_CODEPAGE_737=m -CONFIG_NLS_CODEPAGE_775=m -CONFIG_NLS_CODEPAGE_850=m -CONFIG_NLS_CODEPAGE_852=m -CONFIG_NLS_CODEPAGE_855=m -CONFIG_NLS_CODEPAGE_857=m -CONFIG_NLS_CODEPAGE_860=m -CONFIG_NLS_CODEPAGE_861=m -CONFIG_NLS_CODEPAGE_862=m -CONFIG_NLS_CODEPAGE_863=m -CONFIG_NLS_CODEPAGE_864=m -CONFIG_NLS_CODEPAGE_865=m -CONFIG_NLS_CODEPAGE_866=m -CONFIG_NLS_CODEPAGE_869=m -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -CONFIG_NLS_CODEPAGE_874=m -CONFIG_NLS_ISO8859_8=m -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -CONFIG_NLS_ISO8859_1=m -CONFIG_NLS_ISO8859_2=m -CONFIG_NLS_ISO8859_3=m -CONFIG_NLS_ISO8859_4=m -CONFIG_NLS_ISO8859_5=m -CONFIG_NLS_ISO8859_6=m -CONFIG_NLS_ISO8859_7=m -CONFIG_NLS_ISO8859_9=m -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -CONFIG_NLS_KOI8_R=m -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -CONFIG_FB_ACORN=y -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -CONFIG_FBCON_MFB=y -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_CFB24=y -CONFIG_FBCON_CFB32=y -# CONFIG_FBCON_ACCEL is not set -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_VGA_PLANES is not set -# CONFIG_FBCON_HGA is not set -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_SUN12x22 is not set -CONFIG_FBCON_FONTS=y -# CONFIG_FONT_8x8 is not set -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_PEARL_8x8 is not set -CONFIG_FONT_ACORN_8x8=y -# CONFIG_FONT_MINI_4x6 is not set - -# -# Sound -# -CONFIG_SOUND=m - -# -# Open Sound System -# -CONFIG_SOUND_PRIME=m -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -CONFIG_SOUND_OSS=m -# CONFIG_SOUND_TRACEINIT is not set -# CONFIG_SOUND_DMAP is not set -# CONFIG_SOUND_AD1816 is not set -# CONFIG_SOUND_SGALAXY is not set -# CONFIG_SOUND_ADLIB is not set -# CONFIG_SOUND_ACI_MIXER is not set -# CONFIG_SOUND_CS4232 is not set -# CONFIG_SOUND_SSCAPE is not set -# CONFIG_SOUND_GUS is not set -# CONFIG_SOUND_VMIDI is not set -# CONFIG_SOUND_TRIX is not set -# CONFIG_SOUND_MSS is not set -# CONFIG_SOUND_MPU401 is not set -# CONFIG_SOUND_NM256 is not set -# CONFIG_SOUND_MAD16 is not set -# CONFIG_SOUND_PAS is not set -# CONFIG_SOUND_PSS is not set -# CONFIG_SOUND_SB is not set -# CONFIG_SOUND_AWE32_SYNTH is not set -# CONFIG_SOUND_WAVEFRONT is not set -# CONFIG_SOUND_MAUI is not set -# CONFIG_SOUND_YM3812 is not set -# CONFIG_SOUND_OPL3SA1 is not set -# CONFIG_SOUND_OPL3SA2 is not set -# CONFIG_SOUND_UART6850 is not set -# CONFIG_SOUND_AEDSP16 is not set -CONFIG_SOUND_VIDC=m -# CONFIG_SOUND_TVMIXER is not set - -# -# Advanced Linux Sound Architecture -# -# CONFIG_SND is not set - -# -# Misc devices -# - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set - -# -# Console Switches -# -# CONFIG_SWITCHES is not set - -# -# USB support -# - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SLAB is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -CONFIG_DEBUG_ERRORS=y -# CONFIG_KALLSYMS is not set -CONFIG_DEBUG_LL=y - -# -# Security options -# -CONFIG_SECURITY_CAPABILITIES=y - -# -# Cryptographic options -# -# CONFIG_CRYPTO is not set - -# -# Library routines -# -# CONFIG_CRC32 is not set diff -Nru a/arch/arm/def-configs/shannon b/arch/arm/def-configs/shannon --- a/arch/arm/def-configs/shannon Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,735 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -CONFIG_OBSOLETE=y - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# - -# -# Footbridge Implementations -# - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -CONFIG_SA1100_SHANNON=y -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_USB is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM922T is not set -# CONFIG_CPU_ARM926T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -# CONFIG_ARM_THUMB is not set -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_PCI is not set -CONFIG_ISA=y -# CONFIG_ISA_DMA is not set -# CONFIG_CPU_FREQ is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82092 is not set -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -CONFIG_PCMCIA_SA1100=y -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="console=ttySA0,9600 console=tty1 root=/dev/mtdblock2 init=/linuxrc" -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_BOOTLDR_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -# CONFIG_MTD_CFI_INTELEXT is not set -CONFIG_MTD_CFI_AMDSTD=y -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_IQ80310 is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set - -# -# Networking options -# -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC_OMIT_TIGON_I is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -CONFIG_PCMCIA_SMC91C92=y -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=m - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=m - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -# CONFIG_BLK_DEV_IDEDISK is not set -# CONFIG_BLK_DEV_IDECS is not set -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_ATARAID is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -CONFIG_INPUT=y -CONFIG_INPUT_KEYBDEV=y -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=9600 -# CONFIG_SERIAL_8250 is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set - -# -# Other L3 adapters -# -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set -# CONFIG_INPUT_SERIO is not set - -# -# Joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -CONFIG_WATCHDOG=y -# CONFIG_WATCHDOG_NOWAYOUT is not set -# CONFIG_SOFT_WATCHDOG is not set -# CONFIG_WDT is not set -# CONFIG_WDTPCI is not set -# CONFIG_PCWATCHDOG is not set -# CONFIG_ACQUIRE_WDT is not set -# CONFIG_ADVANTECH_WDT is not set -CONFIG_SA1100_WATCHDOG=y -# CONFIG_EUROTECH_WDT is not set -# CONFIG_IB700_WDT is not set -# CONFIG_I810_TCO is not set -# CONFIG_MIXCOMWD is not set -# CONFIG_60XX_WDT is not set -# CONFIG_W83877F_WDT is not set -# CONFIG_MACHZ_WDT is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_CMS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -# CONFIG_UMSDOS_FS is not set -CONFIG_VFAT_FS=y -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -CONFIG_MINIX_FS=y -# CONFIG_FREEVXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_EXT2_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UFS_FS is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_NFSD is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_ZISOFS_FS is not set -# CONFIG_ZLIB_FS_INFLATE is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -CONFIG_FB_SA1100=y -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -# CONFIG_FBCON_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y - -# -# Sound -# -CONFIG_SOUND=y -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -CONFIG_SOUND_SA1100=y -# CONFIG_SOUND_SA1100SSP is not set -# CONFIG_SOUND_OSS is not set - -# -# Multimedia Capabilities Port drivers -# -CONFIG_MCP=y -CONFIG_MCP_SA1100=y -CONFIG_MCP_UCB1200=y -CONFIG_MCP_UCB1200_AUDIO=y -CONFIG_MCP_UCB1200_TS=y - -# -# USB support -# -# CONFIG_USB is not set - -# -# USB Controllers -# - -# -# USB Device Class drivers -# - -# -# USB Human Interface Devices (HID) -# - -# -# USB Imaging devices -# - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# - -# -# USB Network adaptors -# - -# -# USB port drivers -# - -# -# USB Serial Converter support -# - -# -# USB Miscellaneous drivers -# - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_SLAB is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_DEBUG_SPINLOCK is not set -CONFIG_DEBUG_LL=y diff -Nru a/arch/arm/def-configs/shark b/arch/arm/def-configs/shark --- a/arch/arm/def-configs/shark Mon Sep 22 00:30:23 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,852 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -CONFIG_MMU=y -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y - -# -# General setup -# -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y -CONFIG_LOG_BUF_SHIFT=14 - -# -# Loadable module support -# -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_OBSOLETE_MODPARM=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_PXA is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_IOP310 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -CONFIG_ARCH_SHARK=y - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# - -# -# CLPS711X/EP721X Implementations -# - -# -# Epxa10db -# - -# -# Footbridge Implementations -# - -# -# IOP310 Implementation Options -# - -# -# IOP310 Chipset Features -# - -# -# Intel PXA250/210 Implementations -# - -# -# SA11x0 Implementations -# - -# -# Processor Type -# -CONFIG_CPU_32=y -CONFIG_CPU_SA110=y -CONFIG_CPU_32v4=y - -# -# Processor Features -# - -# -# General setup -# -CONFIG_PCI=y -CONFIG_PCI_HOST_VIA82C505=y -CONFIG_ISA=y -CONFIG_ISA_DMA=y -# CONFIG_ZBOOT_ROM is not set -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_PCI_LEGACY_PROC=y -# CONFIG_PCI_NAMES is not set -# CONFIG_HOTPLUG is not set - -# -# At least one math emulation must be selected -# -# CONFIG_FPE_NWFPE is not set -CONFIG_FPE_FASTFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_PREEMPT is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -# CONFIG_LEDS_CPU is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -CONFIG_PARPORT=y -CONFIG_PARPORT_PC=y -CONFIG_PARPORT_PC_CML1=y -# CONFIG_PARPORT_SERIAL is not set -# CONFIG_PARPORT_PC_FIFO is not set -# CONFIG_PARPORT_PC_SUPERIO is not set -# CONFIG_PARPORT_ARC is not set -# CONFIG_PARPORT_OTHER is not set -# CONFIG_PARPORT_1284 is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Plug and Play support -# -# CONFIG_PNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -# CONFIG_BLK_DEV_INITRD is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set - -# -# Networking support -# -CONFIG_NET=y - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_IPV6 is not set -# CONFIG_XFRM_USER is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -CONFIG_IPV6_SCTP__=y -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_LLC is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_MII is not set -# CONFIG_HAPPYMEAL is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set - -# -# Tulip family network device support -# -# CONFIG_NET_TULIP is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set -CONFIG_NET_PCI=y -# CONFIG_PCNET32 is not set -# CONFIG_AMD8111_ETH is not set -# CONFIG_ADAPTEC_STARFIRE is not set -# CONFIG_AC3200 is not set -# CONFIG_APRICOT is not set -# CONFIG_B44 is not set -CONFIG_CS89x0=y -# CONFIG_DGRS is not set -# CONFIG_EEPRO100 is not set -# CONFIG_E100 is not set -# CONFIG_FEALNX is not set -# CONFIG_NATSEMI is not set -# CONFIG_NE2K_PCI is not set -# CONFIG_8139CP is not set -# CONFIG_8139TOO is not set -# CONFIG_SIS900 is not set -# CONFIG_EPIC100 is not set -# CONFIG_SUNDANCE is not set -# CONFIG_TLAN is not set -# CONFIG_VIA_RHINE is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_E1000 is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_R8169 is not set -# CONFIG_SK98LIN is not set -# CONFIG_TIGON3 is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices (depends on LLC=y) -# -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# ATA/ATAPI/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -# CONFIG_IDEDISK_STROKE is not set -CONFIG_BLK_DEV_IDECD=y -CONFIG_BLK_DEV_IDEFLOPPY=y -# CONFIG_BLK_DEV_IDESCSI is not set -# CONFIG_IDE_TASK_IOCTL is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_IDEPCI is not set -# CONFIG_IDE_CHIPSETS is not set - -# -# SCSI support -# -CONFIG_SCSI=m - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=m -CONFIG_CHR_DEV_ST=m -# CONFIG_CHR_DEV_OSST is not set -CONFIG_BLK_DEV_SR=m -# CONFIG_BLK_DEV_SR_VENDOR is not set -CONFIG_CHR_DEV_SG=m - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# -# CONFIG_SCSI_MULTI_LUN is not set -# CONFIG_SCSI_REPORT_LUNS is not set -# CONFIG_SCSI_CONSTANTS is not set -# CONFIG_SCSI_LOGGING is not set - -# -# SCSI low-level drivers -# -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_7000FASST is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AHA152X is not set -# CONFIG_SCSI_AHA1542 is not set -# CONFIG_SCSI_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 -# CONFIG_SCSI_AM53C974 is not set -# CONFIG_SCSI_MEGARAID is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_CPQFCTS is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_DTC3280 is not set -# CONFIG_SCSI_EATA is not set -# CONFIG_SCSI_EATA_PIO is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_GDTH is not set -# CONFIG_SCSI_GENERIC_NCR5380 is not set -# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_PPA is not set -# CONFIG_SCSI_IMM is not set -# CONFIG_SCSI_NCR53C406A is not set -# CONFIG_SCSI_NCR53C7xx is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_NCR53C8XX is not set -# CONFIG_SCSI_SYM53C8XX is not set -# CONFIG_SCSI_PAS16 is not set -# CONFIG_SCSI_PCI2000 is not set -# CONFIG_SCSI_PCI2220I is not set -# CONFIG_SCSI_PSI240I is not set -# CONFIG_SCSI_QLOGIC_FAS is not set -# CONFIG_SCSI_QLOGIC_ISP is not set -# CONFIG_SCSI_QLOGIC_FC is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -# CONFIG_SCSI_SYM53C416 is not set -# CONFIG_SCSI_DC390T is not set -# CONFIG_SCSI_T128 is not set -# CONFIG_SCSI_U14_34F is not set -# CONFIG_SCSI_NSP32 is not set -# CONFIG_SCSI_DEBUG is not set - -# -# IEEE 1394 (FireWire) support (EXPERIMENTAL) -# -# CONFIG_IEEE1394 is not set - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN_BOOL is not set - -# -# Input device support -# -CONFIG_INPUT=y - -# -# Userland interfaces -# -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_TSDEV is not set -# CONFIG_INPUT_TSLIBDEV is not set -# CONFIG_INPUT_EVDEV is not set -# CONFIG_INPUT_EVBUG is not set - -# -# Input I/O drivers -# -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -CONFIG_SERIO=y -CONFIG_SERIO_I8042=y -# CONFIG_SERIO_SERPORT is not set -# CONFIG_SERIO_CT82C710 is not set -# CONFIG_SERIO_PARKBD is not set -# CONFIG_SERIO_PCIPS2 is not set - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y -CONFIG_KEYBOARD_ATKBD=y -# CONFIG_KEYBOARD_SUNKBD is not set -# CONFIG_KEYBOARD_XTKBD is not set -# CONFIG_KEYBOARD_NEWTON is not set -CONFIG_INPUT_MOUSE=y -CONFIG_MOUSE_PS2=y -# CONFIG_MOUSE_SERIAL is not set -# CONFIG_MOUSE_INPORT is not set -# CONFIG_MOUSE_LOGIBM is not set -# CONFIG_MOUSE_PC110PAD is not set -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_INPUT_TOUCHSCREEN is not set -# CONFIG_INPUT_MISC is not set - -# -# Character devices -# -# CONFIG_VT is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -# CONFIG_SERIAL_8250_EXTENDED is not set - -# -# Non-8250 serial port support -# -# CONFIG_SERIAL_DZ is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 -CONFIG_PRINTER=m -# CONFIG_LP_CONSOLE is not set -# CONFIG_PPDEV is not set -# CONFIG_TIPAR is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# I2C Hardware Sensors Mainboard support -# - -# -# I2C Hardware Sensors Chip support -# - -# -# L3 serial bus support -# -# CONFIG_L3 is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_QIC02_TAPE is not set - -# -# IPMI -# -# CONFIG_IPMI_HANDLER is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_NVRAM is not set -CONFIG_RTC=y -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -# CONFIG_RAW_DRIVER is not set -# CONFIG_HANGCHECK_TIMER is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -CONFIG_EXT3_FS=y -CONFIG_EXT3_FS_XATTR=y -# CONFIG_EXT3_FS_POSIX_ACL is not set -CONFIG_JBD=y -# CONFIG_JBD_DEBUG is not set -CONFIG_FS_MBCACHE=y -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set -# CONFIG_XFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set - -# -# CD-ROM/DVD Filesystems -# -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -# CONFIG_ZISOFS is not set -# CONFIG_UDF_FS is not set - -# -# DOS/FAT/NT Filesystems -# -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -# CONFIG_NTFS_FS is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -CONFIG_DEVFS_FS=y -CONFIG_DEVFS_MOUNT=y -# CONFIG_DEVFS_DEBUG is not set -# CONFIG_DEVPTS_FS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y - -# -# Miscellaneous filesystems -# -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set - -# -# Network File Systems -# -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_NFS_V4 is not set -# CONFIG_NFSD is not set -CONFIG_LOCKD=y -# CONFIG_EXPORTFS is not set -CONFIG_SUNRPC=y -# CONFIG_SUNRPC_GSS is not set -# CONFIG_SMB_FS is not set -# CONFIG_CIFS is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_NEC98_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_EFI_PARTITION is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=y -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -CONFIG_NLS_CODEPAGE_850=y -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -CONFIG_NLS_ISO8859_1=y -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Graphics support -# -CONFIG_FB=y -# CONFIG_FB_CIRRUS is not set -# CONFIG_FB_PM2 is not set -CONFIG_FB_CYBER2000=y -# CONFIG_FB_IMSTT is not set -# CONFIG_FB_RIVA is not set -# 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 -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_TRIDENT is not set -# CONFIG_FB_PM3 is not set -# CONFIG_FB_VIRTUAL is not set - -# -# Logo configuration -# -# CONFIG_LOGO is not set - -# -# Sound -# -CONFIG_SOUND=m - -# -# Advanced Linux Sound Architecture -# -# CONFIG_SND is not set - -# -# Open Sound System -# -CONFIG_SOUND_PRIME=m -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_RME96XX is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -CONFIG_SOUND_OSS=m -# CONFIG_SOUND_TRACEINIT is not set -# CONFIG_SOUND_DMAP is not set -# CONFIG_SOUND_AD1816 is not set -# CONFIG_SOUND_SGALAXY is not set -CONFIG_SOUND_ADLIB=m -# CONFIG_SOUND_ACI_MIXER is not set -# CONFIG_SOUND_CS4232 is not set -# CONFIG_SOUND_SSCAPE is not set -# CONFIG_SOUND_GUS is not set -# CONFIG_SOUND_VMIDI is not set -# CONFIG_SOUND_TRIX is not set -# CONFIG_SOUND_MSS is not set -# CONFIG_SOUND_MPU401 is not set -# CONFIG_SOUND_NM256 is not set -# CONFIG_SOUND_MAD16 is not set -# CONFIG_SOUND_PAS is not set -# CONFIG_SOUND_PSS is not set -CONFIG_SOUND_SB=m -# CONFIG_SOUND_AWE32_SYNTH is not set -# CONFIG_SOUND_WAVEFRONT is not set -# CONFIG_SOUND_MAUI is not set -# CONFIG_SOUND_YM3812 is not set -# CONFIG_SOUND_OPL3SA1 is not set -# CONFIG_SOUND_OPL3SA2 is not set -# CONFIG_SOUND_YMFPCI is not set -# CONFIG_SOUND_UART6850 is not set -# CONFIG_SOUND_AEDSP16 is not set - -# -# Misc devices -# - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set - -# -# Console Switches -# -# CONFIG_SWITCHES is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_KERNEL is not set - -# -# Security options -# -# CONFIG_SECURITY is not set - -# -# Cryptographic options -# -# CONFIG_CRYPTO is not set - -# -# Library routines -# -CONFIG_CRC32=y diff -Nru a/arch/arm/def-configs/sherman b/arch/arm/def-configs/sherman --- a/arch/arm/def-configs/sherman Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,215 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y - -# -# System and processor type -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_FOOTBRIDGE is not set -CONFIG_ARCH_SA1100=y -CONFIG_CPU_SA1100=y -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_EMPEG is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_VICTOR is not set -CONFIG_SA1100_SHERMAN=y -# CONFIG_VICTOR_BOARD1 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_ISA_DMA is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_ARM2 is not set -# CONFIG_CPU_ARM3 is not set -# CONFIG_CPU_ARM6 is not set -# CONFIG_CPU_ARM7 is not set -CONFIG_CPU_SA110=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -CONFIG_ALIGNMENT_TRAP=y -# CONFIG_TEXT_SECTIONS is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# General setup -# -CONFIG_ZBOOT_ROM=y -CONFIG_ZBOOT_ROM_TEXT=0x00050000 -CONFIG_ZBOOT_ROM_BSS=0xc0200000 -# CONFIG_NET is not set -# CONFIG_SYSVIPC is not set -# CONFIG_BSD_PROCESS_ACCT is not set -# CONFIG_SYSCTL is not set -CONFIG_NWFPE=y -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_ARTHUR is not set -# CONFIG_PARPORT is not set -CONFIG_CMDLINE="mem=64M@0xc0000000 mem=64M@0xc8000000 root=/dev/mtdblock2" - -# -# Plug and Play support -# -# CONFIG_PNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_IDE is not set - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_IDEDISK is not set -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_IDE_CHIPSETS is not set - -# -# Additional Block Devices -# -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_MD is not set -CONFIG_BLK_DEV_RAM=y -# CONFIG_BLK_DEV_INITRD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE_PARPORT is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_FLASH=y - -# -# Character devices -# -# CONFIG_VT is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_UNIX98_PTYS is not set -# CONFIG_MOUSE is not set -# CONFIG_QIC02_TAPE is not set -# CONFIG_WATCHDOG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set - -# -# Video For Linux -# -# CONFIG_VIDEO_DEV is not set - -# -# Joystick support -# -# CONFIG_JOYSTICK is not set -# CONFIG_DTLK is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# Filesystems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_MINIX_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set - -# -# Partition Types -# -# CONFIG_OSF_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -# CONFIG_MSDOS_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ACORN_PARTITION is not set -CONFIG_NLS=y - -# -# Native Language Support -# -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_INFO=y -# CONFIG_MAGIC_SYSRQ is not set -CONFIG_DEBUG_LL=y diff -Nru a/arch/arm/def-configs/stork b/arch/arm/def-configs/stork --- a/arch/arm/def-configs/stork Mon Sep 22 00:30:24 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,966 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_IOP310 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3100 is not set -CONFIG_SA1100_H3600=y -# CONFIG_SA1100_H3800 is not set -CONFIG_SA1100_H3XXX=y -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_BADGE4 is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_PT_SYSTEM3 is not set -# CONFIG_SA1100_SHANNON is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -# CONFIG_SA1100_USB_CHAR is not set -CONFIG_H3600_SLEEVE=m - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_AUTCPU12 is not set -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_FORTUNET is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM922T is not set -# CONFIG_CPU_ARM926T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -# CONFIG_XSCALE_PMU is not set -# CONFIG_ARM_THUMB is not set -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_PCI is not set -CONFIG_ISA=y -# CONFIG_ISA_DMA is not set -# CONFIG_FIQ is not set -CONFIG_CPU_FREQ=y -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=m -CONFIG_PCMCIA_PROBE=y -# CONFIG_I82092 is not set -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=m -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=m -CONFIG_FPE_FASTFPE=y -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -CONFIG_PM=y -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="N" -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -CONFIG_MTD_REDBOOT_PARTS=y -CONFIG_MTD_BOOTLDR_PARTS=y -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_NOSWAP=y -# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -# CONFIG_MTD_CFI_GEOMETRY is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_EPXA10DB is not set -# CONFIG_MTD_PCI is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_CISS_SCSI_TAPE is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=m -# CONFIG_BLK_DEV_NBD is not set -# CONFIG_BLK_DEV_RAM is not set -# CONFIG_BLK_DEV_INITRD is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -CONFIG_NETLINK=y -CONFIG_RTNETLINK=y -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -# CONFIG_NET_ETHERNET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_FILTER is not set -CONFIG_PPP_ASYNC=m -# CONFIG_PPP_SYNC_TTY is not set -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -# CONFIG_PPPOE is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -CONFIG_NET_RADIO=y -# CONFIG_STRIP is not set -CONFIG_WAVELAN=m -# CONFIG_ARLAN is not set -# CONFIG_AIRONET4500 is not set -# CONFIG_AIRONET4500_NONCS is not set -# CONFIG_AIRONET4500_PROC is not set -# CONFIG_AIRO is not set -CONFIG_HERMES=m - -# -# Wireless Pcmcia cards support -# -CONFIG_PCMCIA_HERMES=m -# CONFIG_AIRO_CS is not set -CONFIG_NET_WIRELESS=y - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -CONFIG_PCMCIA_3C589=m -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=m -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -CONFIG_PCMCIA_XIRC2PS=m -# CONFIG_PCMCIA_AXNET is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=m - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=m - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=m -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -CONFIG_BLK_DEV_IDECD=m -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_ATARAID is not set -# CONFIG_BLK_DEV_ATARAID_PDC is not set -# CONFIG_BLK_DEV_ATARAID_HPT is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -# CONFIG_INPUT is not set -# CONFIG_INPUT_KEYBDEV is not set -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -CONFIG_SERIAL=y -CONFIG_SERIAL_CONSOLE=y -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=115200 -CONFIG_SERIAL_8250=m -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_ATOMWIDE_SERIAL is not set -# CONFIG_DUALSP_SERIAL is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_RSA is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -CONFIG_L3=y -CONFIG_L3_ALGOBIT=y -CONFIG_L3_BIT_SA1100_GPIO=y - -# -# Other L3 adapters -# -# CONFIG_L3_SA1111 is not set -CONFIG_BIT_SA1100_GPIO=y - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -CONFIG_MOUSE=m -# CONFIG_PSMOUSE is not set -# CONFIG_82C710_MOUSE is not set -# CONFIG_PC110_PAD is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set - -# -# Input core support is needed for gameports -# - -# -# Input core support is needed for joysticks -# -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -CONFIG_SA1100_RTC=m -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# -# CONFIG_PCMCIA_SERIAL_CS is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -CONFIG_FAT_FS=m -CONFIG_MSDOS_FS=m -# CONFIG_UMSDOS_FS is not set -CONFIG_VFAT_FS=m -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -CONFIG_CRAMFS=y -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -CONFIG_DEVFS_FS=y -CONFIG_DEVFS_MOUNT=y -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -# CONFIG_ROOT_NFS is not set -CONFIG_NFSD=m -CONFIG_NFSD_V3=y -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -CONFIG_LOCKD_V4=y -CONFIG_SMB_FS=m -# CONFIG_SMB_NLS_DEFAULT is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set -# CONFIG_ZISOFS_FS is not set -CONFIG_ZLIB_FS_INFLATE=y - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -CONFIG_SMB_NLS=y -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_CLPS711X is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -# CONFIG_FBCON_MFB is not set -# CONFIG_FBCON_CFB2 is not set -# CONFIG_FBCON_CFB4 is not set -# CONFIG_FBCON_CFB8 is not set -CONFIG_FBCON_CFB16=y -# CONFIG_FBCON_CFB24 is not set -# CONFIG_FBCON_CFB32 is not set -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_MAC is not set -# CONFIG_FBCON_VGA_PLANES is not set -# CONFIG_FBCON_VGA is not set -# CONFIG_FBCON_HGA is not set -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -CONFIG_SOUND=y -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_MIDI_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_MAESTRO3 is not set -# CONFIG_SOUND_ICH is not set -# CONFIG_SOUND_RME96XX is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_MIDI_VIA82CXXX is not set -CONFIG_SOUND_SA1100=y -CONFIG_SOUND_UDA1341=m -# CONFIG_SOUND_ASSABET_UDA1341 is not set -CONFIG_SOUND_H3600_UDA1341=m -# CONFIG_SOUND_PANGOLIN_UDA1341 is not set -# CONFIG_SOUND_SA1111_UDA1341 is not set -# CONFIG_SOUND_SA1100SSP is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_WAVEARTIST is not set -# CONFIG_SOUND_TVMIXER is not set - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set -# CONFIG_MCP_SA1100 is not set -# CONFIG_MCP_UCB1200 is not set -# CONFIG_MCP_UCB1200_AUDIO is not set -# CONFIG_MCP_UCB1200_TS is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# USB Host Controller Drivers -# -# CONFIG_USB_EHCI_HCD is not set -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set -# CONFIG_USB_OHCI_SA1111 is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set - -# -# SCSI support is needed for USB Storage -# -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# - -# -# Input core support is needed for USB HID -# - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# - -# -# USB Network adaptors -# -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_USBNET is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IPAQ is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_KLSI is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set -# CONFIG_USB_SERIAL_OMNINET is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_AUERSWALD is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_NO_PGT_CACHE is not set -# CONFIG_DEBUG_KERNEL is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -# CONFIG_DEBUG_ERRORS is not set -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set - -# -# Library routines -# -# CONFIG_CRC32 is not set diff -Nru a/arch/arm/def-configs/system3 b/arch/arm/def-configs/system3 --- a/arch/arm/def-configs/system3 Mon Sep 22 00:30:20 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,967 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -# CONFIG_OBSOLETE is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set - -# -# System Type -# -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# - -# -# Archimedes/A5000 Implementations (select only ONE) -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_SHANNON is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -CONFIG_SA1100_PT_SYSTEM3=y -CONFIG_SA1111=y -CONFIG_FORCE_MAX_ZONEORDER=9 -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -CONFIG_SA1100_USB_CHAR=m - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_AUTCPU12 is not set -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set - -# -# Processor Type -# -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM922T is not set -# CONFIG_CPU_ARM926T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -# CONFIG_ARM_THUMB is not set -CONFIG_DISCONTIGMEM=y - -# -# General setup -# -# CONFIG_PCI is not set -CONFIG_ISA=y -# CONFIG_ISA_DMA is not set -CONFIG_CPU_FREQ=y -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=m -# CONFIG_I82092 is not set -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=m -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -CONFIG_PM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="noinitrd root=/dev/mtdblock3" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -CONFIG_MTD_REDBOOT_PARTS=m -CONFIG_MTD_BOOTLDR_PARTS=m -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -# CONFIG_MTD_CHAR is not set -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -CONFIG_MTD_SA1100=y -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_PCI is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=m -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -# CONFIG_PACKET is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set - -# -# -# -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_LLC is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -CONFIG_DUMMY=m -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_ARM_AM79C961A is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNBMAC is not set -# CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -CONFIG_NET_VENDOR_SMC=y -# CONFIG_WD80x3 is not set -# CONFIG_ULTRAMCA is not set -# CONFIG_ULTRA is not set -# CONFIG_ULTRA32 is not set -CONFIG_SMC9194=m -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=m -# CONFIG_PCMCIA_NMCLAN is not set -CONFIG_PCMCIA_SMC91C92=m -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_PCMCIA_AXNET is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -CONFIG_IRDA=m - -# -# IrDA protocols -# -CONFIG_IRLAN=m -# CONFIG_IRNET is not set -CONFIG_IRCOMM=m -# CONFIG_IRDA_ULTRA is not set -# CONFIG_IRDA_OPTIONS is not set - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -CONFIG_IRTTY_SIR=m -CONFIG_IRPORT_SIR=m - -# -# Dongle support -# -# CONFIG_DONGLE is not set - -# -# FIR device drivers -# -# CONFIG_USB_IRDA is not set -# CONFIG_NSC_FIR is not set -# CONFIG_WINBOND_FIR is not set -# CONFIG_TOSHIBA_FIR is not set -# CONFIG_SMC_IRCC_FIR is not set -# CONFIG_ALI_FIR is not set -# CONFIG_VLSI_FIR is not set -CONFIG_SA1100_FIR=m - -# -# ATA/IDE/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=m -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_ATARAID is not set -# CONFIG_BLK_DEV_ATARAID_PDC is not set -# CONFIG_BLK_DEV_ATARAID_HPT is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input core support -# -CONFIG_INPUT=y -CONFIG_INPUT_KEYBDEV=y -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set - -# -# Character devices -# -CONFIG_VT=y -# CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=38400 -CONFIG_SERIAL_8250=m -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_HUB6 is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=32 - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set - -# -# Other L3 adapters -# -# CONFIG_L3_SA1111 is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_MOUSE is not set - -# -# Joysticks -# -# CONFIG_INPUT_GAMEPORT is not set -# CONFIG_INPUT_NS558 is not set -# CONFIG_INPUT_LIGHTNING is not set -# CONFIG_INPUT_PCIGAME is not set -# CONFIG_INPUT_CS461X is not set -# CONFIG_INPUT_EMU10K1 is not set -# CONFIG_INPUT_SERIO is not set -# CONFIG_INPUT_SERPORT is not set - -# -# Joysticks -# -# CONFIG_INPUT_ANALOG is not set -# CONFIG_INPUT_A3D is not set -# CONFIG_INPUT_ADI is not set -# CONFIG_INPUT_COBRA is not set -# CONFIG_INPUT_GF2K is not set -# CONFIG_INPUT_GRIP is not set -# CONFIG_INPUT_INTERACT is not set -# CONFIG_INPUT_TMDC is not set -# CONFIG_INPUT_SIDEWINDER is not set -# CONFIG_INPUT_IFORCE_USB is not set -# CONFIG_INPUT_IFORCE_232 is not set -# CONFIG_INPUT_WARRIOR is not set -# CONFIG_INPUT_MAGELLAN is not set -# CONFIG_INPUT_SPACEORB is not set -# CONFIG_INPUT_SPACEBALL is not set -# CONFIG_INPUT_STINGER is not set -# CONFIG_INPUT_DB9 is not set -# CONFIG_INPUT_GAMECON is not set -# CONFIG_INPUT_TURBOGRAFX is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_INTEL_RNG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_SA1100_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# -CONFIG_PCMCIA_SERIAL_CS=m - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_CRAMFS is not set -CONFIG_TMPFS=y -# CONFIG_RAMFS is not set -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -CONFIG_DEVPTS_FS=y -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set -# CONFIG_ZISOFS_FS is not set -# CONFIG_ZLIB_FS_INFLATE is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=y -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Console drivers -# -CONFIG_PC_KEYMAP=y -# CONFIG_VGA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_ANAKIN is not set -# CONFIG_FB_CLPS711X is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set -# CONFIG_MCP_SA1100 is not set -# CONFIG_MCP_UCB1200 is not set -# CONFIG_MCP_UCB1200_AUDIO is not set -# CONFIG_MCP_UCB1200_TS is not set - -# -# USB support -# -CONFIG_USB=m -# CONFIG_USB_DEBUG is not set - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set -# CONFIG_USB_LONG_TIMEOUT is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set -CONFIG_USB_OHCI_SA1111=m - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_ACM is not set -CONFIG_USB_PRINTER=m - -# -# USB Human Interface Devices (HID) -# -CONFIG_USB_HID=m -CONFIG_USB_HIDDEV=y -CONFIG_USB_KBD=m -CONFIG_USB_MOUSE=m -# CONFIG_USB_WACOM is not set - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# - -# -# USB Network adaptors -# -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -CONFIG_USB_USBNET=m - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set -# CONFIG_USB_SERIAL_OMNINET is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_RIO500 is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_INFO=y -# CONFIG_NO_PGT_CACHE is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_SLAB=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_SPINLOCK=y -CONFIG_DEBUG_WAITQ=y -CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set diff -Nru a/arch/arm/def-configs/trizeps b/arch/arm/def-configs/trizeps --- a/arch/arm/def-configs/trizeps Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,851 +0,0 @@ -# -# Automatically generated by make menuconfig: don't edit -# -CONFIG_ARM=y -# CONFIG_EISA is not set -# CONFIG_SBUS is not set -# CONFIG_MCA is not set -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_GENERIC_BUST_SPINLOCK is not set -# CONFIG_GENERIC_ISA_DMA is not set - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y - -# -# General setup -# -CONFIG_NET=y -CONFIG_SYSVIPC=y -# CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_SYSCTL=y - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# CONFIG_ARCH_ANAKIN is not set -# CONFIG_ARCH_ARCA5K is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_PXA is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_CAMELOT is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_IOP310 is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_RPC is not set -CONFIG_ARCH_SA1100=y -# CONFIG_ARCH_SHARK is not set - -# -# Archimedes/A5000 Implementations -# -# CONFIG_ARCH_ARC is not set -# CONFIG_ARCH_A5K is not set - -# -# CLPS711X/EP721X Implementations -# -# CONFIG_ARCH_AUTCPU12 is not set -# CONFIG_ARCH_CDB89712 is not set -# CONFIG_ARCH_CEIVA is not set -# CONFIG_ARCH_CLEP7312 is not set -# CONFIG_ARCH_EDB7211 is not set -# CONFIG_ARCH_P720T is not set -# CONFIG_ARCH_FORTUNET is not set -# CONFIG_ARCH_EP7211 is not set -# CONFIG_ARCH_EP7212 is not set - -# -# Epxa10db -# - -# -# Footbridge Implementations -# -# CONFIG_ARCH_CATS is not set -# CONFIG_ARCH_PERSONAL_SERVER is not set -# CONFIG_ARCH_EBSA285_ADDIN is not set -# CONFIG_ARCH_EBSA285_HOST is not set -# CONFIG_ARCH_NETWINDER is not set - -# -# IOP310 Implementation Options -# -# CONFIG_ARCH_IQ80310 is not set -# CONFIG_IOP310_AAU is not set -# CONFIG_IOP310_DMA is not set -# CONFIG_IOP310_MU is not set -# CONFIG_IOP310_PMON is not set - -# -# Intel PXA250/210 Implementations -# -# CONFIG_ARCH_LUBBOCK is not set -# CONFIG_ARCH_PXA_IDP is not set - -# -# SA11x0 Implementations -# -# CONFIG_SA1100_ASSABET is not set -# CONFIG_ASSABET_NEPONSET is not set -# CONFIG_SA1100_ADSBITSY is not set -# CONFIG_SA1100_BRUTUS is not set -# CONFIG_SA1100_CERF is not set -# CONFIG_SA1100_H3100 is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_H3800 is not set -# CONFIG_SA1100_H3XXX is not set -# CONFIG_SA1100_EXTENEX1 is not set -# CONFIG_SA1100_FLEXANET is not set -# CONFIG_SA1100_FREEBIRD is not set -# CONFIG_SA1100_GRAPHICSCLIENT is not set -# CONFIG_SA1100_GRAPHICSMASTER is not set -# CONFIG_SA1100_BADGE4 is not set -# CONFIG_SA1100_JORNADA720 is not set -# CONFIG_SA1100_HUW_WEBPANEL is not set -# CONFIG_SA1100_ITSY is not set -# CONFIG_SA1100_LART is not set -# CONFIG_SA1100_NANOENGINE is not set -# CONFIG_SA1100_OMNIMETER is not set -# CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_PLEB is not set -# CONFIG_SA1100_PT_SYSTEM3 is not set -# CONFIG_SA1100_SHANNON is not set -# CONFIG_SA1100_SHERMAN is not set -# CONFIG_SA1100_SIMPAD is not set -CONFIG_SA1100_TRIZEPS=y -CONFIG_TRIZEPS_MFTB2=y -# CONFIG_SA1100_PFS168 is not set -# CONFIG_SA1100_VICTOR is not set -# CONFIG_SA1100_XP860 is not set -# CONFIG_SA1100_YOPY is not set -# CONFIG_SA1100_STORK is not set -# CONFIG_SA1100_USB is not set -# CONFIG_SA1100_USB_NETLINK is not set -# CONFIG_SA1100_USB_CHAR is not set -# CONFIG_H3600_SLEEVE is not set -# CONFIG_ARCH_ACORN is not set -# CONFIG_FOOTBRIDGE is not set -# CONFIG_FOOTBRIDGE_HOST is not set -# CONFIG_FOOTBRIDGE_ADDIN is not set -# CONFIG_SA1111 is not set -CONFIG_CPU_32=y -# CONFIG_CPU_26 is not set -# CONFIG_CPU_ARM610 is not set -# CONFIG_CPU_ARM710 is not set -# CONFIG_CPU_ARM720T is not set -# CONFIG_CPU_ARM920T is not set -# CONFIG_CPU_ARM922T is not set -# CONFIG_CPU_ARM926T is not set -# CONFIG_CPU_ARM1020 is not set -# CONFIG_CPU_SA110 is not set -CONFIG_CPU_SA1100=y -# CONFIG_CPU_XSCALE is not set -# CONFIG_CPU_32v3 is not set -CONFIG_CPU_32v4=y -# CONFIG_CPU_32v5 is not set -# CONFIG_ARM_THUMB is not set - -# -# General setup -# -CONFIG_DISCONTIGMEM=y -# CONFIG_PCI is not set -CONFIG_ISA=y -# CONFIG_ISA_DMA is not set -# CONFIG_FIQ is not set -# CONFIG_ZBOOT_ROM is not set -CONFIG_ZBOOT_ROM_TEXT=0 -CONFIG_ZBOOT_ROM_BSS=0 -# CONFIG_CPU_FREQ is not set -# CONFIG_CPU_FREQ_24_API is not set -# CONFIG_CPU_FREQ_26_API is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=m -# CONFIG_I82092 is not set -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=m -# CONFIG_PCMCIA_SA1111 is not set -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_FASTFPE is not set -CONFIG_KCORE_ELF=y -# CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set -# CONFIG_PREEMPT is not set -# CONFIG_APM is not set -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="keepinitrd mem=16M root=/dev/hda2 1" -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=m -CONFIG_MTD_CONCAT=m -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_CMDLINE_PARTS is not set -CONFIG_MTD_AFS_PARTS=m -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set -# CONFIG_MTD_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_JEDEC is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_CDB89712 is not set -CONFIG_MTD_SA1100=m -# CONFIG_MTD_2PARTS_IPAQ is not set -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_IQ80310 is not set -# CONFIG_MTD_EPXA10DB is not set -# CONFIG_MTD_FORTUNET is not set -# CONFIG_MTD_AUTCPU12 is not set -# CONFIG_MTD_EDB7312 is not set -# CONFIG_MTD_IMPA7 is not set -# CONFIG_MTD_CEIVA is not set -# CONFIG_MTD_PCI is not set -# CONFIG_MTD_PCMCIA is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_PNP_NAMES is not set -# CONFIG_PNP_DEBUG is not set -# CONFIG_ISAPNP is not set -# CONFIG_PNPBIOS is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_DEV_XD is not set -# CONFIG_PARIDE is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_CISS_SCSI_TAPE is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -# CONFIG_BLK_DEV_LOOP is not set -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -# CONFIG_BLK_DEV_INITRD is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_LINEAR is not set -# CONFIG_MD_RAID0 is not set -# CONFIG_MD_RAID1 is not set -# CONFIG_MD_RAID5 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM is not set - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -# CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set -# CONFIG_FILTER is not set -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -CONFIG_IPV6_SCTP__=y -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_LLC is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_DEV_APPLETALK is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_NET_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network device support -# -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# Ethernet (10 or 100Mbit) -# -# CONFIG_NET_ETHERNET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_E1000 is not set -# CONFIG_E1000_NAPI is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_TIGON3 is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_FILTER is not set -CONFIG_PPP_ASYNC=m -# CONFIG_PPP_SYNC_TTY is not set -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -# CONFIG_PPPOE is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -CONFIG_NET_RADIO=y -# CONFIG_STRIP is not set -# CONFIG_ARLAN is not set -# CONFIG_AIRONET4500 is not set -# CONFIG_AIRONET4500_NONCS is not set -# CONFIG_AIRONET4500_PROC is not set -# CONFIG_WAVELAN is not set -# CONFIG_AIRO is not set -# CONFIG_HERMES is not set -# CONFIG_PCMCIA_NETWAVE is not set -# CONFIG_PCMCIA_WAVELAN is not set -# CONFIG_PCMCIA_HERMES is not set -CONFIG_AIRO_CS=m -CONFIG_NET_WIRELESS=y - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -# CONFIG_PCMCIA_PCNET is not set -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_PCMCIA_AXNET is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -CONFIG_NET_PCMCIA_RADIO=y -# CONFIG_PCMCIA_RAYCS is not set -# CONFIG_AIRONET4500_CS is not set - -# -# Amateur Radio support -# -# CONFIG_HAMRADIO is not set - -# -# IrDA (infrared) support -# -# CONFIG_IRDA is not set - -# -# ATA/ATAPI/MFM/RLL support -# -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -# CONFIG_IDEDISK_STROKE is not set -CONFIG_BLK_DEV_IDECS=m -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set -# CONFIG_IDE_TASK_IOCTL is not set -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_BLK_DEV_IDE_ICSIDE is not set -# CONFIG_BLK_DEV_IDEDMA_ICS is not set -# CONFIG_IDEDMA_ICS_AUTO is not set -# CONFIG_BLK_DEV_IDEDMA is not set -# CONFIG_BLK_DEV_IDE_RAPIDE is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_DMA_NONPCI is not set - -# -# SCSI support -# -# CONFIG_SCSI is not set - -# -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN_BOOL is not set - -# -# Input device support -# -CONFIG_INPUT=y -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_TSDEV is not set -# CONFIG_INPUT_TSLIBDEV is not set -# CONFIG_INPUT_EVDEV is not set -# CONFIG_INPUT_EVBUG is not set -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -# CONFIG_GAMEPORT_NS558 is not set -# CONFIG_GAMEPORT_L4 is not set -# CONFIG_GAMEPORT_EMU10K1 is not set -# CONFIG_GAMEPORT_VORTEX is not set -# CONFIG_GAMEPORT_FM801 is not set -# CONFIG_GAMEPORT_CS461x is not set -# CONFIG_SERIO is not set -# CONFIG_SERIO_I8042 is not set -# CONFIG_SERIO_SERPORT is not set -# CONFIG_SERIO_CT82C710 is not set -# CONFIG_SERIO_PARKBD is not set -# CONFIG_SERIO_RPCKBD is not set -# CONFIG_SERIO_AMBAKMI is not set -# CONFIG_SERIO_SA1111 is not set -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_KEYBOARD_ATKBD is not set -# CONFIG_KEYBOARD_SUNKBD is not set -# CONFIG_KEYBOARD_XTKBD is not set -# CONFIG_KEYBOARD_NEWTON is not set -# CONFIG_INPUT_MOUSE is not set -# CONFIG_MOUSE_PS2 is not set -# CONFIG_MOUSE_SERIAL is not set -# CONFIG_MOUSE_INPORT is not set -# CONFIG_MOUSE_LOGIBM is not set -# CONFIG_MOUSE_PC110PAD is not set -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_JOYSTICK_ANALOG is not set -# CONFIG_JOYSTICK_A3D is not set -# CONFIG_JOYSTICK_ADI is not set -# CONFIG_JOYSTICK_COBRA is not set -# CONFIG_JOYSTICK_GF2K is not set -# CONFIG_JOYSTICK_GRIP is not set -# CONFIG_JOYSTICK_GRIP_MP is not set -# CONFIG_JOYSTICK_GUILLEMOT is not set -# CONFIG_JOYSTICK_INTERACT is not set -# CONFIG_JOYSTICK_SIDEWINDER is not set -# CONFIG_JOYSTICK_TMDC is not set -# CONFIG_JOYSTICK_IFORCE is not set -# CONFIG_JOYSTICK_WARRIOR is not set -# CONFIG_JOYSTICK_MAGELLAN is not set -# CONFIG_JOYSTICK_SPACEORB is not set -# CONFIG_JOYSTICK_SPACEBALL is not set -# CONFIG_JOYSTICK_STINGER is not set -# CONFIG_JOYSTICK_TWIDDLER is not set -# CONFIG_JOYSTICK_DB9 is not set -# CONFIG_JOYSTICK_GAMECON is not set -# CONFIG_JOYSTICK_TURBOGRAFX is not set -# CONFIG_INPUT_JOYDUMP is not set -# CONFIG_INPUT_TOUCHSCREEN is not set -# CONFIG_TOUCHSCREEN_GUNZE is not set -# CONFIG_INPUT_MISC is not set -# CONFIG_INPUT_PCSPKR is not set -# CONFIG_INPUT_UINPUT is not set - -# -# Character devices -# -# CONFIG_VT is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_8250 is not set -# CONFIG_SERIAL_8250_CONSOLE is not set -# CONFIG_SERIAL_8250_CS is not set -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_SHARE_IRQ is not set -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_MULTIPORT is not set -# CONFIG_SERIAL_8250_RSA is not set -# CONFIG_SERIAL_ACORN is not set -# CONFIG_SERIAL_ANAKIN is not set -# CONFIG_SERIAL_ANAKIN_CONSOLE is not set -# CONFIG_SERIAL_AMBA is not set -# CONFIG_SERIAL_AMBA_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X is not set -# CONFIG_SERIAL_CLPS711X_CONSOLE is not set -# CONFIG_SERIAL_CLPS711X_OLD_NAME is not set -# CONFIG_SERIAL_21285 is not set -# CONFIG_SERIAL_21285_OLD is not set -# CONFIG_SERIAL_21285_CONSOLE is not set -# CONFIG_SERIAL_UART00 is not set -# CONFIG_SERIAL_UART00_CONSOLE is not set -CONFIG_SERIAL_SA1100=y -CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -# CONFIG_UNIX98_PTYS is not set - -# -# I2C support -# -CONFIG_I2C=m -CONFIG_I2C_ALGOBIT=m -# CONFIG_I2C_PHILIPSPAR is not set -# CONFIG_I2C_ELV is not set -# CONFIG_I2C_VELLEMAN is not set -# CONFIG_SCx200_I2C is not set -# CONFIG_SCx200_ACB is not set -# CONFIG_I2C_BIT_SA1100_GPIO is not set -# CONFIG_I2C_ALGOPCF is not set -CONFIG_I2C_CHARDEV=m -CONFIG_I2C_PROC=m - -# -# L3 serial bus support -# -# CONFIG_L3 is not set -# CONFIG_L3_ALGOBIT is not set -# CONFIG_L3_BIT_SA1100_GPIO is not set -# CONFIG_BIT_SA1100_GPIO is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set -# CONFIG_QIC02_TAPE is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_GEN_RTC is not set -# CONFIG_SA1100_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set - -# -# PCMCIA character devices -# -# CONFIG_SYNCLINK_CS is not set -# CONFIG_SCx200_GPIO is not set -# CONFIG_RAW_DRIVER is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# File systems -# -# CONFIG_QUOTA is not set -# CONFIG_QFMT_V1 is not set -# CONFIG_QFMT_V2 is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_ADFS_FS is not set -# CONFIG_ADFS_FS_RW is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set -# CONFIG_JBD_DEBUG is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set -CONFIG_RAMFS=y -# CONFIG_ISO9660_FS is not set -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set -# CONFIG_JFS_FS is not set -# CONFIG_JFS_DEBUG is not set -# CONFIG_JFS_STATISTICS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set -# CONFIG_HPFS_FS is not set -CONFIG_PROC_FS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVFS_MOUNT is not set -# CONFIG_DEVFS_DEBUG is not set -# CONFIG_DEVPTS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX4FS_RW is not set -# CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y -# CONFIG_SYSV_FS is not set -# CONFIG_UDF_FS is not set -# CONFIG_UDF_RW is not set -# CONFIG_UFS_FS is not set -# CONFIG_UFS_FS_WRITE is not set -# CONFIG_XFS_FS is not set -# CONFIG_XFS_RT is not set -# CONFIG_XFS_QUOTA is not set - -# -# Network File Systems -# -# CONFIG_CODA_FS is not set -# CONFIG_INTERMEZZO_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set -# CONFIG_NFS_V4 is not set -# CONFIG_ROOT_NFS is not set -# CONFIG_NFSD is not set -# CONFIG_NFSD_V3 is not set -# CONFIG_NFSD_V4 is not set -# CONFIG_NFSD_TCP is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_EXPORTFS is not set -# CONFIG_CIFS is not set -# CONFIG_SMB_FS is not set -# CONFIG_NCP_FS is not set -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set -# CONFIG_AFS_FS is not set -# CONFIG_ZISOFS_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_EFI_PARTITION is not set -# CONFIG_SMB_NLS is not set -# CONFIG_NLS is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# Multimedia Capabilities Port drivers -# -# CONFIG_MCP is not set -# CONFIG_MCP_SA1100 is not set -# CONFIG_MCP_UCB1200 is not set -# CONFIG_MCP_UCB1200_AUDIO is not set -# CONFIG_MCP_UCB1200_TS is not set - -# -# Console Switches -# -# CONFIG_SWITCHES is not set -# CONFIG_SWITCHES_SA1100 is not set -# CONFIG_SWITCHES_UCB1X00 is not set - -# -# USB support -# -# CONFIG_USB is not set - -# -# Bluetooth support -# -# CONFIG_BT is not set - -# -# Kernel hacking -# -# CONFIG_NO_FRAME_POINTER is not set -CONFIG_DEBUG_USER=y -# CONFIG_DEBUG_INFO is not set -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SLAB is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_ERRORS=y -# CONFIG_DEBUG_LL is not set -# CONFIG_DEBUG_DC21285_PORT is not set -# CONFIG_DEBUG_CLPS711X_UART2 is not set - -# -# Security options -# -CONFIG_SECURITY_CAPABILITIES=y - -# -# Library routines -# -# CONFIG_CRC32 is not set -CONFIG_ZLIB_INFLATE=m -CONFIG_ZLIB_DEFLATE=m diff -Nru a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c --- a/arch/arm/kernel/asm-offsets.c Mon Sep 22 00:30:18 2003 +++ b/arch/arm/kernel/asm-offsets.c Mon Sep 22 00:30:18 2003 @@ -10,14 +10,9 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ - -#include #include #include -#include -#include - /* * Make sure that the compiler and target are compatible. */ @@ -57,19 +52,6 @@ DEFINE(VMA_VM_FLAGS, offsetof(struct vm_area_struct, vm_flags)); BLANK(); DEFINE(VM_EXEC, VM_EXEC); - BLANK(); - DEFINE(HPTE_TYPE_SMALL, PTE_TYPE_SMALL); - DEFINE(HPTE_AP_READ, PTE_AP_READ); - DEFINE(HPTE_AP_WRITE, PTE_AP_WRITE); - BLANK(); - DEFINE(LPTE_PRESENT, L_PTE_PRESENT); - DEFINE(LPTE_YOUNG, L_PTE_YOUNG); - DEFINE(LPTE_BUFFERABLE, L_PTE_BUFFERABLE); - DEFINE(LPTE_CACHEABLE, L_PTE_CACHEABLE); - DEFINE(LPTE_USER, L_PTE_USER); - DEFINE(LPTE_WRITE, L_PTE_WRITE); - DEFINE(LPTE_EXEC, L_PTE_EXEC); - DEFINE(LPTE_DIRTY, L_PTE_DIRTY); BLANK(); DEFINE(PAGE_SZ, PAGE_SIZE); BLANK(); diff -Nru a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c --- a/arch/arm/kernel/bios32.c Mon Sep 22 00:30:21 2003 +++ b/arch/arm/kernel/bios32.c Mon Sep 22 00:30:21 2003 @@ -35,18 +35,17 @@ continue; pci_read_config_word(dev, PCI_STATUS, &status); + if (status == 0xffff) + continue; - status &= status_mask; - if (status == 0) + if ((status & status_mask) == 0) continue; /* clear the status errors */ - pci_write_config_word(dev, PCI_STATUS, status); + pci_write_config_word(dev, PCI_STATUS, status & status_mask); if (warn) - printk("(%02x:%02x.%d: %04X) ", dev->bus->number, - PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn), - status); + printk("(%s: %04X) ", pci_name(dev), status); } } diff -Nru a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c --- a/arch/arm/kernel/ecard.c Mon Sep 22 00:30:23 2003 +++ b/arch/arm/kernel/ecard.c Mon Sep 22 00:30:23 2003 @@ -329,8 +329,7 @@ BUG(); if (ecard_pid <= 0) - ecard_pid = kernel_thread(ecard_task, NULL, - CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + ecard_pid = kernel_thread(ecard_task, NULL, CLONE_KERNEL); ecard_req = req; wake_up(&ecard_wait); diff -Nru a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S --- a/arch/arm/kernel/entry-armv.S Mon Sep 22 00:30:20 2003 +++ b/arch/arm/kernel/entry-armv.S Mon Sep 22 00:30:20 2003 @@ -729,7 +729,7 @@ * This routine must not corrupt r9 */ #ifdef MULTI_ABORT - ldr r4, .LCprocfns @ pass r0, r3 to + ldr r4, .LCprocfns @ pass r2, r3 to mov lr, pc @ processor code ldr pc, [r4] @ call processor specific code #else @@ -871,7 +871,7 @@ alignment_trap r7, r7, __temp_abt zero_fp #ifdef MULTI_ABORT - ldr r4, .LCprocfns @ pass r0, r3 to + ldr r4, .LCprocfns @ pass r2, r3 to mov lr, pc @ processor code ldr pc, [r4] @ call processor specific code #else diff -Nru a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c --- a/arch/arm/kernel/fiq.c Mon Sep 22 00:30:24 2003 +++ b/arch/arm/kernel/fiq.c Mon Sep 22 00:30:24 2003 @@ -35,7 +35,6 @@ * - enables FIQ. * 6. Goto 3 */ -#include #include #include #include diff -Nru a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c --- a/arch/arm/kernel/process.c Mon Sep 22 00:30:24 2003 +++ b/arch/arm/kernel/process.c Mon Sep 22 00:30:24 2003 @@ -312,8 +312,8 @@ asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); int -copy_thread(int nr, unsigned long clone_flags, unsigned long esp, - unsigned long unused, struct task_struct *p, struct pt_regs *regs) +copy_thread(int nr, unsigned long clone_flags, unsigned long stack_start, + unsigned long stk_sz, struct task_struct *p, struct pt_regs *regs) { struct thread_info *thread = p->thread_info; struct pt_regs *childregs; @@ -321,7 +321,7 @@ childregs = ((struct pt_regs *)((unsigned long)thread + THREAD_SIZE - 8)) - 1; *childregs = *regs; childregs->ARM_r0 = 0; - childregs->ARM_sp = esp; + childregs->ARM_sp = stack_start; memset(&thread->cpu_context, 0, sizeof(struct cpu_context_save)); thread->cpu_context.sp = (unsigned long)childregs; @@ -373,33 +373,35 @@ } /* - * This is the mechanism for creating a new kernel thread. - * - * NOTE! Only a kernel-only process(ie the swapper or direct descendants - * who haven't done an "execve()") should use this: it will work within - * a system call from a "real" process, but the process memory space will - * not be free'd until both the parent and the child have exited. + * Shuffle the argument into the correct register before calling the + * thread function. r1 is the thread argument, r2 is the pointer to + * the thread function, and r3 points to the exit function. + */ +extern void kernel_thread_helper(void); +asm( ".align\n" +" .type kernel_thread_helper, #function\n" +"kernel_thread_helper:\n" +" mov r0, r1\n" +" mov lr, r3\n" +" mov pc, r2\n" +" .size kernel_thread_helper, . - kernel_thread_helper"); + +/* + * Create a kernel thread. */ pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) { - register unsigned int r0 asm("r0") = flags | CLONE_VM | CLONE_UNTRACED; - register unsigned int r1 asm("r1") = 0; - register pid_t __ret asm("r0"); - - __asm__ __volatile__( - __syscall(clone)" @ kernel_thread sys_clone \n\ - movs %0, r0 @ if we are the child \n\ - bne 1f \n\ - mov fp, #0 @ ensure that fp is zero \n\ - mov r0, %4 \n\ - mov lr, pc \n\ - mov pc, %3 \n\ - b sys_exit \n\ -1: " - : "=r" (__ret) - : "0" (r0), "r" (r1), "r" (fn), "r" (arg) - : "lr"); - return __ret; + struct pt_regs regs; + + memset(®s, 0, sizeof(regs)); + + regs.ARM_r1 = (unsigned long)arg; + regs.ARM_r2 = (unsigned long)fn; + regs.ARM_r3 = (unsigned long)do_exit; + regs.ARM_pc = (unsigned long)kernel_thread_helper; + regs.ARM_cpsr = SVC_MODE; + + return do_fork(flags|CLONE_VM|CLONE_UNTRACED, 0, ®s, 0, NULL, NULL); } /* diff -Nru a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c --- a/arch/arm/kernel/ptrace.c Mon Sep 22 00:30:18 2003 +++ b/arch/arm/kernel/ptrace.c Mon Sep 22 00:30:18 2003 @@ -9,7 +9,6 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ -#include #include #include #include diff -Nru a/arch/arm/kernel/semaphore.c b/arch/arm/kernel/semaphore.c --- a/arch/arm/kernel/semaphore.c Mon Sep 22 00:30:21 2003 +++ b/arch/arm/kernel/semaphore.c Mon Sep 22 00:30:21 2003 @@ -11,7 +11,6 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ -#include #include #include diff -Nru a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c --- a/arch/arm/kernel/setup.c Mon Sep 22 00:30:22 2003 +++ b/arch/arm/kernel/setup.c Mon Sep 22 00:30:22 2003 @@ -798,7 +798,7 @@ seq_printf(m, "Cache type\t: %s\n" "Cache clean\t: %s\n" "Cache lockdown\t: %s\n" - "Cache unified\t: %s\n", + "Cache format\t: %s\n", cache_types[CACHE_TYPE(cache_info)], cache_clean[CACHE_TYPE(cache_info)], cache_lockdown[CACHE_TYPE(cache_info)], diff -Nru a/arch/arm/lib/io-readsb.S b/arch/arm/lib/io-readsb.S --- a/arch/arm/lib/io-readsb.S Mon Sep 22 00:30:24 2003 +++ b/arch/arm/lib/io-readsb.S Mon Sep 22 00:30:24 2003 @@ -9,7 +9,6 @@ */ #include #include -#include .insb_align: rsb ip, ip, #4 cmp ip, r2 @@ -37,32 +36,36 @@ .insb_16_lp: ldrb r3, [r0] ldrb r4, [r0] - orr r3, r3, r4, lsl #8 - ldrb r4, [r0] - orr r3, r3, r4, lsl #16 - ldrb r4, [r0] - orr r3, r3, r4, lsl #24 - ldrb r4, [r0] - ldrb r5, [r0] - orr r4, r4, r5, lsl #8 - ldrb r5, [r0] - orr r4, r4, r5, lsl #16 - ldrb r5, [r0] - orr r4, r4, r5, lsl #24 ldrb r5, [r0] + mov r3, r3, lsl #byte(0) ldrb r6, [r0] - orr r5, r5, r6, lsl #8 - ldrb r6, [r0] - orr r5, r5, r6, lsl #16 + orr r3, r3, r4, lsl #byte(1) + ldrb r4, [r0] + orr r3, r3, r5, lsl #byte(2) + ldrb r5, [r0] + orr r3, r3, r6, lsl #byte(3) ldrb r6, [r0] - orr r5, r5, r6, lsl #24 + mov r4, r4, lsl #byte(0) + ldrb ip, [r0] + orr r4, r4, r5, lsl #byte(1) + ldrb r5, [r0] + orr r4, r4, r6, lsl #byte(2) ldrb r6, [r0] + orr r4, r4, ip, lsl #byte(3) ldrb ip, [r0] - orr r6, r6, ip, lsl #8 + mov r5, r5, lsl #byte(0) + ldrb lr, [r0] + orr r5, r5, r6, lsl #byte(1) + ldrb r6, [r0] + orr r5, r5, ip, lsl #byte(2) ldrb ip, [r0] - orr r6, r6, ip, lsl #16 + orr r5, r5, lr, lsl #byte(3) + ldrb lr, [r0] + mov r6, r6, lsl #byte(0) + orr r6, r6, ip, lsl #byte(1) ldrb ip, [r0] - orr r6, r6, ip, lsl #24 + orr r6, r6, lr, lsl #byte(2) + orr r6, r6, ip, lsl #byte(3) stmia r1!, {r3 - r6} subs r2, r2, #16 @@ -76,18 +79,20 @@ ldrb r3, [r0] ldrb r4, [r0] - orr r3, r3, r4, lsl #8 - ldrb r4, [r0] - orr r3, r3, r4, lsl #16 - ldrb r4, [r0] - orr r3, r3, r4, lsl #24 - ldrb r4, [r0] ldrb r5, [r0] - orr r4, r4, r5, lsl #8 - ldrb r5, [r0] - orr r4, r4, r5, lsl #16 + mov r3, r3, lsl #byte(0) + ldrb r6, [r0] + orr r3, r3, r4, lsl #byte(1) + ldrb r4, [r0] + orr r3, r3, r5, lsl #byte(2) ldrb r5, [r0] - orr r4, r4, r5, lsl #24 + orr r3, r3, r6, lsl #byte(3) + ldrb r6, [r0] + mov r4, r4, lsl #byte(0) + ldrb ip, [r0] + orr r4, r4, r5, lsl #byte(1) + orr r4, r4, r6, lsl #byte(2) + orr r4, r4, ip, lsl #byte(3) stmia r1!, {r3, r4} .insb_no_8: tst r2, #4 @@ -95,11 +100,12 @@ ldrb r3, [r0] ldrb r4, [r0] - orr r3, r3, r4, lsl #8 - ldrb r4, [r0] - orr r3, r3, r4, lsl #16 - ldrb r4, [r0] - orr r3, r3, r4, lsl #24 + ldrb r5, [r0] + ldrb r6, [r0] + mov r3, r3, lsl #byte(0) + orr r3, r3, r4, lsl #byte(1) + orr r3, r3, r5, lsl #byte(2) + orr r3, r3, r6, lsl #byte(3) str r3, [r1], #4 .insb_no_4: ands r2, r2, #3 diff -Nru a/arch/arm/lib/io-writesb.S b/arch/arm/lib/io-writesb.S --- a/arch/arm/lib/io-writesb.S Mon Sep 22 00:30:23 2003 +++ b/arch/arm/lib/io-writesb.S Mon Sep 22 00:30:23 2003 @@ -9,7 +9,26 @@ */ #include #include -#include + + .macro outword, rd +#ifndef __ARMEB__ + strb \rd, [r0] + mov \rd, \rd, lsr #8 + strb \rd, [r0] + mov \rd, \rd, lsr #8 + strb \rd, [r0] + mov \rd, \rd, lsr #8 + strb \rd, [r0] +#else + mov lr, \rd, lsr #24 + strb lr, [r0] + mov lr, \rd, lsr #16 + strb lr, [r0] + mov lr, \rd, lsr #8 + strb lr, [r0] + strb \rd, [r0] +#endif + .endm .outsb_align: rsb ip, ip, #4 cmp ip, r2 @@ -30,86 +49,37 @@ ands ip, r1, #3 bne .outsb_align -.outsb_aligned: stmfd sp!, {r4 - r6, lr} +.outsb_aligned: stmfd sp!, {r4, r5, lr} subs r2, r2, #16 bmi .outsb_no_16 -.outsb_16_lp: ldmia r1!, {r3 - r6} - - strb r3, [r0] - mov r3, r3, lsr #8 - strb r3, [r0] - mov r3, r3, lsr #8 - strb r3, [r0] - mov r3, r3, lsr #8 - strb r3, [r0] - - strb r4, [r0] - mov r4, r4, lsr #8 - strb r4, [r0] - mov r4, r4, lsr #8 - strb r4, [r0] - mov r4, r4, lsr #8 - strb r4, [r0] - - strb r5, [r0] - mov r5, r5, lsr #8 - strb r5, [r0] - mov r5, r5, lsr #8 - strb r5, [r0] - mov r5, r5, lsr #8 - strb r5, [r0] - - strb r6, [r0] - mov r6, r6, lsr #8 - strb r6, [r0] - mov r6, r6, lsr #8 - strb r6, [r0] - mov r6, r6, lsr #8 - strb r6, [r0] - +.outsb_16_lp: ldmia r1!, {r3, r4, r5, ip} + outword r3 + outword r4 + outword r5 + outword ip subs r2, r2, #16 bpl .outsb_16_lp tst r2, #15 - LOADREGS(eqfd, sp!, {r4 - r6, pc}) + LOADREGS(eqfd, sp!, {r4, r5, pc}) .outsb_no_16: tst r2, #8 beq .outsb_no_8 ldmia r1!, {r3, r4} - - strb r3, [r0] - mov r3, r3, lsr #8 - strb r3, [r0] - mov r3, r3, lsr #8 - strb r3, [r0] - mov r3, r3, lsr #8 - strb r3, [r0] - - strb r4, [r0] - mov r4, r4, lsr #8 - strb r4, [r0] - mov r4, r4, lsr #8 - strb r4, [r0] - mov r4, r4, lsr #8 - strb r4, [r0] + outword r3 + outword r4 .outsb_no_8: tst r2, #4 beq .outsb_no_4 ldr r3, [r1], #4 - strb r3, [r0] - mov r3, r3, lsr #8 - strb r3, [r0] - mov r3, r3, lsr #8 - strb r3, [r0] - mov r3, r3, lsr #8 - strb r3, [r0] + outword r3 .outsb_no_4: ands r2, r2, #3 - LOADREGS(eqfd, sp!, {r4 - r6, pc}) + LOADREGS(eqfd, sp!, {r4, r5, pc}) cmp r2, #2 ldrb r3, [r1], #1 @@ -119,4 +89,4 @@ ldrgtb r3, [r1] strgtb r3, [r0] - LOADREGS(fd, sp!, {r4 - r6, pc}) + LOADREGS(fd, sp!, {r4, r5, pc}) diff -Nru a/arch/arm/lib/io-writesl.S b/arch/arm/lib/io-writesl.S --- a/arch/arm/lib/io-writesl.S Mon Sep 22 00:30:18 2003 +++ b/arch/arm/lib/io-writesl.S Mon Sep 22 00:30:18 2003 @@ -17,10 +17,15 @@ ands ip, r1, #3 bne 2f -1: ldr r3, [r1], #4 - str r3, [r0] - subs r2, r2, #1 - bne 1b + tst r2, #1 + ldrne r3, [r1], #4 + strne r3, [r0, #0] +1: subs r2, r2, #2 + ldrcs r3, [r1], #4 + ldrcs ip, [r1], #4 + strcs r3, [r0, #0] + strcs ip, [r0, #0] + bcs 1b mov pc, lr 2: bic r1, r1, #3 @@ -31,25 +36,25 @@ 3: mov ip, r3, lsr #16 ldr r3, [r1], #4 - orr ip, ip, r3, lsl #16 - str ip, [r0] subs r2, r2, #1 + orr ip, ip, r3, lsl #16 + str ip, [r0, #0] bne 3b mov pc, lr 4: mov ip, r3, lsr #24 ldr r3, [r1], #4 - orr ip, ip, r3, lsl #8 - str ip, [r0] subs r2, r2, #1 + orr ip, ip, r3, lsl #8 + str ip, [r0, #0] bne 4b mov pc, lr 5: mov ip, r3, lsr #8 ldr r3, [r1], #4 - orr ip, ip, r3, lsl #24 - str ip, [r0] subs r2, r2, #1 + orr ip, ip, r3, lsl #24 + str ip, [r0, #0] bne 5b mov pc, lr diff -Nru a/arch/arm/lib/lib1funcs.S b/arch/arm/lib/lib1funcs.S --- a/arch/arm/lib/lib1funcs.S Mon Sep 22 00:30:18 2003 +++ b/arch/arm/lib/lib1funcs.S Mon Sep 22 00:30:18 2003 @@ -41,7 +41,6 @@ #include #include #include -#include #define RET mov #define RETc(x) mov##x diff -Nru a/arch/arm/mach-anakin/arch.c b/arch/arm/mach-anakin/arch.c --- a/arch/arm/mach-anakin/arch.c Mon Sep 22 00:30:22 2003 +++ b/arch/arm/mach-anakin/arch.c Mon Sep 22 00:30:22 2003 @@ -10,8 +10,6 @@ * Changelog: * 09-Apr-2001 W/TTC Created */ - -#include #include #include diff -Nru a/arch/arm/mach-clps711x/mm.c b/arch/arm/mach-clps711x/mm.c --- a/arch/arm/mach-clps711x/mm.c Mon Sep 22 00:30:24 2003 +++ b/arch/arm/mach-clps711x/mm.c Mon Sep 22 00:30:24 2003 @@ -22,7 +22,6 @@ #include #include #include -#include #include #include diff -Nru a/arch/arm/mach-integrator/Makefile b/arch/arm/mach-integrator/Makefile --- a/arch/arm/mach-integrator/Makefile Mon Sep 22 00:30:24 2003 +++ b/arch/arm/mach-integrator/Makefile Mon Sep 22 00:30:24 2003 @@ -4,7 +4,7 @@ # Object file lists. -obj-y := core.o time.o +obj-y := core.o lm.o time.o obj-$(CONFIG_LEDS) += leds.o obj-$(CONFIG_PCI) += pci_v3.o pci.o diff -Nru a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c --- a/arch/arm/mach-integrator/core.c Mon Sep 22 00:30:23 2003 +++ b/arch/arm/mach-integrator/core.c Mon Sep 22 00:30:23 2003 @@ -17,7 +17,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include #include #include #include @@ -34,6 +33,8 @@ #include #include +#include + #include #include #include @@ -46,6 +47,7 @@ * just for now). */ #define VA_IC_BASE IO_ADDRESS(INTEGRATOR_IC_BASE) +#define VA_SC_BASE IO_ADDRESS(INTEGRATOR_SC_BASE) #define VA_CMIC_BASE IO_ADDRESS(INTEGRATOR_HDR_BASE) + INTEGRATOR_HDR_IC_OFFSET /* @@ -66,7 +68,7 @@ * f1a00000 1a000000 Debug LEDs * f1b00000 1b000000 GPIO */ - + static struct map_desc integrator_io_desc[] __initdata = { { IO_ADDRESS(INTEGRATOR_HDR_BASE), INTEGRATOR_HDR_BASE, SZ_4K, MT_DEVICE }, { IO_ADDRESS(INTEGRATOR_SC_BASE), INTEGRATOR_SC_BASE, SZ_4K, MT_DEVICE }, @@ -89,7 +91,7 @@ iotable_init(integrator_io_desc, ARRAY_SIZE(integrator_io_desc)); } -#define ALLPCI ( (1 << IRQ_PCIINT0) | (1 << IRQ_PCIINT1) | (1 << IRQ_PCIINT2) | (1 << IRQ_PCIINT3) ) +#define ALLPCI ( (1 << IRQ_PCIINT0) | (1 << IRQ_PCIINT1) | (1 << IRQ_PCIINT2) | (1 << IRQ_PCIINT3) ) static void sc_mask_irq(unsigned int irq) { @@ -161,12 +163,35 @@ static int __init register_devices(void) { + unsigned long sc_dec; int i; for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { struct amba_device *d = amba_devs[i]; amba_device_register(d, &iomem_resource); + } + + sc_dec = readl(VA_SC_BASE + INTEGRATOR_SC_DEC_OFFSET); + for (i = 0; i < 4; i++) { + struct lm_device *lmdev; + + if ((sc_dec & (16 << i)) == 0) + continue; + + lmdev = kmalloc(sizeof(struct lm_device), GFP_KERNEL); + if (!lmdev) + continue; + + memset(lmdev, 0, sizeof(struct lm_device)); + + lmdev->resource.start = 0xc0000000 + 0x10000000 * i; + lmdev->resource.end = lmdev->resource.start + 0x0fffffff; + lmdev->resource.flags = IORESOURCE_MEM; + lmdev->irq = IRQ_EXPINT0 + i; + lmdev->id = i; + + lm_device_register(lmdev); } return 0; diff -Nru a/arch/arm/mach-integrator/cpu.c b/arch/arm/mach-integrator/cpu.c --- a/arch/arm/mach-integrator/cpu.c Mon Sep 22 00:30:21 2003 +++ b/arch/arm/mach-integrator/cpu.c Mon Sep 22 00:30:21 2003 @@ -11,7 +11,6 @@ * * CPU support functions */ -#include #include #include #include diff -Nru a/arch/arm/mach-integrator/impd1.c b/arch/arm/mach-integrator/impd1.c --- a/arch/arm/mach-integrator/impd1.c Mon Sep 22 00:30:20 2003 +++ b/arch/arm/mach-integrator/impd1.c Mon Sep 22 00:30:20 2003 @@ -10,7 +10,7 @@ * This file provides the core support for the IM-PD1 module. * * Module / boot parameters. - * id=n impd1.id=n - set the logic module position in stack to 'n' + * lmid=n impd1.lmid=n - set the logic module position in stack to 'n' */ #include #include @@ -21,17 +21,15 @@ #include #include #include +#include #include #include static int module_id; -module_param_named(lmid, module_id, int, 0); +module_param_named(lmid, module_id, int, 0444); MODULE_PARM_DESC(lmid, "logic module stack position"); -#define ROM_OFFSET 0x0fffff00 -#define ROM_SIZE 256 - struct impd1_module { void *base; }; @@ -142,17 +140,15 @@ } }; -static int impd1_probe(struct device *dev) +static int impd1_probe(struct lm_device *dev) { - struct platform_device *pdev = to_platform_device(dev); - struct resource *res = &pdev->resource[0]; struct impd1_module *impd1; int i, ret; - if (pdev->id != module_id) + if (dev->id != module_id) return -EINVAL; - if (!request_mem_region(res->start, SZ_4K, "LM registers")) + if (!request_mem_region(dev->resource.start, SZ_4K, "LM registers")) return -EBUSY; impd1 = kmalloc(sizeof(struct impd1_module), GFP_KERNEL); @@ -162,22 +158,22 @@ } memset(impd1, 0, sizeof(struct impd1_module)); - impd1->base = ioremap(res->start, SZ_4K); + impd1->base = ioremap(dev->resource.start, SZ_4K); if (!impd1->base) { ret = -ENOMEM; goto free_impd1; } - dev_set_drvdata(dev, impd1); + lm_set_drvdata(dev, impd1); - printk("IM-PD1 found at 0x%08lx\n", res->start); + printk("IM-PD1 found at 0x%08lx\n", dev->resource.start); for (i = 0; i < ARRAY_SIZE(impd1_devs); i++) { struct impd1_device *idev = impd1_devs + i; struct amba_device *d; unsigned long pc_base; - pc_base = res->start + idev->offset; + pc_base = dev->resource.start + idev->offset; d = kmalloc(sizeof(struct amba_device), GFP_KERNEL); if (!d) @@ -186,16 +182,16 @@ memset(d, 0, sizeof(struct amba_device)); snprintf(d->dev.bus_id, sizeof(d->dev.bus_id), - "lm%x:%5.5lx", pdev->id, idev->offset >> 12); + "lm%x:%5.5lx", dev->id, idev->offset >> 12); - d->dev.parent = &pdev->dev; - d->res.start = res->start + idev->offset; + d->dev.parent = &dev->dev; + d->res.start = dev->resource.start + idev->offset; d->res.end = d->res.start + SZ_4K - 1; d->res.flags = IORESOURCE_MEM; - d->irq = pdev->resource[1].start; + d->irq = dev->irq; d->periphid = idev->id; - ret = amba_device_register(d, res); + ret = amba_device_register(d, &dev->resource); if (ret) { printk("unable to register device %s: %d\n", d->dev.bus_id, ret); @@ -211,47 +207,44 @@ if (impd1) kfree(impd1); release_lm: - release_mem_region(res->start, SZ_4K); + release_mem_region(dev->resource.start, SZ_4K); return ret; } -static int impd1_remove(struct device *dev) +static void impd1_remove(struct lm_device *dev) { - struct platform_device *pdev = to_platform_device(dev); - struct resource *res = &pdev->resource[0]; - struct impd1_module *impd1 = dev_get_drvdata(dev); + struct impd1_module *impd1 = lm_get_drvdata(dev); struct list_head *l, *n; - list_for_each_safe(l, n, &dev->children) { + list_for_each_safe(l, n, &dev->dev.children) { struct device *d = list_to_dev(l); device_unregister(d); } - dev_set_drvdata(dev, NULL); + lm_set_drvdata(dev, NULL); iounmap(impd1->base); kfree(impd1); - release_mem_region(res->start, SZ_4K); - - return 0; + release_mem_region(dev->resource.start, SZ_4K); } -static struct device_driver impd1_driver = { - .name = "lm", - .bus = &platform_bus_type, +static struct lm_driver impd1_driver = { + .drv = { + .name = "impd1", + }, .probe = impd1_probe, .remove = impd1_remove, }; static int __init impd1_init(void) { - return driver_register(&impd1_driver); + return lm_driver_register(&impd1_driver); } static void __exit impd1_exit(void) { - driver_unregister(&impd1_driver); + lm_driver_unregister(&impd1_driver); } module_init(impd1_init); diff -Nru a/arch/arm/mach-integrator/lm.c b/arch/arm/mach-integrator/lm.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/mach-integrator/lm.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,92 @@ +/* + * linux/arch/arm/mach-integrator/lm.c + * + * Copyright (C) 2003 Deep Blue Solutions Ltd, All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ +#include +#include + +#include + +#define to_lm_device(d) container_of(d, struct lm_device, dev) +#define to_lm_driver(d) container_of(d, struct lm_driver, drv) + +static int lm_match(struct device *dev, struct device_driver *drv) +{ + return 1; +} + +static struct bus_type lm_bustype = { + .name = "logicmodule", + .match = lm_match, +// .suspend = lm_suspend, +// .resume = lm_resume, +}; + +static int __init lm_init(void) +{ + return bus_register(&lm_bustype); +} + +postcore_initcall(lm_init); + +static int lm_bus_probe(struct device *dev) +{ + struct lm_device *lmdev = to_lm_device(dev); + struct lm_driver *lmdrv = to_lm_driver(dev->driver); + + return lmdrv->probe(lmdev); +} + +static int lm_bus_remove(struct device *dev) +{ + struct lm_device *lmdev = to_lm_device(dev); + struct lm_driver *lmdrv = to_lm_driver(dev->driver); + + lmdrv->remove(lmdev); + return 0; +} + +int lm_driver_register(struct lm_driver *drv) +{ + drv->drv.bus = &lm_bustype; + drv->drv.probe = lm_bus_probe; + drv->drv.remove = lm_bus_remove; + + return driver_register(&drv->drv); +} + +void lm_driver_unregister(struct lm_driver *drv) +{ + driver_unregister(&drv->drv); +} + +static void lm_device_release(struct device *dev) +{ + struct lm_device *d = to_lm_device(dev); + + kfree(d); +} + +int lm_device_register(struct lm_device *dev) +{ + int ret; + + dev->dev.release = lm_device_release; + dev->dev.bus = &lm_bustype; + + snprintf(dev->dev.bus_id, sizeof(dev->dev.bus_id), "lm%d", dev->id); + dev->resource.name = dev->dev.bus_id; + + ret = request_resource(&iomem_resource, &dev->resource); + if (ret == 0) { + ret = device_register(&dev->dev); + if (ret) + release_resource(&dev->resource); + } + return ret; +} diff -Nru a/arch/arm/mach-iop3xx/mm-321.c b/arch/arm/mach-iop3xx/mm-321.c --- a/arch/arm/mach-iop3xx/mm-321.c Mon Sep 22 00:30:21 2003 +++ b/arch/arm/mach-iop3xx/mm-321.c Mon Sep 22 00:30:21 2003 @@ -12,7 +12,7 @@ * option) any later version. * */ - +#include #include #include diff -Nru a/arch/arm/mach-l7200/core.c b/arch/arm/mach-l7200/core.c --- a/arch/arm/mach-l7200/core.c Mon Sep 22 00:30:19 2003 +++ b/arch/arm/mach-l7200/core.c Mon Sep 22 00:30:19 2003 @@ -5,7 +5,6 @@ * * Extra MM routines for L7200 architecture */ -#include #include #include diff -Nru a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c --- a/arch/arm/mach-pxa/generic.c Mon Sep 22 00:30:20 2003 +++ b/arch/arm/mach-pxa/generic.c Mon Sep 22 00:30:20 2003 @@ -16,7 +16,6 @@ * initialization stuff for PXA machines which can be overridden later if * need be. */ -#include #include #include #include diff -Nru a/arch/arm/mach-pxa/leds.c b/arch/arm/mach-pxa/leds.c --- a/arch/arm/mach-pxa/leds.c Mon Sep 22 00:30:25 2003 +++ b/arch/arm/mach-pxa/leds.c Mon Sep 22 00:30:25 2003 @@ -7,7 +7,6 @@ * * Copyright (c) 2001 Jeff Sutherland, Accelent Systems Inc. */ -#include #include #include diff -Nru a/arch/arm/mach-pxa/pm.c b/arch/arm/mach-pxa/pm.c --- a/arch/arm/mach-pxa/pm.c Mon Sep 22 00:30:22 2003 +++ b/arch/arm/mach-pxa/pm.c Mon Sep 22 00:30:22 2003 @@ -10,7 +10,7 @@ * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License. */ - +#include #include #include diff -Nru a/arch/arm/mach-rpc/riscpc.c b/arch/arm/mach-rpc/riscpc.c --- a/arch/arm/mach-rpc/riscpc.c Mon Sep 22 00:30:23 2003 +++ b/arch/arm/mach-rpc/riscpc.c Mon Sep 22 00:30:23 2003 @@ -17,7 +17,6 @@ #include #include -#include #include #include #include diff -Nru a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c --- a/arch/arm/mach-sa1100/h3600.c Mon Sep 22 00:30:19 2003 +++ b/arch/arm/mach-sa1100/h3600.c Mon Sep 22 00:30:19 2003 @@ -19,6 +19,7 @@ * and abstracted EGPIO interface. * */ +#include #include #include #include diff -Nru a/arch/arm/mach-sa1100/hackkit.c b/arch/arm/mach-sa1100/hackkit.c --- a/arch/arm/mach-sa1100/hackkit.c Mon Sep 22 00:30:25 2003 +++ b/arch/arm/mach-sa1100/hackkit.c Mon Sep 22 00:30:25 2003 @@ -11,8 +11,6 @@ * published by the Free Software Foundation. * */ - -#include #include #include #include diff -Nru a/arch/arm/mach-sa1100/pfs168.c b/arch/arm/mach-sa1100/pfs168.c --- a/arch/arm/mach-sa1100/pfs168.c Mon Sep 22 00:30:17 2003 +++ b/arch/arm/mach-sa1100/pfs168.c Mon Sep 22 00:30:17 2003 @@ -1,7 +1,6 @@ /* * linux/arch/arm/mach-sa1100/pfs168.c */ -#include #include #include #include diff -Nru a/arch/arm/mach-sa1100/simpad.c b/arch/arm/mach-sa1100/simpad.c --- a/arch/arm/mach-sa1100/simpad.c Mon Sep 22 00:30:18 2003 +++ b/arch/arm/mach-sa1100/simpad.c Mon Sep 22 00:30:18 2003 @@ -9,24 +9,37 @@ #include #include #include +#include +#include #include #include +#include #include #include #include +#include +#include + #include +#include +#include #include "generic.h" long cs3_shadow; -long get_cs3_shadow() +long get_cs3_shadow(void) { return cs3_shadow; } +void set_cs3(long value) +{ + *(CS3BUSTYPE *)(CS3_BASE) = cs3_shadow = value; +} + void set_cs3_bit(int value) { cs3_shadow |= value; @@ -39,10 +52,15 @@ *(CS3BUSTYPE *)(CS3_BASE) = cs3_shadow; } +EXPORT_SYMBOL(set_cs3_bit); +EXPORT_SYMBOL(clear_cs3_bit); + static struct map_desc simpad_io_desc[] __initdata = { - /* virtual physical length type */ - { 0xf2800000, 0x4b800000, 0x00800000, MT_DEVICE }, /* MQ200 */ - { 0xf1000000, 0x18000000, 0x00100000, MT_DEVICE } /* Paules CS3, write only */ + /* virtual physical length type */ + /* MQ200 */ + { 0xf2800000, 0x4b800000, 0x00800000, MT_DEVICE }, + /* Paules CS3, write only */ + { 0xf1000000, 0x18000000, 0x00100000, MT_DEVICE }, }; @@ -50,32 +68,52 @@ { if (port->mapbase == (u_int)&Ser1UTCR0) { if (state) + { clear_cs3_bit(RS232_ON); - else + clear_cs3_bit(DECT_POWER_ON); + }else + { set_cs3_bit(RS232_ON); + set_cs3_bit(DECT_POWER_ON); + } } } static struct sa1100_port_fns simpad_port_fns __initdata = { - .pm = simpad_uart_pm, + .pm = simpad_uart_pm, }; static void __init simpad_map_io(void) { sa1100_map_io(); + iotable_init(simpad_io_desc, ARRAY_SIZE(simpad_io_desc)); - PSPR = 0xc0008000; - GPDR &= ~GPIO_GPIO0; - cs3_shadow = (EN1 | EN0 | LED2_ON | DISPLAY_ON | RS232_ON | - ENABLE_5V | RESET_SIMCARD); - *(CS3BUSTYPE *)(CS3_BASE) = cs3_shadow; + set_cs3_bit (EN1 | EN0 | LED2_ON | DISPLAY_ON | RS232_ON | + ENABLE_5V | RESET_SIMCARD | DECT_POWER_ON); + + + sa1100_register_uart_fns(&simpad_port_fns); + sa1100_register_uart(0, 3); /* serial interface */ + sa1100_register_uart(1, 1); /* DECT */ + + // Reassign UART 1 pins + GAFR |= GPIO_UART_TXD | GPIO_UART_RXD; + GPDR |= GPIO_UART_TXD | GPIO_LDD13 | GPIO_LDD15; + GPDR &= ~GPIO_UART_RXD; + PPAR |= PPAR_UPR; + + /* + * Set up registers for sleep mode. + */ + + + PWER = PWER_GPIO0| PWER_RTC; + PGSR = 0x818; + PCFR = 0; + PSDR = 0; - //It is only possible to register 3 UART in serial_sa1100.c - sa1100_register_uart(0, 3); - sa1100_register_uart(1, 1); - set_irq_type(IRQ_GPIO_UCB1300_IRQ, IRQT_RISING); } #ifdef CONFIG_PROC_FS @@ -105,7 +143,7 @@ char *p = page; int len, i; - p += sprintf(p, "Chipselect3 : %x\n", cs3_shadow); + p += sprintf(p, "Chipselect3 : %x\n", (uint)cs3_shadow); for (i = 0; i <= 15; i++) { if(cs3_shadow & (1<read_proc = proc_cs3_read; + proc_cs3->write_proc = (void*)proc_cs3_write; + } +#endif + + + return 0; } arch_initcall(cs3_init); -#endif // CONFIG_PROC_FS +static void simpad_power_off(void) +{ + local_irq_disable(); // was cli + set_cs3(0x800); /* only SD_MEDIAQ */ + + /* disable internal oscillator, float CS lines */ + PCFR = (PCFR_OPDE | PCFR_FP | PCFR_FS); + /* enable wake-up on GPIO0 (Assabet...) */ + PWER = GFER = GRER = 1; + /* + * set scratchpad to zero, just in case it is used as a + * restart address by the bootloader. + */ + PSPR = 0; + PGSR = 0; + /* enter sleep mode */ + PMCR = PMCR_SF; + while(1); + + local_irq_enable(); /* we won't ever call it */ + + +} + +static int __init simpad_init(void) +{ + set_power_off_handler( simpad_power_off ); + return 0; +} + +arch_initcall(simpad_init); + MACHINE_START(SIMPAD, "Simpad") MAINTAINER("Juergen Messerer") BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000) + BOOT_PARAMS(0xc0000100) MAPIO(simpad_map_io) INITIRQ(sa1100_init_irq) MACHINE_END diff -Nru a/arch/arm/mach-sa1100/stork.c b/arch/arm/mach-sa1100/stork.c --- a/arch/arm/mach-sa1100/stork.c Mon Sep 22 00:30:23 2003 +++ b/arch/arm/mach-sa1100/stork.c Mon Sep 22 00:30:23 2003 @@ -8,8 +8,6 @@ * published by the Free Software Foundation. * */ - -#include #include #include #include diff -Nru a/arch/arm/mach-sa1100/trizeps.c b/arch/arm/mach-sa1100/trizeps.c --- a/arch/arm/mach-sa1100/trizeps.c Mon Sep 22 00:30:25 2003 +++ b/arch/arm/mach-sa1100/trizeps.c Mon Sep 22 00:30:25 2003 @@ -12,7 +12,6 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ -#include #include #include #include diff -Nru a/arch/arm/mach-tbox/core.c b/arch/arm/mach-tbox/core.c --- a/arch/arm/mach-tbox/core.c Mon Sep 22 00:30:23 2003 +++ b/arch/arm/mach-tbox/core.c Mon Sep 22 00:30:23 2003 @@ -16,7 +16,6 @@ #include #include #include -#include #include #include diff -Nru a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/mm/Kconfig Mon Sep 22 00:30:25 2003 @@ -0,0 +1,344 @@ +comment "Processor Type" + +config CPU_32 + bool + default y + +# Select CPU types depending on the architecture selected. This selects +# which CPUs we support in the kernel image, and the compiler instruction +# optimiser behaviour. + +# ARM610 +config CPU_ARM610 + bool "Support ARM610 processor" + depends on ARCH_RPC + select CPU_32v3 + select CPU_CACHE_V3 + select CPU_COPY_V3 + select CPU_TLB_V3 + help + The ARM610 is the successor to the ARM3 processor + and was produced by VLSI Technology Inc. + + Say Y if you want support for the ARM610 processor. + Otherwise, say N. + +# ARM710 +config CPU_ARM710 + bool "Support ARM710 processor" if !ARCH_CLPS7500 && ARCH_RPC + default y if ARCH_CLPS7500 + select CPU_32v3 + select CPU_CACHE_V3 + select CPU_COPY_V3 + select CPU_TLB_V3 + help + A 32-bit RISC microprocessor based on the ARM7 processor core + designed by Advanced RISC Machines Ltd. The ARM710 is the + successor to the ARM610 processor. It was released in + July 1994 by VLSI Technology Inc. + + Say Y if you want support for the ARM710 processor. + Otherwise, say N. + +# ARM720T +config CPU_ARM720T + bool "Support ARM720T processor" if !ARCH_CLPS711X && !ARCH_L7200 && !ARCH_CDB89712 && ARCH_INTEGRATOR + default y if ARCH_CLPS711X || ARCH_L7200 || ARCH_CDB89712 + select CPU_32v4 + select CPU_ABRT_LV4T + select CPU_CACHE_V4 + select CPU_COPY_V4WT + select CPU_TLB_V4WT + help + A 32-bit RISC processor with 8kByte Cache, Write Buffer and + MMU built around an ARM7TDMI core. + + Say Y if you want support for the ARM720T processor. + Otherwise, say N. + +# ARM920T +config CPU_ARM920T + bool "Support ARM920T processor" + depends on ARCH_INTEGRATOR + select CPU_32v4 + select CPU_ABRT_EV4T + select CPU_CACHE_V4WT + select CPU_COPY_V4WB + select CPU_TLB_V4WBI + help + The ARM920T is licensed to be produced by numerous vendors, + and is used in the Maverick EP9312. More information at + . + + Say Y if you want support for the ARM920T processor. + Otherwise, say N. + +# ARM922T +config CPU_ARM922T + bool + depends on ARCH_CAMELOT + default y + select CPU_32v4 + select CPU_ABRT_EV4T + select CPU_CACHE_V4WT + select CPU_COPY_V4WB + select CPU_TLB_V4WBI + help + The ARM922T is a version of the ARM920T, but with smaller + instruction and data caches. It is used in Altera's + Excalibur XA device family. + + Say Y if you want support for the ARM922T processor. + Otherwise, say N. + +# ARM926T +config CPU_ARM926T + bool "Support ARM926T processor" + depends on ARCH_INTEGRATOR + select CPU_32v5 + select CPU_ABRT_EV5TJ + select CPU_COPY_V4WB + select CPU_TLB_V4WBI + help + This is a variant of the ARM920. It has slightly different + instruction sequences for cache and TLB operations. Curiously, + there is no documentation on it at the ARM corporate website. + + Say Y if you want support for the ARM926T processor. + Otherwise, say N. + +# ARM1020 - needs validating +config CPU_ARM1020 + bool "Support ARM1020T (rev 0) processor" + depends on ARCH_INTEGRATOR + select CPU_32v5 + select CPU_ABRT_EV4T + select CPU_CACHE_V4WT + select CPU_COPY_V4WB + select CPU_TLB_V4WBI + help + The ARM1020 is the 32K cached version of the ARM10 processor, + with an addition of a floating-point unit. + + Say Y if you want support for the ARM1020 processor. + Otherwise, say N. + +# ARM1020E - needs validating +config CPU_ARM1020E + bool "Support ARM1020E processor" + depends on ARCH_INTEGRATOR + select CPU_32v5 + select CPU_ABRT_EV4T + select CPU_CACHE_V4WT + select CPU_COPY_V4WB + select CPU_TLB_V4WBI + depends on n + +# ARM1022E +config CPU_ARM1022 + bool "Support ARM1022E processor" + depends on ARCH_INTEGRATOR + select CPU_32v5 + select CPU_ABRT_EV4T + select CPU_COPY_V4WB # can probably do better + select CPU_TLB_V4WBI + help + The ARM1022E is an implementation of the ARMv5TE architecture + based upon the ARM10 integer core with a 16KiB L1 Harvard cache, + embedded trace macrocell, and a floating-point unit. + + Say Y if you want support for the ARM1022E processor. + Otherwise, say N. + +# ARM1026EJ-S +config CPU_ARM1026 + bool "Support ARM1026EJ-S processor" + depends on ARCH_INTEGRATOR + select CPU_32v5 + select CPU_ABRT_EV5T # But need Jazelle, but EV5TJ ignores bit 10 + select CPU_COPY_V4WB # can probably do better + select CPU_TLB_V4WBI + help + The ARM1026EJ-S is an implementation of the ARMv5TEJ architecture + based upon the ARM10 integer core. + + Say Y if you want support for the ARM1026EJ-S processor. + Otherwise, say N. + +# SA110 +config CPU_SA110 + bool "Support StrongARM(R) SA-110 processor" if !ARCH_EBSA110 && !FOOTBRIDGE && !ARCH_TBOX && !ARCH_SHARK && !ARCH_NEXUSPCI && !ARCH_ANAKIN && ARCH_RPC + default y if ARCH_EBSA110 || FOOTBRIDGE || ARCH_TBOX || ARCH_SHARK || ARCH_NEXUSPCI || ARCH_ANAKIN + select CPU_32v3 if ARCH_RPC + select CPU_32v4 if !ARCH_RPC + select CPU_ABRT_EV4 + select CPU_CACHE_V4WB + select CPU_COPY_V4WB + select CPU_TLB_V4WB + help + The Intel StrongARM(R) SA-110 is a 32-bit microprocessor and + is available at five speeds ranging from 100 MHz to 233 MHz. + More information is available at + . + + Say Y if you want support for the SA-110 processor. + Otherwise, say N. + +# SA1100 +config CPU_SA1100 + bool + depends on ARCH_SA1100 + default y + select CPU_32v4 + select CPU_ABRT_EV4 + select CPU_CACHE_V4WB + select CPU_TLB_V4WB + select CPU_MINICACHE + +# XScale +config CPU_XSCALE + bool + depends on ARCH_IOP3XX || ARCH_ADIFCC || ARCH_PXA + default y + select CPU_32v5 + select CPU_ABRT_EV5T + select CPU_TLB_V4WBI + select CPU_MINICACHE + +# This defines the compiler instruction set which depends on the machine type. +config CPU_32v3 + bool + +config CPU_32v4 + bool + +config CPU_32v5 + bool + +# The abort model +config CPU_ABRT_EV4 + bool + +config CPU_ABRT_EV4T + bool + +config CPU_ABRT_LV4T + bool + +config CPU_ABRT_EV5T + bool + +config CPU_ABRT_EV5TJ + bool + +# The cache model +config CPU_CACHE_V3 + bool + +config CPU_CACHE_V4 + bool + +config CPU_CACHE_V4WT + bool + +config CPU_CACHE_V4WB + bool + +# The copy-page model +config CPU_COPY_V3 + bool + +config CPU_COPY_V4WT + bool + +config CPU_COPY_V4WB + bool + +# This selects the TLB model +config CPU_TLB_V3 + bool + help + ARM Architecture Version 3 TLB. + +config CPU_TLB_V4WT + bool + help + ARM Architecture Version 4 TLB with writethrough cache. + +config CPU_TLB_V4WB + bool + help + ARM Architecture Version 4 TLB with writeback cache. + +config CPU_TLB_V4WBI + bool + help + ARM Architecture Version 4 TLB with writeback cache and invalidate + instruction cache entry. + +config CPU_TLB_V6 + bool + +config CPU_MINICACHE + bool + help + Processor has a minicache. + +comment "Processor Features" + +config ARM_THUMB + bool "Support Thumb user binaries" + depends on CPU_ARM720T || CPU_ARM920T || CPU_ARM922T || CPU_ARM926T || CPU_ARM1020 || CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || CPU_XSCALE + default y + help + Say Y if you want to have kernel support for ARM Thumb instructions, + fault handlers, and system calls. + + The Thumb instruction set is a compressed form of the standard ARM + instruction set resulting in smaller binaries at the expense of + slightly less efficient code. + + If you don't know what this all is, saying Y is a safe choice. + +config CPU_BIG_ENDIAN + bool "Build big-endian kernel" + depends on ARCH_SUPPORTS_BIG_ENDIAN + help + Say Y if you plan on running a kernel in big-endian mode. + Note that your board must be properly built and your board + port must properly enable and big-endian related features + of your chipset/board/processor. + +config CPU_ICACHE_DISABLE + bool "Disable I-Cache" + depends on CPU_ARM920T || CPU_ARM922T || CPU_ARM926T || CPU_ARM1020 + help + Say Y here to disable the processor instruction cache. Unless + you have a reason not to or are unsure, say N. + +config CPU_DCACHE_DISABLE + bool "Disable D-Cache" + depends on CPU_ARM920T || CPU_ARM922T || CPU_ARM926T || CPU_ARM1020 + help + Say Y here to disable the processor data cache. Unless + you have a reason not to or are unsure, say N. + +config CPU_DCACHE_WRITETHROUGH + bool "Force write through D-cache" + depends on (CPU_ARM920T || CPU_ARM922T || CPU_ARM926T || CPU_ARM1020) && !CPU_DISABLE_DCACHE + help + Say Y here to use the data cache in writethough mode. Unless you + specifically require this or are unsure, say N. + +config CPU_CACHE_ROUND_ROBIN + bool "Round robin I and D cache replacement algorithm" + depends on (CPU_ARM926T || CPU_ARM1020) && (!CPU_ICACHE_DISABLE || !CPU_DCACHE_DISABLE) + help + Say Y here to use the predictable round-robin cache replacement + policy. Unless you specifically require this or are unsure, say N. + +config CPU_BPREDICT_DISABLE + bool "Disable branch prediction" + depends on CPU_ARM1020 + help + Say Y here to disable branch prediction. If unsure, say N. diff -Nru a/arch/arm/mm/Makefile b/arch/arm/mm/Makefile --- a/arch/arm/mm/Makefile Mon Sep 22 00:30:25 2003 +++ b/arch/arm/mm/Makefile Mon Sep 22 00:30:25 2003 @@ -2,29 +2,48 @@ # Makefile for the linux arm-specific parts of the memory manager. # -# Object file lists. +obj-y := consistent.o extable.o fault-armv.o \ + fault-common.o init.o ioremap.o mm-armv.o -obj-y := consistent.o extable.o fault-armv.o fault-common.o \ - init.o ioremap.o mm-armv.o -obj-$(CONFIG_MODULES) += proc-syms.o - -obj-$(CONFIG_ALIGNMENT_TRAP) += alignment.o -obj-$(CONFIG_DISCONTIGMEM) += discontig.o - -# ARMv3 -p-$(CONFIG_CPU_ARM610) += proc-arm6_7.o tlb-v3.o cache-v3.o copypage-v3.o -p-$(CONFIG_CPU_ARM710) += proc-arm6_7.o tlb-v3.o cache-v3.o copypage-v3.o - -# ARMv4 -p-$(CONFIG_CPU_ARM720T) += proc-arm720.o tlb-v4.o cache-v4.o copypage-v4wt.o abort-lv4t.o -p-$(CONFIG_CPU_ARM920T) += proc-arm920.o tlb-v4wbi.o cache-v4wt.o copypage-v4wb.o abort-ev4t.o -p-$(CONFIG_CPU_ARM922T) += proc-arm922.o tlb-v4wbi.o cache-v4wt.o copypage-v4wb.o abort-ev4t.o -p-$(CONFIG_CPU_ARM1020) += proc-arm1020.o tlb-v4wbi.o cache-v4wt.o copypage-v4wb.o abort-ev4t.o -p-$(CONFIG_CPU_SA110) += proc-sa110.o tlb-v4wb.o cache-v4wb.o copypage-v4wb.o abort-ev4.o -p-$(CONFIG_CPU_SA1100) += proc-sa1100.o tlb-v4wb.o cache-v4wb.o copypage-v4mc.o abort-ev4.o minicache.o - -# ARMv5 -p-$(CONFIG_CPU_ARM926T) += proc-arm926.o tlb-v4wbi.o copypage-v4wb.o abort-ev5tej.o -p-$(CONFIG_CPU_XSCALE) += proc-xscale.o tlb-v4wbi.o copypage-xscale.o abort-xscale.o minicache.o +obj-$(CONFIG_MODULES) += proc-syms.o -obj-y += $(sort $(p-y)) +obj-$(CONFIG_ALIGNMENT_TRAP) += alignment.o +obj-$(CONFIG_DISCONTIGMEM) += discontig.o + +obj-$(CONFIG_CPU_ABRT_EV4) += abort-ev4.o +obj-$(CONFIG_CPU_ABRT_EV4T) += abort-ev4t.o +obj-$(CONFIG_CPU_ABRT_LV4T) += abort-lv4t.o +obj-$(CONFIG_CPU_ABRT_EV5T) += abort-ev5t.o +obj-$(CONFIG_CPU_ABRT_EV5TJ) += abort-ev5tj.o + +obj-$(CONFIG_CPU_CACHE_V3) += cache-v3.o +obj-$(CONFIG_CPU_CACHE_V4) += cache-v4.o +obj-$(CONFIG_CPU_CACHE_V4WT) += cache-v4wt.o +obj-$(CONFIG_CPU_CACHE_V4WB) += cache-v4wb.o + +obj-$(CONFIG_CPU_COPY_V3) += copypage-v3.o +obj-$(CONFIG_CPU_COPY_V4WT) += copypage-v4wt.o +obj-$(CONFIG_CPU_COPY_V4WB) += copypage-v4wb.o +obj-$(CONFIG_CPU_SA1100) += copypage-v4mc.o +obj-$(CONFIG_CPU_XSCALE) += copypage-xscale.o + +obj-$(CONFIG_CPU_MINICACHE) += minicache.o + +obj-$(CONFIG_CPU_TLB_V3) += tlb-v3.o +obj-$(CONFIG_CPU_TLB_V4WT) += tlb-v4.o +obj-$(CONFIG_CPU_TLB_V4WB) += tlb-v4wb.o +obj-$(CONFIG_CPU_TLB_V4WBI) += tlb-v4wbi.o + +obj-$(CONFIG_CPU_ARM610) += proc-arm6_7.o +obj-$(CONFIG_CPU_ARM710) += proc-arm6_7.o +obj-$(CONFIG_CPU_ARM720T) += proc-arm720.o +obj-$(CONFIG_CPU_ARM920T) += proc-arm920.o +obj-$(CONFIG_CPU_ARM922T) += proc-arm922.o +obj-$(CONFIG_CPU_ARM926T) += proc-arm926.o +obj-$(CONFIG_CPU_ARM1020) += proc-arm1020.o +obj-$(CONFIG_CPU_ARM1020E) += proc-arm1020e.o +obj-$(CONFIG_CPU_ARM1022) += proc-arm1022.o +obj-$(CONFIG_CPU_ARM1026) += proc-arm1026.o +obj-$(CONFIG_CPU_SA110) += proc-sa110.o +obj-$(CONFIG_CPU_SA1100) += proc-sa1100.o +obj-$(CONFIG_CPU_XSCALE) += proc-xscale.o diff -Nru a/arch/arm/mm/abort-ev5t.S b/arch/arm/mm/abort-ev5t.S --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/mm/abort-ev5t.S Mon Sep 22 00:30:25 2003 @@ -0,0 +1,31 @@ +#include +#include +/* + * Function: v5t_early_abort + * + * Params : r2 = address of aborted instruction + * : r3 = saved SPSR + * + * Returns : r0 = address of abort + * : r1 = FSR, bit 11 = write + * : r2-r8 = corrupted + * : r9 = preserved + * : sp = pointer to registers + * + * Purpose : obtain information about current aborted instruction. + * Note: we read user space. This means we might cause a data + * abort here if the I-TLB and D-TLB aren't seeing the same + * picture. Unfortunately, this does happen. We live with it. + */ + .align 5 +ENTRY(v5t_early_abort) + mrc p15, 0, r1, c5, c0, 0 @ get FSR + mrc p15, 0, r0, c6, c0, 0 @ get FAR + tst r3, #PSR_T_BIT + ldrneh r3, [r2] @ read aborted thumb instruction + ldreq r3, [r2] @ read aborted ARM instruction + bic r1, r1, #1 << 11 @ clear bits 11 of FSR + movne r3, r3, lsl #(21 - 12) @ move thumb bit 11 to ARM bit 20 + tst r3, #1 << 20 @ check write + orreq r1, r1, #1 << 11 + mov pc, lr diff -Nru a/arch/arm/mm/abort-ev5tej.S b/arch/arm/mm/abort-ev5tej.S --- a/arch/arm/mm/abort-ev5tej.S Mon Sep 22 00:30:22 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,36 +0,0 @@ -#include -#include -/* - * Function: v5tej_early_abort - * - * Params : r2 = address of aborted instruction - * : r3 = saved SPSR - * - * Returns : r0 = address of abort - * : r1 = FSR, bit 11 = write - * : r2-r8 = corrupted - * : r9 = preserved - * : sp = pointer to registers - * - * Purpose : obtain information about current aborted instruction. - * Note: we read user space. This means we might cause a data - * abort here if the I-TLB and D-TLB aren't seeing the same - * picture. Unfortunately, this does happen. We live with it. - */ - .align 5 -ENTRY(v5tej_early_abort) - mrc p15, 0, r1, c5, c0, 0 @ get FSR - mrc p15, 0, r0, c6, c0, 0 @ get FAR - bic r1, r1, #1 << 11 | 1 << 10 @ clear bits 11 and 10 of FSR - tst r3, #PSR_J_BIT - orrne r1, r1, #1 << 11 @ always assume write - bne 1f - tst r3, #PSR_T_BIT - ldrneh r3, [r2] @ read aborted thumb instruction - ldreq r3, [r2] @ read aborted ARM instruction - movne r3, r3, lsl #(21 - 12) @ move thumb bit 11 to ARM bit 20 - tst r3, #1 << 20 @ L = 1 -> write - orreq r1, r1, #1 << 11 @ yes. -1: mov pc, lr - - diff -Nru a/arch/arm/mm/abort-ev5tj.S b/arch/arm/mm/abort-ev5tj.S --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/mm/abort-ev5tj.S Mon Sep 22 00:30:22 2003 @@ -0,0 +1,36 @@ +#include +#include +/* + * Function: v5tj_early_abort + * + * Params : r2 = address of aborted instruction + * : r3 = saved SPSR + * + * Returns : r0 = address of abort + * : r1 = FSR, bit 11 = write + * : r2-r8 = corrupted + * : r9 = preserved + * : sp = pointer to registers + * + * Purpose : obtain information about current aborted instruction. + * Note: we read user space. This means we might cause a data + * abort here if the I-TLB and D-TLB aren't seeing the same + * picture. Unfortunately, this does happen. We live with it. + */ + .align 5 +ENTRY(v5tj_early_abort) + mrc p15, 0, r1, c5, c0, 0 @ get FSR + mrc p15, 0, r0, c6, c0, 0 @ get FAR + bic r1, r1, #1 << 11 | 1 << 10 @ clear bits 11 and 10 of FSR + tst r3, #PSR_J_BIT @ Java? + orrne r1, r1, #1 << 11 @ always assume write + movne pc, lr + tst r3, #PSR_T_BIT @ Thumb? + ldrneh r3, [r2] @ read aborted thumb instruction + ldreq r3, [r2] @ read aborted ARM instruction + movne r3, r3, lsl #(21 - 12) @ move thumb bit 11 to ARM bit 20 + tst r3, #1 << 20 @ L = 0 -> write + orreq r1, r1, #1 << 11 @ yes. + mov pc, lr + + diff -Nru a/arch/arm/mm/abort-xscale.S b/arch/arm/mm/abort-xscale.S --- a/arch/arm/mm/abort-xscale.S Mon Sep 22 00:30:25 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,34 +0,0 @@ -#include -#include -/* - * Function: xscale_abort - * - * Params : r2 = address of aborted instruction - * : r3 = saved SPSR - * - * Returns : r0 = address of abort - * : r1 = FSR, bit 11 = write - * : r2-r8 = corrupted - * : r9 = preserved - * : sp = pointer to registers - * - * Purpose : obtain information about current aborted instruction. - * Note: we read user space. This means we might cause a data - * abort here if the I-TLB and D-TLB aren't seeing the same - * picture. Unfortunately, this does happen. We live with it. - * - * Note: Xscale is contains non-standard architecture extensions. - * It requires its own early abort handler - */ - .align 5 -ENTRY(xscale_abort) - mrc p15, 0, r1, c5, c0, 0 @ get FSR - mrc p15, 0, r0, c6, c0, 0 @ get FAR - tst r3, #PSR_T_BIT - ldrneh r3, [r2] @ read aborted thumb instruction - ldreq r3, [r2] @ read aborted ARM instruction - bic r1, r1, #1 << 11 @ clear bits 11 of FSR - movne r3, r3, lsl #(21 - 12) @ move thumb bit 11 to ARM bit 20 - tst r3, #1 << 20 @ check write - orreq r1, r1, #1 << 11 - mov pc, lr diff -Nru a/arch/arm/mm/cache-v3.S b/arch/arm/mm/cache-v3.S --- a/arch/arm/mm/cache-v3.S Mon Sep 22 00:30:23 2003 +++ b/arch/arm/mm/cache-v3.S Mon Sep 22 00:30:23 2003 @@ -8,6 +8,7 @@ * published by the Free Software Foundation. */ #include +#include #include #include #include "proc-macros.S" @@ -107,6 +108,9 @@ ENTRY(v3_dma_clean_range) mov pc, lr + __INITDATA + + .type v3_cache_fns, #object ENTRY(v3_cache_fns) .long v3_flush_kern_cache_all .long v3_flush_user_cache_all @@ -116,3 +120,4 @@ .long v3_dma_inv_range .long v3_dma_clean_range .long v3_dma_flush_range + .size v3_cache_fns, . - v3_cache_fns diff -Nru a/arch/arm/mm/cache-v4.S b/arch/arm/mm/cache-v4.S --- a/arch/arm/mm/cache-v4.S Mon Sep 22 00:30:20 2003 +++ b/arch/arm/mm/cache-v4.S Mon Sep 22 00:30:20 2003 @@ -8,6 +8,7 @@ * published by the Free Software Foundation. */ #include +#include #include #include #include "proc-macros.S" @@ -109,6 +110,9 @@ ENTRY(v4_dma_clean_range) mov pc, lr + __INITDATA + + .type v4_cache_fns, #object ENTRY(v4_cache_fns) .long v4_flush_kern_cache_all .long v4_flush_user_cache_all @@ -118,3 +122,4 @@ .long v4_dma_inv_range .long v4_dma_clean_range .long v4_dma_flush_range + .size v4_cache_fns, . - v4_cache_fns diff -Nru a/arch/arm/mm/cache-v4wb.S b/arch/arm/mm/cache-v4wb.S --- a/arch/arm/mm/cache-v4wb.S Mon Sep 22 00:30:22 2003 +++ b/arch/arm/mm/cache-v4wb.S Mon Sep 22 00:30:22 2003 @@ -7,7 +7,9 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include +#include #include #include #include "proc-macros.S" @@ -185,6 +187,9 @@ .globl v4wb_dma_flush_range .set v4wb_dma_flush_range, v4wb_coherent_kern_range + __INITDATA + + .type v4wb_cache_fns, #object ENTRY(v4wb_cache_fns) .long v4wb_flush_kern_cache_all .long v4wb_flush_user_cache_all @@ -194,3 +199,4 @@ .long v4wb_dma_inv_range .long v4wb_dma_clean_range .long v4wb_dma_flush_range + .size v4wb_cache_fns, . - v4wb_cache_fns diff -Nru a/arch/arm/mm/cache-v4wt.S b/arch/arm/mm/cache-v4wt.S --- a/arch/arm/mm/cache-v4wt.S Mon Sep 22 00:30:19 2003 +++ b/arch/arm/mm/cache-v4wt.S Mon Sep 22 00:30:19 2003 @@ -12,6 +12,7 @@ * We assume that the write buffer is not enabled. */ #include +#include #include #include #include "proc-macros.S" @@ -158,6 +159,9 @@ .globl v4wt_dma_flush_range .equ v4wt_dma_flush_range, v4wt_dma_inv_range + __INITDATA + + .type v4wt_cache_fns, #object ENTRY(v4wt_cache_fns) .long v4wt_flush_kern_cache_all .long v4wt_flush_user_cache_all @@ -167,4 +171,4 @@ .long v4wt_dma_inv_range .long v4wt_dma_clean_range .long v4wt_dma_flush_range - + .size v4wt_cache_fns, . - v4wt_cache_fns diff -Nru a/arch/arm/mm/consistent.c b/arch/arm/mm/consistent.c --- a/arch/arm/mm/consistent.c Mon Sep 22 00:30:23 2003 +++ b/arch/arm/mm/consistent.c Mon Sep 22 00:30:23 2003 @@ -9,7 +9,6 @@ * * DMA uncached mapping support. */ -#include #include #include #include diff -Nru a/arch/arm/mm/copypage-v3.S b/arch/arm/mm/copypage-v3.S --- a/arch/arm/mm/copypage-v3.S Mon Sep 22 00:30:22 2003 +++ b/arch/arm/mm/copypage-v3.S Mon Sep 22 00:30:22 2003 @@ -58,8 +58,10 @@ bne 1b @ 1 ldr pc, [sp], #4 - __INIT + __INITDATA + .type v3_user_fns, #object ENTRY(v3_user_fns) .long v3_clear_user_page .long v3_copy_user_page + .size v3_user_fns, . - v3_user_fns diff -Nru a/arch/arm/mm/copypage-v4mc.S b/arch/arm/mm/copypage-v4mc.S --- a/arch/arm/mm/copypage-v4mc.S Mon Sep 22 00:30:21 2003 +++ b/arch/arm/mm/copypage-v4mc.S Mon Sep 22 00:30:21 2003 @@ -71,9 +71,10 @@ bne 1b @ 1 ldr pc, [sp], #4 - __INIT + __INITDATA + .type v4_mc_user_fns, #object ENTRY(v4_mc_user_fns) .long v4_mc_clear_user_page .long v4_mc_copy_user_page - + .size v4_mc_user_fns, . - v4_mc_user_fns diff -Nru a/arch/arm/mm/copypage-v4wb.S b/arch/arm/mm/copypage-v4wb.S --- a/arch/arm/mm/copypage-v4wb.S Mon Sep 22 00:30:23 2003 +++ b/arch/arm/mm/copypage-v4wb.S Mon Sep 22 00:30:23 2003 @@ -70,9 +70,10 @@ mcr p15, 0, r1, c7, c10, 4 @ 1 drain WB ldr pc, [sp], #4 - __INIT + __INITDATA + .type v4wb_user_fns, #object ENTRY(v4wb_user_fns) .long v4wb_clear_user_page .long v4wb_copy_user_page - + .size v4wb_user_fns, . - v4wb_user_fns diff -Nru a/arch/arm/mm/copypage-v4wt.S b/arch/arm/mm/copypage-v4wt.S --- a/arch/arm/mm/copypage-v4wt.S Mon Sep 22 00:30:19 2003 +++ b/arch/arm/mm/copypage-v4wt.S Mon Sep 22 00:30:19 2003 @@ -64,9 +64,10 @@ mcr p15, 0, r2, c7, c7, 0 @ flush ID cache ldr pc, [sp], #4 - __INIT + __INITDATA + .type v4wt_user_fns, #object ENTRY(v4wt_user_fns) .long v4wt_clear_user_page .long v4wt_copy_user_page - + .size v4wt_user_fns, . - v4wt_user_fns diff -Nru a/arch/arm/mm/copypage-xscale.S b/arch/arm/mm/copypage-xscale.S --- a/arch/arm/mm/copypage-xscale.S Mon Sep 22 00:30:24 2003 +++ b/arch/arm/mm/copypage-xscale.S Mon Sep 22 00:30:24 2003 @@ -104,8 +104,10 @@ bne 1b mov pc, lr - __INIT + __INITDATA + .type xscale_mc_user_fns, #object ENTRY(xscale_mc_user_fns) .long xscale_mc_clear_user_page .long xscale_mc_copy_user_page + .size xscale_mc_user_fns, . - xscale_mc_user_fns diff -Nru a/arch/arm/mm/fault-armv.c b/arch/arm/mm/fault-armv.c --- a/arch/arm/mm/fault-armv.c Mon Sep 22 00:30:19 2003 +++ b/arch/arm/mm/fault-armv.c Mon Sep 22 00:30:19 2003 @@ -14,9 +14,11 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -127,6 +129,8 @@ do_translation_fault(addr, 0, regs); } +static unsigned long shared_pte_mask = L_PTE_CACHEABLE; + /* * We take the easy way out of this problem - we make the * PTE uncacheable. However, we leave the write buffer on. @@ -157,9 +161,9 @@ * If this page isn't present, or is already setup to * fault (ie, is old), we can safely ignore any issues. */ - if (pte_present(entry) && pte_val(entry) & L_PTE_CACHEABLE) { + if (pte_present(entry) && pte_val(entry) & shared_pte_mask) { flush_cache_page(vma, address); - pte_val(entry) &= ~L_PTE_CACHEABLE; + pte_val(entry) &= ~shared_pte_mask; set_pte(pte, entry); flush_tlb_page(vma, address); ret = 1; @@ -295,5 +299,67 @@ __cpuc_flush_dcache_page(page_address(page)); make_coherent(vma, addr, page, dirty); + } +} + +/* + * Check whether the write buffer has physical address aliasing + * issues. If it has, we need to avoid them for the case where + * we have several shared mappings of the same object in user + * space. + */ +static int __init check_writebuffer(unsigned long *p1, unsigned long *p2) +{ + register unsigned long zero = 0, one = 1, val; + + local_irq_disable(); + mb(); + *p1 = one; + mb(); + *p2 = zero; + mb(); + val = *p1; + mb(); + local_irq_enable(); + return val != zero; +} + +void __init check_writebuffer_bugs(void) +{ + struct page *page; + const char *reason; + unsigned long v = 1; + + printk(KERN_INFO "CPU: Testing write buffer coherency: "); + + page = alloc_page(GFP_KERNEL); + if (page) { + unsigned long *p1, *p2; + pgprot_t prot = __pgprot(L_PTE_PRESENT|L_PTE_YOUNG| + L_PTE_DIRTY|L_PTE_WRITE| + L_PTE_BUFFERABLE); + + p1 = vmap(&page, 1, VM_IOREMAP, prot); + p2 = vmap(&page, 1, VM_IOREMAP, prot); + + if (p1 && p2) { + v = check_writebuffer(p1, p2); + reason = "enabling work-around"; + } else { + reason = "unable to map memory\n"; + } + + vunmap(p1); + vunmap(p2); + put_page(page); + } else { + reason = "unable to grab page\n"; + } + + if (v) { + printk("failed, %s\n", reason); + shared_pte_mask |= L_PTE_BUFFERABLE; + } else { + printk("ok\n"); } } diff -Nru a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c --- a/arch/arm/mm/mm-armv.c Mon Sep 22 00:30:23 2003 +++ b/arch/arm/mm/mm-armv.c Mon Sep 22 00:30:23 2003 @@ -9,6 +9,7 @@ * * Page table sludge for ARM v3 and v4 processor architectures. */ +#include #include #include #include @@ -392,12 +393,19 @@ long off; if (md->virtual != vectors_base() && md->virtual < PAGE_OFFSET) { - printk(KERN_WARNING "MM: not creating mapping for " + printk(KERN_WARNING "BUG: not creating mapping for " "0x%08lx at 0x%08lx in user region\n", md->physical, md->virtual); return; } + if (md->type == MT_DEVICE && + md->virtual >= PAGE_OFFSET && md->virtual < VMALLOC_END) { + printk(KERN_WARNING "BUG: mapping for 0x%08lx at 0x%08lx " + "overlaps vmalloc space\n", + md->physical, md->virtual); + } + domain = mem_types[md->type].domain; prot_pte = __pgprot(mem_types[md->type].prot_pte); prot_l1 = mem_types[md->type].prot_l1 | PMD_DOMAIN(domain); @@ -409,7 +417,7 @@ if (mem_types[md->type].prot_l1 == 0 && (virt & 0xfffff || (virt + off) & 0xfffff || (virt + length) & 0xfffff)) { - printk(KERN_WARNING "MM: map for 0x%08lx at 0x%08lx can not " + printk(KERN_WARNING "BUG: map for 0x%08lx at 0x%08lx can not " "be mapped using pages, ignoring.\n", md->physical, md->virtual); return; diff -Nru a/arch/arm/mm/proc-arm1020.S b/arch/arm/mm/proc-arm1020.S --- a/arch/arm/mm/proc-arm1020.S Mon Sep 22 00:30:18 2003 +++ b/arch/arm/mm/proc-arm1020.S Mon Sep 22 00:30:18 2003 @@ -1,5 +1,5 @@ /* - * linux/arch/arm/mm/arm1020.S: MMU functions for ARM1020 + * linux/arch/arm/mm/proc-arm1020.S: MMU functions for ARM1020 * * Copyright (C) 2000 ARM Limited * Copyright (C) 2000 Deep Blue Solutions Ltd. @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -379,19 +380,19 @@ ENTRY(cpu_arm1020_set_pte) str r1, [r0], #-2048 @ linux version - eor r1, r1, #LPTE_PRESENT | LPTE_YOUNG | LPTE_WRITE | LPTE_DIRTY + eor r1, r1, #L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_WRITE | L_PTE_DIRTY - bic r2, r1, #0xff0 - bic r2, r2, #3 - orr r2, r2, #HPTE_TYPE_SMALL + bic r2, r1, #PTE_SMALL_AP_MASK + bic r2, r2, #PTE_TYPE_MASK + orr r2, r2, #PTE_TYPE_SMALL - tst r1, #LPTE_USER @ User? - orrne r2, r2, #HPTE_AP_READ + tst r1, #L_PTE_USER @ User? + orrne r2, r2, #PTE_SMALL_AP_URO_SRW - tst r1, #LPTE_WRITE | LPTE_DIRTY @ Write and Dirty? - orreq r2, r2, #HPTE_AP_WRITE + tst r1, #L_PTE_WRITE | L_PTE_DIRTY @ Write and Dirty? + orreq r2, r2, #PTE_SMALL_AP_UNO_SRW - tst r1, #LPTE_PRESENT | LPTE_YOUNG @ Present and Young? + tst r1, #L_PTE_PRESENT | L_PTE_YOUNG @ Present and Young? movne r2, #0 #ifdef CONFIG_CPU_DCACHE_WRITETHROUGH @@ -408,31 +409,9 @@ mcr p15, 0, r0, c7, c10, 4 @ drain WB mov pc, lr - -ENTRY(cpu_arm1020_name) - .ascii "Arm1020" -#ifndef CONFIG_CPU_ICACHE_DISABLE - .ascii "i" -#endif -#ifndef CONFIG_CPU_DCACHE_DISABLE - .ascii "d" -#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH - .ascii "(wt)" -#else - .ascii "(wb)" -#endif -#endif -#ifndef CONFIG_CPU_BPREDICT_DISABLE - .ascii "B" -#endif -#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN - .ascii "RR" -#endif - .ascii "\0" - .align - __INIT + .type __arm1020_setup, #function __arm1020_setup: mov r0, #0 mcr p15, 0, r0, c7, c7 @ invalidate I,D caches on v4 @@ -445,10 +424,8 @@ /* * Clear out 'unwanted' bits (then put them in if we need them) */ - bic r0, r0, #0x0e00 @ ....??r......... - bic r0, r0, #0x0002 @ ..............a. - bic r0, r0, #0x000c @ W,D - bic r0, r0, #0x1000 @ I + bic r0, r0, #0x1e00 @ i...??r......... + bic r0, r0, #0x000e @ ............wca. /* * Turn on what we want */ @@ -468,8 +445,9 @@ orr r0, r0, #0x1000 @ I Cache on #endif mov pc, lr + .size __arm1020_setup, . - __arm1020_setup - .text + __INITDATA /* * Purpose : Function pointers used to access above functions - all calls @@ -485,26 +463,51 @@ .word cpu_arm1020_dcache_clean_area .word cpu_arm1020_switch_mm .word cpu_arm1020_set_pte - .size arm1020_processor_functions, . - arm1020_processor_functions + .section ".rodata" + .type cpu_arch_name, #object cpu_arch_name: - .asciz "armv4t" + .asciz "armv5t" .size cpu_arch_name, . - cpu_arch_name .type cpu_elf_name, #object cpu_elf_name: - .asciz "v4" + .asciz "v5" .size cpu_elf_name, . - cpu_elf_name + + .type cpu_arm1020_name, #object +cpu_arm1020_name: + .ascii "ARM1020" +#ifndef CONFIG_CPU_ICACHE_DISABLE + .ascii "i" +#endif +#ifndef CONFIG_CPU_DCACHE_DISABLE + .ascii "d" +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + .ascii "(wt)" +#else + .ascii "(wb)" +#endif +#endif +#ifndef CONFIG_CPU_BPREDICT_DISABLE + .ascii "B" +#endif +#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN + .ascii "RR" +#endif + .ascii "\0" + .size cpu_arm1020_name, . - cpu_arm1020_name + .align .section ".proc.info", #alloc, #execinstr .type __arm1020_proc_info,#object __arm1020_proc_info: - .long 0x4100a200 - .long 0xff00fff0 + .long 0x4104a200 @ ARM 1020T (Architecture v5T) + .long 0xff0ffff0 .long 0x00000c02 @ mmuflags b __arm1020_setup .long cpu_arch_name diff -Nru a/arch/arm/mm/proc-arm1020e.S b/arch/arm/mm/proc-arm1020e.S --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/mm/proc-arm1020e.S Mon Sep 22 00:30:25 2003 @@ -0,0 +1,504 @@ +/* + * linux/arch/arm/mm/proc-arm1020e.S: MMU functions for ARM1020 + * + * Copyright (C) 2000 ARM Limited + * Copyright (C) 2000 Deep Blue Solutions Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * + * These are the low level assembler for performing cache and TLB + * functions on the arm1020e. + * + * CONFIG_CPU_ARM1020_CPU_IDLE -> nohlt + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This is the maximum size of an area which will be invalidated + * using the single invalidate entry instructions. Anything larger + * than this, and we go for the whole cache. + * + * This value should be chosen such that we choose the cheapest + * alternative. + */ +#define MAX_AREA_SIZE 32768 + +/* + * The size of one data cache line. + */ +#define CACHE_DLINESIZE 32 + +/* + * The number of data cache segments. + */ +#define CACHE_DSEGMENTS 16 + +/* + * The number of lines in a cache segment. + */ +#define CACHE_DENTRIES 64 + +/* + * This is the size at which it becomes more efficient to + * clean the whole cache, rather than using the individual + * cache line maintainence instructions. + */ +#define CACHE_DLIMIT 32768 + + .text +/* + * cpu_arm1020e_proc_init() + */ +ENTRY(cpu_arm1020e_proc_init) + mov pc, lr + +/* + * cpu_arm1020e_proc_fin() + */ +ENTRY(cpu_arm1020e_proc_fin) + stmfd sp!, {lr} + mov ip, #PSR_F_BIT | PSR_I_BIT | SVC_MODE + msr cpsr_c, ip + bl arm1020e_flush_kern_cache_all + mrc p15, 0, r0, c1, c0, 0 @ ctrl register + bic r0, r0, #0x1000 @ ...i............ + bic r0, r0, #0x000e @ ............wca. + mcr p15, 0, r0, c1, c0, 0 @ disable caches + ldmfd sp!, {pc} + +/* + * cpu_arm1020e_reset(loc) + * + * Perform a soft reset of the system. Put the CPU into the + * same state as it would be if it had been reset, and branch + * to what would be the reset vector. + * + * loc: location to jump to for soft reset + */ + .align 5 +ENTRY(cpu_arm1020e_reset) + mov ip, #0 + mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mcr p15, 0, ip, c8, c7, 0 @ invalidate I & D TLBs + mrc p15, 0, ip, c1, c0, 0 @ ctrl register + bic ip, ip, #0x000f @ ............wcam + bic ip, ip, #0x1100 @ ...i...s........ + mcr p15, 0, ip, c1, c0, 0 @ ctrl register + mov pc, r0 + +/* + * cpu_arm1020e_do_idle() + */ + .align 5 +ENTRY(cpu_arm1020e_do_idle) + mcr p15, 0, r0, c7, c0, 4 @ Wait for interrupt + mov pc, lr + +/* ================================= CACHE ================================ */ + + .align 5 +/* + * flush_user_cache_all() + * + * Invalidate all cache entries in a particular address + * space. + */ +ENTRY(arm1020e_flush_user_cache_all) + /* FALLTHROUGH */ +/* + * flush_kern_cache_all() + * + * Clean and invalidate the entire cache. + */ +ENTRY(arm1020e_flush_kern_cache_all) + mov r2, #VM_EXEC + mov ip, #0 +__flush_whole_cache: +#ifndef CONFIG_CPU_DCACHE_DISABLE + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov r1, #(CACHE_DSEGMENTS - 1) << 5 @ 16 segments +1: orr r3, r1, #(CACHE_DENTRIES - 1) << 26 @ 64 entries +2: mcr p15, 0, r3, c7, c14, 2 @ clean+invalidate D index + subs r3, r3, #1 << 26 + bcs 2b @ entries 63 to 0 + subs r1, r1, #1 << 5 + bcs 1b @ segments 15 to 0 +#endif + tst r2, #VM_EXEC +#ifndef CONFIG_CPU_ICACHE_DISABLE + mcrne p15, 0, ip, c7, c5, 0 @ invalidate I cache +#endif + mcrne p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * flush_user_cache_range(start, end, flags) + * + * Invalidate a range of cache entries in the specified + * address space. + * + * - start - start address (inclusive) + * - end - end address (exclusive) + * - flags - vm_flags for this space + */ +ENTRY(arm1020e_flush_user_cache_range) + mov ip, #0 + sub r3, r1, r0 @ calculate total size + cmp r3, #CACHE_DLIMIT + bhs __flush_whole_cache + +#ifndef CONFIG_CPU_DCACHE_DISABLE +1: mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + tst r2, #VM_EXEC +#ifndef CONFIG_CPU_ICACHE_DISABLE + mcrne p15, 0, ip, c7, c5, 0 @ invalidate I cache +#endif + mcrne p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * coherent_kern_range(start, end) + * + * Ensure coherency between the Icache and the Dcache in the + * region described by start. If you have non-snooping + * Harvard caches, you need to implement this function. + * + * - start - virtual start address + * - end - virtual end address + */ +ENTRY(arm1020e_coherent_kern_range) + mov ip, #0 + bic r0, r0, #CACHE_DLINESIZE - 1 +1: +#ifndef CONFIG_CPU_DCACHE_DISABLE + mcr p15, 0, r0, c7, c10, 1 @ clean D entry +#endif +#ifndef CONFIG_CPU_ICACHE_DISABLE + mcr p15, 0, r0, c7, c5, 1 @ invalidate I entry +#endif + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * flush_kern_dcache_page(void *page) + * + * Ensure no D cache aliasing occurs, either with itself or + * the I cache + * + * - page - page aligned address + */ +ENTRY(arm1020e_flush_kern_dcache_page) + mov ip, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + add r1, r0, #PAGE_SZ +1: mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * dma_inv_range(start, end) + * + * Invalidate (discard) the specified virtual address range. + * May not write back any entries. If 'start' or 'end' + * are not cache line aligned, those lines must be written + * back. + * + * - start - virtual start address + * - end - virtual end address + * + * (same as v4wb) + */ +ENTRY(arm1020e_dma_inv_range) + mov ip, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + tst r0, #CACHE_DLINESIZE - 1 + bic r0, r0, #CACHE_DLINESIZE - 1 + mcrne p15, 0, r0, c7, c10, 1 @ clean D entry + tst r1, #CACHE_DLINESIZE - 1 + mcrne p15, 0, r1, c7, c10, 1 @ clean D entry +1: mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * dma_clean_range(start, end) + * + * Clean the specified virtual address range. + * + * - start - virtual start address + * - end - virtual end address + * + * (same as v4wb) + */ +ENTRY(arm1020e_dma_clean_range) + mov ip, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + bic r0, r0, #CACHE_DLINESIZE - 1 +1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * dma_flush_range(start, end) + * + * Clean and invalidate the specified virtual address range. + * + * - start - virtual start address + * - end - virtual end address + */ +ENTRY(arm1020e_dma_flush_range) + mov ip, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + bic r0, r0, #CACHE_DLINESIZE - 1 +1: mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +ENTRY(arm1020e_cache_fns) + .long arm1020e_flush_kern_cache_all + .long arm1020e_flush_user_cache_all + .long arm1020e_flush_user_cache_range + .long arm1020e_coherent_kern_range + .long arm1020e_flush_kern_dcache_page + .long arm1020e_dma_inv_range + .long arm1020e_dma_clean_range + .long arm1020e_dma_flush_range + + .align 5 +ENTRY(cpu_arm1020e_dcache_clean_area) +#ifndef CONFIG_CPU_DCACHE_DISABLE + mov ip, #0 +1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry + add r0, r0, #CACHE_DLINESIZE + subs r1, r1, #CACHE_DLINESIZE + bhi 1b +#endif + mov pc, lr + +/* =============================== PageTable ============================== */ + +/* + * cpu_arm1020e_switch_mm(pgd) + * + * Set the translation base pointer to be as described by pgd. + * + * pgd: new page tables + */ + .align 5 +ENTRY(cpu_arm1020e_switch_mm) +#ifndef CONFIG_CPU_DCACHE_DISABLE + mcr p15, 0, r3, c7, c10, 4 + mov r1, #0xF @ 16 segments +1: mov r3, #0x3F @ 64 entries +2: mov ip, r3, LSL #26 @ shift up entry + orr ip, ip, r1, LSL #5 @ shift in/up index + mcr p15, 0, ip, c7, c14, 2 @ Clean & Inval DCache entry + mov ip, #0 + subs r3, r3, #1 + cmp r3, #0 + bge 2b @ entries 3F to 0 + subs r1, r1, #1 + cmp r1, #0 + bge 1b @ segments 15 to 0 + +#endif + mov r1, #0 +#ifndef CONFIG_CPU_ICACHE_DISABLE + mcr p15, 0, r1, c7, c5, 0 @ invalidate I cache +#endif + mcr p15, 0, r1, c7, c10, 4 @ drain WB + mcr p15, 0, r0, c2, c0, 0 @ load page table pointer + mcr p15, 0, r1, c8, c7, 0 @ invalidate I & D TLBs + mov pc, lr + +/* + * cpu_arm1020e_set_pte(ptep, pte) + * + * Set a PTE and flush it out + */ + .align 5 +ENTRY(cpu_arm1020e_set_pte) + str r1, [r0], #-2048 @ linux version + + eor r1, r1, #L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_WRITE | L_PTE_DIRTY + + bic r2, r1, #PTE_SMALL_AP_MASK + bic r2, r2, #PTE_TYPE_MASK + orr r2, r2, #PTE_TYPE_SMALL + + tst r1, #L_PTE_USER @ User? + orrne r2, r2, #PTE_SMALL_AP_URO_SRW + + tst r1, #L_PTE_WRITE | L_PTE_DIRTY @ Write and Dirty? + orreq r2, r2, #PTE_SMALL_AP_UNO_SRW + + tst r1, #L_PTE_PRESENT | L_PTE_YOUNG @ Present and Young? + movne r2, #0 + +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + eor r3, r1, #0x0a @ C & small page? + tst r3, #0x0b + biceq r2, r2, #4 +#endif + str r2, [r0] @ hardware version + mov r0, r0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + mcr p15, 0, r0, c7, c10, 1 @ clean D entry +#endif + mov pc, lr + + __INIT + + .type __arm1020e_setup, #function +__arm1020e_setup: + mov r0, #0 + mcr p15, 0, r0, c7, c7 @ invalidate I,D caches on v4 + mcr p15, 0, r0, c7, c10, 4 @ drain write buffer on v4 + mcr p15, 0, r0, c8, c7 @ invalidate I,D TLBs on v4 + mcr p15, 0, r4, c2, c0 @ load page table pointer + mov r0, #0x1f @ Domains 0, 1 = client + mcr p15, 0, r0, c3, c0 @ load domain access register + mrc p15, 0, r0, c1, c0 @ get control register v4 +/* + * Clear out 'unwanted' bits (then put them in if we need them) + */ + bic r0, r0, #0x1e00 @ i...??r......... + bic r0, r0, #0x000e @ ............wca. +/* + * Turn on what we want + */ + orr r0, r0, #0x0031 @ ..........DP...M + orr r0, r0, #0x0100 @ .......S........ + +#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN + orr r0, r0, #0x4000 @ .R.............. +#endif +#ifndef CONFIG_CPU_BPREDICT_DISABLE + orr r0, r0, #0x0800 @ ....Z........... +#endif +#ifndef CONFIG_CPU_DCACHE_DISABLE + orr r0, r0, #0x0004 @ Enable D cache +#endif +#ifndef CONFIG_CPU_ICACHE_DISABLE + orr r0, r0, #0x1000 @ I Cache on +#endif + mov pc, lr + .size __arm1020e_setup, . - __arm1020e_setup + + __INITDATA + +/* + * Purpose : Function pointers used to access above functions - all calls + * come through these + */ + .type arm1020e_processor_functions, #object +arm1020e_processor_functions: + .word v4t_early_abort + .word cpu_arm1020e_proc_init + .word cpu_arm1020e_proc_fin + .word cpu_arm1020e_reset + .word cpu_arm1020e_do_idle + .word cpu_arm1020e_dcache_clean_area + .word cpu_arm1020e_switch_mm + .word cpu_arm1020e_set_pte + .size arm1020e_processor_functions, . - arm1020e_processor_functions + + .section ".rodata" + + .type cpu_arch_name, #object +cpu_arch_name: + .asciz "armv5te" + .size cpu_arch_name, . - cpu_arch_name + + .type cpu_elf_name, #object +cpu_elf_name: + .asciz "v5" + .size cpu_elf_name, . - cpu_elf_name + + .type cpu_arm1020e_name, #object +cpu_arm1020e_name: + .ascii "ARM1020E" +#ifndef CONFIG_CPU_ICACHE_DISABLE + .ascii "i" +#endif +#ifndef CONFIG_CPU_DCACHE_DISABLE + .ascii "d" +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + .ascii "(wt)" +#else + .ascii "(wb)" +#endif +#endif +#ifndef CONFIG_CPU_BPREDICT_DISABLE + .ascii "B" +#endif +#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN + .ascii "RR" +#endif + .ascii "\0" + .size cpu_arm1020e_name, . - cpu_arm1020e_name + + .align + + .section ".proc.info", #alloc, #execinstr + + .type __arm1020e_proc_info,#object +__arm1020e_proc_info: + .long 0x4105a200 @ ARM 1020TE (Architecture v5TE) + .long 0xff0ffff0 + .long 0x00000c12 @ mmuflags + b __arm1020e_setup + .long cpu_arch_name + .long cpu_elf_name + .long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB + .long cpu_arm1020e_name + .long arm1020e_processor_functions + .long v4wbi_tlb_fns + .long v4wb_user_fns + .long arm1020e_cache_fns + .size __arm1020e_proc_info, . - __arm1020e_proc_info diff -Nru a/arch/arm/mm/proc-arm1022.S b/arch/arm/mm/proc-arm1022.S --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/mm/proc-arm1022.S Mon Sep 22 00:30:25 2003 @@ -0,0 +1,484 @@ +/* + * linux/arch/arm/mm/proc-arm1022.S: MMU functions for ARM1022E + * + * Copyright (C) 2000 ARM Limited + * Copyright (C) 2000 Deep Blue Solutions Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * + * These are the low level assembler for performing cache and TLB + * functions on the ARM1022E. + */ +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This is the maximum size of an area which will be invalidated + * using the single invalidate entry instructions. Anything larger + * than this, and we go for the whole cache. + * + * This value should be chosen such that we choose the cheapest + * alternative. + */ +#define MAX_AREA_SIZE 32768 + +/* + * The size of one data cache line. + */ +#define CACHE_DLINESIZE 32 + +/* + * The number of data cache segments. + */ +#define CACHE_DSEGMENTS 16 + +/* + * The number of lines in a cache segment. + */ +#define CACHE_DENTRIES 64 + +/* + * This is the size at which it becomes more efficient to + * clean the whole cache, rather than using the individual + * cache line maintainence instructions. + */ +#define CACHE_DLIMIT 32768 + + .text +/* + * cpu_arm1022_proc_init() + */ +ENTRY(cpu_arm1022_proc_init) + mov pc, lr + +/* + * cpu_arm1022_proc_fin() + */ +ENTRY(cpu_arm1022_proc_fin) + stmfd sp!, {lr} + mov ip, #PSR_F_BIT | PSR_I_BIT | SVC_MODE + msr cpsr_c, ip + bl arm1022_flush_kern_cache_all + mrc p15, 0, r0, c1, c0, 0 @ ctrl register + bic r0, r0, #0x1000 @ ...i............ + bic r0, r0, #0x000e @ ............wca. + mcr p15, 0, r0, c1, c0, 0 @ disable caches + ldmfd sp!, {pc} + +/* + * cpu_arm1022_reset(loc) + * + * Perform a soft reset of the system. Put the CPU into the + * same state as it would be if it had been reset, and branch + * to what would be the reset vector. + * + * loc: location to jump to for soft reset + */ + .align 5 +ENTRY(cpu_arm1022_reset) + mov ip, #0 + mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mcr p15, 0, ip, c8, c7, 0 @ invalidate I & D TLBs + mrc p15, 0, ip, c1, c0, 0 @ ctrl register + bic ip, ip, #0x000f @ ............wcam + bic ip, ip, #0x1100 @ ...i...s........ + mcr p15, 0, ip, c1, c0, 0 @ ctrl register + mov pc, r0 + +/* + * cpu_arm1022_do_idle() + */ + .align 5 +ENTRY(cpu_arm1022_do_idle) + mcr p15, 0, r0, c7, c0, 4 @ Wait for interrupt + mov pc, lr + +/* ================================= CACHE ================================ */ + + .align 5 +/* + * flush_user_cache_all() + * + * Invalidate all cache entries in a particular address + * space. + */ +ENTRY(arm1022_flush_user_cache_all) + /* FALLTHROUGH */ +/* + * flush_kern_cache_all() + * + * Clean and invalidate the entire cache. + */ +ENTRY(arm1022_flush_kern_cache_all) + mov r2, #VM_EXEC + mov ip, #0 +__flush_whole_cache: +#ifndef CONFIG_CPU_DCACHE_DISABLE + mov r1, #(CACHE_DSEGMENTS - 1) << 5 @ 16 segments +1: orr r3, r1, #(CACHE_DENTRIES - 1) << 26 @ 64 entries +2: mcr p15, 0, r3, c7, c14, 2 @ clean+invalidate D index + subs r3, r3, #1 << 26 + bcs 2b @ entries 63 to 0 + subs r1, r1, #1 << 5 + bcs 1b @ segments 15 to 0 +#endif + tst r2, #VM_EXEC +#ifndef CONFIG_CPU_ICACHE_DISABLE + mcrne p15, 0, ip, c7, c5, 0 @ invalidate I cache +#endif + mcrne p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * flush_user_cache_range(start, end, flags) + * + * Invalidate a range of cache entries in the specified + * address space. + * + * - start - start address (inclusive) + * - end - end address (exclusive) + * - flags - vm_flags for this space + */ +ENTRY(arm1022_flush_user_cache_range) + mov ip, #0 + sub r3, r1, r0 @ calculate total size + cmp r3, #CACHE_DLIMIT + bhs __flush_whole_cache + +#ifndef CONFIG_CPU_DCACHE_DISABLE +1: mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + tst r2, #VM_EXEC +#ifndef CONFIG_CPU_ICACHE_DISABLE + mcrne p15, 0, ip, c7, c5, 0 @ invalidate I cache +#endif + mcrne p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * coherent_kern_range(start, end) + * + * Ensure coherency between the Icache and the Dcache in the + * region described by start. If you have non-snooping + * Harvard caches, you need to implement this function. + * + * - start - virtual start address + * - end - virtual end address + */ +ENTRY(arm1022_coherent_kern_range) + mov ip, #0 + bic r0, r0, #CACHE_DLINESIZE - 1 +1: +#ifndef CONFIG_CPU_DCACHE_DISABLE + mcr p15, 0, r0, c7, c10, 1 @ clean D entry +#endif +#ifndef CONFIG_CPU_ICACHE_DISABLE + mcr p15, 0, r0, c7, c5, 1 @ invalidate I entry +#endif + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * flush_kern_dcache_page(void *page) + * + * Ensure no D cache aliasing occurs, either with itself or + * the I cache + * + * - page - page aligned address + */ +ENTRY(arm1022_flush_kern_dcache_page) + mov ip, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + add r1, r0, #PAGE_SZ +1: mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * dma_inv_range(start, end) + * + * Invalidate (discard) the specified virtual address range. + * May not write back any entries. If 'start' or 'end' + * are not cache line aligned, those lines must be written + * back. + * + * - start - virtual start address + * - end - virtual end address + * + * (same as v4wb) + */ +ENTRY(arm1022_dma_inv_range) + mov ip, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + tst r0, #CACHE_DLINESIZE - 1 + bic r0, r0, #CACHE_DLINESIZE - 1 + mcrne p15, 0, r0, c7, c10, 1 @ clean D entry + tst r1, #CACHE_DLINESIZE - 1 + mcrne p15, 0, r1, c7, c10, 1 @ clean D entry +1: mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * dma_clean_range(start, end) + * + * Clean the specified virtual address range. + * + * - start - virtual start address + * - end - virtual end address + * + * (same as v4wb) + */ +ENTRY(arm1022_dma_clean_range) + mov ip, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + bic r0, r0, #CACHE_DLINESIZE - 1 +1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * dma_flush_range(start, end) + * + * Clean and invalidate the specified virtual address range. + * + * - start - virtual start address + * - end - virtual end address + */ +ENTRY(arm1022_dma_flush_range) + mov ip, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + bic r0, r0, #CACHE_DLINESIZE - 1 +1: mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +ENTRY(arm1022_cache_fns) + .long arm1022_flush_kern_cache_all + .long arm1022_flush_user_cache_all + .long arm1022_flush_user_cache_range + .long arm1022_coherent_kern_range + .long arm1022_flush_kern_dcache_page + .long arm1022_dma_inv_range + .long arm1022_dma_clean_range + .long arm1022_dma_flush_range + + .align 5 +ENTRY(cpu_arm1022_dcache_clean_area) +#ifndef CONFIG_CPU_DCACHE_DISABLE + mov ip, #0 +1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry + add r0, r0, #CACHE_DLINESIZE + subs r1, r1, #CACHE_DLINESIZE + bhi 1b +#endif + mov pc, lr + +/* =============================== PageTable ============================== */ + +/* + * cpu_arm1022_switch_mm(pgd) + * + * Set the translation base pointer to be as described by pgd. + * + * pgd: new page tables + */ + .align 5 +ENTRY(cpu_arm1022_switch_mm) +#ifndef CONFIG_CPU_DCACHE_DISABLE + mov r1, #(CACHE_DSEGMENTS - 1) << 5 @ 16 segments +1: orr r3, r1, #(CACHE_DENTRIES - 1) << 26 @ 64 entries +2: mcr p15, 0, r3, c7, c14, 2 @ clean+invalidate D index + subs r3, r3, #1 << 26 + bcs 2b @ entries 63 to 0 + subs r1, r1, #1 << 5 + bcs 1b @ segments 15 to 0 +#endif + mov r1, #0 +#ifndef CONFIG_CPU_ICACHE_DISABLE + mcr p15, 0, r1, c7, c5, 0 @ invalidate I cache +#endif + mcr p15, 0, r1, c7, c10, 4 @ drain WB + mcr p15, 0, r0, c2, c0, 0 @ load page table pointer + mcr p15, 0, r1, c8, c7, 0 @ invalidate I & D TLBs + mov pc, lr + +/* + * cpu_arm1022_set_pte(ptep, pte) + * + * Set a PTE and flush it out + */ + .align 5 +ENTRY(cpu_arm1022_set_pte) + str r1, [r0], #-2048 @ linux version + + eor r1, r1, #L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_WRITE | L_PTE_DIRTY + + bic r2, r1, #PTE_SMALL_AP_MASK + bic r2, r2, #PTE_TYPE_MASK + orr r2, r2, #PTE_TYPE_SMALL + + tst r1, #L_PTE_USER @ User? + orrne r2, r2, #PTE_SMALL_AP_URO_SRW + + tst r1, #L_PTE_WRITE | L_PTE_DIRTY @ Write and Dirty? + orreq r2, r2, #PTE_SMALL_AP_UNO_SRW + + tst r1, #L_PTE_PRESENT | L_PTE_YOUNG @ Present and Young? + movne r2, #0 + +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + eor r3, r1, #0x0a @ C & small page? + tst r3, #0x0b + biceq r2, r2, #4 +#endif + str r2, [r0] @ hardware version + mov r0, r0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + mcr p15, 0, r0, c7, c10, 1 @ clean D entry +#endif + mov pc, lr + + __INIT + + .type __arm1022_setup, #function +__arm1022_setup: + mov r0, #0 + mcr p15, 0, r0, c7, c7 @ invalidate I,D caches on v4 + mcr p15, 0, r0, c7, c10, 4 @ drain write buffer on v4 + mcr p15, 0, r0, c8, c7 @ invalidate I,D TLBs on v4 + mcr p15, 0, r4, c2, c0 @ load page table pointer + mov r0, #0x1f @ Domains 0, 1 = client + mcr p15, 0, r0, c3, c0 @ load domain access register + mrc p15, 0, r0, c1, c0 @ get control register v4 +/* + * Clear out 'unwanted' bits (then put them in if we need them) + */ + bic r0, r0, #0x1e00 @ ...i??r......... + bic r0, r0, #0x000e @ ............wca. +/* + * Turn on what we want + */ + orr r0, r0, #0x0031 @ ..........DP...M + orr r0, r0, #0x2100 @ ..V....S........ + +#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN + orr r0, r0, #0x4000 @ .R.............. +#endif +#ifndef CONFIG_CPU_BPREDICT_DISABLE + orr r0, r0, #0x0800 @ ....Z........... +#endif +#ifndef CONFIG_CPU_DCACHE_DISABLE + orr r0, r0, #0x0004 @ .............C.. +#endif +#ifndef CONFIG_CPU_ICACHE_DISABLE + orr r0, r0, #0x1000 @ ...I............ +#endif + mov pc, lr + .size __arm1022_setup, . - __arm1022_setup + + __INITDATA + +/* + * Purpose : Function pointers used to access above functions - all calls + * come through these + */ + .type arm1022_processor_functions, #object +arm1022_processor_functions: + .word v4t_early_abort + .word cpu_arm1022_proc_init + .word cpu_arm1022_proc_fin + .word cpu_arm1022_reset + .word cpu_arm1022_do_idle + .word cpu_arm1022_dcache_clean_area + .word cpu_arm1022_switch_mm + .word cpu_arm1022_set_pte + .size arm1022_processor_functions, . - arm1022_processor_functions + + .section ".rodata" + + .type cpu_arch_name, #object +cpu_arch_name: + .asciz "armv5te" + .size cpu_arch_name, . - cpu_arch_name + + .type cpu_elf_name, #object +cpu_elf_name: + .asciz "v5" + .size cpu_elf_name, . - cpu_elf_name + + .type cpu_arm1022_name, #object +cpu_arm1022_name: + .ascii "arm1022" +#ifndef CONFIG_CPU_ICACHE_DISABLE + .ascii "i" +#endif +#ifndef CONFIG_CPU_DCACHE_DISABLE + .ascii "d" +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + .ascii "(wt)" +#else + .ascii "(wb)" +#endif +#endif +#ifndef CONFIG_CPU_BPREDICT_DISABLE + .ascii "B" +#endif +#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN + .ascii "RR" +#endif + .ascii "\0" + .size cpu_arm1022_name, . - cpu_arm1022_name + + .align + + .section ".proc.info", #alloc, #execinstr + + .type __arm1022_proc_info,#object +__arm1022_proc_info: + .long 0x4105a220 @ ARM 1022E (v5TE) + .long 0xff0ffff0 + .long 0x00000c12 @ mmuflags + b __arm1022_setup + .long cpu_arch_name + .long cpu_elf_name + .long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB + .long cpu_arm1022_name + .long arm1022_processor_functions + .long v4wbi_tlb_fns + .long v4wb_user_fns + .long arm1022_cache_fns + .size __arm1022_proc_info, . - __arm1022_proc_info diff -Nru a/arch/arm/mm/proc-arm1026.S b/arch/arm/mm/proc-arm1026.S --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/arm/mm/proc-arm1026.S Mon Sep 22 00:30:25 2003 @@ -0,0 +1,480 @@ +/* + * linux/arch/arm/mm/proc-arm1026.S: MMU functions for ARM1026EJ-S + * + * Copyright (C) 2000 ARM Limited + * Copyright (C) 2000 Deep Blue Solutions Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * + * These are the low level assembler for performing cache and TLB + * functions on the ARM1026EJ-S. + */ +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This is the maximum size of an area which will be invalidated + * using the single invalidate entry instructions. Anything larger + * than this, and we go for the whole cache. + * + * This value should be chosen such that we choose the cheapest + * alternative. + */ +#define MAX_AREA_SIZE 32768 + +/* + * The size of one data cache line. + */ +#define CACHE_DLINESIZE 32 + +/* + * The number of data cache segments. + */ +#define CACHE_DSEGMENTS 16 + +/* + * The number of lines in a cache segment. + */ +#define CACHE_DENTRIES 64 + +/* + * This is the size at which it becomes more efficient to + * clean the whole cache, rather than using the individual + * cache line maintainence instructions. + */ +#define CACHE_DLIMIT 32768 + + .text +/* + * cpu_arm1026_proc_init() + */ +ENTRY(cpu_arm1026_proc_init) + mov pc, lr + +/* + * cpu_arm1026_proc_fin() + */ +ENTRY(cpu_arm1026_proc_fin) + stmfd sp!, {lr} + mov ip, #PSR_F_BIT | PSR_I_BIT | SVC_MODE + msr cpsr_c, ip + bl arm1026_flush_kern_cache_all + mrc p15, 0, r0, c1, c0, 0 @ ctrl register + bic r0, r0, #0x1000 @ ...i............ + bic r0, r0, #0x000e @ ............wca. + mcr p15, 0, r0, c1, c0, 0 @ disable caches + ldmfd sp!, {pc} + +/* + * cpu_arm1026_reset(loc) + * + * Perform a soft reset of the system. Put the CPU into the + * same state as it would be if it had been reset, and branch + * to what would be the reset vector. + * + * loc: location to jump to for soft reset + */ + .align 5 +ENTRY(cpu_arm1026_reset) + mov ip, #0 + mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mcr p15, 0, ip, c8, c7, 0 @ invalidate I & D TLBs + mrc p15, 0, ip, c1, c0, 0 @ ctrl register + bic ip, ip, #0x000f @ ............wcam + bic ip, ip, #0x1100 @ ...i...s........ + mcr p15, 0, ip, c1, c0, 0 @ ctrl register + mov pc, r0 + +/* + * cpu_arm1026_do_idle() + */ + .align 5 +ENTRY(cpu_arm1026_do_idle) + mcr p15, 0, r0, c7, c0, 4 @ Wait for interrupt + mov pc, lr + +/* ================================= CACHE ================================ */ + + .align 5 +/* + * flush_user_cache_all() + * + * Invalidate all cache entries in a particular address + * space. + */ +ENTRY(arm1026_flush_user_cache_all) + /* FALLTHROUGH */ +/* + * flush_kern_cache_all() + * + * Clean and invalidate the entire cache. + */ +ENTRY(arm1026_flush_kern_cache_all) + mov r2, #VM_EXEC + mov ip, #0 +__flush_whole_cache: +#ifndef CONFIG_CPU_DCACHE_DISABLE +1: mrc p15, 0, r15, c7, c14, 3 @ test, clean, invalidate + bne 1b +#endif + tst r2, #VM_EXEC +#ifndef CONFIG_CPU_ICACHE_DISABLE + mcrne p15, 0, ip, c7, c5, 0 @ invalidate I cache +#endif + mcrne p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * flush_user_cache_range(start, end, flags) + * + * Invalidate a range of cache entries in the specified + * address space. + * + * - start - start address (inclusive) + * - end - end address (exclusive) + * - flags - vm_flags for this space + */ +ENTRY(arm1026_flush_user_cache_range) + mov ip, #0 + sub r3, r1, r0 @ calculate total size + cmp r3, #CACHE_DLIMIT + bhs __flush_whole_cache + +#ifndef CONFIG_CPU_DCACHE_DISABLE +1: mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + tst r2, #VM_EXEC +#ifndef CONFIG_CPU_ICACHE_DISABLE + mcrne p15, 0, ip, c7, c5, 0 @ invalidate I cache +#endif + mcrne p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * coherent_kern_range(start, end) + * + * Ensure coherency between the Icache and the Dcache in the + * region described by start. If you have non-snooping + * Harvard caches, you need to implement this function. + * + * - start - virtual start address + * - end - virtual end address + */ +ENTRY(arm1026_coherent_kern_range) + mov ip, #0 + bic r0, r0, #CACHE_DLINESIZE - 1 +1: +#ifndef CONFIG_CPU_DCACHE_DISABLE + mcr p15, 0, r0, c7, c10, 1 @ clean D entry +#endif +#ifndef CONFIG_CPU_ICACHE_DISABLE + mcr p15, 0, r0, c7, c5, 1 @ invalidate I entry +#endif + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * flush_kern_dcache_page(void *page) + * + * Ensure no D cache aliasing occurs, either with itself or + * the I cache + * + * - page - page aligned address + */ +ENTRY(arm1026_flush_kern_dcache_page) + mov ip, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + add r1, r0, #PAGE_SZ +1: mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * dma_inv_range(start, end) + * + * Invalidate (discard) the specified virtual address range. + * May not write back any entries. If 'start' or 'end' + * are not cache line aligned, those lines must be written + * back. + * + * - start - virtual start address + * - end - virtual end address + * + * (same as v4wb) + */ +ENTRY(arm1026_dma_inv_range) + mov ip, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + tst r0, #CACHE_DLINESIZE - 1 + bic r0, r0, #CACHE_DLINESIZE - 1 + mcrne p15, 0, r0, c7, c10, 1 @ clean D entry + tst r1, #CACHE_DLINESIZE - 1 + mcrne p15, 0, r1, c7, c10, 1 @ clean D entry +1: mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * dma_clean_range(start, end) + * + * Clean the specified virtual address range. + * + * - start - virtual start address + * - end - virtual end address + * + * (same as v4wb) + */ +ENTRY(arm1026_dma_clean_range) + mov ip, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + bic r0, r0, #CACHE_DLINESIZE - 1 +1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +/* + * dma_flush_range(start, end) + * + * Clean and invalidate the specified virtual address range. + * + * - start - virtual start address + * - end - virtual end address + */ +ENTRY(arm1026_dma_flush_range) + mov ip, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + bic r0, r0, #CACHE_DLINESIZE - 1 +1: mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry + add r0, r0, #CACHE_DLINESIZE + cmp r0, r1 + blo 1b +#endif + mcr p15, 0, ip, c7, c10, 4 @ drain WB + mov pc, lr + +ENTRY(arm1026_cache_fns) + .long arm1026_flush_kern_cache_all + .long arm1026_flush_user_cache_all + .long arm1026_flush_user_cache_range + .long arm1026_coherent_kern_range + .long arm1026_flush_kern_dcache_page + .long arm1026_dma_inv_range + .long arm1026_dma_clean_range + .long arm1026_dma_flush_range + + .align 5 +ENTRY(cpu_arm1026_dcache_clean_area) +#ifndef CONFIG_CPU_DCACHE_DISABLE + mov ip, #0 +1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry + add r0, r0, #CACHE_DLINESIZE + subs r1, r1, #CACHE_DLINESIZE + bhi 1b +#endif + mov pc, lr + +/* =============================== PageTable ============================== */ + +/* + * cpu_arm1026_switch_mm(pgd) + * + * Set the translation base pointer to be as described by pgd. + * + * pgd: new page tables + */ + .align 5 +ENTRY(cpu_arm1026_switch_mm) + mov r1, #0 +#ifndef CONFIG_CPU_DCACHE_DISABLE +1: mrc p15, 0, r15, c7, c14, 3 @ test, clean, invalidate + bne 1b +#endif +#ifndef CONFIG_CPU_ICACHE_DISABLE + mcr p15, 0, r1, c7, c5, 0 @ invalidate I cache +#endif + mcr p15, 0, r1, c7, c10, 4 @ drain WB + mcr p15, 0, r0, c2, c0, 0 @ load page table pointer + mcr p15, 0, r1, c8, c7, 0 @ invalidate I & D TLBs + mov pc, lr + +/* + * cpu_arm1026_set_pte(ptep, pte) + * + * Set a PTE and flush it out + */ + .align 5 +ENTRY(cpu_arm1026_set_pte) + str r1, [r0], #-2048 @ linux version + + eor r1, r1, #L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_WRITE | L_PTE_DIRTY + + bic r2, r1, #PTE_SMALL_AP_MASK + bic r2, r2, #PTE_TYPE_MASK + orr r2, r2, #PTE_TYPE_SMALL + + tst r1, #L_PTE_USER @ User? + orrne r2, r2, #PTE_SMALL_AP_URO_SRW + + tst r1, #L_PTE_WRITE | L_PTE_DIRTY @ Write and Dirty? + orreq r2, r2, #PTE_SMALL_AP_UNO_SRW + + tst r1, #L_PTE_PRESENT | L_PTE_YOUNG @ Present and Young? + movne r2, #0 + +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + eor r3, r1, #0x0a @ C & small page? + tst r3, #0x0b + biceq r2, r2, #4 +#endif + str r2, [r0] @ hardware version + mov r0, r0 +#ifndef CONFIG_CPU_DCACHE_DISABLE + mcr p15, 0, r0, c7, c10, 1 @ clean D entry +#endif + mov pc, lr + + + __INIT + + .type __arm1026_setup, #function +__arm1026_setup: + mov r0, #0 + mcr p15, 0, r0, c7, c7 @ invalidate I,D caches on v4 + mcr p15, 0, r0, c7, c10, 4 @ drain write buffer on v4 + mcr p15, 0, r0, c8, c7 @ invalidate I,D TLBs on v4 + mcr p15, 0, r4, c2, c0 @ load page table pointer +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + mov r0, #4 @ explicitly disable writeback + mcr p15, 7, r0, c15, c0, 0 +#endif + mov r0, #0x1f @ Domains 0, 1 = client + mcr p15, 0, r0, c3, c0 @ load domain access register + mrc p15, 0, r0, c1, c0 @ get control register v4 +/* + * Clear out 'unwanted' bits (then put them in if we need them) + */ + bic r0, r0, #0x1e00 @ ...i??r......... + bic r0, r0, #0x000e @ ............wca. +/* + * Turn on what we want + */ + orr r0, r0, #0x0031 @ ..........DP...M + orr r0, r0, #0x2100 @ ..V....S........ + +#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN + orr r0, r0, #0x4000 @ .R.............. +#endif +#ifndef CONFIG_CPU_BPREDICT_DISABLE + orr r0, r0, #0x0800 @ ....Z........... +#endif +#ifndef CONFIG_CPU_DCACHE_DISABLE + orr r0, r0, #0x0004 @ .............C.. +#endif +#ifndef CONFIG_CPU_ICACHE_DISABLE + orr r0, r0, #0x1000 @ ...I............ +#endif + mov pc, lr + .size __arm1026_setup, . - __arm1026_setup + + __INITDATA + +/* + * Purpose : Function pointers used to access above functions - all calls + * come through these + */ + .type arm1026_processor_functions, #object +arm1026_processor_functions: + .word v5t_early_abort + .word cpu_arm1026_proc_init + .word cpu_arm1026_proc_fin + .word cpu_arm1026_reset + .word cpu_arm1026_do_idle + .word cpu_arm1026_dcache_clean_area + .word cpu_arm1026_switch_mm + .word cpu_arm1026_set_pte + .size arm1026_processor_functions, . - arm1026_processor_functions + + .section .rodata + + .type cpu_arch_name, #object +cpu_arch_name: + .asciz "armv5tej" + .size cpu_arch_name, . - cpu_arch_name + + .type cpu_elf_name, #object +cpu_elf_name: + .asciz "v5" + .size cpu_elf_name, . - cpu_elf_name + .align + + .type cpu_arm1026_name, #object +cpu_arm1026_name: + .ascii "ARM1026EJ-S" +#ifndef CONFIG_CPU_ICACHE_DISABLE + .ascii "i" +#endif +#ifndef CONFIG_CPU_DCACHE_DISABLE + .ascii "d" +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + .ascii "(wt)" +#else + .ascii "(wb)" +#endif +#endif +#ifndef CONFIG_CPU_BPREDICT_DISABLE + .ascii "B" +#endif +#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN + .ascii "RR" +#endif + .ascii "\0" + .size cpu_arm1026_name, . - cpu_arm1026_name + + .align + + .section ".proc.info", #alloc, #execinstr + + .type __arm1026_proc_info,#object +__arm1026_proc_info: + .long 0x4106a260 @ ARM 1026EJ-S (v5TEJ) + .long 0xff0ffff0 + .long 0x00000c12 @ mmuflags + b __arm1026_setup + .long cpu_arch_name + .long cpu_elf_name + .long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | HWCAP_FAST_MULT + .long cpu_arm1026_name + .long arm1026_processor_functions + .long v4wbi_tlb_fns + .long v4wb_user_fns + .long arm1026_cache_fns + .size __arm1026_proc_info, . - __arm1026_proc_info diff -Nru a/arch/arm/mm/proc-arm6_7.S b/arch/arm/mm/proc-arm6_7.S --- a/arch/arm/mm/proc-arm6_7.S Mon Sep 22 00:30:23 2003 +++ b/arch/arm/mm/proc-arm6_7.S Mon Sep 22 00:30:23 2003 @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -214,19 +215,19 @@ ENTRY(cpu_arm7_set_pte) str r1, [r0], #-2048 @ linux version - eor r1, r1, #LPTE_PRESENT | LPTE_YOUNG | LPTE_WRITE | LPTE_DIRTY + eor r1, r1, #L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_WRITE | L_PTE_DIRTY - bic r2, r1, #0xff0 - bic r2, r2, #3 - orr r2, r2, #HPTE_TYPE_SMALL + bic r2, r1, #PTE_SMALL_AP_MASK + bic r2, r2, #PTE_TYPE_MASK + orr r2, r2, #PTE_TYPE_SMALL - tst r1, #LPTE_USER | LPTE_EXEC @ User or Exec? - orrne r2, r2, #HPTE_AP_READ + tst r1, #L_PTE_USER @ User? + orrne r2, r2, #PTE_SMALL_AP_URO_SRW - tst r1, #LPTE_WRITE | LPTE_DIRTY @ Write and Dirty? - orreq r2, r2, #HPTE_AP_WRITE + tst r1, #L_PTE_WRITE | L_PTE_DIRTY @ Write and Dirty? + orreq r2, r2, #PTE_SMALL_AP_UNO_SRW - tst r1, #LPTE_PRESENT | LPTE_YOUNG @ Present and Young + tst r1, #L_PTE_PRESENT | L_PTE_YOUNG @ Present and Young movne r2, #0 str r2, [r0] @ hardware version @@ -246,16 +247,9 @@ mcr p15, 0, r1, c1, c0, 0 @ turn off MMU etc mov pc, r0 -cpu_arm6_name: .asciz "ARM6" -cpu_arm610_name: - .asciz "ARM610" -cpu_arm7_name: .asciz "ARM7" -cpu_arm710_name: - .asciz "ARM710" - .align - __INIT + .type __arm6_setup, #function __arm6_setup: mov r0, #0 mcr p15, 0, r0, c7, c0 @ flush caches on v3 mcr p15, 0, r0, c5, c0 @ flush TLBs on v3 @@ -265,7 +259,9 @@ mov r0, #0x3d @ . ..RS BLDP WCAM orr r0, r0, #0x100 @ . ..01 0011 1101 mov pc, lr + .size __arm6_setup, . - __arm6_setup + .type __arm7_setup, #function __arm7_setup: mov r0, #0 mcr p15, 0, r0, c7, c0 @ flush caches on v3 mcr p15, 0, r0, c5, c0 @ flush TLBs on v3 @@ -275,6 +271,9 @@ mov r0, #0x7d @ . ..RS BLDP WCAM orr r0, r0, #0x100 @ . ..01 0111 1101 mov pc, lr + .size __arm7_setup, . - __arm7_setup + + __INITDATA /* * Purpose : Function pointers used to access above functions - all calls @@ -308,6 +307,8 @@ .word cpu_arm7_set_pte .size arm7_processor_functions, . - arm7_processor_functions + .section ".rodata" + .type cpu_arch_name, #object cpu_arch_name: .asciz "armv3" .size cpu_arch_name, . - cpu_arch_name @@ -315,6 +316,25 @@ .type cpu_elf_name, #object cpu_elf_name: .asciz "v3" .size cpu_elf_name, . - cpu_elf_name + + .type cpu_arm6_name, #object +cpu_arm6_name: .asciz "ARM6" + .size cpu_arm6_name, . - cpu_arm6_name + + .type cpu_arm610_name, #object +cpu_arm610_name: + .asciz "ARM610" + .size cpu_arm610_name, . - cpu_arm610_name + + .type cpu_arm7_name, #object +cpu_arm7_name: .asciz "ARM7" + .size cpu_arm7_name, . - cpu_arm7_name + + .type cpu_arm710_name, #object +cpu_arm710_name: + .asciz "ARM710" + .size cpu_arm710_name, . - cpu_arm710_name + .align .section ".proc.info", #alloc, #execinstr diff -Nru a/arch/arm/mm/proc-arm720.S b/arch/arm/mm/proc-arm720.S --- a/arch/arm/mm/proc-arm720.S Mon Sep 22 00:30:23 2003 +++ b/arch/arm/mm/proc-arm720.S Mon Sep 22 00:30:23 2003 @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -90,19 +91,19 @@ ENTRY(cpu_arm720_set_pte) str r1, [r0], #-2048 @ linux version - eor r1, r1, #LPTE_PRESENT | LPTE_YOUNG | LPTE_WRITE | LPTE_DIRTY + eor r1, r1, #L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_WRITE | L_PTE_DIRTY - bic r2, r1, #0xff0 - bic r2, r2, #3 - orr r2, r2, #HPTE_TYPE_SMALL + bic r2, r1, #PTE_SMALL_AP_MASK + bic r2, r2, #PTE_TYPE_MASK + orr r2, r2, #PTE_TYPE_SMALL - tst r1, #LPTE_USER @ User? - orrne r2, r2, #HPTE_AP_READ + tst r1, #L_PTE_USER @ User? + orrne r2, r2, #PTE_SMALL_AP_URO_SRW - tst r1, #LPTE_WRITE | LPTE_DIRTY @ Write and Dirty? - orreq r2, r2, #HPTE_AP_WRITE + tst r1, #L_PTE_WRITE | L_PTE_DIRTY @ Write and Dirty? + orreq r2, r2, #PTE_SMALL_AP_UNO_SRW - tst r1, #LPTE_PRESENT | LPTE_YOUNG @ Present and Young + tst r1, #L_PTE_PRESENT | L_PTE_YOUNG @ Present and Young movne r2, #0 str r2, [r0] @ hardware version @@ -123,13 +124,9 @@ mcr p15, 0, ip, c1, c0, 0 @ ctrl register mov pc, r0 - -cpu_arm720_name: - .asciz "ARM720T" - .align - __INIT + .type __arm720_setup, #function __arm720_setup: mov r0, #0 mcr p15, 0, r0, c7, c7, 0 @ invalidate caches mcr p15, 0, r0, c8, c7, 0 @ flush TLB (v4) @@ -142,6 +139,9 @@ orr r0, r0, #0x2100 @ .... .... .111 .... (old) orr r0, r0, #0x003d @ ..1. ..01 ..11 1101 (new) mov pc, lr @ __ret (head-armv.S) + .size __arm720_setup, . - __arm720_setup + + __INITDATA /* * Purpose : Function pointers used to access above functions - all calls @@ -159,6 +159,8 @@ .word cpu_arm720_set_pte .size arm720_processor_functions, . - arm720_processor_functions + .section ".rodata" + .type cpu_arch_name, #object cpu_arch_name: .asciz "armv4t" .size cpu_arch_name, . - cpu_arch_name @@ -166,6 +168,12 @@ .type cpu_elf_name, #object cpu_elf_name: .asciz "v4" .size cpu_elf_name, . - cpu_elf_name + + .type cpu_arm720_name, #object +cpu_arm720_name: + .asciz "ARM720T" + .size cpu_arm720_name, . - cpu_arm720_name + .align /* diff -Nru a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S --- a/arch/arm/mm/proc-arm920.S Mon Sep 22 00:30:18 2003 +++ b/arch/arm/mm/proc-arm920.S Mon Sep 22 00:30:18 2003 @@ -1,5 +1,5 @@ /* - * linux/arch/arm/mm/arm920.S: MMU functions for ARM920 + * linux/arch/arm/mm/proc-arm920.S: MMU functions for ARM920 * * Copyright (C) 1999,2000 ARM Limited * Copyright (C) 2000 Deep Blue Solutions Ltd. @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -333,19 +334,19 @@ ENTRY(cpu_arm920_set_pte) str r1, [r0], #-2048 @ linux version - eor r1, r1, #LPTE_PRESENT | LPTE_YOUNG | LPTE_WRITE | LPTE_DIRTY + eor r1, r1, #L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_WRITE | L_PTE_DIRTY - bic r2, r1, #0xff0 - bic r2, r2, #3 - orr r2, r2, #HPTE_TYPE_SMALL + bic r2, r1, #PTE_SMALL_AP_MASK + bic r2, r2, #PTE_TYPE_MASK + orr r2, r2, #PTE_TYPE_SMALL - tst r1, #LPTE_USER @ User or Exec? - orrne r2, r2, #HPTE_AP_READ + tst r1, #L_PTE_USER @ User? + orrne r2, r2, #PTE_SMALL_AP_URO_SRW - tst r1, #LPTE_WRITE | LPTE_DIRTY @ Write and Dirty? - orreq r2, r2, #HPTE_AP_WRITE + tst r1, #L_PTE_WRITE | L_PTE_DIRTY @ Write and Dirty? + orreq r2, r2, #PTE_SMALL_AP_UNO_SRW - tst r1, #LPTE_PRESENT | LPTE_YOUNG @ Present and Young? + tst r1, #L_PTE_PRESENT | L_PTE_YOUNG @ Present and Young? movne r2, #0 #ifdef CONFIG_CPU_DCACHE_WRITETHROUGH @@ -359,25 +360,9 @@ mcr p15, 0, r0, c7, c10, 4 @ drain WB mov pc, lr - -ENTRY(cpu_arm920_name) - .ascii "Arm920T" -#ifndef CONFIG_CPU_ICACHE_DISABLE - .ascii "i" -#endif -#ifndef CONFIG_CPU_DCACHE_DISABLE - .ascii "d" -#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH - .ascii "(wt)" -#else - .ascii "(wb)" -#endif -#endif - .ascii "\0" - .align - __INIT + .type __arm920_setup, #function __arm920_setup: mov r0, #0 mcr p15, 0, r0, c7, c7 @ invalidate I,D caches on v4 @@ -408,8 +393,9 @@ orr r0, r0, #0x1000 @ ...1 .... .... .... #endif mov pc, lr + .size __arm920_setup, . - __arm920_setup - .text + __INITDATA /* * Purpose : Function pointers used to access above functions - all calls @@ -427,6 +413,8 @@ .word cpu_arm920_set_pte .size arm920_processor_functions, . - arm920_processor_functions + .section ".rodata" + .type cpu_arch_name, #object cpu_arch_name: .asciz "armv4t" @@ -436,6 +424,24 @@ cpu_elf_name: .asciz "v4" .size cpu_elf_name, . - cpu_elf_name + + .type cpu_arm920_name, #object +cpu_arm920_name: + .ascii "ARM920T" +#ifndef CONFIG_CPU_ICACHE_DISABLE + .ascii "i" +#endif +#ifndef CONFIG_CPU_DCACHE_DISABLE + .ascii "d" +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + .ascii "(wt)" +#else + .ascii "(wb)" +#endif +#endif + .ascii "\0" + .size cpu_arm920_name, . - cpu_arm920_name + .align .section ".proc.info", #alloc, #execinstr diff -Nru a/arch/arm/mm/proc-arm922.S b/arch/arm/mm/proc-arm922.S --- a/arch/arm/mm/proc-arm922.S Mon Sep 22 00:30:24 2003 +++ b/arch/arm/mm/proc-arm922.S Mon Sep 22 00:30:24 2003 @@ -1,5 +1,5 @@ /* - * linux/arch/arm/mm/arm922.S: MMU functions for ARM922 + * linux/arch/arm/mm/proc-arm922.S: MMU functions for ARM922 * * Copyright (C) 1999,2000 ARM Limited * Copyright (C) 2000 Deep Blue Solutions Ltd. @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -337,19 +338,19 @@ ENTRY(cpu_arm922_set_pte) str r1, [r0], #-2048 @ linux version - eor r1, r1, #LPTE_PRESENT | LPTE_YOUNG | LPTE_WRITE | LPTE_DIRTY + eor r1, r1, #L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_WRITE | L_PTE_DIRTY - bic r2, r1, #0xff0 - bic r2, r2, #3 - orr r2, r2, #HPTE_TYPE_SMALL + bic r2, r1, #PTE_SMALL_AP_MASK + bic r2, r2, #PTE_TYPE_MASK + orr r2, r2, #PTE_TYPE_SMALL - tst r1, #LPTE_USER @ User? - orrne r2, r2, #HPTE_AP_READ + tst r1, #L_PTE_USER @ User? + orrne r2, r2, #PTE_SMALL_AP_URO_SRW - tst r1, #LPTE_WRITE | LPTE_DIRTY @ Write and Dirty? - orreq r2, r2, #HPTE_AP_WRITE + tst r1, #L_PTE_WRITE | L_PTE_DIRTY @ Write and Dirty? + orreq r2, r2, #PTE_SMALL_AP_UNO_SRW - tst r1, #LPTE_PRESENT | LPTE_YOUNG @ Present and Young? + tst r1, #L_PTE_PRESENT | L_PTE_YOUNG @ Present and Young? movne r2, #0 #ifdef CONFIG_CPU_DCACHE_WRITETHROUGH @@ -363,25 +364,9 @@ mcr p15, 0, r0, c7, c10, 4 @ drain WB mov pc, lr - -ENTRY(cpu_arm922_name) - .ascii "Arm922T" -#ifndef CONFIG_CPU_ICACHE_DISABLE - .ascii "i" -#endif -#ifndef CONFIG_CPU_DCACHE_DISABLE - .ascii "d" -#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH - .ascii "(wt)" -#else - .ascii "(wb)" -#endif -#endif - .ascii "\0" - .align - __INIT + .type __arm922_setup, #function __arm922_setup: mov r0, #0 mcr p15, 0, r0, c7, c7 @ invalidate I,D caches on v4 @@ -412,8 +397,9 @@ orr r0, r0, #0x1000 @ ...1 .... .... .... #endif mov pc, lr + .size __arm922_setup, . - __arm922_setup - .text + __INITDATA /* * Purpose : Function pointers used to access above functions - all calls @@ -431,6 +417,8 @@ .word cpu_arm922_set_pte .size arm922_processor_functions, . - arm922_processor_functions + .section ".rodata" + .type cpu_arch_name, #object cpu_arch_name: .asciz "armv4t" @@ -440,6 +428,24 @@ cpu_elf_name: .asciz "v4" .size cpu_elf_name, . - cpu_elf_name + + .type cpu_arm922_name, #object +cpu_arm922_name: + .ascii "ARM922T" +#ifndef CONFIG_CPU_ICACHE_DISABLE + .ascii "i" +#endif +#ifndef CONFIG_CPU_DCACHE_DISABLE + .ascii "d" +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + .ascii "(wt)" +#else + .ascii "(wb)" +#endif +#endif + .ascii "\0" + .size cpu_arm922_name, . - cpu_arm922_name + .align .section ".proc.info", #alloc, #execinstr diff -Nru a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S --- a/arch/arm/mm/proc-arm926.S Mon Sep 22 00:30:22 2003 +++ b/arch/arm/mm/proc-arm926.S Mon Sep 22 00:30:22 2003 @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -337,19 +338,19 @@ ENTRY(cpu_arm926_set_pte) str r1, [r0], #-2048 @ linux version - eor r1, r1, #LPTE_PRESENT | LPTE_YOUNG | LPTE_WRITE | LPTE_DIRTY + eor r1, r1, #L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_WRITE | L_PTE_DIRTY - bic r2, r1, #0xff0 - bic r2, r2, #3 - orr r2, r2, #HPTE_TYPE_SMALL + bic r2, r1, #PTE_SMALL_AP_MASK + bic r2, r2, #PTE_TYPE_MASK + orr r2, r2, #PTE_TYPE_SMALL - tst r1, #LPTE_USER @ User? - orrne r2, r2, #HPTE_AP_READ + tst r1, #L_PTE_USER @ User? + orrne r2, r2, #PTE_SMALL_AP_URO_SRW - tst r1, #LPTE_WRITE | LPTE_DIRTY @ Write and Dirty? - orreq r2, r2, #HPTE_AP_WRITE + tst r1, #L_PTE_WRITE | L_PTE_DIRTY @ Write and Dirty? + orreq r2, r2, #PTE_SMALL_AP_UNO_SRW - tst r1, #LPTE_PRESENT | LPTE_YOUNG @ Present and Young? + tst r1, #L_PTE_PRESENT | L_PTE_YOUNG @ Present and Young? movne r2, #0 #ifdef CONFIG_CPU_DCACHE_WRITETHROUGH @@ -365,28 +366,9 @@ mcr p15, 0, r0, c7, c10, 4 @ drain WB mov pc, lr - -ENTRY(cpu_arm926_name) - .ascii "ARM926EJ-S" -#ifndef CONFIG_CPU_ICACHE_DISABLE - .ascii "i" -#endif -#ifndef CONFIG_CPU_DCACHE_DISABLE - .ascii "d" -#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH - .ascii "(wt)" -#else - .ascii "(wb)" -#endif -#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN - .ascii "RR" -#endif -#endif - .ascii "\0" - .align - __INIT + .type __arm926_setup, #function __arm926_setup: mov r0, #0 mcr p15, 0, r0, c7, c7 @ invalidate I,D caches on v4 @@ -427,8 +409,9 @@ orr r0, r0, #0x1000 @ ...1 .... .... .... #endif mov pc, lr + .size __arm926_setup, . - __arm926_setup - .text + __INITDATA /* * Purpose : Function pointers used to access above functions - all calls @@ -436,7 +419,7 @@ */ .type arm926_processor_functions, #object arm926_processor_functions: - .word v5tej_early_abort + .word v5tj_early_abort .word cpu_arm926_proc_init .word cpu_arm926_proc_fin .word cpu_arm926_reset @@ -446,6 +429,8 @@ .word cpu_arm926_set_pte .size arm926_processor_functions, . - arm926_processor_functions + .section ".rodata" + .type cpu_arch_name, #object cpu_arch_name: .asciz "armv5tej" @@ -455,14 +440,35 @@ cpu_elf_name: .asciz "v5" .size cpu_elf_name, . - cpu_elf_name + + .type cpu_arm926_name, #object +cpu_arm926_name: + .ascii "ARM926EJ-S" +#ifndef CONFIG_CPU_ICACHE_DISABLE + .ascii "i" +#endif +#ifndef CONFIG_CPU_DCACHE_DISABLE + .ascii "d" +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + .ascii "(wt)" +#else + .ascii "(wb)" +#endif +#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN + .ascii "RR" +#endif +#endif + .ascii "\0" + .size cpu_arm926_name, . - cpu_arm926_name + .align .section ".proc.info", #alloc, #execinstr .type __arm926_proc_info,#object __arm926_proc_info: - .long 0x41009260 - .long 0xff00fff0 + .long 0x41069260 @ ARM926EJ-S (v5TEJ) + .long 0xff0ffff0 .long 0x00000c1e @ mmuflags b __arm926_setup .long cpu_arch_name diff -Nru a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S --- a/arch/arm/mm/proc-sa110.S Mon Sep 22 00:30:21 2003 +++ b/arch/arm/mm/proc-sa110.S Mon Sep 22 00:30:21 2003 @@ -163,11 +163,11 @@ eor r1, r1, #L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_WRITE | L_PTE_DIRTY - bic r2, r1, #0xff0 - bic r2, r2, #3 + bic r2, r1, #PTE_SMALL_AP_MASK + bic r2, r2, #PTE_TYPE_MASK orr r2, r2, #PTE_TYPE_SMALL - tst r1, #L_PTE_USER @ User or Exec? + tst r1, #L_PTE_USER @ User? orrne r2, r2, #PTE_SMALL_AP_URO_SRW tst r1, #L_PTE_WRITE | L_PTE_DIRTY @ Write and Dirty? @@ -182,13 +182,9 @@ mcr p15, 0, r0, c7, c10, 4 @ drain WB mov pc, lr - -cpu_sa110_name: - .asciz "StrongARM-110" - .align - __INIT + .type __sa110_setup, #function __sa110_setup: mrc p15, 0, r0, c1, c0 @ get control register v4 bic r0, r0, #0x2e00 @ ..VI ZFRS BLDP WCAM @@ -203,8 +199,9 @@ mov r10, #0x1f @ Domains 0, 1 = client mcr p15, 0, r10, c3, c0 @ load domain access register mov pc, lr + .size __sa110_setup, . - __sa110_setup - .text + __INITDATA /* * Purpose : Function pointers used to access above functions - all calls @@ -218,16 +215,13 @@ .word cpu_sa110_proc_fin .word cpu_sa110_reset .word cpu_sa110_do_idle - - /* dcache */ .word cpu_sa110_dcache_clean_area - - /* pgtable */ .word cpu_sa110_switch_mm .word cpu_sa110_set_pte - .size sa110_processor_functions, . - sa110_processor_functions + .section ".rodata" + .type cpu_arch_name, #object cpu_arch_name: .asciz "armv4" @@ -237,6 +231,12 @@ cpu_elf_name: .asciz "v4" .size cpu_elf_name, . - cpu_elf_name + + .type cpu_sa110_name, #object +cpu_sa110_name: + .asciz "StrongARM-110" + .size cpu_sa110_name, . - cpu_sa110_name + .align .section ".proc.info", #alloc, #execinstr diff -Nru a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S --- a/arch/arm/mm/proc-sa1100.S Mon Sep 22 00:30:23 2003 +++ b/arch/arm/mm/proc-sa1100.S Mon Sep 22 00:30:23 2003 @@ -1,5 +1,5 @@ /* - * linux/arch/arm/mm/proc-sa110.S + * linux/arch/arm/mm/proc-sa1100.S * * Copyright (C) 1997-2002 Russell King * @@ -187,11 +187,11 @@ eor r1, r1, #L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_WRITE | L_PTE_DIRTY - bic r2, r1, #0xff0 - bic r2, r2, #3 + bic r2, r1, #PTE_SMALL_AP_MASK + bic r2, r2, #PTE_TYPE_MASK orr r2, r2, #PTE_TYPE_SMALL - tst r1, #L_PTE_USER @ User or Exec? + tst r1, #L_PTE_USER @ User? orrne r2, r2, #PTE_SMALL_AP_URO_SRW tst r1, #L_PTE_WRITE | L_PTE_DIRTY @ Write and Dirty? @@ -206,15 +206,9 @@ mcr p15, 0, r0, c7, c10, 4 @ drain WB mov pc, lr - -cpu_sa1100_name: - .asciz "StrongARM-1100" -cpu_sa1110_name: - .asciz "StrongARM-1110" - .align - __INIT + .type __sa1100_setup, #function __sa1100_setup: mov r10, #0 mcr p15, 0, r10, c7, c7 @ invalidate I,D caches on v4 @@ -229,8 +223,9 @@ orr r0, r0, #0x003d orr r0, r0, #0x3100 @ ..11 ...1 ..11 11.1 mov pc, lr + .size __sa1100_setup, . - __sa1100_setup - .text + __INITDATA /* * Purpose : Function pointers used to access above functions - all calls @@ -252,6 +247,8 @@ .word cpu_sa1100_set_pte .size sa1100_processor_functions, . - sa1100_processor_functions + .section ".rodata" + .type cpu_arch_name, #object cpu_arch_name: .asciz "armv4" @@ -261,6 +258,17 @@ cpu_elf_name: .asciz "v4" .size cpu_elf_name, . - cpu_elf_name + + .type cpu_sa1100_name, #object +cpu_sa1100_name: + .asciz "StrongARM-1100" + .size cpu_sa1100_name, . - cpu_sa1100_name + + .type cpu_sa1110_name, #object +cpu_sa1110_name: + .asciz "StrongARM-1110" + .size cpu_sa1110_name, . - cpu_sa1110_name + .align .section ".proc.info", #alloc, #execinstr diff -Nru a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S --- a/arch/arm/mm/proc-xscale.S Mon Sep 22 00:30:24 2003 +++ b/arch/arm/mm/proc-xscale.S Mon Sep 22 00:30:24 2003 @@ -236,6 +236,9 @@ * * - start - virtual start address * - end - virtual end address + * + * Note: single I-cache line invalidation isn't used here since + * it also trashes the mini I-cache used by JTAG debuggers. */ ENTRY(xscale_coherent_kern_range) bic r0, r0, #CACHELINESIZE - 1 @@ -568,22 +571,11 @@ .ltorg -cpu_80200_name: - .asciz "XScale-80200" - -cpu_80321_name: - .asciz "XScale-IOP80321" - -cpu_pxa250_name: - .asciz "XScale-PXA250" - -cpu_pxa210_name: - .asciz "XScale-PXA210" - .align __INIT + .type __xscale_setup, #function __xscale_setup: mov r0, #PSR_F_BIT|PSR_I_BIT|SVC_MODE msr cpsr_c, r0 @@ -602,8 +594,9 @@ orr r0, r0, #0x0005 @ .... .... .... .C.M orr r0, r0, #0x3900 @ ..VI Z..S .... .... mov pc, lr + .size __xscale_setup, . - __xscale_setup - .text + __INITDATA /* * Purpose : Function pointers used to access above functions - all calls @@ -612,7 +605,7 @@ .type xscale_processor_functions, #object ENTRY(xscale_processor_functions) - .word xscale_abort + .word v5t_early_abort .word cpu_xscale_proc_init .word cpu_xscale_proc_fin .word cpu_xscale_reset @@ -622,6 +615,8 @@ .word cpu_xscale_set_pte .size xscale_processor_functions, . - xscale_processor_functions + .section ".rodata" + .type cpu_arch_name, #object cpu_arch_name: .asciz "armv5te" @@ -631,6 +626,27 @@ cpu_elf_name: .asciz "v5" .size cpu_elf_name, . - cpu_elf_name + + .type cpu_80200_name, #object +cpu_80200_name: + .asciz "XScale-80200" + .size cpu_80200_name, . - cpu_80200_name + + .type cpu_80321_name, #object +cpu_80321_name: + .asciz "XScale-IOP80321" + .size cpu_80321_name, . - cpu_80321_name + + .type cpu_pxa250_name, #object +cpu_pxa250_name: + .asciz "XScale-PXA250" + .size cpu_pxa250_name, . - cpu_pxa250_name + + .type cpu_pxa210_name, #object +cpu_pxa210_name: + .asciz "XScale-PXA210" + .size cpu_pxa210_name, . - cpu_pxa210_name + .align .section ".proc.info", #alloc, #execinstr diff -Nru a/arch/arm/mm/tlb-v3.S b/arch/arm/mm/tlb-v3.S --- a/arch/arm/mm/tlb-v3.S Mon Sep 22 00:30:18 2003 +++ b/arch/arm/mm/tlb-v3.S Mon Sep 22 00:30:18 2003 @@ -42,7 +42,7 @@ blo 1b mov pc, lr - __INIT + __INITDATA .type v3_tlb_fns, #object ENTRY(v3_tlb_fns) diff -Nru a/arch/arm/mm/tlb-v4.S b/arch/arm/mm/tlb-v4.S --- a/arch/arm/mm/tlb-v4.S Mon Sep 22 00:30:20 2003 +++ b/arch/arm/mm/tlb-v4.S Mon Sep 22 00:30:20 2003 @@ -34,7 +34,6 @@ act_mm r3 @ get current->active_mm eors r3, ip, r3 @ == mm ? movne pc, lr @ no, we dont do anything - vma_vm_flags ip, r2 .v4_flush_kern_tlb_range: bic r0, r0, #0x0ff bic r0, r0, #0xf00 @@ -56,7 +55,7 @@ .globl v4_flush_kern_tlb_range .equ v4_flush_kern_tlb_range, .v4_flush_kern_tlb_range - __INIT + __INITDATA .type v4_tlb_fns, #object ENTRY(v4_tlb_fns) diff -Nru a/arch/arm/mm/tlb-v4wb.S b/arch/arm/mm/tlb-v4wb.S --- a/arch/arm/mm/tlb-v4wb.S Mon Sep 22 00:30:20 2003 +++ b/arch/arm/mm/tlb-v4wb.S Mon Sep 22 00:30:20 2003 @@ -67,7 +67,7 @@ blo 1b mov pc, lr - __INIT + __INITDATA .type v4wb_tlb_fns, #object ENTRY(v4wb_tlb_fns) diff -Nru a/arch/arm/mm/tlb-v4wbi.S b/arch/arm/mm/tlb-v4wbi.S --- a/arch/arm/mm/tlb-v4wbi.S Mon Sep 22 00:30:19 2003 +++ b/arch/arm/mm/tlb-v4wbi.S Mon Sep 22 00:30:19 2003 @@ -58,7 +58,7 @@ blo 1b mov pc, lr - __INIT + __INITDATA .type v4wbi_tlb_fns, #object ENTRY(v4wbi_tlb_fns) diff -Nru a/arch/arm/nwfpe/fpa11.c b/arch/arm/nwfpe/fpa11.c --- a/arch/arm/nwfpe/fpa11.c Mon Sep 22 00:30:20 2003 +++ b/arch/arm/nwfpe/fpa11.c Mon Sep 22 00:30:20 2003 @@ -26,6 +26,7 @@ #include "fpmodule.h" #include "fpmodule.inl" +#include #include #include #include diff -Nru a/arch/arm/nwfpe/fpa11.h b/arch/arm/nwfpe/fpa11.h --- a/arch/arm/nwfpe/fpa11.h Mon Sep 22 00:30:21 2003 +++ b/arch/arm/nwfpe/fpa11.h Mon Sep 22 00:30:21 2003 @@ -33,6 +33,7 @@ #define GET_USERREG() (user_registers) +#include #include /* includes */ diff -Nru a/arch/arm/nwfpe/fpa11_cpdo.c b/arch/arm/nwfpe/fpa11_cpdo.c --- a/arch/arm/nwfpe/fpa11_cpdo.c Mon Sep 22 00:30:23 2003 +++ b/arch/arm/nwfpe/fpa11_cpdo.c Mon Sep 22 00:30:23 2003 @@ -20,6 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include "fpa11.h" #include "fpopcode.h" diff -Nru a/arch/arm/nwfpe/fpa11_cpdt.c b/arch/arm/nwfpe/fpa11_cpdt.c --- a/arch/arm/nwfpe/fpa11_cpdt.c Mon Sep 22 00:30:24 2003 +++ b/arch/arm/nwfpe/fpa11_cpdt.c Mon Sep 22 00:30:24 2003 @@ -20,6 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include "fpa11.h" #include "softfloat.h" #include "fpopcode.h" diff -Nru a/arch/arm/nwfpe/fpa11_cprt.c b/arch/arm/nwfpe/fpa11_cprt.c --- a/arch/arm/nwfpe/fpa11_cprt.c Mon Sep 22 00:30:23 2003 +++ b/arch/arm/nwfpe/fpa11_cprt.c Mon Sep 22 00:30:23 2003 @@ -20,6 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include "fpa11.h" #include "fpopcode.h" #include "fpa11.inl" diff -Nru a/arch/arm/nwfpe/fpopcode.c b/arch/arm/nwfpe/fpopcode.c --- a/arch/arm/nwfpe/fpopcode.c Mon Sep 22 00:30:21 2003 +++ b/arch/arm/nwfpe/fpopcode.c Mon Sep 22 00:30:21 2003 @@ -19,6 +19,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include "fpa11.h" #include "softfloat.h" #include "fpopcode.h" diff -Nru a/arch/arm/nwfpe/fpopcode.h b/arch/arm/nwfpe/fpopcode.h --- a/arch/arm/nwfpe/fpopcode.h Mon Sep 22 00:30:20 2003 +++ b/arch/arm/nwfpe/fpopcode.h Mon Sep 22 00:30:20 2003 @@ -23,6 +23,8 @@ #ifndef __FPOPCODE_H__ #define __FPOPCODE_H__ +#include + /* ARM Floating Point Instruction Classes | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | diff -Nru a/arch/arm/nwfpe/softfloat.h b/arch/arm/nwfpe/softfloat.h --- a/arch/arm/nwfpe/softfloat.h Mon Sep 22 00:30:18 2003 +++ b/arch/arm/nwfpe/softfloat.h Mon Sep 22 00:30:18 2003 @@ -32,6 +32,8 @@ #ifndef __SOFTFLOAT_H__ #define __SOFTFLOAT_H__ +#include + /* ------------------------------------------------------------------------------- The macro `FLOATX80' must be defined to enable the extended double-precision diff -Nru a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types --- a/arch/arm/tools/mach-types Mon Sep 22 00:30:21 2003 +++ b/arch/arm/tools/mach-types Mon Sep 22 00:30:21 2003 @@ -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: Sun Aug 3 16:26:10 2003 +# Last update: Thu Sep 18 17:15:55 2003 # # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number # @@ -367,3 +367,21 @@ ixp2000 ARCH_IXP2000 IXP2000 356 xda SA1100_XDA XDA 357 csir_ims ARCH_CSIR_IMS CSIR_IMS 358 +ixp421_dnaeeth ARCH_IXP421_DNAEETH IXP421_DNAEETH 359 +pocketserv9200 ARCH_POCKETSERV9200 POCKETSERV9200 360 +toto ARCH_TOTO TOTO 361 +s3c2440 ARCH_S3C2440 S3C2440 362 +ks8695p ARCH_KS8695P KS8695P 363 +se4000 ARCH_SE4000 SE4000 364 +quadriceps ARCH_QUADRICEPS QUADRICEPS 365 +bronco ARCH_BRONCO BRONCO 366 +esl_wireless_tab ARCH_ESL_WIRELESS_TABLETESL_WIRELESS_TABLET 367 +esl_sofcomp ARCH_ESL_SOFCOMP ESL_SOFCOMP 368 +s5c7375 ARCH_S5C7375 S5C7375 369 +spearhead ARCH_SPEARHEAD SPEARHEAD 370 +pantera ARCH_PANTERA PANTERA 371 +prayoglite ARCH_PRAYOGLITE PRAYOGLITE 372 +gumstik ARCH_GUMSTIK GUMSTIK 373 +rcube ARCH_RCUBE RCUBE 374 +rea_olv ARCH_REA_OLV REA_OLV 375 +pxa_iphone ARCH_PXA_IPHONE PXA_IPHONE 376 diff -Nru a/arch/arm26/boot/compressed/misc.c b/arch/arm26/boot/compressed/misc.c --- a/arch/arm26/boot/compressed/misc.c Mon Sep 22 00:30:20 2003 +++ b/arch/arm26/boot/compressed/misc.c Mon Sep 22 00:30:20 2003 @@ -191,8 +191,8 @@ { void *p; - if (size <0) error("Malloc error\n"); - if (free_mem_ptr <= 0) error("Memory error\n"); + if (size <0) error("Malloc error"); + if (free_mem_ptr <= 0) error("Memory error"); free_mem_ptr = (free_mem_ptr + 3) & ~3; /* Align */ @@ -236,7 +236,7 @@ int fill_inbuf(void) { if (insize != 0) - error("ran out of input data\n"); + error("ran out of input data"); inbuf = input_data; insize = &input_data_end[0] - &input_data[0]; diff -Nru a/arch/cris/arch-v10/boot/compressed/misc.c b/arch/cris/arch-v10/boot/compressed/misc.c --- a/arch/cris/arch-v10/boot/compressed/misc.c Mon Sep 22 00:30:24 2003 +++ b/arch/cris/arch-v10/boot/compressed/misc.c Mon Sep 22 00:30:24 2003 @@ -115,7 +115,7 @@ { void *p; - if (size <0) error("Malloc error\n"); + if (size <0) error("Malloc error"); free_mem_ptr = (free_mem_ptr + 3) & ~3; /* Align */ diff -Nru a/arch/h8300/kernel/signal.c b/arch/h8300/kernel/signal.c --- a/arch/h8300/kernel/signal.c Mon Sep 22 00:30:21 2003 +++ b/arch/h8300/kernel/signal.c Mon Sep 22 00:30:21 2003 @@ -593,7 +593,7 @@ continue; case SIGTSTP: case SIGTTIN: case SIGTTOU: - if (is_orphaned_pgrp(current->pgrp)) + if (is_orphaned_pgrp(process_group(current))) continue; /* FALLTHRU */ diff -Nru a/arch/i386/Kconfig b/arch/i386/Kconfig --- a/arch/i386/Kconfig Mon Sep 22 00:30:19 2003 +++ b/arch/i386/Kconfig Mon Sep 22 00:30:19 2003 @@ -454,6 +454,7 @@ config NR_CPUS int "Maximum number of CPUs (2-255)" depends on SMP + default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000 default "8" help This allows you to specify the maximum number of CPUs which this diff -Nru a/arch/i386/boot/compressed/misc.c b/arch/i386/boot/compressed/misc.c --- a/arch/i386/boot/compressed/misc.c Mon Sep 22 00:30:22 2003 +++ b/arch/i386/boot/compressed/misc.c Mon Sep 22 00:30:22 2003 @@ -132,8 +132,8 @@ { void *p; - if (size <0) error("Malloc error\n"); - if (free_mem_ptr <= 0) error("Memory error\n"); + if (size <0) error("Malloc error"); + if (free_mem_ptr <= 0) error("Memory error"); free_mem_ptr = (free_mem_ptr + 3) & ~3; /* Align */ @@ -141,7 +141,7 @@ free_mem_ptr += size; if (free_mem_ptr >= free_mem_end_ptr) - error("\nOut of memory\n"); + error("Out of memory"); return p; } @@ -232,7 +232,7 @@ static int fill_inbuf(void) { if (insize != 0) { - error("ran out of input data\n"); + error("ran out of input data"); } inbuf = input_data; @@ -306,9 +306,9 @@ static void setup_normal_output_buffer(void) { #ifdef STANDARD_MEMORY_BIOS_CALL - if (EXT_MEM_K < 1024) error("Less than 2MB of memory.\n"); + if (EXT_MEM_K < 1024) error("Less than 2MB of memory"); #else - if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < 1024) error("Less than 2MB of memory.\n"); + if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < 1024) error("Less than 2MB of memory"); #endif output_data = (char *)0x100000; /* Points to 1M */ free_mem_end_ptr = (long)real_mode; @@ -323,9 +323,9 @@ { high_buffer_start = (uch *)(((ulg)&end) + HEAP_SIZE); #ifdef STANDARD_MEMORY_BIOS_CALL - if (EXT_MEM_K < (3*1024)) error("Less than 4MB of memory.\n"); + if (EXT_MEM_K < (3*1024)) error("Less than 4MB of memory"); #else - if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < (3*1024)) error("Less than 4MB of memory.\n"); + if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < (3*1024)) error("Less than 4MB of memory"); #endif mv->low_buffer_start = output_data = (char *)LOW_BUFFER_START; low_buffer_end = ((unsigned int)real_mode > LOW_BUFFER_MAX diff -Nru a/arch/i386/boot/setup.S b/arch/i386/boot/setup.S --- a/arch/i386/boot/setup.S Mon Sep 22 00:30:22 2003 +++ b/arch/i386/boot/setup.S Mon Sep 22 00:30:22 2003 @@ -506,6 +506,17 @@ movw $0xAA, (0x1ff) # device present no_psmouse: +#if defined(CONFIG_X86_SPEEDSTEP_SMI) || defined(CONFIG_X86_SPEEDSTEP_SMI_MODULE) + movl $0x0000E980, %eax # IST Support + movl $0x47534943, %edx # Request value + int $0x15 + + movl %eax, (96) + movl %ebx, (100) + movl %ecx, (104) + movl %edx, (108) +#endif + #if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) # Then check for an APM BIOS... # %ds points to the bootsector diff -Nru a/arch/i386/boot98/compressed/misc.c b/arch/i386/boot98/compressed/misc.c --- a/arch/i386/boot98/compressed/misc.c Mon Sep 22 00:30:19 2003 +++ b/arch/i386/boot98/compressed/misc.c Mon Sep 22 00:30:19 2003 @@ -132,8 +132,8 @@ { void *p; - if (size <0) error("Malloc error\n"); - if (free_mem_ptr <= 0) error("Memory error\n"); + if (size <0) error("Malloc error"); + if (free_mem_ptr <= 0) error("Memory error"); free_mem_ptr = (free_mem_ptr + 3) & ~3; /* Align */ @@ -141,7 +141,7 @@ free_mem_ptr += size; if (free_mem_ptr >= free_mem_end_ptr) - error("\nOut of memory\n"); + error("Out of memory"); return p; } @@ -232,7 +232,7 @@ static int fill_inbuf(void) { if (insize != 0) { - error("ran out of input data\n"); + error("ran out of input data"); } inbuf = input_data; @@ -306,9 +306,9 @@ static void setup_normal_output_buffer(void) { #ifdef STANDARD_MEMORY_BIOS_CALL - if (EXT_MEM_K < 1024) error("Less than 2MB of memory.\n"); + if (EXT_MEM_K < 1024) error("Less than 2MB of memory"); #else - if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < 1024) error("Less than 2MB of memory.\n"); + if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < 1024) error("Less than 2MB of memory"); #endif output_data = (char *)0x100000; /* Points to 1M */ free_mem_end_ptr = (long)real_mode; @@ -323,9 +323,9 @@ { high_buffer_start = (uch *)(((ulg)&end) + HEAP_SIZE); #ifdef STANDARD_MEMORY_BIOS_CALL - if (EXT_MEM_K < (3*1024)) error("Less than 4MB of memory.\n"); + if (EXT_MEM_K < (3*1024)) error("Less than 4MB of memory"); #else - if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < (3*1024)) error("Less than 4MB of memory.\n"); + if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < (3*1024)) error("Less than 4MB of memory"); #endif mv->low_buffer_start = output_data = (char *)LOW_BUFFER_START; low_buffer_end = ((unsigned int)real_mode > LOW_BUFFER_MAX diff -Nru a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c --- a/arch/i386/kernel/apm.c Mon Sep 22 00:30:18 2003 +++ b/arch/i386/kernel/apm.c Mon Sep 22 00:30:18 2003 @@ -2008,7 +2008,7 @@ if (apm_proc) apm_proc->owner = THIS_MODULE; - kernel_thread(apm, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); + kernel_thread(apm, NULL, CLONE_KERNEL | SIGCHLD); if (num_online_cpus() > 1 && !smp ) { printk(KERN_NOTICE diff -Nru a/arch/i386/kernel/cpu/cpufreq/Kconfig b/arch/i386/kernel/cpu/cpufreq/Kconfig --- a/arch/i386/kernel/cpu/cpufreq/Kconfig Mon Sep 22 00:30:19 2003 +++ b/arch/i386/kernel/cpu/cpufreq/Kconfig Mon Sep 22 00:30:19 2003 @@ -99,34 +99,46 @@ If in doubt, say N. +config X86_SPEEDSTEP_CENTRINO + tristate "Intel Enhanced SpeedStep" + depends on CPU_FREQ_TABLE + help + This adds the CPUFreq driver for Enhanced SpeedStep enabled + mobile CPUs. This means Intel Pentium M (Centrino) CPUs. + + For details, take a look at linux/Documentation/cpu-freq. + + If in doubt, say N. + config X86_SPEEDSTEP_ICH - tristate "Intel Speedstep" + tristate "Intel Speedstep on ICH-M chipsets (ioport interface)" depends on CPU_FREQ_TABLE help This adds the CPUFreq driver for certain mobile Intel Pentium III (Coppermine), all mobile Intel Pentium III-M (Tualatin) and all - mobile Intel Pentium 4 P4-Ms, with an Intel ICH2, ICH3, - or ICH4 southbridge. + mobile Intel Pentium 4 P4-M on systems which have an Intel ICH2, + ICH3 or ICH4 southbridge. For details, take a look at linux/Documentation/cpu-freq. If in doubt, say N. -config X86_SPEEDSTEP_CENTRINO - tristate "Intel Enhanced SpeedStep" - depends on CPU_FREQ_TABLE +config X86_SPEEDSTEP_SMI + tristate "Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)" + depends on CPU_FREQ_TABLE && EXPERIMENTAL help - This adds the CPUFreq driver for Enhanced SpeedStep enabled - mobile CPUs. This means Intel Pentium M (Centrino) CPUs. - - For details, take a look at linux/Documentation/cpu-freq. - + This adds the CPUFreq driver for certain mobile Intel Pentium III + (Coppermine), all mobile Intel Pentium III-M (Tualatin) + on systems which have an Intel 440BX/ZX/MX southbridge. + + For details, take a look at linux/Documentation/cpu-freq. + If in doubt, say N. config X86_SPEEDSTEP_LIB - tristate - depends on X86_SPEEDSTEP_ICH - default X86_SPEEDSTEP_ICH + tristate + depends on (X86_SPEEDSTEP_ICH || X86_SPEEDSTEP_SMI) + default (X86_SPEEDSTEP_ICH || X86_SPEEDSTEP_SMI) config X86_P4_CLOCKMOD tristate "Intel Pentium 4 clock modulation" diff -Nru a/arch/i386/kernel/cpu/cpufreq/Makefile b/arch/i386/kernel/cpu/cpufreq/Makefile --- a/arch/i386/kernel/cpu/cpufreq/Makefile Mon Sep 22 00:30:21 2003 +++ b/arch/i386/kernel/cpu/cpufreq/Makefile Mon Sep 22 00:30:21 2003 @@ -9,6 +9,7 @@ obj-$(CONFIG_X86_SPEEDSTEP_ICH) += speedstep-ich.o obj-$(CONFIG_X86_SPEEDSTEP_CENTRINO) += speedstep-centrino.o obj-$(CONFIG_X86_SPEEDSTEP_LIB) += speedstep-lib.o +obj-$(CONFIG_X86_SPEEDSTEP_SMI) += speedstep-smi.o ifdef CONFIG_X86_ACPI_CPUFREQ ifdef CONFIG_ACPI_DEBUG diff -Nru a/arch/i386/kernel/cpu/cpufreq/acpi.c b/arch/i386/kernel/cpu/cpufreq/acpi.c --- a/arch/i386/kernel/cpu/cpufreq/acpi.c Mon Sep 22 00:30:18 2003 +++ b/arch/i386/kernel/cpu/cpufreq/acpi.c Mon Sep 22 00:30:18 2003 @@ -24,6 +24,7 @@ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +#include #include #include #include diff -Nru a/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c b/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c --- a/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c Mon Sep 22 00:30:24 2003 +++ b/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c Mon Sep 22 00:30:24 2003 @@ -20,6 +20,7 @@ * */ +#include #include #include #include diff -Nru a/arch/i386/kernel/cpu/cpufreq/powernow-k7.c b/arch/i386/kernel/cpu/cpufreq/powernow-k7.c --- a/arch/i386/kernel/cpu/cpufreq/powernow-k7.c Mon Sep 22 00:30:18 2003 +++ b/arch/i386/kernel/cpu/cpufreq/powernow-k7.c Mon Sep 22 00:30:18 2003 @@ -14,6 +14,7 @@ * - We disable half multipliers if ACPI is used on A0 stepping CPUs. */ +#include #include #include #include @@ -191,10 +192,11 @@ { union msr_fidvidctl fidvidctl; + rdmsrl (MSR_K7_FID_VID_CTL, fidvidctl.val); if (fidvidctl.bits.FID != fid) { - rdmsrl (MSR_K7_FID_VID_CTL, fidvidctl.val); fidvidctl.bits.SGTC = latency; fidvidctl.bits.FID = fid; + fidvidctl.bits.VIDC = 0; fidvidctl.bits.FIDC = 1; wrmsrl (MSR_K7_FID_VID_CTL, fidvidctl.val); } @@ -205,9 +207,11 @@ { union msr_fidvidctl fidvidctl; + rdmsrl (MSR_K7_FID_VID_CTL, fidvidctl.val); if (fidvidctl.bits.VID != vid) { - rdmsrl (MSR_K7_FID_VID_CTL, fidvidctl.val); + fidvidctl.bits.SGTC = latency; fidvidctl.bits.VID = vid; + fidvidctl.bits.FIDC = 0; fidvidctl.bits.VIDC = 1; wrmsrl (MSR_K7_FID_VID_CTL, fidvidctl.val); } @@ -297,8 +301,14 @@ dprintk (" voltage regulator)\n"); latency = psb->settlingtime; + if (latency < 100) { + printk (KERN_INFO PFX "BIOS set settling time to %d microseconds." + "Should be at least 100. Correcting.\n", latency); + latency = 100; + } dprintk (KERN_INFO PFX "Settling Time: %d microseconds.\n", psb->settlingtime); dprintk (KERN_INFO PFX "Has %d PST tables. (Only dumping ones relevant to this CPU).\n", psb->numpst); + latency *= 100; /* SGTC needs to be in units of 10ns */ p += sizeof (struct psb_s); diff -Nru a/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c b/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,362 @@ +/* + * Intel SpeedStep SMI driver. + * + * (C) 2003 Hiroshi Miura + * + * Licensed under the terms of the GNU GPL License version 2. + * + */ + + +/********************************************************************* + * SPEEDSTEP - DEFINITIONS * + *********************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "speedstep-lib.h" + +#define PFX "speedstep-smi: " + +/* speedstep system management interface port/command. + * + * These parameters are got from IST-SMI BIOS call. + * If user gives it, these are used. + * + */ +static int smi_port = 0; +static int smi_cmd = 0; +static unsigned int smi_sig = 0; + + +/* + * There are only two frequency states for each processor. Values + * are in kHz for the time being. + */ +static struct cpufreq_frequency_table speedstep_freqs[] = { + {SPEEDSTEP_HIGH, 0}, + {SPEEDSTEP_LOW, 0}, + {0, CPUFREQ_TABLE_END}, +}; + +#define GET_SPEEDSTEP_OWNER 0 +#define GET_SPEEDSTEP_STATE 1 +#define SET_SPEEDSTEP_STATE 2 +#define GET_SPEEDSTEP_FREQS 4 + +/* DEBUG + * Define it if you want verbose debug output, e.g. for bug reporting + */ +#define SPEEDSTEP_DEBUG + +#ifdef SPEEDSTEP_DEBUG +#define dprintk(msg...) printk(msg) +#else +#define dprintk(msg...) do { } while(0) +#endif + +/** + * speedstep_smi_ownership + */ +static int speedstep_smi_ownership (void) +{ + u32 command, result, magic; + u32 function = GET_SPEEDSTEP_OWNER; + unsigned char magic_data[] = "Copyright (c) 1999 Intel Corporation"; + + command = (smi_sig & 0xffffff00) | (smi_cmd & 0xff); + magic = virt_to_phys(magic_data); + + __asm__ __volatile__( + "out %%al, (%%dx)\n" + : "=D" (result) + : "a" (command), "b" (function), "c" (0), "d" (smi_port), "D" (0), "S" (magic) + ); + + return result; +} + +/** + * speedstep_smi_get_freqs - get SpeedStep preferred & current freq. + * + */ +static int speedstep_smi_get_freqs (unsigned int *low, unsigned int *high) +{ + u32 command, result, edi, high_mhz, low_mhz; + u32 state=0; + u32 function = GET_SPEEDSTEP_FREQS; + + command = (smi_sig & 0xffffff00) | (smi_cmd & 0xff); + + __asm__ __volatile__("movl $0, %%edi\n" + "out %%al, (%%dx)\n" + : "=a" (result), "=b" (high_mhz), "=c" (low_mhz), "=d" (state), "=D" (edi) + : "a" (command), "b" (function), "c" (state), "d" (smi_port), "S" (0) + ); + *high = high_mhz * 1000; + *low = low_mhz * 1000; + + return result; +} + +/** + * speedstep_get_state - set the SpeedStep state + * @state: processor frequency state (SPEEDSTEP_LOW or SPEEDSTEP_HIGH) + * + */ +static int speedstep_get_state (void) +{ + u32 function=GET_SPEEDSTEP_STATE; + u32 result, state, edi, command; + + command = (smi_sig & 0xffffff00) | (smi_cmd & 0xff); + + __asm__ __volatile__("movl $0, %%edi\n" + "out %%al, (%%dx)\n" + : "=a" (result), "=b" (state), "=D" (edi) + : "a" (command), "b" (function), "c" (0), "d" (smi_port), "S" (0) + ); + + return state; +} + +/** + * speedstep_set_state - set the SpeedStep state + * @state: new processor frequency state (SPEEDSTEP_LOW or SPEEDSTEP_HIGH) + * + */ +static void speedstep_set_state (unsigned int state, unsigned int notify) +{ + unsigned int old_state, result, command, new_state; + unsigned long flags; + struct cpufreq_freqs freqs; + unsigned int function=SET_SPEEDSTEP_STATE; + + if (state > 0x1) + return; + + old_state = speedstep_get_state(); + freqs.old = speedstep_freqs[old_state].frequency; + freqs.new = speedstep_freqs[state].frequency; + freqs.cpu = 0; /* speedstep.c is UP only driver */ + + if (old_state == state) + return; + + if (notify) + cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); + + /* Disable IRQs */ + local_irq_save(flags); + + command = (smi_sig & 0xffffff00) | (smi_cmd & 0xff); + __asm__ __volatile__( + "movl $0, %%edi\n" + "out %%al, (%%dx)\n" + : "=b" (new_state), "=D" (result) + : "a" (command), "b" (function), "c" (state), "d" (smi_port), "S" (0) + ); + + /* enable IRQs */ + local_irq_restore(flags); + + if (new_state == state) { + dprintk(KERN_INFO "cpufreq: change to %u MHz succeded\n", (freqs.new / 1000)); + } else { + printk(KERN_ERR "cpufreq: change failed\n"); + } + + if (notify) + cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); + + return; +} + + +/** + * speedstep_target - set a new CPUFreq policy + * @policy: new policy + * @target_freq: new freq + * @relation: + * + * Sets a new CPUFreq policy/freq. + */ +static int speedstep_target (struct cpufreq_policy *policy, + unsigned int target_freq, unsigned int relation) +{ + unsigned int newstate = 0; + + if (cpufreq_frequency_table_target(policy, &speedstep_freqs[0], target_freq, relation, &newstate)) + return -EINVAL; + + speedstep_set_state(newstate, 1); + + return 0; +} + + +/** + * speedstep_verify - verifies a new CPUFreq policy + * @freq: new policy + * + * Limit must be within speedstep_low_freq and speedstep_high_freq, with + * at least one border included. + */ +static int speedstep_verify (struct cpufreq_policy *policy) +{ + return cpufreq_frequency_table_verify(policy, &speedstep_freqs[0]); +} + + +static int speedstep_cpu_init(struct cpufreq_policy *policy) +{ + int result; + unsigned int speed,state; + + /* capability check */ + if (policy->cpu != 0) + return -ENODEV; + + result = speedstep_smi_ownership(); + + if (result) + dprintk(KERN_INFO "cpufreq: fails an aquiring ownership of a SMI interface.\n"); + + /* detect low and high frequency */ + result = speedstep_smi_get_freqs(&speedstep_freqs[SPEEDSTEP_LOW].frequency, + &speedstep_freqs[SPEEDSTEP_HIGH].frequency); + if (result) { + /* fall back to speedstep_lib.c dection mechanism: try both states out */ + unsigned int speedstep_processor = speedstep_detect_processor(); + + dprintk(KERN_INFO PFX "could not detect low and high frequencies by SMI call.\n"); + if (!speedstep_processor) + return -ENODEV; + + result = speedstep_get_freqs(speedstep_processor, + &speedstep_freqs[SPEEDSTEP_LOW].frequency, + &speedstep_freqs[SPEEDSTEP_HIGH].frequency, + &speedstep_set_state); + + if (result) { + dprintk(KERN_INFO PFX "could not detect two different speeds -- aborting.\n"); + return result; + } else + dprintk(KERN_INFO PFX "workaround worked.\n"); + } + + /* get current speed setting */ + state = speedstep_get_state(); + speed = speedstep_freqs[state].frequency; + + dprintk(KERN_INFO "cpufreq: currently at %s speed setting - %i MHz\n", + (speed == speedstep_freqs[SPEEDSTEP_LOW].frequency) ? "low" : "high", + (speed / 1000)); + + /* cpuinfo and default policy values */ + policy->governor = CPUFREQ_DEFAULT_GOVERNOR; + policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL; + policy->cur = speed; + + return cpufreq_frequency_table_cpuinfo(policy, &speedstep_freqs[0]); +} + + +static int speedstep_resume(struct cpufreq_policy *policy) +{ + int result = speedstep_smi_ownership(); + + if (result) + dprintk(KERN_INFO "cpufreq: fails an aquiring ownership of a SMI interface.\n"); + + return result; +} + + +static struct cpufreq_driver speedstep_driver = { + .name = "speedstep-smi", + .verify = speedstep_verify, + .target = speedstep_target, + .init = speedstep_cpu_init, + .resume = speedstep_resume, +}; + +/** + * speedstep_init - initializes the SpeedStep CPUFreq driver + * + * Initializes the SpeedStep support. Returns -ENODEV on unsupported + * BIOS, -EINVAL on problems during initiatization, and zero on + * success. + */ +static int __init speedstep_init(void) +{ + struct cpuinfo_x86 *c = cpu_data; + + if (c->x86_vendor != X86_VENDOR_INTEL) { + printk (KERN_INFO PFX "No Intel CPU detected.\n"); + return -ENODEV; + } + + dprintk(KERN_DEBUG PFX "signature:0x%.8lx, command:0x%.8lx, event:0x%.8lx, perf_level:0x%.8lx.\n", + ist_info.signature, ist_info.command, ist_info.event, ist_info.perf_level); + + + /* Error if no IST-SMI BIOS or no PARM + sig= 'ISGE' aka 'Intel Speedstep Gate E' */ + if ((ist_info.signature != 0x47534943) && ( + (smi_port == 0) || (smi_cmd == 0))) + return -ENODEV; + + if (smi_sig == 1) + smi_sig = 0x47534943; + else + smi_sig = ist_info.signature; + + /* setup smi_port from MODLULE_PARM or BIOS */ + if ((smi_port > 0xff) || (smi_port < 0)) { + return -EINVAL; + } else if (smi_port == 0) { + smi_port = ist_info.command & 0xff; + } + + if ((smi_cmd > 0xff) || (smi_cmd < 0)) { + return -EINVAL; + } else if (smi_cmd == 0) { + smi_cmd = (ist_info.command >> 16) & 0xff; + } + + return cpufreq_register_driver(&speedstep_driver); +} + + +/** + * speedstep_exit - unregisters SpeedStep support + * + * Unregisters SpeedStep support. + */ +static void __exit speedstep_exit(void) +{ + cpufreq_unregister_driver(&speedstep_driver); +} + +module_param(smi_port, int, 0444); +module_param(smi_cmd, int, 0444); +module_param(smi_sig, uint, 0444); + +MODULE_PARM_DESC(smi_port, "Override the BIOS-given IST port with this value -- Intel's default setting is 0xb2"); +MODULE_PARM_DESC(smi_cmd, "Override the BIOS-given IST command with this value -- Intel's default setting is 0x82"); +MODULE_PARM_DESC(smi_sig, "Set to 1 to fake the IST signature when using the SMI interface."); + +MODULE_AUTHOR ("Hiroshi Miura"); +MODULE_DESCRIPTION ("Speedstep driver for IST applet SMI interface."); +MODULE_LICENSE ("GPL"); + +module_init(speedstep_init); +module_exit(speedstep_exit); diff -Nru a/arch/i386/kernel/cpu/intel.c b/arch/i386/kernel/cpu/intel.c --- a/arch/i386/kernel/cpu/intel.c Mon Sep 22 00:30:20 2003 +++ b/arch/i386/kernel/cpu/intel.c Mon Sep 22 00:30:20 2003 @@ -164,7 +164,7 @@ } #endif - + select_idle_routine(c); if (c->cpuid_level > 1) { /* supports eax=2 call */ int i, j, n; diff -Nru a/arch/i386/kernel/cpu/mtrr/if.c b/arch/i386/kernel/cpu/mtrr/if.c --- a/arch/i386/kernel/cpu/mtrr/if.c Mon Sep 22 00:30:19 2003 +++ b/arch/i386/kernel/cpu/mtrr/if.c Mon Sep 22 00:30:19 2003 @@ -13,7 +13,6 @@ /* RED-PEN: this is accessed without any locking */ extern unsigned int *usage_table; -static int mtrr_seq_show(struct seq_file *seq, void *offset); #define FILE_FCOUNT(f) (((struct seq_file *)((f)->private_data))->private) @@ -33,6 +32,8 @@ return (x <= 6) ? mtrr_strings[x] : "?"; } +#ifdef CONFIG_PROC_FS + static int mtrr_file_add(unsigned long base, unsigned long size, unsigned int type, char increment, struct file *file, int page) @@ -291,6 +292,8 @@ return single_release(ino, file); } +static int mtrr_seq_show(struct seq_file *seq, void *offset); + static int mtrr_open(struct inode *inode, struct file *file) { if (!mtrr_if) @@ -310,11 +313,9 @@ .release = mtrr_close, }; -# ifdef CONFIG_PROC_FS static struct proc_dir_entry *proc_root_mtrr; -# endif /* CONFIG_PROC_FS */ static int mtrr_seq_show(struct seq_file *seq, void *offset) { @@ -351,15 +352,14 @@ static int __init mtrr_if_init(void) { -#ifdef CONFIG_PROC_FS proc_root_mtrr = create_proc_entry("mtrr", S_IWUSR | S_IRUGO, &proc_root); if (proc_root_mtrr) { proc_root_mtrr->owner = THIS_MODULE; proc_root_mtrr->proc_fops = &mtrr_fops; } -#endif return 0; } arch_initcall(mtrr_if_init); +#endif /* CONFIG_PROC_FS */ diff -Nru a/arch/i386/kernel/i386_ksyms.c b/arch/i386/kernel/i386_ksyms.c --- a/arch/i386/kernel/i386_ksyms.c Mon Sep 22 00:30:25 2003 +++ b/arch/i386/kernel/i386_ksyms.c Mon Sep 22 00:30:25 2003 @@ -33,6 +33,7 @@ #include #include #include +#include extern void dump_thread(struct pt_regs *, struct user *); extern spinlock_t rtc_lock; @@ -62,9 +63,6 @@ /* platform dependent support */ EXPORT_SYMBOL(boot_cpu_data); -#ifdef CONFIG_EISA -EXPORT_SYMBOL(EISA_bus); -#endif EXPORT_SYMBOL(MCA_bus); #ifdef CONFIG_DISCONTIGMEM EXPORT_SYMBOL(node_data); @@ -208,4 +206,8 @@ #ifdef CONFIG_EDD_MODULE EXPORT_SYMBOL(edd); EXPORT_SYMBOL(eddnr); +#endif + +#if defined(CONFIG_X86_SPEEDSTEP_SMI) || defined(CONFIG_X86_SPEEDSTEP_SMI_MODULE) +EXPORT_SYMBOL(ist_info); #endif diff -Nru a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c --- a/arch/i386/kernel/io_apic.c Mon Sep 22 00:30:20 2003 +++ b/arch/i386/kernel/io_apic.c Mon Sep 22 00:30:20 2003 @@ -1143,6 +1143,7 @@ static int __init assign_irq_vector(int irq) { static int current_vector = FIRST_DEVICE_VECTOR, offset = 0; + BUG_ON(irq >= NR_IRQS); if (IO_APIC_VECTOR(irq) > 0) return IO_APIC_VECTOR(irq); next: @@ -1652,6 +1653,10 @@ mp_ioapics[apic].mpc_apicid = reg_00.bits.ID; } + /* Don't check I/O APIC IDs for some xAPIC systems. They have + * no meaning without the serial APIC bus. */ + if (NO_IOAPIC_CHECK) + continue; /* * Sanity check, is the ID really free? Every APIC in a * system must have a unique ID or we get lots of nice diff -Nru a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c --- a/arch/i386/kernel/mpparse.c Mon Sep 22 00:30:20 2003 +++ b/arch/i386/kernel/mpparse.c Mon Sep 22 00:30:20 2003 @@ -167,6 +167,11 @@ boot_cpu_logical_apicid = apicid; } + if (num_processors >= NR_CPUS) { + printk(KERN_WARNING "NR_CPUS limit of %i reached. Cannot " + "boot CPU(apicid 0x%d).\n", NR_CPUS, m->mpc_apicid); + return; + } num_processors++; if (MAX_APICS - m->mpc_apicid <= 0) { diff -Nru a/arch/i386/kernel/numaq.c b/arch/i386/kernel/numaq.c --- a/arch/i386/kernel/numaq.c Mon Sep 22 00:30:23 2003 +++ b/arch/i386/kernel/numaq.c Mon Sep 22 00:30:23 2003 @@ -99,8 +99,14 @@ } } -void __init get_memcfg_numaq(void) +/* + * Unlike Summit, we don't really care to let the NUMA-Q + * fall back to flat mode. Don't compile for NUMA-Q + * unless you really need it! + */ +int __init get_memcfg_numaq(void) { smp_dump_qct(); initialize_physnode_map(); + return 1; } diff -Nru a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c --- a/arch/i386/kernel/process.c Mon Sep 22 00:30:17 2003 +++ b/arch/i386/kernel/process.c Mon Sep 22 00:30:17 2003 @@ -151,11 +151,57 @@ } } +/* + * This uses new MONITOR/MWAIT instructions on P4 processors with PNI, + * which can obviate IPI to trigger checking of need_resched. + * We execute MONITOR against need_resched and enter optimized wait state + * through MWAIT. Whenever someone changes need_resched, we would be woken + * up from MWAIT (without an IPI). + */ +static void mwait_idle(void) +{ + local_irq_enable(); + + if (!need_resched()) { + set_thread_flag(TIF_POLLING_NRFLAG); + do { + __monitor((void *)¤t_thread_info()->flags, 0, 0); + if (need_resched()) + break; + __mwait(0, 0); + } while (!need_resched()); + clear_thread_flag(TIF_POLLING_NRFLAG); + } +} + +void __init select_idle_routine(const struct cpuinfo_x86 *c) +{ + if (cpu_has(c, X86_FEATURE_MWAIT)) { + printk("monitor/mwait feature present.\n"); + /* + * Skip, if setup has overridden idle. + * Also, take care of system with asymmetric CPUs. + * Use, mwait_idle only if all cpus support it. + * If not, we fallback to default_idle() + */ + if (!pm_idle) { + printk("using mwait in idle threads.\n"); + pm_idle = mwait_idle; + } + return; + } + pm_idle = default_idle; + return; +} + static int __init idle_setup (char *str) { if (!strncmp(str, "poll", 4)) { printk("using polling idle threads.\n"); pm_idle = poll_idle; + } else if (!strncmp(str, "halt", 4)) { + printk("using halt in idle threads.\n"); + pm_idle = default_idle; } return 1; diff -Nru a/arch/i386/kernel/reboot.c b/arch/i386/kernel/reboot.c --- a/arch/i386/kernel/reboot.c Mon Sep 22 00:30:20 2003 +++ b/arch/i386/kernel/reboot.c Mon Sep 22 00:30:20 2003 @@ -251,7 +251,7 @@ * other OSs see a clean IRQ state. */ smp_send_stop(); -#elif CONFIG_X86_LOCAL_APIC +#elif defined(CONFIG_X86_LOCAL_APIC) if (cpu_has_apic) { local_irq_disable(); disable_local_APIC(); diff -Nru a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c --- a/arch/i386/kernel/setup.c Mon Sep 22 00:30:21 2003 +++ b/arch/i386/kernel/setup.c Mon Sep 22 00:30:21 2003 @@ -44,6 +44,7 @@ #include #include #include +#include #include "setup_arch_pre.h" #include "mach_resources.h" @@ -102,6 +103,7 @@ unsigned char table[0]; }; struct edid_info edid_info; +struct ist_info ist_info; struct e820map e820; unsigned char aux_device_present; @@ -960,6 +962,7 @@ screen_info = SCREEN_INFO; edid_info = EDID_INFO; apm_info.bios = APM_BIOS_INFO; + ist_info = IST_INFO; saved_videomode = VIDEO_MODE; printk("Video mode to be used for restore is %lx\n", saved_videomode); if( SYS_DESC_TABLE.length != 0 ) { diff -Nru a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c --- a/arch/i386/kernel/smpboot.c Mon Sep 22 00:30:21 2003 +++ b/arch/i386/kernel/smpboot.c Mon Sep 22 00:30:21 2003 @@ -915,13 +915,13 @@ cacheflush_time = (cpu_khz>>10) * (cachesize<<10) / bandwidth; } - cache_decay_ticks = (long)cacheflush_time/cpu_khz * HZ / 1000; + cache_decay_ticks = (long)cacheflush_time/cpu_khz + 1; printk("per-CPU timeslice cutoff: %ld.%02ld usecs.\n", (long)cacheflush_time/(cpu_khz/1000), ((long)cacheflush_time*100/(cpu_khz/1000)) % 100); printk("task migration cache decay timeout: %ld msecs.\n", - (cache_decay_ticks + 1) * 1000 / HZ); + cache_decay_ticks); } /* diff -Nru a/arch/i386/kernel/srat.c b/arch/i386/kernel/srat.c --- a/arch/i386/kernel/srat.c Mon Sep 22 00:30:19 2003 +++ b/arch/i386/kernel/srat.c Mon Sep 22 00:30:19 2003 @@ -239,6 +239,11 @@ } } + if (num_memory_chunks == 0) { + printk("could not finy any ACPI SRAT memory areas.\n"); + goto out_fail; + } + /* Calculate total number of nodes in system from PXM bitmap and create * a set of sequential node IDs starting at zero. (ACPI doesn't seem * to specify the range of _PXM values.) @@ -295,10 +300,12 @@ } } } + return 1; +out_fail: return 0; } -void __init get_memcfg_from_srat(void) +int __init get_memcfg_from_srat(void) { struct acpi_table_header *header = NULL; struct acpi_table_rsdp *rsdp = NULL; @@ -316,11 +323,11 @@ (u32)rsdp_address->pointer.physical; } else { printk("%s: rsdp_address is not a physical pointer\n", __FUNCTION__); - return; + goto out_err; } if (!rsdp) { printk("%s: Didn't find ACPI root!\n", __FUNCTION__); - return; + goto out_err; } printk(KERN_INFO "%.8s v%d [%.6s]\n", rsdp->signature, rsdp->revision, @@ -328,7 +335,7 @@ if (strncmp(rsdp->signature, RSDP_SIG,strlen(RSDP_SIG))) { printk(KERN_WARNING "%s: RSDP table signature incorrect\n", __FUNCTION__); - return; + goto out_err; } rsdt = (struct acpi_table_rsdt *) @@ -338,14 +345,14 @@ printk(KERN_WARNING "%s: ACPI: Invalid root system description tables (RSDT)\n", __FUNCTION__); - return; + goto out_err; } header = & rsdt->header; if (strncmp(header->signature, RSDT_SIG, strlen(RSDT_SIG))) { printk(KERN_WARNING "ACPI: RSDT signature incorrect\n"); - return; + goto out_err; } /* @@ -356,15 +363,18 @@ */ tables = (header->length - sizeof(struct acpi_table_header)) / 4; + if (!tables) + goto out_err; + memcpy(&saved_rsdt, rsdt, sizeof(saved_rsdt)); if (saved_rsdt.header.length > sizeof(saved_rsdt)) { printk(KERN_WARNING "ACPI: Too big length in RSDT: %d\n", saved_rsdt.header.length); - return; + goto out_err; } -printk("Begin table scan....\n"); + printk("Begin SRAT table scan....\n"); for (i = 0; i < tables; i++) { /* Map in header, then map in full table length. */ @@ -379,10 +389,13 @@ if (strncmp((char *) &header->signature, "SRAT", 4)) continue; - acpi20_parse_srat((struct acpi_table_srat *)header); + /* we've found the srat table. don't need to look at any more tables */ - break; + return acpi20_parse_srat((struct acpi_table_srat *)header); } +out_err: + printk("failed to get NUMA memory information from SRAT table\n"); + return 0; } /* For each node run the memory list to determine whether there are diff -Nru a/arch/i386/kernel/timers/Makefile b/arch/i386/kernel/timers/Makefile --- a/arch/i386/kernel/timers/Makefile Mon Sep 22 00:30:17 2003 +++ b/arch/i386/kernel/timers/Makefile Mon Sep 22 00:30:17 2003 @@ -2,7 +2,7 @@ # Makefile for x86 timers # -obj-y := timer.o timer_none.o timer_tsc.o timer_pit.o +obj-y := timer.o timer_none.o timer_tsc.o timer_pit.o common.o obj-$(CONFIG_X86_CYCLONE_TIMER) += timer_cyclone.o obj-$(CONFIG_HPET_TIMER) += timer_hpet.o diff -Nru a/arch/i386/kernel/timers/common.c b/arch/i386/kernel/timers/common.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/i386/kernel/timers/common.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,139 @@ +/* + * Common functions used across the timers go here + */ + +#include +#include +#include + +#include +#include +#include + +#include "mach_timer.h" + +/* ------ Calibrate the TSC ------- + * Return 2^32 * (1 / (TSC clocks per usec)) for do_fast_gettimeoffset(). + * Too much 64-bit arithmetic here to do this cleanly in C, and for + * accuracy's sake we want to keep the overhead on the CTC speaker (channel 2) + * output busy loop as low as possible. We avoid reading the CTC registers + * directly because of the awkward 8-bit access mechanism of the 82C54 + * device. + */ + +#define CALIBRATE_TIME (5 * 1000020/HZ) + +unsigned long __init calibrate_tsc(void) +{ + mach_prepare_counter(); + + { + unsigned long startlow, starthigh; + unsigned long endlow, endhigh; + unsigned long count; + + rdtsc(startlow,starthigh); + mach_countup(&count); + rdtsc(endlow,endhigh); + + + /* Error: ECTCNEVERSET */ + if (count <= 1) + goto bad_ctc; + + /* 64-bit subtract - gcc just messes up with long longs */ + __asm__("subl %2,%0\n\t" + "sbbl %3,%1" + :"=a" (endlow), "=d" (endhigh) + :"g" (startlow), "g" (starthigh), + "0" (endlow), "1" (endhigh)); + + /* Error: ECPUTOOFAST */ + if (endhigh) + goto bad_ctc; + + /* Error: ECPUTOOSLOW */ + if (endlow <= CALIBRATE_TIME) + goto bad_ctc; + + __asm__("divl %2" + :"=a" (endlow), "=d" (endhigh) + :"r" (endlow), "0" (0), "1" (CALIBRATE_TIME)); + + return endlow; + } + + /* + * The CTC wasn't reliable: we got a hit on the very first read, + * or the CPU was so fast/slow that the quotient wouldn't fit in + * 32 bits.. + */ +bad_ctc: + return 0; +} + +#ifdef CONFIG_HPET_TIMER +/* ------ Calibrate the TSC using HPET ------- + * Return 2^32 * (1 / (TSC clocks per usec)) for getting the CPU freq. + * Second output is parameter 1 (when non NULL) + * Set 2^32 * (1 / (tsc per HPET clk)) for delay_hpet(). + * calibrate_tsc() calibrates the processor TSC by comparing + * it to the HPET timer of known frequency. + * Too much 64-bit arithmetic here to do this cleanly in C + */ +#define CALIBRATE_CNT_HPET (5 * hpet_tick) +#define CALIBRATE_TIME_HPET (5 * KERNEL_TICK_USEC) + +unsigned long __init calibrate_tsc_hpet(unsigned long *tsc_hpet_quotient_ptr) +{ + unsigned long tsc_startlow, tsc_starthigh; + unsigned long tsc_endlow, tsc_endhigh; + unsigned long hpet_start, hpet_end; + unsigned long result, remain; + + hpet_start = hpet_readl(HPET_COUNTER); + rdtsc(tsc_startlow, tsc_starthigh); + do { + hpet_end = hpet_readl(HPET_COUNTER); + } while ((hpet_end - hpet_start) < CALIBRATE_CNT_HPET); + rdtsc(tsc_endlow, tsc_endhigh); + + /* 64-bit subtract - gcc just messes up with long longs */ + __asm__("subl %2,%0\n\t" + "sbbl %3,%1" + :"=a" (tsc_endlow), "=d" (tsc_endhigh) + :"g" (tsc_startlow), "g" (tsc_starthigh), + "0" (tsc_endlow), "1" (tsc_endhigh)); + + /* Error: ECPUTOOFAST */ + if (tsc_endhigh) + goto bad_calibration; + + /* Error: ECPUTOOSLOW */ + if (tsc_endlow <= CALIBRATE_TIME_HPET) + goto bad_calibration; + + ASM_DIV64_REG(result, remain, tsc_endlow, 0, CALIBRATE_TIME_HPET); + if (remain > (tsc_endlow >> 1)) + result++; /* rounding the result */ + + if (tsc_hpet_quotient_ptr) { + unsigned long tsc_hpet_quotient; + + ASM_DIV64_REG(tsc_hpet_quotient, remain, tsc_endlow, 0, + CALIBRATE_CNT_HPET); + if (remain > (tsc_endlow >> 1)) + tsc_hpet_quotient++; /* rounding the result */ + *tsc_hpet_quotient_ptr = tsc_hpet_quotient; + } + + return result; +bad_calibration: + /* + * the CPU was so fast/slow that the quotient wouldn't fit in + * 32 bits.. + */ + return 0; +} +#endif + diff -Nru a/arch/i386/kernel/timers/timer_cyclone.c b/arch/i386/kernel/timers/timer_cyclone.c --- a/arch/i386/kernel/timers/timer_cyclone.c Mon Sep 22 00:30:23 2003 +++ b/arch/i386/kernel/timers/timer_cyclone.c Mon Sep 22 00:30:23 2003 @@ -19,7 +19,6 @@ #include extern spinlock_t i8253_lock; -extern unsigned long calibrate_tsc(void); /* Number of usecs that the last interrupt was delayed */ static int delay_at_last_interrupt; diff -Nru a/arch/i386/kernel/timers/timer_hpet.c b/arch/i386/kernel/timers/timer_hpet.c --- a/arch/i386/kernel/timers/timer_hpet.c Mon Sep 22 00:30:24 2003 +++ b/arch/i386/kernel/timers/timer_hpet.c Mon Sep 22 00:30:24 2003 @@ -131,63 +131,6 @@ } while ((hpet_end - hpet_start) < (loops)); } -/* ------ Calibrate the TSC ------- - * Return 2^32 * (1 / (TSC clocks per usec)) for getting the CPU freq. - * Set 2^32 * (1 / (tsc per HPET clk)) for delay_hpet(). - * calibrate_tsc() calibrates the processor TSC by comparing - * it to the HPET timer of known frequency. - * Too much 64-bit arithmetic here to do this cleanly in C - */ -#define CALIBRATE_CNT_HPET (5 * hpet_tick) -#define CALIBRATE_TIME_HPET (5 * KERNEL_TICK_USEC) - -static unsigned long __init calibrate_tsc(void) -{ - unsigned long tsc_startlow, tsc_starthigh; - unsigned long tsc_endlow, tsc_endhigh; - unsigned long hpet_start, hpet_end; - unsigned long result, remain; - - hpet_start = hpet_readl(HPET_COUNTER); - rdtsc(tsc_startlow, tsc_starthigh); - do { - hpet_end = hpet_readl(HPET_COUNTER); - } while ((hpet_end - hpet_start) < CALIBRATE_CNT_HPET); - rdtsc(tsc_endlow, tsc_endhigh); - - /* 64-bit subtract - gcc just messes up with long longs */ - __asm__("subl %2,%0\n\t" - "sbbl %3,%1" - :"=a" (tsc_endlow), "=d" (tsc_endhigh) - :"g" (tsc_startlow), "g" (tsc_starthigh), - "0" (tsc_endlow), "1" (tsc_endhigh)); - - /* Error: ECPUTOOFAST */ - if (tsc_endhigh) - goto bad_calibration; - - /* Error: ECPUTOOSLOW */ - if (tsc_endlow <= CALIBRATE_TIME_HPET) - goto bad_calibration; - - ASM_DIV64_REG(result, remain, tsc_endlow, 0, CALIBRATE_TIME_HPET); - if (remain > (tsc_endlow >> 1)) - result++; /* rounding the result */ - - ASM_DIV64_REG(tsc_hpet_quotient, remain, tsc_endlow, 0, - CALIBRATE_CNT_HPET); - if (remain > (tsc_endlow >> 1)) - tsc_hpet_quotient++; /* rounding the result */ - - return result; -bad_calibration: - /* - * the CPU was so fast/slow that the quotient wouldn't fit in - * 32 bits.. - */ - return 0; -} - static int __init init_hpet(char* override) { unsigned long result, remain; @@ -201,7 +144,7 @@ printk("Using HPET for gettimeofday\n"); if (cpu_has_tsc) { - unsigned long tsc_quotient = calibrate_tsc(); + unsigned long tsc_quotient = calibrate_tsc_hpet(&tsc_hpet_quotient); if (tsc_quotient) { /* report CPU clock rate in Hz. * The formula is (10^6 * 2^32) / (2^32 * 1 / (clocks/us)) = diff -Nru a/arch/i386/kernel/timers/timer_tsc.c b/arch/i386/kernel/timers/timer_tsc.c --- a/arch/i386/kernel/timers/timer_tsc.c Mon Sep 22 00:30:23 2003 +++ b/arch/i386/kernel/timers/timer_tsc.c Mon Sep 22 00:30:23 2003 @@ -39,7 +39,7 @@ static unsigned long last_tsc_low; /* lsb 32 bits of Time Stamp Counter */ static unsigned long last_tsc_high; /* msb 32 bits of Time Stamp Counter */ static unsigned long long monotonic_base; -static rwlock_t monotonic_lock = RW_LOCK_UNLOCKED; +static seqlock_t monotonic_lock = SEQLOCK_UNLOCKED; /* convert from cycles(64bits) => nanoseconds (64bits) * basic equation: @@ -111,12 +111,14 @@ static unsigned long long monotonic_clock_tsc(void) { unsigned long long last_offset, this_offset, base; + unsigned seq; /* atomically read monotonic base & last_offset */ - read_lock_irq(&monotonic_lock); - last_offset = ((unsigned long long)last_tsc_high<<32)|last_tsc_low; - base = monotonic_base; - read_unlock_irq(&monotonic_lock); + do { + seq = read_seqbegin(&monotonic_lock); + last_offset = ((unsigned long long)last_tsc_high<<32)|last_tsc_low; + base = monotonic_base; + } while (read_seqretry(&monotonic_lock, seq)); /* Read the Time Stamp Counter */ rdtscll(this_offset); @@ -125,6 +127,30 @@ return base + cycles_2_ns(this_offset - last_offset); } +/* + * Scheduler clock - returns current time in nanosec units. + */ +unsigned long long sched_clock(void) +{ + unsigned long long this_offset; + + /* + * In the NUMA case we dont use the TSC as they are not + * synchronized across all CPUs. + */ +#ifndef CONFIG_NUMA + if (unlikely(!cpu_has_tsc)) +#endif + return (unsigned long long)jiffies * (1000000000 / HZ); + + /* Read the Time Stamp Counter */ + rdtscll(this_offset); + + /* return the value in ns */ + return cycles_2_ns(this_offset); +} + + static void mark_offset_tsc(void) { unsigned long lost,delay; @@ -135,7 +161,7 @@ unsigned long long this_offset, last_offset; static int lost_count = 0; - write_lock(&monotonic_lock); + write_seqlock(&monotonic_lock); last_offset = ((unsigned long long)last_tsc_high<<32)|last_tsc_low; /* * It is important that these two operations happen almost at @@ -204,7 +230,7 @@ /* update the monotonic base value */ this_offset = ((unsigned long long)last_tsc_high<<32)|last_tsc_low; monotonic_base += cycles_2_ns(this_offset - last_offset); - write_unlock(&monotonic_lock); + write_sequnlock(&monotonic_lock); /* calculate delay_at_last_interrupt */ count = ((LATCH-1) - count) * TICK_SIZE; @@ -230,74 +256,13 @@ } while ((now-bclock) < loops); } -/* ------ Calibrate the TSC ------- - * Return 2^32 * (1 / (TSC clocks per usec)) for do_fast_gettimeoffset(). - * Too much 64-bit arithmetic here to do this cleanly in C, and for - * accuracy's sake we want to keep the overhead on the CTC speaker (channel 2) - * output busy loop as low as possible. We avoid reading the CTC registers - * directly because of the awkward 8-bit access mechanism of the 82C54 - * device. - */ - -#define CALIBRATE_TIME (5 * 1000020/HZ) - -static unsigned long __init calibrate_tsc(void) -{ - mach_prepare_counter(); - - { - unsigned long startlow, starthigh; - unsigned long endlow, endhigh; - unsigned long count; - - rdtsc(startlow,starthigh); - mach_countup(&count); - rdtsc(endlow,endhigh); - - last_tsc_low = endlow; - - /* Error: ECTCNEVERSET */ - if (count <= 1) - goto bad_ctc; - - /* 64-bit subtract - gcc just messes up with long longs */ - __asm__("subl %2,%0\n\t" - "sbbl %3,%1" - :"=a" (endlow), "=d" (endhigh) - :"g" (startlow), "g" (starthigh), - "0" (endlow), "1" (endhigh)); - - /* Error: ECPUTOOFAST */ - if (endhigh) - goto bad_ctc; - - /* Error: ECPUTOOSLOW */ - if (endlow <= CALIBRATE_TIME) - goto bad_ctc; - - __asm__("divl %2" - :"=a" (endlow), "=d" (endhigh) - :"r" (endlow), "0" (0), "1" (CALIBRATE_TIME)); - - return endlow; - } - - /* - * The CTC wasn't reliable: we got a hit on the very first read, - * or the CPU was so fast/slow that the quotient wouldn't fit in - * 32 bits.. - */ -bad_ctc: - return 0; -} - #ifdef CONFIG_HPET_TIMER static void mark_offset_tsc_hpet(void) { unsigned long long this_offset, last_offset; unsigned long offset, temp, hpet_current; - write_lock(&monotonic_lock); + write_seqlock(&monotonic_lock); last_offset = ((unsigned long long)last_tsc_high<<32)|last_tsc_low; /* * It is important that these two operations happen almost at @@ -325,7 +290,7 @@ /* update the monotonic base value */ this_offset = ((unsigned long long)last_tsc_high<<32)|last_tsc_low; monotonic_base += cycles_2_ns(this_offset - last_offset); - write_unlock(&monotonic_lock); + write_sequnlock(&monotonic_lock); /* calculate delay_at_last_interrupt */ /* @@ -339,58 +304,6 @@ ASM_MUL64_REG(temp, delay_at_last_interrupt, hpet_usec_quotient, delay_at_last_interrupt); } - -/* ------ Calibrate the TSC based on HPET timer ------- - * Return 2^32 * (1 / (TSC clocks per usec)) for do_fast_gettimeoffset(). - * calibrate_tsc() calibrates the processor TSC by comparing - * it to the HPET timer of known frequency. - * Too much 64-bit arithmetic here to do this cleanly in C - */ - -#define CALIBRATE_CNT_HPET (5 * hpet_tick) -#define CALIBRATE_TIME_HPET (5 * KERNEL_TICK_USEC) - -unsigned long __init calibrate_tsc_hpet(void) -{ - unsigned long tsc_startlow, tsc_starthigh; - unsigned long tsc_endlow, tsc_endhigh; - unsigned long hpet_start, hpet_end; - unsigned long result, remain; - - hpet_start = hpet_readl(HPET_COUNTER); - rdtsc(tsc_startlow, tsc_starthigh); - do { - hpet_end = hpet_readl(HPET_COUNTER); - } while ((hpet_end - hpet_start) < CALIBRATE_CNT_HPET); - rdtsc(tsc_endlow, tsc_endhigh); - - /* 64-bit subtract - gcc just messes up with long longs */ - __asm__("subl %2,%0\n\t" - "sbbl %3,%1" - :"=a" (tsc_endlow), "=d" (tsc_endhigh) - :"g" (tsc_startlow), "g" (tsc_starthigh), - "0" (tsc_endlow), "1" (tsc_endhigh)); - - /* Error: ECPUTOOFAST */ - if (tsc_endhigh) - goto bad_calibration; - - /* Error: ECPUTOOSLOW */ - if (tsc_endlow <= CALIBRATE_TIME_HPET) - goto bad_calibration; - - ASM_DIV64_REG(result, remain, tsc_endlow, 0, CALIBRATE_TIME_HPET); - if (remain > (tsc_endlow >> 1)) - result++; /* rounding the result */ - - return result; -bad_calibration: - /* - * the CPU was so fast/slow that the quotient wouldn't fit in - * 32 bits.. - */ - return 0; -} #endif #ifdef CONFIG_CPU_FREQ @@ -425,6 +338,7 @@ if (use_tsc) { fast_gettimeoffset_quotient = cpufreq_scale(fast_gettimeoffset_ref, freq->new, ref_freq); cpu_khz = cpufreq_scale(cpu_khz_ref, ref_freq, freq->new); + set_cyc2ns_scale(cpu_khz/1000); } #endif } @@ -491,7 +405,7 @@ if (is_hpet_enabled()){ unsigned long result, remain; printk("Using TSC for gettimeofday\n"); - tsc_quotient = calibrate_tsc_hpet(); + tsc_quotient = calibrate_tsc_hpet(NULL); timer_tsc.mark_offset = &mark_offset_tsc_hpet; /* * Math to calculate hpet to usec multiplier diff -Nru a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c --- a/arch/i386/kernel/traps.c Mon Sep 22 00:30:19 2003 +++ b/arch/i386/kernel/traps.c Mon Sep 22 00:30:19 2003 @@ -28,6 +28,7 @@ #ifdef CONFIG_EISA #include +#include #endif #ifdef CONFIG_MCA @@ -831,10 +832,6 @@ _set_gate(idt_table+n,5,0,0,(gdt_entry<<3)); } - -#ifdef CONFIG_EISA -int EISA_bus; -#endif void __init trap_init(void) { diff -Nru a/arch/i386/mm/discontig.c b/arch/i386/mm/discontig.c --- a/arch/i386/mm/discontig.c Mon Sep 22 00:30:22 2003 +++ b/arch/i386/mm/discontig.c Mon Sep 22 00:30:22 2003 @@ -30,6 +30,7 @@ #include #include #include +#include struct pglist_data *node_data[MAX_NUMNODES]; bootmem_data_t node0_bdata; @@ -84,7 +85,7 @@ * a single node with all available processors in it with a flat * memory map. */ -void __init get_memcfg_numa_flat(void) +int __init get_memcfg_numa_flat(void) { int pfn; @@ -107,6 +108,7 @@ /* Indicate there is one node available. */ node_set_online(0); numnodes = 1; + return 1; } /* @@ -355,17 +357,20 @@ unsigned long low = max_low_pfn; unsigned long start = node_start_pfn[nid]; unsigned long high = node_end_pfn[nid]; - + max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT; if (start > low) { #ifdef CONFIG_HIGHMEM - zones_size[ZONE_HIGHMEM] = high - start; + BUG_ON(start > high); + zones_size[ZONE_HIGHMEM] = high - start; #endif } else { if (low < max_dma) zones_size[ZONE_DMA] = low; else { + BUG_ON(max_dma > low); + BUG_ON(low > high); zones_size[ZONE_DMA] = max_dma; zones_size[ZONE_NORMAL] = low - max_dma; #ifdef CONFIG_HIGHMEM diff -Nru a/arch/ia64/Kconfig b/arch/ia64/Kconfig --- a/arch/ia64/Kconfig Mon Sep 22 00:30:24 2003 +++ b/arch/ia64/Kconfig Mon Sep 22 00:30:24 2003 @@ -267,7 +267,7 @@ unsure, answer Y. config PM - bool + bool "Power Management support" depends on IA64_GENERIC || IA64_DIG || IA64_HP_ZX1 default y ---help--- @@ -413,6 +413,16 @@ To use this option, you have to ensure that the "/proc file system support" (CONFIG_PROC_FS) is enabled, too. +config IA64_SALINFO + tristate "/proc/sal support" + help + The /proc/sal directory exports the SAL (system abstraction layer) + feature bits, like whether the platform is subject to ITC drift. It + is intended to be used by user programs that care about such things. + + To use this option, you have to ensure that the "/proc file system + support" (CONFIG_PROC_FS) is enabled, too. + config EFI_VARS tristate "/proc/efi/vars support" help @@ -424,9 +434,15 @@ support" (CONFIG_PROC_FS) is enabled, too. config NR_CPUS - int "Maximum number of CPUs (2-64)" + int "Maximum number of CPUs" depends on SMP default "64" + help + You should set this to the number of CPUs in your system, but + keep in mind that a kernel compiled for, e.g., 2 CPUs will boot but + only use 2 CPUs on a >2 CPU system. Setting this to a value larger + than 64 will cause the use of a CPU mask array, causing a small + performance hit. source "fs/Kconfig.binfmt" @@ -569,6 +585,7 @@ source "arch/ia64/hp/sim/Kconfig" +source "arch/ia64/oprofile/Kconfig" menu "Kernel hacking" diff -Nru a/arch/ia64/Makefile b/arch/ia64/Makefile --- a/arch/ia64/Makefile Mon Sep 22 00:30:18 2003 +++ b/arch/ia64/Makefile Mon Sep 22 00:30:18 2003 @@ -65,6 +65,7 @@ drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/ drivers-$(CONFIG_IA64_HP_ZX1) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ drivers-$(CONFIG_IA64_GENERIC) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ arch/ia64/hp/sim/ +drivers-$(CONFIG_OPROFILE) += arch/ia64/oprofile/ boot := arch/ia64/hp/sim/boot diff -Nru a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c --- a/arch/ia64/hp/common/sba_iommu.c Mon Sep 22 00:30:19 2003 +++ b/arch/ia64/hp/common/sba_iommu.c Mon Sep 22 00:30:19 2003 @@ -54,6 +54,11 @@ */ #define ALLOW_IOV_BYPASS +#ifdef CONFIG_PROC_FS + /* turn it off for now; without per-CPU counters, it's too much of a scalability bottleneck: */ +# define SBA_PROC_FS 0 +#endif + /* ** If a device prefetches beyond the end of a valid pdir entry, it will cause ** a hard failure, ie. MCA. Version 3.0 and later of the zx1 LBA should @@ -193,7 +198,7 @@ } saved[DELAYED_RESOURCE_CNT]; #endif -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS #define SBA_SEARCH_SAMPLE 0x100 unsigned long avg_search[SBA_SEARCH_SAMPLE]; unsigned long avg_idx; /* current index into avg_search */ @@ -227,12 +232,7 @@ static struct ioc *ioc_list; static int reserve_sba_gart = 1; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) #define sba_sg_address(sg) (page_address((sg)->page) + (sg)->offset) -#else -#define sba_sg_address(sg) ((sg)->address ? (sg)->address : \ - page_address((sg)->page) + (sg)->offset) -#endif #ifdef FULL_VALID_PDIR static u64 prefetch_spill_page; @@ -522,7 +522,7 @@ sba_alloc_range(struct ioc *ioc, size_t size) { unsigned int pages_needed = size >> IOVP_SHIFT; -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS unsigned long itc_start = ia64_get_itc(); #endif unsigned long pide; @@ -556,7 +556,7 @@ (uint) ((unsigned long) ioc->res_hint - (unsigned long) ioc->res_map), ioc->res_bitshift ); -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS { unsigned long itc_end = ia64_get_itc(); unsigned long tmp = itc_end - itc_start; @@ -598,7 +598,7 @@ __FUNCTION__, (uint) iova, size, bits_not_wanted, m, pide, res_ptr, *res_ptr); -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS ioc->used_pages -= bits_not_wanted; #endif @@ -790,7 +790,7 @@ ** Device is bit capable of DMA'ing to the buffer... ** just return the PCI address of ptr */ -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS spin_lock_irqsave(&ioc->res_lock, flags); ioc->msingle_bypass++; spin_unlock_irqrestore(&ioc->res_lock, flags); @@ -816,7 +816,7 @@ panic("Sanity check failed"); #endif -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS ioc->msingle_calls++; ioc->msingle_pages += size >> IOVP_SHIFT; #endif @@ -875,7 +875,7 @@ /* ** Address does not fall w/in IOVA, must be bypassing */ -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS spin_lock_irqsave(&ioc->res_lock, flags); ioc->usingle_bypass++; spin_unlock_irqrestore(&ioc->res_lock, flags); @@ -900,7 +900,7 @@ size = ROUNDUP(size, IOVP_SIZE); spin_lock_irqsave(&ioc->res_lock, flags); -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS ioc->usingle_calls++; ioc->usingle_pages += size >> IOVP_SHIFT; #endif @@ -962,20 +962,20 @@ /** - * sba_alloc_consistent - allocate/map shared mem for DMA - * @hwdev: instance of PCI owned by the driver that's asking. + * sba_alloc_coherent - allocate/map shared mem for DMA + * @dev: instance of PCI owned by the driver that's asking. * @size: number of bytes mapped in driver buffer. * @dma_handle: IOVA of new buffer. * * See Documentation/DMA-mapping.txt */ void * -sba_alloc_coherent (struct device *hwdev, size_t size, dma_addr_t *dma_handle, int flags) +sba_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, int flags) { struct ioc *ioc; void *addr; - addr = (void *) __get_free_pages(flags, get_order(size)); + addr = (void *) __get_free_pages(flags, get_order(size)); if (!addr) return NULL; @@ -983,7 +983,7 @@ * REVISIT: if sba_map_single starts needing more than dma_mask from the * device, this needs to be updated. */ - ioc = GET_IOC(hwdev); + ioc = GET_IOC(dev); ASSERT(ioc); *dma_handle = sba_map_single(&ioc->sac_only_dev->dev, addr, size, 0); @@ -993,17 +993,17 @@ /** - * sba_free_consistent - free/unmap shared mem for DMA - * @hwdev: instance of PCI owned by the driver that's asking. + * sba_free_coherent - free/unmap shared mem for DMA + * @dev: instance of PCI owned by the driver that's asking. * @size: number of bytes mapped in driver buffer. * @vaddr: virtual address IOVA of "consistent" buffer. * @dma_handler: IO virtual address of "consistent" buffer. * * See Documentation/DMA-mapping.txt */ -void sba_free_coherent (struct device *hwdev, size_t size, void *vaddr, dma_addr_t dma_handle) +void sba_free_coherent (struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle) { - sba_unmap_single(hwdev, dma_handle, size, 0); + sba_unmap_single(dev, dma_handle, size, 0); free_pages((unsigned long) vaddr, get_order(size)); } @@ -1083,7 +1083,7 @@ cnt += dma_offset; dma_offset=0; /* only want offset on first chunk */ cnt = ROUNDUP(cnt, IOVP_SIZE); -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS ioc->msg_pages += cnt >> IOVP_SHIFT; #endif do { @@ -1273,7 +1273,7 @@ sg->dma_length = sg->length; sg->dma_address = virt_to_phys(sba_sg_address(sg)); } -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS spin_lock_irqsave(&ioc->res_lock, flags); ioc->msg_bypass++; spin_unlock_irqrestore(&ioc->res_lock, flags); @@ -1286,7 +1286,7 @@ sglist->dma_length = sglist->length; sglist->dma_address = sba_map_single(dev, sba_sg_address(sglist), sglist->length, dir); -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS /* ** Should probably do some stats counting, but trying to ** be precise quickly starts wasting CPU time. @@ -1305,7 +1305,7 @@ } #endif -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS ioc->msg_calls++; #endif @@ -1368,7 +1368,7 @@ ioc = GET_IOC(dev); ASSERT(ioc); -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS ioc->usg_calls++; #endif @@ -1381,7 +1381,7 @@ while (nents && sglist->dma_length) { sba_unmap_single(dev, sglist->dma_address, sglist->dma_length, dir); -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS /* ** This leaves inconsistent data in the stats, but we can't ** tell which sg lists were mapped by map_single and which @@ -1709,7 +1709,7 @@ ** **************************************************************************/ -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS static void * ioc_start(struct seq_file *s, loff_t *pos) { @@ -1763,7 +1763,7 @@ if (ioc->avg_search[i] > max) max = ioc->avg_search[i]; if (ioc->avg_search[i] < min) min = ioc->avg_search[i]; } - avg /= SBA_SEARCH_SAMPLE; + avg /= SBA_SEARCH_SAMPLE; seq_printf(s, " Bitmap search : %ld/%ld/%ld (min/avg/max CPU Cycles)\n", min, avg, max); seq_printf(s, "pci_map_single(): %12ld calls %12ld pages (avg %d/1000)\n", @@ -1864,7 +1864,7 @@ } #endif -void +static void sba_connect_bus(struct pci_bus *bus) { acpi_handle handle, parent; @@ -1872,7 +1872,7 @@ struct ioc *ioc; if (!PCI_CONTROLLER(bus)) - panic(PFX "no sysdata on bus %d!\n",bus->number); + panic(PFX "no sysdata on bus %d!\n", bus->number); if (PCI_CONTROLLER(bus)->iommu) return; @@ -1955,7 +1955,7 @@ } #endif -#ifdef CONFIG_PROC_FS +#if SBA_PROC_FS ioc_proc_init(); #endif return 0; diff -Nru a/arch/ia64/hp/sim/boot/boot_head.S b/arch/ia64/hp/sim/boot/boot_head.S --- a/arch/ia64/hp/sim/boot/boot_head.S Mon Sep 22 00:30:21 2003 +++ b/arch/ia64/hp/sim/boot/boot_head.S Mon Sep 22 00:30:21 2003 @@ -27,6 +27,14 @@ br.call.sptk.many rp=start_bootloader END(_start) +/* + * Set a break point on this function so that symbols are available to set breakpoints in + * the kernel being debugged. + */ +GLOBAL_ENTRY(debug_break) + br.ret.sptk.many b0 +END(debug_break) + GLOBAL_ENTRY(ssc) .regstk 5,0,0,0 mov r15=in4 diff -Nru a/arch/ia64/hp/sim/boot/bootloader.c b/arch/ia64/hp/sim/boot/bootloader.c --- a/arch/ia64/hp/sim/boot/bootloader.c Mon Sep 22 00:30:24 2003 +++ b/arch/ia64/hp/sim/boot/bootloader.c Mon Sep 22 00:30:24 2003 @@ -37,15 +37,7 @@ extern void jmp_to_kernel (unsigned long bp, unsigned long e_entry); extern struct ia64_boot_param *sys_fw_init (const char *args, int arglen); - -/* - * Set a break point on this function so that symbols are available to set breakpoints in - * the kernel being debugged. - */ -static void -debug_break (void) -{ -} +extern void debug_break (void); static void cons_write (const char *buf) diff -Nru a/arch/ia64/ia32/elfcore32.h b/arch/ia64/ia32/elfcore32.h --- a/arch/ia64/ia32/elfcore32.h Mon Sep 22 00:30:21 2003 +++ b/arch/ia64/ia32/elfcore32.h Mon Sep 22 00:30:21 2003 @@ -8,6 +8,8 @@ #ifndef _ELFCORE32_H_ #define _ELFCORE32_H_ +#include + #define USE_ELF_CORE_DUMP 1 /* Override elfcore.h */ @@ -79,8 +81,7 @@ pr_reg[11] = regs->r1; \ pr_reg[12] = regs->cr_iip; \ pr_reg[13] = regs->r17 & 0xffff; \ - asm volatile ("mov %0=ar.eflag ;;" \ - : "=r"(pr_reg[14])); \ + pr_reg[14] = ia64_getreg(_IA64_REG_AR_EFLAG); \ pr_reg[15] = regs->r12; \ pr_reg[16] = (regs->r17 >> 16) & 0xffff; diff -Nru a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c --- a/arch/ia64/ia32/sys_ia32.c Mon Sep 22 00:30:22 2003 +++ b/arch/ia64/ia32/sys_ia32.c Mon Sep 22 00:30:22 2003 @@ -76,6 +76,7 @@ #define OFFSET4K(a) ((a) & 0xfff) #define PAGE_START(addr) ((addr) & PAGE_MASK) +#define MINSIGSTKSZ_IA32 2048 #define high2lowuid(uid) ((uid) > 65535 ? 65534 : (uid)) #define high2lowgid(gid) ((gid) > 65535 ? 65534 : (gid)) @@ -2262,10 +2263,18 @@ return -EFAULT; uss.ss_sp = (void *) (long) buf32.ss_sp; uss.ss_flags = buf32.ss_flags; - uss.ss_size = buf32.ss_size; + /* MINSIGSTKSZ is different for ia32 vs ia64. We lie here to pass the + check and set it to the user requested value later */ + if (buf32.ss_size < MINSIGSTKSZ_IA32) { + ret = -ENOMEM; + goto out; + } + uss.ss_size = MINSIGSTKSZ; set_fs(KERNEL_DS); ret = do_sigaltstack(uss32 ? &uss : NULL, &uoss, pt->r12); + current->sas_ss_size = buf32.ss_size; set_fs(old_fs); +out: if (ret < 0) return(ret); if (uoss32) { diff -Nru a/arch/ia64/kernel/Makefile b/arch/ia64/kernel/Makefile --- a/arch/ia64/kernel/Makefile Mon Sep 22 00:30:25 2003 +++ b/arch/ia64/kernel/Makefile Mon Sep 22 00:30:25 2003 @@ -14,6 +14,7 @@ obj-$(CONFIG_IA64_HP_ZX1) += acpi-ext.o obj-$(CONFIG_IA64_MCA) += mca.o mca_asm.o obj-$(CONFIG_IA64_PALINFO) += palinfo.o +obj-$(CONFIG_IA64_SALINFO) += salinfo.o obj-$(CONFIG_IOSAPIC) += iosapic.o obj-$(CONFIG_MODULES) += module.o obj-$(CONFIG_SMP) += smp.o smpboot.o diff -Nru a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c --- a/arch/ia64/kernel/acpi.c Mon Sep 22 00:30:21 2003 +++ b/arch/ia64/kernel/acpi.c Mon Sep 22 00:30:21 2003 @@ -331,7 +331,7 @@ #ifdef CONFIG_ACPI_NUMA -#define SLIT_DEBUG +#undef SLIT_DEBUG #define PXM_FLAG_LEN ((MAX_PXM_DOMAINS + 1)/32) @@ -603,11 +603,13 @@ printk(KERN_ERR PREFIX "Can't find FADT\n"); #ifdef CONFIG_SMP - smp_boot_data.cpu_count = available_cpus; if (available_cpus == 0) { printk(KERN_INFO "ACPI: Found 0 CPUS; assuming 1\n"); + printk(KERN_INFO "CPU 0 (0x%04x)", hard_smp_processor_id()); + smp_boot_data.cpu_phys_id[available_cpus] = hard_smp_processor_id(); available_cpus = 1; /* We've got at least one of these, no? */ } + smp_boot_data.cpu_count = available_cpus; smp_build_cpu_map(); # ifdef CONFIG_NUMA diff -Nru a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c --- a/arch/ia64/kernel/efi.c Mon Sep 22 00:30:18 2003 +++ b/arch/ia64/kernel/efi.c Mon Sep 22 00:30:18 2003 @@ -324,7 +324,7 @@ check_md = q; if (check_md->attribute & EFI_MEMORY_WB) - trim_bottom(md, granule_addr); + trim_bottom(check_md, granule_addr); if (check_md->phys_addr < granule_addr) continue; @@ -446,10 +446,12 @@ panic("Woah! PAL code size bigger than a granule!"); mask = ~((1 << IA64_GRANULE_SHIFT) - 1); +#if EFI_DEBUG printk(KERN_INFO "CPU %d: mapping PAL code [0x%lx-0x%lx) into [0x%lx-0x%lx)\n", smp_processor_id(), md->phys_addr, md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT), vaddr & mask, (vaddr & mask) + IA64_GRANULE_SIZE); +#endif /* * Cannot write to CRx with PSR.ic=1 diff -Nru a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S --- a/arch/ia64/kernel/entry.S Mon Sep 22 00:30:20 2003 +++ b/arch/ia64/kernel/entry.S Mon Sep 22 00:30:20 2003 @@ -1448,7 +1448,7 @@ data8 sys_sched_setaffinity data8 sys_sched_getaffinity data8 sys_set_tid_address - data8 sys_fadvise64 + data8 sys_fadvise64_64 data8 sys_tgkill // 1235 data8 sys_exit_group data8 sys_lookup_dcookie @@ -1473,7 +1473,7 @@ data8 sys_clock_nanosleep data8 sys_fstatfs64 data8 sys_statfs64 - data8 sys_fadvise64_64 + data8 ia64_ni_syscall data8 ia64_ni_syscall // 1260 data8 ia64_ni_syscall data8 ia64_ni_syscall diff -Nru a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S --- a/arch/ia64/kernel/fsys.S Mon Sep 22 00:30:17 2003 +++ b/arch/ia64/kernel/fsys.S Mon Sep 22 00:30:17 2003 @@ -655,7 +655,7 @@ data8 0 // sched_setaffinity data8 0 // sched_getaffinity data8 fsys_set_tid_address // set_tid_address - data8 0 // fadvise64 + data8 0 // fadvise64_64 data8 0 // tgkill // 1235 data8 0 // exit_group data8 0 // lookup_dcookie @@ -680,7 +680,7 @@ data8 0 // clock_nanosleep data8 0 // fstatfs64 data8 0 // statfs64 - data8 0 // fadvise64_64 + data8 0 data8 0 // 1260 data8 0 data8 0 diff -Nru a/arch/ia64/kernel/init_task.c b/arch/ia64/kernel/init_task.c --- a/arch/ia64/kernel/init_task.c Mon Sep 22 00:30:25 2003 +++ b/arch/ia64/kernel/init_task.c Mon Sep 22 00:30:25 2003 @@ -28,15 +28,13 @@ */ #define init_thread_info init_task_mem.s.thread_info -static union { +union { struct { struct task_struct task; struct thread_info thread_info; } s; unsigned long stack[KERNEL_STACK_SIZE/sizeof (unsigned long)]; -} init_task_mem asm ("init_task_mem") __attribute__((section(".data.init_task"))) = {{ +} init_task_mem asm ("init_task") __attribute__((section(".data.init_task"))) = {{ .task = INIT_TASK(init_task_mem.s.task), .thread_info = INIT_THREAD_INFO(init_task_mem.s.task) }}; - -extern struct task_struct init_task __attribute__ ((alias("init_task_mem"))); diff -Nru a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c --- a/arch/ia64/kernel/mca.c Mon Sep 22 00:30:21 2003 +++ b/arch/ia64/kernel/mca.c Mon Sep 22 00:30:21 2003 @@ -1193,7 +1193,7 @@ ia64_mca_cmc_poll (unsigned long dummy) { /* Trigger a CMC interrupt cascade */ - platform_send_ipi(__ffs(cpu_online_map), IA64_CMCP_VECTOR, IA64_IPI_DM_INT, 0); + platform_send_ipi(first_cpu(cpu_online_map), IA64_CMCP_VECTOR, IA64_IPI_DM_INT, 0); } /* @@ -1260,7 +1260,7 @@ ia64_mca_cpe_poll (unsigned long dummy) { /* Trigger a CPE interrupt cascade */ - platform_send_ipi(__ffs(cpu_online_map), IA64_CPEP_VECTOR, IA64_IPI_DM_INT, 0); + platform_send_ipi(first_cpu(cpu_online_map), IA64_CPEP_VECTOR, IA64_IPI_DM_INT, 0); } /* diff -Nru a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c --- a/arch/ia64/kernel/perfmon.c Mon Sep 22 00:30:24 2003 +++ b/arch/ia64/kernel/perfmon.c Mon Sep 22 00:30:24 2003 @@ -58,23 +58,8 @@ #define PFM_CTX_ZOMBIE 4 /* owner of the context is closing it */ #define PFM_CTX_TERMINATED 5 /* the task the context was loaded onto is gone */ -#define CTX_LOADED(c) (c)->ctx_state = PFM_CTX_LOADED -#define CTX_UNLOADED(c) (c)->ctx_state = PFM_CTX_UNLOADED -#define CTX_ZOMBIE(c) (c)->ctx_state = PFM_CTX_ZOMBIE -#define CTX_DESTROYED(c) (c)->ctx_state = PFM_CTX_DESTROYED -#define CTX_MASKED(c) (c)->ctx_state = PFM_CTX_MASKED -#define CTX_TERMINATED(c) (c)->ctx_state = PFM_CTX_TERMINATED - -#define CTX_IS_UNLOADED(c) ((c)->ctx_state == PFM_CTX_UNLOADED) -#define CTX_IS_LOADED(c) ((c)->ctx_state == PFM_CTX_LOADED) -#define CTX_IS_ZOMBIE(c) ((c)->ctx_state == PFM_CTX_ZOMBIE) -#define CTX_IS_MASKED(c) ((c)->ctx_state == PFM_CTX_MASKED) -#define CTX_IS_TERMINATED(c) ((c)->ctx_state == PFM_CTX_TERMINATED) -#define CTX_IS_DEAD(c) ((c)->ctx_state == PFM_CTX_TERMINATED || (c)->ctx_state == PFM_CTX_ZOMBIE) - #define PFM_INVALID_ACTIVATION (~0UL) - /* * depth of message queue */ @@ -155,7 +140,7 @@ * in UP: * - we need to protect against PMU overflow interrupts (local_irq_disable) * - * spin_lock_irqsave()/spin_lock_irqrestore(): + * spin_lock_irqsave()/spin_unlock_irqrestore(): * in SMP: local_irq_disable + spin_lock * in UP : local_irq_disable * @@ -649,6 +634,7 @@ DEFINE_PER_CPU(pfm_context_t *, pmu_ctx); DEFINE_PER_CPU(unsigned long, pmu_activation_number); + /* forward declaration */ static struct file_operations pfm_file_ops; @@ -659,7 +645,13 @@ static void pfm_lazy_save_regs (struct task_struct *ta); #endif -#if defined(CONFIG_ITANIUM) +/* + * the HP simulator must be first because + * CONFIG_IA64_HP_SIM is independent of CONFIG_MCKINLEY or CONFIG_ITANIUM + */ +#if defined(CONFIG_IA64_HP_SIM) +#include "perfmon_hpsim.h" +#elif defined(CONFIG_ITANIUM) #include "perfmon_itanium.h" #elif defined(CONFIG_MCKINLEY) #include "perfmon_mckinley.h" @@ -953,13 +945,15 @@ struct thread_struct *th = &task->thread; unsigned long mask; unsigned long psr, val; - int i; + int i, is_system; + + is_system = ctx->ctx_fl_system; if (task != current) { printk(KERN_ERR "perfmon.%d: invalid task[%d] current[%d]\n", __LINE__, task->pid, current->pid); return; } - if (CTX_IS_MASKED(ctx) == 0) { + if (ctx->ctx_state != PFM_CTX_MASKED) { printk(KERN_ERR "perfmon.%d: task[%d] current[%d] invalid state=%d\n", __LINE__, task->pid, current->pid, ctx->ctx_state); return; @@ -975,7 +969,7 @@ * * system-wide session are pinned and self-monitoring */ - if (ctx->ctx_fl_system && (PFM_CPUINFO_GET() & PFM_CPUINFO_DCR_PP)) { + if (is_system && (PFM_CPUINFO_GET() & PFM_CPUINFO_DCR_PP)) { /* disable dcr pp */ ia64_setreg(_IA64_REG_CR_DCR, ia64_getreg(_IA64_REG_CR_DCR) & ~IA64_DCR_PP); pfm_clear_psr_pp(); @@ -1022,7 +1016,7 @@ /* * now restore PSR */ - if (ctx->ctx_fl_system && (PFM_CPUINFO_GET() & PFM_CPUINFO_DCR_PP)) { + if (is_system && (PFM_CPUINFO_GET() & PFM_CPUINFO_DCR_PP)) { /* enable dcr pp */ ia64_setreg(_IA64_REG_CR_DCR, ia64_getreg(_IA64_REG_CR_DCR) | IA64_DCR_PP); ia64_srlz_i(); @@ -1825,6 +1819,7 @@ void *smpl_buf_vaddr = NULL; void *smpl_buf_addr = NULL; int free_possible = 1; + int state, is_system; { u64 psr = pfm_get_psr(); BUG_ON((psr & IA64_PSR_I) == 0UL); @@ -1850,6 +1845,11 @@ PROTECT_CTX(ctx, flags); + state = ctx->ctx_state; + is_system = ctx->ctx_fl_system; + + task = PFM_CTX_TASK(ctx); + /* * remove our file from the async queue, if we use it */ @@ -1859,11 +1859,10 @@ DPRINT(("[%d] after async_queue=%p\n", current->pid, ctx->ctx_async_queue)); } - task = PFM_CTX_TASK(ctx); - DPRINT(("[%d] ctx_state=%d\n", current->pid, ctx->ctx_state)); + DPRINT(("[%d] ctx_state=%d\n", current->pid, state)); - if (CTX_IS_UNLOADED(ctx) || CTX_IS_TERMINATED(ctx)) { + if (state == PFM_CTX_UNLOADED || state == PFM_CTX_TERMINATED) { goto doit; } @@ -1884,7 +1883,7 @@ * * We need to release the resource on the ORIGINAL cpu. */ - if (ctx->ctx_fl_system && ctx->ctx_cpu != smp_processor_id()) { + if (is_system && ctx->ctx_cpu != smp_processor_id()) { DPRINT(("[%d] should be running on CPU%d\n", current->pid, ctx->ctx_cpu)); @@ -1900,9 +1899,10 @@ task->thread.pfm_context = NULL; ctx->ctx_task = NULL; - CTX_UNLOADED(ctx); + ctx->ctx_state = state = PFM_CTX_UNLOADED; pfm_unreserve_session(ctx, 1 , ctx->ctx_cpu); + } else #endif /* CONFIG_SMP */ { @@ -1914,19 +1914,20 @@ */ pfm_context_unload(ctx, NULL, 0, regs); - CTX_TERMINATED(ctx); + ctx->ctx_state = PFM_CTX_TERMINATED; - DPRINT(("[%d] ctx_state=%d\n", current->pid, ctx->ctx_state)); + DPRINT(("[%d] ctx_state=%d\n", current->pid, state)); } goto doit; } + /* * The task is currently blocked or will block after an overflow. * we must force it to wakeup to get out of the * MASKED state and transition to the unloaded state by itself */ - if (CTX_IS_MASKED(ctx) && CTX_OVFL_NOBLOCK(ctx) == 0) { + if (state == PFM_CTX_MASKED && CTX_OVFL_NOBLOCK(ctx) == 0) { /* * set a "partial" zombie state to be checked @@ -1949,7 +1950,7 @@ */ up(&ctx->ctx_restart_sem); - DPRINT(("waking up ctx_state=%d for [%d]\n", ctx->ctx_state, current->pid)); + DPRINT(("waking up ctx_state=%d for [%d]\n", state, current->pid)); /* * put ourself to sleep waiting for the other @@ -1971,24 +1972,24 @@ */ schedule(); - DPRINT(("woken up ctx_state=%d for [%d]\n", ctx->ctx_state, current->pid)); PROTECT_CTX(ctx, flags); + remove_wait_queue(&ctx->ctx_zombieq, &wait); set_current_state(TASK_RUNNING); /* * context is terminated at this point */ - DPRINT(("after zombie wakeup ctx_state=%d for [%d]\n", ctx->ctx_state, current->pid)); + DPRINT(("after zombie wakeup ctx_state=%d for [%d]\n", state, current->pid)); } else { #ifdef CONFIG_SMP /* * switch context to zombie state */ - CTX_ZOMBIE(ctx); + ctx->ctx_state = PFM_CTX_ZOMBIE; DPRINT(("zombie ctx for [%d]\n", task->pid)); /* @@ -2002,6 +2003,10 @@ } doit: /* cannot assume task is defined from now on */ + + /* reload state, may have changed during opening of critical section */ + state = ctx->ctx_state; + /* * the context is still attached to a task (possibly current) * we cannot destroy it right now @@ -2032,10 +2037,9 @@ ctx->ctx_smpl_hdr = NULL; } - DPRINT(("[%d] ctx_state=%d free_possible=%d vaddr=%p addr=%p size=%lu\n", current->pid, - ctx->ctx_state, + state, free_possible, smpl_buf_vaddr, smpl_buf_addr, @@ -2047,7 +2051,7 @@ * UNLOADED and TERMINATED mean that the session has already been * unreserved. */ - if (CTX_IS_ZOMBIE(ctx)) { + if (state == PFM_CTX_ZOMBIE) { pfm_unreserve_session(ctx, ctx->ctx_fl_system , ctx->ctx_cpu); } @@ -2360,10 +2364,23 @@ static int pfm_bad_permissions(struct task_struct *task) { - /* stolen from bad_signal() */ - return (current->session != task->session) - && (current->euid ^ task->suid) && (current->euid ^ task->uid) - && (current->uid ^ task->suid) && (current->uid ^ task->uid); + /* inspired by ptrace_attach() */ + DPRINT(("[%d] cur: uid=%d gid=%d task: euid=%d suid=%d uid=%d egid=%d sgid=%d\n", + current->pid, + current->uid, + current->gid, + task->euid, + task->suid, + task->uid, + task->egid, + task->sgid)); + + return ((current->uid != task->euid) + || (current->uid != task->suid) + || (current->uid != task->uid) + || (current->gid != task->egid) + || (current->gid != task->sgid) + || (current->gid != task->gid)) && !capable(CAP_SYS_PTRACE); } static int @@ -2655,7 +2672,7 @@ /* * context is unloaded */ - CTX_UNLOADED(ctx); + ctx->ctx_state = PFM_CTX_UNLOADED; /* * initialization of context's flags @@ -2787,7 +2804,7 @@ if (flag == PFM_PMD_NO_RESET) return; - if (CTX_IS_MASKED(ctx)) { + if (ctx->ctx_state == PFM_CTX_MASKED) { pfm_reset_regs_masked(ctx, ovfl_regs, flag); return; } @@ -2836,27 +2853,30 @@ unsigned long value; unsigned long smpl_pmds, reset_pmds; unsigned int cnum, reg_flags, flags; - int i, can_access_pmu = 0, is_loaded; - int is_monitor, is_counting; + int i, can_access_pmu = 0, is_loaded, is_system; + int is_monitor, is_counting, state; int ret = -EINVAL; #define PFM_CHECK_PMC_PM(x, y, z) ((x)->ctx_fl_system ^ PMC_PM(y, z)) - if (CTX_IS_DEAD(ctx)) return -EINVAL; + state = ctx->ctx_state; + is_loaded = state == PFM_CTX_LOADED ? 1 : 0; + is_system = ctx->ctx_fl_system; + + if (state == PFM_CTX_TERMINATED || state == PFM_CTX_ZOMBIE) return -EINVAL; - is_loaded = CTX_IS_LOADED(ctx); if (is_loaded) { thread = &ctx->ctx_task->thread; - can_access_pmu = GET_PMU_OWNER() == ctx->ctx_task ? 1 : 0; /* * In system wide and when the context is loaded, access can only happen * when the caller is running on the CPU being monitored by the session. * It does not have to be the owner (ctx_task) of the context per se. */ - if (ctx->ctx_fl_system && ctx->ctx_cpu != smp_processor_id()) { + if (is_system && ctx->ctx_cpu != smp_processor_id()) { DPRINT(("[%d] should be running on CPU%d\n", current->pid, ctx->ctx_cpu)); return -EBUSY; } + can_access_pmu = GET_PMU_OWNER() == ctx->ctx_task || is_system ? 1 : 0; } for (i = 0; i < count; i++, req++) { @@ -2885,7 +2905,7 @@ * - system-wide session: PMCx.pm=1 (privileged monitor) * - per-task : PMCx.pm=0 (user monitor) */ - if ((is_monitor || is_counting) && value != PMC_DFL_VAL(i) && PFM_CHECK_PMC_PM(ctx, cnum, value)) { + if ((is_monitor || is_counting) && value != PMC_DFL_VAL(cnum) && PFM_CHECK_PMC_PM(ctx, cnum, value)) { DPRINT(("pmc%u pmc_pm=%ld fl_system=%d\n", cnum, PMC_PM(cnum, value), @@ -2893,7 +2913,6 @@ goto error; } - if (is_counting) { pfm_monitor_t *p = (pfm_monitor_t *)&value; /* @@ -2975,7 +2994,7 @@ * make sure we do not try to reset on * restart because we have established new values */ - if (CTX_IS_MASKED(ctx)) ctx->ctx_ovfl_regs[0] &= ~1UL << cnum; + if (state == PFM_CTX_MASKED) ctx->ctx_ovfl_regs[0] &= ~1UL << cnum; } /* * Needed in case the user does not initialize the equivalent @@ -3007,7 +3026,7 @@ /* * write thread state */ - if (ctx->ctx_fl_system == 0) thread->pmcs[cnum] = value; + if (is_system == 0) thread->pmcs[cnum] = value; /* * write hardware register if we can @@ -3067,13 +3086,16 @@ pfarg_reg_t *req = (pfarg_reg_t *)arg; unsigned long value, hw_value; unsigned int cnum; - int i, can_access_pmu = 0; - int is_counting, is_loaded; + int i, can_access_pmu = 0, state; + int is_counting, is_loaded, is_system; int ret = -EINVAL; - if (CTX_IS_DEAD(ctx)) return -EINVAL; - is_loaded = CTX_IS_LOADED(ctx); + state = ctx->ctx_state; + is_loaded = state == PFM_CTX_LOADED ? 1 : 0; + is_system = ctx->ctx_fl_system; + + if (state == PFM_CTX_TERMINATED || state == PFM_CTX_ZOMBIE) return -EINVAL; /* * on both UP and SMP, we can only write to the PMC when the task is @@ -3081,16 +3103,16 @@ */ if (is_loaded) { thread = &ctx->ctx_task->thread; - can_access_pmu = GET_PMU_OWNER() == ctx->ctx_task ? 1 : 0; /* * In system wide and when the context is loaded, access can only happen * when the caller is running on the CPU being monitored by the session. * It does not have to be the owner (ctx_task) of the context per se. */ - if (ctx->ctx_fl_system && ctx->ctx_cpu != smp_processor_id()) { + if (is_system && ctx->ctx_cpu != smp_processor_id()) { DPRINT(("[%d] should be running on CPU%d\n", current->pid, ctx->ctx_cpu)); return -EBUSY; } + can_access_pmu = GET_PMU_OWNER() == ctx->ctx_task || is_system ? 1 : 0; } for (i = 0; i < count; i++, req++) { @@ -3179,7 +3201,7 @@ * make sure we do not try to reset on * restart because we have established new values */ - if (is_counting && CTX_IS_MASKED(ctx)) { + if (is_counting && state == PFM_CTX_MASKED) { ctx->ctx_ovfl_regs[0] &= ~1UL << cnum; } @@ -3187,7 +3209,7 @@ /* * write thread state */ - if (ctx->ctx_fl_system == 0) thread->pmds[cnum] = hw_value; + if (is_system == 0) thread->pmds[cnum] = hw_value; /* * write hardware register if we can @@ -3265,35 +3287,40 @@ unsigned long val = 0UL, lval ; pfarg_reg_t *req = (pfarg_reg_t *)arg; unsigned int cnum, reg_flags = 0; - int i, is_loaded, can_access_pmu = 0; + int i, can_access_pmu = 0, state; + int is_loaded, is_system; int ret = -EINVAL; - if (CTX_IS_ZOMBIE(ctx)) return -EINVAL; - /* * access is possible when loaded only for * self-monitoring tasks or in UP mode */ - is_loaded = CTX_IS_LOADED(ctx); + + state = ctx->ctx_state; + is_loaded = state == PFM_CTX_LOADED ? 1 : 0; + is_system = ctx->ctx_fl_system; + + if (state == PFM_CTX_ZOMBIE) return -EINVAL; if (is_loaded) { thread = &ctx->ctx_task->thread; /* - * this can be true when not self-monitoring only in UP - */ - can_access_pmu = GET_PMU_OWNER() == ctx->ctx_task? 1 : 0; - - if (can_access_pmu) ia64_srlz_d(); - /* * In system wide and when the context is loaded, access can only happen * when the caller is running on the CPU being monitored by the session. * It does not have to be the owner (ctx_task) of the context per se. */ - if (ctx->ctx_fl_system && ctx->ctx_cpu != smp_processor_id()) { + if (is_system && ctx->ctx_cpu != smp_processor_id()) { DPRINT(("[%d] should be running on CPU%d\n", current->pid, ctx->ctx_cpu)); return -EBUSY; } + /* + * this can be true when not self-monitoring only in UP + */ + can_access_pmu = GET_PMU_OWNER() == ctx->ctx_task || is_system ? 1 : 0; + + if (can_access_pmu) ia64_srlz_d(); } + DPRINT(("enter loaded=%d access_pmu=%d ctx_state=%d\n", is_loaded, can_access_pmu, @@ -3334,7 +3361,7 @@ * if context is zombie, then task does not exist anymore. * In this case, we use the full value saved in the context (pfm_flush_regs()). */ - val = CTX_IS_LOADED(ctx) ? thread->pmds[cnum] : 0UL; + val = state == PFM_CTX_LOADED ? thread->pmds[cnum] : 0UL; } if (PMD_IS_COUNTING(cnum)) { @@ -3628,7 +3655,7 @@ if (rst_ctrl.bits.mask_monitoring == 0) { DPRINT(("resuming monitoring for [%d]\n", task->pid)); - if (CTX_IS_MASKED(ctx)) pfm_restore_monitoring(task); + if (state == PFM_CTX_MASKED) pfm_restore_monitoring(task); } else { DPRINT(("keeping monitoring stopped for [%d]\n", task->pid)); @@ -3643,7 +3670,7 @@ /* * back to LOADED state */ - CTX_LOADED(ctx); + ctx->ctx_state = PFM_CTX_LOADED; return 0; } @@ -3706,30 +3733,34 @@ dbreg_t dbreg; unsigned int rnum; int first_time; - int ret = 0; - int i, can_access_pmu = 0, is_loaded; + int ret = 0, state; + int i, can_access_pmu = 0; + int is_system, is_loaded; if (pmu_conf.use_rr_dbregs == 0) return -EINVAL; - if (CTX_IS_DEAD(ctx)) return -EINVAL; + state = ctx->ctx_state; + is_loaded = state == PFM_CTX_LOADED ? 1 : 0; + is_system = ctx->ctx_fl_system; + + if (state == PFM_CTX_TERMINATED || state == PFM_CTX_ZOMBIE) return -EINVAL; - is_loaded = CTX_IS_LOADED(ctx); /* * on both UP and SMP, we can only write to the PMC when the task is * the owner of the local PMU. */ if (is_loaded) { thread = &ctx->ctx_task->thread; - can_access_pmu = GET_PMU_OWNER() == ctx->ctx_task ? 1 : 0; /* * In system wide and when the context is loaded, access can only happen * when the caller is running on the CPU being monitored by the session. * It does not have to be the owner (ctx_task) of the context per se. */ - if (ctx->ctx_fl_system && ctx->ctx_cpu != smp_processor_id()) { + if (is_system && ctx->ctx_cpu != smp_processor_id()) { DPRINT(("[%d] should be running on CPU%d\n", current->pid, ctx->ctx_cpu)); return -EBUSY; } + can_access_pmu = GET_PMU_OWNER() == ctx->ctx_task || is_system ? 1 : 0; } /* @@ -3758,7 +3789,7 @@ */ LOCK_PFS(); - if (first_time && ctx->ctx_fl_system) { + if (first_time && is_system) { if (pfm_sessions.pfs_ptrace_use_dbregs) ret = -EBUSY; else @@ -3906,16 +3937,19 @@ { struct pt_regs *tregs; struct task_struct *task = PFM_CTX_TASK(ctx); + int state, is_system; + state = ctx->ctx_state; + is_system = ctx->ctx_fl_system; - if (CTX_IS_LOADED(ctx) == 0 && CTX_IS_MASKED(ctx) == 0) return -EINVAL; + if (state != PFM_CTX_LOADED && state != PFM_CTX_MASKED) return -EINVAL; /* * In system wide and when the context is loaded, access can only happen * when the caller is running on the CPU being monitored by the session. * It does not have to be the owner (ctx_task) of the context per se. */ - if (ctx->ctx_fl_system && ctx->ctx_cpu != smp_processor_id()) { + if (is_system && ctx->ctx_cpu != smp_processor_id()) { DPRINT(("[%d] should be running on CPU%d\n", current->pid, ctx->ctx_cpu)); return -EBUSY; } @@ -3925,7 +3959,7 @@ * and the user level state of the caller, which may not * necessarily be the creator of the context. */ - if (ctx->ctx_fl_system) { + if (is_system) { /* * Update local PMU first * @@ -3985,15 +4019,19 @@ pfm_start(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs) { struct pt_regs *tregs; + int state, is_system; + + state = ctx->ctx_state; + is_system = ctx->ctx_fl_system; - if (CTX_IS_LOADED(ctx) == 0) return -EINVAL; + if (state != PFM_CTX_LOADED) return -EINVAL; /* * In system wide and when the context is loaded, access can only happen * when the caller is running on the CPU being monitored by the session. * It does not have to be the owner (ctx_task) of the context per se. */ - if (ctx->ctx_fl_system && ctx->ctx_cpu != smp_processor_id()) { + if (is_system && ctx->ctx_cpu != smp_processor_id()) { DPRINT(("[%d] should be running on CPU%d\n", current->pid, ctx->ctx_cpu)); return -EBUSY; } @@ -4003,7 +4041,7 @@ * and the user level state of the caller, which may not * necessarily be the creator of the context. */ - if (ctx->ctx_fl_system) { + if (is_system) { /* * set user level psr.pp for the caller @@ -4055,7 +4093,6 @@ */ ia64_psr(tregs)->up = 1; } - return 0; } @@ -4121,11 +4158,14 @@ unsigned long *pmcs_source, *pmds_source; int the_cpu; int ret = 0; + int state, is_system; + state = ctx->ctx_state; + is_system = ctx->ctx_fl_system; /* * can only load from unloaded or terminated state */ - if (CTX_IS_UNLOADED(ctx) == 0 && CTX_IS_TERMINATED(ctx) == 0) { + if (state != PFM_CTX_UNLOADED && state != PFM_CTX_TERMINATED) { DPRINT(("[%d] cannot load to [%d], invalid ctx_state=%d\n", current->pid, req->load_pid, @@ -4151,7 +4191,7 @@ /* * system wide is self monitoring only */ - if (ctx->ctx_fl_system && task != current) { + if (is_system && task != current) { DPRINT(("system wide is self monitoring only current=%d load_pid=%d\n", current->pid, req->load_pid)); @@ -4191,7 +4231,7 @@ /* * now reserve the session */ - ret = pfm_reserve_session(current, ctx->ctx_fl_system, the_cpu); + ret = pfm_reserve_session(current, is_system, the_cpu); if (ret) goto error; ret = -EBUSY; @@ -4216,15 +4256,14 @@ pfm_reset_msgq(ctx); - CTX_LOADED(ctx); + ctx->ctx_state = PFM_CTX_LOADED; /* * link context to task */ ctx->ctx_task = task; - if (ctx->ctx_fl_system) { - + if (is_system) { /* * we load as stopped */ @@ -4250,7 +4289,7 @@ */ if (task == current) { - if (ctx->ctx_fl_system == 0) { + if (is_system == 0) { /* allow user level control */ ia64_psr(regs)->sp = 0; @@ -4318,14 +4357,14 @@ /* * release task, there is now a link with the context */ - if (ctx->ctx_fl_system == 0 && task != current) { + if (is_system == 0 && task != current) { pfm_put_task(task); if (ret == 0) { ret = pfm_check_task_exist(ctx); if (ret) { - CTX_UNLOADED(ctx); - ctx->ctx_task = NULL; + ctx->ctx_state = PFM_CTX_UNLOADED; + ctx->ctx_task = NULL; } } } @@ -4347,40 +4386,34 @@ { struct task_struct *task = PFM_CTX_TASK(ctx); struct pt_regs *tregs; + int state, is_system; DPRINT(("ctx_state=%d task [%d]\n", ctx->ctx_state, task ? task->pid : -1)); + state = ctx->ctx_state; + is_system = ctx->ctx_fl_system; + /* * unload only when necessary */ - if (CTX_IS_TERMINATED(ctx) || CTX_IS_UNLOADED(ctx)) { + if (state == PFM_CTX_TERMINATED || state == PFM_CTX_UNLOADED) { DPRINT(("[%d] ctx_state=%d, nothing to do\n", current->pid, ctx->ctx_state)); return 0; } /* - * In system wide and when the context is loaded, access can only happen - * when the caller is running on the CPU being monitored by the session. - * It does not have to be the owner (ctx_task) of the context per se. - */ - if (ctx->ctx_fl_system && ctx->ctx_cpu != smp_processor_id()) { - DPRINT(("[%d] should be running on CPU%d\n", current->pid, ctx->ctx_cpu)); - return -EBUSY; - } - - /* * clear psr and dcr bits */ pfm_stop(ctx, NULL, 0, regs); - CTX_UNLOADED(ctx); + ctx->ctx_state = state = PFM_CTX_UNLOADED; /* * in system mode, we need to update the PMU directly * and the user level state of the caller, which may not * necessarily be the creator of the context. */ - if (ctx->ctx_fl_system) { + if (is_system) { /* * Update cpuinfo @@ -4524,7 +4557,7 @@ if (ret) { printk(KERN_ERR "perfmon: pfm_exit_thread [%d] state=%d unload failed %d\n", task->pid, ctx->ctx_state, ret); } - CTX_TERMINATED(ctx); + ctx->ctx_state = PFM_CTX_TERMINATED; DPRINT(("ctx terminated by [%d]\n", task->pid)); pfm_end_notify_user(ctx); @@ -4606,16 +4639,19 @@ pfm_check_task_state(pfm_context_t *ctx, int cmd, unsigned long flags) { struct task_struct *task; + int state; + + state = ctx->ctx_state; task = PFM_CTX_TASK(ctx); if (task == NULL) { - DPRINT(("context %d no task, state=%d\n", ctx->ctx_fd, ctx->ctx_state)); + DPRINT(("context %d no task, state=%d\n", ctx->ctx_fd, state)); return 0; } DPRINT(("context %d state=%d [%d] task_state=%ld must_stop=%d\n", ctx->ctx_fd, - ctx->ctx_state, + state, task->pid, task->state, PFM_CMD_STOPPED(cmd))); @@ -4631,9 +4667,9 @@ /* * context is UNLOADED, MASKED, TERMINATED we are safe to go */ - if (CTX_IS_LOADED(ctx) == 0) return 0; + if (state != PFM_CTX_LOADED == 0) return 0; - if (CTX_IS_ZOMBIE(ctx)) return -EINVAL; + if (state == PFM_CTX_ZOMBIE) return -EINVAL; /* * context is loaded, we must make sure the task is stopped @@ -4653,6 +4689,7 @@ pfm_wait_task_inactive(task); PROTECT_CTX(ctx, flags); + return 0; } @@ -4830,12 +4867,12 @@ } if (rst_ctrl.bits.mask_monitoring == 0) { DPRINT(("resuming monitoring\n")); - if (CTX_IS_MASKED(ctx)) pfm_restore_monitoring(current); + if (ctx->ctx_state == PFM_CTX_MASKED) pfm_restore_monitoring(current); } else { DPRINT(("stopping monitoring\n")); //pfm_stop_monitoring(current, regs); } - CTX_LOADED(ctx); + ctx->ctx_state = PFM_CTX_LOADED; } } @@ -4869,7 +4906,7 @@ /* * switch to terminated state */ - CTX_TERMINATED(ctx); + ctx->ctx_state = PFM_CTX_TERMINATED; DPRINT(("context <%d> terminated for [%d]\n", ctx->ctx_fd, current->pid)); @@ -4922,7 +4959,7 @@ /* * must be done before we check non-blocking mode */ - if (ctx->ctx_fl_going_zombie || CTX_IS_ZOMBIE(ctx)) goto do_zombie; + if (ctx->ctx_fl_going_zombie || ctx->ctx_state == PFM_CTX_ZOMBIE) goto do_zombie; ovfl_regs = ctx->ctx_ovfl_regs[0]; @@ -4966,7 +5003,7 @@ static int pfm_notify_user(pfm_context_t *ctx, pfm_msg_t *msg) { - if (CTX_IS_ZOMBIE(ctx)) { + if (ctx->ctx_state == PFM_CTX_ZOMBIE) { DPRINT(("ignoring overflow notification, owner is zombie\n")); return 0; } @@ -5049,13 +5086,13 @@ pfm_ovfl_arg_t ovfl_arg; unsigned long mask; unsigned long old_val; - unsigned long ovfl_notify = 0UL, ovfl_pmds = 0UL; + unsigned long ovfl_notify = 0UL, ovfl_pmds = 0UL, smpl_pmds = 0UL; unsigned long tstamp; pfm_ovfl_ctrl_t ovfl_ctrl; unsigned int i, has_smpl; int must_notify = 0; - if (unlikely(CTX_IS_ZOMBIE(ctx))) goto stop_monitoring; + if (unlikely(ctx->ctx_state == PFM_CTX_ZOMBIE)) goto stop_monitoring; /* * sanity test. Should never happen @@ -5106,10 +5143,9 @@ if (PMC_OVFL_NOTIFY(ctx, i)) ovfl_notify |= 1UL << i; } - DPRINT_ovfl(("ctx_pmd[%d].val=0x%lx old_val=0x%lx pmd=0x%lx ovfl_pmds=0x%lx " - "ovfl_notify=0x%lx\n", - i, ctx->ctx_pmds[i].val, old_val, - ia64_get_pmd(i) & pmu_conf.ovfl_val, ovfl_pmds, ovfl_notify)); + DPRINT_ovfl(("ctx_pmd[%d].val=0x%lx old_val=0x%lx pmd=0x%lx ovfl_pmds=0x%lx ovfl_notify=0x%lx smpl_pmds=0x%lx\n", + i, ctx->ctx_pmds[i].val, old_val, + ia64_get_pmd(i) & pmu_conf.ovfl_val, ovfl_pmds, ovfl_notify, smpl_pmds)); } /* @@ -5128,7 +5164,7 @@ */ if (has_smpl) { unsigned long start_cycles, end_cycles; - unsigned long pmd_mask, smpl_pmds; + unsigned long pmd_mask; int j, k, ret = 0; int this_cpu = smp_processor_id(); @@ -5257,7 +5293,7 @@ */ if (ovfl_ctrl.bits.mask_monitoring) { pfm_mask_monitoring(task); - CTX_MASKED(ctx); + ctx->ctx_state = PFM_CTX_MASKED; } /* @@ -5553,19 +5589,18 @@ pfm_set_psr_pp(); ia64_srlz_i(); } - { unsigned long val; - val = ia64_get_pmc(4); - if ((val & (1UL<<23)) == 0UL) printk("perfmon: PMU off: pmc4=0x%lx\n", val); - } } void pfm_syst_wide_update_task(struct task_struct *task, unsigned long info, int is_ctxswin) { unsigned long start, end; + pfm_stats[smp_processor_id()].pfm_sysupdt_count++; start = ia64_get_itc(); + pfm_do_syst_wide_update_task(task, info, is_ctxswin); + end = ia64_get_itc(); pfm_stats[smp_processor_id()].pfm_sysupdt_cycles += end-start; } @@ -5591,7 +5626,7 @@ */ flags = pfm_protect_ctx_ctxsw(ctx); - if (CTX_IS_ZOMBIE(ctx)) { + if (ctx->ctx_state == PFM_CTX_ZOMBIE) { struct pt_regs *regs = ia64_task_regs(task); pfm_clear_psr_up(); @@ -5840,7 +5875,7 @@ BUG_ON(psr & IA64_PSR_I); #endif - if (unlikely(CTX_IS_ZOMBIE(ctx))) { + if (unlikely(ctx->ctx_state == PFM_CTX_ZOMBIE)) { struct pt_regs *regs = ia64_task_regs(task); BUG_ON(ctx->ctx_smpl_hdr); diff -Nru a/arch/ia64/kernel/perfmon_hpsim.h b/arch/ia64/kernel/perfmon_hpsim.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/ia64/kernel/perfmon_hpsim.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,75 @@ +/* + * This file contains the HP SKI Simulator PMU register description tables + * and pmc checkers used by perfmon.c. + * + * Copyright (C) 2002-2003 Hewlett Packard Co + * Stephane Eranian + * + * File mostly contributed by Ian Wienand + * + * This file is included as a dummy template so the kernel does not + * try to initalize registers the simulator can't handle. + * + * Note the simulator does not (currently) implement these registers, i.e., + * they do not count anything. But you can read/write them. + */ + +#define RDEP(x) (1UL<<(x)) + +#ifndef CONFIG_IA64_HP_SIM +#error "This file should only be included for the HP Simulator" +#endif + +static pfm_reg_desc_t pfm_hpsim_pmc_desc[PMU_MAX_PMCS]={ +/* pmc0 */ { PFM_REG_CONTROL , 0, 0x1UL, -1UL, NULL, NULL, {0UL, 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc1 */ { PFM_REG_CONTROL , 0, 0x0UL, -1UL, NULL, NULL, {0UL, 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc2 */ { PFM_REG_CONTROL , 0, 0x0UL, -1UL, NULL, NULL, {0UL, 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc3 */ { PFM_REG_CONTROL , 0, 0x0UL, -1UL, NULL, NULL, {0UL, 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc4 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {RDEP(4), 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc5 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {RDEP(5), 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc6 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {RDEP(6), 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc7 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {RDEP(7), 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc8 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {RDEP(8), 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc9 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {RDEP(9), 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc10 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {RDEP(10), 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc11 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {RDEP(11), 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc12 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {RDEP(12), 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc13 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {RDEP(13), 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc14 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {RDEP(14), 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmc15 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {RDEP(15), 0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, + { PFM_REG_END , 0, 0x0UL, -1UL, NULL, NULL, {0,}, {0,}}, /* end marker */ +}; + +static pfm_reg_desc_t pfm_hpsim_pmd_desc[PMU_MAX_PMDS]={ +/* pmd0 */ { PFM_REG_BUFFER, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmd1 */ { PFM_REG_BUFFER, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmd2 */ { PFM_REG_BUFFER, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmd3 */ { PFM_REG_BUFFER, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {0UL,0UL, 0UL, 0UL}}, +/* pmd4 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {RDEP(4),0UL, 0UL, 0UL}}, +/* pmd5 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {RDEP(5),0UL, 0UL, 0UL}}, +/* pmd6 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {RDEP(6),0UL, 0UL, 0UL}}, +/* pmd7 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {RDEP(7),0UL, 0UL, 0UL}}, +/* pmd8 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {RDEP(8),0UL, 0UL, 0UL}}, +/* pmd9 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {RDEP(9),0UL, 0UL, 0UL}}, +/* pmd10 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {RDEP(10),0UL, 0UL, 0UL}}, +/* pmd11 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {RDEP(11),0UL, 0UL, 0UL}}, +/* pmd12 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {RDEP(12),0UL, 0UL, 0UL}}, +/* pmd13 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {RDEP(13),0UL, 0UL, 0UL}}, +/* pmd14 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {RDEP(14),0UL, 0UL, 0UL}}, +/* pmd15 */ { PFM_REG_COUNTING, 0, 0x0UL, -1UL, NULL, NULL, {0UL,0UL, 0UL, 0UL}, {RDEP(15),0UL, 0UL, 0UL}}, + { PFM_REG_END , 0, 0x0UL, -1UL, NULL, NULL, {0,}, {0,}}, /* end marker */ +}; + +/* + * impl_pmcs, impl_pmds are computed at runtime to minimize errors! + */ +static pmu_config_t pmu_conf={ + .pmu_name = "hpsim", + .pmu_family = 0x7, /* ski emulator reports as Itanium */ + .enabled = 0, + .ovfl_val = (1UL << 32) - 1, + .num_ibrs = 0, /* does not use */ + .num_dbrs = 0, /* does not use */ + .pmd_desc = pfm_hpsim_pmd_desc, + .pmc_desc = pfm_hpsim_pmc_desc +}; diff -Nru a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c --- a/arch/ia64/kernel/salinfo.c Mon Sep 22 00:30:23 2003 +++ b/arch/ia64/kernel/salinfo.c Mon Sep 22 00:30:23 2003 @@ -5,6 +5,7 @@ * * Copyright (c) 2001 Silicon Graphics, Inc. All rights reserved. * + * 09/11/2003 jbarnes@sgi.com updated for 2.6 * 10/30/2001 jbarnes@sgi.com copied much of Stephane's palinfo * code to create this file */ @@ -59,7 +60,7 @@ *sdir = create_proc_read_entry (salinfo_entries[i].name, 0, salinfo_dir, salinfo_read, (void *)salinfo_entries[i].feature); if (*sdir) - *sdir->owner = THIS_MODULE; + (*sdir)->owner = THIS_MODULE; sdir++; } *sdir++ = salinfo_dir; diff -Nru a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c --- a/arch/ia64/kernel/smpboot.c Mon Sep 22 00:30:20 2003 +++ b/arch/ia64/kernel/smpboot.c Mon Sep 22 00:30:20 2003 @@ -534,8 +534,8 @@ printk(KERN_INFO "SMP mode deactivated.\n"); cpus_clear(cpu_online_map); cpus_clear(phys_cpu_present_map); - cpu_set(1, cpu_online_map); - cpu_set(1, phys_cpu_present_map); + cpu_set(0, cpu_online_map); + cpu_set(0, phys_cpu_present_map); return; } } diff -Nru a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c --- a/arch/ia64/kernel/time.c Mon Sep 22 00:30:19 2003 +++ b/arch/ia64/kernel/time.c Mon Sep 22 00:30:19 2003 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -39,29 +40,6 @@ #endif static void -do_profile (unsigned long ip) -{ - extern cpumask_t prof_cpu_mask; - - if (!prof_buffer) - return; - - if (!cpu_isset(smp_processor_id(), prof_cpu_mask)) - return; - - ip -= (unsigned long) _stext; - ip >>= prof_shift; - /* - * Don't ignore out-of-bounds IP values silently, put them into the last - * histogram slot, so if present, they will show up as a sharp peak. - */ - if (ip > prof_len - 1) - ip = prof_len - 1; - - atomic_inc((atomic_t *) &prof_buffer[ip]); -} - -static void itc_reset (void) { } @@ -199,6 +177,52 @@ tv->tv_usec = usec; } +/* + * The profiling function is SMP safe. (nothing can mess + * around with "current", and the profiling counters are + * updated with atomic operations). This is especially + * useful with a profiling multiplier != 1 + */ +static inline void +ia64_do_profile (struct pt_regs * regs) +{ + unsigned long ip, slot; + extern cpumask_t prof_cpu_mask; + + profile_hook(regs); + + if (user_mode(regs)) + return; + + if (!prof_buffer) + return; + + ip = instruction_pointer(regs); + /* Conserve space in histogram by encoding slot bits in address + * bits 2 and 3 rather than bits 0 and 1. + */ + slot = ip & 3; + ip = (ip & ~3UL) + 4*slot; + + /* + * Only measure the CPUs specified by /proc/irq/prof_cpu_mask. + * (default is all CPUs.) + */ + if (!cpu_isset(smp_processor_id(), prof_cpu_mask)) + return; + + ip -= (unsigned long) &_stext; + ip >>= prof_shift; + /* + * Don't ignore out-of-bounds IP values silently, + * put them into the last histogram slot, so if + * present, they will show up as a sharp peak. + */ + if (ip > prof_len-1) + ip = prof_len-1; + atomic_inc((atomic_t *)&prof_buffer[ip]); +} + static irqreturn_t timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) { @@ -210,14 +234,9 @@ printk(KERN_ERR "Oops: timer tick before it's due (itc=%lx,itm=%lx)\n", ia64_get_itc(), new_itm); + ia64_do_profile(regs); + while (1) { - /* - * Do kernel PC profiling here. We multiply the instruction number by - * four so that we can use a prof_shift of 2 to get instruction-level - * instead of just bundle-level accuracy. - */ - if (!user_mode(regs)) - do_profile(regs->cr_iip + 4*ia64_psr(regs)->ri); #ifdef CONFIG_SMP smp_do_timer(regs); diff -Nru a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c --- a/arch/ia64/kernel/traps.c Mon Sep 22 00:30:24 2003 +++ b/arch/ia64/kernel/traps.c Mon Sep 22 00:30:24 2003 @@ -568,10 +568,10 @@ } siginfo.si_signo = SIGTRAP; siginfo.si_errno = 0; - siginfo.si_flags = 0; - siginfo.si_isr = 0; - siginfo.si_addr = (void *) ifa; - siginfo.si_imm = 0; + siginfo.si_addr = (void *) ifa; + siginfo.si_imm = 0; + siginfo.si_flags = __ISR_VALID; + siginfo.si_isr = isr; force_sig_info(SIGTRAP, &siginfo, current); return; diff -Nru a/arch/ia64/kernel/unwind.c b/arch/ia64/kernel/unwind.c --- a/arch/ia64/kernel/unwind.c Mon Sep 22 00:30:25 2003 +++ b/arch/ia64/kernel/unwind.c Mon Sep 22 00:30:25 2003 @@ -1171,9 +1171,10 @@ static inline unw_hash_index_t hash (unsigned long ip) { -# define magic 0x9e3779b97f4a7c16 /* based on (sqrt(5)/2-1)*2^64 */ +# define hashmagic 0x9e3779b97f4a7c16 /* based on (sqrt(5)/2-1)*2^64 */ - return (ip >> 4)*magic >> (64 - UNW_LOG_HASH_SIZE); + return (ip >> 4)*hashmagic >> (64 - UNW_LOG_HASH_SIZE); +#undef hashmagic } static inline long diff -Nru a/arch/ia64/oprofile/Kconfig b/arch/ia64/oprofile/Kconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/ia64/oprofile/Kconfig Mon Sep 22 00:30:25 2003 @@ -0,0 +1,22 @@ + +menu "Profiling support" + depends on EXPERIMENTAL + +config PROFILING + bool "Profiling support (EXPERIMENTAL)" + help + Say Y here to enable the extended profiling support mechanisms used + by profilers such as OProfile. + +config OPROFILE + tristate "OProfile system profiling (EXPERIMENTAL)" + depends on PROFILING + help + OProfile is a profiling system capable of profiling the + whole system, include the kernel, kernel modules, libraries, + and applications. + + If unsure, say N. + +endmenu + diff -Nru a/arch/ia64/oprofile/Makefile b/arch/ia64/oprofile/Makefile --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/ia64/oprofile/Makefile Mon Sep 22 00:30:25 2003 @@ -0,0 +1,9 @@ +obj-$(CONFIG_OPROFILE) += oprofile.o + +DRIVER_OBJS := $(addprefix ../../../drivers/oprofile/, \ + oprof.o cpu_buffer.o buffer_sync.o \ + event_buffer.o oprofile_files.o \ + oprofilefs.o oprofile_stats.o \ + timer_int.o ) + +oprofile-y := $(DRIVER_OBJS) init.o diff -Nru a/arch/ia64/oprofile/init.c b/arch/ia64/oprofile/init.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/ia64/oprofile/init.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,25 @@ +/** + * @file init.c + * + * @remark Copyright 2002 OProfile authors + * @remark Read the file COPYING + * + * @author John Levon + */ + +#include +#include +#include +#include + +extern void timer_init(struct oprofile_operations ** ops); + +int __init oprofile_arch_init(struct oprofile_operations ** ops) +{ + return -ENODEV; +} + + +void oprofile_arch_exit(void) +{ +} diff -Nru a/arch/ia64/scripts/toolchain-flags b/arch/ia64/scripts/toolchain-flags --- a/arch/ia64/scripts/toolchain-flags Mon Sep 22 00:30:24 2003 +++ b/arch/ia64/scripts/toolchain-flags Mon Sep 22 00:30:24 2003 @@ -20,7 +20,7 @@ EOF fi -if ! $CC -c $dir/check-model.c -o $out 2>&1 | grep -q 'attribute directive ignored' +if ! $CC -c $dir/check-model.c -o $out 2>&1 | grep __model__ | grep -q attrib then CPPFLAGS="$CPPFLAGS -DHAVE_MODEL_SMALL_ATTRIBUTE" fi diff -Nru a/arch/ia64/sn/io/drivers/ioconfig_bus.c b/arch/ia64/sn/io/drivers/ioconfig_bus.c --- a/arch/ia64/sn/io/drivers/ioconfig_bus.c Mon Sep 22 00:30:23 2003 +++ b/arch/ia64/sn/io/drivers/ioconfig_bus.c Mon Sep 22 00:30:23 2003 @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include #include @@ -157,7 +157,7 @@ char *name; char *temp; char *next; - char *current; + char *curr; char *line; struct ascii_moduleid *moduleid; @@ -166,10 +166,10 @@ name = kmalloc(125, GFP_KERNEL); memset(name, 0, 125); moduleid = table; - current = file_contents; - while (nextline(current, &next, line)){ + curr = file_contents; + while (nextline(curr, &next, line)){ - DBG("current 0x%lx next 0x%lx\n", current, next); + DBG("curr 0x%lx next 0x%lx\n", curr, next); temp = line; /* @@ -182,7 +182,7 @@ break; if (*temp == '\n') { - current = next; + curr = next; memset(line, 0, 256); continue; } @@ -191,7 +191,7 @@ * Skip comment lines */ if (*temp == '#') { - current = next; + curr = next; memset(line, 0, 256); continue; } @@ -204,7 +204,7 @@ DBG("Found %s\n", name); moduleid++; free_entry++; - current = next; + curr = next; memset(line, 0, 256); } diff -Nru a/arch/ia64/sn/io/machvec/iomv.c b/arch/ia64/sn/io/machvec/iomv.c --- a/arch/ia64/sn/io/machvec/iomv.c Mon Sep 22 00:30:21 2003 +++ b/arch/ia64/sn/io/machvec/iomv.c Mon Sep 22 00:30:21 2003 @@ -6,13 +6,13 @@ * Copyright (C) 2000-2003 Silicon Graphics, Inc. All rights reserved. */ -#include #include #include #include #include #include #include +#include /** * sn_io_addr - convert an in/out port to an i/o address diff -Nru a/arch/ia64/sn/io/machvec/pci_bus_cvlink.c b/arch/ia64/sn/io/machvec/pci_bus_cvlink.c --- a/arch/ia64/sn/io/machvec/pci_bus_cvlink.c Mon Sep 22 00:30:23 2003 +++ b/arch/ia64/sn/io/machvec/pci_bus_cvlink.c Mon Sep 22 00:30:23 2003 @@ -544,7 +544,7 @@ pci_read_config_byte(device_dev, PCI_INTERRUPT_PIN, (unsigned char *)&lines); - irqpdaindr->current = device_dev; + irqpdaindr->curr = device_dev; intr_handle = pciio_intr_alloc(device_vertex, NULL, lines, device_vertex); irq = intr_handle->pi_irq; diff -Nru a/arch/ia64/sn/io/machvec/pci_dma.c b/arch/ia64/sn/io/machvec/pci_dma.c --- a/arch/ia64/sn/io/machvec/pci_dma.c Mon Sep 22 00:30:20 2003 +++ b/arch/ia64/sn/io/machvec/pci_dma.c Mon Sep 22 00:30:20 2003 @@ -597,7 +597,7 @@ if (!sn_dma_supported(dev, dma_mask)) return 0; - dev->dma_mask = dma_mask; + *dev->dma_mask = dma_mask; return 1; } EXPORT_SYMBOL(sn_dma_set_mask); diff -Nru a/arch/ia64/sn/io/sn2/ml_SN_intr.c b/arch/ia64/sn/io/sn2/ml_SN_intr.c --- a/arch/ia64/sn/io/sn2/ml_SN_intr.c Mon Sep 22 00:30:23 2003 +++ b/arch/ia64/sn/io/sn2/ml_SN_intr.c Mon Sep 22 00:30:23 2003 @@ -39,6 +39,7 @@ #include #include #include +#include extern irqpda_t *irqpdaindr; extern cnodeid_t master_node_get(vertex_hdl_t vhdl); @@ -174,8 +175,8 @@ min_shared = 256; for (i=IA64_SN2_FIRST_DEVICE_VECTOR; i < IA64_SN2_LAST_DEVICE_VECTOR; i++) { /* Share with the same device class */ - if (irqpdaindr->current->vendor == irqpdaindr->device_dev[i]->vendor && - irqpdaindr->current->device == irqpdaindr->device_dev[i]->device && + if (irqpdaindr->curr->vendor == irqpdaindr->device_dev[i]->vendor && + irqpdaindr->curr->device == irqpdaindr->device_dev[i]->device && irqpdaindr->share_count[i] < min_shared) { min_shared = irqpdaindr->share_count[i]; bit = i; diff -Nru a/arch/ia64/sn/io/sn2/pcibr/pcibr_ate.c b/arch/ia64/sn/io/sn2/pcibr/pcibr_ate.c --- a/arch/ia64/sn/io/sn2/pcibr/pcibr_ate.c Mon Sep 22 00:30:18 2003 +++ b/arch/ia64/sn/io/sn2/pcibr/pcibr_ate.c Mon Sep 22 00:30:18 2003 @@ -26,7 +26,6 @@ #include #include #include -#include #include #include diff -Nru a/arch/ia64/sn/io/sn2/pcibr/pcibr_config.c b/arch/ia64/sn/io/sn2/pcibr/pcibr_config.c --- a/arch/ia64/sn/io/sn2/pcibr/pcibr_config.c Mon Sep 22 00:30:24 2003 +++ b/arch/ia64/sn/io/sn2/pcibr/pcibr_config.c Mon Sep 22 00:30:24 2003 @@ -27,7 +27,6 @@ #include #include #include -#include #include #include diff -Nru a/arch/ia64/sn/io/sn2/pcibr/pcibr_dvr.c b/arch/ia64/sn/io/sn2/pcibr/pcibr_dvr.c --- a/arch/ia64/sn/io/sn2/pcibr/pcibr_dvr.c Mon Sep 22 00:30:25 2003 +++ b/arch/ia64/sn/io/sn2/pcibr/pcibr_dvr.c Mon Sep 22 00:30:25 2003 @@ -31,7 +31,6 @@ #include #include #include -#include #include #include diff -Nru a/arch/ia64/sn/io/sn2/pcibr/pcibr_error.c b/arch/ia64/sn/io/sn2/pcibr/pcibr_error.c --- a/arch/ia64/sn/io/sn2/pcibr/pcibr_error.c Mon Sep 22 00:30:18 2003 +++ b/arch/ia64/sn/io/sn2/pcibr/pcibr_error.c Mon Sep 22 00:30:18 2003 @@ -26,7 +26,6 @@ #include #include #include -#include #include #include diff -Nru a/arch/ia64/sn/io/sn2/pcibr/pcibr_hints.c b/arch/ia64/sn/io/sn2/pcibr/pcibr_hints.c --- a/arch/ia64/sn/io/sn2/pcibr/pcibr_hints.c Mon Sep 22 00:30:24 2003 +++ b/arch/ia64/sn/io/sn2/pcibr/pcibr_hints.c Mon Sep 22 00:30:24 2003 @@ -26,7 +26,6 @@ #include #include #include -#include #include #include diff -Nru a/arch/ia64/sn/io/sn2/pcibr/pcibr_intr.c b/arch/ia64/sn/io/sn2/pcibr/pcibr_intr.c --- a/arch/ia64/sn/io/sn2/pcibr/pcibr_intr.c Mon Sep 22 00:30:23 2003 +++ b/arch/ia64/sn/io/sn2/pcibr/pcibr_intr.c Mon Sep 22 00:30:23 2003 @@ -26,7 +26,6 @@ #include #include #include -#include #include #include diff -Nru a/arch/ia64/sn/io/sn2/pcibr/pcibr_rrb.c b/arch/ia64/sn/io/sn2/pcibr/pcibr_rrb.c --- a/arch/ia64/sn/io/sn2/pcibr/pcibr_rrb.c Mon Sep 22 00:30:25 2003 +++ b/arch/ia64/sn/io/sn2/pcibr/pcibr_rrb.c Mon Sep 22 00:30:25 2003 @@ -26,7 +26,6 @@ #include #include #include -#include #include #include diff -Nru a/arch/ia64/sn/io/sn2/pcibr/pcibr_slot.c b/arch/ia64/sn/io/sn2/pcibr/pcibr_slot.c --- a/arch/ia64/sn/io/sn2/pcibr/pcibr_slot.c Mon Sep 22 00:30:21 2003 +++ b/arch/ia64/sn/io/sn2/pcibr/pcibr_slot.c Mon Sep 22 00:30:21 2003 @@ -27,7 +27,6 @@ #include #include #include -#include #include #include diff -Nru a/arch/ia64/sn/io/sn2/pic.c b/arch/ia64/sn/io/sn2/pic.c --- a/arch/ia64/sn/io/sn2/pic.c Mon Sep 22 00:30:22 2003 +++ b/arch/ia64/sn/io/sn2/pic.c Mon Sep 22 00:30:22 2003 @@ -26,7 +26,6 @@ #include #include #include -#include #include #include diff -Nru a/arch/ia64/sn/io/sn2/shub.c b/arch/ia64/sn/io/sn2/shub.c --- a/arch/ia64/sn/io/sn2/shub.c Mon Sep 22 00:30:22 2003 +++ b/arch/ia64/sn/io/sn2/shub.c Mon Sep 22 00:30:22 2003 @@ -34,6 +34,8 @@ #include #include #include +#include +#include /* * Shub WAR for Xbridge Little Endian problem: @@ -491,7 +493,7 @@ spin_lock_init(&sn_linkstats_lock); sn_linkstats = kmalloc(numnodes * sizeof(struct s_linkstats), GFP_KERNEL); sn_linkstats_reset(60000UL); /* default 60 second update interval */ - kernel_thread(linkstatd_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + kernel_thread(linkstatd_thread, NULL, CLONE_KERNEL); return 0; } diff -Nru a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c --- a/arch/ia64/sn/kernel/irq.c Mon Sep 22 00:30:19 2003 +++ b/arch/ia64/sn/kernel/irq.c Mon Sep 22 00:30:19 2003 @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include @@ -44,7 +43,6 @@ #include #include #include -#include #include #include #include @@ -62,6 +60,7 @@ #include #include #include +#include int irq_to_bit_pos(int irq); static void force_interrupt(int irq); diff -Nru a/arch/m68k/kernel/signal.c b/arch/m68k/kernel/signal.c --- a/arch/m68k/kernel/signal.c Mon Sep 22 00:30:23 2003 +++ b/arch/m68k/kernel/signal.c Mon Sep 22 00:30:23 2003 @@ -1082,7 +1082,7 @@ continue; case SIGTSTP: case SIGTTIN: case SIGTTOU: - if (is_orphaned_pgrp(current->pgrp)) + if (is_orphaned_pgrp(process_group(current))) continue; /* FALLTHRU */ diff -Nru a/arch/m68knommu/kernel/signal.c b/arch/m68knommu/kernel/signal.c --- a/arch/m68knommu/kernel/signal.c Mon Sep 22 00:30:23 2003 +++ b/arch/m68knommu/kernel/signal.c Mon Sep 22 00:30:23 2003 @@ -841,7 +841,7 @@ continue; case SIGTSTP: case SIGTTIN: case SIGTTOU: - if (is_orphaned_pgrp(current->pgrp)) + if (is_orphaned_pgrp(process_group(current))) continue; /* FALLTHRU */ diff -Nru a/arch/mips/jazz/setup.c b/arch/mips/jazz/setup.c --- a/arch/mips/jazz/setup.c Mon Sep 22 00:30:23 2003 +++ b/arch/mips/jazz/setup.c Mon Sep 22 00:30:23 2003 @@ -9,6 +9,7 @@ * Copyright (C) 2001 MIPS Technologies, Inc. */ #include +#include #include #include #include diff -Nru a/arch/mips/kernel/irixelf.c b/arch/mips/kernel/irixelf.c --- a/arch/mips/kernel/irixelf.c Mon Sep 22 00:30:25 2003 +++ b/arch/mips/kernel/irixelf.c Mon Sep 22 00:30:25 2003 @@ -1088,6 +1088,7 @@ elf.e_ident[EI_CLASS] = ELFCLASS32; elf.e_ident[EI_DATA] = ELFDATA2LSB; elf.e_ident[EI_VERSION] = EV_CURRENT; + elf.e_ident[EI_OSABI] = ELF_OSABI; memset(elf.e_ident+EI_PAD, 0, EI_NIDENT-EI_PAD); elf.e_type = ET_CORE; @@ -1129,7 +1130,7 @@ prstatus.pr_sighold = current->blocked.sig[0]; psinfo.pr_pid = prstatus.pr_pid = current->pid; psinfo.pr_ppid = prstatus.pr_ppid = current->parent->pid; - psinfo.pr_pgrp = prstatus.pr_pgrp = current->pgrp; + psinfo.pr_pgrp = prstatus.pr_pgrp = process_group(current); psinfo.pr_sid = prstatus.pr_sid = current->session; prstatus.pr_utime.tv_sec = CT_TO_SECS(current->utime); prstatus.pr_utime.tv_usec = CT_TO_USECS(current->utime); diff -Nru a/arch/mips/kernel/irixsig.c b/arch/mips/kernel/irixsig.c --- a/arch/mips/kernel/irixsig.c Mon Sep 22 00:30:24 2003 +++ b/arch/mips/kernel/irixsig.c Mon Sep 22 00:30:24 2003 @@ -582,7 +582,7 @@ p = list_entry(_p,struct task_struct,sibling); if ((type == P_PID) && p->pid != pid) continue; - if ((type == P_PGID) && p->pgrp != pid) + if ((type == P_PGID) && process_group(p) != pid) continue; if ((p->exit_signal != SIGCHLD)) continue; diff -Nru a/arch/mips/kernel/mips_ksyms.c b/arch/mips/kernel/mips_ksyms.c --- a/arch/mips/kernel/mips_ksyms.c Mon Sep 22 00:30:19 2003 +++ b/arch/mips/kernel/mips_ksyms.c Mon Sep 22 00:30:19 2003 @@ -43,10 +43,6 @@ EXPORT_SYMBOL(mips_machtype); -#ifdef CONFIG_EISA -EXPORT_SYMBOL(EISA_bus); -#endif - /* * String functions */ diff -Nru a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c --- a/arch/mips/kernel/setup.c Mon Sep 22 00:30:19 2003 +++ b/arch/mips/kernel/setup.c Mon Sep 22 00:30:19 2003 @@ -44,15 +44,6 @@ struct screen_info screen_info; #endif -/* - * Set if box has EISA slots. - */ -#ifdef CONFIG_EISA -int EISA_bus; - -EXPORT_SYMBOL(EISA_bus); -#endif - #if defined(CONFIG_BLK_DEV_FD) || defined(CONFIG_BLK_DEV_FD_MODULE) extern struct fd_ops no_fd_ops; struct fd_ops *fd_ops; diff -Nru a/arch/mips/kernel/sysirix.c b/arch/mips/kernel/sysirix.c --- a/arch/mips/kernel/sysirix.c Mon Sep 22 00:30:24 2003 +++ b/arch/mips/kernel/sysirix.c Mon Sep 22 00:30:24 2003 @@ -803,11 +803,11 @@ printk("[%s:%d] setpgrp(%d) ", current->comm, current->pid, flags); #endif if(!flags) - error = current->pgrp; + error = process_group(current); else error = sys_setsid(); #ifdef DEBUG_PROCGRPS - printk("returning %d\n", current->pgrp); + printk("returning %d\n", process_group(current)); #endif return error; diff -Nru a/arch/mips/sgi-ip22/ip22-eisa.c b/arch/mips/sgi-ip22/ip22-eisa.c --- a/arch/mips/sgi-ip22/ip22-eisa.c Mon Sep 22 00:30:21 2003 +++ b/arch/mips/sgi-ip22/ip22-eisa.c Mon Sep 22 00:30:21 2003 @@ -20,6 +20,7 @@ */ #include +#include #include #include #include diff -Nru a/arch/mips/sni/setup.c b/arch/mips/sni/setup.c --- a/arch/mips/sni/setup.c Mon Sep 22 00:30:21 2003 +++ b/arch/mips/sni/setup.c Mon Sep 22 00:30:21 2003 @@ -8,6 +8,7 @@ * Copyright (C) 1996, 1997, 1998, 2000, 2003 by Ralf Baechle */ #include +#include #include #include #include diff -Nru a/arch/parisc/Kconfig b/arch/parisc/Kconfig --- a/arch/parisc/Kconfig Mon Sep 22 00:30:22 2003 +++ b/arch/parisc/Kconfig Mon Sep 22 00:30:22 2003 @@ -184,7 +184,7 @@ source "drivers/md/Kconfig" -#source drivers/message/fusion/Kconfig +source drivers/message/fusion/Kconfig #source drivers/ieee1394/Kconfig diff -Nru a/arch/parisc/Makefile b/arch/parisc/Makefile --- a/arch/parisc/Makefile Mon Sep 22 00:30:24 2003 +++ b/arch/parisc/Makefile Mon Sep 22 00:30:24 2003 @@ -16,7 +16,7 @@ # Modified for PA-RISC Linux by Paul Lahaie, Alex deVries, # Mike Shaver, Helge Deller and Martin K. Petersen # - +NM = sh arch/parisc/nm ifdef CONFIG_PARISC64 CROSS_COMPILE := hppa64-linux- UTS_MACHINE := parisc64 diff -Nru a/arch/parisc/defconfig b/arch/parisc/defconfig --- a/arch/parisc/defconfig Mon Sep 22 00:30:18 2003 +++ b/arch/parisc/defconfig Mon Sep 22 00:30:18 2003 @@ -150,24 +150,25 @@ CONFIG_SCSI_LASI700=y CONFIG_53C700_MEM_MAPPED=y CONFIG_53C700_LE_ON_BE=y -# CONFIG_SCSI_NCR53C7xx is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set +CONFIG_SCSI_SYM53C8XX_2=y +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set CONFIG_SCSI_ZALON=y -# CONFIG_SCSI_NCR53C8XX is not set -CONFIG_SCSI_SYM53C8XX=y CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 CONFIG_SCSI_NCR53C8XX_SYNC=20 # CONFIG_SCSI_NCR53C8XX_PROFILE is not set -# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set # CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set # CONFIG_SCSI_PCI2000 is not set # CONFIG_SCSI_PCI2220I is not set # CONFIG_SCSI_QLOGIC_ISP is not set # CONFIG_SCSI_QLOGIC_FC is not set # CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_DC395x is not set # CONFIG_SCSI_DC390T is not set -# CONFIG_SCSI_U14_34F is not set # CONFIG_SCSI_NSP32 is not set # CONFIG_SCSI_DEBUG is not set @@ -374,7 +375,6 @@ # CONFIG_SERIO_CT82C710 is not set # CONFIG_SERIO_PARKBD is not set CONFIG_HP_SDC=y -CONFIG_HIL_MLC=y # # Input Device Drivers diff -Nru a/arch/parisc/hpux/wrappers.S b/arch/parisc/hpux/wrappers.S --- a/arch/parisc/hpux/wrappers.S Mon Sep 22 00:30:24 2003 +++ b/arch/parisc/hpux/wrappers.S Mon Sep 22 00:30:24 2003 @@ -21,17 +21,20 @@ */ #ifdef __LP64__ -#warning Must be changed for PA64 +#warning PA64 support needs more work...did first cut #endif #include +#include +#include +#ifdef __LP64__ + .level 2.0w +#else .level 1.1 +#endif .text -#include -#include - /* These should probably go in a header file somewhere. * They are duplicated in kernel/wrappers.S * Possibly we should consider consolidating these @@ -41,41 +44,41 @@ #ifdef __LP64__ #warning NEEDS WORK for 64-bit #endif - stw %r3, PT_GR3(\regs) - stw %r4, PT_GR4(\regs) - stw %r5, PT_GR5(\regs) - stw %r6, PT_GR6(\regs) - stw %r7, PT_GR7(\regs) - stw %r8, PT_GR8(\regs) - stw %r9, PT_GR9(\regs) - stw %r10,PT_GR10(\regs) - stw %r11,PT_GR11(\regs) - stw %r12,PT_GR12(\regs) - stw %r13,PT_GR13(\regs) - stw %r14,PT_GR14(\regs) - stw %r15,PT_GR15(\regs) - stw %r16,PT_GR16(\regs) - stw %r17,PT_GR17(\regs) - stw %r18,PT_GR18(\regs) + STREG %r3, PT_GR3(\regs) + STREG %r4, PT_GR4(\regs) + STREG %r5, PT_GR5(\regs) + STREG %r6, PT_GR6(\regs) + STREG %r7, PT_GR7(\regs) + STREG %r8, PT_GR8(\regs) + STREG %r9, PT_GR9(\regs) + STREG %r10,PT_GR10(\regs) + STREG %r11,PT_GR11(\regs) + STREG %r12,PT_GR12(\regs) + STREG %r13,PT_GR13(\regs) + STREG %r14,PT_GR14(\regs) + STREG %r15,PT_GR15(\regs) + STREG %r16,PT_GR16(\regs) + STREG %r17,PT_GR17(\regs) + STREG %r18,PT_GR18(\regs) .endm .macro reg_restore regs - ldw PT_GR3(\regs), %r3 - ldw PT_GR4(\regs), %r4 - ldw PT_GR5(\regs), %r5 - ldw PT_GR6(\regs), %r6 - ldw PT_GR7(\regs), %r7 - ldw PT_GR8(\regs), %r8 - ldw PT_GR9(\regs), %r9 - ldw PT_GR10(\regs),%r10 - ldw PT_GR11(\regs),%r11 - ldw PT_GR12(\regs),%r12 - ldw PT_GR13(\regs),%r13 - ldw PT_GR14(\regs),%r14 - ldw PT_GR15(\regs),%r15 - ldw PT_GR16(\regs),%r16 - ldw PT_GR17(\regs),%r17 - ldw PT_GR18(\regs),%r18 + LDREG PT_GR3(\regs), %r3 + LDREG PT_GR4(\regs), %r4 + LDREG PT_GR5(\regs), %r5 + LDREG PT_GR6(\regs), %r6 + LDREG PT_GR7(\regs), %r7 + LDREG PT_GR8(\regs), %r8 + LDREG PT_GR9(\regs), %r9 + LDREG PT_GR10(\regs),%r10 + LDREG PT_GR11(\regs),%r11 + LDREG PT_GR12(\regs),%r12 + LDREG PT_GR13(\regs),%r13 + LDREG PT_GR14(\regs),%r14 + LDREG PT_GR15(\regs),%r15 + LDREG PT_GR16(\regs),%r16 + LDREG PT_GR17(\regs),%r17 + LDREG PT_GR18(\regs),%r18 .endm @@ -88,18 +91,18 @@ ;! pointer in task reg_save %r1 - stw %r2,-20(%r30) + STREG %r2,-20(%r30) ldo 64(%r30),%r30 - stw %r2,PT_GR19(%r1) ;! save for child - stw %r30,PT_GR21(%r1) ;! save for child + STREG %r2,PT_GR19(%r1) ;! save for child + STREG %r30,PT_GR21(%r1) ;! save for child - ldw PT_GR30(%r1),%r25 - mtctl %r25,%cr29 + LDREG PT_GR30(%r1),%r25 + mtctl %r25,%cr29 copy %r1,%r24 bl sys_clone,%r2 ldi SIGCHLD,%r26 - ldw -84(%r30),%r2 + LDREG -84(%r30),%r2 fork_return: ldo -64(%r30),%r30 ldo TASK_REGS-TASK_SZ_ALGN-64(%r30),%r1 ;! get pt regs @@ -116,14 +119,14 @@ * know the difference. We can fix this later if necessary. */ - ldo -1024(%r0),%r1 + ldo -1024(%r0),%r1 comb,>>=,n %r28,%r1,fork_exit /* just let the syscall exit handle it */ - or,= %r28,%r0,%r0 - or,tr %r0,%r0,%r29 /* r28 <> 0, we are parent, set r29 to 0 */ - ldo 1(%r0),%r29 /* r28 == 0, we are child, set r29 to 1 */ + or,= %r28,%r0,%r0 + or,tr %r0,%r0,%r29 /* r28 <> 0, we are parent, set r29 to 0 */ + ldo 1(%r0),%r29 /* r28 == 0, we are child, set r29 to 1 */ fork_exit: - bv %r0(%r2) + bv %r0(%r2) nop /* Set the return value for the child */ @@ -134,7 +137,7 @@ nop #endif - ldw TASK_PT_GR19-TASK_SZ_ALGN-128(%r30),%r2 + LDREG TASK_PT_GR19-TASK_SZ_ALGN-128(%r30),%r2 b fork_return copy %r0,%r28 @@ -157,17 +160,17 @@ /* Store arg0, arg1 and arg2 so that hpux_execve will find them */ - stw %r26,PT_GR26(%r1) - stw %r25,PT_GR25(%r1) - stw %r24,PT_GR24(%r1) + STREG %r26,PT_GR26(%r1) + STREG %r25,PT_GR25(%r1) + STREG %r24,PT_GR24(%r1) - stw %r2,-20(%r30) + STREG %r2,-20(%r30) ldo 64(%r30),%r30 bl hpux_execve,%r2 copy %r1,%arg0 ldo -64(%r30),%r30 - ldw -20(%r30),%r2 + LDREG -20(%r30),%r2 /* If exec succeeded we need to load the args */ @@ -175,10 +178,10 @@ comb,>>= %r28,%r1,exec_error copy %r2,%r19 ldo -TASK_SZ_ALGN-64(%r30),%r1 ;! get task ptr - ldw TASK_PT_GR26(%r1),%r26 - ldw TASK_PT_GR25(%r1),%r25 - ldw TASK_PT_GR24(%r1),%r24 - ldw TASK_PT_GR23(%r1),%r23 + LDREG TASK_PT_GR26(%r1),%r26 + LDREG TASK_PT_GR25(%r1),%r25 + LDREG TASK_PT_GR24(%r1),%r24 + LDREG TASK_PT_GR23(%r1),%r23 copy %r0,%r2 /* Flag to syscall_exit not to clear args */ exec_error: @@ -191,7 +194,7 @@ /* HP-UX expects pipefd's returned in r28 & r29 */ hpux_pipe_wrapper: - stw %r2,-20(%r30) + STREG %r2,-20(%r30) ldo 64(%r30),%r30 bl hpux_pipe,%r2 ldo -56(%r30),%r26 /* pass local array to hpux_pipe */ @@ -199,12 +202,12 @@ ldo -1024(%r0),%r1 comb,>>= %r28,%r1,pipe_exit /* let syscall exit handle it */ - ldw -84(%r30),%r2 + LDREG -84(%r30),%r2 /* if success, load fd's from stack array */ - ldw -56(%r30),%r28 - ldw -52(%r30),%r29 + LDREG -56(%r30),%r28 + LDREG -52(%r30),%r29 pipe_exit: bv %r0(%r2) @@ -251,4 +254,4 @@ hpux_unimplemented_wrapper: b hpux_unimplemented - stw %r22,-64(%r30) /* overwrite arg8 with syscall number */ + STREG %r22,-64(%r30) /* overwrite arg8 with syscall number */ diff -Nru a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c --- a/arch/parisc/kernel/cache.c Mon Sep 22 00:30:21 2003 +++ b/arch/parisc/kernel/cache.c Mon Sep 22 00:30:21 2003 @@ -232,7 +232,8 @@ if (!page->mapping) return; - + /* check shared list first if it's not empty...it's usually + * the shortest */ list_for_each(l, &page->mapping->i_mmap_shared) { struct vm_area_struct *mpnt; unsigned long off; @@ -243,6 +244,33 @@ * If this VMA is not in our MM, we can ignore it. */ if (mpnt->vm_mm != mm) + continue; + + if (page->index < mpnt->vm_pgoff) + continue; + + off = page->index - mpnt->vm_pgoff; + if (off >= (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT) + continue; + + flush_cache_page(mpnt, mpnt->vm_start + (off << PAGE_SHIFT)); + + /* All user shared mappings should be equivalently mapped, + * so once we've flushed one we should be ok + */ + return; + } + + /* then check private mapping list for read only shared mappings + * which are flagged by VM_MAYSHARE */ + list_for_each(l, &page->mapping->i_mmap) { + struct vm_area_struct *mpnt; + unsigned long off; + + mpnt = list_entry(l, struct vm_area_struct, shared); + + + if (mpnt->vm_mm != mm || !(mpnt->vm_flags & VM_MAYSHARE)) continue; if (page->index < mpnt->vm_pgoff) diff -Nru a/arch/parisc/kernel/drivers.c b/arch/parisc/kernel/drivers.c --- a/arch/parisc/kernel/drivers.c Mon Sep 22 00:30:24 2003 +++ b/arch/parisc/kernel/drivers.c Mon Sep 22 00:30:24 2003 @@ -447,7 +447,7 @@ #define MAX_NATIVE_DEVICES 64 #define NATIVE_DEVICE_OFFSET 0x1000 -#define FLEX_MASK (unsigned long)0xfffffffffffc0000 +#define FLEX_MASK F_EXTEND(0xfffc0000) #define IO_IO_LOW offsetof(struct bc_module, io_io_low) #define IO_IO_HIGH offsetof(struct bc_module, io_io_high) #define READ_IO_IO_LOW(dev) (unsigned long)(signed int)__raw_readl(dev->hpa + IO_IO_LOW) @@ -514,7 +514,7 @@ } while(!devices_found && hpa < io_io_high); } -#define CENTRAL_BUS_ADDR (unsigned long) 0xfffffffffff80000 +#define CENTRAL_BUS_ADDR F_EXTEND(0xfff80000) /** * walk_central_bus - Find devices attached to the central bus diff -Nru a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c --- a/arch/parisc/kernel/irq.c Mon Sep 22 00:30:21 2003 +++ b/arch/parisc/kernel/irq.c Mon Sep 22 00:30:21 2003 @@ -22,7 +22,7 @@ */ #include #include -#include +#include #include #include #include @@ -39,6 +39,7 @@ #include #include +#include #undef DEBUG_IRQ #undef PARISC_IRQ_CR16_COUNTS @@ -842,6 +843,10 @@ return irq_found; } +unsigned int probe_irq_mask(unsigned long irqs) +{ + return 0; +} void __init init_IRQ(void) { diff -Nru a/arch/parisc/kernel/module.c b/arch/parisc/kernel/module.c --- a/arch/parisc/kernel/module.c Mon Sep 22 00:30:25 2003 +++ b/arch/parisc/kernel/module.c Mon Sep 22 00:30:25 2003 @@ -41,6 +41,13 @@ return -ENOEXEC; \ } +/* Maximum number of GOT entries. We use a long displacement ldd from + * the bottom of the table, which has a maximum signed displacement of + * 0x3fff; however, since we're only going forward, this becomes + * 0x1fff, and thus, since each GOT entry is 8 bytes long we can have + * at most 1023 entries */ +#define MAX_GOTS 1023 + /* three functions to determine where in the module core * or init pieces the location is */ static inline int is_init(struct module *me, void *loc) @@ -300,11 +307,14 @@ got = me->module_core + me->arch.got_offset; for (i = 0; got[i].addr; i++) if (got[i].addr == value) - return i * sizeof(struct got_entry); + goto out; BUG_ON(++me->arch.got_count > me->arch.got_max); got[i].addr = value; + out: + DEBUGP("GOT ENTRY %d[%x] val %lx\n", i, i*sizeof(struct got_entry), + value); return i * sizeof(struct got_entry); } #endif /* __LP64__ */ @@ -387,7 +397,7 @@ stub->insns[2] = 0xe820d000; /* bve (%r1) */ stub->insns[3] = 0x537b0030; /* ldd 18(%dp),%dp */ - stub->insns[0] |= reassemble_14(rrsel(get_got(me, value, addend),0)); + stub->insns[0] |= reassemble_14(get_got(me, value, addend) & 0x3fff); } else { @@ -516,6 +526,9 @@ case R_PARISC_PCREL22F: /* 22-bit PC relative address; only defined for pa20 */ val = get_stub(me, val, addend, 0, is_init(me, loc)); + DEBUGP("STUB FOR %s loc %lx+%lx at %lx\n", + strtab + sym->st_name, (unsigned long)loc, addend, + val) val = (val - dot - 8)/4; CHECK_RELOC(val, 22); *loc = (*loc & ~0x3ff1ffd) | reassemble_22(val); @@ -618,6 +631,9 @@ val = get_stub(me, val, addend, 0, is_init(me, loc)); } + DEBUGP("STUB FOR %s loc %lx, val %lx+%lx at %lx\n", + strtab + sym->st_name, loc, sym->st_value, + addend, val); /* FIXME: local symbols work as long as the * core and init pieces aren't separated too * far. If this is ever broken, you will trip @@ -646,6 +662,9 @@ /* 64-bit function address */ if(is_local(me, (void *)(val + addend))) { *loc64 = get_fdesc(me, val+addend); + DEBUGP("FDESC for %s at %p points to %lx\n", + strtab + sym->st_name, *loc64, + ((struct fdesc_entry *)*loc64)->addr); } else { /* if the symbol is not local to this * module then val+addend is a pointer @@ -711,8 +730,13 @@ } } - printk("module %s: strtab %p, symhdr %p\n", + DEBUGP("module %s: strtab %p, symhdr %p\n", me->name, strtab, symhdr); + + if(me->arch.got_count > MAX_GOTS) { + printk(KERN_ERR "%s: Global Offset Table overflow (used %ld, allowed %d\n", me->name, me->arch.got_count, MAX_GOTS); + return -EINVAL; + } /* no symbol table */ if(symhdr == NULL) diff -Nru a/arch/parisc/kernel/parisc_ksyms.c b/arch/parisc/kernel/parisc_ksyms.c --- a/arch/parisc/kernel/parisc_ksyms.c Mon Sep 22 00:30:25 2003 +++ b/arch/parisc/kernel/parisc_ksyms.c Mon Sep 22 00:30:25 2003 @@ -37,13 +37,11 @@ #include EXPORT_SYMBOL(enable_irq); EXPORT_SYMBOL(disable_irq); +EXPORT_SYMBOL(probe_irq_mask); #include EXPORT_SYMBOL(kernel_thread); EXPORT_SYMBOL(boot_cpu_data); -#ifdef CONFIG_EISA -EXPORT_SYMBOL(EISA_bus); -#endif #include EXPORT_SYMBOL(pm_power_off); @@ -200,6 +198,9 @@ EXPORT_SYMBOL(__ashldi3); EXPORT_SYMBOL(__lshrdi3); EXPORT_SYMBOL(__muldi3); + +asmlinkage void * __canonicalize_funcptr_for_compare(void *); +EXPORT_SYMBOL(__canonicalize_funcptr_for_compare); #ifdef __LP64__ extern void __divdi3(void); diff -Nru a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c --- a/arch/parisc/kernel/pci.c Mon Sep 22 00:30:17 2003 +++ b/arch/parisc/kernel/pci.c Mon Sep 22 00:30:17 2003 @@ -10,6 +10,7 @@ * Copyright (C) 1999-2001 Grant Grundler */ #include +#include #include #include #include @@ -25,7 +26,7 @@ #define DEBUG_CONFIG 0 #if DEBUG_CONFIG -# define DBGC(x...) printk(KERN_DEBUG x) +# define DBGC(x...) printk(KERN_DEBUG x) #else # define DBGC(x...) #endif @@ -38,13 +39,15 @@ #endif /* To be used as: mdelay(pci_post_reset_delay); -** -** post_reset is the time the kernel should stall to prevent anyone from -** accessing the PCI bus once #RESET is de-asserted. -** PCI spec somewhere says 1 second but with multi-PCI bus systems, -** this makes the boot time much longer than necessary. -** 20ms seems to work for all the HP PCI implementations to date. -*/ + * + * post_reset is the time the kernel should stall to prevent anyone from + * accessing the PCI bus once #RESET is de-asserted. + * PCI spec somewhere says 1 second but with multi-PCI bus systems, + * this makes the boot time much longer than necessary. + * 20ms seems to work for all the HP PCI implementations to date. + * + * XXX: turn into a #defined constant in ? + */ int pci_post_reset_delay = 50; struct pci_port_ops *pci_port; @@ -52,9 +55,7 @@ int pci_hba_count = 0; -/* -** parisc_pci_hba used by pci_port->in/out() ops to lookup bus data. -*/ +/* parisc_pci_hba used by pci_port->in/out() ops to lookup bus data. */ #define PCI_HBA_MAX 32 struct pci_hba_data *parisc_pci_hba[PCI_HBA_MAX]; @@ -129,8 +130,6 @@ /* Called from pci_do_scan_bus() *after* walking a bus but before walking PPBs. */ void pcibios_fixup_bus(struct pci_bus *bus) { - ASSERT(pci_bios != NULL); - if (pci_bios->fixup_bus) { pci_bios->fixup_bus(bus); } else { @@ -145,64 +144,26 @@ } -/* -** Used in drivers/pci/quirks.c -*/ +/* Used in drivers/pci/quirks.c */ struct pci_fixup pcibios_fixups[] = { {0} }; /* -** called by drivers/pci/setup.c:pdev_fixup_irq() -*/ -void __devinit pcibios_update_irq(struct pci_dev *dev, int irq) -{ -/* -** updates IRQ_LINE cfg register to reflect PCI-PCI bridge skewing. -** -** Calling path for Alpha is: -** alpha/kernel/pci.c:common_init_pci(swizzle_func, pci_map_irq_func ) -** drivers/pci/setup.c:pci_fixup_irqs() -** drivers/pci/setup.c:pci_fixup_irq() (for each PCI device) -** invoke swizzle and map functions -** alpha/kernel/pci.c:pcibios_update_irq() -** -** Don't need this for PA legacy PDC systems. -** -** On PAT PDC systems, We only support one "swizzle" for any number -** of PCI-PCI bridges deep. That's how bit3 PCI expansion chassis -** are implemented. The IRQ lines are "skewed" for all devices but -** *NOT* routed through the PCI-PCI bridge. Ie any device "0" will -** share an IRQ line. Legacy PDC is expecting this IRQ line routing -** as well. -** -** Unfortunately, PCI spec allows the IRQ lines to be routed -** around the PCI bridge as long as the IRQ lines are skewed -** based on the device number...... -** -** Lastly, dino.c might be able to use pci_fixup_irq() to -** support RS-232 and PS/2 children. Not sure how but it's -** something to think about. -*/ -} - - -/* -** Called by pci_set_master() - a driver interface. -** -** Legacy PDC guarantees to set: -** Map Memory BAR's into PA IO space. -** Map Expansion ROM BAR into one common PA IO space per bus. -** Map IO BAR's into PCI IO space. -** Command (see below) -** Cache Line Size -** Latency Timer -** Interrupt Line -** PPB: secondary latency timer, io/mmio base/limit, -** bus numbers, bridge control -** -*/ -void -pcibios_set_master(struct pci_dev *dev) + * Called by pci_set_master() - a driver interface. + * + * Legacy PDC guarantees to set: + * Map Memory BAR's into PA IO space. + * Map Expansion ROM BAR into one common PA IO space per bus. + * Map IO BAR's into PCI IO space. + * Command (see below) + * Cache Line Size + * Latency Timer + * Interrupt Line + * PPB: secondary latency timer, io/mmio base/limit, + * bus numbers, bridge control + * + */ +void pcibios_set_master(struct pci_dev *dev) { u8 lat; @@ -214,43 +175,36 @@ ** HP generally has fewer devices on the bus than other architectures. ** upper byte is PCI_LATENCY_TIMER. */ - pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, + pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, (0x80 << 8) | (L1_CACHE_BYTES / sizeof(u32))); } -void __init -pcibios_init_bus(struct pci_bus *bus) +void __init pcibios_init_bus(struct pci_bus *bus) { struct pci_dev *dev = bus->self; + unsigned short bridge_ctl; /* We deal only with pci controllers and pci-pci bridges. */ - if (dev && (dev->class >> 8) != PCI_CLASS_BRIDGE_PCI) + if (!dev || (dev->class >> 8) != PCI_CLASS_BRIDGE_PCI) return; - - if (dev) { - unsigned short bridge_ctl; - - /* PCI-PCI bridge - set the cache line and default latency - (32) for primary and secondary buses. */ - pci_write_config_byte(dev, PCI_SEC_LATENCY_TIMER, 32); - - /* Read bridge control */ - pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bridge_ctl); - pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bridge_ctl - | PCI_BRIDGE_CTL_PARITY | PCI_BRIDGE_CTL_SERR); - } + /* PCI-PCI bridge - set the cache line and default latency + (32) for primary and secondary buses. */ + pci_write_config_byte(dev, PCI_SEC_LATENCY_TIMER, 32); + + pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bridge_ctl); + bridge_ctl |= PCI_BRIDGE_CTL_PARITY | PCI_BRIDGE_CTL_SERR; + pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bridge_ctl); } -/* -** KLUGE: Link the child and parent resources - generic PCI didn't -*/ +/* KLUGE: Link the child and parent resources - generic PCI didn't */ static void pcibios_link_hba_resources( struct resource *hba_res, struct resource *r) { if (!r->parent) { + printk(KERN_EMERG "PCI: Tell willy he's wrong\n"); r->parent = hba_res; /* reverse link is harder *sigh* */ @@ -268,14 +222,9 @@ } } -/* -** called by drivers/pci/setup-res.c:pci_setup_bridge(). -*/ -void __devinit pcibios_resource_to_bus( - struct pci_dev *dev, - struct pci_bus_region *region, - struct resource *res - ) +/* called by drivers/pci/setup-bus.c:pci_setup_bridge(). */ +void __devinit pcibios_resource_to_bus(struct pci_dev *dev, + struct pci_bus_region *region, struct resource *res) { struct pci_bus *bus = dev->bus; struct pci_hba_data *hba = HBA_DATA(bus->dev->platform_data); @@ -313,17 +262,16 @@ #endif /* -** pcibios align resources() is called everytime generic PCI code -** wants to generate a new address. The process of looking for -** an available address, each candidate is first "aligned" and -** then checked if the resource is available until a match is found. -** -** Since we are just checking candidates, don't use any fields other -** than res->start. -*/ -void __devinit -pcibios_align_resource(void *data, struct resource *res, - unsigned long size, unsigned long alignment) + * pcibios align resources() is called every time generic PCI code + * wants to generate a new address. The process of looking for + * an available address, each candidate is first "aligned" and + * then checked if the resource is available until a match is found. + * + * Since we are just checking candidates, don't use any fields other + * than res->start. + */ +void pcibios_align_resource(void *data, struct resource *res, + unsigned long size, unsigned long alignment) { unsigned long mask, align; @@ -332,10 +280,6 @@ res->parent, res->start, res->end, (int) res->flags, size, alignment); - /* has resource already been aligned/assigned? */ - if (res->parent) - return; - /* If it's not IO, then it's gotta be MEM */ align = (res->flags & IORESOURCE_IO) ? PCIBIOS_MIN_IO : PCIBIOS_MIN_MEM; @@ -344,32 +288,26 @@ res->start += mask; res->start &= ~mask; - /* - ** WARNING : caller is expected to update "end" field. - ** We can't since it might really represent the *size*. - ** The difference is "end = start + size" vs "end += start". - */ + /* The caller updates the end field, we don't. */ } -int __devinit -pcibios_enable_device(struct pci_dev *dev, int mask) +/* + * A driver is enabling the device. We make sure that all the appropriate + * bits are set to allow the device to operate as the driver is expecting. + * We enable the port IO and memory IO bits if the device has any BARs of + * that type, and we enable the PERR and SERR bits unconditionally. + * Drivers that do not need parity (eg graphics and possibly networking) + * can clear these bits if they want. + */ +int pcibios_enable_device(struct pci_dev *dev, int mask) { u16 cmd; int idx; - /* - ** The various platform PDC's (aka "BIOS" for PCs) don't - ** enable all the same bits. We just make sure they are here. - */ pci_read_config_word(dev, PCI_COMMAND, &cmd); - /* - ** See if any resources have been allocated - ** While "regular" PCI devices only use 0-5, Bridges use a few - ** beyond that for window registers. - */ - for (idx=0; idxresource[idx]; /* only setup requested resources */ @@ -382,14 +320,6 @@ cmd |= PCI_COMMAND_MEMORY; } - /* - ** Enable System error and Parity Error reporting by default. - ** Devices that do NOT want those behaviors should clear them - ** (eg PCI graphics, possibly networking). - ** Interfaces like SCSI certainly should not. We want the - ** system to crash if a system or parity error is detected. - ** At least until the device driver can recover from such an error. - */ cmd |= (PCI_COMMAND_SERR | PCI_COMMAND_PARITY); #if 0 @@ -402,30 +332,15 @@ return 0; } -void __init -pcibios_setup_host_bridge(struct pci_bus *bus) -{ - ASSERT(pci_bios != NULL); -#if 0 - if (pci_bios) - { - if (pci_bios->setup_host_bridge) { - (*pci_bios->setup_host_bridge)(bus); - } - } -#endif -} - - -/* -** PARISC specific (unfortunately) -*/ +/* PA-RISC specific */ void pcibios_register_hba(struct pci_hba_data *hba) { - ASSERT(pci_hba_count < PCI_HBA_MAX); + if (pci_hba_count >= PCI_HBA_MAX) { + printk(KERN_ERR "PCI: Too many Host Bus Adapters\n"); + return; + } - /* pci_port->in/out() uses parisc_pci_hba to lookup parameter. */ parisc_pci_hba[pci_hba_count] = hba; hba->hba_num = pci_hba_count++; } diff -Nru a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c --- a/arch/parisc/kernel/process.c Mon Sep 22 00:30:25 2003 +++ b/arch/parisc/kernel/process.c Mon Sep 22 00:30:25 2003 @@ -19,7 +19,6 @@ #include #include #include -#include #include #include diff -Nru a/arch/parisc/kernel/real2.S b/arch/parisc/kernel/real2.S --- a/arch/parisc/kernel/real2.S Mon Sep 22 00:30:21 2003 +++ b/arch/parisc/kernel/real2.S Mon Sep 22 00:30:21 2003 @@ -123,7 +123,7 @@ nop restore_control_regs: - load32 PA(save_cr_space + (N_SAVED_REGS * REG_SZ)), %r26 + load32 PA(save_cr_space+(N_SAVED_REGS*REG_SZ)), %r26 POP_CR(%cr15, %r26) POP_CR(%cr31, %r26) POP_CR(%cr30, %r26) @@ -275,6 +275,7 @@ nop #endif + .export pc_in_user_space .text /* Doesn't belong here but I couldn't find a nicer spot. */ @@ -283,3 +284,17 @@ bv,n 0(%rp) nop + + .export __canonicalize_funcptr_for_compare + .text + /* http://lists.parisc-linux.org/hypermail/parisc-linux/10916.html + ** GCC 3.3 and later has a new function in libgcc.a for + ** comparing function pointers. + */ +__canonicalize_funcptr_for_compare: +#ifdef __LP64__ + bve (%r2) +#else + bv %r0(%r2) +#endif + copy %r26,%r28 diff -Nru a/arch/parisc/kernel/setup.c b/arch/parisc/kernel/setup.c --- a/arch/parisc/kernel/setup.c Mon Sep 22 00:30:24 2003 +++ b/arch/parisc/kernel/setup.c Mon Sep 22 00:30:24 2003 @@ -52,10 +52,6 @@ struct proc_dir_entry * proc_runway_root = NULL; struct proc_dir_entry * proc_gsc_root = NULL; -#ifdef CONFIG_EISA -int EISA_bus; /* This has to go somewhere in architecture specific code. */ -#endif - void __init setup_cmdline(char **cmdline_p) { extern unsigned int boot_args[]; diff -Nru a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c --- a/arch/parisc/kernel/signal.c Mon Sep 22 00:30:25 2003 +++ b/arch/parisc/kernel/signal.c Mon Sep 22 00:30:25 2003 @@ -13,7 +13,6 @@ * arch/parisc/hpux/signal.c when we figure out how to do them. */ -#include #include #include #include @@ -458,6 +457,8 @@ if (in_syscall) { /* Check the return code */ switch (regs->gr[28]) { + case -ERESTART_RESTARTBLOCK: + current_thread_info()->restart_block.fn = do_no_restart_syscall; case -ERESTARTNOHAND: DBG(("ERESTARTNOHAND: returning -EINTR\n")); regs->gr[28] = -EINTR; @@ -495,7 +496,8 @@ /* Did we come from a system call? */ if (in_syscall) { /* Restart the system call - no handlers present */ - if (regs->gr[28] == -ERESTARTNOHAND || + if (regs->gr[28] == -ERESTART_RESTARTBLOCK || + regs->gr[28] == -ERESTARTNOHAND || regs->gr[28] == -ERESTARTSYS || regs->gr[28] == -ERESTARTNOINTR) { /* Hooray for delayed branching. We don't diff -Nru a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c --- a/arch/parisc/kernel/sys_parisc.c Mon Sep 22 00:30:24 2003 +++ b/arch/parisc/kernel/sys_parisc.c Mon Sep 22 00:30:24 2003 @@ -30,8 +30,6 @@ { struct vm_area_struct *vma; - if (!addr) - addr = TASK_UNMAPPED_BASE; addr = PAGE_ALIGN(addr); for (vma = find_vma(current->mm, addr); ; vma = vma->vm_next) { @@ -46,17 +44,38 @@ #define DCACHE_ALIGN(addr) (((addr) + (SHMLBA - 1)) &~ (SHMLBA - 1)) -static unsigned long get_shared_area(struct inode *inode, unsigned long addr, - unsigned long len, unsigned long pgoff) +/* + * We need to know the offset to use. Old scheme was to look for + * existing mapping and use the same offset. New scheme is to use the + * address of the kernel data structure as the seed for the offset. + * We'll see how that works... + */ +#if 0 +static int get_offset(struct address_space *mapping) { - struct vm_area_struct *vma, *first_vma; - int offset; + struct vm_area_struct *vma = list_entry(mapping->i_mmap_shared.next, + struct vm_area_struct, shared); + return (vma->vm_start + ((pgoff - vma->vm_pgoff) << PAGE_SHIFT)) & + (SHMLBA - 1); +} +#else +/* The mapping is cacheline aligned, so there's no information in the bottom + * few bits of the address. We're looking for 10 bits (4MB / 4k), so let's + * drop the bottom 8 bits and use bits 8-17. + */ +static int get_offset(struct address_space *mapping) +{ + int offset = (int) mapping << (PAGE_SHIFT - 8); + return offset & 0x3FF000; +} +#endif - first_vma = list_entry(inode->i_mapping->i_mmap_shared.next, struct vm_area_struct, shared); - offset = (first_vma->vm_start + ((pgoff - first_vma->vm_pgoff) << PAGE_SHIFT)) & (SHMLBA - 1); +static unsigned long get_shared_area(struct address_space *mapping, + unsigned long addr, unsigned long len, unsigned long pgoff) +{ + struct vm_area_struct *vma; + int offset = get_offset(mapping); - if (!addr) - addr = TASK_UNMAPPED_BASE; addr = DCACHE_ALIGN(addr - offset) + offset; for (vma = find_vma(current->mm, addr); ; vma = vma->vm_next) { @@ -74,17 +93,17 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags) { - struct inode *inode = NULL; + struct inode *inode; if (len > TASK_SIZE) return -ENOMEM; + if (!addr) + addr = TASK_UNMAPPED_BASE; - if (filp) { - inode = filp->f_dentry->d_inode; - } + inode = filp ? filp->f_dentry->d_inode : NULL; - if (inode && (flags & MAP_SHARED) && (!list_empty(&inode->i_mapping->i_mmap_shared))) { - addr = get_shared_area(inode, addr, len, pgoff); + if (inode && (flags & MAP_SHARED)) { + addr = get_shared_area(inode->i_mapping, addr, len, pgoff); } else { addr = get_unshared_area(addr, len); } @@ -185,6 +204,7 @@ size_t count, loff_t pos); extern asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char *buf, size_t count, loff_t pos); +extern asmlinkage ssize_t sys_readahead(int fd, loff_t offset, size_t count); asmlinkage ssize_t parisc_pread64(unsigned int fd, char *buf, size_t count, unsigned int high, unsigned int low) @@ -198,6 +218,11 @@ return sys_pwrite64(fd, buf, count, (loff_t)high << 32 | low); } +asmlinkage ssize_t parisc_readahead(int fd, unsigned int high, unsigned int low, + size_t count) +{ + return sys_readahead(fd, (loff_t)high << 32 | low, count); +} /* * FIXME, please remove this crap as soon as possible @@ -271,7 +296,7 @@ tbuf.shm_cpid = sbuf->shm_cpid; tbuf.shm_lpid = sbuf->shm_lpid; tbuf.shm_nattch = sbuf->shm_nattch; - return copy_to_user(buf, &tbuf, sizeof tbuf); + return copy_to_user(buf, &tbuf, sizeof tbuf) ? -EFAULT : 0; } int sys_msgctl_broken(int msqid, int cmd, struct msqid_ds *buf) diff -Nru a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c --- a/arch/parisc/kernel/sys_parisc32.c Mon Sep 22 00:30:20 2003 +++ b/arch/parisc/kernel/sys_parisc32.c Mon Sep 22 00:30:20 2003 @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -373,18 +374,16 @@ return copy_to_user(u, &t32, sizeof t32); } -static int -get_compat_timeval(struct compat_timeval *u, struct timeval *t) +static inline long get_ts32(struct timespec *o, struct compat_timeval *i) { - int err; - struct compat_timeval t32; + long usec; - if ((err = copy_from_user(&t32, u, sizeof t32)) == 0) - { - t->tv_sec = t32.tv_sec; - t->tv_usec = t32.tv_usec; - } - return err; + if (__get_user(o->tv_sec, &i->tv_sec)) + return -EFAULT; + if (__get_user(usec, &i->tv_usec)) + return -EFAULT; + o->tv_nsec = usec * 1000; + return 0; } asmlinkage long sys32_time(compat_time_t *tloc) @@ -418,23 +417,22 @@ return 0; } -asmlinkage int -sys32_settimeofday(struct compat_timespec *tv, struct timezone *tz) +asmlinkage +int sys32_settimeofday(struct compat_timeval *tv, struct timezone *tz) { - struct timeval ktv; - struct timezone ktz; - extern int do_sys_settimeofday(struct timespec *tv, struct timezone *tz); + struct timespec kts; + struct timezone ktz; - if (tv) { - if (get_compat_timeval(tv, &ktv)) - return -EFAULT; - } - if (tz) { - if (copy_from_user(&ktz, tz, sizeof(ktz))) - return -EFAULT; - } + if (tv) { + if (get_ts32(&kts, tv)) + return -EFAULT; + } + if (tz) { + if (copy_from_user(&ktz, tz, sizeof(ktz))) + return -EFAULT; + } - return do_sys_settimeofday(tv ? &ktv : NULL, tz ? &ktz : NULL); + return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL); } int cp_compat_stat(struct kstat *stat, struct compat_stat *statbuf) @@ -1087,6 +1085,27 @@ kfree(mb); return err; +} + + +extern asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t *offset, size_t count); +asmlinkage int sys32_sendfile(int out_fd, int in_fd, compat_off_t *offset, s32 count) +{ + mm_segment_t old_fs = get_fs(); + int ret; + off_t of; + + if (offset && get_user(of, offset)) + return -EFAULT; + + set_fs(KERNEL_DS); + ret = sys_sendfile(out_fd, in_fd, offset ? &of : NULL, count); + set_fs(old_fs); + + if (offset && put_user(of, offset)) + return -EFAULT; + + return ret; } /* EXPORT/UNEXPORT */ diff -Nru a/arch/parisc/kernel/syscall.S b/arch/parisc/kernel/syscall.S --- a/arch/parisc/kernel/syscall.S Mon Sep 22 00:30:25 2003 +++ b/arch/parisc/kernel/syscall.S Mon Sep 22 00:30:25 2003 @@ -483,7 +483,7 @@ ENTRY_SAME(madvise) ENTRY_SAME(clone_wrapper) /* 120 */ ENTRY_SAME(setdomainname) - ENTRY_SAME(sendfile) + ENTRY_DIFF(sendfile) /* struct sockaddr... */ ENTRY_SAME(recvfrom) /* struct timex contains longs */ @@ -592,7 +592,7 @@ ENTRY_SAME(ni_syscall) ENTRY_SAME(ni_syscall) /* 205 */ ENTRY_SAME(gettid) - ENTRY_SAME(readahead) + ENTRY_OURS(readahead) ENTRY_SAME(ni_syscall) /* tkill */ ENTRY_SAME(sendfile64) diff -Nru a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c --- a/arch/parisc/kernel/traps.c Mon Sep 22 00:30:25 2003 +++ b/arch/parisc/kernel/traps.c Mon Sep 22 00:30:25 2003 @@ -221,6 +221,8 @@ return; } + oops_in_progress = 1; + /* Amuse the user in a SPARC fashion */ printk( " _______________________________ \n" @@ -413,6 +415,8 @@ void parisc_terminate(char *msg, struct pt_regs *regs, int code, unsigned long offset) { static spinlock_t terminate_lock = SPIN_LOCK_UNLOCKED; + + oops_in_progress = 1; set_eiem(0); local_irq_disable(); diff -Nru a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/parisc/kernel/vmlinux.lds.S Mon Sep 22 00:30:19 2003 @@ -0,0 +1,125 @@ +#include +#include + +/* ld script to make hppa Linux kernel */ +#ifndef CONFIG_PARISC64 +OUTPUT_FORMAT("elf32-hppa-linux") +OUTPUT_ARCH(hppa) +#else +OUTPUT_FORMAT("elf64-hppa-linux") +OUTPUT_ARCH(hppa:hppa2.0w) +#endif + +ENTRY(_stext) +#ifndef CONFIG_PARISC64 +jiffies = jiffies_64 + 4; +#else +jiffies = jiffies_64; +#endif +SECTIONS +{ + + . = 0x10100000; + + _text = .; /* Text and read-only data */ + .text BLOCK(16) : { + *(.text*) + *(.PARISC.unwind) + *(.fixup) + *(.lock.text) /* out-of-line lock text */ + *(.gnu.warning) + } = 0 + + _etext = .; /* End of text section */ + + . = ALIGN(16); /* Exception table */ + __start___ex_table = .; + __ex_table : { *(__ex_table) } + __stop___ex_table = .; + + RODATA + + .data BLOCK(8192) : { /* Data without special */ + data_start = .; + *(.data) + } + +#ifdef CONFIG_PARISC64 + . = ALIGN(16); /* Linkage tables */ + .opd : { *(.opd) } PROVIDE (__gp = .); + .plt : { *(.plt) } + .dlt : { *(.dlt) } +#endif + + . = ALIGN(16384); + __init_begin = .; + .init.text : { + _sinittext = .; + *(.init.text) + _einittext = .; + } + .init.data : { *(.init.data) } + . = ALIGN(16); + __setup_start = .; + .init.setup : { *(.init.setup) } + __setup_end = .; + __start___param =.; + __param : { *(__param) } + __stop___param = .; + __initcall_start = .; + .initcall.init : { + *(.initcall1.init) + *(.initcall2.init) + *(.initcall3.init) + *(.initcall4.init) + *(.initcall5.init) + *(.initcall6.init) + *(.initcall7.init) + } + __initcall_end = .; + __con_initcall_start = .; + .con_initcall.init : { *(.con_initcall.init) } + __con_initcall_end = .; + SECURITY_INIT + . = ALIGN(4096); + __initramfs_start = .; + .init.ramfs : { *(.init.ramfs) } + __initramfs_end = .; + . = ALIGN(32); + __per_cpu_start = .; + .data.percpu : { *(.data.percpu) } + __per_cpu_end = .; + . = ALIGN(4096); + __init_end = .; + + init_task BLOCK(16384) : { *(init_task) } /* The initial task and kernel stack */ + + _edata = .; /* End of data section */ + + + .bss : { *(.bss) *(COMMON) } /* BSS */ + + + _end = . ; + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .note 0 : { *(.note) } + +#ifdef CONFIG_PARISC64 + /* temporary hack until binutils is fixed to not emit these + for static binaries */ + /DISCARD/ : { + *(.dynsym) + *(.dynstr) + *(.dynamic) + *(.hash) + } +#endif +} diff -Nru a/arch/parisc/nm b/arch/parisc/nm --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/parisc/nm Mon Sep 22 00:30:25 2003 @@ -0,0 +1,6 @@ +#!/bin/sh +## +# Hack to have an nm which removes the local symbols. We also rely +# on this nm being hidden out of the ordinarily executable path +## +${CROSS_COMPILE}nm $* | grep -v '.LC*[0-9]*$' diff -Nru a/arch/parisc/vmlinux.lds.S b/arch/parisc/vmlinux.lds.S --- a/arch/parisc/vmlinux.lds.S Mon Sep 22 00:30:19 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,125 +0,0 @@ -#include -#include - -/* ld script to make hppa Linux kernel */ -#ifndef CONFIG_PARISC64 -OUTPUT_FORMAT("elf32-hppa-linux") -OUTPUT_ARCH(hppa) -#else -OUTPUT_FORMAT("elf64-hppa-linux") -OUTPUT_ARCH(hppa:hppa2.0w) -#endif - -ENTRY(_stext) -#ifndef CONFIG_PARISC64 -jiffies = jiffies_64 + 4; -#else -jiffies = jiffies_64; -#endif -SECTIONS -{ - - . = 0x10100000; - - _text = .; /* Text and read-only data */ - .text BLOCK(16) : { - *(.text*) - *(.PARISC.unwind) - *(.fixup) - *(.lock.text) /* out-of-line lock text */ - *(.gnu.warning) - } = 0 - - _etext = .; /* End of text section */ - - . = ALIGN(16); /* Exception table */ - __start___ex_table = .; - __ex_table : { *(__ex_table) } - __stop___ex_table = .; - - RODATA - - .data BLOCK(8192) : { /* Data without special */ - data_start = .; - *(.data) - } - -#ifdef CONFIG_PARISC64 - . = ALIGN(16); /* Linkage tables */ - .opd : { *(.opd) } PROVIDE (__gp = .); - .plt : { *(.plt) } - .dlt : { *(.dlt) } -#endif - - . = ALIGN(16384); - __init_begin = .; - .init.text : { - _sinittext = .; - *(.init.text) - _einittext = .; - } - .init.data : { *(.init.data) } - . = ALIGN(16); - __setup_start = .; - .init.setup : { *(.init.setup) } - __setup_end = .; - __start___param =.; - __param : { *(__param) } - __stop___param = .; - __initcall_start = .; - .initcall.init : { - *(.initcall1.init) - *(.initcall2.init) - *(.initcall3.init) - *(.initcall4.init) - *(.initcall5.init) - *(.initcall6.init) - *(.initcall7.init) - } - __initcall_end = .; - __con_initcall_start = .; - .con_initcall.init : { *(.con_initcall.init) } - __con_initcall_end = .; - SECURITY_INIT - . = ALIGN(4096); - __initramfs_start = .; - .init.ramfs : { *(.init.ramfs) } - __initramfs_end = .; - . = ALIGN(32); - __per_cpu_start = .; - .data.percpu : { *(.data.percpu) } - __per_cpu_end = .; - . = ALIGN(4096); - __init_end = .; - - init_task BLOCK(16384) : { *(init_task) } /* The initial task and kernel stack */ - - _edata = .; /* End of data section */ - - - .bss : { *(.bss) *(COMMON) } /* BSS */ - - - _end = . ; - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - .note 0 : { *(.note) } - -#ifdef CONFIG_PARISC64 - /* temporary hack until binutils is fixed to not emit these - for static binaries */ - /DISCARD/ : { - *(.dynsym) - *(.dynstr) - *(.dynamic) - *(.hash) - } -#endif -} diff -Nru a/arch/ppc/kernel/align.c b/arch/ppc/kernel/align.c --- a/arch/ppc/kernel/align.c Mon Sep 22 00:30:17 2003 +++ b/arch/ppc/kernel/align.c Mon Sep 22 00:30:17 2003 @@ -21,11 +21,11 @@ unsigned char flags; }; -#if defined(CONFIG_4xx) +#if defined(CONFIG_4xx) || defined(CONFIG_POWER4) #define OPCD(inst) (((inst) & 0xFC000000) >> 26) #define RS(inst) (((inst) & 0x03E00000) >> 21) #define RA(inst) (((inst) & 0x001F0000) >> 16) -#define IS_DFORM(code) ((code) >= 32 && (code) <= 55) +#define IS_XFORM(code) ((code) == 31) #endif #define INVALID { 0, 0 } @@ -61,9 +61,9 @@ { 4, ST+F+S }, /* 00 0 1010: stfs */ { 8, ST+F }, /* 00 0 1011: stfd */ INVALID, /* 00 0 1100 */ - INVALID, /* 00 0 1101 */ + INVALID, /* 00 0 1101: ld/ldu/lwa */ INVALID, /* 00 0 1110 */ - INVALID, /* 00 0 1111 */ + INVALID, /* 00 0 1111: std/stdu */ { 4, LD+U }, /* 00 1 0000: lwzu */ INVALID, /* 00 1 0001 */ { 4, ST+U }, /* 00 1 0010: stwu */ @@ -80,12 +80,12 @@ INVALID, /* 00 1 1101 */ INVALID, /* 00 1 1110 */ INVALID, /* 00 1 1111 */ - INVALID, /* 01 0 0000 */ + INVALID, /* 01 0 0000: ldx */ INVALID, /* 01 0 0001 */ - INVALID, /* 01 0 0010 */ + INVALID, /* 01 0 0010: stdx */ INVALID, /* 01 0 0011 */ INVALID, /* 01 0 0100 */ - INVALID, /* 01 0 0101: lwax?? */ + INVALID, /* 01 0 0101: lwax */ INVALID, /* 01 0 0110 */ INVALID, /* 01 0 0111 */ { 0, LD+HARD }, /* 01 0 1000: lswx */ @@ -96,12 +96,12 @@ INVALID, /* 01 0 1101 */ INVALID, /* 01 0 1110 */ INVALID, /* 01 0 1111 */ - INVALID, /* 01 1 0000 */ + INVALID, /* 01 1 0000: ldux */ INVALID, /* 01 1 0001 */ - INVALID, /* 01 1 0010 */ + INVALID, /* 01 1 0010: stdux */ INVALID, /* 01 1 0011 */ INVALID, /* 01 1 0100 */ - INVALID, /* 01 1 0101: lwaux?? */ + INVALID, /* 01 1 0101: lwaux */ INVALID, /* 01 1 0110 */ INVALID, /* 01 1 0111 */ INVALID, /* 01 1 1000 */ @@ -157,9 +157,9 @@ { 4, ST+F+S }, /* 11 0 1010: stfsx */ { 8, ST+F }, /* 11 0 1011: stfdx */ INVALID, /* 11 0 1100 */ - INVALID, /* 11 0 1101 */ + INVALID, /* 11 0 1101: lmd */ INVALID, /* 11 0 1110 */ - INVALID, /* 11 0 1111 */ + INVALID, /* 11 0 1111: stmd */ { 4, LD+U }, /* 11 1 0000: lwzux */ INVALID, /* 11 1 0001 */ { 4, ST+U }, /* 11 1 0010: stwux */ @@ -184,7 +184,7 @@ fix_alignment(struct pt_regs *regs) { int instr, nb, flags; -#if defined(CONFIG_4xx) +#if defined(CONFIG_4xx) || defined(CONFIG_POWER4) int opcode, f1, f2, f3; #endif int i, t; @@ -199,9 +199,11 @@ CHECK_FULL_REGS(regs); -#if defined(CONFIG_4xx) +#if defined(CONFIG_4xx) || defined(CONFIG_POWER4) /* The 4xx-family processors have no DSISR register, * so we emulate it. + * The POWER4 has a DSISR register but doesn't set it on + * an alignment fault. -- paulus */ instr = *((unsigned int *)regs->nip); @@ -209,7 +211,7 @@ reg = RS(instr); areg = RA(instr); - if (IS_DFORM(opcode)) { + if (!IS_XFORM(opcode)) { f1 = 0; f2 = (instr & 0x04000000) >> 26; f3 = (instr & 0x78000000) >> 27; diff -Nru a/arch/ppc/kernel/asm-offsets.c b/arch/ppc/kernel/asm-offsets.c --- a/arch/ppc/kernel/asm-offsets.c Mon Sep 22 00:30:22 2003 +++ b/arch/ppc/kernel/asm-offsets.c Mon Sep 22 00:30:22 2003 @@ -52,6 +52,7 @@ DEFINE(THREAD_VR0, offsetof(struct thread_struct, vr[0])); DEFINE(THREAD_VRSAVE, offsetof(struct thread_struct, vrsave)); DEFINE(THREAD_VSCR, offsetof(struct thread_struct, vscr)); + DEFINE(THREAD_USED_VR, offsetof(struct thread_struct, used_vr)); #endif /* CONFIG_ALTIVEC */ /* Interrupt register frame */ DEFINE(STACK_FRAME_OVERHEAD, STACK_FRAME_OVERHEAD); @@ -101,7 +102,7 @@ DEFINE(_XER, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, xer)); DEFINE(_DAR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dar)); DEFINE(_DSISR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dsisr)); - /* The PowerPC 400-class processors have neither the DAR nor the DSISR + /* The PowerPC 400-class & Book-E processors have neither the DAR nor the DSISR * SPRs. Hence, we overload them to hold the similar DEAR and ESR SPRs * for such processors. For critical interrupts we use them to * hold SRR0 and SRR1. diff -Nru a/arch/ppc/kernel/head.S b/arch/ppc/kernel/head.S --- a/arch/ppc/kernel/head.S Mon Sep 22 00:30:22 2003 +++ b/arch/ppc/kernel/head.S Mon Sep 22 00:30:22 2003 @@ -915,7 +915,9 @@ /* enable use of AltiVec after return */ oris r9,r9,MSR_VEC@h mfspr r5,SPRG3 /* current task's THREAD (phys) */ + li r4,1 li r10,THREAD_VSCR + stw r4,THREAD_USED_VR(r5) lvx vr0,r10,r5 mtvscr vr0 REST_32VR(0,r10,r5) diff -Nru a/arch/ppc/kernel/misc.S b/arch/ppc/kernel/misc.S --- a/arch/ppc/kernel/misc.S Mon Sep 22 00:30:24 2003 +++ b/arch/ppc/kernel/misc.S Mon Sep 22 00:30:24 2003 @@ -1379,7 +1379,7 @@ .long sys_clock_gettime .long sys_clock_getres .long sys_clock_nanosleep - .long sys_ni_syscall /* reserved for swapcontext */ + .long sys_swapcontext .long sys_tgkill /* 250 */ .long sys_utimes .long sys_statfs64 diff -Nru a/arch/ppc/kernel/process.c b/arch/ppc/kernel/process.c --- a/arch/ppc/kernel/process.c Mon Sep 22 00:30:21 2003 +++ b/arch/ppc/kernel/process.c Mon Sep 22 00:30:21 2003 @@ -415,6 +415,7 @@ memset(current->thread.vr, 0, sizeof(current->thread.vr)); memset(¤t->thread.vscr, 0, sizeof(current->thread.vscr)); current->thread.vrsave = 0; + current->thread.used_vr = 0; #endif /* CONFIG_ALTIVEC */ } diff -Nru a/arch/ppc/kernel/signal.c b/arch/ppc/kernel/signal.c --- a/arch/ppc/kernel/signal.c Mon Sep 22 00:30:25 2003 +++ b/arch/ppc/kernel/signal.c Mon Sep 22 00:30:25 2003 @@ -41,18 +41,6 @@ #define GP_REGS_SIZE min(sizeof(elf_gregset_t), sizeof(struct pt_regs)) -/* - * These are the flags in the MSR that the user is allowed to change - * by modifying the saved value of the MSR on the stack. SE and BE - * should not be in this list since gdb may want to change these. I.e, - * you should be able to step out of a signal handler to see what - * instruction executes next after the signal handler completes. - * Alternately, if you stepped into a signal handler, you should be - * able to continue 'til the next breakpoint from within the signal - * handler, even if the handler returns. - */ -#define MSR_USERCHANGE (MSR_FE0 | MSR_FE1) - int do_signal(sigset_t *oldset, struct pt_regs *regs); /* @@ -72,8 +60,8 @@ spin_unlock_irq(¤t->sighand->siglock); regs->result = -EINTR; - regs->ccr |= 0x10000000; regs->gpr[3] = EINTR; + regs->ccr |= 0x10000000; while (1) { current->state = TASK_INTERRUPTIBLE; schedule(); @@ -103,8 +91,8 @@ spin_unlock_irq(¤t->sighand->siglock); regs->result = -EINTR; - regs->ccr |= 0x10000000; regs->gpr[3] = EINTR; + regs->ccr |= 0x10000000; while (1) { current->state = TASK_INTERRUPTIBLE; schedule(); @@ -164,305 +152,389 @@ * */ struct sigregs { - elf_gregset_t gp_regs; - double fp_regs[ELF_NFPREG]; - unsigned long tramp[2]; + struct mcontext mctx; /* all the register values */ /* Programs using the rs6000/xcoff abi can save up to 19 gp regs and 18 fp regs below sp before decrementing it. */ int abigap[56]; }; -struct rt_sigframe -{ - unsigned long _unused[2]; - struct siginfo *pinfo; - void *puc; - struct siginfo info; - struct ucontext uc; -}; - +/* We use the mc_pad field for the signal return trampoline. */ +#define tramp mc_pad /* * When we have rt signals to deliver, we set up on the * user stack, going down from the original stack pointer: - * a sigregs struct - * one rt_sigframe struct (siginfo + ucontext) - * a gap of __SIGNAL_FRAMESIZE bytes + * one rt_sigframe struct (siginfo + ucontext + ABI gap) + * a gap of __SIGNAL_FRAMESIZE+16 bytes + * (the +16 is to get the siginfo and ucontext in the same + * positions as in older kernels). * * Each of these things must be a multiple of 16 bytes in size. * */ -int sys_rt_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8, - struct pt_regs *regs) +struct rt_sigframe { - struct rt_sigframe __user *rt_sf; - struct sigcontext sigctx; - struct sigregs __user *sr; - elf_gregset_t saved_regs; /* an array of ELF_NGREG unsigned longs */ - sigset_t set; - stack_t st; + struct siginfo info; + struct ucontext uc; + /* Programs using the rs6000/xcoff abi can save up to 19 gp regs + and 18 fp regs below sp before decrementing it. */ + int abigap[56]; +}; - rt_sf = (struct rt_sigframe __user *)(regs->gpr[1] + __SIGNAL_FRAMESIZE); - if (copy_from_user(&sigctx, &rt_sf->uc.uc_mcontext, sizeof(sigctx)) - || copy_from_user(&set, &rt_sf->uc.uc_sigmask, sizeof(set)) - || copy_from_user(&st, &rt_sf->uc.uc_stack, sizeof(st))) - goto badframe; - sigdelsetmask(&set, ~_BLOCKABLE); - spin_lock_irq(¤t->sighand->siglock); - current->blocked = set; - recalc_sigpending(); - spin_unlock_irq(¤t->sighand->siglock); +/* + * Save the current user registers on the user stack. + * We only save the altivec registers if the process has used + * altivec instructions at some point. + */ +static int +save_user_regs(struct pt_regs *regs, struct mcontext *frame, int sigret) +{ + /* save general and floating-point registers */ + CHECK_FULL_REGS(regs); if (regs->msr & MSR_FP) giveup_fpu(current); + if (__copy_to_user(&frame->mc_gregs, regs, GP_REGS_SIZE) + || __copy_to_user(&frame->mc_fregs, current->thread.fpr, + ELF_NFPREG * sizeof(double))) + return 1; - /* restore registers - - * sigctx is initialized to point to the - * preamble frame (where registers are stored) - * see handle_signal() + current->thread.fpscr = 0; /* turn off all fp exceptions */ + +#ifdef CONFIG_ALTIVEC + /* save altivec registers */ + if (current->thread.used_vr) { + if (regs->msr & MSR_VEC) + giveup_altivec(current); + if (__copy_to_user(&frame->mc_vregs, current->thread.vr, + ELF_NVRREG * sizeof(vector128))) + return 1; + /* set MSR_VEC in the saved MSR value to indicate that + frame->mc_vregs contains valid data */ + if (__put_user(regs->msr | MSR_VEC, &frame->mc_gregs[PT_MSR])) + return 1; + } + /* else assert((regs->msr & MSR_VEC) == 0) */ + + /* We always copy to/from vrsave, it's 0 if we don't have or don't + * use altivec. Since VSCR only contains 32 bits saved in the least + * significant bits of a vector, we "cheat" and stuff VRSAVE in the + * most significant bits of that same vector. --BenH */ - sr = (struct sigregs __user *) sigctx.regs; - if (copy_from_user(saved_regs, &sr->gp_regs, sizeof(sr->gp_regs))) - goto badframe; - saved_regs[PT_MSR] = (regs->msr & ~MSR_USERCHANGE) - | (saved_regs[PT_MSR] & MSR_USERCHANGE); - memcpy(regs, saved_regs, GP_REGS_SIZE); - if (copy_from_user(current->thread.fpr, &sr->fp_regs, - sizeof(sr->fp_regs))) - goto badframe; + if (__put_user(current->thread.vrsave, (u32 *)&frame->mc_vregs[32])) + return 1; +#endif /* CONFIG_ALTIVEC */ + + if (sigret) { + /* Set up the sigreturn trampoline: li r0,sigret; sc */ + if (__put_user(0x38000000UL + sigret, &frame->tramp[0]) + || __put_user(0x44000002UL, &frame->tramp[1])) + return 1; + flush_icache_range((unsigned long) &frame->tramp[0], + (unsigned long) &frame->tramp[2]); + } - sigreturn_exit(regs); /* doesn't return here */ return 0; +} -badframe: - do_exit(SIGSEGV); +/* + * Restore the current user register values from the user stack, + * (except for MSR). + */ +static int +restore_user_regs(struct pt_regs *regs, struct mcontext __user *sr) +{ +#ifdef CONFIG_ALTIVEC + unsigned long msr; +#endif + + /* copy up to but not including MSR */ + if (__copy_from_user(regs, &sr->mc_gregs, PT_MSR * sizeof(elf_greg_t))) + return 1; + /* copy from orig_r3 (the word after the MSR) up to the end */ + if (__copy_from_user(®s->orig_gpr3, &sr->mc_gregs[PT_ORIG_R3], + GP_REGS_SIZE - PT_ORIG_R3 * sizeof(elf_greg_t))) + return 1; + + /* force the process to reload the FP registers from + current->thread when it next does FP instructions */ + regs->msr &= ~MSR_FP; + if (__copy_from_user(current->thread.fpr, &sr->mc_fregs, + sizeof(sr->mc_fregs))) + return 1; + +#ifdef CONFIG_ALTIVEC + /* force the process to reload the altivec registers from + current->thread when it next does altivec instructions */ + regs->msr &= ~MSR_VEC; + if (!__get_user(msr, &sr->mc_gregs[PT_MSR]) && (msr & MSR_VEC) != 0) { + /* restore altivec registers from the stack */ + if (__copy_from_user(current->thread.vr, &sr->mc_vregs, + sizeof(sr->mc_vregs))) + return 1; + } else if (current->thread.used_vr) + memset(¤t->thread.vr, 0, sizeof(current->thread.vr)); + + /* Always get VRSAVE back */ + if (__get_user(current->thread.vrsave, (u32 *)&sr->mc_vregs[32])) + return 1; +#endif /* CONFIG_ALTIVEC */ + + return 0; } +/* + * Restore the user process's signal mask + */ static void -setup_rt_frame(struct pt_regs *regs, struct sigregs __user *frame, - signed long newsp) +restore_sigmask(sigset_t *set) { - struct rt_sigframe __user *rt_sf = (struct rt_sigframe __user *) newsp; + sigdelsetmask(set, ~_BLOCKABLE); + spin_lock_irq(¤t->sighand->siglock); + current->blocked = *set; + recalc_sigpending(); + spin_unlock_irq(¤t->sighand->siglock); +} - /* Set up preamble frame */ - if (verify_area(VERIFY_WRITE, frame, sizeof(*frame))) +/* + * Set up a signal frame for a "real-time" signal handler + * (one which gets siginfo). + */ +static void +handle_rt_signal(unsigned long sig, struct k_sigaction *ka, + siginfo_t *info, sigset_t *oldset, struct pt_regs * regs, + unsigned long newsp) +{ + struct rt_sigframe __user *rt_sf; + struct mcontext __user *frame; + unsigned long origsp = newsp; + + /* Set up Signal Frame */ + /* Put a Real Time Context onto stack */ + newsp -= sizeof(*rt_sf); + rt_sf = (struct rt_sigframe __user *) newsp; + + /* create a stack frame for the caller of the handler */ + newsp -= __SIGNAL_FRAMESIZE + 16; + + if (verify_area(VERIFY_WRITE, (void __user *) newsp, origsp - newsp)) goto badframe; - CHECK_FULL_REGS(regs); - if (regs->msr & MSR_FP) - giveup_fpu(current); - if (__copy_to_user(&frame->gp_regs, regs, GP_REGS_SIZE) - || __copy_to_user(&frame->fp_regs, current->thread.fpr, - ELF_NFPREG * sizeof(double)) - /* Set up to return from user space. - It calls the sc exception at offset 0x9999 - for sys_rt_sigreturn(). - */ - || __put_user(0x38000000UL + __NR_rt_sigreturn, &frame->tramp[0]) - || __put_user(0x44000002UL, &frame->tramp[1])) /* sc */ + + /* Put the siginfo & fill in most of the ucontext */ + if (copy_siginfo_to_user(&rt_sf->info, info) + || __put_user(0, &rt_sf->uc.uc_flags) + || __put_user(0, &rt_sf->uc.uc_link) + || __put_user(current->sas_ss_sp, &rt_sf->uc.uc_stack.ss_sp) + || __put_user(sas_ss_flags(regs->gpr[1]), + &rt_sf->uc.uc_stack.ss_flags) + || __put_user(current->sas_ss_size, &rt_sf->uc.uc_stack.ss_size) + || __put_user(&rt_sf->uc.uc_mcontext, &rt_sf->uc.uc_regs) + || __copy_to_user(&rt_sf->uc.uc_oldsigmask, oldset, sizeof(*oldset)) + || __copy_to_user(&rt_sf->uc.uc_sigmask, oldset, sizeof(*oldset))) goto badframe; - flush_icache_range((unsigned long) &frame->tramp[0], - (unsigned long) &frame->tramp[2]); - current->thread.fpscr = 0; /* turn off all fp exceptions */ - /* Retrieve rt_sigframe from stack and - set up registers for signal handler - */ - newsp -= __SIGNAL_FRAMESIZE; - if (put_user(regs->gpr[1], (unsigned long __user *)newsp) - || get_user(regs->nip, &rt_sf->uc.uc_mcontext.handler) - || get_user(regs->gpr[3], &rt_sf->uc.uc_mcontext.signal) - || get_user(regs->gpr[4], (unsigned long __user *)&rt_sf->pinfo) - || get_user(regs->gpr[5], (unsigned long __user *)&rt_sf->puc)) + /* Save user registers on the stack */ + frame = &rt_sf->uc.uc_mcontext; + if (save_user_regs(regs, frame, __NR_rt_sigreturn)) goto badframe; + if (put_user(regs->gpr[1], (unsigned long __user *)newsp)) + goto badframe; regs->gpr[1] = newsp; + regs->gpr[3] = sig; + regs->gpr[4] = (unsigned long) &rt_sf->info; + regs->gpr[5] = (unsigned long) &rt_sf->uc; regs->gpr[6] = (unsigned long) rt_sf; + regs->nip = (unsigned long) ka->sa.sa_handler; regs->link = (unsigned long) frame->tramp; + regs->trap = 0; return; badframe: #if DEBUG_SIG - printk("badframe in setup_rt_frame, regs=%p frame=%p newsp=%lx\n", + printk("badframe in handle_rt_signal, regs=%p frame=%p newsp=%lx\n", regs, frame, newsp); #endif - do_exit(SIGSEGV); + if (sig == SIGSEGV) + ka->sa.sa_handler = SIG_DFL; + force_sig(SIGSEGV, current); } -/* - * Do a signal return; undo the signal stack. - */ -int sys_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8, - struct pt_regs *regs) +static int do_setcontext(struct ucontext __user *ucp, struct pt_regs *regs) { - struct sigcontext __user *sc; - struct sigcontext sigctx; - struct sigregs __user *sr; - elf_gregset_t saved_regs; /* an array of ELF_NGREG unsigned longs */ sigset_t set; - sc = (struct sigcontext __user *)(regs->gpr[1] + __SIGNAL_FRAMESIZE); - if (copy_from_user(&sigctx, sc, sizeof(sigctx))) - goto badframe; + if (__copy_from_user(&set, &ucp->uc_sigmask, sizeof(set))) + return -EFAULT; + restore_sigmask(&set); - set.sig[0] = sigctx.oldmask; -#if _NSIG_WORDS > 1 - set.sig[1] = sigctx._unused[3]; -#endif - sigdelsetmask(&set, ~_BLOCKABLE); - spin_lock_irq(¤t->sighand->siglock); - current->blocked = set; - recalc_sigpending(); - spin_unlock_irq(¤t->sighand->siglock); - if (regs->msr & MSR_FP ) - giveup_fpu(current); + if (restore_user_regs(regs, &ucp->uc_mcontext)) + return -EFAULT; - /* restore registers */ - sr = (struct sigregs __user *) sigctx.regs; - if (copy_from_user(saved_regs, &sr->gp_regs, sizeof(sr->gp_regs))) - goto badframe; - saved_regs[PT_MSR] = (regs->msr & ~MSR_USERCHANGE) - | (saved_regs[PT_MSR] & MSR_USERCHANGE); - memcpy(regs, saved_regs, GP_REGS_SIZE); + return 0; +} - if (copy_from_user(current->thread.fpr, &sr->fp_regs, - sizeof(sr->fp_regs))) - goto badframe; +int sys_swapcontext(struct ucontext __user *old_ctx, + struct ucontext __user *new_ctx, + int r5, int r6, int r7, int r8, struct pt_regs *regs) +{ + unsigned char tmp; + + if (old_ctx != NULL) { + if (verify_area(VERIFY_WRITE, old_ctx, sizeof(*old_ctx)) + || save_user_regs(regs, &old_ctx->uc_mcontext, 0) + || __copy_to_user(&old_ctx->uc_sigmask, + ¤t->blocked, sizeof(sigset_t)) + /* the next 2 things aren't strictly necessary */ + || __copy_to_user(&old_ctx->uc_oldsigmask, + ¤t->blocked, sizeof(sigset_t)) + || __put_user(&old_ctx->uc_mcontext, &old_ctx->uc_regs)) + return -EFAULT; + } + if (new_ctx == NULL) + return 0; + if (verify_area(VERIFY_READ, new_ctx, sizeof(*new_ctx)) + || __get_user(tmp, (u8 *) new_ctx) + || __get_user(tmp, (u8 *) (new_ctx + 1) - 1)) + return -EFAULT; + + /* + * If we get a fault copying the context into the kernel's + * image of the user's registers, we can't just return -EFAULT + * because the user's registers will be corrupted. For instance + * the NIP value may have been updated but not some of the + * other registers. Given that we have done the verify_area + * and successfully read the first and last bytes of the region + * above, this should only happen in an out-of-memory situation + * or if another thread unmaps the region containing the context. + * We kill the task with a SIGSEGV in this situation. + */ + if (do_setcontext(new_ctx, regs)) + do_exit(SIGSEGV); + sigreturn_exit(regs); + /* doesn't actually return back to here */ + return 0; +} + +int sys_rt_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8, + struct pt_regs *regs) +{ + struct rt_sigframe __user *rt_sf; + + rt_sf = (struct rt_sigframe __user *) + (regs->gpr[1] + __SIGNAL_FRAMESIZE + 16); + if (verify_area(VERIFY_READ, rt_sf, sizeof(struct rt_sigframe))) + goto bad; + if (do_setcontext(&rt_sf->uc, regs)) + goto bad; + + /* + * It's not clear whether or why it is desirable to save the + * sigaltstack setting on signal delivery and restore it on + * signal return. But other architectures do this and we have + * always done it up until now so it is probably better not to + * change it. -- paulus + */ + do_sigaltstack(&rt_sf->uc.uc_stack, NULL, regs->gpr[1]); sigreturn_exit(regs); /* doesn't return here */ return 0; -badframe: - do_exit(SIGSEGV); -} + bad: + force_sig(SIGSEGV, current); + return 0; +} /* - * Set up a signal frame. + * OK, we're invoking a handler */ static void -setup_frame(struct pt_regs *regs, struct sigregs __user *frame, - unsigned long newsp) +handle_signal(unsigned long sig, struct k_sigaction *ka, + siginfo_t *info, sigset_t *oldset, struct pt_regs * regs, + unsigned long newsp) { - struct sigcontext __user *sc = (struct sigcontext __user *) newsp; + struct sigcontext __user *sc; + struct sigregs __user *frame; + unsigned long origsp = newsp; - if (verify_area(VERIFY_WRITE, frame, sizeof(*frame))) + /* Set up Signal Frame */ + newsp -= sizeof(struct sigregs); + frame = (struct sigregs __user *) newsp; + + /* Put a sigcontext on the stack */ + newsp -= sizeof(*sc); + sc = (struct sigcontext __user *) newsp; + + /* create a stack frame for the caller of the handler */ + newsp -= __SIGNAL_FRAMESIZE; + + if (verify_area(VERIFY_WRITE, (void *) newsp, origsp - newsp)) goto badframe; - CHECK_FULL_REGS(regs); - if (regs->msr & MSR_FP) - giveup_fpu(current); - if (__copy_to_user(&frame->gp_regs, regs, GP_REGS_SIZE) - || __copy_to_user(&frame->fp_regs, current->thread.fpr, - ELF_NFPREG * sizeof(double)) - || __put_user(0x38000000UL + __NR_sigreturn, &frame->tramp[0]) - || __put_user(0x44000002UL, &frame->tramp[1])) /* sc */ + +#if _NSIG != 64 +#error "Please adjust handle_signal()" +#endif + if (__put_user((unsigned long) ka->sa.sa_handler, &sc->handler) + || __put_user(oldset->sig[0], &sc->oldmask) + || __put_user(oldset->sig[1], &sc->_unused[3]) + || __put_user((struct pt_regs *)frame, &sc->regs) + || __put_user(sig, &sc->signal)) goto badframe; - flush_icache_range((unsigned long) &frame->tramp[0], - (unsigned long) &frame->tramp[2]); - current->thread.fpscr = 0; /* turn off all fp exceptions */ - newsp -= __SIGNAL_FRAMESIZE; - if (put_user(regs->gpr[1], (unsigned long __user *)newsp) - || get_user(regs->nip, &sc->handler) - || get_user(regs->gpr[3], &sc->signal)) + if (save_user_regs(regs, &frame->mctx, __NR_sigreturn)) + goto badframe; + + if (put_user(regs->gpr[1], (unsigned long *)newsp)) goto badframe; regs->gpr[1] = newsp; + regs->gpr[3] = sig; regs->gpr[4] = (unsigned long) sc; - regs->link = (unsigned long) frame->tramp; + regs->nip = (unsigned long) ka->sa.sa_handler; + regs->link = (unsigned long) frame->mctx.tramp; + regs->trap = 0; return; badframe: #if DEBUG_SIG - printk("badframe in setup_frame, regs=%p frame=%p newsp=%lx\n", - regs, frame, newsp); + printk("badframe in handle_signal, regs=%p frame=%lx newsp=%lx\n", + regs, frame, *newspp); #endif - do_exit(SIGSEGV); + if (sig == SIGSEGV) + ka->sa.sa_handler = SIG_DFL; + force_sig(SIGSEGV, current); } /* - * OK, we're invoking a handler + * Do a signal return; undo the signal stack. */ -static void -handle_signal(unsigned long sig, siginfo_t *info, sigset_t *oldset, - struct pt_regs * regs, unsigned long *newspp, unsigned long frame) +int sys_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8, + struct pt_regs *regs) { struct sigcontext __user *sc; - struct rt_sigframe __user *rt_sf; - struct k_sigaction *ka = ¤t->sighand->action[sig-1]; + struct sigcontext sigctx; + struct mcontext __user *sr; + sigset_t set; - if (TRAP(regs) == 0x0C00 /* System Call! */ - && ((int)regs->result == -ERESTARTNOHAND || - (int)regs->result == -ERESTART_RESTARTBLOCK || - ((int)regs->result == -ERESTARTSYS && - !(ka->sa.sa_flags & SA_RESTART)))) { - if ((int)regs->result == -ERESTART_RESTARTBLOCK) - current_thread_info()->restart_block.fn - = do_no_restart_syscall; - regs->result = -EINTR; - regs->gpr[3] = EINTR; - regs->ccr |= 0x10000000; - } + sc = (struct sigcontext __user *)(regs->gpr[1] + __SIGNAL_FRAMESIZE); + if (copy_from_user(&sigctx, sc, sizeof(sigctx))) + goto badframe; - /* Set up Signal Frame */ - if (ka->sa.sa_flags & SA_SIGINFO) { - /* Put a Real Time Context onto stack */ - *newspp -= sizeof(*rt_sf); - rt_sf = (struct rt_sigframe __user *) *newspp; - if (verify_area(VERIFY_WRITE, rt_sf, sizeof(*rt_sf))) - goto badframe; - - if (__put_user((unsigned long) ka->sa.sa_handler, &rt_sf->uc.uc_mcontext.handler) - || __put_user(&rt_sf->info, &rt_sf->pinfo) - || __put_user(&rt_sf->uc, &rt_sf->puc) - /* Put the siginfo */ - || copy_siginfo_to_user(&rt_sf->info, info) - /* Create the ucontext */ - || __put_user(0, &rt_sf->uc.uc_flags) - || __put_user(0, &rt_sf->uc.uc_link) - || __put_user(current->sas_ss_sp, &rt_sf->uc.uc_stack.ss_sp) - || __put_user(sas_ss_flags(regs->gpr[1]), - &rt_sf->uc.uc_stack.ss_flags) - || __put_user(current->sas_ss_size, &rt_sf->uc.uc_stack.ss_size) - || __copy_to_user(&rt_sf->uc.uc_sigmask, oldset, sizeof(*oldset)) - /* mcontext.regs points to preamble register frame */ - || __put_user((struct pt_regs *)frame, &rt_sf->uc.uc_mcontext.regs) - || __put_user(sig, &rt_sf->uc.uc_mcontext.signal)) - goto badframe; - } else { - /* Put a sigcontext on the stack */ - *newspp -= sizeof(*sc); - sc = (struct sigcontext __user *) *newspp; - if (verify_area(VERIFY_WRITE, sc, sizeof(*sc))) - goto badframe; - - if (__put_user((unsigned long) ka->sa.sa_handler, &sc->handler) - || __put_user(oldset->sig[0], &sc->oldmask) -#if _NSIG_WORDS > 1 - || __put_user(oldset->sig[1], &sc->_unused[3]) -#endif - || __put_user((struct pt_regs *)frame, &sc->regs) - || __put_user(sig, &sc->signal)) - goto badframe; - } + set.sig[0] = sigctx.oldmask; + set.sig[1] = sigctx._unused[3]; + restore_sigmask(&set); - if (ka->sa.sa_flags & SA_ONESHOT) - ka->sa.sa_handler = SIG_DFL; + sr = (struct mcontext *) sigctx.regs; + if (verify_area(VERIFY_READ, sr, sizeof(*sr)) + || restore_user_regs(regs, sr)) + goto badframe; - if (!(ka->sa.sa_flags & SA_NODEFER)) { - spin_lock_irq(¤t->sighand->siglock); - sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask); - sigaddset(¤t->blocked,sig); - recalc_sigpending(); - spin_unlock_irq(¤t->sighand->siglock); - } - return; + sigreturn_exit(regs); /* doesn't return */ + return 0; badframe: -#if DEBUG_SIG - printk("badframe in handle_signal, regs=%p frame=%lx newsp=%lx\n", - regs, frame, *newspp); - printk("sc=%p sig=%d ka=%p info=%p oldset=%p\n", sc, sig, ka, info, oldset); -#endif - do_exit(SIGSEGV); + force_sig(SIGSEGV, current); + return 0; } /* @@ -475,7 +547,7 @@ siginfo_t info; struct k_sigaction *ka; unsigned long frame, newsp; - int signr; + int signr, ret; if (!oldset) oldset = ¤t->blocked; @@ -483,40 +555,65 @@ newsp = frame = 0; signr = get_signal_to_deliver(&info, regs, NULL); - if (signr > 0) { - ka = ¤t->sighand->action[signr-1]; - if ( (ka->sa.sa_flags & SA_ONSTACK) - && (! on_sig_stack(regs->gpr[1]))) - newsp = (current->sas_ss_sp + current->sas_ss_size); - else - newsp = regs->gpr[1]; - newsp = frame = newsp - sizeof(struct sigregs); - /* Whee! Actually deliver the signal. */ - handle_signal(signr, &info, oldset, regs, &newsp, frame); - } + ka = (signr == 0)? NULL: ¤t->sighand->action[signr-1]; - if (TRAP(regs) == 0x0C00) { /* System Call! */ - if ((int)regs->result == -ERESTARTNOHAND || - (int)regs->result == -ERESTARTSYS || - (int)regs->result == -ERESTARTNOINTR) { - regs->gpr[3] = regs->orig_gpr3; + if (TRAP(regs) == 0x0C00 /* System Call! */ + && regs->ccr & 0x10000000 /* error signalled */ + && ((ret = regs->gpr[3]) == ERESTARTSYS + || ret == ERESTARTNOHAND || ret == ERESTARTNOINTR + || ret == ERESTART_RESTARTBLOCK)) { + + if (signr > 0 + && (ret == ERESTARTNOHAND || ret == ERESTART_RESTARTBLOCK + || (ret == ERESTARTSYS + && !(ka->sa.sa_flags & SA_RESTART)))) { + /* make the system call return an EINTR error */ + regs->result = -EINTR; + regs->gpr[3] = EINTR; + /* note that the cr0.SO bit is already set */ + /* clear any restart function that was set */ + if (ret == ERESTART_RESTARTBLOCK) + current_thread_info()->restart_block.fn + = do_no_restart_syscall; + } else { regs->nip -= 4; /* Back up & retry system call */ regs->result = 0; - } else if ((int)regs->result == -ERESTART_RESTARTBLOCK) { - regs->gpr[0] = __NR_restart_syscall; - regs->nip -= 4; - regs->result = 0; + regs->trap = 0; + if (ret == ERESTART_RESTARTBLOCK) + regs->gpr[0] = __NR_restart_syscall; + else + regs->gpr[3] = regs->orig_gpr3; } } - if (newsp == frame) + if (signr == 0) return 0; /* no signals delivered */ + if ((ka->sa.sa_flags & SA_ONSTACK) && current->sas_ss_size + && !on_sig_stack(regs->gpr[1])) + newsp = current->sas_ss_sp + current->sas_ss_size; + else + newsp = regs->gpr[1]; + newsp &= ~0xfUL; + + /* Whee! Actually deliver the signal. */ if (ka->sa.sa_flags & SA_SIGINFO) - setup_rt_frame(regs, (struct sigregs __user *) frame, newsp); + handle_rt_signal(signr, ka, &info, oldset, regs, newsp); else - setup_frame(regs, (struct sigregs __user *) frame, newsp); + handle_signal(signr, ka, &info, oldset, regs, newsp); + + if (ka->sa.sa_flags & SA_ONESHOT) + ka->sa.sa_handler = SIG_DFL; + + if (!(ka->sa.sa_flags & SA_NODEFER)) { + spin_lock_irq(¤t->sighand->siglock); + sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask); + sigaddset(¤t->blocked, signr); + recalc_sigpending(); + spin_unlock_irq(¤t->sighand->siglock); + } + return 1; } diff -Nru a/arch/ppc/kernel/time.c b/arch/ppc/kernel/time.c --- a/arch/ppc/kernel/time.c Mon Sep 22 00:30:23 2003 +++ b/arch/ppc/kernel/time.c Mon Sep 22 00:30:23 2003 @@ -83,6 +83,7 @@ unsigned tb_ticks_per_jiffy; unsigned tb_to_us; unsigned tb_last_stamp; +unsigned long tb_to_ns_scale; extern unsigned long wall_jiffies; @@ -309,6 +310,7 @@ tb_to_us = 0x418937; } else { ppc_md.calibrate_decr(); + tb_to_ns_scale = mulhwu(tb_to_us, 1000 << 10); } /* Now that the decrementer is calibrated, it can be used in case the @@ -432,3 +434,26 @@ return mlt; } +unsigned long long sched_clock(void) +{ + unsigned long lo, hi, hi2; + unsigned long long tb; + + if (!__USE_RTC()) { + do { + hi = get_tbu(); + lo = get_tbl(); + hi2 = get_tbu(); + } while (hi2 != hi); + tb = ((unsigned long long) hi << 32) | lo; + tb = (tb * tb_to_ns_scale) >> 10; + } else { + do { + hi = get_rtcu(); + lo = get_rtcl(); + hi2 = get_rtcu(); + } while (hi2 != hi); + tb = ((unsigned long long) hi) * 1000000000 + lo; + } + return tb; +} diff -Nru a/arch/ppc/kernel/traps.c b/arch/ppc/kernel/traps.c --- a/arch/ppc/kernel/traps.c Mon Sep 22 00:30:19 2003 +++ b/arch/ppc/kernel/traps.c Mon Sep 22 00:30:19 2003 @@ -95,14 +95,19 @@ } void -_exception(int signr, struct pt_regs *regs) +_exception(int signr, struct pt_regs *regs, int code, unsigned long addr) { - if (!user_mode(regs)) - { + siginfo_t info; + + if (!user_mode(regs)) { debugger(regs); die("Exception in kernel mode", regs, signr); } - force_sig(signr, current); + info.si_signo = signr; + info.si_errno = 0; + info.si_code = code; + info.si_addr = (void *) addr; + force_sig_info(signr, &info, current); } /* @@ -154,12 +159,40 @@ return 0; } +#if defined(CONFIG_4xx) || defined(CONFIG_BOOKE) +/* On 4xx, the reason for the machine check or program exception + is in the ESR. */ +#define get_reason(regs) ((regs)->dsisr) +#define REASON_FP 0 +#define REASON_ILLEGAL ESR_PIL +#define REASON_PRIVILEGED ESR_PPR +#define REASON_TRAP ESR_PTR + +/* single-step stuff */ +#define single_stepping(regs) (current->thread.dbcr0 & DBCR0_IC) +#define clear_single_step(regs) (current->thread.dbcr0 &= ~DBCR0_IC) + +#else +/* On non-4xx, the reason for the machine check or program + exception is in the MSR. */ +#define get_reason(regs) ((regs)->msr) +#define REASON_FP 0x100000 +#define REASON_ILLEGAL 0x80000 +#define REASON_PRIVILEGED 0x40000 +#define REASON_TRAP 0x20000 + +#define single_stepping(regs) ((regs)->msr & MSR_SE) +#define clear_single_step(regs) ((regs)->msr &= ~MSR_SE) +#endif + void MachineCheckException(struct pt_regs *regs) { + unsigned long reason = get_reason(regs); + if (user_mode(regs)) { regs->msr |= MSR_RI; - _exception(SIGSEGV, regs); + _exception(SIGBUS, regs, BUS_ADRERR, regs->nip); return; } @@ -178,10 +211,18 @@ if (check_io_access(regs)) return; -#ifndef CONFIG_4xx - printk(KERN_CRIT "Machine check in kernel mode.\n"); - printk(KERN_CRIT "Caused by (from SRR1=%lx): ", regs->msr); - switch (regs->msr & 0x601F0000) { +#ifdef CONFIG_4xx + if (reason & ESR_IMCP) { + printk("Instruction"); + mtspr(SPRN_ESR, reason & ~ESR_IMCP); + } else + printk("Data"); + printk(" machine check in kernel mode.\n"); + +#else /* !CONFIG_4xx */ + printk("Machine check in kernel mode.\n"); + printk("Caused by (from SRR1=%lx): ", reason); + switch (reason & 0x601F0000) { case 0x80000: printk("Machine check signal\n"); break; @@ -208,15 +249,6 @@ default: printk("Unknown values in msr\n"); } - -#else /* CONFIG_4xx */ - /* Note that the ESR gets stored in regs->dsisr on 4xx. */ - if (regs->dsisr & ESR_MCI) { - printk(KERN_CRIT "Instruction"); - mtspr(SPRN_ESR, regs->dsisr & ~ESR_MCI); - } else - printk(KERN_CRIT "Data"); - printk(" machine check in kernel mode.\n"); #endif /* CONFIG_4xx */ debugger(regs); @@ -238,7 +270,7 @@ { printk("Bad trap at PC: %lx, MSR: %lx, vector=%lx %s\n", regs->nip, regs->msr, regs->trap, print_tainted()); - _exception(SIGTRAP, regs); + _exception(SIGTRAP, regs, 0, 0); } void @@ -246,13 +278,13 @@ { if (debugger_iabr_match(regs)) return; - _exception(SIGTRAP, regs); + _exception(SIGTRAP, regs, TRAP_BRKPT, 0); } void RunModeException(struct pt_regs *regs) { - _exception(SIGTRAP, regs); + _exception(SIGTRAP, regs, 0, 0); } /* Illegal instruction emulation support. Originally written to @@ -271,17 +303,17 @@ static int emulate_instruction(struct pt_regs *regs) { - uint instword; - uint rd; - uint retval; + u32 instword; + u32 rd; + int retval; - retval = EINVAL; + retval = -EINVAL; if (!user_mode(regs)) return retval; CHECK_FULL_REGS(regs); - if (get_user(instword, (uint __user *)(regs->nip))) + if (get_user(instword, (u32 __user *)(regs->nip))) return -EFAULT; /* Emulate the mfspr rD, PVR. @@ -290,10 +322,23 @@ rd = (instword >> 21) & 0x1f; regs->gpr[rd] = mfspr(PVR); retval = 0; - } - if (retval == 0) regs->nip += 4; - return(retval); + } + return retval; +} + +/* + * After we have successfully emulated an instruction, we have to + * check if the instruction was being single-stepped, and if so, + * pretend we got a single-step exception. This was pointed out + * by Kumar Gala. -- paulus + */ +static void emulate_single_step(struct pt_regs *regs) +{ + if (single_stepping(regs)) { + clear_single_step(regs); + _exception(SIGTRAP, regs, TRAP_TRACE, 0); + } } /* @@ -349,29 +394,47 @@ void ProgramCheckException(struct pt_regs *regs) { - int errcode; - -#if defined(CONFIG_4xx) - unsigned int esr = regs->dsisr; - int isbpt = esr & ESR_PTR; + unsigned int reason = get_reason(regs); extern int do_mathemu(struct pt_regs *regs); #ifdef CONFIG_MATH_EMULATION - if (!isbpt && do_mathemu(regs) == 0) + /* (reason & REASON_ILLEGAL) would be the obvious thing here, + * but there seems to be a hardware bug on the 405GP (RevD) + * that means ESR is sometimes set incorrectly - either to + * ESR_DST (!?) or 0. In the process of chasing this with the + * hardware people - not sure if it can happen on any illegal + * instruction or only on FP instructions, whether there is a + * pattern to occurences etc. -dgibson 31/Mar/2003 */ + if (!(reason & REASON_TRAP) && do_mathemu(regs) == 0) { + emulate_single_step(regs); return; + } #endif /* CONFIG_MATH_EMULATION */ -#else /* ! CONFIG_4xx */ - int isbpt = regs->msr & 0x20000; - - if (regs->msr & 0x100000) { + if (reason & REASON_FP) { /* IEEE FP exception */ - _exception(SIGFPE, regs); + int code = 0; + u32 fpscr; + + if (regs->msr & MSR_FP) + giveup_fpu(current); + fpscr = current->thread.fpscr; + fpscr &= fpscr << 22; /* mask summary bits with enables */ + if (fpscr & FPSCR_VX) + code = FPE_FLTINV; + else if (fpscr & FPSCR_OX) + code = FPE_FLTOVF; + else if (fpscr & FPSCR_UX) + code = FPE_FLTUND; + else if (fpscr & FPSCR_ZX) + code = FPE_FLTDIV; + else if (fpscr & FPSCR_XX) + code = FPE_FLTRES; + _exception(SIGFPE, regs, code, regs->nip); return; } -#endif /* ! CONFIG_4xx */ - if (isbpt) { + if (reason & REASON_TRAP) { /* trap exception */ if (debugger_bpt(regs)) return; @@ -379,17 +442,21 @@ regs->nip += 4; return; } - _exception(SIGTRAP, regs); + _exception(SIGTRAP, regs, TRAP_BRKPT, 0); return; } - /* Try to emulate it if we should. */ - if ((errcode = emulate_instruction(regs))) { - if (errcode == -EFAULT) - _exception(SIGBUS, regs); - else - _exception(SIGILL, regs); + if (reason & REASON_PRIVILEGED) { + /* Try to emulate it if we should. */ + if (emulate_instruction(regs) == 0) { + emulate_single_step(regs); + return; + } + _exception(SIGILL, regs, ILL_PRVOPC, regs->nip); + return; } + + _exception(SIGILL, regs, ILL_ILLOPC, regs->nip); } void @@ -398,7 +465,7 @@ regs->msr &= ~MSR_SE; /* Turn off 'trace' bit */ if (debugger_sstep(regs)) return; - _exception(SIGTRAP, regs); + _exception(SIGTRAP, regs, TRAP_TRACE, 0); } void @@ -414,12 +481,12 @@ if (fixed == -EFAULT) { /* fixed == -EFAULT means the operand address was bad */ if (user_mode(regs)) - force_sig(SIGSEGV, current); + _exception(SIGSEGV, regs, SEGV_ACCERR, regs->dar); else bad_page_fault(regs, regs->dar, SIGSEGV); return; } - _exception(SIGBUS, regs); + _exception(SIGBUS, regs, BUS_ADRALN, regs->dar); } void @@ -470,16 +537,17 @@ #endif if (errcode) { if (errcode > 0) - _exception(SIGFPE, regs); + _exception(SIGFPE, regs, 0, 0); else if (errcode == -EFAULT) - _exception(SIGSEGV, regs); + _exception(SIGSEGV, regs, 0, 0); else - _exception(SIGILL, regs); - } + _exception(SIGILL, regs, ILL_ILLOPC, regs->nip); + } else + emulate_single_step(regs); } #endif /* CONFIG_8xx */ -#if defined(CONFIG_4xx) +#if defined(CONFIG_4xx) || defined(CONFIG_BOOKE) void DebugException(struct pt_regs *regs, unsigned long debug_status) { @@ -487,7 +555,7 @@ if (debug_status & DBSR_TIE) { /* trap instruction*/ if (!user_mode(regs) && debugger_bpt(regs)) return; - _exception(SIGTRAP, regs); + _exception(SIGTRAP, regs, 0, 0); } #endif @@ -495,10 +563,10 @@ if (!user_mode(regs) && debugger_sstep(regs)) return; current->thread.dbcr0 &= ~DBCR0_IC; - _exception(SIGTRAP, regs); + _exception(SIGTRAP, regs, TRAP_TRACE, 0); } } -#endif /* CONFIG_4xx */ +#endif /* CONFIG_4xx || CONFIG_BOOKE */ #if !defined(CONFIG_TAU_INT) void diff -Nru a/arch/ppc64/Kconfig b/arch/ppc64/Kconfig --- a/arch/ppc64/Kconfig Mon Sep 22 00:30:22 2003 +++ b/arch/ppc64/Kconfig Mon Sep 22 00:30:22 2003 @@ -72,6 +72,17 @@ bool default y +config HUGETLB_PAGE + bool "Huge TLB Page Support" + help + This enables support for huge pages. User space applications + can make use of this support with the sys_alloc_hugepages and + sys_free_hugepages system calls. If your applications are + huge page aware and your processor supports this (only POWER4, + then say Y here. + + Otherwise, say N. + config SMP bool "Symmetric multi-processing support" ---help--- diff -Nru a/arch/ppc64/Makefile b/arch/ppc64/Makefile --- a/arch/ppc64/Makefile Mon Sep 22 00:30:18 2003 +++ b/arch/ppc64/Makefile Mon Sep 22 00:30:18 2003 @@ -18,7 +18,13 @@ LDFLAGS := -m elf64ppc LDFLAGS_vmlinux := -Bstatic -e $(KERNELLOAD) -Ttext $(KERNELLOAD) CFLAGS += -msoft-float -pipe -Wno-uninitialized -mminimal-toc \ - -mtraceback=full -mcpu=power4 + -mcpu=power4 + +have_zero_bss := $(shell if $(CC) -fno-zero-initialized-in-bss -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo y; else echo n; fi) + +ifeq ($(have_zero_bss),y) +CFLAGS += -fno-zero-initialized-in-bss +endif head-y := arch/ppc64/kernel/head.o @@ -38,6 +44,12 @@ %_config: arch/ppc64/configs/%_defconfig rm -f .config arch/ppc64/defconfig cp -f arch/ppc64/configs/$(@:config=defconfig) arch/ppc64/defconfig + +bootimage-$(CONFIG_PPC_PSERIES) := zImage +bootimage-$(CONFIG_PPC_ISERIES) := vmlinux.sm +BOOTIMAGE := $(bootimage-y) +install: vmlinux + $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) $@ archclean: $(Q)$(MAKE) $(clean)=$(boot) diff -Nru a/arch/ppc64/boot/Makefile b/arch/ppc64/boot/Makefile --- a/arch/ppc64/boot/Makefile Mon Sep 22 00:30:24 2003 +++ b/arch/ppc64/boot/Makefile Mon Sep 22 00:30:24 2003 @@ -122,5 +122,7 @@ awk '{printf "unsigned long vmlinux_memsize = 0x%s;\n", substr($$1,8)}' \ >> $(obj)/imagesize.c +install: $(CONFIGURE) $(obj)/$(BOOTIMAGE) + sh -x $(src)/install.sh "$(KERNELRELEASE)" "$(obj)/$(BOOTIMAGE)" "$(TOPDIR)/System.map" "$(INSTALL_PATH)" clean-files := $(patsubst $(obj)/%,%, $(obj-boot)) diff -Nru a/arch/ppc64/boot/install.sh b/arch/ppc64/boot/install.sh --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/ppc64/boot/install.sh Mon Sep 22 00:30:25 2003 @@ -0,0 +1,41 @@ +#!/bin/sh +# +# arch/ppc64/boot/install.sh +# +# This file is subject to the terms and conditions of the GNU General Public +# License. See the file "COPYING" in the main directory of this archive +# for more details. +# +# Copyright (C) 1995 by Linus Torvalds +# +# Blatantly stolen from in arch/i386/boot/install.sh by Dave Hansen +# +# "make install" script for ppc64 architecture +# +# Arguments: +# $1 - kernel version +# $2 - kernel image file +# $3 - kernel map file +# $4 - default install path (blank if root directory) +# + +# User may have a custom install script + +if [ -x ~/bin/installkernel ]; then exec ~/bin/installkernel "$@"; fi +if [ -x /sbin/installkernel ]; then exec /sbin/installkernel "$@"; fi + +# Default install + +# this should work for both the pSeries zImage and the iSeries vmlinux.sm +image_name=`basename $2` + +if [ -f $4/$image_name ]; then + mv $4/$image_name $4/$image_name.old +fi + +if [ -f $4/System.map ]; then + mv $4/System.map $4/System.old +fi + +cat $2 > $4/$image_name +cp $3 $4/System.map diff -Nru a/arch/ppc64/defconfig b/arch/ppc64/defconfig --- a/arch/ppc64/defconfig Mon Sep 22 00:30:20 2003 +++ b/arch/ppc64/defconfig Mon Sep 22 00:30:20 2003 @@ -8,11 +8,13 @@ CONFIG_EARLY_PRINTK=y CONFIG_COMPAT=y CONFIG_FRAME_POINTER=y +CONFIG_FORCE_MAX_ZONEORDER=13 # # Code maturity level options # CONFIG_EXPERIMENTAL=y +# CONFIG_BROKEN is not set # # General setup @@ -21,11 +23,14 @@ CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set CONFIG_SYSCTL=y -CONFIG_LOG_BUF_SHIFT=15 +CONFIG_LOG_BUF_SHIFT=16 +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y CONFIG_EPOLL=y +CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=y CONFIG_IOSCHED_DEADLINE=y @@ -72,7 +77,6 @@ # # Generic Driver Options # -# CONFIG_FW_LOADER is not set # # Memory Technology Devices (MTD) @@ -99,7 +103,7 @@ # CONFIG_BLK_DEV_UMEM is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_CRYPTOLOOP is not set -CONFIG_BLK_DEV_NBD=y +CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_INITRD=y @@ -127,9 +131,9 @@ # # Some SCSI devices (e.g. CD jukebox) support multiple LUNs # -# CONFIG_SCSI_MULTI_LUN is not set -# CONFIG_SCSI_REPORT_LUNS is not set -# CONFIG_SCSI_CONSTANTS is not set +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_REPORT_LUNS=y +CONFIG_SCSI_CONSTANTS=y # CONFIG_SCSI_LOGGING is not set # @@ -178,7 +182,8 @@ CONFIG_MD_RAID1=y CONFIG_MD_RAID5=y # CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_DM is not set +CONFIG_BLK_DEV_DM=y +CONFIG_DM_IOCTL_V4=y # # Fusion MPT device support @@ -206,9 +211,8 @@ CONFIG_PACKET=y # CONFIG_PACKET_MMAP is not set # CONFIG_NETLINK_DEV is not set -# CONFIG_NETFILTER is not set CONFIG_UNIX=y -# CONFIG_NET_KEY is not set +CONFIG_NET_KEY=m CONFIG_INET=y CONFIG_IP_MULTICAST=y # CONFIG_IP_ADVANCED_ROUTER is not set @@ -217,13 +221,17 @@ # CONFIG_NET_IPGRE is not set # CONFIG_IP_MROUTE is not set # CONFIG_ARPD is not set -# CONFIG_INET_ECN is not set +CONFIG_INET_ECN=y CONFIG_SYN_COOKIES=y -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m # CONFIG_IPV6 is not set -# CONFIG_XFRM_USER is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_NETFILTER is not set +CONFIG_XFRM=y +CONFIG_XFRM_USER=m # # SCTP Configuration (EXPERIMENTAL) @@ -233,8 +241,6 @@ # CONFIG_ATM is not set # CONFIG_VLAN_8021Q is not set # CONFIG_LLC is not set -# CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_NET_DIVERT is not set @@ -258,10 +264,10 @@ # ARCnet devices # # CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set +CONFIG_DUMMY=m +CONFIG_BONDING=m # CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set +CONFIG_TUN=m # CONFIG_ETHERTAP is not set # @@ -312,6 +318,7 @@ # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set # CONFIG_R8169 is not set +# CONFIG_SIS190 is not set # CONFIG_SK98LIN is not set # CONFIG_TIGON3 is not set @@ -321,7 +328,14 @@ # CONFIG_IXGB is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set -# CONFIG_PPP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m # CONFIG_SLIP is not set # @@ -489,26 +503,32 @@ # File systems # CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +# CONFIG_EXT2_FS_SECURITY is not set CONFIG_EXT3_FS=y -# CONFIG_EXT3_FS_XATTR is not set +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +# CONFIG_EXT3_FS_SECURITY is not set CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set +CONFIG_FS_MBCACHE=y CONFIG_REISERFS_FS=y # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set CONFIG_JFS_FS=y -# CONFIG_JFS_POSIX_ACL is not set +CONFIG_JFS_POSIX_ACL=y # CONFIG_JFS_DEBUG is not set # CONFIG_JFS_STATISTICS is not set -CONFIG_XFS_FS=y +CONFIG_FS_POSIX_ACL=y +CONFIG_XFS_FS=m # CONFIG_XFS_RT is not set # CONFIG_XFS_QUOTA is not set -# CONFIG_XFS_POSIX_ACL is not set +CONFIG_XFS_POSIX_ACL=y # CONFIG_MINIX_FS is not set # CONFIG_ROMFS_FS is not set # CONFIG_QUOTA is not set -CONFIG_AUTOFS_FS=y +CONFIG_AUTOFS_FS=m # CONFIG_AUTOFS4_FS is not set # @@ -517,7 +537,7 @@ CONFIG_ISO9660_FS=y # CONFIG_JOLIET is not set # CONFIG_ZISOFS is not set -# CONFIG_UDF_FS is not set +CONFIG_UDF_FS=m # # DOS/FAT/NT Filesystems @@ -533,8 +553,9 @@ CONFIG_PROC_FS=y # CONFIG_DEVFS_FS is not set CONFIG_DEVPTS_FS=y -# CONFIG_DEVPTS_FS_XATTR is not set -# CONFIG_TMPFS is not set +CONFIG_DEVPTS_FS_XATTR=y +# CONFIG_DEVPTS_FS_SECURITY is not set +CONFIG_TMPFS=y CONFIG_RAMFS=y # @@ -546,7 +567,7 @@ # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set -# CONFIG_CRAMFS is not set +CONFIG_CRAMFS=y # CONFIG_VXFS_FS is not set # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set @@ -561,15 +582,16 @@ CONFIG_NFS_V4=y CONFIG_NFSD=y CONFIG_NFSD_V3=y -# CONFIG_NFSD_V4 is not set +CONFIG_NFSD_V4=y CONFIG_NFSD_TCP=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=y CONFIG_SUNRPC=y -# CONFIG_SUNRPC_GSS is not set +CONFIG_SUNRPC_GSS=m +CONFIG_RPCSEC_GSS_KRB5=m # CONFIG_SMB_FS is not set -CONFIG_CIFS=y +CONFIG_CIFS=m # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_INTERMEZZO_FS is not set @@ -705,6 +727,7 @@ CONFIG_XMON=y CONFIG_XMON_DEFAULT=y # CONFIG_PPCDBG is not set +# CONFIG_DEBUG_INFO is not set # # Security options @@ -714,9 +737,27 @@ # # Cryptographic options # -# CONFIG_CRYPTO is not set +CONFIG_CRYPTO=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_TEST=m # # Library routines # CONFIG_CRC32=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m diff -Nru a/arch/ppc64/kernel/asm-offsets.c b/arch/ppc64/kernel/asm-offsets.c --- a/arch/ppc64/kernel/asm-offsets.c Mon Sep 22 00:30:23 2003 +++ b/arch/ppc64/kernel/asm-offsets.c Mon Sep 22 00:30:23 2003 @@ -83,9 +83,7 @@ DEFINE(PACALPQUEUE, offsetof(struct paca_struct, lpQueuePtr)); DEFINE(PACATOC, offsetof(struct paca_struct, xTOC)); DEFINE(PACAEXCSP, offsetof(struct paca_struct, exception_sp)); - DEFINE(PACAHRDWINTSTACK, offsetof(struct paca_struct, xHrdIntStack)); DEFINE(PACAPROCENABLED, offsetof(struct paca_struct, xProcEnabled)); - DEFINE(PACAHRDWINTCOUNT, offsetof(struct paca_struct, xHrdIntCount)); DEFINE(PACADEFAULTDECR, offsetof(struct paca_struct, default_decr)); DEFINE(PACAPROFENABLED, offsetof(struct paca_struct, prof_enabled)); DEFINE(PACAPROFLEN, offsetof(struct paca_struct, prof_len)); diff -Nru a/arch/ppc64/kernel/chrp_setup.c b/arch/ppc64/kernel/chrp_setup.c --- a/arch/ppc64/kernel/chrp_setup.c Mon Sep 22 00:30:18 2003 +++ b/arch/ppc64/kernel/chrp_setup.c Mon Sep 22 00:30:18 2003 @@ -72,6 +72,7 @@ extern void find_and_init_phbs(void); +extern void pSeries_get_boot_time(struct rtc_time *rtc_time); extern void pSeries_get_rtc_time(struct rtc_time *rtc_time); extern int pSeries_set_rtc_time(struct rtc_time *rtc_time); void pSeries_calibrate_decr(void); @@ -256,7 +257,7 @@ ppc_md.power_off = rtas_power_off; ppc_md.halt = rtas_halt; - ppc_md.get_boot_time = pSeries_get_rtc_time; + ppc_md.get_boot_time = pSeries_get_boot_time; ppc_md.get_rtc_time = pSeries_get_rtc_time; ppc_md.set_rtc_time = pSeries_set_rtc_time; ppc_md.calibrate_decr = pSeries_calibrate_decr; diff -Nru a/arch/ppc64/kernel/eeh.c b/arch/ppc64/kernel/eeh.c --- a/arch/ppc64/kernel/eeh.c Mon Sep 22 00:30:23 2003 +++ b/arch/ppc64/kernel/eeh.c Mon Sep 22 00:30:23 2003 @@ -115,8 +115,17 @@ ret = rtas_call(ibm_read_slot_reset_state, 3, 3, rets, dn->eeh_config_addr, BUID_HI(dn->phb->buid), BUID_LO(dn->phb->buid)); if (ret == 0 && rets[1] == 1 && rets[0] >= 2) { - panic("EEH: MMIO failure (%ld) on device:\n %s %s\n", - rets[0], pci_name(dev), dev->dev.name); + /* + * XXX We should create a separate sysctl for this. + * + * Since the panic_on_oops sysctl is used to halt + * the system in light of potential corruption, we + * can use it here. + */ + if (panic_on_oops) + panic("EEH: MMIO failure (%ld) on device:\n%s\n", rets[0], pci_name(dev)); + else + printk("EEH: MMIO failure (%ld) on device:\n%s\n", rets[0], pci_name(dev)); } } eeh_false_positives++; diff -Nru a/arch/ppc64/kernel/head.S b/arch/ppc64/kernel/head.S --- a/arch/ppc64/kernel/head.S Mon Sep 22 00:30:22 2003 +++ b/arch/ppc64/kernel/head.S Mon Sep 22 00:30:22 2003 @@ -40,6 +40,15 @@ #define DO_SOFT_DISABLE #endif +/* copy saved SOFTE bit or EE bit from saved MSR depending + * if we are doing soft-disable or not + */ +#ifdef DO_SOFT_DISABLE +#define DO_COPY_EE() ld r20,SOFTE(r1) +#else +#define DO_COPY_EE() rldicl r20,r23,49,63 +#endif + /* * hcall interface to pSeries LPAR */ @@ -618,11 +627,7 @@ ld r4,_DAR(r1) ld r5,_DSISR(r1) addi r3,r1,STACK_FRAME_OVERHEAD -#ifdef DO_SOFT_DISABLE - ld r20,SOFTE(r1) /* Copy saved SOFTE bit */ -#else - rldicl r20,r23,49,63 /* copy EE bit from saved MSR */ -#endif + DO_COPY_EE() li r6,0x300 bl .save_remaining_regs bl .do_page_fault @@ -644,12 +649,9 @@ or. r3,r3,r3 /* Check return code */ beq fast_exception_return /* Return if we succeeded */ addi r3,r1,STACK_FRAME_OVERHEAD -#ifdef DO_SOFT_DISABLE - ld r20,SOFTE(r1) -#else - rldicl r20,r23,49,63 /* copy EE bit from saved MSR */ -#endif + DO_COPY_EE() li r6,0x380 + li r5,0 bl .save_remaining_regs bl .do_page_fault b .ret_from_except @@ -670,13 +672,9 @@ bl .do_hash_page_ISI /* Try to handle as hpte fault */ 1: mr r4,r22 - mr r5,r23 + rlwinm r5,r23,0,4,4 /* We only care about PR in error_code */ addi r3,r1,STACK_FRAME_OVERHEAD -#ifdef DO_SOFT_DISABLE - ld r20,SOFTE(r1) -#else - rldicl r20,r23,49,63 /* copy EE bit from saved MSR */ -#endif + DO_COPY_EE() li r6,0x400 bl .save_remaining_regs bl .do_page_fault @@ -692,12 +690,9 @@ beq+ fast_exception_return /* Return if we succeeded */ addi r3,r1,STACK_FRAME_OVERHEAD -#ifdef DO_SOFT_DISABLE - ld r20,SOFTE(r1) -#else - rldicl r20,r23,49,63 /* copy EE bit from saved MSR */ -#endif + DO_COPY_EE() li r6,0x480 + li r5,0 bl .save_remaining_regs bl .do_page_fault b .ret_from_except @@ -710,70 +705,14 @@ li r20,0 li r6,0x500 bl .save_remaining_regs - /* Determine if need to run do_irq on a hardware interrupt stack */ - /* The first invocation of do_irq will occur on the kernel */ - /* stack in the current stack */ - /* All other invocations of do_irq will run on the hardware */ - /* interrupt stack associated with the PACA of the current */ - /* processor. */ - /* */ - /* The call to do_irq will preserve the value of r14 - r31 */ - /* */ -/* - * XXX turn off interrupt stacks until the thread_info stuff is fixed. - * Otherwise we end up setting need_resched etc bits in the interrupt - * stack and they never get seen when we return to the process stack - Anton - */ -#if 0 - lbz r21,PACAHRDWINTCOUNT(r13) /* get hardware interrupt cnt */ - cmpi 0,r21,1 /* */ - addi r21,r21,1 /* incr hardware interrupt cnt*/ - stb r21,PACAHRDWINTCOUNT(r13) /* */ - bne 2f /* */ - - mr r14,r1 /* preserve current r1 */ - ld r1,PACAHRDWINTSTACK(r13) /* */ - std r14,0(r1) /* set the back chain */ bl .do_IRQ - lbz r22,PACAHRDWINTCOUNT(r13) /* get hardware interrupt cnt */ - cmp 0,r22,r21 /* debug test */ - bne 3f - subi r21,r21,1 - stb r21,PACAHRDWINTCOUNT(r13) /* */ - mr r1,r14 /* */ b .ret_from_except -#endif - -2: - bl .do_IRQ - -#if 0 - lbz r22,PACAHRDWINTCOUNT(r13) /* get hardware interrupt cnt */ - cmp 0,r22,r21 /* debug test */ - bne 3f /* */ - subi r21,r21,1 /* decr hardware interrupt cnt*/ - stb r21,PACAHRDWINTCOUNT(r13) /* */ -#endif - - b .ret_from_except - -3: - /* error - counts out of sync */ -#ifdef CONFIG_XMON - bl .xmon -#endif -4: b 4b - .globl Alignment_common Alignment_common: EXCEPTION_PROLOG_COMMON addi r3,r1,STACK_FRAME_OVERHEAD -#ifdef DO_SOFT_DISABLE - ld r20,SOFTE(r1) -#else - rldicl r20,r23,49,63 /* copy EE bit from saved MSR */ -#endif + DO_COPY_EE() li r6,0x600 bl .save_remaining_regs bl .AlignmentException @@ -783,11 +722,7 @@ ProgramCheck_common: EXCEPTION_PROLOG_COMMON addi r3,r1,STACK_FRAME_OVERHEAD -#ifdef DO_SOFT_DISABLE - ld r20,SOFTE(r1) -#else - rldicl r20,r23,49,63 /* copy EE bit from saved MSR */ -#endif + DO_COPY_EE() li r6,0x700 bl .save_remaining_regs bl .ProgramCheckException @@ -798,11 +733,7 @@ EXCEPTION_PROLOG_COMMON bne .load_up_fpu /* if from user, just load it up */ addi r3,r1,STACK_FRAME_OVERHEAD -#ifdef DO_SOFT_DISABLE - ld r20,SOFTE(r1) -#else - rldicl r20,r23,49,63 /* copy EE bit from saved MSR */ -#endif + DO_COPY_EE() li r6,0x800 bl .save_remaining_regs bl .KernelFPUnavailableException @@ -818,11 +749,7 @@ beq+ HardwareInterrupt_entry 1: #endif -#ifdef DO_SOFT_DISABLE - ld r20,SOFTE(r1) -#else - rldicl r20,r23,49,63 /* copy EE bit from saved MSR */ -#endif + DO_COPY_EE() li r6,0xC00 bl .save_remaining_regs bl .DoSyscall @@ -1866,18 +1793,6 @@ li r5,0 std r0,PACAKSAVE(r13) - /* ptr to hardware interrupt stack for boot processor */ - LOADADDR(r3, hardware_int_paca0) - li r5,PAGE_SIZE - sldi r5,r5,3 - subi r5,r5,STACK_FRAME_OVERHEAD - - add r3,r3,r5 - std r3,PACAHRDWINTSTACK(r13) - - li r3,0 - stb r3,PACAHRDWINTCOUNT(r13) - /* Restore the parms passed in from the bootloader. */ mr r3,r31 mr r4,r30 @@ -1998,10 +1913,6 @@ .globl ioremap_dir ioremap_dir: .space 4096 - - .globl hardware_int_paca0 -hardware_int_paca0: - .space 8*PAGE_SIZE /* 1 page segment table per cpu (max 48, cpu0 allocated at STAB0_PHYS_ADDR) */ .globl stab_array diff -Nru a/arch/ppc64/kernel/htab.c b/arch/ppc64/kernel/htab.c --- a/arch/ppc64/kernel/htab.c Mon Sep 22 00:30:22 2003 +++ b/arch/ppc64/kernel/htab.c Mon Sep 22 00:30:22 2003 @@ -197,7 +197,7 @@ if (!pgd_none(*pg)) { pm = pmd_offset(pg, ea); - if (!pmd_none(*pm)) { + if (pmd_present(*pm)) { pt = pte_offset_kernel(pm, ea); pte = *pt; if (!pte_present(pte)) @@ -436,8 +436,12 @@ if (user_region && cpus_equal(mm->cpu_vm_mask, tmp)) local = 1; - ptep = find_linux_pte(pgdir, ea); - ret = __hash_page(ea, access, vsid, ptep, trap, local); + ret = hash_huge_page(mm, access, ea, vsid, local); + if (ret < 0) { + ptep = find_linux_pte(pgdir, ea); + ret = __hash_page(ea, access, vsid, ptep, trap, local); + } + spin_unlock(&mm->page_table_lock); return ret; diff -Nru a/arch/ppc64/kernel/irq.c b/arch/ppc64/kernel/irq.c --- a/arch/ppc64/kernel/irq.c Mon Sep 22 00:30:21 2003 +++ b/arch/ppc64/kernel/irq.c Mon Sep 22 00:30:21 2003 @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -350,14 +351,11 @@ return 0; } -extern char *ppc_find_proc_name(unsigned *p, char *buf, unsigned buflen); - -static inline void handle_irq_event(int irq, struct pt_regs *regs, - struct irqaction *action) +static inline int handle_irq_event(int irq, struct pt_regs *regs, + struct irqaction *action) { int status = 0; int retval = 0; - struct irqaction *first_action = action; if (!(action->flags & SA_INTERRUPT)) local_irq_enable(); @@ -370,30 +368,90 @@ if (status & SA_SAMPLE_RANDOM) add_interrupt_randomness(irq); local_irq_disable(); - if (retval != 1) { - static int count = 100; - char name_buf[256]; - if (count) { - count--; - if (retval) { - printk("irq event %d: bogus retval mask %x\n", - irq, retval); - } else { - printk("irq %d: nobody cared!\n", irq); - } - dump_stack(); - printk("handlers:\n"); - action = first_action; - do { - printk("[<%p>]", action->handler); - printk(" (%s)\n", - ppc_find_proc_name((unsigned *)action->handler, name_buf, 256)); - action = action->next; - } while (action); - } + return retval; +} + +static void __report_bad_irq(int irq, irq_desc_t *desc, irqreturn_t action_ret) +{ + struct irqaction *action; + + if (action_ret != IRQ_HANDLED && action_ret != IRQ_NONE) { + printk(KERN_ERR "irq event %d: bogus return value %x\n", + irq, action_ret); + } else { + printk(KERN_ERR "irq %d: nobody cared!\n", irq); + } + dump_stack(); + printk(KERN_ERR "handlers:\n"); + action = desc->action; + do { + printk(KERN_ERR "[<%p>]", action->handler); + print_symbol(" (%s)", + (unsigned long)action->handler); + printk("\n"); + action = action->next; + } while (action); +} + +static void report_bad_irq(int irq, irq_desc_t *desc, irqreturn_t action_ret) +{ + static int count = 100; + + if (count) { + count--; + __report_bad_irq(irq, desc, action_ret); } } +static int noirqdebug; + +static int __init noirqdebug_setup(char *str) +{ + noirqdebug = 1; + printk("IRQ lockup detection disabled\n"); + return 1; +} + +__setup("noirqdebug", noirqdebug_setup); + +/* + * If 99,900 of the previous 100,000 interrupts have not been handled then + * assume that the IRQ is stuck in some manner. Drop a diagnostic and try to + * turn the IRQ off. + * + * (The other 100-of-100,000 interrupts may have been a correctly-functioning + * device sharing an IRQ with the failing one) + * + * Called under desc->lock + */ +static void note_interrupt(int irq, irq_desc_t *desc, irqreturn_t action_ret) +{ + if (action_ret != IRQ_HANDLED) { + desc->irqs_unhandled++; + if (action_ret != IRQ_NONE) + report_bad_irq(irq, desc, action_ret); + } + + desc->irq_count++; + if (desc->irq_count < 100000) + return; + + desc->irq_count = 0; + if (desc->irqs_unhandled > 99900) { + /* + * The interrupt is stuck + */ + __report_bad_irq(irq, desc, action_ret); + /* + * Now kill the IRQ + */ + printk(KERN_EMERG "Disabling IRQ #%d\n", irq); + desc->status |= IRQ_DISABLED; + desc->handler->disable(irq); + } + desc->irqs_unhandled = 0; +} + /* * Eventually, this should take an array of interrupts and an array size * so it can dispatch multiple interrupts. @@ -462,10 +520,13 @@ * SMP environment. */ for (;;) { + irqreturn_t action_ret; + spin_unlock(&desc->lock); - handle_irq_event(irq, regs, action); + action_ret = handle_irq_event(irq, regs, action); spin_lock(&desc->lock); - + if (!noirqdebug) + note_interrupt(irq, desc, action_ret); if (likely(!(desc->status & IRQ_PENDING))) break; desc->status &= ~IRQ_PENDING; diff -Nru a/arch/ppc64/kernel/pSeries_lpar.c b/arch/ppc64/kernel/pSeries_lpar.c --- a/arch/ppc64/kernel/pSeries_lpar.c Mon Sep 22 00:30:25 2003 +++ b/arch/ppc64/kernel/pSeries_lpar.c Mon Sep 22 00:30:25 2003 @@ -36,18 +36,6 @@ #include #include - -long plpar_pte_enter(unsigned long flags, - unsigned long ptex, - unsigned long new_pteh, unsigned long new_ptel, - unsigned long *old_pteh_ret, unsigned long *old_ptel_ret) -{ - unsigned long dummy, ret; - ret = plpar_hcall(H_ENTER, flags, ptex, new_pteh, new_ptel, - old_pteh_ret, old_ptel_ret, &dummy); - return(ret); -} - long plpar_pte_remove(unsigned long flags, unsigned long ptex, unsigned long avpn, @@ -83,7 +71,6 @@ tce_ret, &dummy, &dummy); } - long plpar_tce_put(unsigned long liobn, unsigned long ioba, unsigned long tceval) @@ -104,10 +91,9 @@ unsigned long len, const char *buffer) { - unsigned long dummy; unsigned long *lbuf = (unsigned long *)buffer; /* ToDo: alignment? */ - return plpar_hcall(H_PUT_TERM_CHAR, termno, len, - lbuf[0], lbuf[1], &dummy, &dummy, &dummy); + return plpar_hcall_norets(H_PUT_TERM_CHAR, termno, len, lbuf[0], + lbuf[1]); } static void tce_build_pSeriesLP(struct TceTable *tbl, long tcenum, @@ -287,12 +273,11 @@ int hvc_put_chars(int index, const char *buf, int count) { - unsigned long dummy; unsigned long *lbuf = (unsigned long *) buf; long ret; - ret = plpar_hcall(H_PUT_TERM_CHAR, index, count, lbuf[0], lbuf[1], - &dummy, &dummy, &dummy); + ret = plpar_hcall_norets(H_PUT_TERM_CHAR, index, count, lbuf[0], + lbuf[1]); if (ret == H_Success) return count; if (ret == H_Busy) @@ -318,7 +303,6 @@ - long pSeries_lpar_hpte_insert(unsigned long hpte_group, unsigned long va, unsigned long prpn, int secondary, unsigned long hpteflags, @@ -329,6 +313,7 @@ unsigned long flags; unsigned long slot; HPTE lhpte; + unsigned long dummy0, dummy1; /* Fill in the local HPTE with absolute rpn, avpn and flags */ lhpte.dw1.dword1 = 0; @@ -348,7 +333,6 @@ /* Now fill in the actual HPTE */ /* Set CEC cookie to 0 */ - /* Large page = 0 */ /* Zero page = 0 */ /* I-cache Invalidate = 0 */ /* I-cache synchronize = 0 */ @@ -359,19 +343,8 @@ if (hpteflags & (_PAGE_GUARDED|_PAGE_NO_CACHE)) lhpte.dw1.flags.flags &= ~_PAGE_COHERENT; - __asm__ __volatile__ ( - H_ENTER_r3 - "mr 4, %2\n" - "mr 5, %3\n" - "mr 6, %4\n" - "mr 7, %5\n" - HSC - "mr %0, 3\n" - "mr %1, 4\n" - : "=r" (lpar_rc), "=r" (slot) - : "r" (flags), "r" (hpte_group), "r" (lhpte.dw0.dword0), - "r" (lhpte.dw1.dword1) - : "r3", "r4", "r5", "r6", "r7", "cc"); + lpar_rc = plpar_hcall(H_ENTER, flags, hpte_group, lhpte.dw0.dword0, + lhpte.dw1.dword1, &slot, &dummy0, &dummy1); if (lpar_rc == H_PTEG_Full) return -1; diff -Nru a/arch/ppc64/kernel/pSeries_pci.c b/arch/ppc64/kernel/pSeries_pci.c --- a/arch/ppc64/kernel/pSeries_pci.c Mon Sep 22 00:30:25 2003 +++ b/arch/ppc64/kernel/pSeries_pci.c Mon Sep 22 00:30:25 2003 @@ -427,6 +427,7 @@ void pcibios_name_device(struct pci_dev *dev) { +#if 0 struct device_node *dn; /* @@ -446,6 +447,7 @@ } } } +#endif } void __init pcibios_fixup_device_resources(struct pci_dev *dev, diff -Nru a/arch/ppc64/kernel/ppc_ksyms.c b/arch/ppc64/kernel/ppc_ksyms.c --- a/arch/ppc64/kernel/ppc_ksyms.c Mon Sep 22 00:30:19 2003 +++ b/arch/ppc64/kernel/ppc_ksyms.c Mon Sep 22 00:30:19 2003 @@ -49,8 +49,6 @@ extern int sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg); extern int do_signal(sigset_t *, struct pt_regs *); -extern int register_ioctl32_conversion(unsigned int cmd, int (*handler)(unsigned int, unsigned int, unsigned long, struct file *)); -extern int unregister_ioctl32_conversion(unsigned int cmd); int abs(int); @@ -65,9 +63,6 @@ #ifdef CONFIG_SMP EXPORT_SYMBOL(synchronize_irq); #endif /* CONFIG_SMP */ - -EXPORT_SYMBOL(register_ioctl32_conversion); -EXPORT_SYMBOL(unregister_ioctl32_conversion); EXPORT_SYMBOL(isa_io_base); EXPORT_SYMBOL(pci_io_base); diff -Nru a/arch/ppc64/kernel/process.c b/arch/ppc64/kernel/process.c --- a/arch/ppc64/kernel/process.c Mon Sep 22 00:30:22 2003 +++ b/arch/ppc64/kernel/process.c Mon Sep 22 00:30:22 2003 @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -130,12 +131,9 @@ return last; } -char *ppc_find_proc_name(unsigned *p, char *buf, unsigned buflen); - void show_regs(struct pt_regs * regs) { int i; - char name_buf[256]; printk("NIP: %016lX XER: %016lX LR: %016lX\n", regs->nip, regs->xer, regs->link); @@ -170,8 +168,7 @@ * above info out without failing */ printk("NIP [%016lx] ", regs->nip); - printk("%s\n", ppc_find_proc_name((unsigned *)regs->nip, - name_buf, 256)); + print_symbol("%s\n", regs->nip); show_stack(current, (unsigned long *)regs->gpr[1]); } @@ -385,102 +382,6 @@ return error; } -void initialize_paca_hardware_interrupt_stack(void) -{ - int i; - unsigned long stack; - unsigned long end_of_stack =0; - - for (i=1; i < NR_CPUS; i++) { - if (!cpu_possible(i)) - continue; - /* Carve out storage for the hardware interrupt stack */ - stack = __get_free_pages(GFP_ATOMIC, get_order(8*PAGE_SIZE)); - - if ( !stack ) { - printk("ERROR, cannot find space for hardware stack.\n"); - panic(" no hardware stack "); - } - - - /* Store the stack value in the PACA for the processor */ - paca[i].xHrdIntStack = stack + (8*PAGE_SIZE) - STACK_FRAME_OVERHEAD; - paca[i].xHrdIntCount = 0; - - } - - /* - * __get_free_pages() might give us a page > KERNBASE+256M which - * is mapped with large ptes so we can't set up the guard page. - */ - if (cur_cpu_spec->cpu_features & CPU_FTR_16M_PAGE) - return; - - for (i=0; i < NR_CPUS; i++) { - if (!cpu_possible(i)) - continue; - /* set page at the top of stack to be protected - prevent overflow */ - end_of_stack = paca[i].xHrdIntStack - (8*PAGE_SIZE - STACK_FRAME_OVERHEAD); - ppc_md.hpte_updateboltedpp(PP_RXRX,end_of_stack); - } -} - -char *ppc_find_proc_name(unsigned *p, char *buf, unsigned buflen) -{ - unsigned long tb_flags; - unsigned short name_len; - unsigned long tb_start, code_start, code_ptr, code_offset; - unsigned int code_len; - unsigned long end; - - strcpy(buf, "Unknown"); - code_ptr = (unsigned long)p; - code_offset = 0; - - /* handle functions in text and init sections */ - if (((unsigned long)p >= (unsigned long)_stext) && - ((unsigned long)p < (unsigned long)_etext)) - end = (unsigned long)_etext; - else if (((unsigned long)p >= (unsigned long)__init_begin) && - ((unsigned long)p < (unsigned long)__init_end)) - end = (unsigned long)__init_end; - else - return buf; - - while ((unsigned long)p < end) { - if (*p == 0) { - tb_start = (unsigned long)p; - ++p; /* Point to traceback flags */ - tb_flags = *((unsigned long *)p); - p += 2; /* Skip over traceback flags */ - if (tb_flags & TB_NAME_PRESENT) { - if (tb_flags & TB_PARMINFO) - ++p; /* skip over parminfo data */ - if (tb_flags & TB_HAS_TBOFF) { - code_len = *p; /* get code length */ - code_start = tb_start - code_len; - code_offset = code_ptr - code_start + 1; - if (code_offset > 0x100000) - break; - ++p; /* skip over code size */ - } - name_len = *((unsigned short *)p); - if (name_len > (buflen-20)) - name_len = buflen-20; - memcpy(buf, ((char *)p)+2, name_len); - buf[name_len] = 0; - if (code_offset) - sprintf(buf+name_len, "+0x%lx", - code_offset-1); - } - break; - } - ++p; - } - - return buf; -} - /* * These bracket the sleeping functions.. */ @@ -520,7 +421,6 @@ unsigned long ip; unsigned long stack_page = (unsigned long)p->thread_info; int count = 0; - char name_buf[256]; unsigned long sp = (unsigned long)_sp; if (!p) @@ -539,8 +439,7 @@ if (__get_user(ip, (unsigned long *)(sp + 16))) break; printk("[%016lx] ", ip); - printk("%s\n", ppc_find_proc_name((unsigned *)ip, - name_buf, 256)); + print_symbol("%s\n", ip); } while (count++ < 32); } diff -Nru a/arch/ppc64/kernel/rtas.c b/arch/ppc64/kernel/rtas.c --- a/arch/ppc64/kernel/rtas.c Mon Sep 22 00:30:19 2003 +++ b/arch/ppc64/kernel/rtas.c Mon Sep 22 00:30:19 2003 @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -176,6 +177,26 @@ for (i = 0; i < nret-1; ++i) outputs[i] = rtas_args->rets[i+1]; return (ulong)((nret > 0) ? rtas_args->rets[0] : 0); +} + +/* Given an RTAS status code of 990n compute the hinted delay of 10^n + * (last digit) milliseconds. For now we bound at n=3 (1 sec). + */ +unsigned int +rtas_extended_busy_delay_time(int status) +{ + int order = status - 9900; + unsigned int ms; + + if (order < 0) + order = 0; /* RTC depends on this for -2 clock busy */ + else if (order > 3) + order = 3; /* bound */ + + /* Use microseconds for reasonable accuracy */ + for (ms = 1000; order > 0; order--) + ms = ms * 10; + return ms / (1000000/HZ); /* round down is fine */ } #define FLASH_BLOCK_LIST_VERSION (1UL) diff -Nru a/arch/ppc64/kernel/rtc.c b/arch/ppc64/kernel/rtc.c --- a/arch/ppc64/kernel/rtc.c Mon Sep 22 00:30:22 2003 +++ b/arch/ppc64/kernel/rtc.c Mon Sep 22 00:30:22 2003 @@ -35,6 +35,7 @@ #include #include +#include #include #include #include @@ -340,20 +341,63 @@ #endif #ifdef CONFIG_PPC_PSERIES +#define MAX_RTC_WAIT 5000 /* 5 sec */ +#define RTAS_CLOCK_BUSY (-2) +void pSeries_get_boot_time(struct rtc_time *rtc_tm) +{ + unsigned long ret[8]; + int error, wait_time; + unsigned long max_wait_tb; + + max_wait_tb = __get_tb() + tb_ticks_per_usec * 1000 * MAX_RTC_WAIT; + do { + error = rtas_call(rtas_token("get-time-of-day"), 0, 8, (void *)&ret); + if (error == RTAS_CLOCK_BUSY || rtas_is_extended_busy(error)) { + wait_time = rtas_extended_busy_delay_time(error); + /* This is boot time so we spin. */ + udelay(wait_time*1000); + error = RTAS_CLOCK_BUSY; + } + } while (error == RTAS_CLOCK_BUSY && (__get_tb() < max_wait_tb)); + + 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; +} + +/* NOTE: get_rtc_time will get an error if executed in interrupt context + * and if a delay is needed to read the clock. In this case we just + * silently return without updating rtc_tm. + */ void pSeries_get_rtc_time(struct rtc_time *rtc_tm) { unsigned long ret[8]; - int error; - int count; + int error, wait_time; + unsigned long max_wait_tb; - /* - * error -2 is clock busy, we keep retrying a few times to see - * if it will come good -- paulus - */ - count = 0; + max_wait_tb = __get_tb() + tb_ticks_per_usec * 1000 * MAX_RTC_WAIT; do { error = rtas_call(rtas_token("get-time-of-day"), 0, 8, (void *)&ret); - } while (error == -2 && ++count < 1000); + if (error == RTAS_CLOCK_BUSY || rtas_is_extended_busy(error)) { + if (in_interrupt()) { + printk(KERN_WARNING "error: reading clock would delay interrupt\n"); + return; /* delay not allowed */ + } + wait_time = rtas_extended_busy_delay_time(error); + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(wait_time); + error = RTAS_CLOCK_BUSY; + } + } while (error == RTAS_CLOCK_BUSY && (__get_tb() < max_wait_tb)); if (error != 0) { printk(KERN_WARNING "error: reading the clock failed (%d)\n", @@ -371,20 +415,24 @@ int pSeries_set_rtc_time(struct rtc_time *tm) { - int error; - int count; + int error, wait_time; + unsigned long max_wait_tb; - /* - * error -2 is clock busy, we keep retrying a few times to see - * if it will come good -- paulus - */ - count = 0; + max_wait_tb = __get_tb() + tb_ticks_per_usec * 1000 * MAX_RTC_WAIT; 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 == RTAS_CLOCK_BUSY || rtas_is_extended_busy(error)) { + if (in_interrupt()) + return 1; /* probably decrementer */ + wait_time = rtas_extended_busy_delay_time(error); + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(wait_time); + error = RTAS_CLOCK_BUSY; + } + } while (error == RTAS_CLOCK_BUSY && (__get_tb() < max_wait_tb)); if (error != 0) printk(KERN_WARNING "error: setting the clock failed (%d)\n", diff -Nru a/arch/ppc64/kernel/semaphore.c b/arch/ppc64/kernel/semaphore.c --- a/arch/ppc64/kernel/semaphore.c Mon Sep 22 00:30:18 2003 +++ b/arch/ppc64/kernel/semaphore.c Mon Sep 22 00:30:18 2003 @@ -75,9 +75,8 @@ struct task_struct *tsk = current; DECLARE_WAITQUEUE(wait, tsk); - tsk->state = TASK_UNINTERRUPTIBLE; + __set_task_state(tsk, TASK_UNINTERRUPTIBLE); add_wait_queue_exclusive(&sem->wait, &wait); - smp_wmb(); /* * Try to get the semaphore. If the count is > 0, then we've @@ -87,10 +86,10 @@ */ while (__sem_update_count(sem, -1) <= 0) { schedule(); - tsk->state = TASK_UNINTERRUPTIBLE; + set_task_state(tsk, TASK_UNINTERRUPTIBLE); } remove_wait_queue(&sem->wait, &wait); - tsk->state = TASK_RUNNING; + __set_task_state(tsk, TASK_RUNNING); /* * If there are any more sleepers, wake one of them up so @@ -106,9 +105,8 @@ struct task_struct *tsk = current; DECLARE_WAITQUEUE(wait, tsk); - tsk->state = TASK_INTERRUPTIBLE; + __set_task_state(tsk, TASK_INTERRUPTIBLE); add_wait_queue_exclusive(&sem->wait, &wait); - smp_wmb(); while (__sem_update_count(sem, -1) <= 0) { if (signal_pending(current)) { @@ -122,10 +120,11 @@ break; } schedule(); - tsk->state = TASK_INTERRUPTIBLE; + set_task_state(tsk, TASK_INTERRUPTIBLE); } - tsk->state = TASK_RUNNING; remove_wait_queue(&sem->wait, &wait); + __set_task_state(tsk, TASK_RUNNING); + wake_up(&sem->wait); return retval; } diff -Nru a/arch/ppc64/kernel/stab.c b/arch/ppc64/kernel/stab.c --- a/arch/ppc64/kernel/stab.c Mon Sep 22 00:30:23 2003 +++ b/arch/ppc64/kernel/stab.c Mon Sep 22 00:30:23 2003 @@ -221,15 +221,18 @@ } static inline void __ste_allocate(unsigned long esid, unsigned long vsid, - int kernel_segment) + int kernel_segment, mm_context_t context) { if (cur_cpu_spec->cpu_features & CPU_FTR_SLB) { + int large = 0; + #ifndef CONFIG_PPC_ISERIES if (REGION_ID(esid << SID_SHIFT) == KERNEL_REGION_ID) - make_slbe(esid, vsid, 1, kernel_segment); - else + large = 1; + else if (REGION_ID(esid << SID_SHIFT) == USER_REGION_ID) + large = in_hugepage_area(context, esid << SID_SHIFT); #endif - make_slbe(esid, vsid, 0, kernel_segment); + make_slbe(esid, vsid, large, kernel_segment); } else { unsigned char top_entry, stab_entry, *segments; @@ -255,6 +258,7 @@ { unsigned long vsid, esid; int kernel_segment = 0; + mm_context_t context; PMC_SW_PROCESSOR(stab_faults); @@ -266,16 +270,18 @@ if (REGION_ID(ea) >= KERNEL_REGION_ID) { kernel_segment = 1; vsid = get_kernel_vsid(ea); + context = REGION_ID(ea); } else { - struct mm_struct *mm = current->mm; - if (mm) - vsid = get_vsid(mm->context, ea); - else + if (! current->mm) return 1; + + context = current->mm->context; + + vsid = get_vsid(context, ea); } esid = GET_ESID(ea); - __ste_allocate(esid, vsid, kernel_segment); + __ste_allocate(esid, vsid, kernel_segment, context); if (!(cur_cpu_spec->cpu_features & CPU_FTR_SLB)) { /* Order update */ asm volatile("sync":::"memory"); @@ -302,7 +308,7 @@ for (esid = 0; esid < 16; esid++) { unsigned long ea = esid << SID_SHIFT; vsid = get_vsid(mm->context, ea); - __ste_allocate(esid, vsid, 0); + __ste_allocate(esid, vsid, 0, mm->context); } } else { unsigned long pc = KSTK_EIP(tsk); @@ -316,7 +322,7 @@ (REGION_ID(pc) >= KERNEL_REGION_ID)) return; vsid = get_vsid(mm->context, pc); - __ste_allocate(GET_ESID(pc), vsid, 0); + __ste_allocate(GET_ESID(pc), vsid, 0, mm->context); } if (stack && (pc_segment != stack_segment)) { @@ -324,7 +330,7 @@ (REGION_ID(stack) >= KERNEL_REGION_ID)) return; vsid = get_vsid(mm->context, stack); - __ste_allocate(GET_ESID(stack), vsid, 0); + __ste_allocate(GET_ESID(stack), vsid, 0, mm->context); } } diff -Nru a/arch/ppc64/kernel/sys_ppc32.c b/arch/ppc64/kernel/sys_ppc32.c --- a/arch/ppc64/kernel/sys_ppc32.c Mon Sep 22 00:30:23 2003 +++ b/arch/ppc64/kernel/sys_ppc32.c Mon Sep 22 00:30:23 2003 @@ -1243,16 +1243,19 @@ } -struct msgbuf32 { s32 mtype; char mtext[1]; }; +struct msgbuf32 { + compat_long_t mtype; + char mtext[1]; +}; struct semid_ds32 { struct ipc_perm sem_perm; compat_time_t sem_otime; compat_time_t sem_ctime; - u32 sem_base; - u32 sem_pending; - u32 sem_pending_last; - u32 undo; + compat_uptr_t sem_base; + compat_uptr_t sem_pending; + compat_uptr_t sem_pending_last; + compat_uptr_t undo; unsigned short sem_nsems; }; @@ -1262,21 +1265,20 @@ compat_time_t sem_otime; unsigned int __unused2; compat_time_t sem_ctime; - u32 sem_nsems; - u32 __unused3; - u32 __unused4; + compat_ulong_t sem_nsems; + compat_ulong_t __unused3; + compat_ulong_t __unused4; }; -struct msqid_ds32 -{ +struct msqid_ds32 { struct ipc_perm msg_perm; - u32 msg_first; - u32 msg_last; + compat_uptr_t msg_first; + compat_uptr_t msg_last; compat_time_t msg_stime; compat_time_t msg_rtime; compat_time_t msg_ctime; - u32 msg_lcbytes; - u32 msg_lqbytes; + compat_ulong_t msg_lcbytes; + compat_ulong_t msg_lqbytes; unsigned short msg_cbytes; unsigned short msg_qnum; unsigned short msg_qbytes; @@ -1292,13 +1294,13 @@ compat_time_t msg_rtime; unsigned int __unused3; compat_time_t msg_ctime; - unsigned int msg_cbytes; - unsigned int msg_qnum; - unsigned int msg_qbytes; + compat_ulong_t msg_cbytes; + compat_ulong_t msg_qnum; + compat_ulong_t msg_qbytes; compat_pid_t msg_lspid; compat_pid_t msg_lrpid; - unsigned int __unused4; - unsigned int __unused5; + compat_ulong_t __unused4; + compat_ulong_t __unused5; }; struct shmid_ds32 { @@ -1311,8 +1313,8 @@ compat_ipc_pid_t shm_lpid; unsigned short shm_nattch; unsigned short __unused; - unsigned int __unused2; - unsigned int __unused3; + compat_uptr_t __unused2; + compat_uptr_t __unused3; }; struct shmid64_ds32 { @@ -1327,9 +1329,9 @@ compat_size_t shm_segsz; compat_pid_t shm_cpid; compat_pid_t shm_lpid; - unsigned int shm_nattch; - unsigned int __unused5; - unsigned int __unused6; + compat_ulong_t shm_nattch; + compat_ulong_t __unused5; + compat_ulong_t __unused6; }; /* @@ -1350,7 +1352,7 @@ err = -EFAULT; if (get_user(pad, (u32 *)uptr)) return err; - if (third == SETVAL) + if ((third & ~IPC_64) == SETVAL) fourth.val = (int)pad; else fourth.__pad = (void *)A(pad); diff -Nru a/arch/ppc64/kernel/syscalls.c b/arch/ppc64/kernel/syscalls.c --- a/arch/ppc64/kernel/syscalls.c Mon Sep 22 00:30:23 2003 +++ b/arch/ppc64/kernel/syscalls.c Mon Sep 22 00:30:23 2003 @@ -1,5 +1,5 @@ /* - * linux/arch/ppc/kernel/sys_ppc.c + * linux/arch/ppc64/kernel/sys_ppc.c * * PowerPC version * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) @@ -40,7 +40,6 @@ #include #include #include -#include #include extern unsigned long wall_jiffies; @@ -79,6 +78,7 @@ case SEMCTL: { union semun fourth; + ret = -EINVAL; if (!ptr) break; if ((ret = get_user(fourth.__pad, (void **)ptr))) @@ -94,6 +94,7 @@ case 0: { struct ipc_kludge tmp; + ret = -EINVAL; if (!ptr) break; if ((ret = copy_from_user(&tmp, @@ -127,6 +128,7 @@ break; } case 1: /* iBCS2 emulator entry point */ + ret = -EINVAL; if (!segment_eq(get_fs(), get_ds())) break; ret = sys_shmat (first, (char *) ptr, second, diff -Nru a/arch/ppc64/kernel/time.c b/arch/ppc64/kernel/time.c --- a/arch/ppc64/kernel/time.c Mon Sep 22 00:30:24 2003 +++ b/arch/ppc64/kernel/time.c Mon Sep 22 00:30:24 2003 @@ -307,6 +307,15 @@ return 1; } +/* + * Scheduler clock - returns current time in nanosec units. + * + * This is wrong, but my CPUs run at 1GHz, so nyer nyer. + */ +unsigned long long sched_clock(void) +{ + return get_tb(); +} /* * This version of gettimeofday has microsecond resolution. diff -Nru a/arch/ppc64/kernel/vmlinux.lds.S b/arch/ppc64/kernel/vmlinux.lds.S --- a/arch/ppc64/kernel/vmlinux.lds.S Mon Sep 22 00:30:23 2003 +++ b/arch/ppc64/kernel/vmlinux.lds.S Mon Sep 22 00:30:23 2003 @@ -137,4 +137,9 @@ . = ALIGN(4096); _end = . ; PROVIDE (end = .); + + /* Sections to be discarded. */ + /DISCARD/ : { + *(.exitcall.exit) + } } diff -Nru a/arch/ppc64/kernel/xics.c b/arch/ppc64/kernel/xics.c --- a/arch/ppc64/kernel/xics.c Mon Sep 22 00:30:22 2003 +++ b/arch/ppc64/kernel/xics.c Mon Sep 22 00:30:22 2003 @@ -267,6 +267,15 @@ irq, call_status); return; } + + /* Have to set XIVE to 0xff to be able to remove a slot */ + call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq, default_server, + 0xff); + if (call_status != 0) { + printk("xics_disable_irq: irq=%x: ibm_set_xive(0xff) returned %lx\n", + irq, call_status); + return; + } } void xics_end_irq(u_int irq) @@ -375,12 +384,12 @@ int i; unsigned long intr_size = 0; struct device_node *np; - uint *ireg, ilen, indx=0; + uint *ireg, ilen, indx = 0; unsigned long intr_base = 0; struct xics_interrupt_node { - unsigned long long addr; - unsigned long long size; - } inodes[NR_CPUS*2]; + unsigned long addr; + unsigned long size; + } inodes[NR_CPUS]; ppc64_boot_msg(0x20, "XICS Init"); diff -Nru a/arch/ppc64/mm/Makefile b/arch/ppc64/mm/Makefile --- a/arch/ppc64/mm/Makefile Mon Sep 22 00:30:18 2003 +++ b/arch/ppc64/mm/Makefile Mon Sep 22 00:30:18 2003 @@ -6,3 +6,4 @@ obj-y := fault.o init.o extable.o imalloc.o obj-$(CONFIG_DISCONTIGMEM) += numa.o +obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o diff -Nru a/arch/ppc64/mm/fault.c b/arch/ppc64/mm/fault.c --- a/arch/ppc64/mm/fault.c Mon Sep 22 00:30:23 2003 +++ b/arch/ppc64/mm/fault.c Mon Sep 22 00:30:23 2003 @@ -46,8 +46,10 @@ void bad_page_fault(struct pt_regs *, unsigned long, int); /* - * For 600- and 800-family processors, the error_code parameter is DSISR - * for a data fault, SRR1 for an instruction fault. + * The error_code parameter is + * - DSISR for a non-SLB data access fault, + * - SRR1 & 0x08000000 for a non-SLB instruction access fault + * - 0 any SLB fault. */ void do_page_fault(struct pt_regs *regs, unsigned long address, unsigned long error_code) @@ -57,17 +59,6 @@ siginfo_t info; unsigned long code = SEGV_MAPERR; unsigned long is_write = error_code & 0x02000000; - - /* - * Fortunately the bit assignments in SRR1 for an instruction - * fault and DSISR for a data fault are mostly the same for the - * bits we are interested in. But there are some bits which - * indicate errors in DSISR but can validly be set in SRR1. - */ - if (regs->trap == 0x400) - error_code &= 0x48200000; - else if (regs->trap != 0x300) /* ensure error_code is 0 on SLB miss */ - error_code = 0; #ifdef CONFIG_DEBUG_KERNEL if (debugger_fault_handler && (regs->trap == 0x300 || diff -Nru a/arch/ppc64/mm/hugetlbpage.c b/arch/ppc64/mm/hugetlbpage.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/ppc64/mm/hugetlbpage.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,925 @@ +/* + * PPC64 (POWER4) Huge TLB Page Support for Kernel. + * + * Copyright (C) 2003 David Gibson, IBM Corporation. + * + * Based on the IA-32 version: + * Copyright (C) 2002, Rohit Seth + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +int htlbpage_max; + +/* This lock protects the two counters and list below */ +static spinlock_t htlbpage_lock = SPIN_LOCK_UNLOCKED; + +static int htlbpage_free; /* = 0 */ +static int htlbpage_total; /* = 0 */ +static struct list_head hugepage_freelists[MAX_NUMNODES]; + +static void enqueue_huge_page(struct page *page) +{ + list_add(&page->list, + &hugepage_freelists[page_zone(page)->zone_pgdat->node_id]); +} + +/* XXX make this a sysctl */ +unsigned long largepage_roundrobin = 1; + +static struct page *dequeue_huge_page(void) +{ + static int nid = 0; + struct page *page = NULL; + int i; + + if (!largepage_roundrobin) + nid = numa_node_id(); + + for (i = 0; i < numnodes; i++) { + if (!list_empty(&hugepage_freelists[nid])) + break; + nid = (nid + 1) % numnodes; + } + + if (!list_empty(&hugepage_freelists[nid])) { + page = list_entry(hugepage_freelists[nid].next, struct page, list); + list_del(&page->list); + } + + if (largepage_roundrobin) + nid = (nid + 1) % numnodes; + + return page; +} + +static struct page *alloc_fresh_huge_page(void) +{ + static int nid = 0; + struct page *page; + + page = alloc_pages_node(nid, GFP_HIGHUSER, HUGETLB_PAGE_ORDER); + if (!page) + return NULL; + + nid = page_zone(page)->zone_pgdat->node_id; + nid = (nid + 1) % numnodes; + return page; +} + +/* HugePTE layout: + * + * 31 30 ... 15 14 13 12 10 9 8 7 6 5 4 3 2 1 0 + * PFN>>12..... - - - - - - HASH_IX.... 2ND HASH RW - HG=1 + */ + +#define HUGEPTE_SHIFT 15 +#define _HUGEPAGE_PFN 0xffff8000 +#define _HUGEPAGE_BAD 0x00007f00 +#define _HUGEPAGE_HASHPTE 0x00000008 +#define _HUGEPAGE_SECONDARY 0x00000010 +#define _HUGEPAGE_GROUP_IX 0x000000e0 +#define _HUGEPAGE_HPTEFLAGS (_HUGEPAGE_HASHPTE | _HUGEPAGE_SECONDARY | \ + _HUGEPAGE_GROUP_IX) +#define _HUGEPAGE_RW 0x00000004 + +typedef struct {unsigned int val;} hugepte_t; +#define hugepte_val(hugepte) ((hugepte).val) +#define __hugepte(x) ((hugepte_t) { (x) } ) +#define hugepte_pfn(x) \ + ((unsigned long)(hugepte_val(x)>>HUGEPTE_SHIFT) << HUGETLB_PAGE_ORDER) +#define mk_hugepte(page,wr) __hugepte( \ + ((page_to_pfn(page)>>HUGETLB_PAGE_ORDER) << HUGEPTE_SHIFT ) \ + | (!!(wr) * _HUGEPAGE_RW) | _PMD_HUGEPAGE ) + +#define hugepte_bad(x) ( !(hugepte_val(x) & _PMD_HUGEPAGE) || \ + (hugepte_val(x) & _HUGEPAGE_BAD) ) +#define hugepte_page(x) pfn_to_page(hugepte_pfn(x)) +#define hugepte_none(x) (!(hugepte_val(x) & _HUGEPAGE_PFN)) + + +static void free_huge_page(struct page *page); +static void flush_hash_hugepage(mm_context_t context, unsigned long ea, + hugepte_t pte, int local); + +static inline unsigned int hugepte_update(hugepte_t *p, unsigned int clr, + unsigned int set) +{ + unsigned int old, tmp; + + __asm__ __volatile__( + "1: lwarx %0,0,%3 # pte_update\n\ + andc %1,%0,%4 \n\ + or %1,%1,%5 \n\ + stwcx. %1,0,%3 \n\ + bne- 1b" + : "=&r" (old), "=&r" (tmp), "=m" (*p) + : "r" (p), "r" (clr), "r" (set), "m" (*p) + : "cc" ); + return old; +} + +static inline void set_hugepte(hugepte_t *ptep, hugepte_t pte) +{ + hugepte_update(ptep, ~_HUGEPAGE_HPTEFLAGS, + hugepte_val(pte) & ~_HUGEPAGE_HPTEFLAGS); +} + +static struct page *alloc_hugetlb_page(void) +{ + int i; + struct page *page; + + spin_lock(&htlbpage_lock); + page = dequeue_huge_page(); + if (!page) { + spin_unlock(&htlbpage_lock); + return NULL; + } + + htlbpage_free--; + spin_unlock(&htlbpage_lock); + set_page_count(page, 1); + page->lru.prev = (void *)free_huge_page; + for (i = 0; i < (HPAGE_SIZE/PAGE_SIZE); ++i) + clear_highpage(&page[i]); + return page; +} + +static hugepte_t *hugepte_alloc(struct mm_struct *mm, unsigned long addr) +{ + pgd_t *pgd; + pmd_t *pmd = NULL; + + BUG_ON(!in_hugepage_area(mm->context, addr)); + + pgd = pgd_offset(mm, addr); + pmd = pmd_alloc(mm, pgd, addr); + + /* We shouldn't find a (normal) PTE page pointer here */ + BUG_ON(!pmd_none(*pmd) && !pmd_hugepage(*pmd)); + + return (hugepte_t *)pmd; +} + +static hugepte_t *hugepte_offset(struct mm_struct *mm, unsigned long addr) +{ + pgd_t *pgd; + pmd_t *pmd = NULL; + + BUG_ON(!in_hugepage_area(mm->context, addr)); + + pgd = pgd_offset(mm, addr); + pmd = pmd_offset(pgd, addr); + + /* We shouldn't find a (normal) PTE page pointer here */ + BUG_ON(!pmd_none(*pmd) && !pmd_hugepage(*pmd)); + + return (hugepte_t *)pmd; +} + +static void setup_huge_pte(struct mm_struct *mm, struct page *page, + hugepte_t *ptep, int write_access) +{ + hugepte_t entry; + int i; + + mm->rss += (HPAGE_SIZE / PAGE_SIZE); + entry = mk_hugepte(page, write_access); + for (i = 0; i < HUGEPTE_BATCH_SIZE; i++) + set_hugepte(ptep+i, entry); +} + +static void teardown_huge_pte(hugepte_t *ptep) +{ + int i; + + for (i = 0; i < HUGEPTE_BATCH_SIZE; i++) + pmd_clear((pmd_t *)(ptep+i)); +} + +/* + * This function checks for proper alignment of input addr and len parameters. + */ +int is_aligned_hugepage_range(unsigned long addr, unsigned long len) +{ + if (len & ~HPAGE_MASK) + return -EINVAL; + if (addr & ~HPAGE_MASK) + return -EINVAL; + if (! is_hugepage_only_range(addr, len)) + return -EINVAL; + return 0; +} + +static void do_slbia(void *unused) +{ + asm volatile ("isync; slbia; isync":::"memory"); +} + +/* Activate the low hpage region for 32bit processes. mmap_sem must + * be held*/ +static int open_32bit_htlbpage_range(struct mm_struct *mm) +{ + struct vm_area_struct *vma; + unsigned long addr; + + if (mm->context & CONTEXT_LOW_HPAGES) + return 0; /* The window is already open */ + + /* Check no VMAs are in the region */ + vma = find_vma(mm, TASK_HPAGE_BASE_32); + + if (vma && (vma->vm_start < TASK_HPAGE_END_32)) + return -EBUSY; + + /* Clean up any leftover PTE pages in the region */ + spin_lock(&mm->page_table_lock); + for (addr = TASK_HPAGE_BASE_32; addr < TASK_HPAGE_END_32; + addr += PMD_SIZE) { + pgd_t *pgd = pgd_offset(mm, addr); + pmd_t *pmd = pmd_offset(pgd, addr); + + if (! pmd_none(*pmd)) { + struct page *page = pmd_page(*pmd); + pte_t *pte = (pte_t *)pmd_page_kernel(*pmd); + int i; + + /* No VMAs, so there should be no PTEs, check + * just in case. */ + for (i = 0; i < PTRS_PER_PTE; i++) { + BUG_ON(! pte_none(*pte)); + pte++; + } + + pmd_clear(pmd); + pgtable_remove_rmap(page); + pte_free(page); + } + } + spin_unlock(&mm->page_table_lock); + + /* FIXME: do we need to scan for PTEs too? */ + + mm->context |= CONTEXT_LOW_HPAGES; + + /* the context change must make it to memory before the slbia, + * so that further SLB misses do the right thing. */ + mb(); + + on_each_cpu(do_slbia, NULL, 0, 1); + + return 0; +} + +int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src, + struct vm_area_struct *vma) +{ + hugepte_t *src_pte, *dst_pte, entry; + struct page *ptepage; + unsigned long addr = vma->vm_start; + unsigned long end = vma->vm_end; + + while (addr < end) { + BUG_ON(! in_hugepage_area(src->context, addr)); + BUG_ON(! in_hugepage_area(dst->context, addr)); + + dst_pte = hugepte_alloc(dst, addr); + if (!dst_pte) + return -ENOMEM; + + src_pte = hugepte_offset(src, addr); + entry = *src_pte; + + if ((addr % HPAGE_SIZE) == 0) { + /* This is the first hugepte in a batch */ + ptepage = hugepte_page(entry); + get_page(ptepage); + dst->rss += (HPAGE_SIZE / PAGE_SIZE); + } + set_hugepte(dst_pte, entry); + + + addr += PMD_SIZE; + } + return 0; +} + +int +follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, + struct page **pages, struct vm_area_struct **vmas, + unsigned long *position, int *length, int i) +{ + unsigned long vpfn, vaddr = *position; + int remainder = *length; + + WARN_ON(!is_vm_hugetlb_page(vma)); + + vpfn = vaddr/PAGE_SIZE; + while (vaddr < vma->vm_end && remainder) { + BUG_ON(!in_hugepage_area(mm->context, vaddr)); + + if (pages) { + hugepte_t *pte; + struct page *page; + + pte = hugepte_offset(mm, vaddr); + + /* hugetlb should be locked, and hence, prefaulted */ + WARN_ON(!pte || hugepte_none(*pte)); + + page = &hugepte_page(*pte)[vpfn % (HPAGE_SIZE/PAGE_SIZE)]; + + WARN_ON(!PageCompound(page)); + + get_page(page); + pages[i] = page; + } + + if (vmas) + vmas[i] = vma; + + vaddr += PAGE_SIZE; + ++vpfn; + --remainder; + ++i; + } + + *length = remainder; + *position = vaddr; + + return i; +} + +struct page * +follow_huge_addr(struct mm_struct *mm, + struct vm_area_struct *vma, unsigned long address, int write) +{ + return NULL; +} + +struct vm_area_struct *hugepage_vma(struct mm_struct *mm, unsigned long addr) +{ + return NULL; +} + +int pmd_huge(pmd_t pmd) +{ + return pmd_hugepage(pmd); +} + +struct page * +follow_huge_pmd(struct mm_struct *mm, unsigned long address, + pmd_t *pmd, int write) +{ + struct page *page; + + BUG_ON(! pmd_hugepage(*pmd)); + + page = hugepte_page(*(hugepte_t *)pmd); + if (page) { + page += ((address & ~HPAGE_MASK) >> PAGE_SHIFT); + get_page(page); + } + return page; +} + +static void free_huge_page(struct page *page) +{ + BUG_ON(page_count(page)); + BUG_ON(page->mapping); + + INIT_LIST_HEAD(&page->list); + + spin_lock(&htlbpage_lock); + enqueue_huge_page(page); + htlbpage_free++; + spin_unlock(&htlbpage_lock); +} + +void huge_page_release(struct page *page) +{ + if (!put_page_testzero(page)) + return; + + free_huge_page(page); +} + +void unmap_hugepage_range(struct vm_area_struct *vma, + unsigned long start, unsigned long end) +{ + struct mm_struct *mm = vma->vm_mm; + unsigned long addr; + hugepte_t *ptep; + struct page *page; + int local = 0; + cpumask_t tmp; + + WARN_ON(!is_vm_hugetlb_page(vma)); + BUG_ON((start % HPAGE_SIZE) != 0); + BUG_ON((end % HPAGE_SIZE) != 0); + + /* XXX are there races with checking cpu_vm_mask? - Anton */ + tmp = cpumask_of_cpu(smp_processor_id()); + if (cpus_equal(vma->vm_mm->cpu_vm_mask, tmp)) + local = 1; + + for (addr = start; addr < end; addr += HPAGE_SIZE) { + hugepte_t pte; + + BUG_ON(!in_hugepage_area(mm->context, addr)); + + ptep = hugepte_offset(mm, addr); + if (!ptep || hugepte_none(*ptep)) + continue; + + pte = *ptep; + page = hugepte_page(pte); + teardown_huge_pte(ptep); + + if (hugepte_val(pte) & _HUGEPAGE_HASHPTE) + flush_hash_hugepage(mm->context, addr, + pte, local); + + huge_page_release(page); + } + + mm->rss -= (end - start) >> PAGE_SHIFT; +} + +void zap_hugepage_range(struct vm_area_struct *vma, + unsigned long start, unsigned long length) +{ + struct mm_struct *mm = vma->vm_mm; + + spin_lock(&mm->page_table_lock); + unmap_hugepage_range(vma, start, start + length); + spin_unlock(&mm->page_table_lock); +} + +int hugetlb_prefault(struct address_space *mapping, struct vm_area_struct *vma) +{ + struct mm_struct *mm = current->mm; + unsigned long addr; + int ret = 0; + + WARN_ON(!is_vm_hugetlb_page(vma)); + BUG_ON((vma->vm_start % HPAGE_SIZE) != 0); + BUG_ON((vma->vm_end % HPAGE_SIZE) != 0); + + spin_lock(&mm->page_table_lock); + for (addr = vma->vm_start; addr < vma->vm_end; addr += HPAGE_SIZE) { + unsigned long idx; + hugepte_t *pte = hugepte_alloc(mm, addr); + struct page *page; + + BUG_ON(!in_hugepage_area(mm->context, addr)); + + if (!pte) { + ret = -ENOMEM; + goto out; + } + if (!hugepte_none(*pte)) + continue; + + idx = ((addr - vma->vm_start) >> HPAGE_SHIFT) + + (vma->vm_pgoff >> (HPAGE_SHIFT - PAGE_SHIFT)); + page = find_get_page(mapping, idx); + if (!page) { + page = alloc_hugetlb_page(); + if (!page) { + ret = -ENOMEM; + goto out; + } + ret = add_to_page_cache(page, mapping, idx, GFP_ATOMIC); + unlock_page(page); + if (ret) { + free_huge_page(page); + goto out; + } + } + setup_huge_pte(mm, page, pte, vma->vm_flags & VM_WRITE); + } +out: + spin_unlock(&mm->page_table_lock); + return ret; +} + +/* Because we have an exclusive hugepage region which lies within the + * normal user address space, we have to take special measures to make + * non-huge mmap()s evade the hugepage reserved region. */ +unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, + unsigned long len, unsigned long pgoff, + unsigned long flags) +{ + struct mm_struct *mm = current->mm; + struct vm_area_struct *vma; + unsigned long start_addr; + + if (len > TASK_SIZE) + return -ENOMEM; + + if (addr) { + addr = PAGE_ALIGN(addr); + vma = find_vma(mm, addr); + if (TASK_SIZE - len >= addr && + (!vma || addr + len <= vma->vm_start) && + !is_hugepage_only_range(addr,len)) + return addr; + } + start_addr = addr = mm->free_area_cache; + +full_search: + for (vma = find_vma(mm, addr); ; vma = vma->vm_next) { + /* At this point: (!vma || addr < vma->vm_end). */ + if (TASK_SIZE - len < addr) { + /* + * Start a new search - just in case we missed + * some holes. + */ + if (start_addr != TASK_UNMAPPED_BASE) { + start_addr = addr = TASK_UNMAPPED_BASE; + goto full_search; + } + return -ENOMEM; + } + if (!vma || addr + len <= vma->vm_start) { + if (is_hugepage_only_range(addr, len)) { + if (addr < TASK_HPAGE_END_32) + addr = TASK_HPAGE_END_32; + else + addr = TASK_HPAGE_END; + + continue; + } + /* + * Remember the place where we stopped the search: + */ + mm->free_area_cache = addr + len; + return addr; + } + addr = vma->vm_end; + } +} + + +unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr, + unsigned long len, unsigned long pgoff, + unsigned long flags) +{ + struct vm_area_struct *vma; + unsigned long base, end; + + if (len & ~HPAGE_MASK) + return -EINVAL; + + if (!(cur_cpu_spec->cpu_features & CPU_FTR_16M_PAGE)) + return -EINVAL; + + if (test_thread_flag(TIF_32BIT)) { + int err; + + err = open_32bit_htlbpage_range(current->mm); + if (err) + return err; /* Should this just be EINVAL? */ + + base = TASK_HPAGE_BASE_32; + end = TASK_HPAGE_END_32; + } else { + base = TASK_HPAGE_BASE; + end = TASK_HPAGE_END; + } + + if (!in_hugepage_area(current->mm->context, addr) + || (addr & (HPAGE_SIZE - 1))) + addr = base; + + for (vma = find_vma(current->mm, addr); ; vma = vma->vm_next) { + /* At this point: (!vma || addr < vma->vm_end). */ + if (addr + len > end) + return -ENOMEM; + if (!vma || (addr + len) <= vma->vm_start) + return addr; + addr = ALIGN(vma->vm_end, HPAGE_SIZE); + + /* Because we're in an exclusively hugepage region, + * this alignment shouldn't have skipped over any + * other vmas */ + } +} + +static inline unsigned long computeHugeHptePP(unsigned int hugepte) +{ + unsigned long flags = 0x2; + + if (! (hugepte & _HUGEPAGE_RW)) + flags |= 0x1; + return flags; +} + +int hash_huge_page(struct mm_struct *mm, unsigned long access, + unsigned long ea, unsigned long vsid, int local) +{ + hugepte_t *ptep; + unsigned long va, vpn; + int is_write; + hugepte_t old_pte, new_pte; + unsigned long hpteflags, prpn; + long slot; + + /* Is this for us? */ + if (!in_hugepage_area(mm->context, ea)) + return -1; + + ea &= ~(HPAGE_SIZE-1); + + /* We have to find the first hugepte in the batch, since + * that's the one that will store the HPTE flags */ + ptep = hugepte_offset(mm, ea); + + /* Search the Linux page table for a match with va */ + va = (vsid << 28) | (ea & 0x0fffffff); + vpn = va >> HPAGE_SHIFT; + + /* + * If no pte found or not present, send the problem up to + * do_page_fault + */ + if (unlikely(!ptep || hugepte_none(*ptep))) + return 1; + + BUG_ON(hugepte_bad(*ptep)); + + /* + * Check the user's access rights to the page. If access should be + * prevented then send the problem up to do_page_fault. + */ + is_write = access & _PAGE_RW; + if (unlikely(is_write && !(hugepte_val(*ptep) & _HUGEPAGE_RW))) + return 1; + + /* + * At this point, we have a pte (old_pte) which can be used to build + * or update an HPTE. There are 2 cases: + * + * 1. There is a valid (present) pte with no associated HPTE (this is + * the most common case) + * 2. There is a valid (present) pte with an associated HPTE. The + * current values of the pp bits in the HPTE prevent access + * because we are doing software DIRTY bit management and the + * page is currently not DIRTY. + */ + + old_pte = *ptep; + new_pte = old_pte; + + hpteflags = computeHugeHptePP(hugepte_val(new_pte)); + + /* Check if pte already has an hpte (case 2) */ + if (unlikely(hugepte_val(old_pte) & _HUGEPAGE_HASHPTE)) { + /* There MIGHT be an HPTE for this pte */ + unsigned long hash, slot; + + hash = hpt_hash(vpn, 1); + if (hugepte_val(old_pte) & _HUGEPAGE_SECONDARY) + hash = ~hash; + slot = (hash & htab_data.htab_hash_mask) * HPTES_PER_GROUP; + slot += (hugepte_val(old_pte) & _HUGEPAGE_GROUP_IX) >> 5; + + if (ppc_md.hpte_updatepp(slot, hpteflags, va, 1, local) == -1) + hugepte_val(old_pte) &= ~_HUGEPAGE_HPTEFLAGS; + } + + if (likely(!(hugepte_val(old_pte) & _HUGEPAGE_HASHPTE))) { + unsigned long hash = hpt_hash(vpn, 1); + unsigned long hpte_group; + + prpn = hugepte_pfn(old_pte); + +repeat: + hpte_group = ((hash & htab_data.htab_hash_mask) * + HPTES_PER_GROUP) & ~0x7UL; + + /* Update the linux pte with the HPTE slot */ + hugepte_val(new_pte) &= ~_HUGEPAGE_HPTEFLAGS; + hugepte_val(new_pte) |= _HUGEPAGE_HASHPTE; + + /* Add in WIMG bits */ + /* XXX We should store these in the pte */ + hpteflags |= _PAGE_COHERENT; + + slot = ppc_md.hpte_insert(hpte_group, va, prpn, 0, + hpteflags, 0, 1); + + /* Primary is full, try the secondary */ + if (unlikely(slot == -1)) { + hugepte_val(new_pte) |= _HUGEPAGE_SECONDARY; + hpte_group = ((~hash & htab_data.htab_hash_mask) * + HPTES_PER_GROUP) & ~0x7UL; + slot = ppc_md.hpte_insert(hpte_group, va, prpn, + 1, hpteflags, 0, 1); + if (slot == -1) { + if (mftb() & 0x1) + hpte_group = ((hash & htab_data.htab_hash_mask) * HPTES_PER_GROUP) & ~0x7UL; + + ppc_md.hpte_remove(hpte_group); + goto repeat; + } + } + + if (unlikely(slot == -2)) + panic("hash_huge_page: pte_insert failed\n"); + + hugepte_val(new_pte) |= (slot<<5) & _HUGEPAGE_GROUP_IX; + + /* + * No need to use ldarx/stdcx here because all who + * might be updating the pte will hold the + * page_table_lock or the hash_table_lock + * (we hold both) + */ + *ptep = new_pte; + } + + return 0; +} + +static void flush_hash_hugepage(mm_context_t context, unsigned long ea, + hugepte_t pte, int local) +{ + unsigned long vsid, vpn, va, hash, secondary, slot; + + BUG_ON(hugepte_bad(pte)); + BUG_ON(!in_hugepage_area(context, ea)); + + vsid = get_vsid(context, ea); + + va = (vsid << 28) | (ea & 0x0fffffff); + vpn = va >> LARGE_PAGE_SHIFT; + hash = hpt_hash(vpn, 1); + secondary = !!(hugepte_val(pte) & _HUGEPAGE_SECONDARY); + if (secondary) + hash = ~hash; + slot = (hash & htab_data.htab_hash_mask) * HPTES_PER_GROUP; + slot += (hugepte_val(pte) & _HUGEPAGE_GROUP_IX) >> 5; + + ppc_md.hpte_invalidate(slot, va, 1, local); +} + +static void split_and_free_hugepage(struct page *page) +{ + int j; + struct page *map; + + map = page; + htlbpage_total--; + for (j = 0; j < (HPAGE_SIZE / PAGE_SIZE); j++) { + map->flags &= ~(1 << PG_locked | 1 << PG_error | 1 << PG_referenced | + 1 << PG_dirty | 1 << PG_active | 1 << PG_reserved | + 1 << PG_private | 1<< PG_writeback); + set_page_count(map, 0); + map++; + } + set_page_count(page, 1); + __free_pages(page, HUGETLB_PAGE_ORDER); +} + +int set_hugetlb_mem_size(int count) +{ + int lcount; + struct page *page; + + if (!(cur_cpu_spec->cpu_features & CPU_FTR_16M_PAGE)) + return 0; + + if (count < 0) + lcount = count; + else + lcount = count - htlbpage_total; + + if (lcount == 0) + return htlbpage_total; + if (lcount > 0) { /* Increase the mem size. */ + while (lcount--) { + page = alloc_fresh_huge_page(); + if (page == NULL) + break; + spin_lock(&htlbpage_lock); + enqueue_huge_page(page); + htlbpage_free++; + htlbpage_total++; + spin_unlock(&htlbpage_lock); + } + return htlbpage_total; + } + /* Shrink the memory size. */ + while (lcount++) { + page = alloc_hugetlb_page(); + if (page == NULL) + break; + spin_lock(&htlbpage_lock); + split_and_free_hugepage(page); + spin_unlock(&htlbpage_lock); + } + return htlbpage_total; +} + +int hugetlb_sysctl_handler(ctl_table *table, int write, + struct file *file, void *buffer, size_t *length) +{ + proc_dointvec(table, write, file, buffer, length); + htlbpage_max = set_hugetlb_mem_size(htlbpage_max); + return 0; +} + +static int __init hugetlb_setup(char *s) +{ + if (sscanf(s, "%d", &htlbpage_max) <= 0) + htlbpage_max = 0; + return 1; +} +__setup("hugepages=", hugetlb_setup); + +static int __init hugetlb_init(void) +{ + int i; + struct page *page; + + if (cur_cpu_spec->cpu_features & CPU_FTR_16M_PAGE) { + for (i = 0; i < MAX_NUMNODES; ++i) + INIT_LIST_HEAD(&hugepage_freelists[i]); + + for (i = 0; i < htlbpage_max; ++i) { + page = alloc_fresh_huge_page(); + if (!page) + break; + spin_lock(&htlbpage_lock); + enqueue_huge_page(page); + spin_unlock(&htlbpage_lock); + } + htlbpage_max = htlbpage_free = htlbpage_total = i; + printk("Total HugeTLB memory allocated, %d\n", htlbpage_free); + } else { + htlbpage_max = 0; + printk("CPU does not support HugeTLB\n"); + } + + return 0; +} +module_init(hugetlb_init); + +int hugetlb_report_meminfo(char *buf) +{ + return sprintf(buf, + "HugePages_Total: %5d\n" + "HugePages_Free: %5d\n" + "Hugepagesize: %5lu kB\n", + htlbpage_total, + htlbpage_free, + HPAGE_SIZE/1024); +} + +/* This is advisory only, so we can get away with accesing + * htlbpage_free without taking the lock. */ +int is_hugepage_mem_enough(size_t size) +{ + return (size + ~HPAGE_MASK)/HPAGE_SIZE <= htlbpage_free; +} + +/* + * We cannot handle pagefaults against hugetlb pages at all. They cause + * handle_mm_fault() to try to instantiate regular-sized pages in the + * hugegpage VMA. do_page_fault() is supposed to trap this, so BUG is we get + * this far. + */ +static struct page *hugetlb_nopage(struct vm_area_struct *vma, + unsigned long address, int unused) +{ + BUG(); + return NULL; +} + +struct vm_operations_struct hugetlb_vm_ops = { + .nopage = hugetlb_nopage, +}; diff -Nru a/arch/ppc64/mm/init.c b/arch/ppc64/mm/init.c --- a/arch/ppc64/mm/init.c Mon Sep 22 00:30:22 2003 +++ b/arch/ppc64/mm/init.c Mon Sep 22 00:30:22 2003 @@ -290,7 +290,7 @@ if (!pgd_none(*pgd)) { pmd = pmd_offset(pgd, vmaddr); - if (!pmd_none(*pmd)) { + if (pmd_present(*pmd)) { ptep = pte_offset_kernel(pmd, vmaddr); /* Check if HPTE might exist and flush it if so */ pte = __pte(pte_update(ptep, _PAGE_HPTEFLAGS, 0)); @@ -298,6 +298,7 @@ flush_hash_page(context, vmaddr, pte, local); } } + WARN_ON(pmd_hugepage(*pmd)); } } @@ -348,7 +349,7 @@ pmd_end = (start + PMD_SIZE) & PMD_MASK; if (pmd_end > end) pmd_end = end; - if (!pmd_none(*pmd)) { + if (pmd_present(*pmd)) { ptep = pte_offset_kernel(pmd, start); do { if (pte_val(*ptep) & _PAGE_HASHPTE) { @@ -367,6 +368,7 @@ ++ptep; } while (start < pmd_end); } else { + WARN_ON(pmd_hugepage(*pmd)); start = pmd_end; } ++pmd; @@ -540,8 +542,6 @@ } module_init(setup_kcore); -void initialize_paca_hardware_interrupt_stack(void); - void __init mem_init(void) { #ifndef CONFIG_DISCONTIGMEM @@ -607,9 +607,6 @@ PAGE_OFFSET, (unsigned long)__va(lmb_end_of_DRAM())); #endif mem_init_done = 1; - - /* set the last page of each hardware interrupt stack to be protected */ - initialize_paca_hardware_interrupt_stack(); #ifdef CONFIG_PPC_ISERIES create_virtual_bus_tce_table(); diff -Nru a/arch/ppc64/mm/numa.c b/arch/ppc64/mm/numa.c --- a/arch/ppc64/mm/numa.c Mon Sep 22 00:30:23 2003 +++ b/arch/ppc64/mm/numa.c Mon Sep 22 00:30:23 2003 @@ -24,18 +24,21 @@ int numa_cpu_lookup_table[NR_CPUS] = { [ 0 ... (NR_CPUS - 1)] = -1}; int numa_memory_lookup_table[MAX_MEMORY >> MEMORY_INCREMENT_SHIFT] = { [ 0 ... ((MAX_MEMORY >> MEMORY_INCREMENT_SHIFT) - 1)] = -1}; -unsigned long numa_cpumask_lookup_table[MAX_NUMNODES]; +cpumask_t numa_cpumask_lookup_table[MAX_NUMNODES]; int nr_cpus_in_node[MAX_NUMNODES] = { [0 ... (MAX_NUMNODES -1)] = 0}; struct pglist_data node_data[MAX_NUMNODES]; bootmem_data_t plat_node_bdata[MAX_NUMNODES]; +EXPORT_SYMBOL(node_data); +EXPORT_SYMBOL(numa_memory_lookup_table); + static inline void map_cpu_to_node(int cpu, int node) { dbg("cpu %d maps to domain %d\n", cpu, node); numa_cpu_lookup_table[cpu] = node; - if (!(numa_cpumask_lookup_table[node] & 1UL << cpu)) { - numa_cpumask_lookup_table[node] |= 1UL << cpu; + if (!(cpu_isset(cpu, numa_cpumask_lookup_table[node]))) { + cpu_set(cpu, numa_cpumask_lookup_table[node]); nr_cpus_in_node[node]++; } } diff -Nru a/arch/ppc64/xmon/xmon.c b/arch/ppc64/xmon/xmon.c --- a/arch/ppc64/xmon/xmon.c Mon Sep 22 00:30:24 2003 +++ b/arch/ppc64/xmon/xmon.c Mon Sep 22 00:30:24 2003 @@ -15,6 +15,8 @@ #include #include #include +#include + #include #include #include @@ -27,6 +29,7 @@ #include #include #include + #include "nonstdio.h" #include "privinst.h" @@ -59,7 +62,6 @@ unsigned instr; unsigned long count; unsigned char enabled; - char funcname[64]; /* function name for humans */ }; #define NBPTS 16 @@ -79,14 +81,9 @@ static int bsesc(void); static void dump(void); static void prdump(unsigned long, long); -#ifdef __MWERKS__ -static void prndump(unsigned, int); -static int nvreadb(unsigned); -#endif static int ppc_inst_dump(unsigned long, long); void print_address(unsigned long); static int getsp(void); -static void dump_hash_table(void); static void backtrace(struct pt_regs *); static void excprint(struct pt_regs *); static void prregs(struct pt_regs *); @@ -106,7 +103,6 @@ static unsigned long read_spr(int); static void write_spr(int, unsigned long); static void super_regs(void); -static void print_sysmap(void); static void remove_bpts(void); static void insert_bpts(void); static struct bpt *at_breakpoint(unsigned long pc); @@ -158,7 +154,6 @@ dd dump double values\n\ e print exception information\n\ f flush cache\n\ - h dump hash table\n\ m examine/change memory\n\ mm move a block of memory\n\ ms set a block of memory\n\ @@ -183,6 +178,13 @@ static struct pt_regs *xmon_regs[NR_CPUS]; +void __xmon_print_symbol(const char *fmt, unsigned long address); +#define xmon_print_symbol(fmt, addr) \ +do { \ + __check_printsym_format(fmt, ""); \ + __xmon_print_symbol(fmt, addr); \ +} while(0) + /* * Stuff for reading and writing memory safely */ @@ -211,42 +213,6 @@ no functions have been called from the current function. */ -/* - A traceback table typically follows each function. - The find_tb_table() func will fill in this struct. Note that the struct - is not an exact match with the encoded table defined by the ABI. It is - defined here more for programming convenience. - */ -struct tbtable { - unsigned long flags; /* flags: */ -#define TBTAB_FLAGSGLOBALLINK (1L<<47) -#define TBTAB_FLAGSISEPROL (1L<<46) -#define TBTAB_FLAGSHASTBOFF (1L<<45) -#define TBTAB_FLAGSINTPROC (1L<<44) -#define TBTAB_FLAGSHASCTL (1L<<43) -#define TBTAB_FLAGSTOCLESS (1L<<42) -#define TBTAB_FLAGSFPPRESENT (1L<<41) -#define TBTAB_FLAGSNAMEPRESENT (1L<<38) -#define TBTAB_FLAGSUSESALLOCA (1L<<37) -#define TBTAB_FLAGSSAVESCR (1L<<33) -#define TBTAB_FLAGSSAVESLR (1L<<32) -#define TBTAB_FLAGSSTORESBC (1L<<31) -#define TBTAB_FLAGSFIXUP (1L<<30) -#define TBTAB_FLAGSPARMSONSTK (1L<<0) - unsigned char fp_saved; /* num fp regs saved f(32-n)..f31 */ - unsigned char gpr_saved; /* num gpr's saved */ - unsigned char fixedparms; /* num fixed point parms */ - unsigned char floatparms; /* num float parms */ - unsigned char parminfo[32]; /* types of args. null terminated */ -#define TBTAB_PARMFIXED 1 -#define TBTAB_PARMSFLOAT 2 -#define TBTAB_PARMDFLOAT 3 - unsigned int tb_offset; /* offset from start of func */ - unsigned long funcstart; /* addr of start of function */ - char name[64]; /* name of function (null terminated)*/ -}; -static int find_tb_table(unsigned long codeaddr, struct tbtable *tab); - #define SURVEILLANCE_TOKEN 9000 static inline void disable_surveillance(void) @@ -304,8 +270,7 @@ std 29,232(%0)\n\ std 30,240(%0)\n\ std 31,248(%0)" : : "b" (®s)); - /* Fetch the link reg for this stack frame. - NOTE: the prev printf fills in the lr. */ + regs.nip = regs.link = ((unsigned long *)(regs.gpr[1]))[2]; regs.msr = get_msr(); regs.ctr = get_ctr(); @@ -380,7 +345,9 @@ xmon_trace[smp_processor_id()] = BRSTEP; regs->msr |= MSR_SE; } else { - printf("Stopped at breakpoint %x (%lx %s)\n", (bp - bpts)+1, bp->address, bp->funcname); + printf("Stopped at breakpoint %x (%lx ", (bp - bpts) + 1, + bp->address); + xmon_print_symbol("%s)\n", bp->address); xmon(regs); } return 1; @@ -578,9 +545,6 @@ else excprint(excp); break; - case 'M': - print_sysmap(); - break; case 'S': super_regs(); break; @@ -590,9 +554,6 @@ case 'f': cacheflush(); break; - case 'h': - dump_hash_table(); - break; case 's': case 'x': case EOF: @@ -773,7 +734,6 @@ unsigned long a; int mode, i; struct bpt *bp; - struct tbtable tab; cmd = inchar(); switch (cmd) { @@ -829,7 +789,9 @@ if (bp == 0) { printf("No breakpoint at %x\n", a); } else { - printf("Cleared breakpoint %x (%lx %s)\n", (bp - bpts)+1, bp->address, bp->funcname); + printf("Cleared breakpoint %x (%lx ", + (bp - bpts) + 1, bp->address); + xmon_print_symbol("%s)\n", bp->address); bp->enabled = 0; } } @@ -863,8 +825,11 @@ printf(" inst %.16lx %8x\n", iabr.address & ~3, iabr.count); for (bp = bpts, bpnum = 1; bp < &bpts[NBPTS]; ++bp, ++bpnum) - if (bp->enabled) - printf("%2x trap %.16lx %8x %s\n", bpnum, bp->address, bp->count, bp->funcname); + if (bp->enabled) { + printf("%2x trap %.16lx %8x ", + bpnum, bp->address, bp->count); + xmon_print_symbol("%s\n", bp->address); + } break; } bp = at_breakpoint(a); @@ -881,14 +846,9 @@ bp->address = a; bp->count = 0; scanhex(&bp->count); - /* Find the function name just once. */ - bp->funcname[0] = '\0'; - if (find_tb_table(bp->address, &tab) && tab.name[0]) { - /* Got a nice name for it. */ - int delta = bp->address - tab.funcstart; - sprintf(bp->funcname, "%s+0x%x", tab.name, delta); - } - printf("Set breakpoint %2x trap %.16lx %8x %s\n", (bp-bpts)+1, bp->address, bp->count, bp->funcname); + printf("Set breakpoint %2x trap %.16lx %8x ", (bp-bpts) + 1, + bp->address, bp->count); + xmon_print_symbol("%s\n", bp->address); break; } } @@ -925,7 +885,6 @@ unsigned long lr; unsigned long stack[3]; struct pt_regs regs; - struct tbtable tab; int framecount; char *funcname; /* declare these as raw ptrs so we don't get func descriptors */ @@ -971,17 +930,11 @@ break; printf("exception: %lx %s regs %lx\n", regs.trap, getvecname(regs.trap), sp+112); printf(" %.16lx", regs.nip); - if ((regs.nip & 0xffffffff00000000UL) && - find_tb_table(regs.nip, &tab)) { - int delta = regs.nip-tab.funcstart; - if (delta < 0) - printf(" "); - else - printf(" %s+0x%x", tab.name, delta); - } + if (regs.nip & 0xffffffff00000000UL) + xmon_print_symbol(" %s", regs.nip); printf("\n"); if (regs.gpr[1] < sp) { - printf("\n", regs.gpr[1]); + printf("\n", regs.gpr[1]); break; } @@ -989,13 +942,8 @@ if (mread(sp, stack, sizeof(stack)) != sizeof(stack)) break; } else { - if (stack[2] && find_tb_table(stack[2], &tab)) { - int delta = stack[2]-tab.funcstart; - if (delta < 0) - printf(" "); - else - printf(" %s+0x%x", tab.name, delta); - } + if (stack[2]) + xmon_print_symbol(" %s", stack[2]); printf("\n"); } if (stack[0] && stack[0] <= sp) { @@ -1024,8 +972,6 @@ void excprint(struct pt_regs *fp) { - struct task_struct *c; - struct tbtable tab; unsigned long flags; spin_lock_irqsave(&exception_print_lock, flags); @@ -1034,21 +980,13 @@ printf("cpu %d: ", smp_processor_id()); #endif /* CONFIG_SMP */ - printf("Vector: %lx %s at [%lx]\n", fp->trap, getvecname(fp->trap), fp); + printf("Vector: %lx %s at [%lx]\n", fp->trap, getvecname(fp->trap), fp); printf(" pc: %lx", fp->nip); - if (find_tb_table(fp->nip, &tab) && tab.name[0]) { - /* Got a nice name for it */ - int delta = fp->nip - tab.funcstart; - printf(" (%s+0x%x)", tab.name, delta); - } - printf("\n"); + xmon_print_symbol(" (%s)\n", fp->nip); + printf(" lr: %lx", fp->link); - if (find_tb_table(fp->link, &tab) && tab.name[0]) { - /* Got a nice name for it */ - int delta = fp->link - tab.funcstart; - printf(" (%s+0x%x)", tab.name, delta); - } - printf("\n"); + xmon_print_symbol(" (%s)\n", fp->link); + printf(" sp: %lx\n", fp->gpr[1]); printf(" msr: %lx\n", fp->msr); @@ -1057,13 +995,11 @@ printf(" dsisr: %lx\n", fp->dsisr); } - /* XXX: need to copy current or we die. Why? */ - c = current; - printf(" current = 0x%lx\n", c); + printf(" current = 0x%lx\n", current); printf(" paca = 0x%lx\n", get_paca()); - if (c) { - printf(" current = %lx, pid = %ld, comm = %s\n", - c, c->pid, c->comm); + if (current) { + printf(" pid = %ld, comm = %s\n", + current->pid, current->comm); } spin_unlock_irqrestore(&exception_print_lock, flags); @@ -1153,14 +1089,6 @@ extern char dec_exc; void -print_sysmap(void) -{ - extern char *sysmap; - if ( sysmap ) - printf("System.map: \n%s", sysmap); -} - -void super_regs() { int i, cmd; @@ -1228,152 +1156,6 @@ scannl(); } -#ifndef CONFIG_PPC64BRIDGE -static void -dump_hash_table_seg(unsigned seg, unsigned start, unsigned end) -{ - extern void *Hash; - extern unsigned long Hash_size; - unsigned *htab = Hash; - unsigned hsize = Hash_size; - unsigned v, hmask, va, last_va; - int found, last_found, i; - unsigned *hg, w1, last_w2, last_va0; - - last_found = 0; - hmask = hsize / 64 - 1; - va = start; - start = (start >> 12) & 0xffff; - end = (end >> 12) & 0xffff; - for (v = start; v < end; ++v) { - found = 0; - hg = htab + (((v ^ seg) & hmask) * 16); - w1 = 0x80000000 | (seg << 7) | (v >> 10); - for (i = 0; i < 8; ++i, hg += 2) { - if (*hg == w1) { - found = 1; - break; - } - } - if (!found) { - w1 ^= 0x40; - hg = htab + ((~(v ^ seg) & hmask) * 16); - for (i = 0; i < 8; ++i, hg += 2) { - if (*hg == w1) { - found = 1; - break; - } - } - } - if (!(last_found && found && (hg[1] & ~0x180) == last_w2 + 4096)) { - if (last_found) { - if (last_va != last_va0) - printf(" ... %x", last_va); - printf("\n"); - } - if (found) { - printf("%x to %x", va, hg[1]); - last_va0 = va; - } - last_found = found; - } - if (found) { - last_w2 = hg[1] & ~0x180; - last_va = va; - } - va += 4096; - } - if (last_found) - printf(" ... %x\n", last_va); -} - -#else /* CONFIG_PPC64BRIDGE */ -static void -dump_hash_table_seg(unsigned seg, unsigned start, unsigned end) -{ - extern void *Hash; - extern unsigned long Hash_size; - unsigned *htab = Hash; - unsigned hsize = Hash_size; - unsigned v, hmask, va, last_va; - int found, last_found, i; - unsigned *hg, w1, last_w2, last_va0; - - last_found = 0; - hmask = hsize / 128 - 1; - va = start; - start = (start >> 12) & 0xffff; - end = (end >> 12) & 0xffff; - for (v = start; v < end; ++v) { - found = 0; - hg = htab + (((v ^ seg) & hmask) * 32); - w1 = 1 | (seg << 12) | ((v & 0xf800) >> 4); - for (i = 0; i < 8; ++i, hg += 4) { - if (hg[1] == w1) { - found = 1; - break; - } - } - if (!found) { - w1 ^= 2; - hg = htab + ((~(v ^ seg) & hmask) * 32); - for (i = 0; i < 8; ++i, hg += 4) { - if (hg[1] == w1) { - found = 1; - break; - } - } - } - if (!(last_found && found && (hg[3] & ~0x180) == last_w2 + 4096)) { - if (last_found) { - if (last_va != last_va0) - printf(" ... %x", last_va); - printf("\n"); - } - if (found) { - printf("%x to %x", va, hg[3]); - last_va0 = va; - } - last_found = found; - } - if (found) { - last_w2 = hg[3] & ~0x180; - last_va = va; - } - va += 4096; - } - if (last_found) - printf(" ... %x\n", last_va); -} -#endif /* CONFIG_PPC64BRIDGE */ - -static unsigned long hash_ctx; -static unsigned long hash_start; -static unsigned long hash_end; - -static void -dump_hash_table() -{ - int seg; - unsigned seg_start, seg_end; - - hash_ctx = 0; - hash_start = 0; - hash_end = 0xfffff000; - scanhex(&hash_ctx); - scanhex(&hash_start); - scanhex(&hash_end); - printf("Mappings for context %x\n", hash_ctx); - seg_start = hash_start; - for (seg = hash_start >> 28; seg <= hash_end >> 28; ++seg) { - seg_end = (seg << 28) | 0x0ffff000; - if (seg_end > hash_end) - seg_end = hash_end; - dump_hash_table_seg((hash_ctx << 4) + seg, seg_start, seg_end); - seg_start = seg_end + 0x1000; - } -} - int mread(unsigned long adrs, void *buf, int size) { @@ -2073,111 +1855,52 @@ lineptr = str; } - -/* Starting at codeaddr scan forward for a tbtable and fill in the - given table. Return non-zero if successful at doing something. - */ -static int -find_tb_table(unsigned long codeaddr, struct tbtable *tab) +/* xmon version of __print_symbol */ +void __xmon_print_symbol(const char *fmt, unsigned long address) { - unsigned long codeaddr_max; - unsigned long tbtab_start; - int nr; - int instr; - int num_parms; + char *modname; + const char *name; + unsigned long offset, size; + char namebuf[128]; - /* don't look for traceback table in userspace */ - if (codeaddr < PAGE_OFFSET) - return 0; + if (setjmp(bus_error_jmp) == 0) { + debugger_fault_handler = handle_fault; + sync(); + name = kallsyms_lookup(address, &size, &offset, &modname, + namebuf); + sync(); + /* wait a little while to see if we get a machine check */ + __delay(200); + } else { + name = "symbol lookup failed"; + } - if (tab == NULL) - return 0; - memset(tab, 0, sizeof(tab)); + debugger_fault_handler = 0; - /* Scan instructions starting at codeaddr for 128k max */ - for (codeaddr_max = codeaddr + 128*1024*4; - codeaddr < codeaddr_max; - codeaddr += 4) { - nr = mread(codeaddr, &instr, 4); - if (nr != 4) - return 0; /* Bad read. Give up promptly. */ - if (instr == 0) { - /* table should follow. */ - int version; - unsigned long flags; - tbtab_start = codeaddr; /* save it to compute func start addr */ - codeaddr += 4; - nr = mread(codeaddr, &flags, 8); - if (nr != 8) - return 0; /* Bad read or no tb table. */ - tab->flags = flags; - version = (flags >> 56) & 0xff; - if (version != 0) - continue; /* No tb table here. */ - /* Now, like the version, some of the flags are values - that are more conveniently extracted... */ - tab->fp_saved = (flags >> 24) & 0x3f; - tab->gpr_saved = (flags >> 16) & 0x3f; - tab->fixedparms = (flags >> 8) & 0xff; - tab->floatparms = (flags >> 1) & 0x7f; - codeaddr += 8; - num_parms = tab->fixedparms + tab->floatparms; - if (num_parms) { - unsigned int parminfo; - int parm; - if (num_parms > 32) - return 1; /* incomplete */ - nr = mread(codeaddr, &parminfo, 4); - if (nr != 4) - return 1; /* incomplete */ - /* decode parminfo...32 bits. - A zero means fixed. A one means float and the - following bit determines single (0) or double (1). - */ - for (parm = 0; parm < num_parms; parm++) { - if (parminfo & 0x80000000) { - parminfo <<= 1; - if (parminfo & 0x80000000) - tab->parminfo[parm] = TBTAB_PARMDFLOAT; - else - tab->parminfo[parm] = TBTAB_PARMSFLOAT; - } else { - tab->parminfo[parm] = TBTAB_PARMFIXED; - } - parminfo <<= 1; - } - codeaddr += 4; - } - if (flags & TBTAB_FLAGSHASTBOFF) { - nr = mread(codeaddr, &tab->tb_offset, 4); - if (nr != 4) - return 1; /* incomplete */ - if (tab->tb_offset > 0) { - tab->funcstart = tbtab_start - tab->tb_offset; - } - codeaddr += 4; - } - /* hand_mask appears to be always be omitted. */ - if (flags & TBTAB_FLAGSHASCTL) { - /* Assume this will never happen for C or asm */ - return 1; /* incomplete */ - } - if (flags & TBTAB_FLAGSNAMEPRESENT) { - short namlen; - nr = mread(codeaddr, &namlen, 2); - if (nr != 2) - return 1; /* incomplete */ - if (namlen >= sizeof(tab->name)) - namlen = sizeof(tab->name)-1; - codeaddr += 2; - nr = mread(codeaddr, tab->name, namlen); - tab->name[namlen] = '\0'; - codeaddr += namlen; - } - return 1; - } + if (!name) { + char addrstr[sizeof("0x%lx") + (BITS_PER_LONG*3/10)]; + + sprintf(addrstr, "0x%lx", address); + printf(fmt, addrstr); + return; + } + + if (modname) { + /* This is pretty small. */ + char buffer[sizeof("%s+%#lx/%#lx [%s]") + + strlen(name) + 2*(BITS_PER_LONG*3/10) + + strlen(modname)]; + + sprintf(buffer, "%s+%#lx/%#lx [%s]", + name, offset, size, modname); + printf(fmt, buffer); + } else { + char buffer[sizeof("%s+%#lx/%#lx") + + strlen(name) + 2*(BITS_PER_LONG*3/10)]; + + sprintf(buffer, "%s+%#lx/%#lx", name, offset, size); + printf(fmt, buffer); } - return 0; /* hit max...sorry. */ } void diff -Nru a/arch/sh/boot/compressed/misc.c b/arch/sh/boot/compressed/misc.c --- a/arch/sh/boot/compressed/misc.c Mon Sep 22 00:30:19 2003 +++ b/arch/sh/boot/compressed/misc.c Mon Sep 22 00:30:19 2003 @@ -105,8 +105,8 @@ { void *p; - if (size <0) error("Malloc error\n"); - if (free_mem_ptr == 0) error("Memory error\n"); + if (size <0) error("Malloc error"); + if (free_mem_ptr == 0) error("Memory error"); free_mem_ptr = (free_mem_ptr + 3) & ~3; /* Align */ @@ -114,7 +114,7 @@ free_mem_ptr += size; if (free_mem_ptr >= free_mem_end_ptr) - error("\nOut of memory\n"); + error("Out of memory"); return p; } @@ -180,7 +180,7 @@ static int fill_inbuf(void) { if (insize != 0) { - error("ran out of input data\n"); + error("ran out of input data"); } inbuf = input_data; diff -Nru a/arch/sparc/boot/btfixupprep.c b/arch/sparc/boot/btfixupprep.c --- a/arch/sparc/boot/btfixupprep.c Mon Sep 22 00:30:24 2003 +++ b/arch/sparc/boot/btfixupprep.c Mon Sep 22 00:30:24 2003 @@ -171,6 +171,8 @@ } } else if (buffer[nbase+4] != '_') continue; + if (!strcmp (sect, ".text.exit")) + continue; if (strcmp (sect, ".text") && strcmp (sect, ".init.text") && strcmp (sect, ".fixup") && diff -Nru a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c --- a/arch/sparc/kernel/sun4d_smp.c Mon Sep 22 00:30:18 2003 +++ b/arch/sparc/kernel/sun4d_smp.c Mon Sep 22 00:30:18 2003 @@ -343,11 +343,11 @@ unsigned long a3 asm("i3") = arg3; unsigned long a4 asm("i4") = arg4; unsigned long a5 asm("i5") = arg5; - - __asm__ __volatile__(" - std %0, [%6] - std %2, [%6 + 8] - std %4, [%6 + 16]" : : + + __asm__ __volatile__( + "std %0, [%6]\n\t" + "std %2, [%6 + 8]\n\t" + "std %4, [%6 + 16]\n\t" : : "r"(f), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5), "r" (&ccall_info.func)); } diff -Nru a/arch/sparc/lib/checksum.S b/arch/sparc/lib/checksum.S --- a/arch/sparc/lib/checksum.S Mon Sep 22 00:30:22 2003 +++ b/arch/sparc/lib/checksum.S Mon Sep 22 00:30:22 2003 @@ -145,36 +145,39 @@ .globl C_LABEL(__csum_partial_copy_start), C_LABEL(__csum_partial_copy_end) C_LABEL(__csum_partial_copy_start): -#define EX(x,y,a,b,z) \ +/* Work around cpp -rob */ +#define ALLOC #alloc +#define EXECINSTR #execinstr +#define EX(x,y,a,b) \ 98: x,y; \ - .section .fixup,z##alloc,z##execinstr; \ + .section .fixup,ALLOC,EXECINSTR; \ .align 4; \ 99: ba 30f; \ a, b, %o3; \ - .section __ex_table,z##alloc; \ + .section __ex_table,ALLOC; \ .align 4; \ .word 98b, 99b; \ .text; \ .align 4 -#define EX2(x,y,z) \ +#define EX2(x,y) \ 98: x,y; \ - .section __ex_table,z##alloc; \ + .section __ex_table,ALLOC; \ .align 4; \ .word 98b, 30f; \ .text; \ .align 4 -#define EX3(x,y,z) \ +#define EX3(x,y) \ 98: x,y; \ - .section __ex_table,z##alloc; \ + .section __ex_table,ALLOC; \ .align 4; \ .word 98b, 96f; \ .text; \ .align 4 -#define EXT(start,end,handler,z) \ - .section __ex_table,z##alloc; \ +#define EXT(start,end,handler) \ + .section __ex_table,ALLOC; \ .align 4; \ .word start, 0, end, handler; \ .text; \ @@ -247,21 +250,21 @@ cc_end_cruft: be 1f andcc %o3, 4, %g0 - EX(ldd [%o0 + 0x00], %g2, and %o3, 0xf,#) + EX(ldd [%o0 + 0x00], %g2, and %o3, 0xf) add %o1, 8, %o1 addcc %g2, %g7, %g7 add %o0, 8, %o0 addxcc %g3, %g7, %g7 - EX2(st %g2, [%o1 - 0x08],#) + EX2(st %g2, [%o1 - 0x08]) addx %g0, %g7, %g7 andcc %o3, 4, %g0 - EX2(st %g3, [%o1 - 0x04],#) + EX2(st %g3, [%o1 - 0x04]) 1: be 1f andcc %o3, 3, %o3 - EX(ld [%o0 + 0x00], %g2, add %o3, 4,#) + EX(ld [%o0 + 0x00], %g2, add %o3, 4) add %o1, 4, %o1 addcc %g2, %g7, %g7 - EX2(st %g2, [%o1 - 0x04],#) + EX2(st %g2, [%o1 - 0x04]) addx %g0, %g7, %g7 andcc %o3, 3, %g0 add %o0, 4, %o0 @@ -271,14 +274,14 @@ subcc %o3, 2, %o3 b 4f or %g0, %g0, %o4 -2: EX(lduh [%o0 + 0x00], %o4, add %o3, 2,#) +2: EX(lduh [%o0 + 0x00], %o4, add %o3, 2) add %o0, 2, %o0 - EX2(sth %o4, [%o1 + 0x00],#) + EX2(sth %o4, [%o1 + 0x00]) be 6f add %o1, 2, %o1 sll %o4, 16, %o4 -4: EX(ldub [%o0 + 0x00], %o5, add %g0, 1,#) - EX2(stb %o5, [%o1 + 0x00],#) +4: EX(ldub [%o0 + 0x00], %o5, add %g0, 1) + EX2(stb %o5, [%o1 + 0x00]) sll %o5, 8, %o5 or %o5, %o4, %o4 6: addcc %o4, %g7, %g7 @@ -295,9 +298,9 @@ andcc %o0, 0x2, %g0 be 1f andcc %o0, 0x4, %g0 - EX(lduh [%o0 + 0x00], %g4, add %g1, 0,#) + EX(lduh [%o0 + 0x00], %g4, add %g1, 0) sub %g1, 2, %g1 - EX2(sth %g4, [%o1 + 0x00],#) + EX2(sth %g4, [%o1 + 0x00]) add %o0, 2, %o0 sll %g4, 16, %g4 addcc %g4, %g7, %g7 @@ -311,9 +314,9 @@ or %g3, %g7, %g7 1: be 3f andcc %g1, 0xffffff80, %g0 - EX(ld [%o0 + 0x00], %g4, add %g1, 0,#) + EX(ld [%o0 + 0x00], %g4, add %g1, 0) sub %g1, 4, %g1 - EX2(st %g4, [%o1 + 0x00],#) + EX2(st %g4, [%o1 + 0x00]) add %o0, 4, %o0 addcc %g4, %g7, %g7 add %o1, 4, %o1 @@ -342,7 +345,7 @@ CSUMCOPY_BIGCHUNK(%o0,%o1,%g7,0x20,%o4,%o5,%g2,%g3,%g4,%g5,%o2,%o3) CSUMCOPY_BIGCHUNK(%o0,%o1,%g7,0x40,%o4,%o5,%g2,%g3,%g4,%g5,%o2,%o3) CSUMCOPY_BIGCHUNK(%o0,%o1,%g7,0x60,%o4,%o5,%g2,%g3,%g4,%g5,%o2,%o3) -10: EXT(5b, 10b, 20f,#) ! note for exception handling +10: EXT(5b, 10b, 20f) ! note for exception handling sub %g1, 128, %g1 ! detract from length addx %g0, %g7, %g7 ! add in last carry bit andcc %g1, 0xffffff80, %g0 ! more to csum? @@ -367,7 +370,7 @@ CSUMCOPY_LASTCHUNK(%o0,%o1,%g7,0x28,%g2,%g3,%g4,%g5) CSUMCOPY_LASTCHUNK(%o0,%o1,%g7,0x18,%g2,%g3,%g4,%g5) CSUMCOPY_LASTCHUNK(%o0,%o1,%g7,0x08,%g2,%g3,%g4,%g5) -12: EXT(cctbl, 12b, 22f,#) ! note for exception table handling +12: EXT(cctbl, 12b, 22f) ! note for exception table handling addx %g0, %g7, %g7 andcc %o3, 0xf, %g0 ! check for low bits set ccte: bne cc_end_cruft ! something left, handle it out of band @@ -378,7 +381,7 @@ CSUMCOPY_BIGCHUNK_ALIGNED(%o0,%o1,%g7,0x20,%o4,%o5,%g2,%g3,%g4,%g5,%o2,%o3) CSUMCOPY_BIGCHUNK_ALIGNED(%o0,%o1,%g7,0x40,%o4,%o5,%g2,%g3,%g4,%g5,%o2,%o3) CSUMCOPY_BIGCHUNK_ALIGNED(%o0,%o1,%g7,0x60,%o4,%o5,%g2,%g3,%g4,%g5,%o2,%o3) -11: EXT(ccdbl, 11b, 21f,#) ! note for exception table handling +11: EXT(ccdbl, 11b, 21f) ! note for exception table handling sub %g1, 128, %g1 ! detract from length addx %g0, %g7, %g7 ! add in last carry bit andcc %g1, 0xffffff80, %g0 ! more to csum? @@ -395,9 +398,9 @@ be,a 1f srl %g1, 1, %g4 sub %g1, 1, %g1 - EX(ldub [%o0], %g5, add %g1, 1,#) + EX(ldub [%o0], %g5, add %g1, 1) add %o0, 1, %o0 - EX2(stb %g5, [%o1],#) + EX2(stb %g5, [%o1]) srl %g1, 1, %g4 add %o1, 1, %o1 1: cmp %g4, 0 @@ -406,34 +409,34 @@ andcc %o0, 2, %g0 be,a 1f srl %g4, 1, %g4 - EX(lduh [%o0], %o4, add %g1, 0,#) + EX(lduh [%o0], %o4, add %g1, 0) sub %g1, 2, %g1 srl %o4, 8, %g2 sub %g4, 1, %g4 - EX2(stb %g2, [%o1],#) + EX2(stb %g2, [%o1]) add %o4, %g5, %g5 - EX2(stb %o4, [%o1 + 1],#) + EX2(stb %o4, [%o1 + 1]) add %o0, 2, %o0 srl %g4, 1, %g4 add %o1, 2, %o1 1: cmp %g4, 0 be,a 2f andcc %g1, 2, %g0 - EX3(ld [%o0], %o4,#) + EX3(ld [%o0], %o4) 5: srl %o4, 24, %g2 srl %o4, 16, %g3 - EX2(stb %g2, [%o1],#) + EX2(stb %g2, [%o1]) srl %o4, 8, %g2 - EX2(stb %g3, [%o1 + 1],#) + EX2(stb %g3, [%o1 + 1]) add %o0, 4, %o0 - EX2(stb %g2, [%o1 + 2],#) + EX2(stb %g2, [%o1 + 2]) addcc %o4, %g5, %g5 - EX2(stb %o4, [%o1 + 3],#) + EX2(stb %o4, [%o1 + 3]) addx %g5, %g0, %g5 ! I am now to lazy to optimize this (question it add %o1, 4, %o1 ! is worthy). Maybe some day - with the sll/srl subcc %g4, 1, %g4 ! tricks bne,a 5b - EX3(ld [%o0], %o4,#) + EX3(ld [%o0], %o4) sll %g5, 16, %g2 srl %g5, 16, %g5 srl %g2, 16, %g2 @@ -441,19 +444,19 @@ add %g2, %g5, %g5 2: be,a 3f andcc %g1, 1, %g0 - EX(lduh [%o0], %o4, and %g1, 3,#) + EX(lduh [%o0], %o4, and %g1, 3) andcc %g1, 1, %g0 srl %o4, 8, %g2 add %o0, 2, %o0 - EX2(stb %g2, [%o1],#) + EX2(stb %g2, [%o1]) add %g5, %o4, %g5 - EX2(stb %o4, [%o1 + 1],#) + EX2(stb %o4, [%o1 + 1]) add %o1, 2, %o1 3: be,a 1f sll %g5, 16, %o4 - EX(ldub [%o0], %g2, add %g0, 1,#) + EX(ldub [%o0], %g2, add %g0, 1) sll %g2, 8, %o4 - EX2(stb %g2, [%o1],#) + EX2(stb %g2, [%o1]) add %g5, %o4, %g5 sll %g5, 16, %o4 1: addcc %o4, %g5, %g5 diff -Nru a/arch/sparc/lib/copy_user.S b/arch/sparc/lib/copy_user.S --- a/arch/sparc/lib/copy_user.S Mon Sep 22 00:30:22 2003 +++ b/arch/sparc/lib/copy_user.S Mon Sep 22 00:30:22 2003 @@ -16,41 +16,44 @@ #include #include -#define EX(x,y,a,b,z) \ +/* Work around cpp -rob */ +#define ALLOC #alloc +#define EXECINSTR #execinstr +#define EX(x,y,a,b) \ 98: x,y; \ - .section .fixup,z##alloc,z##execinstr; \ + .section .fixup,ALLOC,EXECINSTR; \ .align 4; \ 99: ba fixupretl; \ a, b, %g3; \ - .section __ex_table,z##alloc; \ + .section __ex_table,ALLOC; \ .align 4; \ .word 98b, 99b; \ .text; \ .align 4 -#define EX2(x,y,c,d,e,a,b,z) \ +#define EX2(x,y,c,d,e,a,b) \ 98: x,y; \ - .section .fixup,z##alloc,z##execinstr; \ + .section .fixup,ALLOC,EXECINSTR; \ .align 4; \ 99: c, d, e; \ ba fixupretl; \ a, b, %g3; \ - .section __ex_table,z##alloc; \ + .section __ex_table,ALLOC; \ .align 4; \ .word 98b, 99b; \ .text; \ .align 4 -#define EXO2(x,y,z) \ -98: x,##y; \ - .section __ex_table,z##alloc; \ +#define EXO2(x,y) \ +98: x, y; \ + .section __ex_table,ALLOC; \ .align 4; \ .word 98b, 97f; \ .text; \ .align 4 -#define EXT(start,end,handler,z) \ - .section __ex_table,z##alloc; \ +#define EXT(start,end,handler) \ + .section __ex_table,ALLOC; \ .align 4; \ .word start, 0, end, handler; \ .text; \ @@ -121,23 +124,23 @@ be 4f andcc %o1, 2, %g0 - EXO2(ldub [%o1], %g2,#) + EXO2(ldub [%o1], %g2) add %o1, 1, %o1 - EXO2(stb %g2, [%o0],#) + EXO2(stb %g2, [%o0]) sub %o2, 1, %o2 bne 3f add %o0, 1, %o0 - EXO2(lduh [%o1], %g2,#) + EXO2(lduh [%o1], %g2) add %o1, 2, %o1 - EXO2(sth %g2, [%o0],#) + EXO2(sth %g2, [%o0]) sub %o2, 2, %o2 b 3f add %o0, 2, %o0 4: - EXO2(lduh [%o1], %g2,#) + EXO2(lduh [%o1], %g2) add %o1, 2, %o1 - EXO2(sth %g2, [%o0],#) + EXO2(sth %g2, [%o0]) sub %o2, 2, %o2 b 3f add %o0, 2, %o0 @@ -160,9 +163,9 @@ be 2f mov %o2, %g1 - EXO2(ld [%o1], %o4,#) + EXO2(ld [%o1], %o4) sub %g1, 4, %g1 - EXO2(st %o4, [%o0],#) + EXO2(st %o4, [%o0]) add %o1, 4, %o1 add %o0, 4, %o0 2: @@ -177,7 +180,7 @@ MOVE_BIGCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5) MOVE_BIGCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5) 80: - EXT(5b, 80b, 50f,#) + EXT(5b, 80b, 50f) subcc %g7, 128, %g7 add %o1, 128, %o1 bne 5b @@ -204,37 +207,37 @@ MOVE_LASTCHUNK(o1, o0, 0x10, g2, g3, g4, g5) MOVE_LASTCHUNK(o1, o0, 0x00, g2, g3, g4, g5) copy_user_table_end: - EXT(copy_user_table, copy_user_table_end, 51f,#) + EXT(copy_user_table, copy_user_table_end, 51f) be copy_user_last7 andcc %g1, 4, %g0 - EX(ldd [%o1], %g2, and %g1, 0xf,#) + EX(ldd [%o1], %g2, and %g1, 0xf) add %o0, 8, %o0 add %o1, 8, %o1 - EX(st %g2, [%o0 - 0x08], and %g1, 0xf,#) - EX2(st %g3, [%o0 - 0x04], and %g1, 0xf, %g1, sub %g1, 4,#) + EX(st %g2, [%o0 - 0x08], and %g1, 0xf) + EX2(st %g3, [%o0 - 0x04], and %g1, 0xf, %g1, sub %g1, 4) copy_user_last7: be 1f andcc %g1, 2, %g0 - EX(ld [%o1], %g2, and %g1, 7,#) + EX(ld [%o1], %g2, and %g1, 7) add %o1, 4, %o1 - EX(st %g2, [%o0], and %g1, 7,#) + EX(st %g2, [%o0], and %g1, 7) add %o0, 4, %o0 1: be 1f andcc %g1, 1, %g0 - EX(lduh [%o1], %g2, and %g1, 3,#) + EX(lduh [%o1], %g2, and %g1, 3) add %o1, 2, %o1 - EX(sth %g2, [%o0], and %g1, 3,#) + EX(sth %g2, [%o0], and %g1, 3) add %o0, 2, %o0 1: be 1f nop - EX(ldub [%o1], %g2, add %g0, 1,#) - EX(stb %g2, [%o0], add %g0, 1,#) + EX(ldub [%o1], %g2, add %g0, 1) + EX(stb %g2, [%o0], add %g0, 1) 1: retl clr %o0 @@ -245,7 +248,7 @@ MOVE_BIGALIGNCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5) MOVE_BIGALIGNCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5) 81: - EXT(ldd_std, 81b, 52f,#) + EXT(ldd_std, 81b, 52f) subcc %g7, 128, %g7 add %o1, 128, %o1 bne ldd_std @@ -274,9 +277,9 @@ be 10f nop - EXO2(ldub [%o1], %g2,#) + EXO2(ldub [%o1], %g2) add %o1, 1, %o1 - EXO2(stb %g2, [%o0],#) + EXO2(stb %g2, [%o0]) sub %o2, 1, %o2 andcc %o2, 0xfffffff0, %o3 be short_end @@ -285,7 +288,7 @@ MOVE_HALFCHUNK(o1, o0, 0x00, g2, g3, g4, g5) MOVE_HALFCHUNK(o1, o0, 0x08, g2, g3, g4, g5) 82: - EXT(10b, 82b, 53f,#) + EXT(10b, 82b, 53f) subcc %o3, 0x10, %o3 add %o1, 0x10, %o1 bne 10b @@ -303,7 +306,7 @@ MOVE_SHORTCHUNK(o1, o0, -0x0e, g2, g3) MOVE_SHORTCHUNK(o1, o0, -0x10, g2, g3) 83: - EXT(byte_chunk, 83b, 54f,#) + EXT(byte_chunk, 83b, 54f) subcc %o3, 0x10, %o3 add %o1, 0x10, %o1 bne byte_chunk @@ -328,11 +331,11 @@ MOVE_SHORTCHUNK(o1, o0, 0x02, g2, g3) MOVE_SHORTCHUNK(o1, o0, 0x00, g2, g3) short_table_end: - EXT(84b, short_table_end, 55f,#) + EXT(84b, short_table_end, 55f) be 1f nop - EX(ldub [%o1], %g2, add %g0, 1,#) - EX(stb %g2, [%o0], add %g0, 1,#) + EX(ldub [%o1], %g2, add %g0, 1) + EX(stb %g2, [%o0], add %g0, 1) 1: retl clr %o0 @@ -344,11 +347,11 @@ be 1f andcc %o2, 4, %g0 - EXO2(ld [%o1 + 0x00], %g2,#) - EXO2(ld [%o1 + 0x04], %g3,#) + EXO2(ld [%o1 + 0x00], %g2) + EXO2(ld [%o1 + 0x04], %g3) add %o1, 8, %o1 - EXO2(st %g2, [%o0 + 0x00],#) - EX(st %g3, [%o0 + 0x04], sub %o2, 4,#) + EXO2(st %g2, [%o0 + 0x00]) + EX(st %g3, [%o0 + 0x04], sub %o2, 4) add %o0, 8, %o0 1: b copy_user_last7 diff -Nru a/arch/sparc/lib/memset.S b/arch/sparc/lib/memset.S --- a/arch/sparc/lib/memset.S Mon Sep 22 00:30:19 2003 +++ b/arch/sparc/lib/memset.S Mon Sep 22 00:30:19 2003 @@ -10,20 +10,23 @@ #include #include -#define EX(x,y,a,b,z) \ +/* Work around cpp -rob */ +#define ALLOC #alloc +#define EXECINSTR #execinstr +#define EX(x,y,a,b) \ 98: x,y; \ - .section .fixup,z##alloc,z##execinstr; \ + .section .fixup,ALLOC,EXECINSTR; \ .align 4; \ 99: ba 30f; \ a, b, %o0; \ - .section __ex_table,z##alloc; \ + .section __ex_table,ALLOC; \ .align 4; \ .word 98b, 99b; \ .text; \ .align 4 -#define EXT(start,end,handler,z) \ - .section __ex_table,z##alloc; \ +#define EXT(start,end,handler) \ + .section __ex_table,ALLOC; \ .align 4; \ .word start, 0, end, handler; \ .text; \ @@ -74,13 +77,13 @@ 3: cmp %o2, 3 be 2f - EX(stb %g3, [%o0], sub %o1, 0,#) + EX(stb %g3, [%o0], sub %o1, 0) cmp %o2, 2 be 2f - EX(stb %g3, [%o0 + 0x01], sub %o1, 1,#) + EX(stb %g3, [%o0 + 0x01], sub %o1, 1) - EX(stb %g3, [%o0 + 0x02], sub %o1, 2,#) + EX(stb %g3, [%o0 + 0x02], sub %o1, 2) 2: sub %o2, 4, %o2 add %o1, %o2, %o1 @@ -101,7 +104,7 @@ be 2f mov %g3, %g2 - EX(st %g3, [%o0], sub %o1, 0,#) + EX(st %g3, [%o0], sub %o1, 0) sub %o1, 4, %o1 add %o0, 4, %o0 2: @@ -113,7 +116,7 @@ subcc %o3, 128, %o3 ZERO_BIG_BLOCK(%o0, 0x40, %g2) 11: - EXT(10b, 11b, 20f,#) + EXT(10b, 11b, 20f) bne 10b add %o0, 128, %o0 @@ -138,17 +141,17 @@ be 1f andcc %o1, 2, %g0 - EX(st %g3, [%o0], and %o1, 7,#) + EX(st %g3, [%o0], and %o1, 7) add %o0, 4, %o0 1: be 1f andcc %o1, 1, %g0 - EX(sth %g3, [%o0], and %o1, 3,#) + EX(sth %g3, [%o0], and %o1, 3) add %o0, 2, %o0 1: bne,a 8f - EX(stb %g3, [%o0], and %o1, 1,#) + EX(stb %g3, [%o0], and %o1, 1) 8: retl clr %o0 @@ -161,7 +164,7 @@ add %o0, 1, %o0 subcc %o1, 1, %o1 bne,a 8b - EX(stb %g3, [%o0 - 1], add %o1, 1,#) + EX(stb %g3, [%o0 - 1], add %o1, 1) 0: retl clr %o0 diff -Nru a/arch/sparc/math-emu/sfp-util.h b/arch/sparc/math-emu/sfp-util.h --- a/arch/sparc/math-emu/sfp-util.h Mon Sep 22 00:30:25 2003 +++ b/arch/sparc/math-emu/sfp-util.h Mon Sep 22 00:30:25 2003 @@ -4,8 +4,8 @@ #include #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ - __asm__ ("addcc %r4,%5,%1 - addx %r2,%3,%0" \ + __asm__ ("addcc %r4,%5,%1\n\t" \ + "addx %r2,%3,%0\n" \ : "=r" ((USItype)(sh)), \ "=&r" ((USItype)(sl)) \ : "%rJ" ((USItype)(ah)), \ @@ -14,8 +14,8 @@ "rI" ((USItype)(bl)) \ : "cc") #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ - __asm__ ("subcc %r4,%5,%1 - subx %r2,%3,%0" \ + __asm__ ("subcc %r4,%5,%1\n\t" \ + "subx %r2,%3,%0\n" \ : "=r" ((USItype)(sh)), \ "=&r" ((USItype)(sl)) \ : "rJ" ((USItype)(ah)), \ @@ -25,46 +25,46 @@ : "cc") #define umul_ppmm(w1, w0, u, v) \ - __asm__ ("! Inlined umul_ppmm - wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr - sra %3,31,%%g2 ! Don't move this insn - and %2,%%g2,%%g2 ! Don't move this insn - andcc %%g0,0,%%g1 ! Don't move this insn - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,%3,%%g1 - mulscc %%g1,0,%%g1 - add %%g1,%%g2,%0 - rd %%y,%1" \ + __asm__ ("! Inlined umul_ppmm\n\t" \ + "wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr\n\t" \ + "sra %3,31,%%g2 ! Don't move this insn\n\t" \ + "and %2,%%g2,%%g2 ! Don't move this insn\n\t" \ + "andcc %%g0,0,%%g1 ! Don't move this insn\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,%3,%%g1\n\t" \ + "mulscc %%g1,0,%%g1\n\t" \ + "add %%g1,%%g2,%0\n\t" \ + "rd %%y,%1\n" \ : "=r" ((USItype)(w1)), \ "=r" ((USItype)(w0)) \ : "%rI" ((USItype)(u)), \ @@ -74,30 +74,30 @@ /* It's quite necessary to add this much assembler for the sparc. The default udiv_qrnnd (in C) is more than 10 times slower! */ #define udiv_qrnnd(q, r, n1, n0, d) \ - __asm__ ("! Inlined udiv_qrnnd - mov 32,%%g1 - subcc %1,%2,%%g0 -1: bcs 5f - addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb - sub %1,%2,%1 ! this kills msb of n - addx %1,%1,%1 ! so this can't give carry - subcc %%g1,1,%%g1 -2: bne 1b - subcc %1,%2,%%g0 - bcs 3f - addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb - b 3f - sub %1,%2,%1 ! this kills msb of n -4: sub %1,%2,%1 -5: addxcc %1,%1,%1 - bcc 2b - subcc %%g1,1,%%g1 -! Got carry from n. Subtract next step to cancel this carry. - bne 4b - addcc %0,%0,%0 ! shift n1n0 and a 0-bit in lsb - sub %1,%2,%1 -3: xnor %0,0,%0 - ! End of inline udiv_qrnnd" \ + __asm__ ("! Inlined udiv_qrnnd\n\t" \ + "mov 32,%%g1\n\t" \ + "subcc %1,%2,%%g0\n\t" \ + "1: bcs 5f\n\t" \ + "addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb\n\t" \ + "sub %1,%2,%1 ! this kills msb of n\n\t" \ + "addx %1,%1,%1 ! so this can't give carry\n\t" \ + "subcc %%g1,1,%%g1\n\t" \ + "2: bne 1b\n\t" \ + "subcc %1,%2,%%g0\n\t" \ + "bcs 3f\n\t" \ + "addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb\n\t" \ + "b 3f\n\t" \ + "sub %1,%2,%1 ! this kills msb of n\n\t" \ + "4: sub %1,%2,%1\n\t" \ + "5: addxcc %1,%1,%1\n\t" \ + "bcc 2b\n\t" \ + "subcc %%g1,1,%%g1\n\t" \ + "! Got carry from n. Subtract next step to cancel this carry.\n\t" \ + "bne 4b\n\t" \ + "addcc %0,%0,%0 ! shift n1n0 and a 0-bit in lsb\n\t" \ + "sub %1,%2,%1\n\t" \ + "3: xnor %0,0,%0\n\t" \ + "! End of inline udiv_qrnnd\n" \ : "=&r" ((USItype)(q)), \ "=&r" ((USItype)(r)) \ : "r" ((USItype)(d)), \ diff -Nru a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c --- a/arch/sparc/mm/srmmu.c Mon Sep 22 00:30:22 2003 +++ b/arch/sparc/mm/srmmu.c Mon Sep 22 00:30:22 2003 @@ -330,9 +330,6 @@ offset = bit_map_string_get(&srmmu_nocache_map, size >> SRMMU_NOCACHE_BITMAP_SHIFT, align >> SRMMU_NOCACHE_BITMAP_SHIFT); -/* P3 */ /* printk("srmmu: get size %d align %d, got %d (0x%x)\n", - size >> SRMMU_NOCACHE_BITMAP_SHIFT, align >> SRMMU_NOCACHE_BITMAP_SHIFT, - offset, offset); */ if (offset == -1) { printk("srmmu: out of nocache %d: %d/%d\n", size, (int) srmmu_nocache_size, @@ -385,7 +382,6 @@ offset = (vaddr - SRMMU_NOCACHE_VADDR) >> SRMMU_NOCACHE_BITMAP_SHIFT; size = size >> SRMMU_NOCACHE_BITMAP_SHIFT; -/* P3 */ /* printk("srmmu: free off %d (0x%x) size %d\n", offset, offset, size); */ bit_map_clear(&srmmu_nocache_map, offset, size); } @@ -446,9 +442,6 @@ paddr = __pa((unsigned long)srmmu_nocache_pool); vaddr = SRMMU_NOCACHE_VADDR; - -/* P3 */ printk("srmmu: pool 0x%x vaddr 0x%x bitmap 0x%x bits %d (0x%x)\n", - (int)srmmu_nocache_pool, vaddr, srmmu_nocache_bitmap, bitmap_bits, bitmap_bits); while (vaddr < srmmu_nocache_end) { pgd = pgd_offset_k(vaddr); diff -Nru a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig --- a/arch/sparc64/Kconfig Mon Sep 22 00:30:24 2003 +++ b/arch/sparc64/Kconfig Mon Sep 22 00:30:24 2003 @@ -29,7 +29,8 @@ smartcard reader, if present. Say Y to enable support for these. config VT - bool + bool "Virtual terminal" if EMBEDDED + select INPUT default y ---help--- If you say Y here, you will get support for terminal devices with @@ -59,7 +60,8 @@ shiny Linux system :-) config VT_CONSOLE - bool + bool "Support for console on virtual terminal" if EMBEDDED + depends on VT default y ---help--- The system console is the device which receives all kernel messages diff -Nru a/arch/sparc64/defconfig b/arch/sparc64/defconfig --- a/arch/sparc64/defconfig Mon Sep 22 00:30:20 2003 +++ b/arch/sparc64/defconfig Mon Sep 22 00:30:20 2003 @@ -1,13 +1,15 @@ # # Automatically generated make config: don't edit # +CONFIG_64BIT=y CONFIG_MMU=y # # Code maturity level options # CONFIG_EXPERIMENTAL=y -CONFIG_BROKEN=y +CONFIG_CLEAN_COMPILE=y +CONFIG_STANDALONE=y # # General setup @@ -17,6 +19,7 @@ # CONFIG_BSD_PROCESS_ACCT is not set CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=15 +# CONFIG_IKCONFIG is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y @@ -51,6 +54,10 @@ CONFIG_US3_FREQ=m CONFIG_US2E_FREQ=m CONFIG_CPU_FREQ_PROC_INTF=y +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m CONFIG_CPU_FREQ_GOV_USERSPACE=m # CONFIG_CPU_FREQ_24_API is not set CONFIG_SPARC64=y @@ -67,7 +74,6 @@ # CONFIG_PCI_LEGACY_PROC is not set # CONFIG_PCI_NAMES is not set CONFIG_SUN_OPENPROMFS=m -CONFIG_KCORE_ELF=y CONFIG_SPARC32_COMPAT=y CONFIG_COMPAT=y CONFIG_BINFMT_ELF32=y @@ -102,8 +108,6 @@ # Graphics support # CONFIG_FB=y -# CONFIG_FB_CIRRUS is not set -# CONFIG_FB_PM2 is not set # CONFIG_FB_CYBER2000 is not set # CONFIG_FB_IMSTT is not set # CONFIG_FB_BW2 is not set @@ -119,7 +123,6 @@ # CONFIG_FB_3DFX is not set # CONFIG_FB_VOODOO1 is not set # CONFIG_FB_TRIDENT is not set -# CONFIG_FB_PM3 is not set CONFIG_FB_SBUS=y CONFIG_FB_FFB=y # CONFIG_FB_TCX is not set @@ -274,6 +277,7 @@ # SCSI device support # CONFIG_SCSI=y +CONFIG_SCSI_PROC_FS=y # # SCSI support type (disk, tape, CD-ROM) @@ -309,7 +313,6 @@ # CONFIG_AIC79XX_DEBUG_ENABLE is not set CONFIG_AIC79XX_DEBUG_MASK=0 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set -# CONFIG_SCSI_DPT_I2O is not set # CONFIG_SCSI_ADVANSYS is not set # CONFIG_SCSI_MEGARAID is not set # CONFIG_SCSI_BUSLOGIC is not set @@ -319,7 +322,7 @@ CONFIG_SCSI_EATA_PIO=m # CONFIG_SCSI_FUTURE_DOMAIN is not set # CONFIG_SCSI_GDTH is not set -# CONFIG_SCSI_INITIO is not set +CONFIG_SCSI_IPS=m CONFIG_SCSI_INIA100=m CONFIG_SCSI_PPA=m CONFIG_SCSI_IMM=m @@ -330,15 +333,12 @@ CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set -# CONFIG_SCSI_PCI2000 is not set -# CONFIG_SCSI_PCI2220I is not set CONFIG_SCSI_QLOGIC_ISP=m CONFIG_SCSI_QLOGIC_FC=y CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y # CONFIG_SCSI_QLOGIC_1280 is not set CONFIG_SCSI_QLOGICPTI=m CONFIG_SCSI_DC395x=m -# CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_NSP32 is not set CONFIG_SCSI_DEBUG=m CONFIG_SCSI_SUNESP=y @@ -474,6 +474,7 @@ CONFIG_BRIDGE=m CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set +CONFIG_BRIDGE_NETFILTER=y # # IP: Netfilter Configuration @@ -486,6 +487,7 @@ CONFIG_IP_NF_QUEUE=m CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_IPRANGE=m CONFIG_IP_NF_MATCH_MAC=m CONFIG_IP_NF_MATCH_PKTTYPE=m CONFIG_IP_NF_MATCH_MARK=m @@ -501,16 +503,16 @@ CONFIG_IP_NF_MATCH_HELPER=m CONFIG_IP_NF_MATCH_STATE=m CONFIG_IP_NF_MATCH_CONNTRACK=m -CONFIG_IP_NF_MATCH_UNCLEAN=m CONFIG_IP_NF_MATCH_OWNER=m CONFIG_IP_NF_MATCH_PHYSDEV=m CONFIG_IP_NF_FILTER=m CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_TARGET_MIRROR=m CONFIG_IP_NF_NAT=m CONFIG_IP_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_SAME=m CONFIG_IP_NF_NAT_LOCAL=y CONFIG_IP_NF_NAT_SNMP_BASIC=m CONFIG_IP_NF_NAT_IRC=m @@ -522,6 +524,7 @@ CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_DSCP=m CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_CLASSIFY=m CONFIG_IP_NF_TARGET_LOG=m CONFIG_IP_NF_TARGET_ULOG=m CONFIG_IP_NF_TARGET_TCPMSS=m @@ -558,21 +561,27 @@ # DECnet: Netfilter Configuration # CONFIG_DECNET_NF_GRABULATOR=m + +# +# Bridge: Netfilter Configuration +# CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_802_3=m CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_IP=m CONFIG_BRIDGE_EBT_MARK=m CONFIG_BRIDGE_EBT_PKTTYPE=m CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_REDIRECT=m CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m CONFIG_XFRM=y CONFIG_XFRM_USER=m @@ -781,7 +790,6 @@ # Token Ring devices (depends on LLC=y) # CONFIG_NET_FC=y -# CONFIG_IPHASE5526 is not set # CONFIG_RCPCI is not set CONFIG_SHAPER=m @@ -830,8 +838,6 @@ # # AX.25 network device drivers # -# CONFIG_MKISS is not set -# CONFIG_6PACK is not set # CONFIG_BPQETHER is not set # CONFIG_BAYCOM_SER_FDX is not set # CONFIG_BAYCOM_SER_HDX is not set @@ -875,7 +881,6 @@ # # Old SIR device drivers # -# CONFIG_IRTTY_OLD is not set # CONFIG_IRPORT_SIR is not set # @@ -886,7 +891,6 @@ # FIR device drivers # # CONFIG_USB_IRDA is not set -# CONFIG_TOSHIBA_OLD is not set # CONFIG_TOSHIBA_FIR is not set # CONFIG_VLSI_FIR is not set @@ -896,11 +900,6 @@ CONFIG_ISDN_BOOL=y # -# Old ISDN4Linux -# -# CONFIG_ISDN is not set - -# # CAPI subsystem # CONFIG_ISDN_CAPI=m @@ -1000,7 +999,6 @@ CONFIG_I2C_PHILIPSPAR=m CONFIG_SCx200_ACB=m CONFIG_I2C_ALGOPCF=m -# CONFIG_I2C_ELEKTOR is not set CONFIG_I2C_CHARDEV=m # @@ -1198,7 +1196,6 @@ # # Video For Linux # -CONFIG_VIDEO_PROC_FS=y # # Video Adapters @@ -1214,7 +1211,6 @@ CONFIG_TUNER_3036=m # CONFIG_VIDEO_STRADIS is not set # CONFIG_VIDEO_ZORAN is not set -# CONFIG_VIDEO_ZR36120 is not set CONFIG_VIDEO_SAA7134=m CONFIG_VIDEO_MXB=m CONFIG_VIDEO_DPC=m @@ -1247,7 +1243,6 @@ CONFIG_DVB_GRUNDIG_29504_401=m CONFIG_DVB_MT312=m CONFIG_DVB_VES1820=m -# CONFIG_DVB_TDA1004X is not set # # Supported SAA7146 based PCI Adapters @@ -1262,7 +1257,6 @@ # Supported USB Adapters # # CONFIG_DVB_TTUSB_BUDGET is not set -# CONFIG_DVB_TTUSB_DEC is not set # # Supported FlexCopII (B2C2) Adapters @@ -1430,7 +1424,7 @@ # # USB Network adaptors # -CONFIG_USB_AX8817X=m +CONFIG_USB_AX8817X_STANDALONE=m CONFIG_USB_CATC=m CONFIG_USB_KAWETH=m CONFIG_USB_PEGASUS=m @@ -1453,6 +1447,11 @@ CONFIG_USB_EPSON2888=y CONFIG_USB_ZAURUS=y CONFIG_USB_CDCETHER=y + +# +# USB Network Adapters +# +CONFIG_USB_AX8817X=y # # USB port drivers diff -Nru a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c --- a/arch/sparc64/kernel/time.c Mon Sep 22 00:30:21 2003 +++ b/arch/sparc64/kernel/time.c Mon Sep 22 00:30:21 2003 @@ -416,6 +416,7 @@ unsigned long timer_tick_compare; static unsigned long timer_ticks_per_usec_quotient; +static unsigned long timer_ticks_per_nsec_quotient; #define TICK_SIZE (tick_nsec / 1000) @@ -1051,12 +1052,18 @@ #endif /* The quotient formula is taken from the IA64 port. */ +#define SPARC64_USEC_PER_CYC_SHIFT 30UL +#define SPARC64_NSEC_PER_CYC_SHIFT 30UL void __init time_init(void) { unsigned long clock = sparc64_init_timers(timer_interrupt); timer_ticks_per_usec_quotient = - (((1000000UL << 30) + + (((1000000UL << SPARC64_USEC_PER_CYC_SHIFT) + + (clock / 2)) / clock); + + timer_ticks_per_nsec_quotient = + (((NSEC_PER_SEC << SPARC64_NSEC_PER_CYC_SHIFT) + (clock / 2)) / clock); #ifdef CONFIG_CPU_FREQ @@ -1072,7 +1079,16 @@ ticks += timer_tick_offset; ticks -= timer_tick_compare; - return (ticks * timer_ticks_per_usec_quotient) >> 30UL; + return (ticks * timer_ticks_per_usec_quotient) + >> SPARC64_USEC_PER_CYC_SHIFT; +} + +unsigned long long sched_clock(void) +{ + unsigned long ticks = tick_ops->get_tick(); + + return (ticks * timer_ticks_per_nsec_quotient) + >> SPARC64_NSEC_PER_CYC_SHIFT; } int do_settimeofday(struct timespec *tv) diff -Nru a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c --- a/arch/sparc64/mm/init.c Mon Sep 22 00:30:20 2003 +++ b/arch/sparc64/mm/init.c Mon Sep 22 00:30:20 2003 @@ -1706,10 +1706,6 @@ unsigned long addr, last; int i; -#ifndef CONFIG_SMP - cpu_data(0).udelay_val = loops_per_jiffy; -#endif - i = last_valid_pfn >> ((22 - PAGE_SHIFT) + 6); i += 1; sparc64_valid_addr_bitmap = (unsigned long *) diff -Nru a/arch/sparc64/solaris/misc.c b/arch/sparc64/solaris/misc.c --- a/arch/sparc64/solaris/misc.c Mon Sep 22 00:30:24 2003 +++ b/arch/sparc64/solaris/misc.c Mon Sep 22 00:30:24 2003 @@ -392,7 +392,7 @@ switch (cmd) { case 0: /* getpgrp */ - return current->pgrp; + return process_group(current); case 1: /* setpgrp */ { int (*sys_setpgid)(pid_t,pid_t) = @@ -403,7 +403,7 @@ ret = sys_setpgid(0, 0); if (ret) return ret; current->tty = NULL; - return current->pgrp; + return process_group(current); } case 2: /* getsid */ { diff -Nru a/arch/x86_64/boot/compressed/misc.c b/arch/x86_64/boot/compressed/misc.c --- a/arch/x86_64/boot/compressed/misc.c Mon Sep 22 00:30:21 2003 +++ b/arch/x86_64/boot/compressed/misc.c Mon Sep 22 00:30:21 2003 @@ -116,8 +116,8 @@ { void *p; - if (size <0) error("Malloc error\n"); - if (free_mem_ptr <= 0) error("Memory error\n"); + if (size <0) error("Malloc error"); + if (free_mem_ptr <= 0) error("Memory error"); free_mem_ptr = (free_mem_ptr + 3) & ~3; /* Align */ @@ -125,7 +125,7 @@ free_mem_ptr += size; if (free_mem_ptr >= free_mem_end_ptr) - error("\nOut of memory\n"); + error("Out of memory"); return p; } @@ -215,7 +215,7 @@ static int fill_inbuf(void) { if (insize != 0) { - error("ran out of input data\n"); + error("ran out of input data"); } inbuf = input_data; @@ -280,9 +280,9 @@ void setup_normal_output_buffer(void) { #ifdef STANDARD_MEMORY_BIOS_CALL - if (EXT_MEM_K < 1024) error("Less than 2MB of memory.\n"); + if (EXT_MEM_K < 1024) error("Less than 2MB of memory"); #else - if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < 1024) error("Less than 2MB of memory.\n"); + if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < 1024) error("Less than 2MB of memory"); #endif output_data = (char *)0x100000; /* Points to 1M */ free_mem_end_ptr = (long)real_mode; @@ -297,9 +297,9 @@ { high_buffer_start = (uch *)(((ulg)&end) + HEAP_SIZE); #ifdef STANDARD_MEMORY_BIOS_CALL - if (EXT_MEM_K < (3*1024)) error("Less than 4MB of memory.\n"); + if (EXT_MEM_K < (3*1024)) error("Less than 4MB of memory"); #else - if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < (3*1024)) error("Less than 4MB of memory.\n"); + if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < (3*1024)) error("Less than 4MB of memory"); #endif mv->low_buffer_start = output_data = (char *)LOW_BUFFER_START; low_buffer_end = ((unsigned int)real_mode > LOW_BUFFER_MAX diff -Nru a/arch/x86_64/kernel/pci-gart.c b/arch/x86_64/kernel/pci-gart.c --- a/arch/x86_64/kernel/pci-gart.c Mon Sep 22 00:30:21 2003 +++ b/arch/x86_64/kernel/pci-gart.c Mon Sep 22 00:30:21 2003 @@ -76,7 +76,6 @@ #define EMERGENCY_PAGES 32 /* = 128KB */ #ifdef CONFIG_AGP -extern int agp_init(void); #define AGPEXTERN extern #else #define AGPEXTERN diff -Nru a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c --- a/arch/x86_64/kernel/time.c Mon Sep 22 00:30:23 2003 +++ b/arch/x86_64/kernel/time.c Mon Sep 22 00:30:23 2003 @@ -370,6 +370,19 @@ return IRQ_HANDLED; } +/* RED-PEN: calculation is done in 32bits with multiply for performance + and could overflow, it may be better (but slower)to use an 64bit division. */ +unsigned long long sched_clock(void) +{ + unsigned long a; + + if (__vxtime.mode == VXTIME_HPET) + return (hpet_readl(HPET_COUNTER) * vxtime.quot) >> 32; + + rdtscll(a); + return (a * vxtime.tsc_quot) >> 32; +} + unsigned long get_cmos_time(void) { unsigned int timeout, year, mon, day, hour, min, sec; diff -Nru a/crypto/proc.c b/crypto/proc.c --- a/crypto/proc.c Mon Sep 22 00:30:20 2003 +++ b/crypto/proc.c Mon Sep 22 00:30:20 2003 @@ -57,6 +57,7 @@ switch (alg->cra_flags & CRYPTO_ALG_TYPE_MASK) { case CRYPTO_ALG_TYPE_CIPHER: + seq_printf(m, "type : cipher\n"); seq_printf(m, "blocksize : %u\n", alg->cra_blocksize); seq_printf(m, "min keysize : %u\n", alg->cra_cipher.cia_min_keysize); @@ -65,9 +66,16 @@ break; case CRYPTO_ALG_TYPE_DIGEST: + seq_printf(m, "type : digest\n"); seq_printf(m, "blocksize : %u\n", alg->cra_blocksize); seq_printf(m, "digestsize : %u\n", alg->cra_digest.dia_digestsize); + break; + case CRYPTO_ALG_TYPE_COMPRESS: + seq_printf(m, "type : compression\n"); + break; + default: + seq_printf(m, "type : unknown\n"); break; } diff -Nru a/drivers/atm/Kconfig b/drivers/atm/Kconfig --- a/drivers/atm/Kconfig Mon Sep 22 00:30:21 2003 +++ b/drivers/atm/Kconfig Mon Sep 22 00:30:21 2003 @@ -241,7 +241,7 @@ config ATM_AMBASSADOR tristate "Madge Ambassador (Collage PCI 155 Server)" - depends on PCI && ATM && BROKEN_ON_SMP + depends on PCI && ATM help This is a driver for ATMizer based ATM card produced by Madge Networks Ltd. Say Y (or M to compile as a module named ambassador) diff -Nru a/drivers/atm/eni.c b/drivers/atm/eni.c --- a/drivers/atm/eni.c Mon Sep 22 00:30:19 2003 +++ b/drivers/atm/eni.c Mon Sep 22 00:30:19 2003 @@ -2272,8 +2272,6 @@ DPRINTK("eni_init_one\n"); - MOD_INC_USE_COUNT; /* @@@ we don't support unloading yet */ - if (pci_enable_device(pci_dev)) { error = -EIO; goto out0; @@ -2307,7 +2305,6 @@ out1: kfree(eni_dev); out0: - MOD_DEC_USE_COUNT; /* @@@ we don't support unloading yet */ return error; } @@ -2351,16 +2348,7 @@ } -static void __exit eni_cleanup(void) -{ - /* - * Well, there's no way to get rid of the driver yet, so we don't - * have to clean up, right ? :-) - */ -} - - module_init(eni_init); -module_exit(eni_cleanup); +/* @@@ since exit routine not defined, this module can not be unloaded */ MODULE_LICENSE("GPL"); diff -Nru a/drivers/atm/firestream.c b/drivers/atm/firestream.c --- a/drivers/atm/firestream.c Mon Sep 22 00:30:18 2003 +++ b/drivers/atm/firestream.c Mon Sep 22 00:30:18 2003 @@ -250,7 +250,7 @@ }; -struct reginit_item PHY_NTC_INIT[] __initdata = { +struct reginit_item PHY_NTC_INIT[] __devinitdata = { { PHY_CLEARALL, 0x40 }, { 0x12, 0x0001 }, { 0x13, 0x7605 }, @@ -1282,9 +1282,7 @@ .open = fs_open, .close = fs_close, .send = fs_send, -#if 0 .owner = THIS_MODULE, -#endif /* ioctl: fs_ioctl, */ /* getsockopt: fs_getsockopt, */ /* setsockopt: fs_setsockopt, */ @@ -1296,7 +1294,7 @@ }; -static void __init undocumented_pci_fix (struct pci_dev *pdev) +static void __devinit undocumented_pci_fix (struct pci_dev *pdev) { int tint; @@ -1320,13 +1318,13 @@ * PHY routines * **************************************************************************/ -static void __init write_phy (struct fs_dev *dev, int regnum, int val) +static void __devinit write_phy (struct fs_dev *dev, int regnum, int val) { submit_command (dev, &dev->hp_txq, QE_CMD_PRP_WR | QE_CMD_IMM_INQ, regnum, val, 0); } -static int __init init_phy (struct fs_dev *dev, struct reginit_item *reginit) +static int __devinit init_phy (struct fs_dev *dev, struct reginit_item *reginit) { int i; @@ -1382,7 +1380,7 @@ } } -static void __init *aligned_kmalloc (int size, int flags, int alignment) +static void __devinit *aligned_kmalloc (int size, int flags, int alignment) { void *t; @@ -1399,7 +1397,7 @@ return NULL; } -static int __init init_q (struct fs_dev *dev, +static int __devinit init_q (struct fs_dev *dev, struct queue *txq, int queue, int nentries, int is_rq) { int sz = nentries * sizeof (struct FS_QENTRY); @@ -1435,7 +1433,7 @@ } -static int __init init_fp (struct fs_dev *dev, +static int __devinit init_fp (struct fs_dev *dev, struct freepool *fp, int queue, int bufsize, int nr_buffers) { func_enter (); @@ -1655,7 +1653,7 @@ } #endif -static int __init fs_init (struct fs_dev *dev) +static int __devinit fs_init (struct fs_dev *dev) { struct pci_dev *pci_dev; int isr, to; @@ -1890,7 +1888,7 @@ return 0; } -static int __init firestream_init_one (struct pci_dev *pci_dev, +static int __devinit firestream_init_one (struct pci_dev *pci_dev, const struct pci_device_id *ent) { struct atm_dev *atm_dev; diff -Nru a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c --- a/drivers/atm/idt77252.c Mon Sep 22 00:30:21 2003 +++ b/drivers/atm/idt77252.c Mon Sep 22 00:30:21 2003 @@ -147,7 +147,8 @@ .phy_put = idt77252_phy_put, .phy_get = idt77252_phy_get, .change_qos = idt77252_change_qos, - .proc_read = idt77252_proc_read + .proc_read = idt77252_proc_read, + .owner = THIS_MODULE }; static struct idt77252_dev *idt77252_chain = NULL; @@ -2544,7 +2545,6 @@ } set_bit(ATM_VF_READY, &vcc->flags); - MOD_INC_USE_COUNT; up(&card->mutex); return 0; @@ -2631,7 +2631,6 @@ free_scq(card, vc->scq); } - MOD_DEC_USE_COUNT; up(&card->mutex); } diff -Nru a/drivers/atm/lanai.c b/drivers/atm/lanai.c --- a/drivers/atm/lanai.c Mon Sep 22 00:30:20 2003 +++ b/drivers/atm/lanai.c Mon Sep 22 00:30:20 2003 @@ -2242,7 +2242,6 @@ printk(KERN_ERR DEV_LABEL ": can't allocate interrupt\n"); goto error_vcctable; } - MOD_INC_USE_COUNT; /* At this point we can't fail */ mb(); /* Make sure that all that made it */ intr_enable(lanai, INT_ALL & ~(INT_PING | INT_WAKE)); /* 3.11: initialize loop mode (i.e. turn looping off) */ @@ -2312,7 +2311,6 @@ service_buffer_deallocate(lanai); iounmap((void *) lanai->base); kfree(lanai); - MOD_DEC_USE_COUNT; } /* close a vcc */ @@ -2686,7 +2684,8 @@ .phy_put = NULL, .phy_get = NULL, .change_qos = lanai_change_qos, - .proc_read = lanai_proc_read + .proc_read = lanai_proc_read, + .owner = THIS_MODULE }; /* initialize one probed card */ diff -Nru a/drivers/atm/uPD98402.c b/drivers/atm/uPD98402.c --- a/drivers/atm/uPD98402.c Mon Sep 22 00:30:20 2003 +++ b/drivers/atm/uPD98402.c Mon Sep 22 00:30:20 2003 @@ -246,7 +246,7 @@ }; -int __init uPD98402_init(struct atm_dev *dev) +int uPD98402_init(struct atm_dev *dev) { DPRINTK("phy_init\n"); dev->phy = &uPD98402_ops; @@ -254,22 +254,13 @@ } -#ifdef MODULE MODULE_LICENSE("GPL"); EXPORT_SYMBOL(uPD98402_init); - -int init_module(void) +static __init int uPD98402_module_init(void) { - MOD_INC_USE_COUNT; return 0; } - - -void cleanup_module(void) -{ - /* Nay */ -} - -#endif +module_init(uPD98402_module_init); +/* module_exit not defined so not unloadable */ diff -Nru a/drivers/atm/zatm.c b/drivers/atm/zatm.c --- a/drivers/atm/zatm.c Mon Sep 22 00:30:19 2003 +++ b/drivers/atm/zatm.c Mon Sep 22 00:30:19 2003 @@ -1619,11 +1619,10 @@ out: kfree(zatm_dev); - /* XXX: currently the driver is not unloadable.. */ - MOD_INC_USE_COUNT; return 0; } MODULE_LICENSE("GPL"); module_init(zatm_module_init); +/* module_exit not defined so not unloadable */ diff -Nru a/drivers/block/DAC960.c b/drivers/block/DAC960.c --- a/drivers/block/DAC960.c Mon Sep 22 00:30:23 2003 +++ b/drivers/block/DAC960.c Mon Sep 22 00:30:23 2003 @@ -71,7 +71,7 @@ { struct gendisk *disk = inode->i_bdev->bd_disk; DAC960_Controller_T *p = disk->queue->queuedata; - int drive_nr = (int)disk->private_data; + int drive_nr = (long)disk->private_data; if (p->FirmwareType == DAC960_V1_Controller) { if (p->V1.LogicalDriveInformation[drive_nr]. @@ -96,7 +96,7 @@ { struct gendisk *disk = inode->i_bdev->bd_disk; DAC960_Controller_T *p = disk->queue->queuedata; - int drive_nr = (int)disk->private_data; + int drive_nr = (long)disk->private_data; struct hd_geometry g, *loc = (struct hd_geometry *)arg; if (cmd != HDIO_GETGEO || !loc) @@ -136,7 +136,7 @@ static int DAC960_media_changed(struct gendisk *disk) { DAC960_Controller_T *p = disk->queue->queuedata; - int drive_nr = (int)disk->private_data; + int drive_nr = (long)disk->private_data; if (!p->LogicalDriveInitiallyAccessible[drive_nr]) return 1; @@ -146,7 +146,7 @@ static int DAC960_revalidate_disk(struct gendisk *disk) { DAC960_Controller_T *p = disk->queue->queuedata; - int unit = (int)disk->private_data; + int unit = (long)disk->private_data; set_capacity(disk, disk_size(p, unit)); return 0; @@ -1603,6 +1603,26 @@ DAC960PU/PD/PL 3.51 and above DAC960PU/PD/PL/P 2.73 and above */ +#if defined(CONFIG_ALPHA) + /* + DEC Alpha machines were often equipped with DAC960 cards that were + OEMed from Mylex, and had their own custom firmware. Version 2.70, + the last custom FW revision to be released by DEC for these older + controllers, appears to work quite well with this driver. + + Cards tested successfully were several versions each of the PD and + PU, called by DEC the KZPSC and KZPAC, respectively, and having + the Manufacturer Numbers (from Mylex), usually on a sticker on the + back of the board, of: + + KZPSC: D040347 (1-channel) or D040348 (2-channel) or D040349 (3-channel) + KZPAC: D040395 (1-channel) or D040396 (2-channel) or D040397 (3-channel) + */ +# define FIRMWARE_27X "2.70" +#else +# define FIRMWARE_27X "2.73" +#endif + if (Enquiry2->FirmwareID.MajorVersion == 0) { Enquiry2->FirmwareID.MajorVersion = @@ -1622,7 +1642,7 @@ (Controller->FirmwareVersion[0] == '3' && strcmp(Controller->FirmwareVersion, "3.51") >= 0) || (Controller->FirmwareVersion[0] == '2' && - strcmp(Controller->FirmwareVersion, "2.73") >= 0))) + strcmp(Controller->FirmwareVersion, FIRMWARE_27X) >= 0))) { DAC960_Failure(Controller, "FIRMWARE VERSION VERIFICATION"); DAC960_Error("Firmware Version = '%s'\n", Controller, @@ -2485,7 +2505,7 @@ disk->queue = RequestQueue; sprintf(disk->disk_name, "rd/c%dd%d", Controller->ControllerNumber, n); - sprintf(disk->devfs_name, "rd/c%dd%d", Controller->ControllerNumber, n); + sprintf(disk->devfs_name, "rd/host%d/target%d", Controller->ControllerNumber, n); disk->major = MajorNumber; disk->first_minor = n << DAC960_MaxPartitionsBits; disk->fops = &DAC960_BlockDeviceOperations; @@ -2708,12 +2728,12 @@ break; } - pci_set_drvdata(PCI_Device, (void *)((int)Controller->ControllerNumber)); + pci_set_drvdata(PCI_Device, (void *)((long)Controller->ControllerNumber)); for (i = 0; i < DAC960_MaxLogicalDrives; i++) { Controller->disks[i] = alloc_disk(1<disks[i]) goto Failure; - Controller->disks[i]->private_data = (void *)i; + Controller->disks[i]->private_data = (void *)((long)i); } init_waitqueue_head(&Controller->CommandWaitQueue); init_waitqueue_head(&Controller->HealthStatusWaitQueue); @@ -3097,7 +3117,7 @@ static void DAC960_Remove(struct pci_dev *PCI_Device) { - int Controller_Number = (int)pci_get_drvdata(PCI_Device); + int Controller_Number = (long)pci_get_drvdata(PCI_Device); DAC960_Controller_T *Controller = DAC960_Controllers[Controller_Number]; if (Controller != NULL) DAC960_FinalizeController(Controller); @@ -3272,7 +3292,7 @@ Command->CommandType = DAC960_WriteCommand; } Command->Completion = Request->waiting; - Command->LogicalDriveNumber = (int)Request->rq_disk->private_data; + Command->LogicalDriveNumber = (long)Request->rq_disk->private_data; Command->BlockNumber = Request->sector; Command->BlockCount = Request->nr_sectors; Command->Request = Request; diff -Nru a/drivers/block/Kconfig b/drivers/block/Kconfig --- a/drivers/block/Kconfig Mon Sep 22 00:30:19 2003 +++ b/drivers/block/Kconfig Mon Sep 22 00:30:19 2003 @@ -44,7 +44,7 @@ config BLK_DEV_PS2 tristate "PS/2 ESDI hard disk support" - depends on MCA + depends on MCA && MCA_LEGACY help Say Y here if you have a PS/2 machine with a MCA bus and an ESDI hard disk. diff -Nru a/drivers/block/acsi.c b/drivers/block/acsi.c --- a/drivers/block/acsi.c Mon Sep 22 00:30:25 2003 +++ b/drivers/block/acsi.c Mon Sep 22 00:30:25 2003 @@ -1729,10 +1729,14 @@ for( i = 0; i < NDevices; ++i ) { struct gendisk *disk = acsi_gendisk[i]; sprintf(disk->disk_name, "ad%c", 'a'+i); + aip = &acsi_info[NDevices]; + sprintf(disk->devfs_name, "ad/target%d/lun%d", aip->target, aip->lun); disk->major = ACSI_MAJOR; disk->first_minor = i << 4; - if (acsi_info[i].type != HARDDISK) + if (acsi_info[i].type != HARDDISK) { disk->minors = 1; + strcat(disk->devfs_name, "/disc"); + } disk->fops = &acsi_fops; disk->private_data = &acsi_info[i]; set_capacity(disk, acsi_info[i].size); diff -Nru a/drivers/block/as-iosched.c b/drivers/block/as-iosched.c --- a/drivers/block/as-iosched.c Mon Sep 22 00:30:17 2003 +++ b/drivers/block/as-iosched.c Mon Sep 22 00:30:17 2003 @@ -162,7 +162,7 @@ unsigned long expires; unsigned int is_sync; - enum arq_state state; /* debug only */ + enum arq_state state; }; #define RQ_DATA(rq) ((struct as_rq *) (rq)->elevator_private) @@ -344,11 +344,19 @@ } } -static struct as_rq *__as_add_arq_rb(struct as_data *ad, struct as_rq *arq) +/* + * Add the request to the rb tree if it is unique. If there is an alias (an + * existing request against the same sector), which can happen when using + * direct IO, then return the alias. + */ +static struct as_rq *as_add_arq_rb(struct as_data *ad, struct as_rq *arq) { struct rb_node **p = &ARQ_RB_ROOT(ad, arq)->rb_node; struct rb_node *parent = NULL; struct as_rq *__arq; + struct request *rq = arq->request; + + arq->rb_key = rq_rb_key(rq); while (*p) { parent = *p; @@ -363,28 +371,9 @@ } rb_link_node(&arq->rb_node, parent, p); - return 0; -} - -static void as_move_to_dispatch(struct as_data *ad, struct as_rq *arq); -/* - * Add the request to the rb tree if it is unique. If there is an alias (an - * existing request against the same sector), which can happen when using - * direct IO, then move the alias to the dispatch list and then add the - * request. - */ -static void as_add_arq_rb(struct as_data *ad, struct as_rq *arq) -{ - struct as_rq *alias; - struct request *rq = arq->request; - - arq->rb_key = rq_rb_key(rq); - - /* This can be caused by direct IO */ - while ((alias = __as_add_arq_rb(ad, arq))) - as_move_to_dispatch(ad, alias); - rb_insert_color(&arq->rb_node, ARQ_RB_ROOT(ad, arq)); + + return NULL; } static inline void as_del_arq_rb(struct as_data *ad, struct as_rq *arq) @@ -1021,6 +1010,7 @@ } } } + /* * as_remove_request is called when a driver has finished with a request. * This should be only called for dispatched requests, but for some reason @@ -1095,6 +1085,7 @@ */ static void as_move_to_dispatch(struct as_data *ad, struct as_rq *arq) { + struct list_head *insert; const int data_dir = arq->is_sync; BUG_ON(!ON_RB(&arq->rb_node)); @@ -1109,8 +1100,6 @@ ad->last_sector[data_dir] = arq->request->sector + arq->request->nr_sectors; - ad->nr_dispatched++; - if (data_dir == REQ_SYNC) { /* In case we have to anticipate after this */ copy_io_context(&ad->io_context, &arq->io_context); @@ -1131,12 +1120,33 @@ * take it off the sort and fifo list, add to dispatch queue */ as_remove_queued_request(ad->q, arq->request); - list_add_tail(&arq->request->queuelist, ad->dispatch); + + insert = ad->dispatch->prev; + + while (!list_empty(&arq->request->queuelist)) { + struct request *rq = list_entry_rq(arq->request->queuelist.next); + struct as_rq *__arq = RQ_DATA(rq); + + list_move_tail(&rq->queuelist, ad->dispatch); + + if (__arq->io_context && __arq->io_context->aic) + atomic_inc(&__arq->io_context->aic->nr_dispatched); + + WARN_ON(__arq->state != AS_RQ_QUEUED); + __arq->state = AS_RQ_DISPATCHED; + + ad->nr_dispatched++; + } + + list_add(&arq->request->queuelist, insert); if (arq->io_context && arq->io_context->aic) atomic_inc(&arq->io_context->aic->nr_dispatched); WARN_ON(arq->state != AS_RQ_QUEUED); arq->state = AS_RQ_DISPATCHED; + + ad->nr_dispatched++; + } /* @@ -1290,10 +1300,31 @@ } /* + * Add arq to a list behind alias + */ +static inline void +as_add_aliased_request(struct as_data *ad, struct as_rq *arq, struct as_rq *alias) +{ + /* + * Another request with the same start sector on the rbtree. + * Link this request to that sector. They are untangled in + * as_move_to_dispatch + */ + list_add_tail(&arq->request->queuelist, &alias->request->queuelist); + + /* + * Don't want to have to handle merges. + */ + as_remove_merge_hints(ad->q, arq); + +} + +/* * add arq to rbtree and fifo */ static void as_add_request(struct as_data *ad, struct as_rq *arq) { + struct as_rq *alias; int data_dir; if (rq_data_dir(arq->request) == READ @@ -1310,15 +1341,40 @@ as_update_iohist(arq->io_context->aic, arq->request); } - as_add_arq_rb(ad, arq); + alias = as_add_arq_rb(ad, arq); + if (!alias) { + /* + * set expire time (only used for reads) and add to fifo list + */ + arq->expires = jiffies + ad->fifo_expire[data_dir]; + list_add_tail(&arq->fifo, &ad->fifo_list[data_dir]); + + if (rq_mergeable(arq->request)) { + as_add_arq_hash(ad, arq); + + if (!ad->q->last_merge) + ad->q->last_merge = arq->request; + } + as_update_arq(ad, arq); /* keep state machine up to date */ + + } else { + as_add_aliased_request(ad, arq, alias); + /* + * have we been anticipating this request? + * or does it come from the same process as the one we are + * anticipating for? + */ + if (ad->antic_status == ANTIC_WAIT_REQ + || ad->antic_status == ANTIC_WAIT_NEXT) { + if (as_can_break_anticipation(ad, arq)) + as_antic_stop(ad); + } + } + + + - /* - * set expire time (only used for reads) and add to fifo list - */ - arq->expires = jiffies + ad->fifo_expire[data_dir]; - list_add_tail(&arq->fifo, &ad->fifo_list[data_dir]); arq->state = AS_RQ_QUEUED; - as_update_arq(ad, arq); /* keep state machine up to date */ } /* @@ -1352,6 +1408,11 @@ struct as_data *ad = q->elevator.elevator_data; struct as_rq *arq = RQ_DATA(rq); + /* barriers must flush the reorder queue */ + if (unlikely(rq->flags & (REQ_SOFTBARRIER | REQ_HARDBARRIER) + && where == ELEVATOR_INSERT_SORT)) + where = ELEVATOR_INSERT_BACK; + switch (where) { case ELEVATOR_INSERT_BACK: while (ad->next_arq[REQ_SYNC]) @@ -1359,7 +1420,9 @@ while (ad->next_arq[REQ_ASYNC]) as_move_to_dispatch(ad, ad->next_arq[REQ_ASYNC]); + list_add_tail(&rq->queuelist, ad->dispatch); + as_antic_stop(ad); break; case ELEVATOR_INSERT_FRONT: list_add(&rq->queuelist, ad->dispatch); @@ -1373,13 +1436,6 @@ printk("%s: bad insert point %d\n", __FUNCTION__,where); return; } - - if (rq_mergeable(rq)) { - as_add_arq_hash(ad, arq); - - if (!q->last_merge) - q->last_merge = rq; - } } /* @@ -1494,8 +1550,18 @@ * if the merge was a front merge, we need to reposition request */ if (rq_rb_key(req) != arq->rb_key) { + struct as_rq *alias; + + /* + * Note! We should really be moving any old aliased requests + * off this request and try to insert them into the rbtree. We + * currently don't bother. Ditto the next function. + */ as_del_arq_rb(ad, arq); - as_add_arq_rb(ad, arq); + if ((alias = as_add_arq_rb(ad, arq)) ) { + list_del_init(&arq->fifo); + as_add_aliased_request(ad, arq, alias); + } /* * Note! At this stage of this and the next function, our next * request may not be optimal - eg the request may have "grown" @@ -1525,8 +1591,12 @@ as_add_arq_hash(ad, arq); if (rq_rb_key(req) != arq->rb_key) { + struct as_rq *alias; as_del_arq_rb(ad, arq); - as_add_arq_rb(ad, arq); + if ((alias = as_add_arq_rb(ad, arq)) ) { + list_del_init(&arq->fifo); + as_add_aliased_request(ad, arq, alias); + } } /* @@ -1865,7 +1935,7 @@ .elevator_exit_fn = as_exit, .elevator_ktype = &as_ktype, - .elevator_name = "anticipatory scheduling", + .elevator_name = "anticipatory", }; EXPORT_SYMBOL(iosched_as); diff -Nru a/drivers/block/cciss.c b/drivers/block/cciss.c --- a/drivers/block/cciss.c Mon Sep 22 00:30:24 2003 +++ b/drivers/block/cciss.c Mon Sep 22 00:30:24 2003 @@ -243,7 +243,7 @@ * Get us a file in /proc/cciss that says something about each controller. * Create /proc/cciss if it doesn't exist yet. */ -static void __init cciss_procinit(int i) +static void __devinit cciss_procinit(int i) { struct proc_dir_entry *pde; @@ -754,16 +754,24 @@ status = -ENOMEM; goto cleanup1; } - if (copy_from_user(ioc, (void *) arg, sizeof(*ioc))) - return -EFAULT; + if (copy_from_user(ioc, (void *) arg, sizeof(*ioc))) { + status = -EFAULT; + goto cleanup1; + } if ((ioc->buf_size < 1) && - (ioc->Request.Type.Direction != XFER_NONE)) - return -EINVAL; + (ioc->Request.Type.Direction != XFER_NONE)) { + status = -EINVAL; + goto cleanup1; + } /* Check kmalloc limits using all SGs */ - if (ioc->malloc_size > MAX_KMALLOC_SIZE) - return -EINVAL; - if (ioc->buf_size > ioc->malloc_size * MAXSGENTRIES) - return -EINVAL; + if (ioc->malloc_size > MAX_KMALLOC_SIZE) { + status = -EINVAL; + goto cleanup1; + } + if (ioc->buf_size > ioc->malloc_size * MAXSGENTRIES) { + status = -EINVAL; + goto cleanup1; + } buff = (unsigned char **) kmalloc(MAXSGENTRIES * sizeof(char *), GFP_KERNEL); if (!buff) { @@ -2427,7 +2435,7 @@ * stealing all these major device numbers. * returns the number of block devices registered. */ -static int __init cciss_init_one(struct pci_dev *pdev, +static int __devinit cciss_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) { request_queue_t *q; @@ -2531,6 +2539,7 @@ struct gendisk *disk = hba[i]->gendisk[j]; sprintf(disk->disk_name, "cciss/c%dd%d", i, j); + sprintf(disk->devfs_name, "cciss/host%d/target%d", i, j); disk->major = COMPAQ_CISS_MAJOR + i; disk->first_minor = j << NWD_SHIFT; disk->fops = &cciss_fops; diff -Nru a/drivers/block/deadline-iosched.c b/drivers/block/deadline-iosched.c --- a/drivers/block/deadline-iosched.c Mon Sep 22 00:30:24 2003 +++ b/drivers/block/deadline-iosched.c Mon Sep 22 00:30:24 2003 @@ -287,8 +287,11 @@ * add drq to rbtree and fifo */ static inline void -deadline_add_request(struct deadline_data *dd, struct deadline_rq *drq) +deadline_add_request(struct request_queue *q, struct request *rq) { + struct deadline_data *dd = q->elevator.elevator_data; + struct deadline_rq *drq = RQ_DATA(rq); + const int data_dir = rq_data_dir(drq->request); deadline_add_drq_rb(dd, drq); @@ -297,6 +300,13 @@ */ drq->expires = jiffies + dd->fifo_expire[data_dir]; list_add_tail(&drq->fifo, &dd->fifo_list[data_dir]); + + if (rq_mergeable(rq)) { + deadline_add_drq_hash(dd, drq); + + if (!q->last_merge) + q->last_merge = rq; + } } /* @@ -616,7 +626,11 @@ deadline_insert_request(request_queue_t *q, struct request *rq, int where) { struct deadline_data *dd = q->elevator.elevator_data; - struct deadline_rq *drq = RQ_DATA(rq); + + /* barriers must flush the reorder queue */ + if (unlikely(rq->flags & (REQ_SOFTBARRIER | REQ_HARDBARRIER) + && where == ELEVATOR_INSERT_SORT)) + where = ELEVATOR_INSERT_BACK; switch (where) { case ELEVATOR_INSERT_BACK: @@ -629,18 +643,11 @@ break; case ELEVATOR_INSERT_SORT: BUG_ON(!blk_fs_request(rq)); - deadline_add_request(dd, drq); + deadline_add_request(q, rq); break; default: printk("%s: bad insert point %d\n", __FUNCTION__,where); return; - } - - if (rq_mergeable(rq)) { - deadline_add_drq_hash(dd, drq); - - if (!q->last_merge) - q->last_merge = rq; } } diff -Nru a/drivers/block/floppy.c b/drivers/block/floppy.c --- a/drivers/block/floppy.c Mon Sep 22 00:30:19 2003 +++ b/drivers/block/floppy.c Mon Sep 22 00:30:19 2003 @@ -219,6 +219,7 @@ */ static spinlock_t floppy_lock = SPIN_LOCK_UNLOCKED; +static struct completion device_release; static unsigned short virtual_dma_port=0x3f0; irqreturn_t floppy_interrupt(int irq, void *dev_id, struct pt_regs * regs); @@ -2152,18 +2153,20 @@ static void bad_flp_intr(void) { + int err_count; + if (probing){ DRS->probed_format++; if (!next_valid_format()) return; } - (*errors)++; - INFBOUND(DRWE->badness, *errors); - if (*errors > DP->max_errors.abort) + err_count = ++(*errors); + INFBOUND(DRWE->badness, err_count); + if (err_count > DP->max_errors.abort) cont->done(0); - if (*errors > DP->max_errors.reset) + if (err_count > DP->max_errors.reset) FDCS->reset = 1; - else if (*errors > DP->max_errors.recal) + else if (err_count > DP->max_errors.recal) DRS->track = NEED_2_RECAL; } @@ -4203,9 +4206,17 @@ static int have_no_fdc= -ENODEV; +static void floppy_device_release(struct device *dev) +{ + complete(&device_release); +} + static struct platform_device floppy_device = { .name = "floppy", .id = 0, + .dev = { + .release = floppy_device_release, + } }; static struct kobject *floppy_find(dev_t dev, int *part, void *data) @@ -4576,11 +4587,15 @@ void cleanup_module(void) { int drive; - + + init_completion(&device_release); platform_device_unregister(&floppy_device); blk_unregister_region(MKDEV(FLOPPY_MAJOR, 0), 256); unregister_blkdev(FLOPPY_MAJOR, "fd"); + for (drive = 0; drive < N_DRIVE; drive++) { + del_timer_sync(&motor_off_timer[drive]); + if ((allowed_drive_mask & (1 << drive)) && fdc_state[FDC(drive)].version != FDC_NONE) { del_gendisk(disks[drive]); @@ -4590,9 +4605,17 @@ } devfs_remove("floppy"); + del_timer_sync(&fd_timeout); + del_timer_sync(&fd_timer); blk_cleanup_queue(floppy_queue); + + if (usage_count) + floppy_release_irq_and_dma(); + /* eject disk, if any */ fd_eject(0); + + wait_for_completion(&device_release); } MODULE_PARM(floppy,"s"); diff -Nru a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c --- a/drivers/block/ll_rw_blk.c Mon Sep 22 00:30:18 2003 +++ b/drivers/block/ll_rw_blk.c Mon Sep 22 00:30:18 2003 @@ -458,16 +458,19 @@ if (!bqt) return; - BUG_ON(bqt->busy); - BUG_ON(!list_empty(&bqt->busy_list)); + if (atomic_dec_and_test(&bqt->refcnt)) { + BUG_ON(bqt->busy); + BUG_ON(!list_empty(&bqt->busy_list)); - kfree(bqt->tag_index); - bqt->tag_index = NULL; + kfree(bqt->tag_index); + bqt->tag_index = NULL; - kfree(bqt->tag_map); - bqt->tag_map = NULL; + kfree(bqt->tag_map); + bqt->tag_map = NULL; + + kfree(bqt); + } - kfree(bqt); q->queue_tags = NULL; q->queue_flags &= ~(1 << QUEUE_FLAG_QUEUED); } @@ -503,6 +506,9 @@ for (i = depth; i < bits * BLK_TAGS_PER_LONG; i++) __set_bit(i, tags->tag_map); + INIT_LIST_HEAD(&tags->busy_list); + tags->busy = 0; + atomic_set(&tags->refcnt, 1); return 0; fail: kfree(tags->tag_index); @@ -514,19 +520,18 @@ * @q: the request queue for the device * @depth: the maximum queue depth supported **/ -int blk_queue_init_tags(request_queue_t *q, int depth) +int blk_queue_init_tags(request_queue_t *q, int depth, + struct blk_queue_tag *tags) { - struct blk_queue_tag *tags; - - tags = kmalloc(sizeof(struct blk_queue_tag),GFP_ATOMIC); - if (!tags) - goto fail; - - if (init_tag_map(q, tags, depth)) - goto fail; - - INIT_LIST_HEAD(&tags->busy_list); - tags->busy = 0; + if (!tags) { + tags = kmalloc(sizeof(struct blk_queue_tag), GFP_ATOMIC); + if (!tags) + goto fail; + + if (init_tag_map(q, tags, depth)) + goto fail; + } else + atomic_inc(&tags->refcnt); /* * assign it, all done @@ -1016,7 +1021,13 @@ void blk_plug_device(request_queue_t *q) { WARN_ON(!irqs_disabled()); - if (!blk_queue_plugged(q)) { + + /* + * don't plug a stopped queue, it must be paired with blk_start_queue() + * which will restart the queueing + */ + if (!blk_queue_plugged(q) + && !test_bit(QUEUE_FLAG_STOPPED, &q->queue_flags)) { spin_lock(&blk_plug_lock); list_add_tail(&q->plug_list, &blk_plug_list); mod_timer(&q->unplug_timer, jiffies + q->unplug_delay); diff -Nru a/drivers/block/loop.c b/drivers/block/loop.c --- a/drivers/block/loop.c Mon Sep 22 00:30:22 2003 +++ b/drivers/block/loop.c Mon Sep 22 00:30:22 2003 @@ -757,7 +757,7 @@ blk_queue_merge_bvec(lo->lo_queue, q->merge_bvec_fn); } - kernel_thread(loop_thread, lo, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + kernel_thread(loop_thread, lo, CLONE_KERNEL); down(&lo->lo_sem); fput(file); diff -Nru a/drivers/block/ps2esdi.c b/drivers/block/ps2esdi.c --- a/drivers/block/ps2esdi.c Mon Sep 22 00:30:17 2003 +++ b/drivers/block/ps2esdi.c Mon Sep 22 00:30:17 2003 @@ -62,8 +62,6 @@ static void reset_ctrl(void); -int ps2esdi_init(void); - static int ps2esdi_geninit(void); static void do_ps2esdi_request(request_queue_t * q); @@ -141,7 +139,7 @@ static struct gendisk *ps2esdi_gendisk[2]; /* initialization routine called by ll_rw_blk.c */ -int __init ps2esdi_init(void) +static int __init ps2esdi_init(void) { int error = 0; @@ -169,9 +167,11 @@ return 0; } /* ps2esdi_init */ +#ifndef MODULE + module_init(ps2esdi_init); -#ifdef MODULE +#else static int cyl[MAX_HD] = {-1,-1}; static int head[MAX_HD] = {-1, -1}; @@ -187,7 +187,7 @@ int drive; for(drive = 0; drive < MAX_HD; drive++) { - struct ps2_esdi_i_struct *info = &ps2esdi_info[drive]; + struct ps2esdi_i_struct *info = &ps2esdi_info[drive]; if (cyl[drive] != -1) { info->cyl = info->lzone = cyl[drive]; @@ -204,6 +204,7 @@ void cleanup_module(void) { + int i; if(ps2esdi_slot) { mca_mark_as_unused(ps2esdi_slot); mca_set_adapter_procfn(ps2esdi_slot, NULL, NULL); @@ -421,6 +422,7 @@ disk->major = PS2ESDI_MAJOR; disk->first_minor = i<<6; sprintf(disk->disk_name, "ed%c", 'a'+i); + sprintf(disk->devfs_name, "ed/target%d", i); disk->fops = &ps2esdi_fops; ps2esdi_gendisk[i] = disk; } diff -Nru a/drivers/block/umem.c b/drivers/block/umem.c --- a/drivers/block/umem.c Mon Sep 22 00:30:25 2003 +++ b/drivers/block/umem.c Mon Sep 22 00:30:25 2003 @@ -52,7 +52,6 @@ #include /* O_ACCMODE */ #include /* HDIO_GETGEO */ -#include #include @@ -1204,11 +1203,10 @@ goto out; } - devfs_mk_dir("umem"); - for (i = 0; i < num_cards; i++) { struct gendisk *disk = mm_gendisk[i]; sprintf(disk->disk_name, "umem%c", 'a'+i); + sprintf(disk->devfs_name, "umem/card%d", i); spin_lock_init(&cards[i].lock); disk->major = major_nr; disk->first_minor = i << MM_SHIFT; @@ -1245,7 +1243,6 @@ del_gendisk(mm_gendisk[i]); put_disk(mm_gendisk[i]); } - devfs_remove("umem"); pci_unregister_driver(&mm_pci_driver); diff -Nru a/drivers/block/xd.c b/drivers/block/xd.c --- a/drivers/block/xd.c Mon Sep 22 00:30:24 2003 +++ b/drivers/block/xd.c Mon Sep 22 00:30:24 2003 @@ -45,7 +45,6 @@ #include #include #include -#include #include #include @@ -182,7 +181,6 @@ if (!xd_queue) goto out1a; - devfs_mk_dir("xd"); if (xd_detect(&controller,&address)) { printk("Detected a%s controller (type %d) at address %06x\n", @@ -213,6 +211,7 @@ disk->major = XT_DISK_MAJOR; disk->first_minor = i<<6; sprintf(disk->disk_name, "xd%c", i+'a'); + sprintf(disk->devfs_name, "xd/target%d", i); disk->fops = &xd_fops; disk->private_data = p; disk->queue = xd_queue; @@ -249,7 +248,6 @@ out3: release_region(xd_iobase,4); out2: - devfs_remove("xd"); blk_cleanup_queue(xd_queue); out1a: unregister_blkdev(XT_DISK_MAJOR, "xd"); @@ -1064,7 +1062,6 @@ } blk_cleanup_queue(xd_queue); release_region(xd_iobase,4); - devfs_remove("xd"); if (xd_drives) { free_irq(xd_irq, NULL); free_dma(xd_dma); diff -Nru a/drivers/block/z2ram.c b/drivers/block/z2ram.c --- a/drivers/block/z2ram.c Mon Sep 22 00:30:23 2003 +++ b/drivers/block/z2ram.c Mon Sep 22 00:30:23 2003 @@ -354,6 +354,7 @@ z2ram_gendisk->first_minor = 0; z2ram_gendisk->fops = &z2_fops; sprintf(z2ram_gendisk->disk_name, "z2ram"); + strcpy(z2ram_gendisk->devfs_name, z2ram_gendisk->disk_name); z2ram_gendisk->queue = z2_queue; add_disk(z2ram_gendisk); diff -Nru a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c --- a/drivers/bluetooth/hci_usb.c Mon Sep 22 00:30:24 2003 +++ b/drivers/bluetooth/hci_usb.c Mon Sep 22 00:30:24 2003 @@ -302,7 +302,8 @@ hci_usb_bulk_rx_submit(husb); #ifdef CONFIG_BT_USB_SCO - hci_usb_isoc_rx_submit(husb); + if (husb->isoc_iface) + hci_usb_isoc_rx_submit(husb); #endif } else { clear_bit(HCI_RUNNING, &hdev->flags); diff -Nru a/drivers/cdrom/Kconfig b/drivers/cdrom/Kconfig --- a/drivers/cdrom/Kconfig Mon Sep 22 00:30:24 2003 +++ b/drivers/cdrom/Kconfig Mon Sep 22 00:30:24 2003 @@ -267,7 +267,7 @@ config CDU535 tristate "Sony CDU535 CDROM support" - depends on CD_NO_IDESCSI && BROKEN_ON_SMP + depends on CD_NO_IDESCSI ---help--- This is the driver for the older Sony CDU-535 and CDU-531 CD-ROM drives. Please read the file . diff -Nru a/drivers/cdrom/gscd.c b/drivers/cdrom/gscd.c --- a/drivers/cdrom/gscd.c Mon Sep 22 00:30:18 2003 +++ b/drivers/cdrom/gscd.c Mon Sep 22 00:30:18 2003 @@ -965,7 +965,7 @@ gscd_queue = blk_init_queue(do_gscd_request, &gscd_lock); if (!gscd_queue) { - ret -ENOMEM; + ret = -ENOMEM; goto err_out3; } diff -Nru a/drivers/cdrom/sonycd535.c b/drivers/cdrom/sonycd535.c --- a/drivers/cdrom/sonycd535.c Mon Sep 22 00:30:20 2003 +++ b/drivers/cdrom/sonycd535.c Mon Sep 22 00:30:20 2003 @@ -36,6 +36,10 @@ * module_init & module_exit. * Torben Mathiasen * + * September 2003 - Fix SMP support by removing cli/sti calls. + * Using spinlocks with a wait_queue instead. + * Felipe Damasio + * * Things to do: * - handle errors and status better, put everything into a single word * - use interrupts (code mostly there, but a big hole still missing) @@ -340,10 +344,14 @@ if (sony535_irq_used <= 0) { /* poll */ yield(); } else { /* Interrupt driven */ - cli(); + DEFINE_WAIT(wait); + + spin_lock_irq(&sonycd535_lock); enable_interrupts(); - interruptible_sleep_on(&cdu535_irq_wait); - sti(); + prepare_to_wait(&cdu535_irq_wait, &wait, TASK_INTERRUPTIBLE); + spin_unlock_irq(&sonycd535_lock); + schedule(); + finish_wait(&cdu535_irq_wait, &wait); } } @@ -804,14 +812,14 @@ block = req->sector; nsect = req->nr_sectors; - if (!(req->flags & REQ_CMD)) - continue; /* FIXME */ + if (!blk_fs_request(req)) { + end_request(req, 0); + continue; + } if (rq_data_dir(req) == WRITE) { end_request(req, 0); continue; } - if (rq_data_dir(req) != READ) - panic("Unknown SONY CD cmd"); /* * If the block address is invalid or the request goes beyond * the end of the media, return an error. @@ -888,8 +896,10 @@ } if (readStatus == BAD_STATUS) { /* Sleep for a while, then retry */ - current->state = TASK_INTERRUPTIBLE; + set_current_state(TASK_INTERRUPTIBLE); + spin_unlock_irq(&sonycd535_lock); schedule_timeout(RETRY_FOR_BAD_STATUS*HZ/10); + spin_lock_irq(&sonycd535_lock); } #if DEBUG > 0 printk(CDU535_MESSAGE_NAME @@ -1473,7 +1483,7 @@ /* look for the CD-ROM, follows the procedure in the DOS driver */ inb(select_unit_reg); /* wait for 40 18 Hz ticks (reverse-engineered from DOS driver) */ - current->state = TASK_INTERRUPTIBLE; + set_current_state(TASK_INTERRUPTIBLE); schedule_timeout((HZ+17)*40/18); inb(result_reg); diff -Nru a/drivers/char/Kconfig b/drivers/char/Kconfig --- a/drivers/char/Kconfig Mon Sep 22 00:30:18 2003 +++ b/drivers/char/Kconfig Mon Sep 22 00:30:18 2003 @@ -352,7 +352,7 @@ config ISTALLION tristate "Stallion EC8/64, ONboard, Brumby support" - depends on STALDRV && BROKEN + depends on STALDRV && BROKEN_ON_SMP help If you have an EasyConnection 8/64, ONboard, Brumby or Stallion serial multiport card, say Y here. Make sure to read @@ -959,6 +959,7 @@ config MWAVE tristate "ACP Modem (Mwave) support" depends on X86 + select SERIAL_8250 ---help--- The ACP modem (Mwave) for Linux is a WinModem. It is composed of a kernel driver and a user level application. Together these components @@ -1001,6 +1002,7 @@ config HANGCHECK_TIMER tristate "Hangcheck timer" + depends on X86_64 || X86 help The hangcheck-timer module detects when the system has gone out to lunch past a certain margin. It can reboot the system diff -Nru a/drivers/char/Makefile b/drivers/char/Makefile --- a/drivers/char/Makefile Mon Sep 22 00:30:24 2003 +++ b/drivers/char/Makefile Mon Sep 22 00:30:24 2003 @@ -7,7 +7,7 @@ # FONTMAPFILE = cp437.uni -obj-y += mem.o tty_io.o n_tty.o tty_ioctl.o pty.o misc.o random.o +obj-y += mem.o random.o tty_io.o n_tty.o tty_ioctl.o pty.o misc.o obj-$(CONFIG_VT) += vt_ioctl.o vc_screen.o consolemap.o consolemap_deftbl.o selection.o keyboard.o obj-$(CONFIG_HW_CONSOLE) += vt.o defkeymap.o diff -Nru a/drivers/char/agp/Kconfig b/drivers/char/agp/Kconfig --- a/drivers/char/agp/Kconfig Mon Sep 22 00:30:22 2003 +++ b/drivers/char/agp/Kconfig Mon Sep 22 00:30:22 2003 @@ -80,8 +80,8 @@ tristate "Intel 440LX/BX/GX, I8xx and E7x05 chipset support" depends on AGP && X86 && !X86_64 help - This option gives you AGP support for the GLX component of - XFree86 4.x on Intel 440LX/BX/GX, 815, 820, 830, 840, 845, 850, 860 + This option gives you AGP support for the GLX component of XFree86 4.x + on Intel 440LX/BX/GX, 815, 820, 830, 840, 845, 850, 860, 875, E7205 and E7505 chipsets and full support for the 810, 815, 830M, 845G, 852GM, 855GM and 865G integrated graphics chipsets. diff -Nru a/drivers/char/agp/alpha-agp.c b/drivers/char/agp/alpha-agp.c --- a/drivers/char/agp/alpha-agp.c Mon Sep 22 00:30:23 2003 +++ b/drivers/char/agp/alpha-agp.c Mon Sep 22 00:30:23 2003 @@ -183,7 +183,7 @@ alpha_bridge->dev = pdev; alpha_bridge->mode = agp->capability.lw; - printk(KERN_INFO "Detected AGP on hose %d\n", agp->hose->index); + printk(KERN_INFO PFX "Detected AGP on hose %d\n", agp->hose->index); return agp_add_bridge(alpha_bridge); fail: diff -Nru a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c --- a/drivers/char/agp/amd64-agp.c Mon Sep 22 00:30:23 2003 +++ b/drivers/char/agp/amd64-agp.c Mon Sep 22 00:30:23 2003 @@ -8,6 +8,7 @@ * work is done in the northbridge(s). */ +#include #include #include #include @@ -252,15 +253,15 @@ static int not_first_call; u32 pfn, c; if (aper == 0) { - printk(KERN_ERR "No aperture\n"); + printk(KERN_ERR PFX "No aperture\n"); return 0; } if (size < 32*1024*1024) { - printk(KERN_ERR "Aperture too small (%d MB)\n", size>>20); + printk(KERN_ERR PFX "Aperture too small (%d MB)\n", size>>20); return 0; } if (aper + size > 0xffffffff) { - printk(KERN_ERR "Aperture out of bounds\n"); + printk(KERN_ERR PFX "Aperture out of bounds\n"); return 0; } pfn = aper >> PAGE_SHIFT; @@ -268,7 +269,7 @@ if (!pfn_valid(pfn + c)) break; if (!PageReserved(pfn_to_page(pfn + c))) { - printk(KERN_ERR "Aperture pointing to RAM\n"); + printk(KERN_ERR PFX "Aperture pointing to RAM\n"); return 0; } } @@ -279,7 +280,7 @@ Maybe better to use pci_assign_resource/pci_enable_device instead trusting the bridges? */ if (!not_first_call && request_mem_region(aper, size, "aperture") < 0) { - printk(KERN_ERR "Aperture conflicts with PCI mapping.\n"); + printk(KERN_ERR PFX "Aperture conflicts with PCI mapping.\n"); return 0; } @@ -328,7 +329,7 @@ pci_read_config_dword(agp, 0x10, &aper_low); pci_read_config_dword(agp, 0x14, &aper_hi); aper = (aper_low & ~((1<<22)-1)) | ((u64)aper_hi << 32); - printk(KERN_INFO "Aperture from AGP @ %Lx size %u MB\n", aper, 32 << order); + printk(KERN_INFO PFX "Aperture from AGP @ %Lx size %u MB\n", aper, 32 << order); if (order < 0 || !aperture_valid(aper, (32*1024*1024)< 0) { struct pci_dev *dev; if (!agp_try_unsupported && !agp_try_unsupported_boot) { - printk(KERN_INFO "No supported AGP bridge found.\n"); + printk(KERN_INFO PFX "No supported AGP bridge found.\n"); #ifdef MODULE - printk(KERN_INFO "You can try agp_try_unsupported=1\n"); + printk(KERN_INFO PFX "You can try agp_try_unsupported=1\n"); #else - printk(KERN_INFO "You can boot with agp=try_unsupported\n"); + printk(KERN_INFO PFX "You can boot with agp=try_unsupported\n"); #endif return -ENODEV; } diff -Nru a/drivers/char/agp/ati-agp.c b/drivers/char/agp/ati-agp.c --- a/drivers/char/agp/ati-agp.c Mon Sep 22 00:30:23 2003 +++ b/drivers/char/agp/ati-agp.c Mon Sep 22 00:30:23 2003 @@ -214,7 +214,7 @@ /* pci_read_config_dword(agp_bridge.dev, AGP_APBASE, &temp); agp_bridge.gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK); - printk(KERN_INFO "IGP320 gart_bus_addr: %x\n", agp_bridge.gart_bus_addr); + printk(KERN_INFO PFX "IGP320 gart_bus_addr: %x\n", agp_bridge.gart_bus_addr); */ OUTREG32(ati_generic_private.registers, ATI_GART_FEATURE_ID, 0x60000); @@ -226,8 +226,6 @@ OUTREG32(ati_generic_private.registers, ATI_GART_BASE, agp_bridge->gatt_bus_addr); - /* Flush the tlb */ - OUTREG32(ati_generic_private.registers, ATI_GART_CACHE_CNTRL, 1); return 0; } @@ -491,7 +489,7 @@ agp_put_bridge(bridge); } -static struct pci_device_id agp_ati_pci_table[] __initdata = { +static struct pci_device_id agp_ati_pci_table[] = { { .class = (PCI_CLASS_BRIDGE_HOST << 8), .class_mask = ~0, diff -Nru a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c --- a/drivers/char/agp/backend.c Mon Sep 22 00:30:23 2003 +++ b/drivers/char/agp/backend.c Mon Sep 22 00:30:23 2003 @@ -26,7 +26,6 @@ * TODO: * - Allocate more than order 0 pages to avoid too much linear map splitting. */ -#include #include #include #include @@ -34,6 +33,7 @@ #include #include #include +#include #include #include #include "agp.h" @@ -318,6 +318,7 @@ { } +#ifdef MODULE static __init int agp_setup(char *s) { if (!strcmp(s,"off")) @@ -327,6 +328,7 @@ return 1; } __setup("agp=", agp_setup); +#endif MODULE_AUTHOR("Dave Jones "); MODULE_DESCRIPTION("AGP GART driver"); diff -Nru a/drivers/char/agp/hp-agp.c b/drivers/char/agp/hp-agp.c --- a/drivers/char/agp/hp-agp.c Mon Sep 22 00:30:24 2003 +++ b/drivers/char/agp/hp-agp.c Mon Sep 22 00:30:24 2003 @@ -42,6 +42,8 @@ /* AGP bridge need not be PCI device, but DRM thinks it is. */ static struct pci_dev fake_bridge_dev; +static int hp_zx1_gart_found; + static struct aper_size_info_fixed hp_zx1_sizes[] = { {0, 0, 0}, /* filled in by hp_zx1_fetch_size() */ @@ -386,8 +388,6 @@ struct agp_bridge_data *bridge; int error; - printk(KERN_INFO PFX "Detected HP ZX1 AGP chipset (ioc=%lx, lba=%lx)\n", ioc_hpa, lba_hpa); - error = hp_zx1_ioc_init(ioc_hpa, lba_hpa); if (error) return error; @@ -416,7 +416,7 @@ status = hp_acpi_csr_space(obj, &lba_hpa, &length); if (ACPI_FAILURE(status)) - return 1; + return AE_OK; /* Look for an enclosing IOC scope and find its CSR space */ handle = obj; @@ -436,7 +436,7 @@ else { printk(KERN_ERR PFX "Detected HP ZX1 " "AGP LBA but no IOC.\n"); - return status; + return AE_OK; } } } @@ -446,22 +446,28 @@ } while (ACPI_SUCCESS(status)); if (hp_zx1_setup(sba_hpa + HP_ZX1_IOC_OFFSET, lba_hpa)) - return 1; - return 0; + return AE_OK; + + printk(KERN_INFO PFX "Detected HP ZX1 %s AGP chipset (ioc=%lx, lba=%lx)\n", + (char *) context, sba_hpa + HP_ZX1_IOC_OFFSET, lba_hpa); + + hp_zx1_gart_found = 1; + return AE_CTRL_TERMINATE; } static int __init agp_hp_init (void) { - acpi_status status; - status = acpi_get_devices("HWP0003", zx1_gart_probe, "HWP0003 AGP LBA", NULL); - if (!(ACPI_SUCCESS(status))) { - agp_bridge->type = NOT_SUPPORTED; - printk(KERN_INFO PFX "Failed to initialize zx1 AGP.\n"); - return -ENODEV; - } - return 0; + acpi_get_devices("HWP0003", zx1_gart_probe, "HWP0003", NULL); + if (hp_zx1_gart_found) + return 0; + + acpi_get_devices("HWP0007", zx1_gart_probe, "HWP0007", NULL); + if (hp_zx1_gart_found) + return 0; + + return -ENODEV; } static void __exit diff -Nru a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c --- a/drivers/char/agp/intel-agp.c Mon Sep 22 00:30:21 2003 +++ b/drivers/char/agp/intel-agp.c Mon Sep 22 00:30:21 2003 @@ -445,7 +445,7 @@ num_entries = A_SIZE_FIX(temp)->num_entries; if (pg_start < intel_i830_private.gtt_entries) { - printk (KERN_DEBUG "pg_start == 0x%.8lx,intel_i830_private.gtt_entries == 0x%.8x\n", + printk (KERN_DEBUG PFX "pg_start == 0x%.8lx,intel_i830_private.gtt_entries == 0x%.8x\n", pg_start,intel_i830_private.gtt_entries); printk (KERN_INFO PFX "Trying to insert into local/stolen memory\n"); diff -Nru a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c --- a/drivers/char/agp/nvidia-agp.c Mon Sep 22 00:30:19 2003 +++ b/drivers/char/agp/nvidia-agp.c Mon Sep 22 00:30:19 2003 @@ -196,7 +196,7 @@ pci_read_config_dword(nvidia_private.dev_1, NVIDIA_1_WBC, &wbc_reg); if ((signed)(end - jiffies) <= 0) { - printk(KERN_ERR + printk(KERN_ERR PFX "TLB flush took more than 3 seconds.\n"); } } while (wbc_reg & nvidia_private.wbc_mask); diff -Nru a/drivers/char/agp/sis-agp.c b/drivers/char/agp/sis-agp.c --- a/drivers/char/agp/sis-agp.c Mon Sep 22 00:30:18 2003 +++ b/drivers/char/agp/sis-agp.c Mon Sep 22 00:30:18 2003 @@ -215,7 +215,7 @@ agp_put_bridge(bridge); } -static struct pci_device_id agp_sis_pci_table[] __initdata = { +static struct pci_device_id agp_sis_pci_table[] = { { .class = (PCI_CLASS_BRIDGE_HOST << 8), .class_mask = ~0, diff -Nru a/drivers/char/agp/uninorth-agp.c b/drivers/char/agp/uninorth-agp.c --- a/drivers/char/agp/uninorth-agp.c Mon Sep 22 00:30:22 2003 +++ b/drivers/char/agp/uninorth-agp.c Mon Sep 22 00:30:22 2003 @@ -350,7 +350,7 @@ agp_put_bridge(bridge); } -static struct pci_device_id agp_uninorth_pci_table[] __initdata = { +static struct pci_device_id agp_uninorth_pci_table[] = { { .class = (PCI_CLASS_BRIDGE_HOST << 8), .class_mask = ~0, diff -Nru a/drivers/char/agp/via-agp.c b/drivers/char/agp/via-agp.c --- a/drivers/char/agp/via-agp.c Mon Sep 22 00:30:24 2003 +++ b/drivers/char/agp/via-agp.c Mon Sep 22 00:30:24 2003 @@ -432,7 +432,7 @@ agp_put_bridge(bridge); } -static struct pci_device_id agp_via_pci_table[] __initdata = { +static struct pci_device_id agp_via_pci_table[] = { { .class = (PCI_CLASS_BRIDGE_HOST << 8), .class_mask = ~0, diff -Nru a/drivers/char/epca.c b/drivers/char/epca.c --- a/drivers/char/epca.c Mon Sep 22 00:30:22 2003 +++ b/drivers/char/epca.c Mon Sep 22 00:30:22 2003 @@ -3868,7 +3868,7 @@ }; -static int __init epca_init_one (struct pci_dev *pdev, +static int __devinit epca_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) { static int board_num = -1; diff -Nru a/drivers/char/ftape/lowlevel/ftape-init.c b/drivers/char/ftape/lowlevel/ftape-init.c --- a/drivers/char/ftape/lowlevel/ftape-init.c Mon Sep 22 00:30:24 2003 +++ b/drivers/char/ftape/lowlevel/ftape-init.c Mon Sep 22 00:30:24 2003 @@ -55,14 +55,24 @@ char ft_dat[] __initdata = "$Date: 1997/11/06 00:38:08 $"; +#ifndef CONFIG_FT_NO_TRACE_AT_ALL +static int ft_tracing = -1; +#endif + + /* Called by modules package when installing the driver * or by kernel during the initialization phase */ -int __init ftape_init(void) +static int __init ftape_init(void) { TRACE_FUN(ft_t_flow); #ifdef MODULE +#ifndef CONFIG_FT_NO_TRACE_AT_ALL + if (ft_tracing != -1) { + ftape_tracing = ft_tracing; + } +#endif printk(KERN_INFO FTAPE_VERSION "\n"); if (TRACE_LEVEL >= ft_t_info) { printk( @@ -112,13 +122,6 @@ #endif TRACE_EXIT 0; } - -#ifdef MODULE - -#ifndef CONFIG_FT_NO_TRACE_AT_ALL -static int ft_tracing = -1; -#endif - #define FT_MOD_PARM(var,type,desc) \ MODULE_PARM(var,type); MODULE_PARM_DESC(var,desc) @@ -141,21 +144,7 @@ "QIC-117 driver for QIC-40/80/3010/3020 floppy tape drives."); MODULE_LICENSE("GPL"); -/* Called by modules package when installing the driver - */ -int init_module(void) -{ -#ifndef CONFIG_FT_NO_TRACE_AT_ALL - if (ft_tracing != -1) { - ftape_tracing = ft_tracing; - } -#endif - return ftape_init(); -} - -/* Called by modules package when removing the driver - */ -void cleanup_module(void) +static void __exit ftape_exit(void) { TRACE_FUN(ft_t_flow); @@ -166,4 +155,6 @@ printk(KERN_INFO "ftape: unloaded.\n"); TRACE_EXIT; } -#endif /* MODULE */ + +module_init(ftape_init); +module_exit(ftape_exit); diff -Nru a/drivers/char/hvc_console.c b/drivers/char/hvc_console.c --- a/drivers/char/hvc_console.c Mon Sep 22 00:30:24 2003 +++ b/drivers/char/hvc_console.c Mon Sep 22 00:30:24 2003 @@ -284,9 +284,6 @@ if (tty_register_driver(hvc_driver)) panic("Couldn't register hvc console driver\n"); - for (i = 0; i < num; i++) - tty_register_device(hvc_driver, i, NULL); - if (num > 0) kernel_thread(khvcd, NULL, CLONE_KERNEL); diff -Nru a/drivers/char/hw_random.c b/drivers/char/hw_random.c --- a/drivers/char/hw_random.c Mon Sep 22 00:30:20 2003 +++ b/drivers/char/hw_random.c Mon Sep 22 00:30:20 2003 @@ -149,7 +149,7 @@ * register a pci_driver, because someone else might one day * want to register another driver on the same PCI id. */ -static struct pci_device_id rng_pci_tbl[] __initdata = { +static struct pci_device_id rng_pci_tbl[] = { { 0x1022, 0x7443, PCI_ANY_ID, PCI_ANY_ID, 0, 0, rng_hw_amd }, { 0x1022, 0x746b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, rng_hw_amd }, diff -Nru a/drivers/char/istallion.c b/drivers/char/istallion.c --- a/drivers/char/istallion.c Mon Sep 22 00:30:22 2003 +++ b/drivers/char/istallion.c Mon Sep 22 00:30:22 2003 @@ -2303,7 +2303,7 @@ /* * FIXME: There's a module removal race here: tty_hangup - * calls schedule_task which will call into this + * calls schedule_work which will call into this * driver later. */ portp = (stliport_t *) arg; @@ -2944,7 +2944,7 @@ ((portp->sigs & TIOCM_CD) == 0)) { if (portp->flags & ASYNC_CHECK_CD) { if (tty) - schedule_task(&portp->tqhangup); + schedule_work(&portp->tqhangup); } } } diff -Nru a/drivers/char/keyboard.c b/drivers/char/keyboard.c --- a/drivers/char/keyboard.c Mon Sep 22 00:30:21 2003 +++ b/drivers/char/keyboard.c Mon Sep 22 00:30:21 2003 @@ -205,7 +205,7 @@ INPUT_KEYCODE(dev, scancode) = keycode; for (i = 0; i < dev->keycodemax; i++) - if(INPUT_KEYCODE(dev, scancode) == oldkey) + if(keycode == oldkey) break; if (i == dev->keycodemax) clear_bit(oldkey, dev->keybit); diff -Nru a/drivers/char/mem.c b/drivers/char/mem.c --- a/drivers/char/mem.c Mon Sep 22 00:30:22 2003 +++ b/drivers/char/mem.c Mon Sep 22 00:30:22 2003 @@ -680,17 +680,8 @@ S_IFCHR | devlist[i].mode, devlist[i].name); } - rand_initialize(); #if defined (CONFIG_FB) fbmem_init(); -#endif - tty_init(); -#ifdef CONFIG_M68K_PRINTER - lp_m68k_init(); -#endif - misc_init(); -#ifdef CONFIG_FTAPE - ftape_init(); #endif return 0; } diff -Nru a/drivers/char/misc.c b/drivers/char/misc.c --- a/drivers/char/misc.c Mon Sep 22 00:30:24 2003 +++ b/drivers/char/misc.c Mon Sep 22 00:30:24 2003 @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -53,7 +54,7 @@ /* * Head entry for the doubly linked miscdevice list */ -static struct miscdevice misc_list = { 0, "head", NULL, &misc_list, &misc_list }; +static LIST_HEAD(misc_list); static DECLARE_MUTEX(misc_sem); /* @@ -73,30 +74,64 @@ extern int tosh_init(void); extern int i8k_init(void); -static int misc_read_proc(char *buf, char **start, off_t offset, - int len, int *eof, void *private) +#ifdef CONFIG_PROC_FS +static void *misc_seq_start(struct seq_file *seq, loff_t *pos) { struct miscdevice *p; - int written; + loff_t off = 0; - written=0; - for (p = misc_list.next; p != &misc_list && written < len; p = p->next) { - written += sprintf(buf+written, "%3i %s\n",p->minor, p->name ?: ""); - if (written < offset) { - offset -= written; - written = 0; - } - } - *start = buf + offset; - written -= offset; - if(written > len) { - *eof = 0; - return len; + down(&misc_sem); + list_for_each_entry(p, &misc_list, list) { + if (*pos == off++) + return p; } - *eof = 1; - return (written<0) ? 0 : written; + return NULL; +} + +static void *misc_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + struct list_head *n = ((struct miscdevice *)v)->list.next; + + ++*pos; + + return (n != &misc_list) ? list_entry(n, struct miscdevice, list) + : NULL; +} + +static void misc_seq_stop(struct seq_file *seq, void *v) +{ + up(&misc_sem); +} + +static int misc_seq_show(struct seq_file *seq, void *v) +{ + const struct miscdevice *p = v; + + seq_printf(seq, "%3i %s\n", p->minor, p->name ? p->name : ""); + return 0; +} + + +static struct seq_operations misc_seq_ops = { + .start = misc_seq_start, + .next = misc_seq_next, + .stop = misc_seq_stop, + .show = misc_seq_show, +}; + +static int misc_seq_open(struct inode *inode, struct file *file) +{ + return seq_open(file, &misc_seq_ops); } +static struct file_operations misc_proc_fops = { + .owner = THIS_MODULE, + .open = misc_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; +#endif static int misc_open(struct inode * inode, struct file * file) { @@ -107,21 +142,27 @@ down(&misc_sem); - c = misc_list.next; - - while ((c != &misc_list) && (c->minor != minor)) - c = c->next; - if (c != &misc_list) - new_fops = fops_get(c->fops); + list_for_each_entry(c, &misc_list, list) { + if (c->minor == minor) { + new_fops = fops_get(c->fops); + break; + } + } + if (!new_fops) { up(&misc_sem); request_module("char-major-%d-%d", MISC_MAJOR, minor); down(&misc_sem); - c = misc_list.next; - while ((c != &misc_list) && (c->minor != minor)) - c = c->next; - if (c == &misc_list || (new_fops = fops_get(c->fops)) == NULL) - goto fail; + + list_for_each_entry(c, &misc_list, list) { + if (c->minor == minor) { + new_fops = fops_get(c->fops); + if (!new_fops) + goto fail; + break; + } + } + goto fail; } err = 0; @@ -166,16 +207,12 @@ { struct miscdevice *c; - if (misc->next || misc->prev) - return -EBUSY; down(&misc_sem); - c = misc_list.next; - - while ((c != &misc_list) && (c->minor != misc->minor)) - c = c->next; - if (c != &misc_list) { - up(&misc_sem); - return -EBUSY; + list_for_each_entry(c, &misc_list, list) { + if (c->minor == misc->minor) { + up(&misc_sem); + return -EBUSY; + } } if (misc->minor == MISC_DYNAMIC_MINOR) { @@ -205,10 +242,7 @@ * Add it to the front, so that later devices can "override" * earlier defaults */ - misc->prev = &misc_list; - misc->next = misc_list.next; - misc->prev->next = misc; - misc->next->prev = misc; + list_add(&misc->list, &misc_list); up(&misc_sem); return 0; } @@ -226,13 +260,12 @@ int misc_deregister(struct miscdevice * misc) { int i = misc->minor; - if (!misc->next || !misc->prev) + + if (list_empty(&misc->list)) return -EINVAL; + down(&misc_sem); - misc->prev->next = misc->next; - misc->next->prev = misc->prev; - misc->next = NULL; - misc->prev = NULL; + list_del(&misc->list); devfs_remove(misc->devfs_name); if (i < DYNAMIC_MINORS && i>0) { misc_minors[i>>3] &= ~(1 << (misc->minor & 7)); @@ -244,9 +277,15 @@ EXPORT_SYMBOL(misc_register); EXPORT_SYMBOL(misc_deregister); -int __init misc_init(void) +static int __init misc_init(void) { - create_proc_read_entry("misc", 0, 0, misc_read_proc, NULL); +#ifdef CONFIG_PROC_FS + struct proc_dir_entry *ent; + + ent = create_proc_entry("misc", 0, NULL); + if (ent) + ent->proc_fops = &misc_proc_fops; +#endif #ifdef CONFIG_MVME16x rtc_MK48T08_init(); #endif @@ -281,3 +320,4 @@ } return 0; } +module_init(misc_init); diff -Nru a/drivers/char/mwave/mwavedd.c b/drivers/char/mwave/mwavedd.c --- a/drivers/char/mwave/mwavedd.c Mon Sep 22 00:30:20 2003 +++ b/drivers/char/mwave/mwavedd.c Mon Sep 22 00:30:20 2003 @@ -293,8 +293,6 @@ case IOCTL_MW_GET_IPC: { unsigned int ipcnum = (unsigned int) ioarg; - spinlock_t ipc_lock = SPIN_LOCK_UNLOCKED; - unsigned long flags; PRINTK_3(TRACE_MWAVE, "mwavedd::mwave_ioctl IOCTL_MW_GET_IPC" @@ -310,32 +308,29 @@ } if (pDrvData->IPCs[ipcnum].bIsEnabled == TRUE) { + DECLARE_WAITQUEUE(wait, current); + PRINTK_2(TRACE_MWAVE, "mwavedd::mwave_ioctl, thread for" " ipc %x going to sleep\n", ipcnum); - - spin_lock_irqsave(&ipc_lock, flags); + add_wait_queue(&pDrvData->IPCs[ipcnum].ipc_wait_queue, &wait); + pDrvData->IPCs[ipcnum].bIsHere = TRUE; + set_current_state(TASK_INTERRUPTIBLE); /* check whether an event was signalled by */ /* the interrupt handler while we were gone */ if (pDrvData->IPCs[ipcnum].usIntCount == 1) { /* first int has occurred (race condition) */ pDrvData->IPCs[ipcnum].usIntCount = 2; /* first int has been handled */ - spin_unlock_irqrestore(&ipc_lock, flags); PRINTK_2(TRACE_MWAVE, "mwavedd::mwave_ioctl" " IOCTL_MW_GET_IPC ipcnum %x" " handling first int\n", ipcnum); } else { /* either 1st int has not yet occurred, or we have already handled the first int */ - pDrvData->IPCs[ipcnum].bIsHere = TRUE; -#warning "Sleeping on spinlock" - interruptible_sleep_on(&pDrvData->IPCs[ipcnum].ipc_wait_queue); - pDrvData->IPCs[ipcnum].bIsHere = FALSE; + schedule(); if (pDrvData->IPCs[ipcnum].usIntCount == 1) { - pDrvData->IPCs[ipcnum]. - usIntCount = 2; + pDrvData->IPCs[ipcnum].usIntCount = 2; } - spin_unlock_irqrestore(&ipc_lock, flags); PRINTK_2(TRACE_MWAVE, "mwavedd::mwave_ioctl" " IOCTL_MW_GET_IPC ipcnum %x" @@ -343,6 +338,9 @@ " application\n", ipcnum); } + pDrvData->IPCs[ipcnum].bIsHere = FALSE; + remove_wait_queue(&pDrvData->IPCs[ipcnum].ipc_wait_queue, &wait); + set_current_state(TASK_RUNNING); PRINTK_2(TRACE_MWAVE, "mwavedd::mwave_ioctl IOCTL_MW_GET_IPC," " returning thread for ipc %x" diff -Nru a/drivers/char/n_r3964.c b/drivers/char/n_r3964.c --- a/drivers/char/n_r3964.c Mon Sep 22 00:30:24 2003 +++ b/drivers/char/n_r3964.c Mon Sep 22 00:30:24 2003 @@ -150,22 +150,18 @@ static int r3964_receive_room(struct tty_struct *tty); static struct tty_ldisc tty_ldisc_N_R3964 = { - TTY_LDISC_MAGIC, /* magic */ - "R3964", /* name */ - 0, /* num */ - 0, /* flags */ - r3964_open, /* open */ - r3964_close, /* close */ - 0, /* flush_buffer */ - 0, /* chars_in_buffer */ - r3964_read, /* read */ - r3964_write, /* write */ - r3964_ioctl, /* ioctl */ - r3964_set_termios, /* set_termios */ - r3964_poll, /* poll */ - r3964_receive_buf, /* receive_buf */ - r3964_receive_room, /* receive_room */ - 0 /* write_wakeup */ + .owner = THIS_MODULE, + .magic = TTY_LDISC_MAGIC, + .name = "R3964", + .open = r3964_open, + .close = r3964_close, + .read = r3964_read, + .write = r3964_write, + .ioctl = r3964_ioctl, + .set_termios = r3964_set_termios, + .poll = r3964_poll, + .receive_buf = r3964_receive_buf, + .receive_room = r3964_receive_room, }; @@ -1070,8 +1066,6 @@ { struct r3964_info *pInfo; - MOD_INC_USE_COUNT; - TRACE_L("open"); TRACE_L("tty=%x, PID=%d, disc_data=%x", (int)tty, current->pid, (int)tty->disc_data); @@ -1188,8 +1182,6 @@ TRACE_M("r3964_close - tx_buf kfree %x",(int)pInfo->tx_buf); kfree(pInfo); TRACE_M("r3964_close - info kfree %x",(int)pInfo); - - MOD_DEC_USE_COUNT; } static ssize_t r3964_read(struct tty_struct *tty, struct file *file, diff -Nru a/drivers/char/n_tty.c b/drivers/char/n_tty.c --- a/drivers/char/n_tty.c Mon Sep 22 00:30:18 2003 +++ b/drivers/char/n_tty.c Mon Sep 22 00:30:18 2003 @@ -977,11 +977,11 @@ if (file->f_op->write != redirected_tty_write && current->tty == tty) { if (tty->pgrp <= 0) printk("read_chan: tty->pgrp <= 0!\n"); - else if (current->pgrp != tty->pgrp) { + else if (process_group(current) != tty->pgrp) { if (is_ignored(SIGTTIN) || - is_orphaned_pgrp(current->pgrp)) + is_orphaned_pgrp(process_group(current))) return -EIO; - kill_pg(current->pgrp, SIGTTIN, 1); + kill_pg(process_group(current), SIGTTIN, 1); return -ERESTARTSYS; } } diff -Nru a/drivers/char/pcmcia/synclink_cs.c b/drivers/char/pcmcia/synclink_cs.c --- a/drivers/char/pcmcia/synclink_cs.c Mon Sep 22 00:30:20 2003 +++ b/drivers/char/pcmcia/synclink_cs.c Mon Sep 22 00:30:20 2003 @@ -725,14 +725,6 @@ if (debug_level >= DEBUG_LEVEL_INFO) printk("mgslpc_release(0x%p)\n", link); - if (link->open) { - if (debug_level >= DEBUG_LEVEL_INFO) - printk("synclink_cs: release postponed, '%s' still open\n", - link->dev->dev_name); - link->state |= DEV_STALE_CONFIG; - return; - } - /* Unlink the device chain */ link->dev = NULL; link->state &= ~DEV_CONFIG; diff -Nru a/drivers/char/random.c b/drivers/char/random.c --- a/drivers/char/random.c Mon Sep 22 00:30:18 2003 +++ b/drivers/char/random.c Mon Sep 22 00:30:18 2003 @@ -253,6 +253,7 @@ #include #include #include +#include #include #include @@ -281,6 +282,15 @@ static int random_write_wakeup_thresh = 128; /* + * When the input pool goes over trickle_thresh, start dropping most + * samples to avoid wasting CPU time and reduce lock contention. + */ + +static int trickle_thresh = DEFAULT_POOL_SIZE * 7; + +static DEFINE_PER_CPU(int, trickle_count) = 0; + +/* * A pool of size .poolwords is stirred with a primitive polynomial * of degree .poolwords over GF(2). The taps for various sizes are * defined below. They are chosen to be evenly spaced (minimum RMS @@ -778,6 +788,11 @@ __s32 delta, delta2, delta3; int entropy = 0; + /* if over the trickle threshold, use only 1 in 4096 samples */ + if ( random_state->entropy_count > trickle_thresh && + (__get_cpu_var(trickle_count)++ & 0xfff)) + return; + #if defined (__i386__) || defined (__x86_64__) if (cpu_has_tsc) { __u32 high; @@ -1478,16 +1493,16 @@ } } -void __init rand_initialize(void) +static int __init rand_initialize(void) { int i; if (create_entropy_store(DEFAULT_POOL_SIZE, &random_state)) - return; /* Error, return */ + goto err; if (batch_entropy_init(BATCH_ENTROPY_SIZE, random_state)) - return; /* Error, return */ + goto err; if (create_entropy_store(SECONDARY_POOL_SIZE, &sec_random_state)) - return; /* Error, return */ + goto err; clear_entropy_store(random_state); clear_entropy_store(sec_random_state); init_std_data(random_state); @@ -1500,7 +1515,11 @@ memset(&mouse_timer_state, 0, sizeof(struct timer_rand_state)); memset(&extract_timer_state, 0, sizeof(struct timer_rand_state)); extract_timer_state.dont_count_entropy = 1; + return 0; +err: + return -1; } +module_init(rand_initialize); void rand_initialize_irq(int irq) { diff -Nru a/drivers/char/rio/rio_linux.c b/drivers/char/rio/rio_linux.c --- a/drivers/char/rio/rio_linux.c Mon Sep 22 00:30:22 2003 +++ b/drivers/char/rio/rio_linux.c Mon Sep 22 00:30:22 2003 @@ -234,14 +234,12 @@ support up to 64 bits on 64bit architectures. -- REW 20/06/99 */ long rio_irqmask = -1; -#ifndef TWO_ZERO MODULE_AUTHOR("Rogier Wolff , Patrick van de Lageweg "); MODULE_DESCRIPTION("RIO driver"); MODULE_LICENSE("GPL"); MODULE_PARM(rio_poll, "i"); MODULE_PARM(rio_debug, "i"); MODULE_PARM(rio_irqmask, "i"); -#endif static struct real_driver rio_real_driver = { rio_disable_tx_interrupts, @@ -1034,13 +1032,6 @@ func_exit(); } -#ifdef TWO_ZERO -#define PDEV unsigned char pci_bus, unsigned pci_fun -#define pdev pci_bus, pci_fun -#else -#define PDEV struct pci_dev *pdev -#endif - #ifdef CONFIG_PCI /* This was written for SX, but applies to RIO too... @@ -1062,7 +1053,7 @@ EEprom. As the bit is read/write for the CPU, we can fix it here, if we detect that it isn't set correctly. -- REW */ -void fix_rio_pci (PDEV) +void fix_rio_pci (struct pci_dev *pdev) { unsigned int hwbase; unsigned long rebase; @@ -1095,12 +1086,7 @@ int okboard; #ifdef CONFIG_PCI -#ifndef TWO_ZERO struct pci_dev *pdev = NULL; -#else - unsigned char pci_bus, pci_fun; - /* in 2.2.x pdev is a pointer defining a PCI device. In 2.0 its the bus/fn */ -#endif unsigned int tint; unsigned short tshort; #endif @@ -1128,17 +1114,11 @@ #ifdef CONFIG_PCI /* First look for the JET devices: */ -#ifndef TWO_ZERO while ((pdev = pci_find_device (PCI_VENDOR_ID_SPECIALIX, PCI_DEVICE_ID_SPECIALIX_SX_XIO_IO8, pdev))) { if (pci_enable_device(pdev)) continue; -#else - for (i=0;i< RIO_NBOARDS;i++) { - if (pcibios_find_device (PCI_VENDOR_ID_SPECIALIX, - PCI_DEVICE_ID_SPECIALIX_SX_XIO_IO8, i, - &pci_bus, &pci_fun)) break; -#endif + /* Specialix has a whole bunch of cards with 0x2000 as the device ID. They say its because the standard requires it. Stupid standard. */ @@ -1196,16 +1176,9 @@ } else { iounmap((char*) (p->RIOHosts[p->RIONumHosts].Caddr)); } - -#ifdef TWO_ZERO - } /* We have two variants with the opening brace, so to prevent */ -#else - } /* Emacs from getting confused we have two closing braces too. */ -#endif + } /* Then look for the older PCI card.... : */ -#ifndef TWO_ZERO - /* These older PCI cards have problems (only byte-mode access is supported), which makes them a bit awkward to support. @@ -1219,12 +1192,6 @@ PCI_DEVICE_ID_SPECIALIX_RIO, pdev))) { if (pci_enable_device(pdev)) continue; -#else - for (i=0;i< RIO_NBOARDS;i++) { - if (pcibios_find_device (PCI_VENDOR_ID_SPECIALIX, - PCI_DEVICE_ID_SPECIALIX_RIO, i, - &pci_bus, &pci_fun)) break; -#endif #ifdef CONFIG_RIO_OLDPCI pci_read_config_dword(pdev, PCI_BASE_ADDRESS_0, &tint); @@ -1272,11 +1239,7 @@ printk (KERN_ERR "Found an older RIO PCI card, but the driver is not " "compiled to support it.\n"); #endif -#ifdef TWO_ZERO - } /* We have two variants with the opening brace, so to prevent */ -#else - } /* Emacs from getting confused we have two closing braces too. */ -#endif + } #endif /* PCI */ /* Now probe for ISA cards... */ diff -Nru a/drivers/char/rocket.c b/drivers/char/rocket.c --- a/drivers/char/rocket.c Mon Sep 22 00:30:23 2003 +++ b/drivers/char/rocket.c Mon Sep 22 00:30:23 2003 @@ -956,7 +956,7 @@ * Info->count is now 1; so it's safe to sleep now. */ info->session = current->session; - info->pgrp = current->pgrp; + info->pgrp = process_group(current); if ((info->flags & ROCKET_INITIALIZED) == 0) { cp = &info->channel; diff -Nru a/drivers/char/specialix.c b/drivers/char/specialix.c --- a/drivers/char/specialix.c Mon Sep 22 00:30:24 2003 +++ b/drivers/char/specialix.c Mon Sep 22 00:30:24 2003 @@ -92,40 +92,7 @@ #include #include #include - - -/* ************************************************************** */ -/* * This section can be removed when 2.0 becomes outdated.... * */ -/* ************************************************************** */ - -#if LINUX_VERSION_CODE < 131328 /* Less than 2.1.0 */ -#define TWO_ZERO -#else -#if LINUX_VERSION_CODE < 131371 /* less than 2.1.43 */ -/* This has not been extensively tested yet. Sorry. */ -#warning "You're on your own between 2.1.0 and 2.1.43.... " -#warning "Please use a recent kernel." -#endif -#endif - - -#ifdef TWO_ZERO -#define Get_user(a,b) a = get_user(b) -#define copy_from_user(a,b,c) memcpy_fromfs(a,b,c) -#define copy_to_user(a,b,c) memcpy_tofs(a,b,c) -#define queue_task queue_task_irq_off -#else -#define Get_user(a,b) get_user(a,b) -#endif - -/* ************************************************************** */ -/* * End of compatibility section.. * */ -/* ************************************************************** */ - - -#ifndef TWO_ZERO #include -#endif #include "specialix_io8.h" #include "cd1865.h" @@ -1733,7 +1700,7 @@ if (error) return error; - Get_user(arg, (unsigned long *) value); + get_user(arg, (unsigned long *) value); switch (cmd) { case TIOCMBIS: /* if (arg & TIOCM_RTS) @@ -1925,7 +1892,7 @@ (unsigned long *) arg); return 0; case TIOCSSOFTCAR: - Get_user(arg, (unsigned long *) arg); + get_user(arg, (unsigned long *) arg); tty->termios->c_cflag = ((tty->termios->c_cflag & ~CLOCAL) | (arg ? CLOCAL : 0)); diff -Nru a/drivers/char/sx.c b/drivers/char/sx.c --- a/drivers/char/sx.c Mon Sep 22 00:30:21 2003 +++ b/drivers/char/sx.c Mon Sep 22 00:30:21 2003 @@ -2356,14 +2356,6 @@ func_exit(); } -#ifdef TWO_ZERO -#define PDEV unsigned char pci_bus, unsigned pci_fun -#define pdev pci_bus, pci_fun -#else -#define PDEV struct pci_dev *pdev -#endif - - #ifdef CONFIG_PCI /******************************************************** * Setting bit 17 in the CNTRL register of the PLX 9050 * @@ -2376,7 +2368,7 @@ EEprom. As the bit is read/write for the CPU, we can fix it here, if we detect that it isn't set correctly. -- REW */ -static void fix_sx_pci (PDEV, struct sx_board *board) +static void fix_sx_pci (struct pci_dev *pdev, struct sx_board *board) { unsigned int hwbase; unsigned long rebase; @@ -2406,12 +2398,7 @@ struct sx_board *board; #ifdef CONFIG_PCI -#ifndef TWO_ZERO struct pci_dev *pdev = NULL; -#else - unsigned char pci_bus, pci_fun; - /* in 2.2.x pdev is a pointer defining a PCI device. In 2.0 its the bus/fn */ -#endif unsigned int tint; unsigned short tshort; #endif @@ -2431,19 +2418,12 @@ } #ifdef CONFIG_PCI -#ifndef TWO_ZERO while ((pdev = pci_find_device (PCI_VENDOR_ID_SPECIALIX, PCI_DEVICE_ID_SPECIALIX_SX_XIO_IO8, pdev))) { if (pci_enable_device(pdev)) continue; -#else - for (i=0;i< SX_NBOARDS;i++) { - if (pcibios_find_device (PCI_VENDOR_ID_SPECIALIX, - PCI_DEVICE_ID_SPECIALIX_SX_XIO_IO8, i, - &pci_bus, &pci_fun)) - break; -#endif + /* Specialix has a whole bunch of cards with 0x2000 as the device ID. They say its because the standard requires it. Stupid standard. */ diff -Nru a/drivers/char/tty_io.c b/drivers/char/tty_io.c --- a/drivers/char/tty_io.c Mon Sep 22 00:30:22 2003 +++ b/drivers/char/tty_io.c Mon Sep 22 00:30:22 2003 @@ -325,13 +325,13 @@ printk(KERN_WARNING "tty_check_change: tty->pgrp <= 0!\n"); return 0; } - if (current->pgrp == tty->pgrp) + if (process_group(current) == tty->pgrp) return 0; if (is_ignored(SIGTTOU)) return 0; - if (is_orphaned_pgrp(current->pgrp)) + if (is_orphaned_pgrp(process_group(current))) return -EIO; - (void) kill_pg(current->pgrp,SIGTTOU,1); + (void) kill_pg(process_group(current), SIGTTOU, 1); return -ERESTARTSYS; } @@ -1406,7 +1406,7 @@ task_unlock(current); current->tty_old_pgrp = 0; tty->session = current->session; - tty->pgrp = current->pgrp; + tty->pgrp = process_group(current); } return 0; } @@ -1580,7 +1580,7 @@ task_unlock(current); current->tty_old_pgrp = 0; tty->session = current->session; - tty->pgrp = current->pgrp; + tty->pgrp = process_group(current); return 0; } @@ -2423,7 +2423,7 @@ * Ok, now we can initialize the rest of the tty devices and can count * on memory allocations, interrupts etc.. */ -void __init tty_init(void) +static int __init tty_init(void) { strcpy(tty_cdev.kobj.name, "dev.tty"); cdev_init(&tty_cdev, &tty_fops); @@ -2512,4 +2512,6 @@ #ifdef CONFIG_A2232 a2232board_init(); #endif + return 0; } +module_init(tty_init); diff -Nru a/drivers/char/watchdog/alim1535_wdt.c b/drivers/char/watchdog/alim1535_wdt.c --- a/drivers/char/watchdog/alim1535_wdt.c Mon Sep 22 00:30:20 2003 +++ b/drivers/char/watchdog/alim1535_wdt.c Mon Sep 22 00:30:20 2003 @@ -317,7 +317,7 @@ * want to register another driver on the same PCI id. */ -static struct pci_device_id ali_pci_tbl[] __initdata = { +static struct pci_device_id ali_pci_tbl[] = { { PCI_VENDOR_ID_AL, 1535, PCI_ANY_ID, PCI_ANY_ID,}, { 0, }, }; diff -Nru a/drivers/char/watchdog/amd7xx_tco.c b/drivers/char/watchdog/amd7xx_tco.c --- a/drivers/char/watchdog/amd7xx_tco.c Mon Sep 22 00:30:19 2003 +++ b/drivers/char/watchdog/amd7xx_tco.c Mon Sep 22 00:30:19 2003 @@ -294,7 +294,7 @@ .fops = &amdtco_fops }; -static struct pci_device_id amdtco_pci_tbl[] __initdata = { +static struct pci_device_id amdtco_pci_tbl[] = { /* AMD 766 PCI_IDs here */ { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_OPUS_7443, PCI_ANY_ID, PCI_ANY_ID, }, { 0, } diff -Nru a/drivers/char/watchdog/i810-tco.c b/drivers/char/watchdog/i810-tco.c --- a/drivers/char/watchdog/i810-tco.c Mon Sep 22 00:30:18 2003 +++ b/drivers/char/watchdog/i810-tco.c Mon Sep 22 00:30:18 2003 @@ -301,7 +301,7 @@ * register a pci_driver, because someone else might one day * want to register another driver on the same PCI id. */ -static struct pci_device_id i810tco_pci_tbl[] __initdata = { +static struct pci_device_id i810tco_pci_tbl[] = { { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AA_0, PCI_ANY_ID, PCI_ANY_ID, }, { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AB_0, PCI_ANY_ID, PCI_ANY_ID, }, { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801BA_0, PCI_ANY_ID, PCI_ANY_ID, }, diff -Nru a/drivers/char/watchdog/wdt_pci.c b/drivers/char/watchdog/wdt_pci.c --- a/drivers/char/watchdog/wdt_pci.c Mon Sep 22 00:30:22 2003 +++ b/drivers/char/watchdog/wdt_pci.c Mon Sep 22 00:30:22 2003 @@ -505,7 +505,7 @@ }; -static int __init wdtpci_init_one (struct pci_dev *dev, +static int __devinit wdtpci_init_one (struct pci_dev *dev, const struct pci_device_id *ent) { static int dev_count = 0; diff -Nru a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c --- a/drivers/cpufreq/cpufreq.c Mon Sep 22 00:30:19 2003 +++ b/drivers/cpufreq/cpufreq.c Mon Sep 22 00:30:19 2003 @@ -1,17 +1,16 @@ /* - * linux/kernel/cpufreq.c + * linux/drivers/cpufreq/cpufreq.c * * Copyright (C) 2001 Russell King * (C) 2002 - 2003 Dominik Brodowski * - * $Id: cpufreq.c,v 1.59 2003/01/20 17:31:48 db Exp $ - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * */ +#include #include #include #include @@ -743,26 +742,9 @@ EXPORT_SYMBOL(cpufreq_get_policy); -/** - * cpufreq_set_policy - set a new CPUFreq policy - * @policy: policy to be set. - * - * Sets a new CPU frequency and voltage scaling policy. - */ -int cpufreq_set_policy(struct cpufreq_policy *policy) +static int __cpufreq_set_policy(struct cpufreq_policy *data, struct cpufreq_policy *policy) { int ret = 0; - struct cpufreq_policy *data; - - if (!policy) - return -EINVAL; - - data = cpufreq_cpu_get(policy->cpu); - if (!data) - return -EINVAL; - - /* lock this CPU */ - down(&data->lock); memcpy(&policy->cpuinfo, &data->cpuinfo, @@ -829,6 +811,36 @@ } error_out: + return ret; +} + +/** + * cpufreq_set_policy - set a new CPUFreq policy + * @policy: policy to be set. + * + * Sets a new CPU frequency and voltage scaling policy. + */ +int cpufreq_set_policy(struct cpufreq_policy *policy) +{ + int ret = 0; + struct cpufreq_policy *data; + + if (!policy) + return -EINVAL; + + data = cpufreq_cpu_get(policy->cpu); + if (!data) + return -EINVAL; + + /* lock this CPU */ + down(&data->lock); + + ret = __cpufreq_set_policy(data, policy); + data->user_policy.min = data->min; + data->user_policy.max = data->max; + data->user_policy.policy = data->policy; + data->user_policy.governor = data->governor; + up(&data->lock); cpufreq_cpu_put(data); @@ -836,6 +848,41 @@ } EXPORT_SYMBOL(cpufreq_set_policy); + +/** + * cpufreq_update_policy - re-evaluate an existing cpufreq policy + * @cpu: CPU which shall be re-evaluated + * + * Usefull for policy notifiers which have different necessities + * at different times. + */ +int cpufreq_update_policy(unsigned int cpu) +{ + struct cpufreq_policy *data = cpufreq_cpu_get(cpu); + struct cpufreq_policy policy; + int ret = 0; + + if (!data) + return -ENODEV; + + down(&data->lock); + + memcpy(&policy, + &data, + sizeof(struct cpufreq_policy)); + policy.min = data->user_policy.min; + policy.max = data->user_policy.max; + policy.policy = data->user_policy.policy; + policy.governor = data->user_policy.governor; + + ret = __cpufreq_set_policy(data, &policy); + + up(&data->lock); + + cpufreq_cpu_put(data); + return ret; +} +EXPORT_SYMBOL(cpufreq_update_policy); /********************************************************************* diff -Nru a/drivers/cpufreq/cpufreq_userspace.c b/drivers/cpufreq/cpufreq_userspace.c --- a/drivers/cpufreq/cpufreq_userspace.c Mon Sep 22 00:30:18 2003 +++ b/drivers/cpufreq/cpufreq_userspace.c Mon Sep 22 00:30:18 2003 @@ -1,17 +1,16 @@ /* - * drivers/cpufreq/userspace.c + * linux/drivers/cpufreq/cpufreq_userspace.c * * Copyright (C) 2001 Russell King * (C) 2002 - 2003 Dominik Brodowski * - * $Id:$ - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * */ +#include #include #include #include diff -Nru a/drivers/eisa/eisa-bus.c b/drivers/eisa/eisa-bus.c --- a/drivers/eisa/eisa-bus.c Mon Sep 22 00:30:20 2003 +++ b/drivers/eisa/eisa-bus.c Mon Sep 22 00:30:20 2003 @@ -427,6 +427,11 @@ postcore_initcall (eisa_init); +#ifndef CONFIG_EISA_ALWAYS +int EISA_bus; +EXPORT_SYMBOL(EISA_bus); +#endif + EXPORT_SYMBOL (eisa_bus_type); EXPORT_SYMBOL (eisa_driver_register); EXPORT_SYMBOL (eisa_driver_unregister); diff -Nru a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c --- a/drivers/ide/ide-cd.c Mon Sep 22 00:30:21 2003 +++ b/drivers/ide/ide-cd.c Mon Sep 22 00:30:21 2003 @@ -2365,7 +2365,7 @@ /* Now try to get the total cdrom capacity. */ stat = cdrom_get_last_written(cdi, (long *) &toc->capacity); - if (stat) + if (stat || !toc->capacity) stat = cdrom_read_capacity(drive, &toc->capacity, sense); if (stat) toc->capacity = 0x1fffff; diff -Nru a/drivers/ide/ide-default.c b/drivers/ide/ide-default.c --- a/drivers/ide/ide-default.c Mon Sep 22 00:30:25 2003 +++ b/drivers/ide/ide-default.c Mon Sep 22 00:30:25 2003 @@ -57,6 +57,14 @@ "driver with ide.c\n", drive->name); return 1; } + + /* For the sake of the request layer, we must make sure we have a + * correct ready_stat value, that is 0 for ATAPI devices or we will + * fail any request like Power Management + */ + if (drive->media != ide_disk) + drive->ready_stat = 0; + return 0; } diff -Nru a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c --- a/drivers/ide/ide-io.c Mon Sep 22 00:30:24 2003 +++ b/drivers/ide/ide-io.c Mon Sep 22 00:30:24 2003 @@ -928,13 +928,10 @@ * * We let requests forced at head of queue with ide-preempt * though. I hope that doesn't happen too much, hopefully not - * unless the subdriver triggers such a thing in it's own PM + * unless the subdriver triggers such a thing in its own PM * state machine. */ if (drive->blocked && !blk_pm_request(rq) && !(rq->flags & REQ_PREEMPT)) { -#ifdef DEBUG_PM - printk("%s: a request made it's way while we are power managing...\n", drive->name); -#endif /* We clear busy, there should be no pending ATA command at this point. */ hwgroup->busy = 0; break; @@ -1417,8 +1414,9 @@ } spin_lock_irqsave(&ide_lock, flags); - if (action == ide_preempt || action == ide_head_wait) { + if (action == ide_preempt) hwgroup->rq = NULL; + if (action == ide_preempt || action == ide_head_wait) { where = ELEVATOR_INSERT_FRONT; rq->flags |= REQ_PREEMPT; } diff -Nru a/drivers/ide/ide-tcq.c b/drivers/ide/ide-tcq.c --- a/drivers/ide/ide-tcq.c Mon Sep 22 00:30:25 2003 +++ b/drivers/ide/ide-tcq.c Mon Sep 22 00:30:25 2003 @@ -596,7 +596,7 @@ * enable block tagging */ if (!blk_queue_tagged(drive->queue)) - blk_queue_init_tags(drive->queue, IDE_MAX_TAG); + blk_queue_init_tags(drive->queue, IDE_MAX_TAG, NULL); /* * check auto-poll support diff -Nru a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c --- a/drivers/ieee1394/nodemgr.c Mon Sep 22 00:30:22 2003 +++ b/drivers/ieee1394/nodemgr.c Mon Sep 22 00:30:22 2003 @@ -1744,8 +1744,7 @@ sprintf(hi->daemon_name, "knodemgrd_%d", host->id); - hi->pid = kernel_thread(nodemgr_host_thread, hi, - CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + hi->pid = kernel_thread(nodemgr_host_thread, hi, CLONE_KERNEL); if (hi->pid < 0) { HPSB_ERR ("NodeMgr: failed to start %s thread for %s", diff -Nru a/drivers/input/evdev.c b/drivers/input/evdev.c --- a/drivers/input/evdev.c Mon Sep 22 00:30:23 2003 +++ b/drivers/input/evdev.c Mon Sep 22 00:30:23 2003 @@ -208,7 +208,7 @@ struct evdev *evdev = list->evdev; struct input_dev *dev = evdev->handle.dev; struct input_absinfo abs; - int i, t, u; + int i, t, u, v; if (!evdev->exist) return -ENODEV; @@ -239,14 +239,12 @@ case EVIOCSKEYCODE: if (get_user(t, ((int *) arg) + 0)) return -EFAULT; if (t < 0 || t > dev->keycodemax || !dev->keycodesize) return -EINVAL; + if (get_user(v, ((int *) arg) + 1)) return -EFAULT; u = INPUT_KEYCODE(dev, t); - if (get_user(INPUT_KEYCODE(dev, t), ((int *) arg) + 1)) return -EFAULT; - - for (i = 0; i < dev->keycodemax; i++) - if(INPUT_KEYCODE(dev, t) == u) break; + INPUT_KEYCODE(dev, t) = v; + for (i = 0; i < dev->keycodemax; i++) if (v == u) break; if (i == dev->keycodemax) clear_bit(u, dev->keybit); - set_bit(INPUT_KEYCODE(dev, t), dev->keybit); - + set_bit(v, dev->keybit); return 0; case EVIOCSFF: diff -Nru a/drivers/input/input.c b/drivers/input/input.c --- a/drivers/input/input.c Mon Sep 22 00:30:22 2003 +++ b/drivers/input/input.c Mon Sep 22 00:30:22 2003 @@ -426,8 +426,10 @@ init_timer(&dev->timer); dev->timer.data = (long) dev; dev->timer.function = input_repeat_key; - dev->rep[REP_DELAY] = HZ/4; - dev->rep[REP_PERIOD] = HZ/33; + if (!dev->rep[REP_DELAY]) + dev->rep[REP_DELAY] = HZ/4; + if (!dev->rep[REP_PERIOD]) + dev->rep[REP_PERIOD] = HZ/33; INIT_LIST_HEAD(&dev->h_list); list_add_tail(&dev->node, &input_dev_list); @@ -676,20 +678,10 @@ return (count > cnt) ? cnt : count; } -#endif - -struct class input_class = { - .name = "input", -}; - -static int __init input_init(void) +static int __init input_proc_init(void) { struct proc_dir_entry *entry; - int retval = -ENOMEM; - - class_register(&input_class); -#ifdef CONFIG_PROC_FS proc_bus_input_dir = proc_mkdir("input", proc_bus); if (proc_bus_input_dir == NULL) return -ENOMEM; @@ -708,7 +700,22 @@ return -ENOMEM; } entry->owner = THIS_MODULE; + return 0; +} +#else /* !CONFIG_PROC_FS */ +static inline int input_proc_init(void) { return 0; } #endif + +struct class input_class = { + .name = "input", +}; + +static int __init input_init(void) +{ + int retval = -ENOMEM; + + class_register(&input_class); + input_proc_init(); retval = register_chrdev(INPUT_MAJOR, "input", &input_fops); if (retval) { printk(KERN_ERR "input: unable to register char major %d", INPUT_MAJOR); @@ -730,11 +737,10 @@ static void __exit input_exit(void) { -#ifdef CONFIG_PROC_FS remove_proc_entry("devices", proc_bus_input_dir); remove_proc_entry("handlers", proc_bus_input_dir); remove_proc_entry("input", proc_bus); -#endif + devfs_remove("input"); unregister_chrdev(INPUT_MAJOR, "input"); class_unregister(&input_class); diff -Nru a/drivers/input/joystick/Kconfig b/drivers/input/joystick/Kconfig --- a/drivers/input/joystick/Kconfig Mon Sep 22 00:30:17 2003 +++ b/drivers/input/joystick/Kconfig Mon Sep 22 00:30:17 2003 @@ -155,7 +155,8 @@ config JOYSTICK_WARRIOR tristate "Logitech WingMan Warrior joystick" - depends on INPUT && INPUT_JOYSTICK && SERIO + depends on INPUT && INPUT_JOYSTICK + select SERIO help Say Y here if you have a Logitech WingMan Warrior joystick connected to your computer's serial port. @@ -167,7 +168,8 @@ config JOYSTICK_MAGELLAN tristate "LogiCad3d Magellan/SpaceMouse 6dof controllers" - depends on INPUT && INPUT_JOYSTICK && SERIO + depends on INPUT && INPUT_JOYSTICK + select SERIO help Say Y here if you have a Magellan or Space Mouse 6DOF controller connected to your computer's serial port. @@ -179,7 +181,8 @@ config JOYSTICK_SPACEORB tristate "SpaceTec SpaceOrb/Avenger 6dof controllers" - depends on INPUT && INPUT_JOYSTICK && SERIO + depends on INPUT && INPUT_JOYSTICK + select SERIO help Say Y here if you have a SpaceOrb 360 or SpaceBall Avenger 6DOF controller connected to your computer's serial port. @@ -191,7 +194,8 @@ config JOYSTICK_SPACEBALL tristate "SpaceTec SpaceBall 6dof controllers" - depends on INPUT && INPUT_JOYSTICK && SERIO + depends on INPUT && INPUT_JOYSTICK + select SERIO help Say Y here if you have a SpaceTec SpaceBall 2003/3003/4000 FLX controller connected to your computer's serial port. For the @@ -204,7 +208,8 @@ config JOYSTICK_STINGER tristate "Gravis Stinger gamepad" - depends on INPUT && INPUT_JOYSTICK && SERIO + depends on INPUT && INPUT_JOYSTICK + select SERIO help Say Y here if you have a Gravis Stinger connected to one of your serial ports. @@ -216,7 +221,8 @@ config JOYSTICK_TWIDDLER tristate "Twiddler as a joystick" - depends on INPUT && INPUT_JOYSTICK && SERIO + depends on INPUT && INPUT_JOYSTICK + select SERIO help Say Y here if you have a Handykey Twiddler connected to your computer's serial port and want to use it as a joystick. diff -Nru a/drivers/input/joystick/db9.c b/drivers/input/joystick/db9.c --- a/drivers/input/joystick/db9.c Mon Sep 22 00:30:19 2003 +++ b/drivers/input/joystick/db9.c Mon Sep 22 00:30:19 2003 @@ -55,7 +55,9 @@ #define DB9_MULTI_0802 0x08 #define DB9_MULTI_0802_2 0x09 #define DB9_CD32_PAD 0x0A -#define DB9_MAX_PAD 0x0B +#define DB9_SATURN_DPP 0x0B +#define DB9_SATURN_DPP_2 0x0C +#define DB9_MAX_PAD 0x0D #define DB9_UP 0x01 #define DB9_DOWN 0x02 @@ -69,10 +71,7 @@ #define DB9_NORMAL 0x0a #define DB9_NOSELECT 0x08 -#define DB9_SATURN0 0x00 -#define DB9_SATURN1 0x02 -#define DB9_SATURN2 0x04 -#define DB9_SATURN3 0x06 +#define DB9_MAX_DEVICES 2 #define DB9_GENESIS6_DELAY 14 #define DB9_REFRESH_TIME HZ/100 @@ -82,7 +81,7 @@ static int db9_3[] __initdata = { -1, 0 }; struct db9 { - struct input_dev dev[2]; + struct input_dev dev[DB9_MAX_DEVICES]; struct timer_list timer; struct pardevice *pd; int mode; @@ -96,12 +95,247 @@ static short db9_genesis_btn[] = { BTN_START, BTN_A, BTN_B, BTN_C, BTN_X, BTN_Y, BTN_Z, BTN_MODE }; static short db9_cd32_btn[] = { BTN_A, BTN_B, BTN_C, BTN_X, BTN_Y, BTN_Z, BTN_TL, BTN_TR, BTN_START }; -static char db9_buttons[DB9_MAX_PAD] = { 0, 1, 2, 4, 0, 6, 8, 8, 1, 1, 7 }; +static char db9_buttons[DB9_MAX_PAD] = { 0, 1, 2, 4, 0, 6, 8, 9, 1, 1, 7, 9, 9 }; static short *db9_btn[DB9_MAX_PAD] = { NULL, db9_multi_btn, db9_multi_btn, db9_genesis_btn, NULL, db9_genesis_btn, - db9_genesis_btn, db9_cd32_btn, db9_multi_btn, db9_multi_btn, db9_cd32_btn }; + db9_genesis_btn, db9_cd32_btn, db9_multi_btn, db9_multi_btn, db9_cd32_btn, + db9_cd32_btn, db9_cd32_btn }; static char *db9_name[DB9_MAX_PAD] = { NULL, "Multisystem joystick", "Multisystem joystick (2 fire)", "Genesis pad", NULL, "Genesis 5 pad", "Genesis 6 pad", "Saturn pad", "Multisystem (0.8.0.2) joystick", - "Multisystem (0.8.0.2-dual) joystick", "Amiga CD-32 pad" }; + "Multisystem (0.8.0.2-dual) joystick", "Amiga CD-32 pad", "Saturn dpp", "Saturn dpp dual" }; + +static const int db9_max_pads[DB9_MAX_PAD] = { 0, 1, 1, 1, 0, 1, 1, 6, 1, 2, 1, 6, 12 }; +static const int db9_num_axis[DB9_MAX_PAD] = { 0, 2, 2, 2, 0, 2, 2, 7, 2, 2, 2 ,7, 7 }; +static const short db9_abs[] = { ABS_X, ABS_Y, ABS_RX, ABS_RY, ABS_RZ, ABS_Z, ABS_HAT0X, ABS_HAT0Y, ABS_HAT1X, ABS_HAT1Y }; +static const int db9_bidirectional[DB9_MAX_PAD] = { 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0 }; +static const int db9_reverse[DB9_MAX_PAD] = { 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0 }; + +/* + * Saturn controllers + */ +#define DB9_SATURN_DELAY 300 +static const int db9_saturn_byte[] = { 1, 1, 1, 2, 2, 2, 2, 2, 1 }; +static const unsigned char db9_saturn_mask[] = { 0x04, 0x01, 0x02, 0x40, 0x20, 0x10, 0x08, 0x80, 0x08 }; + +/* + * db9_saturn_write_sub() writes 2 bit data. + */ +static void db9_saturn_write_sub(struct parport *port, int type, unsigned char data, int powered, int pwr_sub) +{ + unsigned char c; + + switch (type) { + case 1: /* DPP1 */ + c = 0x80 | 0x30 | (powered ? 0x08 : 0) | (pwr_sub ? 0x04 : 0) | data; + parport_write_data(port, c); + break; + case 2: /* DPP2 */ + c = 0x40 | data << 4 | (powered ? 0x08 : 0) | (pwr_sub ? 0x04 : 0) | 0x03; + parport_write_data(port, c); + break; + case 0: /* DB9 */ + c = ((((data & 2) ? 2 : 0) | ((data & 1) ? 4 : 0)) ^ 0x02) | !powered; + parport_write_control(port, c); + break; + } +} + +/* + * gc_saturn_read_sub() reads 4 bit data. + */ +static unsigned char db9_saturn_read_sub(struct parport *port, int type) +{ + unsigned char data; + + if (type) { + /* DPP */ + data = parport_read_status(port) ^ 0x80; + return (data & 0x80 ? 1 : 0) | (data & 0x40 ? 2 : 0) + | (data & 0x20 ? 4 : 0) | (data & 0x10 ? 8 : 0); + } else { + /* DB9 */ + data = parport_read_data(port) & 0x0f; + return (data & 0x8 ? 1 : 0) | (data & 0x4 ? 2 : 0) + | (data & 0x2 ? 4 : 0) | (data & 0x1 ? 8 : 0); + } +} + +/* + * db9_saturn_read_analog() sends clock and reads 8 bit data. + */ +static unsigned char db9_saturn_read_analog(struct parport *port, int type, int powered) +{ + unsigned char data; + + db9_saturn_write_sub(port, type, 0, powered, 0); + udelay(DB9_SATURN_DELAY); + data = db9_saturn_read_sub(port, type) << 4; + db9_saturn_write_sub(port, type, 2, powered, 0); + udelay(DB9_SATURN_DELAY); + data |= db9_saturn_read_sub(port, type); + return data; +} + +/* + * db9_saturn_read_packet() reads whole saturn packet at connector + * and returns device identifier code. + */ +static unsigned char db9_saturn_read_packet(struct parport *port, unsigned char *data, int type, int powered) +{ + int i, j; + unsigned char tmp; + + db9_saturn_write_sub(port, type, 3, powered, 0); + data[0] = db9_saturn_read_sub(port, type); + switch (data[0] & 0x0f) { + case 0xf: + /* 1111 no pad */ + return data[0] = 0xff; + case 0x4: case 0x4 | 0x8: + /* ?100 : digital controller */ + db9_saturn_write_sub(port, type, 0, powered, 1); + data[2] = db9_saturn_read_sub(port, type) << 4; + db9_saturn_write_sub(port, type, 2, powered, 1); + data[1] = db9_saturn_read_sub(port, type) << 4; + db9_saturn_write_sub(port, type, 1, powered, 1); + data[1] |= db9_saturn_read_sub(port, type); + db9_saturn_write_sub(port, type, 3, powered, 1); + /* data[2] |= db9_saturn_read_sub(port, type); */ + data[2] |= data[0]; + return data[0] = 0x02; + case 0x1: + /* 0001 : analog controller or multitap */ + db9_saturn_write_sub(port, type, 2, powered, 0); + udelay(DB9_SATURN_DELAY); + data[0] = db9_saturn_read_analog(port, type, powered); + if (data[0] != 0x41) { + /* read analog controller */ + for (i = 0; i < (data[0] & 0x0f); i++) + data[i + 1] = db9_saturn_read_analog(port, type, powered); + db9_saturn_write_sub(port, type, 3, powered, 0); + return data[0]; + } else { + /* read multitap */ + if (db9_saturn_read_analog(port, type, powered) != 0x60) + return data[0] = 0xff; + for (i = 0; i < 60; i += 10) { + data[i] = db9_saturn_read_analog(port, type, powered); + if (data[i] != 0xff) + /* read each pad */ + for (j = 0; j < (data[i] & 0x0f); j++) + data[i + j + 1] = db9_saturn_read_analog(port, type, powered); + } + db9_saturn_write_sub(port, type, 3, powered, 0); + return 0x41; + } + case 0x0: + /* 0000 : mouse */ + db9_saturn_write_sub(port, type, 2, powered, 0); + udelay(DB9_SATURN_DELAY); + tmp = db9_saturn_read_analog(port, type, powered); + if (tmp == 0xff) { + for (i = 0; i < 3; i++) + data[i + 1] = db9_saturn_read_analog(port, type, powered); + db9_saturn_write_sub(port, type, 3, powered, 0); + return data[0] = 0xe3; + } + default: + return data[0]; + } +} + +/* + * db9_saturn_report() analyzes packet and reports. + */ +static int db9_saturn_report(unsigned char id, unsigned char data[60], struct input_dev *dev, int n, int max_pads) +{ + int tmp, i, j; + + tmp = (id == 0x41) ? 60 : 10; + for (j = 0; (j < tmp) && (n < max_pads); j += 10, n++) { + switch (data[j]) { + case 0x16: /* multi controller (analog 4 axis) */ + input_report_abs(dev + n, db9_abs[5], data[j + 6]); + case 0x15: /* mission stick (analog 3 axis) */ + input_report_abs(dev + n, db9_abs[3], data[j + 4]); + input_report_abs(dev + n, db9_abs[4], data[j + 5]); + case 0x13: /* racing controller (analog 1 axis) */ + input_report_abs(dev + n, db9_abs[2], data[j + 3]); + case 0x34: /* saturn keyboard (udlr ZXC ASD QE Esc) */ + case 0x02: /* digital pad (digital 2 axis + buttons) */ + input_report_abs(dev + n, db9_abs[0], !(data[j + 1] & 128) - !(data[j + 1] & 64)); + input_report_abs(dev + n, db9_abs[1], !(data[j + 1] & 32) - !(data[j + 1] & 16)); + for (i = 0; i < 9; i++) + input_report_key(dev + n, db9_cd32_btn[i], ~data[j + db9_saturn_byte[i]] & db9_saturn_mask[i]); + break; + case 0x19: /* mission stick x2 (analog 6 axis + buttons) */ + input_report_abs(dev + n, db9_abs[0], !(data[j + 1] & 128) - !(data[j + 1] & 64)); + input_report_abs(dev + n, db9_abs[1], !(data[j + 1] & 32) - !(data[j + 1] & 16)); + for (i = 0; i < 9; i++) + input_report_key(dev + n, db9_cd32_btn[i], ~data[j + db9_saturn_byte[i]] & db9_saturn_mask[i]); + input_report_abs(dev + n, db9_abs[2], data[j + 3]); + input_report_abs(dev + n, db9_abs[3], data[j + 4]); + input_report_abs(dev + n, db9_abs[4], data[j + 5]); + /* + input_report_abs(dev + n, db9_abs[8], (data[j + 6] & 128 ? 0 : 1) - (data[j + 6] & 64 ? 0 : 1)); + input_report_abs(dev + n, db9_abs[9], (data[j + 6] & 32 ? 0 : 1) - (data[j + 6] & 16 ? 0 : 1)); + */ + input_report_abs(dev + n, db9_abs[6], data[j + 7]); + input_report_abs(dev + n, db9_abs[7], data[j + 8]); + input_report_abs(dev + n, db9_abs[5], data[j + 9]); + break; + case 0xd3: /* sankyo ff (analog 1 axis + stop btn) */ + input_report_key(dev + n, BTN_A, data[j + 3] & 0x80); + input_report_abs(dev + n, db9_abs[2], data[j + 3] & 0x7f); + break; + case 0xe3: /* shuttle mouse (analog 2 axis + buttons. signed value) */ + input_report_key(dev + n, BTN_START, data[j + 1] & 0x08); + input_report_key(dev + n, BTN_A, data[j + 1] & 0x04); + input_report_key(dev + n, BTN_C, data[j + 1] & 0x02); + input_report_key(dev + n, BTN_B, data[j + 1] & 0x01); + input_report_abs(dev + n, db9_abs[2], data[j + 2] ^ 0x80); + input_report_abs(dev + n, db9_abs[3], (0xff-(data[j + 3] ^ 0x80))+1); /* */ + break; + case 0xff: + default: /* no pad */ + input_report_abs(dev + n, db9_abs[0], 0); + input_report_abs(dev + n, db9_abs[1], 0); + for (i = 0; i < 9; i++) + input_report_key(dev + n, db9_cd32_btn[i], 0); + break; + } + } + return n; +} + +static int db9_saturn(int mode, struct parport *port, struct input_dev *dev) +{ + unsigned char id, data[60]; + int type, n, max_pads; + int tmp, i; + + switch (mode) { + case DB9_SATURN_PAD: + type = 0; + n = 1; + break; + case DB9_SATURN_DPP: + type = 1; + n = 1; + break; + case DB9_SATURN_DPP_2: + type = 1; + n = 2; + break; + default: + return -1; + } + max_pads = min(db9_max_pads[mode], DB9_MAX_DEVICES); + for (tmp = 0, i = 0; i < n; i++) { + id = db9_saturn_read_packet(port, data, type + i, 1); + tmp = db9_saturn_report(id, data, dev, tmp, max_pads); + } + return 0; +} static void db9_timer(unsigned long private) { @@ -222,28 +456,10 @@ break; case DB9_SATURN_PAD: + case DB9_SATURN_DPP: + case DB9_SATURN_DPP_2: - parport_write_control(port, DB9_SATURN0); - data = parport_read_data(port); - - input_report_key(dev, BTN_Y, ~data & DB9_LEFT); - input_report_key(dev, BTN_Z, ~data & DB9_DOWN); - input_report_key(dev, BTN_TL, ~data & DB9_UP); - input_report_key(dev, BTN_TR, ~data & DB9_RIGHT); - - parport_write_control(port, DB9_SATURN2); - data = parport_read_data(port); - - input_report_abs(dev, ABS_X, (data & DB9_RIGHT ? 0 : 1) - (data & DB9_LEFT ? 0 : 1)); - input_report_abs(dev, ABS_Y, (data & DB9_DOWN ? 0 : 1) - (data & DB9_UP ? 0 : 1)); - - parport_write_control(port, DB9_NORMAL); - data = parport_read_data(port); - - input_report_key(dev, BTN_A, ~data & DB9_LEFT); - input_report_key(dev, BTN_B, ~data & DB9_UP); - input_report_key(dev, BTN_C, ~data & DB9_DOWN); - input_report_key(dev, BTN_X, ~data & DB9_RIGHT); + db9_saturn(db9->mode, port, dev); break; case DB9_CD32_PAD: @@ -279,8 +495,10 @@ if (!db9->used++) { parport_claim(db9->pd); parport_write_data(port, 0xff); - parport_data_reverse(port); - parport_write_control(port, DB9_NORMAL); + if (db9_reverse[db9->mode]) { + parport_data_reverse(port); + parport_write_control(port, DB9_NORMAL); + } mod_timer(&db9->timer, jiffies + DB9_REFRESH_TIME); } @@ -321,11 +539,13 @@ return NULL; } - if (!(pp->modes & PARPORT_MODE_TRISTATE) && config[1] != DB9_MULTI_0802) { - printk(KERN_ERR "db9.c: specified parport is not bidirectional\n"); - return NULL; + if (db9_bidirectional[config[1]]) { + if (!(pp->modes & PARPORT_MODE_TRISTATE)) { + printk(KERN_ERR "db9.c: specified parport is not bidirectional\n"); + return NULL; + } } - + if (!(db9 = kmalloc(sizeof(struct db9), GFP_KERNEL))) return NULL; memset(db9, 0, sizeof(struct db9)); @@ -343,7 +563,7 @@ return NULL; } - for (i = 0; i < 1 + (db9->mode == DB9_MULTI_0802_2); i++) { + for (i = 0; i < (min(db9_max_pads[db9->mode], DB9_MAX_DEVICES)); i++) { sprintf(db9->phys[i], "%s/input%d", db9->pd->port->name, i); @@ -359,14 +579,19 @@ db9->dev[i].id.version = 0x0100; db9->dev[i].evbit[0] = BIT(EV_KEY) | BIT(EV_ABS); - db9->dev[i].absbit[0] = BIT(ABS_X) | BIT(ABS_Y); - for (j = 0; j < db9_buttons[db9->mode]; j++) set_bit(db9_btn[db9->mode][j], db9->dev[i].keybit); - - db9->dev[i].absmin[ABS_X] = -1; db9->dev[i].absmax[ABS_X] = 1; - db9->dev[i].absmin[ABS_Y] = -1; db9->dev[i].absmax[ABS_Y] = 1; - + for (j = 0; j < db9_num_axis[db9->mode]; j++) { + set_bit(db9_abs[j], db9->dev[i].absbit); + if (j < 2) { + db9->dev[i].absmin[db9_abs[j]] = -1; + db9->dev[i].absmax[db9_abs[j]] = 1; + } else { + db9->dev[i].absmin[db9_abs[j]] = 1; + db9->dev[i].absmax[db9_abs[j]] = 255; + db9->dev[i].absflat[db9_abs[j]] = 0; + } + } input_register_device(db9->dev + i); printk(KERN_INFO "input: %s on %s\n", db9->dev[i].name, db9->pd->port->name); } @@ -419,7 +644,7 @@ for (i = 0; i < 3; i++) if (db9_base[i]) { - for (j = 0; j < 1 + (db9_base[i]->mode == DB9_MULTI_0802_2); j++) + for (j = 0; j < min(db9_max_pads[db9_base[i]->mode], DB9_MAX_DEVICES); j++) input_unregister_device(db9_base[i]->dev + j); parport_unregister_device(db9_base[i]->pd); } diff -Nru a/drivers/input/joystick/iforce/iforce-packets.c b/drivers/input/joystick/iforce/iforce-packets.c --- a/drivers/input/joystick/iforce/iforce-packets.c Mon Sep 22 00:30:22 2003 +++ b/drivers/input/joystick/iforce/iforce-packets.c Mon Sep 22 00:30:22 2003 @@ -166,8 +166,7 @@ iforce->expect_packet = 0; iforce->ecmd = cmd; memcpy(iforce->edata, data, IFORCE_MAX_LENGTH); - if (waitqueue_active(&iforce->wait)) - wake_up(&iforce->wait); + wake_up(&iforce->wait); } #endif @@ -264,7 +263,7 @@ set_current_state(TASK_INTERRUPTIBLE); add_wait_queue(&iforce->wait, &wait); - if (usb_submit_urb(iforce->ctrl, GFP_KERNEL)) { + if (usb_submit_urb(iforce->ctrl, GFP_ATOMIC)) { set_current_state(TASK_RUNNING); remove_wait_queue(&iforce->wait, &wait); return -1; diff -Nru a/drivers/input/joystick/iforce/iforce-usb.c b/drivers/input/joystick/iforce/iforce-usb.c --- a/drivers/input/joystick/iforce/iforce-usb.c Mon Sep 22 00:30:24 2003 +++ b/drivers/input/joystick/iforce/iforce-usb.c Mon Sep 22 00:30:24 2003 @@ -116,8 +116,7 @@ iforce_usb_xmit(iforce); - if (waitqueue_active(&iforce->wait)) - wake_up(&iforce->wait); + wake_up(&iforce->wait); } static void iforce_usb_ctrl(struct urb *urb, struct pt_regs *regs) @@ -125,8 +124,7 @@ struct iforce *iforce = urb->context; if (urb->status) return; iforce->ecmd = 0xff00 | urb->actual_length; - if (waitqueue_active(&iforce->wait)) - wake_up(&iforce->wait); + wake_up(&iforce->wait); } static int iforce_usb_probe(struct usb_interface *intf, diff -Nru a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig --- a/drivers/input/keyboard/Kconfig Mon Sep 22 00:30:24 2003 +++ b/drivers/input/keyboard/Kconfig Mon Sep 22 00:30:24 2003 @@ -14,7 +14,8 @@ config KEYBOARD_ATKBD tristate "AT keyboard support" if EMBEDDED || !X86 default y - depends on INPUT && INPUT_KEYBOARD && SERIO + depends on INPUT && INPUT_KEYBOARD + select SERIO_I8042 help Say Y here if you want to use a standard AT or PS/2 keyboard. Usually you'll need this, unless you have a different type keyboard (USB, ADB @@ -30,7 +31,8 @@ config KEYBOARD_SUNKBD tristate "Sun Type 4 and Type 5 keyboard support" - depends on INPUT && INPUT_KEYBOARD && SERIO + depends on INPUT && INPUT_KEYBOARD + select SERIO help Say Y here if you want to use a Sun Type 4 or Type 5 keyboard, connected either to the Sun keyboard connector or to an serial @@ -43,7 +45,8 @@ config KEYBOARD_XTKBD tristate "XT Keyboard support" - depends on INPUT && INPUT_KEYBOARD && SERIO + depends on INPUT && INPUT_KEYBOARD + select SERIO help Say Y here if you want to use the old IBM PC/XT keyboard (or compatible) on your system. This is only possible with a @@ -57,7 +60,8 @@ config KEYBOARD_NEWTON tristate "Newton keyboard" - depends on INPUT && INPUT_KEYBOARD && SERIO + depends on INPUT && INPUT_KEYBOARD + select SERIO help Say Y here if you have a Newton keyboard on a serial port. @@ -92,7 +96,8 @@ config KEYBOARD_98KBD tristate "NEC PC-9800 Keyboard support" - depends on X86_PC9800 && INPUT && INPUT_KEYBOARD && SERIO + depends on X86_PC9800 && INPUT && INPUT_KEYBOARD + select SERIO help Say Y here if you want to use the NEC PC-9801/PC-9821 keyboard (or compatible) on your system. diff -Nru a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c --- a/drivers/input/keyboard/atkbd.c Mon Sep 22 00:30:24 2003 +++ b/drivers/input/keyboard/atkbd.c Mon Sep 22 00:30:24 2003 @@ -18,6 +18,7 @@ #include #include #include +#include MODULE_AUTHOR("Vojtech Pavlik "); MODULE_DESCRIPTION("AT and PS/2 keyboard driver"); @@ -40,8 +41,8 @@ static unsigned char atkbd_set2_keycode[512] = { 0, 67, 65, 63, 61, 59, 60, 88, 0, 68, 66, 64, 62, 15, 41, 85, 0, 56, 42,182, 29, 16, 2, 89, 0, 0, 44, 31, 30, 17, 3, 90, - 0, 46, 45, 32, 18, 5, 4, 91, 0, 57, 47, 33, 20, 19, 6, 0, - 0, 49, 48, 35, 34, 21, 7, 0, 0, 0, 50, 36, 22, 8, 9, 0, + 0, 46, 45, 32, 18, 5, 4, 91, 90, 57, 47, 33, 20, 19, 6, 0, + 91, 49, 48, 35, 34, 21, 7, 0, 0, 0, 50, 36, 22, 8, 9, 0, 0, 51, 37, 23, 24, 11, 10, 0, 0, 52, 53, 38, 39, 25, 12, 0, 122, 89, 40,120, 26, 13, 0, 0, 58, 54, 28, 27, 0, 43, 0, 0, 85, 86, 90, 91, 92, 93, 14, 94, 95, 79,183, 75, 71,121, 0,123, @@ -70,7 +71,7 @@ 134, 46, 45, 32, 18, 5, 4, 63,135, 57, 47, 33, 20, 19, 6, 64, 136, 49, 48, 35, 34, 21, 7, 65,137,100, 50, 36, 22, 8, 9, 66, 125, 51, 37, 23, 24, 11, 10, 67,126, 52, 53, 38, 39, 25, 12, 68, - 113,114, 40, 84, 26, 13, 87, 99,100, 54, 28, 27, 43, 84, 88, 70, + 113,114, 40, 84, 26, 13, 87, 99, 97, 54, 28, 27, 43, 84, 88, 70, 108,105,119,103,111,107, 14,110, 0, 79,106, 75, 71,109,102,104, 82, 83, 80, 76, 77, 72, 69, 98, 0, 96, 81, 0, 78, 73, 55, 85, 89, 90, 91, 92, 74,185,184,182, 0, 0, 0,125,126,127,112, 0, @@ -87,10 +88,10 @@ #define ATKBD_CMD_GSCANSET 0x11f0 #define ATKBD_CMD_SSCANSET 0x10f0 #define ATKBD_CMD_GETID 0x02f2 +#define ATKBD_CMD_SETREP 0x10f3 #define ATKBD_CMD_ENABLE 0x00f4 #define ATKBD_CMD_RESET_DIS 0x00f5 #define ATKBD_CMD_RESET_BAT 0x02ff -#define ATKBD_CMD_SETALL_MB 0x00f8 #define ATKBD_CMD_RESEND 0x00fe #define ATKBD_CMD_EX_ENABLE 0x10ea #define ATKBD_CMD_EX_SETLEDS 0x20eb @@ -114,12 +115,14 @@ unsigned char keycode[512]; struct input_dev dev; struct serio *serio; + struct timer_list timer; char name[64]; char phys[32]; unsigned char cmdbuf[4]; unsigned char cmdcnt; unsigned char set; unsigned char release; + int lastkey; volatile signed char ack; unsigned char emul; unsigned short id; @@ -142,6 +145,7 @@ printk(KERN_DEBUG "atkbd.c: Received %02x flags %02x\n", data, flags); #endif +#if !defined(__i386__) && !defined (__x86_64__) if ((flags & (SERIO_FRAME | SERIO_PARITY)) && (~flags & SERIO_TIMEOUT) && !atkbd->resend && atkbd->write) { printk("atkbd.c: frame/parity error: %02x\n", flags); serio_write(serio, ATKBD_CMD_RESEND); @@ -151,6 +155,7 @@ if (!flags) atkbd->resend = 0; +#endif switch (code) { case ATKBD_RET_ACK: @@ -195,6 +200,15 @@ atkbd->set, code, serio->phys, atkbd->release ? "released" : "pressed"); break; default: +#if 0 + if (!atkbd->release) { + mod_timer(&atkbd->timer, + jiffies + (test_bit(atkbd->keycode[code], + atkbd->dev.key) ? HZ/33 : HZ/4) + HZ/100); + atkbd->lastkey = atkbd->keycode[code]; + } +#endif + input_regs(&atkbd->dev, regs); input_report_key(&atkbd->dev, atkbd->keycode[code], !atkbd->release); input_sync(&atkbd->dev); @@ -205,6 +219,13 @@ return IRQ_HANDLED; } +static void atkbd_force_key_up(unsigned long data) +{ + struct atkbd *atkbd = (void *) data; + input_report_key(&atkbd->dev, atkbd->lastkey, 0); + input_sync(&atkbd->dev); +} + /* * atkbd_sendbyte() sends a byte to the keyboard, and waits for * acknowledge. It doesn't handle resends according to the keyboard @@ -214,7 +235,7 @@ static int atkbd_sendbyte(struct atkbd *atkbd, unsigned char byte) { - int timeout = 10000; /* 100 msec */ + int timeout = 20000; /* 200 msec */ atkbd->ack = 0; #ifdef ATKBD_DEBUG @@ -322,6 +343,53 @@ } /* + * atkbd_probe() probes for an AT keyboard on a serio port. + */ + +static int atkbd_probe(struct atkbd *atkbd) +{ + unsigned char param[2]; + +/* + * Some systems, where the bit-twiddling when testing the io-lines of the + * controller may confuse the keyboard need a full reset of the keyboard. On + * these systems the BIOS also usually doesn't do it for us. + */ + + if (atkbd_reset) + if (atkbd_command(atkbd, NULL, ATKBD_CMD_RESET_BAT)) + printk(KERN_WARNING "atkbd.c: keyboard reset failed on %s\n", atkbd->serio->phys); + +/* + * Then we check the keyboard ID. We should get 0xab83 under normal conditions. + * Some keyboards report different values, but the first byte is always 0xab or + * 0xac. Some old AT keyboards don't report anything. If a mouse is connected, this + * should make sure we don't try to set the LEDs on it. + */ + + if (atkbd_command(atkbd, param, ATKBD_CMD_GETID)) { + +/* + * If the get ID command failed, we check if we can at least set the LEDs on + * the keyboard. This should work on every keyboard out there. It also turns + * the LEDs off, which we want anyway. + */ + param[0] = 0; + if (atkbd_command(atkbd, param, ATKBD_CMD_SETLEDS)) + return -1; + atkbd->id = 0xabba; + return 0; + } + + if (param[0] != 0xab && param[0] != 0xac) + return -1; + atkbd->id = (param[0] << 8) | param[1]; + + + return 0; +} + +/* * atkbd_set_3 checks if a keyboard has a working Set 3 support, and * sets it into that. Unfortunately there are keyboards that can be switched * to Set 3, but don't work well in that (BTC Multimedia ...) @@ -355,75 +423,26 @@ return 4; } -/* - * Try to set the set we want. - */ + if (atkbd_set != 3) + return 2; - param[0] = atkbd_set; + param[0] = 3; if (atkbd_command(atkbd, param, ATKBD_CMD_SSCANSET)) return 2; -/* - * Read set number. Beware here. Some keyboards always send '2' - * or some other number regardless into what mode they have been - * attempted to be set. Other keyboards treat the '0' command as - * 'set to set 0', and not 'report current set' as they should. - * In that case we time out, and return 2. - */ - param[0] = 0; if (atkbd_command(atkbd, param, ATKBD_CMD_GSCANSET)) return 2; -/* - * Here we return the set number the keyboard reports about - * itself. - */ + if (param[0] != 3) + return 2; - return (param[0] == 3) ? 3 : 2; + return 3; } -/* - * atkbd_probe() probes for an AT keyboard on a serio port. - */ - -static int atkbd_probe(struct atkbd *atkbd) +static int atkbd_enable(struct atkbd *atkbd) { - unsigned char param[2]; - -/* - * Some systems, where the bit-twiddling when testing the io-lines of the - * controller may confuse the keyboard need a full reset of the keyboard. On - * these systems the BIOS also usually doesn't do it for us. - */ - - if (atkbd_reset) - if (atkbd_command(atkbd, NULL, ATKBD_CMD_RESET_BAT)) - printk(KERN_WARNING "atkbd.c: keyboard reset failed on %s\n", atkbd->serio->phys); - -/* - * Then we check the keyboard ID. We should get 0xab83 under normal conditions. - * Some keyboards report different values, but the first byte is always 0xab or - * 0xac. Some old AT keyboards don't report anything. - */ - - if (atkbd_command(atkbd, param, ATKBD_CMD_GETID)) { - -/* - * If the get ID command failed, we check if we can at least set the LEDs on - * the keyboard. This should work on every keyboard out there. It also turns - * the LEDs off, which we want anyway. - */ - param[0] = 0; - if (atkbd_command(atkbd, param, ATKBD_CMD_SETLEDS)) - return -1; - atkbd->id = 0xabba; - return 0; - } - - if (param[0] != 0xab && param[0] != 0xac) - return -1; - atkbd->id = (param[0] << 8) | param[1]; + unsigned char param[1]; /* * Set the LEDs to a defined state. @@ -434,21 +453,22 @@ return -1; /* - * Disable autorepeat. We don't need it, as we do it in software anyway, - * because that way can get faster repeat, and have less system load (less - * accesses to the slow ISA hardware). If this fails, we don't care, and will - * just ignore the repeated keys. + * Set autorepeat to fastest possible. */ - atkbd_command(atkbd, NULL, ATKBD_CMD_SETALL_MB); + param[0] = 0; + if (atkbd_command(atkbd, param, ATKBD_CMD_SETREP)) + return -1; /* - * Last, we enable the keyboard to make sure that we get keypresses from it. + * Enable the keyboard to receive keystrokes. */ - if (atkbd_command(atkbd, NULL, ATKBD_CMD_ENABLE)) + if (atkbd_command(atkbd, NULL, ATKBD_CMD_ENABLE)) { printk(KERN_ERR "atkbd.c: Failed to enable keyboard on %s\n", atkbd->serio->phys); + return -1; + } return 0; } @@ -505,6 +525,9 @@ atkbd->dev.ledbit[0] = BIT(LED_NUML) | BIT(LED_CAPSL) | BIT(LED_SCROLLL); } else atkbd->dev.evbit[0] = BIT(EV_KEY) | BIT(EV_REP); + atkbd->dev.rep[REP_DELAY] = HZ/4 + HZ/50; + atkbd->dev.rep[REP_PERIOD] = HZ/33; + atkbd->serio = serio; init_input_dev(&atkbd->dev); @@ -517,6 +540,10 @@ serio->private = atkbd; + init_timer(&atkbd->timer); + atkbd->timer.data = (long) atkbd; + atkbd->timer.function = atkbd_force_key_up; + if (serio_open(serio, dev)) { kfree(atkbd); return; @@ -531,6 +558,7 @@ } atkbd->set = atkbd_set_3(atkbd); + atkbd_enable(atkbd); } else { atkbd->set = 2; diff -Nru a/drivers/input/mouse/Kconfig b/drivers/input/mouse/Kconfig --- a/drivers/input/mouse/Kconfig Mon Sep 22 00:30:24 2003 +++ b/drivers/input/mouse/Kconfig Mon Sep 22 00:30:24 2003 @@ -14,14 +14,13 @@ config MOUSE_PS2 tristate "PS/2 mouse" default y - depends on INPUT && INPUT_MOUSE && SERIO + depends on INPUT && INPUT_MOUSE + select SERIO_I8042 ---help--- Say Y here if you have a PS/2 mouse connected to your system. This includes the standard 2 or 3-button PS/2 mouse, as well as PS/2 mice with wheels and extra buttons, Microsoft, Logitech or Genius - compatible. Support for Synaptics TouchPads is also included. - For Synaptics TouchPad support in XFree86 you'll need this XFree86 - driver: http://w1.894.telia.com/~u89404340/touchpad/index.html + compatible. If unsure, say Y. @@ -30,9 +29,26 @@ The module will be called psmouse. If you want to compile it as a module, say M here and read . +config MOUSE_PS2_SYNAPTICS + bool "Synaptics TouchPad" + default n + depends on INPUT && INPUT_MOUSE && MOUSE_PS2 + ---help--- + Say Y here if you have a Synaptics TouchPad connected to your system. + This touchpad is found on many modern laptop computers. + + Note that you also need a user space driver to interpret the data + generated by the kernel. A compatible driver for XFree86 is available + from http://w1.894.telia.com/~u89404340/touchpad/index.html + + The gpm program is not yet able to interpret the data from this + driver, so if you need to use the touchpad in the console, you have to + say N for now. + config MOUSE_SERIAL tristate "Serial mouse" - depends on INPUT && INPUT_MOUSE && SERIO + depends on INPUT && INPUT_MOUSE + select SERIO ---help--- Say Y here if you have a serial (RS-232, COM port) mouse connected to your system. This includes Sun, MouseSystems, Microsoft, diff -Nru a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c --- a/drivers/input/mouse/psmouse-base.c Mon Sep 22 00:30:19 2003 +++ b/drivers/input/mouse/psmouse-base.c Mon Sep 22 00:30:19 2003 @@ -17,6 +17,7 @@ #include #include #include +#include #include "psmouse.h" #include "synaptics.h" #include "logips2pp.h" @@ -29,6 +30,8 @@ MODULE_PARM_DESC(psmouse_resolution, "Resolution, in dpi."); MODULE_PARM(psmouse_smartscroll, "i"); MODULE_PARM_DESC(psmouse_smartscroll, "Logitech Smartscroll autorepeat, 1 = enabled (default), 0 = disabled."); +MODULE_PARM(psmouse_resetafter, "i"); +MODULE_PARM_DESC(psmouse_resetafter, "Reset Synaptics Touchpad after so many bad packets (0 = never)."); MODULE_LICENSE("GPL"); #define PSMOUSE_LOGITECH_SMARTSCROLL 1 @@ -36,11 +39,12 @@ static int psmouse_noext; int psmouse_resolution; int psmouse_smartscroll = PSMOUSE_LOGITECH_SMARTSCROLL; +unsigned int psmouse_resetafter; -static char *psmouse_protocols[] = { "None", "PS/2", "PS2++", "PS2T++", "GenPS/2", "ImPS/2", "ImExPS/2", "Synaptics"}; +static char *psmouse_protocols[] = { "None", "PS/2", "PS2++", "PS2T++", "GenPS/2", "ImPS/2", "ImExPS/2", "SynPS/2"}; /* - * psmouse_process_packet() anlyzes the PS/2 mouse packet contents and + * psmouse_process_packet() analyzes the PS/2 mouse packet contents and * reports relevant events to the input module. */ @@ -108,6 +112,9 @@ { struct psmouse *psmouse = serio->private; + if (psmouse->state == PSMOUSE_IGNORE) + goto out; + if (psmouse->acking) { switch (data) { case PSMOUSE_RET_ACK: @@ -132,20 +139,35 @@ } if (psmouse->pktcnt && time_after(jiffies, psmouse->last + HZ/2)) { - printk(KERN_WARNING "psmouse.c: Lost synchronization, throwing %d bytes away.\n", psmouse->pktcnt); + printk(KERN_WARNING "psmouse.c: %s at %s lost synchronization, throwing %d bytes away.\n", + psmouse->name, psmouse->phys, psmouse->pktcnt); psmouse->pktcnt = 0; } psmouse->last = jiffies; psmouse->packet[psmouse->pktcnt++] = data; - if (psmouse->pktcnt == 3 + (psmouse->type >= PSMOUSE_GENPS)) { - psmouse_process_packet(psmouse, regs); - psmouse->pktcnt = 0; - goto out; + if (psmouse->packet[0] == PSMOUSE_RET_BAT) { + if (psmouse->pktcnt == 1) + goto out; + + if (psmouse->pktcnt == 2) { + if (psmouse->packet[1] == PSMOUSE_RET_ID) { + psmouse->state = PSMOUSE_IGNORE; + serio_rescan(serio); + goto out; + } + if (psmouse->type == PSMOUSE_SYNAPTICS) { + /* neither 0xAA nor 0x00 are valid first bytes + * for a packet in absolute mode + */ + psmouse->pktcnt = 0; + goto out; + } + } } - if (psmouse->pktcnt == 1 && psmouse->type == PSMOUSE_SYNAPTICS) { + if (psmouse->type == PSMOUSE_SYNAPTICS) { /* * The synaptics driver has its own resync logic, * so it needs to receive all bytes one at a time. @@ -155,8 +177,9 @@ goto out; } - if (psmouse->pktcnt == 1 && psmouse->packet[0] == PSMOUSE_RET_BAT) { - serio_rescan(serio); + if (psmouse->pktcnt == 3 + (psmouse->type >= PSMOUSE_GENPS)) { + psmouse_process_packet(psmouse, regs); + psmouse->pktcnt = 0; goto out; } out: @@ -200,7 +223,7 @@ psmouse->cmdcnt = receive; if (command == PSMOUSE_CMD_RESET_BAT) - timeout = 2000000; /* 2 sec */ + timeout = 4000000; /* 4 sec */ if (command & 0xff) if (psmouse_sendbyte(psmouse, command & 0xff)) @@ -227,7 +250,7 @@ for (i = 0; i < receive; i++) param[i] = psmouse->cmdbuf[(receive - 1) - i]; - if (psmouse->cmdcnt) + if (psmouse->cmdcnt) return (psmouse->cmdcnt = 0) - 1; return 0; @@ -450,14 +473,18 @@ */ psmouse_command(psmouse, param, PSMOUSE_CMD_SETSTREAM); +} /* - * Last, we enable the mouse so that we get reports from it. + * psmouse_activate() enables the mouse so that we get motion reports from it. */ +static void psmouse_activate(struct psmouse *psmouse) +{ if (psmouse_command(psmouse, NULL, PSMOUSE_CMD_ENABLE)) printk(KERN_WARNING "psmouse.c: Failed to enable mouse on %s\n", psmouse->serio->phys); + psmouse->state = PSMOUSE_ACTIVATED; } /* @@ -478,13 +505,39 @@ static void psmouse_disconnect(struct serio *serio) { struct psmouse *psmouse = serio->private; + + psmouse->state = PSMOUSE_IGNORE; + synaptics_disconnect(psmouse); input_unregister_device(&psmouse->dev); serio_close(serio); - synaptics_disconnect(psmouse); kfree(psmouse); } /* + * Reinitialize mouse hardware after software suspend. + */ + +static int psmouse_pm_callback(struct pm_dev *dev, pm_request_t request, void *data) +{ + struct psmouse *psmouse = dev->data; + struct serio_dev *ser_dev = psmouse->serio->dev; + + synaptics_disconnect(psmouse); + + /* We need to reopen the serio port to reinitialize the i8042 controller */ + serio_close(psmouse->serio); + serio_open(psmouse->serio, ser_dev); + + /* Probe and re-initialize the mouse */ + psmouse_probe(psmouse); + psmouse_initialize(psmouse); + synaptics_pt_init(psmouse); + psmouse_activate(psmouse); + + return 0; +} + +/* * psmouse_connect() is a callback from the serio module when * an unhandled serio port is found. */ @@ -492,8 +545,10 @@ static void psmouse_connect(struct serio *serio, struct serio_dev *dev) { struct psmouse *psmouse; + struct pm_dev *pmdev; - if ((serio->type & SERIO_TYPE) != SERIO_8042) + if ((serio->type & SERIO_TYPE) != SERIO_8042 && + (serio->type & SERIO_TYPE) != SERIO_PS_PSTHRU) return; if (!(psmouse = kmalloc(sizeof(struct psmouse), GFP_KERNEL))) @@ -506,6 +561,7 @@ psmouse->dev.keybit[LONG(BTN_MOUSE)] = BIT(BTN_LEFT) | BIT(BTN_MIDDLE) | BIT(BTN_RIGHT); psmouse->dev.relbit[0] = BIT(REL_X) | BIT(REL_Y); + psmouse->state = PSMOUSE_NEW_DEVICE; psmouse->serio = serio; psmouse->dev.private = psmouse; @@ -522,6 +578,12 @@ return; } + pmdev = pm_register(PM_SYS_DEV, PM_SYS_UNKNOWN, psmouse_pm_callback); + if (pmdev) { + psmouse->dev.pm_dev = pmdev; + pmdev->data = psmouse; + } + sprintf(psmouse->devname, "%s %s %s", psmouse_protocols[psmouse->type], psmouse->vendor, psmouse->name); sprintf(psmouse->phys, "%s/input0", @@ -539,6 +601,10 @@ printk(KERN_INFO "input: %s on %s\n", psmouse->devname, serio->phys); psmouse_initialize(psmouse); + + synaptics_pt_init(psmouse); + + psmouse_activate(psmouse); } static struct serio_dev psmouse_dev = { @@ -567,9 +633,16 @@ return 1; } +static int __init psmouse_resetafter_setup(char *str) +{ + get_option(&str, &psmouse_resetafter); + return 1; +} + __setup("psmouse_noext", psmouse_noext_setup); __setup("psmouse_resolution=", psmouse_resolution_setup); __setup("psmouse_smartscroll=", psmouse_smartscroll_setup); +__setup("psmouse_resetafter=", psmouse_resetafter_setup); #endif diff -Nru a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h --- a/drivers/input/mouse/psmouse.h Mon Sep 22 00:30:24 2003 +++ b/drivers/input/mouse/psmouse.h Mon Sep 22 00:30:24 2003 @@ -13,9 +13,15 @@ #define PSMOUSE_CMD_RESET_BAT 0x02ff #define PSMOUSE_RET_BAT 0xaa +#define PSMOUSE_RET_ID 0x00 #define PSMOUSE_RET_ACK 0xfa #define PSMOUSE_RET_NAK 0xfe +/* psmouse states */ +#define PSMOUSE_NEW_DEVICE 0 +#define PSMOUSE_ACTIVATED 1 +#define PSMOUSE_IGNORE 2 + struct psmouse { void *private; struct input_dev dev; @@ -29,6 +35,7 @@ unsigned char type; unsigned char model; unsigned long last; + unsigned char state; char acking; volatile char ack; char error; @@ -36,16 +43,17 @@ char phys[32]; }; -#define PSMOUSE_PS2 1 -#define PSMOUSE_PS2PP 2 -#define PSMOUSE_PS2TPP 3 -#define PSMOUSE_GENPS 4 -#define PSMOUSE_IMPS 5 -#define PSMOUSE_IMEX 6 -#define PSMOUSE_SYNAPTICS 7 +#define PSMOUSE_PS2 1 +#define PSMOUSE_PS2PP 2 +#define PSMOUSE_PS2TPP 3 +#define PSMOUSE_GENPS 4 +#define PSMOUSE_IMPS 5 +#define PSMOUSE_IMEX 6 +#define PSMOUSE_SYNAPTICS 7 int psmouse_command(struct psmouse *psmouse, unsigned char *param, int command); extern int psmouse_smartscroll; +extern unsigned int psmouse_resetafter; #endif /* _PSMOUSE_H */ diff -Nru a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c --- a/drivers/input/mouse/synaptics.c Mon Sep 22 00:30:20 2003 +++ b/drivers/input/mouse/synaptics.c Mon Sep 22 00:30:20 2003 @@ -1,6 +1,9 @@ /* * Synaptics TouchPad PS/2 mouse driver * + * 2003 Dmitry Torokhov + * Added support for pass-through port + * * 2003 Peter Osterlund * Ported to 2.5 input device infrastructure. * @@ -21,6 +24,7 @@ #include #include +#include #include "psmouse.h" #include "synaptics.h" @@ -71,7 +75,7 @@ if (synaptics_special_cmd(psmouse, mode)) return -1; - param[0] = 0x14; + param[0] = SYN_PS_SET_MODE2; if (psmouse_command(psmouse, param, PSMOUSE_CMD_SETRATE)) return -1; return 0; @@ -83,7 +87,7 @@ if (psmouse_command(psmouse, r, PSMOUSE_CMD_RESET_BAT)) return -1; - if (r[0] == 0xAA && r[1] == 0x00) + if (r[0] == PSMOUSE_RET_BAT && r[1] == PSMOUSE_RET_ID) return 0; return -1; } @@ -106,16 +110,25 @@ * Read the capability-bits from the touchpad * see also the SYN_CAP_* macros */ -static int synaptics_capability(struct psmouse *psmouse, unsigned long int *capability) +static int synaptics_capability(struct psmouse *psmouse, unsigned long int *capability, unsigned long int *ext_cap) { unsigned char cap[3]; if (synaptics_send_cmd(psmouse, SYN_QUE_CAPABILITIES, cap)) return -1; *capability = (cap[0]<<16) | (cap[1]<<8) | cap[2]; - if (SYN_CAP_VALID(*capability)) - return 0; - return -1; + *ext_cap = 0; + if (!SYN_CAP_VALID(*capability)) + return -1; + + if (SYN_EXT_CAP_REQUESTS(*capability)) { + if (synaptics_send_cmd(psmouse, SYN_QUE_EXT_CAPAB, cap)) { + printk(KERN_ERR "Synaptics claims to have extended capabilities," + " but I'm not able to read them."); + } else + *ext_cap = (cap[0]<<16) | (cap[1]<<8) | cap[2]; + } + return 0; } /* @@ -134,19 +147,11 @@ return -1; } -static int synaptics_enable_device(struct psmouse *psmouse) -{ - if (psmouse_command(psmouse, NULL, PSMOUSE_CMD_ENABLE)) - return -1; - return 0; -} - static void print_ident(struct synaptics_data *priv) { printk(KERN_INFO "Synaptics Touchpad, model: %ld\n", SYN_ID_MODEL(priv->identity)); - printk(KERN_INFO " Firware: %ld.%ld\n", SYN_ID_MAJOR(priv->identity), + printk(KERN_INFO " Firmware: %ld.%ld\n", SYN_ID_MAJOR(priv->identity), SYN_ID_MINOR(priv->identity)); - if (SYN_MODEL_ROT180(priv->model_id)) printk(KERN_INFO " 180 degree mounted touchpad\n"); if (SYN_MODEL_PORTRAIT(priv->model_id)) @@ -159,12 +164,17 @@ if (SYN_CAP_EXTENDED(priv->capabilities)) { printk(KERN_INFO " Touchpad has extended capability bits\n"); - if (SYN_CAP_FOUR_BUTTON(priv->capabilities)) + if (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap)) + printk(KERN_INFO " -> %d multi-buttons, i.e. besides standard buttons\n", + (int)(SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap))); + else if (SYN_CAP_FOUR_BUTTON(priv->capabilities)) printk(KERN_INFO " -> four buttons\n"); if (SYN_CAP_MULTIFINGER(priv->capabilities)) printk(KERN_INFO " -> multifinger detection\n"); if (SYN_CAP_PALMDETECT(priv->capabilities)) printk(KERN_INFO " -> palm detection\n"); + if (SYN_CAP_PASS_THROUGH(priv->capabilities)) + printk(KERN_INFO " -> pass-through port\n"); } } @@ -172,6 +182,7 @@ { struct synaptics_data *priv = psmouse->private; int retries = 0; + int mode; while ((retries++ < 3) && synaptics_reset(psmouse)) printk(KERN_ERR "synaptics reset failed\n"); @@ -180,17 +191,107 @@ return -1; if (synaptics_model_id(psmouse, &priv->model_id)) return -1; - if (synaptics_capability(psmouse, &priv->capabilities)) + if (synaptics_capability(psmouse, &priv->capabilities, &priv->ext_cap)) return -1; - if (synaptics_set_mode(psmouse, (SYN_BIT_ABSOLUTE_MODE | - SYN_BIT_HIGH_RATE | - SYN_BIT_DISABLE_GESTURE | - SYN_BIT_W_MODE))) + + mode = SYN_BIT_ABSOLUTE_MODE | SYN_BIT_HIGH_RATE; + if (SYN_ID_MAJOR(priv->identity) >= 4) + mode |= SYN_BIT_DISABLE_GESTURE; + if (SYN_CAP_EXTENDED(priv->capabilities)) + mode |= SYN_BIT_W_MODE; + if (synaptics_set_mode(psmouse, mode)) return -1; - synaptics_enable_device(psmouse); + return 0; +} - print_ident(priv); +/***************************************************************************** + * Synaptics pass-through PS/2 port support + ****************************************************************************/ +static int synaptics_pt_open(struct serio *port) +{ + return 0; +} + +static void synaptics_pt_close(struct serio *port) +{ +} + +static int synaptics_pt_write(struct serio *port, unsigned char c) +{ + struct psmouse *parent = port->driver; + char rate_param = SYN_PS_CLIENT_CMD; /* indicates that we want pass-through port */ + + if (synaptics_special_cmd(parent, c)) + return -1; + if (psmouse_command(parent, &rate_param, PSMOUSE_CMD_SETRATE)) + return -1; + return 0; +} + +static inline int synaptics_is_pt_packet(unsigned char *buf) +{ + return (buf[0] & 0xFC) == 0x84 && (buf[3] & 0xCC) == 0xC4; +} + +static void synaptics_pass_pt_packet(struct serio *ptport, unsigned char *packet) +{ + struct psmouse *child = ptport->private; + + if (child) { + if (child->state == PSMOUSE_ACTIVATED) { + serio_interrupt(ptport, packet[1], 0, NULL); + serio_interrupt(ptport, packet[4], 0, NULL); + serio_interrupt(ptport, packet[5], 0, NULL); + if (child->type >= PSMOUSE_GENPS) + serio_interrupt(ptport, packet[2], 0, NULL); + } else if (child->state != PSMOUSE_IGNORE) { + serio_interrupt(ptport, packet[1], 0, NULL); + } + } +} + +int synaptics_pt_init(struct psmouse *psmouse) +{ + struct synaptics_data *priv = psmouse->private; + struct serio *port; + struct psmouse *child; + + if (psmouse->type != PSMOUSE_SYNAPTICS) + return -1; + if (!SYN_CAP_EXTENDED(priv->capabilities)) + return -1; + if (!SYN_CAP_PASS_THROUGH(priv->capabilities)) + return -1; + + priv->ptport = port = kmalloc(sizeof(struct serio), GFP_KERNEL); + if (!port) { + printk(KERN_ERR "synaptics: not enough memory to allocate serio port\n"); + return -1; + } + + memset(port, 0, sizeof(struct serio)); + port->type = SERIO_PS_PSTHRU; + port->name = "Synaptics pass-through"; + port->phys = "synaptics-pt/serio0"; + port->write = synaptics_pt_write; + port->open = synaptics_pt_open; + port->close = synaptics_pt_close; + port->driver = psmouse; + + printk(KERN_INFO "serio: %s port at %s\n", port->name, psmouse->phys); + serio_register_slave_port(port); + + /* adjust the touchpad to child's choice of protocol */ + child = port->private; + if (child && child->type >= PSMOUSE_GENPS) { + if (synaptics_set_mode(psmouse, (SYN_BIT_ABSOLUTE_MODE | + SYN_BIT_HIGH_RATE | + SYN_BIT_DISABLE_GESTURE | + SYN_BIT_FOUR_BYTE_CLIENT | + SYN_BIT_W_MODE))) + printk(KERN_INFO "synaptics: failed to enable 4-byte guest protocol\n"); + } return 0; } @@ -213,22 +314,27 @@ { struct synaptics_data *priv; +#ifndef CONFIG_MOUSE_PS2_SYNAPTICS + return -1; +#endif psmouse->private = priv = kmalloc(sizeof(struct synaptics_data), GFP_KERNEL); if (!priv) return -1; memset(priv, 0, sizeof(struct synaptics_data)); - priv->inSync = 1; + priv->out_of_sync = 0; if (query_hardware(psmouse)) { printk(KERN_ERR "Unable to query/initialize Synaptics hardware.\n"); goto init_fail; } + print_ident(priv); + /* * The x/y limits are taken from the Synaptics TouchPad interfacing Guide, * which says that they should be valid regardless of the actual size of - * the senser. + * the sensor. */ set_bit(EV_ABS, psmouse->dev.evbit); set_abs_params(&psmouse->dev, ABS_X, 1472, 5472, 0, 0); @@ -243,7 +349,24 @@ set_bit(BTN_RIGHT, psmouse->dev.keybit); set_bit(BTN_FORWARD, psmouse->dev.keybit); set_bit(BTN_BACK, psmouse->dev.keybit); - + if (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap)) + switch (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) & ~0x01) { + default: + printk(KERN_ERR "This touchpad reports more than 8 multi-buttons, don't know how to handle.\n"); + case 8: + set_bit(BTN_7, psmouse->dev.keybit); + set_bit(BTN_6, psmouse->dev.keybit); + case 6: + set_bit(BTN_5, psmouse->dev.keybit); + set_bit(BTN_4, psmouse->dev.keybit); + case 4: + set_bit(BTN_3, psmouse->dev.keybit); + set_bit(BTN_2, psmouse->dev.keybit); + case 2: + set_bit(BTN_1, psmouse->dev.keybit); + set_bit(BTN_0, psmouse->dev.keybit); + break; + } clear_bit(EV_REL, psmouse->dev.evbit); clear_bit(REL_X, psmouse->dev.relbit); clear_bit(REL_Y, psmouse->dev.relbit); @@ -259,42 +382,85 @@ { struct synaptics_data *priv = psmouse->private; - kfree(priv); + if (psmouse->type == PSMOUSE_SYNAPTICS && priv) { + synaptics_set_mode(psmouse, 0); + if (priv->ptport) { + serio_unregister_slave_port(priv->ptport); + kfree(priv->ptport); + } + kfree(priv); + } } /***************************************************************************** * Functions to interpret the absolute mode packets ****************************************************************************/ -static void synaptics_parse_hw_state(struct synaptics_data *priv, struct synaptics_hw_state *hw) +static void synaptics_parse_hw_state(unsigned char buf[], struct synaptics_data *priv, struct synaptics_hw_state *hw) { - unsigned char *buf = priv->proto_buf; - - hw->x = (((buf[3] & 0x10) << 8) | - ((buf[1] & 0x0f) << 8) | - buf[4]); - hw->y = (((buf[3] & 0x20) << 7) | - ((buf[1] & 0xf0) << 4) | - buf[5]); - - hw->z = buf[2]; - hw->w = (((buf[0] & 0x30) >> 2) | - ((buf[0] & 0x04) >> 1) | - ((buf[3] & 0x04) >> 2)); - - hw->left = (buf[0] & 0x01) ? 1 : 0; - hw->right = (buf[0] & 0x2) ? 1 : 0; hw->up = 0; hw->down = 0; + hw->b0 = 0; + hw->b1 = 0; + hw->b2 = 0; + hw->b3 = 0; + hw->b4 = 0; + hw->b5 = 0; + hw->b6 = 0; + hw->b7 = 0; + + if (SYN_MODEL_NEWABS(priv->model_id)) { + hw->x = (((buf[3] & 0x10) << 8) | + ((buf[1] & 0x0f) << 8) | + buf[4]); + hw->y = (((buf[3] & 0x20) << 7) | + ((buf[1] & 0xf0) << 4) | + buf[5]); + + hw->z = buf[2]; + hw->w = (((buf[0] & 0x30) >> 2) | + ((buf[0] & 0x04) >> 1) | + ((buf[3] & 0x04) >> 2)); + + hw->left = (buf[0] & 0x01) ? 1 : 0; + hw->right = (buf[0] & 0x02) ? 1 : 0; + if (SYN_CAP_EXTENDED(priv->capabilities) && + (SYN_CAP_FOUR_BUTTON(priv->capabilities))) { + hw->up = ((buf[3] & 0x01)) ? 1 : 0; + if (hw->left) + hw->up = !hw->up; + hw->down = ((buf[3] & 0x02)) ? 1 : 0; + if (hw->right) + hw->down = !hw->down; + } + if (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) && + ((buf[3] & 2) ? !hw->right : hw->right)) { + switch (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) & ~0x01) { + default: + ; /* we did comment while initialising... */ + case 8: + hw->b7 = ((buf[5] & 0x08)) ? 1 : 0; + hw->b6 = ((buf[4] & 0x08)) ? 1 : 0; + case 6: + hw->b5 = ((buf[5] & 0x04)) ? 1 : 0; + hw->b4 = ((buf[4] & 0x04)) ? 1 : 0; + case 4: + hw->b3 = ((buf[5] & 0x02)) ? 1 : 0; + hw->b2 = ((buf[4] & 0x02)) ? 1 : 0; + case 2: + hw->b1 = ((buf[5] & 0x01)) ? 1 : 0; + hw->b0 = ((buf[4] & 0x01)) ? 1 : 0; + } + } + } else { + hw->x = (((buf[1] & 0x1f) << 8) | buf[2]); + hw->y = (((buf[4] & 0x1f) << 8) | buf[5]); - if (SYN_CAP_EXTENDED(priv->capabilities) && - (SYN_CAP_FOUR_BUTTON(priv->capabilities))) { - hw->up = ((buf[3] & 0x01)) ? 1 : 0; - if (hw->left) - hw->up = !hw->up; - hw->down = ((buf[3] & 0x02)) ? 1 : 0; - if (hw->right) - hw->down = !hw->down; + hw->z = (((buf[0] & 0x30) << 2) | (buf[3] & 0x3F)); + hw->w = (((buf[1] & 0x80) >> 4) | ((buf[0] & 0x04) >> 1)); + + hw->left = (buf[0] & 0x01) ? 1 : 0; + hw->right = (buf[0] & 0x02) ? 1 : 0; } } @@ -307,7 +473,7 @@ struct synaptics_data *priv = psmouse->private; struct synaptics_hw_state hw; - synaptics_parse_hw_state(priv, &hw); + synaptics_parse_hw_state(psmouse->packet, priv, &hw); if (hw.z > 0) { int w_ok = 0; @@ -347,7 +513,24 @@ input_report_key(dev, BTN_RIGHT, hw.right); input_report_key(dev, BTN_FORWARD, hw.up); input_report_key(dev, BTN_BACK, hw.down); - + if (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap)) + switch(SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) & ~0x01) { + default: + ; /* we did comment while initialising... */ + case 8: + input_report_key(dev, BTN_7, hw.b7); + input_report_key(dev, BTN_6, hw.b6); + case 6: + input_report_key(dev, BTN_5, hw.b5); + input_report_key(dev, BTN_4, hw.b4); + case 4: + input_report_key(dev, BTN_3, hw.b3); + input_report_key(dev, BTN_2, hw.b2); + case 2: + input_report_key(dev, BTN_1, hw.b1); + input_report_key(dev, BTN_0, hw.b0); + break; + } input_sync(dev); } @@ -355,35 +538,59 @@ { struct input_dev *dev = &psmouse->dev; struct synaptics_data *priv = psmouse->private; - unsigned char *pBuf = priv->proto_buf; - unsigned char u = psmouse->packet[0]; + unsigned char data = psmouse->packet[psmouse->pktcnt - 1]; + int newabs = SYN_MODEL_NEWABS(priv->model_id); input_regs(dev, regs); - pBuf[priv->proto_buf_tail++] = u; + switch (psmouse->pktcnt) { + case 1: + if (newabs ? ((data & 0xC8) != 0x80) : ((data & 0xC0) != 0xC0)) { + printk(KERN_WARNING "Synaptics driver lost sync at 1st byte\n"); + goto bad_sync; + } + break; + case 2: + if (!newabs && ((data & 0x60) != 0x00)) { + printk(KERN_WARNING "Synaptics driver lost sync at 2nd byte\n"); + goto bad_sync; + } + break; + case 4: + if (newabs ? ((data & 0xC8) != 0xC0) : ((data & 0xC0) != 0x80)) { + printk(KERN_WARNING "Synaptics driver lost sync at 4th byte\n"); + goto bad_sync; + } + break; + case 5: + if (!newabs && ((data & 0x60) != 0x00)) { + printk(KERN_WARNING "Synaptics driver lost sync at 5th byte\n"); + goto bad_sync; + } + break; + default: + if (psmouse->pktcnt >= 6) { /* Full packet received */ + if (priv->out_of_sync) { + priv->out_of_sync = 0; + printk(KERN_NOTICE "Synaptics driver resynced.\n"); + } + + if (priv->ptport && synaptics_is_pt_packet(psmouse->packet)) + synaptics_pass_pt_packet(priv->ptport, psmouse->packet); + else + synaptics_process_packet(psmouse); - /* check first byte */ - if ((priv->proto_buf_tail == 1) && ((u & 0xC8) != 0x80)) { - priv->inSync = 0; - priv->proto_buf_tail = 0; - printk(KERN_WARNING "Synaptics driver lost sync at 1st byte\n"); - return; - } - - /* check 4th byte */ - if ((priv->proto_buf_tail == 4) && ((u & 0xc8) != 0xc0)) { - priv->inSync = 0; - priv->proto_buf_tail = 0; - printk(KERN_WARNING "Synaptics driver lost sync at 4th byte\n"); - return; - } - - if (priv->proto_buf_tail >= 6) { /* Full packet received */ - if (!priv->inSync) { - priv->inSync = 1; - printk(KERN_NOTICE "Synaptics driver resynced.\n"); + psmouse->pktcnt = 0; } - synaptics_process_packet(psmouse); - priv->proto_buf_tail = 0; + break; + } + return; + + bad_sync: + priv->out_of_sync++; + psmouse->pktcnt = 0; + if (psmouse_resetafter > 0 && priv->out_of_sync == psmouse_resetafter) { + psmouse->state = PSMOUSE_IGNORE; + serio_rescan(psmouse->serio); } } diff -Nru a/drivers/input/mouse/synaptics.h b/drivers/input/mouse/synaptics.h --- a/drivers/input/mouse/synaptics.h Mon Sep 22 00:30:21 2003 +++ b/drivers/input/mouse/synaptics.h Mon Sep 22 00:30:21 2003 @@ -12,6 +12,7 @@ extern void synaptics_process_byte(struct psmouse *psmouse, struct pt_regs *regs); extern int synaptics_init(struct psmouse *psmouse); +extern int synaptics_pt_init(struct psmouse *psmouse); extern void synaptics_disconnect(struct psmouse *psmouse); /* synaptics queries */ @@ -22,12 +23,14 @@ #define SYN_QUE_SERIAL_NUMBER_PREFIX 0x06 #define SYN_QUE_SERIAL_NUMBER_SUFFIX 0x07 #define SYN_QUE_RESOLUTION 0x08 +#define SYN_QUE_EXT_CAPAB 0x09 /* synatics modes */ #define SYN_BIT_ABSOLUTE_MODE (1 << 7) #define SYN_BIT_HIGH_RATE (1 << 6) #define SYN_BIT_SLEEP_MODE (1 << 3) #define SYN_BIT_DISABLE_GESTURE (1 << 2) +#define SYN_BIT_FOUR_BYTE_CLIENT (1 << 1) #define SYN_BIT_W_MODE (1 << 0) /* synaptics model ID bits */ @@ -42,11 +45,14 @@ /* synaptics capability bits */ #define SYN_CAP_EXTENDED(c) ((c) & (1 << 23)) +#define SYN_CAP_PASS_THROUGH(c) ((c) & (1 << 7)) #define SYN_CAP_SLEEP(c) ((c) & (1 << 4)) #define SYN_CAP_FOUR_BUTTON(c) ((c) & (1 << 3)) #define SYN_CAP_MULTIFINGER(c) ((c) & (1 << 1)) #define SYN_CAP_PALMDETECT(c) ((c) & (1 << 0)) #define SYN_CAP_VALID(c) ((((c) & 0x00ff00) >> 8) == 0x47) +#define SYN_EXT_CAP_REQUESTS(c) ((((c) & 0x700000) >> 20) == 1) +#define SYN_CAP_MULTI_BUTTON_NO(ec) (((ec) & 0x00f000) >> 12) /* synaptics modes query bits */ #define SYN_MODE_ABSOLUTE(m) ((m) & (1 << 7)) @@ -62,6 +68,10 @@ #define SYN_ID_MINOR(i) (((i) >> 16) & 0xff) #define SYN_ID_IS_SYNAPTICS(i) ((((i) >> 8) & 0xff) == 0x47) +/* synaptics special commands */ +#define SYN_PS_SET_MODE2 0x14 +#define SYN_PS_CLIENT_CMD 0x28 + /* * A structure to describe the state of the touchpad hardware (buttons and pad) */ @@ -75,21 +85,28 @@ int right; int up; int down; + int b0; + int b1; + int b2; + int b3; + int b4; + int b5; + int b6; + int b7; }; struct synaptics_data { /* Data read from the touchpad */ unsigned long int model_id; /* Model-ID */ unsigned long int capabilities; /* Capabilities */ + unsigned long int ext_cap; /* Extended Capabilities */ unsigned long int identity; /* Identification */ /* Data for normal processing */ - unsigned char proto_buf[6]; /* Buffer for Packet */ - unsigned char last_byte; /* last received byte */ - int inSync; /* Packets in sync */ - int proto_buf_tail; - + unsigned int out_of_sync; /* # of packets out of sync */ int old_w; /* Previous w value */ + + struct serio *ptport; /* pass-through port */ }; #endif /* _SYNAPTICS_H */ diff -Nru a/drivers/input/serio/Kconfig b/drivers/input/serio/Kconfig --- a/drivers/input/serio/Kconfig Mon Sep 22 00:30:22 2003 +++ b/drivers/input/serio/Kconfig Mon Sep 22 00:30:22 2003 @@ -2,7 +2,7 @@ # Input core configuration # config SERIO - tristate "Serial i/o support (needed for keyboard and mouse)" + tristate "Serial i/o support" if EMBEDDED || !X86 default y ---help--- Say Yes here if you have any input device that uses serial I/O to @@ -21,7 +21,7 @@ config SERIO_I8042 tristate "i8042 PC Keyboard controller" if EMBEDDED || !X86 default y - depends on SERIO + select SERIO ---help--- i8042 is the chip over which the standard AT keyboard and PS/2 mouse are connected to the computer. If you use these devices, diff -Nru a/drivers/input/serio/ambakmi.c b/drivers/input/serio/ambakmi.c --- a/drivers/input/serio/ambakmi.c Mon Sep 22 00:30:23 2003 +++ b/drivers/input/serio/ambakmi.c Mon Sep 22 00:30:23 2003 @@ -73,7 +73,7 @@ writeb(kmi->divisor, KMICLKDIV); writeb(KMICR_EN, KMICR); - ret = request_irq(kmi->irq, amba_kmi_int, 0, kmi->io.phys, kmi); + ret = request_irq(kmi->irq, amba_kmi_int, 0, "kmi-pl050", kmi); if (ret) { printk(KERN_ERR "kmi: failed to claim IRQ%d\n", kmi->irq); writeb(0, KMICR); @@ -108,11 +108,11 @@ kmi->io.write = amba_kmi_write; kmi->io.open = amba_kmi_open; kmi->io.close = amba_kmi_close; - kmi->io.name = dev->dev.name; + kmi->io.name = dev->dev.bus_id; kmi->io.phys = dev->dev.bus_id; kmi->io.driver = kmi; - kmi->res = request_mem_region(dev->res.start, KMI_SIZE, kmi->io.phys); + kmi->res = request_mem_region(dev->res.start, KMI_SIZE, "kmi-pl050"); if (!kmi->res) { kfree(kmi); return -EBUSY; @@ -147,14 +147,12 @@ return 0; } -static int amba_kmi_resume(struct amba_device *dev, u32 level) +static int amba_kmi_resume(struct amba_device *dev) { struct amba_kmi_port *kmi = amba_get_drvdata(dev); - if (level == RESUME_ENABLE) { - /* kick the serio layer to rescan this port */ - serio_rescan(&kmi->io); - } + /* kick the serio layer to rescan this port */ + serio_rescan(&kmi->io); return 0; } diff -Nru a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c --- a/drivers/input/serio/serio.c Mon Sep 22 00:30:18 2003 +++ b/drivers/input/serio/serio.c Mon Sep 22 00:30:18 2003 @@ -49,7 +49,9 @@ EXPORT_SYMBOL(serio_interrupt); EXPORT_SYMBOL(serio_register_port); +EXPORT_SYMBOL(serio_register_slave_port); EXPORT_SYMBOL(serio_unregister_port); +EXPORT_SYMBOL(serio_unregister_slave_port); EXPORT_SYMBOL(serio_register_device); EXPORT_SYMBOL(serio_unregister_device); EXPORT_SYMBOL(serio_open); @@ -166,6 +168,17 @@ up(&serio_sem); } +/* + * Same as serio_register_port but does not try to acquire serio_sem. + * Should be used when registering a serio from other input device's + * connect() function. + */ +void serio_register_slave_port(struct serio *serio) +{ + list_add_tail(&serio->node, &serio_list); + serio_find_dev(serio); +} + void serio_unregister_port(struct serio *serio) { down(&serio_sem); @@ -175,6 +188,18 @@ up(&serio_sem); } +/* + * Same as serio_unregister_port but does not try to acquire serio_sem. + * Should be used when unregistering a serio from other input device's + * disconnect() function. + */ +void serio_unregister_slave_port(struct serio *serio) +{ + list_del_init(&serio->node); + if (serio->dev && serio->dev->disconnect) + serio->dev->disconnect(serio); +} + void serio_register_device(struct serio_dev *dev) { struct serio *serio; @@ -204,9 +229,11 @@ /* called from serio_dev->connect/disconnect methods under serio_sem */ int serio_open(struct serio *serio, struct serio_dev *dev) { - if (serio->open(serio)) - return -1; serio->dev = dev; + if (serio->open(serio)) { + serio->dev = NULL; + return -1; + } return 0; } @@ -221,8 +248,7 @@ { int pid; - pid = kernel_thread(serio_thread, NULL, - CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + pid = kernel_thread(serio_thread, NULL, CLONE_KERNEL); if (!pid) { printk(KERN_WARNING "serio: Failed to start kseriod\n"); diff -Nru a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig --- a/drivers/input/touchscreen/Kconfig Mon Sep 22 00:30:21 2003 +++ b/drivers/input/touchscreen/Kconfig Mon Sep 22 00:30:21 2003 @@ -12,7 +12,8 @@ config TOUCHSCREEN_BITSY tristate "Compaq iPAQ H3600 (Bitsy) touchscreen input driver" - depends on SA1100_BITSY && INPUT && INPUT_TOUCHSCREEN && SERIO + depends on SA1100_BITSY && INPUT && INPUT_TOUCHSCREEN + select SERIO help Say Y here if you have the h3600 (Bitsy) touchscreen. @@ -25,7 +26,8 @@ config TOUCHSCREEN_GUNZE tristate "Gunze AHL-51S touchscreen" - depends on INPUT && INPUT_TOUCHSCREEN && SERIO + depends on INPUT && INPUT_TOUCHSCREEN + select SERIO help Say Y here if you have the Gunze AHL-51 touchscreen connected to your system. diff -Nru a/drivers/isdn/hardware/avm/avm_cs.c b/drivers/isdn/hardware/avm/avm_cs.c --- a/drivers/isdn/hardware/avm/avm_cs.c Mon Sep 22 00:30:18 2003 +++ b/drivers/isdn/hardware/avm/avm_cs.c Mon Sep 22 00:30:18 2003 @@ -431,15 +431,6 @@ static void avmcs_release(dev_link_t *link) { - /* - If the device is currently in use, we won't release until it - is actually closed. - */ - if (link->open) { - link->state |= DEV_STALE_CONFIG; - return; - } - b1pcmcia_delcard(link->io.BasePort1, link->irq.AssignedIRQ); /* Unlink the device chain */ diff -Nru a/drivers/isdn/hardware/eicon/Kconfig b/drivers/isdn/hardware/eicon/Kconfig --- a/drivers/isdn/hardware/eicon/Kconfig Mon Sep 22 00:30:22 2003 +++ b/drivers/isdn/hardware/eicon/Kconfig Mon Sep 22 00:30:22 2003 @@ -12,7 +12,7 @@ config ISDN_DIVAS tristate "Support Eicon DIVA Server cards" - depends on CAPI_EICON && PROC_FS && PCI && m + depends on CAPI_EICON && PROC_FS && PCI help Say Y here if you have an Eicon Networks DIVA Server PCI ISDN card. In order to use this card, additional firmware is necessary, which @@ -24,12 +24,6 @@ help Enable support for DIVA Server BRI-PCI. -config ISDN_DIVAS_4BRIPCI - bool "DIVA Server 4BRI/PCI support" - depends on ISDN_DIVAS - help - Enable support for DIVA Server 4BRI-PCI. - config ISDN_DIVAS_PRIPCI bool "DIVA Server PRI/PCI support" depends on ISDN_DIVAS @@ -43,17 +37,17 @@ You need this to provide the CAPI interface for DIVA Server cards. -config ISDN_DIVAS_MAINT - tristate "DIVA Maint driver support" - depends on ISDN_DIVAS - help - Enable Divas Maintainance driver. - config ISDN_DIVAS_USERIDI tristate "DIVA User-IDI interface support" depends on ISDN_DIVAS help Enable support for user-mode IDI interface. + +config ISDN_DIVAS_MAINT + tristate "DIVA Maint driver support" + depends on ISDN_DIVAS && m + help + Enable Divas Maintainance driver. endmenu diff -Nru a/drivers/isdn/hardware/eicon/Makefile b/drivers/isdn/hardware/eicon/Makefile --- a/drivers/isdn/hardware/eicon/Makefile Mon Sep 22 00:30:24 2003 +++ b/drivers/isdn/hardware/eicon/Makefile Mon Sep 22 00:30:24 2003 @@ -10,9 +10,8 @@ # Multipart objects. divas-y := divasmain.o divasfunc.o di.o io.o istream.o \ - diva.o dlist.o divasproc.o diva_dma.o -divas-$(CONFIG_ISDN_DIVAS_BRIPCI) += os_bri.o s_bri.o -divas-$(CONFIG_ISDN_DIVAS_4BRIPCI) += os_4bri.o s_4bri.o + diva.o divasproc.o diva_dma.o +divas-$(CONFIG_ISDN_DIVAS_BRIPCI) += os_bri.o s_bri.o os_4bri.o s_4bri.o divas-$(CONFIG_ISDN_DIVAS_PRIPCI) += os_pri.o s_pri.o divacapi-y := capimain.o capifunc.o message.o capidtmf.o @@ -21,4 +20,4 @@ diva_mnt-y := divamnt.o mntfunc.o debug.o maintidi.o -diva_idi-y := divasi.o idifunc.o um_idi.o dqueue.o dlist.o +diva_idi-y := divasi.o idifunc.o um_idi.o dqueue.o diff -Nru a/drivers/isdn/hardware/eicon/capifunc.c b/drivers/isdn/hardware/eicon/capifunc.c --- a/drivers/isdn/hardware/eicon/capifunc.c Mon Sep 22 00:30:24 2003 +++ b/drivers/isdn/hardware/eicon/capifunc.c Mon Sep 22 00:30:24 2003 @@ -1,10 +1,10 @@ -/* $Id: capifunc.c,v 1.1.2.2 2002/10/02 14:38:37 armin Exp $ +/* $Id: capifunc.c,v 1.47 2003/09/09 06:52:29 schindler Exp $ * * ISDN interface module for Eicon active cards DIVA. * CAPI Interface common functions * - * Copyright 2000-2002 by Armin Schindler (mac@melware.de) - * Copyright 2000-2002 Cytronics & Melware (info@melware.de) + * Copyright 2000-2003 by Armin Schindler (mac@melware.de) + * Copyright 2000-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. @@ -25,10 +25,11 @@ DIVA_CAPI_ADAPTER *adapter = (DIVA_CAPI_ADAPTER *) NULL; APPL *application = (APPL *) NULL; byte max_appl = MAX_APPL; +byte max_adapter = 0; static CAPI_MSG *mapped_msg = (CAPI_MSG *) NULL; byte UnMapController(byte); -char DRIVERRELEASE[32]; +char DRIVERRELEASE_CAPI[32]; extern void AutomaticLaw(DIVA_CAPI_ADAPTER *); extern void callback(ENTITY *); @@ -45,7 +46,6 @@ static void DIRequest(ENTITY * e); static DESCRIPTOR MAdapter; static DESCRIPTOR DAdapter; -byte max_adapter = 0; static byte ControllerMap[MAX_DESCRIPTORS + 1]; @@ -59,16 +59,14 @@ extern void DIVA_DIDD_Read(DESCRIPTOR *, int); -static void no_printf(unsigned char *, ...); - -DIVA_DI_PRINTF dprintf = no_printf; - /* * debug */ +static void no_printf(unsigned char *, ...); #include "debuglib.c" void xlog(char *x, ...) { +#ifndef DIVA_NO_DEBUGLIB va_list ap; if (myDriverDebugHandle.dbgMask & DL_XLOG) { va_start(ap, x); @@ -81,6 +79,7 @@ } va_end(ap); } +#endif } /* @@ -162,13 +161,14 @@ p = cards; while (p) { if (p->Id == num) - goto next_id; + break; p = p->next; } + if(!p) { diva_os_leave_spin_lock(&ll_lock, &old_irql, "find free id"); return (num); - next_id: + } } diva_os_leave_spin_lock(&ll_lock, &old_irql, "find free id"); return (999); @@ -315,10 +315,11 @@ /* if DATA_B3_IND, copy data too */ if (command == _DATA_B3_I) { - dword data = READ_DWORD(((byte *) & msg.info.data_b3_ind.Data)); + dword data = READ_DWORD(&msg.info.data_b3_ind.Data); memcpy(write + length, (void *) data, dlength); } +#ifndef DIVA_NO_DEBUGLIB if (myDriverDebugHandle.dbgMask & DL_XLOG) { switch (command) { default: @@ -332,8 +333,8 @@ if (myDriverDebugHandle.dbgMask & DL_BLK) { xlog("\x00\x02", &msg, 0x81, length); for (i = 0; i < dlength; i += 256) { - DBG_BLK((((char *) msg.info.data_b3_ind. - Data) + i, ((dlength - i) < 256) ? (dlength - i) : 256)) + DBG_BLK((((char *) READ_DWORD(&msg.info.data_b3_ind.Data)) + i, + ((dlength - i) < 256) ? (dlength - i) : 256)) if (!(myDriverDebugHandle.dbgMask & DL_PRV0)) break; /* not more if not explicitely requested */ } @@ -341,6 +342,7 @@ break; } } +#endif /* find the card structure for this controller */ if (!(card = find_card_by_ctrl(write[8] & 0x7f))) { @@ -719,7 +721,7 @@ } /* profile information */ - ctrl->profile.nbchannel = card->d.channels; + WRITE_WORD(&ctrl->profile.nbchannel, card->d.channels); ctrl->profile.goptions = a->profile.Global_Options; ctrl->profile.support1 = a->profile.B1_Protocols; ctrl->profile.support2 = a->profile.B2_Protocols; @@ -745,17 +747,20 @@ { APPL *this; word bnum, xnum; - int i = 0, j = 0; + int i = 0; + unsigned char *p; void *DataNCCI, *DataFlags, *ReceiveBuffer, *xbuffer_used; void **xbuffer_ptr, **xbuffer_internal; diva_os_spin_lock_magic_t old_irql; + unsigned int mem_len; + if (diva_os_in_irq()) { DBG_ERR(("CAPI_REGISTER - in irq context !")) return; } - DBG_TRC(("application register")) + DBG_TRC(("application register Id=%d", appl)) if (appl > MAX_APPL) { DBG_ERR(("CAPI_REGISTER - appl.Id exceeds MAX_APPL")) @@ -775,97 +780,47 @@ return; /* appl already registered */ } - if (!try_module_get(ctrl->owner)) { - printk(KERN_WARNING "%s: cannot reserve module\n", __FUNCTION__); - return; - } - /* alloc memory */ bnum = rp->level3cnt * rp->datablkcnt; xnum = rp->level3cnt * MAX_DATA_B3; - if (!(DataNCCI = diva_os_malloc(0, bnum * sizeof(word)))) { - DBG_ERR(("CAPI_REGISTER - memory allocation failed")) - module_put(ctrl->owner); - return; - } - memset(DataNCCI, 0, bnum * sizeof(word)); - - if (!(DataFlags = diva_os_malloc(0, bnum * sizeof(word)))) { - DBG_ERR(("CAPI_REGISTER - memory allocation failed")) - diva_os_free(0, DataNCCI); - module_put(ctrl->owner); - return; - } - memset(DataFlags, 0, bnum * sizeof(word)); - - if (!(ReceiveBuffer = diva_os_malloc(0, bnum * rp->datablklen))) { - DBG_ERR(("CAPI_REGISTER - memory allocation failed")) - diva_os_free(0, DataNCCI); - diva_os_free(0, DataFlags); - module_put(ctrl->owner); - return; - } - memset(ReceiveBuffer, 0, bnum * rp->datablklen); - - if (!(xbuffer_used = (byte *) diva_os_malloc(0, xnum))) { - DBG_ERR(("CAPI_REGISTER - memory allocation failed")) - diva_os_free(0, DataNCCI); - diva_os_free(0, DataFlags); - diva_os_free(0, ReceiveBuffer); - module_put(ctrl->owner); - return; - } - memset(xbuffer_used, 0, xnum); + mem_len = bnum * sizeof(word); /* DataNCCI */ + mem_len += bnum * sizeof(word); /* DataFlags */ + mem_len += bnum * rp->datablklen; /* ReceiveBuffer */ + mem_len += xnum; /* xbuffer_used */ + mem_len += xnum * sizeof(void *); /* xbuffer_ptr */ + mem_len += xnum * sizeof(void *); /* xbuffer_internal */ + mem_len += xnum * rp->datablklen; /* xbuffer_ptr[xnum] */ - if (!(xbuffer_ptr = (void **) diva_os_malloc(0, xnum * sizeof(void *)))) { + if (!(p = diva_os_malloc(0, mem_len))) { DBG_ERR(("CAPI_REGISTER - memory allocation failed")) - diva_os_free(0, DataNCCI); - diva_os_free(0, DataFlags); - diva_os_free(0, ReceiveBuffer); - diva_os_free(0, xbuffer_used); - module_put(ctrl->owner); return; } - memset(xbuffer_ptr, 0, xnum * sizeof(void *)); - - if (!(xbuffer_internal = (void **) diva_os_malloc(0, xnum * sizeof(void *)))) { - DBG_ERR(("CAPI_REGISTER - memory allocation failed")) - diva_os_free(0, DataNCCI); - diva_os_free(0, DataFlags); - diva_os_free(0, ReceiveBuffer); - diva_os_free(0, xbuffer_used); - diva_os_free(0, xbuffer_ptr); - module_put(ctrl->owner); - return; - } - memset(xbuffer_internal, 0, xnum * sizeof(void *)); + memset(p, 0, mem_len); + DataNCCI = (void *)p; + p += bnum * sizeof(word); + DataFlags = (void *)p; + p += bnum * sizeof(word); + ReceiveBuffer = (void *)p; + p += bnum * rp->datablklen; + xbuffer_used = (void *)p; + p += xnum; + xbuffer_ptr = (void **)p; + p += xnum * sizeof(void *); + xbuffer_internal = (void **)p; + p += xnum * sizeof(void *); for (i = 0; i < xnum; i++) { - xbuffer_ptr[i] = diva_os_malloc(0, rp->datablklen); - if (!xbuffer_ptr[i]) { - DBG_ERR(("CAPI_REGISTER - memory allocation failed")) - if (i) { - for (j = 0; j < i; j++) - if (xbuffer_ptr[j]) - diva_os_free(0, xbuffer_ptr [j]); - } - diva_os_free(0, DataNCCI); - diva_os_free(0, DataFlags); - diva_os_free(0, ReceiveBuffer); - diva_os_free(0, xbuffer_used); - diva_os_free(0, xbuffer_ptr); - diva_os_free(0, xbuffer_internal); - module_put(ctrl->owner); - return; - } + xbuffer_ptr[i] = (void *)p; + p += rp->datablklen; } DBG_LOG(("CAPI_REGISTER - Id = %d", appl)) DBG_LOG((" MaxLogicalConnections = %d", rp->level3cnt)) DBG_LOG((" MaxBDataBuffers = %d", rp->datablkcnt)) DBG_LOG((" MaxBDataLength = %d", rp->datablklen)) + DBG_LOG((" Allocated Memory = %d", mem_len)) /* initialize application data */ diva_os_enter_spin_lock(&api_lock, &old_irql, "register_appl"); @@ -875,9 +830,6 @@ this->Id = appl; - /* We do not need a list */ - /* InitializeListHead(&this->s_function); */ - for (i = 0; i < max_adapter; i++) { adapter[i].CIP_Mask[appl - 1] = 0; } @@ -911,41 +863,24 @@ { diva_os_spin_lock_magic_t old_irql; APPL *this = &application[appl - 1]; - int i = 0; + + DBG_TRC(("application %d(%d) cleanup", this->Id, appl)) if (diva_os_in_irq()) { DBG_ERR(("CAPI_RELEASE - in irq context !")) return; } - if (this->Id) { - DBG_TRC(("application %d cleanup", this->Id)) - } diva_os_enter_spin_lock(&api_lock, &old_irql, "release_appl"); if (this->Id) { CapiRelease(this->Id); if (this->DataNCCI) diva_os_free(0, this->DataNCCI); - if (this->DataFlags) - diva_os_free(0, this->DataFlags); - if (this->ReceiveBuffer) - diva_os_free(0, this->ReceiveBuffer); - if (this->xbuffer_ptr) { - for (i = 0; i < (MAX_DATA_B3 * this->MaxNCCI); i++) { - if (this->xbuffer_ptr[i]) - diva_os_free(0, this->xbuffer_ptr[i]); - } - diva_os_free(0, this->xbuffer_ptr); - } - if (this->xbuffer_internal) - diva_os_free(0, this->xbuffer_internal); - if (this->xbuffer_used) - diva_os_free(0, this->xbuffer_used); + this->DataNCCI = NULL; this->Id = 0; } diva_os_leave_spin_lock(&api_lock, &old_irql, "release_appl"); - module_put(ctrl->owner); } /* @@ -954,7 +889,7 @@ static u16 diva_send_message(struct capi_ctr *ctrl, diva_os_message_buffer_s * dmb) { - int i = 0, j = 0; + int i = 0; word ret = 0; diva_os_spin_lock_magic_t old_irql; CAPI_MSG *msg = (CAPI_MSG *) DIVA_MESSAGE_BUFFER_DATA(dmb); @@ -971,6 +906,10 @@ } DBG_PRV1(("Write - appl = %d, cmd = 0x%x", this->Id, command)) + if (!this->Id) { + return CAPI_ILLAPPNR; + } + /* patch controller number */ msg->header.controller = ControllerMap[card->Id] | (msg->header.controller & 0x80); /* preserve external controller bit */ @@ -983,13 +922,17 @@ break; case _DATA_B3_I | RESPONSE: +#ifndef DIVA_NO_DEBUGLIB if (myDriverDebugHandle.dbgMask & DL_BLK) xlog("\x00\x02", msg, 0x80, clength); +#endif break; case _DATA_B3_R: +#ifndef DIVA_NO_DEBUGLIB if (myDriverDebugHandle.dbgMask & DL_BLK) xlog("\x00\x02", msg, 0x80, clength); +#endif if (clength == 24) clength = 22; /* workaround for PPcom bug */ @@ -1016,8 +959,10 @@ memcpy(this->xbuffer_ptr[i], &((__u8 *) msg)[clength], READ_WORD(&msg->info.data_b3_req.Data_Length)); +#ifndef DIVA_NO_DEBUGLIB if ((myDriverDebugHandle.dbgMask & DL_BLK) && (myDriverDebugHandle.dbgMask & DL_XLOG)) { + int j; for (j = 0; j < READ_WORD(&msg->info.data_b3_req.Data_Length); j += 256) { @@ -1028,6 +973,7 @@ break; /* not more if not explicitely requested */ } } +#endif break; } @@ -1091,7 +1037,7 @@ } else { memcpy(&MAdapter, adapter, sizeof(MAdapter)); dprintf = (DIVA_DI_PRINTF) MAdapter.request; - DbgRegister("CAPI20", DRIVERRELEASE, DBG_DEFAULT); + DbgRegister("CAPI20", DRIVERRELEASE_CAPI, DBG_DEFAULT); } } else if ((adapter->type > 0) && (adapter->type < 16)) { /* IDI Adapter */ if (removal) { @@ -1119,7 +1065,7 @@ if (DIDD_Table[x].type == IDI_DIMAINT) { /* MAINT found */ memcpy(&MAdapter, &DIDD_Table[x], sizeof(DAdapter)); dprintf = (DIVA_DI_PRINTF) MAdapter.request; - DbgRegister("CAPI20", DRIVERRELEASE, DBG_DEFAULT); + DbgRegister("CAPI20", DRIVERRELEASE_CAPI, DBG_DEFAULT); break; } } @@ -1130,7 +1076,7 @@ req.didd_notify.e.Req = 0; req.didd_notify.e.Rc = IDI_SYNC_REQ_DIDD_REGISTER_ADAPTER_NOTIFY; - req.didd_notify.info.callback = didd_callback; + req.didd_notify.info.callback = (void *)didd_callback; req.didd_notify.info.context = 0; DAdapter.request((ENTITY *) & req); if (req.didd_notify.e.Rc != 0xff) { @@ -1260,4 +1206,7 @@ divacapi_remove_cards(); remove_main_structs(); + + diva_os_destroy_spin_lock(&api_lock, "capifunc"); + diva_os_destroy_spin_lock(&ll_lock, "capifunc"); } diff -Nru a/drivers/isdn/hardware/eicon/capifunc.h b/drivers/isdn/hardware/eicon/capifunc.h --- a/drivers/isdn/hardware/eicon/capifunc.h Mon Sep 22 00:30:23 2003 +++ b/drivers/isdn/hardware/eicon/capifunc.h Mon Sep 22 00:30:23 2003 @@ -1,10 +1,10 @@ -/* $Id: capifunc.h,v 1.1.2.2 2002/10/02 14:38:37 armin Exp $ +/* $Id: capifunc.h,v 1.10 2003/08/25 10:06:37 schindler Exp $ * * ISDN interface module for Eicon active cards DIVA. * CAPI Interface common functions * - * Copyright 2000-2002 by Armin Schindler (mac@melware.de) - * Copyright 2000-2002 Cytronics & Melware (info@melware.de) + * Copyright 2000-2003 by Armin Schindler (mac@melware.de) + * Copyright 2000-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. @@ -21,7 +21,7 @@ #define M_COMPANY "Eicon Networks" -extern char DRIVERRELEASE[]; +extern char DRIVERRELEASE_CAPI[]; typedef struct _diva_card { int Id; diff -Nru a/drivers/isdn/hardware/eicon/capimain.c b/drivers/isdn/hardware/eicon/capimain.c --- a/drivers/isdn/hardware/eicon/capimain.c Mon Sep 22 00:30:19 2003 +++ b/drivers/isdn/hardware/eicon/capimain.c Mon Sep 22 00:30:19 2003 @@ -1,10 +1,10 @@ -/* $Id: capimain.c,v 1.1.2.2 2002/10/02 14:38:37 armin Exp $ +/* $Id: capimain.c,v 1.24 2003/09/09 06:51:05 schindler Exp $ * * ISDN interface module for Eicon active cards DIVA. * CAPI Interface * - * Copyright 2000-2002 by Armin Schindler (mac@melware.de) - * Copyright 2000-2002 Cytronics & Melware (info@melware.de) + * Copyright 2000-2003 by Armin Schindler (mac@melware.de) + * Copyright 2000-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. @@ -15,10 +15,7 @@ #include #include #include -#include -#include #include -#include #include "os_capi.h" @@ -29,7 +26,7 @@ #include "cp_vers.h" #include "capifunc.h" -static char *main_revision = "$Revision: 1.1.2.11 $"; +static char *main_revision = "$Revision: 1.24 $"; static char *DRIVERNAME = "Eicon DIVA - CAPI Interface driver (http://www.melware.net)"; static char *DRIVERLNAME = "divacapi"; @@ -57,47 +54,6 @@ } /* - * sleep for some milliseconds - */ -void diva_os_sleep(dword mSec) -{ - unsigned long timeout = HZ * mSec / 1000 + 1; - - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(timeout); -} - -/* - * wait for some milliseconds - */ -void diva_os_wait(dword mSec) -{ - mdelay(mSec); -} - -/* - * alloc memory - */ -void *diva_os_malloc(unsigned long flags, unsigned long size) -{ - void *ret = NULL; - if (size) { - ret = (void *) vmalloc((unsigned int) size); - } - return (ret); -} - -/* - * free memory - */ -void diva_os_free(unsigned long unused, void *ptr) -{ - if (ptr) { - vfree(ptr); - } -} - -/* * alloc a message buffer */ diva_os_message_buffer_s *diva_os_alloc_message_buffer(unsigned long size, @@ -160,11 +116,11 @@ char tmprev[32]; int ret = 0; - sprintf(DRIVERRELEASE, "%d.%d%s", DRRELMAJOR, DRRELMINOR, + sprintf(DRIVERRELEASE_CAPI, "%d.%d%s", DRRELMAJOR, DRRELMINOR, DRRELEXTRA); printk(KERN_INFO "%s\n", DRIVERNAME); - printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE); + printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE_CAPI); strcpy(tmprev, main_revision); printk("%s Build: %s(%s)\n", getrev(tmprev), diva_capi_common_code_build, DIVA_BUILD); diff -Nru a/drivers/isdn/hardware/eicon/dadapter.c b/drivers/isdn/hardware/eicon/dadapter.c --- a/drivers/isdn/hardware/eicon/dadapter.c Mon Sep 22 00:30:21 2003 +++ b/drivers/isdn/hardware/eicon/dadapter.c Mon Sep 22 00:30:21 2003 @@ -49,8 +49,21 @@ Shadow IDI_DIMAINT and 'shadow' debug stuff -------------------------------------------------------------------------- */ -static void no_printf (unsigned char * format, ...) { } -DIVA_DI_PRINTF dprintf = no_printf; +static void no_printf (unsigned char * format, ...) +{ +#ifdef EBUG + va_list ap; + va_start (ap, format); + debug((format, ap)); + va_end (ap); +#endif +} + +/* ------------------------------------------------------------------------- + Portable debug Library + ------------------------------------------------------------------------- */ +#include "debuglib.c" + static DESCRIPTOR MAdapter = {IDI_DIMAINT, /* Adapter Type */ 0x00, /* Channels */ 0x0000, /* Features */ @@ -86,6 +99,7 @@ Should be called as last step, if driver does unload -------------------------------------------------------------------------- */ void diva_didd_load_time_finit (void) { + diva_os_destroy_spin_lock (&didd_spin, "didd"); } /* -------------------------------------------------------------------------- Called in order to register new adapter in adapter array @@ -349,7 +363,4 @@ int length) { diva_didd_read_adapter_array (buffer, length); } -/* ------------------------------------------------------------------------- - Portable debug Library - ------------------------------------------------------------------------- */ -#include "debuglib.c" + diff -Nru a/drivers/isdn/hardware/eicon/debug.c b/drivers/isdn/hardware/eicon/debug.c --- a/drivers/isdn/hardware/eicon/debug.c Mon Sep 22 00:30:22 2003 +++ b/drivers/isdn/hardware/eicon/debug.c Mon Sep 22 00:30:22 2003 @@ -2,7 +2,6 @@ #include "pc.h" #include "di_defs.h" #include "debug_if.h" -#include "linux/kernel.h" #include "divasync.h" #include "kst_ifc.h" #include "maintidi.h" @@ -96,9 +95,9 @@ static byte *queueAllocMsg (MSG_QUEUE *Q, word size) { /* Allocate 'size' bytes at tail of queue which will be filled later - * directly whith callers own message header info and/or message. + * directly with callers own message header info and/or message. * An 'alloced' message is marked incomplete by oring the 'Size' field - * whith MSG_INCOMPLETE. + * with MSG_INCOMPLETE. * This must be reset via queueCompleteMsg() after the message is filled. * As long as a message is marked incomplete queuePeekMsg() will return * a 'queue empty' condition when it reaches such a message. */ @@ -160,7 +159,7 @@ } static byte *queuePeekMsg (MSG_QUEUE *Q, word *size) { - /* Show the first valid message in queue BUT DONT free the message. + /* Show the first valid message in queue BUT DON'T free the message. * After looking on the message contents it can be freed queueFreeMsg() * or simply remain in message queue. */ @@ -195,7 +194,7 @@ length: length of the message queue do_init: perfor queue reset - return: zero on sucess, -1 on error + return: zero on success, -1 on error */ int diva_maint_init (byte* base, unsigned long length, int do_init) { if (dbg_queue || (!base) || (length < (4096*4))) { @@ -296,7 +295,7 @@ /* INTERFACE: - Lock messafe queue and return the pointer to the first + Lock message queue and return the pointer to the first entry. */ diva_dbg_entry_head_t* diva_maint_get_message (word* size, @@ -725,12 +724,12 @@ if (clients[id].hDbg) { *p++ = 1; - *p++ = (byte)clients[id].sec; /* save secounds */ + *p++ = (byte)clients[id].sec; /* save seconds */ *p++ = (byte)(clients[id].sec >> 8); *p++ = (byte)(clients[id].sec >> 16); *p++ = (byte)(clients[id].sec >> 24); - *p++ = (byte)(clients[id].usec/1000); /* save msecounds */ + *p++ = (byte)(clients[id].usec/1000); /* save mseconds */ *p++ = (byte)((clients[id].usec/1000) >> 8); *p++ = (byte)((clients[id].usec/1000) >> 16); *p++ = (byte)((clients[id].usec/1000) >> 24); @@ -1079,7 +1078,7 @@ } /* ---------------------------------------------------------------- - Low level interface for management interace client + Low level interface for management interface client ---------------------------------------------------------------- */ /* Return handle to client structure @@ -1462,7 +1461,7 @@ case DIVA_SUPER_TRACE_NOTIFY_STAT_CHANGE: if (pC->hDbg->dbgMask & DIVA_MGT_DBG_IFC_STATISTICS) { /* - Incoming Statistices + Incoming Statistics */ if (channel->pInterfaceStat->inc.Calls) { diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG, @@ -1498,7 +1497,7 @@ } /* - Outgoing Statistices + Outgoing Statistics */ if (channel->pInterfaceStat->outg.Calls) { diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG, diff -Nru a/drivers/isdn/hardware/eicon/debuglib.c b/drivers/isdn/hardware/eicon/debuglib.c --- a/drivers/isdn/hardware/eicon/debuglib.c Mon Sep 22 00:30:21 2003 +++ b/drivers/isdn/hardware/eicon/debuglib.c Mon Sep 22 00:30:21 2003 @@ -23,8 +23,15 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ + #include "debuglib.h" + +#ifdef DIVA_NO_DEBUGLIB +static DIVA_DI_PRINTF dprintf; +#else /* DIVA_NO_DEBUGLIB */ + _DbgHandle_ myDriverDebugHandle = { 0 /*!Registered*/, DBG_HANDLE_VERSION }; +DIVA_DI_PRINTF dprintf = no_printf; /*****************************************************************************/ #define DBG_FUNC(name) \ void \ @@ -146,3 +153,4 @@ va_end(ap); } /*****************************************************************************/ +#endif /* DIVA_NO_DEBUGLIB */ diff -Nru a/drivers/isdn/hardware/eicon/debuglib.h b/drivers/isdn/hardware/eicon/debuglib.h --- a/drivers/isdn/hardware/eicon/debuglib.h Mon Sep 22 00:30:25 2003 +++ b/drivers/isdn/hardware/eicon/debuglib.h Mon Sep 22 00:30:25 2003 @@ -101,6 +101,34 @@ * with _KERNEL_DBG_PRINT_ */ #define DL_TO_KERNEL 0x40000000 + +#ifdef DIVA_NO_DEBUGLIB +#define myDbgPrint_LOG(x,...) do { } while(0); +#define myDbgPrint_FTL(x,...) do { } while(0); +#define myDbgPrint_ERR(x,...) do { } while(0); +#define myDbgPrint_TRC(x,...) do { } while(0); +#define myDbgPrint_MXLOG(x,...) do { } while(0); +#define myDbgPrint_EVL(x,...) do { } while(0); +#define myDbgPrint_REG(x,...) do { } while(0); +#define myDbgPrint_MEM(x,...) do { } while(0); +#define myDbgPrint_SPL(x,...) do { } while(0); +#define myDbgPrint_IRP(x,...) do { } while(0); +#define myDbgPrint_TIM(x,...) do { } while(0); +#define myDbgPrint_BLK(x,...) do { } while(0); +#define myDbgPrint_TAPI(x,...) do { } while(0); +#define myDbgPrint_NDIS(x,...) do { } while(0); +#define myDbgPrint_CONN(x,...) do { } while(0); +#define myDbgPrint_STAT(x,...) do { } while(0); +#define myDbgPrint_SEND(x,...) do { } while(0); +#define myDbgPrint_RECV(x,...) do { } while(0); +#define myDbgPrint_PRV0(x,...) do { } while(0); +#define myDbgPrint_PRV1(x,...) do { } while(0); +#define myDbgPrint_PRV2(x,...) do { } while(0); +#define myDbgPrint_PRV3(x,...) do { } while(0); +#define DBG_TEST(func,args) do { } while(0); +#define DBG_EVL_ID(args) do { } while(0); + +#else /* DIVA_NO_DEBUGLIB */ /* * define low level macros for formatted & raw debugging */ @@ -156,6 +184,9 @@ { if ( (myDriverDebugHandle.dbgMask) & (unsigned long)DL_EVL ) \ { myDbgPrint_EVL args ; \ } } + +#endif /* DIVA_NO_DEBUGLIB */ + #define DBG_LOG(args) DBG_TEST(LOG, args) #define DBG_FTL(args) DBG_TEST(FTL, args) #define DBG_ERR(args) DBG_TEST(ERR, args) @@ -182,9 +213,16 @@ /* * prototypes for debug register/deregister functions in "debuglib.c" */ +#ifdef DIVA_NO_DEBUGLIB +#define DbgRegister(name,tag, mask) do { } while(0) +#define DbgDeregister() do { } while(0) +#define DbgSetLevel(mask) do { } while(0) +#else +extern DIVA_DI_PRINTF dprintf; extern int DbgRegister (char *drvName, char *drvTag, unsigned long dbgMask) ; extern void DbgDeregister (void) ; extern void DbgSetLevel (unsigned long dbgMask) ; +#endif /* * driver internal structure for debug handling; * in client drivers this structure is maintained in "debuglib.c", @@ -274,9 +312,11 @@ } CardTrace; } u1; } _DbgExtendedInfo_; +#ifndef DIVA_NO_DEBUGLIB /* ------------------------------------------------------------- Function used for xlog-style debug ------------------------------------------------------------- */ #define XDI_USE_XLOG 1 void xdi_dbg_xlog (char* x, ...); +#endif /* DIVA_NO_DEBUGLIB */ #endif /* __DEBUGLIB_H__ */ diff -Nru a/drivers/isdn/hardware/eicon/di.c b/drivers/isdn/hardware/eicon/di.c --- a/drivers/isdn/hardware/eicon/di.c Mon Sep 22 00:30:20 2003 +++ b/drivers/isdn/hardware/eicon/di.c Mon Sep 22 00:30:20 2003 @@ -112,16 +112,14 @@ #ifdef USE_EXTENDED_DEBUGS if ( !this ) { - ISDN_ADAPTER *io = (ISDN_ADAPTER *)a->io ; DBG_FTL(("XDI: [%02x] !A%d ==> NULL entity ptr - try to ignore", - xdi_xlog_sec++, (int)io->ANum)) + xdi_xlog_sec++, (int)((ISDN_ADAPTER *)a->io)->ANum)) e_no = look_req(a) ; ReadyCount-- ; continue ; } { - ISDN_ADAPTER *io = (ISDN_ADAPTER *)a->io ; - DBG_TRC((">A%d Id=0x%x Req=0x%x", io->ANum, this->Id, this->Req)) + DBG_TRC((">A%d Id=0x%x Req=0x%x", ((ISDN_ADAPTER *)a->io)->ANum, this->Id, this->Req)) } #else dbug(dprintf("out:Req=%x,Id=%x,Ch=%x",this->Req,this->Id,this->ReqCh)); @@ -563,8 +561,7 @@ int cancel_rc; #ifdef USE_EXTENDED_DEBUGS { - ISDN_ADAPTER *io = (ISDN_ADAPTER *)a->io ; - DBG_TRC(("ANum, Id, Rc)) + DBG_TRC(("io)->ANum, Id, Rc)) } #else dbug(dprintf("isdn_rc(Rc=%x,Id=%x,Ch=%x)",Rc,Id,Ch)); @@ -767,8 +764,7 @@ byte* cma = 0; #ifdef USE_EXTENDED_DEBUGS { - ISDN_ADAPTER *io = (ISDN_ADAPTER *)a->io ; - DBG_TRC(("ANum, Id, Ind)) + DBG_TRC(("io)->ANum, Id, Ind)) } #else dbug(dprintf("isdn_ind(Ind=%x,Id=%x,Ch=%x)",Ind,Id,Ch)); @@ -956,10 +952,10 @@ byte Id, byte Ch, byte Rc, byte cb, byte type) { #if defined(XDI_USE_XLOG) word LogInfo[4]; - LogInfo[0] = (word)Adapter | (word)(xdi_xlog_sec++ << 8); - LogInfo[1] = (word)Id | (word)(Ch << 8); - LogInfo[2] = (word)Rc | (word)(type << 8); - LogInfo[3] = cb; + WRITE_WORD(&LogInfo[0], ((word)Adapter | (word)(xdi_xlog_sec++ << 8))); + WRITE_WORD(&LogInfo[1], ((word)Id | (word)(Ch << 8))); + WRITE_WORD(&LogInfo[2], ((word)Rc | (word)(type << 8))); + WRITE_WORD(&LogInfo[3], cb); xdi_xlog ((byte*)&LogInfo[0], 221, sizeof(LogInfo)); #endif } @@ -980,9 +976,9 @@ byte Ch, byte Req, byte type) { #if defined(XDI_USE_XLOG) word LogInfo[3]; - LogInfo[0] = (word)Adapter | (word)(xdi_xlog_sec++ << 8); - LogInfo[1] = (word)Id | (word)(Ch << 8); - LogInfo[2] = (word)Req | (word)(type << 8); + WRITE_WORD(&LogInfo[0], ((word)Adapter | (word)(xdi_xlog_sec++ << 8))); + WRITE_WORD(&LogInfo[1], ((word)Id | (word)(Ch << 8))); + WRITE_WORD(&LogInfo[2], ((word)Req | (word)(type << 8))); xdi_xlog ((byte*)&LogInfo[0], 220, sizeof(LogInfo)); #endif } @@ -1024,10 +1020,10 @@ byte type) { #if defined(XDI_USE_XLOG) word LogInfo[4]; - LogInfo[0] = (word)Adapter | (word)(xdi_xlog_sec++ << 8); - LogInfo[1] = (word)Id | (word)(Ch << 8); - LogInfo[2] = (word)Ind | (word)(type << 8); - LogInfo[3] = (word)rnr | (word)(rnr_valid << 8); + WRITE_WORD(&LogInfo[0], ((word)Adapter | (word)(xdi_xlog_sec++ << 8))); + WRITE_WORD(&LogInfo[1], ((word)Id | (word)(Ch << 8))); + WRITE_WORD(&LogInfo[2], ((word)Ind | (word)(type << 8))); + WRITE_WORD(&LogInfo[3], ((word)rnr | (word)(rnr_valid << 8))); xdi_xlog ((byte*)&LogInfo[0], 222, sizeof(LogInfo)); #endif } diff -Nru a/drivers/isdn/hardware/eicon/diddfunc.c b/drivers/isdn/hardware/eicon/diddfunc.c --- a/drivers/isdn/hardware/eicon/diddfunc.c Mon Sep 22 00:30:25 2003 +++ b/drivers/isdn/hardware/eicon/diddfunc.c Mon Sep 22 00:30:25 2003 @@ -1,11 +1,11 @@ -/* $Id: diddfunc.c,v 1.1.2.2 2002/10/02 14:38:37 armin Exp $ +/* $Id: diddfunc.c,v 1.14 2003/08/25 10:06:37 schindler Exp $ * * DIDD Interface module for Eicon active cards. * * Functions are in dadapter.c * - * Copyright 2002 by Armin Schindler (mac@melware.de) - * Copyright 2002 Cytronics & Melware (info@melware.de) + * Copyright 2002-2003 by Armin Schindler (mac@melware.de) + * Copyright 2002-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. @@ -23,7 +23,7 @@ extern void DIVA_DIDD_Read(void *, int); -extern char *DRIVERRELEASE; +extern char *DRIVERRELEASE_DIDD; static dword notify_handle; static DESCRIPTOR _DAdapter; @@ -40,7 +40,7 @@ if (removal) { DbgDeregister(); } else { - DbgRegister("DIDD", DRIVERRELEASE, DBG_DEFAULT); + DbgRegister("DIDD", DRIVERRELEASE_DIDD, DBG_DEFAULT); } } return (NULL); @@ -65,14 +65,14 @@ req.didd_notify.e.Req = 0; req.didd_notify.e.Rc = IDI_SYNC_REQ_DIDD_REGISTER_ADAPTER_NOTIFY; - req.didd_notify.info.callback = didd_callback; + req.didd_notify.info.callback = (void *)didd_callback; req.didd_notify.info.context = 0; _DAdapter.request((ENTITY *) & req); if (req.didd_notify.e.Rc != 0xff) return (0); notify_handle = req.didd_notify.info.handle; } else if (DIDD_Table[x].type == IDI_DIMAINT) { /* MAINT found */ - DbgRegister("DIDD", DRIVERRELEASE, DBG_DEFAULT); + DbgRegister("DIDD", DRIVERRELEASE_DIDD, DBG_DEFAULT); } } return (dadapter); diff -Nru a/drivers/isdn/hardware/eicon/diva.c b/drivers/isdn/hardware/eicon/diva.c --- a/drivers/isdn/hardware/eicon/diva.c Mon Sep 22 00:30:23 2003 +++ b/drivers/isdn/hardware/eicon/diva.c Mon Sep 22 00:30:23 2003 @@ -1,4 +1,4 @@ -/* $Id: diva.c,v 1.1.2.5 2001/02/14 21:10:19 armin Exp $ */ +/* $Id: diva.c,v 1.17 2003/09/09 06:52:01 schindler Exp $ */ #define CARDTYPE_H_WANT_DATA 1 #define CARDTYPE_H_WANT_IDI_DATA 0 @@ -7,7 +7,6 @@ #include "platform.h" #include "debuglib.h" -#include "diva_pci.h" #include "cardtype.h" #include "dlist.h" #include "pc.h" @@ -15,19 +14,17 @@ #include "di.h" #include "io.h" #include "pc_maint.h" - #include "xdi_msg.h" #include "xdi_adapter.h" +#include "diva_pci.h" #include "diva.h" #ifdef CONFIG_ISDN_DIVAS_PRIPCI #include "os_pri.h" #endif -#ifdef CONFIG_ISDN_DIVAS_4BRIPCI -#include "os_4bri.h" -#endif #ifdef CONFIG_ISDN_DIVAS_BRIPCI #include "os_bri.h" +#include "os_4bri.h" #endif PISDN_ADAPTER IoAdapters[MAX_ADAPTER]; @@ -78,6 +75,11 @@ struct pt_regs; /* + * include queue functions + */ +#include "dlist.c" + +/* ** LOCALS */ diva_entity_queue_t adapter_queue; @@ -109,7 +111,7 @@ */ {CARDTYPE_DIVASRV_VOICE_P_30M_V2_PCI, diva_pri_init_card}, #endif -#ifdef CONFIG_ISDN_DIVAS_4BRIPCI +#ifdef CONFIG_ISDN_DIVAS_BRIPCI /* 4BRI Rev 1 Cards */ @@ -126,8 +128,6 @@ {CARDTYPE_DIVASRV_B_2M_V2_PCI, diva_4bri_init_card}, {CARDTYPE_DIVASRV_B_2F_PCI, diva_4bri_init_card}, {CARDTYPE_DIVASRV_VOICE_B_2M_V2_PCI, diva_4bri_init_card}, -#endif -#ifdef CONFIG_ISDN_DIVAS_BRIPCI /* BRI */ @@ -193,6 +193,7 @@ pdiva->controller = i + 1; pdiva->xdi_adapter.ANum = pdiva->controller; IoAdapters[i] = &pdiva->xdi_adapter; + diva_os_leave_spin_lock(&adapter_lock, &old_irql, "add card"); create_adapter_proc(pdiva); /* add adapter to proc file system */ DBG_LOG(("add %s:%d", @@ -200,6 +201,7 @@ [CardOrdinal].Name, pdiva->controller)) + diva_os_enter_spin_lock(&adapter_lock, &old_irql, "add card"); pa = pdiva; for (j = 1; j < nr; j++) { /* slave adapters, if any */ pa = (diva_os_xdi_adapter_t *) diva_q_get_next(&pa->link); @@ -207,8 +209,11 @@ pa->controller = i + 1 + j; pa->xdi_adapter.ANum = pa->controller; IoAdapters[i + j] = &pa->xdi_adapter; + diva_os_leave_spin_lock(&adapter_lock, &old_irql, "add card"); DBG_LOG(("add slave adapter (%d)", - pa->controller)) create_adapter_proc(pa); /* add adapter to proc file system */ + pa->controller)) + create_adapter_proc(pa); /* add adapter to proc file system */ + diva_os_enter_spin_lock(&adapter_lock, &old_irql, "add card"); } else { DBG_ERR(("slave adapter problem")) break; @@ -463,7 +468,8 @@ } } else { DBG_ERR(("A: A(%d) write error (%d)", a->controller, - length))} + length)) + } diva_os_free(0, data); @@ -564,7 +570,6 @@ Requests[31] = DivaIdiRequest31; } -/* card: 1-based card number */ void diva_xdi_display_adapter_features(int card) { dword features; diff -Nru a/drivers/isdn/hardware/eicon/diva_didd.c b/drivers/isdn/hardware/eicon/diva_didd.c --- a/drivers/isdn/hardware/eicon/diva_didd.c Mon Sep 22 00:30:22 2003 +++ b/drivers/isdn/hardware/eicon/diva_didd.c Mon Sep 22 00:30:22 2003 @@ -1,11 +1,11 @@ -/* $Id: diva_didd.c,v 1.1.2.6 2001/05/01 15:48:05 armin Exp $ +/* $Id: diva_didd.c,v 1.13 2003/08/27 10:11:21 schindler Exp $ * * DIDD Interface module for Eicon active cards. * * Functions are in dadapter.c * - * Copyright 2002 by Armin Schindler (mac@melware.de) - * Copyright 2002 Cytronics & Melware (info@melware.de) + * Copyright 2002-2003 by Armin Schindler (mac@melware.de) + * Copyright 2002-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. @@ -23,14 +23,13 @@ #include "divasync.h" #include "did_vers.h" -static char *main_revision = "$Revision: 1.1.2.6 $"; +static char *main_revision = "$Revision: 1.13 $"; static char *DRIVERNAME = "Eicon DIVA - DIDD table (http://www.melware.net)"; static char *DRIVERLNAME = "divadidd"; -char *DRIVERRELEASE = "2.0"; +char *DRIVERRELEASE_DIDD = "2.0"; -static char *dir_in_proc_net = "isdn"; static char *main_proc_dir = "eicon"; MODULE_DESCRIPTION("DIDD table driver for diva drivers"); @@ -48,12 +47,11 @@ extern void DIVA_DIDD_Read(void *, int); -static struct proc_dir_entry *proc_net_isdn; static struct proc_dir_entry *proc_didd; -struct proc_dir_entry *proc_net_isdn_eicon = NULL; +struct proc_dir_entry *proc_net_eicon = NULL; EXPORT_SYMBOL_NOVERS(DIVA_DIDD_Read); -EXPORT_SYMBOL_NOVERS(proc_net_isdn_eicon); +EXPORT_SYMBOL_NOVERS(proc_net_eicon); static char *getrev(const char *revision) { @@ -78,7 +76,7 @@ strcpy(tmprev, main_revision); len += sprintf(page + len, "%s\n", DRIVERNAME); len += sprintf(page + len, "name : %s\n", DRIVERLNAME); - len += sprintf(page + len, "release : %s\n", DRIVERRELEASE); + len += sprintf(page + len, "release : %s\n", DRIVERRELEASE_DIDD); len += sprintf(page + len, "build : %s(%s)\n", diva_didd_common_code_build, DIVA_BUILD); len += sprintf(page + len, "revision : %s\n", getrev(tmprev)); @@ -93,26 +91,12 @@ static int DIVA_INIT_FUNCTION create_proc(void) { - struct proc_dir_entry *pe; + proc_net_eicon = create_proc_entry(main_proc_dir, S_IFDIR, proc_net); - for (pe = proc_net->subdir; pe; pe = pe->next) { - if (!memcmp(dir_in_proc_net, pe->name, pe->namelen)) { - proc_net_isdn = pe; - break; - } - } - if (!proc_net_isdn) { - proc_net_isdn = - create_proc_entry(dir_in_proc_net, S_IFDIR, proc_net); - } - proc_net_isdn_eicon = - create_proc_entry(main_proc_dir, S_IFDIR, proc_net_isdn); - - if (proc_net_isdn_eicon) { - if ( - (proc_didd = + if (proc_net_eicon) { + if ((proc_didd = create_proc_entry(DRIVERLNAME, S_IFREG | S_IRUGO, - proc_net_isdn_eicon))) { + proc_net_eicon))) { proc_didd->read_proc = proc_read; } return (1); @@ -120,14 +104,10 @@ return (0); } -static void remove_proc(void) +static void DIVA_EXIT_FUNCTION remove_proc(void) { - remove_proc_entry(DRIVERLNAME, proc_net_isdn_eicon); - remove_proc_entry(main_proc_dir, proc_net_isdn); - - if ((proc_net_isdn) && (!proc_net_isdn->subdir)) { - remove_proc_entry(dir_in_proc_net, proc_net); - } + remove_proc_entry(DRIVERLNAME, proc_net_eicon); + remove_proc_entry(main_proc_dir, proc_net); } static int DIVA_INIT_FUNCTION divadidd_init(void) @@ -136,7 +116,7 @@ int ret = 0; printk(KERN_INFO "%s\n", DRIVERNAME); - printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE); + printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE_DIDD); strcpy(tmprev, main_revision); printk("%s Build:%s(%s)\n", getrev(tmprev), diva_didd_common_code_build, DIVA_BUILD); @@ -151,7 +131,9 @@ if (!diddfunc_init()) { printk(KERN_ERR "%s: failed to connect to DIDD.\n", DRIVERLNAME); +#ifdef MODULE remove_proc(); +#endif ret = -EIO; goto out; } diff -Nru a/drivers/isdn/hardware/eicon/diva_pci.h b/drivers/isdn/hardware/eicon/diva_pci.h --- a/drivers/isdn/hardware/eicon/diva_pci.h Mon Sep 22 00:30:21 2003 +++ b/drivers/isdn/hardware/eicon/diva_pci.h Mon Sep 22 00:30:21 2003 @@ -1,9 +1,12 @@ -/* $Id: diva_pci.h,v 1.1.2.2 2001/02/12 20:23:46 armin Exp $ */ +/* $Id: diva_pci.h,v 1.6 2003/01/04 15:29:45 schindler Exp $ */ #ifndef __DIVA_PCI_INTERFACE_H__ #define __DIVA_PCI_INTERFACE_H__ -void *divasa_remap_pci_bar(unsigned long bar, unsigned long area_length); +void *divasa_remap_pci_bar(diva_os_xdi_adapter_t *a, + int id, + unsigned long bar, + unsigned long area_length); void divasa_unmap_pci_bar(void *bar); unsigned long divasa_get_pci_irq(unsigned char bus, unsigned char func, void *pci_dev_handle); diff -Nru a/drivers/isdn/hardware/eicon/divacapi.h b/drivers/isdn/hardware/eicon/divacapi.h --- a/drivers/isdn/hardware/eicon/divacapi.h Mon Sep 22 00:30:20 2003 +++ b/drivers/isdn/hardware/eicon/divacapi.h Mon Sep 22 00:30:20 2003 @@ -643,7 +643,7 @@ unsigned parity:2; unsigned spare: 2; unsigned stp: 1; - unsigned ch_len:2; // 3th octett in CAI + unsigned ch_len:2; /* 3th octett in CAI */ }; diff -Nru a/drivers/isdn/hardware/eicon/divamnt.c b/drivers/isdn/hardware/eicon/divamnt.c --- a/drivers/isdn/hardware/eicon/divamnt.c Mon Sep 22 00:30:22 2003 +++ b/drivers/isdn/hardware/eicon/divamnt.c Mon Sep 22 00:30:22 2003 @@ -1,10 +1,10 @@ -/* $Id: divamnt.c,v 1.1.2.4 2001/05/01 15:48:05 armin Exp $ +/* $Id: divamnt.c,v 1.27 2003/09/09 06:46:29 schindler Exp $ * * Driver for Eicon DIVA Server ISDN cards. * Maint module * - * Copyright 2000-2002 by Armin Schindler (mac@melware.de) - * Copyright 2000-2002 Cytronics & Melware (info@melware.de) + * Copyright 2000-2003 by Armin Schindler (mac@melware.de) + * Copyright 2000-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. @@ -19,7 +19,6 @@ #include #include #include -#include #include #include "platform.h" @@ -28,16 +27,14 @@ #include "di_defs.h" #include "debug_if.h" -static char *main_revision = "$Revision: 1.1.2.4 $"; +static char *main_revision = "$Revision: 1.27 $"; -static int major = 241; +static int major; MODULE_DESCRIPTION("Maint driver for Eicon DIVA Server cards"); MODULE_AUTHOR("Cytronics & Melware, Eicon Networks"); MODULE_SUPPORTED_DEVICE("DIVA card driver"); MODULE_LICENSE("GPL"); -MODULE_PARM(major, "i"); -MODULE_PARM_DESC(major, "Major number for /dev/DivasMAINT"); int buffer_length = 128; MODULE_PARM(buffer_length, "i"); @@ -47,7 +44,8 @@ static char *DRIVERNAME = "Eicon DIVA - MAINT module (http://www.melware.net)"; static char *DRIVERLNAME = "diva_mnt"; -char *DRIVERRELEASE = "2.0"; +static char *DEVNAME = "DivasMAINT"; +char *DRIVERRELEASE_MNT = "2.0"; static wait_queue_head_t msgwaitq; static DECLARE_MUTEX(opened_sem); @@ -77,18 +75,8 @@ } /* - * memory alloc + * buffer alloc */ -void *diva_os_malloc(unsigned long flags, unsigned long size) -{ - return (vmalloc(size)); -} -void diva_os_free(unsigned long flags, void *ptr) -{ - if (ptr) { - vfree(ptr); - } -} void *diva_os_malloc_tbuffer(unsigned long flags, unsigned long size) { return (kmalloc(size, GFP_KERNEL)); @@ -101,17 +89,6 @@ } /* - * sleep msec - */ -void diva_os_sleep(dword mSec) -{ - unsigned long timeout = HZ * mSec / 1000 + 1; - - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(timeout); -} - -/* * kernel/user space copy functions */ int diva_os_copy_to_user(void *os_handle, void *dst, const void *src, @@ -158,7 +135,7 @@ * /proc entries */ -extern struct proc_dir_entry *proc_net_isdn_eicon; +extern struct proc_dir_entry *proc_net_eicon; static struct proc_dir_entry *maint_proc_entry = NULL; /* @@ -363,7 +340,7 @@ { maint_proc_entry = create_proc_entry("maint", S_IFREG | S_IRUGO | S_IWUSR, - proc_net_isdn_eicon); + proc_net_eicon); if (!maint_proc_entry) return (0); @@ -376,7 +353,7 @@ static void remove_maint_proc(void) { if (maint_proc_entry) { - remove_proc_entry("maint", proc_net_isdn_eicon); + remove_proc_entry("maint", proc_net_eicon); maint_proc_entry = NULL; } } @@ -408,20 +385,20 @@ static void divas_maint_unregister_chrdev(void) { - devfs_remove("DivasMAINT"); - unregister_chrdev(major, "DivasMAINT"); + devfs_remove(DEVNAME); + unregister_chrdev(major, DEVNAME); } static int DIVA_INIT_FUNCTION divas_maint_register_chrdev(void) { - if (register_chrdev(major, "DivasMAINT", &divas_maint_fops)) + if ((major = register_chrdev(0, DEVNAME, &divas_maint_fops)) < 0) { printk(KERN_ERR "%s: failed to create /dev entry.\n", DRIVERLNAME); return (0); } + devfs_mk_cdev(MKDEV(major, 0), S_IFCHR|S_IRUSR|S_IWUSR, DEVNAME); - devfs_mk_cdev(MKDEV(major, 0), S_IFCHR|S_IRUSR|S_IWUSR, "DivasMAINT"); return (1); } @@ -446,10 +423,9 @@ init_waitqueue_head(&msgwaitq); printk(KERN_INFO "%s\n", DRIVERNAME); - printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE); + printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE_MNT); strcpy(tmprev, main_revision); - printk("%s Build: %s Major: %d\n", getrev(tmprev), DIVA_BUILD, - major); + printk("%s Build: %s \n", getrev(tmprev), DIVA_BUILD); if (!divas_maint_register_chrdev()) { ret = -EIO; @@ -472,9 +448,9 @@ goto out; } - printk(KERN_INFO "%s: trace buffer = %p - %d kBytes, %s \n", - DRIVERLNAME, buffer, buffer_length, - (diva_dbg_mem == 0) ? "internal" : "external"); + printk(KERN_INFO "%s: trace buffer = %p - %d kBytes, %s (Major: %d)\n", + DRIVERLNAME, buffer, (buffer_length / 1024), + (diva_dbg_mem == 0) ? "internal" : "external", major); out: return (ret); diff -Nru a/drivers/isdn/hardware/eicon/divasfunc.c b/drivers/isdn/hardware/eicon/divasfunc.c --- a/drivers/isdn/hardware/eicon/divasfunc.c Mon Sep 22 00:30:22 2003 +++ b/drivers/isdn/hardware/eicon/divasfunc.c Mon Sep 22 00:30:22 2003 @@ -1,9 +1,9 @@ -/* $Id: divasfunc.c,v 1.1.2.2 2002/10/02 14:38:37 armin Exp $ +/* $Id: divasfunc.c,v 1.22 2003/09/09 06:46:29 schindler Exp $ * * Low level driver for Eicon DIVA Server ISDN cards. * - * Copyright 2000-2002 by Armin Schindler (mac@melware.de) - * Copyright 2000-2002 Cytronics & Melware (info@melware.de) + * Copyright 2000-2003 by Armin Schindler (mac@melware.de) + * Copyright 2000-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. @@ -21,6 +21,8 @@ #define DBG_MINIMUM (DL_LOG + DL_FTL + DL_ERR) #define DBG_DEFAULT (DBG_MINIMUM + DL_XLOG + DL_REG) +static int debugmask; + extern void DIVA_DIDD_Read(void *, int); extern PISDN_ADAPTER IoAdapters[MAX_ADAPTER]; @@ -28,7 +30,7 @@ #define MAX_DESCRIPTORS 32 extern void diva_run_trap_script(PISDN_ADAPTER IoAdapter, dword ANum); -extern char *DRIVERRELEASE; +extern char *DRIVERRELEASE_DIVAS; static dword notify_handle; static DESCRIPTOR DAdapter; @@ -42,8 +44,6 @@ /* dummy debug function */ } -DIVA_DI_PRINTF dprintf = no_printf; - #include "debuglib.c" /* @@ -117,10 +117,11 @@ */ static void start_dbg(void) { - DbgRegister("DIVAS", DRIVERRELEASE, DBG_DEFAULT); + DbgRegister("DIVAS", DRIVERRELEASE_DIVAS, (debugmask) ? debugmask : DBG_DEFAULT); DBG_LOG(("DIVA ISDNXDI BUILD (%s[%s]-%s-%s)", DIVA_BUILD, diva_xdi_common_code_build, __DATE__, - __TIME__))} + __TIME__)) +} /* * stop debug @@ -174,7 +175,7 @@ req.didd_notify.e.Req = 0; req.didd_notify.e.Rc = IDI_SYNC_REQ_DIDD_REGISTER_ADAPTER_NOTIFY; - req.didd_notify.info.callback = didd_callback; + req.didd_notify.info.callback = (void *)didd_callback; req.didd_notify.info.context = 0; DAdapter.request((ENTITY *) & req); if (req.didd_notify.e.Rc != 0xff) { @@ -214,12 +215,18 @@ /* * init */ -int DIVA_INIT_FUNCTION divasfunc_init(void) +int DIVA_INIT_FUNCTION divasfunc_init(int dbgmask) { + char *version; + + debugmask = dbgmask; + if (!connect_didd()) { DBG_ERR(("divasfunc: failed to connect to DIDD.")) return (0); } + + version = diva_xdi_common_code_build; divasa_xdi_driver_entry(); diff -Nru a/drivers/isdn/hardware/eicon/divasi.c b/drivers/isdn/hardware/eicon/divasi.c --- a/drivers/isdn/hardware/eicon/divasi.c Mon Sep 22 00:30:20 2003 +++ b/drivers/isdn/hardware/eicon/divasi.c Mon Sep 22 00:30:20 2003 @@ -1,10 +1,10 @@ -/* $Id: divasi.c,v 1.1.2.7 2001/05/01 15:48:05 armin Exp $ +/* $Id: divasi.c,v 1.25 2003/09/09 06:46:29 schindler Exp $ * * Driver for Eicon DIVA Server ISDN cards. * User Mode IDI Interface * - * Copyright 2000-2002 by Armin Schindler (mac@melware.de) - * Copyright 2000-2002 Cytronics & Melware (info@melware.de) + * Copyright 2000-2003 by Armin Schindler (mac@melware.de) + * Copyright 2000-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. @@ -19,7 +19,6 @@ #include #include #include -#include #include #include "platform.h" @@ -28,27 +27,27 @@ #include "um_xdi.h" #include "um_idi.h" -static char *main_revision = "$Revision: 1.1.2.7 $"; +static char *main_revision = "$Revision: 1.25 $"; -static int major = 242; +static int major; MODULE_DESCRIPTION("User IDI Interface for Eicon ISDN cards"); MODULE_AUTHOR("Cytronics & Melware, Eicon Networks"); MODULE_SUPPORTED_DEVICE("DIVA card driver"); MODULE_LICENSE("GPL"); -MODULE_PARM(major, "i"); -MODULE_PARM_DESC(major, "Major number for /dev/DivasIDI"); typedef struct _diva_um_idi_os_context { wait_queue_head_t read_wait; wait_queue_head_t close_wait; struct timer_list diva_timer_id; int aborted; + int adapter_nr; } diva_um_idi_os_context_t; static char *DRIVERNAME = "Eicon DIVA - User IDI (http://www.melware.net)"; static char *DRIVERLNAME = "diva_idi"; -char *DRIVERRELEASE = "2.0"; +static char *DEVNAME = "DivasIDI"; +char *DRIVERRELEASE_IDI = "2.0"; extern int idifunc_init(void); extern void idifunc_finit(void); @@ -83,32 +82,9 @@ static void diva_um_timer_function(unsigned long data); /* - * malloc - */ -void *diva_os_malloc(unsigned long flags, unsigned long size) -{ - void *ret = NULL; - - if (size) { - ret = (void *) vmalloc((unsigned int) size); - } - return (ret); -} - -/* - * free - */ -void diva_os_free(unsigned long unused, void *ptr) -{ - if (ptr) { - vfree(ptr); - } -} - -/* * proc entry */ -extern struct proc_dir_entry *proc_net_isdn_eicon; +extern struct proc_dir_entry *proc_net_eicon; static struct proc_dir_entry *um_idi_proc_entry = NULL; static int @@ -120,10 +96,11 @@ len += sprintf(page + len, "%s\n", DRIVERNAME); len += sprintf(page + len, "name : %s\n", DRIVERLNAME); - len += sprintf(page + len, "release : %s\n", DRIVERRELEASE); + len += sprintf(page + len, "release : %s\n", DRIVERRELEASE_IDI); strcpy(tmprev, main_revision); len += sprintf(page + len, "revision : %s\n", getrev(tmprev)); len += sprintf(page + len, "build : %s\n", DIVA_BUILD); + len += sprintf(page + len, "major : %d\n", major); if (off + count >= len) *eof = 1; @@ -137,7 +114,7 @@ { um_idi_proc_entry = create_proc_entry(DRIVERLNAME, S_IFREG | S_IRUGO | S_IWUSR, - proc_net_isdn_eicon); + proc_net_eicon); if (!um_idi_proc_entry) return (0); @@ -150,7 +127,7 @@ static void remove_um_idi_proc(void) { if (um_idi_proc_entry) { - remove_proc_entry(DRIVERLNAME, proc_net_isdn_eicon); + remove_proc_entry(DRIVERLNAME, proc_net_eicon); um_idi_proc_entry = NULL; } } @@ -167,20 +144,20 @@ static void divas_idi_unregister_chrdev(void) { - devfs_remove("DivasIDI"); - unregister_chrdev(major, "DivasIDI"); + devfs_remove(DEVNAME); + unregister_chrdev(major, DEVNAME); } static int DIVA_INIT_FUNCTION divas_idi_register_chrdev(void) { - if (register_chrdev(major, "DivasIDI", &divas_idi_fops)) + if ((major = register_chrdev(0, DEVNAME, &divas_idi_fops)) < 0) { printk(KERN_ERR "%s: failed to create /dev entry.\n", DRIVERLNAME); return (0); } + devfs_mk_cdev(MKDEV(major, 0), S_IFCHR|S_IRUSR|S_IWUSR, DEVNAME); - devfs_mk_cdev(MKDEV(major, 0), S_IFCHR|S_IRUSR|S_IWUSR, "DivasIDI"); return (1); } @@ -193,10 +170,9 @@ int ret = 0; printk(KERN_INFO "%s\n", DRIVERNAME); - printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE); + printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE_IDI); strcpy(tmprev, main_revision); - printk("%s Build: %s Major: %d\n", getrev(tmprev), DIVA_BUILD, - major); + printk("%s Build: %s\n", getrev(tmprev), DIVA_BUILD); if (!divas_idi_register_chrdev()) { ret = -EIO; @@ -219,6 +195,7 @@ ret = -EIO; goto out; } + printk(KERN_INFO "%s: started with major %d\n", DRIVERLNAME, major); out: return (ret); @@ -330,6 +307,7 @@ p_os->diva_timer_id.function = (void *) diva_um_timer_function; p_os->diva_timer_id.data = (unsigned long) p_os; p_os->aborted = 0; + p_os->adapter_nr = adapter_nr; return (1); } @@ -432,13 +410,22 @@ static int um_idi_release(struct inode *inode, struct file *file) { - unsigned int adapter_nr = iminor(inode); + diva_um_idi_os_context_t *p_os; + unsigned int adapter_nr; int ret = 0; if (!(file->private_data)) { ret = -ENODEV; goto out; } + + if (!(p_os = + (diva_um_idi_os_context_t *) diva_um_id_get_os_context(file->private_data))) { + ret = -ENODEV; + goto out; + } + + adapter_nr = p_os->adapter_nr; if ((ret = remove_entity(file->private_data))) { goto out; diff -Nru a/drivers/isdn/hardware/eicon/divasmain.c b/drivers/isdn/hardware/eicon/divasmain.c --- a/drivers/isdn/hardware/eicon/divasmain.c Mon Sep 22 00:30:18 2003 +++ b/drivers/isdn/hardware/eicon/divasmain.c Mon Sep 22 00:30:18 2003 @@ -1,9 +1,9 @@ -/* $Id: divasmain.c,v 1.1.2.8 2001/05/01 15:48:05 armin Exp $ +/* $Id: divasmain.c,v 1.40 2003/09/10 08:02:33 schindler Exp $ * * Low level driver for Eicon DIVA Server ISDN cards. * - * Copyright 2000-2002 by Armin Schindler (mac@melware.de) - * Copyright 2000-2002 Cytronics & Melware (info@melware.de) + * Copyright 2000-2003 by Armin Schindler (mac@melware.de) + * Copyright 2000-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. @@ -16,14 +16,12 @@ #include #include #include -#include #include #include #include #include #include #include -#include #include #include #include @@ -37,36 +35,39 @@ #include "di_defs.h" #include "divasync.h" #include "diva.h" -#include "diva_pci.h" #include "di.h" #include "io.h" #include "xdi_msg.h" #include "xdi_adapter.h" #include "xdi_vers.h" #include "diva_dma.h" +#include "diva_pci.h" -static char *main_revision = "$Revision: 1.1.2.8 $"; +static char *main_revision = "$Revision: 1.40 $"; -int errno = 0; -static int major = 240; +static int major; + +static int dbgmask; MODULE_DESCRIPTION("Kernel driver for Eicon DIVA Server cards"); MODULE_AUTHOR("Cytronics & Melware, Eicon Networks"); MODULE_LICENSE("GPL"); -MODULE_PARM(major, "i"); -MODULE_PARM_DESC(major, "Major number for /dev/Divas"); + +MODULE_PARM(dbgmask, "i"); +MODULE_PARM_DESC(dbgmask, "initial debug mask"); static char *DRIVERNAME = "Eicon DIVA Server driver (http://www.melware.net)"; static char *DRIVERLNAME = "divas"; -char *DRIVERRELEASE = "2.0"; +static char *DEVNAME = "Divas"; +char *DRIVERRELEASE_DIVAS = "2.0"; extern irqreturn_t diva_os_irq_wrapper(int irq, void *context, struct pt_regs *regs); extern int create_divas_proc(void); extern void remove_divas_proc(void); extern void diva_get_vserial_number(PISDN_ADAPTER IoAdapter, char *buf); -extern int divasfunc_init(void); +extern int divasfunc_init(int dbgmask); extern void divasfunc_exit(void); typedef struct _diva_os_thread_dpc { @@ -185,19 +186,6 @@ return rev; } -void diva_os_sleep(dword mSec) -{ - unsigned long timeout = HZ * mSec / 1000 + 1; - - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(timeout); -} - -void diva_os_wait(dword mSec) -{ - mdelay(mSec); -} - void diva_log_info(unsigned char *format, ...) { va_list args; @@ -215,29 +203,8 @@ char tmprev[32]; strcpy(tmprev, main_revision); - sprintf(p, "%s: %s(%s) %s(%s)\n", DRIVERLNAME, DRIVERRELEASE, - getrev(tmprev), diva_xdi_common_code_build, DIVA_BUILD); -} - -/********************************************************* - ** malloc / free - *********************************************************/ - -void *diva_os_malloc(unsigned long flags, unsigned long size) -{ - void *ret = NULL; - - if (size) { - ret = (void *) vmalloc((unsigned int) size); - } - return (ret); -} - -void diva_os_free(unsigned long unused, void *ptr) -{ - if (ptr) { - vfree(ptr); - } + sprintf(p, "%s: %s(%s) %s(%s) major=%d\n", DRIVERLNAME, DRIVERRELEASE_DIVAS, + getrev(tmprev), diva_xdi_common_code_build, DIVA_BUILD, major); } /* -------------------------------------------------------------------------- @@ -282,6 +249,7 @@ (diva_os_thread_dpc_t *) psoft_isr->object; if (context && !context->card_failed) { + printk(KERN_ERR "%s: adapter %d trapped !\n", DRIVERLNAME, ANum + 1); context->card_failed = ANum + 1; schedule_work(&context->trap_script_task); } @@ -505,8 +473,8 @@ *********************************************************/ int -diva_os_register_io_port(int on, unsigned long port, unsigned long length, - const char *name) +diva_os_register_io_port(void *adapter, int on, unsigned long port, + unsigned long length, const char *name, int id) { if (on) { if (!request_region(port, length, name)) { @@ -519,7 +487,7 @@ return (0); } -void *divasa_remap_pci_bar(unsigned long bar, unsigned long area_length) +void *divasa_remap_pci_bar(diva_os_xdi_adapter_t *a, int id, unsigned long bar, unsigned long area_length) { void *ret; @@ -772,20 +740,20 @@ static void divas_unregister_chrdev(void) { - devfs_remove("Divas"); - unregister_chrdev(major, "Divas"); + devfs_remove(DEVNAME); + unregister_chrdev(major, DEVNAME); } static int DIVA_INIT_FUNCTION divas_register_chrdev(void) { - if (register_chrdev(major, "Divas", &divas_fops)) + if ((major = register_chrdev(0, DEVNAME, &divas_fops)) < 0) { printk(KERN_ERR "%s: failed to create /dev entry.\n", DRIVERLNAME); return (0); } + devfs_mk_cdev(MKDEV(major, 0), S_IFCHR|S_IRUSR|S_IWUSR, DEVNAME); - devfs_mk_cdev(MKDEV(major, 0), S_IFCHR|S_IRUSR|S_IWUSR, "Divas"); return (1); } @@ -877,23 +845,20 @@ int ret = 0; printk(KERN_INFO "%s\n", DRIVERNAME); - printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE); + printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE_DIVAS); strcpy(tmprev, main_revision); - printk("%s Build: %s(%s) Major: %d\n", getrev(tmprev), - diva_xdi_common_code_build, DIVA_BUILD, major); + printk("%s Build: %s(%s)\n", getrev(tmprev), + diva_xdi_common_code_build, DIVA_BUILD); printk(KERN_INFO "%s: support for: ", DRIVERLNAME); #ifdef CONFIG_ISDN_DIVAS_BRIPCI printk("BRI/PCI "); #endif -#ifdef CONFIG_ISDN_DIVAS_4BRIPCI - printk("4BRI/PCI "); -#endif #ifdef CONFIG_ISDN_DIVAS_PRIPCI printk("PRI/PCI "); #endif - printk("\n"); + printk("adapters\n"); - if (!divasfunc_init()) { + if (!divasfunc_init(dbgmask)) { printk(KERN_ERR "%s: failed to connect to DIDD.\n", DRIVERLNAME); ret = -EIO; @@ -901,15 +866,19 @@ } if (!divas_register_chrdev()) { +#ifdef MODULE divasfunc_exit(); +#endif ret = -EIO; goto out; } if (!create_divas_proc()) { +#ifdef MODULE remove_divas_proc(); divas_unregister_chrdev(); divasfunc_exit(); +#endif printk(KERN_ERR "%s: failed to create proc entry.\n", DRIVERLNAME); ret = -EIO; @@ -917,13 +886,16 @@ } if ((ret = pci_module_init(&diva_pci_driver))) { +#ifdef MODULE remove_divas_proc(); divas_unregister_chrdev(); divasfunc_exit(); +#endif printk(KERN_ERR "%s: failed to init pci driver.\n", DRIVERLNAME); goto out; } + printk(KERN_INFO "%s: started with major %d\n", DRIVERLNAME, major); out: return (ret); diff -Nru a/drivers/isdn/hardware/eicon/divasproc.c b/drivers/isdn/hardware/eicon/divasproc.c --- a/drivers/isdn/hardware/eicon/divasproc.c Mon Sep 22 00:30:23 2003 +++ b/drivers/isdn/hardware/eicon/divasproc.c Mon Sep 22 00:30:23 2003 @@ -1,10 +1,10 @@ -/* $Id: divasproc.c,v 1.1.2.4 2001/02/16 08:40:36 armin Exp $ +/* $Id: divasproc.c,v 1.18 2003/09/09 06:46:29 schindler Exp $ * * Low level driver for Eicon DIVA Server ISDN cards. * /proc functions * - * Copyright 2000-2002 by Armin Schindler (mac@melware.de) - * Copyright 2000-2002 Cytronics & Melware (info@melware.de) + * Copyright 2000-2003 by Armin Schindler (mac@melware.de) + * Copyright 2000-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. @@ -15,7 +15,6 @@ #include #include #include -#include #include "platform.h" #include "debuglib.h" @@ -23,7 +22,6 @@ #undef ID_MASK #undef N_DATA #include "pc.h" -#include "diva_pci.h" #include "di_defs.h" #include "divasync.h" #include "di.h" @@ -31,6 +29,7 @@ #include "xdi_msg.h" #include "xdi_adapter.h" #include "diva.h" +#include "diva_pci.h" extern PISDN_ADAPTER IoAdapters[MAX_ADAPTER]; @@ -52,7 +51,7 @@ ** "divas" entry */ -extern struct proc_dir_entry *proc_net_isdn_eicon; +extern struct proc_dir_entry *proc_net_eicon; static struct proc_dir_entry *divas_proc_entry = NULL; static ssize_t @@ -131,7 +130,7 @@ { divas_proc_entry = create_proc_entry(divas_proc_name, S_IFREG | S_IRUGO, - proc_net_isdn_eicon); + proc_net_eicon); if (!divas_proc_entry) return (0); @@ -144,7 +143,7 @@ void remove_divas_proc(void) { if (divas_proc_entry) { - remove_proc_entry(divas_proc_name, proc_net_isdn_eicon); + remove_proc_entry(divas_proc_name, proc_net_eicon); divas_proc_entry = NULL; } } @@ -333,7 +332,8 @@ } } if ((!a->xdi_adapter.port) && - ((!a->xdi_adapter.ram) || (!a->xdi_adapter.reset) + ((!a->xdi_adapter.ram) || + (!a->xdi_adapter.reset) || (!a->xdi_adapter.cfg))) { if (!IoAdapter->irq_info.irq_nr) { p = "slave"; @@ -369,20 +369,14 @@ struct proc_dir_entry *de, *pe; char tmp[16]; - if (in_interrupt()) { - printk(KERN_ERR - "divasproc: create_proc in_interrupt, not creating\n"); - return (1); - } - sprintf(tmp, "%s%d", adapter_dir_name, a->controller); - if (!(de = create_proc_entry(tmp, S_IFDIR, proc_net_isdn_eicon))) + if (!(de = create_proc_entry(tmp, S_IFDIR, proc_net_eicon))) return (0); a->proc_adapter_dir = (void *) de; if (!(pe = - create_proc_entry(info_proc_name, S_IFREG | S_IRUGO | S_IWUSR, - de))) return (0); + create_proc_entry(info_proc_name, S_IFREG | S_IRUGO | S_IWUSR, de))) + return (0); a->proc_info = (void *) pe; pe->write_proc = info_write; pe->read_proc = info_read; @@ -429,7 +423,7 @@ (struct proc_dir_entry *) a->proc_adapter_dir); } sprintf(tmp, "%s%d", adapter_dir_name, a->controller); - remove_proc_entry(tmp, proc_net_isdn_eicon); + remove_proc_entry(tmp, proc_net_eicon); DBG_TRC(("proc entry %s%d removed", adapter_dir_name, a->controller)); } diff -Nru a/drivers/isdn/hardware/eicon/dlist.c b/drivers/isdn/hardware/eicon/dlist.c --- a/drivers/isdn/hardware/eicon/dlist.c Mon Sep 22 00:30:18 2003 +++ b/drivers/isdn/hardware/eicon/dlist.c Mon Sep 22 00:30:18 2003 @@ -1,4 +1,4 @@ -/* $Id: dlist.c,v 1.1.2.2 2001/02/11 14:40:41 armin Exp $ */ +/* $Id: dlist.c,v 1.6 2003/08/25 16:03:35 schindler Exp $ */ #include "platform.h" #include "dlist.h" @@ -7,7 +7,7 @@ ** Initialize linked list */ -void diva_q_init(diva_entity_queue_t * q) +static void diva_q_init(diva_entity_queue_t * q) { memset(q, 0x00, sizeof(*q)); } @@ -15,7 +15,7 @@ /* ** Remove element from linked list */ -void diva_q_remove(diva_entity_queue_t * q, diva_entity_link_t * what) +static void diva_q_remove(diva_entity_queue_t * q, diva_entity_link_t * what) { if (!what->prev) { if ((q->head = what->next)) { @@ -36,7 +36,7 @@ /* ** Add element to the tail of linked list */ -void diva_q_add_tail(diva_entity_queue_t * q, diva_entity_link_t * what) +static void diva_q_add_tail(diva_entity_queue_t * q, diva_entity_link_t * what) { what->next = 0; if (!q->head) { @@ -49,7 +49,7 @@ } } -diva_entity_link_t *diva_q_find(const diva_entity_queue_t * q, +static diva_entity_link_t *diva_q_find(const diva_entity_queue_t * q, const void *what, diva_q_cmp_fn_t cmp_fn) { diva_entity_link_t *diva_current = q->head; @@ -64,35 +64,13 @@ return (diva_current); } -diva_entity_link_t *diva_q_get_head(diva_entity_queue_t * q) +static diva_entity_link_t *diva_q_get_head(diva_entity_queue_t * q) { return (q->head); } -diva_entity_link_t *diva_q_get_tail(diva_entity_queue_t * q) -{ - return (q->tail); -} - -diva_entity_link_t *diva_q_get_next(diva_entity_link_t * what) +static diva_entity_link_t *diva_q_get_next(diva_entity_link_t * what) { return ((what) ? what->next : 0); } -diva_entity_link_t *diva_q_get_prev(diva_entity_link_t * what) -{ - return ((what) ? what->prev : 0); -} - -int diva_q_get_nr_of_entries(const diva_entity_queue_t * q) -{ - int i = 0; - const diva_entity_link_t *diva_current = q->head; - - while (diva_current) { - i++; - diva_current = diva_current->next; - } - - return (i); -} diff -Nru a/drivers/isdn/hardware/eicon/dlist.h b/drivers/isdn/hardware/eicon/dlist.h --- a/drivers/isdn/hardware/eicon/dlist.h Mon Sep 22 00:30:24 2003 +++ b/drivers/isdn/hardware/eicon/dlist.h Mon Sep 22 00:30:24 2003 @@ -1,4 +1,4 @@ -/* $Id: dlist.h,v 1.1.2.2 2001/02/08 12:25:43 armin Exp $ */ +/* $Id: dlist.h,v 1.5 2003/08/25 16:03:35 schindler Exp $ */ #ifndef __DIVA_LINK_H__ #define __DIVA_LINK_H__ @@ -16,17 +16,5 @@ typedef int (*diva_q_cmp_fn_t) (const void *what, const diva_entity_link_t *); - -void diva_q_remove(diva_entity_queue_t * q, diva_entity_link_t * what); -void diva_q_add_tail(diva_entity_queue_t * q, diva_entity_link_t * what); -diva_entity_link_t *diva_q_find(const diva_entity_queue_t * q, - const void *what, diva_q_cmp_fn_t cmp_fn); - -diva_entity_link_t *diva_q_get_head(diva_entity_queue_t * q); -diva_entity_link_t *diva_q_get_tail(diva_entity_queue_t * q); -diva_entity_link_t *diva_q_get_next(diva_entity_link_t * what); -diva_entity_link_t *diva_q_get_prev(diva_entity_link_t * what); -int diva_q_get_nr_of_entries(const diva_entity_queue_t * q); -void diva_q_init(diva_entity_queue_t * q); #endif diff -Nru a/drivers/isdn/hardware/eicon/i4lididrv.c b/drivers/isdn/hardware/eicon/i4lididrv.c --- a/drivers/isdn/hardware/eicon/i4lididrv.c Mon Sep 22 00:30:25 2003 +++ b/drivers/isdn/hardware/eicon/i4lididrv.c Mon Sep 22 00:30:25 2003 @@ -293,7 +293,7 @@ { int pid = 0; - pid = kernel_thread(divad_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + pid = kernel_thread(divad_thread, NULL, CLONE_KERNEL); if (pid >= 0) { divad_pid = pid; } diff -Nru a/drivers/isdn/hardware/eicon/idifunc.c b/drivers/isdn/hardware/eicon/idifunc.c --- a/drivers/isdn/hardware/eicon/idifunc.c Mon Sep 22 00:30:24 2003 +++ b/drivers/isdn/hardware/eicon/idifunc.c Mon Sep 22 00:30:24 2003 @@ -1,10 +1,10 @@ -/* $Id: idifunc.c,v 1.1.2.2 2002/10/02 14:38:37 armin Exp $ +/* $Id: idifunc.c,v 1.13 2003/08/25 14:49:53 schindler Exp $ * * Driver for Eicon DIVA Server ISDN cards. * User Mode IDI Interface * - * Copyright 2000-2002 by Armin Schindler (mac@melware.de) - * Copyright 2000-2002 Cytronics & Melware (info@melware.de) + * Copyright 2000-2003 by Armin Schindler (mac@melware.de) + * Copyright 2000-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. @@ -19,7 +19,7 @@ #define DBG_MINIMUM (DL_LOG + DL_FTL + DL_ERR) #define DBG_DEFAULT (DBG_MINIMUM + DL_XLOG + DL_REG) -extern char *DRIVERRELEASE; +extern char *DRIVERRELEASE_IDI; extern void DIVA_DIDD_Read(void *, int); extern int diva_user_mode_idi_create_adapter(const DESCRIPTOR *, int); @@ -36,8 +36,6 @@ /* dummy debug function */ } -DIVA_DI_PRINTF dprintf = no_printf; - #include "debuglib.c" /* @@ -202,7 +200,7 @@ } else { memcpy(&MAdapter, adapter, sizeof(MAdapter)); dprintf = (DIVA_DI_PRINTF) MAdapter.request; - DbgRegister("User IDI", DRIVERRELEASE, DBG_DEFAULT); + DbgRegister("User IDI", DRIVERRELEASE_IDI, DBG_DEFAULT); } } else if ((adapter->type > 0) && (adapter->type < 16)) { /* IDI Adapter */ if (removal) { @@ -233,7 +231,7 @@ req.didd_notify.e.Req = 0; req.didd_notify.e.Rc = IDI_SYNC_REQ_DIDD_REGISTER_ADAPTER_NOTIFY; - req.didd_notify.info.callback = didd_callback; + req.didd_notify.info.callback = (void *)didd_callback; req.didd_notify.info.context = 0; DAdapter.request((ENTITY *) & req); if (req.didd_notify.e.Rc != 0xff) { @@ -244,7 +242,7 @@ } else if (DIDD_Table[x].type == IDI_DIMAINT) { /* MAINT found */ memcpy(&MAdapter, &DIDD_Table[x], sizeof(DAdapter)); dprintf = (DIVA_DI_PRINTF) MAdapter.request; - DbgRegister("User IDI", DRIVERRELEASE, DBG_DEFAULT); + DbgRegister("User IDI", DRIVERRELEASE_IDI, DBG_DEFAULT); } else if ((DIDD_Table[x].type > 0) && (DIDD_Table[x].type < 16)) { /* IDI Adapter found */ um_new_card(&DIDD_Table[x]); diff -Nru a/drivers/isdn/hardware/eicon/io.c b/drivers/isdn/hardware/eicon/io.c --- a/drivers/isdn/hardware/eicon/io.c Mon Sep 22 00:30:20 2003 +++ b/drivers/isdn/hardware/eicon/io.c Mon Sep 22 00:30:20 2003 @@ -72,10 +72,10 @@ */ static byte extended_xdi_features[DIVA_XDI_EXTENDED_FEATURES_MAX_SZ+1] = { (DIVA_XDI_EXTENDED_FEATURES_VALID | - DIVA_XDI_EXTENDED_FEATURE_CMA | DIVA_XDI_EXTENDED_FEATURE_SDRAM_BAR | DIVA_XDI_EXTENDED_FEATURE_CAPI_PRMS | #if defined(DIVA_IDI_RX_DMA) + DIVA_XDI_EXTENDED_FEATURE_CMA | DIVA_XDI_EXTENDED_FEATURE_RX_DMA | #endif DIVA_XDI_EXTENDED_FEATURE_NO_CANCEL_RC), @@ -156,7 +156,8 @@ dump_trap_frame (PISDN_ADAPTER IoAdapter, byte *exceptionFrame) { MP_XCPTC *xcept = (MP_XCPTC *)exceptionFrame ; - dword *regs = &xcept->regs[0] ; + dword *regs; + regs = &xcept->regs[0] ; DBG_FTL(("%s: ***************** CPU TRAPPED *****************", &IoAdapter->Name[0])) DBG_FTL(("Microcode: %s", &IoAdapter->ProtocolIdString[0])) @@ -567,26 +568,38 @@ /*------------------------------------------------------------------*/ byte mem_in (ADAPTER *a, void *addr) { - byte* Base = (byte*)&((PISDN_ADAPTER)a->io)->ram[(unsigned long)addr] ; - return (*Base) ; + byte val; + volatile byte* Base; + + Base = (volatile byte *)DIVA_OS_MEM_ATTACH_RAM((PISDN_ADAPTER)a->io); + val = *(Base + (unsigned long)addr); + DIVA_OS_MEM_DETACH_RAM((PISDN_ADAPTER)a->io, Base); + return (val); } word mem_inw (ADAPTER *a, void *addr) { - word* Base = (word*)&((PISDN_ADAPTER)a->io)->ram[(unsigned long)addr] ; - return (READ_WORD(Base)) ; + word val; + volatile byte* Base; + + Base = (volatile byte*)DIVA_OS_MEM_ATTACH_RAM((PISDN_ADAPTER)a->io); + val = READ_WORD((Base + (unsigned long)addr)); + DIVA_OS_MEM_DETACH_RAM((PISDN_ADAPTER)a->io, Base); + return (val); } void mem_in_dw (ADAPTER *a, void *addr, dword* data, int dwords) { - volatile dword* Base = (dword*)&((PISDN_ADAPTER)a->io)->ram[(unsigned long)addr] ; + volatile byte* Base = (volatile byte*)DIVA_OS_MEM_ATTACH_RAM((PISDN_ADAPTER)a->io); while (dwords--) { - *data++ = READ_DWORD(Base); - Base++; + *data++ = READ_DWORD((Base + (unsigned long)addr)); + addr+=4; } + DIVA_OS_MEM_DETACH_RAM((PISDN_ADAPTER)a->io, Base); } void mem_in_buffer (ADAPTER *a, void *addr, void *buffer, word length) { - byte* Base = (byte*)&((PISDN_ADAPTER)a->io)->ram[(unsigned long)addr] ; - memcpy (buffer, Base, length) ; + volatile byte* Base = (volatile byte*)DIVA_OS_MEM_ATTACH_RAM((PISDN_ADAPTER)a->io); + memcpy (buffer, (void *)(Base + (unsigned long)addr), length); + DIVA_OS_MEM_DETACH_RAM((PISDN_ADAPTER)a->io, Base); } void mem_look_ahead (ADAPTER *a, PBUFFER *RBuffer, ENTITY *e) { @@ -598,99 +611,130 @@ } void mem_out (ADAPTER *a, void *addr, byte data) { - byte* Base = (byte*)&((PISDN_ADAPTER)a->io)->ram[(unsigned long)addr] ; - *Base = data ; + volatile byte* Base = (volatile byte*)DIVA_OS_MEM_ATTACH_RAM((PISDN_ADAPTER)a->io); + *(Base + (unsigned long)addr) = data ; + DIVA_OS_MEM_DETACH_RAM((PISDN_ADAPTER)a->io, Base); } void mem_outw (ADAPTER *a, void *addr, word data) { - word* Base = (word*)&((PISDN_ADAPTER)a->io)->ram[(unsigned long)addr] ; - WRITE_WORD(Base, data); + volatile byte* Base = (volatile byte*)DIVA_OS_MEM_ATTACH_RAM((PISDN_ADAPTER)a->io); + WRITE_WORD((Base + (unsigned long)addr), data); + DIVA_OS_MEM_DETACH_RAM((PISDN_ADAPTER)a->io, Base); } void mem_out_dw (ADAPTER *a, void *addr, const dword* data, int dwords) { - volatile dword* Base = (dword*)&((PISDN_ADAPTER)a->io)->ram[(unsigned long)addr] ; + volatile byte* Base = (volatile byte*)DIVA_OS_MEM_ATTACH_RAM((PISDN_ADAPTER)a->io); while (dwords--) { - WRITE_DWORD(Base, *data); - Base++; + WRITE_DWORD((Base + (unsigned long)addr), *data); + addr+=4; data++; } + DIVA_OS_MEM_DETACH_RAM((PISDN_ADAPTER)a->io, Base); } void mem_out_buffer (ADAPTER *a, void *addr, void *buffer, word length) { - byte* Base = (byte*)&((PISDN_ADAPTER)a->io)->ram[(unsigned long)addr] ; - memcpy (Base, buffer, length) ; + volatile byte* Base = (volatile byte*)DIVA_OS_MEM_ATTACH_RAM((PISDN_ADAPTER)a->io); + memcpy ((void *)(Base + (unsigned long)addr), buffer, length) ; + DIVA_OS_MEM_DETACH_RAM((PISDN_ADAPTER)a->io, Base); } void mem_inc (ADAPTER *a, void *addr) { - byte* Base = (byte*)&((PISDN_ADAPTER)a->io)->ram[(unsigned long)addr] ; - byte x = *Base ; - *Base = x + 1 ; + volatile byte* Base = (volatile byte*)DIVA_OS_MEM_ATTACH_RAM((PISDN_ADAPTER)a->io); + byte x = *(Base + (unsigned long)addr); + *(Base + (unsigned long)addr) = x + 1 ; + DIVA_OS_MEM_DETACH_RAM((PISDN_ADAPTER)a->io, Base); } /*------------------------------------------------------------------*/ /* ram access functions for io-mapped cards */ /*------------------------------------------------------------------*/ byte io_in(ADAPTER * a, void * adr) { - outppw(((PISDN_ADAPTER)a->io)->port+4, (word)(unsigned long)adr); - return inpp(((PISDN_ADAPTER)a->io)->port); + byte val; + byte *Port = (byte*)DIVA_OS_MEM_ATTACH_PORT((PISDN_ADAPTER)a->io); + outppw(Port + 4, (word)(unsigned long)adr); + val = inpp(Port); + DIVA_OS_MEM_DETACH_PORT((PISDN_ADAPTER)a->io, Port); + return(val); } word io_inw(ADAPTER * a, void * adr) { - outppw(((PISDN_ADAPTER)a->io)->port+4, (word)(unsigned long)adr); - return inppw(((PISDN_ADAPTER)a->io)->port); + word val; + byte *Port = (byte*)DIVA_OS_MEM_ATTACH_PORT((PISDN_ADAPTER)a->io); + outppw(Port + 4, (word)(unsigned long)adr); + val = inppw(Port); + DIVA_OS_MEM_DETACH_PORT((PISDN_ADAPTER)a->io, Port); + return(val); } void io_in_buffer(ADAPTER * a, void * adr, void * buffer, word len) { + byte *Port = (byte*)DIVA_OS_MEM_ATTACH_PORT((PISDN_ADAPTER)a->io); byte* P = (byte*)buffer; if ((long)adr & 1) { - outppw(((PISDN_ADAPTER)a->io)->port+4, (word)(unsigned long)adr); - *P = inpp(((PISDN_ADAPTER)a->io)->port); + outppw(Port+4, (word)(unsigned long)adr); + *P = inpp(Port); P++; adr = ((byte *) adr) + 1; len--; - if (!len) return; + if (!len) { + DIVA_OS_MEM_DETACH_PORT((PISDN_ADAPTER)a->io, Port); + return; } - outppw(((PISDN_ADAPTER)a->io)->port+4, (word)(unsigned long)adr); - inppw_buffer (((PISDN_ADAPTER)a->io)->port, P, len+1); + } + outppw(Port+4, (word)(unsigned long)adr); + inppw_buffer (Port, P, len+1); + DIVA_OS_MEM_DETACH_PORT((PISDN_ADAPTER)a->io, Port); } void io_look_ahead(ADAPTER * a, PBUFFER * RBuffer, ENTITY * e) { - outppw(((PISDN_ADAPTER)a->io)->port+4, (word)(unsigned long)RBuffer); - ((PISDN_ADAPTER)a->io)->RBuffer.length = inppw(((PISDN_ADAPTER)a->io)->port); - inppw_buffer (((PISDN_ADAPTER)a->io)->port, ((PISDN_ADAPTER)a->io)->RBuffer.P, ((PISDN_ADAPTER)a->io)->RBuffer.length + 1); + byte *Port = (byte*)DIVA_OS_MEM_ATTACH_PORT((PISDN_ADAPTER)a->io); + outppw(Port+4, (word)(unsigned long)RBuffer); + ((PISDN_ADAPTER)a->io)->RBuffer.length = inppw(Port); + inppw_buffer (Port, ((PISDN_ADAPTER)a->io)->RBuffer.P, ((PISDN_ADAPTER)a->io)->RBuffer.length + 1); e->RBuffer = (DBUFFER *) &(((PISDN_ADAPTER)a->io)->RBuffer); + DIVA_OS_MEM_DETACH_PORT((PISDN_ADAPTER)a->io, Port); } void io_out(ADAPTER * a, void * adr, byte data) { - outppw(((PISDN_ADAPTER)a->io)->port+4, (word)(unsigned long)adr); - outpp(((PISDN_ADAPTER)a->io)->port, data); + byte *Port = (byte*)DIVA_OS_MEM_ATTACH_PORT((PISDN_ADAPTER)a->io); + outppw(Port+4, (word)(unsigned long)adr); + outpp(Port, data); + DIVA_OS_MEM_DETACH_PORT((PISDN_ADAPTER)a->io, Port); } void io_outw(ADAPTER * a, void * adr, word data) { - outppw(((PISDN_ADAPTER)a->io)->port+4, (word)(unsigned long)adr); - outppw(((PISDN_ADAPTER)a->io)->port, data); + byte *Port = (byte*)DIVA_OS_MEM_ATTACH_PORT((PISDN_ADAPTER)a->io); + outppw(Port+4, (word)(unsigned long)adr); + outppw(Port, data); + DIVA_OS_MEM_DETACH_PORT((PISDN_ADAPTER)a->io, Port); } void io_out_buffer(ADAPTER * a, void * adr, void * buffer, word len) { + byte *Port = (byte*)DIVA_OS_MEM_ATTACH_PORT((PISDN_ADAPTER)a->io); byte* P = (byte*)buffer; if ((long)adr & 1) { - outppw(((PISDN_ADAPTER)a->io)->port+4, (word)(unsigned long)adr); - outpp(((PISDN_ADAPTER)a->io)->port, *P); + outppw(Port+4, (word)(unsigned long)adr); + outpp(Port, *P); P++; adr = ((byte *) adr) + 1; len--; - if (!len) return; + if (!len) { + DIVA_OS_MEM_DETACH_PORT((PISDN_ADAPTER)a->io, Port); + return; + } } - outppw(((PISDN_ADAPTER)a->io)->port+4, (word)(unsigned long)adr); - outppw_buffer (((PISDN_ADAPTER)a->io)->port, P, len+1); + outppw(Port+4, (word)(unsigned long)adr); + outppw_buffer (Port, P, len+1); + DIVA_OS_MEM_DETACH_PORT((PISDN_ADAPTER)a->io, Port); } void io_inc(ADAPTER * a, void * adr) { byte x; - outppw(((PISDN_ADAPTER)a->io)->port+4, (word)(unsigned long)adr); - x = inpp(((PISDN_ADAPTER)a->io)->port); - outppw(((PISDN_ADAPTER)a->io)->port+4, (word)(unsigned long)adr); - outpp(((PISDN_ADAPTER)a->io)->port, x+1); + byte *Port = (byte*)DIVA_OS_MEM_ATTACH_PORT((PISDN_ADAPTER)a->io); + outppw(Port+4, (word)(unsigned long)adr); + x = inpp(Port); + outppw(Port+4, (word)(unsigned long)adr); + outpp(Port, x+1); + DIVA_OS_MEM_DETACH_PORT((PISDN_ADAPTER)a->io, Port); } /*------------------------------------------------------------------*/ /* OS specific functions related to queuing of entities */ diff -Nru a/drivers/isdn/hardware/eicon/io.h b/drivers/isdn/hardware/eicon/io.h --- a/drivers/isdn/hardware/eicon/io.h Mon Sep 22 00:30:25 2003 +++ b/drivers/isdn/hardware/eicon/io.h Mon Sep 22 00:30:25 2003 @@ -40,14 +40,6 @@ PISDN_ADAPTER QuadroAdapter[4] ; } ADAPTER_LIST_ENTRY, *PADAPTER_LIST_ENTRY ; /* -------------------------------------------------------------------------- - Special OS memory support structures - -------------------------------------------------------------------------- */ -#define MAX_MAPPED_ENTRIES 8 -typedef struct { - void * Address; - dword Length; -} ADAPTER_MEMORY ; -/* -------------------------------------------------------------------------- Configuration of XDI clients carried by XDI -------------------------------------------------------------------------- */ #define DIVA_XDI_CAPI_CFG_1_DYNAMIC_L1_ON 0x01 @@ -71,7 +63,6 @@ /* remember mapped memory areas */ - ADAPTER_MEMORY MappedMemory[MAX_MAPPED_ENTRIES] ; CARD_PROPERTIES Properties ; dword cardType ; dword protocol_id ; /* configured protocol identifier */ @@ -97,6 +88,8 @@ dword MemoryBase ; dword MemorySize ; byte *Address ; + byte *Config ; + byte *Control ; byte *reset ; byte *port ; byte *ram ; diff -Nru a/drivers/isdn/hardware/eicon/message.c b/drivers/isdn/hardware/eicon/message.c --- a/drivers/isdn/hardware/eicon/message.c Mon Sep 22 00:30:22 2003 +++ b/drivers/isdn/hardware/eicon/message.c Mon Sep 22 00:30:22 2003 @@ -3590,7 +3590,7 @@ { if (plci->channels) { - for (ncci = 1; ncci < MAX_NCCI+1; i++) + for (ncci = 1; ncci < MAX_NCCI+1; ncci++) { if ((a->ncci_plci[ncci] == plci->Id) && (a->ncci_state[ncci] == CONNECTED)) { @@ -6612,7 +6612,7 @@ ||(*data == DSP_UDATA_INDICATION_CTS_ON)) ) { word conn_opt, ncpi_opt = 0x00; -// HexDump ("MDM N_UDATA:", plci->NL.RBuffer->length, data); +/* HexDump ("MDM N_UDATA:", plci->NL.RBuffer->length, data); */ if (*data == DSP_UDATA_INDICATION_DCD_ON) plci->ncpi_state |= NCPI_MDM_DCD_ON_RECEIVED; @@ -7813,15 +7813,15 @@ } } - if(READ_WORD(bp_parms[0].info)==2 || // V.110 async - READ_WORD(bp_parms[0].info)==3 ) // V.110 sync + if(READ_WORD(bp_parms[0].info)==2 || /* V.110 async */ + READ_WORD(bp_parms[0].info)==3 ) /* V.110 sync */ { if(bp_parms[3].length){ dbug(1,dprintf("V.110,%d",READ_WORD(&bp_parms[3].info[1]))); - switch(READ_WORD(&bp_parms[3].info[1])){ // Rate + switch(READ_WORD(&bp_parms[3].info[1])){ /* Rate */ case 0: case 56000: - if(READ_WORD(bp_parms[0].info)==3){ //V.110 sync 56k + if(READ_WORD(bp_parms[0].info)==3){ /* V.110 sync 56k */ dbug(1,dprintf("56k sync HSCX")); cai[1] = 8; cai[2] = 0; @@ -7859,7 +7859,7 @@ return _B1_PARM_NOT_SUPPORTED; } cai[3] = 0; - if (cai[1] == 13) // v.110 async + if (cai[1] == 13) /* v.110 async */ { if (bp_parms[3].length >= 8) { @@ -7906,7 +7906,7 @@ } WRITE_WORD(&cai[5],plci->appl->MaxDataLength); dbug(1,dprintf("CAI[%d]=%x,%x,%x,%x,%x,%x", cai[0], cai[1], cai[2], cai[3], cai[4], cai[5], cai[6])); -//HexDump ("CAI", sizeof(cai), &cai[0]); +/* HexDump ("CAI", sizeof(cai), &cai[0]); */ add_p(plci, CAI, cai); return 0; @@ -8681,7 +8681,7 @@ DLC_MODEMPROT_DISABLE_COMPRESSION; } dlc[0] = (byte)(i - 1); -//HexDump ("DLC", sizeof(dlc), &dlc[0]); +/* HexDump ("DLC", sizeof(dlc), &dlc[0]); */ add_p(plci, DLC, dlc); return (0); } @@ -8739,7 +8739,7 @@ { ENTITY * e; word l; -// word i; +/* word i; */ if(!plci) return; if(plci->adapter->adapter_disabled) return; @@ -8856,7 +8856,7 @@ } else if (plci->send_disc == ncci) { - //dprintf("N_DISC"); + /* dprintf("N_DISC"); */ plci->NData[0].PLength = 0; plci->NL.ReqCh = a->ncci_ch[ncci]; plci->NL.Req = plci->nl_req = N_DISC; @@ -9059,15 +9059,15 @@ for(k=0;k<=flen;k++,j++) { facility[j]=fty_i[i][k]; -// dbug(1,dprintf("%x ",facility[j])); +/* dbug(1,dprintf("%x ",facility[j])); */ } } facility[0] = len; add_i[3] = facility; } -// dbug(1,dprintf("FacArrLen=%d ",len)); +/* dbug(1,dprintf("FacArrLen=%d ",len)); */ len = add_i[0][0]+add_i[1][0]+add_i[2][0]+add_i[3][0]; - len += 4; // calculate length of all + len += 4; /* calculate length of all */ return(len); } @@ -9083,8 +9083,8 @@ channel = chi[chi[0]]&0x3; dbug(1,dprintf("ExtDevON(Ch=0x%x)",channel)); voice_chi[2] = (channel) ? channel : 1; - add_p(plci,FTY,"\x02\x01\x07"); // B On, default on 1 - add_p(plci,ESC,voice_chi); // Channel + add_p(plci,FTY,"\x02\x01\x07"); /* B On, default on 1 */ + add_p(plci,ESC,voice_chi); /* Channel */ sig_req(plci,TEL_CTRL,0); send_req(plci); if(a->AdvSignalPLCI) @@ -9096,7 +9096,7 @@ void VoiceChannelOff(PLCI *plci) { dbug(1,dprintf("ExtDevOFF")); - add_p(plci,FTY,"\x02\x01\x08"); // B Off + add_p(plci,FTY,"\x02\x01\x08"); /* B Off */ sig_req(plci,TEL_CTRL,0); send_req(plci); if(plci->adapter->AdvSignalPLCI) diff -Nru a/drivers/isdn/hardware/eicon/mntfunc.c b/drivers/isdn/hardware/eicon/mntfunc.c --- a/drivers/isdn/hardware/eicon/mntfunc.c Mon Sep 22 00:30:18 2003 +++ b/drivers/isdn/hardware/eicon/mntfunc.c Mon Sep 22 00:30:18 2003 @@ -1,10 +1,10 @@ -/* $Id: mntfunc.c,v 1.1.2.2 2002/10/02 14:38:37 armin Exp $ +/* $Id: mntfunc.c,v 1.15 2003/08/25 14:49:53 schindler Exp $ * * Driver for Eicon DIVA Server ISDN cards. * Maint module * - * Copyright 2000,2001 by Armin Schindler (mac@melware.de) - * Copyright 2000,2001 Cytronics & Melware (info@melware.de) + * Copyright 2000-2003 by Armin Schindler (mac@melware.de) + * Copyright 2000-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. @@ -17,7 +17,7 @@ #include "di_defs.h" #include "debug_if.h" -extern char *DRIVERRELEASE; +extern char *DRIVERRELEASE_MNT; #define DBG_MINIMUM (DL_LOG + DL_FTL + DL_ERR) #define DBG_DEFAULT (DBG_MINIMUM + DL_XLOG + DL_REG) @@ -45,8 +45,6 @@ /* dummy debug function */ } -DIVA_DI_PRINTF dprintf = no_printf; - #include "debuglib.c" /* @@ -73,7 +71,7 @@ } else { memcpy(&MAdapter, adapter, sizeof(MAdapter)); dprintf = (DIVA_DI_PRINTF) MAdapter.request; - DbgRegister("MAINT", DRIVERRELEASE, DBG_DEFAULT); + DbgRegister("MAINT", DRIVERRELEASE_MNT, DBG_DEFAULT); } } else if ((adapter->type > 0) && (adapter->type < 16)) { if (removal) { @@ -104,7 +102,7 @@ req.didd_notify.e.Req = 0; req.didd_notify.e.Rc = IDI_SYNC_REQ_DIDD_REGISTER_ADAPTER_NOTIFY; - req.didd_notify.info.callback = didd_callback; + req.didd_notify.info.callback = (void *)didd_callback; req.didd_notify.info.context = 0; DAdapter.request((ENTITY *) & req); if (req.didd_notify.e.Rc != 0xff) diff -Nru a/drivers/isdn/hardware/eicon/os_4bri.c b/drivers/isdn/hardware/eicon/os_4bri.c --- a/drivers/isdn/hardware/eicon/os_4bri.c Mon Sep 22 00:30:21 2003 +++ b/drivers/isdn/hardware/eicon/os_4bri.c Mon Sep 22 00:30:21 2003 @@ -1,4 +1,4 @@ -/* $Id: os_4bri.c,v 1.1.2.3 2001/02/14 21:10:19 armin Exp $ */ +/* $Id: os_4bri.c,v 1.25 2003/06/21 17:08:44 schindler Exp $ */ #include "platform.h" #include "debuglib.h" @@ -99,6 +99,40 @@ return (0); } +static void diva_4bri_set_addresses(diva_os_xdi_adapter_t *a) +{ + dword offset = a->resources.pci.qoffset; + dword c_offset = offset * a->xdi_adapter.ControllerNumber; + + a->resources.pci.mem_type_id[MEM_TYPE_RAM] = 2; + a->resources.pci.mem_type_id[MEM_TYPE_ADDRESS] = 2; + a->resources.pci.mem_type_id[MEM_TYPE_CONTROL] = 2; + a->resources.pci.mem_type_id[MEM_TYPE_RESET] = 0; + a->resources.pci.mem_type_id[MEM_TYPE_CTLREG] = 3; + a->resources.pci.mem_type_id[MEM_TYPE_PROM] = 0; + + /* + Set up hardware related pointers + */ + a->xdi_adapter.Address = a->resources.pci.addr[2]; /* BAR2 SDRAM */ + a->xdi_adapter.Address += c_offset; + + a->xdi_adapter.Control = a->resources.pci.addr[2]; /* BAR2 SDRAM */ + + a->xdi_adapter.ram = a->resources.pci.addr[2]; /* BAR2 SDRAM */ + a->xdi_adapter.ram += c_offset + (offset - MQ_SHARED_RAM_SIZE); + + a->xdi_adapter.reset = a->resources.pci.addr[0]; /* BAR0 CONFIG */ + /* + ctlReg contains the register address for the MIPS CPU reset control + */ + a->xdi_adapter.ctlReg = a->resources.pci.addr[3]; /* BAR3 CNTRL */ + /* + prom contains the register address for FPGA and EEPROM programming + */ + a->xdi_adapter.prom = &a->xdi_adapter.reset[0x6E]; +} + /* ** BAR0 - MEM - 0x100 - CONFIG MEM ** BAR1 - I/O - 0x100 - UNUSED @@ -110,11 +144,11 @@ int diva_4bri_init_card(diva_os_xdi_adapter_t * a) { int bar, i; + byte *p; PADAPTER_LIST_ENTRY quadro_list; diva_os_xdi_adapter_t *diva_current; diva_os_xdi_adapter_t *adapter_list[4]; PISDN_ADAPTER Slave; - dword offset; unsigned long bar_length[sizeof(_4bri_bar_length) / sizeof(_4bri_bar_length[0])]; int v2 = _4bri_is_rev_2_card(a->CardOrdinal); @@ -142,7 +176,7 @@ have to map any BAR before we can access it */ if (!_4bri_get_serial_number(a)) { - DBG_ERR(("A: 4BRI can't ger Serial Number")) + DBG_ERR(("A: 4BRI can't get Serial Number")) diva_4bri_cleanup_adapter(a); return (-1); } @@ -190,7 +224,7 @@ for (bar = 0; bar < 4; bar++) { if (bar != 1) { /* ignore I/O */ a->resources.pci.addr[bar] = - divasa_remap_pci_bar(a->resources.pci.bar[bar], + divasa_remap_pci_bar(a, bar, a->resources.pci.bar[bar], bar_length[bar]); if (!a->resources.pci.addr[bar]) { DBG_ERR(("A: 4BRI: can't map bar[%d]", bar)) @@ -205,14 +239,15 @@ */ sprintf(&a->port_name[0], "DIVA 4BRI %ld", (long) a->xdi_adapter.serialNo); - if (diva_os_register_io_port(1, a->resources.pci.bar[1], - bar_length[1], &a->port_name[0])) { + if (diva_os_register_io_port(a, 1, a->resources.pci.bar[1], + bar_length[1], &a->port_name[0], 1)) { DBG_ERR(("A: 4BRI: can't register bar[1]")) diva_4bri_cleanup_adapter(a); return (-1); } - a->resources.pci.addr[1] = (void *) (unsigned long) a->resources.pci.bar[1]; + a->resources.pci.addr[1] = + (void *) (unsigned long) a->resources.pci.bar[1]; /* Set cleanup pointer for base adapter only, so slave adapter @@ -265,8 +300,8 @@ (PADAPTER_LIST_ENTRY) diva_os_malloc(0, sizeof(*quadro_list)); if (!(a->slave_list = quadro_list)) { for (i = 0; i < (tasks - 1); i++) { - diva_os_free(0, a->slave_adapters[bar]); - a->slave_adapters[bar] = 0; + diva_os_free(0, a->slave_adapters[i]); + a->slave_adapters[i] = 0; } diva_4bri_cleanup_adapter(a); return (-1); @@ -359,60 +394,39 @@ prepare_qBri_functions(&a->xdi_adapter); } + for (i = 0; i < tasks; i++) { + diva_current = adapter_list[i]; + if (i) + memcpy(&diva_current->resources, &a->resources, sizeof(divas_card_resources_t)); + diva_current->resources.pci.qoffset = (a->xdi_adapter.MemorySize >> factor); + } + /* Set up hardware related pointers */ a->xdi_adapter.cfg = (void *) (unsigned long) a->resources.pci.bar[0]; /* BAR0 CONFIG */ a->xdi_adapter.port = (void *) (unsigned long) a->resources.pci.bar[1]; /* BAR1 */ - a->xdi_adapter.Address = a->resources.pci.addr[2]; /* BAR2 SDRAM */ - a->xdi_adapter.ctlReg = - (void *) (unsigned long) a->resources.pci.bar[3]; /* BAR3 CNTRL */ - - a->xdi_adapter.reset = a->resources.pci.addr[0]; /* BAR0 CONFIG */ - a->xdi_adapter.ram = a->resources.pci.addr[2]; /* BAR2 SDRAM */ - /* - ctlReg contains the register address for the MIPS CPU reset control - */ - a->xdi_adapter.ctlReg = a->resources.pci.addr[3]; /* BAR3 CNTRL */ - /* - prom contains the register address for FPGA and EEPROM programming - */ - a->xdi_adapter.prom = &a->xdi_adapter.reset[0x6E]; - /* - reset contains the base address for the PLX 9054 register set - */ - a->xdi_adapter.reset[PLX9054_INTCSR] = 0x00; /* disable PCI interrupts */ + a->xdi_adapter.ctlReg = (void *) (unsigned long) a->resources.pci.bar[3]; /* BAR3 CNTRL */ - /* - Replicate addresses to all instances, set shared memory - address for all instances - */ for (i = 0; i < tasks; i++) { + diva_current = adapter_list[i]; + diva_4bri_set_addresses(diva_current); Slave = a->xdi_adapter.QuadroList->QuadroAdapter[i]; - offset = - Slave->ControllerNumber * - (a->xdi_adapter.MemorySize >> factor); - Slave->Address = &a->xdi_adapter.Address[offset]; - Slave->ram = &a->xdi_adapter.ram[offset]; - Slave->reset = a->xdi_adapter.reset; - Slave->ctlReg = a->xdi_adapter.ctlReg; - Slave->prom = a->xdi_adapter.prom; - Slave->reset = a->xdi_adapter.reset; + Slave->MultiMaster = &a->xdi_adapter; Slave->sdram_bar = a->xdi_adapter.sdram_bar; - } - for (i = 0; i < tasks; i++) { - Slave = a->xdi_adapter.QuadroList->QuadroAdapter[i]; - Slave->ram += - ((a->xdi_adapter.MemorySize >> factor) - - MQ_SHARED_RAM_SIZE); - } - for (i = 1; i < tasks; i++) { - Slave = a->xdi_adapter.QuadroList->QuadroAdapter[i]; - Slave->serialNo = - ((dword) (Slave->ControllerNumber << 24)) | a-> - xdi_adapter.serialNo; + if (i) { + Slave->serialNo = ((dword) (Slave->ControllerNumber << 24)) | + a->xdi_adapter.serialNo; Slave->cardType = a->xdi_adapter.cardType; } + } + + /* + reset contains the base address for the PLX 9054 register set + */ + p = DIVA_OS_MEM_ATTACH_RESET(&a->xdi_adapter); + p[PLX9054_INTCSR] = 0x00; /* disable PCI interrupts */ + DIVA_OS_MEM_DETACH_RESET(&a->xdi_adapter, p); /* Set IRQ handler @@ -484,8 +498,7 @@ if (bar != 1) { if (a->resources.pci.bar[bar] && a->resources.pci.addr[bar]) { - divasa_unmap_pci_bar(a->resources.pci. - addr[bar]); + divasa_unmap_pci_bar(a->resources.pci.addr[bar]); a->resources.pci.bar[bar] = 0; a->resources.pci.addr[bar] = 0; } @@ -496,12 +509,12 @@ Unregister I/O */ if (a->resources.pci.bar[1] && a->resources.pci.addr[1]) { - diva_os_register_io_port(0, a->resources.pci.bar[1], + diva_os_register_io_port(a, 0, a->resources.pci.bar[1], _4bri_is_rev_2_card(a-> CardOrdinal) ? _4bri_v2_bar_length[1] : _4bri_bar_length[1], - &a->port_name[0]); + &a->port_name[0], 1); a->resources.pci.bar[1] = 0; a->resources.pci.addr[1] = 0; } @@ -776,23 +789,18 @@ a->xdi_mbox. data_length); if (a->xdi_mbox.data) { - byte *src = - a->xdi_adapter.Address; - byte *dst = - a->xdi_mbox.data; - dword len = - a->xdi_mbox. - data_length; - - src += - cmd->command_data. - read_sdram.offset; + byte *p = DIVA_OS_MEM_ATTACH_ADDRESS(&a->xdi_adapter); + byte *src = p; + byte *dst = a->xdi_mbox.data; + dword len = a->xdi_mbox.data_length; + + src += cmd->command_data.read_sdram.offset; while (len--) { *dst++ = *src++; } - a->xdi_mbox.status = - DIVA_XDI_MBOX_BUSY; + DIVA_OS_MEM_DETACH_ADDRESS(&a->xdi_adapter, p); + a->xdi_mbox.status = DIVA_XDI_MBOX_BUSY; ret = 0; } } @@ -903,10 +911,12 @@ dword address, const byte * data, dword length, dword limit) { - byte *mem = IoAdapter->Address; + byte *p = DIVA_OS_MEM_ATTACH_ADDRESS(IoAdapter); + byte *mem = p; if (((address + length) >= limit) || !mem) { - DBG_ERR(("A: A(%d) write PRI address=0x%08lx", + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, p); + DBG_ERR(("A: A(%d) write 4BRI address=0x%08lx", IoAdapter->ANum, address + length)) return (-1); } @@ -916,6 +926,7 @@ *mem++ = *data++; } + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, p); return (0); } @@ -926,16 +937,18 @@ volatile word *signature; int started = 0; int i; + byte *p; /* start adapter */ start_qBri_hardware(IoAdapter); + p = DIVA_OS_MEM_ATTACH_RAM(IoAdapter); /* wait for signature in shared memory (max. 3 seconds) */ - signature = (volatile word *) (&IoAdapter->ram[0x1E]); + signature = (volatile word *) (&p[0x1E]); for (i = 0; i < 300; ++i) { diva_os_wait(10); @@ -958,10 +971,12 @@ DBG_FTL(("%s: Adapter selftest failed, signature=%04x", IoAdapter->Properties.Name, READ_WORD(&signature[0]))) + DIVA_OS_MEM_DETACH_RAM(IoAdapter, p); (*(IoAdapter->trapFnc)) (IoAdapter); IoAdapter->stop(IoAdapter); return (-1); } + DIVA_OS_MEM_DETACH_RAM(IoAdapter, p); for (i = 0; i < IoAdapter->tasks; i++) { IoAdapter->QuadroList->QuadroAdapter[i]->Initialized = 1; @@ -997,13 +1012,16 @@ #ifdef SUPPORT_INTERRUPT_TEST_ON_4BRI int i; ADAPTER *a = &IoAdapter->a; + byte *p; IoAdapter->IrqCount = 0; if (IoAdapter->ControllerNumber > 0) return (-1); - IoAdapter->reset[PLX9054_INTCSR] = PLX9054_INT_ENABLE; + p = DIVA_OS_MEM_ATTACH_RESET(IoAdapter); + p[PLX9054_INTCSR] = PLX9054_INT_ENABLE; + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); /* interrupt test */ @@ -1015,20 +1033,23 @@ return ((IoAdapter->IrqCount > 0) ? 0 : -1); #else dword volatile *qBriIrq; + byte *p; /* Reset on-board interrupt register */ IoAdapter->IrqCount = 0; - qBriIrq = - (dword volatile *) (&IoAdapter-> - ctlReg[_4bri_is_rev_2_card + p = DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + qBriIrq = (dword volatile *) (&p[_4bri_is_rev_2_card (IoAdapter-> cardType) ? (MQ2_BREG_IRQ_TEST) : (MQ_BREG_IRQ_TEST)]); WRITE_DWORD(qBriIrq, MQ_IRQ_REQ_OFF); + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p); - IoAdapter->reset[PLX9054_INTCSR] = PLX9054_INT_ENABLE; + p = DIVA_OS_MEM_ATTACH_RESET(IoAdapter); + p[PLX9054_INTCSR] = PLX9054_INT_ENABLE; + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); diva_os_wait(100); diff -Nru a/drivers/isdn/hardware/eicon/os_bri.c b/drivers/isdn/hardware/eicon/os_bri.c --- a/drivers/isdn/hardware/eicon/os_bri.c Mon Sep 22 00:30:18 2003 +++ b/drivers/isdn/hardware/eicon/os_bri.c Mon Sep 22 00:30:18 2003 @@ -1,4 +1,4 @@ -/* $Id: os_bri.c,v 1.1.2.2 2001/02/12 20:23:46 armin Exp $ */ +/* $Id: os_bri.c,v 1.18 2003/06/21 17:10:29 schindler Exp $ */ #include "platform.h" #include "debuglib.h" @@ -46,6 +46,27 @@ dword start_address, dword features); static int diva_bri_stop_adapter(diva_os_xdi_adapter_t * a); +static void diva_bri_set_addresses(diva_os_xdi_adapter_t * a) +{ + a->resources.pci.mem_type_id[MEM_TYPE_RAM] = 0; + a->resources.pci.mem_type_id[MEM_TYPE_CFG] = 1; + a->resources.pci.mem_type_id[MEM_TYPE_ADDRESS] = 2; + a->resources.pci.mem_type_id[MEM_TYPE_RESET] = 1; + a->resources.pci.mem_type_id[MEM_TYPE_PORT] = 2; + a->resources.pci.mem_type_id[MEM_TYPE_CTLREG] = 2; + + a->xdi_adapter.ram = a->resources.pci.addr[0]; + a->xdi_adapter.cfg = a->resources.pci.addr[1]; + a->xdi_adapter.Address = a->resources.pci.addr[2]; + + a->xdi_adapter.reset = a->xdi_adapter.cfg; + a->xdi_adapter.port = a->xdi_adapter.Address; + + a->xdi_adapter.ctlReg = a->xdi_adapter.port + M_PCI_RESET; + + a->xdi_adapter.reset += 0x4C; /* PLX 9050 !! */ +} + /* ** BAR0 - MEM Addr - 0x80 - NOT USED ** BAR1 - I/O Addr - 0x80 @@ -58,6 +79,7 @@ word cmd = 0, cmd_org; byte Bus, Slot; void *hdev; + byte *p; /* Set properties @@ -123,7 +145,7 @@ Map and register resources */ if (!(a->resources.pci.addr[0] = - divasa_remap_pci_bar(a->resources.pci.bar[0], + divasa_remap_pci_bar(a, 0, a->resources.pci.bar[0], bri_bar_length[0]))) { DBG_ERR(("A: BRI, can't map BAR[0]")) diva_bri_cleanup_adapter(a); @@ -133,8 +155,8 @@ sprintf(&a->port_name[0], "BRI %02x:%02x", a->resources.pci.bus, a->resources.pci.func); - if (diva_os_register_io_port(1, a->resources.pci.bar[1], - bri_bar_length[1], &a->port_name[0])) { + if (diva_os_register_io_port(a, 1, a->resources.pci.bar[1], + bri_bar_length[1], &a->port_name[0], 1)) { DBG_ERR(("A: BRI, can't register BAR[1]")) diva_bri_cleanup_adapter(a); return (-1); @@ -142,8 +164,8 @@ a->resources.pci.addr[1] = (void *) (unsigned long) a->resources.pci.bar[1]; a->resources.pci.length[1] = bri_bar_length[1]; - if (diva_os_register_io_port(1, a->resources.pci.bar[2], - bar2_length, &a->port_name[0])) { + if (diva_os_register_io_port(a, 1, a->resources.pci.bar[2], + bar2_length, &a->port_name[0], 2)) { DBG_ERR(("A: BRI, can't register BAR[2]")) diva_bri_cleanup_adapter(a); return (-1); @@ -152,6 +174,11 @@ a->resources.pci.length[2] = bar2_length; /* + Set all memory areas + */ + diva_bri_set_addresses(a); + + /* Get Serial Number */ a->xdi_adapter.serialNo = diva_bri_get_serial_number(a); @@ -210,15 +237,9 @@ a->interface.cleanup_adapter_proc = diva_bri_cleanup_adapter; a->interface.cmd_proc = diva_bri_cmd_card_proc; - a->xdi_adapter.cfg = a->resources.pci.addr[1]; - a->xdi_adapter.Address = a->resources.pci.addr[2]; - - a->xdi_adapter.reset = a->xdi_adapter.cfg; - a->xdi_adapter.port = a->xdi_adapter.Address; - - a->xdi_adapter.ctlReg = a->xdi_adapter.port + M_PCI_RESET; - a->xdi_adapter.reset += 0x4C; /* PLX 9050 !! */ - outpp(a->xdi_adapter.reset, 0x41); + p = DIVA_OS_MEM_ATTACH_RESET(&a->xdi_adapter); + outpp(p, 0x41); + DIVA_OS_MEM_DETACH_RESET(&a->xdi_adapter, p); prepare_maestra_functions(&a->xdi_adapter); @@ -268,11 +289,11 @@ for (i = 1; i < 3; i++) { if (a->resources.pci.addr[i] && a->resources.pci.bar[i]) { - diva_os_register_io_port(0, + diva_os_register_io_port(a, 0, a->resources.pci.bar[i], a->resources.pci. length[i], - &a->port_name[0]); + &a->port_name[0], i); a->resources.pci.addr[i] = 0; a->resources.pci.bar[i] = 0; } @@ -314,18 +335,20 @@ byte *confIO; word serHi, serLo, *confMem; - confIO = (byte *) a->resources.pci.addr[1]; + confIO = (byte *) DIVA_OS_MEM_ATTACH_CFG(&a->xdi_adapter); serHi = (word) (inppw(&confIO[0x22]) & 0x0FFF); serLo = (word) (inppw(&confIO[0x26]) & 0x0FFF); serNo = ((dword) serHi << 16) | (dword) serLo; + DIVA_OS_MEM_DETACH_CFG(&a->xdi_adapter, confIO); if ((serNo == 0) || (serNo == 0xFFFFFFFF)) { DBG_FTL(("W: BRI use BAR[0] to get card serial number")) - confMem = (word *) a->resources.pci.addr[0]; + confMem = (word *) DIVA_OS_MEM_ATTACH_RAM(&a->xdi_adapter); serHi = (word) (READ_WORD(&confMem[0x11]) & 0x0FFF); serLo = (word) (READ_WORD(&confMem[0x13]) & 0x0FFF); serNo = (((dword) serHi) << 16) | ((dword) serLo); + DIVA_OS_MEM_DETACH_RAM(&a->xdi_adapter, confMem); } DBG_LOG(("Serial Number=%ld", serNo)) @@ -342,9 +365,9 @@ int i; for (i = 1; i < 3; i++) { - diva_os_register_io_port(0, a->resources.pci.bar[i], + diva_os_register_io_port(a, 0, a->resources.pci.bar[i], a->resources.pci.length[i], - &a->port_name[0]); + &a->port_name[0], i); a->resources.pci.addr[i] = 0; } @@ -352,9 +375,9 @@ (long) a->xdi_adapter.serialNo); for (i = 1; i < 3; i++) { - if (diva_os_register_io_port(1, a->resources.pci.bar[i], + if (diva_os_register_io_port(a, 1, a->resources.pci.bar[i], a->resources.pci.length[i], - &a->port_name[0])) { + &a->port_name[0], i)) { DBG_ERR(("A: failed to reregister BAR[%d]", i)) return (-1); } @@ -493,6 +516,7 @@ { byte *addrHi, *addrLo, *ioaddr; dword i; + byte *Port; if (!IoAdapter->port) { return (-1); @@ -501,13 +525,13 @@ DBG_ERR(("A: A(%d) can't reset BRI adapter - please stop first", IoAdapter->ANum)) return (-1); } - addrHi = - IoAdapter->port + - ((IoAdapter->Properties.Bus == BUS_PCI) ? M_PCI_ADDRH : ADDRH); - addrLo = IoAdapter->port + ADDR; - ioaddr = IoAdapter->port + DATA; (*(IoAdapter->rstFnc)) (IoAdapter); diva_os_wait(100); + Port = DIVA_OS_MEM_ATTACH_PORT(IoAdapter); + addrHi = Port + + ((IoAdapter->Properties.Bus == BUS_PCI) ? M_PCI_ADDRH : ADDRH); + addrLo = Port + ADDR; + ioaddr = Port + DATA; /* recover */ @@ -540,6 +564,8 @@ outppw(addrLo, (word) 0); outppw(ioaddr, (word) 0); + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); + /* Forget all outstanding entities */ @@ -578,16 +604,17 @@ dword address, const byte * data, dword length) { byte *addrHi, *addrLo, *ioaddr; + byte *Port; if (!IoAdapter->port) { return (-1); } - addrHi = - IoAdapter->port + + Port = DIVA_OS_MEM_ATTACH_PORT(IoAdapter); + addrHi = Port + ((IoAdapter->Properties.Bus == BUS_PCI) ? M_PCI_ADDRH : ADDRH); - addrLo = IoAdapter->port + ADDR; - ioaddr = IoAdapter->port + DATA; + addrLo = Port + ADDR; + ioaddr = Port + DATA; while (length--) { outpp(addrHi, (word) (address >> 16)); @@ -596,6 +623,7 @@ address++; } + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); return (0); } @@ -603,6 +631,7 @@ diva_bri_start_adapter(PISDN_ADAPTER IoAdapter, dword start_address, dword features) { + byte *Port; dword i, test; byte *addrHi, *addrLo, *ioaddr; int started = 0; @@ -621,11 +650,11 @@ sprintf(IoAdapter->Name, "A(%d)", (int) IoAdapter->ANum); DBG_LOG(("A(%d) start BRI", IoAdapter->ANum)) - addrHi = - IoAdapter->port + + Port = DIVA_OS_MEM_ATTACH_PORT(IoAdapter); + addrHi = Port + ((IoAdapter->Properties.Bus == BUS_PCI) ? M_PCI_ADDRH : ADDRH); - addrLo = IoAdapter->port + ADDR; - ioaddr = IoAdapter->port + DATA; + addrLo = Port + ADDR; + ioaddr = Port + DATA; outpp(addrHi, (byte) ( @@ -633,12 +662,20 @@ BRI_SHARED_RAM_SIZE) >> 16)); outppw(addrLo, 0x1e); outppw(ioaddr, 0x00); + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); /* start the protocol code */ - outpp(IoAdapter->ctlReg, 0x08); + Port = DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + outpp(Port, 0x08); + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, Port); + Port = DIVA_OS_MEM_ATTACH_PORT(IoAdapter); + addrHi = Port + + ((IoAdapter->Properties.Bus == BUS_PCI) ? M_PCI_ADDRH : ADDRH); + addrLo = Port + ADDR; + ioaddr = Port + DATA; /* wait for signature (max. 3 seconds) */ @@ -659,6 +696,7 @@ break; } } + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); if (!started) { DBG_FTL(("A: A(%d) %s: Adapter selftest failed 0x%04X", @@ -677,7 +715,9 @@ a->ReadyInt = 1; if (IoAdapter->reset) { - outpp(IoAdapter->reset, 0x41); + Port = DIVA_OS_MEM_ATTACH_RESET(IoAdapter); + outpp(Port, 0x41); + DIVA_OS_MEM_DETACH_RESET(IoAdapter, Port); } a->ram_out(a, &PR_RAM->ReadyInt, 1); diff -Nru a/drivers/isdn/hardware/eicon/os_pri.c b/drivers/isdn/hardware/eicon/os_pri.c --- a/drivers/isdn/hardware/eicon/os_pri.c Mon Sep 22 00:30:21 2003 +++ b/drivers/isdn/hardware/eicon/os_pri.c Mon Sep 22 00:30:21 2003 @@ -1,4 +1,4 @@ -/* $Id: os_pri.c,v 1.1.2.3 2001/02/14 21:10:19 armin Exp $ */ +/* $Id: os_pri.c,v 1.29 2003/08/25 13:41:27 schindler Exp $ */ #include "platform.h" #include "debuglib.h" @@ -57,6 +57,34 @@ return (0); } +static void diva_pri_set_addresses(diva_os_xdi_adapter_t * a) +{ + a->resources.pci.mem_type_id[MEM_TYPE_ADDRESS] = 0; + a->resources.pci.mem_type_id[MEM_TYPE_CONTROL] = 2; + a->resources.pci.mem_type_id[MEM_TYPE_CONFIG] = 4; + a->resources.pci.mem_type_id[MEM_TYPE_RAM] = 0; + a->resources.pci.mem_type_id[MEM_TYPE_RESET] = 2; + a->resources.pci.mem_type_id[MEM_TYPE_CFG] = 4; + a->resources.pci.mem_type_id[MEM_TYPE_PROM] = 3; + + a->xdi_adapter.Address = a->resources.pci.addr[0]; + a->xdi_adapter.Control = a->resources.pci.addr[2]; + a->xdi_adapter.Config = a->resources.pci.addr[4]; + + a->xdi_adapter.ram = a->resources.pci.addr[0]; + a->xdi_adapter.ram += MP_SHARED_RAM_OFFSET; + + a->xdi_adapter.reset = a->resources.pci.addr[2]; + a->xdi_adapter.reset += MP_RESET; + + a->xdi_adapter.cfg = a->resources.pci.addr[4]; + a->xdi_adapter.cfg += MP_IRQ_RESET; + + a->xdi_adapter.sdram_bar = a->resources.pci.bar[0]; + + a->xdi_adapter.prom = a->resources.pci.addr[3]; +} + /* ** BAR0 - SDRAM, MP_MEMORY_SIZE, MP2_MEMORY_SIZE by Rev.2 ** BAR1 - DEVICES, 0x1000 @@ -117,7 +145,7 @@ */ for (bar = 0; bar < 5; bar++) { a->resources.pci.addr[bar] = - divasa_remap_pci_bar(a->resources.pci.bar[bar], + divasa_remap_pci_bar(a, bar, a->resources.pci.bar[bar], bar_length[bar]); if (!a->resources.pci.addr[bar]) { DBG_ERR(("A: A(%d), can't map bar[%d]", @@ -128,6 +156,11 @@ } /* + Set all memory areas + */ + diva_pri_set_addresses(a); + + /* Get Serial Number of this adapter */ if (pri_get_serial_number(a)) { @@ -194,23 +227,6 @@ prepare_pri_functions(&a->xdi_adapter); } - /* - Set all memory areas - */ - a->xdi_adapter.Address = a->resources.pci.addr[0]; - a->xdi_adapter.sdram_bar = a->resources.pci.bar[0]; - a->xdi_adapter.ram = a->resources.pci.addr[0]; - a->xdi_adapter.ram += MP_SHARED_RAM_OFFSET; - - a->xdi_adapter.reset = a->resources.pci.addr[2]; - a->xdi_adapter.reset += MP_RESET; - - a->xdi_adapter.prom = - (byte *) (unsigned long) a->resources.pci.bar[3]; - - a->xdi_adapter.cfg = a->resources.pci.addr[4]; - a->xdi_adapter.cfg += MP_IRQ_RESET; - a->dsp_mask = diva_pri_detect_dsps(a); /* @@ -317,7 +333,7 @@ static int diva_pri_reset_adapter(PISDN_ADAPTER IoAdapter) { dword i; - struct mp_load *boot = (struct mp_load *) IoAdapter->Address; + struct mp_load *boot; if (!IoAdapter->Address || !IoAdapter->reset) { return (-1); @@ -328,12 +344,20 @@ return (-1); } + boot = (struct mp_load *) DIVA_OS_MEM_ATTACH_ADDRESS(IoAdapter); WRITE_DWORD(&boot->err, 0); + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, boot); + IoAdapter->rstFnc(IoAdapter); + diva_os_wait(10); + + boot = (struct mp_load *) DIVA_OS_MEM_ATTACH_ADDRESS(IoAdapter); i = READ_DWORD(&boot->live); + diva_os_wait(10); if (i == READ_DWORD(&boot->live)) { + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, boot); DBG_ERR(("A: A(%d) CPU on PRI %ld is not alive!", IoAdapter->ANum, IoAdapter->serialNo)) return (-1); @@ -342,8 +366,10 @@ DBG_ERR(("A: A(%d) PRI %ld Board Selftest failed, error=%08lx", IoAdapter->ANum, IoAdapter->serialNo, READ_DWORD(&boot->err))) + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, boot); return (-1); } + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, boot); /* Forget all outstanding entities @@ -383,9 +409,11 @@ dword address, const byte * data, dword length, dword limit) { - byte *mem = IoAdapter->Address; + byte *p = DIVA_OS_MEM_ATTACH_ADDRESS(IoAdapter); + byte *mem = p; if (((address + length) >= limit) || !mem) { + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, p); DBG_ERR(("A: A(%d) write PRI address=0x%08lx", IoAdapter->ANum, address + length)) return (-1); @@ -396,6 +424,7 @@ *mem++ = *data++; } + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, p); return (0); } @@ -405,15 +434,18 @@ { dword i; int started = 0; - struct mp_load *boot = (struct mp_load *) IoAdapter->Address; + byte *p; + struct mp_load *boot = (struct mp_load *) DIVA_OS_MEM_ATTACH_ADDRESS(IoAdapter); ADAPTER *a = &IoAdapter->a; if (IoAdapter->Initialized) { + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, boot); DBG_ERR(("A: A(%d) pri_start_adapter, adapter already running", IoAdapter->ANum)) return (-1); } if (!boot) { + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, boot); DBG_ERR(("A: PRI %ld can't start, adapter not mapped", IoAdapter->serialNo)) return (-1); @@ -437,17 +469,22 @@ } if (!started) { - dword TrapId = READ_DWORD(&IoAdapter->Address[0x80]); - dword debug = READ_DWORD(&IoAdapter->Address[0x1c]); + byte *p = (byte *)boot; + dword TrapId; + dword debug; + TrapId = READ_DWORD(&p[0x80]); + debug = READ_DWORD(&p[0x1c]); DBG_ERR(("A(%d) Adapter start failed 0x%08lx, TrapId=%08lx, debug=%08lx", IoAdapter->ANum, READ_DWORD(&boot->signature), TrapId, debug)) + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, boot); if (IoAdapter->trapFnc) { (*(IoAdapter->trapFnc)) (IoAdapter); } IoAdapter->stop(IoAdapter); return (-1); } + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, boot); IoAdapter->Initialized = TRUE; @@ -455,8 +492,9 @@ Check Interrupt */ IoAdapter->IrqCount = 0; - WRITE_DWORD(((dword volatile *) IoAdapter->cfg), - (dword) ~ 0x03E00000); + p = DIVA_OS_MEM_ATTACH_CFG(IoAdapter); + WRITE_DWORD(((dword volatile *) p), (dword) ~ 0x03E00000); + DIVA_OS_MEM_DETACH_CFG(IoAdapter, p); a->ReadyInt = 1; a->ram_out(a, &PR_RAM->ReadyInt, 1); @@ -658,7 +696,8 @@ diva_os_malloc(0, a->xdi_mbox.data_length); if (a->xdi_mbox.data) { dword *data = (dword *) a->xdi_mbox.data; - if (!a->xdi_adapter.ram || !a->xdi_adapter.reset || + if (!a->xdi_adapter.ram || + !a->xdi_adapter.reset || !a->xdi_adapter.cfg) { *data = 3; } else if (a->xdi_adapter.trapped) { @@ -691,23 +730,18 @@ a->xdi_mbox. data_length); if (a->xdi_mbox.data) { - byte *src = - a->xdi_adapter.Address; - byte *dst = - a->xdi_mbox.data; - dword len = - a->xdi_mbox. - data_length; - - src += - cmd->command_data. - read_sdram.offset; + byte *p = DIVA_OS_MEM_ATTACH_ADDRESS(&a->xdi_adapter); + byte *src = p; + byte *dst = a->xdi_mbox.data; + dword len = a->xdi_mbox.data_length; + + src += cmd->command_data.read_sdram.offset; while (len--) { *dst++ = *src++; } - a->xdi_mbox.status = - DIVA_XDI_MBOX_BUSY; + a->xdi_mbox.status = DIVA_XDI_MBOX_BUSY; + DIVA_OS_MEM_DETACH_ADDRESS(&a->xdi_adapter, p); ret = 0; } } @@ -731,27 +765,33 @@ byte data[64]; int i; dword len = sizeof(data); - volatile byte *config = (byte *) a->resources.pci.addr[4]; - volatile byte *flash = (byte *) a->resources.pci.addr[3]; + volatile byte *config; + volatile byte *flash; /* * First set some GT6401x config registers before accessing the BOOT-ROM */ + config = DIVA_OS_MEM_ATTACH_CONFIG(&a->xdi_adapter); if (!(config[0xc3c] & 0x08)) { config[0xc3c] |= 0x08; /* Base Address enable register */ } config[LOW_BOOTCS_DREG] = 0x00; config[HI_BOOTCS_DREG] = 0xFF; + DIVA_OS_MEM_DETACH_CONFIG(&a->xdi_adapter, config); /* * Read only the last 64 bytes of manufacturing data */ memset(data, '\0', len); + flash = DIVA_OS_MEM_ATTACH_PROM(&a->xdi_adapter); for (i = 0; i < len; i++) { data[i] = flash[0x8000 - len + i]; } + DIVA_OS_MEM_DETACH_PROM(&a->xdi_adapter, flash); + config = DIVA_OS_MEM_ATTACH_CONFIG(&a->xdi_adapter); config[LOW_BOOTCS_DREG] = 0xFC; /* Disable FLASH EPROM access */ config[HI_BOOTCS_DREG] = 0xFF; + DIVA_OS_MEM_DETACH_CONFIG(&a->xdi_adapter, config); if (memcmp(&data[48], "DIVAserverPR", 12)) { #if !defined(DIVA_PRI_NO_PCI_BIOS_WORKAROUND) /* { */ @@ -791,22 +831,26 @@ /* Try to read Flash again */ - config = (byte *) a->resources.pci.addr[4]; - flash = (byte *) a->resources.pci.addr[3]; len = sizeof(data); + config = DIVA_OS_MEM_ATTACH_CONFIG(&a->xdi_adapter); if (!(config[0xc3c] & 0x08)) { config[0xc3c] |= 0x08; /* Base Address enable register */ } config[LOW_BOOTCS_DREG] = 0x00; config[HI_BOOTCS_DREG] = 0xFF; + DIVA_OS_MEM_DETACH_CONFIG(&a->xdi_adapter, config); memset(data, '\0', len); + flash = DIVA_OS_MEM_ATTACH_PROM(&a->xdi_adapter); for (i = 0; i < len; i++) { data[i] = flash[0x8000 - len + i]; } + DIVA_OS_MEM_ATTACH_PROM(&a->xdi_adapter, flash); + config = DIVA_OS_MEM_ATTACH_CONFIG(&a->xdi_adapter); config[LOW_BOOTCS_DREG] = 0xFC; config[HI_BOOTCS_DREG] = 0xFF; + DIVA_OS_MEM_DETACH_CONFIG(&a->xdi_adapter, config); if (memcmp(&data[48], "DIVAserverPR", 12)) { DBG_ERR(("A: failed to read serial number")) @@ -907,7 +951,8 @@ */ static dword diva_pri_detect_dsps(diva_os_xdi_adapter_t * a) { - byte *base = a->resources.pci.addr[2]; + byte *base; + byte *p; dword ret = 0; dword row_offset[7] = { 0x00000000, @@ -921,14 +966,17 @@ byte *dsp_addr_port, *dsp_data_port, row_state; int dsp_row = 0, dsp_index, dsp_num; - if (!base || !a->xdi_adapter.reset) { + if (!a->xdi_adapter.Control || !a->xdi_adapter.reset) { return (0); } - *(volatile byte *) (a->xdi_adapter.reset) = - _MP_RISC_RESET | _MP_DSP_RESET; + p = DIVA_OS_MEM_ATTACH_RESET(&a->xdi_adapter); + *(volatile byte *) p = _MP_RISC_RESET | _MP_DSP_RESET; + DIVA_OS_MEM_DETACH_RESET(&a->xdi_adapter, p); diva_os_wait(5); + base = DIVA_OS_MEM_ATTACH_CONTROL(&a->xdi_adapter); + for (dsp_num = 0; dsp_num < 30; dsp_num++) { dsp_row = dsp_num / 7 + 1; dsp_index = dsp_num % 7; @@ -947,9 +995,11 @@ ret |= (1 << dsp_num); } } + DIVA_OS_MEM_DETACH_CONTROL(&a->xdi_adapter, base); - *(volatile byte *) (a->xdi_adapter.reset) = - _MP_RISC_RESET | _MP_LED1 | _MP_LED2; + p = DIVA_OS_MEM_ATTACH_RESET(&a->xdi_adapter); + *(volatile byte *) p = _MP_RISC_RESET | _MP_LED1 | _MP_LED2; + DIVA_OS_MEM_DETACH_RESET(&a->xdi_adapter, p); diva_os_wait(5); /* diff -Nru a/drivers/isdn/hardware/eicon/platform.h b/drivers/isdn/hardware/eicon/platform.h --- a/drivers/isdn/hardware/eicon/platform.h Mon Sep 22 00:30:23 2003 +++ b/drivers/isdn/hardware/eicon/platform.h Mon Sep 22 00:30:23 2003 @@ -1,9 +1,9 @@ -/* $Id: platform.h,v 1.1.2.6 2001/05/01 15:48:05 armin Exp $ +/* $Id: platform.h,v 1.31 2003/09/08 15:15:22 schindler Exp $ * * platform.h * * - * Copyright 2000-2002 by Armin Schindler (mac@melware.de) + * Copyright 2000-2003 by Armin Schindler (mac@melware.de) * Copyright 2000 Eicon Networks * * This software may be used and distributed according to the terms @@ -23,20 +23,27 @@ #include #include #include +#include #include +#include #include #include #include +#include #include #include #include "cardtype.h" +/* activate debuglib for modules only */ +#ifndef MODULE +#define DIVA_NO_DEBUGLIB +#endif + #define DIVA_INIT_FUNCTION __init #define DIVA_EXIT_FUNCTION __exit #define DIVA_USER_MODE_CARD_CONFIG 1 -#define XDI_USE_XLOG 1 #define USE_EXTENDED_DEBUGS 1 #define MAX_ADAPTER 32 @@ -46,11 +53,6 @@ #define MEMORY_SPACE_TYPE 0 #define PORT_SPACE_TYPE 1 -#include "debuglib.h" - -#define dtrc(p) DBG_PRV0(p) -#define dbug(a,p) DBG_PRV1(p) - #include @@ -106,6 +108,36 @@ #define _cdecl #endif +#define MEM_TYPE_RAM 0 +#define MEM_TYPE_PORT 1 +#define MEM_TYPE_PROM 2 +#define MEM_TYPE_CTLREG 3 +#define MEM_TYPE_RESET 4 +#define MEM_TYPE_CFG 5 +#define MEM_TYPE_ADDRESS 6 +#define MEM_TYPE_CONFIG 7 +#define MEM_TYPE_CONTROL 8 + +#define DIVA_OS_MEM_ATTACH_RAM(a) ((a)->ram) +#define DIVA_OS_MEM_ATTACH_PORT(a) ((a)->port) +#define DIVA_OS_MEM_ATTACH_PROM(a) ((a)->prom) +#define DIVA_OS_MEM_ATTACH_CTLREG(a) ((a)->ctlReg) +#define DIVA_OS_MEM_ATTACH_RESET(a) ((a)->reset) +#define DIVA_OS_MEM_ATTACH_CFG(a) ((a)->cfg) +#define DIVA_OS_MEM_ATTACH_ADDRESS(a) ((a)->Address) +#define DIVA_OS_MEM_ATTACH_CONFIG(a) ((a)->Config) +#define DIVA_OS_MEM_ATTACH_CONTROL(a) ((a)->Control) + +#define DIVA_OS_MEM_DETACH_RAM(a, x) do { } while(0) +#define DIVA_OS_MEM_DETACH_PORT(a, x) do { } while(0) +#define DIVA_OS_MEM_DETACH_PROM(a, x) do { } while(0) +#define DIVA_OS_MEM_DETACH_CTLREG(a, x) do { } while(0) +#define DIVA_OS_MEM_DETACH_RESET(a, x) do { } while(0) +#define DIVA_OS_MEM_DETACH_CFG(a, x) do { } while(0) +#define DIVA_OS_MEM_DETACH_ADDRESS(a, x) do { } while(0) +#define DIVA_OS_MEM_DETACH_CONFIG(a, x) do { } while(0) +#define DIVA_OS_MEM_DETACH_CONTROL(a, x) do { } while(0) + #if !defined(DIM) #define DIM(array) (sizeof (array)/sizeof ((array)[0])) #endif @@ -124,7 +156,11 @@ typedef struct _ISDN_ADAPTER* PISDN_ADAPTER; typedef void (* DIVA_DI_PRINTF) (unsigned char *, ...); -extern DIVA_DI_PRINTF dprintf; +#include "debuglib.h" + +#define dtrc(p) DBG_PRV0(p) +#define dbug(a,p) DBG_PRV1(p) + typedef struct e_info_s E_INFO ; @@ -146,8 +182,21 @@ /* ** memory allocation */ -void* diva_os_malloc (unsigned long flags, unsigned long size); -void diva_os_free (unsigned long flags, void* ptr); +static __inline__ void* diva_os_malloc (unsigned long flags, unsigned long size) +{ + void *ret = NULL; + + if (size) { + ret = (void *) vmalloc((unsigned int) size); + } + return (ret); +} +static __inline__ void diva_os_free (unsigned long flags, void* ptr) +{ + if (ptr) { + vfree(ptr); + } +} /* ** use skbuffs for message buffer @@ -161,8 +210,17 @@ /* ** mSeconds waiting */ -void diva_os_sleep(dword mSec); -void diva_os_wait(dword mSec); +static __inline__ void diva_os_sleep(dword mSec) +{ + unsigned long timeout = HZ * mSec / 1000 + 1; + + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(timeout); +} +static __inline__ void diva_os_wait(dword mSec) +{ + mdelay(mSec); +} /* ** PCI Configuration space access @@ -173,8 +231,8 @@ /* ** I/O Port utilities */ -int diva_os_register_io_port (int register, unsigned long port, unsigned long length, const char* name); - +int diva_os_register_io_port (void *adapter, int register, unsigned long port, + unsigned long length, const char* name, int id); /* ** I/O port access abstraction */ @@ -197,14 +255,6 @@ void diva_os_remove_irq (void* context, byte irq); #define diva_os_in_irq() in_irq() - -/* -** module locking -*/ -/* -#define DIVA_LOCK_MODULE MOD_INC_USE_COUNT -#define DIVA_UNLOCK_MODULE MOD_DEC_USE_COUNT -*/ /* ** Spin Lock framework diff -Nru a/drivers/isdn/hardware/eicon/s_4bri.c b/drivers/isdn/hardware/eicon/s_4bri.c --- a/drivers/isdn/hardware/eicon/s_4bri.c Mon Sep 22 00:30:17 2003 +++ b/drivers/isdn/hardware/eicon/s_4bri.c Mon Sep 22 00:30:17 2003 @@ -55,8 +55,8 @@ * check for trapped MIPS 46xx CPU, dump exception frame */ + base = DIVA_OS_MEM_ATTACH_CONTROL(IoAdapter); offset = IoAdapter->ControllerNumber * (IoAdapter->MemorySize >> factor) ; - base = IoAdapter->ram - offset - ((IoAdapter->MemorySize >> factor) - MQ_SHARED_RAM_SIZE) ; TrapID = READ_DWORD(&base[0x80]) ; @@ -75,8 +75,10 @@ if ( (regs[0] >= offset) && (regs[0] < offset + (IoAdapter->MemorySize >> factor) - 1) ) { - if ( !(Xlog = (word *)diva_os_malloc (0, MAX_XLOG_SIZE)) ) + if ( !(Xlog = (word *)diva_os_malloc (0, MAX_XLOG_SIZE)) ) { + DIVA_OS_MEM_DETACH_CONTROL(IoAdapter, base); return ; + } size = offset + (IoAdapter->MemorySize >> factor) - regs[0] ; if ( size > MAX_XLOG_SIZE ) @@ -89,7 +91,7 @@ diva_os_free (0, Xlog) ; IoAdapter->trapped = 2 ; } - + DIVA_OS_MEM_DETACH_CONTROL(IoAdapter, base); } /* -------------------------------------------------------------------------- @@ -97,10 +99,10 @@ -------------------------------------------------------------------------- */ static void reset_qBri_hardware (PISDN_ADAPTER IoAdapter) { word volatile *qBriReset ; - dword volatile *qBriCntrl ; + byte volatile *qBriCntrl ; + byte volatile *p ; - qBriReset = (word volatile *)IoAdapter->prom ; - qBriCntrl = (dword volatile *)(&IoAdapter->ctlReg[DIVA_4BRI_REVISION(IoAdapter) ? (MQ2_BREG_RISC) : (MQ_BREG_RISC)]); + qBriReset = (word volatile *)DIVA_OS_MEM_ATTACH_PROM(IoAdapter); WRITE_WORD(qBriReset, READ_WORD(qBriReset) | PLX9054_SOFT_RESET) ; diva_os_wait (1) ; WRITE_WORD(qBriReset, READ_WORD(qBriReset) & ~PLX9054_SOFT_RESET) ; @@ -109,34 +111,40 @@ diva_os_wait (1) ; WRITE_WORD(qBriReset, READ_WORD(qBriReset) & ~PLX9054_RELOAD_EEPROM) ; diva_os_wait (1); + DIVA_OS_MEM_DETACH_PROM(IoAdapter, qBriReset); - WRITE_DWORD(qBriCntrl, 0) ; + qBriCntrl = DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + p = &qBriCntrl[DIVA_4BRI_REVISION(IoAdapter) ? (MQ2_BREG_RISC) : (MQ_BREG_RISC)]; + WRITE_DWORD(p, 0) ; + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, qBriCntrl); DBG_TRC(("resetted board @ reset addr 0x%08lx", qBriReset)) - DBG_TRC(("resetted board @ cntrl addr 0x%08lx", qBriCntrl)) - + DBG_TRC(("resetted board @ cntrl addr 0x%08lx", p)) } /* -------------------------------------------------------------------------- Start Card CPU -------------------------------------------------------------------------- */ void start_qBri_hardware (PISDN_ADAPTER IoAdapter) { - dword volatile *qBriReset ; + byte volatile *qBriReset ; + byte volatile *p ; - qBriReset = (dword volatile *)(&IoAdapter->ctlReg[DIVA_4BRI_REVISION(IoAdapter) ? (MQ2_BREG_RISC) : (MQ_BREG_RISC)]); + p = (byte volatile *)DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + qBriReset = &p[(DIVA_4BRI_REVISION(IoAdapter)) ? (MQ2_BREG_RISC) : (MQ_BREG_RISC)]; WRITE_DWORD(qBriReset, MQ_RISC_COLD_RESET_MASK) ; diva_os_wait (2) ; WRITE_DWORD(qBriReset, MQ_RISC_WARM_RESET_MASK | MQ_RISC_COLD_RESET_MASK) ; diva_os_wait (10) ; + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p); DBG_TRC(("started processor @ addr 0x%08lx", qBriReset)) - } /* -------------------------------------------------------------------------- Stop Card CPU -------------------------------------------------------------------------- */ static void stop_qBri_hardware (PISDN_ADAPTER IoAdapter) { + byte volatile *p ; dword volatile *qBriReset ; dword volatile *qBriIrq ; dword volatile *qBriIsacDspReset ; @@ -147,16 +155,24 @@ if ( IoAdapter->ControllerNumber > 0 ) return ; - qBriReset = (dword volatile *)(&IoAdapter->ctlReg[reset_offset]) ; - qBriIrq = (dword volatile *)(&IoAdapter->ctlReg[irq_offset]) ; - qBriIsacDspReset = (dword volatile *)(&IoAdapter->ctlReg[hw_offset]); + p = (byte volatile *)DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + qBriReset = (dword volatile *)&p[reset_offset]; + qBriIsacDspReset = (dword volatile *)&p[hw_offset]; /* * clear interrupt line (reset Local Interrupt Test Register) */ WRITE_DWORD(qBriReset, 0) ; WRITE_DWORD(qBriIsacDspReset, 0) ; - IoAdapter->reset[PLX9054_INTCSR] = 0x00 ; /* disable PCI interrupts */ + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p); + + p = (byte volatile *)DIVA_OS_MEM_ATTACH_RESET(IoAdapter); + p[PLX9054_INTCSR] = 0x00 ; /* disable PCI interrupts */ + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); + + p = (byte volatile *)DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + qBriIrq = (dword volatile *)&p[irq_offset]; WRITE_DWORD(qBriIrq, MQ_IRQ_REQ_OFF) ; + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p); DBG_TRC(("stopped processor @ addr 0x%08lx", qBriReset)) @@ -260,7 +276,7 @@ int bit ; byte *File ; dword code, FileLength ; - word volatile *addr = (word volatile *)IoAdapter->prom ; + word volatile *addr = (word volatile *)DIVA_OS_MEM_ATTACH_PROM(IoAdapter); word val, baseval = FPGA_CS | FPGA_PROG ; @@ -291,8 +307,10 @@ File = qBri_check_FPGAsrc (IoAdapter, "ds4bri.bit", &FileLength, &code) ; } - if ( !File ) + if ( !File ) { + DIVA_OS_MEM_DETACH_PROM(IoAdapter, addr); return (0) ; + } /* * prepare download, pulse PROGRAM pin down. */ @@ -306,6 +324,7 @@ { DBG_FTL(("FPGA download: acknowledge for FPGA memory clear missing")) xdiFreeFile (File) ; + DIVA_OS_MEM_DETACH_PROM(IoAdapter, addr); return (0) ; } /* @@ -329,6 +348,8 @@ diva_os_wait (100) ; val = READ_WORD(addr) ; + DIVA_OS_MEM_DETACH_PROM(IoAdapter, addr); + if ( !(val & FPGA_BUSY) ) { DBG_FTL(("FPGA download: chip remains in busy state (0x%04x)", val)) @@ -343,12 +364,10 @@ Download protocol code to the adapter -------------------------------------------------------------------------- */ -#define DOWNLOAD_ADDR(IoAdapter) (&IoAdapter->ram[IoAdapter->downloadAddr & (IoAdapter->MemorySize - 1)]) - - static int qBri_protocol_load (PISDN_ADAPTER BaseIoAdapter, PISDN_ADAPTER IoAdapter) { PISDN_ADAPTER HighIoAdapter; + byte *p; dword FileLength ; dword *sharedRam, *File; dword Addr, ProtOffset, SharedRamOffset, i; @@ -436,7 +455,8 @@ return (0) ; } IoAdapter->downloadAddr = 0 ; - sharedRam = (dword *)DOWNLOAD_ADDR(IoAdapter) ; + p = DIVA_OS_MEM_ATTACH_RAM(IoAdapter); + sharedRam = (dword *)&p[IoAdapter->downloadAddr & (IoAdapter->MemorySize - 1)]; memcpy (sharedRam, File, FileLength) ; DBG_TRC(("Download addr 0x%08x len %ld - virtual 0x%08x", @@ -449,10 +469,12 @@ DBG_FTL(("File=0x%x, sharedRam=0x%x", File, sharedRam)) DBG_BLK(( (char *)File, 256)) DBG_BLK(( (char *)sharedRam, 256)) + DIVA_OS_MEM_DETACH_RAM(IoAdapter, p); xdiFreeFile (File) ; return (0) ; } + DIVA_OS_MEM_DETACH_RAM(IoAdapter, p); xdiFreeFile (File) ; return (1) ; @@ -466,6 +488,7 @@ PISDN_ADAPTER IoAdapter; word i ; dword *sharedRam ; + byte *p; i = 0 ; @@ -485,12 +508,14 @@ IoAdapter->downloadAddr + length)) return (-1) ; } - sharedRam = (dword*)(&BaseIoAdapter->ram[IoAdapter->downloadAddr & - (IoAdapter->MemorySize - 1)]) ; - + p = DIVA_OS_MEM_ATTACH_RAM(BaseIoAdapter); + sharedRam = (dword*)&p[IoAdapter->downloadAddr & (IoAdapter->MemorySize - 1)]; - if ( fp->sysFileRead (fp, sharedRam, length) != length ) + if ( fp->sysFileRead (fp, sharedRam, length) != length ) { + DIVA_OS_MEM_DETACH_RAM(BaseIoAdapter, p); return (-1) ; + } + DIVA_OS_MEM_DETACH_RAM(BaseIoAdapter, p); IoAdapter->downloadAddr += length ; IoAdapter->downloadAddr = (IoAdapter->downloadAddr + 3) & (~3) ; @@ -509,6 +534,7 @@ word download_count, i ; dword *sharedRam ; dword FileLength ; + byte *p; if ( !(fp = OsOpenFile (DSP_TELINDUS_FILE)) ) { DBG_FTL(("qBri_telindus_load: %s not found!", DSP_TELINDUS_FILE)) @@ -553,8 +579,8 @@ * store # of download files extracted from the archive and download table */ HighIoAdapter->downloadAddr = HighIoAdapter->DspCodeBaseAddr ; - sharedRam = (dword *)(&BaseIoAdapter->ram[HighIoAdapter->downloadAddr & - (IoAdapter->MemorySize - 1)]) ; + p = DIVA_OS_MEM_ATTACH_RAM(BaseIoAdapter); + sharedRam = (dword *)&p[HighIoAdapter->downloadAddr & (IoAdapter->MemorySize - 1)]; WRITE_DWORD(&(sharedRam[0]), (dword)download_count); memcpy (&sharedRam[1], &download_table[0], sizeof(download_table)) ; @@ -563,6 +589,7 @@ if ( memcmp (&sharedRam[1], &download_table, download_count) ) { DBG_FTL(("%s: Dsp Memory test failed!", IoAdapter->Properties.Name)) } + DIVA_OS_MEM_DETACH_RAM(BaseIoAdapter, p); return (FileLength) ; } @@ -588,6 +615,7 @@ dword phys_start_addr; dword end_addr; byte* sharedRam = 0; + byte *p; if (task) { if (!(fp = OsOpenFile (task))) { @@ -657,18 +685,22 @@ } fp->sysFileSeek (fp, 0, OS_SEEK_SET); - sharedRam = &BaseIoAdapter->ram[phys_start_addr]; + p = DIVA_OS_MEM_ATTACH_RAM(BaseIoAdapter); + sharedRam = &p[phys_start_addr]; if ((dword)fp->sysFileRead (fp, sharedRam, FileLength) != FileLength) { + DIVA_OS_MEM_DETACH_RAM(BaseIoAdapter, p); OsCloseFile (fp) ; DBG_ERR(("Can't read image [%s]", task)) return (0); } + DIVA_OS_MEM_DETACH_RAM(BaseIoAdapter, p); OsCloseFile (fp) ; } + p = DIVA_OS_MEM_ATTACH_RAM(BaseIoAdapter); if (!link_addr) { - link_addr = &BaseIoAdapter->ram[OFFS_DSP_CODE_BASE_ADDR]; + link_addr = &p[OFFS_DSP_CODE_BASE_ADDR]; } DBG_TRC(("Write task [%s] link %08lx at %08lx", @@ -681,6 +713,8 @@ link_addr[2] = (byte)((start_addr >> 16) & 0xff); link_addr[3] = (byte)((start_addr >> 24) & 0xff); + DIVA_OS_MEM_DETACH_RAM(BaseIoAdapter, p); + return (task ? &sharedRam[DIVA_MIPS_TASK_IMAGE_LINK_OFFS] : 0); } @@ -691,6 +725,7 @@ dword i, offset, controller ; word *signature ; int factor = (IoAdapter->tasks == 1) ? 1 : 2; + byte *p; PISDN_ADAPTER Slave ; @@ -751,7 +786,8 @@ Slave->reset = IoAdapter->reset ; Slave->ctlReg = IoAdapter->ctlReg ; Slave->prom = IoAdapter->prom ; - Slave->reset = IoAdapter->reset ; + Slave->Config = IoAdapter->Config ; + Slave->Control = IoAdapter->Control ; if ( !qBri_protocol_load (IoAdapter, Slave) ) return (0) ; @@ -782,9 +818,11 @@ { Slave = IoAdapter->QuadroList->QuadroAdapter[i] ; Slave->ram += (IoAdapter->MemorySize >> factor) - MQ_SHARED_RAM_SIZE ; + p = DIVA_OS_MEM_ATTACH_RAM(Slave); DBG_TRC(("Configure instance %d shared memory @ 0x%08lx", - Slave->ControllerNumber, Slave->ram)) - memset (Slave->ram, '\0', 256) ; + Slave->ControllerNumber, p)) + memset (p, '\0', 256) ; + DIVA_OS_MEM_DETACH_RAM(Slave, p); diva_configure_protocol (Slave); } @@ -792,7 +830,8 @@ * start adapter */ start_qBri_hardware (IoAdapter) ; - signature = (word *)(&IoAdapter->ram[0x1E]) ; + p = DIVA_OS_MEM_ATTACH_RAM(IoAdapter); + signature = (word *)(&p[0x1E]) ; /* * wait for signature in shared memory (max. 3 seconds) */ @@ -802,12 +841,14 @@ if ( signature[0] == 0x4447 ) { + DIVA_OS_MEM_DETACH_RAM(IoAdapter, p); DBG_TRC(("Protocol startup time %d.%02d seconds", (i / 100), (i % 100) )) return (1) ; } } + DIVA_OS_MEM_DETACH_RAM(IoAdapter, p); DBG_FTL(("%s: Adapter selftest failed (0x%04X)!", IoAdapter->Properties.Name, signature[0] >> 16)) qBri_cpu_trapped (IoAdapter) ; @@ -829,16 +870,23 @@ word i ; int serviced = 0 ; + byte *p; + p = DIVA_OS_MEM_ATTACH_RESET(IoAdapter); - if ( !(IoAdapter->reset[PLX9054_INTCSR] & 0x80) ) + if ( !(p[PLX9054_INTCSR] & 0x80) ) { + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); return (0) ; + } + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); /* * clear interrupt line (reset Local Interrupt Test Register) */ - qBriIrq = (dword volatile *)(&IoAdapter->ctlReg[DIVA_4BRI_REVISION(IoAdapter) ? (MQ2_BREG_IRQ_TEST) : (MQ_BREG_IRQ_TEST)]); + p = DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + qBriIrq = (dword volatile *)(&p[DIVA_4BRI_REVISION(IoAdapter) ? (MQ2_BREG_IRQ_TEST) : (MQ_BREG_IRQ_TEST)]); WRITE_DWORD(qBriIrq, MQ_IRQ_REQ_OFF) ; + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p); for ( i = 0 ; i < IoAdapter->tasks; ++i ) { @@ -861,15 +909,21 @@ -------------------------------------------------------------------------- */ static void disable_qBri_interrupt (PISDN_ADAPTER IoAdapter) { dword volatile *qBriIrq ; + byte *p; if ( IoAdapter->ControllerNumber > 0 ) return ; - qBriIrq = (dword volatile *)(&IoAdapter->ctlReg[DIVA_4BRI_REVISION(IoAdapter) ? (MQ2_BREG_IRQ_TEST) : (MQ_BREG_IRQ_TEST)]); /* * clear interrupt line (reset Local Interrupt Test Register) */ - IoAdapter->reset[PLX9054_INTCSR] = 0x00 ; /* disable PCI interrupts */ + p = DIVA_OS_MEM_ATTACH_RESET(IoAdapter); + p[PLX9054_INTCSR] = 0x00 ; /* disable PCI interrupts */ + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); + + p = DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + qBriIrq = (dword volatile *)(&p[DIVA_4BRI_REVISION(IoAdapter) ? (MQ2_BREG_IRQ_TEST) : (MQ_BREG_IRQ_TEST)]); WRITE_DWORD(qBriIrq, MQ_IRQ_REQ_OFF) ; + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p); } /* -------------------------------------------------------------------------- diff -Nru a/drivers/isdn/hardware/eicon/s_bri.c b/drivers/isdn/hardware/eicon/s_bri.c --- a/drivers/isdn/hardware/eicon/s_bri.c Mon Sep 22 00:30:24 2003 +++ b/drivers/isdn/hardware/eicon/s_bri.c Mon Sep 22 00:30:24 2003 @@ -45,15 +45,16 @@ word *Xlog ; dword regs[4], i, size ; Xdesc xlogDesc ; + byte *Port; /* * first read pointers and trap frame */ if ( !(Xlog = (word *)diva_os_malloc (0, MAX_XLOG_SIZE)) ) return ; - addrHi = IoAdapter->port - + ((IoAdapter->Properties.Bus == BUS_PCI) ? M_PCI_ADDRH : ADDRH) ; - addrLo = IoAdapter->port + ADDR ; - ioaddr = IoAdapter->port + DATA ; + Port = DIVA_OS_MEM_ATTACH_PORT(IoAdapter); + addrHi = Port + ((IoAdapter->Properties.Bus == BUS_PCI) ? M_PCI_ADDRH : ADDRH) ; + addrLo = Port + ADDR ; + ioaddr = Port + DATA ; outpp (addrHi, 0) ; outppw (addrLo, 0) ; for ( i = 0 ; i < 0x100 ; Xlog[i++] = inppw(ioaddr) ) ; @@ -95,21 +96,28 @@ outpp (addrHi, (byte)((BRI_UNCACHED_ADDR (IoAdapter->MemoryBase + IoAdapter->MemorySize - BRI_SHARED_RAM_SIZE)) >> 16)) ; outppw (addrLo, 0x00) ; + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); } /* --------------------------------------------------------------------- Reset hardware --------------------------------------------------------------------- */ static void reset_bri_hardware (PISDN_ADAPTER IoAdapter) { - outpp (IoAdapter->ctlReg, 0x00) ; + byte *p = DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + outpp (p, 0x00) ; + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p); } /* --------------------------------------------------------------------- Halt system --------------------------------------------------------------------- */ static void stop_bri_hardware (PISDN_ADAPTER IoAdapter) { - if (IoAdapter->reset) { - outpp (IoAdapter->reset, 0x00) ; /* disable interrupts ! */ - } - outpp (IoAdapter->ctlReg, 0x00) ; /* clear int, halt cpu */ + byte *p = DIVA_OS_MEM_ATTACH_RESET(IoAdapter); + if (p) { + outpp (p, 0x00) ; /* disable interrupts ! */ + } + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); + p = DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + outpp (p, 0x00) ; /* clear int, halt cpu */ + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p); } #if !defined(DIVA_USER_MODE_CARD_CONFIG) /* { */ /* --------------------------------------------------------------------- @@ -121,6 +129,7 @@ byte* addrHi, *addrLo, *ioaddr ; char *FileName = &IoAdapter->Protocol[0] ; dword Addr, i ; + byte *Port; /* ------------------------------------------------------------------- Try to load protocol code. 'File' points to memory location that does contain entire protocol code @@ -173,10 +182,10 @@ DBG_FTL(("Protocol code '%s' too big (%ld)", FileName, FileLength)) return (0) ; } - addrHi = IoAdapter->port - + ((IoAdapter->Properties.Bus == BUS_PCI) ? M_PCI_ADDRH : ADDRH) ; - addrLo = IoAdapter->port + ADDR ; - ioaddr = IoAdapter->port + DATA ; + Port = DIVA_OS_MEM_ATTACH_PORT(IoAdapter); + addrHi = Port + ((IoAdapter->Properties.Bus == BUS_PCI) ? M_PCI_ADDRH : ADDRH) ; + addrLo = Port + ADDR ; + ioaddr = Port + DATA ; /* * set start address for download (use autoincrement mode !) */ @@ -204,12 +213,14 @@ test = inppw (ioaddr) ; if ( test != File[i/2] ) { + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); DBG_FTL(("%s: Memory test failed! (%d - 0x%04X/0x%04X)", IoAdapter->Properties.Name, i, test, File[i/2])) xdiFreeFile (File); return (0) ; } } + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); xdiFreeFile (File); return (FileLength) ; } @@ -290,6 +301,7 @@ t_dsp_portable_desc download_table[DSP_MAX_DOWNLOAD_COUNT] ; word download_count ; dword FileLength ; + byte *Port; if (!pinfo) { DBG_ERR (("A: out of memory s_bri at %d", __LINE__)) return (0); @@ -299,11 +311,11 @@ return (0) ; } FileLength = fp->sysFileSize ; + Port = DIVA_OS_MEM_ATTACH_PORT(IoAdapter); pinfo->IoAdapter = IoAdapter ; - pinfo->AddrLo = IoAdapter->port + ADDR ; - pinfo->AddrHi = IoAdapter->port +\ - (IoAdapter->Properties.Bus == BUS_PCI ? M_PCI_ADDRH : ADDRH); - pinfo->Data = (word*)(IoAdapter->port + DATA) ; + pinfo->AddrLo = Port + ADDR ; + pinfo->AddrHi = Port + (IoAdapter->Properties.Bus == BUS_PCI ? M_PCI_ADDRH : ADDRH); + pinfo->Data = (word*)(Port + DATA) ; pinfo->DownloadPos = (IoAdapter->DspCodeBaseAddr +\ sizeof(dword) + sizeof(download_table) + 3) & (~3) ; fp->sysLoadDesc = (void *)pinfo; @@ -317,6 +329,7 @@ &download_count, NULL, &download_table[0]) ; if ( error ) { + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); DBG_FTL(("download file error: %s", error)) OsCloseFile (fp) ; diva_os_free (0, pinfo); @@ -335,23 +348,25 @@ * copy download table to board */ outppw_buffer (pinfo->Data, &download_table[0], sizeof(download_table)) ; + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); diva_os_free (0, pinfo); return (FileLength) ; } /******************************************************************************/ static int load_bri_hardware (PISDN_ADAPTER IoAdapter) { dword i ; - byte* addrHi, *addrLo, *ioaddr ; + byte* addrHi, *addrLo, *ioaddr, *p ; dword test ; + byte *Port; if ( IoAdapter->Properties.Card != CARD_MAE ) { return (FALSE) ; } - addrHi = IoAdapter->port \ - + ((IoAdapter->Properties.Bus==BUS_PCI) ? M_PCI_ADDRH : ADDRH); - addrLo = IoAdapter->port + ADDR ; - ioaddr = IoAdapter->port + DATA ; reset_bri_hardware (IoAdapter) ; + Port = DIVA_OS_MEM_ATTACH_PORT(IoAdapter); + addrHi = Port + ((IoAdapter->Properties.Bus==BUS_PCI) ? M_PCI_ADDRH : ADDRH); + addrLo = Port + ADDR ; + ioaddr = Port + DATA ; diva_os_wait (100); /* * recover @@ -366,6 +381,7 @@ IoAdapter->MemorySize - BRI_SHARED_RAM_SIZE)) >> 16)) ; outppw (addrLo, 0) ; for ( i = 0 ; i < 0x8000 ; outppw (ioaddr, 0), ++i ) ; + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); diva_os_wait (100) ; /* * download protocol and dsp files @@ -396,6 +412,11 @@ return (FALSE) ; break ; } + + Port = DIVA_OS_MEM_ATTACH_PORT(IoAdapter); + addrHi = Port + ((IoAdapter->Properties.Bus==BUS_PCI) ? M_PCI_ADDRH : ADDRH); + addrLo = Port + ADDR ; + ioaddr = Port + DATA ; /* * clear signature */ @@ -408,13 +429,20 @@ * copy parameters */ diva_configure_protocol (IoAdapter); + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); /* * start the protocol code */ - outpp (IoAdapter->ctlReg, 0x08) ; + p = DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + outpp (p, 0x08) ; + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p); /* * wait for signature (max. 3 seconds) */ + Port = DIVA_OS_MEM_ATTACH_PORT(IoAdapter); + addrHi = Port + ((IoAdapter->Properties.Bus==BUS_PCI) ? M_PCI_ADDRH : ADDRH); + addrLo = Port + ADDR ; + ioaddr = Port + DATA ; for ( i = 0 ; i < 300 ; ++i ) { diva_os_wait (10) ; @@ -424,11 +452,13 @@ test = (dword)inppw (ioaddr) ; if ( test == 0x4447 ) { + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); DBG_TRC(("Protocol startup time %d.%02d seconds", (i / 100), (i % 100) )) return (TRUE) ; } } + DIVA_OS_MEM_DETACH_PORT(IoAdapter, Port); DBG_FTL(("%s: Adapter selftest failed (0x%04X)!", IoAdapter->Properties.Name, test)) bri_cpu_trapped (IoAdapter) ; @@ -441,12 +471,18 @@ #endif /* } */ /******************************************************************************/ static int bri_ISR (struct _ISDN_ADAPTER* IoAdapter) { - if ( !(inpp (IoAdapter->ctlReg) & 0x01) ) + byte *p; + + p = DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + if ( !(inpp (p) & 0x01) ) { + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p); return (0) ; + } /* clear interrupt line */ - outpp (IoAdapter->ctlReg, 0x08) ; + outpp (p, 0x08) ; + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p); IoAdapter->IrqCount++ ; if ( IoAdapter->Initialized ) { diva_os_schedule_soft_isr (&IoAdapter->isr_soft_isr); @@ -457,11 +493,16 @@ Disable IRQ in the card hardware -------------------------------------------------------------------------- */ static void disable_bri_interrupt (PISDN_ADAPTER IoAdapter) { - if ( IoAdapter->reset ) - { - outpp (IoAdapter->reset, 0x00) ; /* disable interrupts ! */ - } - outpp (IoAdapter->ctlReg, 0x00) ; /* clear int, halt cpu */ + byte *p; + p = DIVA_OS_MEM_ATTACH_RESET(IoAdapter); + if ( p ) + { + outpp (p, 0x00) ; /* disable interrupts ! */ + } + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); + p = DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter); + outpp (p, 0x00) ; /* clear int, halt cpu */ + DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p); } /* ------------------------------------------------------------------------- Fill card entry points diff -Nru a/drivers/isdn/hardware/eicon/s_pri.c b/drivers/isdn/hardware/eicon/s_pri.c --- a/drivers/isdn/hardware/eicon/s_pri.c Mon Sep 22 00:30:25 2003 +++ b/drivers/isdn/hardware/eicon/s_pri.c Mon Sep 22 00:30:25 2003 @@ -54,7 +54,7 @@ /* * check for trapped MIPS 46xx CPU, dump exception frame */ - base = IoAdapter->ram - MP_SHARED_RAM_OFFSET ; + base = DIVA_OS_MEM_ATTACH_ADDRESS(IoAdapter); TrapID = READ_DWORD(&base[0x80]) ; if ( (TrapID == 0x99999999) || (TrapID == 0x99999901) ) { @@ -68,8 +68,10 @@ regs[0] &= IoAdapter->MemorySize - 1 ; if ( (regs[0] < IoAdapter->MemorySize - 1) ) { - if ( !(Xlog = (word *)diva_os_malloc (0, MAX_XLOG_SIZE)) ) + if ( !(Xlog = (word *)diva_os_malloc (0, MAX_XLOG_SIZE)) ) { + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, base); return ; + } size = IoAdapter->MemorySize - regs[0] ; if ( size > MAX_XLOG_SIZE ) size = MAX_XLOG_SIZE ; @@ -81,24 +83,29 @@ diva_os_free (0, Xlog) ; IoAdapter->trapped = 2 ; } + DIVA_OS_MEM_DETACH_ADDRESS(IoAdapter, base); } /* ------------------------------------------------------------------------- Hardware reset of PRI card ------------------------------------------------------------------------- */ static void reset_pri_hardware (PISDN_ADAPTER IoAdapter) { - *IoAdapter->reset = _MP_RISC_RESET | _MP_LED1 | _MP_LED2 ; + byte *p = DIVA_OS_MEM_ATTACH_RESET(IoAdapter); + *p = _MP_RISC_RESET | _MP_LED1 | _MP_LED2 ; diva_os_wait (50) ; - *IoAdapter->reset = 0x00 ; + *p = 0x00 ; diva_os_wait (50) ; + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); } /* ------------------------------------------------------------------------- Stop Card Hardware ------------------------------------------------------------------------- */ static void stop_pri_hardware (PISDN_ADAPTER IoAdapter) { dword i; - dword volatile *cfgReg = (dword volatile *)IoAdapter->cfg ; + byte *p; + dword volatile *cfgReg = (dword volatile *)DIVA_OS_MEM_ATTACH_CFG(IoAdapter); cfgReg[3] = 0x00000000 ; cfgReg[1] = 0x00000000 ; + DIVA_OS_MEM_DETACH_CFG(IoAdapter, cfgReg); IoAdapter->a.ram_out (&IoAdapter->a, &RAM->SWReg, SWREG_HALT_CPU) ; i = 0 ; while ( (i < 100) && (IoAdapter->a.ram_in (&IoAdapter->a, &RAM->SWReg) != 0) ) @@ -107,21 +114,25 @@ i++ ; } DBG_TRC(("%s: PRI stopped (%d)", IoAdapter->Name, i)) + cfgReg = (dword volatile *)DIVA_OS_MEM_ATTACH_CFG(IoAdapter); WRITE_DWORD(&cfgReg[0],((dword)(~0x03E00000))); + DIVA_OS_MEM_DETACH_CFG(IoAdapter, cfgReg); diva_os_wait (1) ; - *IoAdapter->reset = _MP_RISC_RESET | _MP_LED1 | _MP_LED2 ; + p = DIVA_OS_MEM_ATTACH_RESET(IoAdapter); + *p = _MP_RISC_RESET | _MP_LED1 | _MP_LED2 ; + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); } #if !defined(DIVA_USER_MODE_CARD_CONFIG) /* { */ /* ------------------------------------------------------------------------- Load protocol code to the PRI Card ------------------------------------------------------------------------- */ -#define DOWNLOAD_ADDR(IoAdapter) \ - (&IoAdapter->ram[IoAdapter->downloadAddr & (IoAdapter->MemorySize - 1)]) +#define DOWNLOAD_ADDR(IoAdapter) (IoAdapter->downloadAddr & (IoAdapter->MemorySize - 1)) static int pri_protocol_load (PISDN_ADAPTER IoAdapter) { dword FileLength ; dword *File ; dword *sharedRam ; dword Addr ; + byte *p; if (!(File = (dword *)xdiLoadArchive (IoAdapter, &FileLength, 0))) { return (0) ; } @@ -172,14 +183,17 @@ return (0) ; } IoAdapter->downloadAddr = MP_UNCACHED_ADDR (MP_PROTOCOL_OFFSET) ; - sharedRam = (dword *)DOWNLOAD_ADDR(IoAdapter) ; + p = DIVA_OS_MEM_ATTACH_RAM(IoAdapter); + sharedRam = (dword *)(&p[DOWNLOAD_ADDR(IoAdapter)]); memcpy (sharedRam, File, FileLength) ; if ( memcmp (sharedRam, File, FileLength) ) { + DIVA_OS_MEM_DETACH_RAM(IoAdapter, p); DBG_FTL(("%s: Memory test failed!", IoAdapter->Properties.Name)) xdiFreeFile (File); return (0) ; } + DIVA_OS_MEM_DETACH_RAM(IoAdapter, p); xdiFreeFile (File); return (1) ; } @@ -228,8 +242,8 @@ static dword diva_pri_detect_dsps (PISDN_ADAPTER IoAdapter) { - /* byte* base = a->resources.pci.addr[2]; */ - byte* base = IoAdapter->reset - MP_RESET ; + byte* base; + byte* p; dword ret = 0, DspCount = 0 ; dword row_offset[] = { 0x00000000, @@ -242,14 +256,18 @@ byte *dsp_addr_port, *dsp_data_port, row_state; int dsp_row = 0, dsp_index, dsp_num; IoAdapter->InitialDspInfo &= 0xffff ; - /* if (!base || !a->xdi_adapter.reset) */ - if (!base || !IoAdapter->reset) + p = DIVA_OS_MEM_ATTACH_RESET(IoAdapter); + if (!p) { + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); return (0); } - /* *(volatile byte*)(a->xdi_adapter.reset) = _MP_RISC_RESET | _MP_DSP_RESET; */ - *(volatile byte*)(IoAdapter->reset) = _MP_RISC_RESET | _MP_DSP_RESET; + *(volatile byte*)(p) = _MP_RISC_RESET | _MP_DSP_RESET; + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); diva_os_wait (5) ; + + base = DIVA_OS_MEM_ATTACH_CONTROL(IoAdapter); + for (dsp_num = 0; dsp_num < 30; dsp_num++) { dsp_row = dsp_num / 7 + 1; dsp_index = dsp_num % 7; @@ -264,8 +282,10 @@ DspCount++ ; } } - /* *(volatile byte*)(a->xdi_adapter.reset) = _MP_RISC_RESET | _MP_LED1 | _MP_LED2; */ - *(volatile byte*)(IoAdapter->reset) = _MP_RISC_RESET | _MP_LED1 | _MP_LED2; + DIVA_OS_MEM_DETACH_CONTROL(IoAdapter, base); + + p = DIVA_OS_MEM_ATTACH_RESET(IoAdapter); + *(volatile byte*)(p) = _MP_RISC_RESET | _MP_LED1 | _MP_LED2; diva_os_wait (50) ; /* Verify modules @@ -301,7 +321,8 @@ ((ret >> (3*7)) & 0x7F) ? "Y" : "N")) DBG_LOG(("+-----------------------+")) DBG_LOG(("DSP's(present-absent):%08x-%08x", ret, ~ret & 0x3fffffff)) - *(volatile byte*)(IoAdapter->reset) = 0 ; + *(volatile byte*)(p) = 0 ; + DIVA_OS_MEM_DETACH_RESET(IoAdapter, p); diva_os_wait (50) ; IoAdapter->InitialDspInfo |= DspCount << 16 ; return (ret); @@ -312,6 +333,7 @@ static long pri_download_buffer (OsFileHandle *fp, long length, void **addr) { PISDN_ADAPTER IoAdapter = (PISDN_ADAPTER)fp->sysLoadDesc ; dword *sharedRam ; + byte *p; *addr = (void *)IoAdapter->downloadAddr ; if ( ((dword) length) > IoAdapter->DspCodeBaseAddr + IoAdapter->MaxDspCodeSize - IoAdapter->downloadAddr ) @@ -321,11 +343,15 @@ IoAdapter->downloadAddr + length)) return (-1) ; } - sharedRam = (dword *)DOWNLOAD_ADDR(IoAdapter) ; - if ( fp->sysFileRead (fp, sharedRam, length) != length ) + p = DIVA_OS_MEM_ATTACH_RAM(IoAdapter); + sharedRam = (dword *)(&p[DOWNLOAD_ADDR(IoAdapter)]); + if ( fp->sysFileRead (fp, sharedRam, length) != length ) { + DIVA_OS_MEM_DETACH_RAM(IoAdapter, p); return (-1) ; + } IoAdapter->downloadAddr += length ; IoAdapter->downloadAddr = (IoAdapter->downloadAddr + 3) & (~3) ; + DIVA_OS_MEM_DETACH_RAM(IoAdapter, p); return (0) ; } /* ------------------------------------------------------------------------- @@ -338,6 +364,7 @@ word download_count ; dword *sharedRam ; dword FileLength ; + byte *p; if ( !(fp = OsOpenFile (DSP_TELINDUS_FILE)) ) return (0) ; IoAdapter->downloadAddr = (IoAdapter->DspCodeBaseAddr @@ -363,9 +390,11 @@ * store # of separate download files extracted from archive */ IoAdapter->downloadAddr = IoAdapter->DspCodeBaseAddr ; - sharedRam = (dword *)DOWNLOAD_ADDR(IoAdapter) ; + p = DIVA_OS_MEM_ATTACH_RAM(IoAdapter); + sharedRam = (dword *)(&p[DOWNLOAD_ADDR(IoAdapter)]); WRITE_DWORD(&(sharedRam[0]), (dword)download_count); memcpy (&sharedRam[1], &download_table[0], sizeof(download_table)) ; + DIVA_OS_MEM_DETACH_RAM(IoAdapter, p); return (FileLength) ; } /* ------------------------------------------------------------------------- @@ -374,14 +403,17 @@ #define MIN_DSPS 0x30000000 static int load_pri_hardware (PISDN_ADAPTER IoAdapter) { dword i ; - struct mp_load *boot = (struct mp_load *)IoAdapter->ram ; - if ( IoAdapter->Properties.Card != CARD_MAEP ) + struct mp_load *boot = (struct mp_load *)DIVA_OS_MEM_ATTACH_RAM(IoAdapter); + if ( IoAdapter->Properties.Card != CARD_MAEP ) { + DIVA_OS_MEM_DETACH_RAM(IoAdapter, boot); return (0) ; + } boot->err = 0 ; #if 0 IoAdapter->rstFnc (IoAdapter) ; #else if ( MIN_DSPS != (MIN_DSPS & diva_pri_detect_dsps(IoAdapter)) ) { /* makes reset */ + DIVA_OS_MEM_DETACH_RAM(IoAdapter, boot); DBG_FTL(("%s: DSP error!", IoAdapter->Properties.Name)) return (0) ; } @@ -394,28 +426,36 @@ diva_os_wait (10) ; if ( i == boot->live ) { + DIVA_OS_MEM_DETACH_RAM(IoAdapter, boot); DBG_FTL(("%s: CPU is not alive!", IoAdapter->Properties.Name)) return (0) ; } if ( boot->err ) { + DIVA_OS_MEM_DETACH_RAM(IoAdapter, boot); DBG_FTL(("%s: Board Selftest failed!", IoAdapter->Properties.Name)) return (0) ; } /* * download protocol and dsp files */ - if ( !xdiSetProtocol (IoAdapter, IoAdapter->ProtocolSuffix) ) + if ( !xdiSetProtocol (IoAdapter, IoAdapter->ProtocolSuffix) ) { + DIVA_OS_MEM_DETACH_RAM(IoAdapter, boot); return (0) ; - if ( !pri_protocol_load (IoAdapter) ) + } + if ( !pri_protocol_load (IoAdapter) ) { + DIVA_OS_MEM_DETACH_RAM(IoAdapter, boot); return (0) ; - if ( !pri_telindus_load (IoAdapter) ) + } + if ( !pri_telindus_load (IoAdapter) ) { + DIVA_OS_MEM_DETACH_RAM(IoAdapter, boot); return (0) ; + } /* * copy configuration parameters */ IoAdapter->ram += MP_SHARED_RAM_OFFSET ; - memset (IoAdapter->ram, '\0', 256) ; + memset (boot + MP_SHARED_RAM_OFFSET, '\0', 256) ; diva_configure_protocol (IoAdapter); /* * start adapter @@ -430,11 +470,13 @@ diva_os_wait (10) ; if ( (boot->signature >> 16) == 0x4447 ) { + DIVA_OS_MEM_DETACH_RAM(IoAdapter, boot); DBG_TRC(("Protocol startup time %d.%02d seconds", (i / 100), (i % 100) )) return (1) ; } } + DIVA_OS_MEM_DETACH_RAM(IoAdapter, boot); DBG_FTL(("%s: Adapter selftest failed (0x%04X)!", IoAdapter->Properties.Name, boot->signature >> 16)) pri_cpu_trapped (IoAdapter) ; @@ -449,12 +491,16 @@ PRI Adapter interrupt Service Routine -------------------------------------------------------------------------- */ static int pri_ISR (struct _ISDN_ADAPTER* IoAdapter) { - if ( !((READ_DWORD((dword *)IoAdapter->cfg)) & 0x80000000) ) + byte *cfg = DIVA_OS_MEM_ATTACH_CFG(IoAdapter); + if ( !((READ_DWORD((dword *)cfg)) & 0x80000000) ) { + DIVA_OS_MEM_DETACH_CFG(IoAdapter, cfg); return (0) ; + } /* clear interrupt line */ - WRITE_DWORD(((dword *)IoAdapter->cfg), (dword)~0x03E00000) ; + WRITE_DWORD(((dword *)cfg), (dword)~0x03E00000) ; + DIVA_OS_MEM_DETACH_CFG(IoAdapter, cfg); IoAdapter->IrqCount++ ; if ( IoAdapter->Initialized ) { @@ -466,10 +512,11 @@ Disable interrupt in the card hardware ------------------------------------------------------------------------- */ static void disable_pri_interrupt (PISDN_ADAPTER IoAdapter) { - dword volatile *cfgReg = (dword volatile *)IoAdapter->cfg ; + dword volatile *cfgReg = (dword volatile *)DIVA_OS_MEM_ATTACH_CFG(IoAdapter) ; cfgReg[3] = 0x00000000 ; cfgReg[1] = 0x00000000 ; WRITE_DWORD(&cfgReg[0], (dword)(~0x03E00000)) ; + DIVA_OS_MEM_DETACH_CFG(IoAdapter, cfgReg); } /* ------------------------------------------------------------------------- Install entry points for PRI Adapter diff -Nru a/drivers/isdn/hardware/eicon/um_idi.c b/drivers/isdn/hardware/eicon/um_idi.c --- a/drivers/isdn/hardware/eicon/um_idi.c Mon Sep 22 00:30:23 2003 +++ b/drivers/isdn/hardware/eicon/um_idi.c Mon Sep 22 00:30:23 2003 @@ -1,4 +1,4 @@ -/* $Id: um_idi.c,v 1.1.2.2 2001/02/11 14:40:41 armin Exp $ */ +/* $Id: um_idi.c,v 1.9 2003/09/09 06:00:47 schindler Exp $ */ #include "platform.h" #include "di_defs.h" @@ -37,6 +37,11 @@ static int process_idi_ind(divas_um_idi_entity_t * e, byte ind); static int write_return_code(divas_um_idi_entity_t * e, byte rc); +/* + * include queue functions + */ +#include "dlist.c" + /* -------------------------------------------------------------------------- MAIN -------------------------------------------------------------------------- */ @@ -171,7 +176,15 @@ ------------------------------------------------------------------------ */ int diva_um_idi_nr_of_adapters(void) { - return (diva_q_get_nr_of_entries(&adapter_q)); + int i = 0; + const diva_entity_queue_t * q = &adapter_q; + const diva_entity_link_t *diva_current = q->head; + + while (diva_current) { + i++; + diva_current = diva_current->next; + } + return(i); } /* ------------------------------------------------------------------------ diff -Nru a/drivers/isdn/hardware/eicon/xdi_adapter.h b/drivers/isdn/hardware/eicon/xdi_adapter.h --- a/drivers/isdn/hardware/eicon/xdi_adapter.h Mon Sep 22 00:30:22 2003 +++ b/drivers/isdn/hardware/eicon/xdi_adapter.h Mon Sep 22 00:30:22 2003 @@ -1,4 +1,4 @@ -/* $Id: xdi_adapter.h,v 1.1.2.3 2001/02/16 08:40:36 armin Exp $ */ +/* $Id: xdi_adapter.h,v 1.5 2003/06/21 17:06:08 schindler Exp $ */ #ifndef __DIVA_OS_XDI_ADAPTER_H__ #define __DIVA_OS_XDI_ADAPTER_H__ @@ -14,7 +14,8 @@ dword bar[8]; /* contains context of appropriate BAR Register */ void *addr[8]; /* same bar, but mapped into memory */ dword length[8]; /* bar length */ - + int mem_type_id[10]; + unsigned int qoffset; byte irq; } divas_pci_card_resources_t; diff -Nru a/drivers/isdn/hisax/avma1_cs.c b/drivers/isdn/hisax/avma1_cs.c --- a/drivers/isdn/hisax/avma1_cs.c Mon Sep 22 00:30:23 2003 +++ b/drivers/isdn/hisax/avma1_cs.c Mon Sep 22 00:30:23 2003 @@ -438,17 +438,6 @@ DEBUG(0, "avma1cs_release(0x%p)\n", link); - /* - If the device is currently in use, we won't release until it - is actually closed. - */ - if (link->open) { - DEBUG(1, "avma1_cs: release postponed, '%s' still open\n", - link->dev->dev_name); - link->state |= DEV_STALE_CONFIG; - return; - } - /* no unregister function with hisax */ HiSax_closecard(local->node.minor); @@ -463,7 +452,6 @@ if (link->state & DEV_STALE_LINK) avma1cs_detach(link); - } /* avma1cs_release */ /*====================================================================== diff -Nru a/drivers/isdn/hisax/config.c b/drivers/isdn/hisax/config.c --- a/drivers/isdn/hisax/config.c Mon Sep 22 00:30:24 2003 +++ b/drivers/isdn/hisax/config.c Mon Sep 22 00:30:24 2003 @@ -2113,7 +2113,7 @@ #include -static struct pci_device_id hisax_pci_tbl[] __initdata = { +static struct pci_device_id hisax_pci_tbl[] = { #ifdef CONFIG_HISAX_FRITZPCI {PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_A1, PCI_ANY_ID, PCI_ANY_ID}, #endif diff -Nru a/drivers/isdn/hisax/elsa_cs.c b/drivers/isdn/hisax/elsa_cs.c --- a/drivers/isdn/hisax/elsa_cs.c Mon Sep 22 00:30:21 2003 +++ b/drivers/isdn/hisax/elsa_cs.c Mon Sep 22 00:30:21 2003 @@ -442,18 +442,6 @@ DEBUG(0, "elsa_cs_release(0x%p)\n", link); - /* - If the device is currently in use, we won't release until it - is actually closed, because until then, we can't be sure that - no one will try to access the device or its data structures. - */ - if (link->open) { - DEBUG(1, "elsa_cs: release postponed, '%s' " - "still open\n", link->dev->dev_name); - link->state |= DEV_STALE_CONFIG; - return; - } - /* Unlink the device chain */ link->dev = NULL; diff -Nru a/drivers/isdn/hisax/sedlbauer_cs.c b/drivers/isdn/hisax/sedlbauer_cs.c --- a/drivers/isdn/hisax/sedlbauer_cs.c Mon Sep 22 00:30:20 2003 +++ b/drivers/isdn/hisax/sedlbauer_cs.c Mon Sep 22 00:30:20 2003 @@ -535,18 +535,6 @@ { DEBUG(0, "sedlbauer_release(0x%p)\n", link); - /* - If the device is currently in use, we won't release until it - is actually closed, because until then, we can't be sure that - no one will try to access the device or its data structures. - */ - if (link->open) { - DEBUG(1, "sedlbauer_cs: release postponed, '%s' still open\n", - link->dev->dev_name); - link->state |= DEV_STALE_CONFIG; - return; - } - /* Unlink the device chain */ link->dev = NULL; diff -Nru a/drivers/isdn/hysdn/hysdn_init.c b/drivers/isdn/hysdn/hysdn_init.c --- a/drivers/isdn/hysdn/hysdn_init.c Mon Sep 22 00:30:22 2003 +++ b/drivers/isdn/hysdn/hysdn_init.c Mon Sep 22 00:30:22 2003 @@ -21,7 +21,7 @@ #include "hysdn_defs.h" -static struct pci_device_id hysdn_pci_tbl[] __initdata = { +static struct pci_device_id hysdn_pci_tbl[] = { {PCI_VENDOR_ID_HYPERCOPE, PCI_DEVICE_ID_HYPERCOPE_PLX, PCI_ANY_ID, PCI_SUBDEVICE_ID_HYPERCOPE_METRO}, {PCI_VENDOR_ID_HYPERCOPE, PCI_DEVICE_ID_HYPERCOPE_PLX, PCI_ANY_ID, PCI_SUBDEVICE_ID_HYPERCOPE_CHAMP2}, {PCI_VENDOR_ID_HYPERCOPE, PCI_DEVICE_ID_HYPERCOPE_PLX, PCI_ANY_ID, PCI_SUBDEVICE_ID_HYPERCOPE_ERGO}, diff -Nru a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c --- a/drivers/isdn/i4l/isdn_tty.c Mon Sep 22 00:30:23 2003 +++ b/drivers/isdn/i4l/isdn_tty.c Mon Sep 22 00:30:23 2003 @@ -1989,7 +1989,8 @@ memcpy(m->pmsn, m->msn, ISDN_MSNLEN); memcpy(m->plmsn, m->lmsn, ISDN_LMSNLEN); if ((get_isdn_dev())->profd) - kill_pg_info(SIGIO, SEND_SIG_PRIV, (get_isdn_dev())->profd->pgrp); + kill_pg_info(SIGIO, SEND_SIG_PRIV, + process_group((get_isdn_dev())->profd)); } static struct tty_operations modem_ops = { diff -Nru a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c --- a/drivers/macintosh/adb.c Mon Sep 22 00:30:25 2003 +++ b/drivers/macintosh/adb.c Mon Sep 22 00:30:25 2003 @@ -266,8 +266,7 @@ static void __adb_probe_task(void *data) { - adb_probe_task_pid = kernel_thread(adb_probe_task, NULL, - SIGCHLD | CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + adb_probe_task_pid = kernel_thread(adb_probe_task, NULL, SIGCHLD | CLONE_KERNEL); } static DECLARE_WORK(adb_reset_work, __adb_probe_task, NULL); diff -Nru a/drivers/macintosh/mediabay.c b/drivers/macintosh/mediabay.c --- a/drivers/macintosh/mediabay.c Mon Sep 22 00:30:19 2003 +++ b/drivers/macintosh/mediabay.c Mon Sep 22 00:30:19 2003 @@ -694,8 +694,7 @@ /* Startup kernel thread */ if (i == 0) - kernel_thread(media_bay_task, NULL, - CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + kernel_thread(media_bay_task, NULL, CLONE_KERNEL); return 0; diff -Nru a/drivers/mtd/maps/sa1100-flash.c b/drivers/mtd/maps/sa1100-flash.c --- a/drivers/mtd/maps/sa1100-flash.c Mon Sep 22 00:30:20 2003 +++ b/drivers/mtd/maps/sa1100-flash.c Mon Sep 22 00:30:20 2003 @@ -654,28 +654,21 @@ }, { .name = "SIMpad kernel", .size = 0x00100000, - .offset = 0x00080000, - }, { -#ifdef CONFIG_JFFS2_FS - .name = "SIMpad root jffs2", - .size = MTDPART_SIZ_FULL, - .offset = 0x00180000, -#else - .name = "SIMpad initrd", - .size = 0x00300000, - .offset = 0x00180000, + .offset = MTDPART_OFS_APPEND, }, { +#ifdef CONFIG_ROOT_CRAMFS .name = "SIMpad root cramfs", - .size = 0x00300000, - .offset = 0x00480000, - }, { - .name = "SIMpad usr cramfs", - .size = 0x005c0000, - .offset = 0x00780000, + .size =0x00D80000, + .offset = MTDPART_OFS_APPEND + }, { - .name = "SIMpad usr local", + .name = "SIMpad local jffs2", + .size = MTDPART_SIZ_FULL, + .offset = MTDPART_OFS_APPEND +#else + .name = "SIMpad root jffs2", .size = MTDPART_SIZ_FULL, - .offset = 0x00d40000, + .offset = MTDPART_OFS_APPEND #endif } }; @@ -1244,8 +1237,10 @@ } if (machine_is_simpad()) { info[0].base = SA1100_CS0_PHYS; - info[0].size = SZ_32M; - nr = 1; + info[0].size = SZ_16M; + info[1].base = SA1100_CS1_PHYS; + info[1].size = SZ_16M; + nr = 2; } if (machine_is_stork()) { info[0].base = SA1100_CS0_PHYS; diff -Nru a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c --- a/drivers/mtd/mtd_blkdevs.c Mon Sep 22 00:30:18 2003 +++ b/drivers/mtd/mtd_blkdevs.c Mon Sep 22 00:30:18 2003 @@ -397,8 +397,7 @@ tr->blkcore_priv->rq->queuedata = tr; - ret = kernel_thread(mtd_blktrans_thread, tr, - CLONE_FS|CLONE_FILES|CLONE_SIGHAND); + ret = kernel_thread(mtd_blktrans_thread, tr, CLONE_KERNEL); if (ret < 0) { blk_cleanup_queue(tr->blkcore_priv->rq); unregister_blkdev(tr->major, tr->name); diff -Nru a/drivers/net/3c501.c b/drivers/net/3c501.c --- a/drivers/net/3c501.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/3c501.c Mon Sep 22 00:30:18 2003 @@ -123,6 +123,7 @@ #include /* for CONFIG_IP_MULTICAST */ #include #include +#include #include #include @@ -241,7 +242,7 @@ if (dev->irq < 2) { - unsigned long irq_mask, delay; + unsigned long irq_mask; irq_mask = probe_irq_on(); inb(RX_STATUS); /* Clear pending interrupts. */ @@ -250,8 +251,7 @@ outb(0x00, AX_CMD); - delay = jiffies + HZ/50; - while (time_before(jiffies, delay)) ; + mdelay(20); autoirq = probe_irq_off(irq_mask); if (autoirq == 0) diff -Nru a/drivers/net/3c505.c b/drivers/net/3c505.c --- a/drivers/net/3c505.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/3c505.c Mon Sep 22 00:30:25 2003 @@ -298,17 +298,13 @@ set_hsf(dev, HSF_PCB_NAK); } outb_control(adapter->hcr_val | ATTN | DIR, dev); - timeout = jiffies + 1*HZ/100; - while (time_before_eq(jiffies, timeout)); + mdelay(10); outb_control(adapter->hcr_val & ~ATTN, dev); - timeout = jiffies + 1*HZ/100; - while (time_before_eq(jiffies, timeout)); + mdelay(10); outb_control(adapter->hcr_val | FLSH, dev); - timeout = jiffies + 1*HZ/100; - while (time_before_eq(jiffies, timeout)); + mdelay(10); outb_control(adapter->hcr_val & ~FLSH, dev); - timeout = jiffies + 1*HZ/100; - while (time_before_eq(jiffies, timeout)); + mdelay(10); outb_control(orig_hcr, dev); if (!start_receive(dev, &adapter->tx_pcb)) diff -Nru a/drivers/net/3c515.c b/drivers/net/3c515.c --- a/drivers/net/3c515.c Mon Sep 22 00:30:19 2003 +++ b/drivers/net/3c515.c Mon Sep 22 00:30:19 2003 @@ -59,7 +59,6 @@ #include #include -#include #include #include #include diff -Nru a/drivers/net/Space.c b/drivers/net/Space.c --- a/drivers/net/Space.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/Space.c Mon Sep 22 00:30:18 2003 @@ -58,7 +58,6 @@ extern int at1700_probe(struct net_device *); extern int fmv18x_probe(struct net_device *); extern int eth16i_probe(struct net_device *); -extern int depca_probe(struct net_device *); extern int i82596_probe(struct net_device *); extern int ewrk3_probe(struct net_device *); extern int el1_probe(struct net_device *); @@ -97,7 +96,6 @@ extern int mac8390_probe(struct net_device *dev); extern int mac89x0_probe(struct net_device *dev); extern int mc32_probe(struct net_device *dev); -extern struct net_device *sdla_init(void); extern struct net_device *cops_probe(int unit); extern struct net_device *ltpc_probe(void); @@ -253,9 +251,6 @@ #ifdef CONFIG_EEXPRESS_PRO /* Intel EtherExpress Pro/10 */ {eepro_probe, 0}, #endif -#ifdef CONFIG_DEPCA /* DEC DEPCA */ - {depca_probe, 0}, -#endif #ifdef CONFIG_EWRK3 /* DEC EtherWORKS 3 */ {ewrk3_probe, 0}, #endif @@ -470,10 +465,6 @@ #ifdef CONFIG_LTPC ltpc_probe(); #endif -#ifdef CONFIG_SDLA - sdla_init(); -#endif - } /* diff -Nru a/drivers/net/ac3200.c b/drivers/net/ac3200.c --- a/drivers/net/ac3200.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/ac3200.c Mon Sep 22 00:30:23 2003 @@ -25,6 +25,7 @@ "ac3200.c:v1.01 7/1/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)\n"; #include +#include #include #include #include diff -Nru a/drivers/net/acenic.c b/drivers/net/acenic.c --- a/drivers/net/acenic.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/acenic.c Mon Sep 22 00:30:21 2003 @@ -1757,7 +1757,8 @@ * Wait for the firmware to spin up - max 3 seconds. */ myjif = jiffies + 3 * HZ; - while (time_before(jiffies, myjif) && !ap->fw_running); + while (time_before(jiffies, myjif) && !ap->fw_running) + cpu_relax(); if (!ap->fw_running) { printk(KERN_ERR "%s: Firmware NOT running!\n", dev->name); diff -Nru a/drivers/net/arm/ether00.c b/drivers/net/arm/ether00.c --- a/drivers/net/arm/ether00.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/arm/ether00.c Mon Sep 22 00:30:25 2003 @@ -19,7 +19,7 @@ */ /* includes */ - +#include #include #include #include diff -Nru a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c --- a/drivers/net/bonding/bond_3ad.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/bonding/bond_3ad.c Mon Sep 22 00:30:23 2003 @@ -37,6 +37,16 @@ * 2003/05/01 - Shmulik Hen * - Renamed bond_3ad_link_status_changed() to * bond_3ad_handle_link_change() for compatibility with TLB. + * + * 2003/05/20 - Amir Noam + * - Fix long fail over time when releasing last slave of an active + * aggregator - send LACPDU on unbind of slave to tell partner this + * port is no longer aggregatable. + * + * 2003/06/25 - Tsippy Mendelson + * - Send LACPDU as highest priority packet to further fix the above + * problem on very high Tx traffic load where packets may get dropped + * by the slave. */ #include @@ -45,6 +55,7 @@ #include #include #include +#include #include "bonding.h" #include "bond_3ad.h" @@ -905,6 +916,7 @@ skb->mac.raw = skb->data; skb->nh.raw = skb->data + ETH_HLEN; skb->protocol = PKT_TYPE_LACPDU; + skb->priority = TC_PRIO_CONTROL; lacpdu_header = (struct lacpdu_header *)skb_put(skb, length); diff -Nru a/drivers/net/bonding/bond_3ad.h b/drivers/net/bonding/bond_3ad.h --- a/drivers/net/bonding/bond_3ad.h Mon Sep 22 00:30:25 2003 +++ b/drivers/net/bonding/bond_3ad.h Mon Sep 22 00:30:25 2003 @@ -165,7 +165,7 @@ // = 0x02 (marker response information) u8 marker_length; // = 0x16 u16 requester_port; // The number assigned to the port by the requester - struct mac_addr requester_system; // The requester’s system id + struct mac_addr requester_system; // The requester's system id u32 requester_transaction_id; // The transaction id allocated by the requester, u16 pad; // = 0 u8 tlv_type_terminator; // = 0x00 diff -Nru a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c --- a/drivers/net/bonding/bond_alb.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/bonding/bond_alb.c Mon Sep 22 00:30:23 2003 @@ -17,10 +17,22 @@ * * The full GNU General Public License is included in this distribution in the * file called LICENSE. + * + * + * Changes: + * + * 2003/06/25 - Shmulik Hen + * - Fixed signed/unsigned calculation errors that caused load sharing + * to collapse to one slave under very heavy UDP Tx stress. + * + * 2003/08/06 - Amir Noam + * - Add support for setting bond's MAC address with special + * handling required for ALB/TLB. */ #include #include +#include #include #include #include @@ -246,7 +258,7 @@ { struct slave *slave; struct slave *least_loaded; - u32 curr_gap, max_gap; + s64 curr_gap, max_gap; /* Find the first enabled slave */ slave = bond_get_first_slave(bond); @@ -262,15 +274,15 @@ } least_loaded = slave; - max_gap = (slave->speed * 1000000) - - (SLAVE_TLB_INFO(slave).load * 8); + max_gap = (s64)(slave->speed * 1000000) - + (s64)(SLAVE_TLB_INFO(slave).load * 8); /* Find the slave with the largest gap */ slave = bond_get_next_slave(bond, slave); while (slave) { if (SLAVE_IS_OK(slave)) { - curr_gap = (slave->speed * 1000000) - - (SLAVE_TLB_INFO(slave).load * 8); + curr_gap = (s64)(slave->speed * 1000000) - + (s64)(SLAVE_TLB_INFO(slave).load * 8); if (max_gap < curr_gap) { least_loaded = slave; max_gap = curr_gap; @@ -936,10 +948,11 @@ } /* hw is a boolean parameter that determines whether we should try and - * set the hw address of the hw as well as the hw address of the net_device + * set the hw address of the device as well as the hw address of the + * net_device */ static int -alb_set_mac_addr(struct slave *slave, u8 addr[], int hw) +alb_set_slave_mac_addr(struct slave *slave, u8 addr[], int hw) { struct net_device *dev = NULL; struct sockaddr s_addr; @@ -947,16 +960,16 @@ dev = slave->dev; if (!hw) { - memcpy(dev->dev_addr, addr, ETH_ALEN); + memcpy(dev->dev_addr, addr, dev->addr_len); return 0; } /* for rlb each slave must have a unique hw mac addresses so that */ /* each slave will receive packets destined to a different mac */ - memcpy(s_addr.sa_data, addr, ETH_ALEN); + memcpy(s_addr.sa_data, addr, dev->addr_len); s_addr.sa_family = dev->type; if (dev->set_mac_address(dev, &s_addr)) { - printk(KERN_DEBUG "bonding: Error: alb_set_mac_addr:" + printk(KERN_DEBUG "bonding: Error: alb_set_slave_mac_addr:" " dev->set_mac_address of dev %s failed!" " ALB mode requires that the base driver" " support setting the hw address also when" @@ -980,8 +993,8 @@ slaves_state_differ = (SLAVE_IS_OK(slave1) != SLAVE_IS_OK(slave2)); memcpy(tmp_mac_addr, slave1->dev->dev_addr, ETH_ALEN); - alb_set_mac_addr(slave1, slave2->dev->dev_addr, bond->alb_info.rlb_enabled); - alb_set_mac_addr(slave2, tmp_mac_addr, bond->alb_info.rlb_enabled); + alb_set_slave_mac_addr(slave1, slave2->dev->dev_addr, bond->alb_info.rlb_enabled); + alb_set_slave_mac_addr(slave2, tmp_mac_addr, bond->alb_info.rlb_enabled); /* fasten the change in the switch */ if (SLAVE_IS_OK(slave1)) { @@ -1146,8 +1159,8 @@ } if (tmp_slave1) { - alb_set_mac_addr(slave, tmp_slave1->perm_hwaddr, - bond->alb_info.rlb_enabled); + alb_set_slave_mac_addr(slave, tmp_slave1->perm_hwaddr, + bond->alb_info.rlb_enabled); printk(KERN_WARNING "bonding: Warning: the hw address " "of slave %s is in use by the bond; " @@ -1165,6 +1178,67 @@ return 0; } +/** + * alb_set_mac_address + * @bond: + * @addr: + * + * In TLB mode all slaves are configured to the bond's hw address, but set + * their dev_addr field to different addresses (based on their permanent hw + * addresses). + * + * For each slave, this function sets the interface to the new address and then + * changes its dev_addr field to its previous value. + * + * Unwinding assumes bond's mac address has not yet changed. + */ +static inline int +alb_set_mac_address(struct bonding *bond, void *addr) +{ + struct sockaddr sa; + struct slave *slave; + char tmp_addr[ETH_ALEN]; + int error; + + if (bond->alb_info.rlb_enabled) { + return 0; + } + + slave = bond_get_first_slave(bond); + for (; slave; slave = bond_get_next_slave(bond, slave)) { + if (slave->dev->set_mac_address == NULL) { + error = -EOPNOTSUPP; + goto unwind; + } + + /* save net_device's current hw address */ + memcpy(tmp_addr, slave->dev->dev_addr, ETH_ALEN); + + error = slave->dev->set_mac_address(slave->dev, addr); + + /* restore net_device's hw address */ + memcpy(slave->dev->dev_addr, tmp_addr, ETH_ALEN); + + if (error) { + goto unwind; + } + } + + return 0; + +unwind: + memcpy(sa.sa_data, bond->device->dev_addr, bond->device->addr_len); + sa.sa_family = bond->device->type; + slave = bond_get_first_slave(bond); + for (; slave; slave = bond_get_next_slave(bond, slave)) { + memcpy(tmp_addr, slave->dev->dev_addr, ETH_ALEN); + slave->dev->set_mac_address(slave->dev, &sa); + memcpy(slave->dev->dev_addr, tmp_addr, ETH_ALEN); + } + + return error; +} + /************************ exported alb funcions ************************/ int @@ -1255,16 +1329,15 @@ hash_size = 16; break; -#ifdef FIXME case ETH_P_IPX: - if (skb->nh.ipxh->ipx_checksum != + if (ipx_hdr(skb)->ipx_checksum != __constant_htons(IPX_NO_CHECKSUM)) { /* something is wrong with this packet */ do_tx_balance = 0; break; } - if (skb->nh.ipxh->ipx_type != + if (ipx_hdr(skb)->ipx_type != __constant_htons(IPX_TYPE_NCP)) { /* The only protocol worth balancing in * this family since it has an "ARP" like @@ -1277,7 +1350,6 @@ hash_start = (char*)eth_data->h_dest; hash_size = ETH_ALEN; break; -#endif case ETH_P_ARP: do_tx_balance = 0; @@ -1437,8 +1509,8 @@ { int err = 0; - err = alb_set_mac_addr(slave, slave->perm_hwaddr, - bond->alb_info.rlb_enabled); + err = alb_set_slave_mac_addr(slave, slave->perm_hwaddr, + bond->alb_info.rlb_enabled); if (err) { return err; } @@ -1562,10 +1634,61 @@ alb_swap_mac_addr(bond, swap_slave, new_slave); } else { /* set the new_slave to the bond mac address */ - alb_set_mac_addr(new_slave, bond->device->dev_addr, - bond->alb_info.rlb_enabled); + alb_set_slave_mac_addr(new_slave, bond->device->dev_addr, + bond->alb_info.rlb_enabled); /* fasten bond mac on new current slave */ alb_send_learning_packets(new_slave, bond->device->dev_addr); } +} + +int +bond_alb_set_mac_address(struct net_device *dev, void *addr) +{ + struct bonding *bond = dev->priv; + struct sockaddr *sa = addr; + struct slave *swap_slave = NULL; + int error = 0; + + if (!is_valid_ether_addr(sa->sa_data)) { + return -EADDRNOTAVAIL; + } + + error = alb_set_mac_address(bond, addr); + if (error) { + return error; + } + + memcpy(dev->dev_addr, sa->sa_data, dev->addr_len); + + /* If there is no current_slave there is nothing else to do. + * Otherwise we'll need to pass the new address to it and handle + * duplications. + */ + if (bond->current_slave == NULL) { + return 0; + } + + swap_slave = bond_get_first_slave(bond); + while (swap_slave) { + if (!memcmp(swap_slave->dev->dev_addr, dev->dev_addr, ETH_ALEN)) { + break; + } + swap_slave = bond_get_next_slave(bond, swap_slave); + } + + if (swap_slave) { + alb_swap_mac_addr(bond, swap_slave, bond->current_slave); + } else { + alb_set_slave_mac_addr(bond->current_slave, dev->dev_addr, + bond->alb_info.rlb_enabled); + + alb_send_learning_packets(bond->current_slave, dev->dev_addr); + if (bond->alb_info.rlb_enabled) { + /* inform clients mac address has changed */ + rlb_req_update_slave_clients(bond, bond->current_slave); + } + } + + return 0; } diff -Nru a/drivers/net/bonding/bond_alb.h b/drivers/net/bonding/bond_alb.h --- a/drivers/net/bonding/bond_alb.h Mon Sep 22 00:30:19 2003 +++ b/drivers/net/bonding/bond_alb.h Mon Sep 22 00:30:19 2003 @@ -17,6 +17,13 @@ * * The full GNU General Public License is included in this distribution in the * file called LICENSE. + * + * + * Changes: + * + * 2003/08/06 - Amir Noam + * - Add support for setting bond's MAC address with special + * handling required for ALB/TLB. */ #ifndef __BOND_ALB_H__ @@ -122,6 +129,7 @@ void bond_alb_assign_current_slave(struct bonding *bond, struct slave *new_slave); int bond_alb_xmit(struct sk_buff *skb, struct net_device *dev); void bond_alb_monitor(struct bonding *bond); +int bond_alb_set_mac_address(struct net_device *dev, void *addr); #endif /* __BOND_ALB_H__ */ diff -Nru a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c --- a/drivers/net/bonding/bond_main.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/bonding/bond_main.c Mon Sep 22 00:30:24 2003 @@ -278,7 +278,7 @@ * bonding round-robin mode ignoring links after failover/recovery * * 2003/03/17 - Jay Vosburgh - * - kmalloc fix (GPF_KERNEL to GPF_ATOMIC) reported by + * - kmalloc fix (GFP_KERNEL to GFP_ATOMIC) reported by * Shmulik dot Hen at intel.com. * - Based on discussion on mailing list, changed use of * update_slave_cnt(), created wrapper functions for adding/removing @@ -323,22 +323,22 @@ * 2003/03/18 - Amir Noam , * Tsippy Mendelson and * Shmulik Hen - * - Added support for IEEE 802.3ad Dynamic link aggregation mode. + * - Added support for IEEE 802.3ad Dynamic link aggregation mode. * * 2003/05/01 - Amir Noam - * - Added ABI version control to restore compatibility between - * new/old ifenslave and new/old bonding. + * - Added ABI version control to restore compatibility between + * new/old ifenslave and new/old bonding. * * 2003/05/01 - Shmulik Hen - * - Fixed bug in bond_release_all(): save old value of current_slave - * before setting it to NULL. - * - Changed driver versioning scheme to include version number instead - * of release date (that is already in another field). There are 3 - * fields X.Y.Z where: - * X - Major version - big behavior changes - * Y - Minor version - addition of features - * Z - Extra version - minor changes and bug fixes - * The current version is 1.0.0 as a base line. + * - Fixed bug in bond_release_all(): save old value of current_slave + * before setting it to NULL. + * - Changed driver versioning scheme to include version number instead + * of release date (that is already in another field). There are 3 + * fields X.Y.Z where: + * X - Major version - big behavior changes + * Y - Minor version - addition of features + * Z - Extra version - minor changes and bug fixes + * The current version is 1.0.0 as a base line. * * 2003/05/01 - Tsippy Mendelson and * Amir Noam @@ -371,6 +371,61 @@ * - Added support for Adaptive load balancing mode which is * equivalent to Transmit load balancing + Receive load balancing. * new version - 2.2.0 + * + * 2003/05/15 - Jay Vosburgh + * - Applied fix to activebackup_arp_monitor posted to bonding-devel + * by Tony Cureington . Fixes ARP + * monitor endless failover bug. Version to 2.2.10 + * + * 2003/05/20 - Amir Noam + * - Fixed bug in ABI version control - Don't commit to a specific + * ABI version if receiving unsupported ioctl commands. + * + * 2003/05/22 - Jay Vosburgh + * - Fix ifenslave -c causing bond to loose existing routes; + * added bond_set_mac_address() that doesn't require the + * bond to be down. + * - In conjunction with fix for ifenslave -c, in + * bond_change_active(), changing to the already active slave + * is no longer an error (it successfully does nothing). + * + * 2003/06/30 - Amir Noam + * - Fixed bond_change_active() for ALB/TLB modes. + * Version to 2.2.14. + * + * 2003/07/29 - Amir Noam + * - Fixed ARP monitoring bug. + * Version to 2.2.15. + * + * 2003/07/31 - Willy Tarreau + * - Fixed kernel panic when using ARP monitoring without + * setting bond's IP address. + * Version to 2.2.16. + * + * 2003/08/06 - Amir Noam + * - Back port from 2.6: use alloc_netdev(); fix /proc handling; + * made stats a part of bond struct so no need to allocate + * and free it separately; use standard list operations instead + * of pre-allocated array of bonds. + * Version to 2.3.0. + * + * 2003/08/07 - Jay Vosburgh , + * Amir Noam and + * Shmulik Hen + * - Propagating master's settings: Distinguish between modes that + * use a primary slave from those that don't, and propagate settings + * accordingly; Consolidate change_active opeartions and add + * reselect_active and find_best opeartions; Decouple promiscuous + * handling from the multicast mode setting; Add support for changing + * HW address and MTU with proper unwind; Consolidate procfs code, + * add CHANGENAME handler; Enhance netdev notification handling. + * Version to 2.4.0. + * + * 2003/09/15 - Stephen Hemminger , + * Amir Noam + * - Convert /proc to seq_file interface. + * Change /proc/net/bondX/info to /proc/net/bonding/bondX. + * Set version to 2.4.1. */ #include @@ -404,6 +459,8 @@ #include #include #include +#include +#include #include #include @@ -415,10 +472,10 @@ #include "bond_3ad.h" #include "bond_alb.h" -#define DRV_VERSION "2.2.0" -#define DRV_RELDATE "April 15, 2003" -#define DRV_NAME "bonding" -#define DRV_DESCRIPTION "Ethernet Channel Bonding Driver" +#define DRV_VERSION "2.4.1" +#define DRV_RELDATE "September 15, 2003" +#define DRV_NAME "bonding" +#define DRV_DESCRIPTION "Ethernet Channel Bonding Driver" static const char *version = DRV_NAME ".c:v" DRV_VERSION " (" DRV_RELDATE ")\n"; @@ -436,6 +493,11 @@ #define MAX_ARP_IP_TARGETS 16 #endif +#define USES_PRIMARY(mode) \ + (((mode) == BOND_MODE_ACTIVEBACKUP) || \ + ((mode) == BOND_MODE_TLB) || \ + ((mode) == BOND_MODE_ALB)) + struct bond_parm_tbl { char *modename; int mode; @@ -443,7 +505,7 @@ static int arp_interval = BOND_LINK_ARP_INTERV; static char *arp_ip_target[MAX_ARP_IP_TARGETS] = { NULL, }; -static unsigned long arp_target[MAX_ARP_IP_TARGETS] = { 0, } ; +static u32 arp_target[MAX_ARP_IP_TARGETS] = { 0, } ; static int arp_ip_count = 0; static u32 my_ip = 0; char *arp_target_hw_addr = NULL; @@ -474,8 +536,8 @@ { "balance-xor", BOND_MODE_XOR}, { "broadcast", BOND_MODE_BROADCAST}, { "802.3ad", BOND_MODE_8023AD}, -{ "tlb", BOND_MODE_TLB}, -{ "alb", BOND_MODE_ALB}, +{ "balance-tlb", BOND_MODE_TLB}, +{ "balance-alb", BOND_MODE_ALB}, { NULL, -1}, }; @@ -499,13 +561,16 @@ }; static LIST_HEAD(bond_dev_list); +#ifdef CONFIG_PROC_FS +static struct proc_dir_entry *bond_proc_dir = NULL; +#endif MODULE_PARM(max_bonds, "i"); MODULE_PARM_DESC(max_bonds, "Max number of bonded devices"); MODULE_PARM(miimon, "i"); MODULE_PARM_DESC(miimon, "Link check interval in milliseconds"); MODULE_PARM(use_carrier, "i"); -MODULE_PARM_DESC(use_carrier, "Use netif_carrier_ok (vs MII ioctls) in miimon; 09 for off, 1 for on (default)"); +MODULE_PARM_DESC(use_carrier, "Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default)"); MODULE_PARM(mode, "s"); MODULE_PARM_DESC(mode, "Mode of operation : 0 for round robin, 1 for active-backup, 2 for xor"); MODULE_PARM(arp_interval, "i"); @@ -530,7 +595,6 @@ static void bond_mii_monitor(struct net_device *dev); static void loadbalance_arp_monitor(struct net_device *dev); static void activebackup_arp_monitor(struct net_device *dev); -static int bond_event(struct notifier_block *this, unsigned long event, void *ptr); static void bond_mc_list_destroy(struct bonding *bond); static void bond_mc_add(bonding_t *bond, void *addr, int alen); static void bond_mc_delete(bonding_t *bond, void *addr, int alen); @@ -544,30 +608,17 @@ static int bond_release(struct net_device *master, struct net_device *slave); static int bond_release_all(struct net_device *master); static int bond_sethwaddr(struct net_device *master, struct net_device *slave); +static void change_active_interface(struct bonding *bond, struct slave *new); +static void reselect_active_interface(struct bonding *bond); +static struct slave *find_best_interface(struct bonding *bond); -/* - * bond_get_info is the interface into the /proc filesystem. This is - * a different interface than the BOND_INFO_QUERY ioctl. That is done - * through the generic networking ioctl interface, and bond_info_query - * is the internal function which provides that information. - */ -static int bond_get_info(char *buf, char **start, off_t offset, int length); - -/* Caller must hold bond->ptrlock for write */ -static inline struct slave* -bond_assign_current_slave(struct bonding *bond,struct slave *newslave) -{ - if ((bond_mode == BOND_MODE_TLB) || - (bond_mode == BOND_MODE_ALB)) { - bond_alb_assign_current_slave(bond, newslave); - } else { - bond->current_slave = newslave; - } - - return bond->current_slave; -} /* #define BONDING_DEBUG 1 */ +#ifdef BONDING_DEBUG +#define dprintk(x...) printk(x...) +#else /* BONDING_DEBUG */ +#define dprintk(x...) do {} while (0) +#endif /* BONDING_DEBUG */ /* several macros */ @@ -662,7 +713,7 @@ * belongs to . It returns in case it's needed. * Nothing is freed on return, structures are just unchained. * If the bond->current_slave pointer was pointing to , - * it's replaced with bond->next, or NULL if not applicable. + * it should be changed by the calling function. * * bond->lock held for writing by caller. */ @@ -696,17 +747,6 @@ update_slave_cnt(bond, -1); - /* no need to hold ptrlock since bond lock is - * already held for writing - */ - if (slave == bond->current_slave) { - if ( bond->next != (slave_t *)bond) { /* found one slave */ - bond_assign_current_slave(bond, bond->next); - } else { - bond_assign_current_slave(bond, NULL); - } - } - return slave; } @@ -1138,23 +1178,22 @@ } /* - * Push the promiscuity flag down to all slaves + * Push the promiscuity flag down to appropriate slaves */ static void bond_set_promiscuity(bonding_t *bond, int inc) { slave_t *slave; - switch (multicast_mode) { - case BOND_MULTICAST_ACTIVE : - /* write lock already acquired */ - if (bond->current_slave != NULL) + + if (USES_PRIMARY(bond_mode)) { + if (bond->current_slave) { dev_set_promiscuity(bond->current_slave->dev, inc); - break; - case BOND_MULTICAST_ALL : - for (slave = bond->prev; slave != (slave_t*)bond; slave = slave->prev) + } + + } else { + for (slave = bond->prev; slave != (slave_t*)bond; + slave = slave->prev) { dev_set_promiscuity(slave->dev, inc); - break; - case BOND_MULTICAST_DISABLED : - break; + } } } @@ -1200,20 +1239,23 @@ bonding_t *bond = master->priv; struct dev_mc_list *dmi; - if (multicast_mode == BOND_MULTICAST_DISABLED) - return; - /* - * Lock the private data for the master - */ write_lock_bh(&bond->lock); - /* set promiscuity flag to slaves */ + /* + * Do promisc before checking multicast_mode + */ if ( (master->flags & IFF_PROMISC) && !(bond->flags & IFF_PROMISC) ) bond_set_promiscuity(bond, 1); if ( !(master->flags & IFF_PROMISC) && (bond->flags & IFF_PROMISC) ) bond_set_promiscuity(bond, -1); + if (multicast_mode == BOND_MULTICAST_DISABLED) { + bond->flags = master->flags; + write_unlock_bh(&bond->lock); + return; + } + /* set allmulti flag to slaves */ if ( (master->flags & IFF_ALLMULTI) && !(bond->flags & IFF_ALLMULTI) ) bond_set_allmulti(bond, 1); @@ -1245,32 +1287,40 @@ /* * Update the mc list and multicast-related flags for the new and - * old active slaves (if any) according to the multicast mode + * old active slaves (if any) according to the multicast mode, and + * promiscuous flags unconditionally. */ static void bond_mc_update(bonding_t *bond, slave_t *new, slave_t *old) { struct dev_mc_list *dmi; - switch(multicast_mode) { - case BOND_MULTICAST_ACTIVE : + if (USES_PRIMARY(bond_mode)) { if (bond->device->flags & IFF_PROMISC) { - if (old != NULL && new != old) + if (old) dev_set_promiscuity(old->dev, -1); - dev_set_promiscuity(new->dev, 1); + if (new) + dev_set_promiscuity(new->dev, 1); } + } + + switch(multicast_mode) { + case BOND_MULTICAST_ACTIVE : if (bond->device->flags & IFF_ALLMULTI) { - if (old != NULL && new != old) + if (old) dev_set_allmulti(old->dev, -1); - dev_set_allmulti(new->dev, 1); + if (new) + dev_set_allmulti(new->dev, 1); } /* first remove all mc addresses from old slave if any, and _then_ add them to new active slave */ - if (old != NULL && new != old) { + if (old) { for (dmi = bond->device->mc_list; dmi != NULL; dmi = dmi->next) dev_mc_delete(old->dev, dmi->dmi_addr, dmi->dmi_addrlen, 0); } - for (dmi = bond->device->mc_list; dmi != NULL; dmi = dmi->next) - dev_mc_add(new->dev, dmi->dmi_addr, dmi->dmi_addrlen, 0); + if (new) { + for (dmi = bond->device->mc_list; dmi != NULL; dmi = dmi->next) + dev_mc_add(new->dev, dmi->dmi_addr, dmi->dmi_addrlen, 0); + } break; case BOND_MULTICAST_ALL : /* nothing to do: mc list is already up-to-date on all slaves */ @@ -1386,7 +1436,7 @@ * The application already set the master's * mac address to that of the first slave */ - memcpy(addr.sa_data, master_dev->dev_addr, ETH_ALEN); + memcpy(addr.sa_data, master_dev->dev_addr, master_dev->addr_len); addr.sa_family = slave_dev->type; err = slave_dev->set_mac_address(slave_dev, &addr); if (err) { @@ -1432,11 +1482,19 @@ } } - if (multicast_mode == BOND_MULTICAST_ALL) { - /* set promiscuity level to new slave */ - if (master_dev->flags & IFF_PROMISC) + /* set promiscuity level to new slave */ + if (master_dev->flags & IFF_PROMISC) { + /* If the mode USES_PRIMARY, then the new slave gets the + * master's promisc (and mc) settings only if it becomes the + * current_slave, and that is taken care of later when calling + * bond_change_active() + */ + if (!USES_PRIMARY(bond_mode)) { dev_set_promiscuity(slave_dev, 1); + } + } + if (multicast_mode == BOND_MULTICAST_ALL) { /* set allmulti level to new slave */ if (master_dev->flags & IFF_ALLMULTI) dev_set_allmulti(slave_dev, 1); @@ -1549,9 +1607,7 @@ #endif /* first slave or no active slave yet, and this link is OK, so make this interface the active one */ - bond_assign_current_slave(bond, new_slave); - bond_set_slave_active_flags(new_slave); - bond_mc_update(bond, new_slave, NULL); + change_active_interface(bond, new_slave); } else { #ifdef BONDING_DEBUG @@ -1559,11 +1615,14 @@ #endif bond_set_slave_inactive_flags(new_slave); } - read_lock_irqsave(&(((struct in_device *)slave_dev->ip_ptr)->lock), rflags); - ifap= &(((struct in_device *)slave_dev->ip_ptr)->ifa_list); - ifa = *ifap; - my_ip = ifa->ifa_address; - read_unlock_irqrestore(&(((struct in_device *)slave_dev->ip_ptr)->lock), rflags); + if (((struct in_device *)slave_dev->ip_ptr) != NULL) { + read_lock_irqsave(&(((struct in_device *)slave_dev->ip_ptr)->lock), rflags); + ifap= &(((struct in_device *)slave_dev->ip_ptr)->ifa_list); + ifa = *ifap; + if (ifa != NULL) + my_ip = ifa->ifa_address; + read_unlock_irqrestore(&(((struct in_device *)slave_dev->ip_ptr)->lock), rflags); + } /* if there is a primary slave, remember it */ if (primary != NULL) { @@ -1598,7 +1657,7 @@ /* first slave or no active slave yet, and this link * is OK, so make this interface the active one */ - bond_assign_current_slave(bond, new_slave); + change_active_interface(bond, new_slave); } /* if there is a primary slave, remember it */ @@ -1613,8 +1672,13 @@ #endif /* always active in trunk mode */ new_slave->state = BOND_STATE_ACTIVE; + + /* In trunking mode there is little meaning to current_slave + * anyway (it holds no special properties of the bond device), + * so we can change it without calling change_active_interface() + */ if (bond->current_slave == NULL) - bond_assign_current_slave(bond, new_slave); + bond->current_slave = new_slave; } write_unlock_bh(&bond->lock); @@ -1705,6 +1769,13 @@ return -ENODEV; } + /* Verify that master_dev is indeed the master of slave_dev */ + if (!(slave_dev->flags & IFF_SLAVE) || + (slave_dev->master != master_dev)) { + + return -EINVAL; + } + bond = (struct bonding *) master_dev->priv; write_lock_bh(&bond->lock); slave = (slave_t *)bond; @@ -1717,67 +1788,46 @@ } } + /* + * Changing to the current active: do nothing; return success. + */ + if (newactive && (newactive == oldactive)) { + write_unlock_bh(&bond->lock); + return 0; + } + if ((newactive != NULL)&& (oldactive != NULL)&& - (newactive != oldactive)&& (newactive->link == BOND_LINK_UP)&& IS_UP(newactive->dev)) { - bond_set_slave_inactive_flags(oldactive); - bond_set_slave_active_flags(newactive); - bond_mc_update(bond, newactive, oldactive); - bond_assign_current_slave(bond, newactive); - printk("%s : activate %s(old : %s)\n", - master_dev->name, newactive->dev->name, - oldactive->dev->name); - } - else { + change_active_interface(bond, newactive); + } else { ret = -EINVAL; } write_unlock_bh(&bond->lock); return ret; } -/* Choose a new valid interface from the pool, set it active - * and make it the current slave. If no valid interface is - * found, the oldest slave in BACK state is choosen and - * activated. If none is found, it's considered as no - * interfaces left so the current slave is set to NULL. - * The result is a pointer to the current slave. - * - * Since this function sends messages tails through printk, the caller - * must have started something like `printk(KERN_INFO "xxxx ");'. +/** + * find_best_interface - select the best available slave to be the active one + * @bond: our bonding struct * * Warning: Caller must hold ptrlock for writing. */ -slave_t *change_active_interface(bonding_t *bond) +static struct slave *find_best_interface(struct bonding *bond) { - slave_t *newslave, *oldslave; - slave_t *bestslave = NULL; + struct slave *newslave, *oldslave; + struct slave *bestslave = NULL; int mintime; newslave = oldslave = bond->current_slave; if (newslave == NULL) { /* there were no active slaves left */ if (bond->next != (slave_t *)bond) { /* found one slave */ - newslave = bond_assign_current_slave(bond, bond->next); + newslave = bond->next; } else { - - printk (" but could not find any %s interface.\n", - (bond_mode == BOND_MODE_ACTIVEBACKUP) ? "backup":"other"); - bond_assign_current_slave(bond, NULL); return NULL; /* still no slave, return NULL */ } - } else if (bond_mode == BOND_MODE_ACTIVEBACKUP) { - /* make sure oldslave doesn't send arps - this could - * cause a ping-pong effect between interfaces since they - * would be able to tx arps - in active backup only one - * slave should be able to tx arps, and that should be - * the current_slave; the only exception is when all - * slaves have gone down, then only one non-current slave can - * send arps at a time; clearing oldslaves' mc list is handled - * later in this function. - */ - bond_set_slave_inactive_flags(oldslave); } mintime = updelay; @@ -1792,22 +1842,12 @@ newslave = bond->primary_slave; } + /* remember where to stop iterating over the slaves */ + oldslave = newslave; + do { if (IS_UP(newslave->dev)) { if (newslave->link == BOND_LINK_UP) { - /* this one is immediately usable */ - if (bond_mode == BOND_MODE_ACTIVEBACKUP) { - bond_set_slave_active_flags(newslave); - bond_mc_update(bond, newslave, oldslave); - printk (" and making interface %s the active one.\n", - newslave->dev->name); - } - else { - printk (" and setting pointer to interface %s.\n", - newslave->dev->name); - } - - bond_assign_current_slave(bond, newslave); return newslave; } else if (newslave->link == BOND_LINK_BACK) { @@ -1820,46 +1860,105 @@ } } while ((newslave = newslave->next) != oldslave); - /* no usable backup found, we'll see if we at least got a link that was - coming back for a long time, and could possibly already be usable. - */ - - if (bestslave != NULL) { - /* early take-over. */ - printk (" and making interface %s the active one %d ms earlier.\n", - bestslave->dev->name, - (updelay - bestslave->delay)*miimon); - - bestslave->delay = 0; - bestslave->link = BOND_LINK_UP; - bestslave->jiffies = jiffies; - bond_set_slave_active_flags(bestslave); - bond_mc_update(bond, bestslave, oldslave); - bond_assign_current_slave(bond, bestslave); - return bestslave; - } - - if ((bond_mode == BOND_MODE_ACTIVEBACKUP) && - (multicast_mode == BOND_MULTICAST_ACTIVE) && - (oldslave != NULL)) { - /* flush bonds (master's) mc_list from oldslave since it wasn't - * updated (and deleted) above - */ - bond_mc_list_flush(oldslave->dev, bond->device); - if (bond->device->flags & IFF_PROMISC) { - dev_set_promiscuity(oldslave->dev, -1); + return bestslave; +} + +/** + * change_active_interface - change the active slave into the specified one + * @bond: our bonding struct + * @new: the new slave to make the active one + * + * Set the new slave to the bond's settings and unset them on the old + * current_slave. + * Setting include flags, mc-list, promiscuity, allmulti, etc. + * + * If @new's link state is %BOND_LINK_BACK we'll set it to %BOND_LINK_UP, + * because it is apparently the best available slave we have, even though its + * updelay hasn't timed out yet. + * + * Warning: Caller must hold ptrlock for writing. + */ +static void change_active_interface(struct bonding *bond, struct slave *new) +{ + struct slave *old = bond->current_slave; + + if (old == new) { + return; + } + + if (new) { + if (new->link == BOND_LINK_BACK) { + if (USES_PRIMARY(bond_mode)) { + printk (KERN_INFO + "%s: making interface %s the new " + "active one %d ms earlier.\n", + bond->device->name, new->dev->name, + (updelay - new->delay) * miimon); + } + + new->delay = 0; + new->link = BOND_LINK_UP; + new->jiffies = jiffies; + + if (bond_mode == BOND_MODE_8023AD) { + bond_3ad_handle_link_change(new, BOND_LINK_UP); + } + + if ((bond_mode == BOND_MODE_TLB) || + (bond_mode == BOND_MODE_ALB)) { + bond_alb_handle_link_change(bond, new, BOND_LINK_UP); + } + } else { + if (USES_PRIMARY(bond_mode)) { + printk (KERN_INFO + "%s: making interface %s the new active one.\n", + bond->device->name, new->dev->name); + } } - if (bond->device->flags & IFF_ALLMULTI) { - dev_set_allmulti(oldslave->dev, -1); + } + + if (bond_mode == BOND_MODE_ACTIVEBACKUP) { + if (old) { + bond_set_slave_inactive_flags(old); + } + + if (new) { + bond_set_slave_active_flags(new); } } - printk (" but could not find any %s interface.\n", - (bond_mode == BOND_MODE_ACTIVEBACKUP) ? "backup":"other"); - - /* absolutely nothing found. let's return NULL */ - bond_assign_current_slave(bond, NULL); - return NULL; + if (USES_PRIMARY(bond_mode)) { + bond_mc_update(bond, new, old); + } + + if ((bond_mode == BOND_MODE_TLB) || + (bond_mode == BOND_MODE_ALB)) { + bond_alb_assign_current_slave(bond, new); + } else { + bond->current_slave = new; + } +} + +/** + * reselect_active_interface - select a new active slave, if needed + * @bond: our bonding struct + * + * This functions shoud be called when one of the following occurs: + * - The old current_slave has been released or lost its link. + * - The primary_slave has got its link back. + * - A slave has got its link back and there's no old current_slave. + * + * Warning: Caller must hold ptrlock for writing. + */ +static void reselect_active_interface(struct bonding *bond) +{ + struct slave *best_slave; + + best_slave = find_best_interface(bond); + + if (best_slave != bond->current_slave) { + change_active_interface(bond, best_slave); + } } /* @@ -1908,12 +2007,12 @@ "of %s to a different address " "to avoid conflicts.\n", slave->name, - slave->dev_addr[0], - slave->dev_addr[1], - slave->dev_addr[2], - slave->dev_addr[3], - slave->dev_addr[4], - slave->dev_addr[5], + our_slave->perm_hwaddr[0], + our_slave->perm_hwaddr[1], + our_slave->perm_hwaddr[2], + our_slave->perm_hwaddr[3], + our_slave->perm_hwaddr[4], + our_slave->perm_hwaddr[5], bond->device->name, slave->name); } @@ -1926,31 +2025,29 @@ bond_3ad_unbind_slave(our_slave); } - /* release the slave from its bond */ - bond_detach_slave(bond, our_slave); - - printk (KERN_INFO "%s: releasing %s interface %s", + printk (KERN_INFO "%s: releasing %s interface %s\n", master->name, (our_slave->state == BOND_STATE_ACTIVE) ? "active" : "backup", slave->name); - if (our_slave == old_current) { - /* find a new interface and be verbose */ - change_active_interface(bond); - } else { - printk(".\n"); + /* release the slave from its bond */ + bond_detach_slave(bond, our_slave); + + if (bond->primary_slave == our_slave) { + bond->primary_slave = NULL; } - + + if (bond->current_slave == our_slave) { + change_active_interface(bond, NULL); + reselect_active_interface(bond); + } + if (bond->current_slave == NULL) { printk(KERN_INFO "%s: now running without any active interface !\n", master->name); } - if (bond->primary_slave == our_slave) { - bond->primary_slave = NULL; - } - if ((bond_mode == BOND_MODE_TLB) || (bond_mode == BOND_MODE_ALB)) { /* must be called only after the slave has been @@ -1972,16 +2069,22 @@ return -EINVAL; } + /* unset promiscuity level from slave */ + if (master->flags & IFF_PROMISC) { + /* If the mode USES_PRIMARY, then we should only remove its + * promisc settings if it was the current_slave, but that was + * already taken care of above when we detached the slave + */ + if (!USES_PRIMARY(bond_mode)) { + dev_set_promiscuity(slave, -1); + } + } + /* undo settings and restore original values */ - if (multicast_mode == BOND_MULTICAST_ALL) { /* flush master's mc_list from slave */ bond_mc_list_flush (slave, master); - /* unset promiscuity level from slave */ - if (master->flags & IFF_PROMISC) - dev_set_promiscuity(slave, -1); - /* unset allmulti level from slave */ if (master->flags & IFF_ALLMULTI) dev_set_allmulti(slave, -1); @@ -2048,7 +2151,7 @@ } old_current = bond->current_slave; - bond_assign_current_slave(bond, NULL); + change_active_interface(bond, NULL); bond->current_arp_slave = NULL; bond->primary_slave = NULL; @@ -2077,17 +2180,17 @@ */ write_unlock_bh(&bond->lock); - if (multicast_mode == BOND_MULTICAST_ALL - || (multicast_mode == BOND_MULTICAST_ACTIVE - && old_current == our_slave)) { + /* unset promiscuity level from slave */ + if (master->flags & IFF_PROMISC) { + if (!USES_PRIMARY(bond_mode)) { + dev_set_promiscuity(slave_dev, -1); + } + } + if (multicast_mode == BOND_MULTICAST_ALL) { /* flush master's mc_list from slave */ bond_mc_list_flush (slave_dev, master); - /* unset promiscuity level from slave */ - if (master->flags & IFF_PROMISC) - dev_set_promiscuity(slave_dev, -1); - /* unset allmulti level from slave */ if (master->flags & IFF_ALLMULTI) dev_set_allmulti(slave_dev, -1); @@ -2233,9 +2336,7 @@ write_lock(&bond->ptrlock); if (slave == bond->current_slave) { /* find a new interface and be verbose */ - change_active_interface(bond); - } else { - printk(".\n"); + reselect_active_interface(bond); } write_unlock(&bond->ptrlock); slave_died = 1; @@ -2331,7 +2432,7 @@ write_lock(&bond->ptrlock); if ( (bond->primary_slave != NULL) && (slave == bond->primary_slave) ) - change_active_interface(bond); + reselect_active_interface(bond); write_unlock(&bond->ptrlock); } else @@ -2377,40 +2478,8 @@ /* no active interface at the moment or need to bring up the primary */ if (oldcurrent == NULL) { /* no active interface at the moment */ if (bestslave != NULL) { /* last chance to find one ? */ - if (bestslave->link == BOND_LINK_UP) { - printk (KERN_INFO - "%s: making interface %s the new active one.\n", - master->name, bestslave->dev->name); - } else { - printk (KERN_INFO - "%s: making interface %s the new " - "active one %d ms earlier.\n", - master->name, bestslave->dev->name, - (updelay - bestslave->delay) * miimon); - - bestslave->delay = 0; - bestslave->link = BOND_LINK_UP; - bestslave->jiffies = jiffies; - - /* notify ad that the link status has changed */ - if (bond_mode == BOND_MODE_8023AD) { - bond_3ad_handle_link_change(bestslave, BOND_LINK_UP); - } - - if ((bond_mode == BOND_MODE_TLB) || - (bond_mode == BOND_MODE_ALB)) { - bond_alb_handle_link_change(bond, bestslave, BOND_LINK_UP); - } - } - - if (bond_mode == BOND_MODE_ACTIVEBACKUP) { - bond_set_slave_active_flags(bestslave); - bond_mc_update(bond, bestslave, NULL); - } else if (bond_mode != BOND_MODE_8023AD) { - bestslave->state = BOND_STATE_ACTIVE; - } write_lock(&bond->ptrlock); - bond_assign_current_slave(bond, bestslave); + change_active_interface(bond, bestslave); write_unlock(&bond->ptrlock); } else if (slave_died) { /* print this message only once a slave has just died */ @@ -2494,7 +2563,7 @@ "for interface %s, ", master->name, slave->dev->name); - change_active_interface(bond); + reselect_active_interface(bond); } else { printk(KERN_INFO "%s: interface %s is now up\n", @@ -2526,7 +2595,7 @@ write_lock(&bond->ptrlock); if (slave == bond->current_slave) { - change_active_interface(bond); + reselect_active_interface(bond); } write_unlock(&bond->ptrlock); } @@ -2604,9 +2673,7 @@ if ((bond->current_slave == NULL) && ((jiffies - slave->dev->trans_start) <= the_delta_in_ticks)) { - bond_assign_current_slave(bond, slave); - bond_set_slave_active_flags(slave); - bond_mc_update(bond, slave, NULL); + change_active_interface(bond, slave); bond->current_arp_slave = NULL; } else if (bond->current_slave != slave) { /* this slave has just come up but we @@ -2696,7 +2763,8 @@ master->name, slave->dev->name); write_lock(&bond->ptrlock); - slave = change_active_interface(bond); + reselect_active_interface(bond); + slave = bond->current_slave; write_unlock(&bond->ptrlock); bond->current_arp_slave = slave; if (slave != NULL) { @@ -2715,13 +2783,10 @@ bond->primary_slave->dev->name); /* primary is up so switch to it */ - bond_set_slave_inactive_flags(slave); - bond_mc_update(bond, bond->primary_slave, slave); write_lock(&bond->ptrlock); - bond_assign_current_slave(bond, bond->primary_slave); + change_active_interface(bond, bond->primary_slave); write_unlock(&bond->ptrlock); slave = bond->primary_slave; - bond_set_slave_active_flags(slave); slave->jiffies = jiffies; } else { bond->current_arp_slave = NULL; @@ -2730,10 +2795,8 @@ /* the current slave must tx an arp to ensure backup slaves * rx traffic */ - if ((slave != NULL) && - (((jiffies - slave->dev->last_rx) >= the_delta_in_ticks) && - (my_ip != 0))) { - arp_send_all(slave); + if ((slave != NULL) && (my_ip != 0)) { + arp_send_all(slave); } } @@ -2766,7 +2829,7 @@ /* if the link state is up at this point, we * mark it down - this can happen if we have * simultaneous link failures and - * change_active_interface doesn't make this + * reselect_active_interface doesn't make this * one the current slave so it is still marked * up when it is actually down */ @@ -2986,7 +3049,7 @@ } else if (orig_app_abi_ver != app_abi_ver) { printk(KERN_ERR "bonding: Error: already using ifenslave ABI " - "version %d; to upgrade ifenslave to version %d," + "version %d; to upgrade ifenslave to version %d, " "you must first reload bonding.\n", orig_app_abi_ver, app_abi_ver); return -EINVAL; @@ -3011,15 +3074,9 @@ case SIOCBONDRELEASE: ret = bond_release(master_dev, slave_dev); break; - case BOND_SETHWADDR_OLD: - case SIOCBONDSETHWADDR: - ret = bond_sethwaddr(master_dev, slave_dev); - break; case BOND_CHANGE_ACTIVE_OLD: case SIOCBONDCHANGEACTIVE: - if ((bond_mode == BOND_MODE_ACTIVEBACKUP) || - (bond_mode == BOND_MODE_TLB) || - (bond_mode == BOND_MODE_ALB)) { + if (USES_PRIMARY(bond_mode)) { ret = bond_change_active(master_dev, slave_dev); } else { @@ -3141,7 +3198,7 @@ dev_queue_xmit(skb); write_lock(&bond->ptrlock); - bond_assign_current_slave(bond, slave->next); + bond->current_slave = slave->next; write_unlock(&bond->ptrlock); read_unlock(&bond->lock); @@ -3285,10 +3342,10 @@ static struct net_device_stats *bond_get_stats(struct net_device *dev) { bonding_t *bond = dev->priv; - struct net_device_stats *stats = bond->stats, *sstats; + struct net_device_stats *stats = &(bond->stats), *sstats; slave_t *slave; - memset(bond->stats, 0, sizeof(struct net_device_stats)); + memset(stats, 0, sizeof(struct net_device_stats)); read_lock_bh(&bond->lock); @@ -3327,152 +3384,511 @@ return stats; } -static int bond_get_info(char *buf, char **start, off_t offset, int length) -{ - bonding_t *bond; - int len = 0; - off_t begin = 0; - u16 link; - slave_t *slave = NULL; +#ifdef CONFIG_PROC_FS + +#define SEQ_START_TOKEN ((void *)1) - len += sprintf(buf + len, "%s\n", version); +static void *bond_info_seq_start(struct seq_file *seq, loff_t *pos) +{ + struct bonding *bond = seq->private; + loff_t off = 0; + struct slave *slave; + /* make sure the bond won't be taken away */ read_lock(&dev_base_lock); - list_for_each_entry(bond, &bond_dev_list, bond_list) { - /* - * This function locks the mutex, so we can't lock it until - * afterwards - */ - link = bond_check_mii_link(bond); + read_lock_bh(&bond->lock); - len += sprintf(buf + len, "Bonding Mode: %s\n", - bond_mode_name()); + if (*pos == 0) { + return SEQ_START_TOKEN; + } - if ((bond_mode == BOND_MODE_ACTIVEBACKUP) || - (bond_mode == BOND_MODE_TLB) || - (bond_mode == BOND_MODE_ALB)) { - read_lock_bh(&bond->lock); - read_lock(&bond->ptrlock); - if (bond->current_slave != NULL) { - len += sprintf(buf + len, - "Currently Active Slave: %s\n", - bond->current_slave->dev->name); - } - read_unlock(&bond->ptrlock); - read_unlock_bh(&bond->lock); - } - - len += sprintf(buf + len, "MII Status: "); - len += sprintf(buf + len, - link == BMSR_LSTATUS ? "up\n" : "down\n"); - len += sprintf(buf + len, "MII Polling Interval (ms): %d\n", - miimon); - len += sprintf(buf + len, "Up Delay (ms): %d\n", - updelay * miimon); - len += sprintf(buf + len, "Down Delay (ms): %d\n", - downdelay * miimon); - len += sprintf(buf + len, "Multicast Mode: %s\n", - multicast_mode_name()); + for (slave = bond->prev; slave != (slave_t *)bond; + slave = slave->prev) { - read_lock_bh(&bond->lock); + if (++off == *pos) { + return slave; + } + } - if (bond_mode == BOND_MODE_8023AD) { - struct ad_info ad_info; + return NULL; +} - len += sprintf(buf + len, "\n802.3ad info\n"); +static void *bond_info_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + struct bonding *bond = seq->private; + struct slave *slave = v; - if (bond_3ad_get_active_agg_info(bond, &ad_info)) { - len += sprintf(buf + len, "bond %s has no active aggregator\n", bond->device->name); - } else { - len += sprintf(buf + len, "Active Aggregator Info:\n"); + ++*pos; + if (v == SEQ_START_TOKEN) { + slave = bond->prev; + } else { + slave = slave->prev; + } - len += sprintf(buf + len, "\tAggregator ID: %d\n", ad_info.aggregator_id); - len += sprintf(buf + len, "\tNumber of ports: %d\n", ad_info.ports); - len += sprintf(buf + len, "\tActor Key: %d\n", ad_info.actor_key); - len += sprintf(buf + len, "\tPartner Key: %d\n", ad_info.partner_key); - len += sprintf(buf + len, "\tPartner Mac Address: %02x:%02x:%02x:%02x:%02x:%02x\n", - ad_info.partner_system[0], - ad_info.partner_system[1], - ad_info.partner_system[2], - ad_info.partner_system[3], - ad_info.partner_system[4], - ad_info.partner_system[5]); - } + return (slave == (struct slave *) bond) ? NULL : slave; +} + +static void bond_info_seq_stop(struct seq_file *seq, void *v) +{ + struct bonding *bond = seq->private; + + read_unlock_bh(&bond->lock); + read_unlock(&dev_base_lock); +} + +static void bond_info_show_master(struct seq_file *seq, struct bonding *bond) +{ + struct slave *curr; + + read_lock(&bond->ptrlock); + curr = bond->current_slave; + read_unlock(&bond->ptrlock); + + seq_printf(seq, "Bonding Mode: %s\n", bond_mode_name()); + + if (USES_PRIMARY(bond_mode)) { + if (curr) { + seq_printf(seq, + "Currently Active Slave: %s\n", + curr->dev->name); } + } - for (slave = bond->prev; slave != (slave_t *)bond; - slave = slave->prev) { - len += sprintf(buf + len, "\nSlave Interface: %s\n", slave->dev->name); + seq_printf(seq, "MII Status: %s\n", (curr) ? "up" : "down"); + seq_printf(seq, "MII Polling Interval (ms): %d\n", miimon); + seq_printf(seq, "Up Delay (ms): %d\n", updelay * miimon); + seq_printf(seq, "Down Delay (ms): %d\n", downdelay * miimon); + seq_printf(seq, "Multicast Mode: %s\n", multicast_mode_name()); - len += sprintf(buf + len, "MII Status: "); + if (bond_mode == BOND_MODE_8023AD) { + struct ad_info ad_info; - len += sprintf(buf + len, - slave->link == BOND_LINK_UP ? - "up\n" : "down\n"); - len += sprintf(buf + len, "Link Failure Count: %d\n", - slave->link_failure_count); - - if (app_abi_ver >= 1) { - len += sprintf(buf + len, - "Permanent HW addr: %02x:%02x:%02x:%02x:%02x:%02x\n", - slave->perm_hwaddr[0], - slave->perm_hwaddr[1], - slave->perm_hwaddr[2], - slave->perm_hwaddr[3], - slave->perm_hwaddr[4], - slave->perm_hwaddr[5]); - } + seq_puts(seq, "\n802.3ad info\n"); - if (bond_mode == BOND_MODE_8023AD) { - struct aggregator *agg = SLAVE_AD_INFO(slave).port.aggregator; + if (bond_3ad_get_active_agg_info(bond, &ad_info)) { + seq_printf(seq, "bond %s has no active aggregator\n", + bond->device->name); + } else { + seq_printf(seq, "Active Aggregator Info:\n"); - if (agg) { - len += sprintf(buf + len, "Aggregator ID: %d\n", - agg->aggregator_identifier); - } else { - len += sprintf(buf + len, "Aggregator ID: N/A\n"); - } - } + seq_printf(seq, "\tAggregator ID: %d\n", + ad_info.aggregator_id); + seq_printf(seq, "\tNumber of ports: %d\n", + ad_info.ports); + seq_printf(seq, "\tActor Key: %d\n", + ad_info.actor_key); + seq_printf(seq, "\tPartner Key: %d\n", + ad_info.partner_key); + seq_printf(seq, "\tPartner Mac Address: %02x:%02x:%02x:%02x:%02x:%02x\n", + ad_info.partner_system[0], + ad_info.partner_system[1], + ad_info.partner_system[2], + ad_info.partner_system[3], + ad_info.partner_system[4], + ad_info.partner_system[5]); } - read_unlock_bh(&bond->lock); + } +} - /* - * Figure out the calcs for the /proc/net interface - */ - *start = buf + (offset - begin); - len -= (offset - begin); - if (len > length) { - len = length; +static void bond_info_show_slave(struct seq_file *seq, const struct slave *slave) +{ + seq_printf(seq, "\nSlave Interface: %s\n", slave->dev->name); + seq_printf(seq, "MII Status: %s\n", + (slave->link == BOND_LINK_UP) ? "up" : "down"); + seq_printf(seq, "Link Failure Count: %d\n", + slave->link_failure_count); + + if (app_abi_ver >= 1) { + seq_printf(seq, + "Permanent HW addr: %02x:%02x:%02x:%02x:%02x:%02x\n", + slave->perm_hwaddr[0], + slave->perm_hwaddr[1], + slave->perm_hwaddr[2], + slave->perm_hwaddr[3], + slave->perm_hwaddr[4], + slave->perm_hwaddr[5]); + } + + if (bond_mode == BOND_MODE_8023AD) { + const struct aggregator *agg + = SLAVE_AD_INFO(slave).port.aggregator; + + if (agg) { + seq_printf(seq, "Aggregator ID: %d\n", + agg->aggregator_identifier); + } else { + seq_puts(seq, "Aggregator ID: N/A\n"); } - if (len < 0) { - len = 0; + } +} + +static int bond_info_seq_show(struct seq_file *seq, void *v) +{ + if (v == SEQ_START_TOKEN) { + seq_printf(seq, "%s\n", version); + bond_info_show_master(seq, seq->private); + } else { + bond_info_show_slave(seq, v); + } + + return 0; +} + +static struct seq_operations bond_info_seq_ops = { + .start = bond_info_seq_start, + .next = bond_info_seq_next, + .stop = bond_info_seq_stop, + .show = bond_info_seq_show, +}; + +static int bond_info_open(struct inode *inode, struct file *file) +{ + struct seq_file *seq; + struct proc_dir_entry *proc; + int rc; + + rc = seq_open(file, &bond_info_seq_ops); + if (!rc) { + /* recover the pointer buried in proc_dir_entry data */ + seq = file->private_data; + proc = PDE(inode); + seq->private = proc->data; + } + return rc; +} + +static struct file_operations bond_info_fops = { + .owner = THIS_MODULE, + .open = bond_info_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int bond_create_proc_info(struct bonding *bond) +{ + struct net_device *dev = bond->device; + + if (bond_proc_dir) { + bond->bond_proc_file = create_proc_entry(dev->name, + S_IRUGO, + bond_proc_dir); + if (bond->bond_proc_file == NULL) { + printk(KERN_WARNING + "%s: Cannot create /proc/net/bonding/%s\n", + dev->name, dev->name); + } else { + bond->bond_proc_file->data = bond; + bond->bond_proc_file->proc_fops = &bond_info_fops; + bond->bond_proc_file->owner = THIS_MODULE; + memcpy(bond->procdir_name, dev->name, IFNAMSIZ); } + } + + return 0; +} +static void bond_destroy_proc_info(struct bonding *bond) +{ + if (bond_proc_dir && bond->bond_proc_file) { + remove_proc_entry(bond->procdir_name, bond_proc_dir); + memset(bond->procdir_name, 0, IFNAMSIZ); + bond->bond_proc_file = NULL; } - read_unlock(&dev_base_lock); +} +#endif /* CONFIG_PROC_FS */ + +/* + * Change HW address + * + * Note that many devices must be down to change the HW address, and + * downing the master releases all slaves. We can make bonds full of + * bonding devices to test this, however. + */ +static inline int +bond_set_mac_address(struct net_device *dev, void *addr) +{ + struct bonding *bond = dev->priv; + struct sockaddr *sa = addr, tmp_sa; + struct slave *slave; + int error; + + dprintk(KERN_INFO "bond_set_mac_address %p %s\n", dev, + dev->name); - return len; + if (!is_valid_ether_addr(sa->sa_data)) { + return -EADDRNOTAVAIL; + } + + for (slave = bond->prev; slave != (struct slave *)bond; + slave = slave->prev) { + dprintk(KERN_INFO "bond_set_mac: slave %p %s\n", slave, + slave->dev->name); + if (slave->dev->set_mac_address == NULL) { + error = -EOPNOTSUPP; + dprintk(KERN_INFO "bond_set_mac EOPNOTSUPP %s\n", + slave->dev->name); + goto unwind; + } + + error = slave->dev->set_mac_address(slave->dev, addr); + if (error) { + /* TODO: consider downing the slave + * and retry ? + * User should expect communications + * breakage anyway until ARP finish + * updating, so... + */ + dprintk(KERN_INFO "bond_set_mac err %d %s\n", + error, slave->dev->name); + goto unwind; + } + } + + /* success */ + memcpy(dev->dev_addr, sa->sa_data, dev->addr_len); + return 0; + +unwind: + memcpy(tmp_sa.sa_data, dev->dev_addr, dev->addr_len); + tmp_sa.sa_family = dev->type; + + for (slave = slave->next; slave != bond->next; + slave = slave->next) { + int tmp_error; + + tmp_error = slave->dev->set_mac_address(slave->dev, &tmp_sa); + if (tmp_error) { + dprintk(KERN_INFO "bond_set_mac_address: " + "unwind err %d dev %s\n", + tmp_error, slave->dev->name); + } + } + + return error; } -static int bond_event(struct notifier_block *this, unsigned long event, - void *ptr) +/* + * Change the MTU of all of a master's slaves to match the master + */ +static inline int +bond_change_mtu(struct net_device *dev, int newmtu) +{ + bonding_t *bond = dev->priv; + slave_t *slave; + int error; + + dprintk(KERN_INFO "CM: b %p nm %d\n", bond, newmtu); + for (slave = bond->prev; slave != (slave_t *)bond; + slave = slave->prev) { + dprintk(KERN_INFO "CM: s %p s->p %p c_m %p\n", slave, + slave->prev, slave->dev->change_mtu); + if (slave->dev->change_mtu) { + error = slave->dev->change_mtu(slave->dev, newmtu); + } else { + slave->dev->mtu = newmtu; + error = 0; + } + + if (error) { + /* If we failed to set the slave's mtu to the new value + * we must abort the operation even in ACTIVE_BACKUP + * mode, because if we allow the backup slaves to have + * different mtu values than the active slave we'll + * need to change their mtu when doing a failover. That + * means changing their mtu from timer context, which + * is probably not a good idea. + */ + dprintk(KERN_INFO "bond_change_mtu err %d %s\n", + error, slave->dev->name); + goto unwind; + } + } + + dev->mtu = newmtu; + return 0; + + +unwind: + for (slave = slave->next; slave != bond->next; + slave = slave->next) { + + if (slave->dev->change_mtu) { + slave->dev->change_mtu(slave->dev, dev->mtu); + } else { + slave->dev->mtu = dev->mtu; + } + } + + return error; +} + +/* + * Change device name + */ +static inline int bond_event_changename(struct bonding *bond) +{ +#ifdef CONFIG_PROC_FS + bond_destroy_proc_info(bond); + bond_create_proc_info(bond); +#endif + + return NOTIFY_DONE; +} + +static int bond_master_netdev_event(unsigned long event, struct net_device *event_dev) +{ + struct bonding *bond, *event_bond = NULL; + + list_for_each_entry(bond, &bond_dev_list, bond_list) { + if (bond == event_dev->priv) { + event_bond = bond; + break; + } + } + + if (event_bond == NULL) { + return NOTIFY_DONE; + } + + switch (event) { + case NETDEV_CHANGENAME: + return bond_event_changename(event_bond); + case NETDEV_UNREGISTER: + /* + * TODO: remove a bond from the list? + */ + break; + default: + break; + } + + return NOTIFY_DONE; +} + +static int bond_slave_netdev_event(unsigned long event, struct net_device *event_dev) { - struct net_device *event_dev = (struct net_device *)ptr; struct net_device *master = event_dev->master; - if (event == NETDEV_UNREGISTER && master != NULL) - bond_release(master, event_dev); + switch (event) { + case NETDEV_UNREGISTER: + if (master != NULL) { + bond_release(master, event_dev); + } + break; + case NETDEV_CHANGE: + /* + * TODO: is this what we get if somebody + * sets up a hierarchical bond, then rmmod's + * one of the slave bonding devices? + */ + break; + case NETDEV_DOWN: + /* + * ... Or is it this? + */ + break; + case NETDEV_CHANGEMTU: + /* + * TODO: Should slaves be allowed to + * independently alter their MTU? For + * an active-backup bond, slaves need + * not be the same type of device, so + * MTUs may vary. For other modes, + * slaves arguably should have the + * same MTUs. To do this, we'd need to + * take over the slave's change_mtu + * function for the duration of their + * servitude. + */ + break; + case NETDEV_CHANGENAME: + /* + * TODO: handle changing the primary's name + */ + break; + default: + break; + } return NOTIFY_DONE; } +/* + * bond_netdev_event: handle netdev notifier chain events. + * + * This function receives events for the netdev chain. The caller (an + * ioctl handler calling notifier_call_chain) holds the necessary + * locks for us to safely manipulate the slave devices (RTNL lock, + * dev_probe_lock). + */ +static int bond_netdev_event(struct notifier_block *this, unsigned long event, void *ptr) +{ + struct net_device *event_dev = (struct net_device *)ptr; + unsigned short flags; + int res = NOTIFY_DONE; + + dprintk(KERN_INFO "bond_netdev_event n_b %p ev %lx ptr %p\n", + this, event, ptr); + + flags = event_dev->flags & (IFF_MASTER | IFF_SLAVE); + switch (flags) { + case IFF_MASTER: + res = bond_master_netdev_event(event, event_dev); + break; + case IFF_SLAVE: + res = bond_slave_netdev_event(event, event_dev); + break; + default: + /* A master that is also a slave ? */ + break; + } + + return res; +} + static struct notifier_block bond_netdev_notifier = { - .notifier_call = bond_event, + .notifier_call = bond_netdev_event, }; +static inline void bond_deinit(struct net_device *dev) +{ + struct bonding *bond = dev->priv; + + list_del(&bond->bond_list); + +#ifdef CONFIG_PROC_FS + bond_destroy_proc_info(bond); +#endif +} + +static void bond_free_all(void) +{ + struct bonding *bond, *nxt; + + list_for_each_entry_safe(bond, nxt, &bond_dev_list, bond_list) { + struct net_device *dev = bond->device; + + unregister_netdev(dev); + bond_deinit(dev); + free_netdev(dev); + } + +#ifdef CONFIG_PROC_FS + if (bond_proc_dir) { + remove_proc_entry(DRV_NAME, proc_net); + bond_proc_dir = NULL; + } +#endif +} + +/* + * Does not allocate but creates a /proc entry. + * Allowed to fail. + */ static int __init bond_init(struct net_device *dev) { - bonding_t *bond; + struct bonding *bond; int count; #ifdef BONDING_DEBUG @@ -3483,15 +3899,16 @@ /* initialize rwlocks */ rwlock_init(&bond->lock); rwlock_init(&bond->ptrlock); - - /* space is reserved for stats in alloc_netdev call. */ - bond->stats = (struct net_device_stats *)(bond + 1); + + /* Initialize pointers */ bond->next = bond->prev = (slave_t *)bond; bond->current_slave = NULL; bond->current_arp_slave = NULL; bond->device = dev; /* Initialize the device structure. */ + dev->set_mac_address = bond_set_mac_address; + switch (bond_mode) { case BOND_MODE_ACTIVEBACKUP: dev->hard_start_xmit = bond_xmit_activebackup; @@ -3511,6 +3928,7 @@ case BOND_MODE_TLB: case BOND_MODE_ALB: dev->hard_start_xmit = bond_alb_xmit; + dev->set_mac_address = bond_alb_set_mac_address; break; default: printk(KERN_ERR "Unknown bonding mode %d\n", bond_mode); @@ -3522,7 +3940,7 @@ dev->stop = bond_close; dev->set_multicast_list = set_multicast_list; dev->do_ioctl = bond_ioctl; - + dev->change_mtu = bond_change_mtu; dev->tx_queue_len = 0; dev->flags |= IFF_MASTER|IFF_MULTICAST; #ifdef CONFIG_NET_FASTROUTE @@ -3549,30 +3967,13 @@ } else { printk("out ARP monitoring\n"); } - + #ifdef CONFIG_PROC_FS - bond->bond_proc_dir = proc_mkdir(dev->name, proc_net); - if (bond->bond_proc_dir == NULL) { - printk(KERN_ERR "%s: Cannot init /proc/net/%s/\n", - dev->name, dev->name); - return -ENOMEM; - } - bond->bond_proc_dir->owner = THIS_MODULE; - - bond->bond_proc_info_file = - create_proc_info_entry("info", 0, bond->bond_proc_dir, - bond_get_info); - if (bond->bond_proc_info_file == NULL) { - printk(KERN_ERR "%s: Cannot init /proc/net/%s/info\n", - dev->name, dev->name); - remove_proc_entry(dev->name, proc_net); - return -ENOMEM; - } - bond->bond_proc_info_file->owner = THIS_MODULE; -#endif /* CONFIG_PROC_FS */ - + bond_create_proc_info(bond); +#endif list_add_tail(&bond->bond_list, &bond_dev_list); + return 0; } @@ -3605,6 +4006,7 @@ return -1; } + static int __init bonding_init(void) { int no; @@ -3625,6 +4027,12 @@ } } + if (USES_PRIMARY(bond_mode)) { + multicast_mode = BOND_MULTICAST_ACTIVE; + } else { + multicast_mode = BOND_MULTICAST_ALL; + } + if (multicast) { multicast_mode = bond_parse_parm(multicast, bond_mc_tbl); if (multicast_mode == -1) { @@ -3811,7 +4219,7 @@ arp_interval = 0; } else { u32 ip = in_aton(arp_ip_target[arp_ip_count]); - *(u32 *)(arp_ip_target[arp_ip_count]) = ip; + arp_target[arp_ip_count] = ip; } } @@ -3837,9 +4245,7 @@ "link failures! see bonding.txt for details.\n"); } - if ((primary != NULL) && (bond_mode != BOND_MODE_ACTIVEBACKUP) && - (bond_mode != BOND_MODE_TLB) && - (bond_mode != BOND_MODE_ALB)){ + if ((primary != NULL) && !USES_PRIMARY(bond_mode)) { /* currently, using a primary only makes sense * in active backup, TLB or ALB modes */ @@ -3850,50 +4256,72 @@ primary = NULL; } - register_netdevice_notifier(&bond_netdev_notifier); +#ifdef CONFIG_PROC_FS + bond_proc_dir = proc_mkdir(DRV_NAME, proc_net); + if (bond_proc_dir == NULL) { + printk(KERN_WARNING + "bonding_init(): can not create /proc/net/" DRV_NAME); + } else { + bond_proc_dir->owner = THIS_MODULE; + } +#endif + + rtnl_lock(); + err = 0; for (no = 0; no < max_bonds; no++) { struct net_device *dev; - char name[IFNAMSIZ]; - snprintf(name, IFNAMSIZ, "bond%d", no); - - dev = alloc_netdev(sizeof(bonding_t) - + sizeof(struct net_device_stats), - name, ether_setup); - if (!dev) - return -ENOMEM; + dev = alloc_netdev(sizeof(struct bonding), "", ether_setup); + if (!dev) { + err = -ENOMEM; + goto out_err; + } + + err = dev_alloc_name(dev, "bond%d"); + if (err < 0) { + free_netdev(dev); + goto out_err; + } + + /* bond_init() must be called after dev_alloc_name() (for the + * /proc files), but before register_netdevice(), because we + * need to set function pointers. + */ + err = bond_init(dev); + if (err < 0) { + free_netdev(dev); + goto out_err; + } - dev->init = bond_init; SET_MODULE_OWNER(dev); - if ( (err = register_netdev(dev)) ) { -#ifdef BONDING_DEBUG - printk(KERN_INFO "%s: register_netdev failed %d\n", - dev->name, err); -#endif - kfree(dev); - return err; - } + err = register_netdevice(dev); + if (err < 0) { + bond_deinit(dev); + free_netdev(dev); + goto out_err; + } } + + rtnl_unlock(); + register_netdevice_notifier(&bond_netdev_notifier); + return 0; + +out_err: + rtnl_unlock(); + + /* free and unregister all bonds that were successfully added */ + bond_free_all(); + + return err; } static void __exit bonding_exit(void) { - struct bonding *bond, *nxt; - unregister_netdevice_notifier(&bond_netdev_notifier); - - list_for_each_entry_safe(bond, nxt, &bond_dev_list, bond_list) { - struct net_device *dev = bond->device; -#ifdef CONFIG_PROC_FS - remove_proc_entry("info", bond->bond_proc_dir); - remove_proc_entry(dev->name, proc_net); -#endif - unregister_netdev(dev); - free_netdev(dev); - } + bond_free_all(); } module_init(bonding_init); diff -Nru a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h --- a/drivers/net/bonding/bonding.h Mon Sep 22 00:30:20 2003 +++ b/drivers/net/bonding/bonding.h Mon Sep 22 00:30:20 2003 @@ -99,10 +99,10 @@ rwlock_t ptrlock; struct timer_list mii_timer; struct timer_list arp_timer; - struct net_device_stats *stats; + struct net_device_stats stats; #ifdef CONFIG_PROC_FS - struct proc_dir_entry *bond_proc_dir; - struct proc_dir_entry *bond_proc_info_file; + struct proc_dir_entry *bond_proc_file; + char procdir_name[IFNAMSIZ]; #endif /* CONFIG_PROC_FS */ struct list_head bond_list; struct net_device *device; diff -Nru a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c --- a/drivers/net/cs89x0.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/cs89x0.c Mon Sep 22 00:30:24 2003 @@ -90,7 +90,6 @@ or override something. */ #include #include -#include /* * Set this to zero to disable DMA code diff -Nru a/drivers/net/depca.c b/drivers/net/depca.c --- a/drivers/net/depca.c Mon Sep 22 00:30:22 2003 +++ b/drivers/net/depca.c Mon Sep 22 00:30:22 2003 @@ -1,4 +1,4 @@ -/* depca.c: A DIGITAL DEPCA & EtherWORKS ethernet driver for linux. +/* depca.c: A DIGITAL DEPCA & EtherWORKS ethernet driver for linux. Written 1994, 1995 by David C. Davies. @@ -253,7 +253,8 @@ #include #include #include -#include +#include +#include #include #include @@ -265,7 +266,6 @@ #endif #ifdef CONFIG_EISA -#include #include #endif @@ -305,21 +305,21 @@ ** EISA bus defines */ #define DEPCA_EISA_IO_PORTS 0x0c00 /* I/O port base address, slot 0 */ -#define MAX_EISA_SLOTS 16 -#define EISA_SLOT_INC 0x1000 /* ** ISA Bus defines */ #define DEPCA_RAM_BASE_ADDRESSES {0xc0000,0xd0000,0xe0000,0x00000} -#define DEPCA_IO_PORTS {0x300, 0x200, 0} #define DEPCA_TOTAL_SIZE 0x10 -static short mem_chkd; -/* -** Adapter ID for the MCA EtherWORKS DE210/212 adapter -*/ -#define DE212_ID 0x6def +static struct { + u_long iobase; + struct platform_device *device; +} depca_io_ports[] = { + { 0x300, NULL }, + { 0x200, NULL }, + { 0 , NULL }, +}; /* ** Name <-> Adapter mapping @@ -330,34 +330,86 @@ "DE210","DE212",\ "DE422",\ ""} -static enum { + +static char* __initdata depca_signature[] = DEPCA_SIGNATURE; + +enum depca_type { DEPCA, de100, de101, de200, de201, de202, de210, de212, de422, unknown -} adapter; +}; + +static char depca_string[] = "depca"; + +static int depca_device_remove (struct device *device); #ifdef CONFIG_EISA struct eisa_device_id depca_eisa_ids[] = { - { "DEC4220" }, + { "DEC4220", de422 }, { "" } }; static int depca_eisa_probe (struct device *device); -static int depca_eisa_remove (struct device *device); struct eisa_driver depca_eisa_driver = { .id_table = depca_eisa_ids, .driver = { - .name = "depca", + .name = depca_string, .probe = depca_eisa_probe, - .remove = __devexit_p (depca_eisa_remove) + .remove = __devexit_p (depca_device_remove) } }; #endif +#ifdef CONFIG_MCA +/* +** Adapter ID for the MCA EtherWORKS DE210/212 adapter +*/ +#define DE210_ID 0x628d +#define DE212_ID 0x6def + +static short depca_mca_adapter_ids[] = { + DE210_ID, + DE212_ID, + 0x0000 +}; + +static char *depca_mca_adapter_name[] = { + "DEC EtherWORKS MC Adapter (DE210)", + "DEC EtherWORKS MC Adapter (DE212)", + NULL +}; + +static enum depca_type depca_mca_adapter_type[] = { + de210, + de212, + 0 +}; + +static int depca_mca_probe (struct device *); + +static struct mca_driver depca_mca_driver = { + .id_table = depca_mca_adapter_ids, + .driver = { + .name = depca_string, + .bus = &mca_bus_type, + .probe = depca_mca_probe, + .remove = __devexit_p(depca_device_remove), + }, +}; +#endif + +static int depca_isa_probe (struct device *); + +static struct device_driver depca_isa_driver = { + .name = depca_string, + .bus = &platform_bus_type, + .probe = depca_isa_probe, + .remove = __devexit_p(depca_device_remove), +}; + /* ** Miscellaneous info... */ #define DEPCA_STRLEN 16 -#define MAX_NUM_DEPCAS 2 /* ** Memory Alignment. Each descriptor is 4 longwords long. To force a @@ -402,10 +454,13 @@ #define DEPCA_PKT_BIN_SZ 128 /* Should be >=100 unless you increase DEPCA_PKT_STAT_SZ */ struct depca_private { - char devname[DEPCA_STRLEN]; /* Device Product String */ char adapter_name[DEPCA_STRLEN]; /* /proc/ioports string */ - char adapter; /* Adapter type */ - char mca_slot; /* MCA slot, if MCA else -1 */ + enum depca_type adapter; /* Adapter type */ + enum { + DEPCA_BUS_MCA = 1, + DEPCA_BUS_ISA, + DEPCA_BUS_EISA, + } depca_bus; /* type of bus */ struct depca_init init_block; /* Shadow Initialization block */ /* CPU address space fields */ struct depca_rx_desc *rx_ring; /* Pointer to start of RX descriptor ring */ @@ -467,45 +522,39 @@ /* ** Private functions */ -static int depca_hw_init(struct net_device *dev, u_long ioaddr, int mca_slot); static void depca_init_ring(struct net_device *dev); static int depca_rx(struct net_device *dev); static int depca_tx(struct net_device *dev); static void LoadCSRs(struct net_device *dev); static int InitRestartDepca(struct net_device *dev); -static void DepcaSignature(char *name, u_long paddr); +static int DepcaSignature(char *name, u_long paddr); static int DevicePresent(u_long ioaddr); static int get_hw_addr(struct net_device *dev); static void SetMulticastFilter(struct net_device *dev); -static void isa_probe(struct net_device *dev, u_long iobase); -#ifdef CONFIG_MCA -static void mca_probe(struct net_device *dev, u_long iobase); -#endif -static struct net_device *alloc_device(struct net_device *dev, u_long iobase); -static int depca_dev_index(char *s); -static struct net_device *insert_device(struct net_device *dev, u_long iobase, int (*init) (struct net_device *)); static int load_packet(struct net_device *dev, struct sk_buff *skb); static void depca_dbg_open(struct net_device *dev); -#ifdef MODULE -static int autoprobed = 1, loading_module = 1; -# else static u_char de1xx_irq[] __initdata = { 2, 3, 4, 5, 7, 9, 0 }; static u_char de2xx_irq[] __initdata = { 5, 9, 10, 11, 15, 0 }; static u_char de422_irq[] __initdata = { 5, 9, 10, 11, 0 }; static u_char *depca_irq; -static int autoprobed, loading_module; -#endif /* MODULE */ -static char name[DEPCA_STRLEN]; -static int num_depcas, num_eth; +static int irq; +static int io; +static char *adapter_name; static int mem; /* For loadable module assignment use insmod mem=0x????? .... */ -static char *adapter_name; /* = '\0'; If no PROM when loadable module - use insmod adapter_name=DE??? ... - bss initializes this to zero - */ +module_param (irq, int, 0); +module_param (io, int, 0); +module_param (adapter_name, charp, 0); +module_param (mem, int, 0); +MODULE_PARM_DESC(irq, "DEPCA IRQ number"); +MODULE_PARM_DESC(io, "DEPCA I/O base address"); +MODULE_PARM_DESC(adapter_name, "DEPCA adapter name"); +MODULE_PARM_DESC(mem, "DEPCA shared memory address"); +MODULE_LICENSE("GPL"); + /* ** Miscellaneous defines... */ @@ -513,52 +562,30 @@ outw(CSR0, DEPCA_ADDR);\ outw(STOP, DEPCA_DATA) -int __init depca_probe(struct net_device *dev) -{ - int tmp = num_depcas, status = -ENODEV; - u_long iobase = dev->base_addr; - - SET_MODULE_OWNER(dev); - - if ((iobase == 0) && loading_module) { - printk("Autoprobing is not supported when loading a module based driver.\n"); - status = -EIO; - } else { -#ifdef CONFIG_MCA - mca_probe(dev, iobase); -#endif - isa_probe(dev, iobase); -#ifdef CONFIG_EISA - eisa_driver_register (&depca_eisa_driver); -#endif - - if ((tmp == num_depcas) && (iobase != 0) && loading_module) { - printk("%s: depca_probe() cannot find device at 0x%04lx.\n", dev->name, iobase); - } - - /* - ** Walk the device list to check that at least one device - ** initialised OK - */ - for (; (dev->priv == NULL) && (dev->next != NULL); dev = dev->next); - - if (dev->priv) - status = 0; - if (iobase == 0) - autoprobed = 1; - } - - return status; -} - -static int __init depca_hw_init(struct net_device *dev, u_long ioaddr, int mca_slot) +static int __init depca_hw_init (struct net_device *dev, struct device *device) { struct depca_private *lp; int i, j, offset, netRAM, mem_len, status = 0; s16 nicsr; - u_long mem_start = 0, mem_base[] = DEPCA_RAM_BASE_ADDRESSES; - int is_eisa = ((ioaddr & 0x0fff) == DEPCA_EISA_IO_PORTS); + u_long ioaddr; + u_long mem_start; + + /* + * We are now supposed to enter this function with the + * following fields filled with proper values : + * + * dev->base_addr + * lp->mem_start + * lp->depca_bus + * lp->adapter + * + * dev->irq can be set if known from device configuration (on + * MCA or EISA) or module option. Otherwise, it will be auto + * detected. + */ + ioaddr = dev->base_addr; + STOP_DEPCA; nicsr = inb(DEPCA_NICSR); @@ -569,24 +596,34 @@ return -ENXIO; } - do { - strcpy(name, (adapter_name ? adapter_name : "")); - mem_start = (mem ? mem & 0xf0000 : mem_base[mem_chkd++]); - DepcaSignature(name, mem_start); - } while (!mem && mem_base[mem_chkd] && (adapter == unknown)); + lp = (struct depca_private *) dev->priv; + mem_start = lp->mem_start; - if ((adapter == unknown) || !mem_start) { /* DEPCA device not found */ + if (!mem_start || lp->adapter < DEPCA || lp->adapter >=unknown) return -ENXIO; - } - dev->base_addr = ioaddr; + printk ("%s: %s at 0x%04lx", + device->bus_id, depca_signature[lp->adapter], ioaddr); + + switch (lp->depca_bus) { +#ifdef CONFIG_MCA + case DEPCA_BUS_MCA: + printk(" (MCA slot %d)", to_mca_device(device)->slot + 1); + break; +#endif + +#ifdef CONFIG_EISA + case DEPCA_BUS_EISA: + printk(" (EISA slot %d)", to_eisa_device(device)->slot); + break; +#endif - if (mca_slot != -1) { - printk("%s: %s at 0x%04lx (MCA slot %d)", dev->name, name, ioaddr, mca_slot); - } else if (is_eisa) { /* EISA slot address */ - printk("%s: %s at 0x%04lx (EISA slot %d)", dev->name, name, ioaddr, (int) ((ioaddr >> 12) & 0x0f)); - } else { /* ISA port address */ - printk("%s: %s at 0x%04lx", dev->name, name, ioaddr); + case DEPCA_BUS_ISA: + break; + + default: + printk("Unknown DEPCA bus %d\n", lp->depca_bus); + return -ENXIO; } printk(", h/w address "); @@ -601,18 +638,20 @@ printk("%2.2x", dev->dev_addr[i]); /* Set up the maximum amount of network RAM(kB) */ - netRAM = ((adapter != DEPCA) ? 64 : 48); - if ((nicsr & _128KB) && (adapter == de422)) + netRAM = ((lp->adapter != DEPCA) ? 64 : 48); + if ((nicsr & _128KB) && (lp->adapter == de422)) netRAM = 128; - offset = 0x0000; /* Shared Memory Base Address */ if (nicsr & BUF) { - offset = 0x8000; /* 32kbyte RAM offset */ nicsr &= ~BS; /* DEPCA RAM in top 32k */ netRAM -= 32; + + /* Only EISA/ISA needs start address to be re-computed */ + if (lp->depca_bus != DEPCA_BUS_MCA) + mem_start += 0x8000; } - mem_start += offset; /* (E)ISA start address */ + if ((mem_len = (NUM_RX_DESC * (sizeof(struct depca_rx_desc) + RX_BUFF_SZ) + NUM_TX_DESC * (sizeof(struct depca_tx_desc) + TX_BUFF_SZ) + sizeof(struct depca_init))) > (netRAM << 10)) { printk(",\n requests %dkB RAM: only %dkB is available!\n", (mem_len >> 10), netRAM); @@ -622,23 +661,14 @@ printk(",\n has %dkB RAM at 0x%.5lx", netRAM, mem_start); /* Enable the shadow RAM. */ - if (adapter != DEPCA) { + if (lp->adapter != DEPCA) { nicsr |= SHE; outb(nicsr, DEPCA_NICSR); } - /* Define the device private memory */ - if (!is_eisa) { - dev->priv = (void *) kmalloc(sizeof(struct depca_private), GFP_KERNEL); - if (dev->priv == NULL) - return -ENOMEM; - } - lp = (struct depca_private *) dev->priv; - memset((char *) dev->priv, 0, sizeof(struct depca_private)); - lp->adapter = adapter; - lp->mca_slot = mca_slot; lp->lock = SPIN_LOCK_UNLOCKED; - sprintf(lp->adapter_name, "%s (%s)", name, dev->name); + sprintf(lp->adapter_name, "%s (%s)", + depca_signature[lp->adapter], device->bus_id); status = -EBUSY; /* Initialisation Block */ @@ -702,7 +732,6 @@ /* To auto-IRQ we enable the initialization-done and DMA err, interrupts. For now we will always get a DMA error. */ if (dev->irq < 2) { -#ifndef MODULE unsigned char irqnum; unsigned long irq_mask, delay; @@ -725,6 +754,9 @@ case de422: depca_irq = de422_irq; break; + + default: + break; /* Not reached */ } /* Trigger an initialization just for the interrupt. */ @@ -733,6 +765,7 @@ delay = jiffies + HZ/50; while (time_before(jiffies, delay)) yield(); + irqnum = probe_irq_off(irq_mask); status = -ENXIO; @@ -746,13 +779,11 @@ printk(" and uses IRQ%d.\n", dev->irq); } - status = -ENXIO; if (!dev->irq) { printk(" but incorrect IRQ line detected.\n"); - goto out_priv; + return -ENXIO; } } -#endif /* MODULE */ } else { printk(" and assigned IRQ%d.\n", dev->irq); } @@ -773,17 +804,14 @@ dev->mem_start = 0; - /* Fill in the generic field of the device structure. */ - if (!is_eisa) - ether_setup(dev); + device->driver_data = dev; + SET_NETDEV_DEV (dev, device); + + register_netdev (dev); return 0; - out_priv: - if (!is_eisa) { - kfree(dev->priv); - dev->priv = NULL; - } else { - unregister_netdev (dev); - } + + out_priv: + return status; } @@ -1284,215 +1312,265 @@ return; } +static int __init depca_common_init (u_long ioaddr, struct net_device **devp) +{ + int status = 0; + + if (!request_region (ioaddr, DEPCA_TOTAL_SIZE, depca_string)) { + status = -EBUSY; + goto out; + } + + if (DevicePresent(ioaddr)) { + status = -ENODEV; + goto out_release; + } + + if (!(*devp = alloc_etherdev (sizeof (struct depca_private)))) { + status = -ENOMEM; + goto out_release; + } + + return 0; + + out_release: + release_region (ioaddr, DEPCA_TOTAL_SIZE); + out: + return status; +} + #ifdef CONFIG_MCA /* ** Microchannel bus I/O device probe */ -static void __init mca_probe(struct net_device *dev, u_long ioaddr) +static int __init depca_mca_probe(struct device *device) { unsigned char pos[2]; unsigned char where; - unsigned long iobase; - int irq; - int slot = 0; + unsigned long iobase, mem_start; + int irq, err; + struct mca_device *mdev = to_mca_device (device); + struct net_device *dev; + struct depca_private *lp; /* - ** See if we've been here before. - */ - if ((!ioaddr && autoprobed) || (ioaddr && !loading_module)) - return; - - if (MCA_bus) { - /* - ** Search for the adapter. If an address has been given, search - ** specifically for the card at that address. Otherwise find the - ** first card in the system. - */ - while ((dev != NULL) && ((slot = mca_find_adapter(DE212_ID, slot)) != MCA_NOTFOUND)) { - pos[0] = mca_read_stored_pos(slot, 2); - pos[1] = mca_read_stored_pos(slot, 3); - - /* - ** IO of card is handled by bits 1 and 2 of pos0. - ** - ** bit2 bit1 IO - ** 0 0 0x2c00 - ** 0 1 0x2c10 - ** 1 0 0x2c20 - ** 1 1 0x2c30 - */ - where = (pos[0] & 6) >> 1; - iobase = 0x2c00 + (0x10 * where); - - if ((ioaddr) && (ioaddr != iobase)) { - /* - ** Card was found, but not at the right IO location. Continue - ** scanning from the next MCA slot up for another card. - */ - slot++; - continue; - } - - /* - ** Found the adapter we were looking for. Now start setting it up. - ** - ** First work on decoding the IRQ. It's stored in the lower 4 bits - ** of pos1. Bits are as follows (from the ADF file): - ** - ** Bits - ** 3 2 1 0 IRQ - ** -------------------- - ** 0 0 1 0 5 - ** 0 0 0 1 9 - ** 0 1 0 0 10 - ** 1 0 0 0 11 - * */ - where = pos[1] & 0x0f; - switch (where) { - case 1: - irq = 9; - break; - case 2: - irq = 5; - break; - case 4: - irq = 10; - break; - case 8: - irq = 11; - break; - default: - printk("%s: mca_probe IRQ error. You should never get here (%d).\n", dev->name, where); - return; - } - - /* - ** Shared memory address of adapter is stored in bits 3-5 of pos0. - ** They are mapped as follows: - ** - ** Bit - ** 5 4 3 Memory Addresses - ** 0 0 0 C0000-CFFFF (64K) - ** 1 0 0 C8000-CFFFF (32K) - ** 0 0 1 D0000-DFFFF (64K) - ** 1 0 1 D8000-DFFFF (32K) - ** 0 1 0 E0000-EFFFF (64K) - ** 1 1 0 E8000-EFFFF (32K) - */ - where = (pos[0] & 0x18) >> 3; - mem = 0xc0000 + (where * 0x10000); - if (pos[0] & 0x20) { - mem += 0x8000; - } + ** Search for the adapter. If an address has been given, search + ** specifically for the card at that address. Otherwise find the + ** first card in the system. + */ + + pos[0] = mca_device_read_stored_pos(mdev, 2); + pos[1] = mca_device_read_stored_pos(mdev, 3); - /* - ** Get everything allocated and initialized... (almost just - ** like the ISA and EISA probes) - */ - if (!request_region (iobase, DEPCA_TOTAL_SIZE, "depca")) { - if (autoprobed) - printk(KERN_WARNING "%s: region already allocated at 0x%04lx.\n", dev->name, iobase); - goto next; - } - if (DevicePresent(iobase) != 0) { - /* - ** If the MCA configuration says the card should be here, - ** it really should be here. - */ - printk(KERN_ERR "%s: MCA reports card at 0x%lx but it is not responding.\n", dev->name, iobase); - goto release_next; - } + /* + ** IO of card is handled by bits 1 and 2 of pos0. + ** + ** bit2 bit1 IO + ** 0 0 0x2c00 + ** 0 1 0x2c10 + ** 1 0 0x2c20 + ** 1 1 0x2c30 + */ + where = (pos[0] & 6) >> 1; + iobase = 0x2c00 + (0x10 * where); - if (!(dev = alloc_device(dev, iobase))) - goto release_next; + /* + ** Found the adapter we were looking for. Now start setting it up. + ** + ** First work on decoding the IRQ. It's stored in the lower 4 bits + ** of pos1. Bits are as follows (from the ADF file): + ** + ** Bits + ** 3 2 1 0 IRQ + ** -------------------- + ** 0 0 1 0 5 + ** 0 0 0 1 9 + ** 0 1 0 0 10 + ** 1 0 0 0 11 + */ + where = pos[1] & 0x0f; + switch (where) { + case 1: + irq = 9; + break; + case 2: + irq = 5; + break; + case 4: + irq = 10; + break; + case 8: + irq = 11; + break; + default: + printk("%s: mca_probe IRQ error. You should never get here (%d).\n", dev->name, where); + return -EINVAL; + } - num_eth++; - dev->irq = irq; - if (depca_hw_init(dev, iobase, slot)) - goto release_next; + /* + ** Shared memory address of adapter is stored in bits 3-5 of pos0. + ** They are mapped as follows: + ** + ** Bit + ** 5 4 3 Memory Addresses + ** 0 0 0 C0000-CFFFF (64K) + ** 1 0 0 C8000-CFFFF (32K) + ** 0 0 1 D0000-DFFFF (64K) + ** 1 0 1 D8000-DFFFF (32K) + ** 0 1 0 E0000-EFFFF (64K) + ** 1 1 0 E8000-EFFFF (32K) + */ + where = (pos[0] & 0x18) >> 3; + mem_start = 0xc0000 + (where * 0x10000); + if (pos[0] & 0x20) { + mem_start += 0x8000; + } + + /* claim the slot */ + strncpy(mdev->name, depca_mca_adapter_name[mdev->index], + sizeof(mdev->name)); + mca_device_set_claim(mdev, 1); + + /* + ** Get everything allocated and initialized... (almost just + ** like the ISA and EISA probes) + */ + irq = mca_device_transform_irq(mdev, irq); + iobase = mca_device_transform_ioport(mdev, iobase); + + if ((err = depca_common_init (iobase, &dev))) + goto out_unclaim; + + dev->irq = irq; + dev->base_addr = iobase; + lp = dev->priv; + lp->depca_bus = DEPCA_BUS_MCA; + lp->adapter = depca_mca_adapter_type[mdev->index]; + lp->mem_start = mem_start; + + if ((err = depca_hw_init(dev, device))) + goto out_free; - /* - ** Adapter initialized correctly: Name it in - ** /proc/mca. - */ - mca_set_adapter_name(slot, "DE210/212 Ethernet Adapter"); - mca_mark_as_used(slot); - num_depcas++; - - /* - ** If this is a probe by a module, return after setting up the - ** given card. - */ - if (ioaddr) - return; - - /* - ** Set up to check the next slot and loop. - */ - slot++; - continue; + return 0; - release_next: - release_region (iobase, DEPCA_TOTAL_SIZE); - next: - slot++; - } - } + out_free: + free_netdev (dev); + release_region (iobase, DEPCA_TOTAL_SIZE); + out_unclaim: + mca_device_set_claim(mdev, 0); - return; + return err;; } #endif /* ** ISA bus I/O device probe */ -static void __init isa_probe(struct net_device *dev, u_long ioaddr) + +static void depca_platform_release (struct device *device) { - int i = num_depcas, maxSlots; - s32 ports[] = DEPCA_IO_PORTS; + struct platform_device *pldev; - if (!ioaddr && autoprobed) - return; /* Been here before ! */ - if (ioaddr > 0x400) - return; /* EISA Address */ - if (i >= MAX_NUM_DEPCAS) - return; /* Too many ISA adapters */ - - if (ioaddr == 0) { /* Autoprobing */ - maxSlots = MAX_NUM_DEPCAS; - } else { /* Probe a specific location */ - ports[i] = ioaddr; - maxSlots = i + 1; - } - - for (; (i < maxSlots) && (dev != NULL) && ports[i]; i++) { - if (!request_region (ports[i], DEPCA_TOTAL_SIZE, "depca")) { - if (autoprobed) - printk("%s: region already allocated at 0x%04x.\n", dev->name, ports[i]); + /* free device */ + pldev = to_platform_device (device); + kfree (pldev); +} + +static void __init depca_platform_probe (void) +{ + int i; + struct platform_device *pldev; + + for (i = 0; depca_io_ports[i].iobase; i++) { + depca_io_ports[i].device = NULL; + + /* if an address has been specified on the command + * line, use it (if valid) */ + if (io && io != depca_io_ports[i].iobase) + continue; + + if (!(pldev = kmalloc (sizeof (*pldev), GFP_KERNEL))) continue; - } - if (DevicePresent(ports[i])) { - release_region (ports[i], DEPCA_TOTAL_SIZE); + memset (pldev, 0, sizeof (*pldev)); + pldev->name = depca_string; + pldev->id = i; + pldev->dev.platform_data = (void *) depca_io_ports[i].iobase; + pldev->dev.release = depca_platform_release; + depca_io_ports[i].device = pldev; + + if (platform_device_register (pldev)) { + kfree (pldev); + depca_io_ports[i].device = NULL; continue; } - if (!(dev = alloc_device(dev, ports[i]))) { - release_region (ports[i], DEPCA_TOTAL_SIZE); - continue; + if (!pldev->dev.driver) { + /* The driver was not bound to this device, there was + * no hardware at this address. Unregister it, as the + * release fuction will take care of freeing the + * allocated structure */ + + depca_io_ports[i].device = NULL; + platform_device_unregister (pldev); } + } +} - num_eth++; +static enum depca_type __init depca_shmem_probe (ulong *mem_start) +{ + u_long mem_base[] = DEPCA_RAM_BASE_ADDRESSES; + enum depca_type adapter = unknown; + int i; - if (depca_hw_init(dev, ports[i], -1)) { - release_region (ports[i], DEPCA_TOTAL_SIZE); - continue; - } + for (i = 0; mem_base[i]; i++) { + *mem_start = mem ? mem : mem_base[i]; + adapter = DepcaSignature (adapter_name, *mem_start); + if (adapter != unknown) + break; + } + + return adapter; +} - num_depcas++; +static int __init depca_isa_probe (struct device *device) +{ + struct net_device *dev; + struct depca_private *lp; + u_long ioaddr, mem_start = 0; + enum depca_type adapter = unknown; + int status = 0; + + ioaddr = (u_long) device->platform_data; + + if ((status = depca_common_init (ioaddr, &dev))) + goto out; + + adapter = depca_shmem_probe (&mem_start); + + if (adapter == unknown) { + status = -ENODEV; + goto out_free; } - return; + dev->base_addr = ioaddr; + dev->irq = irq; /* Use whatever value the user gave + * us, and 0 if he didn't. */ + lp = dev->priv; + lp->depca_bus = DEPCA_BUS_ISA; + lp->adapter = adapter; + lp->mem_start = mem_start; + + if ((status = depca_hw_init(dev, device))) + goto out_free; + + return 0; + + out_free: + free_netdev (dev); + release_region (ioaddr, DEPCA_TOTAL_SIZE); + out: + return status; } /* @@ -1504,202 +1582,120 @@ { struct eisa_device *edev; struct net_device *dev; - u_long iobase; + struct depca_private *lp; + u_long ioaddr, mem_start; int status = 0; edev = to_eisa_device (device); - iobase = edev->base_addr + DEPCA_EISA_IO_PORTS; + ioaddr = edev->base_addr + DEPCA_EISA_IO_PORTS; - if (!request_region (iobase, DEPCA_TOTAL_SIZE, "depca")) { - status = -EBUSY; + if ((status = depca_common_init (ioaddr, &dev))) goto out; - } - - if (DevicePresent(iobase)) { - status = -ENODEV; - goto out_release; - } - if (!(dev = init_etherdev (NULL, sizeof (struct depca_private)))) { - status = -ENOMEM; - goto out_release; - } - - eisa_set_drvdata (edev, dev); + /* It would have been nice to get card configuration from the + * card. Unfortunately, this register is write-only (shares + * it's address with the ethernet prom)... As we don't parse + * the EISA configuration structures (yet... :-), just rely on + * the ISA probing to sort it out... */ + + depca_shmem_probe (&mem_start); - if ((status = depca_hw_init(dev, iobase, -1))) + dev->base_addr = ioaddr; + dev->irq = irq; + lp = dev->priv; + lp->depca_bus = DEPCA_BUS_EISA; + lp->adapter = edev->id.driver_data; + lp->mem_start = mem_start; + + if ((status = depca_hw_init(dev, device))) goto out_free; - - num_depcas++; + return 0; out_free: - kfree (dev); - out_release: - release_region (iobase, DEPCA_TOTAL_SIZE); + free_netdev (dev); + release_region (ioaddr, DEPCA_TOTAL_SIZE); out: return status; } +#endif -static int __devexit depca_eisa_remove (struct device *device) +static int __devexit depca_device_remove (struct device *device) { struct net_device *dev; - struct eisa_device *edev; struct depca_private *lp; + int bus; - edev = to_eisa_device (device); - dev = eisa_get_drvdata (edev); + dev = device->driver_data; lp = dev->priv; unregister_netdev (dev); iounmap (lp->sh_mem); release_mem_region (lp->mem_start, lp->mem_len); release_region (dev->base_addr, DEPCA_TOTAL_SIZE); - kfree (dev); + bus = lp->depca_bus; + free_netdev (dev); return 0; } -#endif - -/* -** Search the entire 'eth' device list for a fixed probe. If a match isn't -** found then check for an autoprobe or unused device location. If they -** are not available then insert a new device structure at the end of -** the current list. -*/ -static struct net_device *__init alloc_device(struct net_device *dev, u_long iobase) -{ - struct net_device *adev = NULL; - int fixed = 0, new_dev = 0; - - num_eth = depca_dev_index(dev->name); - if (loading_module) - return dev; - - while (1) { - if (((dev->base_addr == DEPCA_NDA) || (dev->base_addr == 0)) && !adev) { - adev = dev; - } else if ((dev->priv == NULL) && (dev->base_addr == iobase)) { - fixed = 1; - } else { - if (dev->next == NULL) { - new_dev = 1; - } else if (strncmp(dev->next->name, "eth", 3) != 0) { - new_dev = 1; - } - } - if ((dev->next == NULL) || new_dev || fixed) - break; - dev = dev->next; - num_eth++; - } - if (adev && !fixed) { - dev = adev; - num_eth = depca_dev_index(dev->name); - new_dev = 0; - } - - if (((dev->next == NULL) && ((dev->base_addr != DEPCA_NDA) && (dev->base_addr != 0)) && !fixed) || new_dev) { - num_eth++; /* New device */ - dev = insert_device(dev, iobase, depca_probe); - } - - return dev; -} - -/* -** If at end of eth device list and can't use current entry, malloc -** one up. If memory could not be allocated, print an error message. -*/ -static struct net_device *__init insert_device(struct net_device *dev, u_long iobase, int (*init) (struct net_device *)) -{ - struct net_device *new; - - new = (struct net_device *) kmalloc(sizeof(struct net_device), GFP_KERNEL); - if (new == NULL) { - printk("eth%d: Device not initialised, insufficient memory\n", num_eth); - return NULL; - } else { - new->next = dev->next; - dev->next = new; - dev = dev->next; /* point to the new device */ - if (num_eth > 9999) { - sprintf(dev->name, "eth????"); /* New device name */ - } else { - sprintf(dev->name, "eth%d", num_eth); /* New device name */ - } - dev->base_addr = iobase; /* assign the io address */ - dev->init = init; /* initialisation routine */ - } - - return dev; -} - -static int __init depca_dev_index(char *s) -{ - int i = 0, j = 0; - - for (; *s; s++) { - if (isdigit(*s)) { - j = 1; - i = (i * 10) + (*s - '0'); - } else if (j) - break; - } - - return i; -} /* ** Look for a particular board name in the on-board Remote Diagnostics ** and Boot (readb) ROM. This will also give us a clue to the network RAM ** base address. */ -static void __init DepcaSignature(char *name, u_long paddr) +static int __init DepcaSignature(char *name, u_long base_addr) { u_int i, j, k; - const char *signatures[] = DEPCA_SIGNATURE; void *ptr; char tmpstr[16]; + u_long prom_addr = base_addr + 0xc000; + u_long mem_addr = base_addr + 0x8000; /* 32KB */ + + /* Can't reserve the prom region, it is already marked as + * used, at least on x86. Instead, reserve a memory region a + * board would certainly use. If it works, go ahead. If not, + * run like hell... */ + + if (!request_mem_region (mem_addr, 16, depca_string)) + return unknown; /* Copy the first 16 bytes of ROM */ - ptr = ioremap(paddr + 0xc000, 16); + + ptr = ioremap(prom_addr, 16); if (ptr == NULL) { - printk(KERN_ERR "depca: I/O remap failed at %lx\n", paddr + 0xc000); - adapter = unknown; - return; + printk(KERN_ERR "depca: I/O remap failed at %lx\n", prom_addr); + return unknown; } for (i = 0; i < 16; i++) { tmpstr[i] = readb(ptr + i); } iounmap(ptr); + release_mem_region (mem_addr, 16); + /* Check if PROM contains a valid string */ - for (i = 0; *signatures[i] != '\0'; i++) { - for (j = 0, k = 0; j < 16 && k < strlen(signatures[i]); j++) { - if (signatures[i][k] == tmpstr[j]) { /* track signature */ + for (i = 0; *depca_signature[i] != '\0'; i++) { + for (j = 0, k = 0; j < 16 && k < strlen(depca_signature[i]); j++) { + if (depca_signature[i][k] == tmpstr[j]) { /* track signature */ k++; } else { /* lost signature; begin search again */ k = 0; } } - if (k == strlen(signatures[i])) + if (k == strlen(depca_signature[i])) break; } /* Check if name string is valid, provided there's no PROM */ - if (*name && (i == unknown)) { - for (i = 0; *signatures[i] != '\0'; i++) { - if (strcmp(name, signatures[i]) == 0) + if (name && *name && (i == unknown)) { + for (i = 0; *depca_signature[i] != '\0'; i++) { + if (strcmp(name, depca_signature[i]) == 0) break; } } - /* Update search results */ - strcpy(name, signatures[i]); - adapter = i; - - return; + return i; } /* @@ -1773,10 +1769,11 @@ static int __init get_hw_addr(struct net_device *dev) { u_long ioaddr = dev->base_addr; + struct depca_private *lp = dev->priv; int i, k, tmp, status = 0; u_short j, x, chksum; - x = (((adapter == de100) || (adapter == de101)) ? 1 : 0); + x = (((lp->adapter == de100) || (lp->adapter == de101)) ? 1 : 0); for (i = 0, k = 0, j = 0; j < 3; j++) { k <<= 1; @@ -2083,55 +2080,40 @@ return status; } -#ifdef MODULE -static struct net_device thisDepca; -static int irq = 7; /* EDIT THESE LINE FOR YOUR CONFIGURATION */ -static int io = 0x200; /* Or use the irq= io= options to insmod */ -MODULE_PARM(irq, "i"); -MODULE_PARM(io, "i"); -MODULE_PARM_DESC(irq, "DEPCA IRQ number"); -MODULE_PARM_DESC(io, "DEPCA I/O base address"); - -/* See depca_probe() for autoprobe messages when a module */ -int init_module(void) +static int __init depca_module_init (void) { - thisDepca.irq = irq; - thisDepca.base_addr = io; - thisDepca.init = depca_probe; + int err = 0; - if (register_netdev(&thisDepca) != 0) - return -EIO; - - return 0; +#if CONFIG_MCA + err = mca_register_driver (&depca_mca_driver); +#endif +#ifdef CONFIG_EISA + err |= eisa_driver_register (&depca_eisa_driver); +#endif + err |= driver_register (&depca_isa_driver); + depca_platform_probe (); + + return err; } -void cleanup_module(void) +static void __exit depca_module_exit (void) { - struct depca_private *lp = thisDepca.priv; - - unregister_netdev(&thisDepca); - if (lp) { - iounmap(lp->sh_mem); - release_mem_region (lp->mem_start, lp->mem_len); -#ifdef CONFIG_MCA - if (lp->mca_slot != -1) - mca_mark_as_unused(lp->mca_slot); + int i; +#if CONFIG_MCA + mca_unregister_driver (&depca_mca_driver); #endif - kfree(lp); - thisDepca.priv = NULL; - } - thisDepca.irq = 0; +#ifdef CONFIG_EISA + eisa_driver_unregister (&depca_eisa_driver); +#endif + driver_unregister (&depca_isa_driver); - release_region(thisDepca.base_addr, DEPCA_TOTAL_SIZE); + for (i = 0; depca_io_ports[i].iobase; i++) { + if (depca_io_ports[i].device) { + platform_device_unregister (depca_io_ports[i].device); + depca_io_ports[i].device = NULL; + } + } } -#endif /* MODULE */ -MODULE_LICENSE("GPL"); - -/* - * Local variables: - * compile-command: "gcc -D__KERNEL__ -I/linux/include -Wall -Wstrict-prototypes -fomit-frame-pointer -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2 -O2 -m486 -c depca.c" - * - * compile-command: "gcc -D__KERNEL__ -DMODULE -I/linux/include -Wall -Wstrict-prototypes -fomit-frame-pointer -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2 -O2 -m486 -c depca.c" - * End: - */ +module_init (depca_module_init); +module_exit (depca_module_exit); diff -Nru a/drivers/net/dgrs.c b/drivers/net/dgrs.c --- a/drivers/net/dgrs.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/dgrs.c Mon Sep 22 00:30:18 2003 @@ -84,6 +84,7 @@ */ #include +#include #include #include #include @@ -120,7 +121,7 @@ #include "dgrs_asstruct.h" #include "dgrs_bcomm.h" -static struct pci_device_id dgrs_pci_tbl[] __initdata = { +static struct pci_device_id dgrs_pci_tbl[] = { { SE6_PCI_VENDOR_ID, SE6_PCI_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, }, { } /* Terminating entry */ }; diff -Nru a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h --- a/drivers/net/e1000/e1000.h Mon Sep 22 00:30:18 2003 +++ b/drivers/net/e1000/e1000.h Mon Sep 22 00:30:18 2003 @@ -122,7 +122,12 @@ #define E1000_RX_BUFFER_WRITE 16 /* Must be power of 2 */ #define AUTO_ALL_MODES 0 -#define E1000_EEPROM_APME 4 +#define E1000_EEPROM_APME 0x0400 + +#ifndef E1000_MASTER_SLAVE +/* Switch to override PHY master/slave setting */ +#define E1000_MASTER_SLAVE e1000_ms_hw_default +#endif /* only works for sizes that are powers of 2 */ #define E1000_ROUNDUP(i, size) ((i) = (((i) + (size) - 1) & ~((size) - 1))) @@ -180,6 +185,7 @@ spinlock_t stats_lock; atomic_t irq_sem; struct work_struct tx_timeout_task; + uint8_t fc_autoneg; struct timer_list blink_timer; unsigned long led_status; @@ -194,6 +200,7 @@ uint32_t tx_head_addr; uint32_t tx_fifo_size; atomic_t tx_fifo_stall; + boolean_t pcix_82544; /* RX */ struct e1000_desc_ring rx_ring; diff -Nru a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c --- a/drivers/net/e1000/e1000_ethtool.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/e1000/e1000_ethtool.c Mon Sep 22 00:30:21 2003 @@ -190,6 +190,55 @@ return 0; } +static int +e1000_ethtool_gpause(struct e1000_adapter *adapter, + struct ethtool_pauseparam *epause) +{ + struct e1000_hw *hw = &adapter->hw; + + epause->autoneg = + (adapter->fc_autoneg ? AUTONEG_ENABLE : AUTONEG_DISABLE); + + if(hw->fc == e1000_fc_rx_pause) + epause->rx_pause = 1; + else if(hw->fc == e1000_fc_tx_pause) + epause->tx_pause = 1; + else if(hw->fc == e1000_fc_full) { + epause->rx_pause = 1; + epause->tx_pause = 1; + } + + return 0; +} + +static int +e1000_ethtool_spause(struct e1000_adapter *adapter, + struct ethtool_pauseparam *epause) +{ + struct e1000_hw *hw = &adapter->hw; + + adapter->fc_autoneg = epause->autoneg; + + if(epause->rx_pause && epause->tx_pause) + hw->fc = e1000_fc_full; + else if(epause->rx_pause && !epause->tx_pause) + hw->fc = e1000_fc_rx_pause; + else if(!epause->rx_pause && epause->tx_pause) + hw->fc = e1000_fc_tx_pause; + else if(!epause->rx_pause && !epause->tx_pause) + hw->fc = e1000_fc_none; + + hw->original_fc = hw->fc; + + if(netif_running(adapter->netdev)) { + e1000_down(adapter); + e1000_up(adapter); + } else + e1000_reset(adapter); + + return 0; +} + static void e1000_ethtool_gdrvinfo(struct e1000_adapter *adapter, struct ethtool_drvinfo *drvinfo) @@ -958,9 +1007,13 @@ case e1000_82544: case e1000_82540: case e1000_82545: + case e1000_82545_rev_3: case e1000_82546: + case e1000_82546_rev_3: case e1000_82541: + case e1000_82541_rev_2: case e1000_82547: + case e1000_82547_rev_2: return e1000_integrated_phy_loopback(adapter); break; @@ -983,9 +1036,12 @@ { uint32_t rctl; - if(adapter->hw.media_type == e1000_media_type_fiber) { + if(adapter->hw.media_type == e1000_media_type_fiber || + adapter->hw.media_type == e1000_media_type_internal_serdes) { if(adapter->hw.mac_type == e1000_82545 || - adapter->hw.mac_type == e1000_82546) + adapter->hw.mac_type == e1000_82546 || + adapter->hw.mac_type == e1000_82545_rev_3 || + adapter->hw.mac_type == e1000_82546_rev_3) return e1000_set_phy_loopback(adapter); else { rctl = E1000_READ_REG(&adapter->hw, RCTL); @@ -1010,9 +1066,12 @@ E1000_WRITE_REG(&adapter->hw, RCTL, rctl); if(adapter->hw.media_type == e1000_media_type_copper || - (adapter->hw.media_type == e1000_media_type_fiber && + ((adapter->hw.media_type == e1000_media_type_fiber || + adapter->hw.media_type == e1000_media_type_internal_serdes) && (adapter->hw.mac_type == e1000_82545 || - adapter->hw.mac_type == e1000_82546))) { + adapter->hw.mac_type == e1000_82546 || + adapter->hw.mac_type == e1000_82545_rev_3 || + adapter->hw.mac_type == e1000_82546_rev_3))) { adapter->hw.autoneg = TRUE; e1000_read_phy_reg(&adapter->hw, PHY_CTRL, &phy_reg); if(phy_reg & MII_CR_LOOPBACK) { @@ -1114,7 +1173,7 @@ e1000_down(adapter); else e1000_reset(adapter); - + if(e1000_reg_test(adapter, &data[0])) eth_test->flags |= ETH_TEST_FL_FAILED; @@ -1162,6 +1221,7 @@ return; case E1000_DEV_ID_82546EB_FIBER: + case E1000_DEV_ID_82546GB_FIBER: /* Wake events only supported on port A for dual fiber */ if(E1000_READ_REG(hw, STATUS) & E1000_STATUS_FUNC_1) { wol->supported = 0; @@ -1200,6 +1260,7 @@ return wol->wolopts ? -EOPNOTSUPP : 0; case E1000_DEV_ID_82546EB_FIBER: + case E1000_DEV_ID_82546GB_FIBER: /* Wake events only supported on port A for dual fiber */ if(E1000_READ_REG(hw, STATUS) & E1000_STATUS_FUNC_1) return wol->wolopts ? -EOPNOTSUPP : 0; @@ -1436,6 +1497,19 @@ addr += offsetof(struct ethtool_eeprom, data); return e1000_ethtool_seeprom(adapter, &eeprom, addr); + } + case ETHTOOL_GPAUSEPARAM: { + struct ethtool_pauseparam epause = {ETHTOOL_GPAUSEPARAM}; + e1000_ethtool_gpause(adapter, &epause); + if(copy_to_user(addr, &epause, sizeof(epause))) + return -EFAULT; + return 0; + } + case ETHTOOL_SPAUSEPARAM: { + struct ethtool_pauseparam epause; + if(copy_from_user(&epause, addr, sizeof(epause))) + return -EFAULT; + return e1000_ethtool_spause(adapter, &epause); } case ETHTOOL_GSTATS: { struct { diff -Nru a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c --- a/drivers/net/e1000/e1000_hw.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/e1000/e1000_hw.c Mon Sep 22 00:30:25 2003 @@ -34,14 +34,15 @@ static int32_t e1000_set_phy_type(struct e1000_hw *hw); static void e1000_phy_init_script(struct e1000_hw *hw); -static int32_t e1000_setup_fiber_link(struct e1000_hw *hw); static int32_t e1000_setup_copper_link(struct e1000_hw *hw); +static int32_t e1000_setup_fiber_serdes_link(struct e1000_hw *hw); +static int32_t e1000_adjust_serdes_amplitude(struct e1000_hw *hw); static int32_t e1000_phy_force_speed_duplex(struct e1000_hw *hw); static int32_t e1000_config_mac_to_phy(struct e1000_hw *hw); -static int32_t e1000_force_mac_fc(struct e1000_hw *hw); static void e1000_raise_mdi_clk(struct e1000_hw *hw, uint32_t *ctrl); static void e1000_lower_mdi_clk(struct e1000_hw *hw, uint32_t *ctrl); -static void e1000_shift_out_mdi_bits(struct e1000_hw *hw, uint32_t data, uint16_t count); +static void e1000_shift_out_mdi_bits(struct e1000_hw *hw, uint32_t data, + uint16_t count); static uint16_t e1000_shift_in_mdi_bits(struct e1000_hw *hw); static int32_t e1000_phy_reset_dsp(struct e1000_hw *hw); static int32_t e1000_write_eeprom_spi(struct e1000_hw *hw, uint16_t offset, @@ -52,13 +53,30 @@ static int32_t e1000_spi_eeprom_ready(struct e1000_hw *hw); static void e1000_raise_ee_clk(struct e1000_hw *hw, uint32_t *eecd); static void e1000_lower_ee_clk(struct e1000_hw *hw, uint32_t *eecd); -static void e1000_shift_out_ee_bits(struct e1000_hw *hw, uint16_t data, uint16_t count); +static void e1000_shift_out_ee_bits(struct e1000_hw *hw, uint16_t data, + uint16_t count); +static int32_t e1000_write_phy_reg_ex(struct e1000_hw *hw, uint32_t reg_addr, + uint16_t phy_data); +static int32_t e1000_read_phy_reg_ex(struct e1000_hw *hw,uint32_t reg_addr, + uint16_t *phy_data); static uint16_t e1000_shift_in_ee_bits(struct e1000_hw *hw, uint16_t count); static int32_t e1000_acquire_eeprom(struct e1000_hw *hw); static void e1000_release_eeprom(struct e1000_hw *hw); static void e1000_standby_eeprom(struct e1000_hw *hw); static int32_t e1000_id_led_init(struct e1000_hw * hw); +static int32_t e1000_set_vco_speed(struct e1000_hw *hw); +/* IGP cable length table */ +static const +uint16_t e1000_igp_cable_length_table[IGP01E1000_AGC_LENGTH_TABLE_SIZE] = + { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 25, 25, 25, + 25, 25, 25, 25, 30, 30, 30, 30, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 50, 50, 50, 50, 50, 50, 50, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 70, 70, 70, 70, 70, 70, 80, 80, 80, 80, 80, 80, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120}; /****************************************************************************** @@ -100,50 +118,41 @@ DEBUGFUNC("e1000_phy_init_script"); if(hw->phy_init_script) { - msec_delay(10); + msec_delay(20); - e1000_write_phy_reg(hw,IGP01E1000_PHY_PAGE_SELECT,0x0000); e1000_write_phy_reg(hw,0x0000,0x0140); msec_delay(5); - e1000_write_phy_reg(hw,IGP01E1000_PHY_PAGE_SELECT,0x1F95); - e1000_write_phy_reg(hw,0x0015,0x0001); - e1000_write_phy_reg(hw,IGP01E1000_PHY_PAGE_SELECT,0x1F71); - e1000_write_phy_reg(hw,0x0011,0xBD21); + if(hw->mac_type == e1000_82541 || hw->mac_type == e1000_82547) { + e1000_write_phy_reg(hw, 0x1F95, 0x0001); + + e1000_write_phy_reg(hw, 0x1F71, 0xBD21); - e1000_write_phy_reg(hw,IGP01E1000_PHY_PAGE_SELECT,0x1F79); - e1000_write_phy_reg(hw,0x0019,0x0018); + e1000_write_phy_reg(hw, 0x1F79, 0x0018); - e1000_write_phy_reg(hw,IGP01E1000_PHY_PAGE_SELECT,0x1F30); - e1000_write_phy_reg(hw,0x0010,0x1600); + e1000_write_phy_reg(hw, 0x1F30, 0x1600); - e1000_write_phy_reg(hw,IGP01E1000_PHY_PAGE_SELECT,0x1F31); - e1000_write_phy_reg(hw,0x0011,0x0014); + e1000_write_phy_reg(hw, 0x1F31, 0x0014); - e1000_write_phy_reg(hw,IGP01E1000_PHY_PAGE_SELECT,0x1F32); - e1000_write_phy_reg(hw,0x0012,0x161C); + e1000_write_phy_reg(hw, 0x1F32, 0x161C); - e1000_write_phy_reg(hw,IGP01E1000_PHY_PAGE_SELECT,0x1F94); - e1000_write_phy_reg(hw,0x0014,0x0003); + e1000_write_phy_reg(hw, 0x1F94, 0x0003); - e1000_write_phy_reg(hw,IGP01E1000_PHY_PAGE_SELECT,0x1F96); - e1000_write_phy_reg(hw,0x0016,0x003F); + e1000_write_phy_reg(hw, 0x1F96, 0x003F); - e1000_write_phy_reg(hw,IGP01E1000_PHY_PAGE_SELECT,0x2010); - e1000_write_phy_reg(hw,0x0010,0x0008); + e1000_write_phy_reg(hw, 0x2010, 0x0008); + } else { + e1000_write_phy_reg(hw, 0x1F73, 0x0099); + } - e1000_write_phy_reg(hw,IGP01E1000_PHY_PAGE_SELECT,0x0000); - e1000_write_phy_reg(hw,0x0000,0x3300); + e1000_write_phy_reg(hw, 0x0000, 0x3300); if(hw->mac_type == e1000_82547) { uint16_t fused, fine, coarse; /* Move to analog registers page */ - e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT, - IGP01E1000_ANALOG_REGS_PAGE); - e1000_read_phy_reg(hw, IGP01E1000_ANALOG_SPARE_FUSE_STATUS, &fused); if(!(fused & IGP01E1000_ANALOG_SPARE_FUSE_ENABLED)) { @@ -158,17 +167,14 @@ } else if(coarse == IGP01E1000_ANALOG_FUSE_COARSE_THRESH) fine -= IGP01E1000_ANALOG_FUSE_FINE_10; - fused = (fused & IGP01E1000_ANALOG_FUSE_POLY_MASK) | - (fine & IGP01E1000_ANALOG_FUSE_FINE_MASK) | + fused = (fused & IGP01E1000_ANALOG_FUSE_POLY_MASK) | + (fine & IGP01E1000_ANALOG_FUSE_FINE_MASK) | (coarse & IGP01E1000_ANALOG_FUSE_COARSE_MASK); e1000_write_phy_reg(hw, IGP01E1000_ANALOG_FUSE_CONTROL, fused); - e1000_write_phy_reg(hw, IGP01E1000_ANALOG_FUSE_BYPASS, + e1000_write_phy_reg(hw, IGP01E1000_ANALOG_FUSE_BYPASS, IGP01E1000_ANALOG_FUSE_ENABLE_SW_CONTROL); } - /* Return to first page of registers */ - e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT, - IGP01E1000_IEEE_REGS_PAGE); } } } @@ -218,32 +224,89 @@ case E1000_DEV_ID_82545EM_FIBER: hw->mac_type = e1000_82545; break; + case E1000_DEV_ID_82545GM_COPPER: + case E1000_DEV_ID_82545GM_FIBER: + case E1000_DEV_ID_82545GM_SERDES: + hw->mac_type = e1000_82545_rev_3; + break; case E1000_DEV_ID_82546EB_COPPER: case E1000_DEV_ID_82546EB_FIBER: case E1000_DEV_ID_82546EB_QUAD_COPPER: hw->mac_type = e1000_82546; break; + case E1000_DEV_ID_82546GB_COPPER: + case E1000_DEV_ID_82546GB_FIBER: + case E1000_DEV_ID_82546GB_SERDES: + hw->mac_type = e1000_82546_rev_3; + break; case E1000_DEV_ID_82541EI: - case E1000_DEV_ID_82541EP: + case E1000_DEV_ID_82541EI_MOBILE: hw->mac_type = e1000_82541; break; + case E1000_DEV_ID_82541ER: + case E1000_DEV_ID_82541GI: + case E1000_DEV_ID_82541GI_MOBILE: + hw->mac_type = e1000_82541_rev_2; + break; case E1000_DEV_ID_82547EI: hw->mac_type = e1000_82547; break; + case E1000_DEV_ID_82547GI: + hw->mac_type = e1000_82547_rev_2; + break; default: /* Should never have loaded on this device */ return -E1000_ERR_MAC_TYPE; } - return E1000_SUCCESS; } + +/***************************************************************************** + * Set media type and TBI compatibility. + * + * hw - Struct containing variables accessed by shared code + * **************************************************************************/ +void +e1000_set_media_type(struct e1000_hw *hw) +{ + uint32_t status; + + DEBUGFUNC("e1000_set_media_type"); + + if(hw->mac_type != e1000_82543) { + /* tbi_compatibility is only valid on 82543 */ + hw->tbi_compatibility_en = FALSE; + } + + switch (hw->device_id) { + case E1000_DEV_ID_82545GM_SERDES: + case E1000_DEV_ID_82546GB_SERDES: + hw->media_type = e1000_media_type_internal_serdes; + break; + default: + if(hw->mac_type >= e1000_82543) { + status = E1000_READ_REG(hw, STATUS); + if(status & E1000_STATUS_TBIMODE) { + hw->media_type = e1000_media_type_fiber; + /* tbi_compatibility not valid on fiber */ + hw->tbi_compatibility_en = FALSE; + } else { + hw->media_type = e1000_media_type_copper; + } + } else { + /* This is an 82542 (fiber only) */ + hw->media_type = e1000_media_type_fiber; + } + } +} + /****************************************************************************** * Reset the transmit and receive units; mask and clear all interrupts. * * hw - Struct containing variables accessed by shared code *****************************************************************************/ -void +int32_t e1000_reset_hw(struct e1000_hw *hw) { uint32_t ctrl; @@ -280,49 +343,75 @@ */ msec_delay(10); - /* Issue a global reset to the MAC. This will reset the chip's - * transmit, receive, DMA, and link units. It will not effect - * the current PCI configuration. The global reset bit is self- - * clearing, and should clear within a microsecond. - */ - DEBUGOUT("Issuing a global reset to MAC\n"); ctrl = E1000_READ_REG(hw, CTRL); /* Must reset the PHY before resetting the MAC */ if((hw->mac_type == e1000_82541) || (hw->mac_type == e1000_82547)) { E1000_WRITE_REG_IO(hw, CTRL, (ctrl | E1000_CTRL_PHY_RST)); - msec_delay(5); + msec_delay(5); } + /* Issue a global reset to the MAC. This will reset the chip's + * transmit, receive, DMA, and link units. It will not effect + * the current PCI configuration. The global reset bit is self- + * clearing, and should clear within a microsecond. + */ + DEBUGOUT("Issuing a global reset to MAC\n"); + switch(hw->mac_type) { case e1000_82544: case e1000_82540: case e1000_82545: case e1000_82546: case e1000_82541: + case e1000_82541_rev_2: /* These controllers can't ack the 64-bit write when issuing the * reset, so use IO-mapping as a workaround to issue the reset */ E1000_WRITE_REG_IO(hw, CTRL, (ctrl | E1000_CTRL_RST)); break; + case e1000_82545_rev_3: + case e1000_82546_rev_3: + /* Reset is performed on a shadow of the control register */ + E1000_WRITE_REG(hw, CTRL_DUP, (ctrl | E1000_CTRL_RST)); + break; default: E1000_WRITE_REG(hw, CTRL, (ctrl | E1000_CTRL_RST)); break; } - /* Force a reload from the EEPROM if necessary */ - if(hw->mac_type < e1000_82540) { - /* Wait for reset to complete */ - udelay(10); - ctrl_ext = E1000_READ_REG(hw, CTRL_EXT); - ctrl_ext |= E1000_CTRL_EXT_EE_RST; - E1000_WRITE_REG(hw, CTRL_EXT, ctrl_ext); - E1000_WRITE_FLUSH(hw); - /* Wait for EEPROM reload */ - msec_delay(2); - } else { - /* Wait for EEPROM reload (it happens automatically) */ - msec_delay(5); - /* Dissable HW ARPs on ASF enabled adapters */ + /* After MAC reset, force reload of EEPROM to restore power-on settings to + * device. Later controllers reload the EEPROM automatically, so just wait + * for reload to complete. + */ + switch(hw->mac_type) { + case e1000_82542_rev2_0: + case e1000_82542_rev2_1: + case e1000_82543: + case e1000_82544: + /* Wait for reset to complete */ + udelay(10); + ctrl_ext = E1000_READ_REG(hw, CTRL_EXT); + ctrl_ext |= E1000_CTRL_EXT_EE_RST; + E1000_WRITE_REG(hw, CTRL_EXT, ctrl_ext); + E1000_WRITE_FLUSH(hw); + /* Wait for EEPROM reload */ + msec_delay(2); + break; + case e1000_82541: + case e1000_82541_rev_2: + case e1000_82547: + case e1000_82547_rev_2: + /* Wait for EEPROM reload */ + msec_delay(20); + break; + default: + /* Wait for EEPROM reload (it happens automatically) */ + msec_delay(5); + break; + } + + /* Disable HW ARPs on ASF enabled adapters */ + if(hw->mac_type >= e1000_82540) { manc = E1000_READ_REG(hw, MANC); manc &= ~(E1000_MANC_ARP_EN); E1000_WRITE_REG(hw, MANC, manc); @@ -350,6 +439,8 @@ if(hw->pci_cmd_word & CMD_MEM_WRT_INVALIDATE) e1000_pci_set_mwi(hw); } + + return E1000_SUCCESS; } /****************************************************************************** @@ -366,7 +457,7 @@ int32_t e1000_init_hw(struct e1000_hw *hw) { - uint32_t ctrl, status; + uint32_t ctrl; uint32_t i; int32_t ret_val; uint16_t pcix_cmd_word; @@ -377,31 +468,13 @@ DEBUGFUNC("e1000_init_hw"); /* Initialize Identification LED */ - ret_val = e1000_id_led_init(hw); - if(ret_val < 0) { + if((ret_val = e1000_id_led_init(hw))) { DEBUGOUT("Error Initializing Identification LED\n"); return ret_val; } - /* Set the Media Type and exit with error if it is not valid. */ - if(hw->mac_type != e1000_82543) { - /* tbi_compatibility is only valid on 82543 */ - hw->tbi_compatibility_en = FALSE; - } - - if(hw->mac_type >= e1000_82543) { - status = E1000_READ_REG(hw, STATUS); - if(status & E1000_STATUS_TBIMODE) { - hw->media_type = e1000_media_type_fiber; - /* tbi_compatibility not valid on fiber */ - hw->tbi_compatibility_en = FALSE; - } else { - hw->media_type = e1000_media_type_copper; - } - } else { - /* This is an 82542 (fiber only) */ - hw->media_type = e1000_media_type_fiber; - } + /* Set the media type and TBI compatibility */ + e1000_set_media_type(hw); /* Disabling VLAN filtering. */ DEBUGOUT("Initializing the IEEE VLAN\n"); @@ -446,21 +519,30 @@ E1000_WRITE_REG(hw, CTRL, ctrl | E1000_CTRL_PRIOR); } - /* Workaround for PCI-X problem when BIOS sets MMRBC incorrectly. */ - if(hw->bus_type == e1000_bus_type_pcix) { - e1000_read_pci_cfg(hw, PCIX_COMMAND_REGISTER, &pcix_cmd_word); - e1000_read_pci_cfg(hw, PCIX_STATUS_REGISTER_HI, &pcix_stat_hi_word); - cmd_mmrbc = (pcix_cmd_word & PCIX_COMMAND_MMRBC_MASK) >> - PCIX_COMMAND_MMRBC_SHIFT; - stat_mmrbc = (pcix_stat_hi_word & PCIX_STATUS_HI_MMRBC_MASK) >> - PCIX_STATUS_HI_MMRBC_SHIFT; - if(stat_mmrbc == PCIX_STATUS_HI_MMRBC_4K) - stat_mmrbc = PCIX_STATUS_HI_MMRBC_2K; - if(cmd_mmrbc > stat_mmrbc) { - pcix_cmd_word &= ~PCIX_COMMAND_MMRBC_MASK; - pcix_cmd_word |= stat_mmrbc << PCIX_COMMAND_MMRBC_SHIFT; - e1000_write_pci_cfg(hw, PCIX_COMMAND_REGISTER, &pcix_cmd_word); + switch(hw->mac_type) { + case e1000_82545_rev_3: + case e1000_82546_rev_3: + break; + default: + /* Workaround for PCI-X problem when BIOS sets MMRBC incorrectly. */ + if(hw->bus_type == e1000_bus_type_pcix) { + e1000_read_pci_cfg(hw, PCIX_COMMAND_REGISTER, &pcix_cmd_word); + e1000_read_pci_cfg(hw, PCIX_STATUS_REGISTER_HI, + &pcix_stat_hi_word); + cmd_mmrbc = (pcix_cmd_word & PCIX_COMMAND_MMRBC_MASK) >> + PCIX_COMMAND_MMRBC_SHIFT; + stat_mmrbc = (pcix_stat_hi_word & PCIX_STATUS_HI_MMRBC_MASK) >> + PCIX_STATUS_HI_MMRBC_SHIFT; + if(stat_mmrbc == PCIX_STATUS_HI_MMRBC_4K) + stat_mmrbc = PCIX_STATUS_HI_MMRBC_2K; + if(cmd_mmrbc > stat_mmrbc) { + pcix_cmd_word &= ~PCIX_COMMAND_MMRBC_MASK; + pcix_cmd_word |= stat_mmrbc << PCIX_COMMAND_MMRBC_SHIFT; + e1000_write_pci_cfg(hw, PCIX_COMMAND_REGISTER, + &pcix_cmd_word); + } } + break; } /* Call a subroutine to configure the link and setup flow control. */ @@ -484,6 +566,46 @@ } /****************************************************************************** + * Adjust SERDES output amplitude based on EEPROM setting. + * + * hw - Struct containing variables accessed by shared code. + *****************************************************************************/ +static int32_t +e1000_adjust_serdes_amplitude(struct e1000_hw *hw) +{ + uint16_t eeprom_data; + int32_t ret_val; + + DEBUGFUNC("e1000_adjust_serdes_amplitude"); + + if(hw->media_type != e1000_media_type_internal_serdes) + return E1000_SUCCESS; + + switch(hw->mac_type) { + case e1000_82545_rev_3: + case e1000_82546_rev_3: + break; + default: + return E1000_SUCCESS; + } + + if ((ret_val = e1000_read_eeprom(hw, EEPROM_SERDES_AMPLITUDE, 1, + &eeprom_data))) { + return ret_val; + } + + if(eeprom_data != EEPROM_RESERVED_WORD) { + /* Adjust SERDES output amplitude only. */ + eeprom_data &= EEPROM_SERDES_AMPLITUDE_MASK; + if((ret_val = e1000_write_phy_reg(hw, M88E1000_PHY_EXT_CTRL, + eeprom_data))) + return ret_val; + } + + return E1000_SUCCESS; +} + +/****************************************************************************** * Configures flow control and link settings. * * hw - Struct containing variables accessed by shared code @@ -554,9 +676,9 @@ } /* Call the necessary subroutine to configure the link. */ - ret_val = (hw->media_type == e1000_media_type_fiber) ? - e1000_setup_fiber_link(hw) : - e1000_setup_copper_link(hw); + ret_val = (hw->media_type == e1000_media_type_copper) ? + e1000_setup_copper_link(hw) : + e1000_setup_fiber_serdes_link(hw); /* Initialize the flow control address, type, and PAUSE timer * registers to their default values. This is done even if flow @@ -595,7 +717,7 @@ } /****************************************************************************** - * Sets up link for a fiber based adapter + * Sets up link for a fiber based or serdes based adapter * * hw - Struct containing variables accessed by shared code * @@ -604,28 +726,37 @@ * and receiver are not enabled. *****************************************************************************/ static int32_t -e1000_setup_fiber_link(struct e1000_hw *hw) +e1000_setup_fiber_serdes_link(struct e1000_hw *hw) { uint32_t ctrl; uint32_t status; uint32_t txcw = 0; uint32_t i; - uint32_t signal; + uint32_t signal = 0; int32_t ret_val; - DEBUGFUNC("e1000_setup_fiber_link"); + DEBUGFUNC("e1000_setup_fiber_serdes_link"); - /* On adapters with a MAC newer that 82544, SW Defineable pin 1 will be + /* On adapters with a MAC newer than 82544, SW Defineable pin 1 will be * set when the optics detect a signal. On older adapters, it will be - * cleared when there is a signal + * cleared when there is a signal. This applies to fiber media only. + * If we're on serdes media, adjust the output amplitude to value set in + * the EEPROM. */ ctrl = E1000_READ_REG(hw, CTRL); - if(hw->mac_type > e1000_82544) signal = E1000_CTRL_SWDPIN1; - else signal = 0; + if(hw->media_type == e1000_media_type_fiber) + signal = (hw->mac_type > e1000_82544) ? E1000_CTRL_SWDPIN1 : 0; + + if((ret_val = e1000_adjust_serdes_amplitude(hw))) + return ret_val; /* Take the link out of reset */ ctrl &= ~(E1000_CTRL_LRST); + /* Adjust VCO speed to improve BER performance */ + if((ret_val = e1000_set_vco_speed(hw))) + return ret_val; + e1000_config_collision_dist(hw); /* Check for a software override of the flow control settings, and setup @@ -692,8 +823,10 @@ * indication in the Device Status Register. Time-out if a link isn't * seen in 500 milliseconds seconds (Auto-negotiation should complete in * less than 500 milliseconds even if the other end is doing it in SW). + * For internal serdes, we just assume a signal is present, then poll. */ - if((E1000_READ_REG(hw, CTRL) & E1000_CTRL_SWDPIN1) == signal) { + if(hw->media_type == e1000_media_type_internal_serdes || + (E1000_READ_REG(hw, CTRL) & E1000_CTRL_SWDPIN1) == signal) { DEBUGOUT("Looking for Link\n"); for(i = 0; i < (LINK_UP_TIMEOUT / 10); i++) { msec_delay(10); @@ -701,19 +834,20 @@ if(status & E1000_STATUS_LU) break; } if(i == (LINK_UP_TIMEOUT / 10)) { - /* AutoNeg failed to achieve a link, so we'll call - * e1000_check_for_link. This routine will force the link up if we - * detect a signal. This will allow us to communicate with - * non-autonegotiating link partners. - */ DEBUGOUT("Never got a valid link from auto-neg!!!\n"); hw->autoneg_failed = 1; - ret_val = e1000_check_for_link(hw); - if(ret_val < 0) { - DEBUGOUT("Error while checking for link\n"); - return ret_val; + if(hw->media_type == e1000_media_type_fiber) { + /* AutoNeg failed to achieve a link, so we'll call + * e1000_check_for_link. This routine will force the link up if + * we detect a signal. This will allow us to communicate with + * non-autonegotiating link partners. + */ + if((ret_val = e1000_check_for_link(hw))) { + DEBUGOUT("Error while checking for link\n"); + return ret_val; + } + hw->autoneg_failed = 0; } - hw->autoneg_failed = 0; } else { hw->autoneg_failed = 0; DEBUGOUT("Valid Link Found\n"); @@ -721,7 +855,7 @@ } else { DEBUGOUT("No Signal Detected\n"); } - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -756,233 +890,281 @@ } /* Make sure we have a valid PHY */ - ret_val = e1000_detect_gig_phy(hw); - if(ret_val < 0) { + if((ret_val = e1000_detect_gig_phy(hw))) { DEBUGOUT("Error, did not detect valid phy.\n"); return ret_val; } DEBUGOUT1("Phy ID = %x \n", hw->phy_id); - if (hw->phy_type == e1000_phy_igp) { + if(hw->mac_type <= e1000_82543 || + hw->mac_type == e1000_82541 || hw->mac_type == e1000_82547 || + hw->mac_type == e1000_82541_rev_2 || hw->mac_type == e1000_82547_rev_2) + hw->phy_reset_disable = FALSE; - ret_val = e1000_phy_reset(hw); - if(ret_val < 0) { - DEBUGOUT("Error Resetting the PHY\n"); - return ret_val; - } + if(!hw->phy_reset_disable) { + if (hw->phy_type == e1000_phy_igp) { - /* Wait 10ms for MAC to configure PHY from eeprom settings */ - msec_delay(15); + if((ret_val = e1000_phy_reset(hw))) { + DEBUGOUT("Error Resetting the PHY\n"); + return ret_val; + } - if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT, 0x0000) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } + /* Wait 10ms for MAC to configure PHY from eeprom settings */ + msec_delay(15); - /* Configure activity LED after PHY reset */ - led_ctrl = E1000_READ_REG(hw, LEDCTL); - led_ctrl &= IGP_ACTIVITY_LED_MASK; - led_ctrl |= (IGP_ACTIVITY_LED_ENABLE | IGP_LED3_MODE); - E1000_WRITE_REG(hw, LEDCTL, led_ctrl); - - if(hw->autoneg_advertised == ADVERTISE_1000_FULL) { - /* Disable SmartSpeed */ - if(e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_CONFIG, - &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } - phy_data &= ~IGP01E1000_PSCFR_SMART_SPEED; - if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PORT_CONFIG, - phy_data) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } - /* Set auto Master/Slave resolution process */ - if(e1000_read_phy_reg(hw, PHY_1000T_CTRL, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; + /* Configure activity LED after PHY reset */ + led_ctrl = E1000_READ_REG(hw, LEDCTL); + led_ctrl &= IGP_ACTIVITY_LED_MASK; + led_ctrl |= (IGP_ACTIVITY_LED_ENABLE | IGP_LED3_MODE); + E1000_WRITE_REG(hw, LEDCTL, led_ctrl); + + /* disable lplu d3 during driver init */ + if((ret_val = e1000_set_d3_lplu_state(hw, FALSE))) { + DEBUGOUT("Error Disabling LPLU D3\n"); + return ret_val; } - phy_data &= ~CR_1000T_MS_ENABLE; - if(e1000_write_phy_reg(hw, PHY_1000T_CTRL, phy_data) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; + + /* Configure mdi-mdix settings */ + if((ret_val = e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_CTRL, + &phy_data))) + return ret_val; + + if((hw->mac_type == e1000_82541) || (hw->mac_type == e1000_82547)) { + hw->dsp_config_state = e1000_dsp_config_disabled; + /* Force MDI for IGP B-0 PHY */ + phy_data &= ~(IGP01E1000_PSCR_AUTO_MDIX | + IGP01E1000_PSCR_FORCE_MDI_MDIX); + hw->mdix = 1; + + } else { + hw->dsp_config_state = e1000_dsp_config_enabled; + phy_data &= ~IGP01E1000_PSCR_AUTO_MDIX; + + switch (hw->mdix) { + case 1: + phy_data &= ~IGP01E1000_PSCR_FORCE_MDI_MDIX; + break; + case 2: + phy_data |= IGP01E1000_PSCR_FORCE_MDI_MDIX; + break; + case 0: + default: + phy_data |= IGP01E1000_PSCR_AUTO_MDIX; + break; + } } - } + if((ret_val = e1000_write_phy_reg(hw, IGP01E1000_PHY_PORT_CTRL, + phy_data))) + return ret_val; - if(e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_CTRL, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + /* set auto-master slave resolution settings */ + if(hw->autoneg) { + e1000_ms_type phy_ms_setting = hw->master_slave; + + if(hw->ffe_config_state == e1000_ffe_config_active) + hw->ffe_config_state = e1000_ffe_config_enabled; + + if(hw->dsp_config_state == e1000_dsp_config_activated) + hw->dsp_config_state = e1000_dsp_config_enabled; + + /* when autonegotiation advertisment is only 1000Mbps then we + * should disable SmartSpeed and enable Auto MasterSlave + * resolution as hardware default. */ + if(hw->autoneg_advertised == ADVERTISE_1000_FULL) { + /* Disable SmartSpeed */ + if((ret_val = e1000_read_phy_reg(hw, + IGP01E1000_PHY_PORT_CONFIG, + &phy_data))) + return ret_val; + phy_data &= ~IGP01E1000_PSCFR_SMART_SPEED; + if((ret_val = e1000_write_phy_reg(hw, + IGP01E1000_PHY_PORT_CONFIG, + phy_data))) + return ret_val; + /* Set auto Master/Slave resolution process */ + if((ret_val = e1000_read_phy_reg(hw, PHY_1000T_CTRL, + &phy_data))) + return ret_val; + phy_data &= ~CR_1000T_MS_ENABLE; + if((ret_val = e1000_write_phy_reg(hw, PHY_1000T_CTRL, + phy_data))) + return ret_val; + } - /* Force MDI for IGP PHY */ - phy_data &= ~(IGP01E1000_PSCR_AUTO_MDIX | - IGP01E1000_PSCR_FORCE_MDI_MDIX); + if((ret_val = e1000_read_phy_reg(hw, PHY_1000T_CTRL, + &phy_data))) + return ret_val; - hw->mdix = 1; + /* load defaults for future use */ + hw->original_master_slave = (phy_data & CR_1000T_MS_ENABLE) ? + ((phy_data & CR_1000T_MS_VALUE) ? + e1000_ms_force_master : + e1000_ms_force_slave) : + e1000_ms_auto; + + switch (phy_ms_setting) { + case e1000_ms_force_master: + phy_data |= (CR_1000T_MS_ENABLE | CR_1000T_MS_VALUE); + break; + case e1000_ms_force_slave: + phy_data |= CR_1000T_MS_ENABLE; + phy_data &= ~(CR_1000T_MS_VALUE); + break; + case e1000_ms_auto: + phy_data &= ~CR_1000T_MS_ENABLE; + default: + break; + } + if((ret_val = e1000_write_phy_reg(hw, PHY_1000T_CTRL, + phy_data))) + return ret_val; + } + } else { + /* Enable CRS on TX. This must be set for half-duplex operation. */ + if((ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, + &phy_data))) + return ret_val; - if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PORT_CTRL, phy_data) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } + phy_data |= M88E1000_PSCR_ASSERT_CRS_ON_TX; - } else { - /* Enable CRS on TX. This must be set for half-duplex operation. */ - if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } - phy_data |= M88E1000_PSCR_ASSERT_CRS_ON_TX; + /* Options: + * MDI/MDI-X = 0 (default) + * 0 - Auto for all speeds + * 1 - MDI mode + * 2 - MDI-X mode + * 3 - Auto for 1000Base-T only (MDI-X for 10/100Base-T modes) + */ + phy_data &= ~M88E1000_PSCR_AUTO_X_MODE; - /* Options: - * MDI/MDI-X = 0 (default) - * 0 - Auto for all speeds - * 1 - MDI mode - * 2 - MDI-X mode - * 3 - Auto for 1000Base-T only (MDI-X for 10/100Base-T modes) - */ - phy_data &= ~M88E1000_PSCR_AUTO_X_MODE; + switch (hw->mdix) { + case 1: + phy_data |= M88E1000_PSCR_MDI_MANUAL_MODE; + break; + case 2: + phy_data |= M88E1000_PSCR_MDIX_MANUAL_MODE; + break; + case 3: + phy_data |= M88E1000_PSCR_AUTO_X_1000T; + break; + case 0: + default: + phy_data |= M88E1000_PSCR_AUTO_X_MODE; + break; + } - switch (hw->mdix) { - case 1: - phy_data |= M88E1000_PSCR_MDI_MANUAL_MODE; - break; - case 2: - phy_data |= M88E1000_PSCR_MDIX_MANUAL_MODE; - break; - case 3: - phy_data |= M88E1000_PSCR_AUTO_X_1000T; - break; - case 0: - default: - phy_data |= M88E1000_PSCR_AUTO_X_MODE; - break; - } + /* Options: + * disable_polarity_correction = 0 (default) + * Automatic Correction for Reversed Cable Polarity + * 0 - Disabled + * 1 - Enabled + */ + phy_data &= ~M88E1000_PSCR_POLARITY_REVERSAL; + if(hw->disable_polarity_correction == 1) + phy_data |= M88E1000_PSCR_POLARITY_REVERSAL; + if((ret_val = e1000_write_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, + phy_data))) + return ret_val; - /* Options: - * disable_polarity_correction = 0 (default) - * Automatic Correction for Reversed Cable Polarity - * 0 - Disabled - * 1 - Enabled - */ - phy_data &= ~M88E1000_PSCR_POLARITY_REVERSAL; - if(hw->disable_polarity_correction == 1) - phy_data |= M88E1000_PSCR_POLARITY_REVERSAL; - if(e1000_write_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, phy_data) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } + /* Force TX_CLK in the Extended PHY Specific Control Register + * to 25MHz clock. + */ + if((ret_val = e1000_read_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL, + &phy_data))) + return ret_val; - /* Force TX_CLK in the Extended PHY Specific Control Register - * to 25MHz clock. - */ - if(e1000_read_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } - phy_data |= M88E1000_EPSCR_TX_CLK_25; + phy_data |= M88E1000_EPSCR_TX_CLK_25; - if (hw->phy_revision < M88E1011_I_REV_4) { - /* Configure Master and Slave downshift values */ - phy_data &= ~(M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK | - M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK); - phy_data |= (M88E1000_EPSCR_MASTER_DOWNSHIFT_1X | - M88E1000_EPSCR_SLAVE_DOWNSHIFT_1X); - if(e1000_write_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL, - phy_data) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; + if (hw->phy_revision < M88E1011_I_REV_4) { + /* Configure Master and Slave downshift values */ + phy_data &= ~(M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK | + M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK); + phy_data |= (M88E1000_EPSCR_MASTER_DOWNSHIFT_1X | + M88E1000_EPSCR_SLAVE_DOWNSHIFT_1X); + if((ret_val = e1000_write_phy_reg(hw, + M88E1000_EXT_PHY_SPEC_CTRL, + phy_data))) + return ret_val; } - } - /* SW Reset the PHY so all changes take effect */ - ret_val = e1000_phy_reset(hw); - if(ret_val < 0) { - DEBUGOUT("Error Resetting the PHY\n"); - return ret_val; + /* SW Reset the PHY so all changes take effect */ + if((ret_val = e1000_phy_reset(hw))) { + DEBUGOUT("Error Resetting the PHY\n"); + return ret_val; + } } - } - /* Options: - * autoneg = 1 (default) - * PHY will advertise value(s) parsed from - * autoneg_advertised and fc - * autoneg = 0 - * PHY will be set to 10H, 10F, 100H, or 100F - * depending on value parsed from forced_speed_duplex. - */ + /* Options: + * autoneg = 1 (default) + * PHY will advertise value(s) parsed from + * autoneg_advertised and fc + * autoneg = 0 + * PHY will be set to 10H, 10F, 100H, or 100F + * depending on value parsed from forced_speed_duplex. + */ + + /* Is autoneg enabled? This is enabled by default or by software + * override. If so, call e1000_phy_setup_autoneg routine to parse the + * autoneg_advertised and fc options. If autoneg is NOT enabled, then + * the user should have provided a speed/duplex override. If so, then + * call e1000_phy_force_speed_duplex to parse and set this up. + */ + if(hw->autoneg) { + /* Perform some bounds checking on the hw->autoneg_advertised + * parameter. If this variable is zero, then set it to the default. + */ + hw->autoneg_advertised &= AUTONEG_ADVERTISE_SPEED_DEFAULT; - /* Is autoneg enabled? This is enabled by default or by software override. - * If so, call e1000_phy_setup_autoneg routine to parse the - * autoneg_advertised and fc options. If autoneg is NOT enabled, then the - * user should have provided a speed/duplex override. If so, then call - * e1000_phy_force_speed_duplex to parse and set this up. - */ - if(hw->autoneg) { - /* Perform some bounds checking on the hw->autoneg_advertised - * parameter. If this variable is zero, then set it to the default. - */ - hw->autoneg_advertised &= AUTONEG_ADVERTISE_SPEED_DEFAULT; + /* If autoneg_advertised is zero, we assume it was not defaulted + * by the calling code so we set to advertise full capability. + */ + if(hw->autoneg_advertised == 0) + hw->autoneg_advertised = AUTONEG_ADVERTISE_SPEED_DEFAULT; - /* If autoneg_advertised is zero, we assume it was not defaulted - * by the calling code so we set to advertise full capability. - */ - if(hw->autoneg_advertised == 0) - hw->autoneg_advertised = AUTONEG_ADVERTISE_SPEED_DEFAULT; + DEBUGOUT("Reconfiguring auto-neg advertisement params\n"); + if((ret_val = e1000_phy_setup_autoneg(hw))) { + DEBUGOUT("Error Setting up Auto-Negotiation\n"); + return ret_val; + } + DEBUGOUT("Restarting Auto-Neg\n"); - DEBUGOUT("Reconfiguring auto-neg advertisement params\n"); - ret_val = e1000_phy_setup_autoneg(hw); - if(ret_val < 0) { - DEBUGOUT("Error Setting up Auto-Negotiation\n"); - return ret_val; - } - DEBUGOUT("Restarting Auto-Neg\n"); + /* Restart auto-negotiation by setting the Auto Neg Enable bit and + * the Auto Neg Restart bit in the PHY control register. + */ + if((ret_val = e1000_read_phy_reg(hw, PHY_CTRL, &phy_data))) + return ret_val; - /* Restart auto-negotiation by setting the Auto Neg Enable bit and - * the Auto Neg Restart bit in the PHY control register. - */ - if(e1000_read_phy_reg(hw, PHY_CTRL, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } - phy_data |= (MII_CR_AUTO_NEG_EN | MII_CR_RESTART_AUTO_NEG); - if(e1000_write_phy_reg(hw, PHY_CTRL, phy_data) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } + phy_data |= (MII_CR_AUTO_NEG_EN | MII_CR_RESTART_AUTO_NEG); + if((ret_val = e1000_write_phy_reg(hw, PHY_CTRL, phy_data))) + return ret_val; - /* Does the user want to wait for Auto-Neg to complete here, or - * check at a later time (for example, callback routine). - */ - if(hw->wait_autoneg_complete) { - ret_val = e1000_wait_autoneg(hw); - if(ret_val < 0) { - DEBUGOUT("Error while waiting for autoneg to complete\n"); + /* Does the user want to wait for Auto-Neg to complete here, or + * check at a later time (for example, callback routine). + */ + if(hw->wait_autoneg_complete) { + if((ret_val = e1000_wait_autoneg(hw))) { + DEBUGOUT("Error while waiting for autoneg to complete\n"); + return ret_val; + } + } + hw->get_link_status = TRUE; + } else { + DEBUGOUT("Forcing speed and duplex\n"); + if((ret_val = e1000_phy_force_speed_duplex(hw))) { + DEBUGOUT("Error Forcing Speed and Duplex\n"); return ret_val; } } - hw->get_link_status = TRUE; - } else { - DEBUGOUT("Forcing speed and duplex\n"); - ret_val = e1000_phy_force_speed_duplex(hw); - if(ret_val < 0) { - DEBUGOUT("Error Forcing Speed and Duplex\n"); - return ret_val; - } - } + } /* !hw->phy_reset_disable */ /* Check link status. Wait up to 100 microseconds for link to become * valid. */ for(i = 0; i < 10; i++) { - if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } - if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &phy_data))) + return ret_val; + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &phy_data))) + return ret_val; + if(phy_data & MII_SR_LINK_STATUS) { /* We have link, so we need to finish the config process: * 1) Set up the MAC to the current PHY speed/duplex @@ -995,25 +1177,31 @@ if(hw->mac_type >= e1000_82544) { e1000_config_collision_dist(hw); } else { - ret_val = e1000_config_mac_to_phy(hw); - if(ret_val < 0) { + if((ret_val = e1000_config_mac_to_phy(hw))) { DEBUGOUT("Error configuring MAC to PHY settings\n"); return ret_val; - } + } } - ret_val = e1000_config_fc_after_link_up(hw); - if(ret_val < 0) { + if((ret_val = e1000_config_fc_after_link_up(hw))) { DEBUGOUT("Error Configuring Flow Control\n"); return ret_val; } DEBUGOUT("Valid link established!!!\n"); - return 0; + + if(hw->phy_type == e1000_phy_igp) { + if((ret_val = e1000_config_dsp_after_link_change(hw, TRUE))) { + DEBUGOUT("Error Configuring DSP after link up\n"); + return ret_val; + } + } + DEBUGOUT("Valid link established!!!\n"); + return E1000_SUCCESS; } udelay(10); } DEBUGOUT("Unable to establish link!!!\n"); - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -1024,22 +1212,20 @@ int32_t e1000_phy_setup_autoneg(struct e1000_hw *hw) { + int32_t ret_val; uint16_t mii_autoneg_adv_reg; uint16_t mii_1000t_ctrl_reg; DEBUGFUNC("e1000_phy_setup_autoneg"); /* Read the MII Auto-Neg Advertisement Register (Address 4). */ - if(e1000_read_phy_reg(hw, PHY_AUTONEG_ADV, &mii_autoneg_adv_reg) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_AUTONEG_ADV, + &mii_autoneg_adv_reg))) + return ret_val; /* Read the MII 1000Base-T Control Register (Address 9). */ - if(e1000_read_phy_reg(hw, PHY_1000T_CTRL, &mii_1000t_ctrl_reg) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_1000T_CTRL, &mii_1000t_ctrl_reg))) + return ret_val; /* Need to parse both autoneg_advertised and fc and set up * the appropriate PHY registers. First we will parse for @@ -1145,18 +1331,16 @@ return -E1000_ERR_CONFIG; } - if(e1000_write_phy_reg(hw, PHY_AUTONEG_ADV, mii_autoneg_adv_reg) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_write_phy_reg(hw, PHY_AUTONEG_ADV, + mii_autoneg_adv_reg))) + return ret_val; DEBUGOUT1("Auto-Neg Advertising %x\n", mii_autoneg_adv_reg); - if(e1000_write_phy_reg(hw, PHY_1000T_CTRL, mii_1000t_ctrl_reg) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } - return 0; + if((ret_val = e1000_write_phy_reg(hw, PHY_1000T_CTRL, mii_1000t_ctrl_reg))) + return ret_val; + + return E1000_SUCCESS; } /****************************************************************************** @@ -1192,10 +1376,8 @@ ctrl &= ~E1000_CTRL_ASDE; /* Read the MII Control Register. */ - if(e1000_read_phy_reg(hw, PHY_CTRL, &mii_ctrl_reg) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_CTRL, &mii_ctrl_reg))) + return ret_val; /* We need to disable autoneg in order to force link and duplex. */ @@ -1241,19 +1423,18 @@ E1000_WRITE_REG(hw, CTRL, ctrl); if (hw->phy_type == e1000_phy_m88) { - if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, + &phy_data))) + return ret_val; /* Clear Auto-Crossover to force MDI manually. M88E1000 requires MDI * forced whenever speed are duplex are forced. */ phy_data &= ~M88E1000_PSCR_AUTO_X_MODE; - if(e1000_write_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, phy_data) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_write_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, + phy_data))) + return ret_val; + DEBUGOUT1("M88E1000 PSCR: %x \n", phy_data); /* Need to reset the PHY or these changes will be ignored */ @@ -1262,26 +1443,23 @@ /* Clear Auto-Crossover to force MDI manually. IGP requires MDI * forced whenever speed or duplex are forced. */ - if(e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_CTRL, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_CTRL, + &phy_data))) + return ret_val; phy_data &= ~IGP01E1000_PSCR_AUTO_MDIX; phy_data &= ~IGP01E1000_PSCR_FORCE_MDI_MDIX; - if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PORT_CTRL, phy_data) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_write_phy_reg(hw, IGP01E1000_PHY_PORT_CTRL, + phy_data))) + return ret_val; } /* Write back the modified PHY MII control register. */ - if(e1000_write_phy_reg(hw, PHY_CTRL, mii_ctrl_reg) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } udelay(1); + if((ret_val = e1000_write_phy_reg(hw, PHY_CTRL, mii_ctrl_reg))) + return ret_val; + /* The wait_autoneg_complete flag may be a little misleading here. * Since we are forcing speed and duplex, Auto-Neg is not enabled. @@ -1300,22 +1478,18 @@ /* Read the MII Status Register and wait for Auto-Neg Complete bit * to be set. */ - if(e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } - if(e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg))) + return ret_val; + + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg))) + return ret_val; + if(mii_status_reg & MII_SR_LINK_STATUS) break; msec_delay(100); } if(i == 0) { /* We didn't get link */ /* Reset the DSP and wait again for link. */ - - ret_val = e1000_phy_reset_dsp(hw); - if(ret_val < 0) { + if((ret_val = e1000_phy_reset_dsp(hw))) { DEBUGOUT("Error Resetting PHY DSP\n"); return ret_val; } @@ -1327,14 +1501,11 @@ /* Read the MII Status Register and wait for Auto-Neg Complete bit * to be set. */ - if(e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } - if(e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg))) + return ret_val; + + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg))) + return ret_val; } } @@ -1343,30 +1514,29 @@ * Extended PHY Specific Control Register to 25MHz clock. This value * defaults back to a 2.5MHz clock when the PHY is reset. */ - if(e1000_read_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL, + &phy_data))) + return ret_val; + phy_data |= M88E1000_EPSCR_TX_CLK_25; - if(e1000_write_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL, phy_data) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_write_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL, + phy_data))) + return ret_val; /* In addition, because of the s/w reset above, we need to enable CRS on * TX. This must be set for both full and half duplex operation. */ - if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, + &phy_data))) + return ret_val; + phy_data |= M88E1000_PSCR_ASSERT_CRS_ON_TX; - if(e1000_write_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, phy_data) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_write_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, + phy_data))) + return ret_val; + } - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -1406,6 +1576,7 @@ e1000_config_mac_to_phy(struct e1000_hw *hw) { uint32_t ctrl; + int32_t ret_val; uint16_t phy_data; DEBUGFUNC("e1000_config_mac_to_phy"); @@ -1421,10 +1592,10 @@ * registers depending on negotiated values. */ if (hw->phy_type == e1000_phy_igp) { - if(e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_STATUS, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_STATUS, + &phy_data))) + return ret_val; + if(phy_data & IGP01E1000_PSSR_FULL_DUPLEX) ctrl |= E1000_CTRL_FD; else ctrl &= ~E1000_CTRL_FD; @@ -1440,10 +1611,10 @@ IGP01E1000_PSSR_SPEED_100MBPS) ctrl |= E1000_CTRL_SPD_100; } else { - if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, + &phy_data))) + return ret_val; + if(phy_data & M88E1000_PSSR_DPLX) ctrl |= E1000_CTRL_FD; else ctrl &= ~E1000_CTRL_FD; @@ -1459,7 +1630,7 @@ } /* Write the configured values back to the Device Control Reg. */ E1000_WRITE_REG(hw, CTRL, ctrl); - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -1473,7 +1644,7 @@ * by the PHY rather than the MAC. Software must also configure these * bits when link is forced on a fiber connection. *****************************************************************************/ -static int32_t +int32_t e1000_force_mac_fc(struct e1000_hw *hw) { uint32_t ctrl; @@ -1526,7 +1697,7 @@ ctrl &= (~E1000_CTRL_TFCE); E1000_WRITE_REG(hw, CTRL, ctrl); - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -1557,9 +1728,9 @@ * configuration of the MAC to match the "fc" parameter. */ if(((hw->media_type == e1000_media_type_fiber) && (hw->autoneg_failed)) || + ((hw->media_type == e1000_media_type_internal_serdes) && (hw->autoneg_failed)) || ((hw->media_type == e1000_media_type_copper) && (!hw->autoneg))) { - ret_val = e1000_force_mac_fc(hw); - if(ret_val < 0) { + if((ret_val = e1000_force_mac_fc(hw))) { DEBUGOUT("Error forcing flow control settings\n"); return ret_val; } @@ -1575,14 +1746,10 @@ * has completed. We read this twice because this reg has * some "sticky" (latched) bits. */ - if(e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg) < 0) { - DEBUGOUT("PHY Read Error \n"); - return -E1000_ERR_PHY; - } - if(e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg) < 0) { - DEBUGOUT("PHY Read Error \n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg))) + return ret_val; + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg))) + return ret_val; if(mii_status_reg & MII_SR_AUTONEG_COMPLETE) { /* The AutoNeg process has completed, so we now need to @@ -1591,14 +1758,12 @@ * Register (Address 5) to determine how flow control was * negotiated. */ - if(e1000_read_phy_reg(hw, PHY_AUTONEG_ADV, &mii_nway_adv_reg) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } - if(e1000_read_phy_reg(hw, PHY_LP_ABILITY, &mii_nway_lp_ability_reg) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_AUTONEG_ADV, + &mii_nway_adv_reg))) + return ret_val; + if((ret_val = e1000_read_phy_reg(hw, PHY_LP_ABILITY, + &mii_nway_lp_ability_reg))) + return ret_val; /* Two bits in the Auto Negotiation Advertisement Register * (Address 4) and two bits in the Auto Negotiation Base @@ -1704,7 +1869,7 @@ hw->original_fc == e1000_fc_tx_pause) { hw->fc = e1000_fc_none; DEBUGOUT("Flow Control = NONE.\r\n"); - } else { + } else if(!hw->fc_strict_ieee) { hw->fc = e1000_fc_rx_pause; DEBUGOUT("Flow Control = RX PAUSE frames only.\r\n"); } @@ -1713,7 +1878,10 @@ * negotiated to HALF DUPLEX, flow control should not be * enabled per IEEE 802.3 spec. */ - e1000_get_speed_and_duplex(hw, &speed, &duplex); + if((ret_val = e1000_get_speed_and_duplex(hw, &speed, &duplex))) { + DEBUGOUT("Error getting link speed and duplex\n"); + return ret_val; + } if(duplex == HALF_DUPLEX) hw->fc = e1000_fc_none; @@ -1721,16 +1889,15 @@ /* Now we call a subroutine to actually force the MAC * controller to use the correct flow control settings. */ - ret_val = e1000_force_mac_fc(hw); - if(ret_val < 0) { + if((ret_val = e1000_force_mac_fc(hw))) { DEBUGOUT("Error forcing flow control settings\n"); return ret_val; - } + } } else { DEBUGOUT("Copper PHY and Auto Neg has not completed.\r\n"); } } - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -1747,19 +1914,19 @@ uint32_t ctrl; uint32_t status; uint32_t rctl; - uint32_t signal; + uint32_t signal = 0; int32_t ret_val; uint16_t phy_data; uint16_t lp_capability; DEBUGFUNC("e1000_check_for_link"); - /* On adapters with a MAC newer that 82544, SW Defineable pin 1 will be + /* On adapters with a MAC newer than 82544, SW Defineable pin 1 will be * set when the optics detect a signal. On older adapters, it will be - * cleared when there is a signal + * cleared when there is a signal. This applies to fiber media only. */ - if(hw->mac_type > e1000_82544) signal = E1000_CTRL_SWDPIN1; - else signal = 0; + if(hw->media_type == e1000_media_type_fiber) + signal = (hw->mac_type > e1000_82544) ? E1000_CTRL_SWDPIN1 : 0; ctrl = E1000_READ_REG(hw, CTRL); status = E1000_READ_REG(hw, STATUS); @@ -1777,14 +1944,10 @@ * of the PHY. * Read the register twice since the link bit is sticky. */ - if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } - if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &phy_data))) + return ret_val; + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &phy_data))) + return ret_val; if(phy_data & MII_SR_LINK_STATUS) { hw->get_link_status = FALSE; @@ -1794,6 +1957,7 @@ } else { /* No link detected */ + e1000_config_dsp_after_link_change(hw, FALSE); return 0; } @@ -1802,6 +1966,9 @@ */ if(!hw->autoneg) return -E1000_ERR_CONFIG; + /* optimize the dsp settings for the igp phy */ + e1000_config_dsp_after_link_change(hw, TRUE); + /* We have a M88E1000 PHY and Auto-Neg is enabled. If we * have Si on board that is 82544 or newer, Auto * Speed Detection takes care of MAC speed/duplex @@ -1813,8 +1980,7 @@ if(hw->mac_type >= e1000_82544) e1000_config_collision_dist(hw); else { - ret_val = e1000_config_mac_to_phy(hw); - if(ret_val < 0) { + if((ret_val = e1000_config_mac_to_phy(hw))) { DEBUGOUT("Error configuring MAC to PHY settings\n"); return ret_val; } @@ -1824,8 +1990,7 @@ * need to restore the desired flow control settings because we may * have had to re-autoneg with a different link partner. */ - ret_val = e1000_config_fc_after_link_up(hw); - if(ret_val < 0) { + if((ret_val = e1000_config_fc_after_link_up(hw))) { DEBUGOUT("Error configuring flow control\n"); return ret_val; } @@ -1840,10 +2005,9 @@ * partner is TBI-based, and we turn on TBI Compatibility. */ if(hw->tbi_compatibility_en) { - if(e1000_read_phy_reg(hw, PHY_LP_ABILITY, &lp_capability) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_LP_ABILITY, + &lp_capability))) + return ret_val; if(lp_capability & (NWAY_LPAR_10T_HD_CAPS | NWAY_LPAR_10T_FD_CAPS | NWAY_LPAR_100TX_HD_CAPS | @@ -1900,8 +2064,7 @@ E1000_WRITE_REG(hw, CTRL, ctrl); /* Configure Flow Control after forcing link up. */ - ret_val = e1000_config_fc_after_link_up(hw); - if(ret_val < 0) { + if((ret_val = e1000_config_fc_after_link_up(hw))) { DEBUGOUT("Error configuring flow control\n"); return ret_val; } @@ -1918,7 +2081,7 @@ E1000_WRITE_REG(hw, TXCW, hw->txcw); E1000_WRITE_REG(hw, CTRL, (ctrl & ~E1000_CTRL_SLU)); } - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -1928,12 +2091,14 @@ * speed - Speed of the connection * duplex - Duplex setting of the connection *****************************************************************************/ -void +int32_t e1000_get_speed_and_duplex(struct e1000_hw *hw, uint16_t *speed, uint16_t *duplex) { uint32_t status; + int32_t ret_val; + uint16_t phy_data; DEBUGFUNC("e1000_get_speed_and_duplex"); @@ -1962,6 +2127,27 @@ *speed = SPEED_1000; *duplex = FULL_DUPLEX; } + + /* IGP01 PHY may advertise full duplex operation after speed downgrade even + * if it is operating at half duplex. Here we set the duplex settings to + * match the duplex in the link partner's capabilities. + */ + if(hw->phy_type == e1000_phy_igp && hw->speed_downgraded) { + if((ret_val = e1000_read_phy_reg(hw, PHY_AUTONEG_EXP, &phy_data))) + return ret_val; + + if(!(phy_data & NWAY_ER_LP_NWAY_CAPS)) + *duplex = HALF_DUPLEX; + else { + if((ret_val == e1000_read_phy_reg(hw, PHY_LP_ABILITY, &phy_data))) + return ret_val; + if((*speed == SPEED_100 && !(phy_data & NWAY_LPAR_100TX_FD_CAPS)) || + (*speed == SPEED_10 && !(phy_data & NWAY_LPAR_10T_FD_CAPS))) + *duplex = HALF_DUPLEX; + } + } + + return E1000_SUCCESS; } /****************************************************************************** @@ -1972,6 +2158,7 @@ int32_t e1000_wait_autoneg(struct e1000_hw *hw) { + int32_t ret_val; uint16_t i; uint16_t phy_data; @@ -1983,20 +2170,16 @@ /* Read the MII Status Register and wait for Auto-Neg * Complete bit to be set. */ - if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } - if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &phy_data))) + return ret_val; + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &phy_data))) + return ret_val; if(phy_data & MII_SR_AUTONEG_COMPLETE) { - return 0; + return E1000_SUCCESS; } msec_delay(100); } - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -2010,11 +2193,11 @@ uint32_t *ctrl) { /* Raise the clock input to the Management Data Clock (by setting the MDC - * bit), and then delay 2 microseconds. + * bit), and then delay 10 microseconds. */ E1000_WRITE_REG(hw, CTRL, (*ctrl | E1000_CTRL_MDC)); E1000_WRITE_FLUSH(hw); - udelay(2); + udelay(10); } /****************************************************************************** @@ -2028,11 +2211,11 @@ uint32_t *ctrl) { /* Lower the clock input to the Management Data Clock (by clearing the MDC - * bit), and then delay 2 microseconds. + * bit), and then delay 10 microseconds. */ E1000_WRITE_REG(hw, CTRL, (*ctrl & ~E1000_CTRL_MDC)); E1000_WRITE_FLUSH(hw); - udelay(2); + udelay(10); } /****************************************************************************** @@ -2076,7 +2259,7 @@ E1000_WRITE_REG(hw, CTRL, ctrl); E1000_WRITE_FLUSH(hw); - udelay(2); + udelay(10); e1000_raise_mdi_clk(hw, &ctrl); e1000_lower_mdi_clk(hw, &ctrl); @@ -2138,8 +2321,8 @@ } /***************************************************************************** -* Reads the value from a PHY register -* +* Reads the value from a PHY register, if the value is on a specific non zero +* page, sets the page first. * hw - Struct containing variables accessed by shared code * reg_addr - address of the PHY register to read ******************************************************************************/ @@ -2148,11 +2331,33 @@ uint32_t reg_addr, uint16_t *phy_data) { + uint32_t ret_val; + + DEBUGFUNC("e1000_read_phy_reg"); + + if(hw->phy_type == e1000_phy_igp && + (reg_addr > MAX_PHY_MULTI_PAGE_REG)) { + if((ret_val = e1000_write_phy_reg_ex(hw, IGP01E1000_PHY_PAGE_SELECT, + (uint16_t)reg_addr))) + return ret_val; + } + + ret_val = e1000_read_phy_reg_ex(hw, IGP01E1000_PHY_PAGE_SELECT & reg_addr, + phy_data); + + return ret_val; +} + +int32_t +e1000_read_phy_reg_ex(struct e1000_hw *hw, + uint32_t reg_addr, + uint16_t *phy_data) +{ uint32_t i; uint32_t mdic = 0; const uint32_t phy_addr = 1; - DEBUGFUNC("e1000_read_phy_reg"); + DEBUGFUNC("e1000_read_phy_reg_ex"); if(reg_addr > MAX_PHY_REG_ADDRESS) { DEBUGOUT1("PHY Address %d is out of range\n", reg_addr); @@ -2172,7 +2377,7 @@ /* Poll the ready bit to see if the MDI read completed */ for(i = 0; i < 64; i++) { - udelay(10); + udelay(50); mdic = E1000_READ_REG(hw, MDIC); if(mdic & E1000_MDIC_READY) break; } @@ -2214,7 +2419,7 @@ */ *phy_data = e1000_shift_in_mdi_bits(hw); } - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -2229,11 +2434,33 @@ uint32_t reg_addr, uint16_t phy_data) { + uint32_t ret_val; + + DEBUGFUNC("e1000_write_phy_reg"); + + if(hw->phy_type == e1000_phy_igp && + (reg_addr > MAX_PHY_MULTI_PAGE_REG)) { + if((ret_val = e1000_write_phy_reg_ex(hw, IGP01E1000_PHY_PAGE_SELECT, + (uint16_t)reg_addr))) + return ret_val; + } + + ret_val = e1000_write_phy_reg_ex(hw, IGP01E1000_PHY_PAGE_SELECT & reg_addr, + phy_data); + + return ret_val; +} + +int32_t +e1000_write_phy_reg_ex(struct e1000_hw *hw, + uint32_t reg_addr, + uint16_t phy_data) +{ uint32_t i; uint32_t mdic = 0; const uint32_t phy_addr = 1; - DEBUGFUNC("e1000_write_phy_reg"); + DEBUGFUNC("e1000_write_phy_reg_ex"); if(reg_addr > MAX_PHY_REG_ADDRESS) { DEBUGOUT1("PHY Address %d is out of range\n", reg_addr); @@ -2254,7 +2481,7 @@ /* Poll the ready bit to see if the MDI read completed */ for(i = 0; i < 64; i++) { - udelay(10); + udelay(50); mdic = E1000_READ_REG(hw, MDIC); if(mdic & E1000_MDIC_READY) break; } @@ -2284,7 +2511,7 @@ e1000_shift_out_mdi_bits(hw, mdic, 32); } - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -2329,11 +2556,6 @@ udelay(150); if((hw->mac_type == e1000_82541) || (hw->mac_type == e1000_82547)) { - if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT, 0x0000) < 0) { - DEBUGOUT("PHY Write Error\n"); - return; - } - /* Configure activity LED after PHY reset */ led_ctrl = E1000_READ_REG(hw, LEDCTL); led_ctrl &= IGP_ACTIVITY_LED_MASK; @@ -2352,24 +2574,26 @@ int32_t e1000_phy_reset(struct e1000_hw *hw) { + int32_t ret_val; uint16_t phy_data; DEBUGFUNC("e1000_phy_reset"); - if(e1000_read_phy_reg(hw, PHY_CTRL, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } - phy_data |= MII_CR_RESET; - if(e1000_write_phy_reg(hw, PHY_CTRL, phy_data) < 0) { - DEBUGOUT("PHY Write Error\n"); - return -E1000_ERR_PHY; - } - udelay(1); - if (hw->phy_type == e1000_phy_igp) { + if(hw->mac_type != e1000_82541_rev_2) { + if((ret_val = e1000_read_phy_reg(hw, PHY_CTRL, &phy_data))) + return ret_val; + + phy_data |= MII_CR_RESET; + if((ret_val = e1000_write_phy_reg(hw, PHY_CTRL, phy_data))) + return ret_val; + + udelay(1); + } else e1000_phy_hw_reset(hw); + + if(hw->phy_type == e1000_phy_igp) e1000_phy_init_script(hw); - } - return 0; + + return E1000_SUCCESS; } /****************************************************************************** @@ -2380,23 +2604,21 @@ int32_t e1000_detect_gig_phy(struct e1000_hw *hw) { + int32_t phy_init_status, ret_val; uint16_t phy_id_high, phy_id_low; boolean_t match = FALSE; - int32_t phy_init_status; DEBUGFUNC("e1000_detect_gig_phy"); /* Read the PHY ID Registers to identify which PHY is onboard. */ - if(e1000_read_phy_reg(hw, PHY_ID1, &phy_id_high) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_ID1, &phy_id_high))) + return ret_val; + hw->phy_id = (uint32_t) (phy_id_high << 16); udelay(20); - if(e1000_read_phy_reg(hw, PHY_ID2, &phy_id_low) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_ID2, &phy_id_low))) + return ret_val; + hw->phy_id |= (uint32_t) (phy_id_low & PHY_REVISION_MASK); hw->phy_revision = (uint32_t) phy_id_low & ~PHY_REVISION_MASK; @@ -2409,11 +2631,15 @@ break; case e1000_82540: case e1000_82545: + case e1000_82545_rev_3: case e1000_82546: + case e1000_82546_rev_3: if(hw->phy_id == M88E1011_I_PHY_ID) match = TRUE; break; case e1000_82541: + case e1000_82541_rev_2: case e1000_82547: + case e1000_82547_rev_2: if(hw->phy_id == IGP01E1000_I_PHY_ID) match = TRUE; break; default: @@ -2424,7 +2650,7 @@ if ((match) && (phy_init_status == E1000_SUCCESS)) { DEBUGOUT1("PHY ID 0x%X detected\n", hw->phy_id); - return 0; + return E1000_SUCCESS; } DEBUGOUT1("Invalid PHY ID 0x%X\n", hw->phy_id); return -E1000_ERR_PHY; @@ -2438,17 +2664,16 @@ static int32_t e1000_phy_reset_dsp(struct e1000_hw *hw) { - int32_t ret_val = -E1000_ERR_PHY; + int32_t ret_val; DEBUGFUNC("e1000_phy_reset_dsp"); do { - if(e1000_write_phy_reg(hw, 29, 0x001d) < 0) break; - if(e1000_write_phy_reg(hw, 30, 0x00c1) < 0) break; - if(e1000_write_phy_reg(hw, 30, 0x0000) < 0) break; - ret_val = 0; + if((ret_val = e1000_write_phy_reg(hw, 29, 0x001d))) break; + if((ret_val = e1000_write_phy_reg(hw, 30, 0x00c1))) break; + if((ret_val = e1000_write_phy_reg(hw, 30, 0x0000))) break; + ret_val = E1000_SUCCESS; } while(0); - if(ret_val < 0) DEBUGOUT("PHY Write Error\n"); return ret_val; } @@ -2459,8 +2684,10 @@ * phy_info - PHY information structure ******************************************************************************/ int32_t -e1000_phy_igp_get_info(struct e1000_hw *hw, struct e1000_phy_info *phy_info) +e1000_phy_igp_get_info(struct e1000_hw *hw, + struct e1000_phy_info *phy_info) { + int32_t ret_val; uint16_t phy_data, polarity, min_length, max_length, average; DEBUGFUNC("e1000_phy_igp_get_info"); @@ -2476,13 +2703,14 @@ phy_info->polarity_correction = e1000_polarity_reversal_enabled; /* Check polarity status */ - if(e1000_check_polarity(hw, &polarity) < 0) - return -E1000_ERR_PHY; + if((ret_val = e1000_check_polarity(hw, &polarity))) + return ret_val; phy_info->cable_polarity = polarity; - if(e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_STATUS, &phy_data) < 0) - return -E1000_ERR_PHY; + if((ret_val = e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_STATUS, + &phy_data))) + return ret_val; phy_info->mdix_mode = (phy_data & IGP01E1000_PSSR_MDIX) >> IGP01E1000_PSSR_MDIX_SHIFT; @@ -2490,8 +2718,8 @@ if((phy_data & IGP01E1000_PSSR_SPEED_MASK) == IGP01E1000_PSSR_SPEED_1000MBPS) { /* Local/Remote Receiver Information are only valid at 1000 Mbps */ - if(e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_data) < 0) - return -E1000_ERR_PHY; + if((ret_val = e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_data))) + return ret_val; phy_info->local_rx = (phy_data & SR_1000T_LOCAL_RX_STATUS) >> SR_1000T_LOCAL_RX_STATUS_SHIFT; @@ -2499,8 +2727,8 @@ SR_1000T_REMOTE_RX_STATUS_SHIFT; /* Get cable length */ - if(e1000_get_cable_length(hw, &min_length, &max_length) < 0) - return -E1000_ERR_PHY; + if((ret_val = e1000_get_cable_length(hw, &min_length, &max_length))) + return ret_val; /* transalte to old method */ average = (max_length + min_length) / 2; @@ -2527,8 +2755,10 @@ * phy_info - PHY information structure ******************************************************************************/ int32_t -e1000_phy_m88_get_info(struct e1000_hw *hw, struct e1000_phy_info *phy_info) +e1000_phy_m88_get_info(struct e1000_hw *hw, + struct e1000_phy_info *phy_info) { + int32_t ret_val; uint16_t phy_data, polarity; DEBUGFUNC("e1000_phy_m88_get_info"); @@ -2537,8 +2767,8 @@ * and it stored in the hw->speed_downgraded parameter. */ phy_info->downshift = hw->speed_downgraded; - if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data) < 0) - return -E1000_ERR_PHY; + if((ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data))) + return ret_val; phy_info->extended_10bt_distance = (phy_data & M88E1000_PSCR_10BT_EXT_DIST_ENABLE) >> @@ -2548,13 +2778,13 @@ M88E1000_PSCR_POLARITY_REVERSAL_SHIFT; /* Check polarity status */ - if(e1000_check_polarity(hw, &polarity) < 0) - return -E1000_ERR_PHY; + if((ret_val = e1000_check_polarity(hw, &polarity))) + return ret_val; phy_info->cable_polarity = polarity; - if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, &phy_data) < 0) - return -E1000_ERR_PHY; + if((ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, &phy_data))) + return ret_val; phy_info->mdix_mode = (phy_data & M88E1000_PSSR_MDIX) >> M88E1000_PSSR_MDIX_SHIFT; @@ -2566,8 +2796,8 @@ phy_info->cable_length = ((phy_data & M88E1000_PSSR_CABLE_LENGTH) >> M88E1000_PSSR_CABLE_LENGTH_SHIFT); - if(e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_data) < 0) - return -E1000_ERR_PHY; + if((ret_val = e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_data))) + return ret_val; phy_info->local_rx = (phy_data & SR_1000T_LOCAL_RX_STATUS) >> SR_1000T_LOCAL_RX_STATUS_SHIFT; @@ -2589,6 +2819,7 @@ e1000_phy_get_info(struct e1000_hw *hw, struct e1000_phy_info *phy_info) { + int32_t ret_val; uint16_t phy_data; DEBUGFUNC("e1000_phy_get_info"); @@ -2607,20 +2838,18 @@ return -E1000_ERR_CONFIG; } - if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } - if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &phy_data))) + return ret_val; + + if((ret_val = e1000_read_phy_reg(hw, PHY_STATUS, &phy_data))) + return ret_val; + if((phy_data & MII_SR_LINK_STATUS) != MII_SR_LINK_STATUS) { DEBUGOUT("PHY info is only valid if link is up\n"); return -E1000_ERR_CONFIG; } - if (hw->phy_type == e1000_phy_igp) + if(hw->phy_type == e1000_phy_igp) return e1000_phy_igp_get_info(hw, phy_info); else return e1000_phy_m88_get_info(hw, phy_info); @@ -2636,7 +2865,7 @@ hw->mdix = 1; return -E1000_ERR_CONFIG; } - return 0; + return E1000_SUCCESS; } @@ -2668,7 +2897,9 @@ break; case e1000_82540: case e1000_82545: + case e1000_82545_rev_3: case e1000_82546: + case e1000_82546_rev_3: eeprom->type = e1000_eeprom_microwire; eeprom->opcode_bits = 3; eeprom->delay_usec = 50; @@ -2681,8 +2912,9 @@ } break; case e1000_82541: + case e1000_82541_rev_2: case e1000_82547: - default: + case e1000_82547_rev_2: if (eecd & E1000_EECD_TYPE) { eeprom->type = e1000_eeprom_spi; eeprom->opcode_bits = 8; @@ -2707,6 +2939,18 @@ } } break; + default: + eeprom->type = e1000_eeprom_spi; + eeprom->opcode_bits = 8; + eeprom->delay_usec = 1; + if (eecd & E1000_EECD_ADDR_BITS) { + eeprom->page_size = 32; + eeprom->address_bits = 16; + } else { + eeprom->page_size = 8; + eeprom->address_bits = 8; + } + break; } if (eeprom->type == e1000_eeprom_spi) { @@ -2715,28 +2959,28 @@ eeprom_size &= EEPROM_SIZE_MASK; switch (eeprom_size) { - case EEPROM_SIZE_16KB: - eeprom->word_size = 8192; - break; - case EEPROM_SIZE_8KB: - eeprom->word_size = 4096; - break; - case EEPROM_SIZE_4KB: - eeprom->word_size = 2048; - break; - case EEPROM_SIZE_2KB: - eeprom->word_size = 1024; - break; - case EEPROM_SIZE_1KB: - eeprom->word_size = 512; - break; - case EEPROM_SIZE_512B: - eeprom->word_size = 256; - break; - case EEPROM_SIZE_128B: - default: - eeprom->word_size = 64; - break; + case EEPROM_SIZE_16KB: + eeprom->word_size = 8192; + break; + case EEPROM_SIZE_8KB: + eeprom->word_size = 4096; + break; + case EEPROM_SIZE_4KB: + eeprom->word_size = 2048; + break; + case EEPROM_SIZE_2KB: + eeprom->word_size = 1024; + break; + case EEPROM_SIZE_1KB: + eeprom->word_size = 512; + break; + case EEPROM_SIZE_512B: + eeprom->word_size = 256; + break; + case EEPROM_SIZE_128B: + default: + eeprom->word_size = 64; + break; } } } @@ -2841,7 +3085,8 @@ * hw - Struct containing variables accessed by shared code *****************************************************************************/ static uint16_t -e1000_shift_in_ee_bits(struct e1000_hw *hw, uint16_t count) +e1000_shift_in_ee_bits(struct e1000_hw *hw, + uint16_t count) { uint32_t eecd; uint32_t i; @@ -3101,13 +3346,17 @@ } /* Prepare the EEPROM for reading */ - if (e1000_acquire_eeprom(hw) != E1000_SUCCESS) + if(e1000_acquire_eeprom(hw) != E1000_SUCCESS) return -E1000_ERR_EEPROM; if(eeprom->type == e1000_eeprom_spi) { + uint16_t word_in; uint8_t read_opcode = EEPROM_READ_OPCODE_SPI; - if(e1000_spi_eeprom_ready(hw)) return -E1000_ERR_EEPROM; + if(e1000_spi_eeprom_ready(hw)) { + e1000_release_eeprom(hw); + return -E1000_ERR_EEPROM; + } e1000_standby_eeprom(hw); @@ -3118,30 +3367,35 @@ /* Send the READ command (opcode + addr) */ e1000_shift_out_ee_bits(hw, read_opcode, eeprom->opcode_bits); e1000_shift_out_ee_bits(hw, (uint16_t)(offset*2), eeprom->address_bits); - } - else if(eeprom->type == e1000_eeprom_microwire) { - /* Send the READ command (opcode + addr) */ - e1000_shift_out_ee_bits(hw, EEPROM_READ_OPCODE_MICROWIRE, - eeprom->opcode_bits); - e1000_shift_out_ee_bits(hw, offset, eeprom->address_bits); - } - /* Read the data. The address of the eeprom internally increments with - * each word (microwire) or byte (spi) being read, saving on the overhead - * of eeprom setup and tear-down. The address counter will roll over if - * reading beyond the size of the eeprom, thus allowing the entire memory - * to be read starting from any offset. */ - for (i = 0; i < words; i++) { - uint16_t word_in = e1000_shift_in_ee_bits(hw, 16); - if (eeprom->type == e1000_eeprom_spi) - word_in = (word_in >> 8) | (word_in << 8); - data[i] = word_in; + /* Read the data. The address of the eeprom internally increments with + * each byte (spi) being read, saving on the overhead of eeprom setup + * and tear-down. The address counter will roll over if reading beyond + * the size of the eeprom, thus allowing the entire memory to be read + * starting from any offset. */ + for (i = 0; i < words; i++) { + word_in = e1000_shift_in_ee_bits(hw, 16); + data[i] = (word_in >> 8) | (word_in << 8); + } + } else if(eeprom->type == e1000_eeprom_microwire) { + for (i = 0; i < words; i++) { + /* Send the READ command (opcode + addr) */ + e1000_shift_out_ee_bits(hw, EEPROM_READ_OPCODE_MICROWIRE, + eeprom->opcode_bits); + e1000_shift_out_ee_bits(hw, (uint16_t)(offset + i), + eeprom->address_bits); + + /* Read the data. For microwire, each word requires the overhead + * of eeprom setup and tear-down. */ + data[i] = e1000_shift_in_ee_bits(hw, 16); + e1000_standby_eeprom(hw); + } } /* End this read operation */ e1000_release_eeprom(hw); - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -3169,9 +3423,9 @@ checksum += eeprom_data; } - if(checksum == (uint16_t) EEPROM_SUM) { - return 0; - } else { + if(checksum == (uint16_t) EEPROM_SUM) + return E1000_SUCCESS; + else { DEBUGOUT("EEPROM Checksum Invalid\n"); return -E1000_ERR_EEPROM; } @@ -3205,7 +3459,7 @@ DEBUGOUT("EEPROM Write Error\n"); return -E1000_ERR_EEPROM; } - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -3403,7 +3657,7 @@ e1000_shift_out_ee_bits(hw, 0, (uint16_t)(eeprom->address_bits - 2)); - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -3437,7 +3691,7 @@ /* Save word 1 in lower half of part_num */ *part_num |= eeprom_data; - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -3463,7 +3717,7 @@ hw->perm_mac_addr[i] = (uint8_t) (eeprom_data & 0x00FF); hw->perm_mac_addr[i+1] = (uint8_t) (eeprom_data >> 8); } - if((hw->mac_type == e1000_82546) && + if(((hw->mac_type == e1000_82546) || (hw->mac_type == e1000_82546_rev_3)) && (E1000_READ_REG(hw, STATUS) & E1000_STATUS_FUNC_1)) { if(hw->perm_mac_addr[5] & 0x01) hw->perm_mac_addr[5] &= ~(0x01); @@ -3472,7 +3726,7 @@ } for(i = 0; i < NODE_ADDRESS_SIZE; i++) hw->mac_addr[i] = hw->perm_mac_addr[i]; - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -3748,7 +4002,7 @@ if(hw->mac_type < e1000_82540) { /* Nothing to do */ - return 0; + return E1000_SUCCESS; } ledctl = E1000_READ_REG(hw, LEDCTL); @@ -3799,7 +4053,7 @@ break; } } - return 0; + return E1000_SUCCESS; } /****************************************************************************** @@ -3811,49 +4065,48 @@ e1000_setup_led(struct e1000_hw *hw) { uint32_t ledctl; + int32_t ret_val = E1000_SUCCESS; DEBUGFUNC("e1000_setup_led"); - switch(hw->device_id) { - case E1000_DEV_ID_82542: - case E1000_DEV_ID_82543GC_FIBER: - case E1000_DEV_ID_82543GC_COPPER: - case E1000_DEV_ID_82544EI_COPPER: - case E1000_DEV_ID_82544EI_FIBER: - case E1000_DEV_ID_82544GC_COPPER: - case E1000_DEV_ID_82544GC_LOM: + switch(hw->mac_type) { + case e1000_82542_rev2_0: + case e1000_82542_rev2_1: + case e1000_82543: + case e1000_82544: /* No setup necessary */ break; - case E1000_DEV_ID_82545EM_FIBER: - case E1000_DEV_ID_82546EB_FIBER: - ledctl = E1000_READ_REG(hw, LEDCTL); - /* Save current LEDCTL settings */ - hw->ledctl_default = ledctl; - /* Turn off LED0 */ - ledctl &= ~(E1000_LEDCTL_LED0_IVRT | - E1000_LEDCTL_LED0_BLINK | - E1000_LEDCTL_LED0_MODE_MASK); - ledctl |= (E1000_LEDCTL_MODE_LED_OFF << E1000_LEDCTL_LED0_MODE_SHIFT); - E1000_WRITE_REG(hw, LEDCTL, ledctl); - break; - case E1000_DEV_ID_82540EP: - case E1000_DEV_ID_82540EP_LOM: - case E1000_DEV_ID_82540EP_LP: - case E1000_DEV_ID_82540EM: - case E1000_DEV_ID_82540EM_LOM: - case E1000_DEV_ID_82545EM_COPPER: - case E1000_DEV_ID_82546EB_COPPER: - case E1000_DEV_ID_82546EB_QUAD_COPPER: - case E1000_DEV_ID_82541EI: - case E1000_DEV_ID_82541EP: - case E1000_DEV_ID_82547EI: - E1000_WRITE_REG(hw, LEDCTL, hw->ledctl_mode1); - break; + case e1000_82541: + case e1000_82547: + case e1000_82541_rev_2: + case e1000_82547_rev_2: + /* Turn off PHY Smart Power Down (if enabled) */ + if((ret_val = e1000_read_phy_reg(hw, IGP01E1000_GMII_FIFO, + &hw->phy_spd_default))) + return ret_val; + if((ret_val = e1000_write_phy_reg(hw, IGP01E1000_GMII_FIFO, + (uint16_t)(hw->phy_spd_default & + ~IGP01E1000_GMII_SPD)))) + return ret_val; + /* Fall Through */ default: - DEBUGOUT("Invalid device ID\n"); - return -E1000_ERR_CONFIG; + if(hw->media_type == e1000_media_type_fiber) { + ledctl = E1000_READ_REG(hw, LEDCTL); + /* Save current LEDCTL settings */ + hw->ledctl_default = ledctl; + /* Turn off LED0 */ + ledctl &= ~(E1000_LEDCTL_LED0_IVRT | + E1000_LEDCTL_LED0_BLINK | + E1000_LEDCTL_LED0_MODE_MASK); + ledctl |= (E1000_LEDCTL_MODE_LED_OFF << + E1000_LEDCTL_LED0_MODE_SHIFT); + E1000_WRITE_REG(hw, LEDCTL, ledctl); + } else if(hw->media_type == e1000_media_type_copper) + E1000_WRITE_REG(hw, LEDCTL, hw->ledctl_mode1); + break; } - return 0; + + return E1000_SUCCESS; } /****************************************************************************** @@ -3864,39 +4117,33 @@ int32_t e1000_cleanup_led(struct e1000_hw *hw) { + int32_t ret_val = E1000_SUCCESS; + DEBUGFUNC("e1000_cleanup_led"); - switch(hw->device_id) { - case E1000_DEV_ID_82542: - case E1000_DEV_ID_82543GC_FIBER: - case E1000_DEV_ID_82543GC_COPPER: - case E1000_DEV_ID_82544EI_COPPER: - case E1000_DEV_ID_82544EI_FIBER: - case E1000_DEV_ID_82544GC_COPPER: - case E1000_DEV_ID_82544GC_LOM: + switch(hw->mac_type) { + case e1000_82542_rev2_0: + case e1000_82542_rev2_1: + case e1000_82543: + case e1000_82544: /* No cleanup necessary */ break; - case E1000_DEV_ID_82540EP: - case E1000_DEV_ID_82540EP_LOM: - case E1000_DEV_ID_82540EP_LP: - case E1000_DEV_ID_82540EM: - case E1000_DEV_ID_82540EM_LOM: - case E1000_DEV_ID_82545EM_COPPER: - case E1000_DEV_ID_82545EM_FIBER: - case E1000_DEV_ID_82546EB_COPPER: - case E1000_DEV_ID_82546EB_FIBER: - case E1000_DEV_ID_82546EB_QUAD_COPPER: - case E1000_DEV_ID_82541EI: - case E1000_DEV_ID_82541EP: - case E1000_DEV_ID_82547EI: + case e1000_82541: + case e1000_82547: + case e1000_82541_rev_2: + case e1000_82547_rev_2: + /* Turn on PHY Smart Power Down (if previously enabled) */ + if((ret_val = e1000_write_phy_reg(hw, IGP01E1000_GMII_FIFO, + hw->phy_spd_default))) + return ret_val; + /* Fall Through */ + default: /* Restore LEDCTL settings */ E1000_WRITE_REG(hw, LEDCTL, hw->ledctl_default); break; - default: - DEBUGOUT("Invalid device ID\n"); - return -E1000_ERR_CONFIG; } - return 0; + + return E1000_SUCCESS; } /****************************************************************************** @@ -3907,50 +4154,44 @@ int32_t e1000_led_on(struct e1000_hw *hw) { - uint32_t ctrl; + uint32_t ctrl = E1000_READ_REG(hw, CTRL); DEBUGFUNC("e1000_led_on"); - switch(hw->device_id) { - case E1000_DEV_ID_82542: - case E1000_DEV_ID_82543GC_FIBER: - case E1000_DEV_ID_82543GC_COPPER: - case E1000_DEV_ID_82544EI_FIBER: - ctrl = E1000_READ_REG(hw, CTRL); + switch(hw->mac_type) { + case e1000_82542_rev2_0: + case e1000_82542_rev2_1: + case e1000_82543: /* Set SW Defineable Pin 0 to turn on the LED */ ctrl |= E1000_CTRL_SWDPIN0; ctrl |= E1000_CTRL_SWDPIO0; - E1000_WRITE_REG(hw, CTRL, ctrl); - break; - case E1000_DEV_ID_82544EI_COPPER: - case E1000_DEV_ID_82544GC_COPPER: - case E1000_DEV_ID_82544GC_LOM: - case E1000_DEV_ID_82545EM_FIBER: - case E1000_DEV_ID_82546EB_FIBER: - ctrl = E1000_READ_REG(hw, CTRL); - /* Clear SW Defineable Pin 0 to turn on the LED */ - ctrl &= ~E1000_CTRL_SWDPIN0; - ctrl |= E1000_CTRL_SWDPIO0; - E1000_WRITE_REG(hw, CTRL, ctrl); break; - case E1000_DEV_ID_82540EP: - case E1000_DEV_ID_82540EP_LOM: - case E1000_DEV_ID_82540EP_LP: - case E1000_DEV_ID_82540EM: - case E1000_DEV_ID_82540EM_LOM: - case E1000_DEV_ID_82545EM_COPPER: - case E1000_DEV_ID_82546EB_COPPER: - case E1000_DEV_ID_82546EB_QUAD_COPPER: - case E1000_DEV_ID_82541EI: - case E1000_DEV_ID_82541EP: - case E1000_DEV_ID_82547EI: - E1000_WRITE_REG(hw, LEDCTL, hw->ledctl_mode2); + case e1000_82544: + if(hw->media_type == e1000_media_type_fiber) { + /* Set SW Defineable Pin 0 to turn on the LED */ + ctrl |= E1000_CTRL_SWDPIN0; + ctrl |= E1000_CTRL_SWDPIO0; + } else { + /* Clear SW Defineable Pin 0 to turn on the LED */ + ctrl &= ~E1000_CTRL_SWDPIN0; + ctrl |= E1000_CTRL_SWDPIO0; + } break; default: - DEBUGOUT("Invalid device ID\n"); - return -E1000_ERR_CONFIG; + if(hw->media_type == e1000_media_type_fiber) { + /* Clear SW Defineable Pin 0 to turn on the LED */ + ctrl &= ~E1000_CTRL_SWDPIN0; + ctrl |= E1000_CTRL_SWDPIO0; + } else if(hw->media_type == e1000_media_type_copper) { + E1000_WRITE_REG(hw, LEDCTL, hw->ledctl_mode2); + return E1000_SUCCESS; + } + break; } - return 0; + + E1000_WRITE_REG(hw, CTRL, ctrl); + + return E1000_SUCCESS; } /****************************************************************************** @@ -3961,50 +4202,44 @@ int32_t e1000_led_off(struct e1000_hw *hw) { - uint32_t ctrl; + uint32_t ctrl = E1000_READ_REG(hw, CTRL); DEBUGFUNC("e1000_led_off"); - switch(hw->device_id) { - case E1000_DEV_ID_82542: - case E1000_DEV_ID_82543GC_FIBER: - case E1000_DEV_ID_82543GC_COPPER: - case E1000_DEV_ID_82544EI_FIBER: - ctrl = E1000_READ_REG(hw, CTRL); + switch(hw->mac_type) { + case e1000_82542_rev2_0: + case e1000_82542_rev2_1: + case e1000_82543: /* Clear SW Defineable Pin 0 to turn off the LED */ ctrl &= ~E1000_CTRL_SWDPIN0; ctrl |= E1000_CTRL_SWDPIO0; - E1000_WRITE_REG(hw, CTRL, ctrl); break; - case E1000_DEV_ID_82544EI_COPPER: - case E1000_DEV_ID_82544GC_COPPER: - case E1000_DEV_ID_82544GC_LOM: - case E1000_DEV_ID_82545EM_FIBER: - case E1000_DEV_ID_82546EB_FIBER: - ctrl = E1000_READ_REG(hw, CTRL); - /* Set SW Defineable Pin 0 to turn off the LED */ - ctrl |= E1000_CTRL_SWDPIN0; - ctrl |= E1000_CTRL_SWDPIO0; - E1000_WRITE_REG(hw, CTRL, ctrl); - break; - case E1000_DEV_ID_82540EP: - case E1000_DEV_ID_82540EP_LOM: - case E1000_DEV_ID_82540EP_LP: - case E1000_DEV_ID_82540EM: - case E1000_DEV_ID_82540EM_LOM: - case E1000_DEV_ID_82545EM_COPPER: - case E1000_DEV_ID_82546EB_COPPER: - case E1000_DEV_ID_82546EB_QUAD_COPPER: - case E1000_DEV_ID_82541EI: - case E1000_DEV_ID_82541EP: - case E1000_DEV_ID_82547EI: - E1000_WRITE_REG(hw, LEDCTL, hw->ledctl_mode1); + case e1000_82544: + if(hw->media_type == e1000_media_type_fiber) { + /* Clear SW Defineable Pin 0 to turn off the LED */ + ctrl &= ~E1000_CTRL_SWDPIN0; + ctrl |= E1000_CTRL_SWDPIO0; + } else { + /* Set SW Defineable Pin 0 to turn off the LED */ + ctrl |= E1000_CTRL_SWDPIN0; + ctrl |= E1000_CTRL_SWDPIO0; + } break; default: - DEBUGOUT("Invalid device ID\n"); - return -E1000_ERR_CONFIG; + if(hw->media_type == e1000_media_type_fiber) { + /* Set SW Defineable Pin 0 to turn off the LED */ + ctrl |= E1000_CTRL_SWDPIN0; + ctrl |= E1000_CTRL_SWDPIO0; + } else if(hw->media_type == e1000_media_type_copper) { + E1000_WRITE_REG(hw, LEDCTL, hw->ledctl_mode1); + return E1000_SUCCESS; + } + break; } - return 0; + + E1000_WRITE_REG(hw, CTRL, ctrl); + + return E1000_SUCCESS; } /****************************************************************************** @@ -4127,8 +4362,7 @@ DEBUGFUNC("e1000_update_adaptive"); if(hw->adaptive_ifs) { - if((hw->collision_delta * hw->ifs_ratio) > - hw->tx_packet_delta) { + if((hw->collision_delta * hw->ifs_ratio) > hw->tx_packet_delta) { if(hw->tx_packet_delta > MIN_NUM_XMITS) { hw->in_ifs_mode = TRUE; if(hw->current_ifs_val < hw->ifs_max_val) { @@ -4140,8 +4374,7 @@ } } } else { - if((hw->in_ifs_mode == TRUE) && - (hw->tx_packet_delta <= MIN_NUM_XMITS)) { + if(hw->in_ifs_mode && (hw->tx_packet_delta <= MIN_NUM_XMITS)) { hw->current_ifs_val = 0; hw->in_ifs_mode = FALSE; E1000_WRITE_REG(hw, AIT, 0); @@ -4324,7 +4557,8 @@ * min_length - The estimated minimum length * max_length - The estimated maximum length * - * returns: E1000_SUCCESS / -E1000_ERR_XXX + * returns: - E1000_ERR_XXX + * E1000_SUCCESS * * This function always returns a ranged length (minimum & maximum). * So for M88 phy's, this function interprets the one value returned from the @@ -4332,9 +4566,11 @@ * For IGP phy's, the function calculates the range by the AGC registers. *****************************************************************************/ int32_t -e1000_get_cable_length(struct e1000_hw *hw, uint16_t *min_length, +e1000_get_cable_length(struct e1000_hw *hw, + uint16_t *min_length, uint16_t *max_length) { + int32_t ret_val; uint16_t agc_value = 0; uint16_t cur_agc, min_agc = IGP01E1000_AGC_LENGTH_TABLE_SIZE; uint16_t i, phy_data; @@ -4345,8 +4581,9 @@ /* Use old method for Phy older than IGP */ if(hw->phy_type == e1000_phy_m88) { - if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, &phy_data) < 0) - return -E1000_ERR_PHY; + if((ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, + &phy_data))) + return ret_val; /* Convert the enum value to ranged values */ switch((phy_data & M88E1000_PSSR_CABLE_LENGTH) >> @@ -4376,19 +4613,16 @@ break; } } else if(hw->phy_type == e1000_phy_igp) { /* For IGP PHY */ - uint16_t agc_reg_array[IGP01E1000_PHY_AGC_NUM] = {IGP01E1000_PHY_AGC_A, + uint16_t agc_reg_array[IGP01E1000_PHY_CHANNEL_NUM] = + {IGP01E1000_PHY_AGC_A, IGP01E1000_PHY_AGC_B, IGP01E1000_PHY_AGC_C, IGP01E1000_PHY_AGC_D}; /* Read the AGC registers for all channels */ - for(i = 0; i < IGP01E1000_PHY_AGC_NUM; i++) { - if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT, - agc_reg_array[i]) != E1000_SUCCESS) - return -E1000_ERR_PHY; - if(e1000_read_phy_reg(hw, agc_reg_array[i] & - IGP01E1000_PHY_PAGE_SELECT, &phy_data) != - E1000_SUCCESS) - return -E1000_ERR_PHY; + for(i = 0; i < IGP01E1000_PHY_CHANNEL_NUM; i++) { + + if((ret_val = e1000_read_phy_reg(hw, agc_reg_array[i], &phy_data))) + return ret_val; cur_agc = phy_data >> IGP01E1000_AGC_LENGTH_SHIFT; @@ -4404,20 +4638,15 @@ min_agc = cur_agc; } - /* Return to page 0 */ - if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT, 0x0) != - E1000_SUCCESS) - return -E1000_ERR_PHY; - /* Remove the minimal AGC result for length < 50m */ - if(agc_value < IGP01E1000_PHY_AGC_NUM * e1000_igp_cable_length_50) { + if(agc_value < IGP01E1000_PHY_CHANNEL_NUM * e1000_igp_cable_length_50) { agc_value -= min_agc; /* Get the average length of the remaining 3 channels */ - agc_value /= (IGP01E1000_PHY_AGC_NUM - 1); + agc_value /= (IGP01E1000_PHY_CHANNEL_NUM - 1); } else { /* Get the average length of all the 4 channels. */ - agc_value /= IGP01E1000_PHY_AGC_NUM; + agc_value /= IGP01E1000_PHY_CHANNEL_NUM; } /* Set the range of the calculated length. */ @@ -4439,7 +4668,8 @@ * polarity - output parameter : 0 - Polarity is not reversed * 1 - Polarity is reversed. * - * returns: E1000_SUCCESS / -E1000_ERR_XXX + * returns: - E1000_ERR_XXX + * E1000_SUCCESS * * For phy's older then IGP, this function simply reads the polarity bit in the * Phy Status register. For IGP phy's, this bit is valid only if link speed is @@ -4448,22 +4678,26 @@ * IGP01E1000_PHY_PCS_INIT_REG. *****************************************************************************/ int32_t -e1000_check_polarity(struct e1000_hw *hw, uint16_t *polarity) +e1000_check_polarity(struct e1000_hw *hw, + uint16_t *polarity) { + int32_t ret_val; uint16_t phy_data; DEBUGFUNC("e1000_check_polarity"); if(hw->phy_type == e1000_phy_m88) { /* return the Polarity bit in the Status register. */ - if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, &phy_data) < 0) - return -E1000_ERR_PHY; + if((ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, + &phy_data))) + return ret_val; *polarity = (phy_data & M88E1000_PSSR_REV_POLARITY) >> M88E1000_PSSR_REV_POLARITY_SHIFT; } else if(hw->phy_type == e1000_phy_igp) { /* Read the Status register to check the speed */ - if(e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_STATUS, &phy_data) < 0) - return -E1000_ERR_PHY; + if((ret_val = e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_STATUS, + &phy_data))) + return ret_val; /* If speed is 1000 Mbps, must read the IGP01E1000_PHY_PCS_INIT_REG to * find the polarity status */ @@ -4471,18 +4705,9 @@ IGP01E1000_PSSR_SPEED_1000MBPS) { /* Read the GIG initialization PCS register (0x00B4) */ - if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT, - IGP01E1000_PHY_PCS_INIT_REG) < 0) - return -E1000_ERR_PHY; - - if(e1000_read_phy_reg(hw, IGP01E1000_PHY_PCS_INIT_REG & - IGP01E1000_PHY_PAGE_SELECT, &phy_data) < 0) - return -E1000_ERR_PHY; - - /* Return to page 0 */ - if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT, 0x0) != - E1000_SUCCESS) - return -E1000_ERR_PHY; + if((ret_val = e1000_read_phy_reg(hw, IGP01E1000_PHY_PCS_INIT_REG, + &phy_data))) + return ret_val; /* Check the polarity bits */ *polarity = (phy_data & IGP01E1000_PHY_POLARITY_MASK) ? 1 : 0; @@ -4502,7 +4727,8 @@ * downshift - output parameter : 0 - No Downshift ocured. * 1 - Downshift ocured. * - * returns: E1000_SUCCESS / -E1000_ERR_XXX + * returns: - E1000_ERR_XXX + * E1000_SUCCESS * * For phy's older then IGP, this function reads the Downshift bit in the Phy * Specific Status register. For IGP phy's, it reads the Downgrade bit in the @@ -4512,25 +4738,287 @@ int32_t e1000_check_downshift(struct e1000_hw *hw) { + int32_t ret_val; uint16_t phy_data; DEBUGFUNC("e1000_check_downshift"); if(hw->phy_type == e1000_phy_igp) { - if(e1000_read_phy_reg(hw, IGP01E1000_PHY_LINK_HEALTH, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, IGP01E1000_PHY_LINK_HEALTH, + &phy_data))) + return ret_val; + hw->speed_downgraded = (phy_data & IGP01E1000_PLHR_SS_DOWNGRADE) ? 1 : 0; } else if(hw->phy_type == e1000_phy_m88) { - if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, &phy_data) < 0) { - DEBUGOUT("PHY Read Error\n"); - return -E1000_ERR_PHY; - } + if((ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, + &phy_data))) + return ret_val; + hw->speed_downgraded = (phy_data & M88E1000_PSSR_DOWNSHIFT) >> - M88E1000_PSSR_DOWNSHIFT_SHIFT; + M88E1000_PSSR_DOWNSHIFT_SHIFT; } + return E1000_SUCCESS; +} + +/***************************************************************************** + * + * 82541_rev_2 & 82547_rev_2 have the capability to configure the DSP when a + * gigabit link is achieved to improve link quality. + * + * hw: Struct containing variables accessed by shared code + * + * returns: - E1000_ERR_PHY if fail to read/write the PHY + * E1000_SUCCESS at any other case. + * + ****************************************************************************/ + +int32_t +e1000_config_dsp_after_link_change(struct e1000_hw *hw, + boolean_t link_up) +{ + int32_t ret_val; + uint16_t phy_data, speed, duplex, i; + uint16_t dsp_reg_array[IGP01E1000_PHY_CHANNEL_NUM] = + {IGP01E1000_PHY_AGC_PARAM_A, + IGP01E1000_PHY_AGC_PARAM_B, + IGP01E1000_PHY_AGC_PARAM_C, + IGP01E1000_PHY_AGC_PARAM_D}; + uint16_t min_length, max_length; + + DEBUGFUNC("e1000_config_dsp_after_link_change"); + + if(hw->phy_type != e1000_phy_igp) + return E1000_SUCCESS; + + if(link_up) { + if((ret_val = e1000_get_speed_and_duplex(hw, &speed, &duplex))) { + DEBUGOUT("Error getting link speed and duplex\n"); + return ret_val; + } + + if(speed == SPEED_1000) { + + e1000_get_cable_length(hw, &min_length, &max_length); + + if((hw->dsp_config_state == e1000_dsp_config_enabled) && + min_length >= e1000_igp_cable_length_50) { + + for(i = 0; i < IGP01E1000_PHY_CHANNEL_NUM; i++) { + if((ret_val = e1000_read_phy_reg(hw, dsp_reg_array[i], + &phy_data))) + return ret_val; + + phy_data &= ~IGP01E1000_PHY_EDAC_MU_INDEX; + + if((ret_val = e1000_write_phy_reg(hw, dsp_reg_array[i], + phy_data))) + return ret_val; + } + hw->dsp_config_state = e1000_dsp_config_activated; + } + + if((hw->ffe_config_state == e1000_ffe_config_enabled) && + (min_length < e1000_igp_cable_length_50)) { + + uint16_t ffe_idle_err_timeout = FFE_IDLE_ERR_COUNT_TIMEOUT_20; + uint32_t idle_errs = 0; + + /* clear previous idle error counts */ + if((ret_val = e1000_read_phy_reg(hw, PHY_1000T_STATUS, + &phy_data))) + return ret_val; + + for(i = 0; i < ffe_idle_err_timeout; i++) { + udelay(1000); + if((ret_val = e1000_read_phy_reg(hw, PHY_1000T_STATUS, + &phy_data))) + return ret_val; + + idle_errs += (phy_data & SR_1000T_IDLE_ERROR_CNT); + if(idle_errs > SR_1000T_PHY_EXCESSIVE_IDLE_ERR_COUNT) { + hw->ffe_config_state = e1000_ffe_config_active; + + if((ret_val = e1000_write_phy_reg(hw, + IGP01E1000_PHY_DSP_FFE, + IGP01E1000_PHY_DSP_FFE_CM_CP))) + return ret_val; + break; + } + + if(idle_errs) + ffe_idle_err_timeout = FFE_IDLE_ERR_COUNT_TIMEOUT_100; + } + } + } + } else { + if(hw->dsp_config_state == e1000_dsp_config_activated) { + if((ret_val = e1000_write_phy_reg(hw, 0x0000, + IGP01E1000_IEEE_FORCE_GIGA))) + return ret_val; + for(i = 0; i < IGP01E1000_PHY_CHANNEL_NUM; i++) { + if((ret_val = e1000_read_phy_reg(hw, dsp_reg_array[i], + &phy_data))) + return ret_val; + + phy_data &= ~IGP01E1000_PHY_EDAC_MU_INDEX; + phy_data |= IGP01E1000_PHY_EDAC_SIGN_EXT_9_BITS; + + if((ret_val = e1000_write_phy_reg(hw,dsp_reg_array[i], + phy_data))) + return ret_val; + } + + if((ret_val = e1000_write_phy_reg(hw, 0x0000, + IGP01E1000_IEEE_RESTART_AUTONEG))) + return ret_val; + + hw->dsp_config_state = e1000_dsp_config_enabled; + } + + if(hw->ffe_config_state == e1000_ffe_config_active) { + if((ret_val = e1000_write_phy_reg(hw, 0x0000, + IGP01E1000_IEEE_FORCE_GIGA))) + return ret_val; + if((ret_val = e1000_write_phy_reg(hw, IGP01E1000_PHY_DSP_FFE, + IGP01E1000_PHY_DSP_FFE_DEFAULT))) + return ret_val; + + if((ret_val = e1000_write_phy_reg(hw, 0x0000, + IGP01E1000_IEEE_RESTART_AUTONEG))) + return ret_val; + hw->ffe_config_state = e1000_ffe_config_enabled; + } + } + return E1000_SUCCESS; +} + +/***************************************************************************** + * + * This function sets the lplu state according to the active flag. When + * activating lplu this function also disables smart speed and vise versa. + * lplu will not be activated unless the device autonegotiation advertisment + * meets standards of either 10 or 10/100 or 10/100/1000 at all duplexes. + * hw: Struct containing variables accessed by shared code + * active - true to enable lplu false to disable lplu. + * + * returns: - E1000_ERR_PHY if fail to read/write the PHY + * E1000_SUCCESS at any other case. + * + ****************************************************************************/ + +int32_t +e1000_set_d3_lplu_state(struct e1000_hw *hw, + boolean_t active) +{ + int32_t ret_val; + uint16_t phy_data; + DEBUGFUNC("e1000_set_d3_lplu_state"); + + if(!((hw->mac_type == e1000_82541_rev_2) || + (hw->mac_type == e1000_82547_rev_2))) + return E1000_SUCCESS; + + /* During driver activity LPLU should not be used or it will attain link + * from the lowest speeds starting from 10Mbps. The capability is used for + * Dx transitions and states */ + if((ret_val = e1000_read_phy_reg(hw, IGP01E1000_GMII_FIFO, &phy_data))) + return ret_val; + + if(!active) { + phy_data &= ~IGP01E1000_GMII_FLEX_SPD; + if((ret_val = e1000_write_phy_reg(hw, IGP01E1000_GMII_FIFO, phy_data))) + return ret_val; + + /* LPLU and SmartSpeed are mutually exclusive. LPLU is used during + * Dx states where the power conservation is most important. During + * driver activity we should enable SmartSpeed, so performance is + * maintained. */ + if((ret_val = e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_CONFIG, + &phy_data))) + return ret_val; + + phy_data |= IGP01E1000_PSCFR_SMART_SPEED; + if((ret_val = e1000_write_phy_reg(hw, IGP01E1000_PHY_PORT_CONFIG, + phy_data))) + return ret_val; + + } else if((hw->autoneg_advertised == AUTONEG_ADVERTISE_SPEED_DEFAULT) || + (hw->autoneg_advertised == AUTONEG_ADVERTISE_10_ALL ) || + (hw->autoneg_advertised == AUTONEG_ADVERTISE_10_100_ALL)) { + + phy_data |= IGP01E1000_GMII_FLEX_SPD; + if((ret_val = e1000_write_phy_reg(hw, IGP01E1000_GMII_FIFO, phy_data))) + return ret_val; + + /* When LPLU is enabled we should disable SmartSpeed */ + if((ret_val = e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_CONFIG, + &phy_data))) + return ret_val; + + phy_data &= ~IGP01E1000_PSCFR_SMART_SPEED; + if((ret_val = e1000_write_phy_reg(hw, IGP01E1000_PHY_PORT_CONFIG, + phy_data))) + return ret_val; + + } + return E1000_SUCCESS; +} + +/****************************************************************************** + * Change VCO speed register to improve Bit Error Rate performance of SERDES. + * + * hw - Struct containing variables accessed by shared code + *****************************************************************************/ +static int32_t +e1000_set_vco_speed(struct e1000_hw *hw) +{ + int32_t ret_val; + uint16_t default_page = 0; + uint16_t phy_data; + + DEBUGFUNC("e1000_set_vco_speed"); + + switch(hw->mac_type) { + case e1000_82545_rev_3: + case e1000_82546_rev_3: + break; + default: + return E1000_SUCCESS; + } + + /* Set PHY register 30, page 5, bit 8 to 0 */ + + if((ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_PAGE_SELECT, + &default_page))) + return ret_val; + + if((ret_val = e1000_write_phy_reg(hw, M88E1000_PHY_PAGE_SELECT, 0x0005))) + return ret_val; + + if((ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_GEN_CONTROL, &phy_data))) + return ret_val; + + phy_data &= ~M88E1000_PHY_VCO_REG_BIT8; + if((ret_val = e1000_write_phy_reg(hw, M88E1000_PHY_GEN_CONTROL, phy_data))) + return ret_val; + + /* Set PHY register 30, page 4, bit 11 to 1 */ + + if((ret_val = e1000_write_phy_reg(hw, M88E1000_PHY_PAGE_SELECT, 0x0004))) + return ret_val; + + if((ret_val = e1000_read_phy_reg(hw, M88E1000_PHY_GEN_CONTROL, &phy_data))) + return ret_val; + + phy_data |= M88E1000_PHY_VCO_REG_BIT11; + if((ret_val = e1000_write_phy_reg(hw, M88E1000_PHY_GEN_CONTROL, phy_data))) + return ret_val; + + if((ret_val = e1000_write_phy_reg(hw, M88E1000_PHY_PAGE_SELECT, + default_page))) + return ret_val; + return E1000_SUCCESS; } diff -Nru a/drivers/net/e1000/e1000_hw.h b/drivers/net/e1000/e1000_hw.h --- a/drivers/net/e1000/e1000_hw.h Mon Sep 22 00:30:24 2003 +++ b/drivers/net/e1000/e1000_hw.h Mon Sep 22 00:30:24 2003 @@ -33,9 +33,9 @@ #ifndef _E1000_HW_H_ #define _E1000_HW_H_ - #include "e1000_osdep.h" + /* Forward declarations of structures used by the shared code */ struct e1000_hw; struct e1000_hw_stats; @@ -50,9 +50,13 @@ e1000_82544, e1000_82540, e1000_82545, + e1000_82545_rev_3, e1000_82546, + e1000_82546_rev_3, e1000_82541, + e1000_82541_rev_2, e1000_82547, + e1000_82547_rev_2, e1000_num_macs } e1000_mac_type; @@ -67,6 +71,7 @@ typedef enum { e1000_media_type_copper = 0, e1000_media_type_fiber = 1, + e1000_media_type_internal_serdes = 2, e1000_num_media_types } e1000_media_type; @@ -90,7 +95,8 @@ typedef enum { e1000_bus_type_unknown = 0, e1000_bus_type_pci, - e1000_bus_type_pcix + e1000_bus_type_pcix, + e1000_bus_type_reserved } e1000_bus_type; /* PCI bus speeds */ @@ -108,7 +114,8 @@ typedef enum { e1000_bus_width_unknown = 0, e1000_bus_width_32, - e1000_bus_width_64 + e1000_bus_width_64, + e1000_bus_width_reserved } e1000_bus_width; /* PHY status info structure and supporting enums */ @@ -186,6 +193,26 @@ e1000_phy_undefined = 0xFF } e1000_phy_type; +typedef enum { + e1000_ms_hw_default = 0, + e1000_ms_force_master, + e1000_ms_force_slave, + e1000_ms_auto +} e1000_ms_type; + +typedef enum { + e1000_ffe_config_enabled = 0, + e1000_ffe_config_active, + e1000_ffe_config_blocked +} e1000_ffe_config; + +typedef enum { + e1000_dsp_config_disabled = 0, + e1000_dsp_config_enabled, + e1000_dsp_config_activated, + e1000_dsp_config_undefined = 0xFF +} e1000_dsp_config; + struct e1000_phy_info { e1000_cable_length cable_length; e1000_10bt_ext_dist_enable extended_10bt_distance; @@ -224,9 +251,10 @@ /* Function prototypes */ /* Initialization */ -void e1000_reset_hw(struct e1000_hw *hw); +int32_t e1000_reset_hw(struct e1000_hw *hw); int32_t e1000_init_hw(struct e1000_hw *hw); int32_t e1000_set_mac_type(struct e1000_hw *hw); +void e1000_set_media_type(struct e1000_hw *hw); /* Link Configuration */ int32_t e1000_setup_link(struct e1000_hw *hw); @@ -234,8 +262,9 @@ void e1000_config_collision_dist(struct e1000_hw *hw); int32_t e1000_config_fc_after_link_up(struct e1000_hw *hw); int32_t e1000_check_for_link(struct e1000_hw *hw); -void e1000_get_speed_and_duplex(struct e1000_hw *hw, uint16_t * speed, uint16_t * duplex); +int32_t e1000_get_speed_and_duplex(struct e1000_hw *hw, uint16_t * speed, uint16_t * duplex); int32_t e1000_wait_autoneg(struct e1000_hw *hw); +int32_t e1000_force_mac_fc(struct e1000_hw *hw); /* PHY */ int32_t e1000_read_phy_reg(struct e1000_hw *hw, uint32_t reg_addr, uint16_t *phy_data); @@ -292,6 +321,8 @@ uint32_t e1000_read_reg_io(struct e1000_hw *hw, uint32_t offset); void e1000_io_write(struct e1000_hw *hw, uint32_t port, uint32_t value); void e1000_write_reg_io(struct e1000_hw *hw, uint32_t offset, uint32_t value); +int32_t e1000_config_dsp_after_link_change(struct e1000_hw *hw, boolean_t link_up); +int32_t e1000_set_d3_lplu_state(struct e1000_hw *hw, boolean_t active); #define E1000_READ_REG_IO(a, reg) \ e1000_read_reg_io((a), E1000_##reg) @@ -313,13 +344,22 @@ #define E1000_DEV_ID_82540EP_LP 0x101E #define E1000_DEV_ID_82545EM_COPPER 0x100F #define E1000_DEV_ID_82545EM_FIBER 0x1011 +#define E1000_DEV_ID_82545GM_COPPER 0x1026 +#define E1000_DEV_ID_82545GM_FIBER 0x1027 +#define E1000_DEV_ID_82545GM_SERDES 0x1028 #define E1000_DEV_ID_82546EB_COPPER 0x1010 #define E1000_DEV_ID_82546EB_FIBER 0x1012 #define E1000_DEV_ID_82546EB_QUAD_COPPER 0x101D #define E1000_DEV_ID_82541EI 0x1013 -#define E1000_DEV_ID_82541EP 0x1018 +#define E1000_DEV_ID_82541EI_MOBILE 0x1018 +#define E1000_DEV_ID_82541ER 0x1078 +#define E1000_DEV_ID_82547GI 0x1075 +#define E1000_DEV_ID_82541GI 0x1076 +#define E1000_DEV_ID_82541GI_MOBILE 0x1077 +#define E1000_DEV_ID_82546GB_COPPER 0x1079 +#define E1000_DEV_ID_82546GB_FIBER 0x107A +#define E1000_DEV_ID_82546GB_SERDES 0x107B #define E1000_DEV_ID_82547EI 0x1019 -#define NUM_DEV_IDS 20 #define NODE_ADDRESS_SIZE 6 #define ETH_LENGTH_OF_ADDRESS 6 @@ -385,7 +425,7 @@ E1000_IMS_RXSEQ | \ E1000_IMS_LSC) -/* The number of high/low register pairs in the RAR. The RAR (Receive Address +/* Number of high/low register pairs in the RAR. The RAR (Receive Address * Registers) holds the directed and multicast addresses that we monitor. We * reserve one of these spots for our directed address, allowing us room for * E1000_RAR_ENTRIES - 1 multicast addresses. @@ -539,7 +579,7 @@ volatile uint32_t high; /* receive address high */ }; -/* The number of entries in the Multicast Table Array (MTA). */ +/* Number of entries in the Multicast Table Array (MTA). */ #define E1000_NUM_MTA_REGISTERS 128 /* IPv4 Address Table Entry */ @@ -599,6 +639,7 @@ * A - register array */ #define E1000_CTRL 0x00000 /* Device Control - RW */ +#define E1000_CTRL_DUP 0x00004 /* Device Control Duplicate (Shadow) - RW */ #define E1000_STATUS 0x00008 /* Device Status - RO */ #define E1000_EECD 0x00010 /* EEPROM/Flash Control - RW */ #define E1000_EERD 0x00014 /* EEPROM Read - RW */ @@ -934,6 +975,9 @@ e1000_bus_width bus_width; e1000_bus_type bus_type; struct e1000_eeprom_info eeprom; + e1000_ms_type master_slave; + e1000_ms_type original_master_slave; + e1000_ffe_config ffe_config_state; uint32_t io_base; uint32_t phy_id; uint32_t phy_revision; @@ -950,6 +994,8 @@ uint32_t ledctl_default; uint32_t ledctl_mode1; uint32_t ledctl_mode2; + uint16_t phy_spd_default; + uint16_t dsp_reset_counter; uint16_t autoneg_advertised; uint16_t pci_cmd_word; uint16_t fc_high_water; @@ -974,10 +1020,13 @@ uint8_t perm_mac_addr[NODE_ADDRESS_SIZE]; boolean_t disable_polarity_correction; boolean_t speed_downgraded; + e1000_dsp_config dsp_config_state; boolean_t get_link_status; boolean_t tbi_compatibility_en; boolean_t tbi_compatibility_on; + boolean_t phy_reset_disable; boolean_t fc_send_xon; + boolean_t fc_strict_ieee; boolean_t report_tx_early; boolean_t adaptive_ifs; boolean_t ifs_params_forced; @@ -1059,7 +1108,7 @@ #define E1000_EECD_PRES 0x00000100 /* EEPROM Present */ #define E1000_EECD_SIZE 0x00000200 /* EEPROM Size (0=64 word 1=256 word) */ #define E1000_EECD_ADDR_BITS 0x00000400 /* EEPROM Addressing bits based on type - * (0-small, 1-large) */ + * (0-small, 1-large) */ #define E1000_EECD_TYPE 0x00002000 /* EEPROM Type (1-SPI, 0-Microwire) */ #ifndef E1000_EEPROM_GRANT_ATTEMPTS #define E1000_EEPROM_GRANT_ATTEMPTS 1000 /* EEPROM # attempts to gain grant */ @@ -1121,22 +1170,22 @@ #define E1000_MDIC_ERROR 0x40000000 /* LED Control */ -#define E1000_LEDCTL_LED0_MODE_MASK 0x0000000F -#define E1000_LEDCTL_LED0_MODE_SHIFT 0 -#define E1000_LEDCTL_LED0_IVRT 0x00000040 -#define E1000_LEDCTL_LED0_BLINK 0x00000080 -#define E1000_LEDCTL_LED1_MODE_MASK 0x00000F00 -#define E1000_LEDCTL_LED1_MODE_SHIFT 8 -#define E1000_LEDCTL_LED1_IVRT 0x00004000 -#define E1000_LEDCTL_LED1_BLINK 0x00008000 -#define E1000_LEDCTL_LED2_MODE_MASK 0x000F0000 -#define E1000_LEDCTL_LED2_MODE_SHIFT 16 -#define E1000_LEDCTL_LED2_IVRT 0x00400000 -#define E1000_LEDCTL_LED2_BLINK 0x00800000 -#define E1000_LEDCTL_LED3_MODE_MASK 0x0F000000 -#define E1000_LEDCTL_LED3_MODE_SHIFT 24 -#define E1000_LEDCTL_LED3_IVRT 0x40000000 -#define E1000_LEDCTL_LED3_BLINK 0x80000000 +#define E1000_LEDCTL_LED0_MODE_MASK 0x0000000F +#define E1000_LEDCTL_LED0_MODE_SHIFT 0 +#define E1000_LEDCTL_LED0_IVRT 0x00000040 +#define E1000_LEDCTL_LED0_BLINK 0x00000080 +#define E1000_LEDCTL_LED1_MODE_MASK 0x00000F00 +#define E1000_LEDCTL_LED1_MODE_SHIFT 8 +#define E1000_LEDCTL_LED1_IVRT 0x00004000 +#define E1000_LEDCTL_LED1_BLINK 0x00008000 +#define E1000_LEDCTL_LED2_MODE_MASK 0x000F0000 +#define E1000_LEDCTL_LED2_MODE_SHIFT 16 +#define E1000_LEDCTL_LED2_IVRT 0x00400000 +#define E1000_LEDCTL_LED2_BLINK 0x00800000 +#define E1000_LEDCTL_LED3_MODE_MASK 0x0F000000 +#define E1000_LEDCTL_LED3_MODE_SHIFT 24 +#define E1000_LEDCTL_LED3_IVRT 0x40000000 +#define E1000_LEDCTL_LED3_BLINK 0x80000000 #define E1000_LEDCTL_MODE_LINK_10_1000 0x0 #define E1000_LEDCTL_MODE_LINK_100_1000 0x1 @@ -1159,109 +1208,109 @@ #define E1000_RAH_AV 0x80000000 /* Receive descriptor valid */ /* Interrupt Cause Read */ -#define E1000_ICR_TXDW 0x00000001 /* Transmit desc written back */ -#define E1000_ICR_TXQE 0x00000002 /* Transmit Queue empty */ -#define E1000_ICR_LSC 0x00000004 /* Link Status Change */ -#define E1000_ICR_RXSEQ 0x00000008 /* rx sequence error */ -#define E1000_ICR_RXDMT0 0x00000010 /* rx desc min. threshold (0) */ -#define E1000_ICR_RXO 0x00000040 /* rx overrun */ -#define E1000_ICR_RXT0 0x00000080 /* rx timer intr (ring 0) */ -#define E1000_ICR_MDAC 0x00000200 /* MDIO access complete */ -#define E1000_ICR_RXCFG 0x00000400 /* RX /c/ ordered set */ -#define E1000_ICR_GPI_EN0 0x00000800 /* GP Int 0 */ -#define E1000_ICR_GPI_EN1 0x00001000 /* GP Int 1 */ -#define E1000_ICR_GPI_EN2 0x00002000 /* GP Int 2 */ -#define E1000_ICR_GPI_EN3 0x00004000 /* GP Int 3 */ -#define E1000_ICR_TXD_LOW 0x00008000 -#define E1000_ICR_SRPD 0x00010000 +#define E1000_ICR_TXDW 0x00000001 /* Transmit desc written back */ +#define E1000_ICR_TXQE 0x00000002 /* Transmit Queue empty */ +#define E1000_ICR_LSC 0x00000004 /* Link Status Change */ +#define E1000_ICR_RXSEQ 0x00000008 /* rx sequence error */ +#define E1000_ICR_RXDMT0 0x00000010 /* rx desc min. threshold (0) */ +#define E1000_ICR_RXO 0x00000040 /* rx overrun */ +#define E1000_ICR_RXT0 0x00000080 /* rx timer intr (ring 0) */ +#define E1000_ICR_MDAC 0x00000200 /* MDIO access complete */ +#define E1000_ICR_RXCFG 0x00000400 /* RX /c/ ordered set */ +#define E1000_ICR_GPI_EN0 0x00000800 /* GP Int 0 */ +#define E1000_ICR_GPI_EN1 0x00001000 /* GP Int 1 */ +#define E1000_ICR_GPI_EN2 0x00002000 /* GP Int 2 */ +#define E1000_ICR_GPI_EN3 0x00004000 /* GP Int 3 */ +#define E1000_ICR_TXD_LOW 0x00008000 +#define E1000_ICR_SRPD 0x00010000 /* Interrupt Cause Set */ -#define E1000_ICS_TXDW E1000_ICR_TXDW /* Transmit desc written back */ -#define E1000_ICS_TXQE E1000_ICR_TXQE /* Transmit Queue empty */ -#define E1000_ICS_LSC E1000_ICR_LSC /* Link Status Change */ -#define E1000_ICS_RXSEQ E1000_ICR_RXSEQ /* rx sequence error */ -#define E1000_ICS_RXDMT0 E1000_ICR_RXDMT0 /* rx desc min. threshold */ -#define E1000_ICS_RXO E1000_ICR_RXO /* rx overrun */ -#define E1000_ICS_RXT0 E1000_ICR_RXT0 /* rx timer intr */ -#define E1000_ICS_MDAC E1000_ICR_MDAC /* MDIO access complete */ -#define E1000_ICS_RXCFG E1000_ICR_RXCFG /* RX /c/ ordered set */ -#define E1000_ICS_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */ -#define E1000_ICS_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */ -#define E1000_ICS_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */ -#define E1000_ICS_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */ -#define E1000_ICS_TXD_LOW E1000_ICR_TXD_LOW -#define E1000_ICS_SRPD E1000_ICR_SRPD +#define E1000_ICS_TXDW E1000_ICR_TXDW /* Transmit desc written back */ +#define E1000_ICS_TXQE E1000_ICR_TXQE /* Transmit Queue empty */ +#define E1000_ICS_LSC E1000_ICR_LSC /* Link Status Change */ +#define E1000_ICS_RXSEQ E1000_ICR_RXSEQ /* rx sequence error */ +#define E1000_ICS_RXDMT0 E1000_ICR_RXDMT0 /* rx desc min. threshold */ +#define E1000_ICS_RXO E1000_ICR_RXO /* rx overrun */ +#define E1000_ICS_RXT0 E1000_ICR_RXT0 /* rx timer intr */ +#define E1000_ICS_MDAC E1000_ICR_MDAC /* MDIO access complete */ +#define E1000_ICS_RXCFG E1000_ICR_RXCFG /* RX /c/ ordered set */ +#define E1000_ICS_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */ +#define E1000_ICS_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */ +#define E1000_ICS_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */ +#define E1000_ICS_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */ +#define E1000_ICS_TXD_LOW E1000_ICR_TXD_LOW +#define E1000_ICS_SRPD E1000_ICR_SRPD /* Interrupt Mask Set */ -#define E1000_IMS_TXDW E1000_ICR_TXDW /* Transmit desc written back */ -#define E1000_IMS_TXQE E1000_ICR_TXQE /* Transmit Queue empty */ -#define E1000_IMS_LSC E1000_ICR_LSC /* Link Status Change */ -#define E1000_IMS_RXSEQ E1000_ICR_RXSEQ /* rx sequence error */ -#define E1000_IMS_RXDMT0 E1000_ICR_RXDMT0 /* rx desc min. threshold */ -#define E1000_IMS_RXO E1000_ICR_RXO /* rx overrun */ -#define E1000_IMS_RXT0 E1000_ICR_RXT0 /* rx timer intr */ -#define E1000_IMS_MDAC E1000_ICR_MDAC /* MDIO access complete */ -#define E1000_IMS_RXCFG E1000_ICR_RXCFG /* RX /c/ ordered set */ -#define E1000_IMS_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */ -#define E1000_IMS_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */ -#define E1000_IMS_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */ -#define E1000_IMS_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */ -#define E1000_IMS_TXD_LOW E1000_ICR_TXD_LOW -#define E1000_IMS_SRPD E1000_ICR_SRPD +#define E1000_IMS_TXDW E1000_ICR_TXDW /* Transmit desc written back */ +#define E1000_IMS_TXQE E1000_ICR_TXQE /* Transmit Queue empty */ +#define E1000_IMS_LSC E1000_ICR_LSC /* Link Status Change */ +#define E1000_IMS_RXSEQ E1000_ICR_RXSEQ /* rx sequence error */ +#define E1000_IMS_RXDMT0 E1000_ICR_RXDMT0 /* rx desc min. threshold */ +#define E1000_IMS_RXO E1000_ICR_RXO /* rx overrun */ +#define E1000_IMS_RXT0 E1000_ICR_RXT0 /* rx timer intr */ +#define E1000_IMS_MDAC E1000_ICR_MDAC /* MDIO access complete */ +#define E1000_IMS_RXCFG E1000_ICR_RXCFG /* RX /c/ ordered set */ +#define E1000_IMS_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */ +#define E1000_IMS_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */ +#define E1000_IMS_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */ +#define E1000_IMS_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */ +#define E1000_IMS_TXD_LOW E1000_ICR_TXD_LOW +#define E1000_IMS_SRPD E1000_ICR_SRPD /* Interrupt Mask Clear */ -#define E1000_IMC_TXDW E1000_ICR_TXDW /* Transmit desc written back */ -#define E1000_IMC_TXQE E1000_ICR_TXQE /* Transmit Queue empty */ -#define E1000_IMC_LSC E1000_ICR_LSC /* Link Status Change */ -#define E1000_IMC_RXSEQ E1000_ICR_RXSEQ /* rx sequence error */ -#define E1000_IMC_RXDMT0 E1000_ICR_RXDMT0 /* rx desc min. threshold */ -#define E1000_IMC_RXO E1000_ICR_RXO /* rx overrun */ -#define E1000_IMC_RXT0 E1000_ICR_RXT0 /* rx timer intr */ -#define E1000_IMC_MDAC E1000_ICR_MDAC /* MDIO access complete */ -#define E1000_IMC_RXCFG E1000_ICR_RXCFG /* RX /c/ ordered set */ -#define E1000_IMC_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */ -#define E1000_IMC_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */ -#define E1000_IMC_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */ -#define E1000_IMC_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */ -#define E1000_IMC_TXD_LOW E1000_ICR_TXD_LOW -#define E1000_IMC_SRPD E1000_ICR_SRPD +#define E1000_IMC_TXDW E1000_ICR_TXDW /* Transmit desc written back */ +#define E1000_IMC_TXQE E1000_ICR_TXQE /* Transmit Queue empty */ +#define E1000_IMC_LSC E1000_ICR_LSC /* Link Status Change */ +#define E1000_IMC_RXSEQ E1000_ICR_RXSEQ /* rx sequence error */ +#define E1000_IMC_RXDMT0 E1000_ICR_RXDMT0 /* rx desc min. threshold */ +#define E1000_IMC_RXO E1000_ICR_RXO /* rx overrun */ +#define E1000_IMC_RXT0 E1000_ICR_RXT0 /* rx timer intr */ +#define E1000_IMC_MDAC E1000_ICR_MDAC /* MDIO access complete */ +#define E1000_IMC_RXCFG E1000_ICR_RXCFG /* RX /c/ ordered set */ +#define E1000_IMC_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */ +#define E1000_IMC_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */ +#define E1000_IMC_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */ +#define E1000_IMC_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */ +#define E1000_IMC_TXD_LOW E1000_ICR_TXD_LOW +#define E1000_IMC_SRPD E1000_ICR_SRPD /* Receive Control */ -#define E1000_RCTL_RST 0x00000001 /* Software reset */ -#define E1000_RCTL_EN 0x00000002 /* enable */ -#define E1000_RCTL_SBP 0x00000004 /* store bad packet */ -#define E1000_RCTL_UPE 0x00000008 /* unicast promiscuous enable */ -#define E1000_RCTL_MPE 0x00000010 /* multicast promiscuous enab */ -#define E1000_RCTL_LPE 0x00000020 /* long packet enable */ -#define E1000_RCTL_LBM_NO 0x00000000 /* no loopback mode */ -#define E1000_RCTL_LBM_MAC 0x00000040 /* MAC loopback mode */ -#define E1000_RCTL_LBM_SLP 0x00000080 /* serial link loopback mode */ -#define E1000_RCTL_LBM_TCVR 0x000000C0 /* tcvr loopback mode */ -#define E1000_RCTL_RDMTS_HALF 0x00000000 /* rx desc min threshold size */ -#define E1000_RCTL_RDMTS_QUAT 0x00000100 /* rx desc min threshold size */ -#define E1000_RCTL_RDMTS_EIGTH 0x00000200 /* rx desc min threshold size */ -#define E1000_RCTL_MO_SHIFT 12 /* multicast offset shift */ -#define E1000_RCTL_MO_0 0x00000000 /* multicast offset 11:0 */ -#define E1000_RCTL_MO_1 0x00001000 /* multicast offset 12:1 */ -#define E1000_RCTL_MO_2 0x00002000 /* multicast offset 13:2 */ -#define E1000_RCTL_MO_3 0x00003000 /* multicast offset 15:4 */ -#define E1000_RCTL_MDR 0x00004000 /* multicast desc ring 0 */ -#define E1000_RCTL_BAM 0x00008000 /* broadcast enable */ +#define E1000_RCTL_RST 0x00000001 /* Software reset */ +#define E1000_RCTL_EN 0x00000002 /* enable */ +#define E1000_RCTL_SBP 0x00000004 /* store bad packet */ +#define E1000_RCTL_UPE 0x00000008 /* unicast promiscuous enable */ +#define E1000_RCTL_MPE 0x00000010 /* multicast promiscuous enab */ +#define E1000_RCTL_LPE 0x00000020 /* long packet enable */ +#define E1000_RCTL_LBM_NO 0x00000000 /* no loopback mode */ +#define E1000_RCTL_LBM_MAC 0x00000040 /* MAC loopback mode */ +#define E1000_RCTL_LBM_SLP 0x00000080 /* serial link loopback mode */ +#define E1000_RCTL_LBM_TCVR 0x000000C0 /* tcvr loopback mode */ +#define E1000_RCTL_RDMTS_HALF 0x00000000 /* rx desc min threshold size */ +#define E1000_RCTL_RDMTS_QUAT 0x00000100 /* rx desc min threshold size */ +#define E1000_RCTL_RDMTS_EIGTH 0x00000200 /* rx desc min threshold size */ +#define E1000_RCTL_MO_SHIFT 12 /* multicast offset shift */ +#define E1000_RCTL_MO_0 0x00000000 /* multicast offset 11:0 */ +#define E1000_RCTL_MO_1 0x00001000 /* multicast offset 12:1 */ +#define E1000_RCTL_MO_2 0x00002000 /* multicast offset 13:2 */ +#define E1000_RCTL_MO_3 0x00003000 /* multicast offset 15:4 */ +#define E1000_RCTL_MDR 0x00004000 /* multicast desc ring 0 */ +#define E1000_RCTL_BAM 0x00008000 /* broadcast enable */ /* these buffer sizes are valid if E1000_RCTL_BSEX is 0 */ -#define E1000_RCTL_SZ_2048 0x00000000 /* rx buffer size 2048 */ -#define E1000_RCTL_SZ_1024 0x00010000 /* rx buffer size 1024 */ -#define E1000_RCTL_SZ_512 0x00020000 /* rx buffer size 512 */ -#define E1000_RCTL_SZ_256 0x00030000 /* rx buffer size 256 */ +#define E1000_RCTL_SZ_2048 0x00000000 /* rx buffer size 2048 */ +#define E1000_RCTL_SZ_1024 0x00010000 /* rx buffer size 1024 */ +#define E1000_RCTL_SZ_512 0x00020000 /* rx buffer size 512 */ +#define E1000_RCTL_SZ_256 0x00030000 /* rx buffer size 256 */ /* these buffer sizes are valid if E1000_RCTL_BSEX is 1 */ -#define E1000_RCTL_SZ_16384 0x00010000 /* rx buffer size 16384 */ -#define E1000_RCTL_SZ_8192 0x00020000 /* rx buffer size 8192 */ -#define E1000_RCTL_SZ_4096 0x00030000 /* rx buffer size 4096 */ -#define E1000_RCTL_VFE 0x00040000 /* vlan filter enable */ -#define E1000_RCTL_CFIEN 0x00080000 /* canonical form enable */ -#define E1000_RCTL_CFI 0x00100000 /* canonical form indicator */ -#define E1000_RCTL_DPF 0x00400000 /* discard pause frames */ -#define E1000_RCTL_PMCF 0x00800000 /* pass MAC control frames */ -#define E1000_RCTL_BSEX 0x02000000 /* Buffer size extension */ +#define E1000_RCTL_SZ_16384 0x00010000 /* rx buffer size 16384 */ +#define E1000_RCTL_SZ_8192 0x00020000 /* rx buffer size 8192 */ +#define E1000_RCTL_SZ_4096 0x00030000 /* rx buffer size 4096 */ +#define E1000_RCTL_VFE 0x00040000 /* vlan filter enable */ +#define E1000_RCTL_CFIEN 0x00080000 /* canonical form enable */ +#define E1000_RCTL_CFI 0x00100000 /* canonical form indicator */ +#define E1000_RCTL_DPF 0x00400000 /* discard pause frames */ +#define E1000_RCTL_PMCF 0x00800000 /* pass MAC control frames */ +#define E1000_RCTL_BSEX 0x02000000 /* Buffer size extension */ /* Receive Descriptor */ #define E1000_RDT_DELAY 0x0000ffff /* Delay timer (1=1024us) */ @@ -1426,15 +1475,17 @@ #define EEPROM_SIZE_128B 0x0000 #define EEPROM_SIZE_MASK 0x1C00 - /* EEPROM Word Offsets */ -#define EEPROM_COMPAT 0x0003 -#define EEPROM_ID_LED_SETTINGS 0x0004 -#define EEPROM_INIT_CONTROL1_REG 0x000A -#define EEPROM_INIT_CONTROL2_REG 0x000F -#define EEPROM_CFG 0x0012 -#define EEPROM_FLASH_VERSION 0x0032 -#define EEPROM_CHECKSUM_REG 0x003F +#define EEPROM_COMPAT 0x0003 +#define EEPROM_ID_LED_SETTINGS 0x0004 +#define EEPROM_SERDES_AMPLITUDE 0x0006 /* For SERDES output amplitude adjustment. */ +#define EEPROM_INIT_CONTROL1_REG 0x000A +#define EEPROM_INIT_CONTROL2_REG 0x000F +#define EEPROM_INIT_CONTROL3_PORT_B 0x0014 +#define EEPROM_INIT_CONTROL3_PORT_A 0x0024 +#define EEPROM_CFG 0x0012 +#define EEPROM_FLASH_VERSION 0x0032 +#define EEPROM_CHECKSUM_REG 0x003F /* Word definitions for ID LED Settings */ #define ID_LED_RESERVED_0000 0x0000 @@ -1458,6 +1509,9 @@ #define IGP_LED3_MODE 0x07000000 +/* Mask bits for SERDES amplitude adjustment in Word 6 of the EEPROM */ +#define EEPROM_SERDES_AMPLITUDE_MASK 0x000F + /* Mask bits for fields in Word 0x0a of the EEPROM */ #define EEPROM_WORD0A_ILOS 0x0010 #define EEPROM_WORD0A_SWDPIO 0x01E0 @@ -1479,6 +1533,8 @@ #define EEPROM_NODE_ADDRESS_BYTE_0 0 #define EEPROM_PBA_BYTE_1 8 +#define EEPROM_RESERVED_WORD 0xFFFF + /* EEPROM Map Sizes (Byte Counts) */ #define PBA_SIZE 4 @@ -1490,7 +1546,7 @@ #define E1000_HDX_COLLISION_DISTANCE E1000_COLLISION_DISTANCE #define E1000_COLD_SHIFT 12 -/* The number of Transmit and Receive Descriptors must be a multiple of 8 */ +/* Number of Transmit and Receive Descriptors must be a multiple of 8 */ #define REQ_TX_DESCRIPTOR_MULTIPLE 8 #define REQ_RX_DESCRIPTOR_MULTIPLE 8 @@ -1557,35 +1613,30 @@ #define PCIX_STATUS_HI_MMRBC_2K 0x2 -/* The number of bits that we need to shift right to move the "pause" - * bits from the EEPROM (bits 13:12) to the "pause" (bits 8:7) field - * in the TXCW register +/* Number of bits required to shift right the "pause" bits from the + * EEPROM (bits 13:12) to the "pause" (bits 8:7) field in the TXCW register. */ #define PAUSE_SHIFT 5 -/* The number of bits that we need to shift left to move the "SWDPIO" - * bits from the EEPROM (bits 8:5) to the "SWDPIO" (bits 25:22) field - * in the CTRL register +/* Number of bits required to shift left the "SWDPIO" bits from the + * EEPROM (bits 8:5) to the "SWDPIO" (bits 25:22) field in the CTRL register. */ #define SWDPIO_SHIFT 17 -/* The number of bits that we need to shift left to move the "SWDPIO_EXT" - * bits from the EEPROM word F (bits 7:4) to the bits 11:8 of The - * Extended CTRL register. - * in the CTRL register +/* Number of bits required to shift left the "SWDPIO_EXT" bits from the + * EEPROM word F (bits 7:4) to the bits 11:8 of The Extended CTRL register. */ #define SWDPIO__EXT_SHIFT 4 -/* The number of bits that we need to shift left to move the "ILOS" - * bit from the EEPROM (bit 4) to the "ILOS" (bit 7) field - * in the CTRL register +/* Number of bits required to shift left the "ILOS" bit from the EEPROM + * (bit 4) to the "ILOS" (bit 7) field in the CTRL register. */ #define ILOS_SHIFT 3 #define RECEIVE_BUFFER_ALIGN_SIZE (256) -/* The number of milliseconds we wait for auto-negotiation to complete */ +/* Number of milliseconds we wait for auto-negotiation to complete */ #define LINK_UP_TIMEOUT 500 #define E1000_TX_BUFFER_SIZE ((uint32_t)1514) @@ -1668,7 +1719,16 @@ #define M88E1000_EXT_PHY_SPEC_CTRL 0x14 /* Extended PHY Specific Control */ #define M88E1000_RX_ERR_CNTR 0x15 /* Receive Error Counter */ +#define M88E1000_PHY_EXT_CTRL 0x1A /* PHY extend control register */ +#define M88E1000_PHY_PAGE_SELECT 0x1D /* Reg 29 for page number setting */ +#define M88E1000_PHY_GEN_CONTROL 0x1E /* Its meaning depends on reg 29 */ +#define M88E1000_PHY_VCO_REG_BIT8 0x100 /* Bits 8 & 11 are adjusted for */ +#define M88E1000_PHY_VCO_REG_BIT11 0x800 /* improved BER performance */ + #define IGP01E1000_IEEE_REGS_PAGE 0x0000 +#define IGP01E1000_IEEE_RESTART_AUTONEG 0x3300 +#define IGP01E1000_IEEE_FORCE_GIGA 0x0140 + /* IGP01E1000 Specific Registers */ #define IGP01E1000_PHY_PORT_CONFIG 0x10 /* PHY Specific Port Config Register */ #define IGP01E1000_PHY_PORT_STATUS 0x11 /* PHY Specific Status Register */ @@ -1684,17 +1744,35 @@ #define IGP01E1000_PHY_AGC_C 0x1472 #define IGP01E1000_PHY_AGC_D 0x1872 -/* Number of AGC registers */ -#define IGP01E1000_PHY_AGC_NUM 4 +/* IGP01E1000 DSP Reset Register */ +#define IGP01E1000_PHY_DSP_RESET 0x1F33 +#define IGP01E1000_PHY_DSP_SET 0x1F71 +#define IGP01E1000_PHY_DSP_FFE 0x1F35 + +#define IGP01E1000_PHY_CHANNEL_NUM 4 +#define IGP01E1000_PHY_AGC_PARAM_A 0x1171 +#define IGP01E1000_PHY_AGC_PARAM_B 0x1271 +#define IGP01E1000_PHY_AGC_PARAM_C 0x1471 +#define IGP01E1000_PHY_AGC_PARAM_D 0x1871 + +#define IGP01E1000_PHY_EDAC_MU_INDEX 0xC000 +#define IGP01E1000_PHY_EDAC_SIGN_EXT_9_BITS 0x8000 + +#define IGP01E1000_PHY_ANALOG_TX_STATE 0x2890 +#define IGP01E1000_PHY_ANALOG_CLASS_A 0x2000 +#define IGP01E1000_PHY_FORCE_ANALOG_ENABLE 0x0004 +#define IGP01E1000_PHY_DSP_FFE_CM_CP 0x0069 +#define IGP01E1000_PHY_DSP_FFE_DEFAULT 0x002A /* IGP01E1000 PCS Initialization register - stores the polarity status when * speed = 1000 Mbps. */ #define IGP01E1000_PHY_PCS_INIT_REG 0x00B4 +#define IGP01E1000_PHY_PCS_CTRL_REG 0x00B5 #define IGP01E1000_ANALOG_REGS_PAGE 0x20C0 #define MAX_PHY_REG_ADDRESS 0x1F /* 5 bit address bus (0-0x1F) */ - +#define MAX_PHY_MULTI_PAGE_REG 0xF /*Registers that are equal on all pages*/ /* PHY Control Register */ #define MII_CR_SPEED_SELECT_MSB 0x0040 /* bits 6,13: 10=1000, 01=100, 00=10 */ #define MII_CR_COLL_TEST_ENABLE 0x0080 /* Collision test enable */ @@ -1808,8 +1886,11 @@ #define SR_1000T_LOCAL_RX_STATUS 0x2000 /* Local receiver OK */ #define SR_1000T_MS_CONFIG_RES 0x4000 /* 1=Local TX is Master, 0=Slave */ #define SR_1000T_MS_CONFIG_FAULT 0x8000 /* Master/Slave config fault */ -#define SR_1000T_REMOTE_RX_STATUS_SHIFT 12 -#define SR_1000T_LOCAL_RX_STATUS_SHIFT 13 +#define SR_1000T_REMOTE_RX_STATUS_SHIFT 12 +#define SR_1000T_LOCAL_RX_STATUS_SHIFT 13 +#define SR_1000T_PHY_EXCESSIVE_IDLE_ERR_COUNT 5 +#define FFE_IDLE_ERR_COUNT_TIMEOUT_20 20 +#define FFE_IDLE_ERR_COUNT_TIMEOUT_100 100 /* Extended Status Register */ #define IEEE_ESR_1000T_HD_CAPS 0x1000 /* 1000T HD capable */ @@ -1901,7 +1982,6 @@ #define M88E1000_EPSCR_TX_CLK_25 0x0070 /* 25 MHz TX_CLK */ #define M88E1000_EPSCR_TX_CLK_0 0x0000 /* NO TX_CLK */ - /* IGP01E1000 Specific Port Config Register - R/W */ #define IGP01E1000_PSCFR_AUTO_MDIX_PAR_DETECT 0x0010 #define IGP01E1000_PSCFR_PRE_EN 0x0020 @@ -1952,6 +2032,11 @@ #define IGP01E1000_MSE_CHANNEL_B 0x0F00 #define IGP01E1000_MSE_CHANNEL_A 0xF000 +/* IGP01E1000 DSP reset macros */ +#define DSP_RESET_ENABLE 0x0 +#define DSP_RESET_DISABLE 0x2 +#define E1000_MAX_DSP_RESETS 10 + /* IGP01E1000 AGC Registers */ #define IGP01E1000_AGC_LENGTH_SHIFT 7 /* Coarse - 13:11, Fine - 10:7 */ @@ -1962,18 +2047,6 @@ /* The precision of the length is +/- 10 meters */ #define IGP01E1000_AGC_RANGE 10 -/* IGP cable length table */ -static const -uint16_t e1000_igp_cable_length_table[IGP01E1000_AGC_LENGTH_TABLE_SIZE] = - { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 25, 25, 25, - 25, 25, 25, 25, 30, 30, 30, 30, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 50, 50, 50, 50, 50, 50, 50, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 70, 70, 70, 70, 70, 70, 80, 80, 80, 80, 80, 80, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 110, 110, 110, 110, 110, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120}; - /* IGP01E1000 PCS Initialization register */ /* bits 3:6 in the PCS registers stores the channels polarity */ #define IGP01E1000_PHY_POLARITY_MASK 0x0078 @@ -1982,11 +2055,12 @@ #define IGP01E1000_GMII_FLEX_SPD 0x10 /* Enable flexible speed * on Link-Up */ #define IGP01E1000_GMII_SPD 0x20 /* Enable SPD */ + /* IGP01E1000 Analog Register */ -#define IGP01E1000_ANALOG_SPARE_FUSE_STATUS 0x0011 -#define IGP01E1000_ANALOG_FUSE_STATUS 0x0010 -#define IGP01E1000_ANALOG_FUSE_CONTROL 0x001C -#define IGP01E1000_ANALOG_FUSE_BYPASS 0x001E +#define IGP01E1000_ANALOG_SPARE_FUSE_STATUS 0x20D1 +#define IGP01E1000_ANALOG_FUSE_STATUS 0x20D0 +#define IGP01E1000_ANALOG_FUSE_CONTROL 0x20DC +#define IGP01E1000_ANALOG_FUSE_BYPASS 0x20DE #define IGP01E1000_ANALOG_FUSE_POLY_MASK 0xF000 #define IGP01E1000_ANALOG_FUSE_FINE_MASK 0x0F80 @@ -2032,5 +2106,8 @@ #define ADVERTISE_1000_HALF 0x0010 #define ADVERTISE_1000_FULL 0x0020 #define AUTONEG_ADVERTISE_SPEED_DEFAULT 0x002F /* Everything but 1000-Half */ +#define AUTONEG_ADVERTISE_10_100_ALL 0x000F /* All 10/100 speeds*/ +#define AUTONEG_ADVERTISE_10_ALL 0x0003 /* 10Mbps Full & Half speeds*/ + #endif /* _E1000_HW_H_ */ diff -Nru a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c --- a/drivers/net/e1000/e1000_main.c Mon Sep 22 00:30:20 2003 +++ b/drivers/net/e1000/e1000_main.c Mon Sep 22 00:30:20 2003 @@ -30,6 +30,22 @@ /* Change Log * + * 5.2.16 8/8/03 + * o Added support for new controllers: 82545GM, 82546GB, 82541/7_B1 + * o Bug fix: reset h/w before first EEPROM read because we don't know + * who may have been messing with the device before we got there. + * [Dave Johnson (ddj -a-t- cascv.brown.edu)] + * o Bug fix: read the correct work from EEPROM to detect programmed + * WoL settings. + * o Bug fix: TSO would hang if space left in FIFO was being miscalculated + * when mss dropped without a correspoding drop in the DMA buffer size. + * o ASF for Fiber nics isn't supported. + * o Bug fix: Workaround added for potential hang with 82544 running in + * PCI-X if send buffer terminates within an evenly-aligned dword. + * o Feature: Add support for ethtool flow control setting. + * o Feature: Add support for ethtool TSO setting. + * o Feature: Increase default Tx Descriptor count to 1024 for >= 82544. + * * 5.1.13 5/28/03 * o Bug fix: request_irq() failure resulted in freeing resources twice! * [Don Fry (brazilnut@us.ibm.com)] @@ -39,18 +55,11 @@ * o Cleanup: s/int/unsigned int/ for descriptor ring indexes. * * 5.1.11 5/6/03 - * o Feature: Added support for 82546EB (Quad-port) hardware. - * o Feature: Added support for Diagnostics through Ethtool. - * o Cleanup: Removed /proc support. - * o Cleanup: Removed proprietary IDIAG interface. - * o Bug fix: TSO bug fixes. - * - * 5.0.42 3/5/03 */ char e1000_driver_name[] = "e1000"; char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver"; -char e1000_driver_version[] = "5.1.13-k2"; +char e1000_driver_version[] = "5.2.16-k1"; char e1000_copyright[] = "Copyright (c) 1999-2003 Intel Corporation."; /* e1000_pci_tbl - PCI Device ID Table @@ -71,15 +80,28 @@ {0x8086, 0x100D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {0x8086, 0x100E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {0x8086, 0x100F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, - {0x8086, 0x1011, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {0x8086, 0x1010, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1011, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {0x8086, 0x1012, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1013, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1014, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1015, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {0x8086, 0x1016, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {0x8086, 0x1017, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, - {0x8086, 0x101E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, - {0x8086, 0x101D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, - {0x8086, 0x1013, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1018, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {0x8086, 0x1019, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x101D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x101E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1026, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1027, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1028, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1075, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1076, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1077, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1078, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x1079, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x107A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0x8086, 0x107B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, /* required last entry */ {0,} }; @@ -426,6 +448,11 @@ if(pci_using_dac) netdev->features |= NETIF_F_HIGHDMA; + /* before reading the EEPROM, reset the controller to + * put the device in a known good starting state */ + + e1000_reset_hw(&adapter->hw); + /* make sure the EEPROM is good */ if(e1000_validate_eeprom_checksum(&adapter->hw) < 0) { @@ -457,7 +484,7 @@ adapter->phy_info_timer.function = &e1000_update_phy_info; adapter->phy_info_timer.data = (unsigned long) adapter; - INIT_WORK(&adapter->tx_timeout_task, + INIT_WORK(&adapter->tx_timeout_task, (void (*)(void *))e1000_tx_timeout_task, netdev); register_netdev(netdev); @@ -476,12 +503,28 @@ * enable the ACPI Magic Packet filter */ - e1000_read_eeprom(&adapter->hw, EEPROM_INIT_CONTROL2_REG,1, &eeprom_data); - if((adapter->hw.mac_type >= e1000_82544) && - (eeprom_data & E1000_EEPROM_APME)) + switch(adapter->hw.mac_type) { + case e1000_82542_rev2_0: + case e1000_82542_rev2_1: + case e1000_82543: + break; + case e1000_82546: + case e1000_82546_rev_3: + if((E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_FUNC_1) + && (adapter->hw.media_type == e1000_media_type_copper)) { + e1000_read_eeprom(&adapter->hw, + EEPROM_INIT_CONTROL3_PORT_B, 1, &eeprom_data); + break; + } + /* Fall Through */ + default: + e1000_read_eeprom(&adapter->hw, + EEPROM_INIT_CONTROL3_PORT_A, 1, &eeprom_data); + break; + } + if(eeprom_data & E1000_EEPROM_APME) adapter->wol |= E1000_WUFC_MAG; - /* reset the hardware with the new settings */ e1000_reset(adapter); @@ -516,7 +559,8 @@ struct e1000_adapter *adapter = netdev->priv; uint32_t manc; - if(adapter->hw.mac_type >= e1000_82540) { + if(adapter->hw.mac_type >= e1000_82540 && + adapter->hw.media_type == e1000_media_type_copper) { manc = E1000_READ_REG(&adapter->hw, MANC); if(manc & E1000_MANC_SMBUS_EN) { manc |= E1000_MANC_ARP_EN; @@ -584,21 +628,13 @@ hw->fc_pause_time = E1000_FC_PAUSE_TIME; hw->fc_send_xon = 1; - if((hw->mac_type == e1000_82541) || (hw->mac_type == e1000_82547)) + if((hw->mac_type == e1000_82541) || + (hw->mac_type == e1000_82547) || + (hw->mac_type == e1000_82541_rev_2) || + (hw->mac_type == e1000_82547_rev_2)) hw->phy_init_script = 1; - /* Media type - copper or fiber */ - - if(hw->mac_type >= e1000_82543) { - uint32_t status = E1000_READ_REG(hw, STATUS); - - if(status & E1000_STATUS_TBIMODE) - hw->media_type = e1000_media_type_fiber; - else - hw->media_type = e1000_media_type_copper; - } else { - hw->media_type = e1000_media_type_fiber; - } + e1000_set_media_type(hw); if(hw->mac_type < e1000_82543) hw->report_tx_early = 0; @@ -614,6 +650,7 @@ if(hw->media_type == e1000_media_type_copper) { hw->mdix = AUTO_ALL_MODES; hw->disable_polarity_correction = FALSE; + hw->master_slave = E1000_MASTER_SLAVE; } atomic_set(&adapter->irq_sem, 1); @@ -763,7 +800,8 @@ tipg |= DEFAULT_82542_TIPG_IPGR2 << E1000_TIPG_IPGR2_SHIFT; break; default: - if(adapter->hw.media_type == e1000_media_type_fiber) + if(adapter->hw.media_type == e1000_media_type_fiber || + adapter->hw.media_type == e1000_media_type_internal_serdes) tipg = DEFAULT_82543_TIPG_IPGT_FIBER; else tipg = DEFAULT_82543_TIPG_IPGT_COPPER; @@ -798,6 +836,12 @@ adapter->txd_cmd |= E1000_TXD_CMD_RS; else adapter->txd_cmd |= E1000_TXD_CMD_RPS; + + /* Cache if we're 82544 running in PCI-X because we'll + * need this to apply a workaround later in the send path. */ + if(adapter->hw.mac_type == e1000_82544 && + adapter->hw.bus_type == e1000_bus_type_pcix) + adapter->pcix_82544 = 1; } /** @@ -1490,27 +1534,46 @@ { struct e1000_desc_ring *tx_ring = &adapter->tx_ring; struct e1000_buffer *buffer_info; - int len = skb->len; + unsigned int len = skb->len, max_per_txd = E1000_MAX_DATA_PER_TXD; unsigned int offset = 0, size, count = 0, i; - #ifdef NETIF_F_TSO - unsigned int tso = skb_shinfo(skb)->tso_size; + unsigned int mss; #endif - unsigned int nr_frags = skb_shinfo(skb)->nr_frags; + unsigned int nr_frags; unsigned int f; + +#ifdef NETIF_F_TSO + mss = skb_shinfo(skb)->tso_size; + /* The controller does a simple calculation to + * make sure there is enough room in the FIFO before + * initiating the DMA for each buffer. The calc is: + * 4 = ceil(buffer len/mss). To make sure we don't + * overrun the FIFO, adjust the max buffer len if mss + * drops. */ + if (mss) + max_per_txd = min(mss << 2, max_per_txd); +#endif + nr_frags = skb_shinfo(skb)->nr_frags; len -= skb->data_len; i = tx_ring->next_to_use; while(len) { buffer_info = &tx_ring->buffer_info[i]; - size = min(len, E1000_MAX_DATA_PER_TXD); + size = min(len, max_per_txd); #ifdef NETIF_F_TSO /* Workaround for premature desc write-backs * in TSO mode. Append 4-byte sentinel desc */ - if(tso && !nr_frags && size == len && size > 4) + if(mss && !nr_frags && size == len && size > 8) size -= 4; #endif + /* Workaround for potential 82544 hang in PCI-X. Avoid + * terminating buffers within evenly-aligned dwords. */ + if(adapter->pcix_82544 && + !((unsigned long)(skb->data + offset + size - 1) & 4) && + size > 4) + size -= 4; + buffer_info->length = size; buffer_info->dma = pci_map_single(adapter->pdev, @@ -1530,22 +1593,30 @@ frag = &skb_shinfo(skb)->frags[f]; len = frag->size; - offset = 0; + offset = frag->page_offset; while(len) { buffer_info = &tx_ring->buffer_info[i]; - size = min(len, E1000_MAX_DATA_PER_TXD); + size = min(len, max_per_txd); #ifdef NETIF_F_TSO /* Workaround for premature desc write-backs * in TSO mode. Append 4-byte sentinel desc */ - if(tso && f == (nr_frags-1) && size == len && size > 4) + if(mss && f == (nr_frags-1) && size == len && size > 8) size -= 4; #endif + /* Workaround for potential 82544 hang in PCI-X. + * Avoid terminating buffers within evenly-aligned + * dwords. */ + if(adapter->pcix_82544 && + !((unsigned long)(frag->page+offset+size-1) & 4) && + size > 4) + size -= 4; + buffer_info->length = size; buffer_info->dma = pci_map_page(adapter->pdev, frag->page, - frag->page_offset + offset, + offset, size, PCI_DMA_TODEVICE); buffer_info->time_stamp = jiffies; @@ -1556,6 +1627,31 @@ if(++i == tx_ring->count) i = 0; } } + + if(E1000_DESC_UNUSED(&adapter->tx_ring) < count) { + + /* There aren't enough descriptors available to queue up + * this send, so undo the mapping and abort the send. + * We could have done the check before we mapped the skb, + * but because of all the workarounds (above), it's too + * difficult to predict how many we're going to need.*/ + i = first; + + while(count--) { + buffer_info = &tx_ring->buffer_info[i]; + if(buffer_info->dma) { + pci_unmap_page(adapter->pdev, + buffer_info->dma, + buffer_info->length, + PCI_DMA_TODEVICE); + buffer_info->dma = 0; + } + if(++i == tx_ring->count) i = 0; + } + + return 0; + } + i = (i == 0) ? tx_ring->count - 1 : i - 1; tx_ring->buffer_info[i].skb = skb; tx_ring->buffer_info[first].next_to_watch = i; @@ -1650,29 +1746,19 @@ return 0; } -/* Tx Descriptors needed, worst case */ -#define TXD_USE_COUNT(S) (((S) >> E1000_MAX_TXD_PWR) + \ - (((S) & (E1000_MAX_DATA_PER_TXD - 1)) ? 1 : 0)) -#define DESC_NEEDED TXD_USE_COUNT(MAX_JUMBO_FRAME_SIZE) + \ - MAX_SKB_FRAGS * TXD_USE_COUNT(PAGE_SIZE) + 1 - static int e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev) { struct e1000_adapter *adapter = netdev->priv; unsigned int first; unsigned int tx_flags = 0; + int count; if(skb->len <= 0) { dev_kfree_skb_any(skb); return 0; } - if(E1000_DESC_UNUSED(&adapter->tx_ring) < DESC_NEEDED) { - netif_stop_queue(netdev); - return 1; - } - if(adapter->hw.mac_type == e1000_82547) { if(e1000_82547_fifo_workaround(adapter, skb)) { netif_stop_queue(netdev); @@ -1693,7 +1779,12 @@ else if(e1000_tx_csum(adapter, skb)) tx_flags |= E1000_TX_FLAGS_CSUM; - e1000_tx_queue(adapter, e1000_tx_map(adapter, skb, first), tx_flags); + if((count = e1000_tx_map(adapter, skb, first))) + e1000_tx_queue(adapter, count, tx_flags); + else { + netif_stop_queue(netdev); + return 1; + } netdev->trans_start = jiffies; @@ -2001,6 +2092,7 @@ !e1000_clean_tx_irq(adapter)) break; #endif + return IRQ_HANDLED; } @@ -2387,7 +2479,7 @@ uint16_t mii_reg; uint16_t spddplx; - if(adapter->hw.media_type == e1000_media_type_fiber) + if(adapter->hw.media_type != e1000_media_type_copper) return -EOPNOTSUPP; switch (cmd) { @@ -2659,7 +2751,7 @@ case SYS_DOWN: case SYS_HALT: case SYS_POWER_OFF: - while ((pdev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, pdev)) != NULL) { + while((pdev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, pdev))) { if(pci_dev_driver(pdev) == &e1000_driver) e1000_suspend(pdev, 3); } @@ -2706,7 +2798,8 @@ E1000_WRITE_REG(&adapter->hw, CTRL, ctrl); } - if(adapter->hw.media_type == e1000_media_type_fiber) { + if(adapter->hw.media_type == e1000_media_type_fiber || + adapter->hw.media_type == e1000_media_type_internal_serdes) { /* keep the laser running in D3 */ ctrl_ext = E1000_READ_REG(&adapter->hw, CTRL_EXT); ctrl_ext |= E1000_CTRL_EXT_SDP7_DATA; @@ -2726,7 +2819,8 @@ pci_save_state(pdev, adapter->pci_state); - if(adapter->hw.mac_type >= e1000_82540) { + if(adapter->hw.mac_type >= e1000_82540 && + adapter->hw.media_type == e1000_media_type_copper) { manc = E1000_READ_REG(&adapter->hw, MANC); if(manc & E1000_MANC_SMBUS_EN) { manc |= E1000_MANC_ARP_EN; @@ -2764,7 +2858,8 @@ netif_device_attach(netdev); - if(adapter->hw.mac_type >= e1000_82540) { + if(adapter->hw.mac_type >= e1000_82540 && + adapter->hw.media_type == e1000_media_type_copper) { manc = E1000_READ_REG(&adapter->hw, MANC); manc &= ~(E1000_MANC_ARP_EN); E1000_WRITE_REG(&adapter->hw, MANC, manc); diff -Nru a/drivers/net/e1000/e1000_osdep.h b/drivers/net/e1000/e1000_osdep.h --- a/drivers/net/e1000/e1000_osdep.h Mon Sep 22 00:30:19 2003 +++ b/drivers/net/e1000/e1000_osdep.h Mon Sep 22 00:30:19 2003 @@ -55,10 +55,13 @@ #define CMD_MEM_WRT_INVALIDATE PCI_COMMAND_INVALIDATE typedef enum { +#undef FALSE FALSE = 0, +#undef TRUE TRUE = 1 } boolean_t; +#undef ASSERT #define ASSERT(x) if(!(x)) BUG() #define MSGOUT(S, A, B) printk(KERN_DEBUG S "\n", A, B) diff -Nru a/drivers/net/e1000/e1000_param.c b/drivers/net/e1000/e1000_param.c --- a/drivers/net/e1000/e1000_param.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/e1000/e1000_param.c Mon Sep 22 00:30:23 2003 @@ -140,7 +140,7 @@ * Valid Range: 0, 1 * - 0 - disables all checksum offload * - 1 - enables receive IP/TCP/UDP checksum offload - * on 82543 based NICs + * on 82543 and newer -based NICs * * Default Value: 1 */ @@ -458,6 +458,7 @@ switch(adapter->hw.media_type) { case e1000_media_type_fiber: + case e1000_media_type_internal_serdes: e1000_check_fiber_options(adapter); break; case e1000_media_type_copper: @@ -601,7 +602,7 @@ switch (speed + dplx) { case 0: - adapter->hw.autoneg = 1; + adapter->hw.autoneg = adapter->fc_autoneg = 1; if(Speed[bd] != OPTION_UNSET || Duplex[bd] != OPTION_UNSET) printk(KERN_INFO "Speed and duplex autonegotiation enabled\n"); @@ -609,14 +610,14 @@ case HALF_DUPLEX: printk(KERN_INFO "Half Duplex specified without Speed\n"); printk(KERN_INFO "Using Autonegotiation at Half Duplex only\n"); - adapter->hw.autoneg = 1; + adapter->hw.autoneg = adapter->fc_autoneg = 1; adapter->hw.autoneg_advertised = ADVERTISE_10_HALF | ADVERTISE_100_HALF; break; case FULL_DUPLEX: printk(KERN_INFO "Full Duplex specified without Speed\n"); printk(KERN_INFO "Using Autonegotiation at Full Duplex only\n"); - adapter->hw.autoneg = 1; + adapter->hw.autoneg = adapter->fc_autoneg = 1; adapter->hw.autoneg_advertised = ADVERTISE_10_FULL | ADVERTISE_100_FULL | ADVERTISE_1000_FULL; @@ -624,38 +625,38 @@ case SPEED_10: printk(KERN_INFO "10 Mbps Speed specified without Duplex\n"); printk(KERN_INFO "Using Autonegotiation at 10 Mbps only\n"); - adapter->hw.autoneg = 1; + adapter->hw.autoneg = adapter->fc_autoneg = 1; adapter->hw.autoneg_advertised = ADVERTISE_10_HALF | ADVERTISE_10_FULL; break; case SPEED_10 + HALF_DUPLEX: printk(KERN_INFO "Forcing to 10 Mbps Half Duplex\n"); - adapter->hw.autoneg = 0; + adapter->hw.autoneg = adapter->fc_autoneg = 0; adapter->hw.forced_speed_duplex = e1000_10_half; adapter->hw.autoneg_advertised = 0; break; case SPEED_10 + FULL_DUPLEX: printk(KERN_INFO "Forcing to 10 Mbps Full Duplex\n"); - adapter->hw.autoneg = 0; + adapter->hw.autoneg = adapter->fc_autoneg = 0; adapter->hw.forced_speed_duplex = e1000_10_full; adapter->hw.autoneg_advertised = 0; break; case SPEED_100: printk(KERN_INFO "100 Mbps Speed specified without Duplex\n"); printk(KERN_INFO "Using Autonegotiation at 100 Mbps only\n"); - adapter->hw.autoneg = 1; + adapter->hw.autoneg = adapter->fc_autoneg = 1; adapter->hw.autoneg_advertised = ADVERTISE_100_HALF | ADVERTISE_100_FULL; break; case SPEED_100 + HALF_DUPLEX: printk(KERN_INFO "Forcing to 100 Mbps Half Duplex\n"); - adapter->hw.autoneg = 0; + adapter->hw.autoneg = adapter->fc_autoneg = 0; adapter->hw.forced_speed_duplex = e1000_100_half; adapter->hw.autoneg_advertised = 0; break; case SPEED_100 + FULL_DUPLEX: printk(KERN_INFO "Forcing to 100 Mbps Full Duplex\n"); - adapter->hw.autoneg = 0; + adapter->hw.autoneg = adapter->fc_autoneg = 0; adapter->hw.forced_speed_duplex = e1000_100_full; adapter->hw.autoneg_advertised = 0; break; @@ -663,20 +664,20 @@ printk(KERN_INFO "1000 Mbps Speed specified without Duplex\n"); printk(KERN_INFO "Using Autonegotiation at 1000 Mbps Full Duplex only\n"); - adapter->hw.autoneg = 1; + adapter->hw.autoneg = adapter->fc_autoneg = 1; adapter->hw.autoneg_advertised = ADVERTISE_1000_FULL; break; case SPEED_1000 + HALF_DUPLEX: printk(KERN_INFO "Half Duplex is not supported at 1000 Mbps\n"); printk(KERN_INFO "Using Autonegotiation at 1000 Mbps Full Duplex only\n"); - adapter->hw.autoneg = 1; + adapter->hw.autoneg = adapter->fc_autoneg = 1; adapter->hw.autoneg_advertised = ADVERTISE_1000_FULL; break; case SPEED_1000 + FULL_DUPLEX: printk(KERN_INFO "Using Autonegotiation at 1000 Mbps Full Duplex only\n"); - adapter->hw.autoneg = 1; + adapter->hw.autoneg = adapter->fc_autoneg = 1; adapter->hw.autoneg_advertised = ADVERTISE_1000_FULL; break; default: diff -Nru a/drivers/net/eepro.c b/drivers/net/eepro.c --- a/drivers/net/eepro.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/eepro.c Mon Sep 22 00:30:23 2003 @@ -897,14 +897,12 @@ eepro_sw2bank0(ioaddr); /* Switch back to Bank 0 */ if (request_irq (*irqp, NULL, SA_SHIRQ, "bogus", dev) != EBUSY) { - unsigned long irq_mask, delay; + unsigned long irq_mask; /* Twinkle the interrupt, and check if it's seen */ irq_mask = probe_irq_on(); eepro_diag(ioaddr); /* RESET the 82595 */ - - delay = jiffies + HZ/50; - while (time_before(jiffies, delay)) ; + mdelay(20); if (*irqp == probe_irq_off(irq_mask)) /* It's a good IRQ line */ break; diff -Nru a/drivers/net/es3210.c b/drivers/net/es3210.c --- a/drivers/net/es3210.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/es3210.c Mon Sep 22 00:30:24 2003 @@ -49,6 +49,7 @@ "es3210.c: Driver revision v0.03, 14/09/96\n"; #include +#include #include #include #include diff -Nru a/drivers/net/ewrk3.c b/drivers/net/ewrk3.c --- a/drivers/net/ewrk3.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/ewrk3.c Mon Sep 22 00:30:25 2003 @@ -564,7 +564,7 @@ if (dev->irq < 2) { #ifndef MODULE u_char irqnum; - unsigned long irq_mask, delay; + unsigned long irq_mask; irq_mask = probe_irq_on(); @@ -578,8 +578,7 @@ irqnum = irq[((icr & IRQ_SEL) >> 4)]; - delay = jiffies + HZ/50; - while (time_before(jiffies, delay)) ; + mdelay(20); dev->irq = probe_irq_off(irq_mask); if ((dev->irq) && (irqnum == dev->irq)) { printk(" and uses IRQ%d.\n", dev->irq); diff -Nru a/drivers/net/fc/iph5526.c b/drivers/net/fc/iph5526.c --- a/drivers/net/fc/iph5526.c Mon Sep 22 00:30:19 2003 +++ b/drivers/net/fc/iph5526.c Mon Sep 22 00:30:19 2003 @@ -110,7 +110,7 @@ #define ALIGNED_ADDR(addr, len) ((((unsigned long)(addr) + (len - 1)) & ~(len - 1)) - (unsigned long)(addr)) -static struct pci_device_id iph5526_pci_tbl[] __initdata = { +static struct pci_device_id iph5526_pci_tbl[] = { { PCI_VENDOR_ID_INTERPHASE, PCI_DEVICE_ID_INTERPHASE_5526, PCI_ANY_ID, PCI_ANY_ID, }, { PCI_VENDOR_ID_INTERPHASE, PCI_DEVICE_ID_INTERPHASE_55x6, PCI_ANY_ID, PCI_ANY_ID, }, { } /* Terminating entry */ diff -Nru a/drivers/net/hamachi.c b/drivers/net/hamachi.c --- a/drivers/net/hamachi.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/hamachi.c Mon Sep 22 00:30:25 2003 @@ -178,7 +178,7 @@ #include #include -static char version[] __initdata = +static char version[] __devinitdata = KERN_INFO DRV_NAME ".c:v" DRV_VERSION " " DRV_RELDATE " Written by Donald Becker\n" KERN_INFO " Some modifications by Eric kasten \n" KERN_INFO " Further modifications by Keith Underwood \n"; @@ -569,7 +569,7 @@ static void set_rx_mode(struct net_device *dev); -static int __init hamachi_init_one (struct pci_dev *pdev, +static int __devinit hamachi_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) { struct hamachi_private *hmp; @@ -794,7 +794,7 @@ return ret; } -static int __init read_eeprom(long ioaddr, int location) +static int __devinit read_eeprom(long ioaddr, int location) { int bogus_cnt = 1000; diff -Nru a/drivers/net/hamradio/baycom_par.c b/drivers/net/hamradio/baycom_par.c --- a/drivers/net/hamradio/baycom_par.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/hamradio/baycom_par.c Mon Sep 22 00:30:24 2003 @@ -68,7 +68,6 @@ /*****************************************************************************/ -#include #include #include #include diff -Nru a/drivers/net/hamradio/baycom_ser_fdx.c b/drivers/net/hamradio/baycom_ser_fdx.c --- a/drivers/net/hamradio/baycom_ser_fdx.c Mon Sep 22 00:30:22 2003 +++ b/drivers/net/hamradio/baycom_ser_fdx.c Mon Sep 22 00:30:22 2003 @@ -71,7 +71,6 @@ /*****************************************************************************/ -#include #include #include #include diff -Nru a/drivers/net/hamradio/baycom_ser_hdx.c b/drivers/net/hamradio/baycom_ser_hdx.c --- a/drivers/net/hamradio/baycom_ser_hdx.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/hamradio/baycom_ser_hdx.c Mon Sep 22 00:30:18 2003 @@ -61,7 +61,6 @@ /*****************************************************************************/ -#include #include #include #include diff -Nru a/drivers/net/hamradio/bpqether.c b/drivers/net/hamradio/bpqether.c --- a/drivers/net/hamradio/bpqether.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/hamradio/bpqether.c Mon Sep 22 00:30:21 2003 @@ -389,8 +389,6 @@ return buf; } -#define BPQ_PROC_START ((void *)1) - static void *bpq_seq_start(struct seq_file *seq, loff_t *pos) { int i = 1; @@ -399,7 +397,7 @@ rcu_read_lock(); if (*pos == 0) - return BPQ_PROC_START; + return SEQ_START_TOKEN; list_for_each_entry(bpqdev, &bpq_devices, bpq_list) { if (i == *pos) @@ -414,7 +412,7 @@ ++*pos; - if (v == BPQ_PROC_START) + if (v == SEQ_START_TOKEN) p = bpq_devices.next; else p = ((struct bpqdev *)v)->bpq_list.next; @@ -431,7 +429,7 @@ static int bpq_seq_show(struct seq_file *seq, void *v) { - if (v == BPQ_PROC_START) + if (v == SEQ_START_TOKEN) seq_puts(seq, "dev ether destination accept from\n"); else { diff -Nru a/drivers/net/hamradio/hdlcdrv.c b/drivers/net/hamradio/hdlcdrv.c --- a/drivers/net/hamradio/hdlcdrv.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/hamradio/hdlcdrv.c Mon Sep 22 00:30:23 2003 @@ -43,7 +43,6 @@ /*****************************************************************************/ #include -#include #include #include #include diff -Nru a/drivers/net/hamradio/scc.c b/drivers/net/hamradio/scc.c --- a/drivers/net/hamradio/scc.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/hamradio/scc.c Mon Sep 22 00:30:24 2003 @@ -171,6 +171,7 @@ #include #include #include +#include #include @@ -202,8 +203,8 @@ static irqreturn_t scc_isr(int irq, void *dev_id, struct pt_regs *regs); static void scc_init_timer(struct scc_channel *scc); -static int scc_net_setup(struct scc_channel *scc, unsigned char *name, int addev); -static int scc_net_init(struct net_device *dev); +static int scc_net_alloc(const char *name, struct scc_channel *scc); +static void scc_net_setup(struct net_device *dev); static int scc_net_open(struct net_device *dev); static int scc_net_close(struct net_device *dev); static void scc_net_rx(struct scc_channel *scc, struct sk_buff *skb); @@ -235,7 +236,7 @@ /* These provide interrupt save 2-step access to the Z8530 registers */ -static spinlock_t iolock; /* Guards paired accesses */ +static spinlock_t iolock = SPIN_LOCK_UNLOCKED; /* Guards paired accesses */ static inline unsigned char InReg(io_port port, unsigned char reg) { @@ -1512,34 +1513,28 @@ * Allocate device structure, err, instance, and register driver */ -static int scc_net_setup(struct scc_channel *scc, unsigned char *name, int addev) +static int scc_net_alloc(const char *name, struct scc_channel *scc) { + int err; struct net_device *dev; - if (dev_get(name)) - { - printk(KERN_INFO "Z8530drv: device %s already exists.\n", name); - return -EEXIST; - } - - if ((scc->dev = (struct net_device *) kmalloc(sizeof(struct net_device), GFP_KERNEL)) == NULL) + dev = alloc_netdev(0, name, scc_net_setup); + if (!dev) return -ENOMEM; - dev = scc->dev; - memset(dev, 0, sizeof(struct net_device)); - - strcpy(dev->name, name); - dev->priv = (void *) scc; - dev->init = scc_net_init; - + dev->priv = scc; + scc->dev = dev; spin_lock_init(&scc->lock); - - if ((addev? register_netdevice(dev) : register_netdev(dev)) != 0) { - kfree(dev); - return -EIO; - } - SET_MODULE_OWNER(dev); + err = register_netdev(dev); + if (err) { + printk(KERN_ERR "%s: can't register network device (%d)\n", + name, err); + free_netdev(dev); + scc->dev = NULL; + return err; + } + return 0; } @@ -1556,8 +1551,9 @@ /* ----> Initialize device <----- */ -static int scc_net_init(struct net_device *dev) +static void scc_net_setup(struct net_device *dev) { + SET_MODULE_OWNER(dev); dev->tx_queue_len = 16; /* should be enough... */ dev->open = scc_net_open; @@ -1581,7 +1577,6 @@ dev->mtu = AX25_DEF_PACLEN; dev->addr_len = AX25_ADDR_LEN; - return 0; } /* ----> open network device <---- */ @@ -1719,10 +1714,10 @@ struct scc_mem_config memcfg; struct scc_hw_config hwcfg; struct scc_calibrate cal; + struct scc_channel *scc; int chan; - unsigned char device_name[10]; + unsigned char device_name[IFNAMSIZ]; void *arg; - struct scc_channel *scc; scc = (struct scc_channel *) dev->priv; arg = (void *) ifr->ifr_data; @@ -1828,8 +1823,10 @@ { request_region(SCC_Info[2*Nchips+chan].ctrl, 1, "scc ctrl"); request_region(SCC_Info[2*Nchips+chan].data, 1, "scc data"); - if (Nchips+chan != 0) - scc_net_setup(&SCC_Info[2*Nchips+chan], device_name, 1); + if (Nchips+chan != 0 && + scc_net_alloc(device_name, + &SCC_Info[2*Nchips+chan])) + return -EINVAL; } } @@ -1978,39 +1975,58 @@ /* * dump statistics to /proc/net/z8530drv * */ /* ******************************************************************** */ +#ifdef CONFIG_PROC_FS -static int scc_net_get_info(char *buffer, char **start, off_t offset, int length) +static inline struct scc_channel *scc_net_seq_idx(loff_t pos) { - struct scc_channel *scc; - struct scc_kiss *kiss; - struct scc_stat *stat; - int len = 0; - off_t pos = 0; - off_t begin = 0; int k; - len += sprintf(buffer, "z8530drv-"VERSION"\n"); - - if (!Driver_Initialized) - { - len += sprintf(buffer+len, "not initialized\n"); - goto done; + for (k = 0; k < Nchips*2; ++k) { + if (!SCC_Info[k].init) + continue; + if (pos-- == 0) + return &SCC_Info[k]; } + return NULL; +} - if (!Nchips) - { - len += sprintf(buffer+len, "chips missing\n"); - goto done; +static void *scc_net_seq_start(struct seq_file *seq, loff_t *pos) +{ + return *pos ? scc_net_seq_idx(*pos - 1) : SEQ_START_TOKEN; + +} + +static void *scc_net_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + unsigned k; + struct scc_channel *scc = v; + ++*pos; + + for (k = (v == SEQ_START_TOKEN) ? 0 : (scc - SCC_Info)+1; + k < Nchips*2; ++k) { + if (SCC_Info[k].init) + return &SCC_Info[k]; } + return NULL; +} - for (k = 0; k < Nchips*2; k++) - { - scc = &SCC_Info[k]; - stat = &scc->stat; - kiss = &scc->kiss; +static void scc_net_seq_stop(struct seq_file *seq, void *v) +{ +} + +static int scc_net_seq_show(struct seq_file *seq, void *v) +{ + if (v == SEQ_START_TOKEN) { + seq_puts(seq, "z8530drv-"VERSION"\n"); + } else if (!Driver_Initialized) { + seq_puts(seq, "not initialized\n"); + } else if (!Nchips) { + seq_puts(seq, "chips missing\n"); + } else { + const struct scc_channel *scc = v; + const struct scc_stat *stat = &scc->stat; + const struct scc_kiss *kiss = &scc->kiss; - if (!scc->init) - continue; /* dev data ctrl irq clock brand enh vector special option * baud nrz clocksrc softdcd bufsize @@ -2021,24 +2037,24 @@ * R ## ## XX ## ## ## ## ## XX ## ## ## ## ## ## ## */ - len += sprintf(buffer+len, "%s\t%3.3lx %3.3lx %d %lu %2.2x %d %3.3lx %3.3lx %d\n", + seq_printf(seq, "%s\t%3.3lx %3.3lx %d %lu %2.2x %d %3.3lx %3.3lx %d\n", scc->dev->name, scc->data, scc->ctrl, scc->irq, scc->clock, scc->brand, scc->enhanced, Vector_Latch, scc->special, scc->option); - len += sprintf(buffer+len, "\t%lu %d %d %d %d\n", + seq_printf(seq, "\t%lu %d %d %d %d\n", scc->modem.speed, scc->modem.nrz, scc->modem.clocksrc, kiss->softdcd, stat->bufsize); - len += sprintf(buffer+len, "\t%lu %lu %lu %lu\n", + seq_printf(seq, "\t%lu %lu %lu %lu\n", stat->rxints, stat->txints, stat->exints, stat->spints); - len += sprintf(buffer+len, "\t%lu %lu %d / %lu %lu %d / %d %d\n", + seq_printf(seq, "\t%lu %lu %d / %lu %lu %d / %d %d\n", stat->rxframes, stat->rxerrs, stat->rx_over, stat->txframes, stat->txerrs, stat->tx_under, stat->nospace, stat->tx_state); #define K(x) kiss->x - len += sprintf(buffer+len, "\t%d %d %d %d %d %d %d %d %d %d %d %d\n", + seq_printf(seq, "\t%d %d %d %d %d %d %d %d %d %d %d %d\n", K(txdelay), K(persist), K(slottime), K(tailtime), K(fulldup), K(waittime), K(mintime), K(maxkeyup), K(idletime), K(maxdefer), K(tx_inhibit), K(group)); @@ -2047,43 +2063,49 @@ { int reg; - len += sprintf(buffer+len, "\tW "); + seq_printf(seq, "\tW "); for (reg = 0; reg < 16; reg++) - len += sprintf(buffer+len, "%2.2x ", scc->wreg[reg]); - len += sprintf(buffer+len, "\n"); + seq_printf(seq, "%2.2x ", scc->wreg[reg]); + seq_printf(seq, "\n"); - len += sprintf(buffer+len, "\tR %2.2x %2.2x XX ", InReg(scc->ctrl,R0), InReg(scc->ctrl,R1)); + seq_printf(seq, "\tR %2.2x %2.2x XX ", InReg(scc->ctrl,R0), InReg(scc->ctrl,R1)); for (reg = 3; reg < 8; reg++) - len += sprintf(buffer+len, "%2.2x ", InReg(scc->ctrl, reg)); - len += sprintf(buffer+len, "XX "); + seq_printf(seq, "%2.2x ", InReg(scc->ctrl, reg)); + seq_printf(seq, "XX "); for (reg = 9; reg < 16; reg++) - len += sprintf(buffer+len, "%2.2x ", InReg(scc->ctrl, reg)); - len += sprintf(buffer+len, "\n"); + seq_printf(seq, "%2.2x ", InReg(scc->ctrl, reg)); + seq_printf(seq, "\n"); } #endif - len += sprintf(buffer+len, "\n"); - - pos = begin + len; - - if (pos < offset) { - len = 0; - begin = pos; - } - - if (pos > offset + length) - break; + seq_putc(seq, '\n'); } -done: + return 0; +} - *start = buffer + (offset - begin); - len -= (offset - begin); +static struct seq_operations scc_net_seq_ops = { + .start = scc_net_seq_start, + .next = scc_net_seq_next, + .stop = scc_net_seq_stop, + .show = scc_net_seq_show, +}; - if (len > length) len = length; - return len; +static int scc_net_seq_open(struct inode *inode, struct file *file) +{ + return seq_open(file, &scc_net_seq_ops); } +static struct file_operations scc_net_seq_fops = { + .owner = THIS_MODULE, + .open = scc_net_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release_private, +}; + +#endif /* CONFIG_PROC_FS */ + /* ******************************************************************** */ /* * Init SCC driver * */ @@ -2091,23 +2113,18 @@ static int __init scc_init_driver (void) { - int result; - char devname[10]; + char devname[IFNAMSIZ]; printk(banner); - spin_lock_init(&iolock); - sprintf(devname,"%s0", SCC_DriverName); - result = scc_net_setup(SCC_Info, devname, 0); - if (result) - { + if (scc_net_alloc(devname, SCC_Info)) { printk(KERN_ERR "z8530drv: cannot initialize module\n"); - return result; + return -EIO; } - proc_net_create("z8530drv", 0, scc_net_get_info); + proc_net_fops_create("z8530drv", 0, &scc_net_seq_fops); return 0; } @@ -2117,11 +2134,12 @@ io_port ctrl; int k; struct scc_channel *scc; + struct net_device *dev; - if (Nchips == 0) + if (Nchips == 0 && (dev = SCC_Info[0].dev)) { - unregister_netdev(SCC_Info[0].dev); - free_netdev(SCC_Info[0].dev); + unregister_netdev(dev); + free_netdev(dev); } /* Guard against chip prattle */ diff -Nru a/drivers/net/hamradio/yam.c b/drivers/net/hamradio/yam.c --- a/drivers/net/hamradio/yam.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/hamradio/yam.c Mon Sep 22 00:30:23 2003 @@ -74,7 +74,6 @@ #include #include -#include #include #include diff -Nru a/drivers/net/hp100.c b/drivers/net/hp100.c --- a/drivers/net/hp100.c Mon Sep 22 00:30:20 2003 +++ b/drivers/net/hp100.c Mon Sep 22 00:30:20 2003 @@ -104,6 +104,7 @@ #include #include #include +#include #include #include #include @@ -284,7 +285,7 @@ #define HP100_PCI_IDS_SIZE (sizeof(hp100_pci_ids)/sizeof(struct hp100_pci_id)) -static struct pci_device_id hp100_pci_tbl[] __initdata = { +static struct pci_device_id hp100_pci_tbl[] = { {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_J2585A, PCI_ANY_ID, PCI_ANY_ID,}, {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_J2585B, PCI_ANY_ID, PCI_ANY_ID,}, {PCI_VENDOR_ID_COMPEX, PCI_DEVICE_ID_COMPEX_ENET100VG4, PCI_ANY_ID, PCI_ANY_ID,}, diff -Nru a/drivers/net/ibmlana.c b/drivers/net/ibmlana.c --- a/drivers/net/ibmlana.c Mon Sep 22 00:30:19 2003 +++ b/drivers/net/ibmlana.c Mon Sep 22 00:30:19 2003 @@ -74,7 +74,6 @@ *************************************************************************/ -#include #include #include #include diff -Nru a/drivers/net/irda/Kconfig b/drivers/net/irda/Kconfig --- a/drivers/net/irda/Kconfig Mon Sep 22 00:30:23 2003 +++ b/drivers/net/irda/Kconfig Mon Sep 22 00:30:23 2003 @@ -254,18 +254,6 @@ . The module will be called w83977af_ir. -config TOSHIBA_OLD - tristate "Toshiba Type-O IR Port (old driver)" - depends on IRDA && BROKEN_ON_SMP - help - Say Y here if you want to build support for the Toshiba Type-O IR - chipset. This chipset is used by the Toshiba Libretto 100CT, and - many more laptops. This driver is obsolete, will no more be - maintained and will be removed in favor of the new driver. - If you want to compile it as a module, say M here and read - . - The module will be called toshoboe. - config TOSHIBA_FIR tristate "Toshiba Type-O IR Port" depends on IRDA @@ -280,18 +268,6 @@ config AU1000_FIR tristate "Alchemy Au1000 SIR/FIR" depends on MIPS_AU1000 && IRDA - -config SMC_IRCC_OLD - tristate "SMC IrCC (old driver) (EXPERIMENTAL)" - depends on EXPERIMENTAL && IRDA && ISA - help - Say Y here if you want to build support for the SMC Infrared - Communications Controller. It is used in the Fujitsu Lifebook 635t - and Sony PCG-505TX. This driver is obsolete, will no more be - maintained and will be removed in favor of the new driver. - If you want to compile it as a module, say M here and read - . The module will be - called smc-ircc. config SMC_IRCC_FIR tristate "SMSC IrCC (EXPERIMENTAL)" diff -Nru a/drivers/net/irda/Makefile b/drivers/net/irda/Makefile --- a/drivers/net/irda/Makefile Mon Sep 22 00:30:21 2003 +++ b/drivers/net/irda/Makefile Mon Sep 22 00:30:21 2003 @@ -12,9 +12,7 @@ obj-$(CONFIG_NSC_FIR) += nsc-ircc.o obj-$(CONFIG_WINBOND_FIR) += w83977af_ir.o obj-$(CONFIG_SA1100_FIR) += sa1100_ir.o -obj-$(CONFIG_TOSHIBA_OLD) += toshoboe.o obj-$(CONFIG_TOSHIBA_FIR) += donauboe.o -obj-$(CONFIG_SMC_IRCC_OLD) += smc-ircc.o irport.o obj-$(CONFIG_SMC_IRCC_FIR) += smsc-ircc2.o obj-$(CONFIG_ALI_FIR) += ali-ircc.o obj-$(CONFIG_VLSI_FIR) += vlsi_ir.o diff -Nru a/drivers/net/irda/ali-ircc.c b/drivers/net/irda/ali-ircc.c --- a/drivers/net/irda/ali-ircc.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/irda/ali-ircc.c Mon Sep 22 00:30:21 2003 @@ -89,7 +89,6 @@ static int ali_ircc_setup(chipio_t *info); static int ali_ircc_is_receiving(struct ali_ircc_cb *self); -static int ali_ircc_net_init(struct net_device *dev); static int ali_ircc_net_open(struct net_device *dev); static int ali_ircc_net_close(struct net_device *dev); static int ali_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); @@ -255,14 +254,14 @@ if ((ali_ircc_setup(info)) == -1) return -1; - /* Allocate new instance of the driver */ - self = kmalloc(sizeof(struct ali_ircc_cb), GFP_KERNEL); - if (self == NULL) - { + dev = alloc_netdev(sizeof(*self), "irda%d", irda_device_setup); + if (dev == NULL) { ERROR("%s(), can't allocate memory for control block!\n", __FUNCTION__); return -ENOMEM; } - memset(self, 0, sizeof(struct ali_ircc_cb)); + + self = dev->priv; + self->netdev = dev; spin_lock_init(&self->lock); /* Need to store self somewhere */ @@ -282,9 +281,8 @@ if (!request_region(self->io.fir_base, self->io.fir_ext, driver_name)) { WARNING("%s(), can't get iobase of 0x%03x\n", __FUNCTION__, self->io.fir_base); - dev_self[i] = NULL; - kfree(self); - return -ENODEV; + err = -ENODEV; + goto err_out1; } /* Initialize QoS for this device */ @@ -307,19 +305,17 @@ /* Allocate memory if needed */ self->rx_buff.head = (__u8 *) kmalloc(self->rx_buff.truesize, GFP_KERNEL |GFP_DMA); - if (self->rx_buff.head == NULL) - { - kfree(self); - return -ENOMEM; + if (self->rx_buff.head == NULL) { + err = -ENOMEM; + goto err_out2; } memset(self->rx_buff.head, 0, self->rx_buff.truesize); self->tx_buff.head = (__u8 *) kmalloc(self->tx_buff.truesize, GFP_KERNEL|GFP_DMA); if (self->tx_buff.head == NULL) { - kfree(self->rx_buff.head); - kfree(self); - return -ENOMEM; + err = -ENOMEM; + goto err_out3; } memset(self->tx_buff.head, 0, self->tx_buff.truesize); @@ -332,28 +328,21 @@ self->tx_fifo.len = self->tx_fifo.ptr = self->tx_fifo.free = 0; self->tx_fifo.tail = self->tx_buff.head; - if (!(dev = dev_alloc("irda%d", &err))) { - ERROR("%s(), dev_alloc() failed!\n", __FUNCTION__); - return -ENOMEM; - } - - dev->priv = (void *) self; - self->netdev = dev; + /* Keep track of module usage */ + SET_MODULE_OWNER(dev); + /* Override the network functions we need to use */ - dev->init = ali_ircc_net_init; dev->hard_start_xmit = ali_ircc_sir_hard_xmit; dev->open = ali_ircc_net_open; dev->stop = ali_ircc_net_close; dev->do_ioctl = ali_ircc_net_ioctl; dev->get_stats = ali_ircc_net_get_stats; - rtnl_lock(); - err = register_netdevice(dev); - rtnl_unlock(); + err = register_netdev(dev); if (err) { ERROR("%s(), register_netdev() failed!\n", __FUNCTION__); - return -1; + goto err_out4; } MESSAGE("IrDA: Registered device %s\n", dev->name); @@ -370,6 +359,17 @@ IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __FUNCTION__); return 0; + + err_out4: + kfree(self->tx_buff.head); + err_out3: + kfree(self->rx_buff.head); + err_out2: + release_region(self->io.fir_base, self->io.fir_ext); + err_out1: + dev_self[i] = NULL; + free_netdev(dev); + return err; } @@ -390,8 +390,7 @@ iobase = self->io.fir_base; /* Remove netdevice */ - if (self->netdev) - unregister_netdev(self->netdev); + unregister_netdev(self->netdev); /* Release the PORT that this driver is using */ IRDA_DEBUG(4, "%s(), Releasing Region %03x\n", __FUNCTION__, self->io.fir_base); @@ -404,7 +403,7 @@ kfree(self->rx_buff.head); dev_self[self->index] = NULL; - kfree(self); + free_netdev(self->netdev); IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __FUNCTION__); @@ -1288,29 +1287,6 @@ IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); return actual; -} - -/* - * Function ali_ircc_net_init (dev) - * - * Initialize network device - * - */ -static int ali_ircc_net_init(struct net_device *dev) -{ - IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); - - /* Keep track of module usage */ - SET_MODULE_OWNER(dev); - - /* Setup to be a normal IrDA network device driver */ - irda_device_setup(dev); - - /* Insert overrides below this line! */ - - IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); - - return 0; } /* diff -Nru a/drivers/net/irda/donauboe.c b/drivers/net/irda/donauboe.c --- a/drivers/net/irda/donauboe.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/irda/donauboe.c Mon Sep 22 00:30:21 2003 @@ -1396,20 +1396,6 @@ return IRQ_HANDLED; } -static int -toshoboe_net_init (struct net_device *dev) -{ - IRDA_DEBUG (4, "%s()\n", __FUNCTION__); - - /* Keep track of module usage */ - SET_MODULE_OWNER(dev); - - /* Setup to be a normal IrDA network device driver */ - irda_device_setup (dev); - - /* Insert overrides below this line! */ - return 0; -} static int toshoboe_net_open (struct net_device *dev) @@ -1589,14 +1575,13 @@ self->rx_bufs[i] = NULL; } - if (self->netdev) - unregister_netdev(self->netdev); + unregister_netdev(self->netdev); kfree (self->ringbuf); self->ringbuf = NULL; self->ring = NULL; - return; + free_netdev(self->netdev); } static int @@ -1613,17 +1598,17 @@ if ((err=pci_enable_device(pci_dev))) return err; - self = kmalloc (sizeof (struct toshoboe_cb), GFP_KERNEL); - - if (self == NULL) + dev = alloc_netdev(sizeof (struct toshoboe_cb), "irda%d", + irda_device_setup); + if (dev == NULL) { printk (KERN_ERR DRIVER_NAME ": can't allocate memory for " "IrDA control block\n"); return -ENOMEM; } - memset (self, 0, sizeof (struct toshoboe_cb)); - + self = dev->priv; + self->netdev = dev; self->pdev = pci_dev; self->base = pci_resource_start(pci_dev,0); @@ -1732,33 +1717,20 @@ } #endif - if (!(dev = dev_alloc ("irda%d", &err))) - { - printk (KERN_ERR DRIVER_NAME ": dev_alloc() failed\n"); - err = -ENOMEM; - goto freebufs; - } - - dev->priv = (void *) self; - self->netdev = dev; - - printk (KERN_INFO "IrDA: Registered device %s\n", dev->name); - - dev->init = toshoboe_net_init; + SET_MODULE_OWNER(dev); dev->hard_start_xmit = toshoboe_hard_xmit; dev->open = toshoboe_net_open; dev->stop = toshoboe_net_close; dev->do_ioctl = toshoboe_net_ioctl; - rtnl_lock (); - err = register_netdevice (dev); - rtnl_unlock (); + err = register_netdev(dev); if (err) { printk (KERN_ERR DRIVER_NAME ": register_netdev() failed\n"); err = -ENOMEM; goto freebufs; } + printk (KERN_INFO "IrDA: Registered device %s\n", dev->name); pci_set_drvdata(pci_dev,self); @@ -1779,7 +1751,7 @@ release_region (self->io.fir_base, self->io.fir_ext); freeself: - kfree (self); + free_netdev(dev); return err; } diff -Nru a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c --- a/drivers/net/irda/irda-usb.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/irda/irda-usb.c Mon Sep 22 00:30:21 2003 @@ -112,7 +112,6 @@ static void speed_bulk_callback(struct urb *urb, struct pt_regs *regs); static void write_bulk_callback(struct urb *urb, struct pt_regs *regs); static void irda_usb_receive(struct urb *urb, struct pt_regs *regs); -static int irda_usb_net_init(struct net_device *dev); static int irda_usb_net_open(struct net_device *dev); static int irda_usb_net_close(struct net_device *dev); static int irda_usb_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); @@ -901,24 +900,6 @@ * be dealt with below... */ -/*------------------------------------------------------------------*/ -/* - * Callback when a new IrDA device is created. - */ -static int irda_usb_net_init(struct net_device *dev) -{ - IRDA_DEBUG(1, "%s()\n", __FUNCTION__); - - /* Keep track of module usage */ - SET_MODULE_OWNER(dev); - - /* Set up to be a normal IrDA network device driver */ - irda_device_setup(dev); - - /* Insert overrides below this line! */ - - return 0; -} /*------------------------------------------------------------------*/ /* @@ -1195,15 +1176,18 @@ memset(self->speed_buff, 0, IRDA_USB_SPEED_MTU); /* Create a network device for us */ - if (!(netdev = dev_alloc("irda%d", &err))) { - ERROR("%s(), dev_alloc() failed!\n", __FUNCTION__); - return -1; + netdev = alloc_netdev(0, "irda%d", irda_device_setup); + if (!netdev) { + ERROR("%s(), alloc_net_dev() failed!\n", __FUNCTION__); + return -ENOMEM; } + + SET_MODULE_OWNER(dev); + self->netdev = netdev; netdev->priv = (void *) self; /* Override the network functions we need to use */ - netdev->init = irda_usb_net_init; netdev->hard_start_xmit = irda_usb_hard_xmit; netdev->tx_timeout = irda_usb_net_timeout; netdev->watchdog_timeo = 250*HZ/1000; /* 250 ms > USB timeout */ @@ -1212,12 +1196,12 @@ netdev->get_stats = irda_usb_net_get_stats; netdev->do_ioctl = irda_usb_net_ioctl; - rtnl_lock(); - err = register_netdevice(netdev); - rtnl_unlock(); + err = register_netdev(netdev); if (err) { ERROR("%s(), register_netdev() failed!\n", __FUNCTION__); - return -1; + self->netdev = NULL; + free_netdev(netdev); + return err; } MESSAGE("IrDA: Registered device %s\n", netdev->name); @@ -1236,9 +1220,11 @@ ASSERT(self != NULL, return -1;); /* Remove netdevice */ - if (self->netdev) + if (self->netdev) { unregister_netdev(self->netdev); - self->netdev = NULL; + free_netdev(self->netdev); + self->netdev = NULL; + } /* Remove the speed buffer */ if (self->speed_buff != NULL) { diff -Nru a/drivers/net/irda/nsc-ircc.c b/drivers/net/irda/nsc-ircc.c --- a/drivers/net/irda/nsc-ircc.c Mon Sep 22 00:30:17 2003 +++ b/drivers/net/irda/nsc-ircc.c Mon Sep 22 00:30:17 2003 @@ -143,7 +143,6 @@ static int nsc_ircc_read_dongle_id (int iobase); static void nsc_ircc_init_dongle_interface (int iobase, int dongle_id); -static int nsc_ircc_net_init(struct net_device *dev); static int nsc_ircc_net_open(struct net_device *dev); static int nsc_ircc_net_close(struct net_device *dev); static int nsc_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); @@ -261,14 +260,16 @@ MESSAGE("%s, driver loaded (Dag Brattli)\n", driver_name); - /* Allocate new instance of the driver */ - self = kmalloc(sizeof(struct nsc_ircc_cb), GFP_KERNEL); - if (self == NULL) { + dev = alloc_netdev(sizeof(struct nsc_ircc_cb), "irda%d", + irda_device_setup); + if (dev == NULL) { ERROR("%s(), can't allocate memory for " "control block!\n", __FUNCTION__); return -ENOMEM; } - memset(self, 0, sizeof(struct nsc_ircc_cb)); + + self = dev->priv; + self->netdev = dev; spin_lock_init(&self->lock); /* Need to store self somewhere */ @@ -288,9 +289,8 @@ if (!ret) { WARNING("%s(), can't get iobase of 0x%03x\n", __FUNCTION__, self->io.fir_base); - dev_self[i] = NULL; - kfree(self); - return -ENODEV; + err = -ENODEV; + goto out1; } /* Initialize QoS for this device */ @@ -313,17 +313,17 @@ self->rx_buff.head = (__u8 *) kmalloc(self->rx_buff.truesize, GFP_KERNEL|GFP_DMA); if (self->rx_buff.head == NULL) { - kfree(self); - return -ENOMEM; + err = -ENOMEM; + goto out2; + } memset(self->rx_buff.head, 0, self->rx_buff.truesize); self->tx_buff.head = (__u8 *) kmalloc(self->tx_buff.truesize, GFP_KERNEL|GFP_DMA); if (self->tx_buff.head == NULL) { - kfree(self->rx_buff.head); - kfree(self); - return -ENOMEM; + err = -ENOMEM; + goto out3; } memset(self->tx_buff.head, 0, self->tx_buff.truesize); @@ -336,28 +336,18 @@ self->tx_fifo.len = self->tx_fifo.ptr = self->tx_fifo.free = 0; self->tx_fifo.tail = self->tx_buff.head; - if (!(dev = dev_alloc("irda%d", &err))) { - ERROR("%s(), dev_alloc() failed!\n", __FUNCTION__); - return -ENOMEM; - } - - dev->priv = (void *) self; - self->netdev = dev; - /* Override the network functions we need to use */ - dev->init = nsc_ircc_net_init; + SET_MODULE_OWNER(dev); dev->hard_start_xmit = nsc_ircc_hard_xmit_sir; dev->open = nsc_ircc_net_open; dev->stop = nsc_ircc_net_close; dev->do_ioctl = nsc_ircc_net_ioctl; dev->get_stats = nsc_ircc_net_get_stats; - rtnl_lock(); - err = register_netdevice(dev); - rtnl_unlock(); + err = register_netdev(dev); if (err) { ERROR("%s(), register_netdev() failed!\n", __FUNCTION__); - return -1; + goto out4; } MESSAGE("IrDA: Registered device %s\n", dev->name); @@ -380,6 +370,16 @@ pmdev->data = self; return 0; + out4: + kfree(self->tx_buff.head); + out3: + kfree(self->rx_buff.head); + out2: + release_region(self->io.fir_base, self->io.fir_ext); + out1: + free_netdev(dev); + dev_self[i] = NULL; + return err; } /* @@ -399,8 +399,7 @@ iobase = self->io.fir_base; /* Remove netdevice */ - if (self->netdev) - unregister_netdev(self->netdev); + unregister_netdev(self->netdev); /* Release the PORT that this driver is using */ IRDA_DEBUG(4, "%s(), Releasing Region %03x\n", @@ -414,7 +413,7 @@ kfree(self->rx_buff.head); dev_self[self->index] = NULL; - kfree(self); + free_netdev(self->netdev); return 0; } @@ -1988,27 +1987,6 @@ spin_unlock_irqrestore(&self->lock, flags); return status; -} - -/* - * Function nsc_ircc_net_init (dev) - * - * Initialize network device - * - */ -static int nsc_ircc_net_init(struct net_device *dev) -{ - IRDA_DEBUG(4, "%s()\n", __FUNCTION__); - - /* Keep track of module usage */ - SET_MODULE_OWNER(dev); - - /* Setup to be a normal IrDA network device driver */ - irda_device_setup(dev); - - /* Insert overrides below this line! */ - - return 0; } /* diff -Nru a/drivers/net/irda/sir_kthread.c b/drivers/net/irda/sir_kthread.c --- a/drivers/net/irda/sir_kthread.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/irda/sir_kthread.c Mon Sep 22 00:30:24 2003 @@ -132,7 +132,7 @@ if (list_empty(&irda_rq_queue.request_list)) schedule(); else - set_task_state(current, TASK_RUNNING); + __set_task_state(current, TASK_RUNNING); remove_wait_queue(&irda_rq_queue.kick, &wait); /* make swsusp happy with our thread */ @@ -165,7 +165,7 @@ if (atomic_read(&irda_rq_queue.num_pending)) schedule(); else - set_task_state(current, TASK_RUNNING); + __set_task_state(current, TASK_RUNNING); remove_wait_queue(&irda_rq_queue.done, &wait); } } diff -Nru a/drivers/net/irda/smc-ircc.c b/drivers/net/irda/smc-ircc.c --- a/drivers/net/irda/smc-ircc.c Mon Sep 22 00:30:17 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,1258 +0,0 @@ -/********************************************************************* - * - * Filename: smc-ircc.c - * Version: 0.4 - * Description: Driver for the SMC Infrared Communications Controller - * Status: Experimental. - * Author: Thomas Davis (tadavis@jps.net) - * Created at: - * Modified at: Tue Feb 22 10:05:06 2000 - * Modified by: Dag Brattli - * Modified at: Tue Jun 26 2001 - * Modified by: Stefani Seibold - * Modified at: Thur Apr 18 2002 - * Modified by: Jeff Snyder - * - * Copyright (c) 2001 Stefani Seibold - * Copyright (c) 1999-2001 Dag Brattli - * Copyright (c) 1998-1999 Thomas Davis, - * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - * - * SIO's: all SIO documentet by SMC (June, 2001) - * Applicable Models : Fujitsu Lifebook 635t, Sony PCG-505TX, - * Dell Inspiron 8000 - * - ********************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -struct smc_chip { - char *name; - u16 flags; - u8 devid; - u8 rev; -}; -typedef struct smc_chip smc_chip_t; - -static const char *driver_name = "smc-ircc"; - -#define DIM(x) (sizeof(x)/(sizeof(*(x)))) - -#define CHIP_IO_EXTENT 8 - -static struct ircc_cb *dev_self[] = { NULL, NULL}; - -/* Some prototypes */ -static int ircc_open(unsigned int iobase, unsigned int board_addr); -static int ircc_dma_receive(struct ircc_cb *self, int iobase); -static void ircc_dma_receive_complete(struct ircc_cb *self, int iobase); -static int ircc_hard_xmit(struct sk_buff *skb, struct net_device *dev); -static void ircc_dma_xmit(struct ircc_cb *self, int iobase, int bofs); -static void ircc_change_speed(void *priv, u32 speed); -static irqreturn_t ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs); -static int ircc_net_open(struct net_device *dev); -static int ircc_net_close(struct net_device *dev); -static int ircc_pmproc(struct pm_dev *dev, pm_request_t rqst, void *data); - -#define KEY55_1 0 /* SuperIO Configuration mode with Key <0x55> */ -#define KEY55_2 1 /* SuperIO Configuration mode with Key <0x55,0x55> */ -#define NoIRDA 2 /* SuperIO Chip has no IRDA Port */ -#define SIR 0 /* SuperIO Chip has only slow IRDA */ -#define FIR 4 /* SuperIO Chip has fast IRDA */ -#define SERx4 8 /* SuperIO Chip supports 115,2 KBaud * 4=460,8 KBaud */ - -/* These are the currently known SMC SuperIO chipsets */ -static smc_chip_t __initdata fdc_chips_flat[]= -{ - /* Base address 0x3f0 or 0x370 */ - { "37C44", KEY55_1|NoIRDA, 0x00, 0x00 }, /* This chip can not detected */ - { "37C665GT", KEY55_2|NoIRDA, 0x65, 0x01 }, - { "37C665GT", KEY55_2|NoIRDA, 0x66, 0x01 }, - { "37C669", KEY55_2|SIR|SERx4, 0x03, 0x02 }, - { "37C669", KEY55_2|SIR|SERx4, 0x04, 0x02 }, /* ID? */ - { "37C78", KEY55_2|NoIRDA, 0x78, 0x00 }, - { "37N769", KEY55_1|FIR|SERx4, 0x28, 0x00 }, - { "37N869", KEY55_1|FIR|SERx4, 0x29, 0x00 }, - { NULL } -}; - -static smc_chip_t __initdata fdc_chips_paged[]= -{ - /* Base address 0x3f0 or 0x370 */ - { "37B72X", KEY55_1|SIR|SERx4, 0x4c, 0x00 }, - { "37B77X", KEY55_1|SIR|SERx4, 0x43, 0x00 }, - { "37B78X", KEY55_1|SIR|SERx4, 0x44, 0x00 }, - { "37B80X", KEY55_1|SIR|SERx4, 0x42, 0x00 }, - { "37C67X", KEY55_1|FIR|SERx4, 0x40, 0x00 }, - { "37C93X", KEY55_2|SIR|SERx4, 0x02, 0x01 }, - { "37C93XAPM", KEY55_1|SIR|SERx4, 0x30, 0x01 }, - { "37C93XFR", KEY55_2|FIR|SERx4, 0x03, 0x01 }, - { "37M707", KEY55_1|SIR|SERx4, 0x42, 0x00 }, - { "37M81X", KEY55_1|SIR|SERx4, 0x4d, 0x00 }, - { "37N958FR", KEY55_1|FIR|SERx4, 0x09, 0x04 }, - { "37N971", KEY55_1|FIR|SERx4, 0x0a, 0x00 }, - { "37N972", KEY55_1|FIR|SERx4, 0x0b, 0x00 }, - { NULL } -}; - -static smc_chip_t __initdata lpc_chips_flat[]= -{ - /* Base address 0x2E or 0x4E */ - { "47N227", KEY55_1|FIR|SERx4, 0x5a, 0x00 }, - { "47N267", KEY55_1|FIR|SERx4, 0x5e, 0x00 }, - { NULL } -}; - -static smc_chip_t __initdata lpc_chips_paged[]= -{ - /* Base address 0x2E or 0x4E */ - { "47B27X", KEY55_1|SIR|SERx4, 0x51, 0x00 }, - { "47B37X", KEY55_1|SIR|SERx4, 0x52, 0x00 }, - { "47M10X", KEY55_1|SIR|SERx4, 0x59, 0x00 }, - { "47M120", KEY55_1|NoIRDA|SERx4, 0x5c, 0x00 }, - { "47M13X", KEY55_1|SIR|SERx4, 0x59, 0x00 }, - { "47M14X", KEY55_1|SIR|SERx4, 0x5f, 0x00 }, - { "47N252", KEY55_1|FIR|SERx4, 0x0e, 0x00 }, - { "47S42X", KEY55_1|SIR|SERx4, 0x57, 0x00 }, - { NULL } -}; - -static int ircc_irq=255; -static int ircc_dma=255; -static int ircc_fir=0; -static int ircc_sir=0; -static int ircc_cfg=0; - -static unsigned short dev_count=0; - -static inline void register_bank(int iobase, int bank) -{ - outb(((inb(iobase+IRCC_MASTER) & 0xf0) | (bank & 0x07)), - iobase+IRCC_MASTER); -} - -static int __init smc_access(unsigned short cfg_base,unsigned char reg) -{ - IRDA_DEBUG(0, "%s()\n", __FUNCTION__ ); - - outb(reg, cfg_base); - - if (inb(cfg_base)!=reg) - return -1; - - return 0; -} - -static const smc_chip_t * __init smc_probe(unsigned short cfg_base,u8 reg,const smc_chip_t *chip,char *type) -{ - u8 devid,xdevid,rev; - - IRDA_DEBUG(0, "%s()\n", __FUNCTION__ ); - - /* Leave configuration */ - - outb(0xaa, cfg_base); - - if (inb(cfg_base)==0xaa) /* not a smc superio chip */ - return NULL; - - outb(reg, cfg_base); - - xdevid=inb(cfg_base+1); - - /* Enter configuration */ - - outb(0x55, cfg_base); - - if (smc_access(cfg_base,0x55)) /* send second key and check */ - return NULL; - - /* probe device ID */ - - if (smc_access(cfg_base,reg)) - return NULL; - - devid=inb(cfg_base+1); - - if (devid==0) /* typical value for unused port */ - return NULL; - - if (devid==0xff) /* typical value for unused port */ - return NULL; - - /* probe revision ID */ - - if (smc_access(cfg_base,reg+1)) - return NULL; - - rev=inb(cfg_base+1); - - if (rev>=128) /* i think this will make no sense */ - return NULL; - - if (devid==xdevid) /* protection against false positives */ - return NULL; - - /* Check for expected device ID; are there others? */ - - while(chip->devid!=devid) { - - chip++; - - if (chip->name==NULL) - return NULL; - } - if (chip->rev>rev) - return NULL; - - MESSAGE("found SMC SuperIO Chip (devid=0x%02x rev=%02X base=0x%04x): %s%s\n",devid,rev,cfg_base,type,chip->name); - - if (chip->flags&NoIRDA) - MESSAGE("chipset does not support IRDA\n"); - - return chip; -} - -/* - * Function smc_superio_flat (chip, base, type) - * - * Try get configuration of a smc SuperIO chip with flat register model - * - */ -static int __init smc_superio_flat(const smc_chip_t *chips, unsigned short cfg_base, char *type) -{ - unsigned short fir_io; - unsigned short sir_io; - u8 mode; - int ret = -ENODEV; - - IRDA_DEBUG(0, "%s()\n", __FUNCTION__ ); - - if (smc_probe(cfg_base,0xD,chips,type)==NULL) - return ret; - - outb(0x0c, cfg_base); - - mode = inb(cfg_base+1); - mode = (mode & 0x38) >> 3; - - /* Value for IR port */ - if (mode && mode < 4) { - /* SIR iobase */ - outb(0x25, cfg_base); - sir_io = inb(cfg_base+1) << 2; - - /* FIR iobase */ - outb(0x2b, cfg_base); - fir_io = inb(cfg_base+1) << 3; - - if (fir_io) { - if (ircc_open(fir_io, sir_io) == 0) - ret=0; - } - } - - /* Exit configuration */ - outb(0xaa, cfg_base); - - return ret; -} - -/* - * Function smc_superio_paged (chip, base, type) - * - * Try get configuration of a smc SuperIO chip with paged register model - * - */ -static int __init smc_superio_paged(const smc_chip_t *chips, unsigned short cfg_base, char *type) -{ - unsigned short fir_io; - unsigned short sir_io; - int ret = -ENODEV; - - IRDA_DEBUG(0, "%s()\n", __FUNCTION__ ); - - if (smc_probe(cfg_base,0x20,chips,type)==NULL) - return ret; - - /* Select logical device (UART2) */ - outb(0x07, cfg_base); - outb(0x05, cfg_base + 1); - - /* SIR iobase */ - outb(0x60, cfg_base); - sir_io = inb(cfg_base + 1) << 8; - outb(0x61, cfg_base); - sir_io |= inb(cfg_base + 1); - - /* Read FIR base */ - outb(0x62, cfg_base); - fir_io = inb(cfg_base + 1) << 8; - outb(0x63, cfg_base); - fir_io |= inb(cfg_base + 1); - outb(0x2b, cfg_base); /* ??? */ - - if (fir_io) { - if (ircc_open(fir_io, sir_io) == 0) - ret=0; - } - - /* Exit configuration */ - outb(0xaa, cfg_base); - - return ret; -} - -static int __init smc_superio_fdc(unsigned short cfg_base) -{ - if (check_region(cfg_base, 2) < 0) { - IRDA_DEBUG(0, "%s: can't get cfg_base of 0x%03x\n", __FUNCTION__ , - cfg_base); - return -1; - } - - if (!smc_superio_flat(fdc_chips_flat,cfg_base,"FDC")||!smc_superio_paged(fdc_chips_paged,cfg_base,"FDC")) - return 0; - - return -1; -} - -static int __init smc_superio_lpc(unsigned short cfg_base) -{ -#if 0 - if (check_region(cfg_base, 2) < 0) { - IRDA_DEBUG(0, "%s: can't get cfg_base of 0x%03x\n", __FUNCTION__ , - cfg_base); - return -1; - } -#endif - - if (!smc_superio_flat(lpc_chips_flat,cfg_base,"LPC")||!smc_superio_paged(lpc_chips_paged,cfg_base,"LPC")) - return 0; - - return -1; -} - -/* - * Function ircc_init () - * - * Initialize chip. Just try to find out how many chips we are dealing with - * and where they are - */ -int __init ircc_init(void) -{ - int ret=-ENODEV; - - IRDA_DEBUG(0, "%s\n", __FUNCTION__ ); - - dev_count=0; - - if ((ircc_fir>0)&&(ircc_sir>0)) { - MESSAGE(" Overriding FIR address 0x%04x\n", ircc_fir); - MESSAGE(" Overriding SIR address 0x%04x\n", ircc_sir); - - if (ircc_open(ircc_fir, ircc_sir) == 0) - return 0; - - return -ENODEV; - } - - /* try user provided configuration register base address */ - if (ircc_cfg>0) { - MESSAGE(" Overriding configuration address 0x%04x\n", ircc_cfg); - if (!smc_superio_fdc(ircc_cfg)) - ret=0; - } - - /* Trys to open for all the SMC chipsets we know about */ - - IRDA_DEBUG(0, - "%s Try to open all known SMC chipsets\n", __FUNCTION__ ); - - if (!smc_superio_fdc(0x3f0)) - ret=0; - if (!smc_superio_fdc(0x370)) - ret=0; - if (!smc_superio_fdc(0xe0)) - ret=0; - if (!smc_superio_lpc(0x2e)) - ret=0; - if (!smc_superio_lpc(0x4e)) - ret=0; - - return ret; -} - -/* - * Function ircc_open (iobase, irq) - * - * Try to open driver instance - * - */ -static int __init ircc_open(unsigned int fir_base, unsigned int sir_base) -{ - struct ircc_cb *self; - struct irport_cb *irport; - unsigned char low, high, chip, config, dma, irq, version; - unsigned long flags; - - - IRDA_DEBUG(0, "%s\n", __FUNCTION__ ); - - if (check_region(fir_base, CHIP_IO_EXTENT) < 0) { - IRDA_DEBUG(0, "%s: can't get fir_base of 0x%03x\n", __FUNCTION__ , - fir_base); - return -ENODEV; - } -#if POSSIBLE_USED_BY_SERIAL_DRIVER - if (check_region(sir_base, CHIP_IO_EXTENT) < 0) { - IRDA_DEBUG(0, "%s: can't get sir_base of 0x%03x\n", __FUNCTION__ , - sir_base); - return -ENODEV; - } -#endif - - register_bank(fir_base, 3); - - high = inb(fir_base+IRCC_ID_HIGH); - low = inb(fir_base+IRCC_ID_LOW); - chip = inb(fir_base+IRCC_CHIP_ID); - version = inb(fir_base+IRCC_VERSION); - config = inb(fir_base+IRCC_INTERFACE); - - irq = config >> 4 & 0x0f; - dma = config & 0x0f; - - if (high != 0x10 || low != 0xb8 || (chip != 0xf1 && chip != 0xf2)) { - IRDA_DEBUG(0, - "%s(), addr 0x%04x - no device found!\n", __FUNCTION__ , fir_base); - return -ENODEV; - } - MESSAGE("SMC IrDA Controller found\n IrCC version %d.%d, " - "firport 0x%03x, sirport 0x%03x dma=%d, irq=%d\n", - chip & 0x0f, version, fir_base, sir_base, dma, irq); - - if (dev_count >= DIM(dev_self)) { - IRDA_DEBUG(0, - "%s(), to many devices!\n", __FUNCTION__ ); - return -ENOMEM; - } - - /* - * Allocate new instance of the driver - */ - self = kmalloc(sizeof(struct ircc_cb), GFP_KERNEL); - if (self == NULL) { - ERROR("%s, Can't allocate memory for control block!\n", - driver_name); - return -ENOMEM; - } - memset(self, 0, sizeof(struct ircc_cb)); - - /* Max DMA buffer size needed = (data_size + 6) * (window_size) + 6; */ - self->rx_buff.truesize = 4000; - self->tx_buff.truesize = 4000; - - self->rx_buff.head = (u8 *) kmalloc(self->rx_buff.truesize, - GFP_KERNEL|GFP_DMA); - if (self->rx_buff.head == NULL) { - ERROR("%s, Can't allocate memory for receive buffer!\n", - driver_name); - kfree(self); - return -ENOMEM; - } - - self->tx_buff.head = (u8 *) kmalloc(self->tx_buff.truesize, - GFP_KERNEL|GFP_DMA); - if (self->tx_buff.head == NULL) { - ERROR("%s, Can't allocate memory for transmit buffer!\n", - driver_name); - kfree(self->rx_buff.head); - kfree(self); - return -ENOMEM; - } - - irport = irport_open(dev_count, sir_base, irq); - if (!irport) { - kfree(self->tx_buff.head); - kfree(self->rx_buff.head); - kfree(self); - return -ENODEV; - } - - memset(self->rx_buff.head, 0, self->rx_buff.truesize); - memset(self->tx_buff.head, 0, self->tx_buff.truesize); - - /* Need to store self somewhere */ - dev_self[dev_count++] = self; - - /* Steal the network device from irport */ - self->netdev = irport->netdev; - self->irport = irport; - - irport->priv = self; - - /* Keep track of module usage */ - SET_MODULE_OWNER(self->netdev); - - /* Initialize IO */ - self->io = &irport->io; - self->io->fir_base = fir_base; - self->io->sir_base = sir_base; /* Used by irport */ - self->io->fir_ext = CHIP_IO_EXTENT; - self->io->sir_ext = 8; /* Used by irport */ - - if (ircc_irq < 255) { - if (ircc_irq!=irq) - MESSAGE("%s, Overriding IRQ - chip says %d, using %d\n", - driver_name, irq, ircc_irq); - self->io->irq = ircc_irq; - } - else - self->io->irq = irq; - if (ircc_dma < 255) { - if (ircc_dma!=dma) - MESSAGE("%s, Overriding DMA - chip says %d, using %d\n", - driver_name, dma, ircc_dma); - self->io->dma = ircc_dma; - } - else - self->io->dma = dma; - - request_region(self->io->fir_base, CHIP_IO_EXTENT, driver_name); - - /* Don't allow irport to change under us - Jean II */ - spin_lock_irqsave(&self->irport->lock, flags); - - /* Initialize QoS for this device */ - irda_init_max_qos_capabilies(&irport->qos); - - /* The only value we must override it the baudrate */ - irport->qos.baud_rate.bits = IR_9600|IR_19200|IR_38400|IR_57600| - IR_115200|IR_576000|IR_1152000|(IR_4000000 << 8); - - irport->qos.min_turn_time.bits = 0x07; - irport->qos.window_size.bits = 0x01; - irda_qos_bits_to_value(&irport->qos); - - irport->flags = IFF_FIR|IFF_MIR|IFF_SIR|IFF_DMA|IFF_PIO; - - - self->rx_buff.in_frame = FALSE; - self->rx_buff.state = OUTSIDE_FRAME; - self->tx_buff.data = self->tx_buff.head; - self->rx_buff.data = self->rx_buff.head; - - /* Override the speed change function, since we must control it now */ - irport->change_speed = &ircc_change_speed; - irport->interrupt = &ircc_interrupt; - self->netdev->open = &ircc_net_open; - self->netdev->stop = &ircc_net_close; - - irport_start(self->irport); - spin_unlock_irqrestore(&self->irport->lock, flags); - - self->pmdev = pm_register(PM_SYS_DEV, PM_SYS_IRDA, ircc_pmproc); - if (self->pmdev) - self->pmdev->data = self; - - /* Power on device */ - - outb(0x00, fir_base+IRCC_MASTER); - - return 0; -} - -/* - * Function ircc_change_speed (self, baud) - * - * Change the speed of the device - * - * This function should be called with irq off and spin-lock. - */ -static void ircc_change_speed(void *priv, u32 speed) -{ - int iobase, ir_mode, ctrl, fast; - struct ircc_cb *self = (struct ircc_cb *) priv; - struct net_device *dev; - - IRDA_DEBUG(0, "%s\n", __FUNCTION__ ); - - ASSERT(self != NULL, return;); - - dev = self->netdev; - iobase = self->io->fir_base; - - /* Update accounting for new speed */ - self->io->speed = speed; - - outb(IRCC_MASTER_RESET, iobase+IRCC_MASTER); - outb(0x00, iobase+IRCC_MASTER); - - switch (speed) { - default: - IRDA_DEBUG(0, "%s(), unknown baud rate of %d\n", __FUNCTION__ , - speed); - /* FALLTHROUGH */ - case 9600: - case 19200: - case 38400: - case 57600: - case 115200: - ir_mode = IRCC_CFGA_IRDA_SIR_A; - ctrl = 0; - fast = 0; - break; - case 576000: - ir_mode = IRCC_CFGA_IRDA_HDLC; - ctrl = IRCC_CRC; - fast = 0; - IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __FUNCTION__ ); - break; - case 1152000: - ir_mode = IRCC_CFGA_IRDA_HDLC; - ctrl = IRCC_1152 | IRCC_CRC; - fast = 0; - IRDA_DEBUG(0, "%s(), handling baud of 1152000\n", __FUNCTION__ ); - break; - case 4000000: - ir_mode = IRCC_CFGA_IRDA_4PPM; - ctrl = IRCC_CRC; - fast = IRCC_LCR_A_FAST; - IRDA_DEBUG(0, "%s(), handling baud of 4000000\n", __FUNCTION__ ); - break; - } - - register_bank(iobase, 0); - outb(0, iobase+IRCC_IER); - outb(IRCC_MASTER_INT_EN, iobase+IRCC_MASTER); - - /* Make special FIR init if necessary */ - if (speed > 115200) { - /* No need to lock, already locked - Jean II */ - irport_stop(self->irport); - - /* Install FIR transmit handler */ - dev->hard_start_xmit = &ircc_hard_xmit; - - /* - * Don't know why we have to do this, but FIR interrupts - * stops working if we remove it. - */ - /* outb(UART_MCR_OUT2, self->io->sir_base + UART_MCR); */ - - /* Be ready for incoming frames */ - ircc_dma_receive(self, iobase); - } else { - /* Install SIR transmit handler */ - dev->hard_start_xmit = &irport_hard_xmit; - /* No need to lock, already locked - Jean II */ - irport_start(self->irport); - - IRDA_DEBUG(0, - "%s(), using irport to change speed to %d\n", __FUNCTION__ , speed); - irport_change_speed(self->irport, speed); - } - - register_bank(iobase, 1); - outb(((inb(iobase+IRCC_SCE_CFGA) & 0x87) | ir_mode), - iobase+IRCC_SCE_CFGA); - -#ifdef SMC_669 /* Uses pin 88/89 for Rx/Tx */ - outb(((inb(iobase+IRCC_SCE_CFGB) & 0x3f) | IRCC_CFGB_MUX_COM), - iobase+IRCC_SCE_CFGB); -#else - outb(((inb(iobase+IRCC_SCE_CFGB) & 0x3f) | IRCC_CFGB_MUX_IR), - iobase+IRCC_SCE_CFGB); -#endif - (void) inb(iobase+IRCC_FIFO_THRESHOLD); - outb(64, iobase+IRCC_FIFO_THRESHOLD); - - register_bank(iobase, 4); - outb((inb(iobase+IRCC_CONTROL) & 0x30) | ctrl, iobase+IRCC_CONTROL); - - register_bank(iobase, 0); - outb(fast, iobase+IRCC_LCR_A); - - netif_start_queue(dev); -} - -/* - * Function ircc_hard_xmit (skb, dev) - * - * Transmit the frame! - * - */ -static int ircc_hard_xmit(struct sk_buff *skb, struct net_device *dev) -{ - struct irport_cb *irport; - struct ircc_cb *self; - unsigned long flags; - s32 speed; - int iobase; - int mtt; - - irport = (struct irport_cb *) dev->priv; - self = (struct ircc_cb *) irport->priv; - ASSERT(self != NULL, return 0;); - - iobase = self->io->fir_base; - - netif_stop_queue(dev); - - /* Make sure tests *& speed change are atomic */ - spin_lock_irqsave(&self->irport->lock, flags); - - /* Note : you should make sure that speed changes are not going - * to corrupt any outgoing frame. Look at nsc-ircc for the gory - * details - Jean II */ - - /* Check if we need to change the speed after this frame */ - speed = irda_get_next_speed(skb); - if ((speed != self->io->speed) && (speed != -1)) { - /* Check for empty frame */ - if (!skb->len) { - ircc_change_speed(self, speed); - dev->trans_start = jiffies; - spin_unlock_irqrestore(&self->irport->lock, flags); - dev_kfree_skb(skb); - return 0; - } else - self->new_speed = speed; - } - - memcpy(self->tx_buff.head, skb->data, skb->len); - - self->tx_buff.len = skb->len; - self->tx_buff.data = self->tx_buff.head; - - mtt = irda_get_mtt(skb); - if (mtt) { - int bofs; - - /* - * Compute how many BOFs (STA or PA's) we need to waste the - * min turn time given the speed of the link. - */ - bofs = mtt * (self->io->speed / 1000) / 8000; - if (bofs > 4095) - bofs = 4095; - - ircc_dma_xmit(self, iobase, bofs); - } else { - /* Transmit frame */ - ircc_dma_xmit(self, iobase, 0); - } - dev->trans_start = jiffies; - spin_unlock_irqrestore(&self->irport->lock, flags); - dev_kfree_skb(skb); - - return 0; -} - -/* - * Function ircc_dma_xmit (self, iobase) - * - * Transmit data using DMA - * - */ -static void ircc_dma_xmit(struct ircc_cb *self, int iobase, int bofs) -{ - u8 ctrl; - - IRDA_DEBUG(2, "%s\n", __FUNCTION__ ); -#if 0 - /* Disable Rx */ - register_bank(iobase, 0); - outb(0x00, iobase+IRCC_LCR_B); -#endif - register_bank(iobase, 1); - outb(inb(iobase+IRCC_SCE_CFGB) & ~IRCC_CFGB_DMA_ENABLE, - iobase+IRCC_SCE_CFGB); - - self->io->direction = IO_XMIT; - - /* Set BOF additional count for generating the min turn time */ - register_bank(iobase, 4); - outb(bofs & 0xff, iobase+IRCC_BOF_COUNT_LO); - ctrl = inb(iobase+IRCC_CONTROL) & 0xf0; - outb(ctrl | ((bofs >> 8) & 0x0f), iobase+IRCC_BOF_COUNT_HI); - - /* Set max Tx frame size */ - outb(self->tx_buff.len >> 8, iobase+IRCC_TX_SIZE_HI); - outb(self->tx_buff.len & 0xff, iobase+IRCC_TX_SIZE_LO); - - /* Setup DMA controller (must be done after enabling chip DMA) */ - setup_dma(self->io->dma, self->tx_buff.data, self->tx_buff.len, - DMA_TX_MODE); - - outb(UART_MCR_OUT2, self->io->sir_base + UART_MCR); - /* Enable burst mode chip Tx DMA */ - register_bank(iobase, 1); - outb(inb(iobase+IRCC_SCE_CFGB) | IRCC_CFGB_DMA_ENABLE | - IRCC_CFGB_DMA_BURST, iobase+IRCC_SCE_CFGB); - - /* Enable interrupt */ - outb(IRCC_MASTER_INT_EN, iobase+IRCC_MASTER); - register_bank(iobase, 0); - outb(IRCC_IER_ACTIVE_FRAME | IRCC_IER_EOM, iobase+IRCC_IER); - - /* Enable transmit */ - outb(IRCC_LCR_B_SCE_TRANSMIT|IRCC_LCR_B_SIP_ENABLE, iobase+IRCC_LCR_B); -} - -/* - * Function ircc_dma_xmit_complete (self) - * - * The transfer of a frame in finished. This function will only be called - * by the interrupt handler - * - */ -static void ircc_dma_xmit_complete(struct ircc_cb *self, int iobase) -{ - IRDA_DEBUG(2, "%s\n", __FUNCTION__ ); -#if 0 - /* Disable Tx */ - register_bank(iobase, 0); - outb(0x00, iobase+IRCC_LCR_B); -#endif - register_bank(self->io->fir_base, 1); - outb(inb(self->io->fir_base+IRCC_SCE_CFGB) & ~IRCC_CFGB_DMA_ENABLE, - self->io->fir_base+IRCC_SCE_CFGB); - - /* Check for underrrun! */ - register_bank(iobase, 0); - if (inb(iobase+IRCC_LSR) & IRCC_LSR_UNDERRUN) { - self->irport->stats.tx_errors++; - self->irport->stats.tx_fifo_errors++; - - /* Reset error condition */ - register_bank(iobase, 0); - outb(IRCC_MASTER_ERROR_RESET, iobase+IRCC_MASTER); - outb(0x00, iobase+IRCC_MASTER); - } else { - self->irport->stats.tx_packets++; - self->irport->stats.tx_bytes += self->tx_buff.len; - } - - /* Check if it's time to change the speed */ - if (self->new_speed) { - ircc_change_speed(self, self->new_speed); - self->new_speed = 0; - } - - netif_wake_queue(self->netdev); -} - -/* - * Function ircc_dma_receive (self) - * - * Get ready for receiving a frame. The device will initiate a DMA - * if it starts to receive a frame. - * - */ -static int ircc_dma_receive(struct ircc_cb *self, int iobase) -{ -#if 0 - /* Turn off chip DMA */ - register_bank(iobase, 1); - outb(inb(iobase+IRCC_SCE_CFGB) & ~IRCC_CFGB_DMA_ENABLE, - iobase+IRCC_SCE_CFGB); -#endif - setup_dma(self->io->dma, self->rx_buff.data, self->rx_buff.truesize, - DMA_RX_MODE); - - /* Set max Rx frame size */ - register_bank(iobase, 4); - outb((2050 >> 8) & 0x0f, iobase+IRCC_RX_SIZE_HI); - outb(2050 & 0xff, iobase+IRCC_RX_SIZE_LO); - - self->io->direction = IO_RECV; - self->rx_buff.data = self->rx_buff.head; - - /* Setup DMA controller */ - - /* Enable receiver */ - register_bank(iobase, 0); - outb(IRCC_LCR_B_SCE_RECEIVE | IRCC_LCR_B_SIP_ENABLE, - iobase+IRCC_LCR_B); - - /* Enable burst mode chip Rx DMA */ - register_bank(iobase, 1); - outb(inb(iobase+IRCC_SCE_CFGB) | IRCC_CFGB_DMA_ENABLE | - IRCC_CFGB_DMA_BURST, iobase+IRCC_SCE_CFGB); - - return 0; -} - -/* - * Function ircc_dma_receive_complete (self) - * - * Finished with receiving frames - * - */ -static void ircc_dma_receive_complete(struct ircc_cb *self, int iobase) -{ - struct sk_buff *skb; - int len, msgcnt; - - IRDA_DEBUG(2, "%s\n", __FUNCTION__ ); -#if 0 - /* Disable Rx */ - register_bank(iobase, 0); - outb(0x00, iobase+IRCC_LCR_B); -#endif - register_bank(iobase, 0); - msgcnt = inb(iobase+IRCC_LCR_B) & 0x08; - - IRDA_DEBUG(2, "%s: dma count = %d\n", __FUNCTION__ , - get_dma_residue(self->io->dma)); - - len = self->rx_buff.truesize - get_dma_residue(self->io->dma); - - /* Remove CRC */ - if (self->io->speed < 4000000) - len -= 2; - else - len -= 4; - - if ((len < 2) || (len > 2050)) { - WARNING("%s(), bogus len=%d\n", __FUNCTION__, len); - return; - } - IRDA_DEBUG(2, "%s: msgcnt = %d, len=%d\n", __FUNCTION__ , msgcnt, len); - - skb = dev_alloc_skb(len+1); - if (!skb) { - WARNING("%s(), memory squeeze, dropping frame.\n", __FUNCTION__); - return; - } - /* Make sure IP header gets aligned */ - skb_reserve(skb, 1); - - memcpy(skb_put(skb, len), self->rx_buff.data, len); - self->irport->stats.rx_packets++; - self->irport->stats.rx_bytes += len; - - skb->dev = self->netdev; - skb->mac.raw = skb->data; - skb->protocol = htons(ETH_P_IRDA); - netif_rx(skb); - self->netdev->last_rx = jiffies; -} - -/* - * Function ircc_interrupt (irq, dev_id, regs) - * - * An interrupt from the chip has arrived. Time to do some work - * - */ -static irqreturn_t ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs) -{ - struct net_device *dev = (struct net_device *) dev_id; - struct irport_cb *irport; - struct ircc_cb *self; - int iobase, iir; - - if (dev == NULL) { - printk(KERN_WARNING "%s: irq %d for unknown device.\n", - driver_name, irq); - return IRQ_NONE; - } - irport = (struct irport_cb *) dev->priv; - ASSERT(irport != NULL, return IRQ_NONE;); - self = (struct ircc_cb *) irport->priv; - ASSERT(self != NULL, return IRQ_NONE;); - - /* Check if we should use the SIR interrupt handler */ - if (self->io->speed < 576000) { - /* Will spinlock itself - Jean II */ - irport_interrupt(irq, dev_id, regs); - return IRQ_HANDLED; - } - iobase = self->io->fir_base; - - spin_lock(&self->irport->lock); - - register_bank(iobase, 0); - iir = inb(iobase+IRCC_IIR); - - /* Disable interrupts */ - outb(0, iobase+IRCC_IER); - - IRDA_DEBUG(2, "%s(), iir = 0x%02x\n", __FUNCTION__ , iir); - - if (iir & IRCC_IIR_EOM) { - if (self->io->direction == IO_RECV) - ircc_dma_receive_complete(self, iobase); - else - ircc_dma_xmit_complete(self, iobase); - - ircc_dma_receive(self, iobase); - } - - /* Enable interrupts again */ - register_bank(iobase, 0); - outb(IRCC_IER_ACTIVE_FRAME|IRCC_IER_EOM, iobase+IRCC_IER); - - spin_unlock(&self->irport->lock); - return IRQ_HANDLED; -} - -#if 0 /* unused */ -/* - * Function ircc_is_receiving (self) - * - * Return TRUE is we are currently receiving a frame - * - */ -static int ircc_is_receiving(struct ircc_cb *self) -{ - int status = FALSE; - /* int iobase; */ - - IRDA_DEBUG(0, "%s\n", __FUNCTION__ ); - - ASSERT(self != NULL, return FALSE;); - - IRDA_DEBUG(0, "%s: dma count = %d\n", __FUNCTION__ , - get_dma_residue(self->io->dma)); - - status = (self->rx_buff.state != OUTSIDE_FRAME); - - return status; -} -#endif /* unused */ - -/* - * Function ircc_net_open (dev) - * - * Start the device - * - */ -static int ircc_net_open(struct net_device *dev) -{ - struct irport_cb *irport; - struct ircc_cb *self; - int iobase; - - IRDA_DEBUG(0, "%s\n", __FUNCTION__ ); - - ASSERT(dev != NULL, return -1;); - irport = (struct irport_cb *) dev->priv; - self = (struct ircc_cb *) irport->priv; - - ASSERT(self != NULL, return 0;); - - iobase = self->io->fir_base; - - irport_net_open(dev); /* irport allocates the irq */ - - /* - * Always allocate the DMA channel after the IRQ, - * and clean up on failure. - */ - if (request_dma(self->io->dma, dev->name)) { - irport_net_close(dev); - - WARNING("%s(), unable to allocate DMA=%d\n", __FUNCTION__, self->io->dma); - return -EAGAIN; - } - - return 0; -} - -/* - * Function ircc_net_close (dev) - * - * Stop the device - * - */ -static int ircc_net_close(struct net_device *dev) -{ - struct irport_cb *irport; - struct ircc_cb *self; - int iobase; - - IRDA_DEBUG(0, "%s()\n", __FUNCTION__); - - ASSERT(dev != NULL, return -1;); - irport = (struct irport_cb *) dev->priv; - self = (struct ircc_cb *) irport->priv; - - ASSERT(self != NULL, return 0;); - - iobase = self->io->fir_base; - - irport_net_close(dev); - - disable_dma(self->io->dma); - - free_dma(self->io->dma); - - return 0; -} - -static void ircc_suspend(struct ircc_cb *self) -{ - MESSAGE("%s, Suspending\n", driver_name); - - if (self->io->suspended) - return; - - ircc_net_close(self->netdev); - - self->io->suspended = 1; -} - -static void ircc_wakeup(struct ircc_cb *self) -{ - if (!self->io->suspended) - return; - - /* The code was doing a "cli()" here, but this can't be right. - * If you need protection, do it in net_open with a spinlock - * or give a good reason. - Jean II */ - - ircc_net_open(self->netdev); - - MESSAGE("%s, Waking up\n", driver_name); -} - -static int ircc_pmproc(struct pm_dev *dev, pm_request_t rqst, void *data) -{ - struct ircc_cb *self = (struct ircc_cb*) dev->data; - if (self) { - switch (rqst) { - case PM_SUSPEND: - ircc_suspend(self); - break; - case PM_RESUME: - ircc_wakeup(self); - break; - } - } - return 0; -} - -/* - * Function ircc_close (self) - * - * Close driver instance - * - */ -static int __exit ircc_close(struct ircc_cb *self) -{ - int iobase; - - IRDA_DEBUG(0, "%s\n", __FUNCTION__ ); - - ASSERT(self != NULL, return -1;); - - iobase = self->irport->io.fir_base; - - if (self->pmdev) - pm_unregister(self->pmdev); - - /* This will destroy irport */ - irport_close(self->irport); - - /* Stop interrupts */ - register_bank(iobase, 0); - outb(0, iobase+IRCC_IER); - outb(IRCC_MASTER_RESET, iobase+IRCC_MASTER); - outb(0x00, iobase+IRCC_MASTER); -#if 0 - /* Reset to SIR mode */ - register_bank(iobase, 1); - outb(IRCC_CFGA_IRDA_SIR_A|IRCC_CFGA_TX_POLARITY, iobase+IRCC_SCE_CFGA); - outb(IRCC_CFGB_IR, iobase+IRCC_SCE_CFGB); -#endif - - /* Release the PORT that this driver is using */ - IRDA_DEBUG(0, "%s(), releasing 0x%03x\n", __FUNCTION__ , iobase); - - release_region(iobase, CHIP_IO_EXTENT); - - if (self->tx_buff.head) - kfree(self->tx_buff.head); - - if (self->rx_buff.head) - kfree(self->rx_buff.head); - - kfree(self); - - return 0; -} - -static int __init smc_init(void) -{ - return ircc_init(); -} - -void __exit smc_cleanup(void) -{ - int i; - - IRDA_DEBUG(0, "%s\n", __FUNCTION__ ); - - for (i=0; i < 2; i++) { - if (dev_self[i]) - ircc_close(dev_self[i]); - } -} - -module_init(smc_init); -module_exit(smc_cleanup); - -MODULE_AUTHOR("Thomas Davis "); -MODULE_DESCRIPTION("SMC IrCC controller driver"); -MODULE_LICENSE("GPL"); - -MODULE_PARM(ircc_dma, "1i"); -MODULE_PARM_DESC(ircc_dma, "DMA channel"); -MODULE_PARM(ircc_irq, "1i"); -MODULE_PARM_DESC(ircc_irq, "IRQ line"); -MODULE_PARM(ircc_fir, "1-4i"); -MODULE_PARM_DESC(ircc_fir, "FIR Base Address"); -MODULE_PARM(ircc_sir, "1-4i"); -MODULE_PARM_DESC(ircc_sir, "SIR Base Address"); -MODULE_PARM(ircc_cfg, "1-4i"); -MODULE_PARM_DESC(ircc_cfg, "Configuration register base address"); diff -Nru a/drivers/net/irda/toshoboe.c b/drivers/net/irda/toshoboe.c --- a/drivers/net/irda/toshoboe.c Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,957 +0,0 @@ -/********************************************************************* - * - * Filename: toshoboe.c - * Version: 0.1 - * Description: Driver for the Toshiba OBOE (or type-O or 700 or 701) - * FIR Chipset. - * Status: Experimental. - * Author: James McKenzie - * Created at: Sat May 8 12:35:27 1999 - * Modified: Paul Bristow - * Modified: Mon Nov 11 19:10:05 1999 - * - * Copyright (c) 1999-2000 James McKenzie, All Rights Reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * Neither James McKenzie nor Cambridge University admit liability nor - * provide warranty for any of this software. This material is - * provided "AS-IS" and at no charge. - * - * Applicable Models : Libretto 100CT. and many more - * Toshiba refers to this chip as the type-O IR port. - * - ********************************************************************/ - -/* This driver is experimental, I have only three ir devices */ -/* an olivetti notebook which doesn't have FIR, a toshiba libretto, and */ -/* an hp printer, this works fine at 4MBPS with my HP printer */ - -static char *rcsid = "$Id: toshoboe.c,v 1.91 1999/06/29 14:21:06 root Exp $"; - -/* Define this to have only one frame in the XMIT or RECV queue */ -/* Toshiba's drivers do this, but it disables back to back tansfers */ -/* I think that the chip may have some problems certainly, I have */ -/* seen it jump over tasks in the taskfile->xmit with this turned on */ -#define ONETASK - -/* To adjust the number of tasks in use edit toshoboe.h */ - -/* Define this to enable FIR and MIR support */ -#define ENABLE_FAST - -/* Size of IO window */ -#define CHIP_IO_EXTENT 0x1f - -/* Transmit and receive buffer sizes, adjust at your peril */ -#define RX_BUF_SZ 4196 -#define TX_BUF_SZ 4196 - -/* No user servicable parts below here */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include - -#include - -#define PCI_DEVICE_ID_FIR701b 0x0d01 - -static struct pci_device_id toshoboe_pci_tbl[] = { - { PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_FIR701, PCI_ANY_ID, PCI_ANY_ID, }, - { PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_FIR701b, PCI_ANY_ID, PCI_ANY_ID, }, - { } /* Terminating entry */ -}; -MODULE_DEVICE_TABLE(pci, toshoboe_pci_tbl); - -static const char *driver_name = "toshoboe"; - -static int max_baud = 4000000; - -/* Shutdown the chip and point the taskfile reg somewhere else */ -static void -toshoboe_stopchip (struct toshoboe_cb *self) -{ - IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); - - outb_p (0x0e, OBOE_REG_11); - - outb_p (0x00, OBOE_RST); - outb_p (0x3f, OBOE_TFP2); /*Write the taskfile address */ - outb_p (0xff, OBOE_TFP1); - outb_p (0xff, OBOE_TFP0); - outb_p (0x0f, OBOE_REG_1B); - outb_p (0xff, OBOE_REG_1A); - outb_p (0x00, OBOE_ISR); /*FIXME: should i do this to disbale ints */ - outb_p (0x80, OBOE_RST); - outb_p (0xe, OBOE_LOCK); - -} - -/*Set the baud rate */ -static void -toshoboe_setbaud (struct toshoboe_cb *self, int baud) -{ - unsigned long flags; - IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); - - printk (KERN_WARNING "ToshOboe: setting baud to %d\n", baud); - - save_flags (flags); - cli (); - switch (baud) - { - case 2400: - outb_p (OBOE_PMDL_SIR, OBOE_PMDL); - outb_p (OBOE_SMDL_SIR, OBOE_SMDL); - outb_p (0xbf, OBOE_UDIV); - break; - case 4800: - outb_p (OBOE_PMDL_SIR, OBOE_PMDL); - outb_p (OBOE_SMDL_SIR, OBOE_SMDL); - outb_p (0x5f, OBOE_UDIV); - break; - case 9600: - outb_p (OBOE_PMDL_SIR, OBOE_PMDL); - outb_p (OBOE_SMDL_SIR, OBOE_SMDL); - outb_p (0x2f, OBOE_UDIV); - break; - case 19200: - outb_p (OBOE_PMDL_SIR, OBOE_PMDL); - outb_p (OBOE_SMDL_SIR, OBOE_SMDL); - outb_p (0x17, OBOE_UDIV); - break; - case 38400: - outb_p (OBOE_PMDL_SIR, OBOE_PMDL); - outb_p (OBOE_SMDL_SIR, OBOE_SMDL); - outb_p (0xb, OBOE_UDIV); - break; - case 57600: - outb_p (OBOE_PMDL_SIR, OBOE_PMDL); - outb_p (OBOE_SMDL_SIR, OBOE_SMDL); - outb_p (0x7, OBOE_UDIV); - break; - case 115200: - outb_p (OBOE_PMDL_SIR, OBOE_PMDL); - outb_p (OBOE_SMDL_SIR, OBOE_SMDL); - outb_p (0x3, OBOE_UDIV); - break; - case 1152000: - outb_p (OBOE_PMDL_MIR, OBOE_PMDL); - outb_p (OBOE_SMDL_MIR, OBOE_SMDL); - outb_p (0x1, OBOE_UDIV); - break; - case 4000000: - outb_p (OBOE_PMDL_FIR, OBOE_PMDL); - outb_p (OBOE_SMDL_FIR, OBOE_SMDL); - outb_p (0x0, OBOE_UDIV); - break; - } - - restore_flags (flags); - - outb_p (0x00, OBOE_RST); - outb_p (0x80, OBOE_RST); - outb_p (0x01, OBOE_REG_9); - - self->io.speed = baud; -} - -/* Wake the chip up and get it looking at the taskfile */ -static void -toshoboe_startchip (struct toshoboe_cb *self) -{ - __u32 physaddr; - - IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); - - - outb_p (0, OBOE_LOCK); - outb_p (0, OBOE_RST); - outb_p (OBOE_NTR_VAL, OBOE_NTR); - outb_p (0xf0, OBOE_REG_D); - outb_p (0xff, OBOE_ISR); - outb_p (0x0f, OBOE_REG_1B); - outb_p (0xff, OBOE_REG_1A); - - - physaddr = virt_to_bus (self->taskfile); - - outb_p ((physaddr >> 0x0a) & 0xff, OBOE_TFP0); - outb_p ((physaddr >> 0x12) & 0xff, OBOE_TFP1); - outb_p ((physaddr >> 0x1a) & 0x3f, OBOE_TFP2); - - outb_p (0x0e, OBOE_REG_11); - outb_p (0x80, OBOE_RST); - - toshoboe_setbaud (self, 9600); - -} - -/*Let the chip look at memory */ -static void -toshoboe_enablebm (struct toshoboe_cb *self) -{ - IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); - pci_set_master (self->pdev); -} - -/*Don't let the chip look at memory */ -static void -toshoboe_disablebm (struct toshoboe_cb *self) -{ - __u8 command; - IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); - - pci_read_config_byte (self->pdev, PCI_COMMAND, &command); - command &= ~PCI_COMMAND_MASTER; - pci_write_config_byte (self->pdev, PCI_COMMAND, command); - -} - -/*setup the taskfile */ -static void -toshoboe_initbuffs (struct toshoboe_cb *self) -{ - int i; - unsigned long flags; - - IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); - - save_flags (flags); - cli (); - - for (i = 0; i < TX_SLOTS; ++i) - { - self->taskfile->xmit[i].len = 0; - self->taskfile->xmit[i].control = 0x00; - self->taskfile->xmit[i].buffer = virt_to_bus (self->xmit_bufs[i]); - } - - for (i = 0; i < RX_SLOTS; ++i) - { - self->taskfile->recv[i].len = 0; - self->taskfile->recv[i].control = 0x83; - self->taskfile->recv[i].buffer = virt_to_bus (self->recv_bufs[i]); - } - - restore_flags (flags); -} - -/*Transmit something */ -static int -toshoboe_hard_xmit (struct sk_buff *skb, struct net_device *dev) -{ - struct toshoboe_cb *self; - __s32 speed; - int mtt, len; - - self = (struct toshoboe_cb *) dev->priv; - - ASSERT (self != NULL, return 0; - ); - - /* Check if we need to change the speed */ - speed = irda_get_next_speed(skb); - if ((speed != self->io.speed) && (speed != -1)) { - /* Check for empty frame */ - if (!skb->len) { - toshoboe_setbaud(self, speed); - dev_kfree_skb(skb); - return 0; - } else - self->new_speed = speed; - } - - netif_stop_queue(dev); - - if (self->stopped) { - dev_kfree_skb(skb); - return 0; - } - -#ifdef ONETASK - if (self->txpending) - return -EBUSY; - - self->txs = inb_p (OBOE_XMTT) - OBOE_XMTT_OFFSET; - - self->txs &= 0x3f; - -#endif - - if (self->taskfile->xmit[self->txs].control) - return -EBUSY; - - - if (inb_p (OBOE_RST) & OBOE_RST_WRAP) - { - len = async_wrap_skb (skb, self->xmit_bufs[self->txs], TX_BUF_SZ); - } - else - { - len = skb->len; - memcpy (self->xmit_bufs[self->txs], skb->data, len); - } - self->taskfile->xmit[self->txs].len = len & 0x0fff; - - - - outb_p (0, OBOE_RST); - outb_p (0x1e, OBOE_REG_11); - - self->taskfile->xmit[self->txs].control = 0x84; - - mtt = irda_get_mtt (skb); - if (mtt) - udelay (mtt); - - self->txpending++; - - /*FIXME: ask about busy,media_busy stuff, for the moment */ - /*busy means can't queue any more */ -#ifndef ONETASK - if (self->txpending != TX_SLOTS) - { - netif_wake_queue(dev); - } -#endif - - outb_p (0x80, OBOE_RST); - outb_p (1, OBOE_REG_9); - - self->txs++; - self->txs %= TX_SLOTS; - - dev_kfree_skb (skb); - - return 0; -} - -/*interrupt handler */ -static irqreturn_t -toshoboe_interrupt (int irq, void *dev_id, struct pt_regs *regs) -{ - struct toshoboe_cb *self = (struct toshoboe_cb *) dev_id; - __u8 irqstat; - struct sk_buff *skb; - - if (self == NULL) - { - printk (KERN_WARNING "%s: irq %d for unknown device.\n", - driver_name, irq); - return IRQ_NONE; - } - - IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); - - irqstat = inb_p (OBOE_ISR); - -/* woz it us */ - if (!(irqstat & 0xf8)) - return IRQ_NONE; - - outb_p (irqstat, OBOE_ISR); /*Acknologede it */ - - -/* Txdone */ - if (irqstat & OBOE_ISR_TXDONE) - { - self->txpending--; - - self->stats.tx_packets++; - - if (self->new_speed) { - toshoboe_setbaud(self, self->new_speed); - - self->new_speed = 0; - } - /* Tell network layer that we want more frames */ - netif_wake_queue(self->netdev); - } - - if (irqstat & OBOE_ISR_RXDONE) - { - -#ifdef ONETASK - self->rxs = inb_p (OBOE_RCVT); - self->rxs += (RX_SLOTS - 1); - self->rxs %= RX_SLOTS; -#else - while (self->taskfile->recv[self->rxs].control == 0) -#endif - { - int len = self->taskfile->recv[self->rxs].len; - - if (len > 2) - len -= 2; - - skb = dev_alloc_skb (len + 1); - if (skb) - { - skb_reserve (skb, 1); - - skb_put (skb, len); - memcpy (skb->data, self->recv_bufs[self->rxs], len); - - self->stats.rx_packets++; - skb->dev = self->netdev; - skb->mac.raw = skb->data; - skb->protocol = htons (ETH_P_IRDA); - } - else - { - printk (KERN_INFO - "%s(), memory squeeze, dropping frame.\n", __FUNCTION__); - } - - self->taskfile->recv[self->rxs].control = 0x83; - self->taskfile->recv[self->rxs].len = 0x0; - - self->rxs++; - self->rxs %= RX_SLOTS; - - if (skb) { - netif_rx (skb); - self->netdev->last_rx = jiffies; - } - - } - - } - - if (irqstat & OBOE_ISR_20) - { - printk (KERN_WARNING "Oboe_irq: 20\n"); - } - if (irqstat & OBOE_ISR_10) - { - printk (KERN_WARNING "Oboe_irq: 10\n"); - } - if (irqstat & 0x8) - { - /*FIXME: I think this is a TX or RX error of some sort */ - - self->stats.tx_errors++; - self->stats.rx_errors++; - - } - return IRQ_HANDLED; -} - -static int -toshoboe_net_init (struct net_device *dev) -{ - IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); - - /* Setup to be a normal IrDA network device driver */ - irda_device_setup (dev); - - /* Insert overrides below this line! */ - return 0; -} - - -static void -toshoboe_initptrs (struct toshoboe_cb *self) -{ - - unsigned long flags; - save_flags (flags); - cli (); - - /*FIXME: need to test this carefully to check which one */ - /*of the two possible startup logics the chip uses */ - /*although it won't make any difference if no-one xmits durining init */ - /*and none what soever if using ONETASK */ - - self->rxs = inb_p (OBOE_RCVT); - self->txs = inb_p (OBOE_XMTT) - OBOE_XMTT_OFFSET; - -#if 0 - self->rxs = 0; - self->txs = 0; -#endif -#if 0 - self->rxs = RX_SLOTS - 1; - self->txs = 0; -#endif - - - self->txpending = 0; - - restore_flags (flags); - -} - - -static int -toshoboe_net_open (struct net_device *dev) -{ - struct toshoboe_cb *self; - char hwname[32]; - - IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); - - ASSERT (dev != NULL, return -1; - ); - self = (struct toshoboe_cb *) dev->priv; - - ASSERT (self != NULL, return 0; - ); - - if (self->stopped) - return 0; - - if (request_irq (self->io.irq, toshoboe_interrupt, - SA_SHIRQ | SA_INTERRUPT, dev->name, (void *) self)) - { - - return -EAGAIN; - } - - toshoboe_initbuffs (self); - toshoboe_enablebm (self); - toshoboe_startchip (self); - toshoboe_initptrs (self); - - /* Ready to play! */ - netif_start_queue(dev); - /* Give self a hardware name */ - sprintf(hwname, "Toshiba-FIR @ 0x%03x", self->base); - /* - * Open new IrLAP layer instance, now that everything should be - * initialized properly - */ - self->irlap = irlap_open(dev, &self->qos, hwname); - - self->open = 1; - - MOD_INC_USE_COUNT; - - return 0; - -} - -static int -toshoboe_net_close (struct net_device *dev) -{ - struct toshoboe_cb *self; - - IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); - - ASSERT (dev != NULL, return -1; - ); - self = (struct toshoboe_cb *) dev->priv; - - /* Stop device */ - netif_stop_queue(dev); - - /* Stop and remove instance of IrLAP */ - if (self->irlap) - irlap_close(self->irlap); - self->irlap = NULL; - - self->open = 0; - - free_irq (self->io.irq, (void *) self); - - if (!self->stopped) - { - toshoboe_stopchip (self); - toshoboe_disablebm (self); - } - - MOD_DEC_USE_COUNT; - - return 0; - -} - -/* - * Function toshoboe_net_ioctl (dev, rq, cmd) - * - * Process IOCTL commands for this device - * - */ -static int toshoboe_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) -{ - struct if_irda_req *irq = (struct if_irda_req *) rq; - struct toshoboe_cb *self; - unsigned long flags; - int ret = 0; - - ASSERT(dev != NULL, return -1;); - - self = dev->priv; - - ASSERT(self != NULL, return -1;); - - IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __FUNCTION__ , dev->name, cmd); - - /* Disable interrupts & save flags */ - save_flags(flags); - cli(); - switch (cmd) { - case SIOCSBANDWIDTH: /* Set bandwidth */ - if (!capable(CAP_NET_ADMIN)) { - ret = -EPERM; - goto out; - } - /* toshoboe_setbaud(self, irq->ifr_baudrate); */ - /* Just change speed once - inserted by Paul Bristow */ - self->new_speed = irq->ifr_baudrate; - break; - case SIOCSMEDIABUSY: /* Set media busy */ - if (!capable(CAP_NET_ADMIN)) { - ret = -EPERM; - goto out; - } - irda_device_set_media_busy(self->netdev, TRUE); - break; - case SIOCGRECEIVING: /* Check if we are receiving right now */ - irq->ifr_receiving = 0; /* Can't tell */ - break; - default: - ret = -EOPNOTSUPP; - } -out: - restore_flags(flags); - return ret; -} - -MODULE_DESCRIPTION("Toshiba OBOE IrDA Device Driver"); -MODULE_AUTHOR("James McKenzie "); -MODULE_LICENSE("GPL"); - -MODULE_PARM (max_baud, "i"); -MODULE_PARM_DESC(max_baus, "Maximum baud rate"); - -static void -toshoboe_remove (struct pci_dev *pci_dev) -{ - int i; - struct toshoboe_cb *self = (struct toshoboe_cb*)pci_get_drvdata(pci_dev); - - IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); - - ASSERT (self != NULL, return; - ); - - if (!self->stopped) - { - toshoboe_stopchip (self); - toshoboe_disablebm (self); - } - - release_region (self->io.sir_base, self->io.sir_ext); - - - for (i = 0; i < TX_SLOTS; ++i) - { - kfree (self->xmit_bufs[i]); - self->xmit_bufs[i] = NULL; - } - - for (i = 0; i < RX_SLOTS; ++i) - { - kfree (self->recv_bufs[i]); - self->recv_bufs[i] = NULL; - } - - if (self->netdev) - unregister_netdev(self->netdev); - - kfree (self->taskfilebuf); - self->taskfilebuf = NULL; - self->taskfile = NULL; - - return; - -} - -static int -toshoboe_probe (struct pci_dev *pci_dev, const struct pci_device_id *pdid) -{ - struct toshoboe_cb *self; - struct net_device *dev; - int i = 0; - int ok = 0; - int err; - - IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); - - if ((err=pci_enable_device(pci_dev))) - return err; - - self = kmalloc (sizeof (struct toshoboe_cb), GFP_KERNEL); - - if (self == NULL) - { - printk (KERN_ERR "IrDA: Can't allocate memory for " - "IrDA control block!\n"); - return -ENOMEM; - } - - memset (self, 0, sizeof (struct toshoboe_cb)); - - self->open = 0; - self->stopped = 0; - self->pdev = pci_dev; - self->base = pci_resource_start(pci_dev,0); - - self->io.sir_base = self->base; - self->io.irq = pci_dev->irq; - self->io.sir_ext = CHIP_IO_EXTENT; - self->io.speed = 9600; - - /* Lock the port that we need */ - if (NULL==request_region (self->io.sir_base, self->io.sir_ext, driver_name)) - { - IRDA_DEBUG (0, "%s(), can't get iobase of 0x%03x\n", __FUNCTION__ , - self->io.sir_base); - - err = -EBUSY; - goto freeself; - } - - irda_init_max_qos_capabilies (&self->qos); - self->qos.baud_rate.bits = 0; - - if (max_baud >= 2400) - self->qos.baud_rate.bits |= IR_2400; - /*if (max_baud>=4800) idev->qos.baud_rate.bits|=IR_4800; */ - if (max_baud >= 9600) - self->qos.baud_rate.bits |= IR_9600; - if (max_baud >= 19200) - self->qos.baud_rate.bits |= IR_19200; - if (max_baud >= 115200) - self->qos.baud_rate.bits |= IR_115200; -#ifdef ENABLE_FAST - if (max_baud >= 576000) - self->qos.baud_rate.bits |= IR_576000; - if (max_baud >= 1152000) - self->qos.baud_rate.bits |= IR_1152000; - if (max_baud >= 4000000) - self->qos.baud_rate.bits |= (IR_4000000 << 8); -#endif - - - self->qos.min_turn_time.bits = 0xff; /*FIXME: what does this do? */ - - irda_qos_bits_to_value (&self->qos); - - self->flags = IFF_SIR | IFF_DMA | IFF_PIO; - -#ifdef ENABLE_FAST - if (max_baud >= 576000) - self->flags |= IFF_FIR; -#endif - - /* Now setup the endless buffers we need */ - - self->txs = 0; - self->rxs = 0; - - self->taskfilebuf = kmalloc (OBOE_TASK_BUF_LEN, GFP_KERNEL); - if (!self->taskfilebuf) - { - printk (KERN_ERR "toshoboe: kmalloc for DMA failed()\n"); - err = -ENOMEM; - goto freeregion; - } - - - memset (self->taskfilebuf, 0, OBOE_TASK_BUF_LEN); - - /*We need to align the taskfile on a taskfile size boundary */ - { - __u32 addr; - - addr = (__u32) self->taskfilebuf; - addr &= ~(sizeof (struct OboeTaskFile) - 1); - addr += sizeof (struct OboeTaskFile); - - self->taskfile = (struct OboeTaskFile *) addr; - } - - for (i = 0; i < TX_SLOTS; ++i) - { - self->xmit_bufs[i] = kmalloc (TX_BUF_SZ, GFP_KERNEL | GFP_DMA); - if (self->xmit_bufs[i]) - ok++; - } - - for (i = 0; i < RX_SLOTS; ++i) - { - self->recv_bufs[i] = kmalloc (TX_BUF_SZ, GFP_KERNEL | GFP_DMA); - if (self->recv_bufs[i]) - ok++; - } - - if (ok != RX_SLOTS + TX_SLOTS) - { - printk (KERN_ERR "toshoboe: kmalloc for buffers failed()\n"); - err = -ENOMEM; - goto freebufs; - - } - - - if (!(dev = dev_alloc("irda%d", &err))) { - ERROR("%s(), dev_alloc() failed!\n", __FUNCTION__); - err = -ENOMEM; - goto freebufs; - } - dev->priv = (void *) self; - self->netdev = dev; - - MESSAGE("IrDA: Registered device %s\n", dev->name); - - dev->init = toshoboe_net_init; - dev->hard_start_xmit = toshoboe_hard_xmit; - dev->open = toshoboe_net_open; - dev->stop = toshoboe_net_close; - dev->do_ioctl = toshoboe_net_ioctl; - - rtnl_lock(); - err = register_netdevice(dev); - rtnl_unlock(); - if (err) { - ERROR("%s(), register_netdev() failed!\n", __FUNCTION__); - /* XXX there is not freeing for dev? */ - goto freebufs; - } - pci_set_drvdata(pci_dev,self); - - printk (KERN_WARNING "ToshOboe: Using "); -#ifdef ONETASK - printk ("single"); -#else - printk ("multiple"); -#endif - printk (" tasks, version %s\n", rcsid); - - return (0); -freebufs: - for (i = 0; i < TX_SLOTS; ++i) - if (self->xmit_bufs[i]) - kfree (self->xmit_bufs[i]); - for (i = 0; i < RX_SLOTS; ++i) - if (self->recv_bufs[i]) - kfree (self->recv_bufs[i]); - kfree(self->taskfilebuf); -freeregion: - release_region (self->io.sir_base, self->io.sir_ext); -freeself: - kfree (self); - return err; -} - -static int -toshoboe_suspend (struct pci_dev *pci_dev, u32 crap) -{ - int i = 10; - struct toshoboe_cb *self = (struct toshoboe_cb*)pci_get_drvdata(pci_dev); - - printk (KERN_WARNING "ToshOboe: suspending\n"); - - if (!self || self->stopped) - return 0; - - self->stopped = 1; - - if (!self->open) - return 0; - -/*FIXME: can't sleep here wait one second */ - - while ((i--) && (self->txpending)) - udelay (100); - - toshoboe_stopchip (self); - toshoboe_disablebm (self); - - self->txpending = 0; - return 0; -} - - -static int -toshoboe_resume (struct pci_dev *pci_dev) -{ - struct toshoboe_cb *self = (struct toshoboe_cb*)pci_get_drvdata(pci_dev); - unsigned long flags; - - if (!self) - return 0; - - if (!self->stopped) - return 0; - - if (!self->open) - { - self->stopped = 0; - return 0; - } - - save_flags (flags); - cli (); - - toshoboe_initbuffs (self); - toshoboe_enablebm (self); - toshoboe_startchip (self); - - toshoboe_setbaud (self, self->io.speed); - - toshoboe_initptrs (self); - - netif_wake_queue(self->netdev); - restore_flags (flags); - printk (KERN_WARNING "ToshOboe: waking up\n"); - return 0; -} - -static struct pci_driver toshoboe_pci_driver = { - .name = "toshoboe", - .id_table = toshoboe_pci_tbl, - .probe = toshoboe_probe, - .remove = toshoboe_remove, - .suspend = toshoboe_suspend, - .resume = toshoboe_resume -}; - -int __init -toshoboe_init (void) -{ - return pci_module_init(&toshoboe_pci_driver); -} - -void -toshoboe_cleanup (void) -{ - pci_unregister_driver(&toshoboe_pci_driver); -} - -module_init(toshoboe_init); -module_exit(toshoboe_cleanup); diff -Nru a/drivers/net/irda/via-ircc.c b/drivers/net/irda/via-ircc.c --- a/drivers/net/irda/via-ircc.c Mon Sep 22 00:30:17 2003 +++ b/drivers/net/irda/via-ircc.c Mon Sep 22 00:30:17 2003 @@ -94,7 +94,6 @@ static int via_ircc_is_receiving(struct via_ircc_cb *self); static int via_ircc_read_dongle_id(int iobase); -static int via_ircc_net_init(struct net_device *dev); static int via_ircc_net_open(struct net_device *dev); static int via_ircc_net_close(struct net_device *dev); static int via_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, @@ -107,7 +106,7 @@ void hwreset(struct via_ircc_cb *self); static int via_ircc_dma_xmit(struct via_ircc_cb *self, u16 iobase); static int upload_rxdata(struct via_ircc_cb *self, int iobase); -static int __init via_init_one (struct pci_dev *pcidev, const struct pci_device_id *id); +static int __devinit via_init_one (struct pci_dev *pcidev, const struct pci_device_id *id); static void __exit via_remove_one (struct pci_dev *pdev); /* Should use udelay() instead, even if we are x86 only - Jean II */ @@ -121,7 +120,7 @@ } } -static struct pci_device_id via_pci_tbl[] __initdata = { +static struct pci_device_id via_pci_tbl[] = { { PCI_VENDOR_ID_VIA, DeviceID1, PCI_ANY_ID, PCI_ANY_ID,0,0,0 }, { PCI_VENDOR_ID_VIA, DeviceID2, PCI_ANY_ID, PCI_ANY_ID,0,0,1 }, { PCI_VENDOR_ID_VIA, DeviceID3, PCI_ANY_ID, PCI_ANY_ID,0,0,2 }, @@ -168,7 +167,7 @@ } -static int __init via_init_one (struct pci_dev *pcidev, const struct pci_device_id *id) +static int __devinit via_init_one (struct pci_dev *pcidev, const struct pci_device_id *id) { int rc; u8 temp,oldPCI_40,oldPCI_44,bTmp,bTmp1; @@ -326,22 +325,23 @@ * Open driver instance * */ -static __init int via_ircc_open(int i, chipio_t * info, unsigned int id) +static __devinit int via_ircc_open(int i, chipio_t * info, unsigned int id) { struct net_device *dev; struct via_ircc_cb *self; - int ret; int err; if ((via_ircc_setup(info, id)) == -1) return -1; /* Allocate new instance of the driver */ - self = kmalloc(sizeof(struct via_ircc_cb), GFP_KERNEL); - if (self == NULL) { + dev = alloc_netdev(sizeof(struct via_ircc_cb), "irda%d", + irda_device_setup); + if (dev == NULL) return -ENOMEM; - } - memset(self, 0, sizeof(struct via_ircc_cb)); + + self = dev->priv; + self->netdev = dev; spin_lock_init(&self->lock); /* Need to store self somewhere */ @@ -360,14 +360,12 @@ self->RxDataReady = 0; /* Reserve the ioports that we need */ - ret = check_region(self->io.fir_base, self->io.fir_ext); - if (ret < 0) { + if (!request_region(self->io.fir_base, self->io.fir_ext, driver_name)) { // WARNING(__FUNCTION__ "(), can't get iobase of 0x%03x\n",self->io.fir_base); - dev_self[i] = NULL; - kfree(self); - return -ENODEV; + err = -ENODEV; + goto err_out1; } - request_region(self->io.fir_base, self->io.fir_ext, driver_name); + /* Initialize QoS for this device */ irda_init_max_qos_capabilies(&self->qos); /* The only value we must override it the baudrate */ @@ -391,17 +389,16 @@ self->rx_buff.head = (__u8 *) kmalloc(self->rx_buff.truesize, GFP_KERNEL | GFP_DMA); if (self->rx_buff.head == NULL) { - kfree(self); - return -ENOMEM; + err = -ENOMEM; + goto err_out2; } memset(self->rx_buff.head, 0, self->rx_buff.truesize); self->tx_buff.head = (__u8 *) kmalloc(self->tx_buff.truesize, GFP_KERNEL | GFP_DMA); if (self->tx_buff.head == NULL) { - kfree(self->rx_buff.head); - kfree(self); - return -ENOMEM; + err = -ENOMEM; + goto err_out3; } memset(self->tx_buff.head, 0, self->tx_buff.truesize); @@ -414,30 +411,20 @@ self->tx_fifo.len = self->tx_fifo.ptr = self->tx_fifo.free = 0; self->tx_fifo.tail = self->tx_buff.head; - if (!(dev = dev_alloc("irda%d", &err))) { - kfree(self->tx_buff.head); - kfree(self->rx_buff.head); - kfree(self); - return -ENOMEM; - } - - dev->priv = (void *) self; - self->netdev = dev; + /* Keep track of module usage */ + SET_MODULE_OWNER(dev); /* Override the network functions we need to use */ - dev->init = via_ircc_net_init; dev->hard_start_xmit = via_ircc_hard_xmit_sir; dev->open = via_ircc_net_open; dev->stop = via_ircc_net_close; dev->do_ioctl = via_ircc_net_ioctl; dev->get_stats = via_ircc_net_get_stats; - rtnl_lock(); - err = register_netdevice(dev); - rtnl_unlock(); - if (err) { - return -1; - } + err = register_netdev(dev); + if (err) + goto err_out4; + MESSAGE("IrDA: Registered device %s\n", dev->name); /* Check if user has supplied the dongle id or not */ @@ -448,6 +435,16 @@ self->io.dongle_id); return 0; + err_out4: + kfree(self->tx_buff.head); + err_out3: + kfree(self->rx_buff.head); + err_out2: + release_region(self->io.fir_base, self->io.fir_ext); + err_out1: + free_netdev(dev); + dev_self[i] = NULL; + return err; } /* @@ -468,11 +465,7 @@ ResetChip(iobase, 5); //hardware reset. /* Remove netdevice */ - if (self->netdev) { - rtnl_lock(); - unregister_netdevice(self->netdev); - rtnl_unlock(); - } + unregister_netdev(self->netdev); /* Release the PORT that this driver is using */ IRDA_DEBUG(4, "%s(), Releasing Region %03x\n", @@ -483,7 +476,8 @@ if (self->rx_buff.head) kfree(self->rx_buff.head); dev_self[self->index] = NULL; - kfree(self); + + free_netdev(self->netdev); return 0; } @@ -1456,26 +1450,6 @@ return status; } -/* - * Function via_ircc_net_init (dev) - * - * Initialize network device - * - */ -static int via_ircc_net_init(struct net_device *dev) -{ - IRDA_DEBUG(4, "%s()\n", __FUNCTION__); - - /* Keep track of module usage */ - SET_MODULE_OWNER(dev); - - /* Setup to be a normal IrDA network device driver */ - irda_device_setup(dev); - - /* Insert overrides below this line! */ - - return 0; -} /* * Function via_ircc_net_open (dev) diff -Nru a/drivers/net/irda/w83977af_ir.c b/drivers/net/irda/w83977af_ir.c --- a/drivers/net/irda/w83977af_ir.c Mon Sep 22 00:30:20 2003 +++ b/drivers/net/irda/w83977af_ir.c Mon Sep 22 00:30:20 2003 @@ -99,7 +99,6 @@ static void w83977af_change_speed(struct w83977af_ir *self, __u32 speed); static int w83977af_is_receiving(struct w83977af_ir *self); -static int w83977af_net_init(struct net_device *dev); static int w83977af_net_open(struct net_device *dev); static int w83977af_net_close(struct net_device *dev); static int w83977af_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); @@ -171,14 +170,16 @@ /* * Allocate new instance of the driver */ - self = kmalloc(sizeof(struct w83977af_ir), GFP_KERNEL); - if (self == NULL) { + dev = alloc_netdev(sizeof(struct w83977af_ir), "irda%d", + irda_device_setup); + if (dev == NULL) { printk( KERN_ERR "IrDA: Can't allocate memory for " "IrDA control block!\n"); err = -ENOMEM; goto err_out; } - memset(self, 0, sizeof(struct w83977af_ir)); + + self = dev->priv; spin_lock_init(&self->lock); @@ -230,29 +231,21 @@ self->rx_buff.state = OUTSIDE_FRAME; self->tx_buff.data = self->tx_buff.head; self->rx_buff.data = self->rx_buff.head; - - if (!(dev = dev_alloc("irda%d", &err))) { - ERROR("%s(), dev_alloc() failed!\n", __FUNCTION__); - err = -ENOMEM; - goto err_out3; - } - dev->priv = (void *) self; self->netdev = dev; + /* Keep track of module usage */ + SET_MODULE_OWNER(dev); + /* Override the network functions we need to use */ - dev->init = w83977af_net_init; dev->hard_start_xmit = w83977af_hard_xmit; dev->open = w83977af_net_open; dev->stop = w83977af_net_close; dev->do_ioctl = w83977af_net_ioctl; dev->get_stats = w83977af_net_get_stats; - rtnl_lock(); - err = register_netdevice(dev); - rtnl_unlock(); + err = register_netdev(dev); if (err) { ERROR("%s(), register_netdevice() failed!\n", __FUNCTION__); - err = -1; goto err_out3; } MESSAGE("IrDA: Registered device %s\n", dev->name); @@ -266,7 +259,7 @@ err_out2: kfree(self->rx_buff.head); err_out1: - kfree(self); + free_netdev(dev); err_out: release_region(iobase, CHIP_IO_EXTENT); return err; @@ -299,8 +292,7 @@ #endif /* CONFIG_USE_W977_PNP */ /* Remove netdevice */ - if (self->netdev) - unregister_netdev(self->netdev); + unregister_netdev(self->netdev); /* Release the PORT that this driver is using */ IRDA_DEBUG(0 , "%s(), Releasing Region %03x\n", @@ -313,7 +305,7 @@ if (self->rx_buff.head) kfree(self->rx_buff.head); - kfree(self); + free_netdev(self->netdev); return 0; } @@ -1185,28 +1177,6 @@ return status; } - -/* - * Function w83977af_net_init (dev) - * - * - * - */ -static int w83977af_net_init(struct net_device *dev) -{ - IRDA_DEBUG(0, "%s()\n", __FUNCTION__ ); - - /* Keep track of module usage */ - SET_MODULE_OWNER(dev); - - /* Set up to be a normal IrDA network device driver */ - irda_device_setup(dev); - - /* Insert overrides below this line! */ - - return 0; -} - /* * Function w83977af_net_open (dev) diff -Nru a/drivers/net/lance.c b/drivers/net/lance.c --- a/drivers/net/lance.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/lance.c Mon Sep 22 00:30:18 2003 @@ -543,7 +543,7 @@ if (dev->irq >= 2) printk(" assigned IRQ %d", dev->irq); else if (lance_version != 0) { /* 7990 boards need DMA detection first. */ - unsigned long irq_mask, delay; + unsigned long irq_mask; /* To auto-IRQ we enable the initialization-done and DMA error interrupts. For ISA boards we get a DMA error, but VLB and PCI @@ -553,8 +553,7 @@ /* Trigger an initialization just for the interrupt. */ outw(0x0041, ioaddr+LANCE_DATA); - delay = jiffies + HZ/50; - while (time_before(jiffies, delay)) ; + mdelay(20); dev->irq = probe_irq_off(irq_mask); if (dev->irq) printk(", probed IRQ %d", dev->irq); @@ -621,13 +620,12 @@ if (lance_version == 0 && dev->irq == 0) { /* We may auto-IRQ now that we have a DMA channel. */ /* Trigger an initialization just for the interrupt. */ - unsigned long irq_mask, delay; + unsigned long irq_mask; irq_mask = probe_irq_on(); outw(0x0041, ioaddr+LANCE_DATA); - delay = jiffies + HZ/25; - while (time_before(jiffies, delay)) ; + mdelay(40); dev->irq = probe_irq_off(irq_mask); if (dev->irq == 0) { printk(" Failed to detect the 7990 IRQ line.\n"); diff -Nru a/drivers/net/lne390.c b/drivers/net/lne390.c --- a/drivers/net/lne390.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/lne390.c Mon Sep 22 00:30:24 2003 @@ -35,6 +35,7 @@ "lne390.c: Driver revision v0.99.1, 01/09/2000\n"; #include +#include #include #include #include diff -Nru a/drivers/net/mace.c b/drivers/net/mace.c --- a/drivers/net/mace.c Mon Sep 22 00:30:20 2003 +++ b/drivers/net/mace.c Mon Sep 22 00:30:20 2003 @@ -7,7 +7,6 @@ #include #include -#include #include #include #include diff -Nru a/drivers/net/ne2.c b/drivers/net/ne2.c --- a/drivers/net/ne2.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/ne2.c Mon Sep 22 00:30:25 2003 @@ -60,7 +60,6 @@ static const char *version = "ne2.c:v0.91 Nov 16 1998 Wim Dumon \n"; #include -#include #include #include #include diff -Nru a/drivers/net/ne3210.c b/drivers/net/ne3210.c --- a/drivers/net/ne3210.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/ne3210.c Mon Sep 22 00:30:21 2003 @@ -29,6 +29,7 @@ "ne3210.c: Driver revision v0.03, 30/09/98\n"; #include +#include #include #include #include diff -Nru a/drivers/net/net_init.c b/drivers/net/net_init.c --- a/drivers/net/net_init.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/net_init.c Mon Sep 22 00:30:18 2003 @@ -381,7 +381,7 @@ dev->hard_header_len = ETH_HLEN; dev->mtu = 1500; /* eth_mtu */ dev->addr_len = ETH_ALEN; - dev->tx_queue_len = 100; /* Ethernet wants good queues */ + dev->tx_queue_len = 1000; /* Ethernet wants good queues */ memset(dev->broadcast,0xFF, ETH_ALEN); diff -Nru a/drivers/net/ni5010.c b/drivers/net/ni5010.c --- a/drivers/net/ni5010.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/ni5010.c Mon Sep 22 00:30:21 2003 @@ -255,14 +255,13 @@ if (dev->irq == 0xff) ; else if (dev->irq < 2) { - unsigned long irq_mask, delay; + unsigned long irq_mask; PRINTK2((KERN_DEBUG "%s: I/O #5 passed!\n", dev->name)); irq_mask = probe_irq_on(); trigger_irq(ioaddr); - delay = jiffies + HZ/50; - while (time_before(jiffies, delay)) ; + mdelay(20); dev->irq = probe_irq_off(irq_mask); PRINTK2((KERN_DEBUG "%s: I/O #6 passed!\n", dev->name)); diff -Nru a/drivers/net/ni52.c b/drivers/net/ni52.c --- a/drivers/net/ni52.c Mon Sep 22 00:30:22 2003 +++ b/drivers/net/ni52.c Mon Sep 22 00:30:22 2003 @@ -492,14 +492,13 @@ if(dev->irq < 2) { - unsigned long irq_mask, delay; + unsigned long irq_mask; irq_mask = probe_irq_on(); ni_reset586(); ni_attn586(); - delay = jiffies + HZ/50; - while (time_before(jiffies, delay)) ; + mdelay(20); dev->irq = probe_irq_off(irq_mask); if(!dev->irq) { diff -Nru a/drivers/net/ni65.c b/drivers/net/ni65.c --- a/drivers/net/ni65.c Mon Sep 22 00:30:20 2003 +++ b/drivers/net/ni65.c Mon Sep 22 00:30:20 2003 @@ -72,7 +72,6 @@ #include #include #include -#include #include #include diff -Nru a/drivers/net/ns83820.c b/drivers/net/ns83820.c --- a/drivers/net/ns83820.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/ns83820.c Mon Sep 22 00:30:24 2003 @@ -1833,13 +1833,13 @@ if (err) { printk(KERN_INFO "ns83820: unable to register irq %d\n", pci_dev->irq); - goto out_unmap; + goto out_disable; } err = register_netdev(&dev->net_dev); if (err) { printk(KERN_INFO "ns83820: unable to register netdev: %d\n", err); - goto out_unmap; + goto out_free_irq; } printk("%s: ns83820.c: 0x22c: %08x, subsystem: %04x:%04x\n", @@ -2025,9 +2025,11 @@ return 0; -out_unmap: - iounmap(dev->base); +out_free_irq: + free_irq(pci_dev->irq, dev); out_disable: + if (dev->base) + iounmap(dev->base); pci_free_consistent(pci_dev, 4 * DESC_SIZE * NR_TX_DESC, dev->tx_descs, dev->tx_phy_descs); pci_free_consistent(pci_dev, 4 * DESC_SIZE * NR_RX_DESC, dev->rx_info.descs, dev->rx_info.phy_descs); pci_disable_device(pci_dev); diff -Nru a/drivers/net/pcmcia/3c574_cs.c b/drivers/net/pcmcia/3c574_cs.c --- a/drivers/net/pcmcia/3c574_cs.c Mon Sep 22 00:30:19 2003 +++ b/drivers/net/pcmcia/3c574_cs.c Mon Sep 22 00:30:19 2003 @@ -263,16 +263,6 @@ static dev_link_t *dev_list; -static void flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - tc574_detach(link); - } -} - /* tc574_attach() creates an "instance" of the driver, allocating local data structures for one device. The device is registered @@ -288,7 +278,6 @@ int i, ret; DEBUG(0, "3c574_attach()\n"); - flush_stale_links(); /* Create the PC card device object. */ dev = alloc_etherdev(sizeof(struct el3_private)); @@ -375,10 +364,8 @@ if (link->state & DEV_CONFIG) { tc574_release(link); - if (link->state & DEV_STALE_CONFIG) { - link->state |= DEV_STALE_LINK; + if (link->state & DEV_STALE_CONFIG) return; - } } if (link->handle) @@ -583,7 +570,9 @@ link->state &= ~DEV_CONFIG; -} /* tc574_release */ + if (link->state & DEV_STALE_CONFIG) + tc574_detach(link); +} /* The card status event handler. Mostly, this schedules other diff -Nru a/drivers/net/pcmcia/3c589_cs.c b/drivers/net/pcmcia/3c589_cs.c --- a/drivers/net/pcmcia/3c589_cs.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/pcmcia/3c589_cs.c Mon Sep 22 00:30:24 2003 @@ -176,24 +176,6 @@ /*====================================================================== - This bit of code is used to avoid unregistering network devices - at inappropriate times. 2.2 and later kernels are fairly picky - about when this can happen. - -======================================================================*/ - -static void flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - tc589_detach(link); - } -} - -/*====================================================================== - tc589_attach() creates an "instance" of the driver, allocating local data structures for one device. The device is registered with Card Services. @@ -209,7 +191,6 @@ int i, ret; DEBUG(0, "3c589_attach()\n"); - flush_stale_links(); /* Create new ethernet device */ dev = alloc_etherdev(sizeof(struct el3_private)); @@ -297,10 +278,8 @@ if (link->state & DEV_CONFIG) { tc589_release(link); - if (link->state & DEV_STALE_CONFIG) { - link->state |= DEV_STALE_LINK; + if (link->state & DEV_STALE_CONFIG) return; - } } if (link->handle) @@ -466,8 +445,10 @@ CardServices(ReleaseIRQ, link->handle, &link->irq); link->state &= ~DEV_CONFIG; - -} /* tc589_release */ + + if (link->state & DEV_STALE_CONFIG) + tc589_detach(link); +} /*====================================================================== diff -Nru a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c --- a/drivers/net/pcmcia/axnet_cs.c Mon Sep 22 00:30:22 2003 +++ b/drivers/net/pcmcia/axnet_cs.c Mon Sep 22 00:30:22 2003 @@ -142,24 +142,6 @@ /*====================================================================== - This bit of code is used to avoid unregistering network devices - at inappropriate times. 2.2 and later kernels are fairly picky - about when this can happen. - -======================================================================*/ - -static void flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - axnet_detach(link); - } -} - -/*====================================================================== - We never need to do anything when a axnet device is "initialized" by the net software, because we only register already-found cards. @@ -187,7 +169,6 @@ int i, ret; DEBUG(0, "axnet_attach()\n"); - flush_stale_links(); /* Create new ethernet device */ info = kmalloc(sizeof(*info), GFP_KERNEL); @@ -258,10 +239,8 @@ if (link->state & DEV_CONFIG) { axnet_release(link); - if (link->state & DEV_STALE_CONFIG) { - link->state |= DEV_STALE_LINK; + if (link->state & DEV_STALE_CONFIG) return; - } } if (link->handle) @@ -547,7 +526,9 @@ link->state &= ~DEV_CONFIG; -} /* axnet_release */ + if (link->state & DEV_STALE_CONFIG) + axnet_detach(link); +} /*====================================================================== diff -Nru a/drivers/net/pcmcia/com20020_cs.c b/drivers/net/pcmcia/com20020_cs.c --- a/drivers/net/pcmcia/com20020_cs.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/pcmcia/com20020_cs.c Mon Sep 22 00:30:21 2003 @@ -145,22 +145,18 @@ dev_node_t node; } com20020_dev_t; -/*====================================================================== +static void com20020_setup(struct net_device *dev) +{ + struct arcnet_local *lp = dev->priv; - This bit of code is used to avoid unregistering network devices - at inappropriate times. 2.2 and later kernels are fairly picky - about when this can happen. - -======================================================================*/ + lp->timeout = timeout; + lp->backplane = backplane; + lp->clockp = clockp; + lp->clockm = clockm & 3; + lp->hw.owner = THIS_MODULE; -static void flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - com20020_detach(link); - } + /* fill in our module parameters as defaults */ + dev->dev_addr[0] = node; } /*====================================================================== @@ -181,7 +177,6 @@ struct arcnet_local *lp; DEBUG(0, "com20020_attach()\n"); - flush_stale_links(); /* Create new network device */ link = kmalloc(sizeof(struct dev_link_t), GFP_KERNEL); @@ -192,18 +187,14 @@ if (!info) goto fail_alloc_info; - lp = kmalloc(sizeof(struct arcnet_local), GFP_KERNEL); - if (!lp) - goto fail_alloc_lp; - - dev = dev_alloc("arc%d", &ret); + dev = alloc_netdev(sizeof(struct arcnet_local), "arc%d", + com20020_setup); if (!dev) goto fail_alloc_dev; memset(info, 0, sizeof(struct com20020_dev_t)); - memset(lp, 0, sizeof(struct arcnet_local)); memset(link, 0, sizeof(struct dev_link_t)); - dev->priv = lp; + lp = dev->priv; link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; link->io.NumPorts1 = 16; @@ -220,13 +211,6 @@ link->conf.IntType = INT_MEMORY_AND_IO; link->conf.Present = PRESENT_OPTION; - /* fill in our module parameters as defaults */ - dev->dev_addr[0] = node; - lp->timeout = timeout; - lp->backplane = backplane; - lp->clockp = clockp; - lp->clockm = clockm & 3; - lp->hw.owner = THIS_MODULE; link->irq.Instance = info->dev = dev; link->priv = info; @@ -253,8 +237,6 @@ return link; fail_alloc_dev: - kfree(lp); -fail_alloc_lp: kfree(info); fail_alloc_info: kfree(link); @@ -290,10 +272,8 @@ if (link->state & DEV_CONFIG) { com20020_release(link); - if (link->state & DEV_STALE_CONFIG) { - link->state |= DEV_STALE_LINK; + if (link->state & DEV_STALE_CONFIG) return; - } } if (link->handle) @@ -324,11 +304,9 @@ /* ...but I/O ports are done automatically by card services */ unregister_netdev(dev); - MOD_DEC_USE_COUNT; } DEBUG(1,"kfree...\n"); - kfree(dev->priv); free_netdev(dev); } DEBUG(1,"kfree2...\n"); @@ -382,7 +360,6 @@ /* Configure card */ link->state |= DEV_CONFIG; - strcpy(info->node.dev_name, dev->name); DEBUG(1,"arcnet: baseport1 is %Xh\n", link->io.BasePort1); i = !CS_SUCCESS; @@ -428,13 +405,11 @@ goto failed; } - MOD_INC_USE_COUNT; - lp = dev->priv; lp->card_name = "PCMCIA COM20020"; lp->card_flags = ARC_CAN_10MBIT; /* pretend all of them can 10Mbit */ - i = com20020_found(dev, 0); + i = com20020_found(dev, 0); /* calls register_netdev */ if (i != 0) { DEBUG(1,KERN_NOTICE "com20020_cs: com20020_found() failed\n"); @@ -442,6 +417,7 @@ } info->dev_configured = 1; + strcpy(info->node.dev_name, dev->name); link->dev = &info->node; link->state &= ~DEV_CONFIG_PENDING; @@ -484,7 +460,9 @@ link->state &= ~(DEV_CONFIG | DEV_RELEASE_PENDING); -} /* com20020_release */ + if (link->state & DEV_STALE_CONFIG) + com20020_detach(link); +} /*====================================================================== diff -Nru a/drivers/net/pcmcia/fmvj18x_cs.c b/drivers/net/pcmcia/fmvj18x_cs.c --- a/drivers/net/pcmcia/fmvj18x_cs.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/pcmcia/fmvj18x_cs.c Mon Sep 22 00:30:23 2003 @@ -242,24 +242,6 @@ #define BANK_1U 0x24 /* bank 1 (CONFIG_1) */ #define BANK_2U 0x28 /* bank 2 (CONFIG_1) */ -/*====================================================================== - - This bit of code is used to avoid unregistering network devices - at inappropriate times. 2.2 and later kernels are fairly picky - about when this can happen. - -======================================================================*/ - -static void flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - fmvj18x_detach(link); - } -} - static dev_link_t *fmvj18x_attach(void) { local_info_t *lp; @@ -269,7 +251,6 @@ int i, ret; DEBUG(0, "fmvj18x_attach()\n"); - flush_stale_links(); /* Make up a FMVJ18x specific data structure */ dev = alloc_etherdev(sizeof(local_info_t)); @@ -353,10 +334,8 @@ if (link->state & DEV_CONFIG) { fmvj18x_release(link); - if (link->state & DEV_STALE_CONFIG) { - link->state |= DEV_STALE_LINK; + if (link->state & DEV_STALE_CONFIG) return; - } } /* Break the link with Card Services */ @@ -762,8 +741,10 @@ CardServices(ReleaseIRQ, link->handle, &link->irq); link->state &= ~DEV_CONFIG; - -} /* fmvj18x_release */ + + if (link->state & DEV_STALE_CONFIG) + fmvj18x_detach(link); +} /*====================================================================*/ diff -Nru a/drivers/net/pcmcia/ibmtr_cs.c b/drivers/net/pcmcia/ibmtr_cs.c --- a/drivers/net/pcmcia/ibmtr_cs.c Mon Sep 22 00:30:22 2003 +++ b/drivers/net/pcmcia/ibmtr_cs.c Mon Sep 22 00:30:22 2003 @@ -139,24 +139,6 @@ struct tok_info ti; } ibmtr_dev_t; -/*====================================================================== - - This bit of code is used to avoid unregistering network devices - at inappropriate times. 2.2 and later kernels are fairly picky - about when this can happen. - -======================================================================*/ - -static void flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - ibmtr_detach(link); - } -} - static void netdev_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) { @@ -184,7 +166,6 @@ int i, ret; DEBUG(0, "ibmtr_attach()\n"); - flush_stale_links(); /* Create new token-ring device */ dev = alloc_trdev(sizeof(*info)); @@ -273,10 +254,8 @@ } if (link->state & DEV_CONFIG) { ibmtr_release(link); - if (link->state & DEV_STALE_CONFIG) { - link->state |= DEV_STALE_LINK; + if (link->state & DEV_STALE_CONFIG) return; - } } if (link->handle) @@ -446,7 +425,9 @@ link->state &= ~DEV_CONFIG; -} /* ibmtr_release */ + if (link->state & DEV_STALE_CONFIG) + ibmtr_detach(link); +} /*====================================================================== diff -Nru a/drivers/net/pcmcia/nmclan_cs.c b/drivers/net/pcmcia/nmclan_cs.c --- a/drivers/net/pcmcia/nmclan_cs.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/pcmcia/nmclan_cs.c Mon Sep 22 00:30:18 2003 @@ -449,21 +449,6 @@ static void nmclan_detach(dev_link_t *); /* ---------------------------------------------------------------------------- -flush_stale_links - Clean up stale device structures ----------------------------------------------------------------------------- */ - -static void flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - nmclan_detach(link); - } -} - -/* ---------------------------------------------------------------------------- nmclan_attach Creates an "instance" of the driver, allocating local data structures for one device. The device is registered with Card @@ -480,7 +465,6 @@ DEBUG(0, "nmclan_attach()\n"); DEBUG(1, "%s\n", rcsid); - flush_stale_links(); /* Create new ethernet device */ dev = alloc_etherdev(sizeof(mace_private)); @@ -569,10 +553,8 @@ if (link->state & DEV_CONFIG) { nmclan_release(link); - if (link->state & DEV_STALE_CONFIG) { - link->state |= DEV_STALE_LINK; + if (link->state & DEV_STALE_CONFIG) return; - } } if (link->handle) @@ -843,7 +825,9 @@ link->state &= ~DEV_CONFIG; -} /* nmclan_release */ + if (link->state & DEV_STALE_CONFIG) + nmclan_detach(link); +} /* ---------------------------------------------------------------------------- nmclan_event diff -Nru a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c --- a/drivers/net/pcmcia/pcnet_cs.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/pcmcia/pcnet_cs.c Mon Sep 22 00:30:24 2003 @@ -239,24 +239,6 @@ /*====================================================================== - This bit of code is used to avoid unregistering network devices - at inappropriate times. 2.2 and later kernels are fairly picky - about when this can happen. - -======================================================================*/ - -static void flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - pcnet_detach(link); - } -} - -/*====================================================================== - We never need to do anything when a pcnet device is "initialized" by the net software, because we only register already-found cards. @@ -284,7 +266,6 @@ int i, ret; DEBUG(0, "pcnet_attach()\n"); - flush_stale_links(); /* Create new ethernet device */ info = kmalloc(sizeof(*info), GFP_KERNEL); @@ -356,10 +337,8 @@ if (link->state & DEV_CONFIG) { pcnet_release(link); - if (link->state & DEV_STALE_CONFIG) { - link->state |= DEV_STALE_LINK; + if (link->state & DEV_STALE_CONFIG) return; - } } if (link->handle) @@ -821,7 +800,9 @@ link->state &= ~DEV_CONFIG; -} /* pcnet_release */ + if (link->state & DEV_STALE_CONFIG) + pcnet_detach(link); +} /*====================================================================== diff -Nru a/drivers/net/pcmcia/smc91c92_cs.c b/drivers/net/pcmcia/smc91c92_cs.c --- a/drivers/net/pcmcia/smc91c92_cs.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/pcmcia/smc91c92_cs.c Mon Sep 22 00:30:23 2003 @@ -307,24 +307,6 @@ /*====================================================================== - This bit of code is used to avoid unregistering network devices - at inappropriate times. 2.2 and later kernels are fairly picky - about when this can happen. - -======================================================================*/ - -static void flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - smc91c92_detach(link); - } -} - -/*====================================================================== - smc91c92_attach() creates an "instance" of the driver, allocating local data structures for one device. The device is registered with Card Services. @@ -340,7 +322,6 @@ int i, ret; DEBUG(0, "smc91c92_attach()\n"); - flush_stale_links(); /* Create new ethernet device */ dev = alloc_etherdev(sizeof(struct smc_private)); @@ -432,10 +413,8 @@ if (link->state & DEV_CONFIG) { smc91c92_release(link); - if (link->state & DEV_STALE_CONFIG) { - link->state |= DEV_STALE_LINK; + if (link->state & DEV_STALE_CONFIG) return; - } } if (link->handle) @@ -1103,7 +1082,9 @@ link->state &= ~DEV_CONFIG; -} /* smc91c92_release */ + if (link->state & DEV_STALE_CONFIG) + smc91c92_detach(link); +} /*====================================================================== diff -Nru a/drivers/net/pcmcia/xirc2ps_cs.c b/drivers/net/pcmcia/xirc2ps_cs.c --- a/drivers/net/pcmcia/xirc2ps_cs.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/pcmcia/xirc2ps_cs.c Mon Sep 22 00:30:21 2003 @@ -390,17 +390,6 @@ static int do_stop(struct net_device *dev); /*=============== Helper functions =========================*/ -static void -flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - xirc2ps_detach(link); - } -} - static int get_tuple_data(int fn, client_handle_t handle, tuple_t *tuple) { @@ -602,7 +591,6 @@ int err; DEBUG(0, "attach()\n"); - flush_stale_links(); /* Allocate the device structure */ dev = alloc_etherdev(sizeof(local_info_t)); @@ -687,13 +675,8 @@ * the release() function is called, that will trigger a proper * detach(). */ - if (link->state & DEV_CONFIG) { + if (link->state & DEV_CONFIG) xirc2ps_release(link); - if (link->state & DEV_STALE_CONFIG) { - link->state |= DEV_STALE_LINK; - return; - } - } /* Break the link with Card Services */ if (link->handle) @@ -1183,19 +1166,6 @@ DEBUG(0, "release(0x%p)\n", link); -#if 0 - /* - * If the device is currently in use, we won't release until it - * is actually closed. - */ - if (link->open) { - DEBUG(0, "release postponed, '%s' " - "still open\n", link->dev->dev_name); - link->state |= DEV_STALE_CONFIG; - return; - } -#endif - if (link->win) { struct net_device *dev = link->priv; local_info_t *local = dev->priv; @@ -2030,9 +2000,6 @@ SelectPage(0); link->open--; - if (link->state & DEV_STALE_CONFIG) - xirc2ps_release(link); - return 0; } diff -Nru a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c --- a/drivers/net/ppp_generic.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/ppp_generic.c Mon Sep 22 00:30:24 2003 @@ -792,7 +792,7 @@ /* Called at boot time if ppp is compiled into the kernel, or at module load time (from init_module) if compiled as a module. */ -int __init ppp_init(void) +static int __init ppp_init(void) { int err; @@ -801,6 +801,8 @@ if (!err) { err = devfs_mk_cdev(MKDEV(PPP_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR, "ppp"); + if (err) + unregister_chrdev(PPP_MAJOR, "ppp"); } if (err) diff -Nru a/drivers/net/pppoe.c b/drivers/net/pppoe.c --- a/drivers/net/pppoe.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/pppoe.c Mon Sep 22 00:30:23 2003 @@ -986,7 +986,7 @@ struct pppox_opt *po; char *dev_name; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(seq, "Id Address Device\n"); goto out; } @@ -1025,7 +1025,7 @@ loff_t l = *pos; read_lock_bh(&pppoe_hash_lock); - return l ? pppoe_get_idx(--l) : (void *)1; + return l ? pppoe_get_idx(--l) : SEQ_START_TOKEN; } static void *pppoe_seq_next(struct seq_file *seq, void *v, loff_t *pos) @@ -1033,7 +1033,7 @@ struct pppox_opt *po; ++*pos; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { po = pppoe_get_idx(0); goto out; } diff -Nru a/drivers/net/rcpci45.c b/drivers/net/rcpci45.c --- a/drivers/net/rcpci45.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/rcpci45.c Mon Sep 22 00:30:23 2003 @@ -259,10 +259,12 @@ dev->set_config = &RCconfig; if ((error = register_netdev(dev))) - goto err_out_free_region; + goto err_out_iounmap; return 0; /* success */ +err_out_iounmap: + iounmap((void *) dev->base_addr); err_out_free_region: pci_release_regions (pdev); err_out_free_msgbuf: diff -Nru a/drivers/net/rrunner.c b/drivers/net/rrunner.c --- a/drivers/net/rrunner.c Mon Sep 22 00:30:19 2003 +++ b/drivers/net/rrunner.c Mon Sep 22 00:30:19 2003 @@ -30,7 +30,6 @@ #include #include -#include #include #include #include @@ -124,7 +123,6 @@ rrpriv->pci_dev = pdev; spin_lock_init(&rrpriv->lock); - sprintf(rrpriv->name, "RoadRunner serial HIPPI"); dev->irq = pdev->irq; dev->open = &rr_open; @@ -228,7 +226,7 @@ pci_set_drvdata(pdev, NULL); } out2: - kfree(dev); + free_netdev(dev); out3: return ret; } @@ -236,9 +234,10 @@ static void __devexit rr_remove_one (struct pci_dev *pdev) { struct net_device *dev = pci_get_drvdata(pdev); - struct rr_private *rr = (struct rr_private *)dev->priv; if (dev) { + struct rr_private *rr = dev->priv; + if (!(readl(&rr->regs->HostCtrl) & NIC_HALTED)){ printk(KERN_ERR "%s: trying to unload running NIC\n", dev->name); @@ -721,7 +720,8 @@ * Give the FirmWare time to chew on the `get running' command. */ myjif = jiffies + 5 * HZ; - while (time_before(jiffies, myjif) && !rrpriv->fw_running); + while (time_before(jiffies, myjif) && !rrpriv->fw_running) + cpu_relax(); netif_start_queue(dev); @@ -1201,8 +1201,7 @@ readl(®s->HostCtrl); spin_unlock_irqrestore(&rrpriv->lock, flags); - if (request_irq(dev->irq, rr_interrupt, SA_SHIRQ, rrpriv->name, dev)) - { + if (request_irq(dev->irq, rr_interrupt, SA_SHIRQ, dev->name, dev)) { printk(KERN_WARNING "%s: Requested IRQ %d is busy\n", dev->name, dev->irq); ecode = -EAGAIN; @@ -1222,7 +1221,6 @@ netif_start_queue(dev); - MOD_INC_USE_COUNT; return ecode; error: @@ -1414,7 +1412,6 @@ free_irq(dev->irq, dev); spin_unlock_irqrestore(&rrpriv->lock, flags); - MOD_DEC_USE_COUNT; return 0; } @@ -1727,7 +1724,7 @@ .name = "rrunner", .id_table = rr_pci_tbl, .probe = rr_init_one, - .remove = rr_remove_one, + .remove = __devexit_p(rr_remove_one), }; static int __init rr_init_module(void) diff -Nru a/drivers/net/rrunner.h b/drivers/net/rrunner.h --- a/drivers/net/rrunner.h Mon Sep 22 00:30:23 2003 +++ b/drivers/net/rrunner.h Mon Sep 22 00:30:23 2003 @@ -820,7 +820,6 @@ u32 tx_full; u32 fw_rev; volatile short fw_running; - char name[24]; /* The assigned name */ struct net_device_stats stats; struct pci_dev *pci_dev; }; diff -Nru a/drivers/net/sb1000.c b/drivers/net/sb1000.c --- a/drivers/net/sb1000.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/sb1000.c Mon Sep 22 00:30:18 2003 @@ -35,7 +35,6 @@ static char version[] = "sb1000.c:v1.1.2 6/01/98 (fventuri@mediaone.net)\n"; #include -#include #include #include #include diff -Nru a/drivers/net/sis900.c b/drivers/net/sis900.c --- a/drivers/net/sis900.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/sis900.c Mon Sep 22 00:30:21 2003 @@ -47,7 +47,6 @@ */ #include -#include #include #include #include diff -Nru a/drivers/net/sk98lin/h/skdrv1st.h b/drivers/net/sk98lin/h/skdrv1st.h --- a/drivers/net/sk98lin/h/skdrv1st.h Mon Sep 22 00:30:18 2003 +++ b/drivers/net/sk98lin/h/skdrv1st.h Mon Sep 22 00:30:18 2003 @@ -107,9 +107,6 @@ #ifndef __INC_SKDRV1ST_H #define __INC_SKDRV1ST_H -/* Check kernel version */ -#include - typedef struct s_AC SK_AC; /* Set card versions */ @@ -135,7 +132,6 @@ #error You must compile this driver with "-O". #endif -#include #include #include #include diff -Nru a/drivers/net/sk98lin/skge.c b/drivers/net/sk98lin/skge.c --- a/drivers/net/sk98lin/skge.c Mon Sep 22 00:30:19 2003 +++ b/drivers/net/sk98lin/skge.c Mon Sep 22 00:30:19 2003 @@ -361,7 +361,6 @@ * * * "h/skdrv1st.h" - * * * * diff -Nru a/drivers/net/sk_mca.h b/drivers/net/sk_mca.h --- a/drivers/net/sk_mca.h Mon Sep 22 00:30:22 2003 +++ b/drivers/net/sk_mca.h Mon Sep 22 00:30:22 2003 @@ -1,3 +1,5 @@ +#include + #ifndef _SK_MCA_INCLUDE_ #define _SK_MCA_INCLUDE_ diff -Nru a/drivers/net/skfp/h/targetos.h b/drivers/net/skfp/h/targetos.h --- a/drivers/net/skfp/h/targetos.h Mon Sep 22 00:30:20 2003 +++ b/drivers/net/skfp/h/targetos.h Mon Sep 22 00:30:20 2003 @@ -43,7 +43,6 @@ #undef ADDR -#include #include #include #include diff -Nru a/drivers/net/skfp/skfddi.c b/drivers/net/skfp/skfddi.c --- a/drivers/net/skfp/skfddi.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/skfp/skfddi.c Mon Sep 22 00:30:18 2003 @@ -182,7 +182,7 @@ extern void enable_tx_irq(struct s_smc *smc, u_short queue); extern void mac_drv_clear_txd(struct s_smc *smc); -static struct pci_device_id skfddi_pci_tbl[] __initdata = { +static struct pci_device_id skfddi_pci_tbl[] = { { PCI_VENDOR_ID_SK, PCI_DEVICE_ID_SK_FP, PCI_ANY_ID, PCI_ANY_ID, }, { } /* Terminating entry */ }; diff -Nru a/drivers/net/slip.c b/drivers/net/slip.c --- a/drivers/net/slip.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/slip.c Mon Sep 22 00:30:25 2003 @@ -1389,9 +1389,8 @@ */ do { if (busy) { - current->state = TASK_INTERRUPTIBLE; + set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(HZ / 10); - current->state = TASK_RUNNING; } busy = 0; diff -Nru a/drivers/net/smc-ultra32.c b/drivers/net/smc-ultra32.c --- a/drivers/net/smc-ultra32.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/smc-ultra32.c Mon Sep 22 00:30:24 2003 @@ -47,6 +47,7 @@ #include +#include #include #include #include diff -Nru a/drivers/net/smc9194.c b/drivers/net/smc9194.c --- a/drivers/net/smc9194.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/smc9194.c Mon Sep 22 00:30:23 2003 @@ -58,7 +58,6 @@ "smc9194.c:v0.14 12/15/00 by Erik Stahlman (erik@vt.edu)\n"; #include -#include #include #include #include diff -Nru a/drivers/net/sunhme.c b/drivers/net/sunhme.c --- a/drivers/net/sunhme.c Mon Sep 22 00:30:20 2003 +++ b/drivers/net/sunhme.c Mon Sep 22 00:30:20 2003 @@ -179,7 +179,7 @@ where it could be referenced at any time due to hot plugging, the __initdata reference should be removed. */ -struct pci_device_id happymeal_pci_ids[] __initdata = { +struct pci_device_id happymeal_pci_ids[] = { { .vendor = PCI_VENDOR_ID_SUN, .device = PCI_DEVICE_ID_SUN_HAPPYMEAL, diff -Nru a/drivers/net/tc35815.c b/drivers/net/tc35815.c --- a/drivers/net/tc35815.c Mon Sep 22 00:30:17 2003 +++ b/drivers/net/tc35815.c Mon Sep 22 00:30:17 2003 @@ -448,7 +448,7 @@ /* Index to functions, as function prototypes. */ -static int __init tc35815_probe1(struct pci_dev *pdev, unsigned int base_addr, unsigned int irq); +static int __devinit tc35815_probe1(struct pci_dev *pdev, unsigned int base_addr, unsigned int irq); static int tc35815_open(struct net_device *dev); static int tc35815_send_packet(struct sk_buff *skb, struct net_device *dev); @@ -526,7 +526,7 @@ return -ENODEV; } -static int __init tc35815_probe1(struct pci_dev *pdev, unsigned int base_addr, unsigned int irq) +static int __devinit tc35815_probe1(struct pci_dev *pdev, unsigned int base_addr, unsigned int irq) { static unsigned version_printed = 0; int i; diff -Nru a/drivers/net/tlan.c b/drivers/net/tlan.c --- a/drivers/net/tlan.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/tlan.c Mon Sep 22 00:30:18 2003 @@ -169,6 +169,7 @@ #include #include #include +#include #include #include #include diff -Nru a/drivers/net/tokenring/Kconfig b/drivers/net/tokenring/Kconfig --- a/drivers/net/tokenring/Kconfig Mon Sep 22 00:30:20 2003 +++ b/drivers/net/tokenring/Kconfig Mon Sep 22 00:30:20 2003 @@ -2,13 +2,14 @@ # Token Ring driver configuration # -menu "Token Ring devices (depends on LLC=y)" +menu "Token Ring devices" depends on NETDEVICES # So far, we only have PCI, ISA, and MCA token ring devices config TR bool "Token Ring driver support" - depends on (PCI || ISA || MCA || CCW) && LLC=y + depends on (PCI || ISA || MCA || CCW) + select LLC help Token Ring is IBM's way of communication on a local network; the rest of the world uses Ethernet. To participate on a Token Ring diff -Nru a/drivers/net/tokenring/abyss.c b/drivers/net/tokenring/abyss.c --- a/drivers/net/tokenring/abyss.c Mon Sep 22 00:30:20 2003 +++ b/drivers/net/tokenring/abyss.c Mon Sep 22 00:30:20 2003 @@ -40,7 +40,7 @@ #include "tms380tr.h" #include "abyss.h" /* Madge-specific constants */ -static char version[] __initdata = +static char version[] __devinitdata = "abyss.c: v1.02 23/11/2000 by Adam Fritzler\n"; #define ABYSS_IO_EXTENT 64 @@ -92,7 +92,7 @@ outw(val, dev->base_addr + reg); } -static int __init abyss_attach(struct pci_dev *pdev, const struct pci_device_id *ent) +static int __devinit abyss_attach(struct pci_dev *pdev, const struct pci_device_id *ent) { static int versionprinted; struct net_device *dev; diff -Nru a/drivers/net/tokenring/lanstreamer.h b/drivers/net/tokenring/lanstreamer.h --- a/drivers/net/tokenring/lanstreamer.h Mon Sep 22 00:30:20 2003 +++ b/drivers/net/tokenring/lanstreamer.h Mon Sep 22 00:30:20 2003 @@ -60,6 +60,8 @@ * */ +#include + #if STREAMER_IOCTL && (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) #include #define IOCTL_PRINT_RX_BUFS SIOCDEVPRIVATE diff -Nru a/drivers/net/tokenring/olympic.c b/drivers/net/tokenring/olympic.c --- a/drivers/net/tokenring/olympic.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/tokenring/olympic.c Mon Sep 22 00:30:23 2003 @@ -210,14 +210,13 @@ pci_set_master(pdev); if ((i = pci_request_regions(pdev,"olympic"))) { - return i ; - } ; + goto op_disable_dev; + } dev = alloc_trdev(sizeof(struct olympic_private)) ; - if (!dev) { - pci_release_regions(pdev) ; - return -ENOMEM ; + i = -ENOMEM; + goto op_free_dev; } olympic_priv = dev->priv ; @@ -231,10 +230,12 @@ dev->base_addr=pci_resource_start(pdev, 0); dev->init=NULL; /* Must be NULL otherwise we get called twice */ olympic_priv->olympic_card_name = pci_name(pdev); + olympic_priv->pdev = pdev; olympic_priv->olympic_mmio = ioremap(pci_resource_start(pdev,1),256); olympic_priv->olympic_lap = ioremap(pci_resource_start(pdev,2),2048); -#warning check ioremap return value - olympic_priv->pdev = pdev ; + if (!olympic_priv->olympic_mmio || !olympic_priv->olympic_lap) { + goto op_free_iomap; + } if ((pkt_buf_sz[card_no] < 100) || (pkt_buf_sz[card_no] > 18000) ) olympic_priv->pkt_buf_sz = PKT_BUF_SZ ; @@ -246,12 +247,8 @@ olympic_priv->olympic_message_level = message_level[card_no] ; olympic_priv->olympic_network_monitor = network_monitor[card_no]; - if((i = olympic_init(dev))) { - iounmap(olympic_priv->olympic_mmio) ; - iounmap(olympic_priv->olympic_lap) ; - kfree(dev) ; - pci_release_regions(pdev) ; - return i ; + if ((i = olympic_init(dev))) { + goto op_free_iomap; } dev->open=&olympic_open; @@ -275,6 +272,20 @@ printk("Olympic: Network Monitor information: /proc/%s\n",proc_name); } return 0 ; + +op_free_iomap: + if (olympic_priv->olympic_mmio) + iounmap(olympic_priv->olympic_mmio); + if (olympic_priv->olympic_lap) + iounmap(olympic_priv->olympic_lap); + +op_free_dev: + free_netdev(dev); + pci_release_regions(pdev); + +op_disable_dev: + pci_disable_device(pdev); + return i; } static int __devinit olympic_init(struct net_device *dev) diff -Nru a/drivers/net/tokenring/proteon.c b/drivers/net/tokenring/proteon.c --- a/drivers/net/tokenring/proteon.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/tokenring/proteon.c Mon Sep 22 00:30:24 2003 @@ -410,7 +410,7 @@ } } else { for(i = 0; num < ISATR_MAX_ADAPTERS && portlist[i]; i++) { - if (setup_card(portlist[i], irq[i], dma[i])) + if (setup_card(portlist[i], irq[num], dma[num]) == 0) num++; } } diff -Nru a/drivers/net/tokenring/skisa.c b/drivers/net/tokenring/skisa.c --- a/drivers/net/tokenring/skisa.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/tokenring/skisa.c Mon Sep 22 00:30:18 2003 @@ -423,7 +423,7 @@ } } else { for(i = 0; num < ISATR_MAX_ADAPTERS && portlist[i]; i++) { - if (setup_card(portlist[i], irq[i], dma[i])) + if (setup_card(portlist[i], irq[num], dma[num]) == 0) num++; } } diff -Nru a/drivers/net/tokenring/smctr.c b/drivers/net/tokenring/smctr.c --- a/drivers/net/tokenring/smctr.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/tokenring/smctr.c Mon Sep 22 00:30:21 2003 @@ -29,7 +29,6 @@ */ #include -#include #include #include #include diff -Nru a/drivers/net/tokenring/tms380tr.c b/drivers/net/tokenring/tms380tr.c --- a/drivers/net/tokenring/tms380tr.c Mon Sep 22 00:30:22 2003 +++ b/drivers/net/tokenring/tms380tr.c Mon Sep 22 00:30:22 2003 @@ -77,7 +77,6 @@ #endif #include -#include #include #include #include diff -Nru a/drivers/net/tokenring/tmspci.c b/drivers/net/tokenring/tmspci.c --- a/drivers/net/tokenring/tmspci.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/tokenring/tmspci.c Mon Sep 22 00:30:24 2003 @@ -40,7 +40,7 @@ #include "tms380tr.h" -static char version[] __initdata = +static char version[] __devinitdata = "tmspci.c: v1.02 23/11/2000 by Adam Fritzler\n"; #define TMS_PCI_IO_EXTENT 32 @@ -91,7 +91,7 @@ outw(val, dev->base_addr + reg); } -static int __init tms_pci_attach(struct pci_dev *pdev, const struct pci_device_id *ent) +static int __devinit tms_pci_attach(struct pci_dev *pdev, const struct pci_device_id *ent) { static int versionprinted; struct net_device *dev; diff -Nru a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c --- a/drivers/net/tulip/de2104x.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/tulip/de2104x.c Mon Sep 22 00:30:24 2003 @@ -50,7 +50,7 @@ #include /* These identify the driver base version and may not be removed. */ -static char version[] __initdata = +static char version[] = KERN_INFO DRV_NAME " PCI Ethernet driver v" DRV_VERSION " (" DRV_RELDATE ")\n"; MODULE_AUTHOR("Jeff Garzik "); @@ -1932,7 +1932,7 @@ goto fill_defaults; } -static int __init de_init_one (struct pci_dev *pdev, +static int __devinit de_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) { struct net_device *dev; diff -Nru a/drivers/net/tulip/de4x5.c b/drivers/net/tulip/de4x5.c --- a/drivers/net/tulip/de4x5.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/tulip/de4x5.c Mon Sep 22 00:30:18 2003 @@ -480,7 +480,7 @@ #include "de4x5.h" -static char version[] __initdata = "de4x5.c:V0.546 2001/02/22 davies@maniac.ultranet.com\n"; +static char version[] __devinitdata = "de4x5.c:V0.546 2001/02/22 davies@maniac.ultranet.com\n"; #define c_char const char #define TWIDDLE(a) (u_short)le16_to_cpu(get_unaligned((u_short *)(a))) @@ -1082,7 +1082,7 @@ } -static int __init +static int __devinit de4x5_hw_init(struct net_device *dev, u_long iobase, struct device *gendev) { char name[DE4X5_NAME_LENGTH + 1]; @@ -2132,7 +2132,7 @@ ** DECchips, we can find the base SROM irrespective of the BIOS scan direction. ** For single port cards this is a time waster... */ -static void __init +static void __devinit srom_search(struct net_device *dev, struct pci_dev *pdev) { u_char pb; @@ -2213,7 +2213,7 @@ ** kernels use the V0.535[n] drivers. */ -static int __init de4x5_pci_probe (struct pci_dev *pdev, +static int __devinit de4x5_pci_probe (struct pci_dev *pdev, const struct pci_device_id *ent) { u_char pb, pbus = 0, dev_num, dnum = 0, timer; diff -Nru a/drivers/net/wan/Kconfig b/drivers/net/wan/Kconfig --- a/drivers/net/wan/Kconfig Mon Sep 22 00:30:20 2003 +++ b/drivers/net/wan/Kconfig Mon Sep 22 00:30:20 2003 @@ -342,6 +342,30 @@ comment "X.25/LAPB support is disabled" depends on WAN && HDLC && (LAPB!=m || HDLC!=m) && LAPB!=y +config WANXL + tristate "SBE Inc. wanXL support" + depends on HDLC && PCI + help + This driver is for wanXL PCI cards made by SBE Inc. If you have + such a card, say Y here and see . + + If you want to compile the driver as a module ( = code which can be + inserted in and removed from the running kernel whenever you want), + say M here and read . The module + will be called wanxl. + + If unsure, say N here. + +config WANXL_BUILD_FIRMWARE + bool "rebuild wanXL firmware" + depends on WANXL + help + This option allows you to rebuild firmware run by the QUICC + processor. It requires as68k, ld68k and hexdump programs. + You should never need this option. + + If unsure, say N here. + config PC300 tristate "Cyclades-PC300 support (RS-232/V.35, X.21, T1/E1 boards)" depends on HDLC && PCI diff -Nru a/drivers/net/wan/Makefile b/drivers/net/wan/Makefile --- a/drivers/net/wan/Makefile Mon Sep 22 00:30:22 2003 +++ b/drivers/net/wan/Makefile Mon Sep 22 00:30:22 2003 @@ -66,3 +66,25 @@ endif obj-$(CONFIG_N2) += n2.o obj-$(CONFIG_C101) += c101.o +obj-$(CONFIG_WANXL) += wanxl.o + +ifeq ($(CONFIG_WANXL_BUILD_FIRMWARE),y) +ifeq ($(ARCH),m68k) + AS68K = $(AS) + LD68K = $(LD) +else + AS68K = as68k + LD68K = ld68k +endif + +quiet_cmd_build_wanxlfw = BLD FW $@ + cmd_build_wanxlfw = \ + $(CPP) -Wp,-MD,$(depfile) -Iinclude $(obj)/wanxlfw.S | $(AS68K) -m68360 -o $(obj)/wanxlfw.o; \ + $(LD68K) --oformat binary -Ttext 0x1000 $(obj)/wanxlfw.o -o $(obj)/wanxlfw.bin; \ + hexdump -ve '"\n" 16/1 "0x%02X,"' $(obj)/wanxlfw.bin | sed 's/0x ,//g;1s/^/static u8 firmware[]={/;$$s/,$$/\n};\n/' >$(obj)/wanxlfw.inc; \ + rm -f $(obj)/wanxlfw.bin $(obj)/wanxlfw.o + +$(obj)/wanxlfw.inc: $(obj)/wanxlfw.S + $(call if_changed_dep,build_wanxlfw) +targets += wanxlfw.inc +endif diff -Nru a/drivers/net/wan/comx-hw-comx.c b/drivers/net/wan/comx-hw-comx.c --- a/drivers/net/wan/comx-hw-comx.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/wan/comx-hw-comx.c Mon Sep 22 00:30:18 2003 @@ -51,7 +51,6 @@ #define VERSION "0.87" #include -#include #include #include #include diff -Nru a/drivers/net/wan/comx-hw-locomx.c b/drivers/net/wan/comx-hw-locomx.c --- a/drivers/net/wan/comx-hw-locomx.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/wan/comx-hw-locomx.c Mon Sep 22 00:30:23 2003 @@ -38,7 +38,6 @@ #include #include -#include #include #include #include diff -Nru a/drivers/net/wan/comx-hw-mixcom.c b/drivers/net/wan/comx-hw-mixcom.c --- a/drivers/net/wan/comx-hw-mixcom.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/wan/comx-hw-mixcom.c Mon Sep 22 00:30:25 2003 @@ -41,7 +41,6 @@ #include #include -#include #include #include #include diff -Nru a/drivers/net/wan/comx-hw-munich.c b/drivers/net/wan/comx-hw-munich.c --- a/drivers/net/wan/comx-hw-munich.c Mon Sep 22 00:30:19 2003 +++ b/drivers/net/wan/comx-hw-munich.c Mon Sep 22 00:30:19 2003 @@ -30,7 +30,6 @@ #include #include #include -#include #include #include #include diff -Nru a/drivers/net/wan/comx-proto-fr.c b/drivers/net/wan/comx-proto-fr.c --- a/drivers/net/wan/comx-proto-fr.c Mon Sep 22 00:30:20 2003 +++ b/drivers/net/wan/comx-proto-fr.c Mon Sep 22 00:30:20 2003 @@ -37,7 +37,6 @@ #define VERSION "0.73" #include -#include #include #include #include diff -Nru a/drivers/net/wan/comx-proto-lapb.c b/drivers/net/wan/comx-proto-lapb.c --- a/drivers/net/wan/comx-proto-lapb.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/wan/comx-proto-lapb.c Mon Sep 22 00:30:18 2003 @@ -24,7 +24,6 @@ #define VERSION "0.80" #include -#include #include #include #include diff -Nru a/drivers/net/wan/comx-proto-ppp.c b/drivers/net/wan/comx-proto-ppp.c --- a/drivers/net/wan/comx-proto-ppp.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/wan/comx-proto-ppp.c Mon Sep 22 00:30:25 2003 @@ -34,7 +34,6 @@ #define VERSION "0.23" #include -#include #include #include #include diff -Nru a/drivers/net/wan/comx.c b/drivers/net/wan/comx.c --- a/drivers/net/wan/comx.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/wan/comx.c Mon Sep 22 00:30:21 2003 @@ -55,7 +55,6 @@ #include #include -#include #include #include diff -Nru a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c --- a/drivers/net/wan/cosa.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/wan/cosa.c Mon Sep 22 00:30:18 2003 @@ -326,11 +326,11 @@ /* Ioctls */ static int cosa_start(struct cosa_data *cosa, int address); static int cosa_reset(struct cosa_data *cosa); -static int cosa_download(struct cosa_data *cosa, struct cosa_download *d); -static int cosa_readmem(struct cosa_data *cosa, struct cosa_download *d); +static int cosa_download(struct cosa_data *cosa, unsigned long a); +static int cosa_readmem(struct cosa_data *cosa, unsigned long a); /* COSA/SRP ROM monitor */ -static int download(struct cosa_data *cosa, char *data, int addr, int len); +static int download(struct cosa_data *cosa, const char *data, int addr, int len); static int startmicrocode(struct cosa_data *cosa, int address); static int readmem(struct cosa_data *cosa, char *data, int addr, int len); static int cosa_reset_and_read_id(struct cosa_data *cosa, char *id); @@ -1033,11 +1033,10 @@ } /* High-level function to download data into COSA memory. Calls download() */ -static inline int cosa_download(struct cosa_data *cosa, struct cosa_download *d) +static inline int cosa_download(struct cosa_data *cosa, unsigned long arg) { + struct cosa_download d; int i; - int addr, len; - char *code; if (cosa->usage > 1) printk(KERN_INFO "%s: WARNING: download of microcode requested with cosa->usage > 1 (%d). Odd things may happen.\n", @@ -1047,38 +1046,36 @@ cosa->name, cosa->firmware_status); return -EPERM; } - - if (verify_area(VERIFY_READ, d, sizeof(*d)) || - __get_user(addr, &(d->addr)) || - __get_user(len, &(d->len)) || - __get_user(code, &(d->code))) + + if (copy_from_user(&d, (void __user *) arg, sizeof(d))) return -EFAULT; - if (addr < 0 || addr > COSA_MAX_FIRMWARE_SIZE) + if (d.addr < 0 || d.addr > COSA_MAX_FIRMWARE_SIZE) return -EINVAL; - if (len < 0 || len > COSA_MAX_FIRMWARE_SIZE) + if (d.len < 0 || d.len > COSA_MAX_FIRMWARE_SIZE) return -EINVAL; + /* If something fails, force the user to reset the card */ cosa->firmware_status &= ~(COSA_FW_RESET|COSA_FW_DOWNLOAD); - if ((i=download(cosa, code, len, addr)) < 0) { + i = download(cosa, d.code, d.len, d.addr); + if (i < 0) { printk(KERN_NOTICE "cosa%d: microcode download failed: %d\n", cosa->num, i); return -EIO; } printk(KERN_INFO "cosa%d: downloading microcode - 0x%04x bytes at 0x%04x\n", - cosa->num, len, addr); + cosa->num, d.len, d.addr); cosa->firmware_status |= COSA_FW_RESET|COSA_FW_DOWNLOAD; return 0; } /* High-level function to read COSA memory. Calls readmem() */ -static inline int cosa_readmem(struct cosa_data *cosa, struct cosa_download *d) +static inline int cosa_readmem(struct cosa_data *cosa, unsigned long arg) { + struct cosa_download d; int i; - int addr, len; - char *code; if (cosa->usage > 1) printk(KERN_INFO "cosa%d: WARNING: readmem requested with " @@ -1090,22 +1087,20 @@ return -EPERM; } - if (verify_area(VERIFY_READ, d, sizeof(*d)) || - __get_user(addr, &(d->addr)) || - __get_user(len, &(d->len)) || - __get_user(code, &(d->code))) + if (copy_from_user(&d, (void __user *) arg, sizeof(d))) return -EFAULT; /* If something fails, force the user to reset the card */ cosa->firmware_status &= ~COSA_FW_RESET; - if ((i=readmem(cosa, code, len, addr)) < 0) { + i = readmem(cosa, d.code, d.len, d.addr); + if (i < 0) { printk(KERN_NOTICE "cosa%d: reading memory failed: %d\n", cosa->num, i); return -EIO; } printk(KERN_INFO "cosa%d: reading card memory - 0x%04x bytes at 0x%04x\n", - cosa->num, len, addr); + cosa->num, d.len, d.addr); cosa->firmware_status |= COSA_FW_RESET; return 0; } @@ -1171,11 +1166,12 @@ case COSAIODOWNLD: /* Download the firmware */ if (!capable(CAP_SYS_RAWIO)) return -EACCES; - return cosa_download(cosa, (struct cosa_download *)arg); + + return cosa_download(cosa, arg); case COSAIORMEM: if (!capable(CAP_SYS_RAWIO)) return -EACCES; - return cosa_readmem(cosa, (struct cosa_download *)arg); + return cosa_readmem(cosa, arg); case COSAIORTYPE: return cosa_gettype(cosa, (char *)arg); case COSAIORIDSTR: @@ -1405,7 +1401,7 @@ * by a single space. Monitor has to reply with a space. Now the download * begins. After the download monitor replies with "\r\n." (CR LF dot). */ -static int download(struct cosa_data *cosa, char *microcode, int length, int address) +static int download(struct cosa_data *cosa, const char *microcode, int length, int address) { int i; diff -Nru a/drivers/net/wan/cosa.h b/drivers/net/wan/cosa.h --- a/drivers/net/wan/cosa.h Mon Sep 22 00:30:21 2003 +++ b/drivers/net/wan/cosa.h Mon Sep 22 00:30:21 2003 @@ -73,19 +73,19 @@ #define COSAIORSET _IO('C',0xf0) /* Start microcode at given address */ -#define COSAIOSTRT _IOW('C',0xf1,sizeof(int)) +#define COSAIOSTRT _IOW('C',0xf1, int) /* Read the block from the device memory */ -#define COSAIORMEM _IOR('C',0xf2,sizeof(struct cosa_download *)) +#define COSAIORMEM _IOWR('C',0xf2, struct cosa_download) /* Write the block to the device memory (i.e. download the microcode) */ -#define COSAIODOWNLD _IOW('C',0xf2,sizeof(struct cosa_download *)) +#define COSAIODOWNLD _IOW('C',0xf2, struct cosa_download) /* Read the device type (one of "srp", "cosa", and "cosa8" for now) */ -#define COSAIORTYPE _IOR('C',0xf3,sizeof(char *)) +#define COSAIORTYPE _IOR('C',0xf3, char *) /* Read the device identification string */ -#define COSAIORIDSTR _IOR('C',0xf4,sizeof(char *)) +#define COSAIORIDSTR _IOR('C',0xf4, char *) /* Maximum length of the identification string. */ #define COSA_MAX_ID_STRING 128 @@ -100,7 +100,7 @@ #define COSAIONRCHANS _IO('C',0xf8) /* Set the driver for the bus-master operations */ -#define COSAIOBMSET _IOW('C', 0xf9, sizeof(unsigned short)) +#define COSAIOBMSET _IOW('C', 0xf9, unsigned short) #define COSA_BM_OFF 0 /* Bus-mastering off - use ISA DMA (default) */ #define COSA_BM_ON 1 /* Bus-mastering on - faster but untested */ diff -Nru a/drivers/net/wan/cycx_x25.c b/drivers/net/wan/cycx_x25.c --- a/drivers/net/wan/cycx_x25.c Mon Sep 22 00:30:19 2003 +++ b/drivers/net/wan/cycx_x25.c Mon Sep 22 00:30:19 2003 @@ -78,7 +78,6 @@ #define CYCLOMX_X25_DEBUG 1 -#include #include /* return codes */ #include /* ARPHRD_HWX25 */ #include /* printk(), and other useful stuff */ diff -Nru a/drivers/net/wan/dlci.c b/drivers/net/wan/dlci.c --- a/drivers/net/wan/dlci.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/wan/dlci.c Mon Sep 22 00:30:21 2003 @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include @@ -58,64 +57,9 @@ static const char version[] = "DLCI driver v0.35, 4 Jan 1997, mike.mclagan@linux.org"; static LIST_HEAD(dlci_devs); -static spinlock_t dlci_dev_lock = SPIN_LOCK_UNLOCKED; -static char *basename[16]; static void dlci_setup(struct net_device *); -/* allow FRAD's to register their name as a valid FRAD */ -int register_frad(const char *name) -{ - int i; - - if (!name) - return(-EINVAL); - - for (i=0;idevname); if (!slave) - return(-ENODEV); - - if (slave->type != ARPHRD_FRAD) { - dev_put(slave); - return(-EINVAL); - } - - /* check for registration */ - for (i=0;idevname, basename[i], strlen(basename[i])) == 0) && - (strlen(dlci->devname) > strlen(basename[i]))) - break; + return -ENODEV; - if (i == sizeof(basename) / sizeof(char *)) { - dev_put(slave); - return(-EINVAL); - } + if (slave->type != ARPHRD_FRAD || slave->priv == NULL) + goto err1; /* create device name */ master = alloc_netdev( sizeof(struct dlci_local), "dlci%d", dlci_setup); if (!master) { - dev_put(slave); - return(-ENOMEM); + err = -ENOMEM; + goto err1; } - err = register_netdev(master); - if (err < 0) { - dev_put(slave); - kfree(master); - return(err); + /* make sure same slave not already registered */ + rtnl_lock(); + list_for_each_entry(dlp, &dlci_devs, list) { + if (dlp->slave == slave) { + err = -EBUSY; + goto err2; + } } + err = dev_alloc_name(master, master->name); + if (err < 0) + goto err2; + *(short *)(master->dev_addr) = dlci->dlci; dlp = (struct dlci_local *) master->priv; @@ -461,22 +397,27 @@ dlp->master = master; flp = slave->priv; - err = flp ? (*flp->assoc)(slave, master) : -EINVAL; + err = (*flp->assoc)(slave, master); if (err < 0) - { - unregister_netdev(master); - dev_put(slave); - free_netdev(master); - return(err); - } + goto err2; + + err = register_netdevice(master); + if (err < 0) + goto err2; strcpy(dlci->devname, master->name); - spin_lock_bh(&dlci_dev_lock); list_add(&dlp->list, &dlci_devs); - spin_unlock_bh(&dlci_dev_lock); + rtnl_unlock(); return(0); + + err2: + rtnl_unlock(); + kfree(master); + err1: + dev_put(slave); + return(err); } static int dlci_del(struct dlci_add *dlci) @@ -499,21 +440,18 @@ slave = dlp->slave; flp = slave->priv; + rtnl_lock(); err = (*flp->deassoc)(slave, master); - if (err) - return(err); - + if (!err) { + list_del(&dlp->list); - spin_lock_bh(&dlci_dev_lock); - list_del(&dlp->list); - spin_unlock_bh(&dlci_dev_lock); + unregister_netdevice(master); - unregister_netdev(master); - - dev_put(slave); - free_netdev(master); + dev_put(slave); + } + rtnl_unlock(); - return(0); + return(err); } static int dlci_ioctl(unsigned int cmd, void *arg) @@ -560,6 +498,7 @@ dev->hard_header = dlci_header; dev->get_stats = dlci_get_stats; dev->change_mtu = dlci_change_mtu; + dev->destructor = free_netdev; dlp->receive = dlci_receive; @@ -569,31 +508,54 @@ } -int __init init_dlci(void) +/* if slave is unregistering, then cleanup master */ +static int dlci_dev_event(struct notifier_block *unused, + unsigned long event, void *ptr) +{ + struct net_device *dev = (struct net_device *) ptr; + + if (event == NETDEV_UNREGISTER) { + struct dlci_local *dlp; + + list_for_each_entry(dlp, &dlci_devs, list) { + if (dlp->slave == dev) { + list_del(&dlp->list); + unregister_netdevice(dlp->master); + dev_put(dlp->slave); + break; + } + } + } + return NOTIFY_DONE; +} + +static struct notifier_block dlci_notifier = { + .notifier_call = dlci_dev_event, +}; + +static int __init init_dlci(void) { - int i; dlci_ioctl_set(dlci_ioctl); + register_netdevice_notifier(&dlci_notifier); printk("%s.\n", version); - for(i=0;imaster); + unregister_netdevice(dlp->master); dev_put(dlp->slave); - free_netdev(dlp->master); } - + rtnl_unlock(); } module_init(init_dlci); diff -Nru a/drivers/net/wan/dscc4.c b/drivers/net/wan/dscc4.c --- a/drivers/net/wan/dscc4.c Mon Sep 22 00:30:20 2003 +++ b/drivers/net/wan/dscc4.c Mon Sep 22 00:30:20 2003 @@ -80,7 +80,6 @@ * - misc crapectomy. */ -#include #include #include #include @@ -693,7 +692,7 @@ kfree(ppriv); } -static int __init dscc4_init_one(struct pci_dev *pdev, +static int __devinit dscc4_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) { struct dscc4_pci_priv *priv; diff -Nru a/drivers/net/wan/lmc/lmc_ver.h b/drivers/net/wan/lmc/lmc_ver.h --- a/drivers/net/wan/lmc/lmc_ver.h Mon Sep 22 00:30:19 2003 +++ b/drivers/net/wan/lmc/lmc_ver.h Mon Sep 22 00:30:19 2003 @@ -1,3 +1,5 @@ +#include + #ifndef _IF_LMC_LINUXVER_ #define _IF_LMC_LINUXVER_ diff -Nru a/drivers/net/wan/pc300_drv.c b/drivers/net/wan/pc300_drv.c --- a/drivers/net/wan/pc300_drv.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/wan/pc300_drv.c Mon Sep 22 00:30:24 2003 @@ -227,7 +227,6 @@ #include #include #include -#include #include #include diff -Nru a/drivers/net/wan/pc300_tty.c b/drivers/net/wan/pc300_tty.c --- a/drivers/net/wan/pc300_tty.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/wan/pc300_tty.c Mon Sep 22 00:30:21 2003 @@ -37,7 +37,6 @@ */ #include -#include #include #include #include diff -Nru a/drivers/net/wan/sbni.c b/drivers/net/wan/sbni.c --- a/drivers/net/wan/sbni.c Mon Sep 22 00:30:20 2003 +++ b/drivers/net/wan/sbni.c Mon Sep 22 00:30:20 2003 @@ -53,6 +53,7 @@ #include #include #include +#include #include @@ -337,13 +338,12 @@ outb( 0, ioaddr + CSR0 ); if( irq < 2 ) { - unsigned long irq_mask, delay; + unsigned long irq_mask; irq_mask = probe_irq_on(); outb( EN_INT | TR_REQ, ioaddr + CSR0 ); outb( PR_RES, ioaddr + CSR1 ); - delay = jiffies + HZ/20; - while (time_before(jiffies, delay)) ; + mdelay(50); irq = probe_irq_off(irq_mask); outb( 0, ioaddr + CSR0 ); @@ -1562,13 +1562,13 @@ static u32 calc_crc32( u32 crc, u8 *p, u32 len ) { - register u32 _crc __asm ( "ax" ); + register u32 _crc; _crc = crc; __asm __volatile ( "xorl %%ebx, %%ebx\n" - "movl %1, %%esi\n" - "movl %2, %%ecx\n" + "movl %2, %%esi\n" + "movl %3, %%ecx\n" "movl $crc32tab, %%edi\n" "shrl $2, %%ecx\n" "jz 1f\n" @@ -1604,7 +1604,7 @@ "jnz 0b\n" "1:\n" - "movl %2, %%ecx\n" + "movl %3, %%ecx\n" "andl $3, %%ecx\n" "jz 2f\n" @@ -1629,9 +1629,9 @@ "xorb 2(%%esi), %%bl\n" "xorl (%%edi,%%ebx,4), %%eax\n" "2:\n" - : - : "a" (_crc), "g" (p), "g" (len) - : "ax", "bx", "cx", "dx", "si", "di" + : "=a" (_crc) + : "0" (_crc), "g" (p), "g" (len) + : "bx", "cx", "dx", "si", "di" ); return _crc; diff -Nru a/drivers/net/wan/sdla.c b/drivers/net/wan/sdla.c --- a/drivers/net/wan/sdla.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/wan/sdla.c Mon Sep 22 00:30:25 2003 @@ -60,8 +60,6 @@ static const char* version = "SDLA driver v0.30, 12 Sep 1996, mike.mclagan@linux.org"; -static const char* devname = "sdla"; - static unsigned int valid_port[] __initdata = { 0x250, 0x270, 0x280, 0x300, 0x350, 0x360, 0x380, 0x390}; static unsigned int valid_mem[] __initdata = { @@ -1626,41 +1624,16 @@ static void setup_sdla(struct net_device *dev) { + struct frad_local *flp = dev->priv; + + netdev_boot_setup_check(dev); + + SET_MODULE_OWNER(dev); dev->flags = 0; dev->type = 0xFFFF; dev->hard_header_len = 0; dev->addr_len = 0; dev->mtu = SDLA_MAX_MTU; -} - -static int frad_registered; - -struct net_device * __init sdla_init(void) -{ - struct net_device *dev; - struct frad_local *flp; - int err = -ENOMEM; - - if (!frad_registered) { - err = register_frad(devname); - if (err) { - printk(KERN_ERR "%s: frad registration failed %d\n", - devname, err); - return ERR_PTR(err); - } - frad_registered = 1; - printk("%s.\n", version); - } - - - dev = alloc_netdev(sizeof(struct frad_local), "sdla0", setup_sdla); - if (!dev) - goto out; - - SET_MODULE_OWNER(dev); - netdev_boot_setup_check(dev); - - flp = dev->priv; dev->open = sdla_open; dev->stop = sdla_close; @@ -1680,48 +1653,41 @@ flp->timer.expires = 1; flp->timer.data = (unsigned long) dev; flp->timer.function = sdla_poll; - - err = register_netdev(dev); - if (err) - goto out1; - return dev; -out1: - kfree(dev); -out: - return ERR_PTR(err); } -#ifdef MODULE -static struct net_device *sdla0; +static struct net_device *sdla; static int __init init_sdla(void) { - int result = 0; + int err; - sdla0 = sdla_init(); - if (IS_ERR(sdla0)) - result = PTR_ERR(sdla0); + printk("%s.\n", version); - return result; + sdla = alloc_netdev(sizeof(struct frad_local), "sdla0", setup_sdla); + if (!sdla) + return -ENOMEM; + + err = register_netdev(sdla); + if (err) + free_netdev(sdla); + + return err; } static void __exit exit_sdla(void) { struct frad_local *flp; - unregister_netdev(sdla0); - if (sdla0->irq) - free_irq(sdla0->irq, sdla0); + unregister_netdev(sdla); + if (sdla->irq) + free_irq(sdla->irq, sdla); - flp = sdla0->priv; + flp = sdla->priv; del_timer_sync(&flp->timer); - free_netdev(sdla0); - - unregister_frad(devname); + free_netdev(sdla); } MODULE_LICENSE("GPL"); module_init(init_sdla); module_exit(exit_sdla); -#endif diff -Nru a/drivers/net/wan/sdla_chdlc.c b/drivers/net/wan/sdla_chdlc.c --- a/drivers/net/wan/sdla_chdlc.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/wan/sdla_chdlc.c Mon Sep 22 00:30:21 2003 @@ -49,7 +49,6 @@ *****************************************************************************/ #include -#include #include /* printk(), and other useful stuff */ #include /* offsetof(), etc. */ #include /* return codes */ @@ -560,8 +559,8 @@ if (chdlc_set_intr_mode(card, APP_INT_ON_TIMER)){ - printk (KERN_INFO "%s: - Failed to set interrupt triggers!\n", + printk (KERN_INFO "%s: " + "Failed to set interrupt triggers!\n", card->devname); return -EIO; } diff -Nru a/drivers/net/wan/sdla_fr.c b/drivers/net/wan/sdla_fr.c --- a/drivers/net/wan/sdla_fr.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/wan/sdla_fr.c Mon Sep 22 00:30:25 2003 @@ -139,7 +139,6 @@ *****************************************************************************/ #include -#include #include /* printk(), and other useful stuff */ #include /* offsetof(), etc. */ #include /* return codes */ @@ -147,6 +146,7 @@ #include /* kmalloc(), kfree() */ #include /* WAN router definitions */ #include /* WANPIPE common user API definitions */ +#include #include /* ARPHRD_* defines */ #include /* htons(), etc. */ #include /* for inb(), outb(), etc. */ @@ -247,7 +247,7 @@ /* Polling task queue. Each interface * has its own task queue, which is used * to defer events from the interrupt */ - struct tq_struct fr_poll_task; + struct work_struct fr_poll_work; struct timer_list fr_arp_timer; u32 ip_local; @@ -987,9 +987,7 @@ * We need a poll routine for each network * interface. */ - chan->fr_poll_task.sync = 0; - chan->fr_poll_task.routine = (void *)(void *)fr_poll; - chan->fr_poll_task.data = dev; + INIT_WORK(&chan->fr_poll_work, (void *)fr_poll, dev); init_timer(&chan->fr_arp_timer); chan->fr_arp_timer.data=(unsigned long)dev; @@ -1212,9 +1210,7 @@ /* Initialize the task queue */ chan->tq_working=0; - chan->common.wanpipe_task.sync = 0; - chan->common.wanpipe_task.routine = (void *)(void *)fr_bh; - chan->common.wanpipe_task.data = dev; + INIT_WORK(&chan->common.wanpipe_work, (void *)fr_bh, dev); /* Allocate and initialize BH circular buffer */ chan->bh_head = kmalloc((sizeof(bh_data_t)*MAX_BH_BUFF),GFP_ATOMIC); @@ -2178,7 +2174,7 @@ } - /* Send a packed up the IP stack */ + /* Send a packet up the IP stack */ skb->dev->last_rx = jiffies; netif_rx(skb); ++chan->drvstats_rx_intr.rx_intr_bfr_passed_to_stack; @@ -2216,8 +2212,8 @@ * dlci number. * 2. Check that network interface is up and * properly setup. - * 3. Check for a buffered packed. - * 4. Transmit the packed. + * 3. Check for a buffered packet. + * 4. Transmit the packet. * 5. If we are in WANPIPE mode, mark the * NET_BH handler. * 6. If we are in API mode, kick @@ -4359,8 +4355,8 @@ * bh_enqueue * * Description: - * Insert a received packed into a circular - * rx queue. This packed will be picked up + * Insert a received packet into a circular + * rx queue. This packet will be picked up * by fr_bh() and sent up the stack to the * user. * @@ -4411,8 +4407,7 @@ static void trigger_fr_bh (fr_channel_t *chan) { if (!test_and_set_bit(0,&chan->tq_working)){ - wanpipe_queue_tq(&chan->common.wanpipe_task); - wanpipe_mark_bh(); + wanpipe_queue_work(&chan->common.wanpipe_work); } } @@ -4435,10 +4430,10 @@ * card into an skb buffer, the skb buffer * is appended to a circular BH buffer. * Then the interrupt kicks fr_bh() to finish the - * job at a later time (no within the interrupt). + * job at a later time (not within the interrupt). * * Usage: - * Interrupts use this to defer a taks to + * Interrupts use this to defer a task to * a polling routine. * */ @@ -4527,7 +4522,7 @@ static void trigger_fr_poll(struct net_device *dev) { fr_channel_t* chan = dev->priv; - schedule_task(&chan->fr_poll_task); + schedule_work(&chan->fr_poll_work); return; } diff -Nru a/drivers/net/wan/sdla_ft1.c b/drivers/net/wan/sdla_ft1.c --- a/drivers/net/wan/sdla_ft1.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/wan/sdla_ft1.c Mon Sep 22 00:30:18 2003 @@ -21,7 +21,6 @@ *****************************************************************************/ #include -#include #include /* printk(), and other useful stuff */ #include /* offsetof(), etc. */ #include /* return codes */ diff -Nru a/drivers/net/wan/sdla_ppp.c b/drivers/net/wan/sdla_ppp.c --- a/drivers/net/wan/sdla_ppp.c Mon Sep 22 00:30:19 2003 +++ b/drivers/net/wan/sdla_ppp.c Mon Sep 22 00:30:19 2003 @@ -91,7 +91,6 @@ *****************************************************************************/ #include -#include #include /* printk(), and other useful stuff */ #include /* offsetof(), etc. */ #include /* return codes */ diff -Nru a/drivers/net/wan/sdla_x25.c b/drivers/net/wan/sdla_x25.c --- a/drivers/net/wan/sdla_x25.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/wan/sdla_x25.c Mon Sep 22 00:30:23 2003 @@ -82,7 +82,6 @@ *=====================================================*/ #include -#include #include /* printk(), and other useful stuff */ #include /* offsetof(), etc. */ #include /* return codes */ @@ -91,6 +90,7 @@ #include /* kmalloc(), kfree() */ #include /* WAN router definitions */ #include /* WANPIPE common user API definitions */ +#include #include /* htons(), etc. */ #include #include /* Experimental delay */ @@ -790,9 +790,7 @@ init_global_statistics(card); - card->u.x.x25_poll_task.sync=0; - card->u.x.x25_poll_task.routine = (void*)(void*)wpx_poll; - card->u.x.x25_poll_task.data = card; + INIT_WORK(&card->u.x.x25_poll_work, (void *)wpx_poll, card); init_timer(&card->u.x.x25_timer); card->u.x.x25_timer.data = (unsigned long)card; @@ -1175,7 +1173,7 @@ * Warnings: None * * Return: 0 Ok - * <0 Failur: Interface will not come up. + * <0 Failure: Interface will not come up. */ static int if_open(struct net_device* dev) @@ -1190,10 +1188,8 @@ chan->tq_working = 0; - /* Initialize the task queue */ - chan->common.wanpipe_task.sync = 0; - chan->common.wanpipe_task.routine = (void *)(void *)x25api_bh; - chan->common.wanpipe_task.data = dev; + /* Initialize the workqueue */ + INIT_WORK(&chan->common.wanpipe_work, (void *)x25api_bh, dev); /* Allocate and initialize BH circular buffer */ /* Add 1 to MAX_BH_BUFF so we don't have test with (MAX_BH_BUFF-1) */ @@ -1732,8 +1728,7 @@ chan->rx_skb = NULL; if (!test_and_set_bit(0, &chan->tq_working)){ - wanpipe_queue_tq(&chan->common.wanpipe_task); - wanpipe_mark_bh(); + wanpipe_queue_work(&chan->common.wanpipe_work); } return; } @@ -2227,7 +2222,7 @@ /*==================================================================== * Main polling routine. - * This routine is repeatedly called by the WANPIPE 'thead' to allow for + * This routine is repeatedly called by the WANPIPE 'thread' to allow for * time-dependent housekeeping work. * * Notes: @@ -2274,7 +2269,7 @@ static void trigger_x25_poll(sdla_t *card) { - schedule_task(&card->u.x.x25_poll_task); + schedule_work(&card->u.x.x25_poll_work); } /*==================================================================== diff -Nru a/drivers/net/wan/sdladrv.c b/drivers/net/wan/sdladrv.c --- a/drivers/net/wan/sdladrv.c Mon Sep 22 00:30:19 2003 +++ b/drivers/net/wan/sdladrv.c Mon Sep 22 00:30:19 2003 @@ -91,7 +91,6 @@ #if defined(_LINUX_) /****** Linux *******************************/ #include -#include #include /* printk(), and other useful stuff */ #include /* offsetof(), etc. */ #include /* return codes */ @@ -201,7 +200,7 @@ * Note: All data must be explicitly initialized!!! */ -static struct pci_device_id sdladrv_pci_tbl[] __initdata = { +static struct pci_device_id sdladrv_pci_tbl[] = { { V3_VENDOR_ID, V3_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, }, { } /* Terminating entry */ }; @@ -351,7 +350,7 @@ } module_init(sdladrv_init); -module_cleanup(sdladrv_cleanup); +module_exit(sdladrv_cleanup); #endif /******* Kernel APIs ********************************************************/ diff -Nru a/drivers/net/wan/sdlamain.c b/drivers/net/wan/sdlamain.c --- a/drivers/net/wan/sdlamain.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/wan/sdlamain.c Mon Sep 22 00:30:23 2003 @@ -46,7 +46,6 @@ * Jan 02, 1997 Gene Kozin Initial version. *****************************************************************************/ -#include #include /* OS configuration options */ #include /* offsetof(), etc. */ #include /* return codes */ @@ -189,7 +188,6 @@ /* Miscellaneous functions */ STATIC irqreturn_t sdla_isr (int irq, void* dev_id, struct pt_regs *regs); static void release_hw (sdla_t *card); -static void run_wanpipe_tq (unsigned long); static int check_s508_conflicts (sdla_t* card,wandev_conf_t* conf, int*); static int check_s514_conflicts (sdla_t* card,wandev_conf_t* conf, int*); @@ -203,29 +201,21 @@ static char drvname[] = "wanpipe"; static char fullname[] = "WANPIPE(tm) Multiprotocol Driver"; static char copyright[] = "(c) 1995-2000 Sangoma Technologies Inc."; -static int ncards = 0; -static sdla_t* card_array = NULL; /* adapter data space */ +static int ncards; +static sdla_t* card_array; /* adapter data space */ -/* Wanpipe's own task queue, used for all API's. - * All protocol specific tasks will be instered - * into "wanpipe_tq_custom" task_queue. - - * On each rx_interrupt, the whole task queue - * (wanpipe_tq_custom) will be queued into - * IMMEDIATE_BH via wanpipe_mark_bh() call. - - * The IMMEDIATE_BH will execute run_wanpipe_tq() - * function, which will execute all pending, - * tasks in wanpipe_tq_custom queue */ +/* Wanpipe's own workqueue, used for all API's. + * All protocol specific tasks will be inserted + * into the "wanpipe_wq" workqueue. -DECLARE_TASK_QUEUE(wanpipe_tq_custom); -static struct tq_struct wanpipe_tq_task = -{ - .routine = (void (*)(void *)) run_wanpipe_tq, - .data = &wanpipe_tq_custom -}; + * The kernel workqueue mechanism will execute + * all pending tasks in the "wanpipe_wq" workqueue. + */ -static int wanpipe_bh_critical=0; +struct workqueue_struct *wanpipe_wq; +DECLARE_WORK(wanpipe_work, NULL, NULL); + +static int wanpipe_bh_critical; /******* Kernel Loadable Module Entry Points ********************************/ @@ -249,6 +239,10 @@ printk(KERN_INFO "%s v%u.%u %s\n", fullname, DRV_VERSION, DRV_RELEASE, copyright); + wanpipe_wq = create_workqueue("wanpipe_wq"); + if (!wanpipe_wq) + return -ENOMEM; + /* Probe for wanpipe cards and return the number found */ printk(KERN_INFO "wanpipe: Probing for WANPIPE hardware.\n"); ncards = wanpipe_hw_probe(); @@ -256,13 +250,16 @@ printk(KERN_INFO "wanpipe: Allocating maximum %i devices: wanpipe%i - wanpipe%i.\n",ncards,1,ncards); }else{ printk(KERN_INFO "wanpipe: No S514/S508 cards found, unloading modules!\n"); + destroy_workqueue(wanpipe_wq); return -ENODEV; } /* Verify number of cards and allocate adapter data space */ card_array = kmalloc(sizeof(sdla_t) * ncards, GFP_KERNEL); - if (card_array == NULL) + if (card_array == NULL) { + destroy_workqueue(wanpipe_wq); return -ENOMEM; + } memset(card_array, 0, sizeof(sdla_t) * ncards); @@ -292,6 +289,7 @@ ncards = cnt; /* adjust actual number of cards */ }else { kfree(card_array); + destroy_workqueue(wanpipe_wq); printk(KERN_INFO "IN Init Module: NO Cards registered\n"); err = -ENODEV; } @@ -316,6 +314,7 @@ sdla_t* card = &card_array[i]; unregister_wan_device(card->devname); } + destroy_workqueue(wanpipe_wq); kfree(card_array); printk(KERN_INFO "\nwanpipe: WANPIPE Modules Unloaded.\n"); @@ -673,15 +672,20 @@ /* Make sure I/O port region is available only if we are the - * master device. If we are running in piggibacking mode, - * we will use the resources of the master card */ - if (check_region(conf->ioport, SDLA_MAXIORANGE) && - !card->wandev.piggyback) { - printk(KERN_INFO - "%s: I/O region 0x%X - 0x%X is in use!\n", - card->wandev.name, conf->ioport, - conf->ioport + SDLA_MAXIORANGE); - return -EINVAL; + * master device. If we are running in piggybacking mode, + * we will use the resources of the master card. */ + if (!card->wandev.piggyback) { + struct resource *rr = + request_region(conf->ioport, SDLA_MAXIORANGE, "sdlamain"); + release_region(conf->ioport, SDLA_MAXIORANGE); + + if (!rr) { + printk(KERN_INFO + "%s: I/O region 0x%X - 0x%X is in use!\n", + card->wandev.name, conf->ioport, + conf->ioport + SDLA_MAXIORANGE - 1); + return -EINVAL; + } } return 0; @@ -1029,7 +1033,6 @@ STATIC irqreturn_t sdla_isr (int irq, void* dev_id, struct pt_regs *regs) { #define card ((sdla_t*)dev_id) - int handled = 0; if(card->hw.type == SDLA_S514) { /* handle interrrupt on S514 */ u32 int_status; @@ -1210,6 +1213,7 @@ } return NULL; } + sdla_t * wanpipe_find_card_num (int num) { if (num < 1 || num > ncards) @@ -1218,34 +1222,19 @@ return &card_array[num]; } - -static void run_wanpipe_tq (unsigned long data) -{ - task_queue *tq_queue = (task_queue *)data; - if (test_and_set_bit(2,(void*)&wanpipe_bh_critical)) - printk(KERN_INFO "CRITICAL IN RUNNING TASK QUEUE\n"); - run_task_queue (tq_queue); - clear_bit(2,(void*)&wanpipe_bh_critical); - -} - -void wanpipe_queue_tq (struct tq_struct *bh_pointer) +/* + * @work_pointer: work_struct to be done; + * should already have PREPARE_WORK() or + * INIT_WORK() done on it by caller; + */ +void wanpipe_queue_work (struct work_struct *work_pointer) { - if (test_and_set_bit(1,(void*)&wanpipe_bh_critical)) - printk(KERN_INFO "CRITICAL IN QUEUING TASK\n"); + if (test_and_set_bit(1, (void*)&wanpipe_bh_critical)) + printk(KERN_INFO "CRITICAL IN QUEUING WORK\n"); - queue_task(bh_pointer,&wanpipe_tq_custom); + queue_work(wanpipe_wq, work_pointer); clear_bit(1,(void*)&wanpipe_bh_critical); } - -void wanpipe_mark_bh (void) -{ - if (!test_and_set_bit(0,(void*)&wanpipe_bh_critical)){ - queue_task(&wanpipe_tq_task,&tq_immediate); - mark_bh(IMMEDIATE_BH); - clear_bit(0,(void*)&wanpipe_bh_critical); - } -} void wakeup_sk_bh(struct net_device *dev) { diff -Nru a/drivers/net/wan/sealevel.c b/drivers/net/wan/sealevel.c --- a/drivers/net/wan/sealevel.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/wan/sealevel.c Mon Sep 22 00:30:23 2003 @@ -31,7 +31,6 @@ struct slvl_device { - void *if_ptr; /* General purpose pointer (used by SPPP) */ struct z8530_channel *chan; struct ppp_device netdev; int channel; @@ -40,7 +39,7 @@ struct slvl_board { - struct slvl_device dev[2]; + struct slvl_device *dev[2]; struct z8530_dev board; int iobase; }; @@ -119,7 +118,6 @@ * Go go go */ netif_start_queue(d); - MOD_INC_USE_COUNT; return 0; } @@ -153,7 +151,6 @@ z8530_sync_close(d, slvl->chan); break; } - MOD_DEC_USE_COUNT; return 0; } @@ -202,48 +199,79 @@ return 0; } + +static void slvl_setup(struct net_device *d) +{ + d->open = sealevel_open; + d->stop = sealevel_close; + d->hard_start_xmit = sealevel_queue_xmit; + d->get_stats = sealevel_get_stats; + d->set_multicast_list = NULL; + d->do_ioctl = sealevel_ioctl; + d->neigh_setup = sealevel_neigh_setup_dev; + d->set_mac_address = NULL; + +} + +static inline struct slvl_device *slvl_alloc(int iobase, int irq) +{ + struct net_device *d; + struct slvl_device *sv; + + d = alloc_netdev(sizeof(struct slvl_device), "hdlc%d", + slvl_setup); + + if (!d) + return NULL; + + sv = d->priv; + sv->netdev.dev = d; + d->base_addr = iobase; + d->irq = irq; + + sppp_attach(&sv->netdev); + return sv; +} + + /* - * Description block for a Comtrol Hostess SV11 card + * Allocate and setup Sealevel board. */ -static struct slvl_board *slvl_init(int iobase, int irq, int txdma, int rxdma, int slow) +static __init struct slvl_board *slvl_init(int iobase, int irq, + int txdma, int rxdma, int slow) { struct z8530_dev *dev; - struct slvl_device *sv; struct slvl_board *b; - int u; /* * Get the needed I/O space */ - + if(!request_region(iobase, 8, "Sealevel 4021")) { printk(KERN_WARNING "sealevel: I/O 0x%X already in use.\n", iobase); return NULL; } - b=(struct slvl_board *)kmalloc(sizeof(struct slvl_board), GFP_KERNEL); + b = kmalloc(sizeof(struct slvl_board), GFP_KERNEL); if(!b) goto fail3; - - memset(b, 0, sizeof(*sv)); - b->dev[0].chan = &b->board.chanA; - b->dev[0].if_ptr = &b->dev[0].netdev; - b->dev[0].netdev.dev=(struct net_device *) - kmalloc(sizeof(struct net_device), GFP_KERNEL); - if(!b->dev[0].netdev.dev) + memset(b, 0, sizeof(*b)); + if (!(b->dev[0]= slvl_alloc(iobase, irq))) goto fail2; - b->dev[1].chan = &b->board.chanB; - b->dev[1].if_ptr = &b->dev[1].netdev; - b->dev[1].netdev.dev=(struct net_device *) - kmalloc(sizeof(struct net_device), GFP_KERNEL); - if(!b->dev[1].netdev.dev) + b->dev[0]->chan = &b->board.chanA; + b->dev[0]->channel = 0; + + if (!(b->dev[1] = slvl_alloc(iobase, irq))) goto fail1_0; - dev=&b->board; + b->dev[1]->chan = &b->board.chanB; + b->dev[1]->channel = 1; + + dev = &b->board; /* * Stuff in the I/O addressing @@ -287,8 +315,8 @@ dev->irq=irq; dev->chanA.private=&b->dev[0]; dev->chanB.private=&b->dev[1]; - dev->chanA.netdevice=b->dev[0].netdev.dev; - dev->chanB.netdevice=b->dev[1].netdev.dev; + dev->chanA.netdevice=b->dev[0]->netdev.dev; + dev->chanB.netdevice=b->dev[1]->netdev.dev; dev->chanA.dev=dev; dev->chanB.dev=dev; @@ -329,55 +357,18 @@ enable_irq(irq); - for(u=0; u<2; u++) - { - sv=&b->dev[u]; - sv->channel = u; - - if(dev_alloc_name(sv->chan->netdevice,"hdlc%d")>=0) - { - struct net_device *d=sv->chan->netdevice; - - /* - * Initialise the PPP components - */ - sppp_attach(&sv->netdev); - - /* - * Local fields - */ - - d->base_addr = iobase; - d->irq = irq; - d->priv = sv; - d->init = NULL; - - d->open = sealevel_open; - d->stop = sealevel_close; - d->hard_start_xmit = sealevel_queue_xmit; - d->get_stats = sealevel_get_stats; - d->set_multicast_list = NULL; - d->do_ioctl = sealevel_ioctl; - d->neigh_setup = sealevel_neigh_setup_dev; - d->set_mac_address = NULL; + if (register_netdev(b->dev[0]->netdev.dev)) + goto dmafail2; - if(register_netdev(d)==-1) - { - printk(KERN_ERR "%s: unable to register device.\n", - d->name); - goto fail_unit; - } + if (register_netdev(b->dev[1]->netdev.dev)) + goto fail_unit; - break; - } - } z8530_describe(dev, "I/O", iobase); dev->active=1; return b; fail_unit: - if(u==1) - unregister_netdev(b->dev[0].chan->netdevice); + unregister_netdev(b->dev[0]->netdev.dev); dmafail2: free_dma(dev->chanA.rxdma); @@ -386,9 +377,9 @@ fail: free_irq(irq, dev); fail1_1: - kfree(b->dev[1].netdev.dev); + free_netdev(b->dev[1]->netdev.dev); fail1_0: - kfree(b->dev[0].netdev.dev); + free_netdev(b->dev[0]->netdev.dev); fail2: kfree(b); fail3: @@ -396,7 +387,7 @@ return NULL; } -static void slvl_shutdown(struct slvl_board *b) +static void __exit slvl_shutdown(struct slvl_board *b) { int u; @@ -404,8 +395,11 @@ for(u=0; u<2; u++) { - sppp_detach(b->dev[u].netdev.dev); - unregister_netdev(b->dev[u].netdev.dev); + struct net_device *d = b->dev[u]->netdev.dev; + sppp_detach(d); + + unregister_netdev(d); + free_netdev(d); } free_irq(b->board.irq, &b->board); @@ -416,7 +410,6 @@ release_region(b->iobase, 8); } -#ifdef MODULE static int io=0x238; static int txdma=1; @@ -441,20 +434,22 @@ static struct slvl_board *slvl_unit; -int init_module(void) +static int __init slvl_init_module(void) { +#ifdef MODULE printk(KERN_INFO "SeaLevel Z85230 Synchronous Driver v 0.02.\n"); - printk(KERN_INFO "(c) Copyright 1998, Building Number Three Ltd.\n"); - if((slvl_unit=slvl_init(io,irq, txdma, rxdma, slow))==NULL) - return -ENODEV; - return 0; + printk(KERN_INFO "(c) Copyright 1998, Building Number Three Ltd.\n"); +#endif + slvl_unit = slvl_init(io, irq, txdma, rxdma, slow); + + return slvl_unit ? 0 : -ENODEV; } -void cleanup_module(void) +static void __exit slvl_cleanup_module(void) { if(slvl_unit) slvl_shutdown(slvl_unit); } -#endif - +module_init(slvl_init_module); +module_exit(slvl_cleanup_module); diff -Nru a/drivers/net/wan/wanpipe_multppp.c b/drivers/net/wan/wanpipe_multppp.c --- a/drivers/net/wan/wanpipe_multppp.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/wan/wanpipe_multppp.c Mon Sep 22 00:30:25 2003 @@ -18,7 +18,6 @@ *****************************************************************************/ #include -#include #include /* printk(), and other useful stuff */ #include /* offsetof(), etc. */ #include /* return codes */ diff -Nru a/drivers/net/wan/wanxl.c b/drivers/net/wan/wanxl.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/net/wan/wanxl.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,836 @@ +/* + * wanXL serial card driver for Linux + * host part + * + * Copyright (C) 2003 Krzysztof Halasa + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License + * as published by the Free Software Foundation. + * + * Status: + * - Only DTE (external clock) support with NRZ and NRZI encodings + * - wanXL100 will require minor driver modifications, no access to hw + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "wanxl.h" + +static const char* version = "wanXL serial card driver version: 0.46"; + +#define PLX_CTL_RESET 0x40000000 /* adapter reset */ + +#undef DEBUG_PKT +#define DEBUG_PCI + +/* MAILBOX #1 - PUTS COMMANDS */ +#define MBX1_CMD_ABORTJ 0x85000000 /* Abort and Jump */ +#ifdef __LITTLE_ENDIAN +#define MBX1_CMD_BSWAP 0x8C000001 /* little-endian Byte Swap Mode */ +#else +#define MBX1_CMD_BSWAP 0x8C000000 /* big-endian Byte Swap Mode */ +#endif + +/* MAILBOX #2 - DRAM SIZE */ +#define MBX2_MEMSZ_MASK 0xFFFF0000 /* PUTS Memory Size Register mask */ + + +typedef struct { + hdlc_device hdlc; /* HDLC device struct - must be first */ + struct card_t *card; + spinlock_t lock; /* for wanxl_xmit */ + int node; /* physical port #0 - 3 */ + unsigned int clock_type; + int tx_in, tx_out; + struct sk_buff *tx_skbs[TX_BUFFERS]; +}port_t; + + +typedef struct { + desc_t rx_descs[RX_QUEUE_LENGTH]; + port_status_t port_status[4]; +}card_status_t; + + +typedef struct card_t { + int n_ports; /* 1, 2 or 4 ports */ + u8 irq; + + u8 *plx; /* PLX PCI9060 virtual base address */ + struct pci_dev *pdev; /* for pdev->slot_name */ + port_t *ports[4]; + int rx_in; + struct sk_buff *rx_skbs[RX_QUEUE_LENGTH]; + card_status_t *status; /* shared between host and card */ + dma_addr_t status_address; +}card_t; + + + +static inline port_t* hdlc_to_port(hdlc_device *hdlc) +{ + return (port_t*)hdlc; +} + + +static inline port_t* dev_to_port(struct net_device *dev) +{ + return hdlc_to_port(dev_to_hdlc(dev)); +} + + +static inline struct net_device *port_to_dev(port_t* port) +{ + return hdlc_to_dev(&port->hdlc); +} + + +static inline const char* port_name(port_t *port) +{ + return hdlc_to_name((hdlc_device*)port); +} + + +static inline const char* card_name(struct pci_dev *pdev) +{ + return pdev->slot_name; +} + + +static inline port_status_t* get_status(port_t *port) +{ + return &port->card->status->port_status[port->node]; +} + + +#ifdef DEBUG_PCI +static inline dma_addr_t pci_map_single_debug(struct pci_dev *pdev, void *ptr, + size_t size, int direction) +{ + dma_addr_t addr = pci_map_single(pdev, ptr, size, direction); + if (addr + size > 0x100000000LL) + printk(KERN_CRIT "wanXL %s: pci_map_single() returned memory" + " at 0x%X!\n", card_name(pdev), addr); + return addr; +} + +#undef pci_map_single +#define pci_map_single pci_map_single_debug +#endif + + +/* Cable and/or personality module change interrupt service */ +static inline void wanxl_cable_intr(port_t *port) +{ + u32 value = get_status(port)->cable; + int valid = 1; + const char *cable, *pm, *dte = "", *dsr = "", *dcd = ""; + + switch(value & 0x7) { + case STATUS_CABLE_V35: cable = "V.35"; break; + case STATUS_CABLE_X21: cable = "X.21"; break; + case STATUS_CABLE_V24: cable = "V.24"; break; + case STATUS_CABLE_EIA530: cable = "EIA530"; break; + case STATUS_CABLE_NONE: cable = "no"; break; + default: cable = "invalid"; + } + + switch((value >> STATUS_CABLE_PM_SHIFT) & 0x7) { + case STATUS_CABLE_V35: pm = "V.35"; break; + case STATUS_CABLE_X21: pm = "X.21"; break; + case STATUS_CABLE_V24: pm = "V.24"; break; + case STATUS_CABLE_EIA530: pm = "EIA530"; break; + case STATUS_CABLE_NONE: pm = "no personality"; valid = 0; break; + default: pm = "invalid personality"; valid = 0; + } + + if (valid) { + if ((value & 7) == ((value >> STATUS_CABLE_PM_SHIFT) & 7)) { + dsr = (value & STATUS_CABLE_DSR) ? ", DSR ON" : + ", DSR off"; + dcd = (value & STATUS_CABLE_DCD) ? ", carrier ON" : + ", carrier off"; + } + dte = (value & STATUS_CABLE_DCE) ? " DCE" : " DTE"; + } + printk(KERN_INFO "%s: %s%s module, %s cable%s%s\n", + port_name(port), pm, dte, cable, dsr, dcd); + + hdlc_set_carrier(value & STATUS_CABLE_DCD, &port->hdlc); +} + + + +/* Transmit complete interrupt service */ +static inline void wanxl_tx_intr(port_t *port) +{ + while (1) { + desc_t *desc; + desc = &get_status(port)->tx_descs[port->tx_in]; + struct sk_buff *skb = port->tx_skbs[port->tx_in]; + + switch (desc->stat) { + case PACKET_FULL: + case PACKET_EMPTY: + netif_wake_queue(port_to_dev(port)); + return; + + case PACKET_UNDERRUN: + port->hdlc.stats.tx_errors++; + port->hdlc.stats.tx_fifo_errors++; + break; + + default: + port->hdlc.stats.tx_packets++; + port->hdlc.stats.tx_bytes += skb->len; + } + desc->stat = PACKET_EMPTY; /* Free descriptor */ + pci_unmap_single(port->card->pdev, desc->address, skb->len, + PCI_DMA_TODEVICE); + dev_kfree_skb_irq(skb); + port->tx_in = (port->tx_in + 1) % TX_BUFFERS; + } +} + + + +/* Receive complete interrupt service */ +static inline void wanxl_rx_intr(card_t *card) +{ + desc_t *desc; + while(desc = &card->status->rx_descs[card->rx_in], + desc->stat != PACKET_EMPTY) { + struct sk_buff *skb = card->rx_skbs[card->rx_in]; + port_t *port = card->ports[desc->stat & PACKET_PORT_MASK]; + struct net_device *dev = port_to_dev(port); + + if ((desc->stat & PACKET_PORT_MASK) > card->n_ports) + printk(KERN_CRIT "wanXL %s: received packet for" + " nonexistent port\n", card_name(card->pdev)); + + else if (!skb) + port->hdlc.stats.rx_dropped++; + + else { + pci_unmap_single(card->pdev, desc->address, + BUFFER_LENGTH, PCI_DMA_FROMDEVICE); + skb_put(skb, desc->length); + +#ifdef DEBUG_PKT + printk(KERN_DEBUG "%s RX(%i):", port_name(port), + skb->len); + debug_frame(skb); +#endif + port->hdlc.stats.rx_packets++; + port->hdlc.stats.rx_bytes += skb->len; + skb->mac.raw = skb->data; + skb->dev = dev; + dev->last_rx = jiffies; + skb->protocol = hdlc_type_trans(skb, dev); + netif_rx(skb); + skb = NULL; + } + + if (!skb) { + skb = dev_alloc_skb(BUFFER_LENGTH); + desc->address = skb ? + pci_map_single(card->pdev, skb->data, + BUFFER_LENGTH, + PCI_DMA_FROMDEVICE) : 0; + card->rx_skbs[card->rx_in] = skb; + } + desc->stat = PACKET_EMPTY; /* Free descriptor */ + card->rx_in = (card->rx_in + 1) % RX_QUEUE_LENGTH; + } +} + + + +static irqreturn_t wanxl_intr(int irq, void* dev_id, struct pt_regs *regs) +{ + card_t *card = dev_id; + int i; + u32 stat; + int handled = 0; + + + while((stat = readl(card->plx + PLX_DOORBELL_FROM_CARD)) != 0) { + handled = 1; + writel(stat, card->plx + PLX_DOORBELL_FROM_CARD); + + for (i = 0; i < card->n_ports; i++) { + if (stat & (1 << (DOORBELL_FROM_CARD_TX_0 + i))) + wanxl_tx_intr(card->ports[i]); + if (stat & (1 << (DOORBELL_FROM_CARD_CABLE_0 + i))) + wanxl_cable_intr(card->ports[i]); + } + if (stat & (1 << DOORBELL_FROM_CARD_RX)) + wanxl_rx_intr(card); + } + + return IRQ_RETVAL(handled); +} + + + +static int wanxl_xmit(struct sk_buff *skb, struct net_device *dev) +{ + hdlc_device *hdlc = dev_to_hdlc(dev); + port_t *port = hdlc_to_port(hdlc); + + spin_lock(&port->lock); + + desc_t *desc = &get_status(port)->tx_descs[port->tx_out]; + if (desc->stat != PACKET_EMPTY) { + /* should never happen - previous xmit should stop queue */ +#ifdef DEBUG_PKT + printk(KERN_DEBUG "%s: transmitter buffer full\n", + port_name(port)); +#endif + netif_stop_queue(dev); + spin_unlock_irq(&port->lock); + return 1; /* request packet to be queued */ + } + +#ifdef DEBUG_PKT + printk(KERN_DEBUG "%s TX(%i):", port_name(port), skb->len); + debug_frame(skb); +#endif + + port->tx_skbs[port->tx_out] = skb; + desc->address = pci_map_single(port->card->pdev, skb->data, skb->len, + PCI_DMA_TODEVICE); + desc->length = skb->len; + desc->stat = PACKET_FULL; + writel(1 << (DOORBELL_TO_CARD_TX_0 + port->node), + port->card->plx + PLX_DOORBELL_TO_CARD); + dev->trans_start = jiffies; + + port->tx_out = (port->tx_out + 1) % TX_BUFFERS; + + if (get_status(port)->tx_descs[port->tx_out].stat != PACKET_EMPTY) { + netif_stop_queue(dev); +#ifdef DEBUG_PKT + printk(KERN_DEBUG "%s: transmitter buffer full\n", + port_name(port)); +#endif + } + + spin_unlock(&port->lock); + return 0; +} + + + +static int wanxl_attach(hdlc_device *hdlc, unsigned short encoding, + unsigned short parity) +{ + port_t *port = hdlc_to_port(hdlc); + + if (encoding != ENCODING_NRZ && + encoding != ENCODING_NRZI) + return -EINVAL; + + if (parity != PARITY_NONE && + parity != PARITY_CRC32_PR1_CCITT && + parity != PARITY_CRC16_PR1_CCITT && + parity != PARITY_CRC32_PR0_CCITT && + parity != PARITY_CRC16_PR0_CCITT) + return -EINVAL; + + get_status(port)->encoding = encoding; + get_status(port)->parity = parity; + return 0; +} + + + +static int wanxl_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) +{ + const size_t size = sizeof(sync_serial_settings); + sync_serial_settings line; + hdlc_device *hdlc = dev_to_hdlc(dev); + port_t *port = hdlc_to_port(hdlc); + + if (cmd != SIOCWANDEV) + return hdlc_ioctl(dev, ifr, cmd); + + switch (ifr->ifr_settings.type) { + case IF_GET_IFACE: + ifr->ifr_settings.type = IF_IFACE_SYNC_SERIAL; + if (ifr->ifr_settings.size < size) { + ifr->ifr_settings.size = size; /* data size wanted */ + return -ENOBUFS; + } + line.clock_type = get_status(port)->clocking; + line.clock_rate = 0; + line.loopback = 0; + + if (copy_to_user(ifr->ifr_settings.ifs_ifsu.sync, &line, size)) + return -EFAULT; + return 0; + + case IF_IFACE_SYNC_SERIAL: + if (!capable(CAP_NET_ADMIN)) + return -EPERM; + if (dev->flags & IFF_UP) + return -EBUSY; + + if (copy_from_user(&line, ifr->ifr_settings.ifs_ifsu.sync, + size)) + return -EFAULT; + + if (line.clock_type != CLOCK_EXT && + line.clock_type != CLOCK_TXFROMRX) + return -EINVAL; /* No such clock setting */ + + if (line.loopback != 0) + return -EINVAL; + + get_status(port)->clocking = line.clock_type; + return 0; + + default: + return hdlc_ioctl(dev, ifr, cmd); + } +} + + + +static int wanxl_open(struct net_device *dev) +{ + hdlc_device *hdlc = dev_to_hdlc(dev); + port_t *port = hdlc_to_port(hdlc); + u8 *dbr = port->card->plx + PLX_DOORBELL_TO_CARD; + unsigned long timeout; + int i; + + if (get_status(port)->open) { + printk(KERN_ERR "%s: port already open\n", port_name(port)); + return -EIO; + } + if ((i = hdlc_open(hdlc)) != 0) + return i; + + port->tx_in = port->tx_out = 0; + for (i = 0; i < TX_BUFFERS; i++) + get_status(port)->tx_descs[i].stat = PACKET_EMPTY; + /* signal the card */ + writel(1 << (DOORBELL_TO_CARD_OPEN_0 + port->node), dbr); + + timeout = jiffies + HZ; + do + if (get_status(port)->open) + return 0; + while (time_after(timeout, jiffies)); + + printk(KERN_ERR "%s: unable to open port\n", port_name(port)); + /* ask the card to close the port, should it be still alive */ + writel(1 << (DOORBELL_TO_CARD_CLOSE_0 + port->node), dbr); + return -EFAULT; +} + + + +static int wanxl_close(struct net_device *dev) +{ + hdlc_device *hdlc = dev_to_hdlc(dev); + port_t *port = hdlc_to_port(hdlc); + unsigned long timeout; + int i; + + hdlc_close(hdlc); + /* signal the card */ + writel(1 << (DOORBELL_TO_CARD_CLOSE_0 + port->node), + port->card->plx + PLX_DOORBELL_TO_CARD); + + timeout = jiffies + HZ; + do + if (!get_status(port)->open) + break; + while (time_after(timeout, jiffies)); + + if (get_status(port)->open) + printk(KERN_ERR "%s: unable to close port\n", port_name(port)); + + for (i = 0; i < TX_BUFFERS; i++) { + desc_t *desc = &get_status(port)->tx_descs[i]; + + if (desc->stat != PACKET_EMPTY) { + desc->stat = PACKET_EMPTY; + pci_unmap_single(port->card->pdev, desc->address, + port->tx_skbs[i]->len, + PCI_DMA_TODEVICE); + dev_kfree_skb(port->tx_skbs[i]); + } + } + return 0; +} + + + +static struct net_device_stats *wanxl_get_stats(struct net_device *dev) +{ + hdlc_device *hdlc = dev_to_hdlc(dev); + port_t *port = hdlc_to_port(hdlc); + + hdlc->stats.rx_over_errors = get_status(port)->rx_overruns; + hdlc->stats.rx_frame_errors = get_status(port)->rx_frame_errors; + hdlc->stats.rx_errors = hdlc->stats.rx_over_errors + + hdlc->stats.rx_frame_errors; + return &hdlc->stats; +} + + + +static int wanxl_puts_command(card_t *card, u32 cmd) +{ + unsigned long timeout = jiffies + 5 * HZ; + + writel(cmd, card->plx + PLX_MAILBOX_1); + do { + if (readl(card->plx + PLX_MAILBOX_1) == 0) + return 0; + + schedule(); + }while (time_after(timeout, jiffies)); + + return -1; +} + + + +static void wanxl_reset(card_t *card) +{ + u32 old_value = readl(card->plx + PLX_CONTROL) & ~PLX_CTL_RESET; + + writel(0x80, card->plx + PLX_MAILBOX_0); + writel(old_value | PLX_CTL_RESET, card->plx + PLX_CONTROL); + readl(card->plx + PLX_CONTROL); /* wait for posted write */ + udelay(1); + writel(old_value, card->plx + PLX_CONTROL); + readl(card->plx + PLX_CONTROL); /* wait for posted write */ +} + + + +static void wanxl_pci_remove_one(struct pci_dev *pdev) +{ + card_t *card = pci_get_drvdata(pdev); + int i; + + /* unregister and free all host resources */ + if (card->irq) + free_irq(card->irq, card); + + for (i = 0; i < 4; i++) + if (card->ports[i]) + unregister_hdlc_device(&card->ports[i]->hdlc); + + wanxl_reset(card); + + for (i = 0; i < RX_QUEUE_LENGTH; i++) + if (card->rx_skbs[i]) { + pci_unmap_single(card->pdev, + card->status->rx_descs[i].address, + BUFFER_LENGTH, PCI_DMA_FROMDEVICE); + dev_kfree_skb(card->rx_skbs[i]); + } + + if (card->plx) + iounmap(card->plx); + + if (card->status) + pci_free_consistent(pdev, sizeof(card_status_t), + card->status, card->status_address); + + pci_set_drvdata(pdev, NULL); + kfree(card); + pci_release_regions(pdev); +} + + +#include "wanxlfw.inc" + +static int __devinit wanxl_pci_init_one(struct pci_dev *pdev, + const struct pci_device_id *ent) +{ + card_t *card; + u32 ramsize, stat; + unsigned long timeout; + u32 plx_phy; /* PLX PCI base address */ + u32 mem_phy; /* memory PCI base addr */ + u8 *mem; /* memory virtual base addr */ + int i, ports, alloc_size; + + i = pci_enable_device(pdev); + if (i) + return i; + + /* QUICC can only access first 256 MB of host RAM directly, + but PLX9060 DMA does 32-bits for actual packet data transfers */ + + /* FIXME when PCI/DMA subsystems are fixed. + We set both dma_mask and consistent_dma_mask to 28 bits + and pray pci_alloc_consistent() will use this info. It should + work on most platforms */ + if (pci_set_consistent_dma_mask(pdev, 0x0FFFFFFF) || + pci_set_dma_mask(pdev, 0x0FFFFFFF)) { + printk(KERN_ERR "No usable DMA configuration\n"); + return -EIO; + } + + i = pci_request_regions(pdev, "wanXL"); + if (i) + return i; + + switch (pdev->device) { + case PCI_DEVICE_ID_SBE_WANXL100: ports = 1; break; + case PCI_DEVICE_ID_SBE_WANXL200: ports = 2; break; + default: ports = 4; + } + + alloc_size = sizeof(card_t) + ports * sizeof(port_t); + card = kmalloc(alloc_size, GFP_KERNEL); + if (card == NULL) { + printk(KERN_ERR "wanXL %s: unable to allocate memory\n", + card_name(pdev)); + pci_release_regions(pdev); + return -ENOBUFS; + } + memset(card, 0, alloc_size); + + pci_set_drvdata(pdev, card); + card->pdev = pdev; + card->n_ports = ports; + + card->status = pci_alloc_consistent(pdev, sizeof(card_status_t), + &card->status_address); + if (card->status == NULL) { + wanxl_pci_remove_one(pdev); + return -ENOBUFS; + } + +#ifdef DEBUG_PCI + printk(KERN_DEBUG "wanXL %s: pci_alloc_consistent() returned memory" + " at 0x%X\n", card_name(pdev), card->status_address); +#endif + + /* FIXME when PCI/DMA subsystems are fixed. + We set both dma_mask and consistent_dma_mask back to 32 bits + to indicate the card can do 32-bit DMA addressing */ + if (pci_set_consistent_dma_mask(pdev, 0xFFFFFFFF) || + pci_set_dma_mask(pdev, 0xFFFFFFFF)) { + printk(KERN_ERR "No usable DMA configuration\n"); + wanxl_pci_remove_one(pdev); + return -EIO; + } + + /* set up PLX mapping */ + plx_phy = pci_resource_start(pdev, 0); + card->plx = ioremap_nocache(plx_phy, 0x70); + +#if RESET_WHILE_LOADING + wanxl_reset(card); +#endif + + timeout = jiffies + 20 * HZ; + while ((stat = readl(card->plx + PLX_MAILBOX_0)) != 0) { + if (time_before(timeout, jiffies)) { + printk(KERN_WARNING "wanXL %s: timeout waiting for" + " PUTS to complete\n", card_name(pdev)); + wanxl_pci_remove_one(pdev); + return -ENODEV; + } + + switch(stat & 0xC0) { + case 0x00: /* hmm - PUTS completed with non-zero code? */ + case 0x80: /* PUTS still testing the hardware */ + break; + + default: + printk(KERN_WARNING "wanXL %s: PUTS test 0x%X" + " failed\n", card_name(pdev), stat & 0x30); + wanxl_pci_remove_one(pdev); + return -ENODEV; + } + + schedule(); + } + + /* get on-board memory size (PUTS detects no more than 4 MB) */ + ramsize = readl(card->plx + PLX_MAILBOX_2) & MBX2_MEMSZ_MASK; + + /* set up on-board RAM mapping */ + mem_phy = pci_resource_start(pdev, 2); + + + /* sanity check the board's reported memory size */ + if (ramsize < BUFFERS_ADDR + + (TX_BUFFERS + RX_BUFFERS) * BUFFER_LENGTH * ports) { + printk(KERN_WARNING "wanXL %s: no enough on-board RAM" + " (%u bytes detected, %u bytes required)\n", + card_name(pdev), ramsize, BUFFERS_ADDR + + (TX_BUFFERS + RX_BUFFERS) * BUFFER_LENGTH * ports); + wanxl_pci_remove_one(pdev); + return -ENODEV; + } + + if (wanxl_puts_command(card, MBX1_CMD_BSWAP)) { + printk(KERN_WARNING "wanXL %s: unable to Set Byte Swap" + " Mode\n", card_name(pdev)); + wanxl_pci_remove_one(pdev); + return -ENODEV; + } + + for (i = 0; i < ports; i++) { + port_t *port = (void *)card + sizeof(card_t) + + i * sizeof(port_t); + struct net_device *dev = hdlc_to_dev(&port->hdlc); + spin_lock_init(&port->lock); + SET_MODULE_OWNER(dev); + dev->tx_queue_len = 50; + dev->do_ioctl = wanxl_ioctl; + dev->open = wanxl_open; + dev->stop = wanxl_close; + port->hdlc.attach = wanxl_attach; + port->hdlc.xmit = wanxl_xmit; + if(register_hdlc_device(&port->hdlc)) { + printk(KERN_ERR "wanXL %s: unable to register hdlc" + " device\n", card_name(pdev)); + wanxl_pci_remove_one(pdev); + return -ENOBUFS; + } + card->ports[i] = port; + dev->get_stats = wanxl_get_stats; + port->card = card; + port->node = i; + get_status(port)->clocking = CLOCK_EXT; + } + + for (i = 0; i < RX_QUEUE_LENGTH; i++) { + struct sk_buff *skb = dev_alloc_skb(BUFFER_LENGTH); + card->rx_skbs[i] = skb; + if (skb) + card->status->rx_descs[i].address = + pci_map_single(card->pdev, skb->data, + BUFFER_LENGTH, + PCI_DMA_FROMDEVICE); + } + + mem = ioremap_nocache(mem_phy, PDM_OFFSET + sizeof(firmware)); + for (i = 0; i < sizeof(firmware); i += 4) + writel(htonl(*(u32*)(firmware + i)), mem + PDM_OFFSET + i); + + for (i = 0; i < ports; i++) + writel(card->status_address + + (void *)&card->status->port_status[i] - + (void *)card->status, mem + PDM_OFFSET + 4 + i * 4); + writel(card->status_address, mem + PDM_OFFSET + 20); + writel(PDM_OFFSET, mem); + iounmap(mem); + + writel(0, card->plx + PLX_MAILBOX_5); + + if (wanxl_puts_command(card, MBX1_CMD_ABORTJ)) { + printk(KERN_WARNING "wanXL %s: unable to Abort and Jump\n", + card_name(pdev)); + wanxl_pci_remove_one(pdev); + return -ENODEV; + } + + stat = 0; + timeout = jiffies + 5 * HZ; + do { + if ((stat = readl(card->plx + PLX_MAILBOX_5)) != 0) + break; + schedule(); + }while (time_after(timeout, jiffies)); + + if (!stat) { + printk(KERN_WARNING "wanXL %s: timeout while initializing card" + "firmware\n", card_name(pdev)); + wanxl_pci_remove_one(pdev); + return -ENODEV; + } + +#if DETECT_RAM + ramsize = stat; +#endif + + printk(KERN_INFO "wanXL %s: at 0x%X, %u KB of RAM at 0x%X, irq" + " %u\n" KERN_INFO "wanXL %s: port", card_name(pdev), + plx_phy, ramsize / 1024, mem_phy, pdev->irq, card_name(pdev)); + + for (i = 0; i < ports; i++) + printk("%s #%i: %s", i ? "," : "", i, + port_name(card->ports[i])); + printk("\n"); + + /* Allocate IRQ */ + if(request_irq(pdev->irq, wanxl_intr, SA_SHIRQ, "wanXL", card)) { + printk(KERN_WARNING "wanXL %s: could not allocate IRQ%i.\n", + card_name(pdev), pdev->irq); + wanxl_pci_remove_one(pdev); + return -EBUSY; + } + card->irq = pdev->irq; + + return 0; +} + +static struct pci_device_id wanxl_pci_tbl[] __devinitdata = { + { PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_SBE_WANXL100, PCI_ANY_ID, + PCI_ANY_ID, 0, 0, 0 }, + { PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_SBE_WANXL200, PCI_ANY_ID, + PCI_ANY_ID, 0, 0, 0 }, + { PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_SBE_WANXL400, PCI_ANY_ID, + PCI_ANY_ID, 0, 0, 0 }, + { 0, } +}; + + +static struct pci_driver wanxl_pci_driver = { + name: "wanXL", + id_table: wanxl_pci_tbl, + probe: wanxl_pci_init_one, + remove: wanxl_pci_remove_one, +}; + + +static int __init wanxl_init_module(void) +{ +#ifdef MODULE + printk(KERN_INFO "%s\n", version); +#endif + return pci_module_init(&wanxl_pci_driver); +} + +static void __exit wanxl_cleanup_module(void) +{ + pci_unregister_driver(&wanxl_pci_driver); +} + + +MODULE_AUTHOR("Krzysztof Halasa "); +MODULE_DESCRIPTION("SBE Inc. wanXL serial port driver"); +MODULE_LICENSE("GPL v2"); +MODULE_DEVICE_TABLE(pci, wanxl_pci_tbl); + +module_init(wanxl_init_module); +module_exit(wanxl_cleanup_module); diff -Nru a/drivers/net/wan/wanxl.h b/drivers/net/wan/wanxl.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/net/wan/wanxl.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,152 @@ +/* + * wanXL serial card driver for Linux + * definitions common to host driver and card firmware + * + * Copyright (C) 2003 Krzysztof Halasa + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License + * as published by the Free Software Foundation. + */ + +#define RESET_WHILE_LOADING 0 + +/* you must rebuild the firmware if any of the following is changed */ +#define DETECT_RAM 0 /* needed for > 4MB RAM, 16 MB maximum */ +#define QUICC_MEMCPY_USES_PLX 1 /* must be used if the host has > 256 MB RAM */ + + +#define STATUS_CABLE_V35 2 +#define STATUS_CABLE_X21 3 +#define STATUS_CABLE_V24 4 +#define STATUS_CABLE_EIA530 5 +#define STATUS_CABLE_INVALID 6 +#define STATUS_CABLE_NONE 7 + +#define STATUS_CABLE_DCE 0x8000 +#define STATUS_CABLE_DSR 0x0010 +#define STATUS_CABLE_DCD 0x0008 +#define STATUS_CABLE_PM_SHIFT 5 + +#define PDM_OFFSET 0x1000 + +#define TX_BUFFERS 10 /* per port */ +#define RX_BUFFERS 30 +#define RX_QUEUE_LENGTH 40 /* card->host queue length - per card */ + +#define PACKET_EMPTY 0x00 +#define PACKET_FULL 0x10 +#define PACKET_SENT 0x20 /* TX only */ +#define PACKET_UNDERRUN 0x30 /* TX only */ +#define PACKET_PORT_MASK 0x03 /* RX only */ + +/* bit numbers in PLX9060 doorbell registers */ +#define DOORBELL_FROM_CARD_TX_0 0 /* packet sent by the card */ +#define DOORBELL_FROM_CARD_TX_1 1 +#define DOORBELL_FROM_CARD_TX_2 2 +#define DOORBELL_FROM_CARD_TX_3 3 +#define DOORBELL_FROM_CARD_RX 4 +#define DOORBELL_FROM_CARD_CABLE_0 5 /* cable/PM/etc. changed */ +#define DOORBELL_FROM_CARD_CABLE_1 6 +#define DOORBELL_FROM_CARD_CABLE_2 7 +#define DOORBELL_FROM_CARD_CABLE_3 8 + +#define DOORBELL_TO_CARD_OPEN_0 0 +#define DOORBELL_TO_CARD_OPEN_1 1 +#define DOORBELL_TO_CARD_OPEN_2 2 +#define DOORBELL_TO_CARD_OPEN_3 3 +#define DOORBELL_TO_CARD_CLOSE_0 4 +#define DOORBELL_TO_CARD_CLOSE_1 5 +#define DOORBELL_TO_CARD_CLOSE_2 6 +#define DOORBELL_TO_CARD_CLOSE_3 7 +#define DOORBELL_TO_CARD_TX_0 8 /* outbound packet queued */ +#define DOORBELL_TO_CARD_TX_1 9 +#define DOORBELL_TO_CARD_TX_2 10 +#define DOORBELL_TO_CARD_TX_3 11 + +/* firmware-only status bits, starting from last DOORBELL_TO_CARD + 1 */ +#define TASK_SCC_0 12 +#define TASK_SCC_1 13 +#define TASK_SCC_2 14 +#define TASK_SCC_3 15 + +#define ALIGN32(x) (((x) + 3) & 0xFFFFFFFC) +#define BUFFER_LENGTH ALIGN32(HDLC_MAX_MRU + 4) /* 4 bytes for 32-bit CRC */ + +/* Address of TX and RX buffers in 68360 address space */ +#define BUFFERS_ADDR 0x4000 /* 16 KB */ + +#ifndef __ASSEMBLER__ +#define PLX_OFFSET 0 +#else +#define PLX_OFFSET PLX + 0x80 +#endif + +#define PLX_MAILBOX_0 (PLX_OFFSET + 0x40) +#define PLX_MAILBOX_1 (PLX_OFFSET + 0x44) +#define PLX_MAILBOX_2 (PLX_OFFSET + 0x48) +#define PLX_MAILBOX_3 (PLX_OFFSET + 0x4C) +#define PLX_MAILBOX_4 (PLX_OFFSET + 0x50) +#define PLX_MAILBOX_5 (PLX_OFFSET + 0x54) +#define PLX_MAILBOX_6 (PLX_OFFSET + 0x58) +#define PLX_MAILBOX_7 (PLX_OFFSET + 0x5C) +#define PLX_DOORBELL_TO_CARD (PLX_OFFSET + 0x60) +#define PLX_DOORBELL_FROM_CARD (PLX_OFFSET + 0x64) +#define PLX_INTERRUPT_CS (PLX_OFFSET + 0x68) +#define PLX_CONTROL (PLX_OFFSET + 0x6C) + +#ifdef __ASSEMBLER__ +#define PLX_DMA_0_MODE (PLX + 0x100) +#define PLX_DMA_0_PCI (PLX + 0x104) +#define PLX_DMA_0_LOCAL (PLX + 0x108) +#define PLX_DMA_0_LENGTH (PLX + 0x10C) +#define PLX_DMA_0_DESC (PLX + 0x110) +#define PLX_DMA_1_MODE (PLX + 0x114) +#define PLX_DMA_1_PCI (PLX + 0x118) +#define PLX_DMA_1_LOCAL (PLX + 0x11C) +#define PLX_DMA_1_LENGTH (PLX + 0x120) +#define PLX_DMA_1_DESC (PLX + 0x124) +#define PLX_DMA_CMD_STS (PLX + 0x128) +#define PLX_DMA_ARBITR_0 (PLX + 0x12C) +#define PLX_DMA_ARBITR_1 (PLX + 0x130) +#endif + +#define DESC_LENGTH 12 + +/* offsets from start of status_t */ +/* card to host */ +#define STATUS_OPEN 0 +#define STATUS_CABLE (STATUS_OPEN + 4) +#define STATUS_RX_OVERRUNS (STATUS_CABLE + 4) +#define STATUS_RX_FRAME_ERRORS (STATUS_RX_OVERRUNS + 4) + +/* host to card */ +#define STATUS_PARITY (STATUS_RX_FRAME_ERRORS + 4) +#define STATUS_ENCODING (STATUS_PARITY + 4) +#define STATUS_CLOCKING (STATUS_ENCODING + 4) +#define STATUS_TX_DESCS (STATUS_CLOCKING + 4) + +#ifndef __ASSEMBLER__ + +typedef struct { + volatile u32 stat; + u32 address; /* PCI address */ + volatile u32 length; +}desc_t; + + +typedef struct { +// Card to host + volatile u32 open; + volatile u32 cable; + volatile u32 rx_overruns; + volatile u32 rx_frame_errors; + +// Host to card + u32 parity; + u32 encoding; + u32 clocking; + desc_t tx_descs[TX_BUFFERS]; +}port_status_t; + +#endif /* __ASSEMBLER__ */ diff -Nru a/drivers/net/wan/wanxlfw.S b/drivers/net/wan/wanxlfw.S --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/net/wan/wanxlfw.S Mon Sep 22 00:30:25 2003 @@ -0,0 +1,895 @@ +.psize 0 +/* + wanXL serial card driver for Linux + card firmware part + + Copyright (C) 2003 Krzysztof Halasa + + This program is free software; you can redistribute it and/or modify it + under the terms of version 2 of the GNU General Public License + as published by the Free Software Foundation. + + + + + DPRAM BDs: + 0x000 - 0x050 TX#0 0x050 - 0x140 RX#0 + 0x140 - 0x190 TX#1 0x190 - 0x280 RX#1 + 0x280 - 0x2D0 TX#2 0x2D0 - 0x3C0 RX#2 + 0x3C0 - 0x410 TX#3 0x410 - 0x500 RX#3 + + + 000 5FF 1536 Bytes Dual-Port RAM User Data / BDs + 600 6FF 256 Bytes Dual-Port RAM User Data / BDs + 700 7FF 256 Bytes Dual-Port RAM User Data / BDs + C00 CBF 192 Bytes Dual-Port RAM Parameter RAM Page 1 + D00 DBF 192 Bytes Dual-Port RAM Parameter RAM Page 2 + E00 EBF 192 Bytes Dual-Port RAM Parameter RAM Page 3 + F00 FBF 192 Bytes Dual-Port RAM Parameter RAM Page 4 + + local interrupts level + NMI 7 + PIT timer, CPM (RX/TX complete) 4 + PCI9060 DMA and PCI doorbells 3 + Cable - not used 1 +*/ + +#include +#include "wanxl.h" + +/* memory addresses and offsets */ + +MAX_RAM_SIZE = 16 * 1024 * 1024 // max RAM supported by hardware + +PCI9060_VECTOR = 0x0000006C +CPM_IRQ_BASE = 0x40 +ERROR_VECTOR = CPM_IRQ_BASE * 4 +SCC1_VECTOR = (CPM_IRQ_BASE + 0x1E) * 4 +SCC2_VECTOR = (CPM_IRQ_BASE + 0x1D) * 4 +SCC3_VECTOR = (CPM_IRQ_BASE + 0x1C) * 4 +SCC4_VECTOR = (CPM_IRQ_BASE + 0x1B) * 4 +CPM_IRQ_LEVEL = 4 +TIMER_IRQ = 128 +TIMER_IRQ_LEVEL = 4 +PITR_CONST = 0x100 + 16 // 1 Hz timer + +MBAR = 0x0003FF00 + +VALUE_WINDOW = 0x40000000 +ORDER_WINDOW = 0xC0000000 + +PLX = 0xFFF90000 + +CSRA = 0xFFFB0000 +CSRB = 0xFFFB0002 +CSRC = 0xFFFB0004 +CSRD = 0xFFFB0006 +STATUS_CABLE_LL = 0x2000 +STATUS_CABLE_DTR = 0x1000 + +DPRBASE = 0xFFFC0000 + +SCC1_BASE = DPRBASE + 0xC00 +MISC_BASE = DPRBASE + 0xCB0 +SCC2_BASE = DPRBASE + 0xD00 +SCC3_BASE = DPRBASE + 0xE00 +SCC4_BASE = DPRBASE + 0xF00 + +// offset from SCCx_BASE +// SCC_xBASE contain offsets from DPRBASE and must be divisible by 8 +SCC_RBASE = 0 // 16-bit RxBD base address +SCC_TBASE = 2 // 16-bit TxBD base address +SCC_RFCR = 4 // 8-bit Rx function code +SCC_TFCR = 5 // 8-bit Tx function code +SCC_MRBLR = 6 // 16-bit maximum Rx buffer length +SCC_C_MASK = 0x34 // 32-bit CRC constant +SCC_C_PRES = 0x38 // 32-bit CRC preset +SCC_MFLR = 0x46 // 16-bit max Rx frame length (without flags) + +REGBASE = DPRBASE + 0x1000 +PICR = REGBASE + 0x026 // 16-bit periodic irq control +PITR = REGBASE + 0x02A // 16-bit periodic irq timing +OR1 = REGBASE + 0x064 // 32-bit RAM bank #1 options +CICR = REGBASE + 0x540 // 32(24)-bit CP interrupt config +CIMR = REGBASE + 0x548 // 32-bit CP interrupt mask +CISR = REGBASE + 0x54C // 32-bit CP interrupts in-service +PADIR = REGBASE + 0x550 // 16-bit PortA data direction bitmap +PAPAR = REGBASE + 0x552 // 16-bit PortA pin assignment bitmap +PAODR = REGBASE + 0x554 // 16-bit PortA open drain bitmap +PADAT = REGBASE + 0x556 // 16-bit PortA data register + +PCDIR = REGBASE + 0x560 // 16-bit PortC data direction bitmap +PCPAR = REGBASE + 0x562 // 16-bit PortC pin assignment bitmap +PCSO = REGBASE + 0x564 // 16-bit PortC special options +PCDAT = REGBASE + 0x566 // 16-bit PortC data register +PCINT = REGBASE + 0x568 // 16-bit PortC interrupt control +CR = REGBASE + 0x5C0 // 16-bit Command register + +SCC1_REGS = REGBASE + 0x600 +SCC2_REGS = REGBASE + 0x620 +SCC3_REGS = REGBASE + 0x640 +SCC4_REGS = REGBASE + 0x660 +SICR = REGBASE + 0x6EC // 32-bit SI clock route + +// offset from SCCx_REGS +SCC_GSMR_L = 0x00 // 32 bits +SCC_GSMR_H = 0x04 // 32 bits +SCC_PSMR = 0x08 // 16 bits +SCC_TODR = 0x0C // 16 bits +SCC_DSR = 0x0E // 16 bits +SCC_SCCE = 0x10 // 16 bits +SCC_SCCM = 0x14 // 16 bits +SCC_SCCS = 0x17 // 8 bits + +#if QUICC_MEMCPY_USES_PLX + .macro memcpy_from_pci src, dest, len // len must be < 8 MB + addl #3, \len + andl #0xFFFFFFFC, \len // always copy n * 4 bytes + movel \src, PLX_DMA_0_PCI + movel \dest, PLX_DMA_0_LOCAL + movel \len, PLX_DMA_0_LENGTH + movel #0x0103, PLX_DMA_CMD_STS // start channel 0 transfer + bsr memcpy_from_pci_run + .endm + + .macro memcpy_to_pci src, dest, len + addl #3, \len + andl #0xFFFFFFFC, \len // always copy n * 4 bytes + movel \src, PLX_DMA_1_LOCAL + movel \dest, PLX_DMA_1_PCI + movel \len, PLX_DMA_1_LENGTH + movel #0x0301, PLX_DMA_CMD_STS // start channel 1 transfer + bsr memcpy_to_pci_run + .endm + +#else + + .macro memcpy src, dest, len // len must be < 65536 bytes + movel %d7, -(%sp) // src and dest must be < 256 MB + movel \len, %d7 // bits 0 and 1 + lsrl #2, \len + andl \len, \len + beq 99f // only 0 - 3 bytes + subl #1, \len // for dbf +98: movel (\src)+, (\dest)+ + dbfw \len, 98b +99: movel %d7, \len + btstl #1, \len + beq 99f + movew (\src)+, (\dest)+ +99: btstl #0, \len + beq 99f + moveb (\src)+, (\dest)+ +99: + movel (%sp)+, %d7 + .endm + + .macro memcpy_from_pci src, dest, len + addl #VALUE_WINDOW, \src + memcpy \src, \dest, \len + .endm + + .macro memcpy_to_pci src, dest, len + addl #VALUE_WINDOW, \dest + memcpy \src, \dest, \len + .endm +#endif + + + .macro wait_for_command +99: btstl #0, CR + bne 99b + .endm + + + + +/****************************** card initialization *******************/ + .text + .global _start +_start: bra init + + .org _start + 4 +ch_status_addr: .long 0, 0, 0, 0 +rx_descs_addr: .long 0 + +init: +#if DETECT_RAM + movel OR1, %d0 + andl #0xF00007FF, %d0 // mask AMxx bits + orl #0xFFFF800 & ~(MAX_RAM_SIZE - 1), %d0 // update RAM bank size + movel %d0, OR1 +#endif + + addl #VALUE_WINDOW, rx_descs_addr // PCI addresses of shared data + clrl %d0 // D0 = 4 * port +init_1: tstl ch_status_addr(%d0) + beq init_2 + addl #VALUE_WINDOW, ch_status_addr(%d0) +init_2: addl #4, %d0 + cmpl #4 * 4, %d0 + bne init_1 + + movel #pci9060_interrupt, PCI9060_VECTOR + movel #error_interrupt, ERROR_VECTOR + movel #port_interrupt_1, SCC1_VECTOR + movel #port_interrupt_2, SCC2_VECTOR + movel #port_interrupt_3, SCC3_VECTOR + movel #port_interrupt_4, SCC4_VECTOR + movel #timer_interrupt, TIMER_IRQ * 4 + + movel #0x78000000, CIMR // only SCCx IRQs from CPM + movew #(TIMER_IRQ_LEVEL << 8) + TIMER_IRQ, PICR // interrupt from PIT + movew #PITR_CONST, PITR + + // SCC1=SCCa SCC2=SCCb SCC3=SCCc SCC4=SCCd prio=4 HP=-1 IRQ=64-79 + movel #0xD41F40 + (CPM_IRQ_LEVEL << 13), CICR + movel #0x543, PLX_DMA_0_MODE // 32-bit, Ready, Burst, IRQ + movel #0x543, PLX_DMA_1_MODE + movel #0x0, PLX_DMA_0_DESC // from PCI to local + movel #0x8, PLX_DMA_1_DESC // from local to PCI + movel #0x101, PLX_DMA_CMD_STS // enable both DMA channels + // enable local IRQ, DMA, doorbells and PCI IRQ + orl #0x000F0300, PLX_INTERRUPT_CS + +#if DETECT_RAM + bsr ram_test +#else + movel #1, PLX_MAILBOX_5 // non-zero value = init complete +#endif + bsr check_csr + + movew #0xFFFF, PAPAR // all pins are clocks/data + clrw PADIR // first function + clrw PCSO // CD and CTS always active + + +/****************************** main loop *****************************/ + +main: movel channel_stats, %d7 // D7 = doorbell + irq status + clrl channel_stats + + tstl %d7 + bne main_1 + // nothing to do - wait for next event + stop #0x2200 // supervisor + IRQ level 2 + movew #0x2700, %sr // disable IRQs again + bra main + +main_1: clrl %d0 // D0 = 4 * port + clrl %d6 // D6 = doorbell to host value + +main_l: btstl #DOORBELL_TO_CARD_CLOSE_0, %d7 + beq main_op + bclrl #DOORBELL_TO_CARD_OPEN_0, %d7 // in case both bits are set + bsr close_port +main_op: + btstl #DOORBELL_TO_CARD_OPEN_0, %d7 + beq main_cl + bsr open_port +main_cl: + btstl #DOORBELL_TO_CARD_TX_0, %d7 + beq main_txend + bsr tx +main_txend: + btstl #TASK_SCC_0, %d7 + beq main_next + bsr tx_end + bsr rx + +main_next: + lsrl #1, %d7 // port status for next port + addl #4, %d0 // D0 = 4 * next port + cmpl #4 * 4, %d0 + bne main_l + movel %d6, PLX_DOORBELL_FROM_CARD // signal the host + bra main + + +/****************************** open port *****************************/ + +open_port: // D0 = 4 * port, D6 = doorbell to host + movel ch_status_addr(%d0), %a0 // A0 = port status address + tstl STATUS_OPEN(%a0) + bne open_port_ret // port already open + movel #1, STATUS_OPEN(%a0) // confirm the port is open +// setup BDs + clrl tx_in(%d0) + clrl tx_out(%d0) + clrl tx_count(%d0) + clrl rx_in(%d0) + + movel SICR, %d1 // D1 = clock settings in SICR + andl clocking_mask(%d0), %d1 + cmpl #CLOCK_TXFROMRX, STATUS_CLOCKING(%a0) + bne open_port_clock_ext + orl clocking_txfromrx(%d0), %d1 + bra open_port_set_clock + +open_port_clock_ext: + orl clocking_ext(%d0), %d1 +open_port_set_clock: + movel %d1, SICR // update clock settings in SICR + + orw #STATUS_CABLE_DTR, csr_output(%d0) // DTR on + bsr check_csr // call with disabled timer interrupt + +// Setup TX descriptors + movel first_buffer(%d0), %d1 // D1 = starting buffer address + movel tx_first_bd(%d0), %a1 // A1 = starting TX BD address + movel #TX_BUFFERS - 2, %d2 // D2 = TX_BUFFERS - 1 counter + movel #0x18000000, %d3 // D3 = initial TX BD flags: Int + Last + cmpl #PARITY_NONE, STATUS_PARITY(%a0) + beq open_port_tx_loop + bsetl #26, %d3 // TX BD flag: Transmit CRC +open_port_tx_loop: + movel %d3, (%a1)+ // TX flags + length + movel %d1, (%a1)+ // buffer address + addl #BUFFER_LENGTH, %d1 + dbfw %d2, open_port_tx_loop + + bsetl #29, %d3 // TX BD flag: Wrap (last BD) + movel %d3, (%a1)+ // Final TX flags + length + movel %d1, (%a1)+ // buffer address + +// Setup RX descriptors // A1 = starting RX BD address + movel #RX_BUFFERS - 2, %d2 // D2 = RX_BUFFERS - 1 counter +open_port_rx_loop: + movel #0x90000000, (%a1)+ // RX flags + length + movel %d1, (%a1)+ // buffer address + addl #BUFFER_LENGTH, %d1 + dbfw %d2, open_port_rx_loop + + movel #0xB0000000, (%a1)+ // Final RX flags + length + movel %d1, (%a1)+ // buffer address + +// Setup port parameters + movel scc_base_addr(%d0), %a1 // A1 = SCC_BASE address + movel scc_reg_addr(%d0), %a2 // A2 = SCC_REGS address + + movel #0xFFFF, SCC_SCCE(%a2) // clear status bits + movel #0x0000, SCC_SCCM(%a2) // interrupt mask + + movel tx_first_bd(%d0), %d1 + movew %d1, SCC_TBASE(%a1) // D1 = offset of first TxBD + addl #TX_BUFFERS * 8, %d1 + movew %d1, SCC_RBASE(%a1) // D1 = offset of first RxBD + moveb #0x8, SCC_RFCR(%a1) // Intel mode, 1000 + moveb #0x8, SCC_TFCR(%a1) + +// Parity settings + cmpl #PARITY_CRC16_PR1_CCITT, STATUS_PARITY(%a0) + bne open_port_parity_1 + clrw SCC_PSMR(%a2) // CRC16-CCITT + movel #0xF0B8, SCC_C_MASK(%a1) + movel #0xFFFF, SCC_C_PRES(%a1) + movew #HDLC_MAX_MRU + 2, SCC_MFLR(%a1) // 2 bytes for CRC + movew #2, parity_bytes(%d0) + bra open_port_2 + +open_port_parity_1: + cmpl #PARITY_CRC32_PR1_CCITT, STATUS_PARITY(%a0) + bne open_port_parity_2 + movew #0x0800, SCC_PSMR(%a2) // CRC32-CCITT + movel #0xDEBB20E3, SCC_C_MASK(%a1) + movel #0xFFFFFFFF, SCC_C_PRES(%a1) + movew #HDLC_MAX_MRU + 4, SCC_MFLR(%a1) // 4 bytes for CRC + movew #4, parity_bytes(%d0) + bra open_port_2 + +open_port_parity_2: + cmpl #PARITY_CRC16_PR0_CCITT, STATUS_PARITY(%a0) + bne open_port_parity_3 + clrw SCC_PSMR(%a2) // CRC16-CCITT preset 0 + movel #0xF0B8, SCC_C_MASK(%a1) + clrl SCC_C_PRES(%a1) + movew #HDLC_MAX_MRU + 2, SCC_MFLR(%a1) // 2 bytes for CRC + movew #2, parity_bytes(%d0) + bra open_port_2 + +open_port_parity_3: + cmpl #PARITY_CRC32_PR0_CCITT, STATUS_PARITY(%a0) + bne open_port_parity_4 + movew #0x0800, SCC_PSMR(%a2) // CRC32-CCITT preset 0 + movel #0xDEBB20E3, SCC_C_MASK(%a1) + clrl SCC_C_PRES(%a1) + movew #HDLC_MAX_MRU + 4, SCC_MFLR(%a1) // 4 bytes for CRC + movew #4, parity_bytes(%d0) + bra open_port_2 + +open_port_parity_4: + clrw SCC_PSMR(%a2) // no parity + movel #0xF0B8, SCC_C_MASK(%a1) + movel #0xFFFF, SCC_C_PRES(%a1) + movew #HDLC_MAX_MRU, SCC_MFLR(%a1) // 0 bytes for CRC + clrw parity_bytes(%d0) + +open_port_2: + movel #0x00000003, SCC_GSMR_H(%a2) // RTSM + cmpl #ENCODING_NRZI, STATUS_ENCODING(%a0) + bne open_port_nrz + movel #0x10040900, SCC_GSMR_L(%a2) // NRZI: TCI Tend RECN+TENC=1 + bra open_port_3 + +open_port_nrz: + movel #0x10040000, SCC_GSMR_L(%a2) // NRZ: TCI Tend RECN+TENC=0 +open_port_3: + movew #BUFFER_LENGTH, SCC_MRBLR(%a1) + movel %d0, %d1 + lsll #4, %d1 // D1 bits 7 and 6 = port + orl #1, %d1 + movew %d1, CR // Init SCC RX and TX params + wait_for_command + + // TCI Tend ENR ENT + movew #0x001F, SCC_SCCM(%a2) // TXE RXF BSY TXB RXB interrupts + orl #0x00000030, SCC_GSMR_L(%a2) // enable SCC +open_port_ret: + rts + + +/****************************** close port ****************************/ + +close_port: // D0 = 4 * port, D6 = doorbell to host + movel scc_reg_addr(%d0), %a0 // A0 = SCC_REGS address + clrw SCC_SCCM(%a0) // no SCC interrupts + andl #0xFFFFFFCF, SCC_GSMR_L(%a0) // Disable ENT and ENR + + andw #~STATUS_CABLE_DTR, csr_output(%d0) // DTR off + bsr check_csr // call with disabled timer interrupt + + movel ch_status_addr(%d0), %d1 + clrl STATUS_OPEN(%d1) // confirm the port is closed + rts + + +/****************************** transmit packet ***********************/ +// queue packets for transmission +tx: // D0 = 4 * port, D6 = doorbell to host + cmpl #TX_BUFFERS, tx_count(%d0) + beq tx_ret // all DB's = descs in use + + movel tx_out(%d0), %d1 + movel %d1, %d2 // D1 = D2 = tx_out BD# = desc# + mulul #DESC_LENGTH, %d2 // D2 = TX desc offset + addl ch_status_addr(%d0), %d2 + addl #STATUS_TX_DESCS, %d2 // D2 = TX desc address + cmpl #PACKET_FULL, (%d2) // desc status + bne tx_ret + +// queue it + movel 4(%d2), %a0 // PCI address + lsll #3, %d1 // BD is 8-bytes long + addl tx_first_bd(%d0), %d1 // D1 = current tx_out BD addr + + movel 4(%d1), %a1 // A1 = dest address + movel 8(%d2), %d2 // D2 = length + movew %d2, 2(%d1) // length into BD + memcpy_from_pci %a0, %a1, %d2 + bsetl #31, (%d1) // CP go ahead + +// update tx_out and tx_count + movel tx_out(%d0), %d1 + addl #1, %d1 + cmpl #TX_BUFFERS, %d1 + bne tx_1 + clrl %d1 +tx_1: movel %d1, tx_out(%d0) + + addl #1, tx_count(%d0) + bra tx + +tx_ret: rts + + +/****************************** packet received ***********************/ + +// Service receive buffers // D0 = 4 * port, D6 = doorbell to host +rx: movel rx_in(%d0), %d1 // D1 = rx_in BD# + lsll #3, %d1 // BD is 8-bytes long + addl rx_first_bd(%d0), %d1 // D1 = current rx_in BD address + movew (%d1), %d2 // D2 = RX BD flags + btstl #15, %d2 + bne rx_ret // BD still empty + + btstl #1, %d2 + bne rx_overrun + + tstw parity_bytes(%d0) + bne rx_parity + bclrl #2, %d2 // do not test for CRC errors +rx_parity: + andw #0x0CBC, %d2 // mask status bits + cmpw #0x0C00, %d2 // correct frame + bne rx_bad_frame + clrl %d3 + movew 2(%d1), %d3 + subw parity_bytes(%d0), %d3 // D3 = packet length + cmpw #HDLC_MAX_MRU, %d3 + bgt rx_bad_frame + +rx_good_frame: + movel rx_out, %d2 + mulul #DESC_LENGTH, %d2 + addl rx_descs_addr, %d2 // D2 = RX desc address + cmpl #PACKET_EMPTY, (%d2) // desc stat + bne rx_overrun + + movel %d3, 8(%d2) + movel 4(%d1), %a0 // A0 = source address + movel 4(%d2), %a1 + tstl %a1 + beq rx_ignore_data + memcpy_to_pci %a0, %a1, %d3 +rx_ignore_data: + movel packet_full(%d0), (%d2) // update desc stat + +// update D6 and rx_out + bsetl #DOORBELL_FROM_CARD_RX, %d6 // signal host that RX completed + movel rx_out, %d2 + addl #1, %d2 + cmpl #RX_QUEUE_LENGTH, %d2 + bne rx_1 + clrl %d2 +rx_1: movel %d2, rx_out + +rx_free_bd: + andw #0xF000, (%d1) // clear CM and error bits + bsetl #31, (%d1) // free BD +// update rx_in + movel rx_in(%d0), %d1 + addl #1, %d1 + cmpl #RX_BUFFERS, %d1 + bne rx_2 + clrl %d1 +rx_2: movel %d1, rx_in(%d0) + bra rx + +rx_overrun: + movel ch_status_addr(%d0), %d2 + addl #1, STATUS_RX_OVERRUNS(%d2) + bra rx_free_bd + +rx_bad_frame: + movel ch_status_addr(%d0), %d2 + addl #1, STATUS_RX_FRAME_ERRORS(%d2) + bra rx_free_bd + +rx_ret: rts + + +/****************************** packet transmitted ********************/ + +// Service transmit buffers // D0 = 4 * port, D6 = doorbell to host +tx_end: tstl tx_count(%d0) + beq tx_end_ret // TX buffers already empty + + movel tx_in(%d0), %d1 + movel %d1, %d2 // D1 = D2 = tx_in BD# = desc# + lsll #3, %d1 // BD is 8-bytes long + addl tx_first_bd(%d0), %d1 // D1 = current tx_in BD address + movew (%d1), %d3 // D3 = TX BD flags + btstl #15, %d3 + bne tx_end_ret // BD still being transmitted + +// update D6, tx_in and tx_count + orl bell_tx(%d0), %d6 // signal host that TX desc freed + subl #1, tx_count(%d0) + movel tx_in(%d0), %d1 + addl #1, %d1 + cmpl #TX_BUFFERS, %d1 + bne tx_end_1 + clrl %d1 +tx_end_1: + movel %d1, tx_in(%d0) + +// free host's descriptor + mulul #DESC_LENGTH, %d2 // D2 = TX desc offset + addl ch_status_addr(%d0), %d2 + addl #STATUS_TX_DESCS, %d2 // D2 = TX desc address + btstl #1, %d3 + bne tx_end_underrun + movel #PACKET_SENT, (%d2) + bra tx_end + +tx_end_underrun: + movel #PACKET_UNDERRUN, (%d2) + bra tx_end + +tx_end_ret: rts + + +/****************************** PLX PCI9060 DMA memcpy ****************/ + +#if QUICC_MEMCPY_USES_PLX +// called with interrupts disabled +memcpy_from_pci_run: + movel %d0, -(%sp) + movew %sr, -(%sp) +memcpy_1: + movel PLX_DMA_CMD_STS, %d0 // do not btst PLX register directly + btstl #4, %d0 // transfer done? + bne memcpy_end + stop #0x2200 // enable PCI9060 interrupts + movew #0x2700, %sr // disable interrupts again + bra memcpy_1 + +memcpy_to_pci_run: + movel %d0, -(%sp) + movew %sr, -(%sp) +memcpy_2: + movel PLX_DMA_CMD_STS, %d0 // do not btst PLX register directly + btstl #12, %d0 // transfer done? + bne memcpy_end + stop #0x2200 // enable PCI9060 interrupts + movew #0x2700, %sr // disable interrupts again + bra memcpy_2 + +memcpy_end: + movew (%sp)+, %sr + movel (%sp)+, %d0 + rts +#endif + + + + + + +/****************************** PLX PCI9060 interrupt *****************/ + +pci9060_interrupt: + movel %d0, -(%sp) + + movel PLX_DOORBELL_TO_CARD, %d0 + movel %d0, PLX_DOORBELL_TO_CARD // confirm all requests + orl %d0, channel_stats + + movel #0x0909, PLX_DMA_CMD_STS // clear DMA ch #0 and #1 interrupts + + movel (%sp)+, %d0 + rte + +/****************************** SCC interrupts ************************/ + +port_interrupt_1: + orl #0, SCC1_REGS + SCC_SCCE; // confirm SCC events + orl #1 << TASK_SCC_0, channel_stats + movel #0x40000000, CISR + rte + +port_interrupt_2: + orl #0, SCC2_REGS + SCC_SCCE; // confirm SCC events + orl #1 << TASK_SCC_1, channel_stats + movel #0x20000000, CISR + rte + +port_interrupt_3: + orl #0, SCC3_REGS + SCC_SCCE; // confirm SCC events + orl #1 << TASK_SCC_2, channel_stats + movel #0x10000000, CISR + rte + +port_interrupt_4: + orl #0, SCC4_REGS + SCC_SCCE; // confirm SCC events + orl #1 << TASK_SCC_3, channel_stats + movel #0x08000000, CISR + rte + +error_interrupt: + rte + + +/****************************** cable and PM routine ******************/ +// modified registers: none +check_csr: + movel %d0, -(%sp) + movel %d1, -(%sp) + movel %d2, -(%sp) + movel %a0, -(%sp) + movel %a1, -(%sp) + + clrl %d0 // D0 = 4 * port + movel #CSRA, %a0 // A0 = CSR address + +check_csr_loop: + movew (%a0), %d1 // D1 = CSR input bits + andl #0xE7, %d1 // PM and cable sense bits (no DCE bit) + cmpw #STATUS_CABLE_V35 * (1 + 1 << STATUS_CABLE_PM_SHIFT), %d1 + bne check_csr_1 + movew #0x0E08, %d1 + bra check_csr_valid + +check_csr_1: + cmpw #STATUS_CABLE_X21 * (1 + 1 << STATUS_CABLE_PM_SHIFT), %d1 + bne check_csr_2 + movew #0x0408, %d1 + bra check_csr_valid + +check_csr_2: + cmpw #STATUS_CABLE_V24 * (1 + 1 << STATUS_CABLE_PM_SHIFT), %d1 + bne check_csr_3 + movew #0x0208, %d1 + bra check_csr_valid + +check_csr_3: + cmpw #STATUS_CABLE_EIA530 * (1 + 1 << STATUS_CABLE_PM_SHIFT), %d1 + bne check_csr_disable + movew #0x0D08, %d1 + bra check_csr_valid + +check_csr_disable: + movew #0x0008, %d1 // D1 = disable everything + movew #0x80E7, %d2 // D2 = input mask: ignore DSR + bra check_csr_write + +check_csr_valid: // D1 = mode and IRQ bits + movew csr_output(%d0), %d2 + andw #0x3000, %d2 // D2 = requested LL and DTR bits + orw %d2, %d1 // D1 = all requested output bits + movew #0x80FF, %d2 // D2 = input mask: include DSR + +check_csr_write: + cmpw old_csr_output(%d0), %d1 + beq check_csr_input + movew %d1, old_csr_output(%d0) + movew %d1, (%a0) // Write CSR output bits + +check_csr_input: + movew (PCDAT), %d1 + andw dcd_mask(%d0), %d1 + beq check_csr_dcd_on // DCD and CTS signals are negated + movew (%a0), %d1 // D1 = CSR input bits + andw #~STATUS_CABLE_DCD, %d1 // DCD off + bra check_csr_previous + +check_csr_dcd_on: + movew (%a0), %d1 // D1 = CSR input bits + orw #STATUS_CABLE_DCD, %d1 // DCD on +check_csr_previous: + andw %d2, %d1 // input mask + movel ch_status_addr(%d0), %a1 + cmpl STATUS_CABLE(%a1), %d1 // check for change + beq check_csr_next + movel %d1, STATUS_CABLE(%a1) // update status + movel bell_cable(%d0), PLX_DOORBELL_FROM_CARD // signal the host + +check_csr_next: + addl #2, %a0 // next CSR register + addl #4, %d0 // D0 = 4 * next port + cmpl #4 * 4, %d0 + bne check_csr_loop + + movel (%sp)+, %a1 + movel (%sp)+, %a0 + movel (%sp)+, %d2 + movel (%sp)+, %d1 + movel (%sp)+, %d0 + rts + + +/****************************** timer interrupt ***********************/ + +timer_interrupt: + bsr check_csr + rte + + +/****************************** RAM sizing and test *******************/ +#if DETECT_RAM +ram_test: + movel #0x12345678, %d1 // D1 = test value + movel %d1, (128 * 1024 - 4) + movel #128 * 1024, %d0 // D0 = RAM size tested +ram_test_size: + cmpl #MAX_RAM_SIZE, %d0 + beq ram_test_size_found + movel %d0, %a0 + addl #128 * 1024 - 4, %a0 + cmpl (%a0), %d1 + beq ram_test_size_check +ram_test_next_size: + lsll #1, %d0 + bra ram_test_size + +ram_test_size_check: + eorl #0xFFFFFFFF, %d1 + movel %d1, (128 * 1024 - 4) + cmpl (%a0), %d1 + bne ram_test_next_size + +ram_test_size_found: // D0 = RAM size + movel %d0, %a0 // A0 = fill ptr + subl #firmware_end + 4, %d0 + lsrl #2, %d0 + movel %d0, %d1 // D1 = DBf counter +ram_test_fill: + movel %a0, -(%a0) + dbfw %d1, ram_test_fill + subl #0x10000, %d1 + cmpl #0xFFFFFFFF, %d1 + bne ram_test_fill + +ram_test_loop: // D0 = DBf counter + cmpl (%a0)+, %a0 + dbnew %d0, ram_test_loop + bne ram_test_found_bad + subl #0x10000, %d0 + cmpl #0xFFFFFFFF, %d0 + bne ram_test_loop + bra ram_test_all_ok + +ram_test_found_bad: + subl #4, %a0 +ram_test_all_ok: + movel %a0, PLX_MAILBOX_5 + rts +#endif + + +/****************************** constants *****************************/ + +scc_reg_addr: + .long SCC1_REGS, SCC2_REGS, SCC3_REGS, SCC4_REGS +scc_base_addr: + .long SCC1_BASE, SCC2_BASE, SCC3_BASE, SCC4_BASE + +tx_first_bd: + .long DPRBASE + .long DPRBASE + (TX_BUFFERS + RX_BUFFERS) * 8 + .long DPRBASE + (TX_BUFFERS + RX_BUFFERS) * 8 * 2 + .long DPRBASE + (TX_BUFFERS + RX_BUFFERS) * 8 * 3 + +rx_first_bd: + .long DPRBASE + TX_BUFFERS * 8 + .long DPRBASE + TX_BUFFERS * 8 + (TX_BUFFERS + RX_BUFFERS) * 8 + .long DPRBASE + TX_BUFFERS * 8 + (TX_BUFFERS + RX_BUFFERS) * 8 * 2 + .long DPRBASE + TX_BUFFERS * 8 + (TX_BUFFERS + RX_BUFFERS) * 8 * 3 + +first_buffer: + .long BUFFERS_ADDR + .long BUFFERS_ADDR + (TX_BUFFERS + RX_BUFFERS) * BUFFER_LENGTH + .long BUFFERS_ADDR + (TX_BUFFERS + RX_BUFFERS) * BUFFER_LENGTH * 2 + .long BUFFERS_ADDR + (TX_BUFFERS + RX_BUFFERS) * BUFFER_LENGTH * 3 + +bell_tx: + .long 1 << DOORBELL_FROM_CARD_TX_0, 1 << DOORBELL_FROM_CARD_TX_1 + .long 1 << DOORBELL_FROM_CARD_TX_2, 1 << DOORBELL_FROM_CARD_TX_3 + +bell_cable: + .long 1 << DOORBELL_FROM_CARD_CABLE_0, 1 << DOORBELL_FROM_CARD_CABLE_1 + .long 1 << DOORBELL_FROM_CARD_CABLE_2, 1 << DOORBELL_FROM_CARD_CABLE_3 + +packet_full: + .long PACKET_FULL, PACKET_FULL + 1, PACKET_FULL + 2, PACKET_FULL + 3 + +clocking_ext: + .long 0x0000002C, 0x00003E00, 0x002C0000, 0x3E000000 +clocking_txfromrx: + .long 0x0000002D, 0x00003F00, 0x002D0000, 0x3F000000 +clocking_mask: + .long 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 +dcd_mask: + .word 0x020, 0, 0x080, 0, 0x200, 0, 0x800 + + .ascii "wanXL firmware\n" + .asciz "Copyright (C) 2003 Krzysztof Halasa \n" + + +/****************************** variables *****************************/ + + .align 4 +channel_stats: .long 0 + +tx_in: .long 0, 0, 0, 0 // transmitted +tx_out: .long 0, 0, 0, 0 // received from host for transmission +tx_count: .long 0, 0, 0, 0 // currently in transmit queue + +rx_in: .long 0, 0, 0, 0 // received from port +rx_out: .long 0 // transmitted to host +parity_bytes: .word 0, 0, 0, 0, 0, 0, 0 // only 4 words are used + +csr_output: .word 0 +old_csr_output: .word 0, 0, 0, 0, 0, 0, 0 + .align 4 +firmware_end: // must be dword-aligned diff -Nru a/drivers/net/wan/wanxlfw.inc b/drivers/net/wan/wanxlfw.inc --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/net/wan/wanxlfw.inc Mon Sep 22 00:30:25 2003 @@ -0,0 +1,158 @@ +static u8 firmware[]={ +0x60,0x00,0x00,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0xB9,0x40,0x00,0x00,0x00,0x00,0x00, +0x10,0x14,0x42,0x80,0x4A,0xB0,0x09,0xB0,0x00,0x00,0x10,0x04,0x67,0x00,0x00,0x0E, +0x06,0xB0,0x40,0x00,0x00,0x00,0x09,0xB0,0x00,0x00,0x10,0x04,0x58,0x80,0x0C,0x80, +0x00,0x00,0x00,0x10,0x66,0x00,0xFF,0xDE,0x21,0xFC,0x00,0x00,0x16,0xBC,0x00,0x6C, +0x21,0xFC,0x00,0x00,0x17,0x5E,0x01,0x00,0x21,0xFC,0x00,0x00,0x16,0xDE,0x01,0x78, +0x21,0xFC,0x00,0x00,0x16,0xFE,0x01,0x74,0x21,0xFC,0x00,0x00,0x17,0x1E,0x01,0x70, +0x21,0xFC,0x00,0x00,0x17,0x3E,0x01,0x6C,0x21,0xFC,0x00,0x00,0x18,0x4C,0x02,0x00, +0x23,0xFC,0x78,0x00,0x00,0x00,0xFF,0xFC,0x15,0x48,0x33,0xFC,0x04,0x80,0xFF,0xFC, +0x10,0x26,0x33,0xFC,0x01,0x10,0xFF,0xFC,0x10,0x2A,0x23,0xFC,0x00,0xD4,0x9F,0x40, +0xFF,0xFC,0x15,0x40,0x23,0xFC,0x00,0x00,0x05,0x43,0xFF,0xF9,0x01,0x00,0x23,0xFC, +0x00,0x00,0x05,0x43,0xFF,0xF9,0x01,0x14,0x23,0xFC,0x00,0x00,0x00,0x00,0xFF,0xF9, +0x01,0x10,0x23,0xFC,0x00,0x00,0x00,0x08,0xFF,0xF9,0x01,0x24,0x23,0xFC,0x00,0x00, +0x01,0x01,0xFF,0xF9,0x01,0x28,0x00,0xB9,0x00,0x0F,0x03,0x00,0xFF,0xF9,0x00,0xE8, +0x23,0xFC,0x00,0x00,0x00,0x01,0xFF,0xF9,0x00,0xD4,0x61,0x00,0x06,0x74,0x33,0xFC, +0xFF,0xFF,0xFF,0xFC,0x15,0x52,0x42,0x79,0xFF,0xFC,0x15,0x50,0x42,0x79,0xFF,0xFC, +0x15,0x64,0x2E,0x3A,0x08,0x50,0x42,0xB9,0x00,0x00,0x19,0x54,0x4A,0x87,0x66,0x00, +0x00,0x0E,0x4E,0x72,0x22,0x00,0x46,0xFC,0x27,0x00,0x60,0x00,0xFF,0xE6,0x42,0x80, +0x42,0x86,0x08,0x07,0x00,0x04,0x67,0x00,0x00,0x0A,0x08,0x87,0x00,0x00,0x61,0x00, +0x02,0xA0,0x08,0x07,0x00,0x00,0x67,0x00,0x00,0x06,0x61,0x00,0x00,0x36,0x08,0x07, +0x00,0x08,0x67,0x00,0x00,0x06,0x61,0x00,0x02,0xB8,0x08,0x07,0x00,0x0C,0x67,0x00, +0x00,0x0A,0x61,0x00,0x04,0x94,0x61,0x00,0x03,0x60,0xE2,0x8F,0x58,0x80,0x0C,0x80, +0x00,0x00,0x00,0x10,0x66,0x00,0xFF,0xBC,0x23,0xC6,0xFF,0xF9,0x00,0xE4,0x60,0x00, +0xFF,0x92,0x20,0x70,0x09,0xB0,0x00,0x00,0x10,0x04,0x4A,0xA8,0x00,0x00,0x66,0x00, +0x02,0x4E,0x21,0x7C,0x00,0x00,0x00,0x01,0x00,0x00,0x42,0xB0,0x09,0xB0,0x00,0x00, +0x19,0x58,0x42,0xB0,0x09,0xB0,0x00,0x00,0x19,0x68,0x42,0xB0,0x09,0xB0,0x00,0x00, +0x19,0x78,0x42,0xB0,0x09,0xB0,0x00,0x00,0x19,0x88,0x22,0x39,0xFF,0xFC,0x16,0xEC, +0xC2,0xB0,0x09,0xB0,0x00,0x00,0x18,0xF2,0x0C,0xA8,0x00,0x00,0x00,0x04,0x00,0x18, +0x66,0x00,0x00,0x0E,0x82,0xB0,0x09,0xB0,0x00,0x00,0x18,0xE2,0x60,0x00,0x00,0x0A, +0x82,0xB0,0x09,0xB0,0x00,0x00,0x18,0xD2,0x23,0xC1,0xFF,0xFC,0x16,0xEC,0x00,0x70, +0x10,0x00,0x09,0xB0,0x00,0x00,0x19,0xAA,0x61,0x00,0x05,0x76,0x22,0x30,0x09,0xB0, +0x00,0x00,0x18,0x92,0x22,0x70,0x09,0xB0,0x00,0x00,0x18,0x72,0x74,0x08,0x26,0x3C, +0x18,0x00,0x00,0x00,0x0C,0xA8,0x00,0x00,0x00,0x01,0x00,0x10,0x67,0x00,0x00,0x06, +0x08,0xC3,0x00,0x1A,0x22,0xC3,0x22,0xC1,0x06,0x81,0x00,0x00,0x05,0xFC,0x51,0xCA, +0xFF,0xF4,0x08,0xC3,0x00,0x1D,0x22,0xC3,0x22,0xC1,0x74,0x1C,0x22,0xFC,0x90,0x00, +0x00,0x00,0x22,0xC1,0x06,0x81,0x00,0x00,0x05,0xFC,0x51,0xCA,0xFF,0xF0,0x22,0xFC, +0xB0,0x00,0x00,0x00,0x22,0xC1,0x22,0x70,0x09,0xB0,0x00,0x00,0x18,0x62,0x24,0x70, +0x09,0xB0,0x00,0x00,0x18,0x52,0x25,0x7C,0x00,0x00,0xFF,0xFF,0x00,0x10,0x25,0x7C, +0x00,0x00,0x00,0x00,0x00,0x14,0x22,0x30,0x09,0xB0,0x00,0x00,0x18,0x72,0x33,0x41, +0x00,0x02,0x06,0x81,0x00,0x00,0x00,0x50,0x33,0x41,0x00,0x00,0x13,0x7C,0x00,0x08, +0x00,0x04,0x13,0x7C,0x00,0x08,0x00,0x05,0x0C,0xA8,0x00,0x00,0x00,0x05,0x00,0x10, +0x66,0x00,0x00,0x2A,0x42,0x6A,0x00,0x08,0x23,0x7C,0x00,0x00,0xF0,0xB8,0x00,0x34, +0x23,0x7C,0x00,0x00,0xFF,0xFF,0x00,0x38,0x33,0x7C,0x05,0xFA,0x00,0x46,0x31,0xBC, +0x00,0x02,0x09,0xB0,0x00,0x00,0x19,0x9C,0x60,0x00,0x00,0xBC,0x0C,0xA8,0x00,0x00, +0x00,0x07,0x00,0x10,0x66,0x00,0x00,0x2C,0x35,0x7C,0x08,0x00,0x00,0x08,0x23,0x7C, +0xDE,0xBB,0x20,0xE3,0x00,0x34,0x23,0x7C,0xFF,0xFF,0xFF,0xFF,0x00,0x38,0x33,0x7C, +0x05,0xFC,0x00,0x46,0x31,0xBC,0x00,0x04,0x09,0xB0,0x00,0x00,0x19,0x9C,0x60,0x00, +0x00,0x86,0x0C,0xA8,0x00,0x00,0x00,0x04,0x00,0x10,0x66,0x00,0x00,0x26,0x42,0x6A, +0x00,0x08,0x23,0x7C,0x00,0x00,0xF0,0xB8,0x00,0x34,0x42,0xA9,0x00,0x38,0x33,0x7C, +0x05,0xFA,0x00,0x46,0x31,0xBC,0x00,0x02,0x09,0xB0,0x00,0x00,0x19,0x9C,0x60,0x00, +0x00,0x56,0x0C,0xA8,0x00,0x00,0x00,0x06,0x00,0x10,0x66,0x00,0x00,0x28,0x35,0x7C, +0x08,0x00,0x00,0x08,0x23,0x7C,0xDE,0xBB,0x20,0xE3,0x00,0x34,0x42,0xA9,0x00,0x38, +0x33,0x7C,0x05,0xFC,0x00,0x46,0x31,0xBC,0x00,0x04,0x09,0xB0,0x00,0x00,0x19,0x9C, +0x60,0x00,0x00,0x24,0x42,0x6A,0x00,0x08,0x23,0x7C,0x00,0x00,0xF0,0xB8,0x00,0x34, +0x23,0x7C,0x00,0x00,0xFF,0xFF,0x00,0x38,0x33,0x7C,0x05,0xF8,0x00,0x46,0x42,0x70, +0x09,0xB0,0x00,0x00,0x19,0x9C,0x25,0x7C,0x00,0x00,0x00,0x03,0x00,0x04,0x0C,0xA8, +0x00,0x00,0x00,0x02,0x00,0x14,0x66,0x00,0x00,0x0E,0x25,0x7C,0x10,0x04,0x09,0x00, +0x00,0x00,0x60,0x00,0x00,0x0A,0x25,0x7C,0x10,0x04,0x00,0x00,0x00,0x00,0x33,0x7C, +0x05,0xFC,0x00,0x06,0x22,0x00,0xE9,0x89,0x00,0x81,0x00,0x00,0x00,0x01,0x33,0xC1, +0xFF,0xFC,0x15,0xC0,0x08,0x39,0x00,0x00,0xFF,0xFC,0x15,0xC0,0x66,0x00,0xFF,0xF6, +0x35,0x7C,0x00,0x1F,0x00,0x14,0x00,0xAA,0x00,0x00,0x00,0x30,0x00,0x00,0x4E,0x75, +0x20,0x70,0x09,0xB0,0x00,0x00,0x18,0x52,0x42,0x68,0x00,0x14,0x02,0xA8,0xFF,0xFF, +0xFF,0xCF,0x00,0x00,0x02,0x70,0xEF,0xFF,0x09,0xB0,0x00,0x00,0x19,0xAA,0x61,0x00, +0x03,0x70,0x22,0x30,0x09,0xB0,0x00,0x00,0x10,0x04,0x42,0xB0,0x19,0x90,0x4E,0x75, +0x0C,0xB0,0x00,0x00,0x00,0x0A,0x09,0xB0,0x00,0x00,0x19,0x78,0x67,0x00,0x00,0xA8, +0x22,0x30,0x09,0xB0,0x00,0x00,0x19,0x68,0x24,0x01,0x4C,0x3C,0x20,0x00,0x00,0x00, +0x00,0x0C,0xD4,0xB0,0x09,0xB0,0x00,0x00,0x10,0x04,0x06,0x82,0x00,0x00,0x00,0x1C, +0x0C,0xB0,0x00,0x00,0x00,0x10,0x29,0x90,0x66,0x00,0x00,0x7C,0x20,0x70,0x29,0xA0, +0x00,0x04,0xE7,0x89,0xD2,0xB0,0x09,0xB0,0x00,0x00,0x18,0x72,0x22,0x70,0x19,0xA0, +0x00,0x04,0x24,0x30,0x29,0xA0,0x00,0x08,0x31,0x82,0x19,0xA0,0x00,0x02,0x56,0x82, +0x02,0x82,0xFF,0xFF,0xFF,0xFC,0x23,0xC8,0xFF,0xF9,0x01,0x04,0x23,0xC9,0xFF,0xF9, +0x01,0x08,0x23,0xC2,0xFF,0xF9,0x01,0x0C,0x23,0xFC,0x00,0x00,0x01,0x03,0xFF,0xF9, +0x01,0x28,0x61,0x00,0x01,0xF6,0x08,0xF0,0x00,0x1F,0x19,0x90,0x22,0x30,0x09,0xB0, +0x00,0x00,0x19,0x68,0x52,0x81,0x0C,0x81,0x00,0x00,0x00,0x0A,0x66,0x00,0x00,0x04, +0x42,0x81,0x21,0x81,0x09,0xB0,0x00,0x00,0x19,0x68,0x52,0xB0,0x09,0xB0,0x00,0x00, +0x19,0x78,0x60,0x00,0xFF,0x4C,0x4E,0x75,0x22,0x30,0x09,0xB0,0x00,0x00,0x19,0x88, +0xE7,0x89,0xD2,0xB0,0x09,0xB0,0x00,0x00,0x18,0x82,0x34,0x30,0x19,0x90,0x08,0x02, +0x00,0x0F,0x66,0x00,0x01,0x12,0x08,0x02,0x00,0x01,0x66,0x00,0x00,0xE6,0x4A,0x70, +0x09,0xB0,0x00,0x00,0x19,0x9C,0x66,0x00,0x00,0x06,0x08,0x82,0x00,0x02,0x02,0x42, +0x0C,0xBC,0x0C,0x42,0x0C,0x00,0x66,0x00,0x00,0xDC,0x42,0x83,0x36,0x30,0x19,0xA0, +0x00,0x02,0x96,0x70,0x09,0xB0,0x00,0x00,0x19,0x9C,0x0C,0x43,0x05,0xF8,0x6E,0x00, +0x00,0xC4,0x24,0x3A,0x04,0x84,0x4C,0x3C,0x20,0x00,0x00,0x00,0x00,0x0C,0xD4,0xBA, +0xFA,0xF4,0x0C,0xB0,0x00,0x00,0x00,0x00,0x29,0x90,0x66,0x00,0x00,0x96,0x21,0x83, +0x29,0xA0,0x00,0x08,0x20,0x70,0x19,0xA0,0x00,0x04,0x22,0x70,0x29,0xA0,0x00,0x04, +0x4A,0x89,0x67,0x00,0x00,0x2A,0x56,0x83,0x02,0x83,0xFF,0xFF,0xFF,0xFC,0x23,0xC8, +0xFF,0xF9,0x01,0x1C,0x23,0xC9,0xFF,0xF9,0x01,0x18,0x23,0xC3,0xFF,0xF9,0x01,0x20, +0x23,0xFC,0x00,0x00,0x03,0x01,0xFF,0xF9,0x01,0x28,0x61,0x00,0x01,0x2C,0x21,0xB0, +0x09,0xB0,0x00,0x00,0x18,0xC2,0x29,0x90,0x08,0xC6,0x00,0x04,0x24,0x3A,0x04,0x1A, +0x52,0x82,0x0C,0x82,0x00,0x00,0x00,0x28,0x66,0x00,0x00,0x04,0x42,0x82,0x23,0xC2, +0x00,0x00,0x19,0x98,0x02,0x70,0xF0,0x00,0x19,0x90,0x08,0xF0,0x00,0x1F,0x19,0x90, +0x22,0x30,0x09,0xB0,0x00,0x00,0x19,0x88,0x52,0x81,0x0C,0x81,0x00,0x00,0x00,0x1E, +0x66,0x00,0x00,0x04,0x42,0x81,0x21,0x81,0x09,0xB0,0x00,0x00,0x19,0x88,0x60,0x00, +0xFE,0xF8,0x24,0x30,0x09,0xB0,0x00,0x00,0x10,0x04,0x52,0xB0,0x29,0xA0,0x00,0x08, +0x60,0x00,0xFF,0xC2,0x24,0x30,0x09,0xB0,0x00,0x00,0x10,0x04,0x52,0xB0,0x29,0xA0, +0x00,0x0C,0x60,0x00,0xFF,0xB0,0x4E,0x75,0x4A,0xB0,0x09,0xB0,0x00,0x00,0x19,0x78, +0x67,0x00,0x00,0x86,0x22,0x30,0x09,0xB0,0x00,0x00,0x19,0x58,0x24,0x01,0xE7,0x89, +0xD2,0xB0,0x09,0xB0,0x00,0x00,0x18,0x72,0x36,0x30,0x19,0x90,0x08,0x03,0x00,0x0F, +0x66,0x00,0x00,0x66,0x8C,0xB0,0x09,0xB0,0x00,0x00,0x18,0xA2,0x53,0xB0,0x09,0xB0, +0x00,0x00,0x19,0x78,0x22,0x30,0x09,0xB0,0x00,0x00,0x19,0x58,0x52,0x81,0x0C,0x81, +0x00,0x00,0x00,0x0A,0x66,0x00,0x00,0x04,0x42,0x81,0x21,0x81,0x09,0xB0,0x00,0x00, +0x19,0x58,0x4C,0x3C,0x20,0x00,0x00,0x00,0x00,0x0C,0xD4,0xB0,0x09,0xB0,0x00,0x00, +0x10,0x04,0x06,0x82,0x00,0x00,0x00,0x1C,0x08,0x03,0x00,0x01,0x66,0x00,0x00,0x0E, +0x21,0xBC,0x00,0x00,0x00,0x20,0x29,0x90,0x60,0x00,0xFF,0x7E,0x21,0xBC,0x00,0x00, +0x00,0x30,0x29,0x90,0x60,0x00,0xFF,0x72,0x4E,0x75,0x2F,0x00,0x40,0xE7,0x20,0x39, +0xFF,0xF9,0x01,0x28,0x08,0x00,0x00,0x04,0x66,0x00,0x00,0x2C,0x4E,0x72,0x22,0x00, +0x46,0xFC,0x27,0x00,0x60,0x00,0xFF,0xE8,0x2F,0x00,0x40,0xE7,0x20,0x39,0xFF,0xF9, +0x01,0x28,0x08,0x00,0x00,0x0C,0x66,0x00,0x00,0x0E,0x4E,0x72,0x22,0x00,0x46,0xFC, +0x27,0x00,0x60,0x00,0xFF,0xE8,0x46,0xDF,0x20,0x1F,0x4E,0x75,0x2F,0x00,0x20,0x39, +0xFF,0xF9,0x00,0xE0,0x23,0xC0,0xFF,0xF9,0x00,0xE0,0x81,0xB9,0x00,0x00,0x19,0x54, +0x23,0xFC,0x00,0x00,0x09,0x09,0xFF,0xF9,0x01,0x28,0x20,0x1F,0x4E,0x73,0x00,0xB9, +0x00,0x00,0x00,0x00,0xFF,0xFC,0x16,0x10,0x00,0xB9,0x00,0x00,0x10,0x00,0x00,0x00, +0x19,0x54,0x23,0xFC,0x40,0x00,0x00,0x00,0xFF,0xFC,0x15,0x4C,0x4E,0x73,0x00,0xB9, +0x00,0x00,0x00,0x00,0xFF,0xFC,0x16,0x30,0x00,0xB9,0x00,0x00,0x20,0x00,0x00,0x00, +0x19,0x54,0x23,0xFC,0x20,0x00,0x00,0x00,0xFF,0xFC,0x15,0x4C,0x4E,0x73,0x00,0xB9, +0x00,0x00,0x00,0x00,0xFF,0xFC,0x16,0x50,0x00,0xB9,0x00,0x00,0x40,0x00,0x00,0x00, +0x19,0x54,0x23,0xFC,0x10,0x00,0x00,0x00,0xFF,0xFC,0x15,0x4C,0x4E,0x73,0x00,0xB9, +0x00,0x00,0x00,0x00,0xFF,0xFC,0x16,0x70,0x00,0xB9,0x00,0x00,0x80,0x00,0x00,0x00, +0x19,0x54,0x23,0xFC,0x08,0x00,0x00,0x00,0xFF,0xFC,0x15,0x4C,0x4E,0x73,0x4E,0x73, +0x2F,0x00,0x2F,0x01,0x2F,0x02,0x2F,0x08,0x2F,0x09,0x42,0x80,0x20,0x7C,0xFF,0xFB, +0x00,0x00,0x32,0x10,0x02,0x81,0x00,0x00,0x00,0xE7,0x0C,0x41,0x00,0x42,0x66,0x00, +0x00,0x0A,0x32,0x3C,0x0E,0x08,0x60,0x00,0x00,0x3E,0x0C,0x41,0x00,0x63,0x66,0x00, +0x00,0x0A,0x32,0x3C,0x04,0x08,0x60,0x00,0x00,0x2E,0x0C,0x41,0x00,0x84,0x66,0x00, +0x00,0x0A,0x32,0x3C,0x02,0x08,0x60,0x00,0x00,0x1E,0x0C,0x41,0x00,0xA5,0x66,0x00, +0x00,0x0A,0x32,0x3C,0x0D,0x08,0x60,0x00,0x00,0x0E,0x32,0x3C,0x00,0x08,0x34,0x3C, +0x80,0xE7,0x60,0x00,0x00,0x14,0x34,0x30,0x09,0xB0,0x00,0x00,0x19,0xAA,0x02,0x42, +0x30,0x00,0x82,0x42,0x34,0x3C,0x80,0xFF,0xB2,0x70,0x09,0xB0,0x00,0x00,0x19,0xAC, +0x67,0x00,0x00,0x0C,0x31,0x81,0x09,0xB0,0x00,0x00,0x19,0xAC,0x30,0x81,0x32,0x39, +0xFF,0xFC,0x15,0x66,0xC2,0x70,0x09,0xB0,0x00,0x00,0x19,0x02,0x67,0x00,0x00,0x0C, +0x32,0x10,0x02,0x41,0xFF,0xF7,0x60,0x00,0x00,0x08,0x32,0x10,0x00,0x41,0x00,0x08, +0xC2,0x42,0x22,0x70,0x09,0xB0,0x00,0x00,0x10,0x04,0xB2,0xA9,0x00,0x04,0x67,0x00, +0x00,0x12,0x23,0x41,0x00,0x04,0x23,0xF0,0x09,0xB0,0x00,0x00,0x18,0xB2,0xFF,0xF9, +0x00,0xE4,0x54,0x88,0x58,0x80,0x0C,0x80,0x00,0x00,0x00,0x10,0x66,0x00,0xFF,0x34, +0x22,0x5F,0x20,0x5F,0x24,0x1F,0x22,0x1F,0x20,0x1F,0x4E,0x75,0x61,0x00,0xFF,0x12, +0x4E,0x73,0xFF,0xFC,0x16,0x00,0xFF,0xFC,0x16,0x20,0xFF,0xFC,0x16,0x40,0xFF,0xFC, +0x16,0x60,0xFF,0xFC,0x0C,0x00,0xFF,0xFC,0x0D,0x00,0xFF,0xFC,0x0E,0x00,0xFF,0xFC, +0x0F,0x00,0xFF,0xFC,0x00,0x00,0xFF,0xFC,0x01,0x40,0xFF,0xFC,0x02,0x80,0xFF,0xFC, +0x03,0xC0,0xFF,0xFC,0x00,0x50,0xFF,0xFC,0x01,0x90,0xFF,0xFC,0x02,0xD0,0xFF,0xFC, +0x04,0x10,0x00,0x00,0x40,0x00,0x00,0x01,0x2F,0x60,0x00,0x02,0x1E,0xC0,0x00,0x03, +0x0E,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x00,0x00, +0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x00,0x00, +0x01,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x12,0x00,0x00, +0x00,0x13,0x00,0x00,0x00,0x2C,0x00,0x00,0x3E,0x00,0x00,0x2C,0x00,0x00,0x3E,0x00, +0x00,0x00,0x00,0x00,0x00,0x2D,0x00,0x00,0x3F,0x00,0x00,0x2D,0x00,0x00,0x3F,0x00, +0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00, +0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x80,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00, +0x77,0x61,0x6E,0x58,0x4C,0x20,0x66,0x69,0x72,0x6D,0x77,0x61,0x72,0x65,0x0A,0x43, +0x6F,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x43,0x29,0x20,0x32,0x30,0x30, +0x33,0x20,0x4B,0x72,0x7A,0x79,0x73,0x7A,0x74,0x6F,0x66,0x20,0x48,0x61,0x6C,0x61, +0x73,0x61,0x20,0x3C,0x6B,0x68,0x63,0x40,0x70,0x6D,0x2E,0x77,0x61,0x77,0x2E,0x70, +0x6C,0x3E,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +}; diff -Nru a/drivers/net/wd.c b/drivers/net/wd.c --- a/drivers/net/wd.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/wd.c Mon Sep 22 00:30:18 2003 @@ -235,7 +235,7 @@ int reg4 = inb(ioaddr+4); if (ancient || reg1 == 0xff) { /* Ack!! No way to read the IRQ! */ short nic_addr = ioaddr+WD_NIC_OFFSET; - unsigned long irq_mask, delay; + unsigned long irq_mask; /* We have an old-style ethercard that doesn't report its IRQ line. Do autoirq to find the IRQ line. Note that this IS NOT @@ -248,8 +248,7 @@ outb_p(0x00, nic_addr + EN0_RCNTLO); outb_p(0x00, nic_addr + EN0_RCNTHI); outb(E8390_RREAD+E8390_START, nic_addr); /* Trigger it... */ - delay = jiffies + HZ/50; - while (time_before(jiffies, delay)) ; + mdelay(20); dev->irq = probe_irq_off(irq_mask); outb_p(0x00, nic_addr+EN0_IMR); /* Mask all intrs. again. */ diff -Nru a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c --- a/drivers/net/wireless/airo.c Mon Sep 22 00:30:18 2003 +++ b/drivers/net/wireless/airo.c Mon Sep 22 00:30:18 2003 @@ -18,7 +18,6 @@ ======================================================================*/ #include -#include #include #include @@ -42,7 +41,6 @@ #include #include #include -#include #include #include @@ -1435,7 +1433,7 @@ int i,j; u32 counter; - u8 *cipher; + u8 *cipher, plain[16]; struct scatterlist sg[1]; crypto_cipher_setkey(tfm, pkey, 16); @@ -1446,8 +1444,9 @@ aes_counter[13] = (u8)(counter >> 16); aes_counter[12] = (u8)(counter >> 24); counter++; - sg[0].page = virt_to_page(aes_counter); - sg[0].offset = ((long) aes_counter & ~PAGE_MASK); + memcpy (plain, aes_counter, 16); + sg[0].page = virt_to_page(plain); + sg[0].offset = ((long) plain & ~PAGE_MASK); sg[0].length = 16; crypto_cipher_encrypt(tfm, sg, sg, 16); cipher = kmap(sg[0].page) + sg[0].offset; @@ -4624,7 +4623,7 @@ return -ENODEV; pci_set_drvdata(pdev, dev); - clear_bit (FLAG_PCI, &((struct airo_info *)dev->priv)->flags); + set_bit (FLAG_PCI, &((struct airo_info *)dev->priv)->flags); return 0; } diff -Nru a/drivers/net/wireless/airo_cs.c b/drivers/net/wireless/airo_cs.c --- a/drivers/net/wireless/airo_cs.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/wireless/airo_cs.c Mon Sep 22 00:30:24 2003 @@ -163,24 +163,6 @@ /*====================================================================== - This bit of code is used to avoid unregistering network devices - at inappropriate times. 2.2 and later kernels are fairly picky - about when this can happen. - - ======================================================================*/ - -static void flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - airo_detach(link); - } -} - -/*====================================================================== - airo_attach() creates an "instance" of the driver, allocating local data structures for one device. The device is registered with Card Services. @@ -199,8 +181,7 @@ int ret, i; DEBUG(0, "airo_attach()\n"); - flush_stale_links(); - + /* Initialize the dev_link_t structure */ link = kmalloc(sizeof(struct dev_link_t), GFP_KERNEL); if (!link) { @@ -285,10 +266,8 @@ if (link->state & DEV_CONFIG) { airo_release(link); - if (link->state & DEV_STALE_CONFIG) { - link->state |= DEV_STALE_LINK; + if (link->state & DEV_STALE_CONFIG) return; - } } if ( ((local_info_t*)link->priv)->eth_dev ) { @@ -554,8 +533,10 @@ if (link->irq.AssignedIRQ) CardServices(ReleaseIRQ, link->handle, &link->irq); link->state &= ~DEV_CONFIG; - -} /* airo_release */ + + if (link->state & DEV_STALE_CONFIG) + airo_detach(link); +} /*====================================================================== diff -Nru a/drivers/net/wireless/arlan-proc.c b/drivers/net/wireless/arlan-proc.c --- a/drivers/net/wireless/arlan-proc.c Mon Sep 22 00:30:22 2003 +++ b/drivers/net/wireless/arlan-proc.c Mon Sep 22 00:30:22 2003 @@ -5,9 +5,6 @@ #ifdef CONFIG_PROC_FS - -#include - /* void enableReceive(struct net_device* dev); */ diff -Nru a/drivers/net/wireless/arlan.c b/drivers/net/wireless/arlan.c --- a/drivers/net/wireless/arlan.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/wireless/arlan.c Mon Sep 22 00:30:23 2003 @@ -5,6 +5,7 @@ * This module provides support for the Arlan 655 card made by Aironet */ +#include #include #include "arlan.h" diff -Nru a/drivers/net/wireless/arlan.h b/drivers/net/wireless/arlan.h --- a/drivers/net/wireless/arlan.h Mon Sep 22 00:30:22 2003 +++ b/drivers/net/wireless/arlan.h Mon Sep 22 00:30:22 2003 @@ -3,7 +3,6 @@ * Copyright (C) 1998 Elmer.Joandi@ut.ee, +37-255-13500 * GNU General Public License applies */ -#include #include #include diff -Nru a/drivers/net/wireless/atmel_cs.c b/drivers/net/wireless/atmel_cs.c --- a/drivers/net/wireless/atmel_cs.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/wireless/atmel_cs.c Mon Sep 22 00:30:21 2003 @@ -176,24 +176,6 @@ /*====================================================================== - This bit of code is used to avoid unregistering network devices - at inappropriate times. 2.2 and later kernels are fairly picky - about when this can happen. - - ======================================================================*/ - -static void flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - atmel_detach(link); - } -} - -/*====================================================================== - atmel_attach() creates an "instance" of the driver, allocating local data structures for one device. The device is registered with Card Services. @@ -212,8 +194,7 @@ int ret, i; DEBUG(0, "atmel_attach()\n"); - flush_stale_links(); - + /* Initialize the dev_link_t structure */ link = kmalloc(sizeof(struct dev_link_t), GFP_KERNEL); if (!link) { @@ -296,29 +277,19 @@ if (*linkp == NULL) return; - if ( link->state & DEV_CONFIG ) { + if (link->state & DEV_CONFIG) atmel_release(link); - if ( link->state & DEV_STALE_CONFIG ) { - link->state |= DEV_STALE_LINK; - return; - } - } - /* Break the link with Card Services */ if (link->handle) CardServices(DeregisterClient, link->handle); - - - + /* Unlink device structure, free pieces */ *linkp = link->next; - if (link->priv) { + if (link->priv) kfree(link->priv); - } kfree(link); - -} /* atmel_detach */ +} /*====================================================================== diff -Nru a/drivers/net/wireless/netwave_cs.c b/drivers/net/wireless/netwave_cs.c --- a/drivers/net/wireless/netwave_cs.c Mon Sep 22 00:30:25 2003 +++ b/drivers/net/wireless/netwave_cs.c Mon Sep 22 00:30:25 2003 @@ -211,7 +211,6 @@ insertion */ static dev_link_t *netwave_attach(void); /* Create instance */ static void netwave_detach(dev_link_t *); /* Destroy instance */ -static void netwave_flush_stale_links(void); /* Destroy all staled instances */ /* Hardware configuration */ static void netwave_doreset(ioaddr_t iobase, u_char* ramBase); @@ -444,9 +443,6 @@ DEBUG(0, "netwave_attach()\n"); - /* Perform some cleanup */ - netwave_flush_stale_links(); - /* Initialize the dev_link_t structure */ dev = alloc_etherdev(sizeof(netwave_private)); if (!dev) @@ -553,7 +549,6 @@ if (link->state & DEV_STALE_CONFIG) { DEBUG(1, "netwave_cs: detach postponed, '%s' still " "locked\n", link->dev->dev_name); - link->state |= DEV_STALE_LINK; return; } } @@ -581,31 +576,6 @@ } /* netwave_detach */ /* - * Function netwave_flush_stale_links (void) - * - * This deletes all driver "instances" that need to be deleted. - * Sometimes, netwave_detach can't be performed following a call from - * cardmgr (device still open) and the device is put in a STALE_LINK - * state. - * This function is in charge of making the cleanup... - */ -static void netwave_flush_stale_links(void) -{ - dev_link_t * link; /* Current node in linked list */ - dev_link_t * next; /* Next node in linked list */ - - DEBUG(1, "netwave_flush_stale_links(0x%p)\n", dev_list); - - /* Go through the list */ - for (link = dev_list; link; link = next) { - next = link->next; - /* Check if in need of being removed */ - if(link->state & DEV_STALE_LINK) - netwave_detach(link); - } -} /* netwave_flush_stale_links */ - -/* * Wireless Handler : get protocol name */ static int netwave_get_name(struct net_device *dev, @@ -1181,9 +1151,11 @@ CardServices(ReleaseIO, link->handle, &link->io); CardServices(ReleaseIRQ, link->handle, &link->irq); - link->state &= ~(DEV_CONFIG | DEV_STALE_CONFIG); + link->state &= ~DEV_CONFIG; -} /* netwave_release */ + if (link->state & DEV_STALE_CONFIG) + netwave_detach(link); +} /* * Function netwave_event (event, priority, args) @@ -1755,8 +1727,6 @@ { pcmcia_unregister_driver(&netwave_driver); - /* Do some cleanup of the device list */ - netwave_flush_stale_links(); if (dev_list != NULL) /* Critical situation */ printk("netwave_cs: devices remaining when removing module\n"); } diff -Nru a/drivers/net/wireless/orinoco_cs.c b/drivers/net/wireless/orinoco_cs.c --- a/drivers/net/wireless/orinoco_cs.c Mon Sep 22 00:30:24 2003 +++ b/drivers/net/wireless/orinoco_cs.c Mon Sep 22 00:30:24 2003 @@ -153,24 +153,6 @@ CardServices(ReportError, handle, &err); } - -/* Remove zombie instances (card removed, detach pending) */ -static void -flush_stale_links(void) -{ - dev_link_t *link, *next; - - TRACE_ENTER(""); - - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) { - orinoco_cs_detach(link); - } - } - TRACE_EXIT(""); -} - /* * This creates an "instance" of the driver, allocating local data * structures for one device. The device is registered with Card @@ -189,9 +171,6 @@ client_reg_t client_reg; int ret, i; - /* A bit of cleanup */ - flush_stale_links(); - dev = alloc_orinocodev(sizeof(*card), orinoco_cs_hard_reset); if (! dev) return NULL; @@ -266,13 +245,8 @@ return; } - if (link->state & DEV_CONFIG) { + if (link->state & DEV_CONFIG) orinoco_cs_release(link); - if (link->state & DEV_CONFIG) { - link->state |= DEV_STALE_LINK; - return; - } - } /* Break the link with Card Services */ if (link->handle) diff -Nru a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c --- a/drivers/net/wireless/ray_cs.c Mon Sep 22 00:30:21 2003 +++ b/drivers/net/wireless/ray_cs.c Mon Sep 22 00:30:21 2003 @@ -138,7 +138,7 @@ static void verify_dl_startup(u_long); /* Prototypes for interrpt time functions **********************************/ -static void ray_interrupt (int reg, void *dev_id, struct pt_regs *regs); +static irqreturn_t ray_interrupt (int reg, void *dev_id, struct pt_regs *regs); static void clear_interrupt(ray_dev_t *local); static void rx_deauthenticate(ray_dev_t *local, struct rcs *prcs, unsigned int pkt_addr, int rx_len); @@ -319,24 +319,6 @@ static char rcsid[] = "Raylink/WebGear wireless LAN - Corey "; -/*====================================================================== - - This bit of code is used to avoid unregistering network devices - at inappropriate times. 2.2 and later kernels are fairly picky - about when this can happen. - -======================================================================*/ - -static void flush_stale_links(void) -{ - dev_link_t *link, *next; - for (link = dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - ray_detach(link); - } -} - /*============================================================================= ray_attach() creates an "instance" of the driver, allocating local data structures for one device. The device is registered @@ -354,7 +336,6 @@ struct net_device *dev; DEBUG(1, "ray_attach()\n"); - flush_stale_links(); /* Initialize the dev_link_t structure */ link = kmalloc(sizeof(struct dev_link_t), GFP_KERNEL); @@ -484,10 +465,8 @@ */ if (link->state & DEV_CONFIG) { ray_release(link); - if(link->state & DEV_STALE_CONFIG) { - link->state |= DEV_STALE_LINK; + if(link->state & DEV_STALE_CONFIG) return; - } } /* Break the link with Card Services */ @@ -932,7 +911,11 @@ if ( i != CS_SUCCESS ) DEBUG(0,"ReleaseIRQ ret = %x\n",i); DEBUG(2,"ray_release ending\n"); -} /* ray_release */ + + if (link->state & DEV_STALE_CONFIG) + ray_detach(link); +} + /*============================================================================= The card status event handler. Mostly, this schedules other stuff to run after an event is received. A CARD_REMOVAL event @@ -2050,7 +2033,7 @@ /*============================================================================= * All routines below here are run at interrupt time. =============================================================================*/ -static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs) +static irqreturn_t ray_interrupt(int irq, void *dev_id, struct pt_regs * regs) { struct net_device *dev = (struct net_device *)dev_id; dev_link_t *link; @@ -2063,7 +2046,7 @@ UCHAR status; if (dev == NULL) /* Note that we want interrupts with dev->start == 0 */ - return; + return IRQ_NONE; DEBUG(4,"ray_cs: interrupt for *dev=%p\n",dev); @@ -2071,7 +2054,7 @@ link = (dev_link_t *)local->finder; if ( ! (link->state & DEV_PRESENT) || link->state & DEV_SUSPEND ) { DEBUG(2,"ray_cs interrupt from device not present or suspended.\n"); - return; + return IRQ_NONE; } rcsindex = readb(&((struct scb *)(local->sram))->rcs_index); @@ -2079,7 +2062,7 @@ { DEBUG(1,"ray_cs interrupt bad rcsindex = 0x%x\n",rcsindex); clear_interrupt(local); - return; + return IRQ_HANDLED; } if (rcsindex < NUMBER_OF_CCS) /* If it's a returned CCS */ { @@ -2235,6 +2218,7 @@ writeb(CCS_BUFFER_FREE, &prcs->buffer_status); } clear_interrupt(local); + return IRQ_HANDLED; } /* ray_interrupt */ /*===========================================================================*/ static void ray_rx(struct net_device *dev, ray_dev_t *local, struct rcs *prcs) diff -Nru a/drivers/net/wireless/strip.c b/drivers/net/wireless/strip.c --- a/drivers/net/wireless/strip.c Mon Sep 22 00:30:23 2003 +++ b/drivers/net/wireless/strip.c Mon Sep 22 00:30:23 2003 @@ -83,7 +83,6 @@ #include #include -#include #include #include #include @@ -965,8 +964,6 @@ return (buffer); } -#define STRIP_PROC_HEADER ((void *)1) - /* get Nth element of the linked list */ static struct strip *strip_get_idx(loff_t pos) { @@ -984,7 +981,7 @@ static void *strip_seq_start(struct seq_file *seq, loff_t *pos) { rcu_read_lock(); - return *pos ? strip_get_idx(*pos - 1) : STRIP_PROC_HEADER; + return *pos ? strip_get_idx(*pos - 1) : SEQ_START_TOKEN; } static void *strip_seq_next(struct seq_file *seq, void *v, loff_t *pos) @@ -993,7 +990,7 @@ struct strip *s; ++*pos; - if (v == STRIP_PROC_HEADER) + if (v == SEQ_START_TOKEN) return strip_get_idx(1); s = v; @@ -1149,7 +1146,7 @@ */ static int strip_seq_show(struct seq_file *seq, void *v) { - if (v == STRIP_PROC_HEADER) + if (v == SEQ_START_TOKEN) seq_printf(seq, "strip_version: %s\n", StripVersion); else strip_seq_status_info(seq, (const struct strip *)v); diff -Nru a/drivers/net/wireless/wavelan_cs.c b/drivers/net/wireless/wavelan_cs.c --- a/drivers/net/wireless/wavelan_cs.c Mon Sep 22 00:30:22 2003 +++ b/drivers/net/wireless/wavelan_cs.c Mon Sep 22 00:30:22 2003 @@ -4175,50 +4175,14 @@ CardServices(ReleaseIO, link->handle, &link->io); CardServices(ReleaseIRQ, link->handle, &link->irq); - link->state &= ~(DEV_CONFIG | DEV_STALE_CONFIG); + link->state &= ~DEV_CONFIG; #ifdef DEBUG_CONFIG_TRACE printk(KERN_DEBUG "%s: <- wv_pcmcia_release()\n", dev->name); #endif -} /* wv_pcmcia_release */ -/*------------------------------------------------------------------*/ -/* - * Sometimes, wavelan_detach can't be performed following a call from - * cardmgr (device still open, pcmcia_release not done) and the device - * is put in a STALE_LINK state and remains in memory. - * - * This function run through our current list of device and attempt - * another time to remove them. We hope that since last time the - * device has properly been closed. - * - * (called by wavelan_attach() & cleanup_module()) - */ -static void -wv_flush_stale_links(void) -{ - dev_link_t * link; /* Current node in linked list */ - dev_link_t * next; /* Next node in linked list */ - -#ifdef DEBUG_CONFIG_TRACE - printk(KERN_DEBUG "-> wv_flush_stale_links(0x%p)\n", dev_list); -#endif - - /* Go through the list */ - for (link = dev_list; link; link = next) - { - next = link->next; - - /* Check if in need of being removed */ - if((link->state & DEV_STALE_LINK) || - (! (link->state & DEV_PRESENT))) - wavelan_detach(link); - - } - -#ifdef DEBUG_CONFIG_TRACE - printk(KERN_DEBUG "<- wv_flush_stale_links()\n"); -#endif + if (link->state & DEV_STALE_CONFIG) + wavelan_detach(link); } /************************ INTERRUPT HANDLING ************************/ @@ -4705,9 +4669,6 @@ printk(KERN_DEBUG "-> wavelan_attach()\n"); #endif - /* Perform some cleanup */ - wv_flush_stale_links(); - /* Initialize the dev_link_t structure */ link = kmalloc(sizeof(struct dev_link_t), GFP_KERNEL); if (!link) return NULL; @@ -4859,7 +4820,6 @@ printk(KERN_DEBUG "wavelan_detach: detach postponed," " '%s' still locked\n", link->dev->dev_name); #endif - link->state |= DEV_STALE_LINK; return; } } @@ -5039,9 +4999,6 @@ static void __exit exit_wavelan_cs(void) { - /* Do some cleanup of the device list */ - wv_flush_stale_links(); - pcmcia_unregister_driver(&wavelan_driver); } diff -Nru a/drivers/net/wireless/wavelan_cs.p.h b/drivers/net/wireless/wavelan_cs.p.h --- a/drivers/net/wireless/wavelan_cs.p.h Mon Sep 22 00:30:24 2003 +++ b/drivers/net/wireless/wavelan_cs.p.h Mon Sep 22 00:30:24 2003 @@ -761,8 +761,7 @@ static inline int wv_pcmcia_config(dev_link_t *); /* Configure the pcmcia interface */ static void - wv_pcmcia_release(dev_link_t *),/* Remove a device */ - wv_flush_stale_links(void); /* "detach" all possible devices */ + wv_pcmcia_release(dev_link_t *);/* Remove a device */ /* ---------------------- INTERRUPT HANDLING ---------------------- */ static irqreturn_t wavelan_interrupt(int, /* Interrupt handler */ diff -Nru a/drivers/net/wireless/wl3501_cs.c b/drivers/net/wireless/wl3501_cs.c --- a/drivers/net/wireless/wl3501_cs.c Mon Sep 22 00:30:17 2003 +++ b/drivers/net/wireless/wl3501_cs.c Mon Sep 22 00:30:17 2003 @@ -82,7 +82,7 @@ MODULE_PARM(pc_debug, "i"); #define dprintk(n, format, args...) \ { if (pc_debug > (n)) \ - printk(KERN_INFO "%s: " format "\n", __FUNCTION__, ##args); } + printk(KERN_INFO "%s: " format "\n", __FUNCTION__ , ##args); } #else #define dprintk(n, format, args...) #endif @@ -638,8 +638,10 @@ .sig_id = WL3501_SIG_JOIN_REQ, .timeout = 10, .ds_pset = { - .el.id = IW_MGMT_INFO_ELEMENT_DS_PARAMETER_SET, - .el.len = 1, + .el = { + .id = IW_MGMT_INFO_ELEMENT_DS_PARAMETER_SET, + .len = 1, + }, .chan = this->chan, }, }; @@ -655,13 +657,17 @@ .beacon_period = 400, .dtim_period = 1, .ds_pset = { - .el.id = IW_MGMT_INFO_ELEMENT_DS_PARAMETER_SET, - .el.len = 1, + .el = { + .id = IW_MGMT_INFO_ELEMENT_DS_PARAMETER_SET, + .len = 1, + }, .chan = this->chan, }, .bss_basic_rset = { - .el.id = IW_MGMT_INFO_ELEMENT_SUPPORTED_RATES, - .el.len = 2, + .el = { + .id = IW_MGMT_INFO_ELEMENT_SUPPORTED_RATES, + .len = 2, + }, .data_rate_labels = { [0] = IW_MGMT_RATE_LABEL_MANDATORY | IW_MGMT_RATE_LABEL_1MBIT, @@ -670,8 +676,10 @@ }, }, .operational_rset = { - .el.id = IW_MGMT_INFO_ELEMENT_SUPPORTED_RATES, - .el.len = 2, + .el = { + .id = IW_MGMT_INFO_ELEMENT_SUPPORTED_RATES, + .len = 2, + }, .data_rate_labels = { [0] = IW_MGMT_RATE_LABEL_MANDATORY | IW_MGMT_RATE_LABEL_1MBIT, @@ -680,8 +688,10 @@ }, }, .ibss_pset = { - .el.id = IW_MGMT_INFO_ELEMENT_IBSS_PARAMETER_SET, - .el.len = 2, + .el = { + .id = IW_MGMT_INFO_ELEMENT_IBSS_PARAMETER_SET, + .len = 2, + }, .atim_window = 10, }, .bss_type = wl3501_fw_bss_type(this), @@ -1571,7 +1581,6 @@ printk(KERN_DEBUG "wl3501_cs: detach postponed, '%s' " "still locked\n", link->dev->dev_name); #endif - link->state |= DEV_STALE_LINK; goto out; } @@ -1589,22 +1598,6 @@ return; } -/** - * wl3501_flush_stale_links - Remove zombie instances - * - * Remove zombie instances (card removed, detach pending) - */ -static void wl3501_flush_stale_links(void) -{ - dev_link_t *link, *next; - - for (link = wl3501_dev_list; link; link = next) { - next = link->next; - if (link->state & DEV_STALE_LINK) - wl3501_detach(link); - } -} - static int wl3501_get_name(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { @@ -2033,8 +2026,6 @@ struct net_device *dev; int ret, i; - wl3501_flush_stale_links(); - /* Initialize the dev_link_t structure */ link = kmalloc(sizeof(*link), GFP_KERNEL); if (!link) @@ -2263,7 +2254,7 @@ CardServices(ReleaseIRQ, link->handle, &link->irq); link->state &= ~DEV_CONFIG; - if (link->state & DEV_STALE_LINK) + if (link->state & DEV_STALE_CONFIG) wl3501_detach(link); out: return; diff -Nru a/drivers/parisc/asp.c b/drivers/parisc/asp.c --- a/drivers/parisc/asp.c Mon Sep 22 00:30:24 2003 +++ b/drivers/parisc/asp.c Mon Sep 22 00:30:24 2003 @@ -76,8 +76,6 @@ printk(KERN_INFO "%s version %d at 0x%lx found.\n", asp->name, asp->version, dev->hpa); - snprintf(dev->dev.name, sizeof(dev->dev.name), "%s version %d", - asp->name, asp->version); /* the IRQ ASP should use */ ret = -EBUSY; diff -Nru a/drivers/parisc/ccio-dma.c b/drivers/parisc/ccio-dma.c --- a/drivers/parisc/ccio-dma.c Mon Sep 22 00:30:19 2003 +++ b/drivers/parisc/ccio-dma.c Mon Sep 22 00:30:19 2003 @@ -129,6 +129,92 @@ volatile uint32_t io_io_high; /* Offset 15 */ }; +/* +** IOA Registers +** ------------- +** +** Runway IO_CONTROL Register (+0x38) +** +** The Runway IO_CONTROL register controls the forwarding of transactions. +** +** | 0 ... 13 | 14 15 | 16 ... 21 | 22 | 23 24 | 25 ... 31 | +** | HV | TLB | reserved | HV | mode | reserved | +** +** o mode field indicates the address translation of transactions +** forwarded from Runway to GSC+: +** Mode Name Value Definition +** Off (default) 0 Opaque to matching addresses. +** Include 1 Transparent for matching addresses. +** Peek 3 Map matching addresses. +** +** + "Off" mode: Runway transactions which match the I/O range +** specified by the IO_IO_LOW/IO_IO_HIGH registers will be ignored. +** + "Include" mode: all addresses within the I/O range specified +** by the IO_IO_LOW and IO_IO_HIGH registers are transparently +** forwarded. This is the I/O Adapter's normal operating mode. +** + "Peek" mode: used during system configuration to initialize the +** GSC+ bus. Runway Write_Shorts in the address range specified by +** IO_IO_LOW and IO_IO_HIGH are forwarded through the I/O Adapter +** *AND* the GSC+ address is remapped to the Broadcast Physical +** Address space by setting the 14 high order address bits of the +** 32 bit GSC+ address to ones. +** +** o TLB field affects transactions which are forwarded from GSC+ to Runway. +** "Real" mode is the poweron default. +** +** TLB Mode Value Description +** Real 0 No TLB translation. Address is directly mapped and the +** virtual address is composed of selected physical bits. +** Error 1 Software fills the TLB manually. +** Normal 2 IOA fetches IO TLB misses from IO PDIR (in host memory). +** +** +** IO_IO_LOW_HV +0x60 (HV dependent) +** IO_IO_HIGH_HV +0x64 (HV dependent) +** IO_IO_LOW +0x78 (Architected register) +** IO_IO_HIGH +0x7c (Architected register) +** +** IO_IO_LOW and IO_IO_HIGH set the lower and upper bounds of the +** I/O Adapter address space, respectively. +** +** 0 ... 7 | 8 ... 15 | 16 ... 31 | +** 11111111 | 11111111 | address | +** +** Each LOW/HIGH pair describes a disjoint address space region. +** (2 per GSC+ port). Each incoming Runway transaction address is compared +** with both sets of LOW/HIGH registers. If the address is in the range +** greater than or equal to IO_IO_LOW and less than IO_IO_HIGH the transaction +** for forwarded to the respective GSC+ bus. +** Specify IO_IO_LOW equal to or greater than IO_IO_HIGH to avoid specifying +** an address space region. +** +** In order for a Runway address to reside within GSC+ extended address space: +** Runway Address [0:7] must identically compare to 8'b11111111 +** Runway Address [8:11] must be equal to IO_IO_LOW(_HV)[16:19] +** Runway Address [12:23] must be greater than or equal to +** IO_IO_LOW(_HV)[20:31] and less than IO_IO_HIGH(_HV)[20:31]. +** Runway Address [24:39] is not used in the comparison. +** +** When the Runway transaction is forwarded to GSC+, the GSC+ address is +** as follows: +** GSC+ Address[0:3] 4'b1111 +** GSC+ Address[4:29] Runway Address[12:37] +** GSC+ Address[30:31] 2'b00 +** +** All 4 Low/High registers must be initialized (by PDC) once the lower bus +** is interrogated and address space is defined. The operating system will +** modify the architectural IO_IO_LOW and IO_IO_HIGH registers following +** the PDC initialization. However, the hardware version dependent IO_IO_LOW +** and IO_IO_HIGH registers should not be subsequently altered by the OS. +** +** Writes to both sets of registers will take effect immediately, bypassing +** the queues, which ensures that subsequent Runway transactions are checked +** against the updated bounds values. However reads are queued, introducing +** the possibility of a read being bypassed by a subsequent write to the same +** register. This sequence can be avoided by having software wait for read +** returns before issuing subsequent writes. +*/ + struct ioc { struct ioa_registers *ioc_hpa; /* I/O MMU base address */ u8 *res_map; /* resource map, bit == pdir entry */ @@ -1448,13 +1534,74 @@ (unsigned long)&ioc->ioc_hpa->io_io_low_hv); } -static void expand_ioc_area(struct ioc *ioc, unsigned long size, - unsigned long min, unsigned long max, unsigned long align) +static int expand_resource(struct resource *res, unsigned long size, + unsigned long align) { -#ifdef NASTY_HACK_FOR_K_CLASS - __raw_writel(0xfffff600, (unsigned long)&(ioc->ioc_hpa->io_io_high)); - ioc->mmio_region[0].end = 0xf5ffffff; -#endif + struct resource *temp_res; + unsigned long start = res->start; + unsigned long end ; + + /* see if we can expand above */ + end = (res->end + size + align - 1) & ~(align - 1);; + + temp_res = __request_region(res->parent, res->end, end - res->end, + "expansion"); + if(!temp_res) { + /* now try below */ + start = ((res->start - size + align) & ~(align - 1)) - align; + end = res->end; + temp_res = __request_region(res->parent, start, size, + "expansion"); + if(!temp_res) { + return -ENOMEM; + } + } + release_resource(temp_res); + temp_res = res->parent; + release_resource(res); + res->start = start; + res->end = end; + + /* This could be caused by some sort of race. Basically, if + * this tripped something stole the region we just reserved + * and then released to check for expansion */ + BUG_ON(request_resource(temp_res, res) != 0); + + return 0; +} + +static void expand_ioc_area(struct resource *parent, struct ioc *ioc, + unsigned long size, unsigned long min, + unsigned long max, unsigned long align) +{ + if(ioc == NULL) + /* no IOC, so nothing to expand */ + return; + + if (expand_resource(parent, size, align) != 0) { + printk(KERN_ERR "Unable to expand %s window by 0x%lx\n", + parent->name, size); + return; + } + + /* OK, we have the memory, now expand the window */ + if (parent == &ioc->mmio_region[0]) { + __raw_writel(((parent->start)>>16) | 0xffff0000, + (unsigned long)&(ioc->ioc_hpa->io_io_low)); + __raw_writel(((parent->end)>>16) | 0xffff0000, + (unsigned long)&(ioc->ioc_hpa->io_io_high)); + } else if (parent == &ioc->mmio_region[1]) { + __raw_writel(((parent->start)>>16) | 0xffff0000, + (unsigned long)&(ioc->ioc_hpa->io_io_low_hv)); + __raw_writel(((parent->end)>>16) | 0xffff0000, + (unsigned long)&(ioc->ioc_hpa->io_io_high_hv)); + } else { + /* This should be impossible. It means + * expand_ioc_area got called with a resource that + * didn't belong to the ioc + */ + BUG(); + } } static struct resource *ccio_get_resource(struct ioc* ioc, @@ -1488,7 +1635,7 @@ alignf_data)) return 0; - expand_ioc_area(ioc, size, min, max, align); + expand_ioc_area(parent, ioc, size, min, max, align); return allocate_resource(parent, res, size, min, max, align, alignf, alignf_data); } @@ -1522,7 +1669,6 @@ memset(ioc, 0, sizeof(struct ioc)); ioc->name = dev->id.hversion == U2_IOA_RUNWAY ? "U2" : "UTurn"; - strlcpy(dev->dev.name, ioc->name, sizeof(dev->dev.name)); printk(KERN_INFO "Found %s at 0x%lx\n", ioc->name, dev->hpa); diff -Nru a/drivers/parisc/dino.c b/drivers/parisc/dino.c --- a/drivers/parisc/dino.c Mon Sep 22 00:30:18 2003 +++ b/drivers/parisc/dino.c Mon Sep 22 00:30:18 2003 @@ -401,23 +401,7 @@ { int irq; - /* - * Perform a binary search on set bits. - * `Less than Fatal' and PS2 interrupts aren't supported. - */ - if (mask & 0xf) { - if (mask & 0x3) { - irq = (mask & 0x1) ? 0 : 1; /* PCI INT A, B */ - } else { - irq = (mask & 0x4) ? 2 : 3; /* PCI INT C, D */ - } - } else { - if (mask & 0x30) { - irq = (mask & 0x10) ? 4 : 5; /* PCI INT E, F */ - } else { - irq = (mask & 0x40) ? 6 : 10; /* GSC, RS232 */ - } - } + irq = __ffs(mask); mask &= ~(1< 0) goto ilr_again; - printk("Dino %lx: stuck interrupt %d\n", dino_dev->hba.base_addr, mask); + printk(KERN_ERR "Dino %lx: stuck interrupt %d\n", dino_dev->hba.base_addr, mask); return IRQ_NONE; } return IRQ_HANDLED; @@ -479,15 +463,35 @@ int i; struct dino_device *dino_dev = DINO_DEV(parisc_walk_tree(bus->dev)); struct resource *res; + char name[128]; + int size; res = &dino_dev->hba.lmmio_space; res->flags = IORESOURCE_MEM; + size = snprintf(name, sizeof(name), "Dino LMMIO (%s)", bus->dev->bus_id); + res->name = kmalloc(size+1, GFP_KERNEL); + if(res->name) + strcpy((char *)res->name, name); + else + res->name = dino_dev->hba.lmmio_space.name; + if (ccio_allocate_resource(dino_dev->hba.dev, res, _8MB, - (unsigned long) 0xfffffffff0000000UL | _8MB, - 0xffffffffffffffffUL &~ _8MB, _8MB, + F_EXTEND(0xf0000000UL) | _8MB, + F_EXTEND(0xffffffffUL) &~ _8MB, _8MB, NULL, NULL) < 0) { - printk(KERN_WARNING "Dino: Failed to allocate memory region\n"); + struct list_head *ln, *tmp_ln; + + printk(KERN_ERR "Dino: cannot attach bus %s\n", + bus->dev->bus_id); + /* kill the bus, we can't do anything with it */ + list_for_each_safe(ln, tmp_ln, &bus->devices) { + struct pci_dev *dev = pci_dev_b(ln); + + list_del(&dev->global_list); + list_del(&dev->bus_list); + } + return; } bus->resource[1] = res; @@ -495,9 +499,11 @@ /* Now tell dino what range it has */ for (i = 1; i < 31; i++) { - if (res->start == (0xfffffffff0000000UL | i * _8MB)) + if (res->start == F_EXTEND(0xf0000000UL | (i * _8MB))) break; } + DBG("DINO GSC WRITE i=%d, start=%lx, dino addr = %lx\n", + i, res->start, base_addr + DINO_IO_ADDR_EN); gsc_writel(1 << i, base_addr + DINO_IO_ADDR_EN); pci_bus_assign_resources(bus); @@ -521,7 +527,7 @@ ** Set Latency Timer to 0xff (not a shared bus) ** Set CACHELINE_SIZE. */ - dino_cfg_write(dev->bus, dev->devfn, PCI_CACHE_LINE_SIZE, 16, 0xff00 | L1_CACHE_BYTES/4); + dino_cfg_write(dev->bus, dev->devfn, PCI_CACHE_LINE_SIZE, 2, 0xff00 | L1_CACHE_BYTES/4); /* ** Program INT_LINE for card-mode devices. @@ -532,13 +538,13 @@ ** "-1" converts INTA-D (1-4) to PCIINTA-D (0-3) range. ** The additional "-1" adjusts for skewing the IRQ<->slot. */ - dino_cfg_read(dev->bus, dev->devfn, PCI_INTERRUPT_PIN, 8, &irq_pin); + dino_cfg_read(dev->bus, dev->devfn, PCI_INTERRUPT_PIN, 1, &irq_pin); dev->irq = (irq_pin + PCI_SLOT(dev->devfn) - 1) % 4 ; /* Shouldn't really need to do this but it's in case someone tries ** to bypass PCI services and look at the card themselves. */ - dino_cfg_write(dev->bus, dev->devfn, PCI_INTERRUPT_LINE, 8, dev->irq); + dino_cfg_write(dev->bus, dev->devfn, PCI_INTERRUPT_LINE, 1, dev->irq); } @@ -585,8 +591,8 @@ #ifdef __LP64__ /* Sign Extend MMIO addresses */ else if (res->flags & IORESOURCE_MEM) { - res->start |= 0xffffffff00000000UL; - res->end |= 0xffffffff00000000UL; + res->start |= F_EXTEND(0UL); + res->end |= F_EXTEND(0UL); } #endif } @@ -789,8 +795,8 @@ return 0; } -#define CUJO_RAVEN_ADDR 0xfffffffff1000000UL -#define CUJO_FIREHAWK_ADDR 0xfffffffff1604000UL +#define CUJO_RAVEN_ADDR F_EXTEND(0xf1000000UL) +#define CUJO_FIREHAWK_ADDR F_EXTEND(0xf1604000UL) #define CUJO_RAVEN_BADPAGE 0x01003000UL #define CUJO_FIREHAWK_BADPAGE 0x01607000UL @@ -818,9 +824,16 @@ { struct dino_device *dino_dev; // Dino specific control struct const char *version = "unknown"; - const char *name = "Dino"; + const int name_len = 32; + char *name; int is_cujo = 0; + name = kmalloc(name_len, GFP_KERNEL); + if(name) + snprintf(name, name_len, "Dino %s", dev->dev.bus_id); + else + name = "Dino"; + if (is_card_dino(&dev->id)) { version = "3.x (card mode)"; } else { @@ -838,8 +851,6 @@ } printk("%s version %s found at 0x%lx\n", name, version, dev->hpa); - snprintf(dev->dev.name, sizeof(dev->dev.name), - "%s version %s", name, version); if (!request_mem_region(dev->hpa, PAGE_SIZE, name)) { printk(KERN_ERR "DINO: Hey! Someone took my MMIO space (0x%ld)!\n", diff -Nru a/drivers/parisc/eisa.c b/drivers/parisc/eisa.c --- a/drivers/parisc/eisa.c Mon Sep 22 00:30:18 2003 +++ b/drivers/parisc/eisa.c Mon Sep 22 00:30:18 2003 @@ -327,14 +327,13 @@ printk(KERN_INFO "%s EISA Adapter found at 0x%08lx\n", name, dev->hpa); - snprintf(dev->dev.name, sizeof(dev->dev.name), "%s EISA", name); eisa_dev.hba.dev = dev; eisa_dev.hba.iommu = ccio_get_iommu(dev); eisa_dev.hba.lmmio_space.name = "EISA"; - eisa_dev.hba.lmmio_space.start = (unsigned long) 0xfffffffffc000000; - eisa_dev.hba.lmmio_space.end = (unsigned long) 0xffffffffffbfffff; + eisa_dev.hba.lmmio_space.start = F_EXTEND(0xfc000000); + eisa_dev.hba.lmmio_space.end = F_EXTEND(0xffbfffff); eisa_dev.hba.lmmio_space.flags = IORESOURCE_MEM; result = ccio_request_resource(dev, &eisa_dev.hba.lmmio_space); if (result < 0) { diff -Nru a/drivers/parisc/hppb.c b/drivers/parisc/hppb.c --- a/drivers/parisc/hppb.c Mon Sep 22 00:30:21 2003 +++ b/drivers/parisc/hppb.c Mon Sep 22 00:30:21 2003 @@ -70,7 +70,6 @@ card = card->next; } printk(KERN_INFO "Found GeckoBoa at 0x%lx\n", dev->hpa); - snprintf(dev->dev.name, sizeof(dev->dev.name), "GeckoBoa"); card->hpa = dev->hpa; card->mmio_region.name = "HP-PB Bus"; diff -Nru a/drivers/parisc/iosapic.c b/drivers/parisc/iosapic.c --- a/drivers/parisc/iosapic.c Mon Sep 22 00:30:19 2003 +++ b/drivers/parisc/iosapic.c Mon Sep 22 00:30:19 2003 @@ -643,7 +643,7 @@ if (NULL == isi) { printk(KERN_WARNING MODULE_NAME ": hpa not registered for %s\n", - pcidev->dev.name); + pci_name(pcidev)); return(-1); } diff -Nru a/drivers/parisc/lasi.c b/drivers/parisc/lasi.c --- a/drivers/parisc/lasi.c Mon Sep 22 00:30:23 2003 +++ b/drivers/parisc/lasi.c Mon Sep 22 00:30:23 2003 @@ -185,8 +185,6 @@ lasi->version = gsc_readl(lasi->hpa + LASI_VER) & 0xf; printk(KERN_INFO "%s version %d at 0x%lx found.\n", lasi->name, lasi->version, lasi->hpa); - snprintf(dev->dev.name, sizeof(dev->dev.name), "%s version %d", - lasi->name, lasi->version); /* initialize the chassis LEDs really early */ lasi_led_init(lasi->hpa); diff -Nru a/drivers/parisc/lba_pci.c b/drivers/parisc/lba_pci.c --- a/drivers/parisc/lba_pci.c Mon Sep 22 00:30:23 2003 +++ b/drivers/parisc/lba_pci.c Mon Sep 22 00:30:23 2003 @@ -782,7 +782,7 @@ int i; struct pci_dev *dev = pci_dev_b(ln); - DBG("lba_fixup_bus() %s\n", dev->name); + DBG("lba_fixup_bus() %s\n", pci_name(dev)); /* Virtualize Device/Bridge Resources. */ for (i = 0; i < PCI_NUM_RESOURCES; i++) { @@ -1358,8 +1358,6 @@ printk(KERN_INFO "%s version %s (0x%x) found at 0x%lx\n", MODULE_NAME, version, func_class & 0xf, dev->hpa); - snprintf(dev->dev.name, sizeof(dev->dev.name), "%s version %s", - MODULE_NAME, version); /* Just in case we find some prototypes... */ if (func_class < 2) { diff -Nru a/drivers/parisc/led.c b/drivers/parisc/led.c --- a/drivers/parisc/led.c Mon Sep 22 00:30:20 2003 +++ b/drivers/parisc/led.c Mon Sep 22 00:30:20 2003 @@ -91,7 +91,7 @@ /* LCD_CMD and LCD_DATA for KittyHawk machines */ -#define KITTYHAWK_LCD_CMD (0xfffffffff0190000UL) /* 64bit-ready */ +#define KITTYHAWK_LCD_CMD F_EXTEND(0xf0190000UL) /* 64bit-ready */ #define KITTYHAWK_LCD_DATA (KITTYHAWK_LCD_CMD+1) /* lcd_info is pre-initialized to the values needed to program KittyHawk LCD's diff -Nru a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c --- a/drivers/parisc/sba_iommu.c Mon Sep 22 00:30:23 2003 +++ b/drivers/parisc/sba_iommu.c Mon Sep 22 00:30:23 2003 @@ -1978,8 +1978,6 @@ printk(KERN_INFO "%s found %s at 0x%lx\n", MODULE_NAME, version, dev->hpa); - snprintf(dev->dev.name, sizeof(dev->dev.name), "%s version %s", - MODULE_NAME, version); #ifdef DEBUG_SBA_INIT sba_dump_tlb(dev->hpa); diff -Nru a/drivers/parisc/wax.c b/drivers/parisc/wax.c --- a/drivers/parisc/wax.c Mon Sep 22 00:30:23 2003 +++ b/drivers/parisc/wax.c Mon Sep 22 00:30:23 2003 @@ -83,8 +83,6 @@ wax->version = 0; /* gsc_readb(wax->hpa+WAX_VER); */ printk(KERN_INFO "%s at 0x%lx found.\n", wax->name, wax->hpa); - snprintf(dev->dev.name, sizeof(dev->dev.name), "%s version %d", - wax->name, wax->version); /* Stop wax hissing for a bit */ wax_init_irq(wax); diff -Nru a/drivers/pci/hotplug/acpiphp.h b/drivers/pci/hotplug/acpiphp.h --- a/drivers/pci/hotplug/acpiphp.h Mon Sep 22 00:30:25 2003 +++ b/drivers/pci/hotplug/acpiphp.h Mon Sep 22 00:30:25 2003 @@ -1,12 +1,12 @@ /* * ACPI PCI Hot Plug Controller Driver * - * Copyright (c) 1995,2001 Compaq Computer Corporation - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001 IBM Corp. - * Copyright (c) 2002 Hiroshi Aono (h-aono@ap.jp.nec.com) - * Copyright (c) 2002,2003 Takayoshi Kochi (t-kochi@bq.jp.nec.com) - * Copyright (c) 2002,2003 NEC Corporation + * Copyright (C) 1995,2001 Compaq Computer Corporation + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001 IBM Corp. + * Copyright (C) 2002 Hiroshi Aono (h-aono@ap.jp.nec.com) + * Copyright (C) 2002,2003 Takayoshi Kochi (t-kochi@bq.jp.nec.com) + * Copyright (C) 2002,2003 NEC Corporation * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/acpiphp_core.c b/drivers/pci/hotplug/acpiphp_core.c --- a/drivers/pci/hotplug/acpiphp_core.c Mon Sep 22 00:30:22 2003 +++ b/drivers/pci/hotplug/acpiphp_core.c Mon Sep 22 00:30:22 2003 @@ -1,12 +1,12 @@ /* * ACPI PCI Hot Plug Controller Driver * - * Copyright (c) 1995,2001 Compaq Computer Corporation - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001 IBM Corp. - * Copyright (c) 2002 Hiroshi Aono (h-aono@ap.jp.nec.com) - * Copyright (c) 2002,2003 Takayoshi Kochi (t-kochi@bq.jp.nec.com) - * Copyright (c) 2002,2003 NEC Corporation + * Copyright (C) 1995,2001 Compaq Computer Corporation + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001 IBM Corp. + * Copyright (C) 2002 Hiroshi Aono (h-aono@ap.jp.nec.com) + * Copyright (C) 2002,2003 Takayoshi Kochi (t-kochi@bq.jp.nec.com) + * Copyright (C) 2002,2003 NEC Corporation * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c --- a/drivers/pci/hotplug/acpiphp_glue.c Mon Sep 22 00:30:20 2003 +++ b/drivers/pci/hotplug/acpiphp_glue.c Mon Sep 22 00:30:20 2003 @@ -1,9 +1,9 @@ /* * ACPI PCI HotPlug glue functions to ACPI CA subsystem * - * Copyright (c) 2002,2003 Takayoshi Kochi (t-kochi@bq.jp.nec.com) - * Copyright (c) 2002 Hiroshi Aono (h-aono@ap.jp.nec.com) - * Copyright (c) 2002,2003 NEC Corporation + * Copyright (C) 2002,2003 Takayoshi Kochi (t-kochi@bq.jp.nec.com) + * Copyright (C) 2002 Hiroshi Aono (h-aono@ap.jp.nec.com) + * Copyright (C) 2002,2003 NEC Corporation * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/acpiphp_pci.c b/drivers/pci/hotplug/acpiphp_pci.c --- a/drivers/pci/hotplug/acpiphp_pci.c Mon Sep 22 00:30:17 2003 +++ b/drivers/pci/hotplug/acpiphp_pci.c Mon Sep 22 00:30:17 2003 @@ -1,12 +1,12 @@ /* * ACPI PCI HotPlug PCI configuration space management * - * Copyright (c) 1995,2001 Compaq Computer Corporation - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001,2002 IBM Corp. - * Copyright (c) 2002 Takayoshi Kochi (t-kochi@bq.jp.nec.com) - * Copyright (c) 2002 Hiroshi Aono (h-aono@ap.jp.nec.com) - * Copyright (c) 2002 NEC Corporation + * Copyright (C) 1995,2001 Compaq Computer Corporation + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001,2002 IBM Corp. + * Copyright (C) 2002 Takayoshi Kochi (t-kochi@bq.jp.nec.com) + * Copyright (C) 2002 Hiroshi Aono (h-aono@ap.jp.nec.com) + * Copyright (C) 2002 NEC Corporation * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/acpiphp_res.c b/drivers/pci/hotplug/acpiphp_res.c --- a/drivers/pci/hotplug/acpiphp_res.c Mon Sep 22 00:30:21 2003 +++ b/drivers/pci/hotplug/acpiphp_res.c Mon Sep 22 00:30:21 2003 @@ -1,12 +1,12 @@ /* * ACPI PCI HotPlug Utility functions * - * Copyright (c) 1995,2001 Compaq Computer Corporation - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001 IBM Corp. - * Copyright (c) 2002 Hiroshi Aono (h-aono@ap.jp.nec.com) - * Copyright (c) 2002 Takayoshi Kochi (t-kochi@bq.jp.nec.com) - * Copyright (c) 2002 NEC Corporation + * Copyright (C) 1995,2001 Compaq Computer Corporation + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001 IBM Corp. + * Copyright (C) 2002 Hiroshi Aono (h-aono@ap.jp.nec.com) + * Copyright (C) 2002 Takayoshi Kochi (t-kochi@bq.jp.nec.com) + * Copyright (C) 2002 NEC Corporation * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/cpci_hotplug.h b/drivers/pci/hotplug/cpci_hotplug.h --- a/drivers/pci/hotplug/cpci_hotplug.h Mon Sep 22 00:30:19 2003 +++ b/drivers/pci/hotplug/cpci_hotplug.h Mon Sep 22 00:30:19 2003 @@ -1,9 +1,9 @@ /* * CompactPCI Hot Plug Core Functions * - * Copyright (c) 2002 SOMA Networks, Inc. - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001 IBM Corp. + * Copyright (C) 2002 SOMA Networks, Inc. + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/cpci_hotplug_core.c b/drivers/pci/hotplug/cpci_hotplug_core.c --- a/drivers/pci/hotplug/cpci_hotplug_core.c Mon Sep 22 00:30:21 2003 +++ b/drivers/pci/hotplug/cpci_hotplug_core.c Mon Sep 22 00:30:21 2003 @@ -1,9 +1,9 @@ /* * CompactPCI Hot Plug Driver * - * Copyright (c) 2002 SOMA Networks, Inc. - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001 IBM Corp. + * Copyright (C) 2002 SOMA Networks, Inc. + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/cpci_hotplug_pci.c b/drivers/pci/hotplug/cpci_hotplug_pci.c --- a/drivers/pci/hotplug/cpci_hotplug_pci.c Mon Sep 22 00:30:23 2003 +++ b/drivers/pci/hotplug/cpci_hotplug_pci.c Mon Sep 22 00:30:23 2003 @@ -1,7 +1,7 @@ /* * CompactPCI Hot Plug Driver PCI functions * - * Copyright (c) 2002 by SOMA Networks, Inc. + * Copyright (C) 2002 by SOMA Networks, Inc. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/cpqphp.h b/drivers/pci/hotplug/cpqphp.h --- a/drivers/pci/hotplug/cpqphp.h Mon Sep 22 00:30:24 2003 +++ b/drivers/pci/hotplug/cpqphp.h Mon Sep 22 00:30:24 2003 @@ -1,9 +1,9 @@ /* * Compaq Hot Plug Controller Driver * - * Copyright (c) 1995,2001 Compaq Computer Corporation - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001 IBM + * Copyright (C) 1995,2001 Compaq Computer Corporation + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001 IBM * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/cpqphp_core.c b/drivers/pci/hotplug/cpqphp_core.c --- a/drivers/pci/hotplug/cpqphp_core.c Mon Sep 22 00:30:17 2003 +++ b/drivers/pci/hotplug/cpqphp_core.c Mon Sep 22 00:30:17 2003 @@ -1,9 +1,9 @@ /* * Compaq Hot Plug Controller Driver * - * Copyright (c) 1995,2001 Compaq Computer Corporation - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001 IBM Corp. + * Copyright (C) 1995,2001 Compaq Computer Corporation + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/cpqphp_ctrl.c b/drivers/pci/hotplug/cpqphp_ctrl.c --- a/drivers/pci/hotplug/cpqphp_ctrl.c Mon Sep 22 00:30:20 2003 +++ b/drivers/pci/hotplug/cpqphp_ctrl.c Mon Sep 22 00:30:20 2003 @@ -1,9 +1,9 @@ /* * Compaq Hot Plug Controller Driver * - * Copyright (c) 1995,2001 Compaq Computer Corporation - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001 IBM Corp. + * Copyright (C) 1995,2001 Compaq Computer Corporation + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/cpqphp_nvram.c b/drivers/pci/hotplug/cpqphp_nvram.c --- a/drivers/pci/hotplug/cpqphp_nvram.c Mon Sep 22 00:30:24 2003 +++ b/drivers/pci/hotplug/cpqphp_nvram.c Mon Sep 22 00:30:24 2003 @@ -1,9 +1,9 @@ /* * Compaq Hot Plug Controller Driver * - * Copyright (c) 1995,2001 Compaq Computer Corporation - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001 IBM Corp. + * Copyright (C) 1995,2001 Compaq Computer Corporation + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/cpqphp_nvram.h b/drivers/pci/hotplug/cpqphp_nvram.h --- a/drivers/pci/hotplug/cpqphp_nvram.h Mon Sep 22 00:30:22 2003 +++ b/drivers/pci/hotplug/cpqphp_nvram.h Mon Sep 22 00:30:22 2003 @@ -1,8 +1,8 @@ /* * Compaq Hot Plug Controller Driver * - * Copyright (c) 1995,2001 Compaq Computer Corporation - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 1995,2001 Compaq Computer Corporation + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/cpqphp_pci.c b/drivers/pci/hotplug/cpqphp_pci.c --- a/drivers/pci/hotplug/cpqphp_pci.c Mon Sep 22 00:30:24 2003 +++ b/drivers/pci/hotplug/cpqphp_pci.c Mon Sep 22 00:30:24 2003 @@ -1,9 +1,9 @@ /* * Compaq Hot Plug Controller Driver * - * Copyright (c) 1995,2001 Compaq Computer Corporation - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001 IBM Corp. + * Copyright (C) 1995,2001 Compaq Computer Corporation + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/cpqphp_sysfs.c b/drivers/pci/hotplug/cpqphp_sysfs.c --- a/drivers/pci/hotplug/cpqphp_sysfs.c Mon Sep 22 00:30:24 2003 +++ b/drivers/pci/hotplug/cpqphp_sysfs.c Mon Sep 22 00:30:24 2003 @@ -1,9 +1,9 @@ /* * Compaq Hot Plug Controller Driver * - * Copyright (c) 1995,2001 Compaq Computer Corporation - * Copyright (c) 2001,2003 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001 IBM Corp. + * Copyright (C) 1995,2001 Compaq Computer Corporation + * Copyright (C) 2001,2003 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/fakephp.c b/drivers/pci/hotplug/fakephp.c --- a/drivers/pci/hotplug/fakephp.c Mon Sep 22 00:30:23 2003 +++ b/drivers/pci/hotplug/fakephp.c Mon Sep 22 00:30:23 2003 @@ -1,9 +1,9 @@ /* * Fake PCI Hot Plug Controller Driver * - * Copyright (c) 2003 Greg Kroah-Hartman - * Copyright (c) 2003 IBM Corp. - * Copyright (c) 2003 Rolf Eike Beer + * Copyright (C) 2003 Greg Kroah-Hartman + * Copyright (C) 2003 IBM Corp. + * Copyright (C) 2003 Rolf Eike Beer * * Based on ideas and code from: * Vladimir Kondratiev diff -Nru a/drivers/pci/hotplug/ibmphp.h b/drivers/pci/hotplug/ibmphp.h --- a/drivers/pci/hotplug/ibmphp.h Mon Sep 22 00:30:18 2003 +++ b/drivers/pci/hotplug/ibmphp.h Mon Sep 22 00:30:18 2003 @@ -6,8 +6,8 @@ * * Written By: Jyoti Shah, Tong Yu, Irene Zubarev, IBM Corporation * - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001-2003 IBM Corp. + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001-2003 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/ibmphp_core.c b/drivers/pci/hotplug/ibmphp_core.c --- a/drivers/pci/hotplug/ibmphp_core.c Mon Sep 22 00:30:25 2003 +++ b/drivers/pci/hotplug/ibmphp_core.c Mon Sep 22 00:30:25 2003 @@ -3,8 +3,8 @@ * * Written By: Chuck Cole, Jyoti Shah, Tong Yu, Irene Zubarev, IBM Corporation * - * Copyright (c) 2001,2003 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001-2003 IBM Corp. + * Copyright (C) 2001,2003 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001-2003 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/ibmphp_ebda.c b/drivers/pci/hotplug/ibmphp_ebda.c --- a/drivers/pci/hotplug/ibmphp_ebda.c Mon Sep 22 00:30:19 2003 +++ b/drivers/pci/hotplug/ibmphp_ebda.c Mon Sep 22 00:30:19 2003 @@ -3,8 +3,8 @@ * * Written By: Tong Yu, IBM Corporation * - * Copyright (c) 2001,2003 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001-2003 IBM Corp. + * Copyright (C) 2001,2003 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001-2003 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/ibmphp_hpc.c b/drivers/pci/hotplug/ibmphp_hpc.c --- a/drivers/pci/hotplug/ibmphp_hpc.c Mon Sep 22 00:30:20 2003 +++ b/drivers/pci/hotplug/ibmphp_hpc.c Mon Sep 22 00:30:20 2003 @@ -3,7 +3,7 @@ * * Written By: Jyoti Shah, IBM Corporation * - * Copyright (c) 2001-2003 IBM Corp. + * Copyright (C) 2001-2003 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/ibmphp_pci.c b/drivers/pci/hotplug/ibmphp_pci.c --- a/drivers/pci/hotplug/ibmphp_pci.c Mon Sep 22 00:30:17 2003 +++ b/drivers/pci/hotplug/ibmphp_pci.c Mon Sep 22 00:30:17 2003 @@ -3,8 +3,8 @@ * * Written By: Irene Zubarev, IBM Corporation * - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001,2002 IBM Corp. + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001,2002 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/ibmphp_res.c b/drivers/pci/hotplug/ibmphp_res.c --- a/drivers/pci/hotplug/ibmphp_res.c Mon Sep 22 00:30:24 2003 +++ b/drivers/pci/hotplug/ibmphp_res.c Mon Sep 22 00:30:24 2003 @@ -3,8 +3,8 @@ * * Written By: Irene Zubarev, IBM Corporation * - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001,2002 IBM Corp. + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001,2002 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/pci_hotplug.h b/drivers/pci/hotplug/pci_hotplug.h --- a/drivers/pci/hotplug/pci_hotplug.h Mon Sep 22 00:30:20 2003 +++ b/drivers/pci/hotplug/pci_hotplug.h Mon Sep 22 00:30:20 2003 @@ -1,9 +1,9 @@ /* * PCI HotPlug Core Functions * - * Copyright (c) 1995,2001 Compaq Computer Corporation - * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001 IBM Corp. + * Copyright (C) 1995,2001 Compaq Computer Corporation + * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/pci_hotplug_core.c b/drivers/pci/hotplug/pci_hotplug_core.c --- a/drivers/pci/hotplug/pci_hotplug_core.c Mon Sep 22 00:30:24 2003 +++ b/drivers/pci/hotplug/pci_hotplug_core.c Mon Sep 22 00:30:24 2003 @@ -1,8 +1,8 @@ /* * PCI HotPlug Controller Core * - * Copyright (c) 2001-2002 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001-2002 IBM Corp. + * Copyright (C) 2001-2002 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001-2002 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/hotplug/pcihp_skeleton.c b/drivers/pci/hotplug/pcihp_skeleton.c --- a/drivers/pci/hotplug/pcihp_skeleton.c Mon Sep 22 00:30:22 2003 +++ b/drivers/pci/hotplug/pcihp_skeleton.c Mon Sep 22 00:30:22 2003 @@ -1,8 +1,8 @@ /* * PCI Hot Plug Controller Skeleton Driver - 0.2 * - * Copyright (c) 2001,2003 Greg Kroah-Hartman (greg@kroah.com) - * Copyright (c) 2001,2003 IBM Corp. + * Copyright (C) 2001,2003 Greg Kroah-Hartman (greg@kroah.com) + * Copyright (C) 2001,2003 IBM Corp. * * All rights reserved. * diff -Nru a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c --- a/drivers/pci/pci-driver.c Mon Sep 22 00:30:23 2003 +++ b/drivers/pci/pci-driver.c Mon Sep 22 00:30:23 2003 @@ -35,6 +35,173 @@ return NULL; } +/* + * Dynamic device IDs are disabled for !CONFIG_HOTPLUG + */ + +#ifdef CONFIG_HOTPLUG +/** + * pci_device_probe_dynamic() + * + * Walk the dynamic ID list looking for a match. + * returns 0 and sets pci_dev->driver when drv claims pci_dev, else error. + */ +static int +pci_device_probe_dynamic(struct pci_driver *drv, struct pci_dev *pci_dev) +{ + int error = -ENODEV; + struct list_head *pos; + struct dynid *dynid; + + spin_lock(&drv->dynids.lock); + list_for_each(pos, &drv->dynids.list) { + dynid = list_entry(pos, struct dynid, node); + if (pci_match_one_device(&dynid->id, pci_dev)) { + spin_unlock(&drv->dynids.lock); + error = drv->probe(pci_dev, &dynid->id); + if (error >= 0) { + pci_dev->driver = drv; + return 0; + } + return error; + } + } + spin_unlock(&drv->dynids.lock); + return error; +} + +static inline void +dynid_init(struct dynid *dynid) +{ + memset(dynid, 0, sizeof(*dynid)); + INIT_LIST_HEAD(&dynid->node); +} + +/** + * store_new_id + * + * Adds a new dynamic pci device ID to this driver, + * and causes the driver to probe for all devices again. + */ +static inline ssize_t +store_new_id(struct device_driver *driver, const char *buf, size_t count) +{ + struct dynid *dynid; + struct bus_type * bus; + struct pci_driver *pdrv = to_pci_driver(driver); + __u32 vendor=PCI_ANY_ID, device=PCI_ANY_ID, subvendor=PCI_ANY_ID, + subdevice=PCI_ANY_ID, class=0, class_mask=0; + unsigned long driver_data=0; + int fields=0; + + fields = sscanf(buf, "%x %x %x %x %x %x %lux", + &vendor, &device, &subvendor, &subdevice, + &class, &class_mask, &driver_data); + if (fields < 0) + return -EINVAL; + + dynid = kmalloc(sizeof(*dynid), GFP_KERNEL); + if (!dynid) + return -ENOMEM; + dynid_init(dynid); + + dynid->id.vendor = vendor; + dynid->id.device = device; + dynid->id.subvendor = subvendor; + dynid->id.subdevice = subdevice; + dynid->id.class = class; + dynid->id.class_mask = class_mask; + dynid->id.driver_data = pdrv->dynids.use_driver_data ? + driver_data : 0UL; + + spin_lock(&pdrv->dynids.lock); + list_add_tail(&pdrv->dynids.list, &dynid->node); + spin_unlock(&pdrv->dynids.lock); + + bus = get_bus(pdrv->driver.bus); + if (bus) { + if (get_driver(&pdrv->driver)) { + down_write(&bus->subsys.rwsem); + driver_attach(&pdrv->driver); + up_write(&bus->subsys.rwsem); + put_driver(&pdrv->driver); + } + put_bus(bus); + } + + return count; +} + +static DRIVER_ATTR(new_id, S_IWUSR, NULL, store_new_id); +static inline void +pci_init_dynids(struct pci_dynids *dynids) +{ + memset(dynids, 0, sizeof(*dynids)); + spin_lock_init(&dynids->lock); + INIT_LIST_HEAD(&dynids->list); +} + +static void +pci_free_dynids(struct pci_driver *drv) +{ + struct list_head *pos, *n; + struct dynid *dynid; + + spin_lock(&drv->dynids.lock); + list_for_each_safe(pos, n, &drv->dynids.list) { + dynid = list_entry(pos, struct dynid, node); + list_del(&dynid->node); + kfree(dynid); + } + spin_unlock(&drv->dynids.lock); +} + +static int +pci_create_newid_file(struct pci_driver *drv) +{ + int error = 0; + if (drv->probe != NULL) + error = sysfs_create_file(&drv->driver.kobj, + &driver_attr_new_id.attr); + return error; +} + +static int +pci_bus_match_dynids(const struct pci_dev *pci_dev, struct pci_driver *pci_drv) +{ + struct list_head *pos; + struct dynid *dynid; + + spin_lock(&pci_drv->dynids.lock); + list_for_each(pos, &pci_drv->dynids.list) { + dynid = list_entry(pos, struct dynid, node); + if (pci_match_one_device(&dynid->id, pci_dev)) { + spin_unlock(&pci_drv->dynids.lock); + return 1; + } + } + spin_unlock(&pci_drv->dynids.lock); + return 0; +} + +#else /* !CONFIG_HOTPLUG */ +static inline int pci_device_probe_dynamic(struct pci_driver *drv, struct pci_dev *pci_dev) +{ + return -ENODEV; +} +static inline void dynid_init(struct dynid *dynid) {} +static inline void pci_init_dynids(struct pci_dynids *dynids) {} +static inline void pci_free_dynids(struct pci_driver *drv) {} +static inline int pci_create_newid_file(struct pci_driver *drv) +{ + return 0; +} +static inline int pci_bus_match_dynids(const struct pci_dev *pci_dev, struct pci_driver *pci_drv) +{ + return 0; +} +#endif + /** * pci_match_device - Tell if a PCI device structure has a matching * PCI device id structure @@ -80,36 +247,6 @@ } /** - * pci_device_probe_dynamic() - * - * Walk the dynamic ID list looking for a match. - * returns 0 and sets pci_dev->driver when drv claims pci_dev, else error. - */ -static int -pci_device_probe_dynamic(struct pci_driver *drv, struct pci_dev *pci_dev) -{ - int error = -ENODEV; - struct list_head *pos; - struct dynid *dynid; - - spin_lock(&drv->dynids.lock); - list_for_each(pos, &drv->dynids.list) { - dynid = list_entry(pos, struct dynid, node); - if (pci_match_one_device(&dynid->id, pci_dev)) { - spin_unlock(&drv->dynids.lock); - error = drv->probe(pci_dev, &dynid->id); - if (error >= 0) { - pci_dev->driver = drv; - return 0; - } - return error; - } - } - spin_unlock(&drv->dynids.lock); - return error; -} - -/** * __pci_device_probe() * * returns 0 on success, else error. @@ -178,72 +315,6 @@ return 0; } -static inline void -dynid_init(struct dynid *dynid) -{ - memset(dynid, 0, sizeof(*dynid)); - INIT_LIST_HEAD(&dynid->node); -} - -/** - * store_new_id - * @ pdrv - * @ buf - * @ count - * - * Adds a new dynamic pci device ID to this driver, - * and causes the driver to probe for all devices again. - */ -static inline ssize_t -store_new_id(struct device_driver * driver, const char * buf, size_t count) -{ - struct dynid *dynid; - struct bus_type * bus; - struct pci_driver *pdrv = to_pci_driver(driver); - __u32 vendor=PCI_ANY_ID, device=PCI_ANY_ID, subvendor=PCI_ANY_ID, - subdevice=PCI_ANY_ID, class=0, class_mask=0; - unsigned long driver_data=0; - int fields=0; - - fields = sscanf(buf, "%x %x %x %x %x %x %lux", - &vendor, &device, &subvendor, &subdevice, - &class, &class_mask, &driver_data); - if (fields < 0) - return -EINVAL; - - dynid = kmalloc(sizeof(*dynid), GFP_KERNEL); - if (!dynid) - return -ENOMEM; - dynid_init(dynid); - - dynid->id.vendor = vendor; - dynid->id.device = device; - dynid->id.subvendor = subvendor; - dynid->id.subdevice = subdevice; - dynid->id.class = class; - dynid->id.class_mask = class_mask; - dynid->id.driver_data = pdrv->dynids.use_driver_data ? - driver_data : 0UL; - - spin_lock(&pdrv->dynids.lock); - list_add_tail(&pdrv->dynids.list, &dynid->node); - spin_unlock(&pdrv->dynids.lock); - - bus = get_bus(pdrv->driver.bus); - if (bus) { - if (get_driver(&pdrv->driver)) { - down_write(&bus->subsys.rwsem); - driver_attach(&pdrv->driver); - up_write(&bus->subsys.rwsem); - put_driver(&pdrv->driver); - } - put_bus(bus); - } - - return count; -} - -static DRIVER_ATTR(new_id, S_IWUSR, NULL, store_new_id); #define kobj_to_pci_driver(obj) container_of(obj, struct device_driver, kobj) #define attr_to_driver_attribute(obj) container_of(obj, struct driver_attribute, attr) @@ -288,40 +359,11 @@ }; static int -pci_populate_driver_dir(struct pci_driver * drv) +pci_populate_driver_dir(struct pci_driver *drv) { - int error = 0; - - if (drv->probe != NULL) - error = sysfs_create_file(&drv->driver.kobj, - &driver_attr_new_id.attr); - return error; + return pci_create_newid_file(drv); } -static inline void -pci_init_dynids(struct pci_dynids *dynids) -{ - memset(dynids, 0, sizeof(*dynids)); - spin_lock_init(&dynids->lock); - INIT_LIST_HEAD(&dynids->list); -} - -static void -pci_free_dynids(struct pci_driver *drv) -{ - struct list_head *pos, *n; - struct dynid *dynid; - - spin_lock(&drv->dynids.lock); - list_for_each_safe(pos, n, &drv->dynids.list) { - dynid = list_entry(pos, struct dynid, node); - list_del(&dynid->node); - kfree(dynid); - } - spin_unlock(&drv->dynids.lock); -} - - /** * pci_register_driver - register a new pci driver * @drv: the driver structure to register @@ -411,8 +453,6 @@ struct pci_driver * pci_drv = to_pci_driver(drv); const struct pci_device_id * ids = pci_drv->id_table; const struct pci_device_id *found_id; - struct list_head *pos; - struct dynid *dynid; if (!ids) return 0; @@ -421,17 +461,7 @@ if (found_id) return 1; - spin_lock(&pci_drv->dynids.lock); - list_for_each(pos, &pci_drv->dynids.list) { - dynid = list_entry(pos, struct dynid, node); - if (pci_match_one_device(&dynid->id, pci_dev)) { - spin_unlock(&pci_drv->dynids.lock); - return 1; - } - } - spin_unlock(&pci_drv->dynids.lock); - - return 0; + return pci_bus_match_dynids(pci_dev, pci_drv); } /** diff -Nru a/drivers/pcmcia/cardbus.c b/drivers/pcmcia/cardbus.c --- a/drivers/pcmcia/cardbus.c Mon Sep 22 00:30:20 2003 +++ b/drivers/pcmcia/cardbus.c Mon Sep 22 00:30:20 2003 @@ -29,18 +29,11 @@ the provisions above, a recipient may use your version of this file under either the MPL or the GPL. - These routines handle allocating resources for Cardbus cards, as - well as setting up and shutting down Cardbus sockets. They are - called from cs.c in response to Request/ReleaseConfiguration and - Request/ReleaseIO calls. - ======================================================================*/ /* - * This file is going away. Cardbus handling has been re-written to be - * more of a PCI bridge thing, and the PCI code basically does all the - * resource handling. This has wrappers to make the rest of the PCMCIA - * subsystem not notice that it's not here any more. + * Cardbus handling has been re-written to be more of a PCI bridge thing, + * and the PCI code basically does all the resource handling. * * Linus, Jan 2000 */ diff -Nru a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c --- a/drivers/pcmcia/cs.c Mon Sep 22 00:30:20 2003 +++ b/drivers/pcmcia/cs.c Mon Sep 22 00:30:20 2003 @@ -244,13 +244,10 @@ static int socket_resume(struct pcmcia_socket *skt); static int socket_suspend(struct pcmcia_socket *skt); -int pcmcia_socket_dev_suspend(struct device *dev, u32 state, u32 level) +int pcmcia_socket_dev_suspend(struct device *dev, u32 state) { struct pcmcia_socket *socket; - if (level != SUSPEND_SAVE_STATE) - return 0; - down_read(&pcmcia_socket_list_rwsem); list_for_each_entry(socket, &pcmcia_socket_list, socket_list) { if (socket->dev.dev != dev) @@ -265,13 +262,10 @@ } EXPORT_SYMBOL(pcmcia_socket_dev_suspend); -int pcmcia_socket_dev_resume(struct device *dev, u32 level) +int pcmcia_socket_dev_resume(struct device *dev) { struct pcmcia_socket *socket; - if (level != RESUME_RESTORE_STATE) - return 0; - down_read(&pcmcia_socket_list_rwsem); list_for_each_entry(socket, &pcmcia_socket_list, socket_list) { if (socket->dev.dev != dev) @@ -287,72 +281,29 @@ EXPORT_SYMBOL(pcmcia_socket_dev_resume); -static int pccardd(void *__skt); -#define to_class_data(dev) dev->class_data - -static int pcmcia_add_socket(struct class_device *class_dev) -{ - struct pcmcia_socket *socket = class_get_devdata(class_dev); - int ret = 0; - - /* base address = 0, map = 0 */ - socket->cis_mem.flags = 0; - socket->cis_mem.speed = cis_speed; - socket->erase_busy.next = socket->erase_busy.prev = &socket->erase_busy; - INIT_LIST_HEAD(&socket->cis_cache); - spin_lock_init(&socket->lock); - - init_completion(&socket->thread_done); - init_waitqueue_head(&socket->thread_wait); - init_MUTEX(&socket->skt_sem); - spin_lock_init(&socket->thread_lock); - - socket->socket = dead_socket; - socket->ops->init(socket); - - ret = kernel_thread(pccardd, socket, CLONE_KERNEL); - if (ret < 0) - return ret; - - wait_for_completion(&socket->thread_done); - BUG_ON(!socket->thread); - pcmcia_parse_events(socket, SS_DETECT); - - return 0; -} - -static void pcmcia_remove_socket(struct class_device *class_dev) +static void pcmcia_release_socket(struct class_device *class_dev) { struct pcmcia_socket *socket = class_get_devdata(class_dev); client_t *client; - if (socket->thread) { - init_completion(&socket->thread_done); - socket->thread = NULL; - wake_up(&socket->thread_wait); - wait_for_completion(&socket->thread_done); - } - release_cis_mem(socket); while (socket->clients) { client = socket->clients; socket->clients = socket->clients->next; kfree(client); } - socket->ops = NULL; -} -static void pcmcia_release_socket(struct class_device *class_dev) -{ - struct pcmcia_socket *socket = class_get_devdata(class_dev); complete(&socket->socket_released); } +static int pccardd(void *__skt); /** * pcmcia_register_socket - add a new pcmcia socket device */ int pcmcia_register_socket(struct pcmcia_socket *socket) { + int ret; + if (!socket || !socket->ops || !socket->dev.dev) return -EINVAL; @@ -387,15 +338,34 @@ socket->dev.class = &pcmcia_socket_class; snprintf(socket->dev.class_id, BUS_ID_SIZE, "pcmcia_socket%u", socket->sock); - /* register with the device core */ - if (class_device_register(&socket->dev)) { - down_write(&pcmcia_socket_list_rwsem); - list_del(&socket->socket_list); - up_write(&pcmcia_socket_list_rwsem); - return -EINVAL; - } + /* base address = 0, map = 0 */ + socket->cis_mem.flags = 0; + socket->cis_mem.speed = cis_speed; + socket->erase_busy.next = socket->erase_busy.prev = &socket->erase_busy; + INIT_LIST_HEAD(&socket->cis_cache); + spin_lock_init(&socket->lock); + + init_completion(&socket->socket_released); + init_completion(&socket->thread_done); + init_waitqueue_head(&socket->thread_wait); + init_MUTEX(&socket->skt_sem); + spin_lock_init(&socket->thread_lock); + + ret = kernel_thread(pccardd, socket, CLONE_KERNEL); + if (ret < 0) + goto err; + + wait_for_completion(&socket->thread_done); + BUG_ON(!socket->thread); + pcmcia_parse_events(socket, SS_DETECT); return 0; + + err: + down_write(&pcmcia_socket_list_rwsem); + list_del(&socket->socket_list); + up_write(&pcmcia_socket_list_rwsem); + return ret; } /* pcmcia_register_socket */ EXPORT_SYMBOL(pcmcia_register_socket); @@ -410,10 +380,13 @@ DEBUG(0, "cs: pcmcia_unregister_socket(0x%p)\n", socket->ops); - init_completion(&socket->socket_released); - - /* remove from the device core */ - class_device_unregister(&socket->dev); + if (socket->thread) { + init_completion(&socket->thread_done); + socket->thread = NULL; + wake_up(&socket->thread_wait); + wait_for_completion(&socket->thread_done); + } + release_cis_mem(socket); /* remove from our own list */ down_write(&pcmcia_socket_list_rwsem); @@ -657,7 +630,7 @@ pcmcia_error(skt, "unsupported voltage key.\n"); return CS_BAD_TYPE; } - skt->socket.flags = SS_DEBOUNCED; + skt->socket.flags = 0; skt->ops->set_socket(skt, &skt->socket); /* @@ -690,7 +663,6 @@ } #endif send_event(skt, CS_EVENT_CARD_INSERTION, CS_EVENT_PRI_LOW); - skt->socket.flags &= ~SS_DEBOUNCED; } else { socket_shutdown(skt); cs_socket_put(skt); @@ -739,7 +711,6 @@ } else { send_event(skt, CS_EVENT_PM_RESUME, CS_EVENT_PRI_LOW); } - skt->socket.flags &= ~SS_DEBOUNCED; } else { socket_shutdown(skt); cs_socket_put(skt); @@ -791,11 +762,22 @@ { struct pcmcia_socket *skt = __skt; DECLARE_WAITQUEUE(wait, current); + int ret; daemonize("pccardd"); skt->thread = current; complete(&skt->thread_done); + skt->socket = dead_socket; + skt->ops->init(skt); + + /* register with the device core */ + ret = class_device_register(&skt->dev); + if (ret) { + printk(KERN_WARNING "PCMCIA: unable to register socket 0x%p\n", + skt); + } + add_wait_queue(&skt->thread_wait, &wait); for (;;) { unsigned long flags; @@ -831,6 +813,9 @@ } remove_wait_queue(&skt->thread_wait, &wait); + /* remove from the device core */ + class_device_unregister(&skt->dev); + complete_and_exit(&skt->thread_done, 0); } @@ -2509,12 +2494,6 @@ }; EXPORT_SYMBOL(pcmcia_socket_class); -static struct class_interface pcmcia_socket = { - .class = &pcmcia_socket_class, - .add = &pcmcia_add_socket, - .remove = &pcmcia_remove_socket, -}; - static int __init init_pcmcia_cs(void) { @@ -2522,7 +2501,6 @@ printk(KERN_INFO " %s\n", options); DEBUG(0, "%s\n", version); class_register(&pcmcia_socket_class); - class_interface_register(&pcmcia_socket); return 0; } @@ -2531,7 +2509,6 @@ { printk(KERN_INFO "unloading Kernel Card Services\n"); release_resource_db(); - class_interface_unregister(&pcmcia_socket); class_unregister(&pcmcia_socket_class); } diff -Nru a/drivers/pcmcia/cs_internal.h b/drivers/pcmcia/cs_internal.h --- a/drivers/pcmcia/cs_internal.h Mon Sep 22 00:30:17 2003 +++ b/drivers/pcmcia/cs_internal.h Mon Sep 22 00:30:17 2003 @@ -100,11 +100,8 @@ /* Flags in socket state */ #define SOCKET_PRESENT 0x0008 #define SOCKET_INUSE 0x0010 -#define SOCKET_SHUTDOWN_PENDING 0x0020 -#define SOCKET_RESET_PENDING 0x0040 #define SOCKET_SUSPEND 0x0080 #define SOCKET_WIN_REQ(i) (0x0100<<(i)) -#define SOCKET_IO_REQ(i) (0x1000<<(i)) #define SOCKET_REGION_INFO 0x4000 #define SOCKET_CARDBUS 0x8000 #define SOCKET_CARDBUS_CONFIG 0x10000 diff -Nru a/drivers/pcmcia/hd64465_ss.c b/drivers/pcmcia/hd64465_ss.c --- a/drivers/pcmcia/hd64465_ss.c Mon Sep 22 00:30:22 2003 +++ b/drivers/pcmcia/hd64465_ss.c Mon Sep 22 00:30:22 2003 @@ -867,19 +867,32 @@ local_irq_restore(flags); } +static int hd64465_suspend(struct device *dev, u32 state, u32 level) +{ + int ret = 0; + if (level == SUSPEND_SAVE_STATE) + ret = pcmcia_socket_dev_suspend(dev, state); + return ret; +} + +static int hd64465_resume(struct device *dev, u32 level) +{ + int ret = 0; + if (level == RESUME_RESTORE_STATE) + ret = pcmcia_socket_dev_resume(dev); + return ret; +} + static struct device_driver hd64465_driver = { .name = "hd64465-pcmcia", .bus = &platform_bus_type, - .suspend = pcmcia_socket_dev_suspend, - .resume = pcmcia_socket_dev_resume, + .suspend = hd64465_suspend, + .resume = hd64465_resume, }; static struct platform_device hd64465_device = { .name = "hd64465-pcmcia", .id = 0, - .dev = { - .name = "hd64465-pcmcia", - }, }; static int __init init_hs(void) diff -Nru a/drivers/pcmcia/i82092.c b/drivers/pcmcia/i82092.c --- a/drivers/pcmcia/i82092.c Mon Sep 22 00:30:25 2003 +++ b/drivers/pcmcia/i82092.c Mon Sep 22 00:30:25 2003 @@ -44,12 +44,12 @@ static int i82092aa_socket_suspend (struct pci_dev *dev, u32 state) { - return pcmcia_socket_dev_suspend(&dev->dev, state, SUSPEND_SAVE_STATE); + return pcmcia_socket_dev_suspend(&dev->dev, state); } static int i82092aa_socket_resume (struct pci_dev *dev) { - return pcmcia_socket_dev_resume(&dev->dev, RESUME_RESTORE_STATE); + return pcmcia_socket_dev_resume(&dev->dev); } static struct pci_driver i82092aa_pci_drv = { @@ -92,7 +92,7 @@ static int socket_count; /* shortcut */ -static int __init i82092aa_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) +static int __devinit i82092aa_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) { unsigned char configbyte; int i, ret; diff -Nru a/drivers/pcmcia/i82365.c b/drivers/pcmcia/i82365.c --- a/drivers/pcmcia/i82365.c Mon Sep 22 00:30:24 2003 +++ b/drivers/pcmcia/i82365.c Mon Sep 22 00:30:24 2003 @@ -1351,11 +1351,27 @@ /*====================================================================*/ +static int i82365_suspend(struct device *dev, u32 state, u32 level) +{ + int ret = 0; + if (level == SUSPEND_SAVE_STATE) + ret = pcmcia_socket_dev_suspend(dev, state); + return ret; +} + +static int i82365_resume(struct device *dev, u32 level) +{ + int ret = 0; + if (level == RESUME_RESTORE_STATE) + ret = pcmcia_socket_dev_resume(dev); + return ret; +} + static struct device_driver i82365_driver = { .name = "i82365", .bus = &platform_bus_type, - .suspend = pcmcia_socket_dev_suspend, - .resume = pcmcia_socket_dev_resume, + .suspend = i82365_suspend, + .resume = i82365_resume, }; static struct platform_device i82365_device = { diff -Nru a/drivers/pcmcia/ricoh.h b/drivers/pcmcia/ricoh.h --- a/drivers/pcmcia/ricoh.h Mon Sep 22 00:30:21 2003 +++ b/drivers/pcmcia/ricoh.h Mon Sep 22 00:30:21 2003 @@ -109,7 +109,7 @@ /* 16-bit IO and memory timing registers */ #define RL5C4XX_16BIT_IO_0 0x0088 /* 16 bit */ -#define RL5C4XX_16BIT_MEM_0 0x0088 /* 16 bit */ +#define RL5C4XX_16BIT_MEM_0 0x008a /* 16 bit */ #define RL5C4XX_SETUP_MASK 0x0007 #define RL5C4XX_SETUP_SHIFT 0 #define RL5C4XX_CMD_MASK 0x01f0 diff -Nru a/drivers/pcmcia/rsrc_mgr.c b/drivers/pcmcia/rsrc_mgr.c --- a/drivers/pcmcia/rsrc_mgr.c Mon Sep 22 00:30:22 2003 +++ b/drivers/pcmcia/rsrc_mgr.c Mon Sep 22 00:30:22 2003 @@ -491,7 +491,7 @@ void validate_mem(struct pcmcia_socket *s) { - resource_map_t *m, *n; + resource_map_t *m, mm; static u_char order[] = { 0xd0, 0xe0, 0xc0, 0xf0 }; static int hi = 0, lo = 0; u_long b, i, ok = 0; @@ -510,18 +510,18 @@ } if (lo++) goto out; - for (m = mem_db.next; m != &mem_db; m = n) { - n = m->next; + for (m = mem_db.next; m != &mem_db; m = mm.next) { + mm = *m; /* Only probe < 1 MB */ - if (m->base >= 0x100000) continue; - if ((m->base | m->num) & 0xffff) { - ok += do_mem_probe(m->base, m->num, s); + if (mm.base >= 0x100000) continue; + if ((mm.base | mm.num) & 0xffff) { + ok += do_mem_probe(mm.base, mm.num, s); continue; } /* Special probe for 64K-aligned block */ for (i = 0; i < 4; i++) { b = order[i] << 12; - if ((b >= m->base) && (b+0x10000 <= m->base+m->num)) { + if ((b >= mm.base) && (b+0x10000 <= mm.base+mm.num)) { if (ok >= mem_limit) sub_interval(&mem_db, b, 0x10000); else @@ -537,14 +537,14 @@ void validate_mem(struct pcmcia_socket *s) { - resource_map_t *m, *n; + resource_map_t *m, mm; static int done = 0; if (probe_mem && done++ == 0) { down(&rsrc_sem); - for (m = mem_db.next; m != &mem_db; m = n) { - n = m->next; - if (do_mem_probe(m->base, m->num, s)) + for (m = mem_db.next; m != &mem_db; m = mm.next) { + mm = *m; + if (do_mem_probe(mm.base, mm.num, s)) break; } up(&rsrc_sem); diff -Nru a/drivers/pcmcia/sa1100_assabet.c b/drivers/pcmcia/sa1100_assabet.c --- a/drivers/pcmcia/sa1100_assabet.c Mon Sep 22 00:30:24 2003 +++ b/drivers/pcmcia/sa1100_assabet.c Mon Sep 22 00:30:24 2003 @@ -4,7 +4,6 @@ * PCMCIA implementation routines for Assabet * */ -#include #include #include #include diff -Nru a/drivers/pcmcia/sa1100_generic.c b/drivers/pcmcia/sa1100_generic.c --- a/drivers/pcmcia/sa1100_generic.c Mon Sep 22 00:30:22 2003 +++ b/drivers/pcmcia/sa1100_generic.c Mon Sep 22 00:30:22 2003 @@ -100,13 +100,29 @@ return ret; } +static int sa11x0_drv_pcmcia_suspend(struct device *dev, u32 state, u32 level) +{ + int ret = 0; + if (level == SUSPEND_SAVE_STATE) + ret = pcmcia_socket_dev_suspend(dev, state); + return ret; +} + +static int sa11x0_drv_pcmcia_resume(struct device *dev, u32 level) +{ + int ret = 0; + if (level == RESUME_RESTORE_STATE) + ret = pcmcia_socket_dev_resume(dev); + return ret; +} + static struct device_driver sa11x0_pcmcia_driver = { .probe = sa11x0_drv_pcmcia_probe, .remove = sa11xx_drv_pcmcia_remove, .name = "sa11x0-pcmcia", .bus = &platform_bus_type, - .suspend = pcmcia_socket_dev_suspend, - .resume = pcmcia_socket_dev_resume, + .suspend = sa11x0_drv_pcmcia_suspend, + .resume = sa11x0_drv_pcmcia_resume, }; /* sa11x0_pcmcia_init() diff -Nru a/drivers/pcmcia/sa1100_simpad.c b/drivers/pcmcia/sa1100_simpad.c --- a/drivers/pcmcia/sa1100_simpad.c Mon Sep 22 00:30:25 2003 +++ b/drivers/pcmcia/sa1100_simpad.c Mon Sep 22 00:30:25 2003 @@ -13,6 +13,7 @@ #include #include #include +#include #include "sa1100_generic.h" extern long get_cs3_shadow(void); @@ -25,9 +26,6 @@ static int simpad_pcmcia_hw_init(struct sa1100_pcmcia_socket *skt) { - set_cs3_bit(PCMCIA_RESET); - clear_cs3_bit(PCMCIA_BUFF_DIS); - clear_cs3_bit(PCMCIA_RESET); clear_cs3_bit(VCC_3V_EN|VCC_5V_EN|EN0|EN1); @@ -71,7 +69,7 @@ simpad_pcmcia_configure_socket(struct sa1100_pcmcia_socket *skt, const socket_state_t *state) { - unsigned long value, flags; + unsigned long flags; local_irq_save(flags); @@ -82,8 +80,8 @@ break; case 33: - clear_cs3_bit(VCC_3V_EN|EN0); - set_cs3_bit(VCC_5V_EN|EN1); + clear_cs3_bit(VCC_3V_EN|EN1); + set_cs3_bit(VCC_5V_EN|EN0); break; case 50: @@ -99,7 +97,7 @@ return -1; } - /* Silently ignore Vpp, output enable, speaker enable. */ + local_irq_restore(flags); return 0; @@ -113,6 +111,7 @@ static void simpad_pcmcia_socket_suspend(struct sa1100_pcmcia_socket *skt) { sa11xx_disable_irqs(skt, irqs, ARRAY_SIZE(irqs)); + set_cs3_bit(PCMCIA_RESET); } static struct pcmcia_low_level simpad_pcmcia_ops = { diff -Nru a/drivers/pcmcia/sa1111_generic.c b/drivers/pcmcia/sa1111_generic.c --- a/drivers/pcmcia/sa1111_generic.c Mon Sep 22 00:30:20 2003 +++ b/drivers/pcmcia/sa1111_generic.c Mon Sep 22 00:30:20 2003 @@ -5,6 +5,7 @@ * basically means we handle everything except controlling the * power. Power is machine specific... */ +#include #include #include #include @@ -171,12 +172,12 @@ static int pcmcia_suspend(struct sa1111_dev *dev, u32 state) { - return pcmcia_socket_dev_suspend(&dev->dev, state, SUSPEND_SAVE_STATE); + return pcmcia_socket_dev_suspend(&dev->dev, state); } static int pcmcia_resume(struct sa1111_dev *dev) { - return pcmcia_socket_dev_resume(&dev->dev, RESUME_RESTORE_STATE); + return pcmcia_socket_dev_resume(&dev->dev); } static struct sa1111_driver pcmcia_driver = { diff -Nru a/drivers/pcmcia/sa11xx_core.c b/drivers/pcmcia/sa11xx_core.c --- a/drivers/pcmcia/sa11xx_core.c Mon Sep 22 00:30:19 2003 +++ b/drivers/pcmcia/sa11xx_core.c Mon Sep 22 00:30:19 2003 @@ -556,7 +556,6 @@ { SS_DMA_MODE, "SS_DMA_MODE" }, { SS_SPKR_ENA, "SS_SPKR_ENA" }, { SS_OUTPUT_ENA, "SS_OUTPUT_ENA" }, - { SS_DEBOUNCED, "SS_DEBOUNCED" }, }; static void diff -Nru a/drivers/pcmcia/tcic.c b/drivers/pcmcia/tcic.c --- a/drivers/pcmcia/tcic.c Mon Sep 22 00:30:22 2003 +++ b/drivers/pcmcia/tcic.c Mon Sep 22 00:30:22 2003 @@ -362,11 +362,27 @@ /*====================================================================*/ +static int tcic_drv_suspend(struct device *dev, u32 state, u32 level) +{ + int ret = 0; + if (level == SUSPEND_SAVE_STATE) + ret = pcmcia_socket_dev_suspend(dev, state); + return ret; +} + +static int tcic_drv_resume(struct device *dev, u32 level) +{ + int ret = 0; + if (level == RESUME_RESTORE_STATE) + ret = pcmcia_socket_dev_resume(dev); + return ret; +} + static struct device_driver tcic_driver = { .name = "tcic-pcmcia", .bus = &platform_bus_type, - .suspend = pcmcia_socket_dev_suspend, - .resume = pcmcia_socket_dev_resume, + .suspend = tcic_drv_suspend, + .resume = tcic_drv_resume, }; static struct platform_device tcic_device = { diff -Nru a/drivers/pcmcia/yenta_socket.c b/drivers/pcmcia/yenta_socket.c --- a/drivers/pcmcia/yenta_socket.c Mon Sep 22 00:30:22 2003 +++ b/drivers/pcmcia/yenta_socket.c Mon Sep 22 00:30:22 2003 @@ -248,10 +248,6 @@ struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); u16 bridge; - if (state->flags & SS_DEBOUNCED) { - /* The insertion debounce period has ended. Clear any pending insertion events */ - state->flags &= ~SS_DEBOUNCED; /* SS_DEBOUNCED is oneshot */ - } yenta_set_power(socket, state); socket->io_irq = state->io_irq; bridge = config_readw(socket, CB_BRIDGE_CONTROL) & ~(CB_BRIDGE_CRST | CB_BRIDGE_INTR); @@ -937,7 +933,7 @@ struct yenta_socket *socket = pci_get_drvdata(dev); int ret; - ret = pcmcia_socket_dev_suspend(&dev->dev, state, SUSPEND_SAVE_STATE); + ret = pcmcia_socket_dev_suspend(&dev->dev, state); if (socket) { if (socket->type && socket->type->save_state) @@ -969,7 +965,7 @@ socket->type->restore_state(socket); } - return pcmcia_socket_dev_resume(&dev->dev, RESUME_RESTORE_STATE); + return pcmcia_socket_dev_resume(&dev->dev); } diff -Nru a/drivers/pnp/card.c b/drivers/pnp/card.c --- a/drivers/pnp/card.c Mon Sep 22 00:30:24 2003 +++ b/drivers/pnp/card.c Mon Sep 22 00:30:24 2003 @@ -62,8 +62,14 @@ if (drv->probe) { if (drv->probe(clink, id)>=0) return 1; - else + else { + struct pnp_dev * dev; + card_for_each_dev(card, dev) { + if (dev->card_link == clink) + pnp_release_card_device(dev); + } kfree(clink); + } } else return 1; } diff -Nru a/drivers/pnp/isapnp/compat.c b/drivers/pnp/isapnp/compat.c --- a/drivers/pnp/isapnp/compat.c Mon Sep 22 00:30:24 2003 +++ b/drivers/pnp/isapnp/compat.c Mon Sep 22 00:30:24 2003 @@ -9,7 +9,6 @@ /* TODO: see if more isapnp functions are needed here */ #include -#include #include #include #include diff -Nru a/drivers/pnp/isapnp/core.c b/drivers/pnp/isapnp/core.c --- a/drivers/pnp/isapnp/core.c Mon Sep 22 00:30:22 2003 +++ b/drivers/pnp/isapnp/core.c Mon Sep 22 00:30:22 2003 @@ -35,7 +35,6 @@ */ #include -#include #include #include #include @@ -65,7 +64,6 @@ MODULE_PARM_DESC(isapnp_rdp, "ISA Plug & Play read data port"); MODULE_PARM(isapnp_reset, "i"); MODULE_PARM_DESC(isapnp_reset, "ISA Plug & Play reset all cards"); -MODULE_PARM(isapnp_allow_dma0, "i"); MODULE_PARM(isapnp_verbose, "i"); MODULE_PARM_DESC(isapnp_verbose, "ISA Plug & Play verbose mode"); MODULE_LICENSE("GPL"); diff -Nru a/drivers/pnp/isapnp/proc.c b/drivers/pnp/isapnp/proc.c --- a/drivers/pnp/isapnp/proc.c Mon Sep 22 00:30:20 2003 +++ b/drivers/pnp/isapnp/proc.c Mon Sep 22 00:30:20 2003 @@ -20,7 +20,6 @@ */ #include -#include #include #include #include diff -Nru a/drivers/pnp/pnpbios/bioscalls.c b/drivers/pnp/pnpbios/bioscalls.c --- a/drivers/pnp/pnpbios/bioscalls.c Mon Sep 22 00:30:23 2003 +++ b/drivers/pnp/pnpbios/bioscalls.c Mon Sep 22 00:30:23 2003 @@ -23,41 +23,7 @@ #include #include - -/* PnP BIOS signature: "$PnP" */ -#define PNP_SIGNATURE (('$' << 0) + ('P' << 8) + ('n' << 16) + ('P' << 24)) - -#pragma pack(1) -union pnp_bios_expansion_header { - struct { - u32 signature; /* "$PnP" */ - u8 version; /* in BCD */ - u8 length; /* length in bytes, currently 21h */ - u16 control; /* system capabilities */ - u8 checksum; /* all bytes must add up to 0 */ - - u32 eventflag; /* phys. address of the event flag */ - u16 rmoffset; /* real mode entry point */ - u16 rmcseg; - u16 pm16offset; /* 16 bit protected mode entry */ - u32 pm16cseg; - u32 deviceID; /* EISA encoded system ID or 0 */ - u16 rmdseg; /* real mode data segment */ - u32 pm16dseg; /* 16 bit pm data segment base */ - } fields; - char chars[0x21]; /* To calculate the checksum */ -}; -#pragma pack() - -static union pnp_bios_expansion_header * pnp_bios_hdr = NULL; - -/* - * Call this only after init time - */ -static int pnp_bios_present(void) -{ - return (pnp_bios_hdr != NULL); -} +#include "pnpbios.h" static struct { u16 offset; @@ -557,10 +523,10 @@ /* - * Probing and Initialization + * Initialization */ -static void pnpbios_prepare_bios_calls(union pnp_bios_expansion_header *header) +void pnpbios_calls_init(union pnp_bios_install_struct *header) { int i; spin_lock_init(&pnp_bios_lock); @@ -575,53 +541,4 @@ Q_SET_SEL(i, PNP_CS16, header->fields.pm16cseg, 64 * 1024); Q_SET_SEL(i, PNP_DS, header->fields.pm16dseg, 64 * 1024); } -} - -int pnpbios_probe_installation(void) -{ - union pnp_bios_expansion_header *check; - u8 sum; - int length, i; - - printk(KERN_INFO "PnPBIOS: Scanning system for PnP BIOS support...\n"); - - /* - * Search the defined area (0xf0000-0xffff0) for a valid PnP BIOS - * structure and, if one is found, sets up the selectors and - * entry points - */ - for (check = (union pnp_bios_expansion_header *) __va(0xf0000); - check < (union pnp_bios_expansion_header *) __va(0xffff0); - ((void *) (check)) += 16) { - if (check->fields.signature != PNP_SIGNATURE) - continue; - printk(KERN_INFO "PnPBIOS: Found PnP BIOS installation structure at 0x%p\n", check); - length = check->fields.length; - if (!length) { - printk(KERN_ERR "PnPBIOS: installation structure is invalid, skipping\n"); - continue; - } - for (sum = 0, i = 0; i < length; i++) - sum += check->chars[i]; - if (sum) { - printk(KERN_ERR "PnPBIOS: installation structure is corrupted, skipping\n"); - continue; - } - if (check->fields.version < 0x10) { - printk(KERN_WARNING "PnPBIOS: PnP BIOS version %d.%d is not supported\n", - check->fields.version >> 4, - check->fields.version & 15); - continue; - } - printk(KERN_INFO "PnPBIOS: PnP BIOS version %d.%d, entry 0x%x:0x%x, dseg 0x%x\n", - check->fields.version >> 4, check->fields.version & 15, - check->fields.pm16cseg, check->fields.pm16offset, - check->fields.pm16dseg); - pnp_bios_hdr = check; - pnpbios_prepare_bios_calls(check); - return 1; - } - - printk(KERN_INFO "PnPBIOS: PnP BIOS support was not detected.\n"); - return 0; } diff -Nru a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c --- a/drivers/pnp/pnpbios/core.c Mon Sep 22 00:30:18 2003 +++ b/drivers/pnp/pnpbios/core.c Mon Sep 22 00:30:18 2003 @@ -74,6 +74,13 @@ * */ +static union pnp_bios_install_struct * pnp_bios_install = NULL; + +int pnp_bios_present(void) +{ + return (pnp_bios_install != NULL); +} + struct pnp_dev_node_info node_info; void *pnpbios_kmalloc(size_t size, int f) @@ -410,7 +417,56 @@ __setup("pnpbios=", pnpbios_setup); #endif -subsys_initcall(pnpbios_init); +/* PnP BIOS signature: "$PnP" */ +#define PNP_SIGNATURE (('$' << 0) + ('P' << 8) + ('n' << 16) + ('P' << 24)) + +int __init pnpbios_probe_system(void) +{ + union pnp_bios_install_struct *check; + u8 sum; + int length, i; + + printk(KERN_INFO "PnPBIOS: Scanning system for PnP BIOS support...\n"); + + /* + * Search the defined area (0xf0000-0xffff0) for a valid PnP BIOS + * structure and, if one is found, sets up the selectors and + * entry points + */ + for (check = (union pnp_bios_install_struct *) __va(0xf0000); + check < (union pnp_bios_install_struct *) __va(0xffff0); + ((void *) (check)) += 16) { + if (check->fields.signature != PNP_SIGNATURE) + continue; + printk(KERN_INFO "PnPBIOS: Found PnP BIOS installation structure at 0x%p\n", check); + length = check->fields.length; + if (!length) { + printk(KERN_ERR "PnPBIOS: installation structure is invalid, skipping\n"); + continue; + } + for (sum = 0, i = 0; i < length; i++) + sum += check->chars[i]; + if (sum) { + printk(KERN_ERR "PnPBIOS: installation structure is corrupted, skipping\n"); + continue; + } + if (check->fields.version < 0x10) { + printk(KERN_WARNING "PnPBIOS: PnP BIOS version %d.%d is not supported\n", + check->fields.version >> 4, + check->fields.version & 15); + continue; + } + printk(KERN_INFO "PnPBIOS: PnP BIOS version %d.%d, entry 0x%x:0x%x, dseg 0x%x\n", + check->fields.version >> 4, check->fields.version & 15, + check->fields.pm16cseg, check->fields.pm16offset, + check->fields.pm16dseg); + pnp_bios_install = check; + return 1; + } + + printk(KERN_INFO "PnPBIOS: PnP BIOS support was not detected.\n"); + return 0; +} int __init pnpbios_init(void) { @@ -421,30 +477,38 @@ } /* scan the system for pnpbios support */ - if (!pnpbios_probe_installation()) + if (!pnpbios_probe_system()) return -ENODEV; + /* make preparations for bios calls */ + pnpbios_calls_init(pnp_bios_install); + /* read the node info */ - if (pnp_bios_dev_node_info(&node_info)) { + ret = pnp_bios_dev_node_info(&node_info); + if (ret) { printk(KERN_ERR "PnPBIOS: Unable to get node info. Aborting.\n"); - return -EIO; + return ret; } /* register with the pnp layer */ - pnp_register_protocol(&pnpbios_protocol); + ret = pnp_register_protocol(&pnpbios_protocol); + if (ret) { + printk(KERN_ERR "PnPBIOS: Unable to register driver. Aborting.\n"); + return ret; + } -#ifdef CONFIG_PROC_FS /* start the proc interface */ ret = pnpbios_proc_init(); if (ret) - return ret; -#endif + printk(KERN_ERR "PnPBIOS: Failed to create proc interface.\n"); /* scan for pnpbios devices */ build_devlist(); return 0; } + +subsys_initcall(pnpbios_init); static int __init pnpbios_thread_init(void) { diff -Nru a/drivers/pnp/pnpbios/pnpbios.h b/drivers/pnp/pnpbios/pnpbios.h --- a/drivers/pnp/pnpbios/pnpbios.h Mon Sep 22 00:30:20 2003 +++ b/drivers/pnp/pnpbios/pnpbios.h Mon Sep 22 00:30:20 2003 @@ -1,11 +1,47 @@ /* - * pnpbios.h - contains definitions for functions used only locally. + * pnpbios.h - contains local definitions */ +#pragma pack(1) +union pnp_bios_install_struct { + struct { + u32 signature; /* "$PnP" */ + u8 version; /* in BCD */ + u8 length; /* length in bytes, currently 21h */ + u16 control; /* system capabilities */ + u8 checksum; /* all bytes must add up to 0 */ + + u32 eventflag; /* phys. address of the event flag */ + u16 rmoffset; /* real mode entry point */ + u16 rmcseg; + u16 pm16offset; /* 16 bit protected mode entry */ + u32 pm16cseg; + u32 deviceID; /* EISA encoded system ID or 0 */ + u16 rmdseg; /* real mode data segment */ + u32 pm16dseg; /* 16 bit pm data segment base */ + } fields; + char chars[0x21]; /* To calculate the checksum */ +}; +#pragma pack() + +extern int pnp_bios_present(void); +extern int pnpbios_dont_use_current_config; +extern void *pnpbios_kmalloc(size_t size, int f); + extern int pnpbios_parse_data_stream(struct pnp_dev *dev, struct pnp_bios_node * node); extern int pnpbios_read_resources_from_node(struct pnp_resource_table *res, struct pnp_bios_node * node); extern int pnpbios_write_resources_to_node(struct pnp_resource_table *res, struct pnp_bios_node * node); extern void pnpid32_to_pnpid(u32 id, char *str); extern void pnpbios_print_status(const char * module, u16 status); -extern int pnpbios_probe_installation(void); +extern void pnpbios_calls_init(union pnp_bios_install_struct * header); + +#ifdef CONFIG_PROC_FS +extern int pnpbios_interface_attach_device(struct pnp_bios_node * node); +extern int pnpbios_proc_init (void); +extern void pnpbios_proc_exit (void); +#else +static inline int pnpbios_interface_attach_device(struct pnp_bios_node * node) { return 0; } +static inline int pnpbios_proc_init (void) { return 0; } +static inline void pnpbios_proc_exit (void) { ; } +#endif /* CONFIG_PROC */ diff -Nru a/drivers/pnp/pnpbios/proc.c b/drivers/pnp/pnpbios/proc.c --- a/drivers/pnp/pnpbios/proc.c Mon Sep 22 00:30:24 2003 +++ b/drivers/pnp/pnpbios/proc.c Mon Sep 22 00:30:24 2003 @@ -31,6 +31,8 @@ #include +#include "pnpbios.h" + static struct proc_dir_entry *proc_pnp = NULL; static struct proc_dir_entry *proc_pnp_boot = NULL; @@ -213,6 +215,9 @@ struct proc_dir_entry *ent; sprintf(name, "%02x", node->handle); + + if (!proc_pnp) + return -EIO; if ( !pnpbios_dont_use_current_config ) { ent = create_proc_entry(name, 0, proc_pnp); if (ent) { @@ -221,6 +226,9 @@ ent->data = (void *)(long)(node->handle); } } + + if (!proc_pnp_boot) + return -EIO; ent = create_proc_entry(name, 0, proc_pnp_boot); if (ent) { ent->read_proc = proc_read_node; @@ -228,6 +236,7 @@ ent->data = (void *)(long)(node->handle+0x100); return 0; } + return -EIO; } @@ -257,8 +266,9 @@ { int i; char name[3]; - - if (!proc_pnp) return; + + if (!proc_pnp) + return; for (i=0; i<0xff; i++) { sprintf(name, "%02x", i); diff -Nru a/drivers/pnp/quirks.c b/drivers/pnp/quirks.c --- a/drivers/pnp/quirks.c Mon Sep 22 00:30:24 2003 +++ b/drivers/pnp/quirks.c Mon Sep 22 00:30:24 2003 @@ -111,28 +111,6 @@ return; } -extern int pnp_allow_dma0; -static void quirk_opl3sax_resources(struct pnp_dev *dev) -{ - /* This really isn't a device quirk but isapnp core code - * doesn't allow a DMA channel of 0, afflicted card is an - * OPL3Sax where x=4. - */ - struct pnp_option *res; - int max; - res = dev->dependent; - max = 0; - for (; res; res = res->next) { - if (res->dma->map > max) - max = res->dma->map; - } - if (max == 1 && pnp_allow_dma0 == -1) { - printk(KERN_INFO "pnp: opl3sa4 quirk: Allowing dma 0.\n"); - pnp_allow_dma0 = 1; - } - return; -} - /* * PnP Quirks * Cards or devices that need some tweaking due to incomplete resource info @@ -153,7 +131,6 @@ { "CTL0043", quirk_sb16audio_resources }, { "CTL0044", quirk_sb16audio_resources }, { "CTL0045", quirk_sb16audio_resources }, - { "YMH0021", quirk_opl3sax_resources }, { "" } }; @@ -170,4 +147,3 @@ i++; } } - diff -Nru a/drivers/pnp/resource.c b/drivers/pnp/resource.c --- a/drivers/pnp/resource.c Mon Sep 22 00:30:22 2003 +++ b/drivers/pnp/resource.c Mon Sep 22 00:30:22 2003 @@ -21,8 +21,6 @@ #include #include "base.h" -int pnp_allow_dma0 = -1; /* allow dma 0 during auto activation: - * -1=off (:default), 0=off (set by user), 1=on */ int pnp_skip_pci_scan; /* skip PCI resource scanning */ int pnp_reserve_irq[16] = { [0 ... 15] = -1 }; /* reserve (don't use) some IRQ */ int pnp_reserve_dma[8] = { [0 ... 7] = -1 }; /* reserve (don't use) some DMA */ @@ -426,7 +424,7 @@ int pnp_check_dma(struct pnp_dev * dev, int idx) { - int tmp, mindma = 1; + int tmp; struct pnp_dev *tdev; unsigned long * dma = &dev->res.dma_resource[idx].start; @@ -435,9 +433,7 @@ return 1; /* check if the resource is valid */ - if (pnp_allow_dma0 == 1) - mindma = 0; - if (*dma < mindma || *dma == 4 || *dma > 7) + if (*dma < 0 || *dma == 4 || *dma > 7) return 0; /* check if the resource is reserved */ @@ -487,16 +483,6 @@ EXPORT_SYMBOL(pnp_register_port_resource); EXPORT_SYMBOL(pnp_register_mem_resource); - -/* format is: allowdma0 */ - -static int __init pnp_allowdma0(char *str) -{ - pnp_allow_dma0 = 1; - return 1; -} - -__setup("allowdma0", pnp_allowdma0); /* format is: pnp_reserve_irq=irq1[,irq2] .... */ diff -Nru a/drivers/sbus/char/bpp.c b/drivers/sbus/char/bpp.c --- a/drivers/sbus/char/bpp.c Mon Sep 22 00:30:18 2003 +++ b/drivers/sbus/char/bpp.c Mon Sep 22 00:30:18 2003 @@ -12,7 +12,6 @@ #include #include -#include #include #include #include diff -Nru a/drivers/sbus/char/cpwatchdog.c b/drivers/sbus/char/cpwatchdog.c --- a/drivers/sbus/char/cpwatchdog.c Mon Sep 22 00:30:24 2003 +++ b/drivers/sbus/char/cpwatchdog.c Mon Sep 22 00:30:24 2003 @@ -17,7 +17,6 @@ #include #include -#include #include #include #include diff -Nru a/drivers/sbus/char/display7seg.c b/drivers/sbus/char/display7seg.c --- a/drivers/sbus/char/display7seg.c Mon Sep 22 00:30:23 2003 +++ b/drivers/sbus/char/display7seg.c Mon Sep 22 00:30:23 2003 @@ -9,7 +9,6 @@ #include #include -#include #include #include #include diff -Nru a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c --- a/drivers/scsi/NCR5380.c Mon Sep 22 00:30:19 2003 +++ b/drivers/scsi/NCR5380.c Mon Sep 22 00:30:19 2003 @@ -372,7 +372,7 @@ { r = NCR5380_read(reg); if((r & bit) == val) - return r; + return 0; cpu_relax(); } @@ -381,7 +381,7 @@ { r = NCR5380_read(reg); if((r & bit) == val) - return r; + return 0; if(!in_interrupt()) yield(); else diff -Nru a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c --- a/drivers/scsi/gdth.c Mon Sep 22 00:30:22 2003 +++ b/drivers/scsi/gdth.c Mon Sep 22 00:30:22 2003 @@ -2048,7 +2048,7 @@ for (j = 0; j < 12; ++j) rtc[j] = CMOS_READ(j); } while (rtc[0] != CMOS_READ(0)); - spin_lock_irqrestore(&rtc_lock, flags); + spin_unlock_irqrestore(&rtc_lock, flags); TRACE2(("gdth_search_drives(): RTC: %x/%x/%x\n",*(ulong32 *)&rtc[0], *(ulong32 *)&rtc[4], *(ulong32 *)&rtc[8])); /* 3. send to controller firmware */ diff -Nru a/drivers/scsi/imm.h b/drivers/scsi/imm.h --- a/drivers/scsi/imm.h Mon Sep 22 00:30:17 2003 +++ b/drivers/scsi/imm.h Mon Sep 22 00:30:17 2003 @@ -100,8 +100,9 @@ [IMM_NIBBLE] = "SPP", [IMM_PS2] = "PS/2", [IMM_EPP_8] = "EPP 8 bit", -#ifdef CONFIG_SCSI_IZIP_EPP16 [IMM_EPP_16] = "EPP 16 bit", +#ifdef CONFIG_SCSI_IZIP_EPP16 + [IMM_EPP_32] = "EPP 16 bit", #else [IMM_EPP_32] = "EPP 32 bit", #endif diff -Nru a/drivers/serial/8250.c b/drivers/serial/8250.c --- a/drivers/serial/8250.c Mon Sep 22 00:30:18 2003 +++ b/drivers/serial/8250.c Mon Sep 22 00:30:18 2003 @@ -122,6 +122,7 @@ struct uart_port port; struct timer_list timer; /* "no irq" timer */ struct list_head list; /* ports on this IRQ */ + unsigned int capabilities; /* port capabilities */ unsigned short rev; unsigned char acr; unsigned char ier; @@ -683,6 +684,7 @@ serial_outp(up, UART_LCR, save_lcr); up->port.fifosize = uart_config[up->port.type].dfl_xmit_fifo_size; + up->capabilities = uart_config[up->port.type].flags; if (up->port.type == PORT_UNKNOWN) goto out; @@ -1190,6 +1192,8 @@ unsigned long flags; int retval; + up->capabilities = uart_config[up->port.type].flags; + if (up->port.type == PORT_16C950) { /* Wake up and initialize UART */ up->acr = 0; @@ -1215,7 +1219,7 @@ * Clear the FIFO buffers and disable them. * (they will be reeanbled in set_termios()) */ - if (uart_config[up->port.type].flags & UART_CLEAR_FIFO) { + if (up->capabilities & UART_CLEAR_FIFO) { serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO); serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT); @@ -1428,7 +1432,7 @@ up->rev == 0x5201) quot ++; - if (uart_config[up->port.type].flags & UART_USE_FIFO) { + if (up->capabilities & UART_USE_FIFO) { if (baud < 2400) fcr = UART_FCR_ENABLE_FIFO | UART_FCR_TRIGGER_1; #ifdef CONFIG_SERIAL_8250_RSA @@ -1489,13 +1493,13 @@ serial_out(up, UART_IER, up->ier); - if (uart_config[up->port.type].flags & UART_STARTECH) { + if (up->capabilities & UART_STARTECH) { serial_outp(up, UART_LCR, 0xBF); serial_outp(up, UART_EFR, termios->c_cflag & CRTSCTS ? UART_EFR_CTS :0); } - if (uart_config[up->port.type].flags & UART_NATSEMI) { + if (up->capabilities & UART_NATSEMI) { /* Switch to bank 2 not bank 1, to avoid resetting EXCR2 */ serial_outp(up, UART_LCR, 0xe0); } else { @@ -1524,7 +1528,7 @@ struct uart_8250_port *up = (struct uart_8250_port *)port; if (state) { /* sleep */ - if (uart_config[up->port.type].flags & UART_STARTECH) { + if (up->capabilities & UART_STARTECH) { /* Arrange to enter sleep mode */ serial_outp(up, UART_LCR, 0xBF); serial_outp(up, UART_EFR, UART_EFR_ECB); @@ -1543,7 +1547,7 @@ up->pm(port, state, oldstate); } else { /* wake */ - if (uart_config[up->port.type].flags & UART_STARTECH) { + if (up->capabilities & UART_STARTECH) { /* Wake up UART */ serial_outp(up, UART_LCR, 0xBF); serial_outp(up, UART_EFR, UART_EFR_ECB); @@ -2101,9 +2105,9 @@ * * Suspend one serial port. */ -void serial8250_suspend_port(int line, u32 level) +void serial8250_suspend_port(int line) { - uart_suspend_port(&serial8250_reg, &serial8250_ports[line].port, level); + uart_suspend_port(&serial8250_reg, &serial8250_ports[line].port); } /** @@ -2112,9 +2116,9 @@ * * Resume one serial port. */ -void serial8250_resume_port(int line, u32 level) +void serial8250_resume_port(int line) { - uart_resume_port(&serial8250_reg, &serial8250_ports[line].port, level); + uart_resume_port(&serial8250_reg, &serial8250_ports[line].port); } static int __init serial8250_init(void) diff -Nru a/drivers/serial/8250.h b/drivers/serial/8250.h --- a/drivers/serial/8250.h Mon Sep 22 00:30:17 2003 +++ b/drivers/serial/8250.h Mon Sep 22 00:30:17 2003 @@ -27,8 +27,8 @@ int serial8250_register_probe(struct serial8250_probe *probe); void serial8250_unregister_probe(struct serial8250_probe *probe); void serial8250_get_irq_map(unsigned int *map); -void serial8250_suspend_port(int line, u32 level); -void serial8250_resume_port(int line, u32 level); +void serial8250_suspend_port(int line); +void serial8250_resume_port(int line); struct old_serial_port { unsigned int uart; diff -Nru a/drivers/serial/8250_cs.c b/drivers/serial/8250_cs.c --- a/drivers/serial/8250_cs.c Mon Sep 22 00:30:21 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,712 +0,0 @@ -/*====================================================================== - - A driver for PCMCIA serial devices - - serial_cs.c 1.134 2002/05/04 05:48:53 - - The contents of this file are subject to the Mozilla Public - License Version 1.1 (the "License"); you may not use this file - except in compliance with the License. You may obtain a copy of - the License at http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - implied. See the License for the specific language governing - rights and limitations under the License. - - The initial developer of the original code is David A. Hinds - . Portions created by David A. Hinds - are Copyright (C) 1999 David A. Hinds. All Rights Reserved. - - Alternatively, the contents of this file may be used under the - terms of the GNU General Public License version 2 (the "GPL"), in which - case the provisions of the GPL are applicable instead of the - above. If you wish to allow the use of your version of this file - only under the terms of the GPL and not to allow others to use - your version of this file under the MPL, indicate your decision - by deleting the provisions above and replace them with the notice - and other provisions required by the GPL. If you do not delete - the provisions above, a recipient may use your version of this - file under either the MPL or the GPL. - -======================================================================*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#ifdef PCMCIA_DEBUG -static int pc_debug = PCMCIA_DEBUG; -MODULE_PARM(pc_debug, "i"); -#define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) -static char *version = "serial_cs.c 1.134 2002/05/04 05:48:53 (David Hinds)"; -#else -#define DEBUG(n, args...) -#endif - -/*====================================================================*/ - -/* Parameters that can be set with 'insmod' */ - -/* Bit map of interrupts to choose from */ -static u_int irq_mask = 0xdeb8; -static int irq_list[4] = { -1 }; - -/* Enable the speaker? */ -static int do_sound = 1; -/* Skip strict UART tests? */ -static int buggy_uart; - -MODULE_PARM(irq_mask, "i"); -MODULE_PARM(irq_list, "1-4i"); -MODULE_PARM(do_sound, "i"); -MODULE_PARM(buggy_uart, "i"); - -/*====================================================================*/ - -/* Table of multi-port card ID's */ - -struct multi_id { - u_short manfid; - u_short prodid; - int multi; /* 1 = multifunction, > 1 = # ports */ -}; - -static struct multi_id multi_id[] = { - { MANFID_OMEGA, PRODID_OMEGA_QSP_100, 4 }, - { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232, 2 }, - { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232_D1, 2 }, - { MANFID_QUATECH, PRODID_QUATECH_QUAD_RS232, 4 }, - { MANFID_SOCKET, PRODID_SOCKET_DUAL_RS232, 2 }, - { MANFID_INTEL, PRODID_INTEL_DUAL_RS232, 2 }, - { MANFID_NATINST, PRODID_NATINST_QUAD_RS232, 4 } -}; -#define MULTI_COUNT (sizeof(multi_id)/sizeof(struct multi_id)) - -struct serial_info { - dev_link_t link; - int ndev; - int multi; - int slave; - int manfid; - dev_node_t node[4]; - int line[4]; -}; - -static void serial_config(dev_link_t * link); -static int serial_event(event_t event, int priority, - event_callback_args_t * args); - -static dev_info_t dev_info = "serial_cs"; - -static dev_link_t *serial_attach(void); -static void serial_detach(dev_link_t *); - -static dev_link_t *dev_list = NULL; - -/*====================================================================== - - After a card is removed, serial_remove() will unregister - the serial device(s), and release the PCMCIA configuration. - -======================================================================*/ - -static void serial_remove(dev_link_t *link) -{ - struct serial_info *info = link->priv; - int i; - - link->state &= ~DEV_PRESENT; - - DEBUG(0, "serial_release(0x%p)\n", link); - - /* - * Recheck to see if the device is still configured. - */ - if (info->link.state & DEV_CONFIG) { - for (i = 0; i < info->ndev; i++) - unregister_serial(info->line[i]); - - info->link.dev = NULL; - - if (!info->slave) { - CardServices(ReleaseConfiguration, info->link.handle); - CardServices(ReleaseIO, info->link.handle, &info->link.io); - CardServices(ReleaseIRQ, info->link.handle, &info->link.irq); - } - - info->link.state &= ~DEV_CONFIG; - } -} - -/*====================================================================== - - serial_attach() creates an "instance" of the driver, allocating - local data structures for one device. The device is registered - with Card Services. - -======================================================================*/ - -static dev_link_t *serial_attach(void) -{ - struct serial_info *info; - client_reg_t client_reg; - dev_link_t *link; - int i, ret; - - DEBUG(0, "serial_attach()\n"); - - /* Create new serial device */ - info = kmalloc(sizeof (*info), GFP_KERNEL); - if (!info) - return NULL; - memset(info, 0, sizeof (*info)); - link = &info->link; - link->priv = info; - - link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; - link->io.NumPorts1 = 8; - link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; - link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID; - if (irq_list[0] == -1) - link->irq.IRQInfo2 = irq_mask; - else - for (i = 0; i < 4; i++) - link->irq.IRQInfo2 |= 1 << irq_list[i]; - link->conf.Attributes = CONF_ENABLE_IRQ; - if (do_sound) { - link->conf.Attributes |= CONF_ENABLE_SPKR; - link->conf.Status = CCSR_AUDIO_ENA; - } - link->conf.IntType = INT_MEMORY_AND_IO; - - /* Register with Card Services */ - link->next = dev_list; - dev_list = link; - client_reg.dev_info = &dev_info; - client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE; - client_reg.EventMask = - CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL | - CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET | - CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME; - client_reg.event_handler = &serial_event; - client_reg.Version = 0x0210; - client_reg.event_callback_args.client_data = link; - ret = CardServices(RegisterClient, &link->handle, &client_reg); - if (ret != CS_SUCCESS) { - cs_error(link->handle, RegisterClient, ret); - serial_detach(link); - return NULL; - } - - return link; -} - -/*====================================================================== - - This deletes a driver "instance". The device is de-registered - with Card Services. If it has been released, all local data - structures are freed. Otherwise, the structures will be freed - when the device is released. - -======================================================================*/ - -static void serial_detach(dev_link_t * link) -{ - struct serial_info *info = link->priv; - dev_link_t **linkp; - int ret; - - DEBUG(0, "serial_detach(0x%p)\n", link); - - /* Locate device structure */ - for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) - if (*linkp == link) - break; - if (*linkp == NULL) - return; - - /* - * Ensure any outstanding scheduled tasks are completed. - */ - flush_scheduled_work(); - - /* - * Ensure that the ports have been released. - */ - serial_remove(link); - - if (link->handle) { - ret = CardServices(DeregisterClient, link->handle); - if (ret != CS_SUCCESS) - cs_error(link->handle, DeregisterClient, ret); - } - - /* Unlink device structure, free bits */ - *linkp = link->next; - kfree(info); -} - -/*====================================================================*/ - -static int setup_serial(struct serial_info * info, ioaddr_t port, int irq) -{ - struct serial_struct serial; - int line; - - memset(&serial, 0, sizeof (serial)); - serial.port = port; - serial.irq = irq; - serial.flags = UPF_SKIP_TEST | UPF_SHARE_IRQ; - if (buggy_uart) - serial.flags |= UPF_BUGGY_UART; - line = register_serial(&serial); - if (line < 0) { - printk(KERN_NOTICE "serial_cs: register_serial() at 0x%04lx," - " irq %d failed\n", (u_long) serial.port, serial.irq); - return -EINVAL; - } - - info->line[info->ndev] = line; - sprintf(info->node[info->ndev].dev_name, "ttyS%d", line); - info->node[info->ndev].major = TTY_MAJOR; - info->node[info->ndev].minor = 0x40 + line; - if (info->ndev > 0) - info->node[info->ndev - 1].next = &info->node[info->ndev]; - info->ndev++; - - return 0; -} - -/*====================================================================*/ - -static int -get_tuple(int fn, client_handle_t handle, tuple_t * tuple, cisparse_t * parse) -{ - int i; - i = CardServices(fn, handle, tuple); - if (i != CS_SUCCESS) - return CS_NO_MORE_ITEMS; - i = CardServices(GetTupleData, handle, tuple); - if (i != CS_SUCCESS) - return i; - return CardServices(ParseTuple, handle, tuple, parse); -} - -#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c) -#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c) - -/*====================================================================*/ - -static int simple_config(dev_link_t * link) -{ - static ioaddr_t base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 }; - client_handle_t handle = link->handle; - struct serial_info *info = link->priv; - tuple_t tuple; - u_char buf[256]; - cisparse_t parse; - cistpl_cftable_entry_t *cf = &parse.cftable_entry; - config_info_t config; - int i, j, try; - - /* If the card is already configured, look up the port and irq */ - i = CardServices(GetConfigurationInfo, handle, &config); - if ((i == CS_SUCCESS) && (config.Attributes & CONF_VALID_CLIENT)) { - ioaddr_t port = 0; - if ((config.BasePort2 != 0) && (config.NumPorts2 == 8)) { - port = config.BasePort2; - info->slave = 1; - } else if ((info->manfid == MANFID_OSITECH) && - (config.NumPorts1 == 0x40)) { - port = config.BasePort1 + 0x28; - info->slave = 1; - } - if (info->slave) - return setup_serial(info, port, config.AssignedIRQ); - } - link->conf.Vcc = config.Vcc; - - /* First pass: look for a config entry that looks normal. */ - tuple.TupleData = (cisdata_t *) buf; - tuple.TupleOffset = 0; - tuple.TupleDataMax = 255; - tuple.Attributes = 0; - tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; - /* Two tries: without IO aliases, then with aliases */ - for (try = 0; try < 2; try++) { - i = first_tuple(handle, &tuple, &parse); - while (i != CS_NO_MORE_ITEMS) { - if (i != CS_SUCCESS) - goto next_entry; - if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM)) - link->conf.Vpp1 = link->conf.Vpp2 = - cf->vpp1.param[CISTPL_POWER_VNOM] / 10000; - if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && - (cf->io.win[0].base != 0)) { - link->conf.ConfigIndex = cf->index; - link->io.BasePort1 = cf->io.win[0].base; - link->io.IOAddrLines = (try == 0) ? - 16 : cf->io.flags & CISTPL_IO_LINES_MASK; - i = - CardServices(RequestIO, link->handle, - &link->io); - if (i == CS_SUCCESS) - goto found_port; - } - next_entry: - i = next_tuple(handle, &tuple, &parse); - } - } - - /* Second pass: try to find an entry that isn't picky about - its base address, then try to grab any standard serial port - address, and finally try to get any free port. */ - i = first_tuple(handle, &tuple, &parse); - while (i != CS_NO_MORE_ITEMS) { - if ((i == CS_SUCCESS) && (cf->io.nwin > 0) && - ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) { - link->conf.ConfigIndex = cf->index; - for (j = 0; j < 5; j++) { - link->io.BasePort1 = base[j]; - link->io.IOAddrLines = base[j] ? 16 : 3; - i = CardServices(RequestIO, link->handle, - &link->io); - if (i == CS_SUCCESS) - goto found_port; - } - } - i = next_tuple(handle, &tuple, &parse); - } - - found_port: - if (i != CS_SUCCESS) { - printk(KERN_NOTICE - "serial_cs: no usable port range found, giving up\n"); - cs_error(link->handle, RequestIO, i); - return -1; - } - - i = CardServices(RequestIRQ, link->handle, &link->irq); - if (i != CS_SUCCESS) { - cs_error(link->handle, RequestIRQ, i); - link->irq.AssignedIRQ = 0; - } - if (info->multi && (info->manfid == MANFID_3COM)) - link->conf.ConfigIndex &= ~(0x08); - i = CardServices(RequestConfiguration, link->handle, &link->conf); - if (i != CS_SUCCESS) { - cs_error(link->handle, RequestConfiguration, i); - return -1; - } - - return setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ); -} - -static int multi_config(dev_link_t * link) -{ - client_handle_t handle = link->handle; - struct serial_info *info = link->priv; - tuple_t tuple; - u_char buf[256]; - cisparse_t parse; - cistpl_cftable_entry_t *cf = &parse.cftable_entry; - config_info_t config; - int i, base2 = 0; - - i = CardServices(GetConfigurationInfo, handle, &config); - if (i != CS_SUCCESS) { - cs_error(handle, GetConfigurationInfo, i); - return -1; - } - link->conf.Vcc = config.Vcc; - - tuple.TupleData = (cisdata_t *) buf; - tuple.TupleOffset = 0; - tuple.TupleDataMax = 255; - tuple.Attributes = 0; - tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; - - /* First, look for a generic full-sized window */ - link->io.NumPorts1 = info->multi * 8; - i = first_tuple(handle, &tuple, &parse); - while (i != CS_NO_MORE_ITEMS) { - /* The quad port cards have bad CIS's, so just look for a - window larger than 8 ports and assume it will be right */ - if ((i == CS_SUCCESS) && (cf->io.nwin == 1) && - (cf->io.win[0].len > 8)) { - link->conf.ConfigIndex = cf->index; - link->io.BasePort1 = cf->io.win[0].base; - link->io.IOAddrLines = - cf->io.flags & CISTPL_IO_LINES_MASK; - i = CardServices(RequestIO, link->handle, &link->io); - base2 = link->io.BasePort1 + 8; - if (i == CS_SUCCESS) - break; - } - i = next_tuple(handle, &tuple, &parse); - } - - /* If that didn't work, look for two windows */ - if (i != CS_SUCCESS) { - link->io.NumPorts1 = link->io.NumPorts2 = 8; - info->multi = 2; - i = first_tuple(handle, &tuple, &parse); - while (i != CS_NO_MORE_ITEMS) { - if ((i == CS_SUCCESS) && (cf->io.nwin == 2)) { - link->conf.ConfigIndex = cf->index; - link->io.BasePort1 = cf->io.win[0].base; - link->io.BasePort2 = cf->io.win[1].base; - link->io.IOAddrLines = - cf->io.flags & CISTPL_IO_LINES_MASK; - i = - CardServices(RequestIO, link->handle, - &link->io); - base2 = link->io.BasePort2; - if (i == CS_SUCCESS) - break; - } - i = next_tuple(handle, &tuple, &parse); - } - } - - if (i != CS_SUCCESS) { - cs_error(link->handle, RequestIO, i); - return -1; - } - - i = CardServices(RequestIRQ, link->handle, &link->irq); - if (i != CS_SUCCESS) { - printk(KERN_NOTICE - "serial_cs: no usable port range found, giving up\n"); - cs_error(link->handle, RequestIRQ, i); - link->irq.AssignedIRQ = 0; - } - /* Socket Dual IO: this enables irq's for second port */ - if (info->multi && (info->manfid == MANFID_SOCKET)) { - link->conf.Present |= PRESENT_EXT_STATUS; - link->conf.ExtStatus = ESR_REQ_ATTN_ENA; - } - i = CardServices(RequestConfiguration, link->handle, &link->conf); - if (i != CS_SUCCESS) { - cs_error(link->handle, RequestConfiguration, i); - return -1; - } - - /* The Oxford Semiconductor OXCF950 cards are in fact single-port: - 8 registers are for the UART, the others are extra registers */ - if (info->manfid == MANFID_OXSEMI) { - if (cf->index == 1 || cf->index == 3) { - setup_serial(info, base2, link->irq.AssignedIRQ); - outb(12, link->io.BasePort1 + 1); - } else { - setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ); - outb(12, base2 + 1); - } - return 0; - } - - setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ); - /* The Nokia cards are not really multiport cards */ - if (info->manfid == MANFID_NOKIA) - return 0; - for (i = 0; i < info->multi - 1; i++) - setup_serial(info, base2 + (8 * i), link->irq.AssignedIRQ); - - return 0; -} - -/*====================================================================== - - serial_config() is scheduled to run after a CARD_INSERTION event - is received, to configure the PCMCIA socket, and to make the - serial device available to the system. - -======================================================================*/ - -#define CS_CHECK(fn, args...) \ -while ((last_ret=CardServices(last_fn=(fn), args))!=0) goto cs_failed - -void serial_config(dev_link_t * link) -{ - client_handle_t handle = link->handle; - struct serial_info *info = link->priv; - tuple_t tuple; - u_short buf[128]; - cisparse_t parse; - cistpl_cftable_entry_t *cf = &parse.cftable_entry; - int i, last_ret, last_fn; - - DEBUG(0, "serial_config(0x%p)\n", link); - - tuple.TupleData = (cisdata_t *) buf; - tuple.TupleOffset = 0; - tuple.TupleDataMax = 255; - tuple.Attributes = 0; - /* Get configuration register information */ - tuple.DesiredTuple = CISTPL_CONFIG; - last_ret = first_tuple(handle, &tuple, &parse); - if (last_ret != CS_SUCCESS) { - last_fn = ParseTuple; - goto cs_failed; - } - link->conf.ConfigBase = parse.config.base; - link->conf.Present = parse.config.rmask[0]; - - /* Configure card */ - link->state |= DEV_CONFIG; - - /* Is this a compliant multifunction card? */ - tuple.DesiredTuple = CISTPL_LONGLINK_MFC; - tuple.Attributes = TUPLE_RETURN_COMMON | TUPLE_RETURN_LINK; - info->multi = (first_tuple(handle, &tuple, &parse) == CS_SUCCESS); - - /* Is this a multiport card? */ - tuple.DesiredTuple = CISTPL_MANFID; - if (first_tuple(handle, &tuple, &parse) == CS_SUCCESS) { - info->manfid = le16_to_cpu(buf[0]); - for (i = 0; i < MULTI_COUNT; i++) - if ((info->manfid == multi_id[i].manfid) && - (le16_to_cpu(buf[1]) == multi_id[i].prodid)) - break; - if (i < MULTI_COUNT) - info->multi = multi_id[i].multi; - } - - /* Another check for dual-serial cards: look for either serial or - multifunction cards that ask for appropriate IO port ranges */ - tuple.DesiredTuple = CISTPL_FUNCID; - if ((info->multi == 0) && - ((first_tuple(handle, &tuple, &parse) != CS_SUCCESS) || - (parse.funcid.func == CISTPL_FUNCID_MULTI) || - (parse.funcid.func == CISTPL_FUNCID_SERIAL))) { - tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; - if (first_tuple(handle, &tuple, &parse) == CS_SUCCESS) { - if ((cf->io.nwin == 1) && (cf->io.win[0].len % 8 == 0)) - info->multi = cf->io.win[0].len >> 3; - if ((cf->io.nwin == 2) && (cf->io.win[0].len == 8) && - (cf->io.win[1].len == 8)) - info->multi = 2; - } - } - - if (info->multi > 1) - multi_config(link); - else - simple_config(link); - - if (info->ndev == 0) - goto failed; - - if (info->manfid == MANFID_IBM) { - conf_reg_t reg = { 0, CS_READ, 0x800, 0 }; - CS_CHECK(AccessConfigurationRegister, link->handle, ®); - reg.Action = CS_WRITE; - reg.Value = reg.Value | 1; - CS_CHECK(AccessConfigurationRegister, link->handle, ®); - } - - link->dev = &info->node[0]; - link->state &= ~DEV_CONFIG_PENDING; - return; - - cs_failed: - cs_error(link->handle, last_fn, last_ret); - failed: - serial_remove(link); - link->state &= ~DEV_CONFIG_PENDING; -} - -/*====================================================================== - - The card status event handler. Mostly, this schedules other - stuff to run after an event is received. A CARD_REMOVAL event - also sets some flags to discourage the serial drivers from - talking to the ports. - -======================================================================*/ - -static int -serial_event(event_t event, int priority, event_callback_args_t * args) -{ - dev_link_t *link = args->client_data; - struct serial_info *info = link->priv; - - DEBUG(1, "serial_event(0x%06x)\n", event); - - switch (event) { - case CS_EVENT_CARD_REMOVAL: - serial_remove(link); - break; - - case CS_EVENT_CARD_INSERTION: - link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; - serial_config(link); - break; - - case CS_EVENT_PM_SUSPEND: - link->state |= DEV_SUSPEND; - /* Fall through... */ - case CS_EVENT_RESET_PHYSICAL: - if ((link->state & DEV_CONFIG) && !info->slave) - CardServices(ReleaseConfiguration, link->handle); - break; - - case CS_EVENT_PM_RESUME: - link->state &= ~DEV_SUSPEND; - /* Fall through... */ - case CS_EVENT_CARD_RESET: - if (DEV_OK(link) && !info->slave) - CardServices(RequestConfiguration, link->handle, - &link->conf); - break; - } - return 0; -} - -static struct pcmcia_driver serial_cs_driver = { - .owner = THIS_MODULE, - .drv = { - .name = "serial_cs", - }, - .attach = serial_attach, - .detach = serial_detach, -}; - -static int __init init_serial_cs(void) -{ - return pcmcia_register_driver(&serial_cs_driver); -} - -static void __exit exit_serial_cs(void) -{ - pcmcia_unregister_driver(&serial_cs_driver); - - /* XXX: this really needs to move into generic code.. */ - while (dev_list != NULL) - serial_detach(dev_list); -} - -module_init(init_serial_cs); -module_exit(exit_serial_cs); - -MODULE_LICENSE("GPL"); diff -Nru a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c --- a/drivers/serial/8250_pci.c Mon Sep 22 00:30:23 2003 +++ b/drivers/serial/8250_pci.c Mon Sep 22 00:30:23 2003 @@ -1600,19 +1600,6 @@ } } -static int pciserial_save_state_one(struct pci_dev *dev, u32 state) -{ - struct serial_private *priv = pci_get_drvdata(dev); - - if (priv) { - int i; - - for (i = 0; i < priv->nr; i++) - serial8250_suspend_port(priv->line[i], SUSPEND_SAVE_STATE); - } - return 0; -} - static int pciserial_suspend_one(struct pci_dev *dev, u32 state) { struct serial_private *priv = pci_get_drvdata(dev); @@ -1621,7 +1608,7 @@ int i; for (i = 0; i < priv->nr; i++) - serial8250_suspend_port(priv->line[i], SUSPEND_POWER_DOWN); + serial8250_suspend_port(priv->line[i]); } return 0; } @@ -1639,10 +1626,8 @@ if (priv->quirk->init) priv->quirk->init(dev); - for (i = 0; i < priv->nr; i++) { - serial8250_resume_port(priv->line[i], RESUME_POWER_ON); - serial8250_resume_port(priv->line[i], RESUME_RESTORE_STATE); - } + for (i = 0; i < priv->nr; i++) + serial8250_resume_port(priv->line[i]); } return 0; } @@ -2040,7 +2025,6 @@ .name = "serial", .probe = pciserial_init_one, .remove = __devexit_p(pciserial_remove_one), - .save_state = pciserial_save_state_one, .suspend = pciserial_suspend_one, .resume = pciserial_resume_one, .id_table = serial_pci_tbl, diff -Nru a/drivers/serial/Kconfig b/drivers/serial/Kconfig --- a/drivers/serial/Kconfig Mon Sep 22 00:30:24 2003 +++ b/drivers/serial/Kconfig Mon Sep 22 00:30:24 2003 @@ -10,6 +10,7 @@ # The new 8250/16550 serial drivers config SERIAL_8250 tristate "8250/16550 and compatible serial support" + select SERIAL_CORE ---help--- This selects whether you want to include the driver for the standard serial ports. The standard answer is Y. People who might say N @@ -41,6 +42,7 @@ config SERIAL_8250_CONSOLE bool "Console on 8250/16550 and compatible serial port" depends on SERIAL_8250=y + select SERIAL_CORE_CONSOLE ---help--- If you say Y here, it will be possible to use a serial port as the system console (the system console is the device which receives all @@ -167,12 +169,14 @@ config SERIAL_ANAKIN bool "Anakin serial port support" depends on ARM && ARCH_ANAKIN + select SERIAL_CORE help ::: To be written ::: config SERIAL_ANAKIN_CONSOLE bool "Console on Anakin serial port" depends on SERIAL_ANAKIN + select SERIAL_CORE_CONSOLE help Even if you say Y here, the currently visible virtual console (/dev/tty0) will still be used as the system console by default, but @@ -190,7 +194,8 @@ config SERIAL_AMBA tristate "ARM AMBA serial port support" - depends on ARM && ARCH_INTEGRATOR + depends on ARM_AMBA + select SERIAL_CORE help This selects the ARM(R) AMBA(R) PrimeCell UART. If you have an Integrator platform, say Y or M here. @@ -200,6 +205,7 @@ config SERIAL_AMBA_CONSOLE bool "Support for console on AMBA serial port" depends on SERIAL_AMBA=y + select SERIAL_CORE_CONSOLE ---help--- Say Y here if you wish to use an AMBA PrimeCell UART as the system console (the system console is the device which receives all kernel @@ -214,18 +220,20 @@ config SERIAL_INTEGRATOR bool - depends on SERIAL_AMBA=y + depends on SERIAL_AMBA && ARCH_INTEGRATOR default y config SERIAL_CLPS711X tristate "CLPS711X serial port support" depends on ARM && ARCH_CLPS711X + select SERIAL_CORE help ::: To be written ::: config SERIAL_CLPS711X_CONSOLE bool "Support for console on CLPS711X serial port" depends on SERIAL_CLPS711X=y + select SERIAL_CORE_CONSOLE help Even if you say Y here, the currently visible virtual console (/dev/tty0) will still be used as the system console by default, but @@ -243,6 +251,7 @@ config SERIAL_21285 tristate "DC21285 serial port support" depends on ARM && FOOTBRIDGE + select SERIAL_CORE help If you have a machine based on a 21285 (Footbridge) StrongARM(R)/ PCI bridge you can enable its onboard serial port by enabling this @@ -258,6 +267,7 @@ config SERIAL_21285_CONSOLE bool "Console on DC21285 serial port" depends on SERIAL_21285=y + select SERIAL_CORE_CONSOLE help If you have enabled the serial port on the 21285 footbridge you can make it the console by answering Y to this option. @@ -272,6 +282,7 @@ config SERIAL_UART00 bool "Excalibur serial port (uart00) support" depends on ARM && ARCH_CAMELOT + select SERIAL_CORE help Say Y here if you want to use the hard logic uart on Excalibur. This driver also supports soft logic implentations of this uart core. @@ -279,6 +290,7 @@ config SERIAL_UART00_CONSOLE bool "Support for console on Excalibur serial port" depends on SERIAL_UART00 + select SERIAL_CORE_CONSOLE help Say Y here if you want to support a serial console on an Excalibur hard logic uart or uart00 IP core. @@ -293,6 +305,7 @@ config SERIAL_SA1100 bool "SA1100 serial port support" depends on ARM && ARCH_SA1100 + select SERIAL_CORE help If you have a machine based on a SA1100/SA1110 StrongARM(R) CPU you can enable its onboard serial port by enabling this option. @@ -302,6 +315,7 @@ config SERIAL_SA1100_CONSOLE bool "Console on SA1100 serial port" depends on SERIAL_SA1100 + select SERIAL_CORE_CONSOLE help If you have enabled the serial port on the SA1100/SA1110 StrongARM CPU you can make it the console by answering Y to this option. @@ -316,6 +330,8 @@ config SERIAL_SUNCORE bool depends on SPARC32 || SPARC64 + select SERIAL_CORE + select SERIAL_CORE_CONSOLE default y config SERIAL_SUNZILOG @@ -352,6 +368,7 @@ config SERIAL_MUX tristate "Serial MUX support" depends on PARISC + select SERIAL_CORE default y ---help--- Saying Y here will enable the hardware MUX serial driver for @@ -369,6 +386,7 @@ config SERIAL_MUX_CONSOLE bool "Support for console on serial MUX" depends on SERIAL_MUX + select SERIAL_CORE_CONSOLE default y config PDC_CONSOLE @@ -406,6 +424,7 @@ config V850E_UART bool "NEC V850E on-chip UART support" depends on V850E_MA1 || V850E_ME2 || V850E_TEG || V850E2_ANNA || V850E_AS85EP1 + select SERIAL_CORE default y config V850E_UARTB @@ -416,10 +435,12 @@ config V850E_UART_CONSOLE bool "Use NEC V850E on-chip UART for console" depends on V850E_UART + select SERIAL_CORE_CONSOLE config SERIAL98 tristate "PC-9800 8251-based primary serial port support" depends on X86_PC9800 + select SERIAL_CORE help If you want to use standard primary serial ports on PC-9800, say Y. Otherwise, say N. @@ -427,16 +448,13 @@ config SERIAL98_CONSOLE bool "Support for console on PC-9800 standard serial port" depends on SERIAL98=y + select SERIAL_CORE_CONSOLE config SERIAL_CORE tristate - default m if SERIAL_AMBA!=y && SERIAL_CLPS711X!=y && SERIAL_21285!=y && !SERIAL_SA1100 && !SERIAL_ANAKIN && !SERIAL_UART00 && SERIAL_8250!=y && SERIAL_MUX!=y && !SERIAL_ROCKETPORT && !SERIAL_SUNCORE && !V850E_UART && SERIAL_PMACZILOG!=y && (SERIAL_AMBA=m || SERIAL_CLPS711X=m || SERIAL_21285=m || SERIAL_8250=m || SERIAL_MUX=m || SERIAL98=m || SERIAL_PMACZILOG=m) - default y if SERIAL_AMBA=y || SERIAL_CLPS711X=y || SERIAL_21285=y || SERIAL_SA1100 || SERIAL_ANAKIN || SERIAL_UART00 || SERIAL_8250=y || SERIAL_MUX=y || SERIAL_ROCKETPORT || SERIAL_SUNCORE || V850E_UART || SERIAL98=y || SERIAL_PMACZILOG=y config SERIAL_CORE_CONSOLE bool - depends on SERIAL_AMBA_CONSOLE || SERIAL_CLPS711X_CONSOLE || SERIAL_21285_CONSOLE || SERIAL_SA1100_CONSOLE || SERIAL_ANAKIN_CONSOLE || SERIAL_UART00_CONSOLE || SERIAL_8250_CONSOLE || SERIAL_MUX_CONSOLE || SERIAL_SUNZILOG_CONSOLE || SERIAL_SUNSU_CONSOLE || SERIAL_SUNSAB_CONSOLE || V850E_UART_CONSOLE || SERIAL98_CONSOLE || SERIAL_PMACZILOG_CONSOLE - default y config SERIAL_68328 bool "68328 serial support" @@ -476,6 +494,7 @@ config SERIAL_PMACZILOG tristate "PowerMac z85c30 ESCC support" depends on PPC_OF + select SERIAL_CORE help This driver supports the Zilog z85C30 serial ports found on PowerMac machines. @@ -484,6 +503,7 @@ config SERIAL_PMACZILOG_CONSOLE bool "Console on PowerMac z85c30 serial port" depends on SERIAL_PMACZILOG=y + select SERIAL_CORE_CONSOLE help If you would like to be able to use the z85c30 serial port on your PowerMac as the console, you can do so by answering diff -Nru a/drivers/serial/Makefile b/drivers/serial/Makefile --- a/drivers/serial/Makefile Mon Sep 22 00:30:21 2003 +++ b/drivers/serial/Makefile Mon Sep 22 00:30:21 2003 @@ -11,10 +11,10 @@ serial-8250-$(CONFIG_SERIAL_8250_HCDP) += 8250_hcdp.o serial-8250-$(CONFIG_SERIAL_8250_ACPI) += 8250_acpi.o -obj-$(CONFIG_SERIAL_CORE) += core.o +obj-$(CONFIG_SERIAL_CORE) += serial_core.o obj-$(CONFIG_SERIAL_21285) += 21285.o obj-$(CONFIG_SERIAL_8250) += 8250.o $(serial-8250-y) -obj-$(CONFIG_SERIAL_8250_CS) += 8250_cs.o +obj-$(CONFIG_SERIAL_8250_CS) += serial_cs.o obj-$(CONFIG_SERIAL_8250_ACORN) += 8250_acorn.o obj-$(CONFIG_SERIAL_ANAKIN) += anakin.o obj-$(CONFIG_SERIAL_AMBA) += amba.o diff -Nru a/drivers/serial/clps711x.c b/drivers/serial/clps711x.c --- a/drivers/serial/clps711x.c Mon Sep 22 00:30:20 2003 +++ b/drivers/serial/clps711x.c Mon Sep 22 00:30:20 2003 @@ -104,7 +104,7 @@ { } -static void clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *regs) { struct uart_port *port = dev_id; struct tty_struct *tty = port->info->tty; @@ -139,7 +139,7 @@ } out: tty_flip_buffer_push(tty); - return; + return IRQ_HANDLED; handle_error: if (ch & UARTDR_PARERR) @@ -180,7 +180,7 @@ goto error_return; } -static void clps711xuart_int_tx(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t clps711xuart_int_tx(int irq, void *dev_id, struct pt_regs *regs) { struct uart_port *port = dev_id; struct circ_buf *xmit = &port->info->xmit; @@ -190,11 +190,11 @@ clps_writel(port->x_char, UARTDR(port)); port->icount.tx++; port->x_char = 0; - return; + return IRQ_HANDLED; } if (uart_circ_empty(xmit) || uart_tx_stopped(port)) { clps711xuart_stop_tx(port, 0); - return; + return IRQ_HANDLED; } count = port->fifosize >> 1; @@ -211,6 +211,8 @@ if (uart_circ_empty(xmit)) clps711xuart_stop_tx(port, 0); + + return IRQ_HANDLED; } static unsigned int clps711xuart_tx_empty(struct uart_port *port) diff -Nru a/drivers/serial/core.c b/drivers/serial/core.c --- a/drivers/serial/core.c Mon Sep 22 00:30:19 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,2432 +0,0 @@ -/* - * linux/drivers/char/core.c - * - * Driver core for serial ports - * - * Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o. - * - * Copyright 1999 ARM Limited - * Copyright (C) 2000-2001 Deep Blue Solutions Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include /* for serial_state and serial_icounter_struct */ - -#include -#include - -#undef DEBUG -#ifdef DEBUG -#define DPRINTK(x...) printk(x) -#else -#define DPRINTK(x...) do { } while (0) -#endif - -/* - * This is used to lock changes in serial line configuration. - */ -static DECLARE_MUTEX(port_sem); - -#define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8) - -#define uart_users(state) ((state)->count + ((state)->info ? (state)->info->blocked_open : 0)) - -#ifdef CONFIG_SERIAL_CORE_CONSOLE -#define uart_console(port) ((port)->cons && (port)->cons->index == (port)->line) -#else -#define uart_console(port) (0) -#endif - -static void uart_change_speed(struct uart_state *state, struct termios *old_termios); -static void uart_wait_until_sent(struct tty_struct *tty, int timeout); -static void uart_change_pm(struct uart_state *state, int pm_state); - -/* - * This routine is used by the interrupt handler to schedule processing in - * the software interrupt portion of the driver. - */ -void uart_write_wakeup(struct uart_port *port) -{ - struct uart_info *info = port->info; - tasklet_schedule(&info->tlet); -} - -static void uart_stop(struct tty_struct *tty) -{ - struct uart_state *state = tty->driver_data; - struct uart_port *port = state->port; - unsigned long flags; - - spin_lock_irqsave(&port->lock, flags); - port->ops->stop_tx(port, 1); - spin_unlock_irqrestore(&port->lock, flags); -} - -static void __uart_start(struct tty_struct *tty) -{ - struct uart_state *state = tty->driver_data; - struct uart_port *port = state->port; - - if (!uart_circ_empty(&state->info->xmit) && state->info->xmit.buf && - !tty->stopped && !tty->hw_stopped) - port->ops->start_tx(port, 1); -} - -static void uart_start(struct tty_struct *tty) -{ - struct uart_state *state = tty->driver_data; - struct uart_port *port = state->port; - unsigned long flags; - - spin_lock_irqsave(&port->lock, flags); - __uart_start(tty); - spin_unlock_irqrestore(&port->lock, flags); -} - -static void uart_tasklet_action(unsigned long data) -{ - struct uart_state *state = (struct uart_state *)data; - struct tty_struct *tty; - - tty = state->info->tty; - if (tty) { - if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && - tty->ldisc.write_wakeup) - tty->ldisc.write_wakeup(tty); - wake_up_interruptible(&tty->write_wait); - } -} - -static inline void -uart_update_mctrl(struct uart_port *port, unsigned int set, unsigned int clear) -{ - unsigned long flags; - unsigned int old; - - spin_lock_irqsave(&port->lock, flags); - old = port->mctrl; - port->mctrl = (old & ~clear) | set; - if (old != port->mctrl) - port->ops->set_mctrl(port, port->mctrl); - spin_unlock_irqrestore(&port->lock, flags); -} - -#define uart_set_mctrl(port,set) uart_update_mctrl(port,set,0) -#define uart_clear_mctrl(port,clear) uart_update_mctrl(port,0,clear) - -/* - * Startup the port. This will be called once per open. All calls - * will be serialised by the per-port semaphore. - */ -static int uart_startup(struct uart_state *state, int init_hw) -{ - struct uart_info *info = state->info; - struct uart_port *port = state->port; - unsigned long page; - int retval = 0; - - if (info->flags & UIF_INITIALIZED) - return 0; - - /* - * Set the TTY IO error marker - we will only clear this - * once we have successfully opened the port. Also set - * up the tty->alt_speed kludge - */ - if (info->tty) - set_bit(TTY_IO_ERROR, &info->tty->flags); - - if (port->type == PORT_UNKNOWN) - return 0; - - /* - * Initialise and allocate the transmit and temporary - * buffer. - */ - if (!info->xmit.buf) { - page = get_zeroed_page(GFP_KERNEL); - if (!page) - return -ENOMEM; - - info->xmit.buf = (unsigned char *) page; - info->tmpbuf = info->xmit.buf + UART_XMIT_SIZE; - init_MUTEX(&info->tmpbuf_sem); - uart_circ_clear(&info->xmit); - } - - port->mctrl = 0; - - retval = port->ops->startup(port); - if (retval == 0) { - if (init_hw) { - /* - * Initialise the hardware port settings. - */ - uart_change_speed(state, NULL); - - /* - * Setup the RTS and DTR signals once the - * port is open and ready to respond. - */ - if (info->tty->termios->c_cflag & CBAUD) - uart_set_mctrl(port, TIOCM_RTS | TIOCM_DTR); - } - - info->flags |= UIF_INITIALIZED; - - clear_bit(TTY_IO_ERROR, &info->tty->flags); - } - - if (retval && capable(CAP_SYS_ADMIN)) - retval = 0; - - return retval; -} - -/* - * This routine will shutdown a serial port; interrupts are disabled, and - * DTR is dropped if the hangup on close termio flag is on. Calls to - * uart_shutdown are serialised by the per-port semaphore. - */ -static void uart_shutdown(struct uart_state *state) -{ - struct uart_info *info = state->info; - struct uart_port *port = state->port; - - if (!(info->flags & UIF_INITIALIZED)) - return; - - /* - * Turn off DTR and RTS early. - */ - if (!info->tty || (info->tty->termios->c_cflag & HUPCL)) - uart_clear_mctrl(port, TIOCM_DTR | TIOCM_RTS); - - /* - * clear delta_msr_wait queue to avoid mem leaks: we may free - * the irq here so the queue might never be woken up. Note - * that we won't end up waiting on delta_msr_wait again since - * any outstanding file descriptors should be pointing at - * hung_up_tty_fops now. - */ - wake_up_interruptible(&info->delta_msr_wait); - - /* - * Free the IRQ and disable the port. - */ - port->ops->shutdown(port); - - /* - * Ensure that the IRQ handler isn't running on another CPU. - */ - synchronize_irq(port->irq); - - /* - * Free the transmit buffer page. - */ - if (info->xmit.buf) { - free_page((unsigned long)info->xmit.buf); - info->xmit.buf = NULL; - info->tmpbuf = NULL; - } - - /* - * kill off our tasklet - */ - tasklet_kill(&info->tlet); - if (info->tty) - set_bit(TTY_IO_ERROR, &info->tty->flags); - - info->flags &= ~UIF_INITIALIZED; -} - -/** - * uart_update_timeout - update per-port FIFO timeout. - * @port: uart_port structure describing the port. - * @cflag: termios cflag value - * @quot: uart clock divisor quotient - * - * Set the port FIFO timeout value. The @cflag value should - * reflect the actual hardware settings. - */ -void -uart_update_timeout(struct uart_port *port, unsigned int cflag, - unsigned int baud) -{ - unsigned int bits; - - /* byte size and parity */ - switch (cflag & CSIZE) { - case CS5: - bits = 7; - break; - case CS6: - bits = 8; - break; - case CS7: - bits = 9; - break; - default: - bits = 10; - break; // CS8 - } - - if (cflag & CSTOPB) - bits++; - if (cflag & PARENB) - bits++; - - /* - * The total number of bits to be transmitted in the fifo. - */ - bits = bits * port->fifosize; - - /* - * Figure the timeout to send the above number of bits. - * Add .02 seconds of slop - */ - port->timeout = (HZ * bits) / baud + HZ/50; -} - -EXPORT_SYMBOL(uart_update_timeout); - -/** - * uart_get_baud_rate - return baud rate for a particular port - * @port: uart_port structure describing the port in question. - * @termios: desired termios settings. - * @old: old termios (or NULL) - * @min: minimum acceptable baud rate - * @max: maximum acceptable baud rate - * - * Decode the termios structure into a numeric baud rate, - * taking account of the magic 38400 baud rate (with spd_* - * flags), and mapping the %B0 rate to 9600 baud. - * - * If the new baud rate is invalid, try the old termios setting. - * If it's still invalid, we try 9600 baud. - * - * Update the @termios structure to reflect the baud rate - * we're actually going to be using. - */ -unsigned int -uart_get_baud_rate(struct uart_port *port, struct termios *termios, - struct termios *old, unsigned int min, unsigned int max) -{ - unsigned int try, baud, altbaud = 38400; - unsigned int flags = port->flags & UPF_SPD_MASK; - - if (flags == UPF_SPD_HI) - altbaud = 57600; - if (flags == UPF_SPD_VHI) - altbaud = 115200; - if (flags == UPF_SPD_SHI) - altbaud = 230400; - if (flags == UPF_SPD_WARP) - altbaud = 460800; - - for (try = 0; try < 2; try++) { - baud = tty_termios_baud_rate(termios); - - /* - * The spd_hi, spd_vhi, spd_shi, spd_warp kludge... - * Die! Die! Die! - */ - if (baud == 38400) - baud = altbaud; - - /* - * Special case: B0 rate. - */ - if (baud == 0) - baud = 9600; - - if (baud >= min && baud <= max) - return baud; - - /* - * Oops, the quotient was zero. Try again with - * the old baud rate if possible. - */ - termios->c_cflag &= ~CBAUD; - if (old) { - termios->c_cflag |= old->c_cflag & CBAUD; - old = NULL; - continue; - } - - /* - * As a last resort, if the quotient is zero, - * default to 9600 bps - */ - termios->c_cflag |= B9600; - } - - return 0; -} - -EXPORT_SYMBOL(uart_get_baud_rate); - -/** - * uart_get_divisor - return uart clock divisor - * @port: uart_port structure describing the port. - * @baud: desired baud rate - * - * Calculate the uart clock divisor for the port. - */ -unsigned int -uart_get_divisor(struct uart_port *port, unsigned int baud) -{ - unsigned int quot; - - /* - * Old custom speed handling. - */ - if (baud == 38400 && (port->flags & UPF_SPD_MASK) == UPF_SPD_CUST) - quot = port->custom_divisor; - else - quot = port->uartclk / (16 * baud); - - return quot; -} - -EXPORT_SYMBOL(uart_get_divisor); - -static void -uart_change_speed(struct uart_state *state, struct termios *old_termios) -{ - struct tty_struct *tty = state->info->tty; - struct uart_port *port = state->port; - struct termios *termios; - - /* - * If we have no tty, termios, or the port does not exist, - * then we can't set the parameters for this port. - */ - if (!tty || !tty->termios || port->type == PORT_UNKNOWN) - return; - - termios = tty->termios; - - /* - * Set flags based on termios cflag - */ - if (termios->c_cflag & CRTSCTS) - state->info->flags |= UIF_CTS_FLOW; - else - state->info->flags &= ~UIF_CTS_FLOW; - - if (termios->c_cflag & CLOCAL) - state->info->flags &= ~UIF_CHECK_CD; - else - state->info->flags |= UIF_CHECK_CD; - - port->ops->set_termios(port, termios, old_termios); -} - -static inline void -__uart_put_char(struct uart_port *port, struct circ_buf *circ, unsigned char c) -{ - unsigned long flags; - - if (!circ->buf) - return; - - spin_lock_irqsave(&port->lock, flags); - if (uart_circ_chars_free(circ) != 0) { - circ->buf[circ->head] = c; - circ->head = (circ->head + 1) & (UART_XMIT_SIZE - 1); - } - spin_unlock_irqrestore(&port->lock, flags); -} - -static inline int -__uart_user_write(struct uart_port *port, struct circ_buf *circ, - const unsigned char *buf, int count) -{ - unsigned long flags; - int c, ret = 0; - - if (down_interruptible(&port->info->tmpbuf_sem)) - return -EINTR; - - while (1) { - int c1; - c = CIRC_SPACE_TO_END(circ->head, circ->tail, UART_XMIT_SIZE); - if (count < c) - c = count; - if (c <= 0) - break; - - c -= copy_from_user(port->info->tmpbuf, buf, c); - if (!c) { - if (!ret) - ret = -EFAULT; - break; - } - spin_lock_irqsave(&port->lock, flags); - c1 = CIRC_SPACE_TO_END(circ->head, circ->tail, UART_XMIT_SIZE); - if (c1 < c) - c = c1; - memcpy(circ->buf + circ->head, port->info->tmpbuf, c); - circ->head = (circ->head + c) & (UART_XMIT_SIZE - 1); - spin_unlock_irqrestore(&port->lock, flags); - buf += c; - count -= c; - ret += c; - } - up(&port->info->tmpbuf_sem); - - return ret; -} - -static inline int -__uart_kern_write(struct uart_port *port, struct circ_buf *circ, - const unsigned char *buf, int count) -{ - unsigned long flags; - int c, ret = 0; - - spin_lock_irqsave(&port->lock, flags); - while (1) { - c = CIRC_SPACE_TO_END(circ->head, circ->tail, UART_XMIT_SIZE); - if (count < c) - c = count; - if (c <= 0) - break; - memcpy(circ->buf + circ->head, buf, c); - circ->head = (circ->head + c) & (UART_XMIT_SIZE - 1); - buf += c; - count -= c; - ret += c; - } - spin_unlock_irqrestore(&port->lock, flags); - - return ret; -} - -static void uart_put_char(struct tty_struct *tty, unsigned char ch) -{ - struct uart_state *state = tty->driver_data; - - if (tty) - __uart_put_char(state->port, &state->info->xmit, ch); -} - -static void uart_flush_chars(struct tty_struct *tty) -{ - uart_start(tty); -} - -static int -uart_write(struct tty_struct *tty, int from_user, const unsigned char * buf, - int count) -{ - struct uart_state *state = tty->driver_data; - int ret; - - if (!tty || !state->info->xmit.buf) - return 0; - - if (from_user) - ret = __uart_user_write(state->port, &state->info->xmit, buf, count); - else - ret = __uart_kern_write(state->port, &state->info->xmit, buf, count); - - uart_start(tty); - return ret; -} - -static int uart_write_room(struct tty_struct *tty) -{ - struct uart_state *state = tty->driver_data; - - return uart_circ_chars_free(&state->info->xmit); -} - -static int uart_chars_in_buffer(struct tty_struct *tty) -{ - struct uart_state *state = tty->driver_data; - - return uart_circ_chars_pending(&state->info->xmit); -} - -static void uart_flush_buffer(struct tty_struct *tty) -{ - struct uart_state *state = tty->driver_data; - struct uart_port *port = state->port; - unsigned long flags; - - DPRINTK("uart_flush_buffer(%d) called\n", tty->index); - - spin_lock_irqsave(&port->lock, flags); - uart_circ_clear(&state->info->xmit); - spin_unlock_irqrestore(&port->lock, flags); - wake_up_interruptible(&tty->write_wait); - if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && - tty->ldisc.write_wakeup) - (tty->ldisc.write_wakeup)(tty); -} - -/* - * This function is used to send a high-priority XON/XOFF character to - * the device - */ -static void uart_send_xchar(struct tty_struct *tty, char ch) -{ - struct uart_state *state = tty->driver_data; - struct uart_port *port = state->port; - unsigned long flags; - - if (port->ops->send_xchar) - port->ops->send_xchar(port, ch); - else { - port->x_char = ch; - if (ch) { - spin_lock_irqsave(&port->lock, flags); - port->ops->start_tx(port, 0); - spin_unlock_irqrestore(&port->lock, flags); - } - } -} - -static void uart_throttle(struct tty_struct *tty) -{ - struct uart_state *state = tty->driver_data; - - if (I_IXOFF(tty)) - uart_send_xchar(tty, STOP_CHAR(tty)); - - if (tty->termios->c_cflag & CRTSCTS) - uart_clear_mctrl(state->port, TIOCM_RTS); -} - -static void uart_unthrottle(struct tty_struct *tty) -{ - struct uart_state *state = tty->driver_data; - struct uart_port *port = state->port; - - if (I_IXOFF(tty)) { - if (port->x_char) - port->x_char = 0; - else - uart_send_xchar(tty, START_CHAR(tty)); - } - - if (tty->termios->c_cflag & CRTSCTS) - uart_set_mctrl(port, TIOCM_RTS); -} - -static int uart_get_info(struct uart_state *state, struct serial_struct *retinfo) -{ - struct uart_port *port = state->port; - struct serial_struct tmp; - - memset(&tmp, 0, sizeof(tmp)); - tmp.type = port->type; - tmp.line = port->line; - tmp.port = port->iobase; - if (HIGH_BITS_OFFSET) - tmp.port_high = (long) port->iobase >> HIGH_BITS_OFFSET; - tmp.irq = port->irq; - tmp.flags = port->flags; - tmp.xmit_fifo_size = port->fifosize; - tmp.baud_base = port->uartclk / 16; - tmp.close_delay = state->close_delay; - tmp.closing_wait = state->closing_wait; - tmp.custom_divisor = port->custom_divisor; - tmp.hub6 = port->hub6; - tmp.io_type = port->iotype; - tmp.iomem_reg_shift = port->regshift; - tmp.iomem_base = (void *)port->mapbase; - - if (copy_to_user(retinfo, &tmp, sizeof(*retinfo))) - return -EFAULT; - return 0; -} - -static int -uart_set_info(struct uart_state *state, struct serial_struct *newinfo) -{ - struct serial_struct new_serial; - struct uart_port *port = state->port; - unsigned long new_port; - unsigned int change_irq, change_port, old_flags; - unsigned int old_custom_divisor; - int retval = 0; - - if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) - return -EFAULT; - - new_port = new_serial.port; - if (HIGH_BITS_OFFSET) - new_port += (unsigned long) new_serial.port_high << HIGH_BITS_OFFSET; - - new_serial.irq = irq_canonicalize(new_serial.irq); - - /* - * This semaphore protects state->count. It is also - * very useful to prevent opens. Also, take the - * port configuration semaphore to make sure that a - * module insertion/removal doesn't change anything - * under us. - */ - down(&state->sem); - - change_irq = new_serial.irq != port->irq; - - /* - * Since changing the 'type' of the port changes its resource - * allocations, we should treat type changes the same as - * IO port changes. - */ - change_port = new_port != port->iobase || - (unsigned long)new_serial.iomem_base != port->mapbase || - new_serial.hub6 != port->hub6 || - new_serial.io_type != port->iotype || - new_serial.iomem_reg_shift != port->regshift || - new_serial.type != port->type; - - old_flags = port->flags; - old_custom_divisor = port->custom_divisor; - - if (!capable(CAP_SYS_ADMIN)) { - retval = -EPERM; - if (change_irq || change_port || - (new_serial.baud_base != port->uartclk / 16) || - (new_serial.close_delay != state->close_delay) || - (new_serial.closing_wait != state->closing_wait) || - (new_serial.xmit_fifo_size != port->fifosize) || - (((new_serial.flags ^ old_flags) & ~UPF_USR_MASK) != 0)) - goto exit; - port->flags = ((port->flags & ~UPF_USR_MASK) | - (new_serial.flags & UPF_USR_MASK)); - port->custom_divisor = new_serial.custom_divisor; - goto check_and_exit; - } - - /* - * Ask the low level driver to verify the settings. - */ - if (port->ops->verify_port) - retval = port->ops->verify_port(port, &new_serial); - - if ((new_serial.irq >= NR_IRQS) || (new_serial.irq < 0) || - (new_serial.baud_base < 9600)) - retval = -EINVAL; - - if (retval) - goto exit; - - if (change_port || change_irq) { - retval = -EBUSY; - - /* - * Make sure that we are the sole user of this port. - */ - if (uart_users(state) > 1) - goto exit; - - /* - * We need to shutdown the serial port at the old - * port/type/irq combination. - */ - uart_shutdown(state); - } - - if (change_port) { - unsigned long old_iobase, old_mapbase; - unsigned int old_type, old_iotype, old_hub6, old_shift; - - old_iobase = port->iobase; - old_mapbase = port->mapbase; - old_type = port->type; - old_hub6 = port->hub6; - old_iotype = port->iotype; - old_shift = port->regshift; - - /* - * Free and release old regions - */ - if (old_type != PORT_UNKNOWN) - port->ops->release_port(port); - - port->iobase = new_port; - port->type = new_serial.type; - port->hub6 = new_serial.hub6; - port->iotype = new_serial.io_type; - port->regshift = new_serial.iomem_reg_shift; - port->mapbase = (unsigned long)new_serial.iomem_base; - - /* - * Claim and map the new regions - */ - if (port->type != PORT_UNKNOWN) { - retval = port->ops->request_port(port); - } else { - /* Always success - Jean II */ - retval = 0; - } - - /* - * If we fail to request resources for the - * new port, try to restore the old settings. - */ - if (retval && old_type != PORT_UNKNOWN) { - port->iobase = old_iobase; - port->type = old_type; - port->hub6 = old_hub6; - port->iotype = old_iotype; - port->regshift = old_shift; - port->mapbase = old_mapbase; - retval = port->ops->request_port(port); - /* - * If we failed to restore the old settings, - * we fail like this. - */ - if (retval) - port->type = PORT_UNKNOWN; - - /* - * We failed anyway. - */ - retval = -EBUSY; - } - } - - port->irq = new_serial.irq; - port->uartclk = new_serial.baud_base * 16; - port->flags = (port->flags & ~UPF_CHANGE_MASK) | - (new_serial.flags & UPF_CHANGE_MASK); - port->custom_divisor = new_serial.custom_divisor; - state->close_delay = new_serial.close_delay * HZ / 100; - state->closing_wait = new_serial.closing_wait * HZ / 100; - port->fifosize = new_serial.xmit_fifo_size; - if (state->info->tty) - state->info->tty->low_latency = - (port->flags & UPF_LOW_LATENCY) ? 1 : 0; - - check_and_exit: - retval = 0; - if (port->type == PORT_UNKNOWN) - goto exit; - if (state->info->flags & UIF_INITIALIZED) { - if (((old_flags ^ port->flags) & UPF_SPD_MASK) || - old_custom_divisor != port->custom_divisor) { - /* If they're setting up a custom divisor or speed, - * instead of clearing it, then bitch about it. No - * need to rate-limit; it's CAP_SYS_ADMIN only. */ - if (port->flags & UPF_SPD_MASK) { - printk(KERN_NOTICE "%s sets custom speed on %s%d. This is deprecated.\n", - current->comm, state->info->tty->driver->name, - state->port->line); - } - uart_change_speed(state, NULL); - } - } else - retval = uart_startup(state, 1); - exit: - up(&state->sem); - return retval; -} - - -/* - * uart_get_lsr_info - get line status register info. - * Note: uart_ioctl protects us against hangups. - */ -static int uart_get_lsr_info(struct uart_state *state, unsigned int *value) -{ - struct uart_port *port = state->port; - unsigned int result; - - result = port->ops->tx_empty(port); - - /* - * If we're about to load something into the transmit - * register, we'll pretend the transmitter isn't empty to - * avoid a race condition (depending on when the transmit - * interrupt happens). - */ - if (port->x_char || - ((uart_circ_chars_pending(&state->info->xmit) > 0) && - !state->info->tty->stopped && !state->info->tty->hw_stopped)) - result &= ~TIOCSER_TEMT; - - return put_user(result, value); -} - -static int uart_tiocmget(struct tty_struct *tty, struct file *file) -{ - struct uart_state *state = tty->driver_data; - struct uart_port *port = state->port; - int result = -EIO; - - down(&state->sem); - if ((!file || !tty_hung_up_p(file)) && - !(tty->flags & (1 << TTY_IO_ERROR))) { - result = port->mctrl; - result |= port->ops->get_mctrl(port); - } - up(&state->sem); - - return result; -} - -static int -uart_tiocmset(struct tty_struct *tty, struct file *file, - unsigned int set, unsigned int clear) -{ - struct uart_state *state = tty->driver_data; - struct uart_port *port = state->port; - int ret = -EIO; - - down(&state->sem); - if ((!file || !tty_hung_up_p(file)) && - !(tty->flags & (1 << TTY_IO_ERROR))) { - uart_update_mctrl(port, set, clear); - ret = 0; - } - up(&state->sem); - return ret; -} - -static void uart_break_ctl(struct tty_struct *tty, int break_state) -{ - struct uart_state *state = tty->driver_data; - struct uart_port *port = state->port; - - BUG_ON(!kernel_locked()); - - down(&state->sem); - - if (port->type != PORT_UNKNOWN) - port->ops->break_ctl(port, break_state); - - up(&state->sem); -} - -static int uart_do_autoconfig(struct uart_state *state) -{ - struct uart_port *port = state->port; - int flags, ret; - - if (!capable(CAP_SYS_ADMIN)) - return -EPERM; - - /* - * Take the per-port semaphore. This prevents count from - * changing, and hence any extra opens of the port while - * we're auto-configuring. - */ - if (down_interruptible(&state->sem)) - return -ERESTARTSYS; - - ret = -EBUSY; - if (uart_users(state) == 1) { - uart_shutdown(state); - - /* - * If we already have a port type configured, - * we must release its resources. - */ - if (port->type != PORT_UNKNOWN) - port->ops->release_port(port); - - flags = UART_CONFIG_TYPE; - if (port->flags & UPF_AUTO_IRQ) - flags |= UART_CONFIG_IRQ; - - /* - * This will claim the ports resources if - * a port is found. - */ - port->ops->config_port(port, flags); - - ret = uart_startup(state, 1); - } - up(&state->sem); - return ret; -} - -/* - * Wait for any of the 4 modem inputs (DCD,RI,DSR,CTS) to change - * - mask passed in arg for lines of interest - * (use |'ed TIOCM_RNG/DSR/CD/CTS for masking) - * Caller should use TIOCGICOUNT to see which one it was - */ -static int -uart_wait_modem_status(struct uart_state *state, unsigned long arg) -{ - struct uart_port *port = state->port; - DECLARE_WAITQUEUE(wait, current); - struct uart_icount cprev, cnow; - int ret; - - /* - * note the counters on entry - */ - spin_lock_irq(&port->lock); - memcpy(&cprev, &port->icount, sizeof(struct uart_icount)); - - /* - * Force modem status interrupts on - */ - port->ops->enable_ms(port); - spin_unlock_irq(&port->lock); - - add_wait_queue(&state->info->delta_msr_wait, &wait); - for (;;) { - spin_lock_irq(&port->lock); - memcpy(&cnow, &port->icount, sizeof(struct uart_icount)); - spin_unlock_irq(&port->lock); - - set_current_state(TASK_INTERRUPTIBLE); - - if (((arg & TIOCM_RNG) && (cnow.rng != cprev.rng)) || - ((arg & TIOCM_DSR) && (cnow.dsr != cprev.dsr)) || - ((arg & TIOCM_CD) && (cnow.dcd != cprev.dcd)) || - ((arg & TIOCM_CTS) && (cnow.cts != cprev.cts))) { - ret = 0; - break; - } - - schedule(); - - /* see if a signal did it */ - if (signal_pending(current)) { - ret = -ERESTARTSYS; - break; - } - - cprev = cnow; - } - - current->state = TASK_RUNNING; - remove_wait_queue(&state->info->delta_msr_wait, &wait); - - return ret; -} - -/* - * Get counter of input serial line interrupts (DCD,RI,DSR,CTS) - * Return: write counters to the user passed counter struct - * NB: both 1->0 and 0->1 transitions are counted except for - * RI where only 0->1 is counted. - */ -static int -uart_get_count(struct uart_state *state, struct serial_icounter_struct *icnt) -{ - struct serial_icounter_struct icount; - struct uart_icount cnow; - struct uart_port *port = state->port; - - spin_lock_irq(&port->lock); - memcpy(&cnow, &port->icount, sizeof(struct uart_icount)); - spin_unlock_irq(&port->lock); - - icount.cts = cnow.cts; - icount.dsr = cnow.dsr; - icount.rng = cnow.rng; - icount.dcd = cnow.dcd; - icount.rx = cnow.rx; - icount.tx = cnow.tx; - icount.frame = cnow.frame; - icount.overrun = cnow.overrun; - icount.parity = cnow.parity; - icount.brk = cnow.brk; - icount.buf_overrun = cnow.buf_overrun; - - return copy_to_user(icnt, &icount, sizeof(icount)) ? -EFAULT : 0; -} - -/* - * Called via sys_ioctl under the BKL. We can use spin_lock_irq() here. - */ -static int -uart_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, - unsigned long arg) -{ - struct uart_state *state = tty->driver_data; - int ret = -ENOIOCTLCMD; - - BUG_ON(!kernel_locked()); - - /* - * These ioctls don't rely on the hardware to be present. - */ - switch (cmd) { - case TIOCGSERIAL: - ret = uart_get_info(state, (struct serial_struct *)arg); - break; - - case TIOCSSERIAL: - ret = uart_set_info(state, (struct serial_struct *)arg); - break; - - case TIOCSERCONFIG: - ret = uart_do_autoconfig(state); - break; - - case TIOCSERGWILD: /* obsolete */ - case TIOCSERSWILD: /* obsolete */ - ret = 0; - break; - } - - if (ret != -ENOIOCTLCMD) - goto out; - - if (tty->flags & (1 << TTY_IO_ERROR)) { - ret = -EIO; - goto out; - } - - /* - * The following should only be used when hardware is present. - */ - switch (cmd) { - case TIOCMIWAIT: - ret = uart_wait_modem_status(state, arg); - break; - - case TIOCGICOUNT: - ret = uart_get_count(state, (struct serial_icounter_struct *)arg); - break; - } - - if (ret != -ENOIOCTLCMD) - goto out; - - down(&state->sem); - - if (tty_hung_up_p(filp)) { - ret = -EIO; - goto out_up; - } - - /* - * All these rely on hardware being present and need to be - * protected against the tty being hung up. - */ - switch (cmd) { - case TIOCSERGETLSR: /* Get line status register */ - ret = uart_get_lsr_info(state, (unsigned int *)arg); - break; - - default: { - struct uart_port *port = state->port; - if (port->ops->ioctl) - ret = port->ops->ioctl(port, cmd, arg); - break; - } - } - out_up: - up(&state->sem); - out: - return ret; -} - -static void uart_set_termios(struct tty_struct *tty, struct termios *old_termios) -{ - struct uart_state *state = tty->driver_data; - unsigned long flags; - unsigned int cflag = tty->termios->c_cflag; - - BUG_ON(!kernel_locked()); - - /* - * These are the bits that are used to setup various - * flags in the low level driver. - */ -#define RELEVANT_IFLAG(iflag) ((iflag) & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK)) - - if ((cflag ^ old_termios->c_cflag) == 0 && - RELEVANT_IFLAG(tty->termios->c_iflag ^ old_termios->c_iflag) == 0) - return; - - uart_change_speed(state, old_termios); - - /* Handle transition to B0 status */ - if ((old_termios->c_cflag & CBAUD) && !(cflag & CBAUD)) - uart_clear_mctrl(state->port, TIOCM_RTS | TIOCM_DTR); - - /* Handle transition away from B0 status */ - if (!(old_termios->c_cflag & CBAUD) && (cflag & CBAUD)) { - unsigned int mask = TIOCM_DTR; - if (!(cflag & CRTSCTS) || - !test_bit(TTY_THROTTLED, &tty->flags)) - mask |= TIOCM_RTS; - uart_set_mctrl(state->port, mask); - } - - /* Handle turning off CRTSCTS */ - if ((old_termios->c_cflag & CRTSCTS) && !(cflag & CRTSCTS)) { - spin_lock_irqsave(&state->port->lock, flags); - tty->hw_stopped = 0; - __uart_start(tty); - spin_unlock_irqrestore(&state->port->lock, flags); - } - -#if 0 - /* - * No need to wake up processes in open wait, since they - * sample the CLOCAL flag once, and don't recheck it. - * XXX It's not clear whether the current behavior is correct - * or not. Hence, this may change..... - */ - if (!(old_termios->c_cflag & CLOCAL) && - (tty->termios->c_cflag & CLOCAL)) - wake_up_interruptible(&state->info->open_wait); -#endif -} - -/* - * In 2.4.5, calls to this will be serialized via the BKL in - * linux/drivers/char/tty_io.c:tty_release() - * linux/drivers/char/tty_io.c:do_tty_handup() - */ -static void uart_close(struct tty_struct *tty, struct file *filp) -{ - struct uart_state *state = tty->driver_data; - struct uart_port *port = state->port; - - BUG_ON(!kernel_locked()); - DPRINTK("uart_close(%d) called\n", port->line); - - down(&state->sem); - - if (tty_hung_up_p(filp)) - goto done; - - if ((tty->count == 1) && (state->count != 1)) { - /* - * Uh, oh. tty->count is 1, which means that the tty - * structure will be freed. state->count should always - * be one in these conditions. If it's greater than - * one, we've got real problems, since it means the - * serial port won't be shutdown. - */ - printk("uart_close: bad serial port count; tty->count is 1, " - "state->count is %d\n", state->count); - state->count = 1; - } - if (--state->count < 0) { - printk("rs_close: bad serial port count for %s: %d\n", - tty->name, state->count); - state->count = 0; - } - if (state->count) - goto done; - - /* - * Now we wait for the transmit buffer to clear; and we notify - * the line discipline to only process XON/XOFF characters by - * setting tty->closing. - */ - tty->closing = 1; - - if (state->closing_wait != USF_CLOSING_WAIT_NONE) - tty_wait_until_sent(tty, state->closing_wait); - - /* - * At this point, we stop accepting input. To do this, we - * disable the receive line status interrupts. - */ - if (state->info->flags & UIF_INITIALIZED) { - unsigned long flags; - spin_lock_irqsave(&port->lock, flags); - port->ops->stop_rx(port); - spin_unlock_irqrestore(&port->lock, flags); - /* - * Before we drop DTR, make sure the UART transmitter - * has completely drained; this is especially - * important if there is a transmit FIFO! - */ - uart_wait_until_sent(tty, port->timeout); - } - - uart_shutdown(state); - uart_flush_buffer(tty); - if (tty->ldisc.flush_buffer) - tty->ldisc.flush_buffer(tty); - tty->closing = 0; - state->info->tty = NULL; - - if (state->info->blocked_open) { - if (state->close_delay) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(state->close_delay); - set_current_state(TASK_RUNNING); - } - } else if (!uart_console(port)) { - uart_change_pm(state, 3); - } - - /* - * Wake up anyone trying to open this port. - */ - state->info->flags &= ~UIF_NORMAL_ACTIVE; - wake_up_interruptible(&state->info->open_wait); - - done: - up(&state->sem); -} - -static void uart_wait_until_sent(struct tty_struct *tty, int timeout) -{ - struct uart_state *state = tty->driver_data; - struct uart_port *port = state->port; - unsigned long char_time, expire; - - BUG_ON(!kernel_locked()); - - if (port->type == PORT_UNKNOWN || port->fifosize == 0) - return; - - /* - * Set the check interval to be 1/5 of the estimated time to - * send a single character, and make it at least 1. The check - * interval should also be less than the timeout. - * - * Note: we have to use pretty tight timings here to satisfy - * the NIST-PCTS. - */ - char_time = (port->timeout - HZ/50) / port->fifosize; - char_time = char_time / 5; - if (char_time == 0) - char_time = 1; - if (timeout && timeout < char_time) - char_time = timeout; - - /* - * If the transmitter hasn't cleared in twice the approximate - * amount of time to send the entire FIFO, it probably won't - * ever clear. This assumes the UART isn't doing flow - * control, which is currently the case. Hence, if it ever - * takes longer than port->timeout, this is probably due to a - * UART bug of some kind. So, we clamp the timeout parameter at - * 2*port->timeout. - */ - if (timeout == 0 || timeout > 2 * port->timeout) - timeout = 2 * port->timeout; - - expire = jiffies + timeout; - - DPRINTK("uart_wait_until_sent(%d), jiffies=%lu, expire=%lu...\n", - port->line, jiffies, expire); - - /* - * Check whether the transmitter is empty every 'char_time'. - * 'timeout' / 'expire' give us the maximum amount of time - * we wait. - */ - while (!port->ops->tx_empty(port)) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(char_time); - if (signal_pending(current)) - break; - if (time_after(jiffies, expire)) - break; - } - set_current_state(TASK_RUNNING); /* might not be needed */ -} - -/* - * This is called with the BKL held in - * linux/drivers/char/tty_io.c:do_tty_hangup() - * We're called from the eventd thread, so we can sleep for - * a _short_ time only. - */ -static void uart_hangup(struct tty_struct *tty) -{ - struct uart_state *state = tty->driver_data; - - BUG_ON(!kernel_locked()); - DPRINTK("uart_hangup(%d)\n", state->port->line); - - down(&state->sem); - if (state->info && state->info->flags & UIF_NORMAL_ACTIVE) { - uart_flush_buffer(tty); - uart_shutdown(state); - state->count = 0; - state->info->flags &= ~UIF_NORMAL_ACTIVE; - state->info->tty = NULL; - wake_up_interruptible(&state->info->open_wait); - wake_up_interruptible(&state->info->delta_msr_wait); - } - up(&state->sem); -} - -/* - * Copy across the serial console cflag setting into the termios settings - * for the initial open of the port. This allows continuity between the - * kernel settings, and the settings init adopts when it opens the port - * for the first time. - */ -static void uart_update_termios(struct uart_state *state) -{ - struct tty_struct *tty = state->info->tty; - struct uart_port *port = state->port; - - if (uart_console(port) && port->cons->cflag) { - tty->termios->c_cflag = port->cons->cflag; - port->cons->cflag = 0; - } - - /* - * If the device failed to grab its irq resources, - * or some other error occurred, don't try to talk - * to the port hardware. - */ - if (!(tty->flags & (1 << TTY_IO_ERROR))) { - /* - * Make termios settings take effect. - */ - uart_change_speed(state, NULL); - - /* - * And finally enable the RTS and DTR signals. - */ - if (tty->termios->c_cflag & CBAUD) - uart_set_mctrl(port, TIOCM_DTR | TIOCM_RTS); - } -} - -/* - * Block the open until the port is ready. We must be called with - * the per-port semaphore held. - */ -static int -uart_block_til_ready(struct file *filp, struct uart_state *state) -{ - DECLARE_WAITQUEUE(wait, current); - struct uart_info *info = state->info; - struct uart_port *port = state->port; - - info->blocked_open++; - state->count--; - - add_wait_queue(&info->open_wait, &wait); - while (1) { - set_current_state(TASK_INTERRUPTIBLE); - - /* - * If we have been hung up, tell userspace/restart open. - */ - if (tty_hung_up_p(filp) || info->tty == NULL) - break; - - /* - * If the port has been closed, tell userspace/restart open. - */ - if (!(info->flags & UIF_INITIALIZED)) - break; - - /* - * If non-blocking mode is set, or CLOCAL mode is set, - * we don't want to wait for the modem status lines to - * indicate that the port is ready. - * - * Also, if the port is not enabled/configured, we want - * to allow the open to succeed here. Note that we will - * have set TTY_IO_ERROR for a non-existant port. - */ - if ((filp->f_flags & O_NONBLOCK) || - (info->tty->termios->c_cflag & CLOCAL) || - (info->tty->flags & (1 << TTY_IO_ERROR))) { - break; - } - - /* - * Set DTR to allow modem to know we're waiting. Do - * not set RTS here - we want to make sure we catch - * the data from the modem. - */ - if (info->tty->termios->c_cflag & CBAUD) - uart_set_mctrl(port, TIOCM_DTR); - - /* - * and wait for the carrier to indicate that the - * modem is ready for us. - */ - if (port->ops->get_mctrl(port) & TIOCM_CAR) - break; - - up(&state->sem); - schedule(); - down(&state->sem); - - if (signal_pending(current)) - break; - } - set_current_state(TASK_RUNNING); - remove_wait_queue(&info->open_wait, &wait); - - state->count++; - info->blocked_open--; - - if (signal_pending(current)) - return -ERESTARTSYS; - - if (!info->tty || tty_hung_up_p(filp)) - return -EAGAIN; - - return 0; -} - -static struct uart_state *uart_get(struct uart_driver *drv, int line) -{ - struct uart_state *state; - - down(&port_sem); - state = drv->state + line; - if (down_interruptible(&state->sem)) { - state = ERR_PTR(-ERESTARTSYS); - goto out; - } - - state->count++; - if (!state->port) { - state->count--; - up(&state->sem); - state = ERR_PTR(-ENXIO); - goto out; - } - - if (!state->info) { - state->info = kmalloc(sizeof(struct uart_info), GFP_KERNEL); - if (state->info) { - memset(state->info, 0, sizeof(struct uart_info)); - init_waitqueue_head(&state->info->open_wait); - init_waitqueue_head(&state->info->delta_msr_wait); - - /* - * Link the info into the other structures. - */ - state->port->info = state->info; - - tasklet_init(&state->info->tlet, uart_tasklet_action, - (unsigned long)state); - } else { - state->count--; - up(&state->sem); - state = ERR_PTR(-ENOMEM); - } - } - - out: - up(&port_sem); - return state; -} - -/* - * In 2.4.5, calls to uart_open are serialised by the BKL in - * linux/fs/devices.c:chrdev_open() - * Note that if this fails, then uart_close() _will_ be called. - * - * In time, we want to scrap the "opening nonpresent ports" - * behaviour and implement an alternative way for setserial - * to set base addresses/ports/types. This will allow us to - * get rid of a certain amount of extra tests. - */ -static int uart_open(struct tty_struct *tty, struct file *filp) -{ - struct uart_driver *drv = (struct uart_driver *)tty->driver->driver_state; - struct uart_state *state; - int retval, line = tty->index; - - BUG_ON(!kernel_locked()); - DPRINTK("uart_open(%d) called\n", line); - - /* - * tty->driver->num won't change, so we won't fail here with - * tty->driver_data set to something non-NULL (and therefore - * we won't get caught by uart_close()). - */ - retval = -ENODEV; - if (line >= tty->driver->num) - goto fail; - - /* - * We take the semaphore inside uart_get to guarantee that we won't - * be re-entered while allocating the info structure, or while we - * request any IRQs that the driver may need. This also has the nice - * side-effect that it delays the action of uart_hangup, so we can - * guarantee that info->tty will always contain something reasonable. - */ - state = uart_get(drv, line); - if (IS_ERR(state)) { - retval = PTR_ERR(state); - goto fail; - } - - /* - * Once we set tty->driver_data here, we are guaranteed that - * uart_close() will decrement the driver module use count. - * Any failures from here onwards should not touch the count. - */ - tty->driver_data = state; - tty->low_latency = (state->port->flags & UPF_LOW_LATENCY) ? 1 : 0; - tty->alt_speed = 0; - state->info->tty = tty; - - /* - * If the port is in the middle of closing, bail out now. - */ - if (tty_hung_up_p(filp)) { - retval = -EAGAIN; - state->count--; - up(&state->sem); - goto fail; - } - - /* - * Make sure the device is in D0 state. - */ - if (state->count == 1) - uart_change_pm(state, 0); - - /* - * Start up the serial port. - */ - retval = uart_startup(state, 0); - - /* - * If we succeeded, wait until the port is ready. - */ - if (retval == 0) - retval = uart_block_til_ready(filp, state); - up(&state->sem); - - /* - * If this is the first open to succeed, adjust things to suit. - */ - if (retval == 0 && !(state->info->flags & UIF_NORMAL_ACTIVE)) { - state->info->flags |= UIF_NORMAL_ACTIVE; - - uart_update_termios(state); - } - - fail: - return retval; -} - -static const char *uart_type(struct uart_port *port) -{ - const char *str = NULL; - - if (port->ops->type) - str = port->ops->type(port); - - if (!str) - str = "unknown"; - - return str; -} - -#ifdef CONFIG_PROC_FS - -static int uart_line_info(char *buf, struct uart_driver *drv, int i) -{ - struct uart_state *state = drv->state + i; - struct uart_port *port = state->port; - char stat_buf[32]; - unsigned int status; - int ret; - - if (!port) - return 0; - - ret = sprintf(buf, "%d: uart:%s port:%08X irq:%d", - port->line, uart_type(port), - port->iobase, port->irq); - - if (port->type == PORT_UNKNOWN) { - strcat(buf, "\n"); - return ret + 1; - } - - if(capable(CAP_SYS_ADMIN)) - { - status = port->ops->get_mctrl(port); - - ret += sprintf(buf + ret, " tx:%d rx:%d", - port->icount.tx, port->icount.rx); - if (port->icount.frame) - ret += sprintf(buf + ret, " fe:%d", - port->icount.frame); - if (port->icount.parity) - ret += sprintf(buf + ret, " pe:%d", - port->icount.parity); - if (port->icount.brk) - ret += sprintf(buf + ret, " brk:%d", - port->icount.brk); - if (port->icount.overrun) - ret += sprintf(buf + ret, " oe:%d", - port->icount.overrun); - -#define INFOBIT(bit,str) \ - if (port->mctrl & (bit)) \ - strncat(stat_buf, (str), sizeof(stat_buf) - \ - strlen(stat_buf) - 2) -#define STATBIT(bit,str) \ - if (status & (bit)) \ - strncat(stat_buf, (str), sizeof(stat_buf) - \ - strlen(stat_buf) - 2) - - stat_buf[0] = '\0'; - stat_buf[1] = '\0'; - INFOBIT(TIOCM_RTS, "|RTS"); - STATBIT(TIOCM_CTS, "|CTS"); - INFOBIT(TIOCM_DTR, "|DTR"); - STATBIT(TIOCM_DSR, "|DSR"); - STATBIT(TIOCM_CAR, "|CD"); - STATBIT(TIOCM_RNG, "|RI"); - if (stat_buf[0]) - stat_buf[0] = ' '; - strcat(stat_buf, "\n"); - - ret += sprintf(buf + ret, stat_buf); - } -#undef STATBIT -#undef INFOBIT - return ret; -} - -static int uart_read_proc(char *page, char **start, off_t off, - int count, int *eof, void *data) -{ - struct tty_driver *ttydrv = data; - struct uart_driver *drv = ttydrv->driver_state; - int i, len = 0, l; - off_t begin = 0; - - len += sprintf(page, "serinfo:1.0 driver%s%s revision:%s\n", - "", "", ""); - for (i = 0; i < drv->nr && len < PAGE_SIZE - 96; i++) { - l = uart_line_info(page + len, drv, i); - len += l; - if (len + begin > off + count) - goto done; - if (len + begin < off) { - begin += len; - len = 0; - } - } - *eof = 1; - done: - if (off >= len + begin) - return 0; - *start = page + (off - begin); - return (count < begin + len - off) ? count : (begin + len - off); -} -#endif - -#ifdef CONFIG_SERIAL_CORE_CONSOLE -/* - * Check whether an invalid uart number has been specified, and - * if so, search for the first available port that does have - * console support. - */ -struct uart_port * __init -uart_get_console(struct uart_port *ports, int nr, struct console *co) -{ - int idx = co->index; - - if (idx < 0 || idx >= nr || (ports[idx].iobase == 0 && - ports[idx].membase == NULL)) - for (idx = 0; idx < nr; idx++) - if (ports[idx].iobase != 0 || - ports[idx].membase != NULL) - break; - - co->index = idx; - - return ports + idx; -} - -/** - * uart_parse_options - Parse serial port baud/parity/bits/flow contro. - * @options: pointer to option string - * @baud: pointer to an 'int' variable for the baud rate. - * @parity: pointer to an 'int' variable for the parity. - * @bits: pointer to an 'int' variable for the number of data bits. - * @flow: pointer to an 'int' variable for the flow control character. - * - * uart_parse_options decodes a string containing the serial console - * options. The format of the string is , - * eg: 115200n8r - */ -void __init -uart_parse_options(char *options, int *baud, int *parity, int *bits, int *flow) -{ - char *s = options; - - *baud = simple_strtoul(s, NULL, 10); - while (*s >= '0' && *s <= '9') - s++; - if (*s) - *parity = *s++; - if (*s) - *bits = *s++ - '0'; - if (*s) - *flow = *s; -} - -struct baud_rates { - unsigned int rate; - unsigned int cflag; -}; - -static struct baud_rates baud_rates[] = { - { 921600, B921600 }, - { 460800, B460800 }, - { 230400, B230400 }, - { 115200, B115200 }, - { 57600, B57600 }, - { 38400, B38400 }, - { 19200, B19200 }, - { 9600, B9600 }, - { 4800, B4800 }, - { 2400, B2400 }, - { 1200, B1200 }, - { 0, B38400 } -}; - -/** - * uart_set_options - setup the serial console parameters - * @port: pointer to the serial ports uart_port structure - * @co: console pointer - * @baud: baud rate - * @parity: parity character - 'n' (none), 'o' (odd), 'e' (even) - * @bits: number of data bits - * @flow: flow control character - 'r' (rts) - */ -int __init -uart_set_options(struct uart_port *port, struct console *co, - int baud, int parity, int bits, int flow) -{ - struct termios termios; - int i; - - memset(&termios, 0, sizeof(struct termios)); - - termios.c_cflag = CREAD | HUPCL | CLOCAL; - - /* - * Construct a cflag setting. - */ - for (i = 0; baud_rates[i].rate; i++) - if (baud_rates[i].rate <= baud) - break; - - termios.c_cflag |= baud_rates[i].cflag; - - if (bits == 7) - termios.c_cflag |= CS7; - else - termios.c_cflag |= CS8; - - switch (parity) { - case 'o': case 'O': - termios.c_cflag |= PARODD; - /*fall through*/ - case 'e': case 'E': - termios.c_cflag |= PARENB; - break; - } - - if (flow == 'r') - termios.c_cflag |= CRTSCTS; - - port->ops->set_termios(port, &termios, NULL); - co->cflag = termios.c_cflag; - - return 0; -} -#endif /* CONFIG_SERIAL_CORE_CONSOLE */ - -static void uart_change_pm(struct uart_state *state, int pm_state) -{ - struct uart_port *port = state->port; - if (port->ops->pm) - port->ops->pm(port, pm_state, state->pm_state); - state->pm_state = pm_state; -} - -int uart_suspend_port(struct uart_driver *drv, struct uart_port *port, u32 level) -{ - struct uart_state *state = drv->state + port->line; - - down(&state->sem); - - switch (level) { - case SUSPEND_SAVE_STATE: - if (state->info && state->info->flags & UIF_INITIALIZED) { - struct uart_ops *ops = port->ops; - - spin_lock_irq(&port->lock); - ops->stop_tx(port, 0); - ops->set_mctrl(port, 0); - ops->stop_rx(port); - spin_unlock_irq(&port->lock); - - /* - * Wait for the transmitter to empty. - */ - while (!ops->tx_empty(port)) { - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(10*HZ/1000); - } - set_current_state(TASK_RUNNING); - - ops->shutdown(port); - } - break; - - case SUSPEND_POWER_DOWN: - /* - * Disable the console device before suspending. - */ - if (uart_console(port)) - port->cons->flags &= ~CON_ENABLED; - - uart_change_pm(state, 3); - break; - } - - up(&state->sem); - - return 0; -} - -int uart_resume_port(struct uart_driver *drv, struct uart_port *port, u32 level) -{ - struct uart_state *state = drv->state + port->line; - - down(&state->sem); - - switch (level) { - case RESUME_POWER_ON: - uart_change_pm(state, 0); - - /* - * Re-enable the console device after suspending. - */ - if (uart_console(port)) { - uart_change_speed(state, NULL); - port->cons->flags |= CON_ENABLED; - } - break; - - case RESUME_RESTORE_STATE: - if (state->info && state->info->flags & UIF_INITIALIZED) { - struct uart_ops *ops = port->ops; - - ops->set_mctrl(port, 0); - ops->startup(port); - uart_change_speed(state, NULL); - spin_lock_irq(&port->lock); - ops->set_mctrl(port, port->mctrl); - ops->start_tx(port, 0); - spin_unlock_irq(&port->lock); - } - break; - } - - up(&state->sem); - - return 0; -} - -static inline void -uart_report_port(struct uart_driver *drv, struct uart_port *port) -{ - printk("%s%d", drv->dev_name, port->line); - printk(" at "); - switch (port->iotype) { - case UPIO_PORT: - printk("I/O 0x%x", port->iobase); - break; - case UPIO_HUB6: - printk("I/O 0x%x offset 0x%x", port->iobase, port->hub6); - break; - case UPIO_MEM: - printk("MMIO 0x%lx", port->mapbase); - break; - } - printk(" (irq = %d) is a %s\n", port->irq, uart_type(port)); -} - -static void -uart_configure_port(struct uart_driver *drv, struct uart_state *state, - struct uart_port *port) -{ - unsigned int flags; - - /* - * If there isn't a port here, don't do anything further. - */ - if (!port->iobase && !port->mapbase && !port->membase) - return; - - /* - * Now do the auto configuration stuff. Note that config_port - * is expected to claim the resources and map the port for us. - */ - flags = UART_CONFIG_TYPE; - if (port->flags & UPF_AUTO_IRQ) - flags |= UART_CONFIG_IRQ; - if (port->flags & UPF_BOOT_AUTOCONF) { - port->type = PORT_UNKNOWN; - port->ops->config_port(port, flags); - } - - if (port->type != PORT_UNKNOWN) { - unsigned long flags; - - uart_report_port(drv, port); - - /* - * Ensure that the modem control lines are de-activated. - * We probably don't need a spinlock around this, but - */ - spin_lock_irqsave(&port->lock, flags); - port->ops->set_mctrl(port, 0); - spin_unlock_irqrestore(&port->lock, flags); - - /* - * Power down all ports by default, except the - * console if we have one. - */ - if (!uart_console(port)) - uart_change_pm(state, 3); - } -} - -/* - * This reverses the effects of uart_configure_port, hanging up the - * port before removal. - */ -static void -uart_unconfigure_port(struct uart_driver *drv, struct uart_state *state) -{ - struct uart_port *port = state->port; - struct uart_info *info = state->info; - - if (info && info->tty) - tty_vhangup(info->tty); - - down(&state->sem); - - state->info = NULL; - - /* - * Free the port IO and memory resources, if any. - */ - if (port->type != PORT_UNKNOWN) - port->ops->release_port(port); - - /* - * Indicate that there isn't a port here anymore. - */ - port->type = PORT_UNKNOWN; - - /* - * Kill the tasklet, and free resources. - */ - if (info) { - tasklet_kill(&info->tlet); - kfree(info); - } - - up(&state->sem); -} - -static struct tty_operations uart_ops = { - .open = uart_open, - .close = uart_close, - .write = uart_write, - .put_char = uart_put_char, - .flush_chars = uart_flush_chars, - .write_room = uart_write_room, - .chars_in_buffer= uart_chars_in_buffer, - .flush_buffer = uart_flush_buffer, - .ioctl = uart_ioctl, - .throttle = uart_throttle, - .unthrottle = uart_unthrottle, - .send_xchar = uart_send_xchar, - .set_termios = uart_set_termios, - .stop = uart_stop, - .start = uart_start, - .hangup = uart_hangup, - .break_ctl = uart_break_ctl, - .wait_until_sent= uart_wait_until_sent, -#ifdef CONFIG_PROC_FS - .read_proc = uart_read_proc, -#endif - .tiocmget = uart_tiocmget, - .tiocmset = uart_tiocmset, -}; - -/** - * uart_register_driver - register a driver with the uart core layer - * @drv: low level driver structure - * - * Register a uart driver with the core driver. We in turn register - * with the tty layer, and initialise the core driver per-port state. - * - * We have a proc file in /proc/tty/driver which is named after the - * normal driver. - * - * drv->port should be NULL, and the per-port structures should be - * registered using uart_add_one_port after this call has succeeded. - */ -int uart_register_driver(struct uart_driver *drv) -{ - struct tty_driver *normal = NULL; - int i, retval; - - BUG_ON(drv->state); - - /* - * Maybe we should be using a slab cache for this, especially if - * we have a large number of ports to handle. - */ - drv->state = kmalloc(sizeof(struct uart_state) * drv->nr, GFP_KERNEL); - retval = -ENOMEM; - if (!drv->state) - goto out; - - memset(drv->state, 0, sizeof(struct uart_state) * drv->nr); - - normal = alloc_tty_driver(drv->nr); - if (!normal) - goto out; - - drv->tty_driver = normal; - - normal->owner = drv->owner; - normal->driver_name = drv->driver_name; - normal->devfs_name = drv->devfs_name; - normal->name = drv->dev_name; - normal->major = drv->major; - normal->minor_start = drv->minor; - normal->type = TTY_DRIVER_TYPE_SERIAL; - normal->subtype = SERIAL_TYPE_NORMAL; - normal->init_termios = tty_std_termios; - normal->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; - normal->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; - normal->driver_state = drv; - tty_set_operations(normal, &uart_ops); - - /* - * Initialise the UART state(s). - */ - for (i = 0; i < drv->nr; i++) { - struct uart_state *state = drv->state + i; - - state->close_delay = 5 * HZ / 10; - state->closing_wait = 30 * HZ; - - init_MUTEX(&state->sem); - } - - retval = tty_register_driver(normal); - out: - if (retval < 0) { - put_tty_driver(normal); - kfree(drv->state); - } - return retval; -} - -/** - * uart_unregister_driver - remove a driver from the uart core layer - * @drv: low level driver structure - * - * Remove all references to a driver from the core driver. The low - * level driver must have removed all its ports via the - * uart_remove_one_port() if it registered them with uart_add_one_port(). - * (ie, drv->port == NULL) - */ -void uart_unregister_driver(struct uart_driver *drv) -{ - struct tty_driver *p = drv->tty_driver; - tty_unregister_driver(p); - put_tty_driver(p); - kfree(drv->state); - drv->tty_driver = NULL; -} - -struct tty_driver *uart_console_device(struct console *co, int *index) -{ - struct uart_driver *p = co->data; - *index = co->index; - return p->tty_driver; -} - -/** - * uart_add_one_port - attach a driver-defined port structure - * @drv: pointer to the uart low level driver structure for this port - * @port: uart port structure to use for this port. - * - * This allows the driver to register its own uart_port structure - * with the core driver. The main purpose is to allow the low - * level uart drivers to expand uart_port, rather than having yet - * more levels of structures. - */ -int uart_add_one_port(struct uart_driver *drv, struct uart_port *port) -{ - struct uart_state *state; - int ret = 0; - - BUG_ON(in_interrupt()); - - if (port->line >= drv->nr) - return -EINVAL; - - state = drv->state + port->line; - - down(&port_sem); - if (state->port) { - ret = -EINVAL; - goto out; - } - - state->port = port; - - spin_lock_init(&port->lock); - port->cons = drv->cons; - port->info = state->info; - - uart_configure_port(drv, state, port); - - /* - * Register the port whether it's detected or not. This allows - * setserial to be used to alter this ports parameters. - */ - tty_register_device(drv->tty_driver, port->line, NULL); - - out: - up(&port_sem); - - return ret; -} - -/** - * uart_remove_one_port - detach a driver defined port structure - * @drv: pointer to the uart low level driver structure for this port - * @port: uart port structure for this port - * - * This unhooks (and hangs up) the specified port structure from the - * core driver. No further calls will be made to the low-level code - * for this port. - */ -int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port) -{ - struct uart_state *state = drv->state + port->line; - - BUG_ON(in_interrupt()); - - if (state->port != port) - printk(KERN_ALERT "Removing wrong port: %p != %p\n", - state->port, port); - - down(&port_sem); - - /* - * Remove the devices from devfs - */ - tty_unregister_device(drv->tty_driver, port->line); - - uart_unconfigure_port(drv, state); - state->port = NULL; - up(&port_sem); - - return 0; -} - -/* - * Are the two ports equivalent? - */ -static int uart_match_port(struct uart_port *port1, struct uart_port *port2) -{ - if (port1->iotype != port2->iotype) - return 0; - - switch (port1->iotype) { - case UPIO_PORT: - return (port1->iobase == port2->iobase); - case UPIO_HUB6: - return (port1->iobase == port2->iobase) && - (port1->hub6 == port2->hub6); - case UPIO_MEM: - return (port1->membase == port2->membase); - } - return 0; -} - -/* - * Try to find an unused uart_state slot for a port. - */ -static struct uart_state * -uart_find_match_or_unused(struct uart_driver *drv, struct uart_port *port) -{ - int i; - - /* - * First, find a port entry which matches. Note: if we do - * find a matching entry, and it has a non-zero use count, - * then we can't register the port. - */ - for (i = 0; i < drv->nr; i++) - if (uart_match_port(drv->state[i].port, port)) - return &drv->state[i]; - - /* - * We didn't find a matching entry, so look for the first - * free entry. We look for one which hasn't been previously - * used (indicated by zero iobase). - */ - for (i = 0; i < drv->nr; i++) - if (drv->state[i].port->type == PORT_UNKNOWN && - drv->state[i].port->iobase == 0 && - drv->state[i].count == 0) - return &drv->state[i]; - - /* - * That also failed. Last resort is to find any currently - * entry which doesn't have a real port associated with it. - */ - for (i = 0; i < drv->nr; i++) - if (drv->state[i].port->type == PORT_UNKNOWN && - drv->state[i].count == 0) - return &drv->state[i]; - - return NULL; -} - -/** - * uart_register_port: register uart settings with a port - * @drv: pointer to the uart low level driver structure for this port - * @port: uart port structure describing the port - * - * Register UART settings with the specified low level driver. Detect - * the type of the port if UPF_BOOT_AUTOCONF is set, and detect the - * IRQ if UPF_AUTO_IRQ is set. - * - * We try to pick the same port for the same IO base address, so that - * when a modem is plugged in, unplugged and plugged back in, it gets - * allocated the same port. - * - * Returns negative error, or positive line number. - */ -int uart_register_port(struct uart_driver *drv, struct uart_port *port) -{ - struct uart_state *state; - int ret; - - down(&port_sem); - - state = uart_find_match_or_unused(drv, port); - - if (state) { - /* - * Ok, we've found a line that we can use. - * - * If we find a port that matches this one, and it appears - * to be in-use (even if it doesn't have a type) we shouldn't - * alter it underneath itself - the port may be open and - * trying to do useful work. - */ - if (uart_users(state) != 0) { - ret = -EBUSY; - goto out; - } - - /* - * If the port is already initialised, don't touch it. - */ - if (state->port->type == PORT_UNKNOWN) { - state->port->iobase = port->iobase; - state->port->membase = port->membase; - state->port->irq = port->irq; - state->port->uartclk = port->uartclk; - state->port->fifosize = port->fifosize; - state->port->regshift = port->regshift; - state->port->iotype = port->iotype; - state->port->flags = port->flags; - state->port->line = state - drv->state; - state->port->mapbase = port->mapbase; - - uart_configure_port(drv, state, state->port); - } - - ret = state->port->line; - } else - ret = -ENOSPC; - out: - up(&port_sem); - return ret; -} - -/** - * uart_unregister_port - de-allocate a port - * @drv: pointer to the uart low level driver structure for this port - * @line: line index previously returned from uart_register_port() - * - * Hang up the specified line associated with the low level driver, - * and mark the port as unused. - */ -void uart_unregister_port(struct uart_driver *drv, int line) -{ - struct uart_state *state; - - if (line < 0 || line >= drv->nr) { - printk(KERN_ERR "Attempt to unregister "); - printk("%s%d", drv->dev_name, line); - printk("\n"); - return; - } - - state = drv->state + line; - - down(&port_sem); - uart_unconfigure_port(drv, state); - up(&port_sem); -} - -EXPORT_SYMBOL(uart_write_wakeup); -EXPORT_SYMBOL(uart_register_driver); -EXPORT_SYMBOL(uart_unregister_driver); -EXPORT_SYMBOL(uart_suspend_port); -EXPORT_SYMBOL(uart_resume_port); -EXPORT_SYMBOL(uart_register_port); -EXPORT_SYMBOL(uart_unregister_port); -EXPORT_SYMBOL(uart_add_one_port); -EXPORT_SYMBOL(uart_remove_one_port); - -MODULE_DESCRIPTION("Serial driver core"); -MODULE_LICENSE("GPL"); diff -Nru a/drivers/serial/sa1100.c b/drivers/serial/sa1100.c --- a/drivers/serial/sa1100.c Mon Sep 22 00:30:18 2003 +++ b/drivers/serial/sa1100.c Mon Sep 22 00:30:18 2003 @@ -862,8 +862,8 @@ { struct sa1100_port *sport = dev_get_drvdata(_dev); - if (sport) - uart_suspend_port(&sa1100_reg, &sport->port, level); + if (sport && level == SUSPEND_DISABLE) + uart_suspend_port(&sa1100_reg, &sport->port); return 0; } @@ -872,8 +872,8 @@ { struct sa1100_port *sport = dev_get_drvdata(_dev); - if (sport) - uart_resume_port(&sa1100_reg, &sport->port, level); + if (sport && level == RESUME_ENABLE) + uart_resume_port(&sa1100_reg, &sport->port); return 0; } diff -Nru a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/serial/serial_core.c Mon Sep 22 00:30:19 2003 @@ -0,0 +1,2420 @@ +/* + * linux/drivers/char/core.c + * + * Driver core for serial ports + * + * Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o. + * + * Copyright 1999 ARM Limited + * Copyright (C) 2000-2001 Deep Blue Solutions Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include /* for serial_state and serial_icounter_struct */ + +#include +#include + +#undef DEBUG +#ifdef DEBUG +#define DPRINTK(x...) printk(x) +#else +#define DPRINTK(x...) do { } while (0) +#endif + +/* + * This is used to lock changes in serial line configuration. + */ +static DECLARE_MUTEX(port_sem); + +#define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8) + +#define uart_users(state) ((state)->count + ((state)->info ? (state)->info->blocked_open : 0)) + +#ifdef CONFIG_SERIAL_CORE_CONSOLE +#define uart_console(port) ((port)->cons && (port)->cons->index == (port)->line) +#else +#define uart_console(port) (0) +#endif + +static void uart_change_speed(struct uart_state *state, struct termios *old_termios); +static void uart_wait_until_sent(struct tty_struct *tty, int timeout); +static void uart_change_pm(struct uart_state *state, int pm_state); + +/* + * This routine is used by the interrupt handler to schedule processing in + * the software interrupt portion of the driver. + */ +void uart_write_wakeup(struct uart_port *port) +{ + struct uart_info *info = port->info; + tasklet_schedule(&info->tlet); +} + +static void uart_stop(struct tty_struct *tty) +{ + struct uart_state *state = tty->driver_data; + struct uart_port *port = state->port; + unsigned long flags; + + spin_lock_irqsave(&port->lock, flags); + port->ops->stop_tx(port, 1); + spin_unlock_irqrestore(&port->lock, flags); +} + +static void __uart_start(struct tty_struct *tty) +{ + struct uart_state *state = tty->driver_data; + struct uart_port *port = state->port; + + if (!uart_circ_empty(&state->info->xmit) && state->info->xmit.buf && + !tty->stopped && !tty->hw_stopped) + port->ops->start_tx(port, 1); +} + +static void uart_start(struct tty_struct *tty) +{ + struct uart_state *state = tty->driver_data; + struct uart_port *port = state->port; + unsigned long flags; + + spin_lock_irqsave(&port->lock, flags); + __uart_start(tty); + spin_unlock_irqrestore(&port->lock, flags); +} + +static void uart_tasklet_action(unsigned long data) +{ + struct uart_state *state = (struct uart_state *)data; + struct tty_struct *tty; + + tty = state->info->tty; + if (tty) { + if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && + tty->ldisc.write_wakeup) + tty->ldisc.write_wakeup(tty); + wake_up_interruptible(&tty->write_wait); + } +} + +static inline void +uart_update_mctrl(struct uart_port *port, unsigned int set, unsigned int clear) +{ + unsigned long flags; + unsigned int old; + + spin_lock_irqsave(&port->lock, flags); + old = port->mctrl; + port->mctrl = (old & ~clear) | set; + if (old != port->mctrl) + port->ops->set_mctrl(port, port->mctrl); + spin_unlock_irqrestore(&port->lock, flags); +} + +#define uart_set_mctrl(port,set) uart_update_mctrl(port,set,0) +#define uart_clear_mctrl(port,clear) uart_update_mctrl(port,0,clear) + +/* + * Startup the port. This will be called once per open. All calls + * will be serialised by the per-port semaphore. + */ +static int uart_startup(struct uart_state *state, int init_hw) +{ + struct uart_info *info = state->info; + struct uart_port *port = state->port; + unsigned long page; + int retval = 0; + + if (info->flags & UIF_INITIALIZED) + return 0; + + /* + * Set the TTY IO error marker - we will only clear this + * once we have successfully opened the port. Also set + * up the tty->alt_speed kludge + */ + if (info->tty) + set_bit(TTY_IO_ERROR, &info->tty->flags); + + if (port->type == PORT_UNKNOWN) + return 0; + + /* + * Initialise and allocate the transmit and temporary + * buffer. + */ + if (!info->xmit.buf) { + page = get_zeroed_page(GFP_KERNEL); + if (!page) + return -ENOMEM; + + info->xmit.buf = (unsigned char *) page; + info->tmpbuf = info->xmit.buf + UART_XMIT_SIZE; + init_MUTEX(&info->tmpbuf_sem); + uart_circ_clear(&info->xmit); + } + + port->mctrl = 0; + + retval = port->ops->startup(port); + if (retval == 0) { + if (init_hw) { + /* + * Initialise the hardware port settings. + */ + uart_change_speed(state, NULL); + + /* + * Setup the RTS and DTR signals once the + * port is open and ready to respond. + */ + if (info->tty->termios->c_cflag & CBAUD) + uart_set_mctrl(port, TIOCM_RTS | TIOCM_DTR); + } + + info->flags |= UIF_INITIALIZED; + + clear_bit(TTY_IO_ERROR, &info->tty->flags); + } + + if (retval && capable(CAP_SYS_ADMIN)) + retval = 0; + + return retval; +} + +/* + * This routine will shutdown a serial port; interrupts are disabled, and + * DTR is dropped if the hangup on close termio flag is on. Calls to + * uart_shutdown are serialised by the per-port semaphore. + */ +static void uart_shutdown(struct uart_state *state) +{ + struct uart_info *info = state->info; + struct uart_port *port = state->port; + + if (!(info->flags & UIF_INITIALIZED)) + return; + + /* + * Turn off DTR and RTS early. + */ + if (!info->tty || (info->tty->termios->c_cflag & HUPCL)) + uart_clear_mctrl(port, TIOCM_DTR | TIOCM_RTS); + + /* + * clear delta_msr_wait queue to avoid mem leaks: we may free + * the irq here so the queue might never be woken up. Note + * that we won't end up waiting on delta_msr_wait again since + * any outstanding file descriptors should be pointing at + * hung_up_tty_fops now. + */ + wake_up_interruptible(&info->delta_msr_wait); + + /* + * Free the IRQ and disable the port. + */ + port->ops->shutdown(port); + + /* + * Ensure that the IRQ handler isn't running on another CPU. + */ + synchronize_irq(port->irq); + + /* + * Free the transmit buffer page. + */ + if (info->xmit.buf) { + free_page((unsigned long)info->xmit.buf); + info->xmit.buf = NULL; + info->tmpbuf = NULL; + } + + /* + * kill off our tasklet + */ + tasklet_kill(&info->tlet); + if (info->tty) + set_bit(TTY_IO_ERROR, &info->tty->flags); + + info->flags &= ~UIF_INITIALIZED; +} + +/** + * uart_update_timeout - update per-port FIFO timeout. + * @port: uart_port structure describing the port. + * @cflag: termios cflag value + * @quot: uart clock divisor quotient + * + * Set the port FIFO timeout value. The @cflag value should + * reflect the actual hardware settings. + */ +void +uart_update_timeout(struct uart_port *port, unsigned int cflag, + unsigned int baud) +{ + unsigned int bits; + + /* byte size and parity */ + switch (cflag & CSIZE) { + case CS5: + bits = 7; + break; + case CS6: + bits = 8; + break; + case CS7: + bits = 9; + break; + default: + bits = 10; + break; // CS8 + } + + if (cflag & CSTOPB) + bits++; + if (cflag & PARENB) + bits++; + + /* + * The total number of bits to be transmitted in the fifo. + */ + bits = bits * port->fifosize; + + /* + * Figure the timeout to send the above number of bits. + * Add .02 seconds of slop + */ + port->timeout = (HZ * bits) / baud + HZ/50; +} + +EXPORT_SYMBOL(uart_update_timeout); + +/** + * uart_get_baud_rate - return baud rate for a particular port + * @port: uart_port structure describing the port in question. + * @termios: desired termios settings. + * @old: old termios (or NULL) + * @min: minimum acceptable baud rate + * @max: maximum acceptable baud rate + * + * Decode the termios structure into a numeric baud rate, + * taking account of the magic 38400 baud rate (with spd_* + * flags), and mapping the %B0 rate to 9600 baud. + * + * If the new baud rate is invalid, try the old termios setting. + * If it's still invalid, we try 9600 baud. + * + * Update the @termios structure to reflect the baud rate + * we're actually going to be using. + */ +unsigned int +uart_get_baud_rate(struct uart_port *port, struct termios *termios, + struct termios *old, unsigned int min, unsigned int max) +{ + unsigned int try, baud, altbaud = 38400; + unsigned int flags = port->flags & UPF_SPD_MASK; + + if (flags == UPF_SPD_HI) + altbaud = 57600; + if (flags == UPF_SPD_VHI) + altbaud = 115200; + if (flags == UPF_SPD_SHI) + altbaud = 230400; + if (flags == UPF_SPD_WARP) + altbaud = 460800; + + for (try = 0; try < 2; try++) { + baud = tty_termios_baud_rate(termios); + + /* + * The spd_hi, spd_vhi, spd_shi, spd_warp kludge... + * Die! Die! Die! + */ + if (baud == 38400) + baud = altbaud; + + /* + * Special case: B0 rate. + */ + if (baud == 0) + baud = 9600; + + if (baud >= min && baud <= max) + return baud; + + /* + * Oops, the quotient was zero. Try again with + * the old baud rate if possible. + */ + termios->c_cflag &= ~CBAUD; + if (old) { + termios->c_cflag |= old->c_cflag & CBAUD; + old = NULL; + continue; + } + + /* + * As a last resort, if the quotient is zero, + * default to 9600 bps + */ + termios->c_cflag |= B9600; + } + + return 0; +} + +EXPORT_SYMBOL(uart_get_baud_rate); + +/** + * uart_get_divisor - return uart clock divisor + * @port: uart_port structure describing the port. + * @baud: desired baud rate + * + * Calculate the uart clock divisor for the port. + */ +unsigned int +uart_get_divisor(struct uart_port *port, unsigned int baud) +{ + unsigned int quot; + + /* + * Old custom speed handling. + */ + if (baud == 38400 && (port->flags & UPF_SPD_MASK) == UPF_SPD_CUST) + quot = port->custom_divisor; + else + quot = port->uartclk / (16 * baud); + + return quot; +} + +EXPORT_SYMBOL(uart_get_divisor); + +static void +uart_change_speed(struct uart_state *state, struct termios *old_termios) +{ + struct tty_struct *tty = state->info->tty; + struct uart_port *port = state->port; + struct termios *termios; + + /* + * If we have no tty, termios, or the port does not exist, + * then we can't set the parameters for this port. + */ + if (!tty || !tty->termios || port->type == PORT_UNKNOWN) + return; + + termios = tty->termios; + + /* + * Set flags based on termios cflag + */ + if (termios->c_cflag & CRTSCTS) + state->info->flags |= UIF_CTS_FLOW; + else + state->info->flags &= ~UIF_CTS_FLOW; + + if (termios->c_cflag & CLOCAL) + state->info->flags &= ~UIF_CHECK_CD; + else + state->info->flags |= UIF_CHECK_CD; + + port->ops->set_termios(port, termios, old_termios); +} + +static inline void +__uart_put_char(struct uart_port *port, struct circ_buf *circ, unsigned char c) +{ + unsigned long flags; + + if (!circ->buf) + return; + + spin_lock_irqsave(&port->lock, flags); + if (uart_circ_chars_free(circ) != 0) { + circ->buf[circ->head] = c; + circ->head = (circ->head + 1) & (UART_XMIT_SIZE - 1); + } + spin_unlock_irqrestore(&port->lock, flags); +} + +static inline int +__uart_user_write(struct uart_port *port, struct circ_buf *circ, + const unsigned char *buf, int count) +{ + unsigned long flags; + int c, ret = 0; + + if (down_interruptible(&port->info->tmpbuf_sem)) + return -EINTR; + + while (1) { + int c1; + c = CIRC_SPACE_TO_END(circ->head, circ->tail, UART_XMIT_SIZE); + if (count < c) + c = count; + if (c <= 0) + break; + + c -= copy_from_user(port->info->tmpbuf, buf, c); + if (!c) { + if (!ret) + ret = -EFAULT; + break; + } + spin_lock_irqsave(&port->lock, flags); + c1 = CIRC_SPACE_TO_END(circ->head, circ->tail, UART_XMIT_SIZE); + if (c1 < c) + c = c1; + memcpy(circ->buf + circ->head, port->info->tmpbuf, c); + circ->head = (circ->head + c) & (UART_XMIT_SIZE - 1); + spin_unlock_irqrestore(&port->lock, flags); + buf += c; + count -= c; + ret += c; + } + up(&port->info->tmpbuf_sem); + + return ret; +} + +static inline int +__uart_kern_write(struct uart_port *port, struct circ_buf *circ, + const unsigned char *buf, int count) +{ + unsigned long flags; + int c, ret = 0; + + spin_lock_irqsave(&port->lock, flags); + while (1) { + c = CIRC_SPACE_TO_END(circ->head, circ->tail, UART_XMIT_SIZE); + if (count < c) + c = count; + if (c <= 0) + break; + memcpy(circ->buf + circ->head, buf, c); + circ->head = (circ->head + c) & (UART_XMIT_SIZE - 1); + buf += c; + count -= c; + ret += c; + } + spin_unlock_irqrestore(&port->lock, flags); + + return ret; +} + +static void uart_put_char(struct tty_struct *tty, unsigned char ch) +{ + struct uart_state *state = tty->driver_data; + + if (tty) + __uart_put_char(state->port, &state->info->xmit, ch); +} + +static void uart_flush_chars(struct tty_struct *tty) +{ + uart_start(tty); +} + +static int +uart_write(struct tty_struct *tty, int from_user, const unsigned char * buf, + int count) +{ + struct uart_state *state = tty->driver_data; + int ret; + + if (!tty || !state->info->xmit.buf) + return 0; + + if (from_user) + ret = __uart_user_write(state->port, &state->info->xmit, buf, count); + else + ret = __uart_kern_write(state->port, &state->info->xmit, buf, count); + + uart_start(tty); + return ret; +} + +static int uart_write_room(struct tty_struct *tty) +{ + struct uart_state *state = tty->driver_data; + + return uart_circ_chars_free(&state->info->xmit); +} + +static int uart_chars_in_buffer(struct tty_struct *tty) +{ + struct uart_state *state = tty->driver_data; + + return uart_circ_chars_pending(&state->info->xmit); +} + +static void uart_flush_buffer(struct tty_struct *tty) +{ + struct uart_state *state = tty->driver_data; + struct uart_port *port = state->port; + unsigned long flags; + + DPRINTK("uart_flush_buffer(%d) called\n", tty->index); + + spin_lock_irqsave(&port->lock, flags); + uart_circ_clear(&state->info->xmit); + spin_unlock_irqrestore(&port->lock, flags); + wake_up_interruptible(&tty->write_wait); + if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && + tty->ldisc.write_wakeup) + (tty->ldisc.write_wakeup)(tty); +} + +/* + * This function is used to send a high-priority XON/XOFF character to + * the device + */ +static void uart_send_xchar(struct tty_struct *tty, char ch) +{ + struct uart_state *state = tty->driver_data; + struct uart_port *port = state->port; + unsigned long flags; + + if (port->ops->send_xchar) + port->ops->send_xchar(port, ch); + else { + port->x_char = ch; + if (ch) { + spin_lock_irqsave(&port->lock, flags); + port->ops->start_tx(port, 0); + spin_unlock_irqrestore(&port->lock, flags); + } + } +} + +static void uart_throttle(struct tty_struct *tty) +{ + struct uart_state *state = tty->driver_data; + + if (I_IXOFF(tty)) + uart_send_xchar(tty, STOP_CHAR(tty)); + + if (tty->termios->c_cflag & CRTSCTS) + uart_clear_mctrl(state->port, TIOCM_RTS); +} + +static void uart_unthrottle(struct tty_struct *tty) +{ + struct uart_state *state = tty->driver_data; + struct uart_port *port = state->port; + + if (I_IXOFF(tty)) { + if (port->x_char) + port->x_char = 0; + else + uart_send_xchar(tty, START_CHAR(tty)); + } + + if (tty->termios->c_cflag & CRTSCTS) + uart_set_mctrl(port, TIOCM_RTS); +} + +static int uart_get_info(struct uart_state *state, struct serial_struct *retinfo) +{ + struct uart_port *port = state->port; + struct serial_struct tmp; + + memset(&tmp, 0, sizeof(tmp)); + tmp.type = port->type; + tmp.line = port->line; + tmp.port = port->iobase; + if (HIGH_BITS_OFFSET) + tmp.port_high = (long) port->iobase >> HIGH_BITS_OFFSET; + tmp.irq = port->irq; + tmp.flags = port->flags; + tmp.xmit_fifo_size = port->fifosize; + tmp.baud_base = port->uartclk / 16; + tmp.close_delay = state->close_delay; + tmp.closing_wait = state->closing_wait; + tmp.custom_divisor = port->custom_divisor; + tmp.hub6 = port->hub6; + tmp.io_type = port->iotype; + tmp.iomem_reg_shift = port->regshift; + tmp.iomem_base = (void *)port->mapbase; + + if (copy_to_user(retinfo, &tmp, sizeof(*retinfo))) + return -EFAULT; + return 0; +} + +static int +uart_set_info(struct uart_state *state, struct serial_struct *newinfo) +{ + struct serial_struct new_serial; + struct uart_port *port = state->port; + unsigned long new_port; + unsigned int change_irq, change_port, old_flags; + unsigned int old_custom_divisor; + int retval = 0; + + if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) + return -EFAULT; + + new_port = new_serial.port; + if (HIGH_BITS_OFFSET) + new_port += (unsigned long) new_serial.port_high << HIGH_BITS_OFFSET; + + new_serial.irq = irq_canonicalize(new_serial.irq); + + /* + * This semaphore protects state->count. It is also + * very useful to prevent opens. Also, take the + * port configuration semaphore to make sure that a + * module insertion/removal doesn't change anything + * under us. + */ + down(&state->sem); + + change_irq = new_serial.irq != port->irq; + + /* + * Since changing the 'type' of the port changes its resource + * allocations, we should treat type changes the same as + * IO port changes. + */ + change_port = new_port != port->iobase || + (unsigned long)new_serial.iomem_base != port->mapbase || + new_serial.hub6 != port->hub6 || + new_serial.io_type != port->iotype || + new_serial.iomem_reg_shift != port->regshift || + new_serial.type != port->type; + + old_flags = port->flags; + old_custom_divisor = port->custom_divisor; + + if (!capable(CAP_SYS_ADMIN)) { + retval = -EPERM; + if (change_irq || change_port || + (new_serial.baud_base != port->uartclk / 16) || + (new_serial.close_delay != state->close_delay) || + (new_serial.closing_wait != state->closing_wait) || + (new_serial.xmit_fifo_size != port->fifosize) || + (((new_serial.flags ^ old_flags) & ~UPF_USR_MASK) != 0)) + goto exit; + port->flags = ((port->flags & ~UPF_USR_MASK) | + (new_serial.flags & UPF_USR_MASK)); + port->custom_divisor = new_serial.custom_divisor; + goto check_and_exit; + } + + /* + * Ask the low level driver to verify the settings. + */ + if (port->ops->verify_port) + retval = port->ops->verify_port(port, &new_serial); + + if ((new_serial.irq >= NR_IRQS) || (new_serial.irq < 0) || + (new_serial.baud_base < 9600)) + retval = -EINVAL; + + if (retval) + goto exit; + + if (change_port || change_irq) { + retval = -EBUSY; + + /* + * Make sure that we are the sole user of this port. + */ + if (uart_users(state) > 1) + goto exit; + + /* + * We need to shutdown the serial port at the old + * port/type/irq combination. + */ + uart_shutdown(state); + } + + if (change_port) { + unsigned long old_iobase, old_mapbase; + unsigned int old_type, old_iotype, old_hub6, old_shift; + + old_iobase = port->iobase; + old_mapbase = port->mapbase; + old_type = port->type; + old_hub6 = port->hub6; + old_iotype = port->iotype; + old_shift = port->regshift; + + /* + * Free and release old regions + */ + if (old_type != PORT_UNKNOWN) + port->ops->release_port(port); + + port->iobase = new_port; + port->type = new_serial.type; + port->hub6 = new_serial.hub6; + port->iotype = new_serial.io_type; + port->regshift = new_serial.iomem_reg_shift; + port->mapbase = (unsigned long)new_serial.iomem_base; + + /* + * Claim and map the new regions + */ + if (port->type != PORT_UNKNOWN) { + retval = port->ops->request_port(port); + } else { + /* Always success - Jean II */ + retval = 0; + } + + /* + * If we fail to request resources for the + * new port, try to restore the old settings. + */ + if (retval && old_type != PORT_UNKNOWN) { + port->iobase = old_iobase; + port->type = old_type; + port->hub6 = old_hub6; + port->iotype = old_iotype; + port->regshift = old_shift; + port->mapbase = old_mapbase; + retval = port->ops->request_port(port); + /* + * If we failed to restore the old settings, + * we fail like this. + */ + if (retval) + port->type = PORT_UNKNOWN; + + /* + * We failed anyway. + */ + retval = -EBUSY; + } + } + + port->irq = new_serial.irq; + port->uartclk = new_serial.baud_base * 16; + port->flags = (port->flags & ~UPF_CHANGE_MASK) | + (new_serial.flags & UPF_CHANGE_MASK); + port->custom_divisor = new_serial.custom_divisor; + state->close_delay = new_serial.close_delay * HZ / 100; + state->closing_wait = new_serial.closing_wait * HZ / 100; + port->fifosize = new_serial.xmit_fifo_size; + if (state->info->tty) + state->info->tty->low_latency = + (port->flags & UPF_LOW_LATENCY) ? 1 : 0; + + check_and_exit: + retval = 0; + if (port->type == PORT_UNKNOWN) + goto exit; + if (state->info->flags & UIF_INITIALIZED) { + if (((old_flags ^ port->flags) & UPF_SPD_MASK) || + old_custom_divisor != port->custom_divisor) { + /* If they're setting up a custom divisor or speed, + * instead of clearing it, then bitch about it. No + * need to rate-limit; it's CAP_SYS_ADMIN only. */ + if (port->flags & UPF_SPD_MASK) { + printk(KERN_NOTICE "%s sets custom speed on %s%d. This is deprecated.\n", + current->comm, state->info->tty->driver->name, + state->port->line); + } + uart_change_speed(state, NULL); + } + } else + retval = uart_startup(state, 1); + exit: + up(&state->sem); + return retval; +} + + +/* + * uart_get_lsr_info - get line status register info. + * Note: uart_ioctl protects us against hangups. + */ +static int uart_get_lsr_info(struct uart_state *state, unsigned int *value) +{ + struct uart_port *port = state->port; + unsigned int result; + + result = port->ops->tx_empty(port); + + /* + * If we're about to load something into the transmit + * register, we'll pretend the transmitter isn't empty to + * avoid a race condition (depending on when the transmit + * interrupt happens). + */ + if (port->x_char || + ((uart_circ_chars_pending(&state->info->xmit) > 0) && + !state->info->tty->stopped && !state->info->tty->hw_stopped)) + result &= ~TIOCSER_TEMT; + + return put_user(result, value); +} + +static int uart_tiocmget(struct tty_struct *tty, struct file *file) +{ + struct uart_state *state = tty->driver_data; + struct uart_port *port = state->port; + int result = -EIO; + + down(&state->sem); + if ((!file || !tty_hung_up_p(file)) && + !(tty->flags & (1 << TTY_IO_ERROR))) { + result = port->mctrl; + result |= port->ops->get_mctrl(port); + } + up(&state->sem); + + return result; +} + +static int +uart_tiocmset(struct tty_struct *tty, struct file *file, + unsigned int set, unsigned int clear) +{ + struct uart_state *state = tty->driver_data; + struct uart_port *port = state->port; + int ret = -EIO; + + down(&state->sem); + if ((!file || !tty_hung_up_p(file)) && + !(tty->flags & (1 << TTY_IO_ERROR))) { + uart_update_mctrl(port, set, clear); + ret = 0; + } + up(&state->sem); + return ret; +} + +static void uart_break_ctl(struct tty_struct *tty, int break_state) +{ + struct uart_state *state = tty->driver_data; + struct uart_port *port = state->port; + + BUG_ON(!kernel_locked()); + + down(&state->sem); + + if (port->type != PORT_UNKNOWN) + port->ops->break_ctl(port, break_state); + + up(&state->sem); +} + +static int uart_do_autoconfig(struct uart_state *state) +{ + struct uart_port *port = state->port; + int flags, ret; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + /* + * Take the per-port semaphore. This prevents count from + * changing, and hence any extra opens of the port while + * we're auto-configuring. + */ + if (down_interruptible(&state->sem)) + return -ERESTARTSYS; + + ret = -EBUSY; + if (uart_users(state) == 1) { + uart_shutdown(state); + + /* + * If we already have a port type configured, + * we must release its resources. + */ + if (port->type != PORT_UNKNOWN) + port->ops->release_port(port); + + flags = UART_CONFIG_TYPE; + if (port->flags & UPF_AUTO_IRQ) + flags |= UART_CONFIG_IRQ; + + /* + * This will claim the ports resources if + * a port is found. + */ + port->ops->config_port(port, flags); + + ret = uart_startup(state, 1); + } + up(&state->sem); + return ret; +} + +/* + * Wait for any of the 4 modem inputs (DCD,RI,DSR,CTS) to change + * - mask passed in arg for lines of interest + * (use |'ed TIOCM_RNG/DSR/CD/CTS for masking) + * Caller should use TIOCGICOUNT to see which one it was + */ +static int +uart_wait_modem_status(struct uart_state *state, unsigned long arg) +{ + struct uart_port *port = state->port; + DECLARE_WAITQUEUE(wait, current); + struct uart_icount cprev, cnow; + int ret; + + /* + * note the counters on entry + */ + spin_lock_irq(&port->lock); + memcpy(&cprev, &port->icount, sizeof(struct uart_icount)); + + /* + * Force modem status interrupts on + */ + port->ops->enable_ms(port); + spin_unlock_irq(&port->lock); + + add_wait_queue(&state->info->delta_msr_wait, &wait); + for (;;) { + spin_lock_irq(&port->lock); + memcpy(&cnow, &port->icount, sizeof(struct uart_icount)); + spin_unlock_irq(&port->lock); + + set_current_state(TASK_INTERRUPTIBLE); + + if (((arg & TIOCM_RNG) && (cnow.rng != cprev.rng)) || + ((arg & TIOCM_DSR) && (cnow.dsr != cprev.dsr)) || + ((arg & TIOCM_CD) && (cnow.dcd != cprev.dcd)) || + ((arg & TIOCM_CTS) && (cnow.cts != cprev.cts))) { + ret = 0; + break; + } + + schedule(); + + /* see if a signal did it */ + if (signal_pending(current)) { + ret = -ERESTARTSYS; + break; + } + + cprev = cnow; + } + + current->state = TASK_RUNNING; + remove_wait_queue(&state->info->delta_msr_wait, &wait); + + return ret; +} + +/* + * Get counter of input serial line interrupts (DCD,RI,DSR,CTS) + * Return: write counters to the user passed counter struct + * NB: both 1->0 and 0->1 transitions are counted except for + * RI where only 0->1 is counted. + */ +static int +uart_get_count(struct uart_state *state, struct serial_icounter_struct *icnt) +{ + struct serial_icounter_struct icount; + struct uart_icount cnow; + struct uart_port *port = state->port; + + spin_lock_irq(&port->lock); + memcpy(&cnow, &port->icount, sizeof(struct uart_icount)); + spin_unlock_irq(&port->lock); + + icount.cts = cnow.cts; + icount.dsr = cnow.dsr; + icount.rng = cnow.rng; + icount.dcd = cnow.dcd; + icount.rx = cnow.rx; + icount.tx = cnow.tx; + icount.frame = cnow.frame; + icount.overrun = cnow.overrun; + icount.parity = cnow.parity; + icount.brk = cnow.brk; + icount.buf_overrun = cnow.buf_overrun; + + return copy_to_user(icnt, &icount, sizeof(icount)) ? -EFAULT : 0; +} + +/* + * Called via sys_ioctl under the BKL. We can use spin_lock_irq() here. + */ +static int +uart_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, + unsigned long arg) +{ + struct uart_state *state = tty->driver_data; + int ret = -ENOIOCTLCMD; + + BUG_ON(!kernel_locked()); + + /* + * These ioctls don't rely on the hardware to be present. + */ + switch (cmd) { + case TIOCGSERIAL: + ret = uart_get_info(state, (struct serial_struct *)arg); + break; + + case TIOCSSERIAL: + ret = uart_set_info(state, (struct serial_struct *)arg); + break; + + case TIOCSERCONFIG: + ret = uart_do_autoconfig(state); + break; + + case TIOCSERGWILD: /* obsolete */ + case TIOCSERSWILD: /* obsolete */ + ret = 0; + break; + } + + if (ret != -ENOIOCTLCMD) + goto out; + + if (tty->flags & (1 << TTY_IO_ERROR)) { + ret = -EIO; + goto out; + } + + /* + * The following should only be used when hardware is present. + */ + switch (cmd) { + case TIOCMIWAIT: + ret = uart_wait_modem_status(state, arg); + break; + + case TIOCGICOUNT: + ret = uart_get_count(state, (struct serial_icounter_struct *)arg); + break; + } + + if (ret != -ENOIOCTLCMD) + goto out; + + down(&state->sem); + + if (tty_hung_up_p(filp)) { + ret = -EIO; + goto out_up; + } + + /* + * All these rely on hardware being present and need to be + * protected against the tty being hung up. + */ + switch (cmd) { + case TIOCSERGETLSR: /* Get line status register */ + ret = uart_get_lsr_info(state, (unsigned int *)arg); + break; + + default: { + struct uart_port *port = state->port; + if (port->ops->ioctl) + ret = port->ops->ioctl(port, cmd, arg); + break; + } + } + out_up: + up(&state->sem); + out: + return ret; +} + +static void uart_set_termios(struct tty_struct *tty, struct termios *old_termios) +{ + struct uart_state *state = tty->driver_data; + unsigned long flags; + unsigned int cflag = tty->termios->c_cflag; + + BUG_ON(!kernel_locked()); + + /* + * These are the bits that are used to setup various + * flags in the low level driver. + */ +#define RELEVANT_IFLAG(iflag) ((iflag) & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK)) + + if ((cflag ^ old_termios->c_cflag) == 0 && + RELEVANT_IFLAG(tty->termios->c_iflag ^ old_termios->c_iflag) == 0) + return; + + uart_change_speed(state, old_termios); + + /* Handle transition to B0 status */ + if ((old_termios->c_cflag & CBAUD) && !(cflag & CBAUD)) + uart_clear_mctrl(state->port, TIOCM_RTS | TIOCM_DTR); + + /* Handle transition away from B0 status */ + if (!(old_termios->c_cflag & CBAUD) && (cflag & CBAUD)) { + unsigned int mask = TIOCM_DTR; + if (!(cflag & CRTSCTS) || + !test_bit(TTY_THROTTLED, &tty->flags)) + mask |= TIOCM_RTS; + uart_set_mctrl(state->port, mask); + } + + /* Handle turning off CRTSCTS */ + if ((old_termios->c_cflag & CRTSCTS) && !(cflag & CRTSCTS)) { + spin_lock_irqsave(&state->port->lock, flags); + tty->hw_stopped = 0; + __uart_start(tty); + spin_unlock_irqrestore(&state->port->lock, flags); + } + +#if 0 + /* + * No need to wake up processes in open wait, since they + * sample the CLOCAL flag once, and don't recheck it. + * XXX It's not clear whether the current behavior is correct + * or not. Hence, this may change..... + */ + if (!(old_termios->c_cflag & CLOCAL) && + (tty->termios->c_cflag & CLOCAL)) + wake_up_interruptible(&state->info->open_wait); +#endif +} + +/* + * In 2.4.5, calls to this will be serialized via the BKL in + * linux/drivers/char/tty_io.c:tty_release() + * linux/drivers/char/tty_io.c:do_tty_handup() + */ +static void uart_close(struct tty_struct *tty, struct file *filp) +{ + struct uart_state *state = tty->driver_data; + struct uart_port *port = state->port; + + BUG_ON(!kernel_locked()); + DPRINTK("uart_close(%d) called\n", port->line); + + down(&state->sem); + + if (tty_hung_up_p(filp)) + goto done; + + if ((tty->count == 1) && (state->count != 1)) { + /* + * Uh, oh. tty->count is 1, which means that the tty + * structure will be freed. state->count should always + * be one in these conditions. If it's greater than + * one, we've got real problems, since it means the + * serial port won't be shutdown. + */ + printk("uart_close: bad serial port count; tty->count is 1, " + "state->count is %d\n", state->count); + state->count = 1; + } + if (--state->count < 0) { + printk("rs_close: bad serial port count for %s: %d\n", + tty->name, state->count); + state->count = 0; + } + if (state->count) + goto done; + + /* + * Now we wait for the transmit buffer to clear; and we notify + * the line discipline to only process XON/XOFF characters by + * setting tty->closing. + */ + tty->closing = 1; + + if (state->closing_wait != USF_CLOSING_WAIT_NONE) + tty_wait_until_sent(tty, state->closing_wait); + + /* + * At this point, we stop accepting input. To do this, we + * disable the receive line status interrupts. + */ + if (state->info->flags & UIF_INITIALIZED) { + unsigned long flags; + spin_lock_irqsave(&port->lock, flags); + port->ops->stop_rx(port); + spin_unlock_irqrestore(&port->lock, flags); + /* + * Before we drop DTR, make sure the UART transmitter + * has completely drained; this is especially + * important if there is a transmit FIFO! + */ + uart_wait_until_sent(tty, port->timeout); + } + + uart_shutdown(state); + uart_flush_buffer(tty); + if (tty->ldisc.flush_buffer) + tty->ldisc.flush_buffer(tty); + tty->closing = 0; + state->info->tty = NULL; + + if (state->info->blocked_open) { + if (state->close_delay) { + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(state->close_delay); + set_current_state(TASK_RUNNING); + } + } else if (!uart_console(port)) { + uart_change_pm(state, 3); + } + + /* + * Wake up anyone trying to open this port. + */ + state->info->flags &= ~UIF_NORMAL_ACTIVE; + wake_up_interruptible(&state->info->open_wait); + + done: + up(&state->sem); +} + +static void uart_wait_until_sent(struct tty_struct *tty, int timeout) +{ + struct uart_state *state = tty->driver_data; + struct uart_port *port = state->port; + unsigned long char_time, expire; + + BUG_ON(!kernel_locked()); + + if (port->type == PORT_UNKNOWN || port->fifosize == 0) + return; + + /* + * Set the check interval to be 1/5 of the estimated time to + * send a single character, and make it at least 1. The check + * interval should also be less than the timeout. + * + * Note: we have to use pretty tight timings here to satisfy + * the NIST-PCTS. + */ + char_time = (port->timeout - HZ/50) / port->fifosize; + char_time = char_time / 5; + if (char_time == 0) + char_time = 1; + if (timeout && timeout < char_time) + char_time = timeout; + + /* + * If the transmitter hasn't cleared in twice the approximate + * amount of time to send the entire FIFO, it probably won't + * ever clear. This assumes the UART isn't doing flow + * control, which is currently the case. Hence, if it ever + * takes longer than port->timeout, this is probably due to a + * UART bug of some kind. So, we clamp the timeout parameter at + * 2*port->timeout. + */ + if (timeout == 0 || timeout > 2 * port->timeout) + timeout = 2 * port->timeout; + + expire = jiffies + timeout; + + DPRINTK("uart_wait_until_sent(%d), jiffies=%lu, expire=%lu...\n", + port->line, jiffies, expire); + + /* + * Check whether the transmitter is empty every 'char_time'. + * 'timeout' / 'expire' give us the maximum amount of time + * we wait. + */ + while (!port->ops->tx_empty(port)) { + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(char_time); + if (signal_pending(current)) + break; + if (time_after(jiffies, expire)) + break; + } + set_current_state(TASK_RUNNING); /* might not be needed */ +} + +/* + * This is called with the BKL held in + * linux/drivers/char/tty_io.c:do_tty_hangup() + * We're called from the eventd thread, so we can sleep for + * a _short_ time only. + */ +static void uart_hangup(struct tty_struct *tty) +{ + struct uart_state *state = tty->driver_data; + + BUG_ON(!kernel_locked()); + DPRINTK("uart_hangup(%d)\n", state->port->line); + + down(&state->sem); + if (state->info && state->info->flags & UIF_NORMAL_ACTIVE) { + uart_flush_buffer(tty); + uart_shutdown(state); + state->count = 0; + state->info->flags &= ~UIF_NORMAL_ACTIVE; + state->info->tty = NULL; + wake_up_interruptible(&state->info->open_wait); + wake_up_interruptible(&state->info->delta_msr_wait); + } + up(&state->sem); +} + +/* + * Copy across the serial console cflag setting into the termios settings + * for the initial open of the port. This allows continuity between the + * kernel settings, and the settings init adopts when it opens the port + * for the first time. + */ +static void uart_update_termios(struct uart_state *state) +{ + struct tty_struct *tty = state->info->tty; + struct uart_port *port = state->port; + + if (uart_console(port) && port->cons->cflag) { + tty->termios->c_cflag = port->cons->cflag; + port->cons->cflag = 0; + } + + /* + * If the device failed to grab its irq resources, + * or some other error occurred, don't try to talk + * to the port hardware. + */ + if (!(tty->flags & (1 << TTY_IO_ERROR))) { + /* + * Make termios settings take effect. + */ + uart_change_speed(state, NULL); + + /* + * And finally enable the RTS and DTR signals. + */ + if (tty->termios->c_cflag & CBAUD) + uart_set_mctrl(port, TIOCM_DTR | TIOCM_RTS); + } +} + +/* + * Block the open until the port is ready. We must be called with + * the per-port semaphore held. + */ +static int +uart_block_til_ready(struct file *filp, struct uart_state *state) +{ + DECLARE_WAITQUEUE(wait, current); + struct uart_info *info = state->info; + struct uart_port *port = state->port; + + info->blocked_open++; + state->count--; + + add_wait_queue(&info->open_wait, &wait); + while (1) { + set_current_state(TASK_INTERRUPTIBLE); + + /* + * If we have been hung up, tell userspace/restart open. + */ + if (tty_hung_up_p(filp) || info->tty == NULL) + break; + + /* + * If the port has been closed, tell userspace/restart open. + */ + if (!(info->flags & UIF_INITIALIZED)) + break; + + /* + * If non-blocking mode is set, or CLOCAL mode is set, + * we don't want to wait for the modem status lines to + * indicate that the port is ready. + * + * Also, if the port is not enabled/configured, we want + * to allow the open to succeed here. Note that we will + * have set TTY_IO_ERROR for a non-existant port. + */ + if ((filp->f_flags & O_NONBLOCK) || + (info->tty->termios->c_cflag & CLOCAL) || + (info->tty->flags & (1 << TTY_IO_ERROR))) { + break; + } + + /* + * Set DTR to allow modem to know we're waiting. Do + * not set RTS here - we want to make sure we catch + * the data from the modem. + */ + if (info->tty->termios->c_cflag & CBAUD) + uart_set_mctrl(port, TIOCM_DTR); + + /* + * and wait for the carrier to indicate that the + * modem is ready for us. + */ + if (port->ops->get_mctrl(port) & TIOCM_CAR) + break; + + up(&state->sem); + schedule(); + down(&state->sem); + + if (signal_pending(current)) + break; + } + set_current_state(TASK_RUNNING); + remove_wait_queue(&info->open_wait, &wait); + + state->count++; + info->blocked_open--; + + if (signal_pending(current)) + return -ERESTARTSYS; + + if (!info->tty || tty_hung_up_p(filp)) + return -EAGAIN; + + return 0; +} + +static struct uart_state *uart_get(struct uart_driver *drv, int line) +{ + struct uart_state *state; + + down(&port_sem); + state = drv->state + line; + if (down_interruptible(&state->sem)) { + state = ERR_PTR(-ERESTARTSYS); + goto out; + } + + state->count++; + if (!state->port) { + state->count--; + up(&state->sem); + state = ERR_PTR(-ENXIO); + goto out; + } + + if (!state->info) { + state->info = kmalloc(sizeof(struct uart_info), GFP_KERNEL); + if (state->info) { + memset(state->info, 0, sizeof(struct uart_info)); + init_waitqueue_head(&state->info->open_wait); + init_waitqueue_head(&state->info->delta_msr_wait); + + /* + * Link the info into the other structures. + */ + state->port->info = state->info; + + tasklet_init(&state->info->tlet, uart_tasklet_action, + (unsigned long)state); + } else { + state->count--; + up(&state->sem); + state = ERR_PTR(-ENOMEM); + } + } + + out: + up(&port_sem); + return state; +} + +/* + * In 2.4.5, calls to uart_open are serialised by the BKL in + * linux/fs/devices.c:chrdev_open() + * Note that if this fails, then uart_close() _will_ be called. + * + * In time, we want to scrap the "opening nonpresent ports" + * behaviour and implement an alternative way for setserial + * to set base addresses/ports/types. This will allow us to + * get rid of a certain amount of extra tests. + */ +static int uart_open(struct tty_struct *tty, struct file *filp) +{ + struct uart_driver *drv = (struct uart_driver *)tty->driver->driver_state; + struct uart_state *state; + int retval, line = tty->index; + + BUG_ON(!kernel_locked()); + DPRINTK("uart_open(%d) called\n", line); + + /* + * tty->driver->num won't change, so we won't fail here with + * tty->driver_data set to something non-NULL (and therefore + * we won't get caught by uart_close()). + */ + retval = -ENODEV; + if (line >= tty->driver->num) + goto fail; + + /* + * We take the semaphore inside uart_get to guarantee that we won't + * be re-entered while allocating the info structure, or while we + * request any IRQs that the driver may need. This also has the nice + * side-effect that it delays the action of uart_hangup, so we can + * guarantee that info->tty will always contain something reasonable. + */ + state = uart_get(drv, line); + if (IS_ERR(state)) { + retval = PTR_ERR(state); + goto fail; + } + + /* + * Once we set tty->driver_data here, we are guaranteed that + * uart_close() will decrement the driver module use count. + * Any failures from here onwards should not touch the count. + */ + tty->driver_data = state; + tty->low_latency = (state->port->flags & UPF_LOW_LATENCY) ? 1 : 0; + tty->alt_speed = 0; + state->info->tty = tty; + + /* + * If the port is in the middle of closing, bail out now. + */ + if (tty_hung_up_p(filp)) { + retval = -EAGAIN; + state->count--; + up(&state->sem); + goto fail; + } + + /* + * Make sure the device is in D0 state. + */ + if (state->count == 1) + uart_change_pm(state, 0); + + /* + * Start up the serial port. + */ + retval = uart_startup(state, 0); + + /* + * If we succeeded, wait until the port is ready. + */ + if (retval == 0) + retval = uart_block_til_ready(filp, state); + up(&state->sem); + + /* + * If this is the first open to succeed, adjust things to suit. + */ + if (retval == 0 && !(state->info->flags & UIF_NORMAL_ACTIVE)) { + state->info->flags |= UIF_NORMAL_ACTIVE; + + uart_update_termios(state); + } + + fail: + return retval; +} + +static const char *uart_type(struct uart_port *port) +{ + const char *str = NULL; + + if (port->ops->type) + str = port->ops->type(port); + + if (!str) + str = "unknown"; + + return str; +} + +#ifdef CONFIG_PROC_FS + +static int uart_line_info(char *buf, struct uart_driver *drv, int i) +{ + struct uart_state *state = drv->state + i; + struct uart_port *port = state->port; + char stat_buf[32]; + unsigned int status; + int ret; + + if (!port) + return 0; + + ret = sprintf(buf, "%d: uart:%s port:%08X irq:%d", + port->line, uart_type(port), + port->iobase, port->irq); + + if (port->type == PORT_UNKNOWN) { + strcat(buf, "\n"); + return ret + 1; + } + + if(capable(CAP_SYS_ADMIN)) + { + status = port->ops->get_mctrl(port); + + ret += sprintf(buf + ret, " tx:%d rx:%d", + port->icount.tx, port->icount.rx); + if (port->icount.frame) + ret += sprintf(buf + ret, " fe:%d", + port->icount.frame); + if (port->icount.parity) + ret += sprintf(buf + ret, " pe:%d", + port->icount.parity); + if (port->icount.brk) + ret += sprintf(buf + ret, " brk:%d", + port->icount.brk); + if (port->icount.overrun) + ret += sprintf(buf + ret, " oe:%d", + port->icount.overrun); + +#define INFOBIT(bit,str) \ + if (port->mctrl & (bit)) \ + strncat(stat_buf, (str), sizeof(stat_buf) - \ + strlen(stat_buf) - 2) +#define STATBIT(bit,str) \ + if (status & (bit)) \ + strncat(stat_buf, (str), sizeof(stat_buf) - \ + strlen(stat_buf) - 2) + + stat_buf[0] = '\0'; + stat_buf[1] = '\0'; + INFOBIT(TIOCM_RTS, "|RTS"); + STATBIT(TIOCM_CTS, "|CTS"); + INFOBIT(TIOCM_DTR, "|DTR"); + STATBIT(TIOCM_DSR, "|DSR"); + STATBIT(TIOCM_CAR, "|CD"); + STATBIT(TIOCM_RNG, "|RI"); + if (stat_buf[0]) + stat_buf[0] = ' '; + strcat(stat_buf, "\n"); + + ret += sprintf(buf + ret, stat_buf); + } +#undef STATBIT +#undef INFOBIT + return ret; +} + +static int uart_read_proc(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + struct tty_driver *ttydrv = data; + struct uart_driver *drv = ttydrv->driver_state; + int i, len = 0, l; + off_t begin = 0; + + len += sprintf(page, "serinfo:1.0 driver%s%s revision:%s\n", + "", "", ""); + for (i = 0; i < drv->nr && len < PAGE_SIZE - 96; i++) { + l = uart_line_info(page + len, drv, i); + len += l; + if (len + begin > off + count) + goto done; + if (len + begin < off) { + begin += len; + len = 0; + } + } + *eof = 1; + done: + if (off >= len + begin) + return 0; + *start = page + (off - begin); + return (count < begin + len - off) ? count : (begin + len - off); +} +#endif + +#ifdef CONFIG_SERIAL_CORE_CONSOLE +/* + * Check whether an invalid uart number has been specified, and + * if so, search for the first available port that does have + * console support. + */ +struct uart_port * __init +uart_get_console(struct uart_port *ports, int nr, struct console *co) +{ + int idx = co->index; + + if (idx < 0 || idx >= nr || (ports[idx].iobase == 0 && + ports[idx].membase == NULL)) + for (idx = 0; idx < nr; idx++) + if (ports[idx].iobase != 0 || + ports[idx].membase != NULL) + break; + + co->index = idx; + + return ports + idx; +} + +/** + * uart_parse_options - Parse serial port baud/parity/bits/flow contro. + * @options: pointer to option string + * @baud: pointer to an 'int' variable for the baud rate. + * @parity: pointer to an 'int' variable for the parity. + * @bits: pointer to an 'int' variable for the number of data bits. + * @flow: pointer to an 'int' variable for the flow control character. + * + * uart_parse_options decodes a string containing the serial console + * options. The format of the string is , + * eg: 115200n8r + */ +void __init +uart_parse_options(char *options, int *baud, int *parity, int *bits, int *flow) +{ + char *s = options; + + *baud = simple_strtoul(s, NULL, 10); + while (*s >= '0' && *s <= '9') + s++; + if (*s) + *parity = *s++; + if (*s) + *bits = *s++ - '0'; + if (*s) + *flow = *s; +} + +struct baud_rates { + unsigned int rate; + unsigned int cflag; +}; + +static struct baud_rates baud_rates[] = { + { 921600, B921600 }, + { 460800, B460800 }, + { 230400, B230400 }, + { 115200, B115200 }, + { 57600, B57600 }, + { 38400, B38400 }, + { 19200, B19200 }, + { 9600, B9600 }, + { 4800, B4800 }, + { 2400, B2400 }, + { 1200, B1200 }, + { 0, B38400 } +}; + +/** + * uart_set_options - setup the serial console parameters + * @port: pointer to the serial ports uart_port structure + * @co: console pointer + * @baud: baud rate + * @parity: parity character - 'n' (none), 'o' (odd), 'e' (even) + * @bits: number of data bits + * @flow: flow control character - 'r' (rts) + */ +int __init +uart_set_options(struct uart_port *port, struct console *co, + int baud, int parity, int bits, int flow) +{ + struct termios termios; + int i; + + memset(&termios, 0, sizeof(struct termios)); + + termios.c_cflag = CREAD | HUPCL | CLOCAL; + + /* + * Construct a cflag setting. + */ + for (i = 0; baud_rates[i].rate; i++) + if (baud_rates[i].rate <= baud) + break; + + termios.c_cflag |= baud_rates[i].cflag; + + if (bits == 7) + termios.c_cflag |= CS7; + else + termios.c_cflag |= CS8; + + switch (parity) { + case 'o': case 'O': + termios.c_cflag |= PARODD; + /*fall through*/ + case 'e': case 'E': + termios.c_cflag |= PARENB; + break; + } + + if (flow == 'r') + termios.c_cflag |= CRTSCTS; + + port->ops->set_termios(port, &termios, NULL); + co->cflag = termios.c_cflag; + + return 0; +} +#endif /* CONFIG_SERIAL_CORE_CONSOLE */ + +static void uart_change_pm(struct uart_state *state, int pm_state) +{ + struct uart_port *port = state->port; + if (port->ops->pm) + port->ops->pm(port, pm_state, state->pm_state); + state->pm_state = pm_state; +} + +int uart_suspend_port(struct uart_driver *drv, struct uart_port *port) +{ + struct uart_state *state = drv->state + port->line; + + down(&state->sem); + + if (state->info && state->info->flags & UIF_INITIALIZED) { + struct uart_ops *ops = port->ops; + + spin_lock_irq(&port->lock); + ops->stop_tx(port, 0); + ops->set_mctrl(port, 0); + ops->stop_rx(port); + spin_unlock_irq(&port->lock); + + /* + * Wait for the transmitter to empty. + */ + while (!ops->tx_empty(port)) { + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(10*HZ/1000); + } + set_current_state(TASK_RUNNING); + + ops->shutdown(port); + } + + /* + * Disable the console device before suspending. + */ + if (uart_console(port)) + port->cons->flags &= ~CON_ENABLED; + + uart_change_pm(state, 3); + + up(&state->sem); + + return 0; +} + +int uart_resume_port(struct uart_driver *drv, struct uart_port *port) +{ + struct uart_state *state = drv->state + port->line; + + down(&state->sem); + + uart_change_pm(state, 0); + + /* + * Re-enable the console device after suspending. + */ + if (uart_console(port)) { + uart_change_speed(state, NULL); + port->cons->flags |= CON_ENABLED; + } + + if (state->info && state->info->flags & UIF_INITIALIZED) { + struct uart_ops *ops = port->ops; + + ops->set_mctrl(port, 0); + ops->startup(port); + uart_change_speed(state, NULL); + spin_lock_irq(&port->lock); + ops->set_mctrl(port, port->mctrl); + ops->start_tx(port, 0); + spin_unlock_irq(&port->lock); + } + + up(&state->sem); + + return 0; +} + +static inline void +uart_report_port(struct uart_driver *drv, struct uart_port *port) +{ + printk("%s%d", drv->dev_name, port->line); + printk(" at "); + switch (port->iotype) { + case UPIO_PORT: + printk("I/O 0x%x", port->iobase); + break; + case UPIO_HUB6: + printk("I/O 0x%x offset 0x%x", port->iobase, port->hub6); + break; + case UPIO_MEM: + printk("MMIO 0x%lx", port->mapbase); + break; + } + printk(" (irq = %d) is a %s\n", port->irq, uart_type(port)); +} + +static void +uart_configure_port(struct uart_driver *drv, struct uart_state *state, + struct uart_port *port) +{ + unsigned int flags; + + /* + * If there isn't a port here, don't do anything further. + */ + if (!port->iobase && !port->mapbase && !port->membase) + return; + + /* + * Now do the auto configuration stuff. Note that config_port + * is expected to claim the resources and map the port for us. + */ + flags = UART_CONFIG_TYPE; + if (port->flags & UPF_AUTO_IRQ) + flags |= UART_CONFIG_IRQ; + if (port->flags & UPF_BOOT_AUTOCONF) { + port->type = PORT_UNKNOWN; + port->ops->config_port(port, flags); + } + + if (port->type != PORT_UNKNOWN) { + unsigned long flags; + + uart_report_port(drv, port); + + /* + * Ensure that the modem control lines are de-activated. + * We probably don't need a spinlock around this, but + */ + spin_lock_irqsave(&port->lock, flags); + port->ops->set_mctrl(port, 0); + spin_unlock_irqrestore(&port->lock, flags); + + /* + * Power down all ports by default, except the + * console if we have one. + */ + if (!uart_console(port)) + uart_change_pm(state, 3); + } +} + +/* + * This reverses the effects of uart_configure_port, hanging up the + * port before removal. + */ +static void +uart_unconfigure_port(struct uart_driver *drv, struct uart_state *state) +{ + struct uart_port *port = state->port; + struct uart_info *info = state->info; + + if (info && info->tty) + tty_vhangup(info->tty); + + down(&state->sem); + + state->info = NULL; + + /* + * Free the port IO and memory resources, if any. + */ + if (port->type != PORT_UNKNOWN) + port->ops->release_port(port); + + /* + * Indicate that there isn't a port here anymore. + */ + port->type = PORT_UNKNOWN; + + /* + * Kill the tasklet, and free resources. + */ + if (info) { + tasklet_kill(&info->tlet); + kfree(info); + } + + up(&state->sem); +} + +static struct tty_operations uart_ops = { + .open = uart_open, + .close = uart_close, + .write = uart_write, + .put_char = uart_put_char, + .flush_chars = uart_flush_chars, + .write_room = uart_write_room, + .chars_in_buffer= uart_chars_in_buffer, + .flush_buffer = uart_flush_buffer, + .ioctl = uart_ioctl, + .throttle = uart_throttle, + .unthrottle = uart_unthrottle, + .send_xchar = uart_send_xchar, + .set_termios = uart_set_termios, + .stop = uart_stop, + .start = uart_start, + .hangup = uart_hangup, + .break_ctl = uart_break_ctl, + .wait_until_sent= uart_wait_until_sent, +#ifdef CONFIG_PROC_FS + .read_proc = uart_read_proc, +#endif + .tiocmget = uart_tiocmget, + .tiocmset = uart_tiocmset, +}; + +/** + * uart_register_driver - register a driver with the uart core layer + * @drv: low level driver structure + * + * Register a uart driver with the core driver. We in turn register + * with the tty layer, and initialise the core driver per-port state. + * + * We have a proc file in /proc/tty/driver which is named after the + * normal driver. + * + * drv->port should be NULL, and the per-port structures should be + * registered using uart_add_one_port after this call has succeeded. + */ +int uart_register_driver(struct uart_driver *drv) +{ + struct tty_driver *normal = NULL; + int i, retval; + + BUG_ON(drv->state); + + /* + * Maybe we should be using a slab cache for this, especially if + * we have a large number of ports to handle. + */ + drv->state = kmalloc(sizeof(struct uart_state) * drv->nr, GFP_KERNEL); + retval = -ENOMEM; + if (!drv->state) + goto out; + + memset(drv->state, 0, sizeof(struct uart_state) * drv->nr); + + normal = alloc_tty_driver(drv->nr); + if (!normal) + goto out; + + drv->tty_driver = normal; + + normal->owner = drv->owner; + normal->driver_name = drv->driver_name; + normal->devfs_name = drv->devfs_name; + normal->name = drv->dev_name; + normal->major = drv->major; + normal->minor_start = drv->minor; + normal->type = TTY_DRIVER_TYPE_SERIAL; + normal->subtype = SERIAL_TYPE_NORMAL; + normal->init_termios = tty_std_termios; + normal->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; + normal->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; + normal->driver_state = drv; + tty_set_operations(normal, &uart_ops); + + /* + * Initialise the UART state(s). + */ + for (i = 0; i < drv->nr; i++) { + struct uart_state *state = drv->state + i; + + state->close_delay = 5 * HZ / 10; + state->closing_wait = 30 * HZ; + + init_MUTEX(&state->sem); + } + + retval = tty_register_driver(normal); + out: + if (retval < 0) { + put_tty_driver(normal); + kfree(drv->state); + } + return retval; +} + +/** + * uart_unregister_driver - remove a driver from the uart core layer + * @drv: low level driver structure + * + * Remove all references to a driver from the core driver. The low + * level driver must have removed all its ports via the + * uart_remove_one_port() if it registered them with uart_add_one_port(). + * (ie, drv->port == NULL) + */ +void uart_unregister_driver(struct uart_driver *drv) +{ + struct tty_driver *p = drv->tty_driver; + tty_unregister_driver(p); + put_tty_driver(p); + kfree(drv->state); + drv->tty_driver = NULL; +} + +struct tty_driver *uart_console_device(struct console *co, int *index) +{ + struct uart_driver *p = co->data; + *index = co->index; + return p->tty_driver; +} + +/** + * uart_add_one_port - attach a driver-defined port structure + * @drv: pointer to the uart low level driver structure for this port + * @port: uart port structure to use for this port. + * + * This allows the driver to register its own uart_port structure + * with the core driver. The main purpose is to allow the low + * level uart drivers to expand uart_port, rather than having yet + * more levels of structures. + */ +int uart_add_one_port(struct uart_driver *drv, struct uart_port *port) +{ + struct uart_state *state; + int ret = 0; + + BUG_ON(in_interrupt()); + + if (port->line >= drv->nr) + return -EINVAL; + + state = drv->state + port->line; + + down(&port_sem); + if (state->port) { + ret = -EINVAL; + goto out; + } + + state->port = port; + + spin_lock_init(&port->lock); + port->cons = drv->cons; + port->info = state->info; + + uart_configure_port(drv, state, port); + + /* + * Register the port whether it's detected or not. This allows + * setserial to be used to alter this ports parameters. + */ + tty_register_device(drv->tty_driver, port->line, NULL); + + out: + up(&port_sem); + + return ret; +} + +/** + * uart_remove_one_port - detach a driver defined port structure + * @drv: pointer to the uart low level driver structure for this port + * @port: uart port structure for this port + * + * This unhooks (and hangs up) the specified port structure from the + * core driver. No further calls will be made to the low-level code + * for this port. + */ +int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port) +{ + struct uart_state *state = drv->state + port->line; + + BUG_ON(in_interrupt()); + + if (state->port != port) + printk(KERN_ALERT "Removing wrong port: %p != %p\n", + state->port, port); + + down(&port_sem); + + /* + * Remove the devices from devfs + */ + tty_unregister_device(drv->tty_driver, port->line); + + uart_unconfigure_port(drv, state); + state->port = NULL; + up(&port_sem); + + return 0; +} + +/* + * Are the two ports equivalent? + */ +static int uart_match_port(struct uart_port *port1, struct uart_port *port2) +{ + if (port1->iotype != port2->iotype) + return 0; + + switch (port1->iotype) { + case UPIO_PORT: + return (port1->iobase == port2->iobase); + case UPIO_HUB6: + return (port1->iobase == port2->iobase) && + (port1->hub6 == port2->hub6); + case UPIO_MEM: + return (port1->membase == port2->membase); + } + return 0; +} + +/* + * Try to find an unused uart_state slot for a port. + */ +static struct uart_state * +uart_find_match_or_unused(struct uart_driver *drv, struct uart_port *port) +{ + int i; + + /* + * First, find a port entry which matches. Note: if we do + * find a matching entry, and it has a non-zero use count, + * then we can't register the port. + */ + for (i = 0; i < drv->nr; i++) + if (uart_match_port(drv->state[i].port, port)) + return &drv->state[i]; + + /* + * We didn't find a matching entry, so look for the first + * free entry. We look for one which hasn't been previously + * used (indicated by zero iobase). + */ + for (i = 0; i < drv->nr; i++) + if (drv->state[i].port->type == PORT_UNKNOWN && + drv->state[i].port->iobase == 0 && + drv->state[i].count == 0) + return &drv->state[i]; + + /* + * That also failed. Last resort is to find any currently + * entry which doesn't have a real port associated with it. + */ + for (i = 0; i < drv->nr; i++) + if (drv->state[i].port->type == PORT_UNKNOWN && + drv->state[i].count == 0) + return &drv->state[i]; + + return NULL; +} + +/** + * uart_register_port: register uart settings with a port + * @drv: pointer to the uart low level driver structure for this port + * @port: uart port structure describing the port + * + * Register UART settings with the specified low level driver. Detect + * the type of the port if UPF_BOOT_AUTOCONF is set, and detect the + * IRQ if UPF_AUTO_IRQ is set. + * + * We try to pick the same port for the same IO base address, so that + * when a modem is plugged in, unplugged and plugged back in, it gets + * allocated the same port. + * + * Returns negative error, or positive line number. + */ +int uart_register_port(struct uart_driver *drv, struct uart_port *port) +{ + struct uart_state *state; + int ret; + + down(&port_sem); + + state = uart_find_match_or_unused(drv, port); + + if (state) { + /* + * Ok, we've found a line that we can use. + * + * If we find a port that matches this one, and it appears + * to be in-use (even if it doesn't have a type) we shouldn't + * alter it underneath itself - the port may be open and + * trying to do useful work. + */ + if (uart_users(state) != 0) { + ret = -EBUSY; + goto out; + } + + /* + * If the port is already initialised, don't touch it. + */ + if (state->port->type == PORT_UNKNOWN) { + state->port->iobase = port->iobase; + state->port->membase = port->membase; + state->port->irq = port->irq; + state->port->uartclk = port->uartclk; + state->port->fifosize = port->fifosize; + state->port->regshift = port->regshift; + state->port->iotype = port->iotype; + state->port->flags = port->flags; + state->port->line = state - drv->state; + state->port->mapbase = port->mapbase; + + uart_configure_port(drv, state, state->port); + } + + ret = state->port->line; + } else + ret = -ENOSPC; + out: + up(&port_sem); + return ret; +} + +/** + * uart_unregister_port - de-allocate a port + * @drv: pointer to the uart low level driver structure for this port + * @line: line index previously returned from uart_register_port() + * + * Hang up the specified line associated with the low level driver, + * and mark the port as unused. + */ +void uart_unregister_port(struct uart_driver *drv, int line) +{ + struct uart_state *state; + + if (line < 0 || line >= drv->nr) { + printk(KERN_ERR "Attempt to unregister "); + printk("%s%d", drv->dev_name, line); + printk("\n"); + return; + } + + state = drv->state + line; + + down(&port_sem); + uart_unconfigure_port(drv, state); + up(&port_sem); +} + +EXPORT_SYMBOL(uart_write_wakeup); +EXPORT_SYMBOL(uart_register_driver); +EXPORT_SYMBOL(uart_unregister_driver); +EXPORT_SYMBOL(uart_suspend_port); +EXPORT_SYMBOL(uart_resume_port); +EXPORT_SYMBOL(uart_register_port); +EXPORT_SYMBOL(uart_unregister_port); +EXPORT_SYMBOL(uart_add_one_port); +EXPORT_SYMBOL(uart_remove_one_port); + +MODULE_DESCRIPTION("Serial driver core"); +MODULE_LICENSE("GPL"); diff -Nru a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/serial/serial_cs.c Mon Sep 22 00:30:21 2003 @@ -0,0 +1,712 @@ +/*====================================================================== + + A driver for PCMCIA serial devices + + serial_cs.c 1.134 2002/05/04 05:48:53 + + The contents of this file are subject to the Mozilla Public + License Version 1.1 (the "License"); you may not use this file + except in compliance with the License. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS + IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + implied. See the License for the specific language governing + rights and limitations under the License. + + The initial developer of the original code is David A. Hinds + . Portions created by David A. Hinds + are Copyright (C) 1999 David A. Hinds. All Rights Reserved. + + Alternatively, the contents of this file may be used under the + terms of the GNU General Public License version 2 (the "GPL"), in which + case the provisions of the GPL are applicable instead of the + above. If you wish to allow the use of your version of this file + only under the terms of the GPL and not to allow others to use + your version of this file under the MPL, indicate your decision + by deleting the provisions above and replace them with the notice + and other provisions required by the GPL. If you do not delete + the provisions above, a recipient may use your version of this + file under either the MPL or the GPL. + +======================================================================*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#ifdef PCMCIA_DEBUG +static int pc_debug = PCMCIA_DEBUG; +MODULE_PARM(pc_debug, "i"); +#define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) +static char *version = "serial_cs.c 1.134 2002/05/04 05:48:53 (David Hinds)"; +#else +#define DEBUG(n, args...) +#endif + +/*====================================================================*/ + +/* Parameters that can be set with 'insmod' */ + +/* Bit map of interrupts to choose from */ +static u_int irq_mask = 0xdeb8; +static int irq_list[4] = { -1 }; + +/* Enable the speaker? */ +static int do_sound = 1; +/* Skip strict UART tests? */ +static int buggy_uart; + +MODULE_PARM(irq_mask, "i"); +MODULE_PARM(irq_list, "1-4i"); +MODULE_PARM(do_sound, "i"); +MODULE_PARM(buggy_uart, "i"); + +/*====================================================================*/ + +/* Table of multi-port card ID's */ + +struct multi_id { + u_short manfid; + u_short prodid; + int multi; /* 1 = multifunction, > 1 = # ports */ +}; + +static struct multi_id multi_id[] = { + { MANFID_OMEGA, PRODID_OMEGA_QSP_100, 4 }, + { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232, 2 }, + { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232_D1, 2 }, + { MANFID_QUATECH, PRODID_QUATECH_QUAD_RS232, 4 }, + { MANFID_SOCKET, PRODID_SOCKET_DUAL_RS232, 2 }, + { MANFID_INTEL, PRODID_INTEL_DUAL_RS232, 2 }, + { MANFID_NATINST, PRODID_NATINST_QUAD_RS232, 4 } +}; +#define MULTI_COUNT (sizeof(multi_id)/sizeof(struct multi_id)) + +struct serial_info { + dev_link_t link; + int ndev; + int multi; + int slave; + int manfid; + dev_node_t node[4]; + int line[4]; +}; + +static void serial_config(dev_link_t * link); +static int serial_event(event_t event, int priority, + event_callback_args_t * args); + +static dev_info_t dev_info = "serial_cs"; + +static dev_link_t *serial_attach(void); +static void serial_detach(dev_link_t *); + +static dev_link_t *dev_list = NULL; + +/*====================================================================== + + After a card is removed, serial_remove() will unregister + the serial device(s), and release the PCMCIA configuration. + +======================================================================*/ + +static void serial_remove(dev_link_t *link) +{ + struct serial_info *info = link->priv; + int i; + + link->state &= ~DEV_PRESENT; + + DEBUG(0, "serial_release(0x%p)\n", link); + + /* + * Recheck to see if the device is still configured. + */ + if (info->link.state & DEV_CONFIG) { + for (i = 0; i < info->ndev; i++) + unregister_serial(info->line[i]); + + info->link.dev = NULL; + + if (!info->slave) { + CardServices(ReleaseConfiguration, info->link.handle); + CardServices(ReleaseIO, info->link.handle, &info->link.io); + CardServices(ReleaseIRQ, info->link.handle, &info->link.irq); + } + + info->link.state &= ~DEV_CONFIG; + } +} + +/*====================================================================== + + serial_attach() creates an "instance" of the driver, allocating + local data structures for one device. The device is registered + with Card Services. + +======================================================================*/ + +static dev_link_t *serial_attach(void) +{ + struct serial_info *info; + client_reg_t client_reg; + dev_link_t *link; + int i, ret; + + DEBUG(0, "serial_attach()\n"); + + /* Create new serial device */ + info = kmalloc(sizeof (*info), GFP_KERNEL); + if (!info) + return NULL; + memset(info, 0, sizeof (*info)); + link = &info->link; + link->priv = info; + + link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; + link->io.NumPorts1 = 8; + link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; + link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID; + if (irq_list[0] == -1) + link->irq.IRQInfo2 = irq_mask; + else + for (i = 0; i < 4; i++) + link->irq.IRQInfo2 |= 1 << irq_list[i]; + link->conf.Attributes = CONF_ENABLE_IRQ; + if (do_sound) { + link->conf.Attributes |= CONF_ENABLE_SPKR; + link->conf.Status = CCSR_AUDIO_ENA; + } + link->conf.IntType = INT_MEMORY_AND_IO; + + /* Register with Card Services */ + link->next = dev_list; + dev_list = link; + client_reg.dev_info = &dev_info; + client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE; + client_reg.EventMask = + CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL | + CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET | + CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME; + client_reg.event_handler = &serial_event; + client_reg.Version = 0x0210; + client_reg.event_callback_args.client_data = link; + ret = CardServices(RegisterClient, &link->handle, &client_reg); + if (ret != CS_SUCCESS) { + cs_error(link->handle, RegisterClient, ret); + serial_detach(link); + return NULL; + } + + return link; +} + +/*====================================================================== + + This deletes a driver "instance". The device is de-registered + with Card Services. If it has been released, all local data + structures are freed. Otherwise, the structures will be freed + when the device is released. + +======================================================================*/ + +static void serial_detach(dev_link_t * link) +{ + struct serial_info *info = link->priv; + dev_link_t **linkp; + int ret; + + DEBUG(0, "serial_detach(0x%p)\n", link); + + /* Locate device structure */ + for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) + if (*linkp == link) + break; + if (*linkp == NULL) + return; + + /* + * Ensure any outstanding scheduled tasks are completed. + */ + flush_scheduled_work(); + + /* + * Ensure that the ports have been released. + */ + serial_remove(link); + + if (link->handle) { + ret = CardServices(DeregisterClient, link->handle); + if (ret != CS_SUCCESS) + cs_error(link->handle, DeregisterClient, ret); + } + + /* Unlink device structure, free bits */ + *linkp = link->next; + kfree(info); +} + +/*====================================================================*/ + +static int setup_serial(struct serial_info * info, ioaddr_t port, int irq) +{ + struct serial_struct serial; + int line; + + memset(&serial, 0, sizeof (serial)); + serial.port = port; + serial.irq = irq; + serial.flags = UPF_SKIP_TEST | UPF_SHARE_IRQ; + if (buggy_uart) + serial.flags |= UPF_BUGGY_UART; + line = register_serial(&serial); + if (line < 0) { + printk(KERN_NOTICE "serial_cs: register_serial() at 0x%04lx," + " irq %d failed\n", (u_long) serial.port, serial.irq); + return -EINVAL; + } + + info->line[info->ndev] = line; + sprintf(info->node[info->ndev].dev_name, "ttyS%d", line); + info->node[info->ndev].major = TTY_MAJOR; + info->node[info->ndev].minor = 0x40 + line; + if (info->ndev > 0) + info->node[info->ndev - 1].next = &info->node[info->ndev]; + info->ndev++; + + return 0; +} + +/*====================================================================*/ + +static int +get_tuple(int fn, client_handle_t handle, tuple_t * tuple, cisparse_t * parse) +{ + int i; + i = CardServices(fn, handle, tuple); + if (i != CS_SUCCESS) + return CS_NO_MORE_ITEMS; + i = CardServices(GetTupleData, handle, tuple); + if (i != CS_SUCCESS) + return i; + return CardServices(ParseTuple, handle, tuple, parse); +} + +#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c) +#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c) + +/*====================================================================*/ + +static int simple_config(dev_link_t * link) +{ + static ioaddr_t base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 }; + client_handle_t handle = link->handle; + struct serial_info *info = link->priv; + tuple_t tuple; + u_char buf[256]; + cisparse_t parse; + cistpl_cftable_entry_t *cf = &parse.cftable_entry; + config_info_t config; + int i, j, try; + + /* If the card is already configured, look up the port and irq */ + i = CardServices(GetConfigurationInfo, handle, &config); + if ((i == CS_SUCCESS) && (config.Attributes & CONF_VALID_CLIENT)) { + ioaddr_t port = 0; + if ((config.BasePort2 != 0) && (config.NumPorts2 == 8)) { + port = config.BasePort2; + info->slave = 1; + } else if ((info->manfid == MANFID_OSITECH) && + (config.NumPorts1 == 0x40)) { + port = config.BasePort1 + 0x28; + info->slave = 1; + } + if (info->slave) + return setup_serial(info, port, config.AssignedIRQ); + } + link->conf.Vcc = config.Vcc; + + /* First pass: look for a config entry that looks normal. */ + tuple.TupleData = (cisdata_t *) buf; + tuple.TupleOffset = 0; + tuple.TupleDataMax = 255; + tuple.Attributes = 0; + tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; + /* Two tries: without IO aliases, then with aliases */ + for (try = 0; try < 2; try++) { + i = first_tuple(handle, &tuple, &parse); + while (i != CS_NO_MORE_ITEMS) { + if (i != CS_SUCCESS) + goto next_entry; + if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM)) + link->conf.Vpp1 = link->conf.Vpp2 = + cf->vpp1.param[CISTPL_POWER_VNOM] / 10000; + if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && + (cf->io.win[0].base != 0)) { + link->conf.ConfigIndex = cf->index; + link->io.BasePort1 = cf->io.win[0].base; + link->io.IOAddrLines = (try == 0) ? + 16 : cf->io.flags & CISTPL_IO_LINES_MASK; + i = + CardServices(RequestIO, link->handle, + &link->io); + if (i == CS_SUCCESS) + goto found_port; + } + next_entry: + i = next_tuple(handle, &tuple, &parse); + } + } + + /* Second pass: try to find an entry that isn't picky about + its base address, then try to grab any standard serial port + address, and finally try to get any free port. */ + i = first_tuple(handle, &tuple, &parse); + while (i != CS_NO_MORE_ITEMS) { + if ((i == CS_SUCCESS) && (cf->io.nwin > 0) && + ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) { + link->conf.ConfigIndex = cf->index; + for (j = 0; j < 5; j++) { + link->io.BasePort1 = base[j]; + link->io.IOAddrLines = base[j] ? 16 : 3; + i = CardServices(RequestIO, link->handle, + &link->io); + if (i == CS_SUCCESS) + goto found_port; + } + } + i = next_tuple(handle, &tuple, &parse); + } + + found_port: + if (i != CS_SUCCESS) { + printk(KERN_NOTICE + "serial_cs: no usable port range found, giving up\n"); + cs_error(link->handle, RequestIO, i); + return -1; + } + + i = CardServices(RequestIRQ, link->handle, &link->irq); + if (i != CS_SUCCESS) { + cs_error(link->handle, RequestIRQ, i); + link->irq.AssignedIRQ = 0; + } + if (info->multi && (info->manfid == MANFID_3COM)) + link->conf.ConfigIndex &= ~(0x08); + i = CardServices(RequestConfiguration, link->handle, &link->conf); + if (i != CS_SUCCESS) { + cs_error(link->handle, RequestConfiguration, i); + return -1; + } + + return setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ); +} + +static int multi_config(dev_link_t * link) +{ + client_handle_t handle = link->handle; + struct serial_info *info = link->priv; + tuple_t tuple; + u_char buf[256]; + cisparse_t parse; + cistpl_cftable_entry_t *cf = &parse.cftable_entry; + config_info_t config; + int i, base2 = 0; + + i = CardServices(GetConfigurationInfo, handle, &config); + if (i != CS_SUCCESS) { + cs_error(handle, GetConfigurationInfo, i); + return -1; + } + link->conf.Vcc = config.Vcc; + + tuple.TupleData = (cisdata_t *) buf; + tuple.TupleOffset = 0; + tuple.TupleDataMax = 255; + tuple.Attributes = 0; + tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; + + /* First, look for a generic full-sized window */ + link->io.NumPorts1 = info->multi * 8; + i = first_tuple(handle, &tuple, &parse); + while (i != CS_NO_MORE_ITEMS) { + /* The quad port cards have bad CIS's, so just look for a + window larger than 8 ports and assume it will be right */ + if ((i == CS_SUCCESS) && (cf->io.nwin == 1) && + (cf->io.win[0].len > 8)) { + link->conf.ConfigIndex = cf->index; + link->io.BasePort1 = cf->io.win[0].base; + link->io.IOAddrLines = + cf->io.flags & CISTPL_IO_LINES_MASK; + i = CardServices(RequestIO, link->handle, &link->io); + base2 = link->io.BasePort1 + 8; + if (i == CS_SUCCESS) + break; + } + i = next_tuple(handle, &tuple, &parse); + } + + /* If that didn't work, look for two windows */ + if (i != CS_SUCCESS) { + link->io.NumPorts1 = link->io.NumPorts2 = 8; + info->multi = 2; + i = first_tuple(handle, &tuple, &parse); + while (i != CS_NO_MORE_ITEMS) { + if ((i == CS_SUCCESS) && (cf->io.nwin == 2)) { + link->conf.ConfigIndex = cf->index; + link->io.BasePort1 = cf->io.win[0].base; + link->io.BasePort2 = cf->io.win[1].base; + link->io.IOAddrLines = + cf->io.flags & CISTPL_IO_LINES_MASK; + i = + CardServices(RequestIO, link->handle, + &link->io); + base2 = link->io.BasePort2; + if (i == CS_SUCCESS) + break; + } + i = next_tuple(handle, &tuple, &parse); + } + } + + if (i != CS_SUCCESS) { + cs_error(link->handle, RequestIO, i); + return -1; + } + + i = CardServices(RequestIRQ, link->handle, &link->irq); + if (i != CS_SUCCESS) { + printk(KERN_NOTICE + "serial_cs: no usable port range found, giving up\n"); + cs_error(link->handle, RequestIRQ, i); + link->irq.AssignedIRQ = 0; + } + /* Socket Dual IO: this enables irq's for second port */ + if (info->multi && (info->manfid == MANFID_SOCKET)) { + link->conf.Present |= PRESENT_EXT_STATUS; + link->conf.ExtStatus = ESR_REQ_ATTN_ENA; + } + i = CardServices(RequestConfiguration, link->handle, &link->conf); + if (i != CS_SUCCESS) { + cs_error(link->handle, RequestConfiguration, i); + return -1; + } + + /* The Oxford Semiconductor OXCF950 cards are in fact single-port: + 8 registers are for the UART, the others are extra registers */ + if (info->manfid == MANFID_OXSEMI) { + if (cf->index == 1 || cf->index == 3) { + setup_serial(info, base2, link->irq.AssignedIRQ); + outb(12, link->io.BasePort1 + 1); + } else { + setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ); + outb(12, base2 + 1); + } + return 0; + } + + setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ); + /* The Nokia cards are not really multiport cards */ + if (info->manfid == MANFID_NOKIA) + return 0; + for (i = 0; i < info->multi - 1; i++) + setup_serial(info, base2 + (8 * i), link->irq.AssignedIRQ); + + return 0; +} + +/*====================================================================== + + serial_config() is scheduled to run after a CARD_INSERTION event + is received, to configure the PCMCIA socket, and to make the + serial device available to the system. + +======================================================================*/ + +#define CS_CHECK(fn, args...) \ +while ((last_ret=CardServices(last_fn=(fn), args))!=0) goto cs_failed + +void serial_config(dev_link_t * link) +{ + client_handle_t handle = link->handle; + struct serial_info *info = link->priv; + tuple_t tuple; + u_short buf[128]; + cisparse_t parse; + cistpl_cftable_entry_t *cf = &parse.cftable_entry; + int i, last_ret, last_fn; + + DEBUG(0, "serial_config(0x%p)\n", link); + + tuple.TupleData = (cisdata_t *) buf; + tuple.TupleOffset = 0; + tuple.TupleDataMax = 255; + tuple.Attributes = 0; + /* Get configuration register information */ + tuple.DesiredTuple = CISTPL_CONFIG; + last_ret = first_tuple(handle, &tuple, &parse); + if (last_ret != CS_SUCCESS) { + last_fn = ParseTuple; + goto cs_failed; + } + link->conf.ConfigBase = parse.config.base; + link->conf.Present = parse.config.rmask[0]; + + /* Configure card */ + link->state |= DEV_CONFIG; + + /* Is this a compliant multifunction card? */ + tuple.DesiredTuple = CISTPL_LONGLINK_MFC; + tuple.Attributes = TUPLE_RETURN_COMMON | TUPLE_RETURN_LINK; + info->multi = (first_tuple(handle, &tuple, &parse) == CS_SUCCESS); + + /* Is this a multiport card? */ + tuple.DesiredTuple = CISTPL_MANFID; + if (first_tuple(handle, &tuple, &parse) == CS_SUCCESS) { + info->manfid = le16_to_cpu(buf[0]); + for (i = 0; i < MULTI_COUNT; i++) + if ((info->manfid == multi_id[i].manfid) && + (le16_to_cpu(buf[1]) == multi_id[i].prodid)) + break; + if (i < MULTI_COUNT) + info->multi = multi_id[i].multi; + } + + /* Another check for dual-serial cards: look for either serial or + multifunction cards that ask for appropriate IO port ranges */ + tuple.DesiredTuple = CISTPL_FUNCID; + if ((info->multi == 0) && + ((first_tuple(handle, &tuple, &parse) != CS_SUCCESS) || + (parse.funcid.func == CISTPL_FUNCID_MULTI) || + (parse.funcid.func == CISTPL_FUNCID_SERIAL))) { + tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; + if (first_tuple(handle, &tuple, &parse) == CS_SUCCESS) { + if ((cf->io.nwin == 1) && (cf->io.win[0].len % 8 == 0)) + info->multi = cf->io.win[0].len >> 3; + if ((cf->io.nwin == 2) && (cf->io.win[0].len == 8) && + (cf->io.win[1].len == 8)) + info->multi = 2; + } + } + + if (info->multi > 1) + multi_config(link); + else + simple_config(link); + + if (info->ndev == 0) + goto failed; + + if (info->manfid == MANFID_IBM) { + conf_reg_t reg = { 0, CS_READ, 0x800, 0 }; + CS_CHECK(AccessConfigurationRegister, link->handle, ®); + reg.Action = CS_WRITE; + reg.Value = reg.Value | 1; + CS_CHECK(AccessConfigurationRegister, link->handle, ®); + } + + link->dev = &info->node[0]; + link->state &= ~DEV_CONFIG_PENDING; + return; + + cs_failed: + cs_error(link->handle, last_fn, last_ret); + failed: + serial_remove(link); + link->state &= ~DEV_CONFIG_PENDING; +} + +/*====================================================================== + + The card status event handler. Mostly, this schedules other + stuff to run after an event is received. A CARD_REMOVAL event + also sets some flags to discourage the serial drivers from + talking to the ports. + +======================================================================*/ + +static int +serial_event(event_t event, int priority, event_callback_args_t * args) +{ + dev_link_t *link = args->client_data; + struct serial_info *info = link->priv; + + DEBUG(1, "serial_event(0x%06x)\n", event); + + switch (event) { + case CS_EVENT_CARD_REMOVAL: + serial_remove(link); + break; + + case CS_EVENT_CARD_INSERTION: + link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; + serial_config(link); + break; + + case CS_EVENT_PM_SUSPEND: + link->state |= DEV_SUSPEND; + /* Fall through... */ + case CS_EVENT_RESET_PHYSICAL: + if ((link->state & DEV_CONFIG) && !info->slave) + CardServices(ReleaseConfiguration, link->handle); + break; + + case CS_EVENT_PM_RESUME: + link->state &= ~DEV_SUSPEND; + /* Fall through... */ + case CS_EVENT_CARD_RESET: + if (DEV_OK(link) && !info->slave) + CardServices(RequestConfiguration, link->handle, + &link->conf); + break; + } + return 0; +} + +static struct pcmcia_driver serial_cs_driver = { + .owner = THIS_MODULE, + .drv = { + .name = "serial_cs", + }, + .attach = serial_attach, + .detach = serial_detach, +}; + +static int __init init_serial_cs(void) +{ + return pcmcia_register_driver(&serial_cs_driver); +} + +static void __exit exit_serial_cs(void) +{ + pcmcia_unregister_driver(&serial_cs_driver); + + /* XXX: this really needs to move into generic code.. */ + while (dev_list != NULL) + serial_detach(dev_list); +} + +module_init(init_serial_cs); +module_exit(exit_serial_cs); + +MODULE_LICENSE("GPL"); diff -Nru a/drivers/usb/Kconfig b/drivers/usb/Kconfig --- a/drivers/usb/Kconfig Mon Sep 22 00:30:19 2003 +++ b/drivers/usb/Kconfig Mon Sep 22 00:30:19 2003 @@ -33,10 +33,8 @@ It doesn't normally hurt to select them all if you are not certain. - This code 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 usbcore. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called usbcore. source "drivers/usb/core/Kconfig" @@ -82,10 +80,8 @@ Say Y here if you own an USS-720 USB->Parport cable and intend to connect anything other than a printer to it. - This code 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 uss720. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called uss720. source "drivers/usb/serial/Kconfig" diff -Nru a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c --- a/drivers/usb/class/usblp.c Mon Sep 22 00:30:19 2003 +++ b/drivers/usb/class/usblp.c Mon Sep 22 00:30:19 2003 @@ -159,7 +159,10 @@ dbg("usblp=0x%p", usblp); dbg("dev=0x%p", usblp->dev); dbg("present=%d", usblp->present); - dbg("buf=0x%p", usblp->buf); + dbg("readbuf=0x%p", usblp->readbuf); + dbg("writebuf=0x%p", usblp->writebuf); + dbg("readurb=0x%p", usblp->readurb); + dbg("writeurb=0x%p", usblp->writeurb); dbg("readcount=%d", usblp->readcount); dbg("ifnum=%d", usblp->ifnum); for (p = USBLP_FIRST_PROTOCOL; p <= USBLP_LAST_PROTOCOL; p++) { diff -Nru a/drivers/usb/core/config.c b/drivers/usb/core/config.c --- a/drivers/usb/core/config.c Mon Sep 22 00:30:18 2003 +++ b/drivers/usb/core/config.c Mon Sep 22 00:30:18 2003 @@ -10,364 +10,329 @@ /* these maximums are arbitrary */ #define USB_MAXCONFIG 8 -#define USB_ALTSETTINGALLOC 4 #define USB_MAXINTERFACES 32 static int usb_parse_endpoint(struct usb_host_endpoint *endpoint, unsigned char *buffer, int size) { + unsigned char *buffer0 = buffer; struct usb_descriptor_header *header; unsigned char *begin; - int parsed = 0, len, numskipped; + int numskipped; header = (struct usb_descriptor_header *)buffer; - - /* Everything should be fine being passed into here, but we sanity */ - /* check JIC */ - if (header->bLength > size) { - err("ran out of descriptors parsing"); - return -1; - } - if (header->bDescriptorType != USB_DT_ENDPOINT) { warn("unexpected descriptor 0x%X, expecting endpoint, 0x%X", header->bDescriptorType, USB_DT_ENDPOINT); - return parsed; + return -EINVAL; } - if (header->bLength == USB_DT_ENDPOINT_AUDIO_SIZE) + if (header->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE) memcpy(&endpoint->desc, buffer, USB_DT_ENDPOINT_AUDIO_SIZE); - else + else if (header->bLength >= USB_DT_ENDPOINT_SIZE) memcpy(&endpoint->desc, buffer, USB_DT_ENDPOINT_SIZE); - + else { + warn("invalid endpoint descriptor"); + return -EINVAL; + } + + if ((endpoint->desc.bEndpointAddress & ~USB_ENDPOINT_DIR_MASK) >= 16) { + warn("invalid endpoint address 0x%X", + endpoint->desc.bEndpointAddress); + return -EINVAL; + } + le16_to_cpus(&endpoint->desc.wMaxPacketSize); buffer += header->bLength; size -= header->bLength; - parsed += header->bLength; - /* Skip over the rest of the Class Specific or Vendor Specific */ - /* descriptors */ + /* Skip over any Class Specific or Vendor Specific descriptors */ begin = buffer; numskipped = 0; while (size >= sizeof(struct usb_descriptor_header)) { header = (struct usb_descriptor_header *)buffer; - if (header->bLength < 2) { - err("invalid descriptor length of %d", header->bLength); - return -1; - } - /* If we find another "proper" descriptor then we're done */ if ((header->bDescriptorType == USB_DT_ENDPOINT) || - (header->bDescriptorType == USB_DT_INTERFACE) || - (header->bDescriptorType == USB_DT_CONFIG) || - (header->bDescriptorType == USB_DT_DEVICE)) + (header->bDescriptorType == USB_DT_INTERFACE)) break; - dbg("skipping descriptor 0x%X", - header->bDescriptorType); + dbg("skipping descriptor 0x%X", header->bDescriptorType); numskipped++; buffer += header->bLength; size -= header->bLength; - parsed += header->bLength; } - if (numskipped) + if (numskipped) { dbg("skipped %d class/vendor specific endpoint descriptors", numskipped); - - /* Copy any unknown descriptors into a storage area for drivers */ - /* to later parse */ - len = (int)(buffer - begin); - if (!len) { - endpoint->extra = NULL; - endpoint->extralen = 0; - return parsed; - } - - endpoint->extra = kmalloc(len, GFP_KERNEL); - - if (!endpoint->extra) { - err("couldn't allocate memory for endpoint extra descriptors"); - endpoint->extralen = 0; - return parsed; + endpoint->extra = begin; + endpoint->extralen = buffer - begin; } - memcpy(endpoint->extra, begin, len); - endpoint->extralen = len; - - return parsed; + return buffer - buffer0; } static void usb_release_intf(struct device *dev) { struct usb_interface *intf; int j; - int k; intf = to_usb_interface(dev); if (intf->altsetting) { for (j = 0; j < intf->num_altsetting; j++) { struct usb_host_interface *as = &intf->altsetting[j]; - if (as->extra) - kfree(as->extra); - if (as->endpoint) { - for (k = 0; k < as->desc.bNumEndpoints; k++) - if (as->endpoint[k].extra) - kfree(as->endpoint[k].extra); - kfree(as->endpoint); - } + kfree(as->endpoint); } kfree(intf->altsetting); } kfree(intf); } -static int usb_parse_interface(struct usb_interface *interface, unsigned char *buffer, int size) +static int usb_parse_interface(struct usb_host_config *config, unsigned char *buffer, int size) { - int i, len, numskipped, retval, parsed = 0; - struct usb_descriptor_header *header; + unsigned char *buffer0 = buffer; + struct usb_interface_descriptor *d; + int inum, asnum; + struct usb_interface *interface; struct usb_host_interface *ifp; + int len, numskipped; + struct usb_descriptor_header *header; unsigned char *begin; + int i, retval; - interface->act_altsetting = 0; - interface->num_altsetting = 0; - interface->max_altsetting = USB_ALTSETTINGALLOC; - device_initialize(&interface->dev); - interface->dev.release = usb_release_intf; - - /* put happens in usb_destroy_configuration */ - get_device(&interface->dev); - - interface->altsetting = kmalloc(sizeof(*interface->altsetting) * interface->max_altsetting, - GFP_KERNEL); - - if (!interface->altsetting) { - err("couldn't kmalloc interface->altsetting"); - return -1; - } - - while (size > 0) { - struct usb_interface_descriptor *d; - - if (interface->num_altsetting >= interface->max_altsetting) { - struct usb_host_interface *ptr; - int oldmas; - - oldmas = interface->max_altsetting; - interface->max_altsetting += USB_ALTSETTINGALLOC; - if (interface->max_altsetting > USB_MAXALTSETTING) { - warn("too many alternate settings (incr %d max %d)\n", - USB_ALTSETTINGALLOC, USB_MAXALTSETTING); - return -1; - } - - ptr = kmalloc(sizeof(*ptr) * interface->max_altsetting, GFP_KERNEL); - if (ptr == NULL) { - err("couldn't kmalloc interface->altsetting"); - return -1; - } - memcpy(ptr, interface->altsetting, sizeof(*interface->altsetting) * oldmas); - kfree(interface->altsetting); - interface->altsetting = ptr; - } - - ifp = interface->altsetting + interface->num_altsetting; - ifp->endpoint = NULL; - ifp->extra = NULL; - ifp->extralen = 0; - interface->num_altsetting++; - - memcpy(ifp, buffer, USB_DT_INTERFACE_SIZE); - - /* Skip over the interface */ - buffer += ifp->desc.bLength; - parsed += ifp->desc.bLength; - size -= ifp->desc.bLength; + d = (struct usb_interface_descriptor *) buffer; + if (d->bDescriptorType != USB_DT_INTERFACE) { + warn("unexpected descriptor 0x%X, expecting interface, 0x%X", + d->bDescriptorType, USB_DT_INTERFACE); + return -EINVAL; + } - begin = buffer; - numskipped = 0; + inum = d->bInterfaceNumber; + if (inum >= config->desc.bNumInterfaces) { - /* Skip over any interface, class or vendor descriptors */ + /* Skip to the next interface descriptor */ + buffer += d->bLength; + size -= d->bLength; while (size >= sizeof(struct usb_descriptor_header)) { - header = (struct usb_descriptor_header *)buffer; + header = (struct usb_descriptor_header *) buffer; - if (header->bLength < 2) { - err("invalid descriptor length of %d", header->bLength); - return -1; - } - - /* If we find another "proper" descriptor then we're done */ - if ((header->bDescriptorType == USB_DT_INTERFACE) || - (header->bDescriptorType == USB_DT_ENDPOINT) || - (header->bDescriptorType == USB_DT_CONFIG) || - (header->bDescriptorType == USB_DT_DEVICE)) + if (header->bDescriptorType == USB_DT_INTERFACE) break; - - numskipped++; - buffer += header->bLength; - parsed += header->bLength; size -= header->bLength; } + return buffer - buffer0; + } - if (numskipped) - dbg("skipped %d class/vendor specific interface descriptors", numskipped); + interface = config->interface[inum]; + asnum = d->bAlternateSetting; + if (asnum >= interface->num_altsetting) { + warn("invalid alternate setting %d for interface %d", + asnum, inum); + return -EINVAL; + } - /* Copy any unknown descriptors into a storage area for */ - /* drivers to later parse */ - len = (int)(buffer - begin); - if (len) { - ifp->extra = kmalloc(len, GFP_KERNEL); - - if (!ifp->extra) { - err("couldn't allocate memory for interface extra descriptors"); - ifp->extralen = 0; - return -1; - } - memcpy(ifp->extra, begin, len); - ifp->extralen = len; - } + ifp = &interface->altsetting[asnum]; + if (ifp->desc.bLength) { + warn("duplicate descriptor for interface %d altsetting %d", + inum, asnum); + return -EINVAL; + } + memcpy(&ifp->desc, buffer, USB_DT_INTERFACE_SIZE); + + buffer += d->bLength; + size -= d->bLength; - /* Did we hit an unexpected descriptor? */ + /* Skip over any Class Specific or Vendor Specific descriptors */ + begin = buffer; + numskipped = 0; + while (size >= sizeof(struct usb_descriptor_header)) { header = (struct usb_descriptor_header *)buffer; - if ((size >= sizeof(struct usb_descriptor_header)) && - ((header->bDescriptorType == USB_DT_CONFIG) || - (header->bDescriptorType == USB_DT_DEVICE))) - return parsed; - - if (ifp->desc.bNumEndpoints > USB_MAXENDPOINTS) { - warn("too many endpoints"); - return -1; - } - ifp->endpoint = (struct usb_host_endpoint *) - kmalloc(ifp->desc.bNumEndpoints * - sizeof(struct usb_host_endpoint), GFP_KERNEL); - if (!ifp->endpoint) { - err("out of memory"); - return -1; - } + /* If we find another "proper" descriptor then we're done */ + if ((header->bDescriptorType == USB_DT_INTERFACE) || + (header->bDescriptorType == USB_DT_ENDPOINT)) + break; - memset(ifp->endpoint, 0, ifp->desc.bNumEndpoints * - sizeof(struct usb_host_endpoint)); - - for (i = 0; i < ifp->desc.bNumEndpoints; i++) { - header = (struct usb_descriptor_header *)buffer; - - if (header->bLength > size) { - err("ran out of descriptors parsing"); - return -1; - } - - retval = usb_parse_endpoint(ifp->endpoint + i, buffer, size); - if (retval < 0) - return retval; + dbg("skipping descriptor 0x%X", header->bDescriptorType); + numskipped++; + + buffer += header->bLength; + size -= header->bLength; + } + if (numskipped) { + dbg("skipped %d class/vendor specific interface descriptors", numskipped); + ifp->extra = begin; + ifp->extralen = buffer - begin; + } + + if (ifp->desc.bNumEndpoints > USB_MAXENDPOINTS) { + warn("too many endpoints for interface %d altsetting %d", + inum, asnum); + return -EINVAL; + } + + len = ifp->desc.bNumEndpoints * sizeof(struct usb_host_endpoint); + ifp->endpoint = kmalloc(len, GFP_KERNEL); + if (!ifp->endpoint) { + err("out of memory"); + return -ENOMEM; + } + memset(ifp->endpoint, 0, len); - buffer += retval; - parsed += retval; - size -= retval; + for (i = 0; i < ifp->desc.bNumEndpoints; i++) { + if (size < USB_DT_ENDPOINT_SIZE) { + warn("ran out of descriptors while parsing endpoints"); + return -EINVAL; } - /* We check to see if it's an alternate to this one */ - d = (struct usb_interface_descriptor *)buffer; - if (size < USB_DT_INTERFACE_SIZE - || d->bDescriptorType != USB_DT_INTERFACE - || !d->bAlternateSetting) - return parsed; + retval = usb_parse_endpoint(ifp->endpoint + i, buffer, size); + if (retval < 0) + return retval; + + buffer += retval; + size -= retval; } - return parsed; + return buffer - buffer0; } -int usb_parse_configuration(struct usb_host_config *config, char *buffer) +int usb_parse_configuration(struct usb_host_config *config, char *buffer, int size) { - int i, size; - int retval = -EINVAL; + int nintf, nintf_orig; + int i, j; + struct usb_interface *interface; + char *buffer2; + int size2; struct usb_descriptor_header *header; + int numskipped, len; + char *begin; + int retval; memcpy(&config->desc, buffer, USB_DT_CONFIG_SIZE); - le16_to_cpus(&config->desc.wTotalLength); - size = config->desc.wTotalLength; + if (config->desc.bDescriptorType != USB_DT_CONFIG || + config->desc.bLength < USB_DT_CONFIG_SIZE) { + warn("invalid configuration descriptor"); + return -EINVAL; + } + config->desc.wTotalLength = size; - for (i = 0; i < USB_MAXINTERFACES; ++i) - config->interface[i] = NULL; + nintf = nintf_orig = config->desc.bNumInterfaces; + if (nintf > USB_MAXINTERFACES) { + warn("too many interfaces (%d max %d)", + nintf, USB_MAXINTERFACES); + config->desc.bNumInterfaces = nintf = USB_MAXINTERFACES; + } - if (config->desc.bNumInterfaces > USB_MAXINTERFACES) { - warn("too many interfaces"); - goto error; + for (i = 0; i < nintf; ++i) { + interface = config->interface[i] = + kmalloc(sizeof(struct usb_interface), GFP_KERNEL); + dbg("kmalloc IF %p, numif %i", interface, i); + if (!interface) { + err("out of memory"); + return -ENOMEM; + } + memset(interface, 0, sizeof(struct usb_interface)); + interface->dev.release = usb_release_intf; + device_initialize(&interface->dev); + + /* put happens in usb_destroy_configuration */ + get_device(&interface->dev); + } + + /* Go through the descriptors, checking their length and counting the + * number of altsettings for each interface */ + buffer2 = buffer; + size2 = size; + j = 0; + while (size2 >= sizeof(struct usb_descriptor_header)) { + header = (struct usb_descriptor_header *) buffer2; + if ((header->bLength > size2) || (header->bLength < 2)) { + warn("invalid descriptor of length %d", header->bLength); + return -EINVAL; + } + + if (header->bDescriptorType == USB_DT_INTERFACE) { + struct usb_interface_descriptor *d; + + if (header->bLength < USB_DT_INTERFACE_SIZE) { + warn("invalid interface descriptor"); + return -EINVAL; + } + d = (struct usb_interface_descriptor *) header; + i = d->bInterfaceNumber; + if (i >= nintf_orig) { + warn("invalid interface number (%d/%d)", + i, nintf_orig); + return -EINVAL; + } + if (i < nintf) + ++config->interface[i]->num_altsetting; + + } else if ((header->bDescriptorType == USB_DT_DEVICE || + header->bDescriptorType == USB_DT_CONFIG) && j) { + warn("unexpected descriptor type 0x%X", header->bDescriptorType); + return -EINVAL; + } + + j = 1; + buffer2 += header->bLength; + size2 -= header->bLength; } + /* Allocate the altsetting arrays */ for (i = 0; i < config->desc.bNumInterfaces; ++i) { - config->interface[i] = kmalloc(sizeof(struct usb_interface), GFP_KERNEL); - dbg("kmalloc IF %p, numif %i", config->interface[i], i); - if (!config->interface[i]) { - err("out of memory"); - retval = -ENOMEM; - goto error; + interface = config->interface[i]; + if (interface->num_altsetting > USB_MAXALTSETTING) { + warn("too many alternate settings for interface %d (%d max %d)\n", + i, interface->num_altsetting, USB_MAXALTSETTING); + return -EINVAL; + } + if (interface->num_altsetting == 0) { + warn("no alternate settings for interface %d", i); + return -EINVAL; + } + + len = sizeof(*interface->altsetting) * interface->num_altsetting; + interface->altsetting = kmalloc(len, GFP_KERNEL); + if (!interface->altsetting) { + err("couldn't kmalloc interface->altsetting"); + return -ENOMEM; } - memset(config->interface[i], 0x00, sizeof(struct usb_interface)); + memset(interface->altsetting, 0, len); } buffer += config->desc.bLength; size -= config->desc.bLength; - - config->extra = NULL; - config->extralen = 0; - - for (i = 0; i < config->desc.bNumInterfaces; i++) { - int numskipped, len; - char *begin; - - /* Skip over the rest of the Class Specific or Vendor */ - /* Specific descriptors */ - begin = buffer; - numskipped = 0; - while (size >= sizeof(struct usb_descriptor_header)) { - header = (struct usb_descriptor_header *)buffer; - if ((header->bLength > size) || (header->bLength < 2)) { - err("invalid descriptor length of %d", header->bLength); - return -1; - } - - /* If we find another "proper" descriptor then we're done */ - if ((header->bDescriptorType == USB_DT_ENDPOINT) || - (header->bDescriptorType == USB_DT_INTERFACE) || - (header->bDescriptorType == USB_DT_CONFIG) || - (header->bDescriptorType == USB_DT_DEVICE)) - break; - - dbg("skipping descriptor 0x%X", header->bDescriptorType); - numskipped++; + /* Skip over any Class Specific or Vendor Specific descriptors */ + begin = buffer; + numskipped = 0; + while (size >= sizeof(struct usb_descriptor_header)) { + header = (struct usb_descriptor_header *)buffer; - buffer += header->bLength; - size -= header->bLength; - } - if (numskipped) - dbg("skipped %d class/vendor specific endpoint descriptors", numskipped); + /* If we find another "proper" descriptor then we're done */ + if ((header->bDescriptorType == USB_DT_ENDPOINT) || + (header->bDescriptorType == USB_DT_INTERFACE)) + break; - /* Copy any unknown descriptors into a storage area for */ - /* drivers to later parse */ - len = (int)(buffer - begin); - if (len) { - if (config->extralen) { - warn("extra config descriptor"); - } else { - config->extra = kmalloc(len, GFP_KERNEL); - if (!config->extra) { - err("couldn't allocate memory for config extra descriptors"); - config->extralen = 0; - return -1; - } + dbg("skipping descriptor 0x%X", header->bDescriptorType); + numskipped++; - memcpy(config->extra, begin, len); - config->extralen = len; - } - } + buffer += header->bLength; + size -= header->bLength; + } + if (numskipped) { + dbg("skipped %d class/vendor specific configuration descriptors", numskipped); + config->extra = begin; + config->extralen = buffer - begin; + } - retval = usb_parse_interface(config->interface[i], buffer, size); + /* Parse all the interface/altsetting descriptors */ + while (size >= sizeof(struct usb_descriptor_header)) { + retval = usb_parse_interface(config, buffer, size); if (retval < 0) return retval; @@ -375,11 +340,18 @@ size -= retval; } + /* Check for missing altsettings */ + for (i = 0; i < nintf; ++i) { + interface = config->interface[i]; + for (j = 0; j < interface->num_altsetting; ++j) { + if (!interface->altsetting[j].desc.bLength) { + warn("missing altsetting %d for interface %d", j, i); + return -EINVAL; + } + } + } + return size; -error: - for (i = 0; i < USB_MAXINTERFACES; ++i) - kfree(config->interface[i]); - return retval; } // hub-only!! ... and only exported for reset/reinit path. @@ -387,7 +359,7 @@ void usb_destroy_configuration(struct usb_device *dev) { int c, i; - + if (!dev->config) return; @@ -401,12 +373,11 @@ for (c = 0; c < dev->descriptor.bNumConfigurations; c++) { struct usb_host_config *cf = &dev->config[c]; - if (!cf->interface) - break; - for (i = 0; i < cf->desc.bNumInterfaces; i++) { struct usb_interface *ifp = cf->interface[i]; - put_device(&ifp->dev); + + if (ifp) + put_device(&ifp->dev); } } kfree(dev->config); @@ -417,38 +388,39 @@ // (used by real hubs and virtual root hubs) int usb_get_configuration(struct usb_device *dev) { + int ncfg = dev->descriptor.bNumConfigurations; int result; unsigned int cfgno, length; unsigned char *buffer; unsigned char *bigbuffer; struct usb_config_descriptor *desc; - if (dev->descriptor.bNumConfigurations > USB_MAXCONFIG) { - warn("too many configurations"); - return -EINVAL; + if (ncfg > USB_MAXCONFIG) { + warn("too many configurations (%d max %d)", + ncfg, USB_MAXCONFIG); + dev->descriptor.bNumConfigurations = ncfg = USB_MAXCONFIG; } - if (dev->descriptor.bNumConfigurations < 1) { - warn("not enough configurations"); + if (ncfg < 1) { + warn("no configurations"); return -EINVAL; } - dev->config = (struct usb_host_config *) - kmalloc(dev->descriptor.bNumConfigurations * - sizeof(struct usb_host_config), GFP_KERNEL); + length = ncfg * sizeof(struct usb_host_config); + dev->config = kmalloc(length, GFP_KERNEL); if (!dev->config) { err("out of memory"); - return -ENOMEM; + return -ENOMEM; } - memset(dev->config, 0, dev->descriptor.bNumConfigurations * - sizeof(struct usb_host_config)); + memset(dev->config, 0, length); - dev->rawdescriptors = (char **)kmalloc(sizeof(char *) * - dev->descriptor.bNumConfigurations, GFP_KERNEL); + length = ncfg * sizeof(char *); + dev->rawdescriptors = kmalloc(length, GFP_KERNEL); if (!dev->rawdescriptors) { err("out of memory"); return -ENOMEM; } + memset(dev->rawdescriptors, 0, length); buffer = kmalloc(8, GFP_KERNEL); if (!buffer) { @@ -457,7 +429,7 @@ } desc = (struct usb_config_descriptor *)buffer; - for (cfgno = 0; cfgno < dev->descriptor.bNumConfigurations; cfgno++) { + for (cfgno = 0; cfgno < ncfg; cfgno++) { /* We grab the first 8 bytes so we know how long the whole */ /* configuration is */ result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, buffer, 8); @@ -465,14 +437,14 @@ if (result < 0) err("unable to get descriptor"); else { - err("config descriptor too short (expected %i, got %i)", 8, result); + warn("config descriptor too short (expected %i, got %i)", 8, result); result = -EINVAL; } goto err; } /* Get the full buffer */ - length = le16_to_cpu(desc->wTotalLength); + length = max((int) le16_to_cpu(desc->wTotalLength), USB_DT_CONFIG_SIZE); bigbuffer = kmalloc(length, GFP_KERNEL); if (!bigbuffer) { @@ -487,8 +459,8 @@ err("couldn't get all of config descriptors"); kfree(bigbuffer); goto err; - } - + } + if (result < length) { err("config descriptor too short (expected %i, got %i)", length, result); result = -EINVAL; @@ -498,11 +470,11 @@ dev->rawdescriptors[cfgno] = bigbuffer; - result = usb_parse_configuration(&dev->config[cfgno], bigbuffer); + result = usb_parse_configuration(&dev->config[cfgno], bigbuffer, length); if (result > 0) dbg("descriptor data left"); else if (result < 0) { - result = -EINVAL; + ++cfgno; goto err; } } diff -Nru a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c --- a/drivers/usb/core/hub.c Mon Sep 22 00:30:21 2003 +++ b/drivers/usb/core/hub.c Mon Sep 22 00:30:21 2003 @@ -859,8 +859,7 @@ } } - /* XXX Replace this with dbg() when 2.6 is about to ship. */ - dev_info (hubdev (hub), + dev_dbg (hubdev (hub), "debounce: port %d: delay %dms stable %d status 0x%x\n", port + 1, delay_time, stable_count, portstatus); @@ -1183,8 +1182,7 @@ return -1; } - pid = kernel_thread(hub_thread, NULL, - CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + pid = kernel_thread(hub_thread, NULL, CLONE_KERNEL); if (pid >= 0) { khubd_pid = pid; diff -Nru a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c --- a/drivers/usb/core/usb.c Mon Sep 22 00:30:21 2003 +++ b/drivers/usb/core/usb.c Mon Sep 22 00:30:22 2003 @@ -1424,14 +1424,15 @@ struct usb_interface *intf; struct usb_driver *driver; - if ((dev->driver == &usb_generic_driver) || + if ((dev->driver == NULL) || + (dev->driver == &usb_generic_driver) || (dev->driver_data == &usb_generic_driver_data)) return 0; intf = to_usb_interface(dev); driver = to_usb_driver(dev->driver); - if (driver && driver->suspend) + if (driver->suspend) return driver->suspend(intf, state); return 0; } @@ -1441,14 +1442,15 @@ struct usb_interface *intf; struct usb_driver *driver; - if ((dev->driver == &usb_generic_driver) || + if ((dev->driver == NULL) || + (dev->driver == &usb_generic_driver) || (dev->driver_data == &usb_generic_driver_data)) return 0; intf = to_usb_interface(dev); driver = to_usb_driver(dev->driver); - if (driver && driver->resume) + if (driver->resume) return driver->resume(intf); return 0; } diff -Nru a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig --- a/drivers/usb/gadget/Kconfig Mon Sep 22 00:30:20 2003 +++ b/drivers/usb/gadget/Kconfig Mon Sep 22 00:30:20 2003 @@ -68,7 +68,7 @@ config USB_ZERO tristate "Gadget Zero (DEVELOPMENT)" - depends on USB_GADGET && (USB_DUMMY_HCD || USB_NET2280 || USB_PXA250 || USB_SA1100) + depends on USB_GADGET && (USB_DUMMY_HCD || USB_NET2280 || USB_PXA2XX || USB_SA1100) help Gadget Zero is a two-configuration device. It either sinks and sources bulk data; or it loops back a configurable number of @@ -97,9 +97,9 @@ depends on USB_ZERO && (USB_NET2280 || USB_DUMMY_HCD) default y -config USB_ZERO_PXA250 +config USB_ZERO_PXA2XX bool - depends on USB_ZERO && USB_PXA250 + depends on USB_ZERO && USB_PXA2XX default y config USB_ZERO_SA1100 @@ -110,22 +110,28 @@ config USB_ETH tristate "Ethernet Gadget" - depends on USB_GADGET && (USB_DUMMY_HCD || USB_NET2280 || USB_PXA250 || USB_SA1100) + depends on USB_GADGET && (USB_DUMMY_HCD || USB_NET2280 || USB_PXA2XX || USB_SA1100) help - This driver implements the "Communication Device Class" (CDC) - Ethernet Control Model. That protocol is often avoided with pure - Ethernet adapters, in favor of simpler vendor-specific hardware, - but is widely supported by firmware for smart network devices. + This driver implements Ethernet style communication, in either + of two ways: + + - The "Communication Device Class" (CDC) Ethernet Control Model. + That protocol is often avoided with pure Ethernet adapters, in + favor of simpler vendor-specific hardware, but is widely + supported by firmware for smart network devices. + + - On hardware can't implement that protocol, a simpler approach + is used, placing fewer demands on USB. Within the USB device, this gadget driver exposes a network device "usbX", where X depends on what other networking devices you have. Treat it like a two-node Ethernet link: host, and gadget. The Linux-USB host-side "usbnet" driver interoperates with this - driver, so that deep I/O queues can be supported. (On 2.4 kernels, - use "CDCEther" instead.) Deep queues are especially important with - high speed devices. It should also interoperate with standard CDC - Ethernet class drivers on other host operating systems. + driver, so that deep I/O queues can be supported. On 2.4 kernels, + use "CDCEther" instead, if you're using the CDC option. That CDC + mode should also interoperate with standard CDC Ethernet class + drivers on other host operating systems. Say "y" to link the driver statically, or "m" to build a dynamically linked module called "g_ether". @@ -137,9 +143,9 @@ depends on USB_ETH && (USB_NET2280 || USB_DUMMY_HCD) default y -config USB_ETH_PXA250 +config USB_ETH_PXA2XX bool - depends on USB_ETH && USB_PXA250 + depends on USB_ETH && USB_PXA2XX default y config USB_ETH_SA1100 diff -Nru a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c --- a/drivers/usb/gadget/inode.c Mon Sep 22 00:30:23 2003 +++ b/drivers/usb/gadget/inode.c Mon Sep 22 00:30:23 2003 @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include diff -Nru a/drivers/usb/input/Kconfig b/drivers/usb/input/Kconfig --- a/drivers/usb/input/Kconfig Mon Sep 22 00:30:23 2003 +++ b/drivers/usb/input/Kconfig Mon Sep 22 00:30:23 2003 @@ -20,10 +20,8 @@ If unsure, say Y. - This code 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 hid. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called hid. comment "Input core support is needed for USB HID input layer or HIDBP support" depends on USB && INPUT=n @@ -104,10 +102,8 @@ This is almost certainly not what you want. This is mostly useful for embedded applications or simple keyboards. - This code 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 usbkbd. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called usbkbd. If even remotely unsure, say N. @@ -122,10 +118,8 @@ This is almost certainly not what you want. This is mostly useful for embedded applications or simple mice. - This code 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 usbmouse. If you want to compile it as - a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called usbmouse. If even remotely unsure, say N. @@ -140,10 +134,8 @@ (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support" (CONFIG_INPUT_EVDEV) as well. - 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 aiptek. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called aiptek. config USB_WACOM tristate "Wacom Intuos/Graphire tablet support" @@ -154,10 +146,8 @@ (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support" (CONFIG_INPUT_EVDEV) as well. - 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 wacom. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called wacom. config USB_KBTAB tristate "KB Gear JamStudio tablet support" @@ -168,10 +158,8 @@ (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support" (CONFIG_INPUT_EVDEV) as well. - 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 kbtab.o. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called kbtab. config USB_POWERMATE tristate "Griffin PowerMate and Contour Jog support" @@ -184,10 +172,8 @@ You can download userspace tools from http://sowerbutts.com/powermate/ - 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 powermate. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called powermate. config USB_XPAD tristate "X-Box gamepad support" @@ -200,8 +186,6 @@ For information about how to connect the X-Box pad to USB, see Documentation/input/xpad.txt. - 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 xpad. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called xpad. diff -Nru a/drivers/usb/input/hiddev.c b/drivers/usb/input/hiddev.c --- a/drivers/usb/input/hiddev.c Mon Sep 22 00:30:21 2003 +++ b/drivers/usb/input/hiddev.c Mon Sep 22 00:30:21 2003 @@ -727,6 +727,7 @@ retval = usb_register_dev(&hiddev->intf, &hiddev_class); if (retval) { err("Not able to get a minor for this device."); + kfree(hiddev); return -1; } diff -Nru a/drivers/usb/media/Kconfig b/drivers/usb/media/Kconfig --- a/drivers/usb/media/Kconfig Mon Sep 22 00:30:17 2003 +++ b/drivers/usb/media/Kconfig Mon Sep 22 00:30:17 2003 @@ -14,10 +14,8 @@ isochronous transactions. URB's are explained in . - This code 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 dabusb. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called dabusb. comment "Video4Linux support is needed for USB Multimedia device support" depends on USB && VIDEO_DEV=n @@ -33,10 +31,8 @@ Information on this API and pointers to "v4l" programs may be found on the WWW at . - This code 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 vicam. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called vicam. config USB_DSBR tristate "D-Link USB FM radio support (EXPERIMENTAL)" @@ -53,10 +49,8 @@ "v4l" programs may be found on the WWW at . - This code 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 dsbr100. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called dsbr100. config USB_IBMCAM tristate "USB IBM (Xirlink) C-it Camera support" @@ -72,13 +66,12 @@ "v4l" programs may be found on the WWW at . - This code 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 ibmcam. If you want to compile it as a - module, say M here and read . This - camera has several configuration options which can be specified when - you load the module. Read to - learn more. + To compile this driver as a module, say M here: the + module will be called ibmcam. + + This camera has several configuration options which + can be specified when you load the module. Read + to learn more. config USB_KONICAWC tristate "USB Konica Webcam support" @@ -93,10 +86,8 @@ "v4l" programs may be found on the WWW at . - This code 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 konicawc. If you want to compile it as - a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called konicawc. config USB_OV511 tristate "USB OV511 Camera support" @@ -111,10 +102,8 @@ Information on this API and pointers to "v4l" programs may be found on the WWW at . - This code 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 ov511. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called ov511. config USB_PWC tristate "USB Philips Cameras" @@ -152,10 +141,8 @@ Information on this API and pointers to "v4l" programs may be found on the WWW at . - This code 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 pwc. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called pwc. config USB_SE401 tristate "USB SE401 Camera support" @@ -170,10 +157,8 @@ Information on this API and pointers to "v4l" programs may be found on the WWW at . - This code 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 se401. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called se401. config USB_STV680 tristate "USB STV680 (Pencam) Camera support" @@ -189,8 +174,6 @@ Information on this API and pointers to "v4l" programs may be found on the WWW at . - This code 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 stv680. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called stv680. diff -Nru a/drivers/usb/media/dabusb.c b/drivers/usb/media/dabusb.c --- a/drivers/usb/media/dabusb.c Mon Sep 22 00:30:22 2003 +++ b/drivers/usb/media/dabusb.c Mon Sep 22 00:30:22 2003 @@ -89,7 +89,6 @@ static void dump_urb (struct urb *urb) { dbg("urb :%p", urb); - dbg("next :%p", urb->next); dbg("dev :%p", urb->dev); dbg("pipe :%08X", urb->pipe); dbg("status :%d", urb->status); @@ -728,7 +727,7 @@ pdabusb_t s; dbg("dabusb: probe: vendor id 0x%x, device id 0x%x ifnum:%d", - usbdev->descriptor.idVendor, usbdev->descriptor.idProduct, ifnum); + usbdev->descriptor.idVendor, usbdev->descriptor.idProduct, intf->altsetting->desc.bInterfaceNumber); /* We don't handle multiple configurations */ if (usbdev->descriptor.bNumConfigurations != 1) @@ -762,7 +761,7 @@ goto reject; } } - dbg("bound to interface: %d", ifnum); + dbg("bound to interface: %d", intf->altsetting->desc.bInterfaceNumber); usb_set_intfdata (intf, s); up (&s->mutex); diff -Nru a/drivers/usb/media/usbvideo.c b/drivers/usb/media/usbvideo.c --- a/drivers/usb/media/usbvideo.c Mon Sep 22 00:30:25 2003 +++ b/drivers/usb/media/usbvideo.c Mon Sep 22 00:30:25 2003 @@ -24,7 +24,6 @@ #include #include #include -#include #include diff -Nru a/drivers/usb/media/vicam.c b/drivers/usb/media/vicam.c --- a/drivers/usb/media/vicam.c Mon Sep 22 00:30:20 2003 +++ b/drivers/usb/media/vicam.c Mon Sep 22 00:30:20 2003 @@ -1292,7 +1292,7 @@ interface = &intf->altsetting[0]; DBG(KERN_DEBUG "Interface %d. has %u. endpoints!\n", - ifnum, (unsigned) (interface->desc.bNumEndpoints)); + interface->desc.bInterfaceNumber, (unsigned) (interface->desc.bNumEndpoints)); endpoint = &interface->endpoint[0].desc; if ((endpoint->bEndpointAddress & 0x80) && diff -Nru a/drivers/usb/misc/speedtch.c b/drivers/usb/misc/speedtch.c --- a/drivers/usb/misc/speedtch.c Mon Sep 22 00:30:25 2003 +++ b/drivers/usb/misc/speedtch.c Mon Sep 22 00:30:25 2003 @@ -21,7 +21,9 @@ ******************************************************************************/ /* - * Written by Johan Verrept, maintained by Duncan Sands (duncan.sands@wanadoo.fr) + * Written by Johan Verrept, maintained by Duncan Sands (duncan.sands@free.fr) + * + * 1.7+: - See the check-in logs * * 1.6: - No longer opens a connection if the firmware is not loaded * - Added support for the speedtouch 330 @@ -84,6 +86,11 @@ #include +#ifdef DEBUG +#define DEBUG_ON(x) BUG_ON(x) +#else +#define DEBUG_ON(x) do { if (x); } while (0) +#endif #ifdef VERBOSE_DEBUG static int udsl_print_packet (const unsigned char *data, int len); @@ -94,9 +101,9 @@ #define vdbg(arg...) #endif -#define DRIVER_AUTHOR "Johan Verrept, Duncan Sands " +#define DRIVER_AUTHOR "Johan Verrept, Duncan Sands " #define DRIVER_DESC "Alcatel SpeedTouch USB driver" -#define DRIVER_VERSION "1.6" +#define DRIVER_VERSION "1.7" static const char udsl_driver_name [] = "speedtch"; @@ -109,10 +116,10 @@ #define UDSL_MAX_SND_BUFS 8 #define UDSL_MAX_RCV_BUF_SIZE 1024 /* ATM cells */ #define UDSL_MAX_SND_BUF_SIZE 1024 /* ATM cells */ -#define UDSL_DEFAULT_RCV_URBS 1 -#define UDSL_DEFAULT_SND_URBS 1 -#define UDSL_DEFAULT_RCV_BUFS 2 -#define UDSL_DEFAULT_SND_BUFS 2 +#define UDSL_DEFAULT_RCV_URBS 2 +#define UDSL_DEFAULT_SND_URBS 2 +#define UDSL_DEFAULT_RCV_BUFS 4 +#define UDSL_DEFAULT_SND_BUFS 4 #define UDSL_DEFAULT_RCV_BUF_SIZE 64 /* ATM cells */ #define UDSL_DEFAULT_SND_BUF_SIZE 64 /* ATM cells */ @@ -351,7 +358,7 @@ dbg ("udsl_extract_cells: buffer overrun (max_pdu: %u, skb->len %u, vcc: 0x%p)", vcc_data->max_pdu, skb->len, vcc); /* discard cells already received */ skb_trim (skb, 0); - BUG_ON (vcc_data->max_pdu < ATM_CELL_PAYLOAD); + DEBUG_ON (vcc_data->max_pdu < ATM_CELL_PAYLOAD); } memcpy (skb->tail, source + ATM_CELL_HEADER, ATM_CELL_PAYLOAD); @@ -498,7 +505,7 @@ memset (target, 0, ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER); target += ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER; - BUG_ON (--ctrl->num_cells); + DEBUG_ON (--ctrl->num_cells); } memcpy (target, ctrl->aal5_trailer, ATM_AAL5_TRAILER); @@ -535,7 +542,7 @@ vdbg ("udsl_complete_receive: urb 0x%p, status %d, actual_length %d, filled_cells %u, rcv 0x%p, buf 0x%p", urb, urb->status, urb->actual_length, buf->filled_cells, rcv, buf); - BUG_ON (buf->filled_cells > rcv_buf_size); + DEBUG_ON (buf->filled_cells > rcv_buf_size); /* may not be in_interrupt() */ spin_lock_irqsave (&instance->receive_lock, flags); @@ -1216,8 +1223,7 @@ count = 0; spin_lock_irq (&instance->receive_lock); list_for_each (pos, &instance->spare_receivers) - if (++count > num_rcv_urbs) - panic (__FILE__ ": memory corruption detected at line %d!\n", __LINE__); + DEBUG_ON (++count > num_rcv_urbs); spin_unlock_irq (&instance->receive_lock); dbg ("udsl_usb_disconnect: found %u spare receivers", count); @@ -1253,8 +1259,7 @@ count = 0; spin_lock_irq (&instance->send_lock); list_for_each (pos, &instance->spare_senders) - if (++count > num_snd_urbs) - panic (__FILE__ ": memory corruption detected at line %d!\n", __LINE__); + DEBUG_ON (++count > num_snd_urbs); spin_unlock_irq (&instance->send_lock); dbg ("udsl_usb_disconnect: found %u spare senders", count); diff -Nru a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c --- a/drivers/usb/misc/usbtest.c Mon Sep 22 00:30:24 2003 +++ b/drivers/usb/misc/usbtest.c Mon Sep 22 00:30:24 2003 @@ -87,7 +87,7 @@ struct usb_host_endpoint *in, *out; struct usb_device *udev; - for (tmp = 0; tmp < intf->max_altsetting; tmp++) { + for (tmp = 0; tmp < intf->num_altsetting; tmp++) { unsigned ep; in = out = 0; diff -Nru a/drivers/usb/net/usbnet.c b/drivers/usb/net/usbnet.c --- a/drivers/usb/net/usbnet.c Mon Sep 22 00:30:22 2003 +++ b/drivers/usb/net/usbnet.c Mon Sep 22 00:30:22 2003 @@ -252,6 +252,8 @@ /* for new devices, use the descriptor-reading code instead */ int in; /* rx endpoint */ int out; /* tx endpoint */ + + unsigned long data; /* Misc driver specific data */ }; // we record the state for each of our queued skbs @@ -298,6 +300,9 @@ /*-------------------------------------------------------------------------*/ +static struct ethtool_ops usbnet_ethtool_ops; +static void usbnet_get_drvinfo (struct net_device *, struct ethtool_drvinfo *); + /* mostly for PDA style devices, which are always connected if present */ static int always_connected (struct usbnet *dev) { @@ -312,7 +317,7 @@ struct usb_host_interface *alt; struct usb_host_endpoint *in, *out; - for (tmp = 0; tmp < intf->max_altsetting; tmp++) { + for (tmp = 0; tmp < intf->num_altsetting; tmp++) { unsigned ep; in = out = 0; @@ -383,10 +388,10 @@ #ifdef CONFIG_USB_AX8817X -#define NEED_MII /* ASIX AX8817X based USB 2.0 Ethernet Devices */ #define HAVE_HARDWARE +#define NEED_MII #include @@ -394,6 +399,8 @@ #define AX_CMD_READ_MII_REG 0x07 #define AX_CMD_WRITE_MII_REG 0x08 #define AX_CMD_SET_HW_MII 0x0a +#define AX_CMD_READ_EEPROM 0x0b +#define AX_CMD_WRITE_EEPROM 0x0c #define AX_CMD_WRITE_RX_CTL 0x10 #define AX_CMD_READ_IPG012 0x11 #define AX_CMD_WRITE_IPG0 0x12 @@ -403,8 +410,15 @@ #define AX_CMD_READ_NODE_ID 0x17 #define AX_CMD_READ_PHY_ID 0x19 #define AX_CMD_WRITE_MEDIUM_MODE 0x1b +#define AX_CMD_READ_MONITOR_MODE 0x1c +#define AX_CMD_WRITE_MONITOR_MODE 0x1d #define AX_CMD_WRITE_GPIOS 0x1f +#define AX_MONITOR_MODE 0x01 +#define AX_MONITOR_LINK 0x02 +#define AX_MONITOR_MAGIC 0x04 +#define AX_MONITOR_HSFS 0x10 + #define AX_MCAST_FILTER_SIZE 8 #define AX_MAX_MCAST 64 @@ -441,11 +455,11 @@ static void ax8817x_async_cmd_callback(struct urb *urb, struct pt_regs *regs) { struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context; - + if (urb->status < 0) printk(KERN_DEBUG "ax8817x_async_cmd_callback() failed with %d", urb->status); - + kfree(req); usb_free_urb(urb); } @@ -456,12 +470,12 @@ struct usb_ctrlrequest *req; int status; struct urb *urb; - + if ((urb = usb_alloc_urb(0, GFP_ATOMIC)) == NULL) { devdbg(dev, "Error allocating URB in write_cmd_async!"); return; } - + if ((req = kmalloc(sizeof(struct usb_ctrlrequest), GFP_ATOMIC)) == NULL) { deverr(dev, "Failed to allocate memory for control request"); usb_free_urb(urb); @@ -496,34 +510,31 @@ } else if (net->mc_count == 0) { /* just broadcast and directed */ } else { + /* We use the 20 byte dev->data + * for our 8 byte filter buffer + * to avoid allocating memory that + * is tricky to free later */ + u8 *multi_filter = (u8 *)dev->data; struct dev_mc_list *mc_list = net->mc_list; - u8 *multi_filter; u32 crc_bits; int i; - multi_filter = kmalloc(AX_MCAST_FILTER_SIZE, GFP_ATOMIC); - if (multi_filter == NULL) { - /* Oops, couldn't allocate a buffer for setting the multicast - filter. Try all multi mode. */ - rx_ctl |= 0x02; - } else { - memset(multi_filter, 0, AX_MCAST_FILTER_SIZE); - - /* Build the multicast hash filter. */ - for (i = 0; i < net->mc_count; i++) { - crc_bits = - ether_crc(ETH_ALEN, - mc_list->dmi_addr) >> 26; - multi_filter[crc_bits >> 3] |= - 1 << (crc_bits & 7); - mc_list = mc_list->next; - } - - ax8817x_write_cmd_async(dev, AX_CMD_WRITE_MULTI_FILTER, 0, 0, - AX_MCAST_FILTER_SIZE, multi_filter); + memset(multi_filter, 0, AX_MCAST_FILTER_SIZE); - rx_ctl |= 0x10; + /* Build the multicast hash filter. */ + for (i = 0; i < net->mc_count; i++) { + crc_bits = + ether_crc(ETH_ALEN, + mc_list->dmi_addr) >> 26; + multi_filter[crc_bits >> 3] |= + 1 << (crc_bits & 7); + mc_list = mc_list->next; } + + ax8817x_write_cmd_async(dev, AX_CMD_WRITE_MULTI_FILTER, 0, 0, + AX_MCAST_FILTER_SIZE, multi_filter); + + rx_ctl |= 0x10; } ax8817x_write_cmd_async(dev, AX_CMD_WRITE_RX_CTL, rx_ctl, 0, 0, NULL); @@ -533,7 +544,7 @@ { struct usbnet *dev = netdev->priv; u16 res; - u8 buf[4]; + u8 buf[1]; ax8817x_write_cmd(dev, AX_CMD_SET_SW_MII, 0, 0, 0, &buf); ax8817x_read_cmd(dev, AX_CMD_READ_MII_REG, phy_id, (__u16)loc, 2, (u16 *)&res); @@ -546,23 +557,103 @@ { struct usbnet *dev = netdev->priv; u16 res = val; - u8 buf[4]; + u8 buf[1]; ax8817x_write_cmd(dev, AX_CMD_SET_SW_MII, 0, 0, 0, &buf); ax8817x_write_cmd(dev, AX_CMD_WRITE_MII_REG, phy_id, (__u16)loc, 2, (u16 *)&res); ax8817x_write_cmd(dev, AX_CMD_SET_HW_MII, 0, 0, 0, &buf); } +void ax8817x_get_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo) +{ + struct usbnet *dev = (struct usbnet *)net->priv; + u8 opt; + + if (ax8817x_read_cmd(dev, AX_CMD_READ_MONITOR_MODE, 0, 0, 1, &opt) < 0) { + wolinfo->supported = 0; + wolinfo->wolopts = 0; + return; + } + wolinfo->supported = WAKE_PHY | WAKE_MAGIC; + wolinfo->wolopts = 0; + if (opt & AX_MONITOR_MODE) { + if (opt & AX_MONITOR_LINK) + wolinfo->wolopts |= WAKE_PHY; + if (opt & AX_MONITOR_MAGIC) + wolinfo->wolopts |= WAKE_MAGIC; + } +} + +int ax8817x_set_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo) +{ + struct usbnet *dev = (struct usbnet *)net->priv; + u8 opt = 0; + u8 buf[1]; + + if (wolinfo->wolopts & WAKE_PHY) + opt |= AX_MONITOR_LINK; + if (wolinfo->wolopts & WAKE_MAGIC) + opt |= AX_MONITOR_MAGIC; + if (opt != 0) + opt |= AX_MONITOR_MODE; + + if (ax8817x_write_cmd(dev, AX_CMD_WRITE_MONITOR_MODE, + opt, 0, 0, &buf) < 0) + return -EINVAL; + + return 0; +} + +int ax8817x_get_eeprom(struct net_device *net, + struct ethtool_eeprom *eeprom, u8 *data) +{ + struct usbnet *dev = (struct usbnet *)net->priv; + u16 *ebuf = (u16 *)data; + int i; + + /* Crude hack to ensure that we don't overwrite memory + * if an odd length is supplied + */ + if (eeprom->len % 2) + return -EINVAL; + + /* ax8817x returns 2 bytes from eeprom on read */ + for (i=0; i < eeprom->len / 2; i++) { + if (ax8817x_read_cmd(dev, AX_CMD_READ_EEPROM, + eeprom->offset + i, 0, 2, &ebuf[i]) < 0) + return -EINVAL; + } + return i * 2; +} + +static void ax8817x_get_drvinfo (struct net_device *net, + struct ethtool_drvinfo *info) +{ + /* Inherit standard device info */ + usbnet_get_drvinfo(net, info); + info->eedump_len = 0x3e; +} + static int ax8817x_bind(struct usbnet *dev, struct usb_interface *intf) { int ret; u8 buf[6]; u16 *buf16 = (u16 *) buf; int i; + unsigned long gpio_bits = dev->driver_info->data; dev->in = usb_rcvbulkpipe(dev->udev, 3); dev->out = usb_sndbulkpipe(dev->udev, 2); + /* Toggle the GPIOs in a manufacturer/model specific way */ + for (i = 2; i >= 0; i--) { + if ((ret = ax8817x_write_cmd(dev, AX_CMD_WRITE_GPIOS, + (gpio_bits >> (i * 8)) & 0xff, 0, 0, + buf)) < 0) + return ret; + wait_ms(5); + } + if ((ret = ax8817x_write_cmd(dev, AX_CMD_WRITE_RX_CTL, 0x80, 0, 0, buf)) < 0) { dbg("send AX_CMD_WRITE_RX_CTL failed: %d", ret); return ret; @@ -640,6 +731,11 @@ dev->net->set_multicast_list = ax8817x_set_multicast; + usbnet_ethtool_ops.get_drvinfo = &ax8817x_get_drvinfo; + usbnet_ethtool_ops.get_wol = &ax8817x_get_wol; + usbnet_ethtool_ops.set_wol = &ax8817x_set_wol; + usbnet_ethtool_ops.get_eeprom = &ax8817x_get_eeprom; + return 0; } @@ -647,7 +743,30 @@ .description = "ASIX AX8817x USB 2.0 Ethernet", .bind = ax8817x_bind, .flags = FLAG_ETHER, + .data = 0x00130103, +}; + +static const struct driver_info dlink_dub_e100_info = { + .description = "DLink DUB-E100 USB Ethernet", + .bind = ax8817x_bind, + .flags = FLAG_ETHER, + .data = 0x009f9d9f, +}; + +static const struct driver_info netgear_fa120_info = { + .description = "Netgear FA-120 USB Ethernet", + .bind = ax8817x_bind, + .flags = FLAG_ETHER, + .data = 0x00130103, }; + +static const struct driver_info hawking_uf200_info = { + .description = "Hawking UF200 USB Ethernet", + .bind = ax8817x_bind, + .flags = FLAG_ETHER, + .data = 0x001f1d1f, +}; + #endif /* CONFIG_USB_AX8817X */ @@ -2415,72 +2534,45 @@ /*-------------------------------------------------------------------------*/ -static inline int -usbnet_ethtool_ioctl (struct net_device *net, void __user *useraddr) +static void usbnet_get_drvinfo (struct net_device *net, struct ethtool_drvinfo *info) { - struct usbnet *dev = (struct usbnet *) net->priv; - u32 cmd; + struct usbnet *dev = net->priv; - if (get_user (cmd, (u32 *)useraddr)) - return -EFAULT; - switch (cmd) { - - case ETHTOOL_GDRVINFO: { /* get driver info */ - struct ethtool_drvinfo info; - - memset (&info, 0, sizeof info); - info.cmd = ETHTOOL_GDRVINFO; - strncpy (info.driver, driver_name, sizeof info.driver); - strncpy (info.version, DRIVER_VERSION, sizeof info.version); - strncpy (info.fw_version, dev->driver_info->description, - sizeof info.fw_version); - usb_make_path (dev->udev, info.bus_info, sizeof info.bus_info); - if (copy_to_user (useraddr, &info, sizeof (info))) - return -EFAULT; - return 0; - } + strncpy (info->driver, driver_name, sizeof info->driver); + strncpy (info->version, DRIVER_VERSION, sizeof info->version); + strncpy (info->fw_version, dev->driver_info->description, + sizeof info->fw_version); + usb_make_path (dev->udev, info->bus_info, sizeof info->bus_info); +} - case ETHTOOL_GLINK: /* get link status */ - if (dev->driver_info->check_connect) { - struct ethtool_value edata = { ETHTOOL_GLINK }; - - edata.data = dev->driver_info->check_connect (dev) == 0; - if (copy_to_user (useraddr, &edata, sizeof (edata))) - return -EFAULT; - return 0; - } - break; +static u32 usbnet_get_link (struct net_device *net) +{ + struct usbnet *dev = net->priv; - case ETHTOOL_GMSGLVL: { /* get message-level */ - struct ethtool_value edata = {ETHTOOL_GMSGLVL}; + /* If a check_connect is defined, return it's results */ + if (dev->driver_info->check_connect) + return dev->driver_info->check_connect (dev) == 0; - edata.data = dev->msg_level; - if (copy_to_user (useraddr, &edata, sizeof (edata))) - return -EFAULT; - return 0; - } + /* Otherwise, we're up to avoid breaking scripts */ + return 1; +} - case ETHTOOL_SMSGLVL: { /* set message-level */ - struct ethtool_value edata; +static u32 usbnet_get_msglevel (struct net_device *net) +{ + struct usbnet *dev = net->priv; - if (copy_from_user (&edata, useraddr, sizeof (edata))) - return -EFAULT; - dev->msg_level = edata.data; - return 0; - } - - /* could also map RINGPARAM to RX/TX QLEN */ + return dev->msg_level; +} - } - /* Note that the ethtool user space code requires EOPNOTSUPP */ - return -EOPNOTSUPP; +static void usbnet_set_msglevel (struct net_device *net, u32 level) +{ + struct usbnet *dev = net->priv; + + dev->msg_level = level; } static int usbnet_ioctl (struct net_device *net, struct ifreq *rq, int cmd) { - if (cmd == SIOCETHTOOL) - return usbnet_ethtool_ioctl (net, (void __user *)rq->ifr_data); - #ifdef NEED_MII { struct usbnet *dev = (struct usbnet *)net->priv; @@ -2889,6 +2981,7 @@ net->watchdog_timeo = TX_TIMEOUT_JIFFIES; net->tx_timeout = usbnet_tx_timeout; net->do_ioctl = usbnet_ioctl; + net->ethtool_ops = &usbnet_ethtool_ops; // allow device-specific bind/init procedures // NOTE net->name still not usable ... @@ -2991,19 +3084,19 @@ }, { // Netgear FA120 USB_DEVICE (0x0846, 0x1040), - .driver_info = (unsigned long) &ax8817x_info, + .driver_info = (unsigned long) &netgear_fa120_info, }, { // DLink DUB-E100 USB_DEVICE (0x2001, 0x1a00), - .driver_info = (unsigned long) &ax8817x_info, + .driver_info = (unsigned long) &dlink_dub_e100_info, }, { // Intellinet, ST Lab USB Ethernet USB_DEVICE (0x0b95, 0x1720), - .driver_info = (unsigned long) &ax8817x_info, + .driver_info = (unsigned long) &ax8817x_info, }, { // Hawking UF200, TrendNet TU2-ET100 USB_DEVICE (0x07b8, 0x420a), - .driver_info = (unsigned long) &ax8817x_info, + .driver_info = (unsigned long) &hawking_uf200_info, }, #endif @@ -3165,6 +3258,14 @@ .id_table = products, .probe = usbnet_probe, .disconnect = usbnet_disconnect, +}; + +/* Default ethtool_ops assigned. Devices can override in their bind() routine */ +static struct ethtool_ops usbnet_ethtool_ops = { + .get_drvinfo = usbnet_get_drvinfo, + .get_link = usbnet_get_link, + .get_msglevel = usbnet_get_msglevel, + .set_msglevel = usbnet_set_msglevel, }; /*-------------------------------------------------------------------------*/ diff -Nru a/drivers/usb/serial/Kconfig b/drivers/usb/serial/Kconfig --- a/drivers/usb/serial/Kconfig Mon Sep 22 00:30:23 2003 +++ b/drivers/usb/serial/Kconfig Mon Sep 22 00:30:23 2003 @@ -17,10 +17,8 @@ information on the specifics of the different devices that are supported, and on how to use them. - This code 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 usbserial. If you want to compile it - as a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called usbserial. config USB_SERIAL_DEBUG bool "USB Serial Converter verbose debug" @@ -70,10 +68,8 @@ adaptor (F5U103 is one of the model numbers) or the Peracom single port USB to serial adapter. - This code 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 belkin_sa. If you want to compile it as - a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called belkin_sa. config USB_SERIAL_WHITEHEAT tristate "USB ConnectTech WhiteHEAT Serial Driver" @@ -82,10 +78,8 @@ Say Y here if you want to use a ConnectTech WhiteHEAT 4 port USB to serial converter device. - This code 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 whiteheat. If you want to compile it as - a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called whiteheat. config USB_SERIAL_DIGI_ACCELEPORT tristate "USB Digi International AccelePort USB Serial Driver" @@ -99,11 +93,8 @@ This driver works under SMP with the usb-uhci driver. It does not work under SMP with the uhci driver. - This code 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 digi_acceleport. If you want to compile - it as a module, say M here and read - . + To compile this driver as a module, say M here: the + module will be called digi_acceleport. config USB_SERIAL_EMPEG tristate "USB Empeg empeg-car Mark I/II Driver" @@ -114,10 +105,8 @@ device node. See for more tidbits of information. - This code 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 empeg. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called empeg. config USB_SERIAL_FTDI_SIO tristate "USB FTDI Single Port Serial Driver (EXPERIMENTAL)" @@ -130,10 +119,8 @@ See for more information on this driver and the device. - This code 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 ftdi_sio. If you want to compile it as - a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called ftdi_sio. config USB_SERIAL_VISOR tristate "USB Handspring Visor / Palm m50x / Sony Clie Driver" @@ -144,10 +131,8 @@ for more information on using this driver. - This code 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 visor. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called visor. config USB_SERIAL_IPAQ tristate "USB PocketPC PDA Driver" @@ -158,10 +143,8 @@ using a USB cradle/cable. For information on using the driver, read . - This code 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 ipaq. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called ipaq. config USB_SERIAL_IR tristate "USB IR Dongle Serial Driver (EXPERIMENTAL)" @@ -171,10 +154,8 @@ devices. This is useful if you do not want to use the full IrDA stack. - This code 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 ir-usb. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called ir-usb. config USB_SERIAL_EDGEPORT tristate "USB Inside Out Edgeport Serial Driver" @@ -199,10 +180,8 @@ Edgeport/4 DIN Edgeport/16 Dual - This code 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 io_edgeport. If you want to compile it - as a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called io_edgeport. config USB_SERIAL_EDGEPORT_TI tristate "USB Inside Out Edgeport Serial Driver (TI devices)" @@ -212,10 +191,8 @@ Networks (Digi) that are not supported by the io_edgeport driver. This includes the Edgeport/1 device. - This code 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 io_ti. If you want to compile it - as a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called io_ti. config USB_SERIAL_KEYSPAN_PDA tristate "USB Keyspan PDA Single Port Serial Driver" @@ -225,10 +202,8 @@ serial converter device. This driver makes use of firmware developed from scratch by Brian Warner. - This code 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 keyspan_pda. If you want to compile it - as a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called keyspan_pda. config USB_SERIAL_KEYSPAN tristate "USB Keyspan USA-xxx Serial Driver" @@ -241,10 +216,8 @@ See for more information. - This code 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 keyspan. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called keyspan. config USB_SERIAL_KEYSPAN_MPR bool "USB Keyspan MPR Firmware" @@ -337,10 +310,8 @@ Please read for more information. - This code 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 kl5kusb105. If you want to compile it as - a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called kl5kusb105. config USB_SERIAL_KOBIL_SCT tristate "USB KOBIL chipcard reader (EXPERIMENTAL)" @@ -357,10 +328,8 @@ - KAAN Professional Note that you need a current CT-API. - This code 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 kobil_sct. If you want to compile it as - a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called kobil_sct. config USB_SERIAL_MCT_U232 tristate "USB MCT Single Port Serial Driver" @@ -372,10 +341,8 @@ This driver also works with Sitecom U232-P25 and D-Link DU-H3SP USB BAY devices. - This code 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 mct_u232. If you want to compile it as - a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called mct_u232. config USB_SERIAL_PL2303 tristate "USB Prolific 2303 Single Port Serial Driver" @@ -384,10 +351,8 @@ Say Y here if you want to use the PL2303 USB Serial single port adapter from Prolific. - This code 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 pl2303. If you want to compile it as - a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called pl2303. config USB_SERIAL_SAFE tristate "USB Safe Serial (Encapsulated) Driver (EXPERIMENTAL)" @@ -405,10 +370,8 @@ reader. This is an interface to ISO 7816 compatible contactbased chipcards, e.g. GSM SIMs. - This code 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 cyberjack. If you want to compile it as - a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called cyberjack. If unsure, say N. @@ -420,10 +383,8 @@ serial converter device. This driver makes use of firmware developed from scratch by Brian Warner. - This code 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 keyspan_pda. If you want to compile it - as a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called keyspan_pda. config USB_SERIAL_OMNINET tristate "USB ZyXEL omni.net LCD Plus Driver (EXPERIMENTAL)" @@ -431,10 +392,8 @@ help Say Y here if you want to use a ZyXEL omni.net LCD ISDN TA. - This code 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 omninet. If you want to compile it as a - module, say M here and read . + To compile this driver as a module, say M here: the + module will be called omninet. config USB_EZUSB bool diff -Nru a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c --- a/drivers/usb/serial/ipaq.c Mon Sep 22 00:30:24 2003 +++ b/drivers/usb/serial/ipaq.c Mon Sep 22 00:30:24 2003 @@ -341,7 +341,7 @@ usb_serial_debug_data (__FILE__, __FUNCTION__, urb->actual_length, data); tty = port->tty; - if (urb->actual_length) { + if (tty && urb->actual_length) { for (i = 0; i < urb->actual_length ; ++i) { /* if we insert more than TTY_FLIPBUF_SIZE characters, we drop them. */ if(tty->flip.count >= TTY_FLIPBUF_SIZE) { diff -Nru a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c --- a/drivers/usb/serial/usb-serial.c Mon Sep 22 00:30:21 2003 +++ b/drivers/usb/serial/usb-serial.c Mon Sep 22 00:30:21 2003 @@ -871,8 +871,10 @@ /* the ports are cleaned up and released in port_release() */ for (i = 0; i < serial->num_ports; ++i) - if (serial->port[i]->dev.parent != NULL) + if (serial->port[i]->dev.parent != NULL) { device_unregister(&serial->port[i]->dev); + serial->port[i] = NULL; + } /* If this is a "fake" port, we have to clean it up here, as it will * not get cleaned up in port_release() as it was never registered with diff -Nru a/drivers/usb/storage/Kconfig b/drivers/usb/storage/Kconfig --- a/drivers/usb/storage/Kconfig Mon Sep 22 00:30:24 2003 +++ b/drivers/usb/storage/Kconfig Mon Sep 22 00:30:24 2003 @@ -15,10 +15,8 @@ similar devices. This driver may also be used for some cameras and card readers. - This code 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 usb-storage. If you want to compile it - as a module, say M here and read . + To compile this driver as a module, say M here: the + module will be called usb-storage. config USB_STORAGE_DEBUG bool "USB Mass Storage verbose debug" diff -Nru a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h --- a/drivers/usb/storage/unusual_devs.h Mon Sep 22 00:30:23 2003 +++ b/drivers/usb/storage/unusual_devs.h Mon Sep 22 00:30:23 2003 @@ -289,7 +289,7 @@ UNUSUAL_DEV( 0x057b, 0x0000, 0x0000, 0x0299, "Y-E Data", "Flashbuster-U", - US_SC_UFI, US_PR_CB, NULL, + US_SC_DEVICE, US_PR_CB, NULL, US_FL_SINGLE_LUN), UNUSUAL_DEV( 0x057b, 0x0000, 0x0300, 0x9999, diff -Nru a/drivers/video/i810/i810_main.c b/drivers/video/i810/i810_main.c --- a/drivers/video/i810/i810_main.c Mon Sep 22 00:30:20 2003 +++ b/drivers/video/i810/i810_main.c Mon Sep 22 00:30:20 2003 @@ -57,7 +57,7 @@ #include "i810_main.h" /* PCI */ -static const char *i810_pci_list[] __initdata = { +static const char *i810_pci_list[] __devinitdata = { "Intel(R) 810 Framebuffer Device" , "Intel(R) 810-DC100 Framebuffer Device" , "Intel(R) 810E Framebuffer Device" , @@ -66,7 +66,7 @@ "Intel(R) 815 (Internal Graphics with AGP) Framebuffer Device" }; -static struct pci_device_id i810fb_pci_tbl[] __initdata = { +static struct pci_device_id i810fb_pci_tbl[] = { { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82810_IG1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82810_IG3, @@ -1456,7 +1456,7 @@ return 0; } -static struct fb_ops i810fb_ops __initdata = { +static struct fb_ops i810fb_ops __devinitdata = { .owner = THIS_MODULE, .fb_open = i810fb_open, .fb_release = i810fb_release, @@ -1538,7 +1538,7 @@ * AGP resource allocation * ***********************************************************************/ -static void __init i810_fix_pointers(struct i810fb_par *par) +static void __devinit i810_fix_pointers(struct i810fb_par *par) { par->fb.physical = par->aperture.physical+(par->fb.offset << 12); par->fb.virtual = par->aperture.virtual+(par->fb.offset << 12); @@ -1550,7 +1550,7 @@ (par->cursor_heap.offset << 12); } -static void __init i810_fix_offsets(struct i810fb_par *par) +static void __devinit i810_fix_offsets(struct i810fb_par *par) { if (vram + 1 > par->aperture.size >> 20) vram = (par->aperture.size >> 20) - 1; @@ -1570,7 +1570,7 @@ par->cursor_heap.size = 4096; } -static int __init i810_alloc_agp_mem(struct fb_info *info) +static int __devinit i810_alloc_agp_mem(struct fb_info *info) { struct i810fb_par *par = (struct i810fb_par *) info->par; int size; @@ -1635,7 +1635,7 @@ * Sets the the user monitor's horizontal and vertical * frequency limits */ -static void __init i810_init_monspecs(struct fb_info *info) +static void __devinit i810_init_monspecs(struct fb_info *info) { if (!hsync1) hsync1 = HFMIN; @@ -1663,7 +1663,7 @@ * @par: pointer to i810fb_par structure * @info: pointer to current fb_info structure */ -static void __init i810_init_defaults(struct i810fb_par *par, +static void __devinit i810_init_defaults(struct i810fb_par *par, struct fb_info *info) { if (voffset) @@ -1707,7 +1707,7 @@ * i810_init_device - initialize device * @par: pointer to i810fb_par structure */ -static void __init i810_init_device(struct i810fb_par *par) +static void __devinit i810_init_device(struct i810fb_par *par) { u8 reg, *mmio = par->mmio_start_virtual; @@ -1726,7 +1726,7 @@ par->mem_freq = (reg) ? 133 : 100; } -static int __init +static int __devinit i810_allocate_pci_resource(struct i810fb_par *par, const struct pci_device_id *entry) { @@ -1831,7 +1831,7 @@ return 0; } -static int __init i810fb_init_pci (struct pci_dev *dev, +static int __devinit i810fb_init_pci (struct pci_dev *dev, const struct pci_device_id *entry) { struct fb_info *info; diff -Nru a/drivers/video/i810/i810_main.h b/drivers/video/i810/i810_main.h --- a/drivers/video/i810/i810_main.h Mon Sep 22 00:30:22 2003 +++ b/drivers/video/i810/i810_main.h Mon Sep 22 00:30:22 2003 @@ -14,7 +14,7 @@ #ifndef __I810_MAIN_H__ #define __I810_MAIN_H__ -static int __init i810fb_init_pci (struct pci_dev *dev, +static int __devinit i810fb_init_pci (struct pci_dev *dev, const struct pci_device_id *entry); static void __exit i810fb_remove_pci(struct pci_dev *dev); static int i810fb_resume(struct pci_dev *dev); @@ -95,7 +95,7 @@ #ifdef CONFIG_MTRR #define KERNEL_HAS_MTRR 1 -static inline void __init set_mtrr(struct i810fb_par *par) +static inline void __devinit set_mtrr(struct i810fb_par *par) { par->mtrr_reg = mtrr_add((u32) par->aperture.physical, par->aperture.size, MTRR_TYPE_WRCOMB, 1); diff -Nru a/drivers/video/riva/fbdev.c b/drivers/video/riva/fbdev.c --- a/drivers/video/riva/fbdev.c Mon Sep 22 00:30:23 2003 +++ b/drivers/video/riva/fbdev.c Mon Sep 22 00:30:23 2003 @@ -1576,7 +1576,7 @@ .fb_sync = rivafb_sync, }; -static int __init riva_set_fbinfo(struct fb_info *info) +static int __devinit riva_set_fbinfo(struct fb_info *info) { struct riva_par *par = (struct riva_par *) info->par; unsigned int cmap_len; @@ -1726,7 +1726,7 @@ * * ------------------------------------------------------------------------- */ -static int __init rivafb_probe(struct pci_dev *pd, +static int __devinit rivafb_probe(struct pci_dev *pd, const struct pci_device_id *ent) { struct riva_chip_info *rci = &riva_chip_info[ent->driver_data]; diff -Nru a/fs/Kconfig b/fs/Kconfig --- a/fs/Kconfig Mon Sep 22 00:30:22 2003 +++ b/fs/Kconfig Mon Sep 22 00:30:22 2003 @@ -761,6 +761,10 @@ This option will enlarge your kernel by about 67 KB. Several programs depend on this, so everyone should say Y here. +config PROC_KCORE + bool + default y if !ARM + config DEVFS_FS bool "/dev file system support (EXPERIMENTAL)" depends on EXPERIMENTAL @@ -1505,7 +1509,7 @@ cifs module since smbfs is currently more stable and provides support for older servers. The intent of this module is to provide the most advanced network file system function for CIFS compliant servers, - including support for dfs (heirarchical name space), secure per-user + including support for dfs (hierarchical name space), secure per-user session establishment, safe distributed caching (oplock), optional packet signing, Unicode and other internationalization improvements, and optional Winbind (nsswitch) integration. This module is in an early @@ -1561,6 +1565,20 @@ which can be inserted in and removed from the running kernel whenever you want), say M here and read . The module will be called coda. + +config CODA_FS_OLD_API + bool "Use 96-bit Coda file identifiers" + depends on CODA_FS + help + A new kernel-userspace API had to be introduced for Coda v6.0 + to support larger 128-bit file identifiers as needed by the + new realms implementation. + + However this new API is not backward compatible with older + clients. If you really need to run the old Coda userspace + cache manager then say Y. + + For most cases you probably want to say N. config INTERMEZZO_FS tristate "InterMezzo file system support (replicating fs) (EXPERIMENTAL)" diff -Nru a/fs/afs/Makefile b/fs/afs/Makefile --- a/fs/afs/Makefile Mon Sep 22 00:30:22 2003 +++ b/fs/afs/Makefile Mon Sep 22 00:30:22 2003 @@ -2,6 +2,8 @@ # Makefile for Red Hat Linux AFS client. # +#CFLAGS += -finstrument-functions + kafs-objs := \ callback.o \ cell.o \ diff -Nru a/fs/afs/cache-layout.h b/fs/afs/cache-layout.h --- a/fs/afs/cache-layout.h Mon Sep 22 00:30:24 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,224 +0,0 @@ -/* cache-layout.h: AFS cache layout - * - * Copyright (C) 2002 Red Hat, Inc. All Rights Reserved. - * Written by David Howells (dhowells@redhat.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version - * 2 of the License, or (at your option) any later version. - * - * - * The cache is stored on a block device and is laid out as: - * - * 0 +------------------------------------------------ - * | - * | SuperBlock - * | - * 1 +------------------------------------------------ - * | - * | file-meta-data File: Data block #0 - * | - file-meta-data file (volix #0 file #0) : Meta-data block - * | - contains direct pointers to first 64 file data blocks - * | - Cached cell catalogue file (volix #0 file #1) file: Meta-data block - * | - Cached volume location catalogue file (volix #0 file #2): Meta-data block - * | - Vnode catalogue hash bucket #n file: Meta-data block - * | - * 2 +------------------------------------------------ - * | - * | Bitmap Block Allocation Bitmap - * | - 1 bit per block in the bitmap block - * | - bit 0 of dword 0 refers to the bitmap block 0 - * | - set if the bitmap block is full - * | - 32768 bits per block, requiring 4 blocks for a 16Tb cache - * | - bitmap bitmap blocks are cleared initially - * | - not present if <4 bitmap blocks - * | - * +------------------------------------------------ - * | - * | File Block Allocation Bitmap - * | - 1 bit per block in the cache - * | - bit 0 of dword 0 refers to the first block of the data cache - * | - set if block is allocated - * | - 32768 bits per block, requiring 131072 blocks for a 16Tb cache - * | - bitmap blocks are cleared lazily (sb->bix_bitmap_unready) - * | - * +------------------------------------------------ - * | - * | Data Cache - * | - * End +------------------------------------------------ - * - * Blocks are indexed by an unsigned 32-bit word, meaning that the cache can hold up to 2^32 pages, - * or 16Tb in total. - * - * Credentials will be cached in memory, since they are subject to change without notice, and are - * difficult to derive manually, being constructed from the following information: - * - per vnode user ID and mode mask - * - parent directory ACL - * - directory ACL (dirs only) - * - group lists from ptserver - */ - -#ifndef _LINUX_AFS_CACHE_LAYOUT_H -#define _LINUX_AFS_CACHE_LAYOUT_H - -#include "types.h" - -typedef u32 afsc_blockix_t; -typedef u32 afsc_cellix_t; - -/* Cached volume index - * - afsc_volix_t/4 is the index into the volume cache - * - afsc_volix_t%4 is 0 for R/W, 1 for R/O and 2 for Bak (3 is not used) - * - afsc_volix_t==0-3 refers to a "virtual" volume that stores meta-data about the cache - */ -typedef struct { - u32 index; -} afsc_volix_t; - -#define AFSC_VNCAT_HASH_NBUCKETS 128 - -/* special meta file IDs (all cell 0 vol 0) */ -enum afsc_meta_fids { - AFSC_META_FID_METADATA = 0, - AFSC_META_FID_CELL_CATALOGUE = 1, - AFSC_META_FID_VLDB_CATALOGUE = 2, - AFSC_META_FID_VNODE_CATALOGUE0 = 3, - AFSC_META_FID__COUNT = AFSC_VNCAT_HASH_NBUCKETS + 3 -}; - -/*****************************************************************************/ -/* - * cache superblock block layout - * - the blockdev is prepared for initialisation by 'echo "kafsuninit" >/dev/hdaXX' before mounting - * - when initialised, the magic number is changed to "kafs-cache" - */ -struct afsc_super_block -{ - char magic[10]; /* magic number */ -#define AFSC_SUPER_MAGIC "kafs-cache" -#define AFSC_SUPER_MAGIC_NEEDS_INIT "kafsuninit" -#define AFSC_SUPER_MAGIC_SIZE 10 - - unsigned short endian; /* 0x1234 stored CPU-normal order */ -#define AFSC_SUPER_ENDIAN 0x1234 - - unsigned version; /* format version */ -#define AFSC_SUPER_VERSION 1 - - /* layout */ - unsigned bsize; /* cache block size */ - afsc_blockix_t bix_bitmap_fullmap; /* block ix of bitmap full bitmap */ - afsc_blockix_t bix_bitmap; /* block ix of alloc bitmap */ - afsc_blockix_t bix_bitmap_unready; /* block ix of unready area of bitmap */ - afsc_blockix_t bix_cache; /* block ix of data cache */ - afsc_blockix_t bix_end; /* block ix of end of cache */ -}; - -/*****************************************************************************/ -/* - * vnode (inode) metadata cache record - * - padded out to 512 bytes and stored eight to a page - * - only the data version is necessary - * - disconnected operation is not supported - * - afs_iget() contacts the server to get the meta-data _anyway_ when an inode is first brought - * into memory - * - at least 64 direct block pointers will be available (a directory is max 256Kb) - * - any block pointer which is 0 indicates an uncached page - */ -struct afsc_vnode_meta -{ - /* file ID */ - afsc_volix_t volume_ix; /* volume catalogue index */ - unsigned vnode; /* vnode number */ - unsigned unique; /* FID unique */ - unsigned size; /* size of file */ - time_t mtime; /* last modification time */ - - /* file status */ - afs_dataversion_t version; /* current data version */ - - /* file contents */ - afsc_blockix_t dbl_indirect; /* double indirect block index */ - afsc_blockix_t indirect; /* single indirect block 0 index */ - afsc_blockix_t direct[0]; /* direct block index (#AFSC_VNODE_META_DIRECT) */ -}; - -#define AFSC_VNODE_META_RECSIZE 512 /* record size */ - -#define AFSC_VNODE_META_DIRECT \ - ((AFSC_VNODE_META_RECSIZE-sizeof(struct afsc_vnode_meta))/sizeof(afsc_blockix_t)) - -#define AFSC_VNODE_META_PER_PAGE (PAGE_SIZE / AFSC_VNODE_META_RECSIZE) - -/*****************************************************************************/ -/* - * entry in the cached cell catalogue - */ -struct afsc_cell_record -{ - char name[64]; /* cell name (padded with NULs) */ - struct in_addr servers[16]; /* cached cell servers */ -}; - -/*****************************************************************************/ -/* - * entry in the cached volume location catalogue - * - indexed by afsc_volix_t/4 - */ -struct afsc_vldb_record -{ - char name[64]; /* volume name (padded with NULs) */ - afs_volid_t vid[3]; /* volume IDs for R/W, R/O and Bak volumes */ - unsigned char vidmask; /* voltype mask for vid[] */ - unsigned char _pad[1]; - unsigned short nservers; /* number of entries used in servers[] */ - struct in_addr servers[8]; /* fileserver addresses */ - unsigned char srvtmask[8]; /* voltype masks for servers[] */ -#define AFSC_VOL_STM_RW 0x01 /* server holds a R/W version of the volume */ -#define AFSC_VOL_STM_RO 0x02 /* server holds a R/O version of the volume */ -#define AFSC_VOL_STM_BAK 0x04 /* server holds a backup version of the volume */ - - afsc_cellix_t cell_ix; /* cell catalogue index (MAX_UINT if unused) */ - time_t ctime; /* time at which cached */ -}; - -/*****************************************************************************/ -/* - * vnode catalogue entry - * - must be 2^x size so that do_generic_file_read doesn't present them split across pages - */ -struct afsc_vnode_catalogue -{ - afsc_volix_t volume_ix; /* volume catalogue index */ - afs_vnodeid_t vnode; /* vnode ID */ - u32 meta_ix; /* metadata file index */ - u32 atime; /* last time entry accessed */ -} __attribute__((packed)); - -#define AFSC_VNODE_CATALOGUE_PER_BLOCK ((size_t)(PAGE_SIZE/sizeof(struct afsc_vnode_catalogue))) - -/*****************************************************************************/ -/* - * vnode data "page directory" block - * - first 1024 pages don't map through here - * - PAGE_SIZE in size - */ -struct afsc_indirect_block -{ - afsc_blockix_t pt_bix[1024]; /* "page table" block indices */ -}; - -/*****************************************************************************/ -/* - * vnode data "page table" block - * - PAGE_SIZE in size - */ -struct afsc_dbl_indirect_block -{ - afsc_blockix_t page_bix[1024]; /* "page" block indices */ -}; - - -#endif /* _LINUX_AFS_CACHE_LAYOUT_H */ diff -Nru a/fs/afs/cache.h b/fs/afs/cache.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/fs/afs/cache.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,27 @@ +/* cache.h: AFS local cache management interface + * + * Copyright (C) 2002 Red Hat, Inc. All Rights Reserved. + * Written by David Howells (dhowells@redhat.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. + */ + +#ifndef _LINUX_AFS_CACHE_H +#define _LINUX_AFS_CACHE_H + +#undef AFS_CACHING_SUPPORT + +#include +#ifdef AFS_CACHING_SUPPORT +#include +#endif +#include "types.h" + +#ifdef __KERNEL__ + +#endif /* __KERNEL__ */ + +#endif /* _LINUX_AFS_CACHE_H */ diff -Nru a/fs/afs/callback.c b/fs/afs/callback.c --- a/fs/afs/callback.c Mon Sep 22 00:30:22 2003 +++ b/fs/afs/callback.c Mon Sep 22 00:30:22 2003 @@ -68,7 +68,7 @@ spin_unlock(&vnode->lock); iput(inode); - if (release) afs_put_server(server); + afs_put_server(server); spin_lock(&server->cb_lock); } diff -Nru a/fs/afs/cell.c b/fs/afs/cell.c --- a/fs/afs/cell.c Mon Sep 22 00:30:18 2003 +++ b/fs/afs/cell.c Mon Sep 22 00:30:18 2003 @@ -36,6 +36,19 @@ MODULE_PARM(rootcell,"s"); MODULE_PARM_DESC(rootcell,"root AFS cell name and VL server IP addr list"); +#ifdef AFS_CACHING_SUPPORT +static cachefs_match_val_t afs_cell_cache_match(void *target, const void *entry); +static void afs_cell_cache_update(void *source, void *entry); + +struct cachefs_index_def afs_cache_cell_index_def = { + .name = "cell_ix", + .data_size = sizeof(afs_cell_t), + .keys[0] = { CACHEFS_INDEX_KEYS_ASCIIZ, 64 }, + .match = afs_cell_cache_match, + .update = afs_cell_cache_update, +}; +#endif + /*****************************************************************************/ /* * create a cell record @@ -65,7 +78,6 @@ atomic_set(&cell->usage,0); INIT_LIST_HEAD(&cell->link); - INIT_LIST_HEAD(&cell->caches); rwlock_init(&cell->sv_lock); INIT_LIST_HEAD(&cell->sv_list); @@ -96,7 +108,7 @@ cell->vl_addrs[cell->vl_naddrs++].s_addr = htonl((a<<24)|(b<<16)|(c<<8)|d); - if (cell->vl_naddrs>=16) + if (cell->vl_naddrs >= AFS_CELL_MAX_ADDRS) break; } while(vllist=next, vllist); @@ -106,6 +118,14 @@ if (ret<0) goto error; +#ifdef AFS_CACHING_SUPPORT + /* put it up for caching */ + cachefs_acquire_cookie(afs_cache_netfs.primary_index, + &afs_vlocation_cache_index_def, + cell, + &cell->cache); +#endif + /* add to the cell lists */ write_lock(&afs_cells_lock); list_add_tail(&cell->link,&afs_cells); @@ -166,36 +186,45 @@ /* * lookup a cell record */ -int afs_cell_lookup(const char *name, afs_cell_t **_cell) +int afs_cell_lookup(const char *name, unsigned namesz, struct afs_cell **_cell) { struct list_head *_p; afs_cell_t *cell; + int ret; - _enter("\"%s\",",name?name:"*thiscell*"); + _enter("\"%*.*s\",", namesz, namesz, name ? name : ""); - cell = afs_cell_root; + *_cell = NULL; if (name) { /* if the cell was named, look for it in the cell record list */ + ret = -ENOENT; cell = NULL; read_lock(&afs_cells_lock); list_for_each(_p,&afs_cells) { - cell = list_entry(_p,afs_cell_t,link); - if (strcmp(cell->name,name)==0) + cell = list_entry(_p, struct afs_cell, link); + if (strncmp(cell->name, name, namesz) == 0) { + afs_get_cell(cell); break; + } cell = NULL; } read_unlock(&afs_cells_lock); - } - if (cell) + if (cell) + ret = 0; + } + else { + cell = afs_cell_root; afs_get_cell(cell); + ret = 0; + } *_cell = cell; - _leave(" = %d (%p)",cell?0:-ENOENT,cell); - return cell ? 0 : -ENOENT; + _leave(" = %d (%p)", ret, cell); + return ret; } /* end afs_cell_lookup() */ @@ -211,8 +240,8 @@ cell = *_cell; if (cell && !list_empty(&cell->link)) - atomic_inc(&cell->usage); - else + afs_get_cell(cell); + else cell = NULL; write_unlock(&afs_cells_lock); @@ -226,6 +255,9 @@ */ void afs_put_cell(afs_cell_t *cell) { + if (!cell) + return; + _enter("%p{%d,%s}",cell,atomic_read(&cell->usage),cell->name); /* sanity check */ @@ -278,6 +310,10 @@ list_del_init(&cell->proc_link); up_write(&afs_proc_cells_sem); +#ifdef AFS_CACHING_SUPPORT + cachefs_relinquish_cookie(cell->cache,0); +#endif + up_write(&afs_cells_sem); if (!list_empty(&cell->sv_list)) BUG(); @@ -377,8 +413,7 @@ _enter(""); - if (afs_cell_root) - afs_put_cell(afs_cell_root); + afs_put_cell(afs_cell_root); while (!list_empty(&afs_cells)) { cell = NULL; @@ -450,3 +485,46 @@ _leave(""); } /* end afs_cell_purge() */ + +/*****************************************************************************/ +/* + * match a cell record obtained from the cache + */ +#ifdef AFS_CACHING_SUPPORT +static cachefs_match_val_t afs_cell_cache_match(void *target, const void *entry) +{ + const struct afs_cache_cell *ccell = entry; + struct afs_cell *cell = target; + + _enter("{%s},{%s}", ccell->name, cell->name); + + if (strncmp(ccell->name, cell->name, sizeof(ccell->name)) == 0) { + _leave(" = SUCCESS"); + return CACHEFS_MATCH_SUCCESS; + } + + _leave(" = FAILED"); + return CACHEFS_MATCH_FAILED; +} /* end afs_cell_cache_match() */ +#endif + +/*****************************************************************************/ +/* + * update a cell record in the cache + */ +#ifdef AFS_CACHING_SUPPORT +static void afs_cell_cache_update(void *source, void *entry) +{ + struct afs_cache_cell *ccell = entry; + struct afs_cell *cell = source; + + _enter("%p,%p", source, entry); + + strncpy(ccell->name, cell->name, sizeof(ccell->name)); + + memcpy(ccell->vl_servers, + cell->vl_addrs, + min(sizeof(ccell->vl_servers), sizeof(cell->vl_addrs))); + +} /* end afs_cell_cache_update() */ +#endif diff -Nru a/fs/afs/cell.h b/fs/afs/cell.h --- a/fs/afs/cell.h Mon Sep 22 00:30:24 2003 +++ b/fs/afs/cell.h Mon Sep 22 00:30:24 2003 @@ -13,11 +13,24 @@ #define _LINUX_AFS_CELL_H #include "types.h" +#include "cache.h" + +#define AFS_CELL_MAX_ADDRS 15 extern volatile int afs_cells_being_purged; /* T when cells are being purged by rmmod */ /*****************************************************************************/ /* + * entry in the cached cell catalogue + */ +struct afs_cache_cell +{ + char name[64]; /* cell name (padded with NULs) */ + struct in_addr vl_servers[15]; /* cached cell VL servers */ +}; + +/*****************************************************************************/ +/* * AFS cell record */ struct afs_cell @@ -26,7 +39,9 @@ struct list_head link; /* main cell list link */ struct list_head proc_link; /* /proc cell list link */ struct proc_dir_entry *proc_dir; /* /proc dir for this cell */ - struct list_head caches; /* list of caches currently backing this cell */ +#ifdef AFS_CACHING_SUPPORT + struct cachefs_cookie *cache; /* caching cookie */ +#endif /* server record management */ rwlock_t sv_lock; /* active server list lock */ @@ -41,22 +56,22 @@ spinlock_t vl_gylock; /* graveyard lock */ unsigned short vl_naddrs; /* number of VL servers in addr list */ unsigned short vl_curr_svix; /* current server index */ - struct in_addr vl_addrs[16]; /* cell VL server addresses */ + struct in_addr vl_addrs[AFS_CELL_MAX_ADDRS]; /* cell VL server addresses */ char name[0]; /* cell name - must go last */ }; extern int afs_cell_init(void); -extern int afs_cell_create(const char *name, char *vllist, afs_cell_t **_cell); +extern int afs_cell_create(const char *name, char *vllist, struct afs_cell **_cell); -extern int afs_cell_lookup(const char *name, afs_cell_t **_cell); +extern int afs_cell_lookup(const char *name, unsigned nmsize, struct afs_cell **_cell); #define afs_get_cell(C) do { atomic_inc(&(C)->usage); } while(0) -extern afs_cell_t *afs_get_cell_maybe(afs_cell_t **_cell); +extern struct afs_cell *afs_get_cell_maybe(struct afs_cell **_cell); -extern void afs_put_cell(afs_cell_t *cell); +extern void afs_put_cell(struct afs_cell *cell); extern void afs_cell_purge(void); diff -Nru a/fs/afs/cmservice.c b/fs/afs/cmservice.c --- a/fs/afs/cmservice.c Mon Sep 22 00:30:21 2003 +++ b/fs/afs/cmservice.c Mon Sep 22 00:30:21 2003 @@ -119,6 +119,7 @@ int die; printk("kAFS: Started kafscmd %d\n",current->pid); + daemonize("kafscmd"); complete(&kafscmd_alive); @@ -293,15 +294,20 @@ down_write(&afscm_sem); if (!afscm_usage) { - ret = kernel_thread(kafscmd,NULL,0); - if (ret<0) + ret = kernel_thread(kafscmd, NULL, 0); + if (ret < 0) goto out; wait_for_completion(&kafscmd_alive); - ret = rxrpc_add_service(afs_transport,&AFSCM_service); + ret = rxrpc_add_service(afs_transport, &AFSCM_service); if (ret<0) goto kill; + +#ifdef AFS_AUTOMOUNT_SUPPORT + afs_kafstimod_add_timer(&afs_mntpt_expiry_timer, + afs_mntpt_expiry_timeout * HZ); +#endif } afscm_usage++; @@ -330,17 +336,20 @@ down_write(&afscm_sem); - if (afscm_usage==0) BUG(); + if (afscm_usage == 0) BUG(); afscm_usage--; - if (afscm_usage==0) { + if (afscm_usage == 0) { /* don't want more incoming calls */ - rxrpc_del_service(afs_transport,&AFSCM_service); + rxrpc_del_service(afs_transport, &AFSCM_service); /* abort any calls I've still got open (the afscm_error() will dequeue them) */ spin_lock(&afscm_calls_lock); while (!list_empty(&afscm_calls)) { - call = list_entry(afscm_calls.next,struct rxrpc_call,app_link); + call = list_entry(afscm_calls.next, + struct rxrpc_call, + app_link); + list_del_init(&call->app_link); rxrpc_get_call(call); spin_unlock(&afscm_calls_lock); @@ -348,7 +357,8 @@ rxrpc_call_abort(call,-ESRCH); /* abort, dequeue and put */ _debug("nuking active call %08x.%d", - ntohl(call->conn->conn_id),ntohl(call->call_id)); + ntohl(call->conn->conn_id), + ntohl(call->call_id)); rxrpc_put_call(call); rxrpc_put_call(call); @@ -376,6 +386,10 @@ spin_lock(&kafscmd_attention_lock); } spin_unlock(&kafscmd_attention_lock); + +#ifdef AFS_AUTOMOUNT_SUPPORT + afs_kafstimod_del_timer(&afs_mntpt_expiry_timer); +#endif } up_write(&afscm_sem); @@ -490,7 +504,7 @@ if (ret<0) rxrpc_call_abort(call,ret); - if (server) afs_put_server(server); + afs_put_server(server); _leave(" = %d",ret); @@ -556,7 +570,7 @@ if (ret<0) rxrpc_call_abort(call,ret); - if (server) afs_put_server(server); + afs_put_server(server); _leave(" = %d",ret); @@ -622,7 +636,7 @@ if (ret<0) rxrpc_call_abort(call,ret); - if (server) afs_put_server(server); + afs_put_server(server); _leave(" = %d",ret); diff -Nru a/fs/afs/dir.c b/fs/afs/dir.c --- a/fs/afs/dir.c Mon Sep 22 00:30:20 2003 +++ b/fs/afs/dir.c Mon Sep 22 00:30:20 2003 @@ -23,10 +23,11 @@ #include "super.h" #include "internal.h" -static struct dentry *afs_dir_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *); +static struct dentry *afs_dir_lookup(struct inode *dir, struct dentry *dentry, + struct nameidata *nd); static int afs_dir_open(struct inode *inode, struct file *file); static int afs_dir_readdir(struct file *file, void *dirent, filldir_t filldir); -static int afs_d_revalidate(struct dentry *dentry, struct nameidata *); +static int afs_d_revalidate(struct dentry *dentry, struct nameidata *nd); static int afs_d_delete(struct dentry *dentry); static int afs_dir_lookup_filldir(void *_cookie, const char *name, int nlen, loff_t fpos, ino_t ino, unsigned dtype); @@ -70,7 +71,7 @@ u8 name[16]; u8 overflow[4]; /* if any char of the name (inc NUL) reaches here, consume * the next dirent too */ - } parts; + } u; u8 extended_name[32]; } afs_dirent_t; @@ -256,7 +257,7 @@ /* got a valid entry */ dire = &block->dirents[offset]; - nlen = strnlen(dire->parts.name,sizeof(*block) - offset*sizeof(afs_dirent_t)); + nlen = strnlen(dire->u.name,sizeof(*block) - offset*sizeof(afs_dirent_t)); _debug("ENT[%Zu.%u]: %s %Zu \"%s\"\n", blkoff/sizeof(afs_dir_block_t),offset, @@ -288,11 +289,11 @@ /* found the next entry */ ret = filldir(cookie, - dire->parts.name, + dire->u.name, nlen, blkoff + offset * sizeof(afs_dirent_t), - ntohl(dire->parts.vnode), - filldir==afs_dir_lookup_filldir ? dire->parts.unique : DT_UNKNOWN); + ntohl(dire->u.vnode), + filldir==afs_dir_lookup_filldir ? dire->u.unique : DT_UNKNOWN); if (ret<0) { _leave(" = 0 [full]"); return 0; @@ -414,7 +415,8 @@ /* * look up an entry in a directory */ -static struct dentry *afs_dir_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) +static struct dentry *afs_dir_lookup(struct inode *dir, struct dentry *dentry, + struct nameidata *nd) { struct afs_dir_lookup_cookie cookie; struct afs_super_info *as; @@ -423,11 +425,11 @@ unsigned fpos; int ret; - _enter("{%lu},{%s}",dir->i_ino,dentry->d_name.name); + _enter("{%lu},%p{%s}",dir->i_ino,dentry,dentry->d_name.name); /* insanity checks first */ - if (sizeof(afs_dir_block_t) != 2048) BUG(); - if (sizeof(afs_dirent_t) != 32) BUG(); + BUG_ON(sizeof(afs_dir_block_t) != 2048); + BUG_ON(sizeof(afs_dirent_t) != 32); if (dentry->d_name.len > 255) { _leave(" = -ENAMETOOLONG"); @@ -495,9 +497,11 @@ unsigned fpos; int ret; - _enter("%s,%p",dentry->d_name.name,nd); + _enter("{sb=%p n=%s},",dentry->d_sb,dentry->d_name.name); + + /* lock down the parent dentry so we can peer at it */ + parent = dget_parent(dentry->d_parent); - parent = dget_parent(dentry); dir = parent->d_inode; inode = dentry->d_inode; diff -Nru a/fs/afs/file.c b/fs/afs/file.c --- a/fs/afs/file.c Mon Sep 22 00:30:23 2003 +++ b/fs/afs/file.c Mon Sep 22 00:30:23 2003 @@ -16,6 +16,7 @@ #include #include #include +#include #include "volume.h" #include "vnode.h" #include @@ -27,6 +28,8 @@ #endif static int afs_file_readpage(struct file *file, struct page *page); +static int afs_file_invalidatepage(struct page *page, unsigned long offset); +static int afs_file_releasepage(struct page *page, int gfp_flags); static ssize_t afs_file_write(struct file *file, const char *buf, size_t size, loff_t *off); @@ -37,7 +40,7 @@ struct file_operations afs_file_file_operations = { .read = generic_file_read, .write = afs_file_write, - .mmap = generic_file_readonly_mmap, + .mmap = generic_file_mmap, #if 0 .open = afs_file_open, .release = afs_file_release, @@ -47,6 +50,10 @@ struct address_space_operations afs_fs_aops = { .readpage = afs_file_readpage, + .sync_page = block_sync_page, + .set_page_dirty = __set_page_dirty_nobuffers, + .releasepage = afs_file_releasepage, + .invalidatepage = afs_file_invalidatepage, }; /*****************************************************************************/ @@ -66,11 +73,48 @@ /*****************************************************************************/ /* + * deal with notification that a page was read from the cache + */ +#ifdef AFS_CACHING_SUPPORT +static void afs_file_readpage_read_complete(void *cookie_data, struct page *page, void *data, + int error) +{ + _enter("%p,%p,%p,%d",cookie_data,page,data,error); + + if (error) + SetPageError(page); + else + SetPageUptodate(page); + unlock_page(page); + +} /* end afs_file_readpage_read_complete() */ +#endif + +/*****************************************************************************/ +/* + * deal with notification that a page was written to the cache + */ +#ifdef AFS_CACHING_SUPPORT +static void afs_file_readpage_write_complete(void *cookie_data, struct page *page, void *data, + int error) +{ + _enter("%p,%p,%p,%d",cookie_data,page,data,error); + + unlock_page(page); + +} /* end afs_file_readpage_write_complete() */ +#endif + +/*****************************************************************************/ +/* * AFS read page from file (or symlink) */ static int afs_file_readpage(struct file *file, struct page *page) { struct afs_rxfs_fetch_descriptor desc; +#ifdef AFS_CACHING_SUPPORT + struct cachefs_page *pageio; +#endif struct inode *inode; afs_vnode_t *vnode; int ret; @@ -88,28 +132,73 @@ if (vnode->flags & AFS_VNODE_DELETED) goto error; - /* work out how much to get and from where */ - desc.fid = vnode->fid; - desc.offset = page->index << PAGE_CACHE_SHIFT; - desc.size = min((size_t)(inode->i_size - desc.offset),(size_t)PAGE_SIZE); - desc.buffer = kmap(page); - - clear_page(desc.buffer); - - /* read the contents of the file from the server into the page */ - ret = afs_vnode_fetch_data(vnode,&desc); - kunmap(page); - if (ret<0) { - if (ret==-ENOENT) { - _debug("got NOENT from server - marking file deleted and stale"); - vnode->flags |= AFS_VNODE_DELETED; - ret = -ESTALE; - } +#ifdef AFS_CACHING_SUPPORT + ret = cachefs_page_get_private(page,&pageio,GFP_NOIO); + if (ret<0) goto error; - } - SetPageUptodate(page); - unlock_page(page); + /* is it cached? */ + ret = cachefs_read_or_alloc_page(vnode->cache, + page, + afs_file_readpage_read_complete, + NULL, + GFP_KERNEL); +#else + ret = -ENOBUFS; +#endif + + switch (ret) { + /* read BIO submitted and wb-journal entry found */ + case 1: + BUG(); // TODO - handle wb-journal match + + /* read BIO submitted (page in cache) */ + case 0: + break; + + /* no page available in cache */ + case -ENOBUFS: + case -ENODATA: + default: + desc.fid = vnode->fid; + desc.offset = page->index << PAGE_CACHE_SHIFT; + desc.size = min((size_t)(inode->i_size - desc.offset),(size_t)PAGE_SIZE); + desc.buffer = kmap(page); + + clear_page(desc.buffer); + + /* read the contents of the file from the server into the page */ + ret = afs_vnode_fetch_data(vnode,&desc); + kunmap(page); + if (ret<0) { + if (ret==-ENOENT) { + _debug("got NOENT from server - marking file deleted and stale"); + vnode->flags |= AFS_VNODE_DELETED; + ret = -ESTALE; + } + +#ifdef AFS_CACHING_SUPPORT + cachefs_uncache_page(vnode->cache,page); +#endif + goto error; + } + + SetPageUptodate(page); + +#ifdef AFS_CACHING_SUPPORT + if (cachefs_write_page(vnode->cache, + page, + afs_file_readpage_write_complete, + NULL, + GFP_KERNEL) != 0 + ) { + cachefs_uncache_page(vnode->cache,page); + unlock_page(page); + } +#else + unlock_page(page); +#endif + } _leave(" = 0"); return 0; @@ -122,3 +211,83 @@ return ret; } /* end afs_file_readpage() */ + +/*****************************************************************************/ +/* + * get a page cookie for the specified page + */ +#ifdef AFS_CACHING_SUPPORT +int afs_cache_get_page_cookie(struct page *page, struct cachefs_page **_page_cookie) +{ + int ret; + + _enter(""); + ret = cachefs_page_get_private(page,_page_cookie,GFP_NOIO); + + _leave(" = %d",ret); + return ret; +} /* end afs_cache_get_page_cookie() */ +#endif + +/*****************************************************************************/ +/* + * invalidate part or all of a page + */ +static int afs_file_invalidatepage(struct page *page, unsigned long offset) +{ + int ret = 1; + + _enter("{%lu},%lu",page->index,offset); + + BUG_ON(!PageLocked(page)); + if (PagePrivate(page)) { +#ifdef AFS_CACHING_SUPPORT + struct afs_vnode *vnode = AFS_FS_I(page->mapping->host); + cachefs_uncache_page(vnode->cache,page); +#endif + + /* + * We release buffers only if the entire page is being invalidated. + * The get_block cached value has been unconditionally invalidated, + * so real IO is not possible anymore. + */ + if (offset == 0) { + BUG_ON(!PageLocked(page)); + + ret = 0; + if (!PageWriteback(page)) + ret = page->mapping->a_ops->releasepage(page, 0); + } + } + + _leave(" = %d",ret); + return ret; +} /* end afs_file_invalidatepage() */ + +/*****************************************************************************/ +/* + * release a page and cleanup its private data + */ +static int afs_file_releasepage(struct page *page, int gfp_flags) +{ + struct cachefs_page *pageio; + + _enter("{%lu},%x",page->index,gfp_flags); + + if (PagePrivate(page)) { +#ifdef AFS_CACHING_SUPPORT + struct afs_vnode *vnode = AFS_FS_I(page->mapping->host); + cachefs_uncache_page(vnode->cache,page); +#endif + + pageio = (struct cachefs_page *) page->private; + page->private = 0; + ClearPagePrivate(page); + + if (pageio) + kfree(pageio); + } + + _leave(" = 0"); + return 0; +} /* end afs_file_releasepage() */ diff -Nru a/fs/afs/inode.c b/fs/afs/inode.c --- a/fs/afs/inode.c Mon Sep 22 00:30:20 2003 +++ b/fs/afs/inode.c Mon Sep 22 00:30:20 2003 @@ -69,17 +69,16 @@ inode->i_uid = vnode->status.owner; inode->i_gid = 0; inode->i_size = vnode->status.size; - inode->i_atime.tv_sec = inode->i_mtime.tv_sec = inode->i_ctime.tv_sec = vnode->status.mtime_server; - inode->i_atime.tv_nsec = - inode->i_mtime.tv_nsec = - inode->i_ctime.tv_nsec = 0; + inode->i_ctime.tv_sec = vnode->status.mtime_server; + inode->i_ctime.tv_nsec = 0; + inode->i_atime = inode->i_mtime = inode->i_ctime; inode->i_blksize = PAGE_CACHE_SIZE; inode->i_blocks = 0; inode->i_version = vnode->fid.unique; inode->i_mapping->a_ops = &afs_fs_aops; /* check to see whether a symbolic link is really a mountpoint */ - if (vnode->status.type==AFS_FTYPE_SYMLINK) { + if (vnode->status.type == AFS_FTYPE_SYMLINK) { afs_mntpt_check_symlink(vnode); if (vnode->flags & AFS_VNODE_MOUNTPOINT) { @@ -105,7 +104,7 @@ ret = afs_vnode_fetch_status(vnode); - if (ret==0) + if (ret == 0) ret = afs_inode_map_status(vnode); return ret; @@ -120,8 +119,8 @@ { struct afs_iget_data *data = opaque; - /* only match inodes with the same version number */ - return inode->i_ino==data->fid.vnode && inode->i_version==data->fid.unique; + return inode->i_ino == data->fid.vnode && + inode->i_version == data->fid.unique; } /* end afs_iget5_test() */ /*****************************************************************************/ @@ -145,20 +144,22 @@ /* * inode retrieval */ -inline int afs_iget(struct super_block *sb, afs_fid_t *fid, struct inode **_inode) +inline int afs_iget(struct super_block *sb, afs_fid_t *fid, + struct inode **_inode) { - struct afs_iget_data data = { .fid = *fid }; + struct afs_iget_data data = { fid: *fid }; struct afs_super_info *as; + struct afs_vnode *vnode; struct inode *inode; - afs_vnode_t *vnode; int ret; - _enter(",{%u,%u,%u},,",fid->vid,fid->vnode,fid->unique); + _enter(",{%u,%u,%u},,", fid->vid, fid->vnode, fid->unique); as = sb->s_fs_info; data.volume = as->volume; - inode = iget5_locked(sb,fid->vnode,afs_iget5_test,afs_iget5_set,&data); + inode = iget5_locked(sb, fid->vnode, afs_iget5_test, afs_iget5_set, + &data); if (!inode) { _leave(" = -ENOMEM"); return -ENOMEM; @@ -173,10 +174,19 @@ *_inode = inode; else iput(inode); - _leave(" = %d",ret); + _leave(" = %d", ret); return ret; } +#ifdef AFS_CACHING_SUPPORT + /* set up caching before reading the status, as fetch-status reads the + * first page of symlinks to see if they're really mntpts */ + cachefs_acquire_cookie(vnode->volume->cache, + NULL, + vnode, + &vnode->cache); +#endif + /* okay... it's a new inode */ vnode->flags |= AFS_VNODE_CHANGED; ret = afs_inode_fetch_status(inode); @@ -187,11 +197,11 @@ unlock_new_inode(inode); *_inode = inode; - _leave(" = 0 [CB { v=%u x=%lu t=%u nix=%u }]", + _leave(" = 0 [CB { v=%u x=%lu t=%u } c=%p]", vnode->cb_version, vnode->cb_timeout.timo_jif, vnode->cb_type, - vnode->nix + vnode->cache ); return 0; @@ -201,7 +211,7 @@ unlock_new_inode(inode); iput(inode); - _leave(" = %d [bad]",ret); + _leave(" = %d [bad]", ret); return ret; } /* end afs_iget() */ @@ -209,7 +219,8 @@ /* * read the attributes of an inode */ -int afs_inode_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) +int afs_inode_getattr(struct vfsmount *mnt, struct dentry *dentry, + struct kstat *stat) { struct inode *inode; afs_vnode_t *vnode; @@ -217,23 +228,25 @@ inode = dentry->d_inode; - _enter("{ ino=%lu v=%lu }",inode->i_ino,inode->i_version); + _enter("{ ino=%lu v=%lu }", inode->i_ino, inode->i_version); vnode = AFS_FS_I(inode); ret = afs_inode_fetch_status(inode); - if (ret==-ENOENT) { - _leave(" = %d [%d %p]",ret,atomic_read(&dentry->d_count),dentry->d_inode); + if (ret == -ENOENT) { + _leave(" = %d [%d %p]", + ret, atomic_read(&dentry->d_count), dentry->d_inode); return ret; } - else if (ret<0) { + else if (ret < 0) { make_bad_inode(inode); - _leave(" = %d",ret); + _leave(" = %d", ret); return ret; } - /* transfer attributes from the inode structure to the stat structure */ - generic_fillattr(inode,stat); + /* transfer attributes from the inode structure to the stat + * structure */ + generic_fillattr(inode, stat); _leave(" = 0 CB { v=%u x=%u t=%u }", vnode->cb_version, @@ -261,9 +274,14 @@ vnode->cb_type ); - if (inode->i_ino!=vnode->fid.vnode) BUG(); + BUG_ON(inode->i_ino != vnode->fid.vnode); afs_vnode_give_up_callback(vnode); + +#ifdef AFS_CACHING_SUPPORT + cachefs_relinquish_cookie(vnode->cache, 0); + vnode->cache = NULL; +#endif _leave(""); } /* end afs_clear_inode() */ diff -Nru a/fs/afs/internal.h b/fs/afs/internal.h --- a/fs/afs/internal.h Mon Sep 22 00:30:21 2003 +++ b/fs/afs/internal.h Mon Sep 22 00:30:21 2003 @@ -26,7 +26,7 @@ #define kproto(FMT, a...) printk("### "FMT"\n" , ## a) #define knet(FMT, a...) printk(FMT"\n" , ## a) -#if 0 +#ifdef __KDEBUG #define _enter(FMT, a...) kenter(FMT , ## a) #define _leave(FMT, a...) kleave(FMT , ## a) #define _debug(FMT, a...) kdebug(FMT , ## a) @@ -56,6 +56,9 @@ */ extern struct rw_semaphore afs_proc_cells_sem; extern struct list_head afs_proc_cells; +#ifdef AFS_CACHING_SUPPORT +extern struct cachefs_index_def afs_cache_cell_index_def; +#endif /* * dir.c @@ -70,6 +73,10 @@ extern struct inode_operations afs_file_inode_operations; extern struct file_operations afs_file_file_operations; +#ifdef AFS_CACHING_SUPPORT +extern int afs_cache_get_page_cookie(struct page *page, struct cachefs_page **_page_cookie); +#endif + /* * inode.c */ @@ -78,10 +85,22 @@ extern void afs_clear_inode(struct inode *inode); /* + * main.c + */ +#ifdef AFS_CACHING_SUPPORT +extern struct cachefs_netfs afs_cache_netfs; +#endif + +/* * mntpt.c */ extern struct inode_operations afs_mntpt_inode_operations; extern struct file_operations afs_mntpt_file_operations; +#ifdef AFS_AUTOMOUNT_SUPPORT +extern struct afs_timer afs_mntpt_expiry_timer; +extern struct afs_timer_ops afs_mntpt_expiry_timer_ops; +extern unsigned long afs_mntpt_expiry_timeout; +#endif extern int afs_mntpt_check_symlink(afs_vnode_t *vnode); diff -Nru a/fs/afs/kafsasyncd.c b/fs/afs/kafsasyncd.c --- a/fs/afs/kafsasyncd.c Mon Sep 22 00:30:24 2003 +++ b/fs/afs/kafsasyncd.c Mon Sep 22 00:30:24 2003 @@ -153,8 +153,7 @@ spin_lock(&kafsasyncd_async_lock); /* fold the busy and attention queues together */ - list_splice(&kafsasyncd_async_busyq,&kafsasyncd_async_attnq); - list_del_init(&kafsasyncd_async_busyq); + list_splice_init(&kafsasyncd_async_busyq,&kafsasyncd_async_attnq); /* dequeue kafsasyncd from all their wait queues */ list_for_each(_p,&kafsasyncd_async_attnq) { @@ -197,6 +196,7 @@ spin_lock(&kafsasyncd_async_lock); init_waitqueue_entry(&op->waiter,kafsasyncd_task); + add_wait_queue(&op->call->waitq,&op->waiter); list_del(&op->link); list_add_tail(&op->link,&kafsasyncd_async_busyq); @@ -238,7 +238,10 @@ spin_lock(&kafsasyncd_async_lock); - list_del_init(&op->link); + if (!list_empty(&op->link)) { + list_del_init(&op->link); + remove_wait_queue(&op->call->waitq,&op->waiter); + } spin_unlock(&kafsasyncd_async_lock); diff -Nru a/fs/afs/kafstimod.c b/fs/afs/kafstimod.c --- a/fs/afs/kafstimod.c Mon Sep 22 00:30:22 2003 +++ b/fs/afs/kafstimod.c Mon Sep 22 00:30:22 2003 @@ -82,7 +82,7 @@ for (;;) { unsigned long jif; - unsigned long timeout; + signed long timeout; /* deal with the server being asked to die */ if (kafstimod_die) { @@ -98,18 +98,18 @@ spin_lock(&kafstimod_lock); if (list_empty(&kafstimod_list)) { timeout = MAX_SCHEDULE_TIMEOUT; - } else { - unsigned long tmo; - - timer = list_entry(kafstimod_list.next, - afs_timer_t, link); - tmo = timer->timo_jif; + } + else { + timer = list_entry(kafstimod_list.next,afs_timer_t,link); + timeout = timer->timo_jif; jif = jiffies; - if (time_before_eq(tmo,jif)) + if (time_before_eq((unsigned long)timeout,jif)) goto immediate; - timeout = (long)tmo - (long)jiffies; + else { + timeout = (long)timeout - (long)jiffies; + } } spin_unlock(&kafstimod_lock); @@ -170,7 +170,7 @@ wake_up(&kafstimod_sleepq); _leave(""); -} /* end afs_kafstimod_queue_vlocation() */ +} /* end afs_kafstimod_add_timer() */ /*****************************************************************************/ /* diff -Nru a/fs/afs/main.c b/fs/afs/main.c --- a/fs/afs/main.c Mon Sep 22 00:30:20 2003 +++ b/fs/afs/main.c Mon Sep 22 00:30:20 2003 @@ -17,6 +17,7 @@ #include #include #include +#include "cache.h" #include "cell.h" #include "server.h" #include "fsclient.h" @@ -47,6 +48,18 @@ struct list_head afs_cb_hash_tbl[AFS_CB_HASH_COUNT]; spinlock_t afs_cb_hash_lock = SPIN_LOCK_UNLOCKED; +#ifdef AFS_CACHING_SUPPORT +static struct cachefs_netfs_operations afs_cache_ops = { + .get_page_cookie = afs_cache_get_page_cookie, +}; + +struct cachefs_netfs afs_cache_netfs = { + .name = "afs", + .version = 0, + .ops = &afs_cache_ops, +}; +#endif + /*****************************************************************************/ /* * initialise the AFS client FS module @@ -64,34 +77,41 @@ /* register the /proc stuff */ ret = afs_proc_init(); - if (ret<0) + if (ret < 0) return ret; +#ifdef AFS_CACHING_SUPPORT + /* we want to be able to cache */ + ret = cachefs_register_netfs(&afs_cache_netfs,&afs_cache_cell_index_def); + if (ret < 0) + goto error; +#endif + /* initialise the cell DB */ ret = afs_cell_init(); - if (ret<0) - goto error; + if (ret < 0) + goto error_cache; /* start the timeout daemon */ ret = afs_kafstimod_start(); - if (ret<0) - goto error; + if (ret < 0) + goto error_cache; /* start the async operation daemon */ ret = afs_kafsasyncd_start(); - if (ret<0) + if (ret < 0) goto error_kafstimod; /* create the RxRPC transport */ ret = rxrpc_create_transport(7001,&afs_transport); - if (ret<0) + if (ret < 0) goto error_kafsasyncd; afs_transport->peer_ops = &afs_peer_ops; /* register the filesystems */ ret = afs_fs_init(); - if (ret<0) + if (ret < 0) goto error_transport; return ret; @@ -102,7 +122,11 @@ afs_kafsasyncd_stop(); error_kafstimod: afs_kafstimod_stop(); + error_cache: +#ifdef AFS_CACHING_SUPPORT + cachefs_unregister_netfs(&afs_cache_netfs); error: +#endif afs_cell_purge(); afs_proc_cleanup(); printk(KERN_ERR "kAFS: failed to register: %d\n",ret); @@ -122,6 +146,9 @@ afs_kafstimod_stop(); afs_kafsasyncd_stop(); afs_cell_purge(); +#ifdef AFS_CACHING_SUPPORT + cachefs_unregister_netfs(&afs_cache_netfs); +#endif afs_proc_cleanup(); } /* end afs_exit() */ @@ -142,7 +169,7 @@ /* determine which server the peer resides in (if any) */ ret = afs_server_find_by_peer(peer,&server); - if (ret<0) + if (ret < 0) return ret; /* none that we recognise, so abort */ _debug("Server %p{u=%d}\n",server,atomic_read(&server->usage)); @@ -191,3 +218,48 @@ _leave(""); } /* end afs_discarding_peer() */ + +/*****************************************************************************/ +/* + * clear the dead space between task_struct and kernel stack + * - called by supplying -finstrument-functions to gcc + */ +#if 0 +void __cyg_profile_func_enter (void *this_fn, void *call_site) +__attribute__((no_instrument_function)); + +void __cyg_profile_func_enter (void *this_fn, void *call_site) +{ + asm volatile(" movl %%esp,%%edi \n" + " andl %0,%%edi \n" + " addl %1,%%edi \n" + " movl %%esp,%%ecx \n" + " subl %%edi,%%ecx \n" + " shrl $2,%%ecx \n" + " movl $0xedededed,%%eax \n" + " rep stosl \n" + : + : "i"(~(THREAD_SIZE-1)), "i"(sizeof(struct thread_info)) + : "eax", "ecx", "edi", "memory", "cc" + ); +} + +void __cyg_profile_func_exit(void *this_fn, void *call_site) +__attribute__((no_instrument_function)); + +void __cyg_profile_func_exit(void *this_fn, void *call_site) +{ + asm volatile(" movl %%esp,%%edi \n" + " andl %0,%%edi \n" + " addl %1,%%edi \n" + " movl %%esp,%%ecx \n" + " subl %%edi,%%ecx \n" + " shrl $2,%%ecx \n" + " movl $0xdadadada,%%eax \n" + " rep stosl \n" + : + : "i"(~(THREAD_SIZE-1)), "i"(sizeof(struct thread_info)) + : "eax", "ecx", "edi", "memory", "cc" + ); +} +#endif diff -Nru a/fs/afs/mntpt.c b/fs/afs/mntpt.c --- a/fs/afs/mntpt.c Mon Sep 22 00:30:19 2003 +++ b/fs/afs/mntpt.c Mon Sep 22 00:30:19 2003 @@ -16,24 +16,52 @@ #include #include #include +#include +#include +#include +#include "super.h" +#include "cell.h" #include "volume.h" #include "vnode.h" #include "internal.h" -static struct dentry *afs_mntpt_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *); +static struct dentry *afs_mntpt_lookup(struct inode *dir, + struct dentry *dentry, + struct nameidata *nd); static int afs_mntpt_open(struct inode *inode, struct file *file); +#ifdef AFS_AUTOMOUNT_SUPPORT +static int afs_mntpt_follow_link(struct dentry *dentry, struct nameidata *nd); +#endif + struct file_operations afs_mntpt_file_operations = { .open = afs_mntpt_open, }; struct inode_operations afs_mntpt_inode_operations = { .lookup = afs_mntpt_lookup, +#ifdef AFS_AUTOMOUNT_SUPPORT + .follow_link = afs_mntpt_follow_link, +#endif .readlink = page_readlink, .getattr = afs_inode_getattr, }; +#ifdef AFS_AUTOMOUNT_SUPPORT +static LIST_HEAD(afs_vfsmounts); + +static void afs_mntpt_expiry_timed_out(struct afs_timer *timer); + +struct afs_timer_ops afs_mntpt_expiry_timer_ops = { + .timed_out = afs_mntpt_expiry_timed_out, +}; + +struct afs_timer afs_mntpt_expiry_timer; + +unsigned long afs_mntpt_expiry_timeout = 20; +#endif + /*****************************************************************************/ /* * check a symbolic link to see whether it actually encodes a mountpoint @@ -93,8 +121,17 @@ /* * no valid lookup procedure on this sort of dir */ -static struct dentry *afs_mntpt_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) +static struct dentry *afs_mntpt_lookup(struct inode *dir, + struct dentry *dentry, + struct nameidata *nd) { + kenter("%p,%p{%p{%s},%s}", + dir, + dentry, + dentry->d_parent, + dentry->d_parent ? dentry->d_parent->d_name.name : (const unsigned char*)"", + dentry->d_name.name); + return ERR_PTR(-EREMOTE); } /* end afs_mntpt_lookup() */ @@ -104,5 +141,146 @@ */ static int afs_mntpt_open(struct inode *inode, struct file *file) { + kenter("%p,%p{%p{%s},%s}", + inode, file, + file->f_dentry->d_parent, + file->f_dentry->d_parent ? file->f_dentry->d_parent->d_name.name : (const unsigned char*)"", + file->f_dentry->d_name.name); + return -EREMOTE; } /* end afs_mntpt_open() */ + +#ifdef AFS_AUTOMOUNT_SUPPORT +/*****************************************************************************/ +/* + * create a vfsmount to be automounted + */ +static struct vfsmount *afs_mntpt_do_automount(struct dentry *mntpt) +{ + struct afs_super_info *super; + struct vfsmount *mnt; + struct page *page = NULL; + size_t size; + char *buf, *devname = NULL, *options = NULL; + int ret; + + kenter("{%s}", mntpt->d_name.name); + + BUG_ON(!mntpt->d_inode); + + ret = -EINVAL; + size = mntpt->d_inode->i_size; + if (size > PAGE_SIZE - 1) + goto error; + + ret = -ENOMEM; + devname = (char *) get_zeroed_page(GFP_KERNEL); + if (!devname) + goto error; + + options = (char *) get_zeroed_page(GFP_KERNEL); + if (!options) + goto error; + + /* read the contents of the AFS special symlink */ + page = read_cache_page(mntpt->d_inode->i_mapping, + 0, + (filler_t*)mntpt->d_inode->i_mapping->a_ops->readpage, + NULL); + if (IS_ERR(page)) { + ret = PTR_ERR(page); + goto error; + } + + ret = -EIO; + wait_on_page_locked(page); + if (!PageUptodate(page) || PageError(page)) + goto error; + + buf = kmap(page); + memcpy(devname, buf, size); + kunmap(page); + page_cache_release(page); + page = NULL; + + /* work out what options we want */ + super = AFS_FS_S(mntpt->d_sb); + memcpy(options, "cell=", 5); + strcpy(options + 5, super->volume->cell->name); + if (super->volume->type == AFSVL_RWVOL) + strcat(options,",rwpath"); + + /* try and do the mount */ + kdebug("--- attempting mount %s -o %s ---", devname, options); + mnt = do_kern_mount("afs", 0, devname, options); + kdebug("--- mount result %p ---", mnt); + + free_page((unsigned long)devname); + free_page((unsigned long)options); + kleave(" = %p",mnt); + return mnt; + + error: + if (page) + page_cache_release(page); + if (devname) + free_page((unsigned long)devname); + if (options) + free_page((unsigned long)options); + kleave(" = %d",ret); + return ERR_PTR(ret); +} /* end afs_mntpt_do_automount() */ + +/*****************************************************************************/ +/* + * follow a link from a mountpoint directory, thus causing it to be mounted + */ +static int afs_mntpt_follow_link(struct dentry *dentry, struct nameidata *nd) +{ + struct nameidata newnd; + struct vfsmount *newmnt; + int err; + + kenter("%p{%s},{%s:%p{%s}}", + dentry, + dentry->d_name.name, + nd->mnt->mnt_devname, + dentry, + nd->dentry->d_name.name); + + newmnt = afs_mntpt_do_automount(dentry); + if (IS_ERR(newmnt)) + return PTR_ERR(newmnt); + + struct_cpy(&newnd,nd); + newnd.dentry = dentry; + err = do_add_mount(newmnt, &newnd, 0, &afs_vfsmounts); + + if (!err) { + path_release(nd); + mntget(newmnt); + nd->mnt = newmnt; + dget(newmnt->mnt_root); + nd->dentry = newmnt->mnt_root; + } + + kleave(" = %d", err); + return err; +} /* end afs_mntpt_follow_link() */ + +/*****************************************************************************/ +/* + * handle mountpoint expiry timer going off + */ +static void afs_mntpt_expiry_timed_out(struct afs_timer *timer) +{ + kenter(""); + + mark_mounts_for_expiry(&afs_vfsmounts); + + afs_kafstimod_add_timer(&afs_mntpt_expiry_timer, + afs_mntpt_expiry_timeout * HZ); + + kleave(""); +} /* end afs_mntpt_expiry_timed_out() */ +#endif diff -Nru a/fs/afs/mount.h b/fs/afs/mount.h --- a/fs/afs/mount.h Mon Sep 22 00:30:17 2003 +++ b/fs/afs/mount.h Mon Sep 22 00:30:17 2003 @@ -17,7 +17,7 @@ const char *cell; /* name of cell containing volume */ const char *cache; /* name of cache block device */ size_t nservers; /* number of server addresses listed */ - u_int32_t servers[10]; /* IP addresses of servers in this cell */ + uint32_t servers[10]; /* IP addresses of servers in this cell */ }; #endif /* _LINUX_AFS_MOUNT_H */ diff -Nru a/fs/afs/server.c b/fs/afs/server.c --- a/fs/afs/server.c Mon Sep 22 00:30:18 2003 +++ b/fs/afs/server.c Mon Sep 22 00:30:18 2003 @@ -148,6 +148,9 @@ { afs_cell_t *cell; + if (!server) + return; + _enter("%p",server); cell = server->cell; diff -Nru a/fs/afs/super.c b/fs/afs/super.c --- a/fs/afs/super.c Mon Sep 22 00:30:21 2003 +++ b/fs/afs/super.c Mon Sep 22 00:30:21 2003 @@ -29,15 +29,22 @@ #define AFS_FS_MAGIC 0x6B414653 /* 'kAFS' */ +struct afs_mount_params { + int rwpath; + struct afs_cell *default_cell; + struct afs_volume *volume; +}; + static inline char *strdup(const char *s) { - char *ns = kmalloc(strlen(s)+1,GFP_KERNEL); + char *ns = kmalloc(strlen(s) + 1, GFP_KERNEL); if (ns) - strcpy(ns,s); + strcpy(ns, s); return ns; } -static void afs_i_init_once(void *foo, kmem_cache_t *cachep, unsigned long flags); +static void afs_i_init_once(void *foo, kmem_cache_t *cachep, + unsigned long flags); static struct super_block *afs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, @@ -66,6 +73,7 @@ }; static kmem_cache_t *afs_inode_cachep; +static atomic_t afs_count_active_inodes; /*****************************************************************************/ /* @@ -75,16 +83,22 @@ { int ret; - kenter(""); + _enter(""); + +#ifdef AFS_AUTOMOUNT_SUPPORT + afs_timer_init(&afs_mntpt_expiry_timer, &afs_mntpt_expiry_timer_ops); +#endif /* create ourselves an inode cache */ + atomic_set(&afs_count_active_inodes, 0); + ret = -ENOMEM; afs_inode_cachep = kmem_cache_create("afs_inode_cache", - sizeof(afs_vnode_t), - 0, - SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT, - afs_i_init_once, - NULL); + sizeof(afs_vnode_t), + 0, + SLAB_HWCACHE_ALIGN, + afs_i_init_once, + NULL); if (!afs_inode_cachep) { printk(KERN_NOTICE "kAFS: Failed to allocate inode cache\n"); return ret; @@ -92,9 +106,9 @@ /* now export our filesystem to lesser mortals */ ret = register_filesystem(&afs_fs_type); - if (ret<0) { + if (ret < 0) { kmem_cache_destroy(afs_inode_cachep); - kleave(" = %d",ret); + kleave(" = %d", ret); return ret; } @@ -108,11 +122,16 @@ */ void __exit afs_fs_exit(void) { - /* destroy our private inode cache */ - kmem_cache_destroy(afs_inode_cachep); - unregister_filesystem(&afs_fs_type); + if (atomic_read(&afs_count_active_inodes) != 0) { + printk("kAFS: %d active inode objects still present\n", + atomic_read(&afs_count_active_inodes)); + BUG(); + } + + kmem_cache_destroy(afs_inode_cachep); + } /* end afs_fs_exit() */ /*****************************************************************************/ @@ -122,7 +141,7 @@ static int want_arg(char **_value, const char *option) { if (!_value || !*_value || !**_value) { - printk(KERN_NOTICE "kAFS: %s: argument missing\n",option); + printk(KERN_NOTICE "kAFS: %s: argument missing\n", option); return 0; } return 1; @@ -130,27 +149,13 @@ /*****************************************************************************/ /* - * check that there is a value - */ -#if 0 -static int want_value(char **_value, const char *option) -{ - if (!_value || !*_value || !**_value) { - printk(KERN_NOTICE "kAFS: %s: argument incomplete\n",option); - return 0; - } - return 1; -} /* end want_value() */ -#endif - -/*****************************************************************************/ -/* * check that there's no subsequent value */ static int want_no_value(char *const *_value, const char *option) { if (*_value && **_value) { - printk(KERN_NOTICE "kAFS: %s: Invalid argument: %s\n",option,*_value); + printk(KERN_NOTICE "kAFS: %s: Invalid argument: %s\n", + option, *_value); return 0; } return 1; @@ -158,150 +163,55 @@ /*****************************************************************************/ /* - * extract a number from an option string value - */ -#if 0 -static int want_number(char **_value, const char *option, unsigned long *number, - unsigned long limit) -{ - char *value = *_value; - - if (!want_value(_value,option)) - return 0; - - *number = simple_strtoul(value,_value,0); - - if (value==*_value) { - printk(KERN_NOTICE "kAFS: %s: Invalid number: %s\n",option,value); - return 0; - } - - if (*number>limit) { - printk(KERN_NOTICE "kAFS: %s: numeric value %lu > %lu\n",option,*number,limit); - return 0; - } - - return 1; -} /* end want_number() */ -#endif - -/*****************************************************************************/ -/* - * extract a separator from an option string value - */ -#if 0 -static int want_sep(char **_value, const char *option, char sep) -{ - if (!want_value(_value,option)) - return 0; - - if (*(*_value)++ != sep) { - printk(KERN_NOTICE "kAFS: %s: '%c' expected: %s\n",option,sep,*_value-1); - return 0; - } - - return 1; -} /* end want_number() */ -#endif - -/*****************************************************************************/ -/* - * extract an IP address from an option string value - */ -#if 0 -static int want_ipaddr(char **_value, const char *option, struct in_addr *addr) -{ - unsigned long number[4]; - - if (!want_value(_value,option)) - return 0; - - if (!want_number(_value,option,&number[0],255) || - !want_sep(_value,option,'.') || - !want_number(_value,option,&number[1],255) || - !want_sep(_value,option,'.') || - !want_number(_value,option,&number[2],255) || - !want_sep(_value,option,'.') || - !want_number(_value,option,&number[3],255)) - return 0; - - ((u8*)addr)[0] = number[0]; - ((u8*)addr)[1] = number[1]; - ((u8*)addr)[2] = number[2]; - ((u8*)addr)[3] = number[3]; - - return 1; -} /* end want_numeric() */ -#endif - -/*****************************************************************************/ -/* * parse the mount options * - this function has been shamelessly adapted from the ext3 fs which shamelessly adapted it from * the msdos fs */ -static int afs_super_parse_options(struct afs_super_info *as, char *options, const char ** devname) +static int afs_super_parse_options(struct afs_mount_params *params, + char *options, + const char **devname) { char *key, *value; int ret; - _enter("%s",options); + _enter("%s", options); + + options[PAGE_SIZE - 1] = 0; ret = 0; - while ((key = strsep(&options,","))) + while ((key = strsep(&options, ","))) { - value = strchr(key,'='); + value = strchr(key, '='); if (value) *value++ = 0; - printk("kAFS: KEY: %s, VAL:%s\n",key,value?:"-"); + printk("kAFS: KEY: %s, VAL:%s\n", key, value ?: "-"); - if (strcmp(key,"rwpath")==0) { - if (!want_no_value(&value,"rwpath")) return -EINVAL; - as->rwparent = 1; + if (strcmp(key, "rwpath") == 0) { + if (!want_no_value(&value, "rwpath")) + return -EINVAL; + params->rwpath = 1; continue; } - else if (strcmp(key,"vol")==0) { - if (!want_arg(&value,"vol")) return -EINVAL; + else if (strcmp(key, "vol") == 0) { + if (!want_arg(&value, "vol")) + return -EINVAL; *devname = value; continue; } - -#if 0 - if (strcmp(key,"servers")==0) { - if (!want_arg(&value,"servers")) return -EINVAL; - - _debug("servers=%s",value); - - for (;;) { - struct in_addr addr; - - if (!want_ipaddr(&value,"servers",&addr)) - return -EINVAL; - - ret = afs_create_server(as->cell,&addr,&as->server); - if (ret<0) { - printk("kAFS: unable to create server: %d\n",ret); - return ret; - } - - if (!*value) - break; - - if (as->server) { - printk(KERN_NOTICE - "kAFS: only one server can be specified\n"); - return -EINVAL; - } - - if (!want_sep(&value,"servers",':')) - return -EINVAL; - } + else if (strcmp(key, "cell") == 0) { + if (!want_arg(&value, "cell")) + return -EINVAL; + afs_put_cell(params->default_cell); + ret = afs_cell_lookup(value, + strlen(value), + ¶ms->default_cell); + if (ret < 0) + return -EINVAL; continue; } -#endif - printk("kAFS: Unknown mount option: '%s'\n",key); + printk("kAFS: Unknown mount option: '%s'\n", key); ret = -EINVAL; goto error; } @@ -309,67 +219,48 @@ ret = 0; error: - _leave(" = %d",ret); - + _leave(" = %d", ret); return ret; } /* end afs_super_parse_options() */ -struct fill_super_options { - const char *dev_name; - void *options; -}; +/*****************************************************************************/ +/* + * check a superblock to see if it's the one we're looking for + */ +static int afs_test_super(struct super_block *sb, void *data) +{ + struct afs_mount_params *params = data; + struct afs_super_info *as = sb->s_fs_info; + + return as->volume == params->volume; +} /* end afs_test_super() */ /*****************************************************************************/ /* * fill in the superblock */ -static int afs_fill_super(struct super_block *sb, void *_data, int silent) +static int afs_fill_super(struct super_block *sb, void *data, int silent) { + struct afs_mount_params *params = data; struct afs_super_info *as = NULL; struct dentry *root = NULL; struct inode *inode = NULL; afs_fid_t fid; - struct fill_super_options *data = _data; - const char *devname; - char *options; int ret; - _enter(""); - - if (!data) { - _leave(" = -EINVAL"); - return -EINVAL; - } - devname = data->dev_name; - options = data->options; - if (options) - options[PAGE_SIZE-1] = 0; + kenter(""); /* allocate a superblock info record */ - as = kmalloc(sizeof(struct afs_super_info),GFP_KERNEL); + as = kmalloc(sizeof(struct afs_super_info), GFP_KERNEL); if (!as) { _leave(" = -ENOMEM"); return -ENOMEM; } - memset(as,0,sizeof(struct afs_super_info)); + memset(as, 0, sizeof(struct afs_super_info)); - /* parse the options */ - if (options) { - ret = afs_super_parse_options(as,options,&devname); - if (ret<0) - goto error; - if (!devname) { - printk("kAFS: no volume name specified\n"); - ret = -EINVAL; - goto error; - } - } - - /* parse the device name */ - ret = afs_volume_lookup(devname,as->rwparent,&as->volume); - if (ret<0) - goto error; + afs_get_volume(params->volume); + as->volume = params->volume; /* fill in the superblock */ sb->s_blocksize = PAGE_CACHE_SIZE; @@ -382,8 +273,8 @@ fid.vid = as->volume->vid; fid.vnode = 1; fid.unique = 1; - ret = afs_iget(sb,&fid,&inode); - if (ret<0) + ret = afs_iget(sb, &fid, &inode); + if (ret < 0) goto error; ret = -ENOMEM; @@ -393,19 +284,18 @@ sb->s_root = root; - _leave(" = 0"); + kleave(" = 0"); return 0; error: - if (root) dput(root); - if (inode) iput(inode); - if (as) { - if (as->volume) afs_put_volume(as->volume); - kfree(as); - } + dput(root); + iput(inode); + afs_put_volume(as->volume); + kfree(as); + sb->s_fs_info = NULL; - _leave(" = %d",ret); + kleave(" = %d", ret); return ret; } /* end afs_fill_super() */ @@ -414,32 +304,72 @@ * get an AFS superblock * - TODO: don't use get_sb_nodev(), but rather call sget() directly */ -static struct super_block * -afs_get_sb(struct file_system_type *fs_type, int flags, - const char *dev_name, void *options) +static struct super_block *afs_get_sb(struct file_system_type *fs_type, + int flags, + const char *dev_name, + void *options) { + struct afs_mount_params params; struct super_block *sb; - struct fill_super_options data = { dev_name, options }; int ret; - _enter(",,%s,%p",dev_name,options); + _enter(",,%s,%p", dev_name, options); + + memset(¶ms, 0, sizeof(params)); /* start the cache manager */ ret = afscm_start(); - if (ret<0) { - _leave(" = %d",ret); + if (ret < 0) { + _leave(" = %d", ret); return ERR_PTR(ret); } + /* parse the options */ + if (options) { + ret = afs_super_parse_options(¶ms, options, &dev_name); + if (ret < 0) + goto error; + if (!dev_name) { + printk("kAFS: no volume name specified\n"); + ret = -EINVAL; + goto error; + } + } + + /* parse the device name */ + ret = afs_volume_lookup(dev_name, + params.default_cell, + params.rwpath, + ¶ms.volume); + if (ret < 0) + goto error; + /* allocate a deviceless superblock */ - sb = get_sb_nodev(fs_type, flags, &data, afs_fill_super); - if (IS_ERR(sb)) { - afscm_stop(); - return sb; + sb = sget(fs_type, afs_test_super, set_anon_super, ¶ms); + if (IS_ERR(sb)) + goto error; + + sb->s_flags = flags; + + ret = afs_fill_super(sb, ¶ms, flags & MS_VERBOSE ? 1 : 0); + if (ret < 0) { + up_write(&sb->s_umount); + deactivate_super(sb); + goto error; } + sb->s_flags |= MS_ACTIVE; - _leave(""); + afs_put_volume(params.volume); + afs_put_cell(params.default_cell); + _leave(" = %p", sb); return sb; + + error: + afs_put_volume(params.volume); + afs_put_cell(params.default_cell); + afscm_stop(); + _leave(" = %d", ret); + return ERR_PTR(ret); } /* end afs_get_sb() */ /*****************************************************************************/ @@ -452,11 +382,7 @@ _enter(""); - if (as) { - if (as->volume) afs_put_volume(as->volume); - } - - /* stop the cache manager */ + afs_put_volume(as->volume); afscm_stop(); _leave(""); @@ -466,18 +392,21 @@ /* * initialise an inode cache slab element prior to any use */ -static void afs_i_init_once(void *_vnode, kmem_cache_t *cachep, unsigned long flags) +static void afs_i_init_once(void *_vnode, kmem_cache_t *cachep, + unsigned long flags) { afs_vnode_t *vnode = (afs_vnode_t *) _vnode; - if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) == SLAB_CTOR_CONSTRUCTOR) { - memset(vnode,0,sizeof(*vnode)); + if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) == + SLAB_CTOR_CONSTRUCTOR) { + memset(vnode, 0, sizeof(*vnode)); inode_init_once(&vnode->vfs_inode); init_waitqueue_head(&vnode->update_waitq); spin_lock_init(&vnode->lock); INIT_LIST_HEAD(&vnode->cb_link); INIT_LIST_HEAD(&vnode->cb_hash_link); - afs_timer_init(&vnode->cb_timeout,&afs_vnode_cb_timed_out_ops); + afs_timer_init(&vnode->cb_timeout, + &afs_vnode_cb_timed_out_ops); } } /* end afs_i_init_once() */ @@ -490,16 +419,19 @@ { afs_vnode_t *vnode; - vnode = (afs_vnode_t *) kmem_cache_alloc(afs_inode_cachep,SLAB_KERNEL); + vnode = (afs_vnode_t *) + kmem_cache_alloc(afs_inode_cachep, SLAB_KERNEL); if (!vnode) return NULL; - memset(&vnode->fid,0,sizeof(vnode->fid)); - memset(&vnode->status,0,sizeof(vnode->status)); + atomic_inc(&afs_count_active_inodes); + + memset(&vnode->fid, 0, sizeof(vnode->fid)); + memset(&vnode->status, 0, sizeof(vnode->status)); - vnode->volume = NULL; - vnode->update_cnt = 0; - vnode->flags = 0; + vnode->volume = NULL; + vnode->update_cnt = 0; + vnode->flags = 0; return &vnode->vfs_inode; } /* end afs_alloc_inode() */ @@ -510,6 +442,10 @@ */ static void afs_destroy_inode(struct inode *inode) { - _enter("{%lu}",inode->i_ino); + _enter("{%lu}", inode->i_ino); + kmem_cache_free(afs_inode_cachep, AFS_FS_I(inode)); + + atomic_dec(&afs_count_active_inodes); + } /* end afs_destroy_inode() */ diff -Nru a/fs/afs/super.h b/fs/afs/super.h --- a/fs/afs/super.h Mon Sep 22 00:30:25 2003 +++ b/fs/afs/super.h Mon Sep 22 00:30:25 2003 @@ -29,7 +29,7 @@ */ struct afs_super_info { - afs_volume_t *volume; /* volume record */ + struct afs_volume *volume; /* volume record */ char rwparent; /* T if parent is R/W AFS volume */ }; diff -Nru a/fs/afs/types.h b/fs/afs/types.h --- a/fs/afs/types.h Mon Sep 22 00:30:21 2003 +++ b/fs/afs/types.h Mon Sep 22 00:30:21 2003 @@ -33,26 +33,13 @@ typedef struct afs_volume afs_volume_t; typedef struct afs_volume_info afs_volume_info_t; -typedef struct afsc_cache afsc_cache_t; -typedef struct afsc_cache_cell afsc_cache_cell_t; -typedef struct afsc_cache_vldb afsc_cache_vldb_t; -typedef struct afsc_cell_record afsc_cell_record_t; -typedef struct afsc_inode afsc_inode_t; -typedef struct afsc_io afsc_io_t; -typedef struct afsc_io_subop afsc_io_subop_t; -typedef struct afsc_io_queue afsc_io_queue_t; -typedef struct afsc_super_block afsc_super_block_t; -typedef struct afsc_vldb_record afsc_vldb_record_t; -typedef struct afsc_vnode_catalogue afsc_vnode_catalogue_t; -typedef struct afsc_vnode_meta afsc_vnode_meta_t; - typedef struct afsvl_dbentry afsvl_dbentry_t; typedef enum { AFSVL_RWVOL, /* read/write volume */ AFSVL_ROVOL, /* read-only volume */ AFSVL_BACKVOL, /* backup volume */ -} afs_voltype_t; +} __attribute__((packed)) afs_voltype_t; extern const char *afs_voltypes[]; diff -Nru a/fs/afs/vlclient.c b/fs/afs/vlclient.c --- a/fs/afs/vlclient.c Mon Sep 22 00:30:17 2003 +++ b/fs/afs/vlclient.c Mon Sep 22 00:30:17 2003 @@ -176,8 +176,8 @@ /* * look up a volume location database entry by name */ -int afs_rxvl_get_entry_by_name(afs_server_t *server, const char *volname, - afsc_vldb_record_t *entry) +int afs_rxvl_get_entry_by_name(afs_server_t *server, const char *volname, unsigned volnamesz, + struct afs_cache_vlocation *entry) { DECLARE_WAITQUEUE(myself,current); @@ -189,29 +189,29 @@ int ret, loop; u32 *bp, param[2], zero; - _enter(",%s,",volname); + _enter(",%*.*s,%u,", volnamesz, volnamesz, volname, volnamesz); - memset(entry,0,sizeof(*entry)); + memset(entry, 0, sizeof(*entry)); /* get hold of the vlserver connection */ - ret = afs_server_get_vlconn(server,&conn); + ret = afs_server_get_vlconn(server, &conn); if (ret<0) goto out; /* create a call through that connection */ - ret = rxrpc_create_call(conn,NULL,NULL,afs_rxvl_aemap,&call); - if (ret<0) { - printk("kAFS: Unable to create call: %d\n",ret); + ret = rxrpc_create_call(conn, NULL, NULL, afs_rxvl_aemap, &call); + if (ret < 0) { + printk("kAFS: Unable to create call: %d\n", ret); goto out_put_conn; } call->app_opcode = VLGETENTRYBYNAME; /* we want to get event notifications from the call */ - add_wait_queue(&call->waitq,&myself); + add_wait_queue(&call->waitq, &myself); /* marshall the parameters */ - piov[1].iov_len = strlen(volname); - piov[1].iov_base = (char*)volname; + piov[1].iov_len = volnamesz; + piov[1].iov_base = (char*) volname; zero = 0; piov[2].iov_len = (4 - (piov[1].iov_len & 3)) & 3; @@ -224,16 +224,16 @@ piov[0].iov_base = param; /* send the parameters to the server */ - ret = rxrpc_call_write_data(call,3,piov,RXRPC_LAST_PACKET,GFP_NOFS,0,&sent); + ret = rxrpc_call_write_data(call, 3, piov, RXRPC_LAST_PACKET, GFP_NOFS, 0, &sent); if (ret<0) goto abort; /* wait for the reply to completely arrive */ - bp = rxrpc_call_alloc_scratch(call,384); + bp = rxrpc_call_alloc_scratch(call, 384); - ret = rxrpc_call_read_data(call,bp,384,RXRPC_CALL_READ_BLOCK|RXRPC_CALL_READ_ALL); - if (ret<0) { - if (ret==-ECONNABORTED) { + ret = rxrpc_call_read_data(call, bp, 384, RXRPC_CALL_READ_BLOCK|RXRPC_CALL_READ_ALL); + if (ret < 0) { + if (ret == -ECONNABORTED) { ret = call->app_errno; goto out_unwait; } @@ -255,9 +255,9 @@ for (loop=0; loop<8; loop++) { tmp = ntohl(*bp++); - if (tmp & AFS_VLSF_RWVOL ) entry->srvtmask[loop] |= AFSC_VOL_STM_RW; - if (tmp & AFS_VLSF_ROVOL ) entry->srvtmask[loop] |= AFSC_VOL_STM_RO; - if (tmp & AFS_VLSF_BACKVOL) entry->srvtmask[loop] |= AFSC_VOL_STM_BAK; + if (tmp & AFS_VLSF_RWVOL ) entry->srvtmask[loop] |= AFS_VOL_VTM_RW; + if (tmp & AFS_VLSF_ROVOL ) entry->srvtmask[loop] |= AFS_VOL_VTM_RO; + if (tmp & AFS_VLSF_BACKVOL) entry->srvtmask[loop] |= AFS_VOL_VTM_BAK; } entry->vid[0] = ntohl(*bp++); @@ -267,26 +267,26 @@ bp++; /* clone ID */ tmp = ntohl(*bp++); /* flags */ - if (tmp & AFS_VLF_RWEXISTS ) entry->vidmask |= AFSC_VOL_STM_RW; - if (tmp & AFS_VLF_ROEXISTS ) entry->vidmask |= AFSC_VOL_STM_RO; - if (tmp & AFS_VLF_BACKEXISTS) entry->vidmask |= AFSC_VOL_STM_BAK; + if (tmp & AFS_VLF_RWEXISTS ) entry->vidmask |= AFS_VOL_VTM_RW; + if (tmp & AFS_VLF_ROEXISTS ) entry->vidmask |= AFS_VOL_VTM_RO; + if (tmp & AFS_VLF_BACKEXISTS) entry->vidmask |= AFS_VOL_VTM_BAK; ret = -ENOMEDIUM; if (!entry->vidmask) goto abort; /* success */ - entry->ctime = get_seconds(); + entry->rtime = get_seconds(); ret = 0; out_unwait: set_current_state(TASK_RUNNING); - remove_wait_queue(&call->waitq,&myself); + remove_wait_queue(&call->waitq, &myself); rxrpc_put_call(call); out_put_conn: rxrpc_put_connection(conn); out: - _leave(" = %d",ret); + _leave(" = %d", ret); return ret; abort: @@ -303,7 +303,7 @@ int afs_rxvl_get_entry_by_id(afs_server_t *server, afs_volid_t volid, afs_voltype_t voltype, - afsc_vldb_record_t *entry) + struct afs_cache_vlocation *entry) { DECLARE_WAITQUEUE(myself,current); @@ -375,9 +375,9 @@ for (loop=0; loop<8; loop++) { tmp = ntohl(*bp++); - if (tmp & AFS_VLSF_RWVOL ) entry->srvtmask[loop] |= AFSC_VOL_STM_RW; - if (tmp & AFS_VLSF_ROVOL ) entry->srvtmask[loop] |= AFSC_VOL_STM_RO; - if (tmp & AFS_VLSF_BACKVOL) entry->srvtmask[loop] |= AFSC_VOL_STM_BAK; + if (tmp & AFS_VLSF_RWVOL ) entry->srvtmask[loop] |= AFS_VOL_VTM_RW; + if (tmp & AFS_VLSF_ROVOL ) entry->srvtmask[loop] |= AFS_VOL_VTM_RO; + if (tmp & AFS_VLSF_BACKVOL) entry->srvtmask[loop] |= AFS_VOL_VTM_BAK; } entry->vid[0] = ntohl(*bp++); @@ -387,9 +387,9 @@ bp++; /* clone ID */ tmp = ntohl(*bp++); /* flags */ - if (tmp & AFS_VLF_RWEXISTS ) entry->vidmask |= AFSC_VOL_STM_RW; - if (tmp & AFS_VLF_ROEXISTS ) entry->vidmask |= AFSC_VOL_STM_RO; - if (tmp & AFS_VLF_BACKEXISTS) entry->vidmask |= AFSC_VOL_STM_BAK; + if (tmp & AFS_VLF_RWEXISTS ) entry->vidmask |= AFS_VOL_VTM_RW; + if (tmp & AFS_VLF_ROEXISTS ) entry->vidmask |= AFS_VOL_VTM_RO; + if (tmp & AFS_VLF_BACKEXISTS) entry->vidmask |= AFS_VOL_VTM_BAK; ret = -ENOMEDIUM; if (!entry->vidmask) @@ -401,13 +401,13 @@ entry->servers[1].s_addr = htonl(0xac101243); entry->servers[2].s_addr = htonl(0xac10125b /*0xac10125b*/); - entry->srvtmask[0] = AFSC_VOL_STM_RO; - entry->srvtmask[1] = AFSC_VOL_STM_RO; - entry->srvtmask[2] = AFSC_VOL_STM_RO | AFSC_VOL_STM_RW; + entry->srvtmask[0] = AFS_VOL_VTM_RO; + entry->srvtmask[1] = AFS_VOL_VTM_RO; + entry->srvtmask[2] = AFS_VOL_VTM_RO | AFS_VOL_VTM_RW; #endif /* success */ - entry->ctime = get_seconds(); + entry->rtime = get_seconds(); ret = 0; out_unwait: @@ -520,7 +520,7 @@ * attend to the asynchronous get VLDB entry by ID */ int afs_rxvl_get_entry_by_id_async2(afs_async_op_t *op, - afsc_vldb_record_t *entry) + struct afs_cache_vlocation *entry) { unsigned *bp, tmp; int loop, ret; @@ -550,9 +550,9 @@ for (loop=0; loop<8; loop++) { tmp = ntohl(*bp++); - if (tmp & AFS_VLSF_RWVOL ) entry->srvtmask[loop] |= AFSC_VOL_STM_RW; - if (tmp & AFS_VLSF_ROVOL ) entry->srvtmask[loop] |= AFSC_VOL_STM_RO; - if (tmp & AFS_VLSF_BACKVOL) entry->srvtmask[loop] |= AFSC_VOL_STM_BAK; + if (tmp & AFS_VLSF_RWVOL ) entry->srvtmask[loop] |= AFS_VOL_VTM_RW; + if (tmp & AFS_VLSF_ROVOL ) entry->srvtmask[loop] |= AFS_VOL_VTM_RO; + if (tmp & AFS_VLSF_BACKVOL) entry->srvtmask[loop] |= AFS_VOL_VTM_BAK; } entry->vid[0] = ntohl(*bp++); @@ -562,9 +562,9 @@ bp++; /* clone ID */ tmp = ntohl(*bp++); /* flags */ - if (tmp & AFS_VLF_RWEXISTS ) entry->vidmask |= AFSC_VOL_STM_RW; - if (tmp & AFS_VLF_ROEXISTS ) entry->vidmask |= AFSC_VOL_STM_RO; - if (tmp & AFS_VLF_BACKEXISTS) entry->vidmask |= AFSC_VOL_STM_BAK; + if (tmp & AFS_VLF_RWEXISTS ) entry->vidmask |= AFS_VOL_VTM_RW; + if (tmp & AFS_VLF_ROEXISTS ) entry->vidmask |= AFS_VOL_VTM_RO; + if (tmp & AFS_VLF_BACKEXISTS) entry->vidmask |= AFS_VOL_VTM_BAK; ret = -ENOMEDIUM; if (!entry->vidmask) { @@ -578,13 +578,13 @@ entry->servers[1].s_addr = htonl(0xac101243); entry->servers[2].s_addr = htonl(0xac10125b /*0xac10125b*/); - entry->srvtmask[0] = AFSC_VOL_STM_RO; - entry->srvtmask[1] = AFSC_VOL_STM_RO; - entry->srvtmask[2] = AFSC_VOL_STM_RO | AFSC_VOL_STM_RW; + entry->srvtmask[0] = AFS_VOL_VTM_RO; + entry->srvtmask[1] = AFS_VOL_VTM_RO; + entry->srvtmask[2] = AFS_VOL_VTM_RO | AFS_VOL_VTM_RW; #endif /* success */ - entry->ctime = get_seconds(); + entry->rtime = get_seconds(); ret = 0; goto done; } @@ -626,7 +626,8 @@ case RXRPC_CSTATE_CLNT_GOT_REPLY: if (call->app_read_count==0) break; - printk("kAFS: Reply bigger than expected {cst=%u asyn=%d mark=%Zu rdy=%Zu pr=%u%s}", + printk("kAFS: Reply bigger than expected" + " {cst=%u asyn=%d mark=%Zu rdy=%Zu pr=%u%s}", call->app_call_state, call->app_async_read, call->app_mark, diff -Nru a/fs/afs/vlclient.h b/fs/afs/vlclient.h --- a/fs/afs/vlclient.h Mon Sep 22 00:30:18 2003 +++ b/fs/afs/vlclient.h Mon Sep 22 00:30:18 2003 @@ -46,7 +46,7 @@ }; /* maps to "struct vldbentry" in vvl-spec.pdf */ -struct afsvl_dbentry { +struct afs_vldbentry { char name[65]; /* name of volume (including NUL char) */ afs_voltype_t type; /* volume type */ unsigned num_servers; /* num servers that hold instances of this vol */ @@ -77,19 +77,20 @@ /* look up a volume location database entry by name */ extern int afs_rxvl_get_entry_by_name(afs_server_t *server, const char *volname, - afsc_vldb_record_t *entry); + unsigned volnamesz, + struct afs_cache_vlocation *entry); /* look up a volume location database entry by ID */ extern int afs_rxvl_get_entry_by_id(afs_server_t *server, afs_volid_t volid, afs_voltype_t voltype, - afsc_vldb_record_t *entry); + struct afs_cache_vlocation *entry); extern int afs_rxvl_get_entry_by_id_async(afs_async_op_t *op, afs_volid_t volid, afs_voltype_t voltype); extern int afs_rxvl_get_entry_by_id_async2(afs_async_op_t *op, - afsc_vldb_record_t *entry); + struct afs_cache_vlocation *entry); #endif /* _LINUX_AFS_VLCLIENT_H */ diff -Nru a/fs/afs/vlocation.c b/fs/afs/vlocation.c --- a/fs/afs/vlocation.c Mon Sep 22 00:30:20 2003 +++ b/fs/afs/vlocation.c Mon Sep 22 00:30:20 2003 @@ -56,6 +56,19 @@ static afs_vlocation_t *afs_vlocation_update; /* VL currently being updated */ static spinlock_t afs_vlocation_update_lock = SPIN_LOCK_UNLOCKED; /* lock guarding update queue */ +#ifdef AFS_CACHING_SUPPORT +static cachefs_match_val_t afs_vlocation_cache_match(void *target, const void *entry); +static void afs_vlocation_cache_update(void *source, void *entry); + +struct cachefs_index_def afs_vlocation_cache_index_def = { + .name = "vldb", + .data_size = sizeof(struct afs_cache_vlocation), + .keys[0] = { CACHEFS_INDEX_KEYS_ASCIIZ, 64 }, + .match = afs_vlocation_cache_match, + .update = afs_vlocation_cache_update, +}; +#endif + /*****************************************************************************/ /* * iterate through the VL servers in a cell until one of them admits knowing about the volume in @@ -64,21 +77,23 @@ */ static int afs_vlocation_access_vl_by_name(afs_vlocation_t *vlocation, const char *name, - afsc_vldb_record_t *vldb) + unsigned namesz, + struct afs_cache_vlocation *vldb) { afs_server_t *server = NULL; afs_cell_t *cell = vlocation->cell; int count, ret; - _enter("%s,%s,",cell->name,name); + _enter("%s,%*.*s,%u", cell->name, namesz, namesz, name, namesz); ret = -ENOMEDIUM; for (count=cell->vl_naddrs; count>0; count--) { _debug("CellServ[%hu]: %08x", - cell->vl_curr_svix,cell->vl_addrs[cell->vl_curr_svix].s_addr); + cell->vl_curr_svix, + cell->vl_addrs[cell->vl_curr_svix].s_addr); /* try and create a server */ - ret = afs_server_lookup(cell,&cell->vl_addrs[cell->vl_curr_svix],&server); + ret = afs_server_lookup(cell, &cell->vl_addrs[cell->vl_curr_svix], &server); switch (ret) { case 0: break; @@ -90,7 +105,7 @@ } /* attempt to access the VL server */ - ret = afs_rxvl_get_entry_by_name(server,name,vldb); + ret = afs_rxvl_get_entry_by_name(server, name, namesz, vldb); switch (ret) { case 0: afs_put_server(server); @@ -107,7 +122,7 @@ } up_write(&server->sem); afs_put_server(server); - if (ret==-ENOMEM || ret==-ENONET) + if (ret == -ENOMEM || ret == -ENONET) goto out; goto rotate; case -ENOMEDIUM: @@ -140,21 +155,22 @@ static int afs_vlocation_access_vl_by_id(afs_vlocation_t *vlocation, afs_volid_t volid, afs_voltype_t voltype, - afsc_vldb_record_t *vldb) + struct afs_cache_vlocation *vldb) { afs_server_t *server = NULL; afs_cell_t *cell = vlocation->cell; int count, ret; - _enter("%s,%x,%d,",cell->name,volid,voltype); + _enter("%s,%x,%d,", cell->name, volid, voltype); ret = -ENOMEDIUM; for (count=cell->vl_naddrs; count>0; count--) { _debug("CellServ[%hu]: %08x", - cell->vl_curr_svix,cell->vl_addrs[cell->vl_curr_svix].s_addr); + cell->vl_curr_svix, + cell->vl_addrs[cell->vl_curr_svix].s_addr); /* try and create a server */ - ret = afs_server_lookup(cell,&cell->vl_addrs[cell->vl_curr_svix],&server); + ret = afs_server_lookup(cell, &cell->vl_addrs[cell->vl_curr_svix], &server); switch (ret) { case 0: break; @@ -166,7 +182,7 @@ } /* attempt to access the VL server */ - ret = afs_rxvl_get_entry_by_id(server,volid,voltype,vldb); + ret = afs_rxvl_get_entry_by_id(server, volid, voltype, vldb); switch (ret) { case 0: afs_put_server(server); @@ -183,7 +199,7 @@ } up_write(&server->sem); afs_put_server(server); - if (ret==-ENOMEM || ret==-ENONET) + if (ret == -ENOMEM || ret == -ENONET) goto out; goto rotate; case -ENOMEDIUM: @@ -216,74 +232,83 @@ * - lookup in the local cache if not able to find on the VL server * - insert/update in the local cache if did get a VL response */ -int afs_vlocation_lookup(afs_cell_t *cell, const char *name, afs_vlocation_t **_vlocation) +int afs_vlocation_lookup(afs_cell_t *cell, const char *name, unsigned namesz, + afs_vlocation_t **_vlocation) { - afsc_vldb_record_t vldb; + struct afs_cache_vlocation vldb; struct list_head *_p; afs_vlocation_t *vlocation; afs_voltype_t voltype; afs_volid_t vid; int active = 0, ret; - _enter(",%s,%s,",cell->name,name); + _enter("{%s},%*.*s,%u,", cell->name, namesz, namesz, name, namesz); - if (strlen(name)>sizeof(vlocation->vldb.name)) { + if (namesz > sizeof(vlocation->vldb.name)) { _leave(" = -ENAMETOOLONG"); return -ENAMETOOLONG; } /* search the cell's active list first */ - list_for_each(_p,&cell->vl_list) { - vlocation = list_entry(_p,afs_vlocation_t,link); - if (strncmp(vlocation->vldb.name,name,sizeof(vlocation->vldb.name))==0) + list_for_each(_p, &cell->vl_list) { + vlocation = list_entry(_p, afs_vlocation_t, link); + if (namesz < sizeof(vlocation->vldb.name) && + vlocation->vldb.name[namesz] != '\0') + continue; + + if (memcmp(vlocation->vldb.name, name, namesz) == 0) goto found_in_memory; } /* search the cell's graveyard list second */ spin_lock(&cell->vl_gylock); - list_for_each(_p,&cell->vl_graveyard) { - vlocation = list_entry(_p,afs_vlocation_t,link); - if (strncmp(vlocation->vldb.name,name,sizeof(vlocation->vldb.name))==0) + list_for_each(_p, &cell->vl_graveyard) { + vlocation = list_entry(_p, afs_vlocation_t, link); + if (namesz < sizeof(vlocation->vldb.name) && + vlocation->vldb.name[namesz] != '\0') + continue; + + if (memcmp(vlocation->vldb.name, name, namesz) == 0) goto found_in_graveyard; } spin_unlock(&cell->vl_gylock); /* not in the cell's in-memory lists - create a new record */ - vlocation = kmalloc(sizeof(afs_vlocation_t),GFP_KERNEL); + vlocation = kmalloc(sizeof(afs_vlocation_t), GFP_KERNEL); if (!vlocation) return -ENOMEM; - memset(vlocation,0,sizeof(afs_vlocation_t)); - atomic_set(&vlocation->usage,1); + memset(vlocation, 0, sizeof(afs_vlocation_t)); + atomic_set(&vlocation->usage, 1); INIT_LIST_HEAD(&vlocation->link); rwlock_init(&vlocation->lock); - strncpy(vlocation->vldb.name,name,sizeof(vlocation->vldb.name)); + memcpy(vlocation->vldb.name, name, namesz); - afs_timer_init(&vlocation->timeout,&afs_vlocation_timer_ops); - afs_timer_init(&vlocation->upd_timer,&afs_vlocation_update_timer_ops); - afs_async_op_init(&vlocation->upd_op,&afs_vlocation_update_op_ops); - - INIT_LIST_HEAD(&vlocation->caches); + afs_timer_init(&vlocation->timeout, &afs_vlocation_timer_ops); + afs_timer_init(&vlocation->upd_timer, &afs_vlocation_update_timer_ops); + afs_async_op_init(&vlocation->upd_op, &afs_vlocation_update_op_ops); afs_get_cell(cell); vlocation->cell = cell; - list_add_tail(&vlocation->link,&cell->vl_list); + list_add_tail(&vlocation->link, &cell->vl_list); -#if 0 - /* search local cache if wasn't in memory */ - ret = afsc_lookup_vlocation(vlocation); - switch (ret) { - default: goto error; /* disk error */ - case 0: goto found_in_cache; /* pulled from local cache into memory */ - case -ENOENT: break; /* not in local cache */ - } +#ifdef AFS_CACHING_SUPPORT + /* we want to store it in the cache, plus it might already be encached */ + cachefs_acquire_cookie(cell->cache, + &afs_volume_cache_index_def, + vlocation, + &vlocation->cache); + + if (vlocation->valid) + goto found_in_cache; #endif /* try to look up an unknown volume in the cell VL databases by name */ - ret = afs_vlocation_access_vl_by_name(vlocation,name,&vldb); + ret = afs_vlocation_access_vl_by_name(vlocation, name, namesz, &vldb); if (ret<0) { - printk("kAFS: failed to locate '%s' in cell '%s'\n",name,cell->name); + printk("kAFS: failed to locate '%*.*s' in cell '%s'\n", + namesz, namesz, name, cell->name); goto error; } @@ -294,7 +319,7 @@ _debug("found in graveyard"); atomic_inc(&vlocation->usage); list_del(&vlocation->link); - list_add_tail(&vlocation->link,&cell->vl_list); + list_add_tail(&vlocation->link, &cell->vl_list); spin_unlock(&cell->vl_gylock); afs_kafstimod_del_timer(&vlocation->timeout); @@ -308,30 +333,32 @@ active: active = 1; -/* found_in_cache: */ +#ifdef AFS_CACHING_SUPPORT + found_in_cache: +#endif /* try to look up a cached volume in the cell VL databases by ID */ _debug("found in cache"); _debug("Locally Cached: %s %02x { %08x(%x) %08x(%x) %08x(%x) }", vlocation->vldb.name, vlocation->vldb.vidmask, - ntohl(vlocation->vldb.servers[0].s_addr),vlocation->vldb.srvtmask[0], - ntohl(vlocation->vldb.servers[1].s_addr),vlocation->vldb.srvtmask[1], - ntohl(vlocation->vldb.servers[2].s_addr),vlocation->vldb.srvtmask[2] + ntohl(vlocation->vldb.servers[0].s_addr), vlocation->vldb.srvtmask[0], + ntohl(vlocation->vldb.servers[1].s_addr), vlocation->vldb.srvtmask[1], + ntohl(vlocation->vldb.servers[2].s_addr), vlocation->vldb.srvtmask[2] ); _debug("Vids: %08x %08x %08x", - vlocation->vldb.vid[0],vlocation->vldb.vid[1],vlocation->vldb.vid[2]); + vlocation->vldb.vid[0], vlocation->vldb.vid[1], vlocation->vldb.vid[2]); - if (vlocation->vldb.vidmask & AFSC_VOL_STM_RW) { + if (vlocation->vldb.vidmask & AFS_VOL_VTM_RW) { vid = vlocation->vldb.vid[0]; voltype = AFSVL_RWVOL; } - else if (vlocation->vldb.vidmask & AFSC_VOL_STM_RO) { + else if (vlocation->vldb.vidmask & AFS_VOL_VTM_RO) { vid = vlocation->vldb.vid[1]; voltype = AFSVL_ROVOL; } - else if (vlocation->vldb.vidmask & AFSC_VOL_STM_BAK) { + else if (vlocation->vldb.vidmask & AFS_VOL_VTM_BAK) { vid = vlocation->vldb.vid[2]; voltype = AFSVL_BACKVOL; } @@ -341,41 +368,44 @@ voltype = 0; } - ret = afs_vlocation_access_vl_by_id(vlocation,vid,voltype,&vldb); + ret = afs_vlocation_access_vl_by_id(vlocation, vid, voltype, &vldb); switch (ret) { /* net error */ default: - printk("kAFS: failed to volume '%s' (%x) up in '%s': %d\n", - name,vid,cell->name,ret); + printk("kAFS: failed to volume '%*.*s' (%x) up in '%s': %d\n", + namesz, namesz, name, vid, cell->name, ret); goto error; /* pulled from local cache into memory */ - case 0: + case 0: goto found_on_vlserver; /* uh oh... looks like the volume got deleted */ case -ENOMEDIUM: - printk("kAFS: volume '%s' (%x) does not exist '%s'\n",name,vid,cell->name); + printk("kAFS: volume '%*.*s' (%x) does not exist '%s'\n", + namesz, namesz, name, vid, cell->name); /* TODO: make existing record unavailable */ goto error; } found_on_vlserver: - _debug("Done VL Lookup: %s %02x { %08x(%x) %08x(%x) %08x(%x) }", - name, + _debug("Done VL Lookup: %*.*s %02x { %08x(%x) %08x(%x) %08x(%x) }", + namesz, namesz, name, vldb.vidmask, - ntohl(vldb.servers[0].s_addr),vldb.srvtmask[0], - ntohl(vldb.servers[1].s_addr),vldb.srvtmask[1], - ntohl(vldb.servers[2].s_addr),vldb.srvtmask[2] + ntohl(vldb.servers[0].s_addr), vldb.srvtmask[0], + ntohl(vldb.servers[1].s_addr), vldb.srvtmask[1], + ntohl(vldb.servers[2].s_addr), vldb.srvtmask[2] ); - _debug("Vids: %08x %08x %08x",vldb.vid[0],vldb.vid[1],vldb.vid[2]); + _debug("Vids: %08x %08x %08x", vldb.vid[0], vldb.vid[1], vldb.vid[2]); - if (strncmp(vldb.name,name,sizeof(vlocation->vldb.name))!=0) - printk("kAFS: name of volume '%s' changed to '%s' on server\n",name,vldb.name); + if ((namesz < sizeof(vlocation->vldb.name) && vlocation->vldb.name[namesz] != '\0') || + memcmp(vldb.name, name, namesz) != 0) + printk("kAFS: name of volume '%*.*s' changed to '%s' on server\n", + namesz, namesz, name, vldb.name); - memcpy(&vlocation->vldb,&vldb,sizeof(vlocation->vldb)); + memcpy(&vlocation->vldb, &vldb, sizeof(vlocation->vldb)); #if 0 /* add volume entry to local cache */ @@ -384,7 +414,7 @@ goto error; #endif - afs_kafstimod_add_timer(&vlocation->upd_timer,10*HZ); + afs_kafstimod_add_timer(&vlocation->upd_timer, 10*HZ); *_vlocation = vlocation; _leave(" = 0 (%p)",vlocation); @@ -397,10 +427,10 @@ } else { list_del(&vlocation->link); - afs_put_cell(vlocation->cell); -#if 0 - afs_put_cache(vlocation->cache); +#ifdef AFS_CACHING_SUPPORT + cachefs_relinquish_cookie(vlocation->cache, 0); #endif + afs_put_cell(vlocation->cell); kfree(vlocation); } } @@ -414,12 +444,17 @@ * finish using a volume location record * - caller must have cell->vol_sem write-locked */ -void __afs_put_vlocation(afs_vlocation_t *vlocation) +void __afs_put_vlocation(struct afs_vlocation *vlocation) { - afs_cell_t *cell = vlocation->cell; + struct afs_cell *cell; + + if (!vlocation) + return; _enter("%s",vlocation->vldb.name); + cell = vlocation->cell; + /* sanity check */ if (atomic_read(&vlocation->usage)<=0) BUG(); @@ -453,11 +488,13 @@ */ void afs_put_vlocation(afs_vlocation_t *vlocation) { - afs_cell_t *cell = vlocation->cell; + if (vlocation) { + struct afs_cell *cell = vlocation->cell; - down_write(&cell->vl_sem); - __afs_put_vlocation(vlocation); - up_write(&cell->vl_sem); + down_write(&cell->vl_sem); + __afs_put_vlocation(vlocation); + up_write(&cell->vl_sem); + } } /* end afs_put_vlocation() */ /*****************************************************************************/ @@ -489,10 +526,10 @@ } /* we can now destroy it properly */ - afs_put_cell(cell); -#if 0 - afs_put_cache(vlocation->cache); +#ifdef AFS_CACHING_SUPPORT + cachefs_relinquish_cookie(vlocation->cache,0); #endif + afs_put_cell(cell); kfree(vlocation); @@ -513,15 +550,15 @@ vlocation->vldb.name,vlocation->upd_first_svix,vlocation->upd_curr_svix); /* try to look up a cached volume in the cell VL databases by ID */ - if (vlocation->vldb.vidmask & AFSC_VOL_STM_RW) { + if (vlocation->vldb.vidmask & AFS_VOL_VTM_RW) { vid = vlocation->vldb.vid[0]; voltype = AFSVL_RWVOL; } - else if (vlocation->vldb.vidmask & AFSC_VOL_STM_RO) { + else if (vlocation->vldb.vidmask & AFS_VOL_VTM_RO) { vid = vlocation->vldb.vid[1]; voltype = AFSVL_ROVOL; } - else if (vlocation->vldb.vidmask & AFSC_VOL_STM_BAK) { + else if (vlocation->vldb.vidmask & AFS_VOL_VTM_BAK) { vid = vlocation->vldb.vid[2]; voltype = AFSVL_BACKVOL; } @@ -571,10 +608,8 @@ printk("kAFS: Abandoning VL update '%s': %d\n",vlocation->vldb.name,ret); /* discard the server record */ - if (vlocation->upd_op.server) { - afs_put_server(vlocation->upd_op.server); - vlocation->upd_op.server = NULL; - } + afs_put_server(vlocation->upd_op.server); + vlocation->upd_op.server = NULL; spin_lock(&afs_vlocation_update_lock); afs_vlocation_update = NULL; @@ -669,7 +704,7 @@ */ static void afs_vlocation_update_attend(afs_async_op_t *op) { - afsc_vldb_record_t vldb; + struct afs_cache_vlocation vldb; afs_vlocation_t *vlocation = list_entry(op,afs_vlocation_t,upd_op); unsigned tmp; int ret; @@ -762,11 +797,9 @@ try_next: vlocation->upd_busy_cnt = 0; - if (vlocation->upd_op.server) { - /* discard the server record */ - afs_put_server(vlocation->upd_op.server); - vlocation->upd_op.server = NULL; - } + /* discard the server record */ + afs_put_server(vlocation->upd_op.server); + vlocation->upd_op.server = NULL; tmp = vlocation->cell->vl_naddrs; if (tmp==0) @@ -822,3 +855,68 @@ _leave(""); } /* end afs_vlocation_update_discard() */ + +/*****************************************************************************/ +/* + * match a VLDB record stored in the cache + * - may also load target from entry + */ +#ifdef AFS_CACHING_SUPPORT +static cachefs_match_val_t afs_vlocation_cache_match(void *target, + const void *entry) +{ + const struct afs_cache_vlocation *vldb = entry; + struct afs_vlocation *vlocation = target; + + _enter("{%s},{%s}", vlocation->vldb.name, vldb->name); + + if (strncmp(vlocation->vldb.name, + vldb->name, + sizeof(vldb->name)) == 0) { + if (!vlocation->valid || + vlocation->vldb.rtime == vldb->rtime) { + struct_cpy(&vlocation->vldb, vldb); + vlocation->valid = 1; + _leave(" = SUCCESS [c->m]"); + return CACHEFS_MATCH_SUCCESS; + } + /* need to update cache if cached info differs */ + else if (memcmp(&vlocation->vldb, vldb, sizeof(*vldb)) != 0) { + /* delete if VIDs for this name differ */ + if (memcmp(&vlocation->vldb.vid, + &vldb->vid, + sizeof(vldb->vid)) != 0) { + _leave(" = DELETE"); + return CACHEFS_MATCH_SUCCESS_DELETE; + } + + _leave(" = UPDATE"); + return CACHEFS_MATCH_SUCCESS_UPDATE; + } + else { + _leave(" = SUCCESS"); + return CACHEFS_MATCH_SUCCESS; + } + } + + _leave(" = FAILED"); + return CACHEFS_MATCH_FAILED; +} /* end afs_vlocation_cache_match() */ +#endif + +/*****************************************************************************/ +/* + * update a VLDB record stored in the cache + */ +#ifdef AFS_CACHING_SUPPORT +static void afs_vlocation_cache_update(void *source, void *entry) +{ + struct afs_cache_vlocation *vldb = entry; + struct afs_vlocation *vlocation = source; + + _enter(""); + + struct_cpy(vldb,&vlocation->vldb); + +} /* end afs_vlocation_cache_update() */ +#endif diff -Nru a/fs/afs/vnode.c b/fs/afs/vnode.c --- a/fs/afs/vnode.c Mon Sep 22 00:30:21 2003 +++ b/fs/afs/vnode.c Mon Sep 22 00:30:21 2003 @@ -29,6 +29,19 @@ .timed_out = afs_vnode_cb_timed_out, }; +#ifdef AFS_CACHING_SUPPORT +static cachefs_match_val_t afs_vnode_cache_match(void *target, const void *entry); +static void afs_vnode_cache_update(void *source, void *entry); + +struct cachefs_index_def afs_vnode_cache_index_def = { + .name = "vnode", + .data_size = sizeof(struct afs_cache_vnode), + .keys[0] = { CACHEFS_INDEX_KEYS_BIN, 4 }, + .match = afs_vnode_cache_match, + .update = afs_vnode_cache_update, +}; +#endif + /*****************************************************************************/ /* * handle a callback timing out @@ -61,8 +74,7 @@ spin_unlock(&vnode->lock); - if (oldserver) - afs_put_server(oldserver); + afs_put_server(oldserver); _leave(""); } /* end afs_vnode_cb_timed_out() */ @@ -126,8 +138,7 @@ wake_up_all(&vnode->update_waitq); - if (oldserver) - afs_put_server(oldserver); + afs_put_server(oldserver); _leave(""); @@ -272,7 +283,7 @@ /*****************************************************************************/ /* * break any outstanding callback on a vnode - * - only relevant to server that issued it + * - only relevent to server that issued it */ int afs_vnode_give_up_callback(afs_vnode_t *vnode) { @@ -314,3 +325,56 @@ _leave(" = %d",ret); return ret; } /* end afs_vnode_give_up_callback() */ + +/*****************************************************************************/ +/* + * match a vnode record stored in the cache + */ +#ifdef AFS_CACHING_SUPPORT +static cachefs_match_val_t afs_vnode_cache_match(void *target, const void *entry) +{ + const struct afs_cache_vnode *cvnode = entry; + struct afs_vnode *vnode = target; + + _enter("{%x,%x,%Lx},{%x,%x,%Lx}", + vnode->fid.vnode, + vnode->fid.unique, + vnode->status.version, + cvnode->vnode_id, + cvnode->vnode_unique, + cvnode->data_version); + + if (vnode->fid.vnode != cvnode->vnode_id) { + _leave(" = FAILED"); + return CACHEFS_MATCH_FAILED; + } + + if (vnode->fid.unique != cvnode->vnode_unique || + vnode->status.version != cvnode->data_version) { + _leave(" = DELETE"); + return CACHEFS_MATCH_SUCCESS_DELETE; + } + + _leave(" = SUCCESS"); + return CACHEFS_MATCH_SUCCESS; +} /* end afs_vnode_cache_match() */ +#endif + +/*****************************************************************************/ +/* + * update a vnode record stored in the cache + */ +#ifdef AFS_CACHING_SUPPORT +static void afs_vnode_cache_update(void *source, void *entry) +{ + struct afs_cache_vnode *cvnode = entry; + struct afs_vnode *vnode = source; + + _enter(""); + + cvnode->vnode_id = vnode->fid.vnode; + cvnode->vnode_unique = vnode->fid.unique; + cvnode->data_version = vnode->status.version; + +} /* end afs_vnode_cache_update() */ +#endif diff -Nru a/fs/afs/vnode.h b/fs/afs/vnode.h --- a/fs/afs/vnode.h Mon Sep 22 00:30:17 2003 +++ b/fs/afs/vnode.h Mon Sep 22 00:30:17 2003 @@ -15,6 +15,7 @@ #include #include "server.h" #include "kafstimod.h" +#include "cache.h" #ifdef __KERNEL__ @@ -22,16 +23,33 @@ /*****************************************************************************/ /* + * vnode catalogue entry + */ +struct afs_cache_vnode +{ + afs_vnodeid_t vnode_id; /* vnode ID */ + unsigned vnode_unique; /* vnode ID uniquifier */ + afs_dataversion_t data_version; /* data version */ +}; + +#ifdef AFS_CACHING_SUPPORT +extern struct cachefs_index_def afs_vnode_cache_index_def; +#endif + +/*****************************************************************************/ +/* * AFS inode private data */ struct afs_vnode { struct inode vfs_inode; /* the VFS's inode record */ - afs_volume_t *volume; /* volume on which vnode resides */ - afs_fid_t fid; /* the file identifier for this inode */ - afs_file_status_t status; /* AFS status info for this file */ - unsigned nix; /* vnode index in cache */ + struct afs_volume *volume; /* volume on which vnode resides */ + struct afs_fid fid; /* the file identifier for this inode */ + struct afs_file_status status; /* AFS status info for this file */ +#ifdef AFS_CACHING_SUPPORT + struct cachefs_cookie *cache; /* caching cookie */ +#endif wait_queue_head_t update_waitq; /* status fetch waitqueue */ unsigned update_cnt; /* number of outstanding ops that will update the @@ -43,10 +61,10 @@ #define AFS_VNODE_MOUNTPOINT 0x00000004 /* set if vnode is a mountpoint symlink */ /* outstanding callback notification on this file */ - afs_server_t *cb_server; /* server that made the current promise */ + struct afs_server *cb_server; /* server that made the current promise */ struct list_head cb_link; /* link in server's promises list */ struct list_head cb_hash_link; /* link in master callback hash */ - afs_timer_t cb_timeout; /* timeout on promise */ + struct afs_timer cb_timeout; /* timeout on promise */ unsigned cb_version; /* callback version */ unsigned cb_expiry; /* callback expiry time */ afs_callback_type_t cb_type; /* type of callback */ diff -Nru a/fs/afs/volume.c b/fs/afs/volume.c --- a/fs/afs/volume.c Mon Sep 22 00:30:18 2003 +++ b/fs/afs/volume.c Mon Sep 22 00:30:18 2003 @@ -16,7 +16,9 @@ #include #include #include "volume.h" +#include "vnode.h" #include "cell.h" +#include "cache.h" #include "cmservice.h" #include "fsclient.h" #include "vlclient.h" @@ -24,6 +26,20 @@ const char *afs_voltypes[] = { "R/W", "R/O", "BAK" }; +#ifdef AFS_CACHING_SUPPORT +static cachefs_match_val_t afs_volume_cache_match(void *target, const void *entry); +static void afs_volume_cache_update(void *source, void *entry); + +struct cachefs_index_def afs_volume_cache_index_def = { + .name = "volume", + .data_size = sizeof(struct afs_cache_vhash), + .keys[0] = { CACHEFS_INDEX_KEYS_BIN, 1 }, + .keys[1] = { CACHEFS_INDEX_KEYS_BIN, 1 }, + .match = afs_volume_cache_match, + .update = afs_volume_cache_update, +}; +#endif + /*****************************************************************************/ /* * lookup a volume by name @@ -43,19 +59,19 @@ * - Rule 2: If parent volume is R/O, then mount R/O volume by preference, R/W if not available * - Rule 3: If parent volume is R/W, then only mount R/W volume unless explicitly told otherwise */ -int afs_volume_lookup(const char *name, int rwparent, afs_volume_t **_volume) +int afs_volume_lookup(const char *name, struct afs_cell *cell, int rwpath, + afs_volume_t **_volume) { - afs_vlocation_t *vlocation = NULL; + struct afs_vlocation *vlocation = NULL; + struct afs_volume *volume = NULL; afs_voltype_t type; - afs_volume_t *volume = NULL; - afs_cell_t *cell = NULL; - char *cellname, *volname, *suffix; + const char *cellname, *volname, *suffix; char srvtmask; - int force, ret, loop; + int force, ret, loop, cellnamesz, volnamesz; - _enter(",%s,",name); + _enter("%s,,%d,", name, rwpath); - if (!name || (name[0]!='%' && name[0]!='#') || !name[1]) { + if (!name || (name[0] != '%' && name[0] != '#') || !name[1]) { printk("kAFS: unparsable volume name\n"); return -EINVAL; } @@ -64,24 +80,22 @@ force = 0; type = AFSVL_ROVOL; - if (rwparent || name[0]=='%') { + if (rwpath || name[0] == '%') { type = AFSVL_RWVOL; force = 1; } - suffix = strrchr(name,'.'); + suffix = strrchr(name, '.'); if (suffix) { - if (strcmp(suffix,".readonly")==0) { + if (strcmp(suffix, ".readonly") == 0) { type = AFSVL_ROVOL; force = 1; } - else if (strcmp(suffix,".backup")==0) { + else if (strcmp(suffix, ".backup") == 0) { type = AFSVL_BACKVOL; force = 1; } - else if (suffix[1]==0) { - *suffix = 0; - suffix = NULL; + else if (suffix[1] == 0) { } else { suffix = NULL; @@ -90,38 +104,45 @@ /* split the cell and volume names */ name++; - volname = strchr(name,':'); + volname = strchr(name, ':'); if (volname) { - *volname++ = 0; cellname = name; + cellnamesz = volname - name; } else { volname = name; cellname = NULL; + cellnamesz = 0; } - _debug("CELL:%s VOLUME:%s SUFFIX:%s TYPE:%d%s", - cellname,volname,suffix?:"-",type,force?" FORCE":""); + volnamesz = suffix ? suffix - volname : strlen(volname); - /* lookup the cell record */ - ret = afs_cell_lookup(cellname,&cell); - if (ret<0) - printk("kAFS: unable to lookup cell '%s'\n",cellname?:""); + _debug("CELL:%*.*s [%p] VOLUME:%*.*s SUFFIX:%s TYPE:%d%s", + cellnamesz, cellnamesz, cellname ?: "", cell, + volnamesz, volnamesz, volname, suffix ?: "-", + type, + force ? " FORCE" : ""); - if (cellname) volname[-1] = ':'; - if (ret<0) - goto error; + /* lookup the cell record */ + if (cellname || !cell) { + ret = afs_cell_lookup(cellname, cellnamesz, &cell); + if (ret<0) { + printk("kAFS: unable to lookup cell '%s'\n", cellname ?: ""); + goto error; + } + } + else { + afs_get_cell(cell); + } /* lookup the volume location record */ - if (suffix) *suffix = 0; - ret = afs_vlocation_lookup(cell,volname,&vlocation); - if (suffix) *suffix = '.'; - if (ret<0) + ret = afs_vlocation_lookup(cell, volname, volnamesz, &vlocation); + if (ret < 0) goto error; /* make the final decision on the type we want */ ret = -ENOMEDIUM; - if (force && !(vlocation->vldb.vidmask & (1<vldb.vidmask & (1 << type))) goto error; srvtmask = 0; @@ -129,13 +150,13 @@ srvtmask |= vlocation->vldb.srvtmask[loop]; if (force) { - if (!(srvtmask & (1 <usage,1); - volume->type = type; - volume->type_force = force; - volume->cell = cell; - volume->vid = vlocation->vldb.vid[type]; + memset(volume, 0, sizeof(afs_volume_t)); + atomic_set(&volume->usage, 1); + volume->type = type; + volume->type_force = force; + volume->cell = cell; + volume->vid = vlocation->vldb.vid[type]; init_rwsem(&volume->server_sem); @@ -183,15 +204,20 @@ } /* attach the cache and volume location */ -#if 0 - afs_get_cache(cache); volume->cache = cache; +#ifdef AFS_CACHING_SUPPORT + cachefs_acquire_cookie(vlocation->cache, + &afs_vnode_cache_index_def, + volume, + &volume->cache); #endif - afs_get_vlocation(vlocation); volume->vlocation = vlocation; + + afs_get_vlocation(vlocation); + volume->vlocation = vlocation; vlocation->vols[type] = volume; success: - _debug("kAFS selected %s volume %08x",afs_voltypes[volume->type],volume->vid); + _debug("kAFS selected %s volume %08x", afs_voltypes[volume->type], volume->vid); *_volume = volume; ret = 0; @@ -199,18 +225,17 @@ error_up: up_write(&cell->vl_sem); error: - if (vlocation) afs_put_vlocation(vlocation); - if (cell) afs_put_cell(cell); + afs_put_vlocation(vlocation); + afs_put_cell(cell); - _leave(" = %d (%p)",ret,volume); + _leave(" = %d (%p)", ret, volume); return ret; error_discard: up_write(&cell->vl_sem); for (loop=volume->nservers-1; loop>=0; loop--) - if (volume->servers[loop]) - afs_put_server(volume->servers[loop]); + afs_put_server(volume->servers[loop]); kfree(volume); goto error; @@ -225,6 +250,9 @@ afs_vlocation_t *vlocation; int loop; + if (!volume) + return; + _enter("%p",volume); vlocation = volume->vlocation; @@ -246,16 +274,14 @@ up_write(&vlocation->cell->vl_sem); - afs_put_vlocation(vlocation); - /* finish cleaning up the volume */ -#if 0 - if (volume->cache) afs_put_cache(volume->cache); +#ifdef AFS_CACHING_SUPPORT + cachefs_relinquish_cookie(volume->cache,0); #endif + afs_put_vlocation(vlocation); for (loop=volume->nservers-1; loop>=0; loop--) - if (volume->servers[loop]) - afs_put_server(volume->servers[loop]); + afs_put_server(volume->servers[loop]); kfree(volume); @@ -428,3 +454,42 @@ return 0; } /* end afs_volume_release_fileserver() */ + +/*****************************************************************************/ +/* + * match a volume hash record stored in the cache + */ +#ifdef AFS_CACHING_SUPPORT +static cachefs_match_val_t afs_volume_cache_match(void *target, const void *entry) +{ + const struct afs_cache_vhash *vhash = entry; + struct afs_volume *volume = target; + + _enter("{%u},{%u}", volume->type, vhash->vtype); + + if (volume->type == vhash->vtype) { + _leave(" = SUCCESS"); + return CACHEFS_MATCH_SUCCESS; + } + + _leave(" = FAILED"); + return CACHEFS_MATCH_FAILED; +} /* end afs_volume_cache_match() */ +#endif + +/*****************************************************************************/ +/* + * update a volume hash record stored in the cache + */ +#ifdef AFS_CACHING_SUPPORT +static void afs_volume_cache_update(void *source, void *entry) +{ + struct afs_cache_vhash *vhash = entry; + struct afs_volume *volume = source; + + _enter(""); + + vhash->vtype = volume->type; + +} /* end afs_volume_cache_update() */ +#endif diff -Nru a/fs/afs/volume.h b/fs/afs/volume.h --- a/fs/afs/volume.h Mon Sep 22 00:30:24 2003 +++ b/fs/afs/volume.h Mon Sep 22 00:30:24 2003 @@ -16,7 +16,7 @@ #include "fsclient.h" #include "kafstimod.h" #include "kafsasyncd.h" -#include "cache-layout.h" +#include "cache.h" #define __packed __attribute__((packed)) @@ -30,21 +30,60 @@ /*****************************************************************************/ /* + * entry in the cached volume location catalogue + */ +struct afs_cache_vlocation +{ + uint8_t name[64]; /* volume name (lowercase, padded with NULs) */ + uint8_t nservers; /* number of entries used in servers[] */ + uint8_t vidmask; /* voltype mask for vid[] */ + uint8_t srvtmask[8]; /* voltype masks for servers[] */ +#define AFS_VOL_VTM_RW 0x01 /* R/W version of the volume is available (on this server) */ +#define AFS_VOL_VTM_RO 0x02 /* R/O version of the volume is available (on this server) */ +#define AFS_VOL_VTM_BAK 0x04 /* backup version of the volume is available (on this server) */ + + afs_volid_t vid[3]; /* volume IDs for R/W, R/O and Bak volumes */ + struct in_addr servers[8]; /* fileserver addresses */ + time_t rtime; /* last retrieval time */ +}; + +#ifdef AFS_CACHING_SUPPORT +extern struct cachefs_index_def afs_vlocation_cache_index_def; +#endif + +/*****************************************************************************/ +/* + * volume -> vnode hash table entry + */ +struct afs_cache_vhash +{ + afs_voltype_t vtype; /* which volume variation */ + uint8_t hash_bucket; /* which hash bucket this represents */ +} __attribute__((packed)); + +#ifdef AFS_CACHING_SUPPORT +extern struct cachefs_index_def afs_volume_cache_index_def; +#endif + +/*****************************************************************************/ +/* * AFS volume location record */ struct afs_vlocation { atomic_t usage; struct list_head link; /* link in cell volume location list */ - afs_timer_t timeout; /* decaching timer */ - afs_cell_t *cell; /* cell to which volume belongs */ - struct list_head caches; /* backing caches */ - afsc_vldb_record_t vldb; /* volume information DB record */ + struct afs_timer timeout; /* decaching timer */ + struct afs_cell *cell; /* cell to which volume belongs */ +#ifdef AFS_CACHING_SUPPORT + struct cachefs_cookie *cache; /* caching cookie */ +#endif + struct afs_cache_vlocation vldb; /* volume information DB record */ struct afs_volume *vols[3]; /* volume access record pointer (index by type) */ rwlock_t lock; /* access lock */ unsigned long read_jif; /* time at which last read from vlserver */ - afs_timer_t upd_timer; /* update timer */ - afs_async_op_t upd_op; /* update operation */ + struct afs_timer upd_timer; /* update timer */ + struct afs_async_op upd_op; /* update operation */ afs_vlocation_upd_t upd_state; /* update state */ unsigned short upd_first_svix; /* first server index during update */ unsigned short upd_curr_svix; /* current server index during update */ @@ -53,13 +92,16 @@ unsigned short valid; /* T if valid */ }; -extern int afs_vlocation_lookup(afs_cell_t *cell, const char *name, afs_vlocation_t **_vlocation); +extern int afs_vlocation_lookup(struct afs_cell *cell, + const char *name, + unsigned namesz, + struct afs_vlocation **_vlocation); #define afs_get_vlocation(V) do { atomic_inc(&(V)->usage); } while(0) -extern void __afs_put_vlocation(afs_vlocation_t *vlocation); -extern void afs_put_vlocation(afs_vlocation_t *vlocation); -extern void afs_vlocation_do_timeout(afs_vlocation_t *vlocation); +extern void __afs_put_vlocation(struct afs_vlocation *vlocation); +extern void afs_put_vlocation(struct afs_vlocation *vlocation); +extern void afs_vlocation_do_timeout(struct afs_vlocation *vlocation); /*****************************************************************************/ /* @@ -68,25 +110,34 @@ struct afs_volume { atomic_t usage; - afs_cell_t *cell; /* cell to which belongs (unrefd ptr) */ - afs_vlocation_t *vlocation; /* volume location */ + struct afs_cell *cell; /* cell to which belongs (unrefd ptr) */ + struct afs_vlocation *vlocation; /* volume location */ +#ifdef AFS_CACHING_SUPPORT + struct cachefs_cookie *cache; /* caching cookie */ +#endif afs_volid_t vid; /* volume ID */ afs_voltype_t __packed type; /* type of volume */ char type_force; /* force volume type (suppress R/O -> R/W) */ unsigned short nservers; /* number of server slots filled */ unsigned short rjservers; /* number of servers discarded due to -ENOMEDIUM */ - afs_server_t *servers[8]; /* servers on which volume resides (ordered) */ + struct afs_server *servers[8]; /* servers on which volume resides (ordered) */ struct rw_semaphore server_sem; /* lock for accessing current server */ }; -extern int afs_volume_lookup(const char *name, int ro, afs_volume_t **_volume); +extern int afs_volume_lookup(const char *name, + struct afs_cell *cell, + int rwpath, + struct afs_volume **_volume); #define afs_get_volume(V) do { atomic_inc(&(V)->usage); } while(0) -extern void afs_put_volume(afs_volume_t *volume); +extern void afs_put_volume(struct afs_volume *volume); -extern int afs_volume_pick_fileserver(afs_volume_t *volume, afs_server_t **_server); +extern int afs_volume_pick_fileserver(struct afs_volume *volume, + struct afs_server **_server); -extern int afs_volume_release_fileserver(afs_volume_t *volume, afs_server_t *server, int result); +extern int afs_volume_release_fileserver(struct afs_volume *volume, + struct afs_server *server, + int result); #endif /* _LINUX_AFS_VOLUME_H */ diff -Nru a/fs/autofs/autofs_i.h b/fs/autofs/autofs_i.h --- a/fs/autofs/autofs_i.h Mon Sep 22 00:30:23 2003 +++ b/fs/autofs/autofs_i.h Mon Sep 22 00:30:23 2003 @@ -123,7 +123,7 @@ filesystem without "magic".) */ static inline int autofs_oz_mode(struct autofs_sb_info *sbi) { - return sbi->catatonic || current->pgrp == sbi->oz_pgrp; + return sbi->catatonic || process_group(current) == sbi->oz_pgrp; } /* Hash operations */ diff -Nru a/fs/autofs/inode.c b/fs/autofs/inode.c --- a/fs/autofs/inode.c Mon Sep 22 00:30:23 2003 +++ b/fs/autofs/inode.c Mon Sep 22 00:30:23 2003 @@ -51,7 +51,7 @@ *uid = current->uid; *gid = current->gid; - *pgrp = current->pgrp; + *pgrp = process_group(current); *minproto = *maxproto = AUTOFS_PROTO_VERSION; @@ -129,7 +129,7 @@ sbi->magic = AUTOFS_SBI_MAGIC; sbi->catatonic = 0; sbi->exp_timeout = 0; - sbi->oz_pgrp = current->pgrp; + sbi->oz_pgrp = process_group(current); autofs_initialize_hash(&sbi->dirhash); sbi->queues = NULL; memset(sbi->symlink_bitmap, 0, sizeof(long)*AUTOFS_SYMLINK_BITMAP_LEN); diff -Nru a/fs/autofs/root.c b/fs/autofs/root.c --- a/fs/autofs/root.c Mon Sep 22 00:30:21 2003 +++ b/fs/autofs/root.c Mon Sep 22 00:30:21 2003 @@ -213,7 +213,7 @@ oz_mode = autofs_oz_mode(sbi); DPRINTK(("autofs_lookup: pid = %u, pgrp = %u, catatonic = %d, oz_mode = %d\n", - current->pid, current->pgrp, sbi->catatonic, oz_mode)); + current->pid, process_group(current), sbi->catatonic, oz_mode)); /* * Mark the dentry incomplete, but add it. This is needed so @@ -527,7 +527,7 @@ { struct autofs_sb_info *sbi = autofs_sbi(inode->i_sb); - DPRINTK(("autofs_ioctl: cmd = 0x%08x, arg = 0x%08lx, sbi = %p, pgrp = %u\n",cmd,arg,sbi,current->pgrp)); + DPRINTK(("autofs_ioctl: cmd = 0x%08x, arg = 0x%08lx, sbi = %p, pgrp = %u\n",cmd,arg,sbi,process_group(current))); if ( _IOC_TYPE(cmd) != _IOC_TYPE(AUTOFS_IOC_FIRST) || _IOC_NR(cmd) - _IOC_NR(AUTOFS_IOC_FIRST) >= AUTOFS_IOC_COUNT ) diff -Nru a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h --- a/fs/autofs4/autofs_i.h Mon Sep 22 00:30:23 2003 +++ b/fs/autofs4/autofs_i.h Mon Sep 22 00:30:23 2003 @@ -113,7 +113,7 @@ filesystem without "magic".) */ static inline int autofs4_oz_mode(struct autofs_sb_info *sbi) { - return sbi->catatonic || current->pgrp == sbi->oz_pgrp; + return sbi->catatonic || process_group(current) == sbi->oz_pgrp; } /* Does a dentry have some pending activity? */ diff -Nru a/fs/autofs4/inode.c b/fs/autofs4/inode.c --- a/fs/autofs4/inode.c Mon Sep 22 00:30:23 2003 +++ b/fs/autofs4/inode.c Mon Sep 22 00:30:23 2003 @@ -101,7 +101,7 @@ *uid = current->uid; *gid = current->gid; - *pgrp = current->pgrp; + *pgrp = process_group(current); *minproto = AUTOFS_MIN_PROTO_VERSION; *maxproto = AUTOFS_MAX_PROTO_VERSION; @@ -192,7 +192,7 @@ sbi->magic = AUTOFS_SBI_MAGIC; sbi->catatonic = 0; sbi->exp_timeout = 0; - sbi->oz_pgrp = current->pgrp; + sbi->oz_pgrp = process_group(current); sbi->sb = s; sbi->version = 0; sbi->queues = NULL; diff -Nru a/fs/autofs4/root.c b/fs/autofs4/root.c --- a/fs/autofs4/root.c Mon Sep 22 00:30:18 2003 +++ b/fs/autofs4/root.c Mon Sep 22 00:30:18 2003 @@ -255,7 +255,7 @@ lock_kernel(); oz_mode = autofs4_oz_mode(sbi); DPRINTK(("autofs_lookup: pid = %u, pgrp = %u, catatonic = %d, oz_mode = %d\n", - current->pid, current->pgrp, sbi->catatonic, oz_mode)); + current->pid, process_group(current), sbi->catatonic, oz_mode)); /* * Mark the dentry incomplete, but add it. This is needed so @@ -518,7 +518,7 @@ struct autofs_sb_info *sbi = autofs4_sbi(inode->i_sb); DPRINTK(("autofs_ioctl: cmd = 0x%08x, arg = 0x%08lx, sbi = %p, pgrp = %u\n", - cmd,arg,sbi,current->pgrp)); + cmd,arg,sbi,process_group(current))); if ( _IOC_TYPE(cmd) != _IOC_TYPE(AUTOFS_IOC_FIRST) || _IOC_NR(cmd) - _IOC_NR(AUTOFS_IOC_FIRST) >= AUTOFS_IOC_COUNT ) diff -Nru a/fs/binfmt_elf.c b/fs/binfmt_elf.c --- a/fs/binfmt_elf.c Mon Sep 22 00:30:21 2003 +++ b/fs/binfmt_elf.c Mon Sep 22 00:30:21 2003 @@ -1023,6 +1023,7 @@ elf->e_ident[EI_CLASS] = ELF_CLASS; elf->e_ident[EI_DATA] = ELF_DATA; elf->e_ident[EI_VERSION] = EV_CURRENT; + elf->e_ident[EI_OSABI] = ELF_OSABI; memset(elf->e_ident+EI_PAD, 0, EI_NIDENT-EI_PAD); elf->e_type = ET_CORE; @@ -1076,7 +1077,7 @@ prstatus->pr_sighold = p->blocked.sig[0]; prstatus->pr_pid = p->pid; prstatus->pr_ppid = p->parent->pid; - prstatus->pr_pgrp = p->pgrp; + prstatus->pr_pgrp = process_group(p); prstatus->pr_sid = p->session; jiffies_to_timeval(p->utime, &prstatus->pr_utime); jiffies_to_timeval(p->stime, &prstatus->pr_stime); @@ -1104,7 +1105,7 @@ psinfo->pr_pid = p->pid; psinfo->pr_ppid = p->parent->pid; - psinfo->pr_pgrp = p->pgrp; + psinfo->pr_pgrp = process_group(p); psinfo->pr_sid = p->session; i = p->state ? ffz(~p->state) + 1 : 0; diff -Nru a/fs/bio.c b/fs/bio.c --- a/fs/bio.c Mon Sep 22 00:30:22 2003 +++ b/fs/bio.c Mon Sep 22 00:30:22 2003 @@ -532,6 +532,12 @@ * check that the pages are still dirty. If so, fine. If not, redirty them * in process context. * + * We special-case compound pages here: normally this means reads into hugetlb + * pages. The logic in here doesn't really work right for compound pages + * because the VM does not uniformly chase down the head page in all cases. + * But dirtiness of compound pages is pretty meaningless anyway: the VM doesn't + * handle them at all. So we skip compound pages here at an early stage. + * * Note that this code is very hard to test under normal circumstances because * direct-io pins the pages with get_user_pages(). This makes * is_page_cache_freeable return false, and the VM will not clean the pages. @@ -553,8 +559,21 @@ for (i = 0; i < bio->bi_vcnt; i++) { struct page *page = bvec[i].bv_page; + if (page && !PageCompound(page)) + set_page_dirty_lock(page); + } +} + +void bio_release_pages(struct bio *bio) +{ + struct bio_vec *bvec = bio->bi_io_vec; + int i; + + for (i = 0; i < bio->bi_vcnt; i++) { + struct page *page = bvec[i].bv_page; + if (page) - set_page_dirty_lock(bvec[i].bv_page); + put_page(page); } } @@ -592,6 +611,7 @@ struct bio *next = bio->bi_private; bio_set_pages_dirty(bio); + bio_release_pages(bio); bio_put(bio); bio = next; } @@ -606,7 +626,7 @@ for (i = 0; i < bio->bi_vcnt; i++) { struct page *page = bvec[i].bv_page; - if (PageDirty(page)) { + if (PageDirty(page) || PageCompound(page)) { page_cache_release(page); bvec[i].bv_page = NULL; } else { diff -Nru a/fs/char_dev.c b/fs/char_dev.c --- a/fs/char_dev.c Mon Sep 22 00:30:20 2003 +++ b/fs/char_dev.c Mon Sep 22 00:30:20 2003 @@ -445,3 +445,18 @@ kset_register(&kset_dynamic); cdev_map = kobj_map_init(base_probe, &cdev_subsys); } + + +/* Let modules do char dev stuff */ +EXPORT_SYMBOL(register_chrdev_region); +EXPORT_SYMBOL(unregister_chrdev_region); +EXPORT_SYMBOL(alloc_chrdev_region); +EXPORT_SYMBOL(cdev_init); +EXPORT_SYMBOL(cdev_alloc); +EXPORT_SYMBOL(cdev_get); +EXPORT_SYMBOL(cdev_put); +EXPORT_SYMBOL(cdev_del); +EXPORT_SYMBOL(cdev_add); +EXPORT_SYMBOL(cdev_unmap); +EXPORT_SYMBOL(register_chrdev); +EXPORT_SYMBOL(unregister_chrdev); diff -Nru a/fs/coda/cache.c b/fs/coda/cache.c --- a/fs/coda/cache.c Mon Sep 22 00:30:24 2003 +++ b/fs/coda/cache.c Mon Sep 22 00:30:24 2003 @@ -23,13 +23,16 @@ #include #include +static atomic_t permission_epoch = ATOMIC_INIT(0); + /* replace or extend an acl cache hit */ void coda_cache_enter(struct inode *inode, int mask) { struct coda_inode_info *cii = ITOC(inode); - if ( !coda_cred_ok(&cii->c_cached_cred) ) { - coda_load_creds(&cii->c_cached_cred); + cii->c_cached_epoch = atomic_read(&permission_epoch); + if (cii->c_uid != current->fsuid) { + cii->c_uid = current->fsuid; cii->c_cached_perm = mask; } else cii->c_cached_perm |= mask; @@ -42,22 +45,15 @@ cii->c_cached_perm = 0; } -/* remove all acl caches for a principal (or all principals when cred == NULL)*/ -void coda_cache_clear_all(struct super_block *sb, struct coda_cred *cred) +/* remove all acl caches */ +void coda_cache_clear_all(struct super_block *sb) { struct coda_sb_info *sbi; - struct coda_inode_info *cii; - struct list_head *tmp; sbi = coda_sbp(sb); if (!sbi) BUG(); - list_for_each(tmp, &sbi->sbi_cihead) - { - cii = list_entry(tmp, struct coda_inode_info, c_cilist); - if (!cred || coda_cred_eq(cred, &cii->c_cached_cred)) - cii->c_cached_perm = 0; - } + atomic_inc(&permission_epoch); } @@ -67,8 +63,9 @@ struct coda_inode_info *cii = ITOC(inode); int hit; - hit = ((mask & cii->c_cached_perm) == mask) && - coda_cred_ok(&cii->c_cached_cred); + hit = (mask & cii->c_cached_perm) == mask && + cii->c_uid == current->fsuid && + cii->c_cached_epoch == atomic_read(&permission_epoch); return hit; } diff -Nru a/fs/coda/cnode.c b/fs/coda/cnode.c --- a/fs/coda/cnode.c Mon Sep 22 00:30:23 2003 +++ b/fs/coda/cnode.c Mon Sep 22 00:30:23 2003 @@ -11,18 +11,9 @@ #include #include -inline int coda_fideq(ViceFid *fid1, ViceFid *fid2) +inline int coda_fideq(struct CodaFid *fid1, struct CodaFid *fid2) { - if (fid1->Vnode != fid2->Vnode) return 0; - if (fid1->Volume != fid2->Volume) return 0; - if (fid1->Unique != fid2->Unique) return 0; - return 1; -} - -inline int coda_isnullfid(ViceFid *fid) -{ - if (fid->Vnode || fid->Volume || fid->Unique) return 0; - return 1; + return memcmp(fid1, fid2, sizeof(*fid1)) == 0; } static struct inode_operations coda_symlink_inode_operations = { @@ -52,13 +43,13 @@ static int coda_test_inode(struct inode *inode, void *data) { - ViceFid *fid = (ViceFid *)data; + struct CodaFid *fid = (struct CodaFid *)data; return coda_fideq(&(ITOC(inode)->c_fid), fid); } static int coda_set_inode(struct inode *inode, void *data) { - ViceFid *fid = (ViceFid *)data; + struct CodaFid *fid = (struct CodaFid *)data; ITOC(inode)->c_fid = *fid; return 0; } @@ -68,12 +59,11 @@ return -1; } -struct inode * coda_iget(struct super_block * sb, ViceFid * fid, +struct inode * coda_iget(struct super_block * sb, struct CodaFid * fid, struct coda_vattr * attr) { struct inode *inode; struct coda_inode_info *cii; - struct coda_sb_info *sbi = coda_sbp(sb); unsigned long hash = coda_f2i(fid); inode = iget5_locked(sb, hash, coda_test_inode, coda_set_inode, fid); @@ -86,7 +76,6 @@ /* we still need to set i_ino for things like stat(2) */ inode->i_ino = hash; cii->c_mapcount = 0; - list_add(&cii->c_cilist, &sbi->sbi_cihead); unlock_new_inode(inode); } @@ -101,7 +90,7 @@ - link the two up if this is needed - fill in the attributes */ -int coda_cnode_make(struct inode **inode, ViceFid *fid, struct super_block *sb) +int coda_cnode_make(struct inode **inode, struct CodaFid *fid, struct super_block *sb) { struct coda_vattr attr; int error; @@ -122,8 +111,8 @@ } -void coda_replace_fid(struct inode *inode, struct ViceFid *oldfid, - struct ViceFid *newfid) +void coda_replace_fid(struct inode *inode, struct CodaFid *oldfid, + struct CodaFid *newfid) { struct coda_inode_info *cii; unsigned long hash = coda_f2i(newfid); @@ -142,7 +131,7 @@ } /* convert a fid to an inode. */ -struct inode *coda_fid_to_inode(ViceFid *fid, struct super_block *sb) +struct inode *coda_fid_to_inode(struct CodaFid *fid, struct super_block *sb) { struct inode *inode; unsigned long hash = coda_f2i(fid); diff -Nru a/fs/coda/coda_linux.c b/fs/coda/coda_linux.c --- a/fs/coda/coda_linux.c Mon Sep 22 00:30:17 2003 +++ b/fs/coda/coda_linux.c Mon Sep 22 00:30:17 2003 @@ -25,10 +25,14 @@ int coda_fake_statfs; /* print a fid */ -char * coda_f2s(ViceFid *f) +char * coda_f2s(struct CodaFid *f) { static char s[60]; - sprintf(s, "(%-#lx.%-#lx.%-#lx)", f->Volume, f->Vnode, f->Unique); +#ifdef CODA_FS_OLD_API + sprintf(s, "(%08x.%08x.%08x)", f->opaque[0], f->opaque[1], f->opaque[2]); +#else + sprintf(s, "(%08x.%08x.%08x.%08x)", f->opaque[0], f->opaque[1], f->opaque[2], f->opaque[3]); +#endif return s; } @@ -45,30 +49,6 @@ return ( i->i_sb->s_root->d_inode == i ); } -/* put the current process credentials in the cred */ -void coda_load_creds(struct coda_cred *cred) -{ - cred->cr_uid = (vuid_t) current->uid; - cred->cr_euid = (vuid_t) current->euid; - cred->cr_suid = (vuid_t) current->suid; - cred->cr_fsuid = (vuid_t) current->fsuid; - - cred->cr_groupid = (vgid_t) current->gid; - cred->cr_egid = (vgid_t) current->egid; - cred->cr_sgid = (vgid_t) current->sgid; - cred->cr_fsgid = (vgid_t) current->fsgid; -} - -int coda_cred_ok(struct coda_cred *cred) -{ - return(current->fsuid == cred->cr_fsuid); -} - -int coda_cred_eq(struct coda_cred *cred1, struct coda_cred *cred2) -{ - return (cred1->cr_fsuid == cred2->cr_fsuid); -} - unsigned short coda_flags_to_cflags(unsigned short flags) { unsigned short coda_flags = 0; @@ -215,58 +195,3 @@ } } -void print_vattr(struct coda_vattr *attr) -{ - char *typestr; - - switch (attr->va_type) { - case C_VNON: - typestr = "C_VNON"; - break; - case C_VREG: - typestr = "C_VREG"; - break; - case C_VDIR: - typestr = "C_VDIR"; - break; - case C_VBLK: - typestr = "C_VBLK"; - break; - case C_VCHR: - typestr = "C_VCHR"; - break; - case C_VLNK: - typestr = "C_VLNK"; - break; - case C_VSOCK: - typestr = "C_VSCK"; - break; - case C_VFIFO: - typestr = "C_VFFO"; - break; - case C_VBAD: - typestr = "C_VBAD"; - break; - default: - typestr = "????"; - break; - } - - - printk("attr: type %s (%o) mode %o uid %d gid %d rdev %d\n", - typestr, (int)attr->va_type, (int)attr->va_mode, - (int)attr->va_uid, (int)attr->va_gid, (int)attr->va_rdev); - - printk(" fileid %d nlink %d size %d blocksize %d bytes %d\n", - (int)attr->va_fileid, (int)attr->va_nlink, - (int)attr->va_size, - (int)attr->va_blocksize,(int)attr->va_bytes); - printk(" gen %ld flags %ld\n", - attr->va_gen, attr->va_flags); - printk(" atime sec %d nsec %d\n", - (int)attr->va_atime.tv_sec, (int)attr->va_atime.tv_nsec); - printk(" mtime sec %d nsec %d\n", - (int)attr->va_mtime.tv_sec, (int)attr->va_mtime.tv_nsec); - printk(" ctime sec %d nsec %d\n", - (int)attr->va_ctime.tv_sec, (int)attr->va_ctime.tv_nsec); -} diff -Nru a/fs/coda/dir.c b/fs/coda/dir.c --- a/fs/coda/dir.c Mon Sep 22 00:30:18 2003 +++ b/fs/coda/dir.c Mon Sep 22 00:30:18 2003 @@ -93,7 +93,7 @@ static struct dentry *coda_lookup(struct inode *dir, struct dentry *entry, struct nameidata *nd) { struct inode *res_inode = NULL; - struct ViceFid resfid = {0,0,0}; + struct CodaFid resfid = { { 0, } }; int dropme = 0; /* to indicate entry should not be cached */ int type = 0; int error = 0; @@ -196,7 +196,7 @@ const char *name=de->d_name.name; int length=de->d_name.len; struct inode *inode; - struct ViceFid newfid; + struct CodaFid newfid; struct coda_vattr attrs; lock_kernel(); @@ -236,7 +236,7 @@ const char *name=de->d_name.name; int length=de->d_name.len; struct inode *inode; - struct ViceFid newfid; + struct CodaFid newfid; struct coda_vattr attrs; if ( coda_hasmknod == 0 ) @@ -283,7 +283,7 @@ const char *name = de->d_name.name; int len = de->d_name.len; int error; - struct ViceFid newfid; + struct CodaFid newfid; lock_kernel(); coda_vfs_stat.mkdir++; @@ -588,8 +588,7 @@ break; } /* validate whether the directory file actually makes sense */ - if (vdir->d_reclen < vdir_size + vdir->d_namlen || - vdir->d_namlen > CODA_MAXNAMLEN) { + if (vdir->d_reclen < vdir_size + vdir->d_namlen) { printk("coda_venus_readdir: Invalid dir: %ld\n", filp->f_dentry->d_inode->i_ino); ret = -EBADF; diff -Nru a/fs/coda/file.c b/fs/coda/file.c --- a/fs/coda/file.c Mon Sep 22 00:30:21 2003 +++ b/fs/coda/file.c Mon Sep 22 00:30:21 2003 @@ -136,7 +136,6 @@ cfi->cfi_magic = CODA_MAGIC; cfi->cfi_mapcount = 0; cfi->cfi_container = host_file; - coda_load_creds(&cfi->cfi_cred); BUG_ON(coda_file->private_data != NULL); coda_file->private_data = cfi; @@ -176,7 +175,7 @@ coda_inode = coda_file->f_dentry->d_inode; err = venus_store(coda_inode->i_sb, coda_i2f(coda_inode), coda_flags, - &cfi->cfi_cred); + coda_file->f_uid); if (err == -EOPNOTSUPP) { use_coda_close = 1; @@ -214,7 +213,7 @@ if (use_coda_close) err = venus_close(coda_inode->i_sb, coda_i2f(coda_inode), - coda_flags, &cfi->cfi_cred); + coda_flags, coda_file->f_uid); host_inode = cfi->cfi_container->f_dentry->d_inode; cii = ITOC(coda_inode); diff -Nru a/fs/coda/inode.c b/fs/coda/inode.c --- a/fs/coda/inode.c Mon Sep 22 00:30:21 2003 +++ b/fs/coda/inode.c Mon Sep 22 00:30:21 2003 @@ -44,10 +44,9 @@ ei = (struct coda_inode_info *)kmem_cache_alloc(coda_inode_cachep, SLAB_KERNEL); if (!ei) return NULL; - memset(&ei->c_fid, 0, sizeof(struct ViceFid)); + memset(&ei->c_fid, 0, sizeof(struct CodaFid)); ei->c_flags = 0; - INIT_LIST_HEAD(&ei->c_cilist); - memset(&ei->c_cached_cred, 0, sizeof(struct coda_cred)); + ei->c_uid = 0; ei->c_cached_perm = 0; return &ei->vfs_inode; } @@ -139,7 +138,7 @@ struct inode *root = 0; struct coda_sb_info *sbi = NULL; struct venus_comm *vc = NULL; - ViceFid fid; + struct CodaFid fid; int error; int idx; @@ -169,9 +168,7 @@ vc->vc_sb = sb; - sbi->sbi_sb = sb; sbi->sbi_vcomm = vc; - INIT_LIST_HEAD(&sbi->sbi_cihead); sb->s_fs_info = sbi; sb->s_blocksize = 1024; /* XXXXX what do we put here?? */ @@ -218,7 +215,6 @@ sbi = coda_sbp(sb); sbi->sbi_vcomm->vc_sb = NULL; - list_del_init(&sbi->sbi_cihead); printk("Coda: Bye bye.\n"); kfree(sbi); @@ -226,9 +222,6 @@ static void coda_clear_inode(struct inode *inode) { - struct coda_inode_info *cii = ITOC(inode); - - list_del_init(&cii->c_cilist); coda_cache_clear_inode(inode); } diff -Nru a/fs/coda/psdev.c b/fs/coda/psdev.c --- a/fs/coda/psdev.c Mon Sep 22 00:30:22 2003 +++ b/fs/coda/psdev.c Mon Sep 22 00:30:22 2003 @@ -61,7 +61,6 @@ struct venus_comm coda_comms[MAX_CODADEVS]; -kmem_cache_t *cii_cache, *cred_cache, *upc_cache; /* * Device operations @@ -126,13 +125,13 @@ } if ( nbytes < sizeof(struct coda_out_hdr) ) { - printk("coda_downcall opc %ld uniq %ld, not enough!\n", + printk("coda_downcall opc %d uniq %d, not enough!\n", hdr.opcode, hdr.unique); count = nbytes; goto out; } if ( nbytes > size ) { - printk("Coda: downcall opc %ld, uniq %ld, too much!", + printk("Coda: downcall opc %d, uniq %d, too much!", hdr.opcode, hdr.unique); nbytes = size; } @@ -171,7 +170,7 @@ unlock_kernel(); if (!req) { - printk("psdev_write: msg (%ld, %ld) not found\n", + printk("psdev_write: msg (%d, %d) not found\n", hdr.opcode, hdr.unique); retval = -ESRCH; goto out; @@ -179,7 +178,7 @@ /* move data into response buffer. */ if (req->uc_outSize < nbytes) { - printk("psdev_write: too much cnt: %d, cnt: %ld, opc: %ld, uniq: %ld.\n", + printk("psdev_write: too much cnt: %d, cnt: %ld, opc: %d, uniq: %d.\n", req->uc_outSize, (long)nbytes, hdr.opcode, hdr.unique); nbytes = req->uc_outSize; /* don't have more space! */ } @@ -325,10 +324,7 @@ } /* Wakeup clients so they can return. */ - lh = vcp->vc_pending.next; - next = lh; - while ( (lh = next) != &vcp->vc_pending) { - next = lh->next; + list_for_each_safe(lh, next, &vcp->vc_pending) { req = list_entry(lh, struct upc_req, uc_chain); /* Async requests need to be freed here */ if (req->uc_flags & REQ_ASYNC) { @@ -340,9 +336,7 @@ wake_up(&req->uc_sleep); } - lh = &vcp->vc_processing; - while ( (lh = lh->next) != &vcp->vc_processing) { - req = list_entry(lh, struct upc_req, uc_chain); + list_for_each_entry(req, &vcp->vc_processing, uc_chain) { req->uc_flags |= REQ_ABORT; wake_up(&req->uc_sleep); } @@ -390,7 +384,13 @@ { int status; int i; - printk(KERN_INFO "Coda Kernel/Venus communications, v5.3.15, coda@cs.cmu.edu\n"); + printk(KERN_INFO "Coda Kernel/Venus communications, " +#ifdef CODA_FS_OLD_API + "v5.3.20" +#else + "v6.0.0" +#endif + ", coda@cs.cmu.edu\n"); status = coda_init_inodecache(); if (status) diff -Nru a/fs/coda/upcall.c b/fs/coda/upcall.c --- a/fs/coda/upcall.c Mon Sep 22 00:30:24 2003 +++ b/fs/coda/upcall.c Mon Sep 22 00:30:24 2003 @@ -54,9 +54,13 @@ inp->ih.opcode = opcode; inp->ih.pid = current->pid; - inp->ih.pgid = current->pgrp; - coda_load_creds(&(inp->ih.cred)); - + inp->ih.pgid = process_group(current); +#ifdef CODA_FS_OLD_API + memset(&inp->ih.cred, 0, sizeof(struct coda_cred)); + inp->ih.cred.cr_fsuid = current->fsuid; +#else + inp->ih.uid = current->fsuid; +#endif return (void*)inp; } @@ -74,7 +78,7 @@ /* the upcalls */ -int venus_rootfid(struct super_block *sb, ViceFid *fidp) +int venus_rootfid(struct super_block *sb, struct CodaFid *fidp) { union inputArgs *inp; union outputArgs *outp; @@ -88,14 +92,14 @@ if (error) { printk("coda_get_rootfid: error %d\n", error); } else { - *fidp = (ViceFid) outp->coda_root.VFid; + *fidp = outp->coda_root.VFid; } CODA_FREE(inp, insize); return error; } -int venus_getattr(struct super_block *sb, struct ViceFid *fid, +int venus_getattr(struct super_block *sb, struct CodaFid *fid, struct coda_vattr *attr) { union inputArgs *inp; @@ -114,7 +118,7 @@ return error; } -int venus_setattr(struct super_block *sb, struct ViceFid *fid, +int venus_setattr(struct super_block *sb, struct CodaFid *fid, struct coda_vattr *vattr) { union inputArgs *inp; @@ -133,9 +137,9 @@ return error; } -int venus_lookup(struct super_block *sb, struct ViceFid *fid, +int venus_lookup(struct super_block *sb, struct CodaFid *fid, const char *name, int length, int * type, - struct ViceFid *resfid) + struct CodaFid *resfid) { union inputArgs *inp; union outputArgs *outp; @@ -162,17 +166,25 @@ return error; } -int venus_store(struct super_block *sb, struct ViceFid *fid, int flags, - struct coda_cred *cred) +int venus_store(struct super_block *sb, struct CodaFid *fid, int flags, + vuid_t uid) { union inputArgs *inp; union outputArgs *outp; int insize, outsize, error; +#ifdef CODA_FS_OLD_API + struct coda_cred cred = { 0, }; + cred.cr_fsuid = uid; +#endif insize = SIZE(store); UPARG(CODA_STORE); - memcpy(&(inp->ih.cred), cred, sizeof(*cred)); +#ifdef CODA_FS_OLD_API + memcpy(&(inp->ih.cred), &cred, sizeof(cred)); +#else + inp->ih.uid = uid; +#endif inp->coda_store.VFid = *fid; inp->coda_store.flags = flags; @@ -183,7 +195,7 @@ return error; } -int venus_release(struct super_block *sb, struct ViceFid *fid, int flags) +int venus_release(struct super_block *sb, struct CodaFid *fid, int flags) { union inputArgs *inp; union outputArgs *outp; @@ -201,17 +213,25 @@ return error; } -int venus_close(struct super_block *sb, struct ViceFid *fid, int flags, - struct coda_cred *cred) +int venus_close(struct super_block *sb, struct CodaFid *fid, int flags, + vuid_t uid) { union inputArgs *inp; union outputArgs *outp; int insize, outsize, error; +#ifdef CODA_FS_OLD_API + struct coda_cred cred = { 0, }; + cred.cr_fsuid = uid; +#endif insize = SIZE(release); UPARG(CODA_CLOSE); - memcpy(&(inp->ih.cred), cred, sizeof(*cred)); +#ifdef CODA_FS_OLD_API + memcpy(&(inp->ih.cred), &cred, sizeof(cred)); +#else + inp->ih.uid = uid; +#endif inp->coda_close.VFid = *fid; inp->coda_close.flags = flags; @@ -222,7 +242,7 @@ return error; } -int venus_open(struct super_block *sb, struct ViceFid *fid, +int venus_open(struct super_block *sb, struct CodaFid *fid, int flags, struct file **fh) { union inputArgs *inp; @@ -243,9 +263,9 @@ return error; } -int venus_mkdir(struct super_block *sb, struct ViceFid *dirfid, +int venus_mkdir(struct super_block *sb, struct CodaFid *dirfid, const char *name, int length, - struct ViceFid *newfid, struct coda_vattr *attrs) + struct CodaFid *newfid, struct coda_vattr *attrs) { union inputArgs *inp; union outputArgs *outp; @@ -273,8 +293,8 @@ } -int venus_rename(struct super_block *sb, struct ViceFid *old_fid, - struct ViceFid *new_fid, size_t old_length, +int venus_rename(struct super_block *sb, struct CodaFid *old_fid, + struct CodaFid *new_fid, size_t old_length, size_t new_length, const char *old_name, const char *new_name) { @@ -310,9 +330,9 @@ return error; } -int venus_create(struct super_block *sb, struct ViceFid *dirfid, +int venus_create(struct super_block *sb, struct CodaFid *dirfid, const char *name, int length, int excl, int mode, dev_t rdev, - struct ViceFid *newfid, struct coda_vattr *attrs) + struct CodaFid *newfid, struct coda_vattr *attrs) { union inputArgs *inp; union outputArgs *outp; @@ -343,7 +363,7 @@ return error; } -int venus_rmdir(struct super_block *sb, struct ViceFid *dirfid, +int venus_rmdir(struct super_block *sb, struct CodaFid *dirfid, const char *name, int length) { union inputArgs *inp; @@ -366,7 +386,7 @@ return error; } -int venus_remove(struct super_block *sb, struct ViceFid *dirfid, +int venus_remove(struct super_block *sb, struct CodaFid *dirfid, const char *name, int length) { union inputArgs *inp; @@ -388,7 +408,7 @@ return error; } -int venus_readlink(struct super_block *sb, struct ViceFid *fid, +int venus_readlink(struct super_block *sb, struct CodaFid *fid, char *buffer, int *length) { union inputArgs *inp; @@ -421,8 +441,8 @@ -int venus_link(struct super_block *sb, struct ViceFid *fid, - struct ViceFid *dirfid, const char *name, int len ) +int venus_link(struct super_block *sb, struct CodaFid *fid, + struct CodaFid *dirfid, const char *name, int len ) { union inputArgs *inp; union outputArgs *outp; @@ -447,7 +467,7 @@ return error; } -int venus_symlink(struct super_block *sb, struct ViceFid *fid, +int venus_symlink(struct super_block *sb, struct CodaFid *fid, const char *name, int len, const char *symname, int symlen) { @@ -482,7 +502,7 @@ return error; } -int venus_fsync(struct super_block *sb, struct ViceFid *fid) +int venus_fsync(struct super_block *sb, struct CodaFid *fid) { union inputArgs *inp; union outputArgs *outp; @@ -499,7 +519,7 @@ return error; } -int venus_access(struct super_block *sb, struct ViceFid *fid, int mask) +int venus_access(struct super_block *sb, struct CodaFid *fid, int mask) { union inputArgs *inp; union outputArgs *outp; @@ -518,7 +538,7 @@ } -int venus_pioctl(struct super_block *sb, struct ViceFid *fid, +int venus_pioctl(struct super_block *sb, struct CodaFid *fid, unsigned int cmd, struct PioctlData *data) { union inputArgs *inp; @@ -808,7 +828,7 @@ * The last allows Venus to replace local fids with global ones * during reintegration. * - * CODA_REPLACE -- replace one ViceFid with another throughout the name cache */ + * CODA_REPLACE -- replace one CodaFid with another throughout the name cache */ int coda_downcall(int opcode, union outputArgs * out, struct super_block *sb) { @@ -819,25 +839,20 @@ switch (opcode) { case CODA_FLUSH : { - coda_cache_clear_all(sb, NULL); + coda_cache_clear_all(sb); shrink_dcache_sb(sb); coda_flag_inode(sb->s_root->d_inode, C_FLUSH); return(0); } case CODA_PURGEUSER : { - struct coda_cred *cred = &out->coda_purgeuser.cred; - if ( !cred ) { - printk("PURGEUSER: null cred!\n"); - return 0; - } - coda_cache_clear_all(sb, cred); + coda_cache_clear_all(sb); return(0); } case CODA_ZAPDIR : { struct inode *inode; - ViceFid *fid = &out->coda_zapdir.CodaFid; + struct CodaFid *fid = &out->coda_zapdir.CodaFid; inode = coda_fid_to_inode(fid, sb); if (inode) { @@ -851,7 +866,7 @@ case CODA_ZAPFILE : { struct inode *inode; - struct ViceFid *fid = &out->coda_zapfile.CodaFid; + struct CodaFid *fid = &out->coda_zapfile.CodaFid; inode = coda_fid_to_inode(fid, sb); if ( inode ) { coda_flag_inode(inode, C_VATTR); @@ -862,7 +877,7 @@ case CODA_PURGEFID : { struct inode *inode; - ViceFid *fid = &out->coda_purgefid.CodaFid; + struct CodaFid *fid = &out->coda_purgefid.CodaFid; inode = coda_fid_to_inode(fid, sb); if ( inode ) { coda_flag_inode_children(inode, C_PURGE); @@ -878,8 +893,8 @@ case CODA_REPLACE : { struct inode *inode; - ViceFid *oldfid = &out->coda_replace.OldFid; - ViceFid *newfid = &out->coda_replace.NewFid; + struct CodaFid *oldfid = &out->coda_replace.OldFid; + struct CodaFid *newfid = &out->coda_replace.NewFid; inode = coda_fid_to_inode(oldfid, sb); if ( inode ) { coda_replace_fid(inode, oldfid, newfid); diff -Nru a/fs/dcache.c b/fs/dcache.c --- a/fs/dcache.c Mon Sep 22 00:30:18 2003 +++ b/fs/dcache.c Mon Sep 22 00:30:18 2003 @@ -82,7 +82,7 @@ /* * Release the dentry's inode, using the filesystem * d_iput() operation if defined. - * Called with dcache_lock held, drops it. + * Called with dcache_lock and per dentry lock held, drops both. */ static inline void dentry_iput(struct dentry * dentry) { @@ -90,13 +90,16 @@ if (inode) { dentry->d_inode = NULL; list_del_init(&dentry->d_alias); + spin_unlock(&dentry->d_lock); spin_unlock(&dcache_lock); if (dentry->d_op && dentry->d_op->d_iput) dentry->d_op->d_iput(dentry, inode); else iput(inode); - } else + } else { + spin_unlock(&dentry->d_lock); spin_unlock(&dcache_lock); + } } /* @@ -177,9 +180,8 @@ dentry_stat.nr_unused--; } list_del(&dentry->d_child); - spin_unlock(&dentry->d_lock); dentry_stat.nr_dentry--; /* For d_free, below */ - /* drops the lock, at that point nobody can reach this dentry */ + /*drops the locks, at that point nobody can reach this dentry */ dentry_iput(dentry); parent = dentry->d_parent; d_free(dentry); @@ -341,7 +343,6 @@ __d_drop(dentry); list_del(&dentry->d_child); - spin_unlock(&dentry->d_lock); dentry_stat.nr_dentry--; /* For d_free, below */ dentry_iput(dentry); parent = dentry->d_parent; @@ -1116,7 +1117,6 @@ spin_lock(&dcache_lock); spin_lock(&dentry->d_lock); if (atomic_read(&dentry->d_count) == 1) { - spin_unlock(&dentry->d_lock); dentry_iput(dentry); return; } diff -Nru a/fs/devfs/base.c b/fs/devfs/base.c --- a/fs/devfs/base.c Mon Sep 22 00:30:19 2003 +++ b/fs/devfs/base.c Mon Sep 22 00:30:19 2003 @@ -1334,7 +1334,7 @@ struct task_struct *p = current; if (p == fs_info->devfsd_task) return (TRUE); - if (p->pgrp == fs_info->devfsd_pgrp) return (TRUE); + if (process_group(p) == fs_info->devfsd_pgrp) return (TRUE); read_lock(&tasklist_lock); for ( ; p != &init_task; p = p->real_parent) { @@ -2744,8 +2744,8 @@ } fs_info->devfsd_task = current; spin_unlock (&lock); - fs_info->devfsd_pgrp = (current->pgrp == current->pid) ? - current->pgrp : 0; + fs_info->devfsd_pgrp = (process_group(current) == current->pid) ? + process_group(current) : 0; fs_info->devfsd_file = file; fs_info->devfsd_info = kmalloc (sizeof *fs_info->devfsd_info, GFP_KERNEL); diff -Nru a/fs/eventpoll.c b/fs/eventpoll.c --- a/fs/eventpoll.c Mon Sep 22 00:30:21 2003 +++ b/fs/eventpoll.c Mon Sep 22 00:30:21 2003 @@ -288,8 +288,10 @@ static int ep_alloc_pages(char **pages, int numpages); static int ep_free_pages(char **pages, int numpages); static int ep_file_init(struct file *file, unsigned int hashbits); -static unsigned int ep_hash_index(struct eventpoll *ep, struct file *file, int fd); -static struct list_head *ep_hash_entry(struct eventpoll *ep, unsigned int index); +static unsigned int ep_hash_index(struct eventpoll *ep, struct file *file, + int fd); +static struct list_head *ep_hash_entry(struct eventpoll *ep, + unsigned int index); static int ep_init(struct eventpoll *ep, unsigned int hashbits); static void ep_free(struct eventpoll *ep); static struct epitem *ep_find(struct eventpoll *ep, struct file *file, int fd); @@ -299,7 +301,8 @@ poll_table *pt); static int ep_insert(struct eventpoll *ep, struct epoll_event *event, struct file *tfile, int fd); -static int ep_modify(struct eventpoll *ep, struct epitem *epi, struct epoll_event *event); +static int ep_modify(struct eventpoll *ep, struct epitem *epi, + struct epoll_event *event); static void ep_unregister_pollwait(struct eventpoll *ep, struct epitem *epi); static int ep_unlink(struct eventpoll *ep, struct epitem *epi); static int ep_remove(struct eventpoll *ep, struct epitem *epi); @@ -309,11 +312,12 @@ static int ep_collect_ready_items(struct eventpoll *ep, struct list_head *txlist, int maxevents); static int ep_send_events(struct eventpoll *ep, struct list_head *txlist, - struct epoll_event *events); + struct epoll_event __user *events); static void ep_reinject_items(struct eventpoll *ep, struct list_head *txlist); static int ep_events_transfer(struct eventpoll *ep, - struct epoll_event *events, int maxevents); -static int ep_poll(struct eventpoll *ep, struct epoll_event *events, + struct epoll_event __user *events, + int maxevents); +static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events, int maxevents, long timeout); static int eventpollfs_delete_dentry(struct dentry *dentry); static struct inode *ep_eventpoll_inode(void); @@ -532,11 +536,13 @@ /* - * The following function implement the controller interface for the eventpoll - * file that enable the insertion/removal/change of file descriptors inside - * the interest set. It rapresents the kernel part of the user space epoll_ctl(2). + * The following function implements the controller interface for + * the eventpoll file that enables the insertion/removal/change of + * file descriptors inside the interest set. It represents + * the kernel part of the user space epoll_ctl(2). */ -asmlinkage long sys_epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) +asmlinkage long +sys_epoll_ctl(int epfd, int op, int fd, struct epoll_event __user *event) { int error; struct file *file, *tfile; @@ -637,8 +643,8 @@ * Implement the event wait interface for the eventpoll file. It is the kernel * part of the user space epoll_wait(2). */ -asmlinkage long sys_epoll_wait(int epfd, struct epoll_event *events, int maxevents, - int timeout) +asmlinkage long sys_epoll_wait(int epfd, struct epoll_event __user *events, + int maxevents, int timeout) { int error; struct file *file; @@ -662,7 +668,7 @@ goto eexit_1; /* - * We have to check that the file structure underneath the file descriptor + * We have to check that the file structure underneath the fd * the user passed to us _is_ an eventpoll file. */ error = -EINVAL; @@ -1409,7 +1415,7 @@ * because of the way poll() is traditionally implemented in Linux. */ static int ep_send_events(struct eventpoll *ep, struct list_head *txlist, - struct epoll_event *events) + struct epoll_event __user *events) { int eventcnt = 0, eventbuf = 0; unsigned int revents; @@ -1521,7 +1527,8 @@ /* * Perform the transfer of events to user space. */ -static int ep_events_transfer(struct eventpoll *ep, struct epoll_event *events, int maxevents) +static int ep_events_transfer(struct eventpoll *ep, + struct epoll_event __user *events, int maxevents) { int eventcnt = 0; struct list_head txlist; @@ -1549,8 +1556,8 @@ } -static int ep_poll(struct eventpoll *ep, struct epoll_event *events, int maxevents, - long timeout) +static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events, + int maxevents, long timeout) { int res, eavail; unsigned long flags; diff -Nru a/fs/exec.c b/fs/exec.c --- a/fs/exec.c Mon Sep 22 00:30:20 2003 +++ b/fs/exec.c Mon Sep 22 00:30:20 2003 @@ -56,7 +56,7 @@ int core_uses_pid; char core_pattern[65] = "core"; -/* The maximal length of core_pattern is also specified in sysctl.c */ +/* The maximal length of core_pattern is also specified in sysctl.c */ static struct linux_binfmt *formats; static rwlock_t binfmt_lock = RW_LOCK_UNLOCKED; @@ -190,7 +190,7 @@ * memory to free pages in kernel mem. These are in a format ready * to be put directly into the top of new user memory. */ -int copy_strings(int argc,char __user * __user * argv, struct linux_binprm *bprm) +int copy_strings(int argc,char __user * __user * argv, struct linux_binprm *bprm) { struct page *kmapped_page = NULL; char *kaddr = NULL; @@ -213,7 +213,7 @@ } bprm->p -= len; - /* XXX: add architecture specific overflow check here. */ + /* XXX: add architecture specific overflow check here. */ pos = bprm->p; while (len > 0) { @@ -275,10 +275,10 @@ { int r; mm_segment_t oldfs = get_fs(); - set_fs(KERNEL_DS); + set_fs(KERNEL_DS); r = copy_strings(argc, (char __user * __user *)argv, bprm); set_fs(oldfs); - return r; + return r; } #ifdef CONFIG_MMU @@ -374,7 +374,13 @@ /* Adjust bprm->p to point to the end of the strings. */ bprm->p = PAGE_SIZE * i - offset; - stack_base = STACK_TOP - current->rlim[RLIMIT_STACK].rlim_max; + + /* Limit stack size to 1GB */ + stack_base = current->rlim[RLIMIT_STACK].rlim_max; + if (stack_base > (1 << 30)) + stack_base = 1 << 30; + stack_base = PAGE_ALIGN(STACK_TOP - stack_base); + mm->arg_start = stack_base; arg_size = i << PAGE_SHIFT; @@ -421,7 +427,7 @@ mpnt->vm_private_data = (void *) 0; insert_vm_struct(mm, mpnt); mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT; - } + } for (i = 0 ; i < MAX_ARG_PAGES ; i++) { struct page *page = bprm->page[i]; @@ -803,7 +809,7 @@ /* An exec changes our domain. We are no longer part of the thread group */ - + current->self_exec_id++; flush_signal_handlers(current, 0); @@ -887,7 +893,7 @@ * */ -void compute_creds(struct linux_binprm *bprm) +void compute_creds(struct linux_binprm *bprm) { task_lock(current); if (bprm->e_uid != current->uid || bprm->e_gid != current->gid) { @@ -1052,7 +1058,7 @@ return retval; bprm.p = PAGE_SIZE*MAX_ARG_PAGES-sizeof(void *); - memset(bprm.page, 0, MAX_ARG_PAGES*sizeof(bprm.page[0])); + memset(bprm.page, 0, MAX_ARG_PAGES*sizeof(bprm.page[0])); bprm.file = file; bprm.filename = filename; @@ -1083,21 +1089,21 @@ goto out; retval = prepare_binprm(&bprm); - if (retval < 0) - goto out; + if (retval < 0) + goto out; retval = copy_strings_kernel(1, &bprm.filename, &bprm); - if (retval < 0) - goto out; + if (retval < 0) + goto out; bprm.exec = bprm.p; retval = copy_strings(bprm.envc, envp, &bprm); - if (retval < 0) - goto out; + if (retval < 0) + goto out; retval = copy_strings(bprm.argc, argv, &bprm); - if (retval < 0) - goto out; + if (retval < 0) + goto out; retval = search_binary_handler(&bprm,regs); if (retval >= 0) { diff -Nru a/fs/ext2/symlink.c b/fs/ext2/symlink.c --- a/fs/ext2/symlink.c Mon Sep 22 00:30:19 2003 +++ b/fs/ext2/symlink.c Mon Sep 22 00:30:19 2003 @@ -20,7 +20,8 @@ #include "ext2.h" #include "xattr.h" -static int ext2_readlink(struct dentry *dentry, char *buffer, int buflen) +static int +ext2_readlink(struct dentry *dentry, char __user *buffer, int buflen) { struct ext2_inode_info *ei = EXT2_I(dentry->d_inode); return vfs_readlink(dentry, buffer, buflen, (char *)ei->i_data); diff -Nru a/fs/ext3/super.c b/fs/ext3/super.c --- a/fs/ext3/super.c Mon Sep 22 00:30:24 2003 +++ b/fs/ext3/super.c Mon Sep 22 00:30:24 2003 @@ -34,10 +34,6 @@ #include "xattr.h" #include "acl.h" -#ifdef CONFIG_JBD_DEBUG -static int ext3_ro_after; /* Make fs read-only after this many jiffies */ -#endif - static int ext3_load_journal(struct super_block *, struct ext3_super_block *); static int ext3_create_journal(struct super_block *, struct ext3_super_block *, int); @@ -50,64 +46,6 @@ struct ext3_super_block * es); static int ext3_sync_fs(struct super_block *sb, int wait); -#ifdef CONFIG_JBD_DEBUG -int journal_no_write[2]; - -/* - * Debug code for turning filesystems "read-only" after a specified - * amount of time. This is for crash/recovery testing. - */ - -static void make_rdonly(struct block_device *bdev, int *no_write) -{ - char b[BDEVNAME_SIZE]; - - if (bdev) { - printk(KERN_WARNING "Turning device %s read-only\n", - bdevname(bdev, b)); - *no_write = 0xdead0000 + bdev->bd_dev; - } -} - -static void turn_fs_readonly(unsigned long arg) -{ - struct super_block *sb = (struct super_block *)arg; - - make_rdonly(sb->s_bdev, &journal_no_write[0]); - make_rdonly(EXT3_SB(sb)->s_journal->j_dev, &journal_no_write[1]); - wake_up(&EXT3_SB(sb)->ro_wait_queue); -} - -static void setup_ro_after(struct super_block *sb) -{ - struct ext3_sb_info *sbi = EXT3_SB(sb); - init_timer(&sbi->turn_ro_timer); - if (ext3_ro_after) { - printk(KERN_DEBUG "fs will go read-only in %d jiffies\n", - ext3_ro_after); - init_waitqueue_head(&sbi->ro_wait_queue); - journal_no_write[0] = 0; - journal_no_write[1] = 0; - sbi->turn_ro_timer.function = turn_fs_readonly; - sbi->turn_ro_timer.data = (unsigned long)sb; - sbi->turn_ro_timer.expires = jiffies + ext3_ro_after; - ext3_ro_after = 0; - add_timer(&sbi->turn_ro_timer); - } -} - -static void clear_ro_after(struct super_block *sb) -{ - del_timer_sync(&EXT3_SB(sb)->turn_ro_timer); - journal_no_write[0] = 0; - journal_no_write[1] = 0; - ext3_ro_after = 0; -} -#else -#define setup_ro_after(sb) do {} while (0) -#define clear_ro_after(sb) do {} while (0) -#endif - /* * Wrappers for journal_start/end. * @@ -481,7 +419,6 @@ invalidate_bdev(sbi->journal_bdev, 0); ext3_blkdev_remove(sbi); } - clear_ro_after(sb); sb->s_fs_info = NULL; kfree(sbi); return; @@ -741,14 +678,6 @@ set_opt (sbi->s_mount_opt, OLDALLOC); else if (!strcmp (this_char, "orlov")) clear_opt (sbi->s_mount_opt, OLDALLOC); -#ifdef CONFIG_JBD_DEBUG - else if (!strcmp (this_char, "ro-after")) { - unsigned long v; - if (want_numeric(value, "ro-after", &v)) - return 0; - ext3_ro_after = v; - } -#endif /* Silently ignore the quota options */ else if (!strcmp (this_char, "grpquota") || !strcmp (this_char, "noquota") @@ -892,7 +821,6 @@ ext3_check_inodes_bitmap (sb); } #endif - setup_ro_after(sb); return res; } @@ -1092,9 +1020,6 @@ int i; int needs_recovery; -#ifdef CONFIG_JBD_DEBUG - ext3_ro_after = 0; -#endif sbi = kmalloc(sizeof(*sbi), GFP_KERNEL); if (!sbi) return -ENOMEM; @@ -1103,7 +1028,6 @@ sbi->s_mount_opt = 0; sbi->s_resuid = EXT3_DEF_RESUID; sbi->s_resgid = EXT3_DEF_RESGID; - setup_ro_after(sb); blocksize = sb_min_blocksize(sb, EXT3_MIN_BLOCK_SIZE); if (!blocksize) { @@ -1868,8 +1792,6 @@ struct ext3_sb_info *sbi = EXT3_SB(sb); unsigned long tmp; - clear_ro_after(sb); - /* * Allow the "check" option to be passed as a remount option. */ @@ -1929,7 +1851,6 @@ sb->s_flags &= ~MS_RDONLY; } } - setup_ro_after(sb); return 0; } diff -Nru a/fs/fat/file.c b/fs/fat/file.c --- a/fs/fat/file.c Mon Sep 22 00:30:20 2003 +++ b/fs/fat/file.c Mon Sep 22 00:30:20 2003 @@ -11,8 +11,8 @@ #include #include -static ssize_t fat_file_write(struct file *filp, const char *buf, size_t count, - loff_t *ppos); +static ssize_t fat_file_write(struct file *filp, const char __user *buf, + size_t count, loff_t *ppos); struct file_operations fat_file_operations = { .llseek = generic_file_llseek, @@ -66,8 +66,8 @@ return 0; } -static ssize_t fat_file_write(struct file *filp, const char *buf, size_t count, - loff_t *ppos) +static ssize_t fat_file_write(struct file *filp, const char __user *buf, + size_t count, loff_t *ppos) { struct inode *inode = filp->f_dentry->d_inode; int retval; diff -Nru a/fs/intermezzo/inode.c b/fs/intermezzo/inode.c --- a/fs/intermezzo/inode.c Mon Sep 22 00:30:18 2003 +++ b/fs/intermezzo/inode.c Mon Sep 22 00:30:18 2003 @@ -167,7 +167,6 @@ exit: CDEBUG(D_MALLOC, "after umount: kmem %ld, vmem %ld\n", presto_kmemory, presto_vmemory); - MOD_DEC_USE_COUNT; return ; } diff -Nru a/fs/jbd/transaction.c b/fs/jbd/transaction.c --- a/fs/jbd/transaction.c Mon Sep 22 00:30:20 2003 +++ b/fs/jbd/transaction.c Mon Sep 22 00:30:20 2003 @@ -1932,9 +1932,6 @@ J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh)); assert_spin_locked(&transaction->t_journal->j_list_lock); -#ifdef __SMP__ - J_ASSERT (current->lock_depth >= 0); -#endif J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); J_ASSERT_JH(jh, jh->b_transaction == transaction || jh->b_transaction == 0); diff -Nru a/fs/jffs/inode-v23.c b/fs/jffs/inode-v23.c --- a/fs/jffs/inode-v23.c Mon Sep 22 00:30:22 2003 +++ b/fs/jffs/inode-v23.c Mon Sep 22 00:30:22 2003 @@ -139,7 +139,7 @@ c->thread_pid = kernel_thread (jffs_garbage_collect_thread, (void *) c, - CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + CLONE_KERNEL); D1(printk(KERN_NOTICE "JFFS: GC thread pid=%d.\n", (int) c->thread_pid)); D1(printk(KERN_NOTICE "JFFS: Successfully mounted device %s.\n", @@ -1734,7 +1734,7 @@ the device should be read from the flash memory and then added to the inode's i_rdev member. */ u16 val; - jffs_read_data(f, (char *)val, 0, 2); + jffs_read_data(f, (char *)&val, 0, 2); init_special_inode(inode, inode->i_mode, old_decode_dev(val)); } diff -Nru a/fs/jfs/jfs_imap.c b/fs/jfs/jfs_imap.c --- a/fs/jfs/jfs_imap.c Mon Sep 22 00:30:19 2003 +++ b/fs/jfs/jfs_imap.c Mon Sep 22 00:30:19 2003 @@ -3041,10 +3041,11 @@ jfs_ip->next_index = le32_to_cpu(dip->di_next_index); jfs_ip->otime = le32_to_cpu(dip->di_otime.tv_sec); jfs_ip->acltype = le32_to_cpu(dip->di_acltype); - jfs_ip->dev = le32_to_cpu(dip->di_rdev); - if (S_ISCHR(ip->i_mode) || S_ISBLK(ip->i_mode)) + if (S_ISCHR(ip->i_mode) || S_ISBLK(ip->i_mode)) { + jfs_ip->dev = le32_to_cpu(dip->di_rdev); ip->i_rdev = old_decode_dev(jfs_ip->dev); + } if (S_ISDIR(ip->i_mode)) { memcpy(&jfs_ip->i_dirtable, &dip->di_dirtable, 384); @@ -3101,7 +3102,8 @@ dip->di_otime.tv_sec = cpu_to_le32(jfs_ip->otime); dip->di_otime.tv_nsec = 0; dip->di_acltype = cpu_to_le32(jfs_ip->acltype); - dip->di_rdev = cpu_to_le32(jfs_ip->dev); + if (S_ISCHR(ip->i_mode) || S_ISBLK(ip->i_mode)) + dip->di_rdev = cpu_to_le32(jfs_ip->dev); } #ifdef _JFS_DEBUG_IMAP diff -Nru a/fs/jfs/super.c b/fs/jfs/super.c --- a/fs/jfs/super.c Mon Sep 22 00:30:21 2003 +++ b/fs/jfs/super.c Mon Sep 22 00:30:21 2003 @@ -501,24 +501,21 @@ /* * I/O completion thread (endio) */ - jfsIOthread = kernel_thread(jfsIOWait, 0, - CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + jfsIOthread = kernel_thread(jfsIOWait, 0, CLONE_KERNEL); if (jfsIOthread < 0) { jfs_err("init_jfs_fs: fork failed w/rc = %d", jfsIOthread); goto end_txmngr; } wait_for_completion(&jfsIOwait); /* Wait until thread starts */ - jfsCommitThread = kernel_thread(jfs_lazycommit, 0, - CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + jfsCommitThread = kernel_thread(jfs_lazycommit, 0, CLONE_KERNEL); if (jfsCommitThread < 0) { jfs_err("init_jfs_fs: fork failed w/rc = %d", jfsCommitThread); goto kill_iotask; } wait_for_completion(&jfsIOwait); /* Wait until thread starts */ - jfsSyncThread = kernel_thread(jfs_sync, 0, - CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + jfsSyncThread = kernel_thread(jfs_sync, 0, CLONE_KERNEL); if (jfsSyncThread < 0) { jfs_err("init_jfs_fs: fork failed w/rc = %d", jfsSyncThread); goto kill_committask; diff -Nru a/fs/locks.c b/fs/locks.c --- a/fs/locks.c Mon Sep 22 00:30:24 2003 +++ b/fs/locks.c Mon Sep 22 00:30:24 2003 @@ -221,7 +221,7 @@ static inline int flock_translate_cmd(int cmd) { if (cmd & LOCK_MAND) return cmd & (LOCK_MAND | LOCK_RW); - switch (cmd &~ LOCK_NB) { + switch (cmd) { case LOCK_SH: return F_RDLCK; case LOCK_EX: @@ -233,8 +233,8 @@ } /* Fill in a file_lock structure with an appropriate FLOCK lock. */ -static int flock_make_lock(struct file *filp, - struct file_lock **lock, unsigned int cmd) +static int flock_make_lock(struct file *filp, struct file_lock **lock, + unsigned int cmd) { struct file_lock *fl; int type = flock_translate_cmd(cmd); @@ -247,7 +247,7 @@ fl->fl_file = filp; fl->fl_pid = current->tgid; - fl->fl_flags = (cmd & LOCK_NB) ? FL_FLOCK : FL_FLOCK | FL_SLEEP; + fl->fl_flags = FL_FLOCK; fl->fl_type = type; fl->fl_end = OFFSET_MAX; @@ -1265,9 +1265,8 @@ locks_free_lock(fl); goto out_unlock; } - fl->fl_next = *before; - *before = fl; - list_add(&fl->fl_link, &file_lock_list); + + locks_insert_lock(before, fl); error = f_setown(filp, current->tgid, 1); out_unlock: @@ -1298,6 +1297,7 @@ { struct file *filp; struct file_lock *lock; + int can_sleep, unlock; int error; error = -EBADF; @@ -1305,12 +1305,18 @@ if (!filp) goto out; - if ((cmd != LOCK_UN) && !(cmd & LOCK_MAND) && !(filp->f_mode & 3)) + can_sleep = !(cmd & LOCK_NB); + cmd &= ~LOCK_NB; + unlock = (cmd == LOCK_UN); + + if (!unlock && !(cmd & LOCK_MAND) && !(filp->f_mode & 3)) goto out_putf; error = flock_make_lock(filp, &lock, cmd); if (error) goto out_putf; + if (can_sleep) + lock->fl_flags |= FL_SLEEP; error = security_file_lock(filp, cmd); if (error) @@ -1318,7 +1324,7 @@ for (;;) { error = flock_lock_file(filp, lock); - if ((error != -EAGAIN) || (cmd & LOCK_NB)) + if ((error != -EAGAIN) || !can_sleep) break; error = wait_event_interruptible(lock->fl_wait, !lock->fl_next); if (!error) @@ -1329,7 +1335,7 @@ } out_free: - if (error) { + if (list_empty(&lock->fl_link)) { locks_free_lock(lock); } diff -Nru a/fs/nls/Makefile b/fs/nls/Makefile --- a/fs/nls/Makefile Mon Sep 22 00:30:19 2003 +++ b/fs/nls/Makefile Mon Sep 22 00:30:19 2003 @@ -19,14 +19,13 @@ obj-$(CONFIG_NLS_CODEPAGE_865) += nls_cp865.o obj-$(CONFIG_NLS_CODEPAGE_866) += nls_cp866.o obj-$(CONFIG_NLS_CODEPAGE_869) += nls_cp869.o -obj-$(CONFIG_NLS_CODEPAGE_874) += nls_cp874.o nls_tis-620.o -obj-$(CONFIG_NLS_CODEPAGE_932) += nls_cp932.o nls_sjis.o nls_euc-jp.o -obj-$(CONFIG_NLS_CODEPAGE_936) += nls_cp936.o nls_gb2312.o -obj-$(CONFIG_NLS_CODEPAGE_949) += nls_cp949.o nls_euc-kr.o -obj-$(CONFIG_NLS_CODEPAGE_950) += nls_cp950.o nls_big5.o +obj-$(CONFIG_NLS_CODEPAGE_874) += nls_cp874.o +obj-$(CONFIG_NLS_CODEPAGE_932) += nls_cp932.o nls_euc-jp.o +obj-$(CONFIG_NLS_CODEPAGE_936) += nls_cp936.o +obj-$(CONFIG_NLS_CODEPAGE_949) += nls_cp949.o +obj-$(CONFIG_NLS_CODEPAGE_950) += nls_cp950.o obj-$(CONFIG_NLS_CODEPAGE_1250) += nls_cp1250.o obj-$(CONFIG_NLS_CODEPAGE_1251) += nls_cp1251.o -obj-$(CONFIG_NLS_CODEPAGE_1255) += nls_cp1255.o obj-$(CONFIG_NLS_ISO8859_1) += nls_iso8859-1.o obj-$(CONFIG_NLS_ISO8859_2) += nls_iso8859-2.o obj-$(CONFIG_NLS_ISO8859_3) += nls_iso8859-3.o @@ -34,7 +33,7 @@ obj-$(CONFIG_NLS_ISO8859_5) += nls_iso8859-5.o obj-$(CONFIG_NLS_ISO8859_6) += nls_iso8859-6.o obj-$(CONFIG_NLS_ISO8859_7) += nls_iso8859-7.o -obj-$(CONFIG_NLS_ISO8859_8) += nls_cp1255.o nls_iso8859-8.o +obj-$(CONFIG_NLS_ISO8859_8) += nls_cp1255.o obj-$(CONFIG_NLS_ISO8859_9) += nls_iso8859-9.o obj-$(CONFIG_NLS_ISO8859_10) += nls_iso8859-10.o obj-$(CONFIG_NLS_ISO8859_13) += nls_iso8859-13.o diff -Nru a/fs/nls/nls_base.c b/fs/nls/nls_base.c --- a/fs/nls/nls_base.c Mon Sep 22 00:30:22 2003 +++ b/fs/nls/nls_base.c Mon Sep 22 00:30:22 2003 @@ -203,9 +203,12 @@ { struct nls_table *nls; spin_lock(&nls_lock); - for (nls = tables; nls; nls = nls->next) + for (nls = tables; nls; nls = nls->next) { if (!strcmp(nls->charset, charset)) break; + if (nls->alias && !strcmp(nls->alias, charset)) + break; + } if (nls && !try_module_get(nls->owner)) nls = NULL; spin_unlock(&nls_lock); diff -Nru a/fs/nls/nls_big5.c b/fs/nls/nls_big5.c --- a/fs/nls/nls_big5.c Mon Sep 22 00:30:23 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,59 +0,0 @@ -/* - * linux/fs/nls_big5.c - */ - -#include -#include -#include -#include -#include - -static struct nls_table *p_nls; - -static struct nls_table table = { - .charset = "big5", - .owner = THIS_MODULE, -}; - -static int __init init_nls_big5(void) -{ - p_nls = load_nls("cp950"); - - if (p_nls) { - table.uni2char = p_nls->uni2char; - table.char2uni = p_nls->char2uni; - table.charset2upper = p_nls->charset2upper; - table.charset2lower = p_nls->charset2lower; - return register_nls(&table); - } - - return -EINVAL; -} - -static void __exit exit_nls_big5(void) -{ - unregister_nls(&table); - unload_nls(p_nls); -} - -module_init(init_nls_big5) -module_exit(exit_nls_big5) -MODULE_LICENSE("Dual BSD/GPL"); - -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * ---------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ diff -Nru a/fs/nls/nls_cp1250.c b/fs/nls/nls_cp1250.c --- a/fs/nls/nls_cp1250.c Mon Sep 22 00:30:22 2003 +++ b/fs/nls/nls_cp1250.c Mon Sep 22 00:30:22 2003 @@ -345,21 +345,3 @@ module_exit(exit_nls_cp1250) MODULE_LICENSE("Dual BSD/GPL"); - -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ - diff -Nru a/fs/nls/nls_cp1251.c b/fs/nls/nls_cp1251.c --- a/fs/nls/nls_cp1251.c Mon Sep 22 00:30:23 2003 +++ b/fs/nls/nls_cp1251.c Mon Sep 22 00:30:23 2003 @@ -299,20 +299,4 @@ module_init(init_nls_cp1251) module_exit(exit_nls_cp1251) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp1255.c b/fs/nls/nls_cp1255.c --- a/fs/nls/nls_cp1255.c Mon Sep 22 00:30:17 2003 +++ b/fs/nls/nls_cp1255.c Mon Sep 22 00:30:17 2003 @@ -360,6 +360,7 @@ static struct nls_table table = { .charset = "cp1255", + .alias = "iso8859-8", .uni2char = uni2char, .char2uni = char2uni, .charset2lower = charset2lower, @@ -380,20 +381,5 @@ module_init(init_nls_cp1255) module_exit(exit_nls_cp1255) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); +MODULE_ALIAS_NLS(iso8859-8); diff -Nru a/fs/nls/nls_cp437.c b/fs/nls/nls_cp437.c --- a/fs/nls/nls_cp437.c Mon Sep 22 00:30:24 2003 +++ b/fs/nls/nls_cp437.c Mon Sep 22 00:30:24 2003 @@ -385,20 +385,4 @@ module_init(init_nls_cp437) module_exit(exit_nls_cp437) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp737.c b/fs/nls/nls_cp737.c --- a/fs/nls/nls_cp737.c Mon Sep 22 00:30:18 2003 +++ b/fs/nls/nls_cp737.c Mon Sep 22 00:30:18 2003 @@ -348,20 +348,4 @@ module_init(init_nls_cp737) module_exit(exit_nls_cp737) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp775.c b/fs/nls/nls_cp775.c --- a/fs/nls/nls_cp775.c Mon Sep 22 00:30:24 2003 +++ b/fs/nls/nls_cp775.c Mon Sep 22 00:30:24 2003 @@ -317,20 +317,4 @@ module_init(init_nls_cp775) module_exit(exit_nls_cp775) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp850.c b/fs/nls/nls_cp850.c --- a/fs/nls/nls_cp850.c Mon Sep 22 00:30:22 2003 +++ b/fs/nls/nls_cp850.c Mon Sep 22 00:30:22 2003 @@ -313,20 +313,4 @@ module_init(init_nls_cp850) module_exit(exit_nls_cp850) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp852.c b/fs/nls/nls_cp852.c --- a/fs/nls/nls_cp852.c Mon Sep 22 00:30:23 2003 +++ b/fs/nls/nls_cp852.c Mon Sep 22 00:30:23 2003 @@ -335,20 +335,4 @@ module_init(init_nls_cp852) module_exit(exit_nls_cp852) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp855.c b/fs/nls/nls_cp855.c --- a/fs/nls/nls_cp855.c Mon Sep 22 00:30:20 2003 +++ b/fs/nls/nls_cp855.c Mon Sep 22 00:30:20 2003 @@ -297,20 +297,4 @@ module_init(init_nls_cp855) module_exit(exit_nls_cp855) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp857.c b/fs/nls/nls_cp857.c --- a/fs/nls/nls_cp857.c Mon Sep 22 00:30:20 2003 +++ b/fs/nls/nls_cp857.c Mon Sep 22 00:30:20 2003 @@ -299,20 +299,4 @@ module_init(init_nls_cp857) module_exit(exit_nls_cp857) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp860.c b/fs/nls/nls_cp860.c --- a/fs/nls/nls_cp860.c Mon Sep 22 00:30:21 2003 +++ b/fs/nls/nls_cp860.c Mon Sep 22 00:30:21 2003 @@ -362,20 +362,4 @@ module_init(init_nls_cp860) module_exit(exit_nls_cp860) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp861.c b/fs/nls/nls_cp861.c --- a/fs/nls/nls_cp861.c Mon Sep 22 00:30:24 2003 +++ b/fs/nls/nls_cp861.c Mon Sep 22 00:30:24 2003 @@ -385,20 +385,4 @@ module_init(init_nls_cp861) module_exit(exit_nls_cp861) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp862.c b/fs/nls/nls_cp862.c --- a/fs/nls/nls_cp862.c Mon Sep 22 00:30:22 2003 +++ b/fs/nls/nls_cp862.c Mon Sep 22 00:30:22 2003 @@ -419,20 +419,4 @@ module_init(init_nls_cp862) module_exit(exit_nls_cp862) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp863.c b/fs/nls/nls_cp863.c --- a/fs/nls/nls_cp863.c Mon Sep 22 00:30:23 2003 +++ b/fs/nls/nls_cp863.c Mon Sep 22 00:30:23 2003 @@ -379,20 +379,4 @@ module_init(init_nls_cp863) module_exit(exit_nls_cp863) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp864.c b/fs/nls/nls_cp864.c --- a/fs/nls/nls_cp864.c Mon Sep 22 00:30:25 2003 +++ b/fs/nls/nls_cp864.c Mon Sep 22 00:30:25 2003 @@ -405,20 +405,4 @@ module_init(init_nls_cp864) module_exit(exit_nls_cp864) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp865.c b/fs/nls/nls_cp865.c --- a/fs/nls/nls_cp865.c Mon Sep 22 00:30:22 2003 +++ b/fs/nls/nls_cp865.c Mon Sep 22 00:30:22 2003 @@ -385,20 +385,4 @@ module_init(init_nls_cp865) module_exit(exit_nls_cp865) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp866.c b/fs/nls/nls_cp866.c --- a/fs/nls/nls_cp866.c Mon Sep 22 00:30:23 2003 +++ b/fs/nls/nls_cp866.c Mon Sep 22 00:30:23 2003 @@ -303,20 +303,4 @@ module_init(init_nls_cp866) module_exit(exit_nls_cp866) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp869.c b/fs/nls/nls_cp869.c --- a/fs/nls/nls_cp869.c Mon Sep 22 00:30:25 2003 +++ b/fs/nls/nls_cp869.c Mon Sep 22 00:30:25 2003 @@ -313,20 +313,4 @@ module_init(init_nls_cp869) module_exit(exit_nls_cp869) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_cp874.c b/fs/nls/nls_cp874.c --- a/fs/nls/nls_cp874.c Mon Sep 22 00:30:20 2003 +++ b/fs/nls/nls_cp874.c Mon Sep 22 00:30:20 2003 @@ -251,6 +251,7 @@ static struct nls_table table = { .charset = "cp874", + .alias = "tis-620", .uni2char = uni2char, .char2uni = char2uni, .charset2lower = charset2lower, @@ -271,20 +272,5 @@ module_init(init_nls_cp874) module_exit(exit_nls_cp874) -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ MODULE_LICENSE("Dual BSD/GPL"); +MODULE_ALIAS_NLS(tis-620); diff -Nru a/fs/nls/nls_cp932.c b/fs/nls/nls_cp932.c --- a/fs/nls/nls_cp932.c Mon Sep 22 00:30:20 2003 +++ b/fs/nls/nls_cp932.c Mon Sep 22 00:30:20 2003 @@ -7885,6 +7885,7 @@ static struct nls_table table = { .charset = "cp932", + .alias = "sjis", .uni2char = uni2char, .char2uni = char2uni, .charset2lower = charset2lower, @@ -7904,22 +7905,6 @@ module_init(init_nls_cp932) module_exit(exit_nls_cp932) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * ---------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_ALIAS_NLS(sjis); diff -Nru a/fs/nls/nls_cp936.c b/fs/nls/nls_cp936.c --- a/fs/nls/nls_cp936.c Mon Sep 22 00:30:21 2003 +++ b/fs/nls/nls_cp936.c Mon Sep 22 00:30:21 2003 @@ -11005,6 +11005,7 @@ static struct nls_table table = { .charset = "cp936", + .alias = "gb2312", .uni2char = uni2char, .char2uni = char2uni, .charset2lower = charset2lower, @@ -11024,22 +11025,6 @@ module_init(init_nls_cp936) module_exit(exit_nls_cp936) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * ---------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_ALIAS_NLS(gb2312); diff -Nru a/fs/nls/nls_cp949.c b/fs/nls/nls_cp949.c --- a/fs/nls/nls_cp949.c Mon Sep 22 00:30:25 2003 +++ b/fs/nls/nls_cp949.c Mon Sep 22 00:30:25 2003 @@ -13922,6 +13922,7 @@ static struct nls_table table = { .charset = "cp949", + .alias = "euc-kr", .uni2char = uni2char, .char2uni = char2uni, .charset2lower = charset2lower, @@ -13941,22 +13942,6 @@ module_init(init_nls_cp949) module_exit(exit_nls_cp949) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * ---------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_ALIAS_NLS(euc-kr); diff -Nru a/fs/nls/nls_cp950.c b/fs/nls/nls_cp950.c --- a/fs/nls/nls_cp950.c Mon Sep 22 00:30:25 2003 +++ b/fs/nls/nls_cp950.c Mon Sep 22 00:30:25 2003 @@ -9461,6 +9461,7 @@ static struct nls_table table = { .charset = "cp950", + .alias = "big5", .uni2char = uni2char, .char2uni = char2uni, .charset2lower = charset2lower, @@ -9480,22 +9481,6 @@ module_init(init_nls_cp950) module_exit(exit_nls_cp950) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * ---------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_ALIAS_NLS(big5); diff -Nru a/fs/nls/nls_euc-jp.c b/fs/nls/nls_euc-jp.c --- a/fs/nls/nls_euc-jp.c Mon Sep 22 00:30:18 2003 +++ b/fs/nls/nls_euc-jp.c Mon Sep 22 00:30:18 2003 @@ -579,22 +579,5 @@ module_init(init_nls_euc_jp) module_exit(exit_nls_euc_jp) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * ---------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_euc-kr.c b/fs/nls/nls_euc-kr.c --- a/fs/nls/nls_euc-kr.c Mon Sep 22 00:30:21 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,59 +0,0 @@ -/* - * linux/fs/nls_euc-kr.c - */ - -#include -#include -#include -#include -#include - -static struct nls_table *p_nls; - -static struct nls_table table = { - .charset = "euc-kr", - .owner = THIS_MODULE, -}; - -static int __init init_nls_euc_kr(void) -{ - p_nls = load_nls("cp949"); - - if (p_nls) { - table.uni2char = p_nls->uni2char; - table.char2uni = p_nls->char2uni; - table.charset2upper = p_nls->charset2upper; - table.charset2lower = p_nls->charset2lower; - return register_nls(&table); - } - - return -EINVAL; -} - -static void __exit exit_nls_euc_kr(void) -{ - unregister_nls(&table); - unload_nls(p_nls); -} - -module_init(init_nls_euc_kr) -module_exit(exit_nls_euc_kr) -MODULE_LICENSE("Dual BSD/GPL"); - -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * ---------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ diff -Nru a/fs/nls/nls_gb2312.c b/fs/nls/nls_gb2312.c --- a/fs/nls/nls_gb2312.c Mon Sep 22 00:30:25 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,59 +0,0 @@ -/* - * linux/fs/nls_gb2312.c - */ - -#include -#include -#include -#include -#include - -static struct nls_table *p_nls; - -static struct nls_table table = { - .charset = "gb2312", - .owner = THIS_MODULE, -}; - -static int __init init_nls_gb2312(void) -{ - p_nls = load_nls("cp936"); - - if (p_nls) { - table.uni2char = p_nls->uni2char; - table.char2uni = p_nls->char2uni; - table.charset2upper = p_nls->charset2upper; - table.charset2lower = p_nls->charset2lower; - return register_nls(&table); - } - - return -EINVAL; -} - -static void __exit exit_nls_gb2312(void) -{ - unregister_nls(&table); - unload_nls(p_nls); -} - -module_init(init_nls_gb2312) -module_exit(exit_nls_gb2312) -MODULE_LICENSE("Dual BSD/GPL"); - -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * ---------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ diff -Nru a/fs/nls/nls_iso8859-1.c b/fs/nls/nls_iso8859-1.c --- a/fs/nls/nls_iso8859-1.c Mon Sep 22 00:30:22 2003 +++ b/fs/nls/nls_iso8859-1.c Mon Sep 22 00:30:22 2003 @@ -254,21 +254,5 @@ module_init(init_nls_iso8859_1) module_exit(exit_nls_iso8859_1) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_iso8859-13.c b/fs/nls/nls_iso8859-13.c --- a/fs/nls/nls_iso8859-13.c Mon Sep 22 00:30:22 2003 +++ b/fs/nls/nls_iso8859-13.c Mon Sep 22 00:30:22 2003 @@ -282,21 +282,5 @@ module_init(init_nls_iso8859_13) module_exit(exit_nls_iso8859_13) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_iso8859-14.c b/fs/nls/nls_iso8859-14.c --- a/fs/nls/nls_iso8859-14.c Mon Sep 22 00:30:20 2003 +++ b/fs/nls/nls_iso8859-14.c Mon Sep 22 00:30:20 2003 @@ -338,21 +338,5 @@ module_init(init_nls_iso8859_14) module_exit(exit_nls_iso8859_14) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_iso8859-15.c b/fs/nls/nls_iso8859-15.c --- a/fs/nls/nls_iso8859-15.c Mon Sep 22 00:30:22 2003 +++ b/fs/nls/nls_iso8859-15.c Mon Sep 22 00:30:22 2003 @@ -304,21 +304,5 @@ module_init(init_nls_iso8859_15) module_exit(exit_nls_iso8859_15) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_iso8859-2.c b/fs/nls/nls_iso8859-2.c --- a/fs/nls/nls_iso8859-2.c Mon Sep 22 00:30:21 2003 +++ b/fs/nls/nls_iso8859-2.c Mon Sep 22 00:30:21 2003 @@ -305,21 +305,5 @@ module_init(init_nls_iso8859_2) module_exit(exit_nls_iso8859_2) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_iso8859-3.c b/fs/nls/nls_iso8859-3.c --- a/fs/nls/nls_iso8859-3.c Mon Sep 22 00:30:20 2003 +++ b/fs/nls/nls_iso8859-3.c Mon Sep 22 00:30:20 2003 @@ -305,21 +305,5 @@ module_init(init_nls_iso8859_3) module_exit(exit_nls_iso8859_3) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_iso8859-4.c b/fs/nls/nls_iso8859-4.c --- a/fs/nls/nls_iso8859-4.c Mon Sep 22 00:30:22 2003 +++ b/fs/nls/nls_iso8859-4.c Mon Sep 22 00:30:22 2003 @@ -305,21 +305,5 @@ module_init(init_nls_iso8859_4) module_exit(exit_nls_iso8859_4) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_iso8859-5.c b/fs/nls/nls_iso8859-5.c --- a/fs/nls/nls_iso8859-5.c Mon Sep 22 00:30:20 2003 +++ b/fs/nls/nls_iso8859-5.c Mon Sep 22 00:30:20 2003 @@ -269,21 +269,5 @@ module_init(init_nls_iso8859_5) module_exit(exit_nls_iso8859_5) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_iso8859-6.c b/fs/nls/nls_iso8859-6.c --- a/fs/nls/nls_iso8859-6.c Mon Sep 22 00:30:18 2003 +++ b/fs/nls/nls_iso8859-6.c Mon Sep 22 00:30:18 2003 @@ -260,21 +260,5 @@ module_init(init_nls_iso8859_6) module_exit(exit_nls_iso8859_6) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_iso8859-7.c b/fs/nls/nls_iso8859-7.c --- a/fs/nls/nls_iso8859-7.c Mon Sep 22 00:30:22 2003 +++ b/fs/nls/nls_iso8859-7.c Mon Sep 22 00:30:22 2003 @@ -314,21 +314,5 @@ module_init(init_nls_iso8859_7) module_exit(exit_nls_iso8859_7) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_iso8859-8.c b/fs/nls/nls_iso8859-8.c --- a/fs/nls/nls_iso8859-8.c Mon Sep 22 00:30:24 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,59 +0,0 @@ -/* - * linux/fs/nls_iso8859-8.c - */ - -#include -#include -#include -#include -#include - -static struct nls_table *p_nls; - -static struct nls_table table = { - .charset = "iso8859-8", - .owner = THIS_MODULE, -}; - -static int __init init_nls_iso8859_8(void) -{ - p_nls = load_nls("cp1255"); - - if (p_nls) { - table.uni2char = p_nls->uni2char; - table.char2uni = p_nls->char2uni; - table.charset2upper = p_nls->charset2upper; - table.charset2lower = p_nls->charset2lower; - return register_nls(&table); - } - - return -EINVAL; -} - -static void __exit exit_nls_iso8859_8(void) -{ - unregister_nls(&table); - unload_nls(p_nls); -} - -module_init(init_nls_iso8859_8) -module_exit(exit_nls_iso8859_8) -MODULE_LICENSE("Dual BSD/GPL"); - -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * ---------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ diff -Nru a/fs/nls/nls_iso8859-9.c b/fs/nls/nls_iso8859-9.c --- a/fs/nls/nls_iso8859-9.c Mon Sep 22 00:30:23 2003 +++ b/fs/nls/nls_iso8859-9.c Mon Sep 22 00:30:23 2003 @@ -269,21 +269,5 @@ module_init(init_nls_iso8859_9) module_exit(exit_nls_iso8859_9) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_koi8-r.c b/fs/nls/nls_koi8-r.c --- a/fs/nls/nls_koi8-r.c Mon Sep 22 00:30:17 2003 +++ b/fs/nls/nls_koi8-r.c Mon Sep 22 00:30:17 2003 @@ -320,21 +320,5 @@ module_init(init_nls_koi8_r) module_exit(exit_nls_koi8_r) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_koi8-ru.c b/fs/nls/nls_koi8-ru.c --- a/fs/nls/nls_koi8-ru.c Mon Sep 22 00:30:17 2003 +++ b/fs/nls/nls_koi8-ru.c Mon Sep 22 00:30:17 2003 @@ -79,21 +79,5 @@ module_init(init_nls_koi8_ru) module_exit(exit_nls_koi8_ru) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_koi8-u.c b/fs/nls/nls_koi8-u.c --- a/fs/nls/nls_koi8-u.c Mon Sep 22 00:30:25 2003 +++ b/fs/nls/nls_koi8-u.c Mon Sep 22 00:30:25 2003 @@ -327,21 +327,5 @@ module_init(init_nls_koi8_u) module_exit(exit_nls_koi8_u) -MODULE_LICENSE("Dual BSD/GPL"); -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ +MODULE_LICENSE("Dual BSD/GPL"); diff -Nru a/fs/nls/nls_sjis.c b/fs/nls/nls_sjis.c --- a/fs/nls/nls_sjis.c Mon Sep 22 00:30:22 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,59 +0,0 @@ -/* - * linux/fs/nls_sjis.c - */ - -#include -#include -#include -#include -#include - -static struct nls_table *p_nls; - -static struct nls_table table = { - .charset = "sjis", - .owner = THIS_MODULE, -}; - -static int __init init_nls_sjis(void) -{ - p_nls = load_nls("cp932"); - - if (p_nls) { - table.uni2char = p_nls->uni2char; - table.char2uni = p_nls->char2uni; - table.charset2upper = p_nls->charset2upper; - table.charset2lower = p_nls->charset2lower; - return register_nls(&table); - } - - return -EINVAL; -} - -static void __exit exit_nls_sjis(void) -{ - unregister_nls(&table); - unload_nls(p_nls); -} - -module_init(init_nls_sjis) -module_exit(exit_nls_sjis) -MODULE_LICENSE("Dual BSD/GPL"); - -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * ---------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ diff -Nru a/fs/nls/nls_tis-620.c b/fs/nls/nls_tis-620.c --- a/fs/nls/nls_tis-620.c Mon Sep 22 00:30:17 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,59 +0,0 @@ -/* - * linux/fs/nls_tis-620.c - */ - -#include -#include -#include -#include -#include - -static struct nls_table *p_nls; - -static struct nls_table table = { - .charset = "tis-620", - .owner = THIS_MODULE, -}; - -static int __init init_nls_tis_620(void) -{ - p_nls = load_nls("cp874"); - - if (p_nls) { - table.uni2char = p_nls->uni2char; - table.char2uni = p_nls->char2uni; - table.charset2upper = p_nls->charset2upper; - table.charset2lower = p_nls->charset2lower; - return register_nls(&table); - } - - return -EINVAL; -} - -static void __exit exit_nls_tis_620(void) -{ - unregister_nls(&table); - unload_nls(p_nls); -} - -module_init(init_nls_tis_620) -module_exit(exit_nls_tis_620) -MODULE_LICENSE("Dual BSD/GPL"); - -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * ---------------------------------------------------------------------------- - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * End: - */ diff -Nru a/fs/proc/Makefile b/fs/proc/Makefile --- a/fs/proc/Makefile Mon Sep 22 00:30:18 2003 +++ b/fs/proc/Makefile Mon Sep 22 00:30:18 2003 @@ -8,6 +8,7 @@ proc-$(CONFIG_MMU) := task_mmu.o proc-y += inode.o root.o base.o generic.o array.o \ - kmsg.o proc_tty.o proc_misc.o kcore.o + kmsg.o proc_tty.o proc_misc.o -proc-$(CONFIG_PROC_DEVICETREE) += proc_devtree.o +proc-$(CONFIG_PROC_KCORE) += kcore.o +proc-$(CONFIG_PROC_DEVICETREE) += proc_devtree.o diff -Nru a/fs/proc/array.c b/fs/proc/array.c --- a/fs/proc/array.c Mon Sep 22 00:30:22 2003 +++ b/fs/proc/array.c Mon Sep 22 00:30:22 2003 @@ -154,13 +154,16 @@ read_lock(&tasklist_lock); buffer += sprintf(buffer, "State:\t%s\n" + "SleepAVG:\t%lu%%\n" "Tgid:\t%d\n" "Pid:\t%d\n" "PPid:\t%d\n" "TracerPid:\t%d\n" "Uid:\t%d\t%d\t%d\t%d\n" "Gid:\t%d\t%d\t%d\t%d\n", - get_task_state(p), p->tgid, + get_task_state(p), + (p->sleep_avg/1024)*100/(1000000000/1024), + p->tgid, p->pid, p->pid ? p->real_parent->pid : 0, p->pid && p->ptrace ? p->parent->pid : 0, p->uid, p->euid, p->suid, p->fsuid, @@ -341,7 +344,7 @@ task->comm, state, ppid, - task->pgrp, + process_group(task), task->session, tty_nr, tty_pgrp, diff -Nru a/fs/proc/base.c b/fs/proc/base.c --- a/fs/proc/base.c Mon Sep 22 00:30:22 2003 +++ b/fs/proc/base.c Mon Sep 22 00:30:22 2003 @@ -44,28 +44,51 @@ #define fake_ino(pid,ino) (((pid)<<16)|(ino)) enum pid_directory_inos { - PROC_PID_INO = 2, - PROC_PID_STATUS, - PROC_PID_MEM, - PROC_PID_CWD, - PROC_PID_ROOT, - PROC_PID_EXE, - PROC_PID_FD, - PROC_PID_ENVIRON, - PROC_PID_CMDLINE, - PROC_PID_STAT, - PROC_PID_STATM, - PROC_PID_MAPS, - PROC_PID_MOUNTS, - PROC_PID_WCHAN, + PROC_TGID_INO = 2, + PROC_TGID_TASK, + PROC_TGID_STATUS, + PROC_TGID_MEM, + PROC_TGID_CWD, + PROC_TGID_ROOT, + PROC_TGID_EXE, + PROC_TGID_FD, + PROC_TGID_ENVIRON, + PROC_TGID_CMDLINE, + PROC_TGID_STAT, + PROC_TGID_STATM, + PROC_TGID_MAPS, + PROC_TGID_MOUNTS, + PROC_TGID_WCHAN, #ifdef CONFIG_SECURITY - PROC_PID_ATTR, - PROC_PID_ATTR_CURRENT, - PROC_PID_ATTR_PREV, - PROC_PID_ATTR_EXEC, - PROC_PID_ATTR_FSCREATE, + PROC_TGID_ATTR, + PROC_TGID_ATTR_CURRENT, + PROC_TGID_ATTR_PREV, + PROC_TGID_ATTR_EXEC, + PROC_TGID_ATTR_FSCREATE, #endif - PROC_PID_FD_DIR = 0x8000, /* 0x8000-0xffff */ + PROC_TGID_FD_DIR, + PROC_TID_INO, + PROC_TID_STATUS, + PROC_TID_MEM, + PROC_TID_CWD, + PROC_TID_ROOT, + PROC_TID_EXE, + PROC_TID_FD, + PROC_TID_ENVIRON, + PROC_TID_CMDLINE, + PROC_TID_STAT, + PROC_TID_STATM, + PROC_TID_MAPS, + PROC_TID_MOUNTS, + PROC_TID_WCHAN, +#ifdef CONFIG_SECURITY + PROC_TID_ATTR, + PROC_TID_ATTR_CURRENT, + PROC_TID_ATTR_PREV, + PROC_TID_ATTR_EXEC, + PROC_TID_ATTR_FSCREATE, +#endif + PROC_TID_FD_DIR = 0x8000, /* 0x8000-0xffff */ }; struct pid_entry { @@ -76,36 +99,68 @@ }; #define E(type,name,mode) {(type),sizeof(name)-1,(name),(mode)} -static struct pid_entry base_stuff[] = { - E(PROC_PID_FD, "fd", S_IFDIR|S_IRUSR|S_IXUSR), - E(PROC_PID_ENVIRON, "environ", S_IFREG|S_IRUSR), - E(PROC_PID_STATUS, "status", S_IFREG|S_IRUGO), - E(PROC_PID_CMDLINE, "cmdline", S_IFREG|S_IRUGO), - E(PROC_PID_STAT, "stat", S_IFREG|S_IRUGO), - E(PROC_PID_STATM, "statm", S_IFREG|S_IRUGO), - E(PROC_PID_MAPS, "maps", S_IFREG|S_IRUGO), - E(PROC_PID_MEM, "mem", S_IFREG|S_IRUSR|S_IWUSR), - E(PROC_PID_CWD, "cwd", S_IFLNK|S_IRWXUGO), - E(PROC_PID_ROOT, "root", S_IFLNK|S_IRWXUGO), - E(PROC_PID_EXE, "exe", S_IFLNK|S_IRWXUGO), - E(PROC_PID_MOUNTS, "mounts", S_IFREG|S_IRUGO), + +static struct pid_entry tgid_base_stuff[] = { + E(PROC_TGID_TASK, "task", S_IFDIR|S_IRUGO|S_IXUGO), + E(PROC_TGID_FD, "fd", S_IFDIR|S_IRUSR|S_IXUSR), + E(PROC_TGID_ENVIRON, "environ", S_IFREG|S_IRUSR), + E(PROC_TGID_STATUS, "status", S_IFREG|S_IRUGO), + E(PROC_TGID_CMDLINE, "cmdline", S_IFREG|S_IRUGO), + E(PROC_TGID_STAT, "stat", S_IFREG|S_IRUGO), + E(PROC_TGID_STATM, "statm", S_IFREG|S_IRUGO), + E(PROC_TGID_MAPS, "maps", S_IFREG|S_IRUGO), + E(PROC_TGID_MEM, "mem", S_IFREG|S_IRUSR|S_IWUSR), + E(PROC_TGID_CWD, "cwd", S_IFLNK|S_IRWXUGO), + E(PROC_TGID_ROOT, "root", S_IFLNK|S_IRWXUGO), + E(PROC_TGID_EXE, "exe", S_IFLNK|S_IRWXUGO), + E(PROC_TGID_MOUNTS, "mounts", S_IFREG|S_IRUGO), #ifdef CONFIG_SECURITY - E(PROC_PID_ATTR, "attr", S_IFDIR|S_IRUGO|S_IXUGO), + E(PROC_TGID_ATTR, "attr", S_IFDIR|S_IRUGO|S_IXUGO), #endif #ifdef CONFIG_KALLSYMS - E(PROC_PID_WCHAN, "wchan", S_IFREG|S_IRUGO), + E(PROC_TGID_WCHAN, "wchan", S_IFREG|S_IRUGO), #endif - {0,0,NULL,0} + {0,0,NULL,0} }; +static struct pid_entry tid_base_stuff[] = { + E(PROC_TID_FD, "fd", S_IFDIR|S_IRUSR|S_IXUSR), + E(PROC_TID_ENVIRON, "environ", S_IFREG|S_IRUSR), + E(PROC_TID_STATUS, "status", S_IFREG|S_IRUGO), + E(PROC_TID_CMDLINE, "cmdline", S_IFREG|S_IRUGO), + E(PROC_TID_STAT, "stat", S_IFREG|S_IRUGO), + E(PROC_TID_STATM, "statm", S_IFREG|S_IRUGO), + E(PROC_TID_MAPS, "maps", S_IFREG|S_IRUGO), + E(PROC_TID_MEM, "mem", S_IFREG|S_IRUSR|S_IWUSR), + E(PROC_TID_CWD, "cwd", S_IFLNK|S_IRWXUGO), + E(PROC_TID_ROOT, "root", S_IFLNK|S_IRWXUGO), + E(PROC_TID_EXE, "exe", S_IFLNK|S_IRWXUGO), + E(PROC_TID_MOUNTS, "mounts", S_IFREG|S_IRUGO), +#ifdef CONFIG_SECURITY + E(PROC_TID_ATTR, "attr", S_IFDIR|S_IRUGO|S_IXUGO), +#endif +#ifdef CONFIG_KALLSYMS + E(PROC_TID_WCHAN, "wchan", S_IFREG|S_IRUGO), +#endif + {0,0,NULL,0} +}; + #ifdef CONFIG_SECURITY -static struct pid_entry attr_stuff[] = { - E(PROC_PID_ATTR_CURRENT, "current", S_IFREG|S_IRUGO|S_IWUGO), - E(PROC_PID_ATTR_PREV, "prev", S_IFREG|S_IRUGO), - E(PROC_PID_ATTR_EXEC, "exec", S_IFREG|S_IRUGO|S_IWUGO), - E(PROC_PID_ATTR_FSCREATE, "fscreate", S_IFREG|S_IRUGO|S_IWUGO), - {0,0,NULL,0} +static struct pid_entry tgid_attr_stuff[] = { + E(PROC_TGID_ATTR_CURRENT, "current", S_IFREG|S_IRUGO|S_IWUGO), + E(PROC_TGID_ATTR_PREV, "prev", S_IFREG|S_IRUGO), + E(PROC_TGID_ATTR_EXEC, "exec", S_IFREG|S_IRUGO|S_IWUGO), + E(PROC_TGID_ATTR_FSCREATE, "fscreate", S_IFREG|S_IRUGO|S_IWUGO), + {0,0,NULL,0} +}; +static struct pid_entry tid_attr_stuff[] = { + E(PROC_TID_ATTR_CURRENT, "current", S_IFREG|S_IRUGO|S_IWUGO), + E(PROC_TID_ATTR_PREV, "prev", S_IFREG|S_IRUGO), + E(PROC_TID_ATTR_EXEC, "exec", S_IFREG|S_IRUGO|S_IWUGO), + E(PROC_TID_ATTR_FSCREATE, "fscreate", S_IFREG|S_IRUGO|S_IWUGO), + {0,0,NULL,0} }; #endif + #undef E static inline struct task_struct *proc_task(struct inode *inode) @@ -128,7 +183,7 @@ struct task_struct *task = proc_task(inode); struct files_struct *files; struct file *file; - int fd = proc_type(inode) - PROC_PID_FD_DIR; + int fd = proc_type(inode) - PROC_TID_FD_DIR; task_lock(task); files = task->files; @@ -675,7 +730,7 @@ { struct inode *inode = filp->f_dentry->d_inode; struct task_struct *p = proc_task(inode); - unsigned int fd, pid, ino; + unsigned int fd, tid, ino; int retval; char buf[NUMBUF]; struct files_struct * files; @@ -684,7 +739,7 @@ if (!pid_alive(p)) goto out; retval = 0; - pid = p->pid; + tid = p->pid; fd = filp->f_pos; switch (fd) { @@ -693,7 +748,7 @@ goto out; filp->f_pos++; case 1: - ino = fake_ino(pid, PROC_PID_INO); + ino = fake_ino(tid, PROC_TID_INO); if (filldir(dirent, "..", 2, 1, ino, DT_DIR) < 0) goto out; filp->f_pos++; @@ -723,7 +778,7 @@ i /= 10; } while (i); - ino = fake_ino(pid, PROC_PID_FD_DIR + fd); + ino = fake_ino(tid, PROC_TID_FD_DIR + fd); if (filldir(dirent, buf+j, NUMBUF-j, fd+2, ino, DT_LNK) < 0) { spin_lock(&files->file_lock); break; @@ -792,11 +847,18 @@ return ret; } -static int proc_base_readdir(struct file * filp, +static int proc_tgid_base_readdir(struct file * filp, + void * dirent, filldir_t filldir) +{ + return proc_pident_readdir(filp,dirent,filldir, + tgid_base_stuff,ARRAY_SIZE(tgid_base_stuff)); +} + +static int proc_tid_base_readdir(struct file * filp, void * dirent, filldir_t filldir) { return proc_pident_readdir(filp,dirent,filldir, - base_stuff,ARRAY_SIZE(base_stuff)); + tid_base_stuff,ARRAY_SIZE(tid_base_stuff)); } /* building an inode */ @@ -843,7 +905,7 @@ ei->type = ino; inode->i_uid = 0; inode->i_gid = 0; - if (ino == PROC_PID_INO || task_dumpable(task)) { + if (ino == PROC_TGID_INO || ino == PROC_TID_INO || task_dumpable(task)) { inode->i_uid = task->euid; inode->i_gid = task->egid; } @@ -873,7 +935,7 @@ struct inode *inode = dentry->d_inode; struct task_struct *task = proc_task(inode); if (pid_alive(task)) { - if (proc_type(inode) == PROC_PID_INO || task_dumpable(task)) { + if (proc_type(inode) == PROC_TGID_INO || proc_type(inode) == PROC_TID_INO || task_dumpable(task)) { inode->i_uid = task->euid; inode->i_gid = task->egid; } else { @@ -887,11 +949,11 @@ return 0; } -static int pid_fd_revalidate(struct dentry *dentry, struct nameidata *nd) +static int tid_fd_revalidate(struct dentry *dentry, struct nameidata *nd) { struct inode *inode = dentry->d_inode; struct task_struct *task = proc_task(inode); - int fd = proc_type(inode) - PROC_PID_FD_DIR; + int fd = proc_type(inode) - PROC_TID_FD_DIR; struct files_struct *files; task_lock(task); @@ -940,10 +1002,9 @@ return !pid_alive(proc_task(dentry->d_inode)); } - -static struct dentry_operations pid_fd_dentry_operations = +static struct dentry_operations tid_fd_dentry_operations = { - .d_revalidate = pid_fd_revalidate, + .d_revalidate = tid_fd_revalidate, .d_delete = pid_delete_dentry, }; @@ -999,7 +1060,7 @@ if (!pid_alive(task)) goto out; - inode = proc_pid_make_inode(dir->i_sb, task, PROC_PID_FD_DIR+fd); + inode = proc_pid_make_inode(dir->i_sb, task, PROC_TID_FD_DIR+fd); if (!inode) goto out; ei = PROC_I(inode); @@ -1024,7 +1085,7 @@ inode->i_op = &proc_pid_link_inode_operations; inode->i_size = 64; ei->op.proc_get_link = proc_fd_link; - dentry->d_op = &pid_fd_dentry_operations; + dentry->d_op = &tid_fd_dentry_operations; d_add(dentry, inode); return NULL; @@ -1037,11 +1098,19 @@ return ERR_PTR(-ENOENT); } +static int proc_task_readdir(struct file * filp, void * dirent, filldir_t filldir); +static struct dentry *proc_task_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *nd); + static struct file_operations proc_fd_operations = { .read = generic_read_dir, .readdir = proc_readfd, }; +static struct file_operations proc_task_operations = { + .read = generic_read_dir, + .readdir = proc_task_readdir, +}; + /* * proc directories can do almost nothing.. */ @@ -1050,6 +1119,11 @@ .permission = proc_permission, }; +static struct inode_operations proc_task_inode_operations = { + .lookup = proc_task_lookup, + .permission = proc_permission, +}; + #ifdef CONFIG_SECURITY static ssize_t proc_pid_attr_read(struct file * file, char * buf, size_t count, loff_t *ppos) @@ -1122,8 +1196,10 @@ .write = proc_pid_attr_write, }; -static struct file_operations proc_attr_operations; -static struct inode_operations proc_attr_inode_operations; +static struct file_operations proc_tid_attr_operations; +static struct inode_operations proc_tid_attr_inode_operations; +static struct file_operations proc_tgid_attr_operations; +static struct inode_operations proc_tgid_attr_inode_operations; #endif /* SMP-safe */ @@ -1161,71 +1237,98 @@ inode->i_mode = p->mode; /* * Yes, it does not scale. And it should not. Don't add - * new entries into /proc// without very good reasons. + * new entries into /proc// without very good reasons. */ switch(p->type) { - case PROC_PID_FD: + case PROC_TGID_TASK: + inode->i_nlink = 3; + inode->i_op = &proc_task_inode_operations; + inode->i_fop = &proc_task_operations; + break; + case PROC_TID_FD: + case PROC_TGID_FD: inode->i_nlink = 2; inode->i_op = &proc_fd_inode_operations; inode->i_fop = &proc_fd_operations; break; - case PROC_PID_EXE: + case PROC_TID_EXE: + case PROC_TGID_EXE: inode->i_op = &proc_pid_link_inode_operations; ei->op.proc_get_link = proc_exe_link; break; - case PROC_PID_CWD: + case PROC_TID_CWD: + case PROC_TGID_CWD: inode->i_op = &proc_pid_link_inode_operations; ei->op.proc_get_link = proc_cwd_link; break; - case PROC_PID_ROOT: + case PROC_TID_ROOT: + case PROC_TGID_ROOT: inode->i_op = &proc_pid_link_inode_operations; ei->op.proc_get_link = proc_root_link; break; - case PROC_PID_ENVIRON: + case PROC_TID_ENVIRON: + case PROC_TGID_ENVIRON: inode->i_fop = &proc_info_file_operations; ei->op.proc_read = proc_pid_environ; break; - case PROC_PID_STATUS: + case PROC_TID_STATUS: + case PROC_TGID_STATUS: inode->i_fop = &proc_info_file_operations; ei->op.proc_read = proc_pid_status; break; - case PROC_PID_STAT: + case PROC_TID_STAT: + case PROC_TGID_STAT: inode->i_fop = &proc_info_file_operations; ei->op.proc_read = proc_pid_stat; break; - case PROC_PID_CMDLINE: + case PROC_TID_CMDLINE: + case PROC_TGID_CMDLINE: inode->i_fop = &proc_info_file_operations; ei->op.proc_read = proc_pid_cmdline; break; - case PROC_PID_STATM: + case PROC_TID_STATM: + case PROC_TGID_STATM: inode->i_fop = &proc_info_file_operations; ei->op.proc_read = proc_pid_statm; break; - case PROC_PID_MAPS: + case PROC_TID_MAPS: + case PROC_TGID_MAPS: inode->i_fop = &proc_maps_operations; break; - case PROC_PID_MEM: + case PROC_TID_MEM: + case PROC_TGID_MEM: inode->i_op = &proc_mem_inode_operations; inode->i_fop = &proc_mem_operations; break; - case PROC_PID_MOUNTS: + case PROC_TID_MOUNTS: + case PROC_TGID_MOUNTS: inode->i_fop = &proc_mounts_operations; break; #ifdef CONFIG_SECURITY - case PROC_PID_ATTR: + case PROC_TID_ATTR: + inode->i_nlink = 2; + inode->i_op = &proc_tid_attr_inode_operations; + inode->i_fop = &proc_tid_attr_operations; + break; + case PROC_TGID_ATTR: inode->i_nlink = 2; - inode->i_op = &proc_attr_inode_operations; - inode->i_fop = &proc_attr_operations; + inode->i_op = &proc_tgid_attr_inode_operations; + inode->i_fop = &proc_tgid_attr_operations; break; - case PROC_PID_ATTR_CURRENT: - case PROC_PID_ATTR_PREV: - case PROC_PID_ATTR_EXEC: - case PROC_PID_ATTR_FSCREATE: + case PROC_TID_ATTR_CURRENT: + case PROC_TGID_ATTR_CURRENT: + case PROC_TID_ATTR_PREV: + case PROC_TGID_ATTR_PREV: + case PROC_TID_ATTR_EXEC: + case PROC_TGID_ATTR_EXEC: + case PROC_TID_ATTR_FSCREATE: + case PROC_TGID_ATTR_FSCREATE: inode->i_fop = &proc_pid_attr_operations; break; #endif #ifdef CONFIG_KALLSYMS - case PROC_PID_WCHAN: + case PROC_TID_WCHAN: + case PROC_TGID_WCHAN: inode->i_fop = &proc_info_file_operations; ei->op.proc_read = proc_pid_wchan; break; @@ -1243,40 +1346,75 @@ return ERR_PTR(error); } -static struct dentry *proc_base_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd){ - return proc_pident_lookup(dir, dentry, base_stuff); +static struct dentry *proc_tgid_base_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd){ + return proc_pident_lookup(dir, dentry, tgid_base_stuff); +} + +static struct dentry *proc_tid_base_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd){ + return proc_pident_lookup(dir, dentry, tid_base_stuff); } -static struct file_operations proc_base_operations = { +static struct file_operations proc_tgid_base_operations = { + .read = generic_read_dir, + .readdir = proc_tgid_base_readdir, +}; + +static struct file_operations proc_tid_base_operations = { .read = generic_read_dir, - .readdir = proc_base_readdir, + .readdir = proc_tid_base_readdir, +}; + +static struct inode_operations proc_tgid_base_inode_operations = { + .lookup = proc_tgid_base_lookup, }; -static struct inode_operations proc_base_inode_operations = { - .lookup = proc_base_lookup, +static struct inode_operations proc_tid_base_inode_operations = { + .lookup = proc_tid_base_lookup, }; #ifdef CONFIG_SECURITY -static int proc_attr_readdir(struct file * filp, +static int proc_tgid_attr_readdir(struct file * filp, void * dirent, filldir_t filldir) { return proc_pident_readdir(filp,dirent,filldir, - attr_stuff,ARRAY_SIZE(attr_stuff)); + tgid_attr_stuff,ARRAY_SIZE(tgid_attr_stuff)); } -static struct file_operations proc_attr_operations = { +static int proc_tid_attr_readdir(struct file * filp, + void * dirent, filldir_t filldir) +{ + return proc_pident_readdir(filp,dirent,filldir, + tid_attr_stuff,ARRAY_SIZE(tid_attr_stuff)); +} + +static struct file_operations proc_tgid_attr_operations = { + .read = generic_read_dir, + .readdir = proc_tgid_attr_readdir, +}; + +static struct file_operations proc_tid_attr_operations = { .read = generic_read_dir, - .readdir = proc_attr_readdir, + .readdir = proc_tid_attr_readdir, }; -static struct dentry *proc_attr_lookup(struct inode *dir, +static struct dentry *proc_tgid_attr_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) { - return proc_pident_lookup(dir, dentry, attr_stuff); + return proc_pident_lookup(dir, dentry, tgid_attr_stuff); } -static struct inode_operations proc_attr_inode_operations = { - .lookup = proc_attr_lookup, +static struct dentry *proc_tid_attr_lookup(struct inode *dir, + struct dentry *dentry, struct nameidata *nd) +{ + return proc_pident_lookup(dir, dentry, tid_attr_stuff); +} + +static struct inode_operations proc_tgid_attr_inode_operations = { + .lookup = proc_tgid_attr_lookup, +}; + +static struct inode_operations proc_tid_attr_inode_operations = { + .lookup = proc_tid_attr_lookup, }; #endif @@ -1286,14 +1424,14 @@ static int proc_self_readlink(struct dentry *dentry, char *buffer, int buflen) { char tmp[30]; - sprintf(tmp, "%d", current->pid); + sprintf(tmp, "%d", current->tgid); return vfs_readlink(dentry,buffer,buflen,tmp); } static int proc_self_follow_link(struct dentry *dentry, struct nameidata *nd) { char tmp[30]; - sprintf(tmp, "%d", current->pid); + sprintf(tmp, "%d", current->tgid); return vfs_follow_link(nd,tmp); } @@ -1357,7 +1495,7 @@ struct task_struct *task; struct inode *inode; struct proc_inode *ei; - unsigned pid; + unsigned tgid; if (dentry->d_name.len == 4 && !memcmp(dentry->d_name.name,"self",4)) { inode = new_inode(dir->i_sb); @@ -1365,7 +1503,7 @@ return ERR_PTR(-ENOMEM); ei = PROC_I(inode); inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME; - inode->i_ino = fake_ino(0, PROC_PID_INO); + inode->i_ino = fake_ino(0, PROC_TGID_INO); ei->pde = NULL; inode->i_mode = S_IFLNK|S_IRWXUGO; inode->i_uid = inode->i_gid = 0; @@ -1374,19 +1512,19 @@ d_add(dentry, inode); return NULL; } - pid = name_to_int(dentry); - if (pid == ~0U) + tgid = name_to_int(dentry); + if (tgid == ~0U) goto out; read_lock(&tasklist_lock); - task = find_task_by_pid(pid); + task = find_task_by_pid(tgid); if (task) get_task_struct(task); read_unlock(&tasklist_lock); if (!task) goto out; - inode = proc_pid_make_inode(dir->i_sb, task, PROC_PID_INO); + inode = proc_pid_make_inode(dir->i_sb, task, PROC_TGID_INO); if (!inode) { @@ -1394,8 +1532,53 @@ goto out; } inode->i_mode = S_IFDIR|S_IRUGO|S_IXUGO; - inode->i_op = &proc_base_inode_operations; - inode->i_fop = &proc_base_operations; + inode->i_op = &proc_tgid_base_inode_operations; + inode->i_fop = &proc_tgid_base_operations; + inode->i_nlink = 3; + inode->i_flags|=S_IMMUTABLE; + + dentry->d_op = &pid_base_dentry_operations; + + spin_lock(&task->proc_lock); + task->proc_dentry = dentry; + d_add(dentry, inode); + spin_unlock(&task->proc_lock); + + put_task_struct(task); + return NULL; +out: + return ERR_PTR(-ENOENT); +} + +/* SMP-safe */ +static struct dentry *proc_task_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *nd) +{ + struct task_struct *task; + struct inode *inode; + unsigned tid; + + tid = name_to_int(dentry); + if (tid == ~0U) + goto out; + + read_lock(&tasklist_lock); + task = find_task_by_pid(tid); + if (task) + get_task_struct(task); + read_unlock(&tasklist_lock); + if (!task) + goto out; + + inode = proc_pid_make_inode(dir->i_sb, task, PROC_TID_INO); + + + if (!inode) { + put_task_struct(task); + goto out; + } + inode->i_mode = S_IFDIR|S_IRUGO|S_IXUGO; + inode->i_op = &proc_tid_base_inode_operations; + inode->i_fop = &proc_tid_base_operations; inode->i_nlink = 3; inode->i_flags|=S_IMMUTABLE; @@ -1416,59 +1599,140 @@ #define PROC_MAXPIDS 20 /* - * Get a few pid's to return for filldir - we need to hold the + * Get a few tgid's to return for filldir - we need to hold the * tasklist lock while doing this, and we must release it before * we actually do the filldir itself, so we use a temp buffer.. */ -static int get_pid_list(int index, unsigned int *pids) +static int get_tgid_list(int index, unsigned int *tgids) { struct task_struct *p; - int nr_pids = 0; + int nr_tgids = 0; index--; read_lock(&tasklist_lock); for_each_process(p) { - int pid = p->pid; + int tgid = p->pid; if (!pid_alive(p)) continue; if (--index >= 0) continue; - pids[nr_pids] = pid; - nr_pids++; - if (nr_pids >= PROC_MAXPIDS) + tgids[nr_tgids] = tgid; + nr_tgids++; + if (nr_tgids >= PROC_MAXPIDS) break; } read_unlock(&tasklist_lock); - return nr_pids; + return nr_tgids; +} + +/* + * Get a few tid's to return for filldir - we need to hold the + * tasklist lock while doing this, and we must release it before + * we actually do the filldir itself, so we use a temp buffer.. + */ +static int get_tid_list(int index, unsigned int *tids, struct inode *dir) +{ + struct task_struct *leader_task = proc_task(dir); + struct task_struct *task = leader_task; + int nr_tids = 0; + + index -= 2; + read_lock(&tasklist_lock); + do { + int tid = task->pid; + if (!pid_alive(task)) + continue; + if (--index >= 0) + continue; + tids[nr_tids] = tid; + nr_tids++; + if (nr_tids >= PROC_MAXPIDS) + break; + } while ((task = next_thread(task)) != leader_task); + read_unlock(&tasklist_lock); + return nr_tids; } +/* for the /proc/ directory itself, after non-process stuff has been done */ int proc_pid_readdir(struct file * filp, void * dirent, filldir_t filldir) { - unsigned int pid_array[PROC_MAXPIDS]; + unsigned int tgid_array[PROC_MAXPIDS]; char buf[PROC_NUMBUF]; unsigned int nr = filp->f_pos - FIRST_PROCESS_ENTRY; - unsigned int nr_pids, i; + unsigned int nr_tgids, i; if (!nr) { - ino_t ino = fake_ino(0,PROC_PID_INO); + ino_t ino = fake_ino(0,PROC_TGID_INO); if (filldir(dirent, "self", 4, filp->f_pos, ino, DT_LNK) < 0) return 0; filp->f_pos++; nr++; } - nr_pids = get_pid_list(nr, pid_array); + nr_tgids = get_tgid_list(nr, tgid_array); - for (i = 0; i < nr_pids; i++) { - int pid = pid_array[i]; - ino_t ino = fake_ino(pid,PROC_PID_INO); + for (i = 0; i < nr_tgids; i++) { + int tgid = tgid_array[i]; + ino_t ino = fake_ino(tgid,PROC_TGID_INO); unsigned long j = PROC_NUMBUF; - do buf[--j] = '0' + (pid % 10); while (pid/=10); + do buf[--j] = '0' + (tgid % 10); while (tgid/=10); if (filldir(dirent, buf+j, PROC_NUMBUF-j, filp->f_pos, ino, DT_DIR) < 0) break; filp->f_pos++; } return 0; +} + +/* for the /proc/TGID/task/ directories */ +static int proc_task_readdir(struct file * filp, void * dirent, filldir_t filldir) +{ + unsigned int tid_array[PROC_MAXPIDS]; + char buf[PROC_NUMBUF]; + unsigned int nr_tids, i; + struct dentry *dentry = filp->f_dentry; + struct inode *inode = dentry->d_inode; + int retval = -ENOENT; + ino_t ino; + unsigned long pos = filp->f_pos; /* avoiding "long long" filp->f_pos */ + + if (!pid_alive(proc_task(inode))) + goto out; + retval = 0; + + switch (pos) { + case 0: + ino = inode->i_ino; + if (filldir(dirent, ".", 1, pos, ino, DT_DIR) < 0) + goto out; + pos++; + /* fall through */ + case 1: + ino = parent_ino(dentry); + if (filldir(dirent, "..", 2, pos, ino, DT_DIR) < 0) + goto out; + pos++; + /* fall through */ + } + + nr_tids = get_tid_list(pos, tid_array, inode); + + for (i = 0; i < nr_tids; i++) { + unsigned long j = PROC_NUMBUF; + int tid = tid_array[i]; + + ino = fake_ino(tid,PROC_TID_INO); + + do + buf[--j] = '0' + (tid % 10); + while (tid /= 10); + + if (filldir(dirent, buf+j, PROC_NUMBUF-j, pos, ino, DT_DIR) < 0) + break; + pos++; + } +out: + filp->f_pos = pos; + return retval; } diff -Nru a/fs/proc/generic.c b/fs/proc/generic.c --- a/fs/proc/generic.c Mon Sep 22 00:30:25 2003 +++ b/fs/proc/generic.c Mon Sep 22 00:30:25 2003 @@ -18,13 +18,13 @@ #include #include -static ssize_t proc_file_read(struct file * file, char * buf, +static ssize_t proc_file_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos); -static ssize_t proc_file_write(struct file * file, const char * buffer, +static ssize_t proc_file_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos); static loff_t proc_file_lseek(struct file *, loff_t, int); -int proc_match(int len, const char *name,struct proc_dir_entry * de) +int proc_match(int len, const char *name, struct proc_dir_entry *de) { if (de->namelen != len) return 0; @@ -45,7 +45,8 @@ #define PROC_BLOCK_SIZE (PAGE_SIZE - 1024) static ssize_t -proc_file_read(struct file * file, char * buf, size_t nbytes, loff_t *ppos) +proc_file_read(struct file *file, char __user *buf, size_t nbytes, + loff_t *ppos) { struct inode * inode = file->f_dentry->d_inode; char *page; @@ -59,8 +60,7 @@ if (!(page = (char*) __get_free_page(GFP_KERNEL))) return -ENOMEM; - while ((nbytes > 0) && !eof) - { + while ((nbytes > 0) && !eof) { count = MIN(PROC_BLOCK_SIZE, nbytes); start = NULL; @@ -184,7 +184,7 @@ } static ssize_t -proc_file_write(struct file * file, const char * buffer, +proc_file_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos) { struct inode *inode = file->f_dentry->d_inode; @@ -201,7 +201,7 @@ static loff_t -proc_file_lseek(struct file * file, loff_t offset, int orig) +proc_file_lseek(struct file *file, loff_t offset, int orig) { lock_kernel(); @@ -299,15 +299,16 @@ return i; } -static int proc_readlink(struct dentry *dentry, char *buffer, int buflen) +static int +proc_readlink(struct dentry *dentry, char __user *buffer, int buflen) { - char *s=PDE(dentry->d_inode)->data; + char *s = PDE(dentry->d_inode)->data; return vfs_readlink(dentry, buffer, buflen, s); } static int proc_follow_link(struct dentry *dentry, struct nameidata *nd) { - char *s=PDE(dentry->d_inode)->data; + char *s = PDE(dentry->d_inode)->data; return vfs_follow_link(nd, s); } diff -Nru a/fs/proc/kcore.c b/fs/proc/kcore.c --- a/fs/proc/kcore.c Mon Sep 22 00:30:22 2003 +++ b/fs/proc/kcore.c Mon Sep 22 00:30:22 2003 @@ -27,7 +27,7 @@ return capable(CAP_SYS_RAWIO) ? 0 : -EPERM; } -static ssize_t read_kcore(struct file *, char *, size_t, loff_t *); +static ssize_t read_kcore(struct file *, char __user *, size_t, loff_t *); struct file_operations proc_kcore_operations = { .read = read_kcore, @@ -175,6 +175,7 @@ elf->e_ident[EI_CLASS] = ELF_CLASS; elf->e_ident[EI_DATA] = ELF_DATA; elf->e_ident[EI_VERSION]= EV_CURRENT; + elf->e_ident[EI_OSABI] = ELF_OSABI; memset(elf->e_ident+EI_PAD, 0, EI_NIDENT-EI_PAD); elf->e_type = ET_CORE; elf->e_machine = ELF_ARCH; @@ -267,7 +268,8 @@ /* * read from the ELF header and then kernel memory */ -static ssize_t read_kcore(struct file *file, char *buffer, size_t buflen, loff_t *fpos) +static ssize_t +read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) { ssize_t acc = 0; size_t size, tsz; diff -Nru a/fs/proc/kmsg.c b/fs/proc/kmsg.c --- a/fs/proc/kmsg.c Mon Sep 22 00:30:25 2003 +++ b/fs/proc/kmsg.c Mon Sep 22 00:30:25 2003 @@ -17,7 +17,7 @@ extern wait_queue_head_t log_wait; -extern int do_syslog(int type, char * bug, int count); +extern int do_syslog(int type, char __user *bug, int count); static int kmsg_open(struct inode * inode, struct file * file) { @@ -30,13 +30,13 @@ return 0; } -static ssize_t kmsg_read(struct file * file, char * buf, +static ssize_t kmsg_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) { - return do_syslog(2,buf,count); + return do_syslog(2, buf, count); } -static unsigned int kmsg_poll(struct file *file, poll_table * wait) +static unsigned int kmsg_poll(struct file *file, poll_table *wait) { poll_wait(file, &log_wait, wait); if (do_syslog(9, 0, 0)) diff -Nru a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c --- a/fs/proc/proc_misc.c Mon Sep 22 00:30:18 2003 +++ b/fs/proc/proc_misc.c Mon Sep 22 00:30:18 2003 @@ -343,7 +343,7 @@ #endif extern struct seq_operations slabinfo_op; -extern ssize_t slabinfo_write(struct file *, const char *, size_t, loff_t *); +extern ssize_t slabinfo_write(struct file *, const char __user *, size_t, loff_t *); static int slabinfo_open(struct inode *inode, struct file *file) { return seq_open(file, &slabinfo_op); @@ -548,8 +548,8 @@ * buffer. Use of the program readprofile is recommended in order to * get meaningful info out of these data. */ -static ssize_t read_profile(struct file *file, char *buf, - size_t count, loff_t *ppos) +static ssize_t +read_profile(struct file *file, char __user *buf, size_t count, loff_t *ppos) { unsigned long p = *ppos; ssize_t read; @@ -580,13 +580,13 @@ * Writing a 'profiling multiplier' value into it also re-sets the profiling * interrupt frequency, on architectures that support this. */ -static ssize_t write_profile(struct file * file, const char * buf, +static ssize_t write_profile(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { #ifdef CONFIG_SMP extern int setup_profiling_timer (unsigned int multiplier); - if (count==sizeof(int)) { + if (count == sizeof(int)) { unsigned int multiplier; if (copy_from_user(&multiplier, buf, sizeof(int))) @@ -610,8 +610,8 @@ /* * writing 'C' to /proc/sysrq-trigger is like sysrq-C */ -static ssize_t write_sysrq_trigger(struct file *file, const char *buf, - size_t count, loff_t *ppos) +static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf, + size_t count, loff_t *ppos) { if (count) { char c; @@ -685,12 +685,14 @@ #ifdef CONFIG_MODULES create_seq_entry("modules", 0, &proc_modules_operations); #endif +#ifdef CONFIG_PROC_KCORE proc_root_kcore = create_proc_entry("kcore", S_IRUSR, NULL); if (proc_root_kcore) { proc_root_kcore->proc_fops = &proc_kcore_operations; proc_root_kcore->size = (size_t)high_memory - PAGE_OFFSET + PAGE_SIZE; } +#endif if (prof_on) { entry = create_proc_entry("profile", S_IWUSR | S_IRUGO, NULL); if (entry) { diff -Nru a/fs/reiserfs/file.c b/fs/reiserfs/file.c --- a/fs/reiserfs/file.c Mon Sep 22 00:30:18 2003 +++ b/fs/reiserfs/file.c Mon Sep 22 00:30:18 2003 @@ -485,6 +485,11 @@ /* Now the final thing, if we have grew the file, we must update it's size*/ if ( pos + write_bytes > inode->i_size) { inode->i_size = pos + write_bytes; // Set new size + /* If the file have grown so much that tail packing is no longer possible, reset + "need to pack" flag */ + if ( (have_large_tails (inode->i_sb) && inode->i_size > i_block_size (inode)*4) || + (have_small_tails (inode->i_sb) && inode->i_size > i_block_size(inode)) ) + REISERFS_I(inode)->i_flags &= ~i_pack_on_close_mask ; } /* Amount of on-disk blocks used by file have changed, update it */ @@ -779,7 +784,7 @@ /* Now if all the write area lies past the file end, no point in maping blocks, since there is none, so we just zero out remaining parts of first and last pages in write area (if needed) */ - if ( (pos & ~(PAGE_CACHE_SIZE - 1)) > inode->i_size ) { + if ( (pos & ~((loff_t)PAGE_CACHE_SIZE - 1)) > inode->i_size ) { if ( from != 0 ) {/* First page needs to be partially zeroed */ char *kaddr = kmap_atomic(prepared_pages[0], KM_USER0); memset(kaddr, 0, from); @@ -801,9 +806,9 @@ we need to allocate (calculated above) */ /* Mask write position to start on blocksize, we do it out of the loop for performance reasons */ - pos &= ~(inode->i_sb->s_blocksize - 1); + pos &= ~((loff_t) inode->i_sb->s_blocksize - 1); /* Set cpu key to the starting position in a file (on left block boundary)*/ - make_cpu_key (&key, inode, 1 + ((pos) & ~(inode->i_sb->s_blocksize - 1)), TYPE_ANY, 3/*key length*/); + make_cpu_key (&key, inode, 1 + ((pos) & ~((loff_t) inode->i_sb->s_blocksize - 1)), TYPE_ANY, 3/*key length*/); reiserfs_write_lock(inode->i_sb); // We need that for at least search_by_key() for ( i = 0; i < num_pages ; i++ ) { @@ -999,8 +1004,40 @@ struct page * prepared_pages[REISERFS_WRITE_PAGES_AT_A_TIME]; /* To simplify coding at this time, we store locked pages in array for now */ - if ( count <= PAGE_CACHE_SIZE || file->f_flags & O_DIRECT) + if ( count <= PAGE_CACHE_SIZE ) return generic_file_write(file, buf, count, ppos); + + if ( file->f_flags & O_DIRECT) { // Direct IO needs some special threating. + int result, after_file_end = 0; + if ( (*ppos + count >= inode->i_size) || (file->f_flags & O_APPEND) ) { + /* If we are appending a file, we need to put this savelink in here. + If we will crash while doing direct io, finish_unfinished will + cut the garbage from the file end. */ + struct reiserfs_transaction_handle th; + reiserfs_write_lock(inode->i_sb); + journal_begin(&th, inode->i_sb, JOURNAL_PER_BALANCE_CNT ); + reiserfs_update_inode_transaction(inode); + add_save_link (&th, inode, 1 /* Truncate */); + journal_end(&th, inode->i_sb, JOURNAL_PER_BALANCE_CNT ); + reiserfs_write_unlock(inode->i_sb); + after_file_end = 1; + } + result = generic_file_write(file, buf, count, ppos); + + if ( after_file_end ) { /* Now update i_size and remove the savelink */ + struct reiserfs_transaction_handle th; + reiserfs_write_lock(inode->i_sb); + journal_begin(&th, inode->i_sb, 1); + reiserfs_update_inode_transaction(inode); + reiserfs_update_sd(&th, inode); + journal_end(&th, inode->i_sb, 1); + remove_save_link (inode, 1/* truncate */); + reiserfs_write_unlock(inode->i_sb); + } + + return result; + } + if ( unlikely((ssize_t) count < 0 )) return -EINVAL; diff -Nru a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c --- a/fs/reiserfs/inode.c Mon Sep 22 00:30:20 2003 +++ b/fs/reiserfs/inode.c Mon Sep 22 00:30:20 2003 @@ -306,7 +306,7 @@ ** read old data off disk. Set the up to date bit on the buffer instead ** and jump to the end */ - if (PageUptodate(bh_result->b_page)) { + if (!bh_result->b_page || PageUptodate(bh_result->b_page)) { set_buffer_uptodate(bh_result); goto finished ; } @@ -420,6 +420,45 @@ return reiserfs_get_block(inode, block, bh_result, GET_BLOCK_NO_HOLE) ; } +/* This is special helper for reiserfs_get_block in case we are executing + direct_IO request. */ +static int reiserfs_get_blocks_direct_io(struct inode *inode, + sector_t iblock, + unsigned long max_blocks, + struct buffer_head *bh_result, + int create) +{ + int ret ; + + bh_result->b_page = NULL; + + /* We set the b_size before reiserfs_get_block call since it is + referenced in convert_tail_for_hole() that may be called from + reiserfs_get_block() */ + bh_result->b_size = (1 << inode->i_blkbits); + + ret = reiserfs_get_block(inode, iblock, bh_result, create) ; + + /* don't allow direct io onto tail pages */ + if (ret == 0 && buffer_mapped(bh_result) && bh_result->b_blocknr == 0) { + /* make sure future calls to the direct io funcs for this offset + ** in the file fail by unmapping the buffer + */ + reiserfs_unmap_buffer(bh_result); + ret = -EINVAL ; + } + /* Possible unpacked tail. Flush the data before pages have + disappeared */ + if (REISERFS_I(inode)->i_flags & i_pack_on_close_mask) { + lock_kernel(); + reiserfs_commit_for_inode(inode); + REISERFS_I(inode)->i_flags &= ~i_pack_on_close_mask; + unlock_kernel(); + } + return ret ; +} + + /* ** helper function for when reiserfs_get_block is called for a hole ** but the file tail is still in a direct item @@ -448,7 +487,10 @@ tail_end = (tail_start | (bh_result->b_size - 1)) + 1 ; index = tail_offset >> PAGE_CACHE_SHIFT ; - if (index != hole_page->index) { + /* hole_page can be zero in case of direct_io, we are sure + that we cannot get here if we write with O_DIRECT into + tail page */ + if (!hole_page || index != hole_page->index) { tail_page = grab_cache_page(inode->i_mapping, index) ; retval = -ENOMEM; if (!tail_page) { @@ -554,7 +596,12 @@ return ret; } - REISERFS_I(inode)->i_flags |= i_pack_on_close_mask ; + /* If file is of such a size, that it might have a tail and tails are enabled + ** we should mark it as possibly needing tail packing on close + */ + if ( (have_large_tails (inode->i_sb) && inode->i_size < i_block_size (inode)*4) || + (have_small_tails (inode->i_sb) && inode->i_size < i_block_size(inode)) ) + REISERFS_I(inode)->i_flags |= i_pack_on_close_mask ; windex = push_journal_writer("reiserfs_get_block") ; @@ -745,21 +792,26 @@ */ set_buffer_uptodate (unbh); - /* we've converted the tail, so we must - ** flush unbh before the transaction commits - */ - add_to_flushlist(inode, unbh) ; - - /* mark it dirty now to prevent commit_write from adding - ** this buffer to the inode's dirty buffer list + /* unbh->b_page == NULL in case of DIRECT_IO request, this means + buffer will disappear shortly, so it should not be added to */ + if ( unbh->b_page ) { + /* we've converted the tail, so we must + ** flush unbh before the transaction commits + */ + add_to_flushlist(inode, unbh) ; + + /* mark it dirty now to prevent commit_write from adding + ** this buffer to the inode's dirty buffer list + */ /* * AKPM: changed __mark_buffer_dirty to mark_buffer_dirty(). * It's still atomic, but it sets the page dirty too, * which makes it eligible for writeback at any time by the * VM (which was also the case with __mark_buffer_dirty()) */ - mark_buffer_dirty(unbh) ; + mark_buffer_dirty(unbh) ; + } //inode->i_blocks += inode->i_sb->s_blocksize / 512; //mark_tail_converted (inode); @@ -2204,6 +2256,13 @@ if (pos > inode->i_size) { struct reiserfs_transaction_handle th ; reiserfs_write_lock(inode->i_sb); + /* If the file have grown beyond the border where it + can have a tail, unmark it as needing a tail + packing */ + if ( (have_large_tails (inode->i_sb) && inode->i_size > i_block_size (inode)*4) || + (have_small_tails (inode->i_sb) && inode->i_size > i_block_size(inode)) ) + REISERFS_I(inode)->i_flags &= ~i_pack_on_close_mask ; + journal_begin(&th, inode->i_sb, 1) ; reiserfs_update_inode_transaction(inode) ; inode->i_size = pos ; @@ -2310,6 +2369,19 @@ return ret ; } +/* We thank Mingming Cao for helping us understand in great detail what + to do in this section of the code. */ +static int reiserfs_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov, + loff_t offset, unsigned long nr_segs) +{ + struct file *file = iocb->ki_filp; + struct inode *inode = file->f_dentry->d_inode->i_mapping->host; + + return blockdev_direct_IO(rw, iocb, inode, inode->i_sb->s_bdev, iov, + offset, nr_segs, reiserfs_get_blocks_direct_io, NULL); +} + + struct address_space_operations reiserfs_address_space_operations = { .writepage = reiserfs_writepage, .readpage = reiserfs_readpage, @@ -2318,5 +2390,6 @@ .sync_page = block_sync_page, .prepare_write = reiserfs_prepare_write, .commit_write = reiserfs_commit_write, - .bmap = reiserfs_aop_bmap + .bmap = reiserfs_aop_bmap, + .direct_IO = reiserfs_direct_IO } ; diff -Nru a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c --- a/fs/reiserfs/journal.c Mon Sep 22 00:30:22 2003 +++ b/fs/reiserfs/journal.c Mon Sep 22 00:30:22 2003 @@ -1406,6 +1406,10 @@ *newest_mount_id) ; return -1 ; } + if ( get_desc_trans_len(desc) > SB_JOURNAL_TRANS_MAX(p_s_sb) ) { + reiserfs_warning("journal-2018: Bad transaction length %d encountered, ignoring transaction\n", get_desc_trans_len(desc)); + return -1 ; + } offset = d_bh->b_blocknr - SB_ONDISK_JOURNAL_1st_BLOCK(p_s_sb) ; /* ok, we have a journal description block, lets see if the transaction was valid */ @@ -1422,11 +1426,12 @@ get_commit_trans_id (commit), get_commit_trans_len(commit)); brelse(c_bh) ; - if (oldest_invalid_trans_id) - *oldest_invalid_trans_id = get_desc_trans_id(desc) ; + if (oldest_invalid_trans_id) { + *oldest_invalid_trans_id = get_desc_trans_id(desc) ; reiserfs_debug(p_s_sb, REISERFS_DEBUG_CODE, "journal-1004: " "transaction_is_valid setting oldest invalid trans_id " "to %d\n", get_desc_trans_id(desc)) ; + } return -1; } brelse(c_bh) ; @@ -1527,9 +1532,14 @@ } else { real_blocks[i] = sb_getblk(p_s_sb, le32_to_cpu(commit->j_realblock[i - trans_half])) ; } + if ( real_blocks[i]->b_blocknr > SB_BLOCK_COUNT(p_s_sb) ) { + reiserfs_warning("journal-1207: REPLAY FAILURE fsck required! Block to replay is outside of filesystem\n"); + goto abort_replay; + } /* make sure we don't try to replay onto log or reserved area */ if (is_block_in_log_or_reserved_area(p_s_sb, real_blocks[i]->b_blocknr)) { reiserfs_warning("journal-1204: REPLAY FAILURE fsck required! Trying to replay onto a log block\n") ; +abort_replay: brelse_array(log_blocks, i) ; brelse_array(real_blocks, i) ; brelse(c_bh) ; diff -Nru a/fs/reiserfs/super.c b/fs/reiserfs/super.c --- a/fs/reiserfs/super.c Mon Sep 22 00:30:21 2003 +++ b/fs/reiserfs/super.c Mon Sep 22 00:30:21 2003 @@ -1264,6 +1264,18 @@ printk("sh-2021: reiserfs_fill_super: can not find reiserfs on %s\n", reiserfs_bdevname (s)); goto error; } + + rs = SB_DISK_SUPER_BLOCK (s); + /* Let's do basic sanity check to verify that underlying device is not + smaller than the filesystem. If the check fails then abort and scream, + because bad stuff will happen otherwise. */ + if ( s->s_bdev && s->s_bdev->bd_inode && i_size_read(s->s_bdev->bd_inode) < sb_block_count(rs)*sb_blocksize(rs) ) { + printk("Filesystem on %s cannot be mounted because it is bigger than the device\n", reiserfs_bdevname(s)); + printk("You may need to run fsck or increase size of your LVM partition\n"); + printk("Or may be you forgot to reboot after fdisk when it told you to\n"); + goto error; + } + sbi->s_mount_state = SB_REISERFS_STATE(s); sbi->s_mount_state = REISERFS_VALID_FS ; @@ -1324,7 +1336,6 @@ goto error ; } - rs = SB_DISK_SUPER_BLOCK (s); if (is_reiserfs_3_5 (rs) || (is_reiserfs_jr (rs) && SB_VERSION (s) == REISERFS_VERSION_1)) set_bit(REISERFS_3_5, &(sbi->s_properties)); else diff -Nru a/fs/reiserfs/tail_conversion.c b/fs/reiserfs/tail_conversion.c --- a/fs/reiserfs/tail_conversion.c Mon Sep 22 00:30:25 2003 +++ b/fs/reiserfs/tail_conversion.c Mon Sep 22 00:30:25 2003 @@ -104,8 +104,10 @@ /* we only send the unbh pointer if the buffer is not up to date. ** this avoids overwriting good data from writepage() with old data ** from the disk or buffer cache + ** Special case: unbh->b_page will be NULL if we are coming through + ** DIRECT_IO handler here. */ - if (buffer_uptodate(unbh) || PageUptodate(unbh->b_page)) { + if (!unbh->b_page || buffer_uptodate(unbh) || PageUptodate(unbh->b_page)) { up_to_date_bh = NULL ; } else { up_to_date_bh = unbh ; diff -Nru a/fs/smbfs/Makefile b/fs/smbfs/Makefile --- a/fs/smbfs/Makefile Mon Sep 22 00:30:20 2003 +++ b/fs/smbfs/Makefile Mon Sep 22 00:30:20 2003 @@ -32,6 +32,8 @@ @echo >> proto2.h " */" @echo >> proto2.h "" @echo >> proto2.h "struct smb_request;" + @echo >> proto2.h "struct sock;" + @echo >> proto2.h "struct statfs;" @echo >> proto2.h "" cproto -E "gcc -E" -e -v -I $(TOPDIR)/include -DMAKING_PROTO -D__KERNEL__ $(SRC) >> proto2.h mv proto2.h proto.h diff -Nru a/fs/smbfs/inode.c b/fs/smbfs/inode.c --- a/fs/smbfs/inode.c Mon Sep 22 00:30:18 2003 +++ b/fs/smbfs/inode.c Mon Sep 22 00:30:18 2003 @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -447,6 +448,19 @@ } static void +smb_unload_nls(struct smb_sb_info *server) +{ + if (server->remote_nls) { + unload_nls(server->remote_nls); + server->remote_nls = NULL; + } + if (server->local_nls) { + unload_nls(server->local_nls); + server->local_nls = NULL; + } +} + +static void smb_put_super(struct super_block *sb) { struct smb_sb_info *server = SMB_SB(sb); @@ -461,15 +475,7 @@ kill_proc(server->conn_pid, SIGTERM, 1); smb_kfree(server->ops); - - if (server->remote_nls) { - unload_nls(server->remote_nls); - server->remote_nls = NULL; - } - if (server->local_nls) { - unload_nls(server->local_nls); - server->local_nls = NULL; - } + smb_unload_nls(server); sb->s_fs_info = NULL; smb_unlock_server(server); smb_kfree(server); @@ -545,10 +551,8 @@ if (ver == SMB_MOUNT_OLDVERSION) { mnt->version = oldmnt->version; - /* FIXME: is this enough to convert uid/gid's ? */ - mnt->mounted_uid = oldmnt->mounted_uid; - mnt->uid = oldmnt->uid; - mnt->gid = oldmnt->gid; + mnt->uid = low2highuid(oldmnt->uid); + mnt->gid = low2highuid(oldmnt->gid); mnt->file_mode = (oldmnt->file_mode & S_IRWXUGO) | S_IFREG; mnt->dir_mode = (oldmnt->dir_mode & S_IRWXUGO) | S_IFDIR; @@ -557,9 +561,8 @@ } else { if (parse_options(mnt, raw_data)) goto out_bad_option; - - mnt->mounted_uid = current->uid; } + mnt->mounted_uid = current->uid; smb_setcodepage(server, &mnt->codepage); /* @@ -571,6 +574,11 @@ else if (mnt->flags & SMB_MOUNT_DIRATTR) printk("SMBFS: Using dir ff getattr\n"); + if (smbiod_register_server(server) < 0) { + printk(KERN_ERR "smbfs: failed to start smbiod\n"); + goto out_no_smbiod; + } + /* * Keep the super block locked while we get the root inode. */ @@ -584,12 +592,12 @@ goto out_no_root; smb_new_dentry(sb->s_root); - smbiod_register_server(server); - return 0; out_no_root: iput(root_inode); +out_no_smbiod: + smb_unload_nls(server); out_bad_option: smb_kfree(mem); out_no_mem: diff -Nru a/fs/smbfs/proto.h b/fs/smbfs/proto.h --- a/fs/smbfs/proto.h Mon Sep 22 00:30:22 2003 +++ b/fs/smbfs/proto.h Mon Sep 22 00:30:22 2003 @@ -1,5 +1,5 @@ /* - * Autogenerated with cproto on: Sun Sep 29 21:48:59 CEST 2002 + * Autogenerated with cproto on: Sat Sep 13 17:18:51 CEST 2003 */ struct smb_request; @@ -34,6 +34,7 @@ extern int smb_proc_symlink(struct smb_sb_info *server, struct dentry *d, const char *oldpath); extern int smb_proc_link(struct smb_sb_info *server, struct dentry *dentry, struct dentry *new_dentry); extern int smb_proc_query_cifsunix(struct smb_sb_info *server); +extern void smb_install_null_ops(struct smb_ops *ops); /* dir.c */ extern struct file_operations smb_dir_operations; extern struct inode_operations smb_dir_inode_operations; @@ -71,7 +72,7 @@ extern int smb_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg); /* smbiod.c */ extern void smbiod_wake_up(void); -extern void smbiod_register_server(struct smb_sb_info *server); +extern int smbiod_register_server(struct smb_sb_info *server); extern void smbiod_unregister_server(struct smb_sb_info *server); extern void smbiod_flush(struct smb_sb_info *server); extern int smbiod_retry(struct smb_sb_info *server); diff -Nru a/fs/smbfs/smbiod.c b/fs/smbfs/smbiod.c --- a/fs/smbfs/smbiod.c Mon Sep 22 00:30:23 2003 +++ b/fs/smbfs/smbiod.c Mon Sep 22 00:30:23 2003 @@ -49,7 +49,7 @@ static long smbiod_flags; static int smbiod(void *); -static void smbiod_start(void); +static int smbiod_start(void); /* * called when there's work for us to do @@ -65,30 +65,36 @@ /* * start smbiod if none is running */ -static void smbiod_start() +static int smbiod_start() { pid_t pid; if (smbiod_state != SMBIOD_DEAD) - return; + return 0; smbiod_state = SMBIOD_STARTING; + __module_get(THIS_MODULE); spin_unlock(&servers_lock); pid = kernel_thread(smbiod, NULL, 0); + if (pid < 0) + module_put(THIS_MODULE); spin_lock(&servers_lock); - smbiod_state = SMBIOD_RUNNING; + smbiod_state = pid < 0 ? SMBIOD_DEAD : SMBIOD_RUNNING; smbiod_pid = pid; + return pid; } /* * register a server & start smbiod if necessary */ -void smbiod_register_server(struct smb_sb_info *server) +int smbiod_register_server(struct smb_sb_info *server) { + int ret; spin_lock(&servers_lock); list_add(&server->entry, &smb_servers); VERBOSE("%p\n", server); - smbiod_start(); + ret = smbiod_start(); spin_unlock(&servers_lock); + return ret; } /* @@ -282,7 +288,6 @@ */ static int smbiod(void *unused) { - MOD_INC_USE_COUNT; daemonize("smbiod"); allow_signal(SIGKILL); @@ -330,6 +335,5 @@ } VERBOSE("SMB Kernel thread exiting (%d) ...\n", current->pid); - MOD_DEC_USE_COUNT; - return 0; + module_put_and_exit(0); } diff -Nru a/fs/ufs/namei.c b/fs/ufs/namei.c --- a/fs/ufs/namei.c Mon Sep 22 00:30:25 2003 +++ b/fs/ufs/namei.c Mon Sep 22 00:30:25 2003 @@ -112,11 +112,13 @@ static int ufs_mknod (struct inode * dir, struct dentry *dentry, int mode, dev_t rdev) { - struct inode * inode; + struct inode *inode; + int err; + if (!old_valid_dev(rdev)) return -EINVAL; inode = ufs_new_inode(dir, mode); - int err = PTR_ERR(inode); + err = PTR_ERR(inode); if (!IS_ERR(inode)) { init_special_inode(inode, mode, rdev); /* NOTE: that'll go when we get wide dev_t */ diff -Nru a/fs/xattr.c b/fs/xattr.c --- a/fs/xattr.c Mon Sep 22 00:30:21 2003 +++ b/fs/xattr.c Mon Sep 22 00:30:21 2003 @@ -53,7 +53,8 @@ * Extended attribute SET operations */ static long -setxattr(struct dentry *d, char *name, void *value, size_t size, int flags) +setxattr(struct dentry *d, char __user *name, void __user *value, + size_t size, int flags) { int error; void *kvalue; @@ -94,7 +95,8 @@ } asmlinkage long -sys_setxattr(char *path, char *name, void *value, size_t size, int flags) +sys_setxattr(char __user *path, char __user *name, void __user *value, + size_t size, int flags) { struct nameidata nd; int error; @@ -108,7 +110,8 @@ } asmlinkage long -sys_lsetxattr(char *path, char *name, void *value, size_t size, int flags) +sys_lsetxattr(char __user *path, char __user *name, void __user *value, + size_t size, int flags) { struct nameidata nd; int error; @@ -122,7 +125,8 @@ } asmlinkage long -sys_fsetxattr(int fd, char *name, void *value, size_t size, int flags) +sys_fsetxattr(int fd, char __user *name, void __user *value, + size_t size, int flags) { struct file *f; int error = -EBADF; @@ -139,7 +143,7 @@ * Extended attribute GET operations */ static ssize_t -getxattr(struct dentry *d, char *name, void *value, size_t size) +getxattr(struct dentry *d, char __user *name, void __user *value, size_t size) { ssize_t error; void *kvalue; @@ -172,7 +176,8 @@ } asmlinkage ssize_t -sys_getxattr(char *path, char *name, void *value, size_t size) +sys_getxattr(char __user *path, char __user *name, void __user *value, + size_t size) { struct nameidata nd; ssize_t error; @@ -186,7 +191,8 @@ } asmlinkage ssize_t -sys_lgetxattr(char *path, char *name, void *value, size_t size) +sys_lgetxattr(char __user *path, char __user *name, void __user *value, + size_t size) { struct nameidata nd; ssize_t error; @@ -200,7 +206,7 @@ } asmlinkage ssize_t -sys_fgetxattr(int fd, char *name, void *value, size_t size) +sys_fgetxattr(int fd, char __user *name, void __user *value, size_t size) { struct file *f; ssize_t error = -EBADF; @@ -217,7 +223,7 @@ * Extended attribute LIST operations */ static ssize_t -listxattr(struct dentry *d, char *list, size_t size) +listxattr(struct dentry *d, char __user *list, size_t size) { ssize_t error; char *klist; @@ -243,7 +249,7 @@ } asmlinkage ssize_t -sys_listxattr(char *path, char *list, size_t size) +sys_listxattr(char __user *path, char __user *list, size_t size) { struct nameidata nd; ssize_t error; @@ -257,7 +263,7 @@ } asmlinkage ssize_t -sys_llistxattr(char *path, char *list, size_t size) +sys_llistxattr(char __user *path, char __user *list, size_t size) { struct nameidata nd; ssize_t error; @@ -271,7 +277,7 @@ } asmlinkage ssize_t -sys_flistxattr(int fd, char *list, size_t size) +sys_flistxattr(int fd, char __user *list, size_t size) { struct file *f; ssize_t error = -EBADF; @@ -288,7 +294,7 @@ * Extended attribute REMOVE operations */ static long -removexattr(struct dentry *d, char *name) +removexattr(struct dentry *d, char __user *name) { int error; char kname[XATTR_NAME_MAX + 1]; @@ -313,7 +319,7 @@ } asmlinkage long -sys_removexattr(char *path, char *name) +sys_removexattr(char __user *path, char __user *name) { struct nameidata nd; int error; @@ -327,7 +333,7 @@ } asmlinkage long -sys_lremovexattr(char *path, char *name) +sys_lremovexattr(char __user *path, char __user *name) { struct nameidata nd; int error; @@ -341,7 +347,7 @@ } asmlinkage long -sys_fremovexattr(int fd, char *name) +sys_fremovexattr(int fd, char __user *name) { struct file *f; int error = -EBADF; diff -Nru a/fs/xfs/Makefile b/fs/xfs/Makefile --- a/fs/xfs/Makefile Mon Sep 22 00:30:23 2003 +++ b/fs/xfs/Makefile Mon Sep 22 00:30:23 2003 @@ -65,7 +65,6 @@ xfs-y += xfs_alloc.o \ xfs_alloc_btree.o \ xfs_attr.o \ - xfs_attr_fetch.o \ xfs_attr_leaf.o \ xfs_bit.o \ xfs_bmap.o \ diff -Nru a/fs/xfs/linux/xfs_aops.c b/fs/xfs/linux/xfs_aops.c --- a/fs/xfs/linux/xfs_aops.c Mon Sep 22 00:30:24 2003 +++ b/fs/xfs/linux/xfs_aops.c Mon Sep 22 00:30:24 2003 @@ -225,7 +225,8 @@ page_buf_bmap_t *mp, page_buf_t *pb, unsigned long max_offset, - unsigned long *fsbs) + unsigned long *fsbs, + unsigned int bbits) { struct page *page; @@ -248,6 +249,7 @@ break; if (p_offset >= max_offset) break; + map_buffer_at_offset(page, bh, p_offset, bbits, mp); set_buffer_unwritten_io(bh); bh->b_private = pb; p_offset += bh->b_size; @@ -455,13 +457,14 @@ if (bh == head) { struct address_space *mapping = inode->i_mapping; unsigned long tindex, tloff, tlast, bs; + unsigned int bbits = inode->i_blkbits; struct page *page; tlast = i_size_read(inode) >> PAGE_CACHE_SHIFT; tloff = min(tlast, start_page->index + pb->pb_page_count - 1); for (tindex = start_page->index + 1; tindex < tloff; tindex++) { page = probe_unwritten_page(mapping, tindex, mp, pb, - PAGE_CACHE_SIZE, &bs); + PAGE_CACHE_SIZE, &bs, bbits); if (!page) break; nblocks += bs; @@ -472,7 +475,7 @@ if (tindex == tlast && (tloff = (i_size_read(inode) & (PAGE_CACHE_SIZE - 1)))) { page = probe_unwritten_page(mapping, tindex, mp, pb, - tloff, &bs); + tloff, &bs, bbits); if (page) { nblocks += bs; atomic_add(bs, &pb->pb_io_remaining); @@ -560,7 +563,8 @@ offset = i << bbits; if (!(PageUptodate(page) || buffer_uptodate(bh))) continue; - if (buffer_mapped(bh) && !buffer_delay(bh) && all_bh) { + if (buffer_mapped(bh) && all_bh && + !buffer_unwritten(bh) && !buffer_delay(bh)) { if (startio && (offset < end)) { lock_buffer(bh); bh_arr[index++] = bh; @@ -581,7 +585,7 @@ ASSERT(tmp->pbm_flags & PBMF_UNWRITTEN); map_unwritten(inode, page, head, bh, offset, bbits, tmp, all_bh); - } else { + } else if (! (buffer_unwritten(bh) && buffer_locked(bh))) { map_buffer_at_offset(page, bh, offset, bbits, tmp); if (buffer_unwritten(bh)) { set_buffer_unwritten_io(bh); diff -Nru a/fs/xfs/linux/xfs_globals.c b/fs/xfs/linux/xfs_globals.c --- a/fs/xfs/linux/xfs_globals.c Mon Sep 22 00:30:22 2003 +++ b/fs/xfs/linux/xfs_globals.c Mon Sep 22 00:30:22 2003 @@ -59,6 +59,9 @@ .error_level = { 0, 3, 11 }, .sync_interval = { HZ, 30*HZ, 60*HZ }, .stats_clear = { 0, 0, 1 }, + .inherit_sync = { 0, 1, 1 }, + .inherit_nodump = { 0, 1, 1 }, + .inherit_noatim = { 0, 1, 1 }, }; /* diff -Nru a/fs/xfs/linux/xfs_ioctl.c b/fs/xfs/linux/xfs_ioctl.c --- a/fs/xfs/linux/xfs_ioctl.c Mon Sep 22 00:30:23 2003 +++ b/fs/xfs/linux/xfs_ioctl.c Mon Sep 22 00:30:23 2003 @@ -72,6 +72,13 @@ #include #include +/* + * ioctl commands that are used by Linux filesystems + */ +#define XFS_IOC_GETXFLAGS _IOR('f', 1, long) +#define XFS_IOC_SETXFLAGS _IOW('f', 2, long) +#define XFS_IOC_GETVERSION _IOR('v', 1, long) + /* * xfs_find_handle maps from userspace xfs_fsop_handlereq structure to @@ -328,6 +335,17 @@ if (permflag & O_TRUNC) permflag |= 2; + if ((!(permflag & O_APPEND) || (permflag & O_TRUNC)) && + (permflag & FMODE_WRITE) && IS_APPEND(inode)) { + iput(inode); + return -XFS_ERROR(EPERM); + } + + if ((permflag & FMODE_WRITE) && IS_IMMUTABLE(inode)) { + iput(inode); + return -XFS_ERROR(EACCES); + } + /* Can't write directories. */ if ( S_ISDIR(inode->i_mode) && (permflag & FMODE_WRITE)) { iput(inode); @@ -429,6 +447,11 @@ if (error) return -error; + if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) { + VN_RELE(vp); + return -XFS_ERROR(EPERM); + } + if (copy_from_user(&fsd, dmhreq.data, sizeof(fsd))) { VN_RELE(vp); return -XFS_ERROR(EFAULT); @@ -514,11 +537,19 @@ NULL, ops[i].am_error); break; case ATTR_OP_SET: + if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) { + ops[i].am_error = EPERM; + break; + } VOP_ATTR_SET(vp,ops[i].am_attrname, ops[i].am_attrvalue, ops[i].am_length, ops[i].am_flags, NULL, ops[i].am_error); break; case ATTR_OP_REMOVE: + if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) { + ops[i].am_error = EPERM; + break; + } VOP_ATTR_REMOVE(vp, ops[i].am_attrname, ops[i].am_flags, NULL, ops[i].am_error); break; @@ -566,6 +597,7 @@ STATIC int xfs_ioc_xattr( vnode_t *vp, + xfs_inode_t *ip, struct file *filp, unsigned int cmd, unsigned long arg); @@ -648,10 +680,13 @@ case XFS_IOC_FSGEOMETRY: return xfs_ioc_fsgeometry(mp, arg); + case XFS_IOC_GETVERSION: + case XFS_IOC_GETXFLAGS: + case XFS_IOC_SETXFLAGS: case XFS_IOC_FSGETXATTR: case XFS_IOC_FSSETXATTR: case XFS_IOC_FSGETXATTRA: - return xfs_ioc_xattr(vp, filp, cmd, arg); + return xfs_ioc_xattr(vp, ip, filp, cmd, arg); case XFS_IOC_FSSETDM: { struct fsdmidata dmi; @@ -837,6 +872,9 @@ int attr_flags = 0; int error; + if (vp->v_inode.i_flags & (S_IMMUTABLE|S_APPEND)) + return -XFS_ERROR(EPERM); + if (filp->f_flags & O_RDONLY) return -XFS_ERROR(EBADF); @@ -957,9 +995,50 @@ return 0; } +/* + * Linux extended inode flags interface. + */ +#define LINUX_XFLAG_SYNC 0x00000008 /* Synchronous updates */ +#define LINUX_XFLAG_IMMUTABLE 0x00000010 /* Immutable file */ +#define LINUX_XFLAG_APPEND 0x00000020 /* writes to file may only append */ +#define LINUX_XFLAG_NODUMP 0x00000040 /* do not dump file */ +#define LINUX_XFLAG_NOATIME 0x00000080 /* do not update atime */ + +STATIC unsigned int +xfs_merge_ioc_xflags( + unsigned int flags, + unsigned int start) +{ + unsigned int xflags = start; + + if (flags & LINUX_XFLAG_IMMUTABLE) + xflags |= XFS_XFLAG_IMMUTABLE; + else + xflags &= ~XFS_XFLAG_IMMUTABLE; + if (flags & LINUX_XFLAG_APPEND) + xflags |= XFS_XFLAG_APPEND; + else + xflags &= ~XFS_XFLAG_APPEND; + if (flags & LINUX_XFLAG_SYNC) + xflags |= XFS_XFLAG_SYNC; + else + xflags &= ~XFS_XFLAG_SYNC; + if (flags & LINUX_XFLAG_NOATIME) + xflags |= XFS_XFLAG_NOATIME; + else + xflags &= ~XFS_XFLAG_NOATIME; + if (flags & LINUX_XFLAG_NODUMP) + xflags |= XFS_XFLAG_NODUMP; + else + xflags &= ~XFS_XFLAG_NODUMP; + + return xflags; +} + STATIC int xfs_ioc_xattr( vnode_t *vp, + xfs_inode_t *ip, struct file *filp, unsigned int cmd, unsigned long arg) @@ -967,6 +1046,8 @@ struct fsxattr fa; vattr_t va; int error; + int attr_flags; + unsigned int flags; switch (cmd) { case XFS_IOC_FSGETXATTR: { @@ -985,24 +1066,24 @@ } case XFS_IOC_FSSETXATTR: { - int attr_flags = 0; - if (copy_from_user(&fa, (struct fsxattr *)arg, sizeof(fa))) return -XFS_ERROR(EFAULT); + attr_flags = 0; + if (filp->f_flags & (O_NDELAY|O_NONBLOCK)) + attr_flags |= ATTR_NONBLOCK; + va.va_mask = XFS_AT_XFLAGS | XFS_AT_EXTSIZE; va.va_xflags = fa.fsx_xflags; va.va_extsize = fa.fsx_extsize; - if (filp->f_flags & (O_NDELAY|O_NONBLOCK)) - attr_flags |= ATTR_NONBLOCK; - VOP_SETATTR(vp, &va, attr_flags, NULL, error); + if (!error) + vn_revalidate(vp); /* update Linux inode flags */ return -error; } case XFS_IOC_FSGETXATTRA: { - va.va_mask = XFS_AT_XFLAGS|XFS_AT_EXTSIZE|XFS_AT_ANEXTENTS; VOP_GETATTR(vp, &va, 0, NULL, error); if (error) @@ -1017,9 +1098,54 @@ return 0; } + case XFS_IOC_GETXFLAGS: { + flags = 0; + if (ip->i_d.di_flags & XFS_XFLAG_IMMUTABLE) + flags |= LINUX_XFLAG_IMMUTABLE; + if (ip->i_d.di_flags & XFS_XFLAG_APPEND) + flags |= LINUX_XFLAG_APPEND; + if (ip->i_d.di_flags & XFS_XFLAG_SYNC) + flags |= LINUX_XFLAG_SYNC; + if (ip->i_d.di_flags & XFS_XFLAG_NOATIME) + flags |= LINUX_XFLAG_NOATIME; + if (ip->i_d.di_flags & XFS_XFLAG_NODUMP) + flags |= LINUX_XFLAG_NODUMP; + if (copy_to_user((unsigned int *)arg, &flags, sizeof(flags))) + return -XFS_ERROR(EFAULT); + return 0; + } + + case XFS_IOC_SETXFLAGS: { + if (copy_from_user(&flags, (unsigned int *)arg, sizeof(flags))) + return -XFS_ERROR(EFAULT); + + if (flags & ~(LINUX_XFLAG_IMMUTABLE | LINUX_XFLAG_APPEND | \ + LINUX_XFLAG_NOATIME | LINUX_XFLAG_NODUMP | \ + LINUX_XFLAG_SYNC)) + return -XFS_ERROR(EOPNOTSUPP); + + attr_flags = 0; + if (filp->f_flags & (O_NDELAY|O_NONBLOCK)) + attr_flags |= ATTR_NONBLOCK; + + va.va_mask = XFS_AT_XFLAGS; + va.va_xflags = xfs_merge_ioc_xflags(flags, ip->i_d.di_flags); + + VOP_SETATTR(vp, &va, attr_flags, NULL, error); + if (!error) + vn_revalidate(vp); /* update Linux inode flags */ + return -error; + } + + case XFS_IOC_GETVERSION: { + flags = LINVFS_GET_IP(vp)->i_generation; + if (copy_to_user((unsigned int *)arg, &flags, sizeof(flags))) + return -XFS_ERROR(EFAULT); + return 0; + } + default: return -ENOTTY; - } } diff -Nru a/fs/xfs/linux/xfs_iomap.c b/fs/xfs/linux/xfs_iomap.c --- a/fs/xfs/linux/xfs_iomap.c Mon Sep 22 00:30:22 2003 +++ b/fs/xfs/linux/xfs_iomap.c Mon Sep 22 00:30:22 2003 @@ -156,7 +156,7 @@ if (flags & BMAP_IGNSTATE) bmap_flags |= XFS_BMAPI_IGSTATE; break; - case PBF_WRITE: + case BMAP_WRITE: lockmode = XFS_ILOCK_EXCL|XFS_EXTSIZE_WR; bmap_flags = 0; XFS_ILOCK(mp, io, lockmode); @@ -598,7 +598,7 @@ count_fsb = map->br_blockcount; map_start_fsb = offset_fsb; - XFS_STATS_ADD(xfsstats.xs_xstrat_bytes, XFS_FSB_TO_B(mp, count_fsb)); + XFS_STATS_ADD(xs_xstrat_bytes, XFS_FSB_TO_B(mp, count_fsb)); while (count_fsb != 0) { /* @@ -689,7 +689,7 @@ imap[i].br_blockcount))) { *map = imap[i]; *retmap = 1; - XFS_STATS_INC(xfsstats.xs_xstrat_quick); + XFS_STATS_INC(xs_xstrat_quick); return 0; } count_fsb -= imap[i].br_blockcount; diff -Nru a/fs/xfs/linux/xfs_iops.c b/fs/xfs/linux/xfs_iops.c --- a/fs/xfs/linux/xfs_iops.c Mon Sep 22 00:30:20 2003 +++ b/fs/xfs/linux/xfs_iops.c Mon Sep 22 00:30:20 2003 @@ -638,6 +638,9 @@ return error; } + if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) + return -EPERM; + /* Convert Linux syscall to XFS internal ATTR flags */ if (flags & XATTR_CREATE) xflags |= ATTR_CREATE; @@ -786,6 +789,9 @@ error = xfs_cap_vremove(vp); return error; } + + if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) + return -EPERM; if (strncmp(name, xfs_namespaces[ROOT_NAMES].name, xfs_namespaces[ROOT_NAMES].namelen) == 0) { diff -Nru a/fs/xfs/linux/xfs_linux.h b/fs/xfs/linux/xfs_linux.h --- a/fs/xfs/linux/xfs_linux.h Mon Sep 22 00:30:17 2003 +++ b/fs/xfs/linux/xfs_linux.h Mon Sep 22 00:30:17 2003 @@ -96,6 +96,9 @@ #define xfs_error_level xfs_params.error_level.val #define xfs_syncd_interval xfs_params.sync_interval.val #define xfs_stats_clear xfs_params.stats_clear.val +#define xfs_inherit_sync xfs_params.inherit_sync.val +#define xfs_inherit_nodump xfs_params.inherit_nodump.val +#define xfs_inherit_noatime xfs_params.inherit_noatim.val #define NBPP PAGE_SIZE #define DPPSHFT (PAGE_SHIFT - 9) diff -Nru a/fs/xfs/linux/xfs_lrw.c b/fs/xfs/linux/xfs_lrw.c --- a/fs/xfs/linux/xfs_lrw.c Mon Sep 22 00:30:17 2003 +++ b/fs/xfs/linux/xfs_lrw.c Mon Sep 22 00:30:17 2003 @@ -167,7 +167,7 @@ mp = ip->i_mount; vn_trace_entry(vp, "xfs_read", (inst_t *)__return_address); - XFS_STATS_INC(xfsstats.xs_read_calls); + XFS_STATS_INC(xs_read_calls); /* START copy & waste from filemap.c */ for (seg = 0; seg < segs; seg++) { @@ -231,7 +231,7 @@ xfs_iunlock(ip, XFS_IOLOCK_SHARED); if (ret > 0) - XFS_STATS_ADD(xfsstats.xs_read_bytes, ret); + XFS_STATS_ADD(xs_read_bytes, ret); if (!invisible) xfs_ichgtime(ip, XFS_ICHGTIME_ACC); @@ -261,7 +261,7 @@ mp = ip->i_mount; vn_trace_entry(vp, "xfs_sendfile", (inst_t *)__return_address); - XFS_STATS_INC(xfsstats.xs_read_calls); + XFS_STATS_INC(xs_read_calls); n = XFS_MAXIOFFSET(mp) - *offset; if ((n <= 0) || (count == 0)) @@ -288,7 +288,7 @@ ret = generic_file_sendfile(filp, offset, count, actor, target); xfs_iunlock(ip, XFS_IOLOCK_SHARED); - XFS_STATS_ADD(xfsstats.xs_read_bytes, ret); + XFS_STATS_ADD(xs_read_bytes, ret); if (!invisible) xfs_ichgtime(ip, XFS_ICHGTIME_ACC); return ret; @@ -537,7 +537,7 @@ int eventsent = 0; vrwlock_t locktype; - XFS_STATS_INC(xfsstats.xs_write_calls); + XFS_STATS_INC(xs_write_calls); vp = BHV_TO_VNODE(bdp); vn_trace_entry(vp, "xfs_write", (inst_t *)__return_address); @@ -693,8 +693,8 @@ DM_EVENT_ENABLED(vp->v_vfsp, xip, DM_EVENT_NOSPACE) && !invisible) { xfs_rwunlock(bdp, locktype); - error = XFS_SEND_NAMESP(xip->i_mount, DM_EVENT_NOSPACE, bdp, - DM_RIGHT_NULL, bdp, DM_RIGHT_NULL, NULL, NULL, + error = XFS_SEND_NAMESP(xip->i_mount, DM_EVENT_NOSPACE, vp, + DM_RIGHT_NULL, vp, DM_RIGHT_NULL, NULL, NULL, 0, 0, 0); /* Delay flag intentionally unused */ if (error) return -error; @@ -722,7 +722,7 @@ return ret; } - XFS_STATS_ADD(xfsstats.xs_write_bytes, ret); + XFS_STATS_ADD(xs_write_bytes, ret); /* Handle various SYNC-type writes */ if ((file->f_flags & O_SYNC) || IS_SYNC(file->f_dentry->d_inode)) { diff -Nru a/fs/xfs/linux/xfs_stats.c b/fs/xfs/linux/xfs_stats.c --- a/fs/xfs/linux/xfs_stats.c Mon Sep 22 00:30:24 2003 +++ b/fs/xfs/linux/xfs_stats.c Mon Sep 22 00:30:24 2003 @@ -80,6 +80,12 @@ xfsstats.xs_xstrat_bytes, xfsstats.xs_write_bytes, xfsstats.xs_read_bytes); + len += sprintf(buffer + len, "debug %u\n", +#if defined(XFSDEBUG) + 1); +#else + 0); +#endif if (offset >= len) { *start = buffer; diff -Nru a/fs/xfs/linux/xfs_stats.h b/fs/xfs/linux/xfs_stats.h --- a/fs/xfs/linux/xfs_stats.h Mon Sep 22 00:30:20 2003 +++ b/fs/xfs/linux/xfs_stats.h Mon Sep 22 00:30:20 2003 @@ -128,9 +128,9 @@ extern struct xfsstats xfsstats; -# define XFS_STATS_INC(count) ( (count)++ ) -# define XFS_STATS_DEC(count) ( (count)-- ) -# define XFS_STATS_ADD(count, inc) ( (count) += (inc) ) +# define XFS_STATS_INC(count) ( xfsstats.count++ ) +# define XFS_STATS_DEC(count) ( xfsstats.count-- ) +# define XFS_STATS_ADD(count, inc) ( xfsstats.count += (inc) ) extern void xfs_init_procfs(void); extern void xfs_cleanup_procfs(void); diff -Nru a/fs/xfs/linux/xfs_super.c b/fs/xfs/linux/xfs_super.c --- a/fs/xfs/linux/xfs_super.c Mon Sep 22 00:30:24 2003 +++ b/fs/xfs/linux/xfs_super.c Mon Sep 22 00:30:24 2003 @@ -187,7 +187,22 @@ inode->i_mtime.tv_nsec = ip->i_d.di_mtime.t_nsec; inode->i_ctime.tv_sec = ip->i_d.di_ctime.t_sec; inode->i_ctime.tv_nsec = ip->i_d.di_ctime.t_nsec; - + if (ip->i_d.di_flags & XFS_DIFLAG_IMMUTABLE) + inode->i_flags |= S_IMMUTABLE; + else + inode->i_flags &= ~S_IMMUTABLE; + if (ip->i_d.di_flags & XFS_DIFLAG_APPEND) + inode->i_flags |= S_APPEND; + else + inode->i_flags &= ~S_APPEND; + if (ip->i_d.di_flags & XFS_DIFLAG_SYNC) + inode->i_flags |= S_SYNC; + else + inode->i_flags &= ~S_SYNC; + if (ip->i_d.di_flags & XFS_DIFLAG_NOATIME) + inode->i_flags |= S_NOATIME; + else + inode->i_flags &= ~S_NOATIME; vp->v_flag &= ~VMODIFIED; } diff -Nru a/fs/xfs/linux/xfs_super.h b/fs/xfs/linux/xfs_super.h --- a/fs/xfs/linux/xfs_super.h Mon Sep 22 00:30:20 2003 +++ b/fs/xfs/linux/xfs_super.h Mon Sep 22 00:30:20 2003 @@ -66,8 +66,12 @@ # define XFS_REALTIME_STRING #endif -#if XFS_BIG_FILESYSTEMS -# define XFS_BIGFS_STRING "big filesystems, " +#if XFS_BIG_BLKNOS +# if XFS_BIG_INUMS +# define XFS_BIGFS_STRING "large block/inode numbers, " +# else +# define XFS_BIGFS_STRING "large block numbers, " +# endif #else # define XFS_BIGFS_STRING #endif diff -Nru a/fs/xfs/linux/xfs_sysctl.c b/fs/xfs/linux/xfs_sysctl.c --- a/fs/xfs/linux/xfs_sysctl.c Mon Sep 22 00:30:25 2003 +++ b/fs/xfs/linux/xfs_sysctl.c Mon Sep 22 00:30:25 2003 @@ -68,39 +68,54 @@ STATIC ctl_table xfs_table[] = { {XFS_RESTRICT_CHOWN, "restrict_chown", &xfs_params.restrict_chown.val, - sizeof(ulong), 0644, NULL, &proc_doulongvec_minmax, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec, NULL, &xfs_params.restrict_chown.min, &xfs_params.restrict_chown.max}, {XFS_SGID_INHERIT, "irix_sgid_inherit", &xfs_params.sgid_inherit.val, - sizeof(ulong), 0644, NULL, &proc_doulongvec_minmax, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec, NULL, &xfs_params.sgid_inherit.min, &xfs_params.sgid_inherit.max}, {XFS_SYMLINK_MODE, "irix_symlink_mode", &xfs_params.symlink_mode.val, - sizeof(ulong), 0644, NULL, &proc_doulongvec_minmax, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec, NULL, &xfs_params.symlink_mode.min, &xfs_params.symlink_mode.max}, {XFS_PANIC_MASK, "panic_mask", &xfs_params.panic_mask.val, - sizeof(ulong), 0644, NULL, &proc_doulongvec_minmax, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec, NULL, &xfs_params.panic_mask.min, &xfs_params.panic_mask.max}, {XFS_ERRLEVEL, "error_level", &xfs_params.error_level.val, - sizeof(ulong), 0644, NULL, &proc_doulongvec_minmax, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec, NULL, &xfs_params.error_level.min, &xfs_params.error_level.max}, {XFS_SYNC_INTERVAL, "sync_interval", &xfs_params.sync_interval.val, - sizeof(ulong), 0644, NULL, &proc_doulongvec_minmax, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec, NULL, &xfs_params.sync_interval.min, &xfs_params.sync_interval.max}, + {XFS_INHERIT_SYNC, "inherit_sync", &xfs_params.inherit_sync.val, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, + &sysctl_intvec, NULL, + &xfs_params.inherit_sync.min, &xfs_params.inherit_sync.max}, + + {XFS_INHERIT_NODUMP, "inherit_nodump", &xfs_params.inherit_nodump.val, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, + &sysctl_intvec, NULL, + &xfs_params.inherit_nodump.min, &xfs_params.inherit_nodump.max}, + + {XFS_INHERIT_NOATIME, "inherit_noatime", &xfs_params.inherit_noatim.val, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, + &sysctl_intvec, NULL, + &xfs_params.inherit_noatim.min, &xfs_params.inherit_noatim.max}, + /* please keep this the last entry */ #ifdef CONFIG_PROC_FS {XFS_STATS_CLEAR, "stats_clear", &xfs_params.stats_clear.val, - sizeof(ulong), 0644, NULL, &xfs_stats_clear_proc_handler, + sizeof(int), 0644, NULL, &xfs_stats_clear_proc_handler, &sysctl_intvec, NULL, &xfs_params.stats_clear.min, &xfs_params.stats_clear.max}, #endif /* CONFIG_PROC_FS */ diff -Nru a/fs/xfs/linux/xfs_sysctl.h b/fs/xfs/linux/xfs_sysctl.h --- a/fs/xfs/linux/xfs_sysctl.h Mon Sep 22 00:30:17 2003 +++ b/fs/xfs/linux/xfs_sysctl.h Mon Sep 22 00:30:17 2003 @@ -40,9 +40,9 @@ */ typedef struct xfs_sysctl_val { - ulong min; - ulong val; - ulong max; + int min; + int val; + int max; } xfs_sysctl_val_t; typedef struct xfs_param { @@ -55,6 +55,9 @@ xfs_sysctl_val_t error_level; /* Degree of reporting for problems */ xfs_sysctl_val_t sync_interval; /* time between sync calls */ xfs_sysctl_val_t stats_clear; /* Reset all XFS statistics to zero. */ + xfs_sysctl_val_t inherit_sync; /* Inherit the "sync" inode flag. */ + xfs_sysctl_val_t inherit_nodump;/* Inherit the "nodump" inode flag. */ + xfs_sysctl_val_t inherit_noatim;/* Inherit the "noatime" inode flag. */ } xfs_param_t; /* @@ -73,13 +76,16 @@ */ enum { - XFS_RESTRICT_CHOWN = 1, - XFS_SGID_INHERIT = 2, - XFS_SYMLINK_MODE = 3, - XFS_PANIC_MASK = 4, - XFS_ERRLEVEL = 5, - XFS_SYNC_INTERVAL = 6, - XFS_STATS_CLEAR = 7, + XFS_RESTRICT_CHOWN = 3, + XFS_SGID_INHERIT = 4, + XFS_SYMLINK_MODE = 5, + XFS_PANIC_MASK = 6, + XFS_ERRLEVEL = 7, + XFS_SYNC_INTERVAL = 8, + XFS_STATS_CLEAR = 12, + XFS_INHERIT_SYNC = 13, + XFS_INHERIT_NODUMP = 14, + XFS_INHERIT_NOATIME = 15, }; extern xfs_param_t xfs_params; diff -Nru a/fs/xfs/linux/xfs_vnode.c b/fs/xfs/linux/xfs_vnode.c --- a/fs/xfs/linux/xfs_vnode.c Mon Sep 22 00:30:20 2003 +++ b/fs/xfs/linux/xfs_vnode.c Mon Sep 22 00:30:20 2003 @@ -77,7 +77,7 @@ { int error; - XFS_STATS_INC(xfsstats.vn_reclaim); + XFS_STATS_INC(vn_reclaim); vn_trace_entry(vp, "vn_reclaim", (inst_t *)__return_address); /* @@ -137,8 +137,8 @@ { struct vnode *vp = LINVFS_GET_VP(inode); - XFS_STATS_INC(xfsstats.vn_active); - XFS_STATS_INC(xfsstats.vn_alloc); + XFS_STATS_INC(vn_active); + XFS_STATS_INC(vn_alloc); vp->v_flag = VMODIFIED; spinlock_init(&vp->v_lock, "v_lock"); @@ -172,7 +172,7 @@ { struct inode *inode; - XFS_STATS_INC(xfsstats.vn_get); + XFS_STATS_INC(vn_get); inode = LINVFS_GET_IP(vp); if (inode->i_state & I_FREEING) return NULL; @@ -200,7 +200,7 @@ vn_trace_entry(vp, "vn_revalidate", (inst_t *)__return_address); ASSERT(vp->v_fbhv != NULL); - va.va_mask = XFS_AT_STAT; + va.va_mask = XFS_AT_STAT|XFS_AT_GENCOUNT; VOP_GETATTR(vp, &va, 0, NULL, error); if (!error) { inode = LINVFS_GET_IP(vp); @@ -213,6 +213,22 @@ inode->i_ctime = va.va_ctime; inode->i_atime = va.va_atime; i_size_write(inode, va.va_size); + if (va.va_xflags & XFS_XFLAG_IMMUTABLE) + inode->i_flags |= S_IMMUTABLE; + else + inode->i_flags &= ~S_IMMUTABLE; + if (va.va_xflags & XFS_XFLAG_APPEND) + inode->i_flags |= S_APPEND; + else + inode->i_flags &= ~S_APPEND; + if (va.va_xflags & XFS_XFLAG_SYNC) + inode->i_flags |= S_SYNC; + else + inode->i_flags &= ~S_SYNC; + if (va.va_xflags & XFS_XFLAG_NOATIME) + inode->i_flags |= S_NOATIME; + else + inode->i_flags &= ~S_NOATIME; VUNMODIFY(vp); } return -error; @@ -264,7 +280,7 @@ return; } - XFS_STATS_DEC(xfsstats.vn_active); + XFS_STATS_DEC(vn_active); vp->v_flag |= VRECLM; VN_UNLOCK(vp, 0); @@ -292,7 +308,7 @@ { struct inode *inode; - XFS_STATS_INC(xfsstats.vn_hold); + XFS_STATS_INC(vn_hold); VN_LOCK(vp); inode = igrab(LINVFS_GET_IP(vp)); @@ -312,7 +328,7 @@ int vcnt; int cache; - XFS_STATS_INC(xfsstats.vn_rele); + XFS_STATS_INC(vn_rele); VN_LOCK(vp); @@ -364,7 +380,7 @@ if (!(vp->v_fbhv)) return; - XFS_STATS_INC(xfsstats.vn_remove); + XFS_STATS_INC(vn_remove); vn_trace_exit(vp, "vn_remove", (inst_t *)__return_address); /* diff -Nru a/fs/xfs/pagebuf/page_buf.c b/fs/xfs/pagebuf/page_buf.c --- a/fs/xfs/pagebuf/page_buf.c Mon Sep 22 00:30:18 2003 +++ b/fs/xfs/pagebuf/page_buf.c Mon Sep 22 00:30:18 2003 @@ -1867,23 +1867,23 @@ STATIC ctl_table pagebuf_table[] = { {PB_FLUSH_INT, "flush_int", &pb_params.flush_interval.val, - sizeof(ulong), 0644, NULL, &proc_doulongvec_ms_jiffies_minmax, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec, NULL, &pb_params.flush_interval.min, &pb_params.flush_interval.max}, {PB_FLUSH_AGE, "flush_age", &pb_params.age_buffer.val, - sizeof(ulong), 0644, NULL, &proc_doulongvec_ms_jiffies_minmax, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec, NULL, &pb_params.age_buffer.min, &pb_params.age_buffer.max}, {PB_STATS_CLEAR, "stats_clear", &pb_params.stats_clear.val, - sizeof(ulong), 0644, NULL, &pb_stats_clear_handler, + sizeof(int), 0644, NULL, &pb_stats_clear_handler, &sysctl_intvec, NULL, &pb_params.stats_clear.min, &pb_params.stats_clear.max}, #ifdef PAGEBUF_TRACE {PB_DEBUG, "debug", &pb_params.debug.val, - sizeof(ulong), 0644, NULL, &proc_doulongvec_minmax, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec, NULL, &pb_params.debug.min, &pb_params.debug.max}, #endif diff -Nru a/fs/xfs/pagebuf/page_buf_internal.h b/fs/xfs/pagebuf/page_buf_internal.h --- a/fs/xfs/pagebuf/page_buf_internal.h Mon Sep 22 00:30:21 2003 +++ b/fs/xfs/pagebuf/page_buf_internal.h Mon Sep 22 00:30:21 2003 @@ -81,9 +81,9 @@ */ typedef struct pb_sysctl_val { - ulong min; - ulong val; - ulong max; + int min; + int val; + int max; } pb_sysctl_val_t; typedef struct pagebuf_param { diff -Nru a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c --- a/fs/xfs/xfs_acl.c Mon Sep 22 00:30:20 2003 +++ b/fs/xfs/xfs_acl.c Mon Sep 22 00:30:20 2003 @@ -388,6 +388,8 @@ vattr_t va; int error; + if (vp->v_inode.i_flags & (S_IMMUTABLE|S_APPEND)) + return EPERM; if (kind == _ACL_TYPE_DEFAULT && vp->v_type != VDIR) return ENOTDIR; if (vp->v_vfsp->vfs_flag & VFS_RDONLY) diff -Nru a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c --- a/fs/xfs/xfs_alloc.c Mon Sep 22 00:30:20 2003 +++ b/fs/xfs/xfs_alloc.c Mon Sep 22 00:30:20 2003 @@ -636,8 +636,8 @@ xfs_trans_mod_sb(args->tp, args->wasdel ? XFS_TRANS_SB_RES_FDBLOCKS : XFS_TRANS_SB_FDBLOCKS, -slen); - XFS_STATS_INC(xfsstats.xs_allocx); - XFS_STATS_ADD(xfsstats.xs_allocb, args->len); + XFS_STATS_INC(xs_allocx); + XFS_STATS_ADD(xs_allocb, args->len); } return 0; } @@ -1781,8 +1781,8 @@ xfs_alloc_log_agf(tp, agbp, XFS_AGF_FREEBLKS); if (!isfl) xfs_trans_mod_sb(tp, XFS_TRANS_SB_FDBLOCKS, (long)len); - XFS_STATS_INC(xfsstats.xs_freex); - XFS_STATS_ADD(xfsstats.xs_freeb, len); + XFS_STATS_INC(xs_freex); + XFS_STATS_ADD(xs_freeb, len); } TRACE_FREE(haveleft ? (haveright ? "both" : "left") : diff -Nru a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c --- a/fs/xfs/xfs_alloc_btree.c Mon Sep 22 00:30:22 2003 +++ b/fs/xfs/xfs_alloc_btree.c Mon Sep 22 00:30:22 2003 @@ -133,7 +133,7 @@ *stat = 0; return 0; } - XFS_STATS_INC(xfsstats.xs_abt_delrec); + XFS_STATS_INC(xs_abt_delrec); /* * It's a nonleaf. Excise the key and ptr being deleted, by * sliding the entries past them down one. @@ -631,7 +631,7 @@ * and we're done. */ if (level >= cur->bc_nlevels) { - XFS_STATS_INC(xfsstats.xs_abt_insrec); + XFS_STATS_INC(xs_abt_insrec); if ((error = xfs_alloc_newroot(cur, &i))) return error; *bnop = NULLAGBLOCK; @@ -651,7 +651,7 @@ *stat = 0; return 0; } - XFS_STATS_INC(xfsstats.xs_abt_insrec); + XFS_STATS_INC(xs_abt_insrec); /* * Get pointers to the btree buffer and block. */ @@ -951,7 +951,7 @@ int level; /* level in the btree */ xfs_mount_t *mp; /* file system mount point */ - XFS_STATS_INC(xfsstats.xs_abt_lookup); + XFS_STATS_INC(xs_abt_lookup); /* * Get the allocation group header, and the root block number. */ @@ -1046,7 +1046,7 @@ xfs_extlen_t blockcount; /* key value */ xfs_agblock_t startblock; /* key value */ - XFS_STATS_INC(xfsstats.xs_abt_compare); + XFS_STATS_INC(xs_abt_compare); /* * keyno is average of low and high. */ diff -Nru a/fs/xfs/xfs_arch.h b/fs/xfs/xfs_arch.h --- a/fs/xfs/xfs_arch.h Mon Sep 22 00:30:24 2003 +++ b/fs/xfs/xfs_arch.h Mon Sep 22 00:30:24 2003 @@ -32,8 +32,8 @@ #ifndef __XFS_ARCH_H__ #define __XFS_ARCH_H__ -#ifndef XFS_BIG_FILESYSTEMS -#error XFS_BIG_FILESYSTEMS must be defined true or false +#ifndef XFS_BIG_INUMS +# error XFS_BIG_INUMS must be defined true or false #endif #ifdef __KERNEL__ @@ -239,7 +239,7 @@ (INT_GET_UNALIGNED_32_BE(pointer)) \ ) -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS #define DIRINO_GET_ARCH(pointer,arch) \ ( ((arch) == ARCH_NOCONVERT) \ ? \ diff -Nru a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c --- a/fs/xfs/xfs_attr.c Mon Sep 22 00:30:22 2003 +++ b/fs/xfs/xfs_attr.c Mon Sep 22 00:30:22 2003 @@ -116,37 +116,37 @@ *========================================================================*/ /*ARGSUSED*/ -int /* error */ -xfs_attr_get(bhv_desc_t *bdp, char *name, char *value, int *valuelenp, - int flags, struct cred *cred) +STATIC int +xfs_attr_get_int(xfs_inode_t *ip, char *name, char *value, int *valuelenp, + int flags, int lock, struct cred *cred) { xfs_da_args_t args; int error; int namelen; - xfs_inode_t *ip = XFS_BHVTOI(bdp); - if (!name) - return EINVAL; ASSERT(MAXNAMELEN-1 <= 0xff); /* length is stored in uint8 */ namelen = strlen(name); if (namelen >= MAXNAMELEN) - return EFAULT; /* match IRIX behaviour */ - XFS_STATS_INC(xfsstats.xs_attr_get); - - if (XFS_IFORK_Q(ip) == 0) - return ENOATTR; - + return(EFAULT); /* match IRIX behaviour */ + XFS_STATS_INC(xs_attr_get); if (XFS_FORCED_SHUTDOWN(ip->i_mount)) - return (EIO); + return(EIO); - /* - * Do we answer them, or ignore them? - */ - xfs_ilock(ip, XFS_ILOCK_SHARED); - if ((error = xfs_iaccess(XFS_BHVTOI(bdp), IREAD, cred))) { - xfs_iunlock(ip, XFS_ILOCK_SHARED); - return(XFS_ERROR(error)); + if ((XFS_IFORK_Q(ip) == 0) || + (ip->i_d.di_aformat == XFS_DINODE_FMT_EXTENTS && + ip->i_d.di_anextents == 0)) + return(ENOATTR); + + if (lock) { + xfs_ilock(ip, XFS_ILOCK_SHARED); + /* + * Do we answer them, or ignore them? + */ + if ((error = xfs_iaccess(ip, IREAD, cred))) { + xfs_iunlock(ip, XFS_ILOCK_SHARED); + return(XFS_ERROR(error)); + } } /* @@ -177,7 +177,9 @@ } else { error = xfs_attr_node_get(&args); } - xfs_iunlock(ip, XFS_ILOCK_SHARED); + + if (lock) + xfs_iunlock(ip, XFS_ILOCK_SHARED); /* * Return the number of bytes in the value to the caller. @@ -189,6 +191,23 @@ return(error); } +int +xfs_attr_fetch(xfs_inode_t *ip, char *name, char *value, int valuelen) +{ + return xfs_attr_get_int(ip, name, value, &valuelen, ATTR_ROOT, 0, NULL); +} + +int +xfs_attr_get(bhv_desc_t *bdp, char *name, char *value, int *valuelenp, + int flags, struct cred *cred) +{ + xfs_inode_t *ip = XFS_BHVTOI(bdp); + + if (!name) + return(EINVAL); + return xfs_attr_get_int(ip, name, value, valuelenp, flags, 1, cred); +} + /*ARGSUSED*/ int /* error */ xfs_attr_set(bhv_desc_t *bdp, char *name, char *value, int valuelen, int flags, @@ -210,7 +229,7 @@ if (namelen >= MAXNAMELEN) return EFAULT; /* match irix behaviour */ - XFS_STATS_INC(xfsstats.xs_attr_set); + XFS_STATS_INC(xs_attr_set); /* * Do we answer them, or ignore them? */ @@ -468,7 +487,7 @@ if (namelen>=MAXNAMELEN) return EFAULT; /* match irix behaviour */ - XFS_STATS_INC(xfsstats.xs_attr_remove); + XFS_STATS_INC(xs_attr_remove); /* * Do we answer them, or ignore them? @@ -620,7 +639,7 @@ xfs_inode_t *dp; int error; - XFS_STATS_INC(xfsstats.xs_attr_list); + XFS_STATS_INC(xs_attr_list); /* * Validate the cursor. @@ -1718,7 +1737,6 @@ int i; state = xfs_da_state_alloc(); - state->holeok = 1; state->args = args; state->mp = args->dp->i_mount; state->blocksize = state->mp->m_sb.sb_blocksize; diff -Nru a/fs/xfs/xfs_bit.c b/fs/xfs/xfs_bit.c --- a/fs/xfs/xfs_bit.c Mon Sep 22 00:30:22 2003 +++ b/fs/xfs/xfs_bit.c Mon Sep 22 00:30:22 2003 @@ -156,12 +156,12 @@ { int n; n = ffs((unsigned)v); - if (n == 0) { + if (n <= 0) { n = ffs(v >> 32); if (n >= 0) n+=32; } - return n-1; + return (n <= 0) ? n : n-1; } /* diff -Nru a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c --- a/fs/xfs/xfs_bmap.c Mon Sep 22 00:30:24 2003 +++ b/fs/xfs/xfs_bmap.c Mon Sep 22 00:30:24 2003 @@ -52,7 +52,6 @@ #include "xfs_dir_sf.h" #include "xfs_dir2_sf.h" #include "xfs_dinode.h" -#include "xfs_dmapi.h" #include "xfs_inode_item.h" #include "xfs_inode.h" #include "xfs_itable.h" @@ -565,7 +564,7 @@ int logflags; /* returned value */ xfs_extnum_t nextents; /* number of extents in file now */ - XFS_STATS_INC(xfsstats.xs_add_exlist); + XFS_STATS_INC(xs_add_exlist); cur = *curp; ifp = XFS_IFORK_PTR(ip, whichfork); nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); @@ -2837,7 +2836,7 @@ xfs_filblks_t temp; /* for indirect length calculations */ xfs_filblks_t temp2; /* for indirect length calculations */ - XFS_STATS_INC(xfsstats.xs_del_exlist); + XFS_STATS_INC(xs_del_exlist); mp = ip->i_mount; ifp = XFS_IFORK_PTR(ip, whichfork); nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); @@ -3462,7 +3461,7 @@ low = 0; high = nextents - 1; while (low <= high) { - XFS_STATS_INC(xfsstats.xs_cmp_exlist); + XFS_STATS_INC(xs_cmp_exlist); lastx = (low + high) >> 1; ep = base + lastx; got.br_startoff = xfs_bmbt_get_startoff(ep); @@ -3532,7 +3531,7 @@ xfs_extnum_t lastx; /* last extent index used */ xfs_extnum_t nextents; /* extent list size */ - XFS_STATS_INC(xfsstats.xs_look_exlist); + XFS_STATS_INC(xs_look_exlist); ifp = XFS_IFORK_PTR(ip, whichfork); lastx = ifp->if_lastex; nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); @@ -4630,9 +4629,9 @@ ASSERT(ifp->if_ext_max == XFS_IFORK_SIZE(ip, whichfork) / (uint)sizeof(xfs_bmbt_rec_t)); if ((wr = (flags & XFS_BMAPI_WRITE)) != 0) - XFS_STATS_INC(xfsstats.xs_blk_mapw); + XFS_STATS_INC(xs_blk_mapw); else - XFS_STATS_INC(xfsstats.xs_blk_mapr); + XFS_STATS_INC(xs_blk_mapr); delay = (flags & XFS_BMAPI_DELAY) != 0; trim = (flags & XFS_BMAPI_ENTIRE) == 0; userdata = (flags & XFS_BMAPI_METADATA) == 0; @@ -5116,7 +5115,7 @@ } if (XFS_FORCED_SHUTDOWN(ip->i_mount)) return XFS_ERROR(EIO); - XFS_STATS_INC(xfsstats.xs_blk_mapr); + XFS_STATS_INC(xs_blk_mapr); if (!(ifp->if_flags & XFS_IFEXTENTS) && (error = xfs_iread_extents(tp, ip, whichfork))) return error; @@ -5205,7 +5204,7 @@ *done = 1; return 0; } - XFS_STATS_INC(xfsstats.xs_blk_unmap); + XFS_STATS_INC(xs_blk_unmap); isrt = (whichfork == XFS_DATA_FORK) && (ip->i_d.di_flags & XFS_DIFLAG_REALTIME); start = bno; diff -Nru a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c --- a/fs/xfs/xfs_bmap_btree.c Mon Sep 22 00:30:22 2003 +++ b/fs/xfs/xfs_bmap_btree.c Mon Sep 22 00:30:22 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -392,7 +392,7 @@ *stat = 0; return 0; } - XFS_STATS_INC(xfsstats.xs_bmbt_delrec); + XFS_STATS_INC(xs_bmbt_delrec); if (level > 0) { kp = XFS_BMAP_KEY_IADDR(block, 1, cur); pp = XFS_BMAP_PTR_IADDR(block, 1, cur); @@ -784,7 +784,7 @@ *stat = 0; return 0; } - XFS_STATS_INC(xfsstats.xs_bmbt_insrec); + XFS_STATS_INC(xs_bmbt_insrec); block = xfs_bmbt_get_block(cur, level, &bp); numrecs = INT_GET(block->bb_numrecs, ARCH_CONVERT); #ifdef DEBUG @@ -1137,7 +1137,7 @@ xfs_fileoff_t startoff; xfs_trans_t *tp; - XFS_STATS_INC(xfsstats.xs_bmbt_lookup); + XFS_STATS_INC(xs_bmbt_lookup); XFS_BMBT_TRACE_CURSOR(cur, ENTRY); XFS_BMBT_TRACE_ARGI(cur, (int)dir); tp = cur->bc_tp; @@ -1182,7 +1182,7 @@ return 0; } while (low <= high) { - XFS_STATS_INC(xfsstats.xs_bmbt_compare); + XFS_STATS_INC(xs_bmbt_compare); keyno = (low + high) >> 1; if (level > 0) { kkp = kkbase + keyno - 1; @@ -1899,7 +1899,7 @@ ext_flag = (int)(l0 >> (64 - BMBT_EXNTFLAG_BITLEN)); s->br_startoff = ((xfs_fileoff_t)l0 & XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_BLKNOS s->br_startblock = (((xfs_fsblock_t)l0 & XFS_MASK64LO(9)) << 43) | (((xfs_fsblock_t)l1) >> 21); #else @@ -1915,7 +1915,7 @@ #else /* !DEBUG */ s->br_startblock = (xfs_fsblock_t)(((xfs_dfsbno_t)l1) >> 21); #endif /* DEBUG */ -#endif /* XFS_BIG_FILESYSTEMS */ +#endif /* XFS_BIG_BLKNOS */ s->br_blockcount = (xfs_filblks_t)(l1 & XFS_MASK64LO(21)); /* This is xfs_extent_state() in-line */ if (ext_flag) { @@ -1976,7 +1976,7 @@ xfs_bmbt_get_startblock( xfs_bmbt_rec_t *r) { -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_BLKNOS return (((xfs_fsblock_t)r->l0 & XFS_MASK64LO(9)) << 43) | (((xfs_fsblock_t)r->l1) >> 21); #else @@ -1990,7 +1990,7 @@ #else /* !DEBUG */ return (xfs_fsblock_t)(((xfs_dfsbno_t)r->l1) >> 21); #endif /* DEBUG */ -#endif /* XFS_BIG_FILESYSTEMS */ +#endif /* XFS_BIG_BLKNOS */ } /* @@ -2047,7 +2047,7 @@ xfs_bmbt_disk_get_startblock( xfs_bmbt_rec_t *r) { -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_BLKNOS return (((xfs_fsblock_t)INT_GET(r->l0, ARCH_CONVERT) & XFS_MASK64LO(9)) << 43) | (((xfs_fsblock_t)INT_GET(r->l1, ARCH_CONVERT)) >> 21); #else @@ -2061,7 +2061,7 @@ #else /* !DEBUG */ return (xfs_fsblock_t)(((xfs_dfsbno_t)INT_GET(r->l1, ARCH_CONVERT)) >> 21); #endif /* DEBUG */ -#endif /* XFS_BIG_FILESYSTEMS */ +#endif /* XFS_BIG_BLKNOS */ } /* @@ -2472,17 +2472,15 @@ extent_flag = (s->br_state == XFS_EXT_NORM) ? 0 : 1; ASSERT((s->br_startoff & XFS_MASK64HI(9)) == 0); ASSERT((s->br_blockcount & XFS_MASK64HI(43)) == 0); -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_BLKNOS ASSERT((s->br_startblock & XFS_MASK64HI(12)) == 0); -#endif /* XFS_BIG_FILESYSTEMS */ -#if XFS_BIG_FILESYSTEMS r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)s->br_startoff << 9) | ((xfs_bmbt_rec_base_t)s->br_startblock >> 43); r->l1 = ((xfs_bmbt_rec_base_t)s->br_startblock << 21) | ((xfs_bmbt_rec_base_t)s->br_blockcount & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); -#else /* !XFS_BIG_FILESYSTEMS */ +#else /* !XFS_BIG_BLKNOS */ if (ISNULLSTARTBLOCK(s->br_startblock)) { r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)s->br_startoff << 9) | @@ -2498,7 +2496,7 @@ ((xfs_bmbt_rec_base_t)s->br_blockcount & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); } -#endif /* XFS_BIG_FILESYSTEMS */ +#endif /* XFS_BIG_BLKNOS */ } /* @@ -2518,17 +2516,15 @@ extent_flag = (v == XFS_EXT_NORM) ? 0 : 1; ASSERT((o & XFS_MASK64HI(64-BMBT_STARTOFF_BITLEN)) == 0); ASSERT((c & XFS_MASK64HI(64-BMBT_BLOCKCOUNT_BITLEN)) == 0); -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_BLKNOS ASSERT((b & XFS_MASK64HI(64-BMBT_STARTBLOCK_BITLEN)) == 0); -#endif /* XFS_BIG_FILESYSTEMS */ -#if XFS_BIG_FILESYSTEMS r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)o << 9) | ((xfs_bmbt_rec_base_t)b >> 43); r->l1 = ((xfs_bmbt_rec_base_t)b << 21) | ((xfs_bmbt_rec_base_t)c & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); -#else /* !XFS_BIG_FILESYSTEMS */ +#else /* !XFS_BIG_BLKNOS */ if (ISNULLSTARTBLOCK(b)) { r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)o << 9) | @@ -2544,7 +2540,7 @@ ((xfs_bmbt_rec_base_t)c & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); } -#endif /* XFS_BIG_FILESYSTEMS */ +#endif /* XFS_BIG_BLKNOS */ } #if ARCH_CONVERT != ARCH_NOCONVERT @@ -2563,17 +2559,15 @@ extent_flag = (s->br_state == XFS_EXT_NORM) ? 0 : 1; ASSERT((s->br_startoff & XFS_MASK64HI(9)) == 0); ASSERT((s->br_blockcount & XFS_MASK64HI(43)) == 0); -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_BLKNOS ASSERT((s->br_startblock & XFS_MASK64HI(12)) == 0); -#endif /* XFS_BIG_FILESYSTEMS */ -#if XFS_BIG_FILESYSTEMS INT_SET(r->l0, ARCH_CONVERT, ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)s->br_startoff << 9) | ((xfs_bmbt_rec_base_t)s->br_startblock >> 43)); INT_SET(r->l1, ARCH_CONVERT, ((xfs_bmbt_rec_base_t)s->br_startblock << 21) | ((xfs_bmbt_rec_base_t)s->br_blockcount & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); -#else /* !XFS_BIG_FILESYSTEMS */ +#else /* !XFS_BIG_BLKNOS */ if (ISNULLSTARTBLOCK(s->br_startblock)) { INT_SET(r->l0, ARCH_CONVERT, ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)s->br_startoff << 9) | @@ -2589,7 +2583,7 @@ ((xfs_bmbt_rec_base_t)s->br_blockcount & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); } -#endif /* XFS_BIG_FILESYSTEMS */ +#endif /* XFS_BIG_BLKNOS */ } /* @@ -2609,17 +2603,15 @@ extent_flag = (v == XFS_EXT_NORM) ? 0 : 1; ASSERT((o & XFS_MASK64HI(64-BMBT_STARTOFF_BITLEN)) == 0); ASSERT((c & XFS_MASK64HI(64-BMBT_BLOCKCOUNT_BITLEN)) == 0); -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_BLKNOS ASSERT((b & XFS_MASK64HI(64-BMBT_STARTBLOCK_BITLEN)) == 0); -#endif /* XFS_BIG_FILESYSTEMS */ -#if XFS_BIG_FILESYSTEMS INT_SET(r->l0, ARCH_CONVERT, ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)o << 9) | ((xfs_bmbt_rec_base_t)b >> 43)); INT_SET(r->l1, ARCH_CONVERT, ((xfs_bmbt_rec_base_t)b << 21) | ((xfs_bmbt_rec_base_t)c & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); -#else /* !XFS_BIG_FILESYSTEMS */ +#else /* !XFS_BIG_BLKNOS */ if (ISNULLSTARTBLOCK(b)) { INT_SET(r->l0, ARCH_CONVERT, ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)o << 9) | @@ -2635,7 +2627,7 @@ ((xfs_bmbt_rec_base_t)c & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); } -#endif /* XFS_BIG_FILESYSTEMS */ +#endif /* XFS_BIG_BLKNOS */ } #endif @@ -2660,15 +2652,13 @@ xfs_bmbt_rec_t *r, xfs_fsblock_t v) { -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_BLKNOS ASSERT((v & XFS_MASK64HI(12)) == 0); -#endif /* XFS_BIG_FILESYSTEMS */ -#if XFS_BIG_FILESYSTEMS r->l0 = (r->l0 & (xfs_bmbt_rec_base_t)XFS_MASK64HI(55)) | (xfs_bmbt_rec_base_t)(v >> 43); r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)) | (xfs_bmbt_rec_base_t)(v << 21); -#else /* !XFS_BIG_FILESYSTEMS */ +#else /* !XFS_BIG_BLKNOS */ if (ISNULLSTARTBLOCK(v)) { r->l0 |= (xfs_bmbt_rec_base_t)XFS_MASK64LO(9); r->l1 = (xfs_bmbt_rec_base_t)XFS_MASK64HI(11) | @@ -2679,7 +2669,7 @@ r->l1 = ((xfs_bmbt_rec_base_t)v << 21) | (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); } -#endif /* XFS_BIG_FILESYSTEMS */ +#endif /* XFS_BIG_BLKNOS */ } /* diff -Nru a/fs/xfs/xfs_bmap_btree.h b/fs/xfs/xfs_bmap_btree.h --- a/fs/xfs/xfs_bmap_btree.h Mon Sep 22 00:30:21 2003 +++ b/fs/xfs/xfs_bmap_btree.h Mon Sep 22 00:30:21 2003 @@ -108,7 +108,7 @@ * Values and macros for delayed-allocation startblock fields. */ #define STARTBLOCKVALBITS 17 -#define STARTBLOCKMASKBITS (15 + XFS_BIG_FILESYSTEMS * 20) +#define STARTBLOCKMASKBITS (15 + XFS_BIG_BLKNOS * 20) #define DSTARTBLOCKMASKBITS (15 + 20) #define STARTBLOCKMASK \ (((((xfs_fsblock_t)1) << STARTBLOCKMASKBITS) - 1) << STARTBLOCKVALBITS) diff -Nru a/fs/xfs/xfs_cap.c b/fs/xfs/xfs_cap.c --- a/fs/xfs/xfs_cap.c Mon Sep 22 00:30:21 2003 +++ b/fs/xfs/xfs_cap.c Mon Sep 22 00:30:21 2003 @@ -192,6 +192,8 @@ if (vp->v_vfsp->vfs_flag & VFS_RDONLY) return EROFS; + if (vp->v_inode.i_flags & (S_IMMUTABLE|S_APPEND)) + return EPERM; if ((error = _MAC_VACCESS(vp, NULL, VWRITE))) return error; va.va_mask = XFS_AT_UID; diff -Nru a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c --- a/fs/xfs/xfs_da_btree.c Mon Sep 22 00:30:23 2003 +++ b/fs/xfs/xfs_da_btree.c Mon Sep 22 00:30:23 2003 @@ -1141,12 +1141,10 @@ xfs_da_node_entry_t *btree; xfs_dablk_t blkno; int probe, span, max, error, retval; - xfs_daddr_t mappedbno; xfs_dahash_t hashval; xfs_da_args_t *args; args = state->args; - mappedbno = state->holeok ? -2 : -1; /* * Descend thru the B-tree searching each level for the right @@ -1164,9 +1162,7 @@ */ blk->blkno = blkno; error = xfs_da_read_buf(args->trans, args->dp, blkno, - mappedbno, &blk->bp, args->whichfork); - if (!error && unlikely(state->holeok && !blk->bp)) - error = XFS_ERROR(ENOATTR); /* always attr here */ + -1, &blk->bp, args->whichfork); if (error) { blk->blkno = 0; state->path.active--; @@ -2170,9 +2166,9 @@ if (xfs_error_level >= XFS_ERRLEVEL_LOW) { int i; cmn_err(CE_ALERT, "xfs_da_do_buf: bno %lld\n", - bno); + (long long)bno); cmn_err(CE_ALERT, "dir: inode %lld\n", - dp->i_ino); + (long long)dp->i_ino); for (i = 0; i < nmap; i++) { cmn_err(CE_ALERT, "[%02d] br_startoff %lld br_startblock %lld br_blockcount %lld br_state %d\n", diff -Nru a/fs/xfs/xfs_da_btree.h b/fs/xfs/xfs_da_btree.h --- a/fs/xfs/xfs_da_btree.h Mon Sep 22 00:30:21 2003 +++ b/fs/xfs/xfs_da_btree.h Mon Sep 22 00:30:21 2003 @@ -189,10 +189,10 @@ int index2; /* index of 2nd attr in blk */ xfs_dablk_t rmtblkno2; /* remote attr value starting blkno */ int rmtblkcnt2; /* remote attr value block count */ - int justcheck : 1; /* T/F: check for ok with no space */ - int rename : 1; /* T/F: this is an atomic rename op */ - int addname : 1; /* T/F: this is an add operation */ - int oknoent : 1; /* T/F: ok to return ENOENT, else die */ + unsigned char justcheck; /* T/F: check for ok with no space */ + unsigned char rename; /* T/F: this is an atomic rename op */ + unsigned char addname; /* T/F: this is an add operation */ + unsigned char oknoent; /* T/F: ok to return ENOENT, else die */ } xfs_da_args_t; /* @@ -252,10 +252,9 @@ unsigned int node_ents; /* how many entries in danode */ xfs_da_state_path_t path; /* search/split paths */ xfs_da_state_path_t altpath; /* alternate path for join */ - unsigned int inleaf : 1; /* insert into 1->lf, 0->splf */ - unsigned int holeok : 1; /* T/F: can deal with a hole */ - unsigned int extravalid : 1; /* T/F: extrablk is in use */ - unsigned int extraafter : 1; /* T/F: extrablk is after new */ + unsigned char inleaf; /* insert into 1->lf, 0->splf */ + unsigned char extravalid; /* T/F: extrablk is in use */ + unsigned char extraafter; /* T/F: extrablk is after new */ xfs_da_state_blk_t extrablk; /* for double-splits on leafs */ /* for dirv2 extrablk is data */ } xfs_da_state_t; diff -Nru a/fs/xfs/xfs_dinode.h b/fs/xfs/xfs_dinode.h --- a/fs/xfs/xfs_dinode.h Mon Sep 22 00:30:23 2003 +++ b/fs/xfs/xfs_dinode.h Mon Sep 22 00:30:23 2003 @@ -471,13 +471,21 @@ * There should be a one-to-one correspondence between these flags and the * XFS_XFLAG_s. */ -#define XFS_DIFLAG_REALTIME_BIT 0 /* file's blocks come from rt area */ -#define XFS_DIFLAG_PREALLOC_BIT 1 /* file space has been preallocated */ -#define XFS_DIFLAG_NEWRTBM_BIT 2 /* for rtbitmap inode, new format */ -#define XFS_DIFLAG_REALTIME (1 << XFS_DIFLAG_REALTIME_BIT) -#define XFS_DIFLAG_PREALLOC (1 << XFS_DIFLAG_PREALLOC_BIT) -#define XFS_DIFLAG_NEWRTBM (1 << XFS_DIFLAG_NEWRTBM_BIT) -#define XFS_DIFLAG_ALL \ - (XFS_DIFLAG_REALTIME|XFS_DIFLAG_PREALLOC|XFS_DIFLAG_NEWRTBM) +#define XFS_DIFLAG_REALTIME_BIT 0 /* file's blocks come from rt area */ +#define XFS_DIFLAG_PREALLOC_BIT 1 /* file space has been preallocated */ +#define XFS_DIFLAG_NEWRTBM_BIT 2 /* for rtbitmap inode, new format */ +#define XFS_DIFLAG_IMMUTABLE_BIT 3 /* inode is immutable */ +#define XFS_DIFLAG_APPEND_BIT 4 /* inode is append-only */ +#define XFS_DIFLAG_SYNC_BIT 5 /* inode is written synchronously */ +#define XFS_DIFLAG_NOATIME_BIT 6 /* do not update atime */ +#define XFS_DIFLAG_NODUMP_BIT 7 /* do not dump */ +#define XFS_DIFLAG_REALTIME (1 << XFS_DIFLAG_REALTIME_BIT) +#define XFS_DIFLAG_PREALLOC (1 << XFS_DIFLAG_PREALLOC_BIT) +#define XFS_DIFLAG_NEWRTBM (1 << XFS_DIFLAG_NEWRTBM_BIT) +#define XFS_DIFLAG_IMMUTABLE (1 << XFS_DIFLAG_IMMUTABLE_BIT) +#define XFS_DIFLAG_APPEND (1 << XFS_DIFLAG_APPEND_BIT) +#define XFS_DIFLAG_SYNC (1 << XFS_DIFLAG_SYNC_BIT) +#define XFS_DIFLAG_NOATIME (1 << XFS_DIFLAG_NOATIME_BIT) +#define XFS_DIFLAG_NODUMP (1 << XFS_DIFLAG_NODUMP_BIT) #endif /* __XFS_DINODE_H__ */ diff -Nru a/fs/xfs/xfs_dir.c b/fs/xfs/xfs_dir.c --- a/fs/xfs/xfs_dir.c Mon Sep 22 00:30:19 2003 +++ b/fs/xfs/xfs_dir.c Mon Sep 22 00:30:19 2003 @@ -262,7 +262,7 @@ if ((retval = xfs_dir_ino_validate(trans->t_mountp, inum))) return (retval); - XFS_STATS_INC(xfsstats.xs_dir_create); + XFS_STATS_INC(xs_dir_create); /* * Fill in the arg structure for this request. */ @@ -367,7 +367,7 @@ int count, totallen, newsize, retval; ASSERT((dp->i_d.di_mode & IFMT) == IFDIR); - XFS_STATS_INC(xfsstats.xs_dir_remove); + XFS_STATS_INC(xs_dir_remove); /* * Fill in the arg structure for this request. */ @@ -411,7 +411,7 @@ ASSERT((dp->i_d.di_mode & IFMT) == IFDIR); - XFS_STATS_INC(xfsstats.xs_dir_lookup); + XFS_STATS_INC(xs_dir_lookup); /* * Fill in the arg structure for this request. */ @@ -454,7 +454,7 @@ int alignment, retval; xfs_dir_put_t put; - XFS_STATS_INC(xfsstats.xs_dir_getdents); + XFS_STATS_INC(xs_dir_getdents); ASSERT((dp->i_d.di_mode & IFMT) == IFDIR); /* diff -Nru a/fs/xfs/xfs_dir2.c b/fs/xfs/xfs_dir2.c --- a/fs/xfs/xfs_dir2.c Mon Sep 22 00:30:25 2003 +++ b/fs/xfs/xfs_dir2.c Mon Sep 22 00:30:25 2003 @@ -63,7 +63,6 @@ #include "xfs_dir2_leaf.h" #include "xfs_dir2_block.h" #include "xfs_dir2_node.h" -#include "xfs_dir2_sf.h" #include "xfs_dir2_trace.h" #include "xfs_error.h" #include "xfs_bit.h" @@ -213,7 +212,7 @@ if ((rval = xfs_dir_ino_validate(tp->t_mountp, inum))) { return rval; } - XFS_STATS_INC(xfsstats.xs_dir_create); + XFS_STATS_INC(xs_dir_create); /* * Fill in the arg structure for this request. */ @@ -263,7 +262,7 @@ int v; /* type-checking value */ ASSERT((dp->i_d.di_mode & IFMT) == IFDIR); - XFS_STATS_INC(xfsstats.xs_dir_lookup); + XFS_STATS_INC(xs_dir_lookup); /* * Fill in the arg structure for this request. @@ -321,7 +320,7 @@ int v; /* type-checking value */ ASSERT((dp->i_d.di_mode & IFMT) == IFDIR); - XFS_STATS_INC(xfsstats.xs_dir_remove); + XFS_STATS_INC(xs_dir_remove); /* * Fill in the arg structure for this request. */ @@ -371,7 +370,7 @@ int v; /* type-checking value */ ASSERT((dp->i_d.di_mode & IFMT) == IFDIR); - XFS_STATS_INC(xfsstats.xs_dir_getdents); + XFS_STATS_INC(xs_dir_getdents); /* * If our caller has given us a single contiguous aligned memory buffer, * just work directly within that buffer. If it's in user memory, diff -Nru a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c --- a/fs/xfs/xfs_dir2_block.c Mon Sep 22 00:30:18 2003 +++ b/fs/xfs/xfs_dir2_block.c Mon Sep 22 00:30:18 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -530,10 +530,9 @@ p.cook = XFS_DIR2_DB_OFF_TO_DATAPTR(mp, mp->m_dirdatablk, ptr - (char *)block); -#if XFS_BIG_FILESYSTEMS - p.ino = INT_GET(dep->inumber, ARCH_CONVERT) + mp->m_inoadd; -#else p.ino = INT_GET(dep->inumber, ARCH_CONVERT); +#if XFS_BIG_INUMS + p.ino += mp->m_inoadd; #endif p.name = (char *)dep->name; diff -Nru a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c --- a/fs/xfs/xfs_dir2_leaf.c Mon Sep 22 00:30:21 2003 +++ b/fs/xfs/xfs_dir2_leaf.c Mon Sep 22 00:30:21 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -1118,10 +1118,9 @@ p.cook = XFS_DIR2_BYTE_TO_DATAPTR(mp, curoff + length); -#if XFS_BIG_FILESYSTEMS - p.ino = INT_GET(dep->inumber, ARCH_CONVERT) + mp->m_inoadd; -#else p.ino = INT_GET(dep->inumber, ARCH_CONVERT); +#if XFS_BIG_INUMS + p.ino += mp->m_inoadd; #endif p.name = (char *)dep->name; diff -Nru a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c --- a/fs/xfs/xfs_dir2_node.c Mon Sep 22 00:30:17 2003 +++ b/fs/xfs/xfs_dir2_node.c Mon Sep 22 00:30:17 2003 @@ -1612,7 +1612,8 @@ if (XFS_DIR2_DB_TO_FDB(mp, dbno) != fbno) { cmn_err(CE_ALERT, "xfs_dir2_node_addname_int: needed block %lld, got %lld\n", - XFS_DIR2_DB_TO_FDB(mp, dbno), fbno); + (long long)XFS_DIR2_DB_TO_FDB(mp, dbno), + (long long)fbno); XFS_ERROR_REPORT("xfs_dir2_node_addname_int", XFS_ERRLEVEL_LOW, mp); return XFS_ERROR(EFSCORRUPTED); diff -Nru a/fs/xfs/xfs_dir2_sf.c b/fs/xfs/xfs_dir2_sf.c --- a/fs/xfs/xfs_dir2_sf.c Mon Sep 22 00:30:23 2003 +++ b/fs/xfs/xfs_dir2_sf.c Mon Sep 22 00:30:23 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -79,10 +79,10 @@ #else #define xfs_dir2_sf_check(args) #endif /* DEBUG */ -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS static void xfs_dir2_sf_toino4(xfs_da_args_t *args); static void xfs_dir2_sf_toino8(xfs_da_args_t *args); -#endif /* XFS_BIG_FILESYSTEMS */ +#endif /* XFS_BIG_INUMS */ /* * Given a block directory (dp/block), calculate its size as a shortform (sf) @@ -136,7 +136,7 @@ isdotdot = dep->namelen == 2 && dep->name[0] == '.' && dep->name[1] == '.'; -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS if (!isdot) i8count += INT_GET(dep->inumber, ARCH_CONVERT) > XFS_DIR2_MAX_SHORT_INUM; #endif @@ -324,7 +324,8 @@ */ add_entsize = XFS_DIR2_SF_ENTSIZE_BYNAME(sfp, args->namelen); incr_isize = add_entsize; -#if XFS_BIG_FILESYSTEMS + objchange = 0; +#if XFS_BIG_INUMS /* * Do we have to change to 8 byte inodes? */ @@ -340,10 +341,7 @@ ((uint)sizeof(xfs_dir2_ino8_t) - (uint)sizeof(xfs_dir2_ino4_t)); objchange = 1; - } else - objchange = 0; -#else - objchange = 0; + } #endif old_isize = (int)dp->i_d.di_size; new_isize = old_isize + incr_isize; @@ -383,7 +381,7 @@ */ else { ASSERT(pick == 2); -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS if (objchange) xfs_dir2_sf_toino8(args); #endif @@ -437,7 +435,7 @@ * Update the header and inode. */ sfp->hdr.count++; -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS if (args->inumber > XFS_DIR2_MAX_SHORT_INUM) sfp->hdr.i8count++; #endif @@ -526,7 +524,7 @@ XFS_DIR2_SF_PUT_INUMBER_ARCH(sfp, &args->inumber, XFS_DIR2_SF_INUMBERP(sfep), ARCH_CONVERT); sfp->hdr.count++; -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && !objchange) sfp->hdr.i8count++; #endif @@ -603,7 +601,7 @@ /* * If changing the inode number size, do it the hard way. */ -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS if (objchange) { return 2; } @@ -657,9 +655,7 @@ XFS_DIR2_DATA_ENTSIZE(sfep->namelen); } ASSERT(i8count == sfp->hdr.i8count); -#if !XFS_BIG_FILESYSTEMS - ASSERT(i8count == 0); -#endif + ASSERT(XFS_BIG_INUMS || i8count == 0); ASSERT((char *)sfep - (char *)sfp == dp->i_d.di_size); ASSERT(offset + (sfp->hdr.count + 2) * (uint)sizeof(xfs_dir2_leaf_entry_t) + @@ -779,10 +775,9 @@ XFS_DIR2_DATA_DOT_OFFSET)) { p.cook = XFS_DIR2_DB_OFF_TO_DATAPTR(mp, 0, XFS_DIR2_DATA_DOTDOT_OFFSET); -#if XFS_BIG_FILESYSTEMS - p.ino = dp->i_ino + mp->m_inoadd; -#else p.ino = dp->i_ino; +#if XFS_BIG_INUMS + p.ino += mp->m_inoadd; #endif p.name = "."; p.namelen = 1; @@ -805,11 +800,10 @@ XFS_DIR2_DATA_DOTDOT_OFFSET)) { p.cook = XFS_DIR2_DB_OFF_TO_DATAPTR(mp, mp->m_dirdatablk, XFS_DIR2_DATA_FIRST_OFFSET); -#if XFS_BIG_FILESYSTEMS - p.ino = XFS_DIR2_SF_GET_INUMBER_ARCH(sfp, &sfp->hdr.parent, ARCH_CONVERT) + - mp->m_inoadd; -#else - p.ino = XFS_DIR2_SF_GET_INUMBER_ARCH(sfp, &sfp->hdr.parent, ARCH_CONVERT); + p.ino = XFS_DIR2_SF_GET_INUMBER_ARCH(sfp, &sfp->hdr.parent, + ARCH_CONVERT); +#if XFS_BIG_INUMS + p.ino += mp->m_inoadd; #endif p.name = ".."; p.namelen = 2; @@ -843,13 +837,10 @@ XFS_DIR2_SF_GET_OFFSET_ARCH(sfep, ARCH_CONVERT) + XFS_DIR2_DATA_ENTSIZE(p.namelen)); -#if XFS_BIG_FILESYSTEMS - p.ino = XFS_DIR2_SF_GET_INUMBER_ARCH(sfp, - XFS_DIR2_SF_INUMBERP(sfep), ARCH_CONVERT) + - mp->m_inoadd; -#else p.ino = XFS_DIR2_SF_GET_INUMBER_ARCH(sfp, XFS_DIR2_SF_INUMBERP(sfep), ARCH_CONVERT); +#if XFS_BIG_INUMS + p.ino += mp->m_inoadd; #endif p.name = (char *)sfep->name; @@ -1014,7 +1005,7 @@ */ xfs_idata_realloc(dp, newsize - oldsize, XFS_DATA_FORK); sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS /* * Are we changing inode number size? */ @@ -1039,10 +1030,10 @@ { xfs_inode_t *dp; /* incore directory inode */ int i; /* entry index */ -#if XFS_BIG_FILESYSTEMS || defined(DEBUG) +#if XFS_BIG_INUMS || defined(DEBUG) xfs_ino_t ino=0; /* entry old inode number */ #endif -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS int i8elevated; /* sf_toino8 set i8count=1 */ #endif xfs_dir2_sf_entry_t *sfep; /* shortform directory entry */ @@ -1063,7 +1054,7 @@ ASSERT(dp->i_df.if_u1.if_data != NULL); sfp = (xfs_dir2_sf_t *)dp->i_df.if_u1.if_data; ASSERT(dp->i_d.di_size >= XFS_DIR2_SF_HDR_SIZE(sfp->hdr.i8count)); -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS /* * New inode number is large, and need to convert to 8-byte inodes. */ @@ -1101,7 +1092,7 @@ */ if (args->namelen == 2 && args->name[0] == '.' && args->name[1] == '.') { -#if XFS_BIG_FILESYSTEMS || defined(DEBUG) +#if XFS_BIG_INUMS || defined(DEBUG) ino = XFS_DIR2_SF_GET_INUMBER_ARCH(sfp, &sfp->hdr.parent, ARCH_CONVERT); ASSERT(args->inumber != ino); #endif @@ -1117,7 +1108,7 @@ if (sfep->namelen == args->namelen && sfep->name[0] == args->name[0] && memcmp(args->name, sfep->name, args->namelen) == 0) { -#if XFS_BIG_FILESYSTEMS || defined(DEBUG) +#if XFS_BIG_INUMS || defined(DEBUG) ino = XFS_DIR2_SF_GET_INUMBER_ARCH(sfp, XFS_DIR2_SF_INUMBERP(sfep), ARCH_CONVERT); ASSERT(args->inumber != ino); @@ -1132,14 +1123,14 @@ */ if (i == sfp->hdr.count) { ASSERT(args->oknoent); -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS if (i8elevated) xfs_dir2_sf_toino4(args); #endif return XFS_ERROR(ENOENT); } } -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS /* * See if the old number was large, the new number is small. */ @@ -1172,7 +1163,7 @@ return 0; } -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS /* * Convert from 8-byte inode numbers to 4-byte inode numbers. * The last 8-byte inode number is gone, but the count is still 1. @@ -1325,4 +1316,4 @@ dp->i_d.di_size = newsize; xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_DDATA); } -#endif /* XFS_BIG_FILESYSTEMS */ +#endif /* XFS_BIG_INUMS */ diff -Nru a/fs/xfs/xfs_dir_leaf.c b/fs/xfs/xfs_dir_leaf.c --- a/fs/xfs/xfs_dir_leaf.c Mon Sep 22 00:30:24 2003 +++ b/fs/xfs/xfs_dir_leaf.c Mon Sep 22 00:30:24 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -561,10 +561,9 @@ if (sbp->seqno == 0 || sbp == sbuf) lastresid = uio->uio_resid; XFS_PUT_COOKIE(p.cook, mp, 0, sbp[1].seqno, sbp[1].hash); -#if XFS_BIG_FILESYSTEMS - p.ino = sbp->ino + mp->m_inoadd; -#else p.ino = sbp->ino; +#if XFS_BIG_INUMS + p.ino += mp->m_inoadd; #endif p.name = sbp->name; p.namelen = sbp->namelen; @@ -1835,7 +1834,6 @@ entry_d = &leaf_d->entries[start_d]; for (i = 0; i < count; entry_s++, entry_d++, i++) { ASSERT(INT_GET(entry_s->nameidx, ARCH_CONVERT) >= INT_GET(hdr_s->firstused, ARCH_CONVERT)); - ASSERT(entry_s->namelen < MAXNAMELEN); tmp = XFS_DIR_LEAF_ENTSIZE_BYENTRY(entry_s); INT_MOD(hdr_d->firstused, ARCH_CONVERT, -(tmp)); entry_d->hashval = entry_s->hashval; /* INT_: direct copy */ @@ -2142,10 +2140,9 @@ * then restore the UIO to the first entry in the current * run of equal-hashval entries (probably one 1 entry long). */ -#if XFS_BIG_FILESYSTEMS - p.ino = XFS_GET_DIR_INO_ARCH(mp, namest->inumber, ARCH_CONVERT) + mp->m_inoadd; -#else p.ino = XFS_GET_DIR_INO_ARCH(mp, namest->inumber, ARCH_CONVERT); +#if XFS_BIG_INUMS + p.ino += mp->m_inoadd; #endif p.name = (char *)namest->name; p.namelen = entry->namelen; diff -Nru a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c --- a/fs/xfs/xfs_error.c Mon Sep 22 00:30:24 2003 +++ b/fs/xfs/xfs_error.c Mon Sep 22 00:30:24 2003 @@ -238,7 +238,7 @@ } void -xfs_cmn_err(uint64_t panic_tag, int level, xfs_mount_t *mp, char *fmt, ...) +xfs_cmn_err(int panic_tag, int level, xfs_mount_t *mp, char *fmt, ...) { va_list ap; diff -Nru a/fs/xfs/xfs_error.h b/fs/xfs/xfs_error.h --- a/fs/xfs/xfs_error.h Mon Sep 22 00:30:23 2003 +++ b/fs/xfs/xfs_error.h Mon Sep 22 00:30:23 2003 @@ -177,18 +177,18 @@ * sysctl. update xfs_max[XFS_PARAM] if * more are added. */ -#define XFS_NO_PTAG 0LL -#define XFS_PTAG_IFLUSH 0x0000000000000001LL -#define XFS_PTAG_LOGRES 0x0000000000000002LL -#define XFS_PTAG_AILDELETE 0x0000000000000004LL -#define XFS_PTAG_ERROR_REPORT 0x0000000000000008LL -#define XFS_PTAG_SHUTDOWN_CORRUPT 0x0000000000000010LL -#define XFS_PTAG_SHUTDOWN_IOERROR 0x0000000000000020LL -#define XFS_PTAG_SHUTDOWN_LOGERROR 0x0000000000000040LL +#define XFS_NO_PTAG 0 +#define XFS_PTAG_IFLUSH 0x00000001 +#define XFS_PTAG_LOGRES 0x00000002 +#define XFS_PTAG_AILDELETE 0x00000004 +#define XFS_PTAG_ERROR_REPORT 0x00000008 +#define XFS_PTAG_SHUTDOWN_CORRUPT 0x00000010 +#define XFS_PTAG_SHUTDOWN_IOERROR 0x00000020 +#define XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040 struct xfs_mount; /* PRINTFLIKE4 */ -void xfs_cmn_err(uint64_t panic_tag, int level, struct xfs_mount *mp, +void xfs_cmn_err(int panic_tag, int level, struct xfs_mount *mp, char *fmt, ...); /* PRINTFLIKE3 */ void xfs_fs_cmn_err(int level, struct xfs_mount *mp, char *fmt, ...); diff -Nru a/fs/xfs/xfs_fs.h b/fs/xfs/xfs_fs.h --- a/fs/xfs/xfs_fs.h Mon Sep 22 00:30:19 2003 +++ b/fs/xfs/xfs_fs.h Mon Sep 22 00:30:19 2003 @@ -69,12 +69,14 @@ * There should be a one-to-one correspondence between these flags and the * XFS_DIFLAG_s. */ -#define XFS_XFLAG_REALTIME 0x00000001 -#define XFS_XFLAG_PREALLOC 0x00000002 +#define XFS_XFLAG_REALTIME 0x00000001 /* data in realtime volume */ +#define XFS_XFLAG_PREALLOC 0x00000002 /* preallocated file extents */ +#define XFS_XFLAG_IMMUTABLE 0x00000008 /* file cannot be modified */ +#define XFS_XFLAG_APPEND 0x00000010 /* all writes append */ +#define XFS_XFLAG_SYNC 0x00000020 /* all writes synchronous */ +#define XFS_XFLAG_NOATIME 0x00000040 /* do not update access time */ +#define XFS_XFLAG_NODUMP 0x00000080 /* do not include in backups */ #define XFS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */ -#define XFS_XFLAG_ALL \ - ( XFS_XFLAG_REALTIME|XFS_XFLAG_PREALLOC|XFS_XFLAG_HASATTR ) - /* * Structure for XFS_IOC_GETBMAP. diff -Nru a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c --- a/fs/xfs/xfs_fsops.c Mon Sep 22 00:30:24 2003 +++ b/fs/xfs/xfs_fsops.c Mon Sep 22 00:30:24 2003 @@ -53,7 +53,6 @@ #include "xfs_rw.h" #include "xfs_trans_space.h" #include "xfs_rtalloc.h" -#include "xfs_dir.h" #include "xfs_dir2.h" #include "xfs_attr_sf.h" #include "xfs_dir_sf.h" @@ -172,7 +171,7 @@ if (nb < mp->m_sb.sb_dblocks) return XFS_ERROR(EINVAL); } - new = in->newblocks - mp->m_sb.sb_dblocks; + new = nb - mp->m_sb.sb_dblocks; oagcount = mp->m_sb.sb_agcount; if (nagcount > oagcount) { down_write(&mp->m_peraglock); diff -Nru a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c --- a/fs/xfs/xfs_ialloc.c Mon Sep 22 00:30:22 2003 +++ b/fs/xfs/xfs_ialloc.c Mon Sep 22 00:30:22 2003 @@ -1114,7 +1114,7 @@ agbno = XFS_AGINO_TO_AGBNO(mp, agino); if (agno >= mp->m_sb.sb_agcount || agbno >= mp->m_sb.sb_agblocks || ino != XFS_AGINO_TO_INO(mp, agno, agino)) { -#ifdef DEBUG +#if 0 if (agno >= mp->m_sb.sb_agcount) { xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: agno (%d) >= " diff -Nru a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c --- a/fs/xfs/xfs_iget.c Mon Sep 22 00:30:25 2003 +++ b/fs/xfs/xfs_iget.c Mon Sep 22 00:30:25 2003 @@ -204,7 +204,7 @@ if (ip->i_flags & XFS_IRECLAIM) { read_unlock(&ih->ih_lock); delay(1); - XFS_STATS_INC(xfsstats.xs_ig_frecycle); + XFS_STATS_INC(xs_ig_frecycle); goto again; } @@ -212,7 +212,7 @@ vn_trace_exit(vp, "xfs_iget.alloc", (inst_t *)__return_address); - XFS_STATS_INC(xfsstats.xs_ig_found); + XFS_STATS_INC(xs_ig_found); ip->i_flags &= ~XFS_IRECLAIMABLE; read_unlock(&ih->ih_lock); @@ -232,7 +232,7 @@ if (inode->i_state & (I_FREEING | I_CLEAR)) { read_unlock(&ih->ih_lock); delay(1); - XFS_STATS_INC(xfsstats.xs_ig_frecycle); + XFS_STATS_INC(xs_ig_frecycle); goto again; } @@ -247,7 +247,7 @@ read_unlock(&ih->ih_lock); - XFS_STATS_INC(xfsstats.xs_ig_found); + XFS_STATS_INC(xs_ig_found); finish_inode: if (lock_flags != 0) { @@ -269,7 +269,7 @@ * Inode cache miss: save the hash chain version stamp and unlock * the chain, so we don't deadlock in vn_alloc. */ - XFS_STATS_INC(xfsstats.xs_ig_missed); + XFS_STATS_INC(xs_ig_missed); version = ih->ih_version; @@ -305,7 +305,7 @@ write_unlock(&ih->ih_lock); xfs_idestroy(ip); - XFS_STATS_INC(xfsstats.xs_ig_dup); + XFS_STATS_INC(xs_ig_dup); goto again; } } @@ -442,7 +442,7 @@ int error; retry: - XFS_STATS_INC(xfsstats.xs_ig_attempts); + XFS_STATS_INC(xs_ig_attempts); if ((inode = iget_locked(XFS_MTOVFS(mp)->vfs_super, ino))) { bhv_desc_t *bdp; @@ -475,7 +475,7 @@ bdp = vn_bhv_lookup(VN_BHV_HEAD(vp), &xfs_vnodeops); if (bdp == NULL) { - XFS_STATS_INC(xfsstats.xs_ig_dup); + XFS_STATS_INC(xs_ig_dup); goto inode_allocate; } ip = XFS_BHVTOI(bdp); @@ -484,7 +484,7 @@ newnode = (ip->i_d.di_mode == 0); if (newnode) xfs_iocore_inode_reinit(ip); - XFS_STATS_INC(xfsstats.xs_ig_found); + XFS_STATS_INC(xs_ig_found); *ipp = ip; error = 0; } @@ -604,7 +604,7 @@ /* * Remove from old hash list and mount list. */ - XFS_STATS_INC(xfsstats.xs_ig_reclaims); + XFS_STATS_INC(xs_ig_reclaims); xfs_iextract(ip); diff -Nru a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c --- a/fs/xfs/xfs_inode.c Mon Sep 22 00:30:25 2003 +++ b/fs/xfs/xfs_inode.c Mon Sep 22 00:30:25 2003 @@ -1210,6 +1210,18 @@ break; case IFREG: case IFDIR: + if (pip->i_d.di_flags & + (XFS_DIFLAG_NOATIME|XFS_DIFLAG_NODUMP|XFS_DIFLAG_SYNC)) { + if ((pip->i_d.di_flags & XFS_DIFLAG_NOATIME) && + xfs_inherit_noatime) + ip->i_d.di_flags |= XFS_DIFLAG_NOATIME; + if ((pip->i_d.di_flags & XFS_DIFLAG_NODUMP) && + xfs_inherit_nodump) + ip->i_d.di_flags |= XFS_DIFLAG_NODUMP; + if ((pip->i_d.di_flags & XFS_DIFLAG_SYNC) && + xfs_inherit_sync) + ip->i_d.di_flags |= XFS_DIFLAG_SYNC; + } case IFLNK: ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; ip->i_df.if_flags = XFS_IFEXTENTS; @@ -2884,7 +2896,7 @@ enum { INT_DELWRI = (1 << 0), INT_ASYNC = (1 << 1) }; SPLDECL(s); - XFS_STATS_INC(xfsstats.xs_iflush_count); + XFS_STATS_INC(xs_iflush_count); ASSERT(ismrlocked(&ip->i_lock, MR_UPDATE|MR_ACCESS)); ASSERT(valusema(&ip->i_flock) <= 0); @@ -3057,8 +3069,8 @@ mutex_spinunlock(&ch->ch_lock, s); if (clcount) { - XFS_STATS_INC(xfsstats.xs_icluster_flushcnt); - XFS_STATS_ADD(xfsstats.xs_icluster_flushinode, clcount); + XFS_STATS_INC(xs_icluster_flushcnt); + XFS_STATS_ADD(xs_icluster_flushinode, clcount); } /* @@ -3500,6 +3512,9 @@ if (IS_RDONLY(inode) && (S_ISREG(imode) || S_ISDIR(imode) || S_ISLNK(imode))) return XFS_ERROR(EROFS); + + if (IS_IMMUTABLE(inode)) + return XFS_ERROR(EACCES); } /* @@ -3623,7 +3638,7 @@ * Don't update access timestamps on reads if mounted "noatime" * Throw it away if anyone asks us. */ - if (ip->i_mount->m_flags & XFS_MOUNT_NOATIME && + if ((ip->i_mount->m_flags & XFS_MOUNT_NOATIME || IS_NOATIME(inode)) && ((flags & (XFS_ICHGTIME_ACC|XFS_ICHGTIME_MOD|XFS_ICHGTIME_CHG)) == XFS_ICHGTIME_ACC)) return; @@ -3657,7 +3672,7 @@ SYNCHRONIZE(); ip->i_update_core = 1; if (!(inode->i_state & I_LOCK)) - mark_inode_dirty(inode); + mark_inode_dirty_sync(inode); } #ifdef XFS_ILOCK_TRACE diff -Nru a/fs/xfs/xfs_inum.h b/fs/xfs/xfs_inum.h --- a/fs/xfs/xfs_inum.h Mon Sep 22 00:30:18 2003 +++ b/fs/xfs/xfs_inum.h Mon Sep 22 00:30:18 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -47,7 +47,7 @@ * Used in some places where having 64-bits in the 32-bit kernels * costs too much. */ -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS typedef xfs_ino_t xfs_intino_t; #else typedef __uint32_t xfs_intino_t; @@ -162,7 +162,7 @@ ((xfs_agino_t)(((b) << XFS_INO_OFFSET_BITS(mp)) | (o))) #endif -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS #define XFS_MAXINUMBER ((xfs_ino_t)((1ULL << 56) - 1ULL)) #define XFS_INO64_OFFSET ((xfs_ino_t)(1ULL << 32)) #else diff -Nru a/fs/xfs/xfs_iocore.c b/fs/xfs/xfs_iocore.c --- a/fs/xfs/xfs_iocore.c Mon Sep 22 00:30:23 2003 +++ b/fs/xfs/xfs_iocore.c Mon Sep 22 00:30:23 2003 @@ -61,7 +61,6 @@ #include "xfs_rw.h" #include "xfs_quota.h" #include "xfs_trans_space.h" -#include "xfs_dmapi.h" STATIC xfs_fsize_t diff -Nru a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c --- a/fs/xfs/xfs_itable.c Mon Sep 22 00:30:18 2003 +++ b/fs/xfs/xfs_itable.c Mon Sep 22 00:30:18 2003 @@ -156,13 +156,23 @@ /* * convert di_flags to bs_xflags. */ - di_flags=INT_GET(dic->di_flags, arch); + di_flags = INT_GET(dic->di_flags, arch); buf->bs_xflags = ((di_flags & XFS_DIFLAG_REALTIME) ? XFS_XFLAG_REALTIME : 0) | ((di_flags & XFS_DIFLAG_PREALLOC) ? XFS_XFLAG_PREALLOC : 0) | + ((di_flags & XFS_DIFLAG_IMMUTABLE) ? + XFS_XFLAG_IMMUTABLE : 0) | + ((di_flags & XFS_DIFLAG_APPEND) ? + XFS_XFLAG_APPEND : 0) | + ((di_flags & XFS_DIFLAG_SYNC) ? + XFS_XFLAG_SYNC : 0) | + ((di_flags & XFS_DIFLAG_NOATIME) ? + XFS_XFLAG_NOATIME : 0) | + ((di_flags & XFS_DIFLAG_NODUMP) ? + XFS_XFLAG_NODUMP : 0) | (XFS_CFORK_Q_ARCH(dic, arch) ? XFS_XFLAG_HASATTR : 0); diff -Nru a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c --- a/fs/xfs/xfs_log.c Mon Sep 22 00:30:25 2003 +++ b/fs/xfs/xfs_log.c Mon Sep 22 00:30:25 2003 @@ -345,7 +345,7 @@ ASSERT(flags & XFS_LOG_FORCE); - XFS_STATS_INC(xfsstats.xs_log_force); + XFS_STATS_INC(xs_log_force); if ((log->l_flags & XLOG_IO_ERROR) == 0) { if (lsn == 0) @@ -446,7 +446,7 @@ if (XLOG_FORCED_SHUTDOWN(log)) return XFS_ERROR(EIO); - XFS_STATS_INC(xfsstats.xs_try_logspace); + XFS_STATS_INC(xs_try_logspace); if (*ticket != NULL) { ASSERT(flags & XFS_LOG_PERM_RESERV); @@ -1428,7 +1428,7 @@ int split = 0; /* split write into two regions */ int error; - XFS_STATS_INC(xfsstats.xs_log_writes); + XFS_STATS_INC(xs_log_writes); ASSERT(iclog->ic_refcnt == 0); /* Round out the log write size */ @@ -1477,7 +1477,7 @@ /* Add for LR header */ count += log->l_iclog_hsize; - XFS_STATS_ADD(xfsstats.xs_log_blocks, BTOBB(count)); + XFS_STATS_ADD(xs_log_blocks, BTOBB(count)); /* Do we need to split this write into 2 parts? */ if (XFS_BUF_ADDR(bp) + BTOBB(count) > log->l_logBBsize) { @@ -2308,7 +2308,7 @@ log->l_flushcnt++; LOG_UNLOCK(log, s); xlog_trace_iclog(iclog, XLOG_TRACE_SLEEP_FLUSH); - XFS_STATS_INC(xfsstats.xs_log_noiclogs); + XFS_STATS_INC(xs_log_noiclogs); /* Ensure that log writes happen */ psema(&log->l_flushsema, PINOD); goto restart; @@ -2421,7 +2421,7 @@ if (XLOG_FORCED_SHUTDOWN(log)) goto error_return; - XFS_STATS_INC(xfsstats.xs_sleep_logspace); + XFS_STATS_INC(xs_sleep_logspace); sv_wait(&tic->t_sema, PINOD|PLTWAIT, &log->l_grant_lock, s); /* * If we got an error, and the filesystem is shutting down, @@ -2447,7 +2447,7 @@ XLOG_INS_TICKETQ(log->l_reserve_headq, tic); xlog_trace_loggrant(log, tic, "xlog_grant_log_space: sleep 2"); - XFS_STATS_INC(xfsstats.xs_sleep_logspace); + XFS_STATS_INC(xs_sleep_logspace); sv_wait(&tic->t_sema, PINOD|PLTWAIT, &log->l_grant_lock, s); if (XLOG_FORCED_SHUTDOWN(log)) { @@ -2558,7 +2558,7 @@ xlog_trace_loggrant(log, tic, "xlog_regrant_write_log_space: sleep 1"); - XFS_STATS_INC(xfsstats.xs_sleep_logspace); + XFS_STATS_INC(xs_sleep_logspace); sv_wait(&tic->t_sema, PINOD|PLTWAIT, &log->l_grant_lock, s); @@ -2587,7 +2587,7 @@ if (free_bytes < need_bytes) { if ((tic->t_flags & XLOG_TIC_IN_Q) == 0) XLOG_INS_TICKETQ(log->l_write_headq, tic); - XFS_STATS_INC(xfsstats.xs_sleep_logspace); + XFS_STATS_INC(xs_sleep_logspace); sv_wait(&tic->t_sema, PINOD|PLTWAIT, &log->l_grant_lock, s); /* If we're shutting down, this tic is already off the queue */ @@ -2952,7 +2952,7 @@ LOG_UNLOCK(log, s); return XFS_ERROR(EIO); } - XFS_STATS_INC(xfsstats.xs_log_force_sleep); + XFS_STATS_INC(xs_log_force_sleep); sv_wait(&iclog->ic_forcesema, PINOD, &log->l_icloglock, s); /* * No need to grab the log lock here since we're @@ -3035,7 +3035,7 @@ (iclog->ic_prev->ic_state & (XLOG_STATE_WANT_SYNC | XLOG_STATE_SYNCING))) { ASSERT(!(iclog->ic_state & XLOG_STATE_IOERROR)); - XFS_STATS_INC(xfsstats.xs_log_force_sleep); + XFS_STATS_INC(xs_log_force_sleep); sv_wait(&iclog->ic_prev->ic_writesema, PSWP, &log->l_icloglock, s); already_slept = 1; @@ -3061,7 +3061,7 @@ LOG_UNLOCK(log, s); return XFS_ERROR(EIO); } - XFS_STATS_INC(xfsstats.xs_log_force_sleep); + XFS_STATS_INC(xs_log_force_sleep); sv_wait(&iclog->ic_forcesema, PSWP, &log->l_icloglock, s); /* * No need to grab the log lock here since we're @@ -3128,7 +3128,7 @@ * The kmem_zalloc may sleep, so we shouldn't be holding the * global lock. XXXmiken: may want to use zone allocator. */ - buf = (xfs_caddr_t) kmem_zalloc(NBPP, 0); + buf = (xfs_caddr_t) kmem_zalloc(NBPP, KM_SLEEP); s = LOG_LOCK(log); @@ -3427,8 +3427,8 @@ if (syncing == B_FALSE || (field_offset & 0x1ff)) { clientid = ophead->oh_clientid; } else { - idx = BTOBB((xfs_caddr_t)&(ophead->oh_clientid) - iclog->ic_datap); - if (idx > (XLOG_HEADER_CYCLE_SIZE / BBSIZE)) { + idx = BTOBBT((xfs_caddr_t)&(ophead->oh_clientid) - iclog->ic_datap); + if (idx >= (XLOG_HEADER_CYCLE_SIZE / BBSIZE)) { j = idx / (XLOG_HEADER_CYCLE_SIZE / BBSIZE); k = idx % (XLOG_HEADER_CYCLE_SIZE / BBSIZE); clientid = GET_CLIENT_ID(xhdr[j].hic_xheader.xh_cycle_data[k], ARCH_CONVERT); @@ -3445,9 +3445,9 @@ if (syncing == B_FALSE || (field_offset & 0x1ff)) { op_len = INT_GET(ophead->oh_len, ARCH_CONVERT); } else { - idx = BTOBB((__psint_t)&ophead->oh_len - + idx = BTOBBT((__psint_t)&ophead->oh_len - (__psint_t)iclog->ic_datap); - if (idx > (XLOG_HEADER_CYCLE_SIZE / BBSIZE)) { + if (idx >= (XLOG_HEADER_CYCLE_SIZE / BBSIZE)) { j = idx / (XLOG_HEADER_CYCLE_SIZE / BBSIZE); k = idx % (XLOG_HEADER_CYCLE_SIZE / BBSIZE); op_len = INT_GET(xhdr[j].hic_xheader.xh_cycle_data[k], ARCH_CONVERT); diff -Nru a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c --- a/fs/xfs/xfs_log_recover.c Mon Sep 22 00:30:22 2003 +++ b/fs/xfs/xfs_log_recover.c Mon Sep 22 00:30:22 2003 @@ -54,7 +54,6 @@ #include "xfs_inode.h" #include "xfs_ialloc_btree.h" #include "xfs_ialloc.h" -#include "xfs_error.h" #include "xfs_log_priv.h" #include "xfs_buf_item.h" #include "xfs_alloc_btree.h" @@ -1360,7 +1359,7 @@ { xlog_recover_item_t *item; - item = kmem_zalloc(sizeof(xlog_recover_item_t), 0); + item = kmem_zalloc(sizeof(xlog_recover_item_t), KM_SLEEP); xlog_recover_insert_item_backq(itemq, item); } @@ -1444,7 +1443,7 @@ item->ri_total = in_f->ilf_size; ASSERT(item->ri_total <= XLOG_MAX_REGIONS_IN_ITEM); item->ri_buf = kmem_zalloc((item->ri_total * - sizeof(xfs_log_iovec_t)), 0); + sizeof(xfs_log_iovec_t)), KM_SLEEP); } ASSERT(item->ri_total > item->ri_cnt); /* Description region is ri_buf[0] */ diff -Nru a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c --- a/fs/xfs/xfs_mount.c Mon Sep 22 00:30:20 2003 +++ b/fs/xfs/xfs_mount.c Mon Sep 22 00:30:20 2003 @@ -222,15 +222,21 @@ return XFS_ERROR(EWRONGFS); } - if (unlikely(sbp->sb_logstart == 0 && mp->m_logdev_targp == mp->m_ddev_targp)) { - cmn_err(CE_WARN, "XFS: filesystem is marked as having an external log; specify logdev on the\nmount command line."); + if (unlikely( + sbp->sb_logstart == 0 && mp->m_logdev_targp == mp->m_ddev_targp)) { + cmn_err(CE_WARN, + "XFS: filesystem is marked as having an external log; " + "specify logdev on the\nmount command line."); XFS_CORRUPTION_ERROR("xfs_mount_validate_sb(1)", XFS_ERRLEVEL_HIGH, mp, sbp); return XFS_ERROR(EFSCORRUPTED); } - if (unlikely(sbp->sb_logstart != 0 && mp->m_logdev_targp != mp->m_ddev_targp)) { - cmn_err(CE_WARN, "XFS: filesystem is marked as having an internal log; don't specify logdev on\nthe mount command line."); + if (unlikely( + sbp->sb_logstart != 0 && mp->m_logdev_targp != mp->m_ddev_targp)) { + cmn_err(CE_WARN, + "XFS: filesystem is marked as having an internal log; " + "don't specify logdev on\nthe mount command line."); XFS_CORRUPTION_ERROR("xfs_mount_validate_sb(2)", XFS_ERRLEVEL_HIGH, mp, sbp); return XFS_ERROR(EFSCORRUPTED); @@ -276,10 +282,14 @@ return XFS_ERROR(EFSCORRUPTED); } -#if !XFS_BIG_FILESYSTEMS - if (sbp->sb_dblocks > INT_MAX || sbp->sb_rblocks > INT_MAX) { +#if !XFS_BIG_BLKNOS + if (unlikely( + (sbp->sb_dblocks << (__uint64_t)(sbp->sb_blocklog - BBSHIFT)) + > INT_MAX || + (sbp->sb_rblocks << (__uint64_t)(sbp->sb_blocklog - BBSHIFT)) + > INT_MAX)) { cmn_err(CE_WARN, -"XFS: File systems greater than 1TB not supported on this system."); + "XFS: File system is too large to be mounted on this system."); return XFS_ERROR(E2BIG); } #endif @@ -294,7 +304,7 @@ /* * Until this is fixed only page-sized or smaller data blocks work. */ - if (sbp->sb_blocksize > PAGE_SIZE) { + if (unlikely(sbp->sb_blocksize > PAGE_SIZE)) { cmn_err(CE_WARN, "XFS: Attempted to mount file system with blocksize %d bytes", sbp->sb_blocksize); @@ -322,9 +332,11 @@ ino = XFS_AGINO_TO_INO(mp, agcount - 1, agino); /* Clear the mount flag if no inode can overflow 32 bits - * on this filesystem. + * on this filesystem, or if specifically requested.. */ - if (ino <= max_inum) { + if ((mp->m_flags & XFS_MOUNT_32BITINOOPT) && ino > max_inum) { + mp->m_flags |= XFS_MOUNT_32BITINODES; + } else { mp->m_flags &= ~XFS_MOUNT_32BITINODES; } diff -Nru a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h --- a/fs/xfs/xfs_mount.h Mon Sep 22 00:30:17 2003 +++ b/fs/xfs/xfs_mount.h Mon Sep 22 00:30:17 2003 @@ -95,8 +95,8 @@ xfs_off_t, size_t, int, vrwlock_t *); typedef int (*xfs_send_mmap_t)(struct vm_area_struct *, uint); typedef int (*xfs_send_destroy_t)(struct bhv_desc *, dm_right_t); -typedef int (*xfs_send_namesp_t)(dm_eventtype_t, struct bhv_desc *, - dm_right_t, struct bhv_desc *, dm_right_t, +typedef int (*xfs_send_namesp_t)(dm_eventtype_t, struct vnode *, + dm_right_t, struct vnode *, dm_right_t, char *, char *, mode_t, int, int); typedef void (*xfs_send_unmount_t)(struct vfs *, struct vnode *, dm_right_t, mode_t, int, int); @@ -354,7 +354,7 @@ __uint64_t m_maxioffset; /* maximum inode offset */ __uint64_t m_resblks; /* total reserved blocks */ __uint64_t m_resblks_avail;/* available reserved blocks */ -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS xfs_ino_t m_inoadd; /* add value for ino64_offset */ #endif int m_dalign; /* stripe unit */ @@ -392,9 +392,7 @@ #define XFS_MOUNT_WSYNC 0x00000001 /* for nfs - all metadata ops must be synchronous except for space allocations */ -#if XFS_BIG_FILESYSTEMS #define XFS_MOUNT_INO64 0x00000002 -#endif /* 0x00000004 -- currently unused */ /* 0x00000008 -- currently unused */ #define XFS_MOUNT_FS_SHUTDOWN 0x00000010 /* atomic stop of all filesystem @@ -413,10 +411,11 @@ #define XFS_MOUNT_DFLT_IOSIZE 0x00001000 /* set default i/o size */ #define XFS_MOUNT_OSYNCISOSYNC 0x00002000 /* o_sync is REALLY o_sync */ /* osyncisdsync is now default*/ -#define XFS_MOUNT_NOUUID 0x00004000 /* ignore uuid during mount */ -#define XFS_MOUNT_32BITINODES 0x00008000 /* do not create inodes above +#define XFS_MOUNT_32BITINODES 0x00004000 /* do not create inodes above * 32 bits in size */ -#define XFS_MOUNT_NOLOGFLUSH 0x00010000 +#define XFS_MOUNT_32BITINOOPT 0x00008000 /* saved mount option state */ +#define XFS_MOUNT_NOUUID 0x00010000 /* ignore uuid during mount */ +#define XFS_MOUNT_NOLOGFLUSH 0x00020000 /* * Default minimum read and write sizes. diff -Nru a/fs/xfs/xfs_rename.c b/fs/xfs/xfs_rename.c --- a/fs/xfs/xfs_rename.c Mon Sep 22 00:30:21 2003 +++ b/fs/xfs/xfs_rename.c Mon Sep 22 00:30:21 2003 @@ -56,7 +56,6 @@ #include "xfs_trans_space.h" #include "xfs_da_btree.h" #include "xfs_dir_leaf.h" -#include "xfs_dmapi.h" /* @@ -293,8 +292,8 @@ DM_EVENT_ENABLED(target_dir_vp->v_vfsp, target_dp, DM_EVENT_RENAME)) { error = XFS_SEND_NAMESP(mp, DM_EVENT_RENAME, - src_dir_bdp, DM_RIGHT_NULL, - target_dir_bdp, DM_RIGHT_NULL, + src_dir_vp, DM_RIGHT_NULL, + target_dir_vp, DM_RIGHT_NULL, src_name, target_name, 0, 0, 0); if (error) { @@ -650,8 +649,8 @@ DM_EVENT_ENABLED(target_dir_vp->v_vfsp, target_dp, DM_EVENT_POSTRENAME)) { (void) XFS_SEND_NAMESP (mp, DM_EVENT_POSTRENAME, - src_dir_bdp, DM_RIGHT_NULL, - target_dir_bdp, DM_RIGHT_NULL, + src_dir_vp, DM_RIGHT_NULL, + target_dir_vp, DM_RIGHT_NULL, src_name, target_name, 0, error, 0); } diff -Nru a/fs/xfs/xfs_rtalloc.h b/fs/xfs/xfs_rtalloc.h --- a/fs/xfs/xfs_rtalloc.h Mon Sep 22 00:30:23 2003 +++ b/fs/xfs/xfs_rtalloc.h Mon Sep 22 00:30:23 2003 @@ -77,7 +77,7 @@ #define XFS_RTLOBIT(w) xfs_lowbit32(w) #define XFS_RTHIBIT(w) xfs_highbit32(w) -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_BLKNOS #define XFS_RTBLOCKLOG(b) xfs_highbit64(b) #else #define XFS_RTBLOCKLOG(b) xfs_highbit32(b) diff -Nru a/fs/xfs/xfs_rw.c b/fs/xfs/xfs_rw.c --- a/fs/xfs/xfs_rw.c Mon Sep 22 00:30:25 2003 +++ b/fs/xfs/xfs_rw.c Mon Sep 22 00:30:25 2003 @@ -59,7 +59,6 @@ #include "xfs_bmap.h" #include "xfs_acl.h" #include "xfs_mac.h" -#include "xfs_attr.h" #include "xfs_error.h" #include "xfs_buf_item.h" #include "xfs_rw.h" diff -Nru a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c --- a/fs/xfs/xfs_trans.c Mon Sep 22 00:30:21 2003 +++ b/fs/xfs/xfs_trans.c Mon Sep 22 00:30:21 2003 @@ -739,7 +739,7 @@ xfs_trans_free_items(tp, shutdown? XFS_TRANS_ABORT : 0); xfs_trans_free_busy(tp); xfs_trans_free(tp); - XFS_STATS_INC(xfsstats.xs_trans_empty); + XFS_STATS_INC(xs_trans_empty); if (commit_lsn_p) *commit_lsn_p = commit_lsn; return (shutdown); @@ -895,9 +895,9 @@ if (!error) error = xfs_log_force(mp, commit_lsn, XFS_LOG_FORCE | XFS_LOG_SYNC); - XFS_STATS_INC(xfsstats.xs_trans_sync); + XFS_STATS_INC(xs_trans_sync); } else { - XFS_STATS_INC(xfsstats.xs_trans_async); + XFS_STATS_INC(xs_trans_async); } return (error); diff -Nru a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c --- a/fs/xfs/xfs_trans_ail.c Mon Sep 22 00:30:25 2003 +++ b/fs/xfs/xfs_trans_ail.c Mon Sep 22 00:30:25 2003 @@ -40,7 +40,6 @@ #include "xfs_dir.h" #include "xfs_dmapi.h" #include "xfs_mount.h" -#include "xfs_log.h" #include "xfs_trans_priv.h" #include "xfs_error.h" @@ -119,7 +118,7 @@ return (xfs_lsn_t)0; } - XFS_STATS_INC(xfsstats.xs_push_ail); + XFS_STATS_INC(xs_push_ail); /* * While the item we are looking at is below the given threshold @@ -153,14 +152,14 @@ switch (lock_result) { case XFS_ITEM_SUCCESS: AIL_UNLOCK(mp, s); - XFS_STATS_INC(xfsstats.xs_push_ail_success); + XFS_STATS_INC(xs_push_ail_success); IOP_PUSH(lip); AIL_LOCK(mp,s); break; case XFS_ITEM_PUSHBUF: AIL_UNLOCK(mp, s); - XFS_STATS_INC(xfsstats.xs_push_ail_pushbuf); + XFS_STATS_INC(xs_push_ail_pushbuf); #ifdef XFSRACEDEBUG delay_for_intr(); delay(300); @@ -172,16 +171,16 @@ break; case XFS_ITEM_PINNED: - XFS_STATS_INC(xfsstats.xs_push_ail_pinned); + XFS_STATS_INC(xs_push_ail_pinned); flush_log = 1; break; case XFS_ITEM_LOCKED: - XFS_STATS_INC(xfsstats.xs_push_ail_locked); + XFS_STATS_INC(xs_push_ail_locked); break; case XFS_ITEM_FLUSHING: - XFS_STATS_INC(xfsstats.xs_push_ail_flushing); + XFS_STATS_INC(xs_push_ail_flushing); break; default: @@ -210,7 +209,7 @@ * move forward in the AIL. */ AIL_UNLOCK(mp, s); - XFS_STATS_INC(xfsstats.xs_push_ail_flush); + XFS_STATS_INC(xs_push_ail_flush); xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); AIL_LOCK(mp, s); } @@ -429,7 +428,7 @@ nlip = xfs_ail_min(&(mp->m_ail)); *gen = (int)mp->m_ail_gen; if (restarts != NULL) { - XFS_STATS_INC(xfsstats.xs_push_ail_restarts); + XFS_STATS_INC(xs_push_ail_restarts); (*restarts)++; } } diff -Nru a/fs/xfs/xfs_types.h b/fs/xfs/xfs_types.h --- a/fs/xfs/xfs_types.h Mon Sep 22 00:30:20 2003 +++ b/fs/xfs/xfs_types.h Mon Sep 22 00:30:20 2003 @@ -78,20 +78,21 @@ #endif /* __KERNEL__ */ /* - * Some types are conditional based on the selected configuration. - * Set XFS_BIG_FILESYSTEMS=1 or 0 depending on the desired configuration. - * XFS_BIG_FILESYSTEMS needs daddr_t to be 64 bits - * - * On linux right now we are limited to 2^32 512 byte blocks in a - * filesystem, Once this limit is changed, setting this to 1 - * will allow XFS to go larger. With BIG_FILESYSTEMS set to 0 - * a 4K block filesystem could still theoretically be 16Gbytes - * long, so on an ia32 box the 32 bit page index will then be - * the limiting factor. + * Some types are conditional depending on the target system. + * XFS_BIG_BLKNOS needs block layer disk addresses to be 64 bits. + * XFS_BIG_INUMS needs the VFS inode number to be 64 bits, as well + * as requiring XFS_BIG_BLKNOS to be set. */ - -#ifndef XFS_BIG_FILESYSTEMS -#define XFS_BIG_FILESYSTEMS 0 +#if defined(CONFIG_LBD) || (defined(HAVE_SECTOR_T) && (BITS_PER_LONG == 64)) +# define XFS_BIG_BLKNOS 1 +# if BITS_PER_LONG == 64 +# define XFS_BIG_INUMS 1 +# else +# define XFS_BIG_INUMS 0 +# endif +#else +# define XFS_BIG_BLKNOS 0 +# define XFS_BIG_INUMS 0 #endif typedef __uint32_t xfs_agblock_t; /* blockno in alloc. group */ @@ -126,7 +127,7 @@ /* * Memory based types are conditional. */ -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_BLKNOS typedef __uint64_t xfs_fsblock_t; /* blockno in filesystem (agno|agbno) */ typedef __uint64_t xfs_rfsblock_t; /* blockno in filesystem (raw) */ typedef __uint64_t xfs_rtblock_t; /* extent (block) in realtime area */ diff -Nru a/fs/xfs/xfs_vfsops.c b/fs/xfs/xfs_vfsops.c --- a/fs/xfs/xfs_vfsops.c Mon Sep 22 00:30:19 2003 +++ b/fs/xfs/xfs_vfsops.c Mon Sep 22 00:30:19 2003 @@ -49,7 +49,6 @@ #include "xfs_btree.h" #include "xfs_alloc.h" #include "xfs_ialloc.h" -#include "xfs_alloc.h" #include "xfs_attr_sf.h" #include "xfs_dir_sf.h" #include "xfs_dir2_sf.h" @@ -64,7 +63,6 @@ #include "xfs_buf_item.h" #include "xfs_extfree_item.h" #include "xfs_quota.h" -#include "xfs_dmapi.h" #include "xfs_dir2_trace.h" #include "xfs_acl.h" #include "xfs_attr.h" @@ -266,7 +264,7 @@ */ if (ap->flags & XFSMNT_WSYNC) mp->m_flags |= XFS_MOUNT_WSYNC; -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS if (ap->flags & XFSMNT_INO64) { mp->m_flags |= XFS_MOUNT_INO64; mp->m_inoadd = XFS_INO64_OFFSET; @@ -285,7 +283,7 @@ mp->m_flags |= XFS_MOUNT_OSYNCISOSYNC; if (ap->flags & XFSMNT_32BITINODES) - mp->m_flags |= XFS_MOUNT_32BITINODES; + mp->m_flags |= (XFS_MOUNT_32BITINODES | XFS_MOUNT_32BITINOOPT); if (ap->flags & XFSMNT_IOSIZE) { if (ap->iosizelog > XFS_MAX_IO_LOG || @@ -333,9 +331,10 @@ { /* Fail a mount where the logbuf is smaller then the log stripe */ if (XFS_SB_VERSION_HASLOGV2(&mp->m_sb)) { - if (((ap->logbufsize == -1) && - (mp->m_sb.sb_logsunit > XLOG_BIG_RECORD_BSIZE)) || - (ap->logbufsize < mp->m_sb.sb_logsunit)) { + if ((ap->logbufsize == -1) && + (mp->m_sb.sb_logsunit > XLOG_BIG_RECORD_BSIZE)) { + mp->m_logbsize = mp->m_sb.sb_logsunit; + } else if (ap->logbufsize < mp->m_sb.sb_logsunit) { cmn_err(CE_WARN, "XFS: logbuf size must be greater than or equal to log stripe size"); return XFS_ERROR(EINVAL); @@ -534,11 +533,8 @@ rvp = XFS_ITOV(rip); if (vfsp->vfs_flag & VFS_DMI) { - bhv_desc_t *rbdp; - - rbdp = vn_bhv_lookup_unlocked(VN_BHV_HEAD(rvp), &xfs_vnodeops); error = XFS_SEND_NAMESP(mp, DM_EVENT_PREUNMOUNT, - rbdp, DM_RIGHT_NULL, rbdp, DM_RIGHT_NULL, + rvp, DM_RIGHT_NULL, rvp, DM_RIGHT_NULL, NULL, NULL, 0, 0, (mp->m_dmevmask & (1<f_blocks = sbp->sb_dblocks - lsize; statp->f_bfree = statp->f_bavail = sbp->sb_fdblocks; fakeinos = statp->f_bfree << sbp->sb_inopblog; -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS fakeinos += mp->m_inoadd; #endif statp->f_files = MIN(sbp->sb_icount + fakeinos, (__uint64_t)XFS_MAXINUMBER); if (mp->m_maxicount) -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS if (!mp->m_inoadd) #endif statp->f_files = @@ -1589,6 +1585,7 @@ #define MNTOPT_NORECOVERY "norecovery" /* don't run XFS recovery */ #define MNTOPT_NOLOGFLUSH "nologflush" /* don't hard flush on log writes */ #define MNTOPT_OSYNCISOSYNC "osyncisosync" /* o_sync is REALLY o_sync */ +#define MNTOPT_64BITINODE "inode64" /* inodes can be allocated anywhere */ int @@ -1675,7 +1672,7 @@ args->flags |= XFSMNT_NORECOVERY; } else if (!strcmp(this_char, MNTOPT_INO64)) { args->flags |= XFSMNT_INO64; -#ifndef XFS_BIG_FILESYSTEMS +#if !XFS_BIG_INUMS printk("XFS: %s option not allowed on this system\n", MNTOPT_INO64); return EINVAL; @@ -1696,6 +1693,13 @@ return EINVAL; } dswidth = simple_strtoul(value, &eov, 10); + } else if (!strcmp(this_char, MNTOPT_64BITINODE)) { + args->flags &= ~XFSMNT_32BITINODES; +#if !XFS_BIG_INUMS + printk("XFS: %s option not allowed on this system\n", + MNTOPT_64BITINODE); + return EINVAL; +#endif } else if (!strcmp(this_char, MNTOPT_NOUUID)) { args->flags |= XFSMNT_NOUUID; } else if (!strcmp(this_char, MNTOPT_NOLOGFLUSH)) { diff -Nru a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c --- a/fs/xfs/xfs_vnodeops.c Mon Sep 22 00:30:25 2003 +++ b/fs/xfs/xfs_vnodeops.c Mon Sep 22 00:30:25 2003 @@ -66,7 +66,6 @@ #include "xfs_utils.h" #include "xfs_trans_space.h" #include "xfs_dir_leaf.h" -#include "xfs_dmapi.h" #include "xfs_mac.h" #include "xfs_log_priv.h" @@ -153,10 +152,9 @@ vap->va_nblocks = XFS_FSB_TO_BB(mp, ip->i_d.di_nblocks + ip->i_delayed_blks); vap->va_fsid = mp->m_dev; -#if XFS_BIG_FILESYSTEMS - vap->va_nodeid = ip->i_ino + mp->m_inoadd; -#else vap->va_nodeid = ip->i_ino; +#if XFS_BIG_INUMS + vap->va_nodeid += mp->m_inoadd; #endif vap->va_nlink = ip->i_d.di_nlink; @@ -266,6 +264,16 @@ XFS_XFLAG_REALTIME : 0) | ((ip->i_d.di_flags & XFS_DIFLAG_PREALLOC) ? XFS_XFLAG_PREALLOC : 0) | + ((ip->i_d.di_flags & XFS_DIFLAG_IMMUTABLE) ? + XFS_XFLAG_IMMUTABLE : 0) | + ((ip->i_d.di_flags & XFS_DIFLAG_APPEND) ? + XFS_XFLAG_APPEND : 0) | + ((ip->i_d.di_flags & XFS_DIFLAG_SYNC) ? + XFS_XFLAG_SYNC : 0) | + ((ip->i_d.di_flags & XFS_DIFLAG_NOATIME) ? + XFS_XFLAG_NOATIME : 0) | + ((ip->i_d.di_flags & XFS_DIFLAG_NODUMP) ? + XFS_XFLAG_NODUMP: 0) | (XFS_IFORK_Q(ip) ? XFS_XFLAG_HASATTR : 0); vap->va_extsize = ip->i_d.di_extsize << mp->m_sb.sb_blocklog; @@ -648,6 +656,20 @@ goto error_return; } } + + /* + * Can't modify an immutable/append-only file unless + * we have appropriate permission. + */ + if ((mask & XFS_AT_XFLAGS) && + (ip->i_d.di_flags & + (XFS_DIFLAG_IMMUTABLE|XFS_DIFLAG_APPEND) || + (vap->va_xflags & + (XFS_XFLAG_IMMUTABLE | XFS_XFLAG_APPEND))) && + !capable(CAP_LINUX_IMMUTABLE)) { + code = XFS_ERROR(EPERM); + goto error_return; + } } /* @@ -833,6 +855,16 @@ ip->i_d.di_flags |= XFS_DIFLAG_REALTIME; ip->i_iocore.io_flags |= XFS_IOCORE_RT; } + if (vap->va_xflags & XFS_XFLAG_IMMUTABLE) + ip->i_d.di_flags |= XFS_DIFLAG_IMMUTABLE; + if (vap->va_xflags & XFS_XFLAG_APPEND) + ip->i_d.di_flags |= XFS_DIFLAG_APPEND; + if (vap->va_xflags & XFS_XFLAG_SYNC) + ip->i_d.di_flags |= XFS_DIFLAG_SYNC; + if (vap->va_xflags & XFS_XFLAG_NOATIME) + ip->i_d.di_flags |= XFS_DIFLAG_NOATIME; + if (vap->va_xflags & XFS_XFLAG_NODUMP) + ip->i_d.di_flags |= XFS_DIFLAG_NODUMP; /* can't set PREALLOC this way, just ignore it */ } xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); @@ -858,7 +890,7 @@ if (timeflags && !(flags & ATTR_DMI)) xfs_ichgtime(ip, timeflags); - XFS_STATS_INC(xfsstats.xs_ig_attrchg); + XFS_STATS_INC(xs_ig_attrchg); /* * If this is a synchronous mount, make sure that the @@ -905,7 +937,7 @@ if (DM_EVENT_ENABLED(vp->v_vfsp, ip, DM_EVENT_ATTRIBUTE) && !(flags & ATTR_DMI)) { - (void) XFS_SEND_NAMESP(mp, DM_EVENT_ATTRIBUTE, bdp, DM_RIGHT_NULL, + (void) XFS_SEND_NAMESP(mp, DM_EVENT_ATTRIBUTE, vp, DM_RIGHT_NULL, NULL, DM_RIGHT_NULL, NULL, NULL, 0, 0, AT_DELAY_FLAG(flags)); } @@ -1635,7 +1667,7 @@ if ((((ip->i_d.di_mode & IFMT) == IFREG) && ((ip->i_d.di_size > 0) || (VN_CACHED(vp) > 0)) && (ip->i_df.if_flags & XFS_IFEXTENTS)) && - (!(ip->i_d.di_flags & XFS_DIFLAG_PREALLOC))) { + (!(ip->i_d.di_flags & (XFS_DIFLAG_PREALLOC|XFS_DIFLAG_APPEND)))) { if ((error = xfs_inactive_free_eofblocks(mp, ip))) return (error); /* Update linux inode block count after free above */ @@ -1710,7 +1742,7 @@ if ((((ip->i_d.di_mode & IFMT) == IFREG) && ((ip->i_d.di_size > 0) || (VN_CACHED(vp) > 0)) && (ip->i_df.if_flags & XFS_IFEXTENTS)) && - (!(ip->i_d.di_flags & XFS_DIFLAG_PREALLOC) || + (!(ip->i_d.di_flags & (XFS_DIFLAG_PREALLOC|XFS_DIFLAG_APPEND)) || (ip->i_delayed_blks != 0))) { if ((error = xfs_inactive_free_eofblocks(mp, ip))) return (VN_INACTIVE_CACHE); @@ -1948,7 +1980,7 @@ if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_CREATE)) { error = XFS_SEND_NAMESP(mp, DM_EVENT_CREATE, - dir_bdp, DM_RIGHT_NULL, NULL, + dir_vp, DM_RIGHT_NULL, NULL, DM_RIGHT_NULL, name, NULL, dm_di_mode, 0, 0); @@ -2114,8 +2146,8 @@ DM_EVENT_ENABLED(dir_vp->v_vfsp, XFS_BHVTOI(dir_bdp), DM_EVENT_POSTCREATE)) { (void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTCREATE, - dir_bdp, DM_RIGHT_NULL, - *vpp ? vn_bhv_lookup_unlocked(VN_BHV_HEAD(vp), &xfs_vnodeops):NULL, + dir_vp, DM_RIGHT_NULL, + *vpp ? vp:NULL, DM_RIGHT_NULL, name, NULL, dm_di_mode, error, 0); } @@ -2428,7 +2460,7 @@ namelen = VNAMELEN(dentry); if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_REMOVE)) { - error = XFS_SEND_NAMESP(mp, DM_EVENT_REMOVE, dir_bdp, + error = XFS_SEND_NAMESP(mp, DM_EVENT_REMOVE, dir_vp, DM_RIGHT_NULL, NULL, DM_RIGHT_NULL, name, NULL, 0, 0, 0); if (error) @@ -2594,7 +2626,7 @@ if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_POSTREMOVE)) { (void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTREMOVE, - dir_bdp, DM_RIGHT_NULL, + dir_vp, DM_RIGHT_NULL, NULL, DM_RIGHT_NULL, name, NULL, dm_di_mode, error, 0); } @@ -2678,8 +2710,8 @@ if (DM_EVENT_ENABLED(src_vp->v_vfsp, tdp, DM_EVENT_LINK)) { error = XFS_SEND_NAMESP(mp, DM_EVENT_LINK, - target_dir_bdp, DM_RIGHT_NULL, - src_bdp, DM_RIGHT_NULL, + target_dir_vp, DM_RIGHT_NULL, + src_vp, DM_RIGHT_NULL, target_name, NULL, 0, 0, 0); if (error) return error; @@ -2782,8 +2814,8 @@ if (DM_EVENT_ENABLED(src_vp->v_vfsp, sip, DM_EVENT_POSTLINK)) { (void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTLINK, - target_dir_bdp, DM_RIGHT_NULL, - src_bdp, DM_RIGHT_NULL, + target_dir_vp, DM_RIGHT_NULL, + src_vp, DM_RIGHT_NULL, target_name, NULL, 0, error, 0); } return error; @@ -2844,7 +2876,7 @@ if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_CREATE)) { error = XFS_SEND_NAMESP(mp, DM_EVENT_CREATE, - dir_bdp, DM_RIGHT_NULL, NULL, + dir_vp, DM_RIGHT_NULL, NULL, DM_RIGHT_NULL, dir_name, NULL, dm_di_mode, 0, 0); if (error) @@ -3003,8 +3035,8 @@ DM_EVENT_ENABLED(dir_vp->v_vfsp, XFS_BHVTOI(dir_bdp), DM_EVENT_POSTCREATE)) { (void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTCREATE, - dir_bdp, DM_RIGHT_NULL, - created ? XFS_ITOBHV(cdp):NULL, + dir_vp, DM_RIGHT_NULL, + created ? XFS_ITOV(cdp):NULL, DM_RIGHT_NULL, dir_name, NULL, dm_di_mode, error, 0); @@ -3067,7 +3099,7 @@ if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_REMOVE)) { error = XFS_SEND_NAMESP(mp, DM_EVENT_REMOVE, - dir_bdp, DM_RIGHT_NULL, + dir_vp, DM_RIGHT_NULL, NULL, DM_RIGHT_NULL, name, NULL, 0, 0, 0); if (error) @@ -3261,7 +3293,7 @@ std_return: if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_POSTREMOVE)) { (void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTREMOVE, - dir_bdp, DM_RIGHT_NULL, + dir_vp, DM_RIGHT_NULL, NULL, DM_RIGHT_NULL, name, NULL, dm_di_mode, error, 0); @@ -3405,7 +3437,7 @@ } if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_SYMLINK)) { - error = XFS_SEND_NAMESP(mp, DM_EVENT_SYMLINK, dir_bdp, + error = XFS_SEND_NAMESP(mp, DM_EVENT_SYMLINK, dir_vp, DM_RIGHT_NULL, NULL, DM_RIGHT_NULL, link_name, target_path, 0, 0, 0); if (error) @@ -3597,8 +3629,8 @@ if (DM_EVENT_ENABLED(dir_vp->v_vfsp, XFS_BHVTOI(dir_bdp), DM_EVENT_POSTSYMLINK)) { (void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTSYMLINK, - dir_bdp, DM_RIGHT_NULL, - error ? NULL : XFS_ITOBHV(ip), + dir_vp, DM_RIGHT_NULL, + error ? NULL : XFS_ITOV(ip), DM_RIGHT_NULL, link_name, target_path, 0, error, 0); } @@ -4236,8 +4268,8 @@ DM_EVENT_ENABLED(XFS_MTOVFS(mp), ip, DM_EVENT_NOSPACE)) { error = XFS_SEND_NAMESP(mp, DM_EVENT_NOSPACE, - XFS_ITOBHV(ip), DM_RIGHT_NULL, - XFS_ITOBHV(ip), DM_RIGHT_NULL, + XFS_ITOV(ip), DM_RIGHT_NULL, + XFS_ITOV(ip), DM_RIGHT_NULL, NULL, NULL, 0, 0, 0); /* Delay flag intentionally unused */ if (error == 0) goto retry; /* Maybe DMAPI app. has made space */ diff -Nru a/fs/xfs/xfsidbg.c b/fs/xfs/xfsidbg.c --- a/fs/xfs/xfsidbg.c Mon Sep 22 00:30:23 2003 +++ b/fs/xfs/xfsidbg.c Mon Sep 22 00:30:23 2003 @@ -78,7 +78,6 @@ #include "xfs_rw.h" #include "xfs_bit.h" #include "xfs_quota.h" -#include "xfs_log_recover.h" #include "quota/xfs_qm.h" MODULE_AUTHOR("Silicon Graphics, Inc."); @@ -3022,6 +3021,12 @@ static char *diflags[] = { "realtime", /* XFS_DIFLAG_REALTIME */ "prealloc", /* XFS_DIFLAG_PREALLOC */ + "newrtbm", /* XFS_DIFLAG_NEWRTBM */ + "immutable", /* XFS_DIFLAG_IMMUTABLE */ + "append", /* XFS_DIFLAG_APPEND */ + "sync", /* XFS_DIFLAG_SYNC */ + "noatime", /* XFS_DIFLAG_NOATIME */ + "nodump", /* XFS_DIFLAG_NODUMP */ NULL }; @@ -4687,7 +4692,7 @@ mp->m_attroffset, mp->m_maxicount, mp->m_inoalign_mask); kdb_printf("resblks %Ld resblks_avail %Ld\n", mp->m_resblks, mp->m_resblks_avail); -#if XFS_BIG_FILESYSTEMS +#if XFS_BIG_INUMS kdb_printf(" inoadd %llx\n", (unsigned long long) mp->m_inoadd); #else kdb_printf("\n"); diff -Nru a/include/asm-alpha/processor.h b/include/asm-alpha/processor.h --- a/include/asm-alpha/processor.h Mon Sep 22 00:30:25 2003 +++ b/include/asm-alpha/processor.h Mon Sep 22 00:30:25 2003 @@ -29,7 +29,6 @@ /* * Bus types */ -#define EISA_bus 1 #define MCA_bus 0 #define MCA_bus__is_a_macro /* for versions in ksyms.c */ diff -Nru a/include/asm-alpha/signal.h b/include/asm-alpha/signal.h --- a/include/asm-alpha/signal.h Mon Sep 22 00:30:22 2003 +++ b/include/asm-alpha/signal.h Mon Sep 22 00:30:22 2003 @@ -71,7 +71,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/asm-arm/arch-clps711x/system.h b/include/asm-arm/arch-clps711x/system.h --- a/include/asm-arm/arch-clps711x/system.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-arm/arch-clps711x/system.h Mon Sep 22 00:30:20 2003 @@ -26,7 +26,7 @@ { clps_writel(1, HALT); __asm__ __volatile__( - "mov r0, r0 + "mov r0, r0\n\ mov r0, r0"); } diff -Nru a/include/asm-arm/arch-integrator/lm.h b/include/asm-arm/arch-integrator/lm.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-arm/arch-integrator/lm.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,23 @@ + +struct lm_device { + struct device dev; + struct resource resource; + unsigned int irq; + unsigned int id; +}; + +struct lm_driver { + struct device_driver drv; + int (*probe)(struct lm_device *); + void (*remove)(struct lm_device *); + int (*suspend)(struct lm_device *, u32); + int (*resume)(struct lm_device *); +}; + +int lm_driver_register(struct lm_driver *drv); +void lm_driver_unregister(struct lm_driver *drv); + +int lm_device_register(struct lm_device *dev); + +#define lm_get_drvdata(lm) dev_get_drvdata(&(lm)->dev) +#define lm_set_drvdata(lm,d) dev_set_drvdata(&(lm)->dev, d) diff -Nru a/include/asm-arm/arch-iop3xx/iop321-irqs.h b/include/asm-arm/arch-iop3xx/iop321-irqs.h --- a/include/asm-arm/arch-iop3xx/iop321-irqs.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-arm/arch-iop3xx/iop321-irqs.h Mon Sep 22 00:30:21 2003 @@ -10,6 +10,7 @@ * */ +#include /* * IOP80321 chipset interrupts diff -Nru a/include/asm-arm/arch-iop3xx/irqs.h b/include/asm-arm/arch-iop3xx/irqs.h --- a/include/asm-arm/arch-iop3xx/irqs.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-arm/arch-iop3xx/irqs.h Mon Sep 22 00:30:20 2003 @@ -10,6 +10,8 @@ * */ +#include + /* * Whic iop3xx implementation is this? */ diff -Nru a/include/asm-arm/arch-pxa/hardware.h b/include/asm-arm/arch-pxa/hardware.h --- a/include/asm-arm/arch-pxa/hardware.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-arm/arch-pxa/hardware.h Mon Sep 22 00:30:18 2003 @@ -13,7 +13,6 @@ #ifndef __ASM_ARCH_HARDWARE_H #define __ASM_ARCH_HARDWARE_H -#include #include diff -Nru a/include/asm-arm/arch-pxa/ide.h b/include/asm-arm/arch-pxa/ide.h --- a/include/asm-arm/arch-pxa/ide.h Mon Sep 22 00:30:25 2003 +++ b/include/asm-arm/arch-pxa/ide.h Mon Sep 22 00:30:25 2003 @@ -14,7 +14,6 @@ * */ -#include #include #include #include diff -Nru a/include/asm-arm/arch-pxa/idp.h b/include/asm-arm/arch-pxa/idp.h --- a/include/asm-arm/arch-pxa/idp.h Mon Sep 22 00:30:17 2003 +++ b/include/asm-arm/arch-pxa/idp.h Mon Sep 22 00:30:17 2003 @@ -12,6 +12,7 @@ * */ +#include /* * Note: this file must be safe to include in assembly files diff -Nru a/include/asm-arm/arch-pxa/irqs.h b/include/asm-arm/arch-pxa/irqs.h --- a/include/asm-arm/arch-pxa/irqs.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-arm/arch-pxa/irqs.h Mon Sep 22 00:30:18 2003 @@ -10,6 +10,8 @@ * published by the Free Software Foundation. */ +#include + #define PXA_IRQ_SKIP 7 /* The first 7 IRQs are not yet used */ #define PXA_IRQ(x) ((x) - PXA_IRQ_SKIP) diff -Nru a/include/asm-arm/arch-pxa/keyboard.h b/include/asm-arm/arch-pxa/keyboard.h --- a/include/asm-arm/arch-pxa/keyboard.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-arm/arch-pxa/keyboard.h Mon Sep 22 00:30:24 2003 @@ -7,7 +7,6 @@ #ifndef _PXA_KEYBOARD_H #define _PXA_KEYBOARD_H -#include #include #include diff -Nru a/include/asm-arm/arch-pxa/pxa-regs.h b/include/asm-arm/arch-pxa/pxa-regs.h --- a/include/asm-arm/arch-pxa/pxa-regs.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-arm/arch-pxa/pxa-regs.h Mon Sep 22 00:30:23 2003 @@ -10,6 +10,7 @@ * published by the Free Software Foundation. */ +#include // FIXME hack so that SA-1111.h will work [cb] diff -Nru a/include/asm-arm/arch-sa1100/serial.h b/include/asm-arm/arch-sa1100/serial.h --- a/include/asm-arm/arch-sa1100/serial.h Mon Sep 22 00:30:19 2003 +++ b/include/asm-arm/arch-sa1100/serial.h Mon Sep 22 00:30:19 2003 @@ -7,6 +7,8 @@ * This is included by serial.c -- serial_sa1100.c makes no use of it. */ +#include + /* Standard COM flags */ #define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST) diff -Nru a/include/asm-arm/arch-sa1100/trizeps.h b/include/asm-arm/arch-sa1100/trizeps.h --- a/include/asm-arm/arch-sa1100/trizeps.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-arm/arch-sa1100/trizeps.h Mon Sep 22 00:30:24 2003 @@ -13,6 +13,8 @@ #ifndef _ASM_ARCH_TRIZEPS_H_ #define _ASM_ARCH_TRIZEPS_H_ +#include + #ifdef CONFIG_TRIZEPS_MFTB2 #include "mftb2.h" #endif diff -Nru a/include/asm-arm/bugs.h b/include/asm-arm/bugs.h --- a/include/asm-arm/bugs.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-arm/bugs.h Mon Sep 22 00:30:23 2003 @@ -10,6 +10,8 @@ #ifndef __ASM_BUGS_H #define __ASM_BUGS_H -#define check_bugs() do { } while (0) +extern void check_writebuffer_bugs(void); + +#define check_bugs() check_writebuffer_bugs() #endif diff -Nru a/include/asm-arm/cacheflush.h b/include/asm-arm/cacheflush.h --- a/include/asm-arm/cacheflush.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-arm/cacheflush.h Mon Sep 22 00:30:24 2003 @@ -10,6 +10,7 @@ #ifndef _ASMARM_CACHEFLUSH_H #define _ASMARM_CACHEFLUSH_H +#include #include #include diff -Nru a/include/asm-arm/glue.h b/include/asm-arm/glue.h --- a/include/asm-arm/glue.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-arm/glue.h Mon Sep 22 00:30:18 2003 @@ -58,7 +58,7 @@ # endif #endif -#if defined(CONFIG_CPU_ARM720T) +#ifdef CONFIG_CPU_ABRT_LV4T # ifdef CPU_ABORT_HANDLER # define MULTI_ABORT 1 # else @@ -66,7 +66,7 @@ # endif #endif -#if defined(CONFIG_CPU_SA110) || defined(CONFIG_CPU_SA1100) +#ifdef CONFIG_CPU_ABRT_EV4 # ifdef CPU_ABORT_HANDLER # define MULTI_ABORT 1 # else @@ -74,8 +74,7 @@ # endif #endif -#if defined(CONFIG_CPU_ARM920T) || defined(CONFIG_CPU_ARM922T) || \ - defined(CONFIG_CPU_ARM1020) +#ifdef CONFIG_CPU_ABRT_EV4T # ifdef CPU_ABORT_HANDLER # define MULTI_ABORT 1 # else @@ -83,19 +82,19 @@ # endif #endif -#if defined(CONFIG_CPU_ARM926T) +#ifdef CONFIG_CPU_ABRT_EV5TJ # ifdef CPU_ABORT_HANDLER # define MULTI_ABORT 1 # else -# define CPU_ABORT_HANDLER v5tej_early_abort +# define CPU_ABORT_HANDLER v5tj_early_abort # endif #endif -#if defined(CONFIG_CPU_XSCALE) +#ifdef CONFIG_CPU_ABRT_EV5T # ifdef CPU_ABORT_HANDLER # define MULTI_ABORT 1 # else -# define CPU_ABORT_HANDLER xscale_abort +# define CPU_ABORT_HANDLER v5t_early_abort # endif #endif diff -Nru a/include/asm-arm/hardware/sa1111.h b/include/asm-arm/hardware/sa1111.h --- a/include/asm-arm/hardware/sa1111.h Mon Sep 22 00:30:25 2003 +++ b/include/asm-arm/hardware/sa1111.h Mon Sep 22 00:30:25 2003 @@ -543,7 +543,7 @@ #define SA1111_DEV(_d) container_of((_d), struct sa1111_dev, dev) #define sa1111_get_drvdata(d) dev_get_drvdata(&(d)->dev) -#define sa1111_set_drvdata(d,p) dev_get_drvdata(&(d)->dev, p) +#define sa1111_set_drvdata(d,p) dev_set_drvdata(&(d)->dev, p) struct sa1111_driver { struct device_driver drv; @@ -557,11 +557,6 @@ #define SA1111_DRV(_d) container_of((_d), struct sa1111_driver, drv) #define SA1111_DRIVER_NAME(_sadev) ((_sadev)->dev.driver->name) - -/* - * Probe for a SA1111 chip. - */ -extern int sa1111_init(unsigned long phys, unsigned int irq); /* * These frob the SKPCR register. diff -Nru a/include/asm-arm/mmu.h b/include/asm-arm/mmu.h --- a/include/asm-arm/mmu.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-arm/mmu.h Mon Sep 22 00:30:18 2003 @@ -1,8 +1,6 @@ #ifndef __ARM_MMU_H #define __ARM_MMU_H -#include - typedef struct { #if __LINUX_ARM_ARCH__ >= 6 unsigned int id; diff -Nru a/include/asm-arm/page.h b/include/asm-arm/page.h --- a/include/asm-arm/page.h Mon Sep 22 00:30:19 2003 +++ b/include/asm-arm/page.h Mon Sep 22 00:30:19 2003 @@ -44,7 +44,7 @@ #undef _USER #undef MULTI_USER -#if defined(CONFIG_CPU_ARM610) || defined(CONFIG_CPU_ARM710) +#ifdef CONFIG_CPU_COPY_V3 # ifdef _USER # define MULTI_USER 1 # else @@ -52,7 +52,7 @@ # endif #endif -#if defined(CONFIG_CPU_ARM720T) +#ifdef CONFIG_CPU_COPY_V4WT # ifdef _USER # define MULTI_USER 1 # else @@ -60,9 +60,7 @@ # endif #endif -#if defined(CONFIG_CPU_ARM920T) || defined(CONFIG_CPU_ARM922T) || \ - defined(CONFIG_CPU_ARM926T) || defined(CONFIG_CPU_SA110) || \ - defined(CONFIG_CPU_ARM1020) +#ifdef CONFIG_CPU_COPY_V4WB # ifdef _USER # define MULTI_USER 1 # else @@ -70,7 +68,7 @@ # endif #endif -#if defined(CONFIG_CPU_SA1100) +#ifdef CONFIG_CPU_SA1100 # ifdef _USER # define MULTI_USER 1 # else @@ -78,7 +76,7 @@ # endif #endif -#if defined(CONFIG_CPU_XSCALE) +#ifdef CONFIG_CPU_XSCALE # ifdef _USER # define MULTI_USER 1 # else diff -Nru a/include/asm-arm/pgtable.h b/include/asm-arm/pgtable.h --- a/include/asm-arm/pgtable.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-arm/pgtable.h Mon Sep 22 00:30:20 2003 @@ -10,7 +10,6 @@ #ifndef _ASMARM_PGTABLE_H #define _ASMARM_PGTABLE_H -#include #include #include #include @@ -106,6 +105,7 @@ /* * - extended small page/tiny page */ +#define PTE_EXT_AP_MASK (3 << 4) #define PTE_EXT_AP_UNO_SRO (0 << 4) #define PTE_EXT_AP_UNO_SRW (1 << 4) #define PTE_EXT_AP_URO_SRW (2 << 4) @@ -115,12 +115,11 @@ /* * - small page */ +#define PTE_SMALL_AP_MASK (0xff << 4) #define PTE_SMALL_AP_UNO_SRO (0x00 << 4) #define PTE_SMALL_AP_UNO_SRW (0x55 << 4) #define PTE_SMALL_AP_URO_SRW (0xaa << 4) #define PTE_SMALL_AP_URW_SRW (0xff << 4) -#define PTE_AP_READ PTE_SMALL_AP_URO_SRW -#define PTE_AP_WRITE PTE_SMALL_AP_UNO_SRW /* * "Linux" PTE definitions. diff -Nru a/include/asm-arm/proc-fns.h b/include/asm-arm/proc-fns.h --- a/include/asm-arm/proc-fns.h Mon Sep 22 00:30:22 2003 +++ b/include/asm-arm/proc-fns.h Mon Sep 22 00:30:22 2003 @@ -26,7 +26,6 @@ */ #ifdef CONFIG_CPU_32 -# define CPU_INCLUDE_NAME "asm/cpu-multi32.h" # ifdef CONFIG_CPU_ARM610 # ifdef CPU_NAME # undef MULTI_CPU @@ -99,6 +98,30 @@ # define CPU_NAME cpu_arm1020 # endif # endif +# ifdef CONFIG_CPU_ARM1020E +# ifdef CPU_NAME +# undef MULTI_CPU +# define MULTI_CPU +# else +# define CPU_NAME cpu_arm1020e +# endif +# endif +# ifdef CONFIG_CPU_ARM1022 +# ifdef CPU_NAME +# undef MULTI_CPU +# define MULTI_CPU +# else +# define CPU_NAME cpu_arm1022 +# endif +# endif +# ifdef CONFIG_CPU_ARM1026 +# ifdef CPU_NAME +# undef MULTI_CPU +# define MULTI_CPU +# else +# define CPU_NAME cpu_arm1026 +# endif +# endif # ifdef CONFIG_CPU_XSCALE # ifdef CPU_NAME # undef MULTI_CPU @@ -110,11 +133,10 @@ #endif #ifndef MULTI_CPU -#undef CPU_INCLUDE_NAME -#define CPU_INCLUDE_NAME "asm/cpu-single.h" +#include "asm/cpu-single.h" +#else +#include "asm/cpu-multi32.h" #endif - -#include CPU_INCLUDE_NAME #endif /* __KERNEL__ */ #endif /* __ASM_PROCFNS_H */ diff -Nru a/include/asm-arm/processor.h b/include/asm-arm/processor.h --- a/include/asm-arm/processor.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-arm/processor.h Mon Sep 22 00:30:21 2003 @@ -19,7 +19,6 @@ #ifdef __KERNEL__ -#define EISA_bus 0 #define MCA_bus 0 #define MCA_bus__is_a_macro diff -Nru a/include/asm-arm/signal.h b/include/asm-arm/signal.h --- a/include/asm-arm/signal.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-arm/signal.h Mon Sep 22 00:30:21 2003 @@ -68,7 +68,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG #define SIGSWI 32 diff -Nru a/include/asm-arm/string.h b/include/asm-arm/string.h --- a/include/asm-arm/string.h Mon Sep 22 00:30:22 2003 +++ b/include/asm-arm/string.h Mon Sep 22 00:30:22 2003 @@ -25,6 +25,8 @@ #define __HAVE_ARCH_MEMSET extern void * memset(void *, int, __kernel_size_t); +#define __HAVE_ARCH_BCOPY + extern void __memzero(void *ptr, __kernel_size_t n); #define memset(p,v,n) \ diff -Nru a/include/asm-arm/system.h b/include/asm-arm/system.h --- a/include/asm-arm/system.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-arm/system.h Mon Sep 22 00:30:18 2003 @@ -36,7 +36,7 @@ #define CR_DT (1 << 16) #define CR_IT (1 << 18) #define CR_ST (1 << 19) -#define CR_FI (1 << 21) +#define CR_FI (1 << 21) /* Fast interrupt (lower latency mode) */ #define CR_U (1 << 22) /* Unaligned access operation */ #define CR_XP (1 << 23) /* Extended page tables */ #define CR_VE (1 << 24) /* Vectored interrupts */ diff -Nru a/include/asm-arm/tlbflush.h b/include/asm-arm/tlbflush.h --- a/include/asm-arm/tlbflush.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-arm/tlbflush.h Mon Sep 22 00:30:23 2003 @@ -52,7 +52,7 @@ #define v3_tlb_flags (TLB_V3_FULL | TLB_V3_PAGE) -#if defined(CONFIG_CPU_ARM610) || defined(CONFIG_CPU_ARM710) +#ifdef CONFIG_CPU_TLB_V3 # define v3_possible_flags v3_tlb_flags # define v3_always_flags v3_tlb_flags # ifdef _TLB @@ -67,7 +67,7 @@ #define v4_tlb_flags (TLB_V4_U_FULL | TLB_V4_U_PAGE) -#if defined(CONFIG_CPU_ARM720T) +#ifdef CONFIG_CPU_TLB_V4WT # define v4_possible_flags v4_tlb_flags # define v4_always_flags v4_tlb_flags # ifdef _TLB @@ -84,9 +84,7 @@ TLB_V4_I_FULL | TLB_V4_D_FULL | \ TLB_V4_I_PAGE | TLB_V4_D_PAGE) -#if defined(CONFIG_CPU_ARM920T) || defined(CONFIG_CPU_ARM922T) || \ - defined(CONFIG_CPU_ARM926T) || defined(CONFIG_CPU_ARM1020) || \ - defined(CONFIG_CPU_XSCALE) +#ifdef CONFIG_CPU_TLB_V4WBI # define v4wbi_possible_flags v4wbi_tlb_flags # define v4wbi_always_flags v4wbi_tlb_flags # ifdef _TLB @@ -103,7 +101,7 @@ TLB_V4_I_FULL | TLB_V4_D_FULL | \ TLB_V4_D_PAGE) -#if defined(CONFIG_CPU_SA110) || defined(CONFIG_CPU_SA1100) +#ifdef CONFIG_CPU_TLB_V4WB # define v4wb_possible_flags v4wb_tlb_flags # define v4wb_always_flags v4wb_tlb_flags # ifdef _TLB @@ -121,7 +119,7 @@ TLB_V6_I_PAGE | TLB_V6_D_PAGE | \ TLB_V6_I_ASID | TLB_V6_D_ASID) -#if defined(CONFIG_CPU_V6) +#ifdef CONFIG_CPU_TLB_V6 # define v6wbi_possible_flags v6wbi_tlb_flags # define v6wbi_always_flags v6wbi_tlb_flags # ifdef _TLB diff -Nru a/include/asm-arm26/processor.h b/include/asm-arm26/processor.h --- a/include/asm-arm26/processor.h Mon Sep 22 00:30:22 2003 +++ b/include/asm-arm26/processor.h Mon Sep 22 00:30:22 2003 @@ -20,7 +20,6 @@ #ifdef __KERNEL__ -#define EISA_bus 0 #define MCA_bus 0 #define MCA_bus__is_a_macro diff -Nru a/include/asm-arm26/signal.h b/include/asm-arm26/signal.h --- a/include/asm-arm26/signal.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-arm26/signal.h Mon Sep 22 00:30:18 2003 @@ -68,7 +68,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG #define SIGSWI 32 diff -Nru a/include/asm-cris/signal.h b/include/asm-cris/signal.h --- a/include/asm-cris/signal.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-cris/signal.h Mon Sep 22 00:30:24 2003 @@ -68,7 +68,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/asm-generic/cpumask_arith.h b/include/asm-generic/cpumask_arith.h --- a/include/asm-generic/cpumask_arith.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-generic/cpumask_arith.h Mon Sep 22 00:30:23 2003 @@ -27,7 +27,12 @@ #define cpus_shift_right(dst, src, n) do { dst = (src) >> (n); } while (0) #define cpus_shift_left(dst, src, n) do { dst = (src) << (n); } while (0) -#define any_online_cpu(map) ({ (map) ? first_cpu(map) : NR_CPUS; }) +#define any_online_cpu(map) \ +({ \ + cpumask_t __tmp__; \ + cpus_and(__tmp__, map, cpu_online_map); \ + __tmp__ ? first_cpu(__tmp__) : NR_CPUS; \ +}) #define CPU_MASK_ALL (~((cpumask_t)0) >> (8*sizeof(cpumask_t) - NR_CPUS)) #define CPU_MASK_NONE ((cpumask_t)0) diff -Nru a/include/asm-generic/cpumask_array.h b/include/asm-generic/cpumask_array.h --- a/include/asm-generic/cpumask_array.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-generic/cpumask_array.h Mon Sep 22 00:30:21 2003 @@ -36,7 +36,13 @@ cpu_set(cpu, __cpu_mask); \ __cpu_mask; \ }) -#define any_online_cpu(map) find_first_bit((map).mask, NR_CPUS) +#define any_online_cpu(map) \ +({ \ + cpumask_t __tmp__; \ + cpus_and(__tmp__, map, cpu_online_map); \ + find_first_bit(__tmp__.mask, NR_CPUS); \ +}) + /* * um, these need to be usable as static initializers diff -Nru a/include/asm-generic/cpumask_up.h b/include/asm-generic/cpumask_up.h --- a/include/asm-generic/cpumask_up.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-generic/cpumask_up.h Mon Sep 22 00:30:20 2003 @@ -6,7 +6,7 @@ #define cpu_set(cpu, map) do { (void)(cpu); cpus_coerce(map) = 1UL; } while (0) #define cpu_clear(cpu, map) do { (void)(cpu); cpus_coerce(map) = 0UL; } while (0) #define cpu_isset(cpu, map) ((void)(cpu), cpus_coerce(map) != 0UL) -#define cpu_test_and_set(cpu, map) ((void)(cpu), test_and_set_bit(0, (map).mask)) +#define cpu_test_and_set(cpu, map) ((void)(cpu), test_and_set_bit(0, &(map))) #define cpus_and(dst, src1, src2) \ do { \ diff -Nru a/include/asm-h8300/processor.h b/include/asm-h8300/processor.h --- a/include/asm-h8300/processor.h Mon Sep 22 00:30:19 2003 +++ b/include/asm-h8300/processor.h Mon Sep 22 00:30:19 2003 @@ -48,7 +48,6 @@ /* * Bus types */ -#define EISA_bus 0 #define MCA_bus 0 struct thread_struct { diff -Nru a/include/asm-h8300/signal.h b/include/asm-h8300/signal.h --- a/include/asm-h8300/signal.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-h8300/signal.h Mon Sep 22 00:30:20 2003 @@ -68,7 +68,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/asm-i386/cpufeature.h b/include/asm-i386/cpufeature.h --- a/include/asm-i386/cpufeature.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-i386/cpufeature.h Mon Sep 22 00:30:23 2003 @@ -71,6 +71,8 @@ /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */ #define X86_FEATURE_EST (4*32+ 7) /* Enhanced SpeedStep */ +#define X86_FEATURE_MWAIT (4*32+ 3) /* Monitor/Mwait support */ + /* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */ #define X86_FEATURE_XSTORE (5*32+ 2) /* on-CPU RNG present (xstore insn) */ diff -Nru a/include/asm-i386/genapic.h b/include/asm-i386/genapic.h --- a/include/asm-i386/genapic.h Mon Sep 22 00:30:22 2003 +++ b/include/asm-i386/genapic.h Mon Sep 22 00:30:22 2003 @@ -30,6 +30,7 @@ unsigned long (*check_apicid_used)(physid_mask_t bitmap, int apicid); unsigned long (*check_apicid_present)(int apicid); int no_balance_irq; + int no_ioapic_check; void (*init_apic_ldr)(void); physid_mask_t (*ioapic_phys_id_map)(physid_mask_t map); @@ -77,6 +78,7 @@ .int_dest_mode = INT_DEST_MODE, \ .apic_broadcast_id = APIC_BROADCAST_ID, \ .no_balance_irq = NO_BALANCE_IRQ, \ + .no_ioapic_check = NO_IOAPIC_CHECK, \ APICFUNC(apic_id_registered), \ APICFUNC(target_cpus), \ APICFUNC(check_apicid_used), \ diff -Nru a/include/asm-i386/ist.h b/include/asm-i386/ist.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/ist.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,32 @@ +#ifndef _ASM_IST_H +#define _ASM_IST_H + +/* + * Include file for the interface to IST BIOS + * Copyright 2002 Andy Grover + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + */ + + +#ifdef __KERNEL__ + +struct ist_info { + unsigned long signature; + unsigned long command; + unsigned long event; + unsigned long perf_level; +}; + +extern struct ist_info ist_info; + +#endif /* __KERNEL__ */ +#endif /* _ASM_IST_H */ diff -Nru a/include/asm-i386/mach-bigsmp/mach_apic.h b/include/asm-i386/mach-bigsmp/mach_apic.h --- a/include/asm-i386/mach-bigsmp/mach_apic.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-i386/mach-bigsmp/mach_apic.h Mon Sep 22 00:30:24 2003 @@ -14,6 +14,8 @@ #define NO_BALANCE_IRQ (1) #define esr_disable (1) +#define NO_IOAPIC_CHECK (0) + static inline int apic_id_registered(void) { return (1); diff -Nru a/include/asm-i386/mach-default/mach_apic.h b/include/asm-i386/mach-default/mach_apic.h --- a/include/asm-i386/mach-default/mach_apic.h Mon Sep 22 00:30:25 2003 +++ b/include/asm-i386/mach-default/mach_apic.h Mon Sep 22 00:30:25 2003 @@ -18,6 +18,8 @@ #define NO_BALANCE_IRQ (0) #define esr_disable (0) +#define NO_IOAPIC_CHECK (0) + #define INT_DELIVERY_MODE dest_LowestPrio #define INT_DEST_MODE 1 /* logical delivery broadcast to all procs */ diff -Nru a/include/asm-i386/mach-generic/mach_apic.h b/include/asm-i386/mach-generic/mach_apic.h --- a/include/asm-i386/mach-generic/mach_apic.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-i386/mach-generic/mach_apic.h Mon Sep 22 00:30:20 2003 @@ -5,6 +5,7 @@ #define esr_disable (genapic->esr_disable) #define NO_BALANCE_IRQ (genapic->no_balance_irq) +#define NO_IOAPIC_CHECK (genapic->no_ioapic_check) #define APIC_BROADCAST_ID (genapic->apic_broadcast_id) #define INT_DELIVERY_MODE (genapic->int_delivery_mode) #define INT_DEST_MODE (genapic->int_dest_mode) diff -Nru a/include/asm-i386/mach-numaq/mach_apic.h b/include/asm-i386/mach-numaq/mach_apic.h --- a/include/asm-i386/mach-numaq/mach_apic.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-i386/mach-numaq/mach_apic.h Mon Sep 22 00:30:21 2003 @@ -17,6 +17,8 @@ #define NO_BALANCE_IRQ (1) #define esr_disable (1) +#define NO_IOAPIC_CHECK (0) + #define INT_DELIVERY_MODE dest_LowestPrio #define INT_DEST_MODE 0 /* physical delivery on LOCAL quad */ diff -Nru a/include/asm-i386/mach-summit/mach_apic.h b/include/asm-i386/mach-summit/mach_apic.h --- a/include/asm-i386/mach-summit/mach_apic.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-i386/mach-summit/mach_apic.h Mon Sep 22 00:30:23 2003 @@ -7,14 +7,13 @@ #define esr_disable (1) #define NO_BALANCE_IRQ (0) -#define XAPIC_DEST_CPUS_MASK 0x0Fu -#define XAPIC_DEST_CLUSTER_MASK 0xF0u +#define NO_IOAPIC_CHECK (1) /* Don't check I/O APIC ID for xAPIC */ -static inline unsigned long xapic_phys_to_log_apicid(int phys_apic) -{ - return ( (1ul << ((phys_apic) & 0x3)) | - ((phys_apic) & XAPIC_DEST_CLUSTER_MASK) ); -} +/* In clustered mode, the high nibble of APIC ID is a cluster number. + * The low nibble is a 4-bit bitmap. */ +#define XAPIC_DEST_CPUS_SHIFT 4 +#define XAPIC_DEST_CPUS_MASK ((1u << XAPIC_DEST_CPUS_SHIFT) - 1) +#define XAPIC_DEST_CLUSTER_MASK (XAPIC_DEST_CPUS_MASK << XAPIC_DEST_CPUS_SHIFT) #define APIC_DFR_VALUE (APIC_DFR_CLUSTER) @@ -40,15 +39,29 @@ return 1; } -#define apicid_cluster(apicid) (apicid & 0xF0) +#define apicid_cluster(apicid) ((apicid) & XAPIC_DEST_CLUSTER_MASK) extern u8 bios_cpu_apicid[]; +extern u8 cpu_2_logical_apicid[]; static inline void init_apic_ldr(void) { unsigned long val, id; - - id = xapic_phys_to_log_apicid(hard_smp_processor_id()); + int i, count; + u8 lid; + u8 my_id = (u8)hard_smp_processor_id(); + u8 my_cluster = (u8)apicid_cluster(my_id); + + /* Create logical APIC IDs by counting CPUs already in cluster. */ + for (count = 0, i = NR_CPUS; --i >= 0; ) { + lid = cpu_2_logical_apicid[i]; + if (lid != BAD_APICID && apicid_cluster(lid) == my_cluster) + ++count; + } + /* We only have a 4 wide bitmap in cluster mode. If a deranged + * BIOS puts 5 CPUs in one APIC cluster, we're hosed. */ + BUG_ON(count >= XAPIC_DEST_CPUS_SHIFT); + id = my_cluster | (1UL << count); apic_write_around(APIC_DFR, APIC_DFR_VALUE); val = apic_read(APIC_LDR) & ~APIC_LDR_MASK; val |= SET_APIC_LOGICAL_ID(id); @@ -77,7 +90,6 @@ } /* Mapping from cpu number to logical apicid */ -extern u8 cpu_2_logical_apicid[]; static inline int cpu_to_logical_apicid(int cpu) { if (cpu >= NR_CPUS) diff -Nru a/include/asm-i386/mach-visws/mach_apic.h b/include/asm-i386/mach-visws/mach_apic.h --- a/include/asm-i386/mach-visws/mach_apic.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-i386/mach-visws/mach_apic.h Mon Sep 22 00:30:18 2003 @@ -8,6 +8,8 @@ #define no_balance_irq (0) #define esr_disable (0) +#define NO_IOAPIC_CHECK (0) + #define INT_DELIVERY_MODE dest_LowestPrio #define INT_DEST_MODE 1 /* logical delivery broadcast to all procs */ diff -Nru a/include/asm-i386/mmzone.h b/include/asm-i386/mmzone.h --- a/include/asm-i386/mmzone.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-i386/mmzone.h Mon Sep 22 00:30:21 2003 @@ -119,14 +119,32 @@ #ifdef CONFIG_X86_NUMAQ #include -#elif CONFIG_NUMA /* summit or generic arch */ +#elif CONFIG_ACPI_SRAT #include #elif CONFIG_X86_PC -#define get_memcfg_numa get_memcfg_numa_flat #define get_zholes_size(n) (0) #else #define pfn_to_nid(pfn) (0) #endif /* CONFIG_X86_NUMAQ */ + +extern int get_memcfg_numa_flat(void ); +/* + * This allows any one NUMA architecture to be compiled + * for, and still fall back to the flat function if it + * fails. + */ +static inline void get_memcfg_numa(void) +{ +#ifdef CONFIG_X86_NUMAQ + if (get_memcfg_numaq()) + return; +#elif CONFIG_ACPI_SRAT + if (get_memcfg_from_srat()) + return; +#endif + + get_memcfg_numa_flat(); +} #endif /* CONFIG_DISCONTIGMEM */ #endif /* _ASM_MMZONE_H_ */ diff -Nru a/include/asm-i386/numaq.h b/include/asm-i386/numaq.h --- a/include/asm-i386/numaq.h Mon Sep 22 00:30:22 2003 +++ b/include/asm-i386/numaq.h Mon Sep 22 00:30:22 2003 @@ -29,8 +29,7 @@ #ifdef CONFIG_X86_NUMAQ #define MAX_NUMNODES 16 -extern void get_memcfg_numaq(void); -#define get_memcfg_numa() get_memcfg_numaq() +extern int get_memcfg_numaq(void); /* * SYS_CFG_DATA_PRIV_ADDR, struct eachquadmem, and struct sys_cfg_data are the diff -Nru a/include/asm-i386/numnodes.h b/include/asm-i386/numnodes.h --- a/include/asm-i386/numnodes.h Mon Sep 22 00:30:19 2003 +++ b/include/asm-i386/numnodes.h Mon Sep 22 00:30:19 2003 @@ -5,7 +5,7 @@ #ifdef CONFIG_X86_NUMAQ #include -#elif CONFIG_NUMA +#elif CONFIG_ACPI_SRAT #include #else #define MAX_NUMNODES 1 diff -Nru a/include/asm-i386/processor.h b/include/asm-i386/processor.h --- a/include/asm-i386/processor.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-i386/processor.h Mon Sep 22 00:30:18 2003 @@ -260,11 +260,6 @@ * Bus types (default is ISA, but people can check others with these..) * pc98 indicates PC98 systems (CBUS) */ -#ifdef CONFIG_EISA -extern int EISA_bus; -#else -#define EISA_bus (0) -#endif extern int MCA_bus; #ifdef CONFIG_X86_PC9800 #define pc98 1 @@ -272,6 +267,22 @@ #define pc98 0 #endif +static inline void __monitor(const void *eax, unsigned long ecx, + unsigned long edx) +{ + /* "monitor %eax,%ecx,%edx;" */ + asm volatile( + ".byte 0x0f,0x01,0xc8;" + : :"a" (eax), "c" (ecx), "d"(edx)); +} + +static inline void __mwait(unsigned long eax, unsigned long ecx) +{ + /* "mwait %eax,%ecx;" */ + asm volatile( + ".byte 0x0f,0x01,0xc9;" + : :"a" (eax), "c" (ecx)); +} /* from system description table in BIOS. Mostly for MCA use, but others may find it useful. */ @@ -600,5 +611,7 @@ "r" (x)); } #define spin_lock_prefetch(x) prefetchw(x) + +extern void select_idle_routine(const struct cpuinfo_x86 *c); #endif /* __ASM_I386_PROCESSOR_H */ diff -Nru a/include/asm-i386/setup.h b/include/asm-i386/setup.h --- a/include/asm-i386/setup.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-i386/setup.h Mon Sep 22 00:30:23 2003 @@ -26,6 +26,7 @@ #define E820_MAP_NR (*(char*) (PARAM+E820NR)) #define E820_MAP ((struct e820entry *) (PARAM+E820MAP)) #define APM_BIOS_INFO (*(struct apm_bios_info *) (PARAM+0x40)) +#define IST_INFO (*(struct ist_info *) (PARAM+0x60)) #define DRIVE_INFO (*(struct drive_info_struct *) (PARAM+0x80)) #define SYS_DESC_TABLE (*(struct sys_desc_table_struct*)(PARAM+0xa0)) #define MOUNT_ROOT_RDONLY (*(unsigned short *) (PARAM+0x1F2)) diff -Nru a/include/asm-i386/signal.h b/include/asm-i386/signal.h --- a/include/asm-i386/signal.h Mon Sep 22 00:30:19 2003 +++ b/include/asm-i386/signal.h Mon Sep 22 00:30:19 2003 @@ -70,7 +70,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/asm-i386/srat.h b/include/asm-i386/srat.h --- a/include/asm-i386/srat.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-i386/srat.h Mon Sep 22 00:30:20 2003 @@ -27,9 +27,12 @@ #ifndef _ASM_SRAT_H_ #define _ASM_SRAT_H_ +#ifndef CONFIG_ACPI_SRAT +#error CONFIG_ACPI_SRAT not defined, and srat.h header has been included +#endif + #define MAX_NUMNODES 8 -extern void get_memcfg_from_srat(void); +extern int get_memcfg_from_srat(void); extern unsigned long *get_zholes_size(int); -#define get_memcfg_numa() get_memcfg_from_srat() #endif /* _ASM_SRAT_H_ */ diff -Nru a/include/asm-i386/timer.h b/include/asm-i386/timer.h --- a/include/asm-i386/timer.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-i386/timer.h Mon Sep 22 00:30:20 2003 @@ -38,8 +38,10 @@ extern struct timer_opts timer_cyclone; #endif +extern unsigned long calibrate_tsc(void); #ifdef CONFIG_HPET_TIMER extern struct timer_opts timer_hpet; +extern unsigned long calibrate_tsc_hpet(unsigned long *tsc_hpet_quotient_ptr); #endif #endif diff -Nru a/include/asm-i386/uaccess.h b/include/asm-i386/uaccess.h --- a/include/asm-i386/uaccess.h Mon Sep 22 00:30:19 2003 +++ b/include/asm-i386/uaccess.h Mon Sep 22 00:30:19 2003 @@ -80,7 +80,7 @@ * checks that the pointer is in the user space range - after calling * this function, memory access functions may still return -EFAULT. */ -#define access_ok(type,addr,size) (__range_ok(addr,size) == 0) +#define access_ok(type,addr,size) (likely(__range_ok(addr,size) == 0)) /** * verify_area: - Obsolete, use access_ok() diff -Nru a/include/asm-ia64/acpi.h b/include/asm-ia64/acpi.h --- a/include/asm-ia64/acpi.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-ia64/acpi.h Mon Sep 22 00:30:24 2003 @@ -30,6 +30,8 @@ #ifdef __KERNEL__ +#include + #define COMPILER_DEPENDENT_INT64 long #define COMPILER_DEPENDENT_UINT64 unsigned long @@ -54,47 +56,35 @@ #define ACPI_ENABLE_IRQS() local_irq_enable() #define ACPI_FLUSH_CPU_CACHE() -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \ - do { \ - __asm__ volatile ("1: ld4 r29=[%1]\n" \ - ";;\n" \ - "mov ar.ccv=r29\n" \ - "mov r2=r29\n" \ - "shr.u r30=r29,1\n" \ - "and r29=-4,r29\n" \ - ";;\n" \ - "add r29=2,r29\n" \ - "and r30=1,r30\n" \ - ";;\n" \ - "add r29=r29,r30\n" \ - ";;\n" \ - "cmpxchg4.acq r30=[%1],r29,ar.ccv\n" \ - ";;\n" \ - "cmp.eq p6,p7=r2,r30\n" \ - "(p7) br.dpnt.few 1b\n" \ - "cmp.gt p8,p9=3,r29\n" \ - ";;\n" \ - "(p8) mov %0=-1\n" \ - "(p9) mov %0=r0\n" \ - :"=r"(Acq):"r"(GLptr):"r2","r29","r30","memory"); \ - } while (0) - -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) \ - do { \ - __asm__ volatile ("1: ld4 r29=[%1]\n" \ - ";;\n" \ - "mov ar.ccv=r29\n" \ - "mov r2=r29\n" \ - "and r29=-4,r29\n" \ - ";;\n" \ - "cmpxchg4.acq r30=[%1],r29,ar.ccv\n" \ - ";;\n" \ - "cmp.eq p6,p7=r2,r30\n" \ - "(p7) br.dpnt.few 1b\n" \ - "and %0=1,r2\n" \ - ";;\n" \ - :"=r"(Acq):"r"(GLptr):"r2","r29","r30","memory"); \ - } while (0) +static inline int +ia64_acpi_acquire_global_lock (unsigned int *lock) +{ + unsigned int old, new, val; + do { + old = *lock; + new = (((old & ~0x3) + 2) + ((old >> 1) & 0x1)); + val = ia64_cmpxchg4_acq(lock, new, old); + } while (unlikely (val != old)); + return (new < 3) ? -1 : 0; +} + +static inline int +ia64_acpi_release_global_lock (unsigned int *lock) +{ + unsigned int old, new, val; + do { + old = *lock; + new = old & ~0x3; + val = ia64_cmpxchg4_acq(lock, new, old); + } while (unlikely (val != old)); + return old & 0x1; +} + +#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \ + ((Acq) = ia64_acpi_acquire_global_lock((unsigned int *) GLptr)) + +#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) \ + ((Acq) = ia64_acpi_release_global_lock((unsigned int *) GLptr)) const char *acpi_get_sysname (void); int acpi_request_vector (u32 int_type); diff -Nru a/include/asm-ia64/hw_irq.h b/include/asm-ia64/hw_irq.h --- a/include/asm-ia64/hw_irq.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-ia64/hw_irq.h Mon Sep 22 00:30:21 2003 @@ -9,6 +9,7 @@ #include #include #include +#include #include #include diff -Nru a/include/asm-ia64/intel_intrin.h b/include/asm-ia64/intel_intrin.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-ia64/intel_intrin.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,254 @@ +#ifndef _ASM_IA64_INTEL_INTRIN_H +#define _ASM_IA64_INTEL_INTRIN_H +/* + * Intel Compiler Intrinsics + * + * Copyright (C) 2002,2003 Jun Nakajima + * Copyright (C) 2002,2003 Suresh Siddha + * + */ +#include + +void __lfetch(int lfhint, void *y); +void __lfetch_excl(int lfhint, void *y); +void __lfetch_fault(int lfhint, void *y); +void __lfetch_fault_excl(int lfhint, void *y); + +/* In the following, whichFloatReg should be an integer from 0-127 */ +void __ldfs(const int whichFloatReg, void *src); +void __ldfd(const int whichFloatReg, void *src); +void __ldfe(const int whichFloatReg, void *src); +void __ldf8(const int whichFloatReg, void *src); +void __ldf_fill(const int whichFloatReg, void *src); +void __stfs(void *dst, const int whichFloatReg); +void __stfd(void *dst, const int whichFloatReg); +void __stfe(void *dst, const int whichFloatReg); +void __stf8(void *dst, const int whichFloatReg); +void __stf_spill(void *dst, const int whichFloatReg); + +void __st1_rel(void *dst, const __s8 value); +void __st2_rel(void *dst, const __s16 value); +void __st4_rel(void *dst, const __s32 value); +void __st8_rel(void *dst, const __s64 value); +__u8 __ld1_acq(void *src); +__u16 __ld2_acq(void *src); +__u32 __ld4_acq(void *src); +__u64 __ld8_acq(void *src); + +__u64 __fetchadd4_acq(__u32 *addend, const int increment); +__u64 __fetchadd4_rel(__u32 *addend, const int increment); +__u64 __fetchadd8_acq(__u64 *addend, const int increment); +__u64 __fetchadd8_rel(__u64 *addend, const int increment); + +__u64 __getf_exp(double d); + +/* OS Related Itanium(R) Intrinsics */ + +/* The names to use for whichReg and whichIndReg below come from + the include file asm/ia64regs.h */ + +__u64 __getIndReg(const int whichIndReg, __s64 index); +__u64 __getReg(const int whichReg); + +void __setIndReg(const int whichIndReg, __s64 index, __u64 value); +void __setReg(const int whichReg, __u64 value); + +void __mf(void); +void __mfa(void); +void __synci(void); +void __itcd(__s64 pa); +void __itci(__s64 pa); +void __itrd(__s64 whichTransReg, __s64 pa); +void __itri(__s64 whichTransReg, __s64 pa); +void __ptce(__s64 va); +void __ptcl(__s64 va, __s64 pagesz); +void __ptcg(__s64 va, __s64 pagesz); +void __ptcga(__s64 va, __s64 pagesz); +void __ptri(__s64 va, __s64 pagesz); +void __ptrd(__s64 va, __s64 pagesz); +void __invala (void); +void __invala_gr(const int whichGeneralReg /* 0-127 */ ); +void __invala_fr(const int whichFloatReg /* 0-127 */ ); +void __nop(const int); +void __fc(__u64 *addr); +void __sum(int mask); +void __rum(int mask); +void __ssm(int mask); +void __rsm(int mask); +__u64 __thash(__s64); +__u64 __ttag(__s64); +__s64 __tpa(__s64); + +/* Intrinsics for implementing get/put_user macros */ +void __st_user(const char *tableName, __u64 addr, char size, char relocType, __u64 val); +void __ld_user(const char *tableName, __u64 addr, char size, char relocType); + +/* This intrinsic does not generate code, it creates a barrier across which + * the compiler will not schedule data access instructions. + */ +void __memory_barrier(void); + +void __isrlz(void); +void __dsrlz(void); + +__u64 _m64_mux1(__u64 a, const int n); +__u64 __thash(__u64); + +/* Lock and Atomic Operation Related Intrinsics */ +__u64 _InterlockedExchange8(volatile __u8 *trgt, __u8 value); +__u64 _InterlockedExchange16(volatile __u16 *trgt, __u16 value); +__s64 _InterlockedExchange(volatile __u32 *trgt, __u32 value); +__s64 _InterlockedExchange64(volatile __u64 *trgt, __u64 value); + +__u64 _InterlockedCompareExchange8_rel(volatile __u8 *dest, __u64 xchg, __u64 comp); +__u64 _InterlockedCompareExchange8_acq(volatile __u8 *dest, __u64 xchg, __u64 comp); +__u64 _InterlockedCompareExchange16_rel(volatile __u16 *dest, __u64 xchg, __u64 comp); +__u64 _InterlockedCompareExchange16_acq(volatile __u16 *dest, __u64 xchg, __u64 comp); +__u64 _InterlockedCompareExchange_rel(volatile __u32 *dest, __u64 xchg, __u64 comp); +__u64 _InterlockedCompareExchange_acq(volatile __u32 *dest, __u64 xchg, __u64 comp); +__u64 _InterlockedCompareExchange64_rel(volatile __u64 *dest, __u64 xchg, __u64 comp); +__u64 _InterlockedCompareExchange64_acq(volatile __u64 *dest, __u64 xchg, __u64 comp); + +__s64 _m64_dep_mi(const int v, __s64 s, const int p, const int len); +__s64 _m64_shrp(__s64 a, __s64 b, const int count); +__s64 _m64_popcnt(__s64 a); + +#define ia64_barrier() __memory_barrier() + +#define ia64_stop() /* Nothing: As of now stop bit is generated for each + * intrinsic + */ + +#define ia64_getreg __getReg +#define ia64_setreg __setReg + +#define ia64_hint(x) + +#define ia64_mux1_brcst 0 +#define ia64_mux1_mix 8 +#define ia64_mux1_shuf 9 +#define ia64_mux1_alt 10 +#define ia64_mux1_rev 11 + +#define ia64_mux1 _m64_mux1 +#define ia64_popcnt _m64_popcnt +#define ia64_getf_exp __getf_exp +#define ia64_shrp _m64_shrp + +#define ia64_tpa __tpa +#define ia64_invala __invala +#define ia64_invala_gr __invala_gr +#define ia64_invala_fr __invala_fr +#define ia64_nop __nop +#define ia64_sum __sum +#define ia64_ssm __ssm +#define ia64_rum __rum +#define ia64_rsm __rsm +#define ia64_fc __fc + +#define ia64_ldfs __ldfs +#define ia64_ldfd __ldfd +#define ia64_ldfe __ldfe +#define ia64_ldf8 __ldf8 +#define ia64_ldf_fill __ldf_fill + +#define ia64_stfs __stfs +#define ia64_stfd __stfd +#define ia64_stfe __stfe +#define ia64_stf8 __stf8 +#define ia64_stf_spill __stf_spill + +#define ia64_mf __mf +#define ia64_mfa __mfa + +#define ia64_fetchadd4_acq __fetchadd4_acq +#define ia64_fetchadd4_rel __fetchadd4_rel +#define ia64_fetchadd8_acq __fetchadd8_acq +#define ia64_fetchadd8_rel __fetchadd8_rel + +#define ia64_xchg1 _InterlockedExchange8 +#define ia64_xchg2 _InterlockedExchange16 +#define ia64_xchg4 _InterlockedExchange +#define ia64_xchg8 _InterlockedExchange64 + +#define ia64_cmpxchg1_rel _InterlockedCompareExchange8_rel +#define ia64_cmpxchg1_acq _InterlockedCompareExchange8_acq +#define ia64_cmpxchg2_rel _InterlockedCompareExchange16_rel +#define ia64_cmpxchg2_acq _InterlockedCompareExchange16_acq +#define ia64_cmpxchg4_rel _InterlockedCompareExchange_rel +#define ia64_cmpxchg4_acq _InterlockedCompareExchange_acq +#define ia64_cmpxchg8_rel _InterlockedCompareExchange64_rel +#define ia64_cmpxchg8_acq _InterlockedCompareExchange64_acq + +#define __ia64_set_dbr(index, val) \ + __setIndReg(_IA64_REG_INDR_DBR, index, val) +#define ia64_set_ibr(index, val) \ + __setIndReg(_IA64_REG_INDR_IBR, index, val) +#define ia64_set_pkr(index, val) \ + __setIndReg(_IA64_REG_INDR_PKR, index, val) +#define ia64_set_pmc(index, val) \ + __setIndReg(_IA64_REG_INDR_PMC, index, val) +#define ia64_set_pmd(index, val) \ + __setIndReg(_IA64_REG_INDR_PMD, index, val) +#define ia64_set_rr(index, val) \ + __setIndReg(_IA64_REG_INDR_RR, index, val) + +#define ia64_get_cpuid(index) __getIndReg(_IA64_REG_INDR_CPUID, index) +#define __ia64_get_dbr(index) __getIndReg(_IA64_REG_INDR_DBR, index) +#define ia64_get_ibr(index) __getIndReg(_IA64_REG_INDR_IBR, index) +#define ia64_get_pkr(index) __getIndReg(_IA64_REG_INDR_PKR, index) +#define ia64_get_pmc(index) __getIndReg(_IA64_REG_INDR_PMC, index) +#define ia64_get_pmd(index) __getIndReg(_IA64_REG_INDR_PMD, index) +#define ia64_get_rr(index) __getIndReg(_IA64_REG_INDR_RR, index) + +#define ia64_srlz_d __dsrlz +#define ia64_srlz_i __isrlz + +#define ia64_st1_rel __st1_rel +#define ia64_st2_rel __st2_rel +#define ia64_st4_rel __st4_rel +#define ia64_st8_rel __st8_rel + +#define ia64_ld1_acq __ld1_acq +#define ia64_ld2_acq __ld2_acq +#define ia64_ld4_acq __ld4_acq +#define ia64_ld8_acq __ld8_acq + +#define ia64_sync_i __synci +#define ia64_thash __thash +#define ia64_ttag __ttag +#define ia64_itcd __itcd +#define ia64_itci __itci +#define ia64_itrd __itrd +#define ia64_itri __itri +#define ia64_ptce __ptce +#define ia64_ptcl __ptcl +#define ia64_ptcg __ptcg +#define ia64_ptcga __ptcga +#define ia64_ptri __ptri +#define ia64_ptrd __ptrd +#define ia64_dep_mi _m64_dep_mi + +/* Values for lfhint in __lfetch and __lfetch_fault */ + +#define ia64_lfhint_none 0 +#define ia64_lfhint_nt1 1 +#define ia64_lfhint_nt2 2 +#define ia64_lfhint_nta 3 + +#define ia64_lfetch __lfetch +#define ia64_lfetch_excl __lfetch_excl +#define ia64_lfetch_fault __lfetch_fault +#define ia64_lfetch_fault_excl __lfetch_fault_excl + +#define ia64_intrin_local_irq_restore(x) \ +do { \ + if ((x) != 0) { \ + ia64_ssm(IA64_PSR_I); \ + ia64_srlz_d(); \ + } else { \ + ia64_rsm(IA64_PSR_I); \ + } \ +} while (0) + +#endif /* _ASM_IA64_INTEL_INTRIN_H */ diff -Nru a/include/asm-ia64/numa.h b/include/asm-ia64/numa.h --- a/include/asm-ia64/numa.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-ia64/numa.h Mon Sep 22 00:30:20 2003 @@ -23,7 +23,7 @@ #include extern volatile char cpu_to_node_map[NR_CPUS] __cacheline_aligned; -extern volatile unsigned long node_to_cpu_mask[NR_NODES] __cacheline_aligned; +extern volatile cpumask_t node_to_cpu_mask[NR_NODES] __cacheline_aligned; /* Stuff below this line could be architecture independent */ diff -Nru a/include/asm-ia64/param.h b/include/asm-ia64/param.h --- a/include/asm-ia64/param.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-ia64/param.h Mon Sep 22 00:30:21 2003 @@ -4,22 +4,10 @@ /* * Fundamental kernel parameters. * - * Copyright (C) 1998, 1999, 2002 Hewlett-Packard Co + * Copyright (C) 1998, 1999, 2002-2003 Hewlett-Packard Co * David Mosberger-Tang */ -#include - -#ifdef CONFIG_IA64_HP_SIM -/* - * Yeah, simulating stuff is slow, so let us catch some breath between - * timer interrupts... - */ -# define HZ 32 -#else -# define HZ 1024 -#endif - #define EXEC_PAGESIZE 65536 #ifndef NGROUPS @@ -33,8 +21,24 @@ #define MAXHOSTNAMELEN 64 /* max length of hostname */ #ifdef __KERNEL__ +# include /* mustn't include outside of #ifdef __KERNEL__ */ +# ifdef CONFIG_IA64_HP_SIM + /* + * Yeah, simulating stuff is slow, so let us catch some breath between + * timer interrupts... + */ +# define HZ 32 +# else +# define HZ 1024 +# endif # define USER_HZ HZ # define CLOCKS_PER_SEC HZ /* frequency at which times() counts */ +#else + /* + * Technically, this is wrong, but some old apps still refer to it. The proper way to + * get the HZ value is via sysconf(_SC_CLK_TCK). + */ +# define HZ 1024 #endif #endif /* _ASM_IA64_PARAM_H */ diff -Nru a/include/asm-ia64/processor.h b/include/asm-ia64/processor.h --- a/include/asm-ia64/processor.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-ia64/processor.h Mon Sep 22 00:30:20 2003 @@ -56,7 +56,6 @@ /* * Bus types */ -#define EISA_bus 0 #define MCA_bus 0 #define MCA_bus__is_a_macro /* for versions in ksyms.c */ diff -Nru a/include/asm-ia64/ptrace.h b/include/asm-ia64/ptrace.h --- a/include/asm-ia64/ptrace.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-ia64/ptrace.h Mon Sep 22 00:30:23 2003 @@ -223,6 +223,12 @@ }; #ifdef __KERNEL__ +/* + * We use the ia64_psr(regs)->ri to determine which of the three + * instructions in bundle (16 bytes) took the sample. Generate + * the canonical representation by adding to instruction pointer. + */ +# define instruction_pointer(regs) ((regs)->cr_iip + ia64_psr(regs)->ri) /* given a pointer to a task_struct, return the user's pt_regs */ # define ia64_task_regs(t) (((struct pt_regs *) ((char *) (t) + IA64_STK_OFFSET)) - 1) # define ia64_psr(regs) ((struct ia64_psr *) &(regs)->cr_ipsr) diff -Nru a/include/asm-ia64/signal.h b/include/asm-ia64/signal.h --- a/include/asm-ia64/signal.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-ia64/signal.h Mon Sep 22 00:30:18 2003 @@ -2,7 +2,7 @@ #define _ASM_IA64_SIGNAL_H /* - * Copyright (C) 1998-2001 Hewlett-Packard Co + * Copyright (C) 1998-2001, 2003 Hewlett-Packard Co * David Mosberger-Tang * * Unfortunately, this file is being included by bits/signal.h in @@ -50,7 +50,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: @@ -96,7 +96,16 @@ * ar.rsc.loadrs is 14 bits, we can assume that they'll never take up * more than 16KB of space. */ -#define MINSIGSTKSZ 131027 /* min. stack size for sigaltstack() */ +#if 1 + /* + * This is a stupid typo: the value was _meant_ to be 131072 (0x20000), but I typed it + * in wrong. ;-( To preserve backwards compatibility, we leave the kernel at the + * incorrect value and fix libc only. + */ +# define MINSIGSTKSZ 131027 /* min. stack size for sigaltstack() */ +#else +# define MINSIGSTKSZ 131072 /* min. stack size for sigaltstack() */ +#endif #define SIGSTKSZ 262144 /* default stack size for sigaltstack() */ #ifdef __KERNEL__ diff -Nru a/include/asm-ia64/sn/hcl.h b/include/asm-ia64/sn/hcl.h --- a/include/asm-ia64/sn/hcl.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-ia64/sn/hcl.h Mon Sep 22 00:30:20 2003 @@ -10,6 +10,7 @@ #define _ASM_IA64_SN_HCL_H #include +#include extern vertex_hdl_t hwgraph_root; extern vertex_hdl_t linux_busnum; diff -Nru a/include/asm-ia64/sn/ioc3.h b/include/asm-ia64/sn/ioc3.h --- a/include/asm-ia64/sn/ioc3.h Mon Sep 22 00:30:20 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,705 +0,0 @@ -/* - * Copyright (c) 2002-2003 Silicon Graphics, Inc. All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * Further, this software is distributed without any warranty that it is - * free of the rightful claim of any third person regarding infringement - * or the like. Any license provided herein, whether implied or - * otherwise, applies only to this software file. Patent licenses, if - * any, provided herein do not apply to combinations of this program with - * other software, or any other product whatsoever. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. - * - * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, - * Mountain View, CA 94043, or: - * - * http://www.sgi.com - * - * For further information regarding this notice, see: - * - * http://oss.sgi.com/projects/GenInfo/NoticeExplan - */ - -/* $Id: ioc3.h,v 1.2 2000/11/16 19:49:17 pfg Exp $ - * - * Copyright (C) 1999 Ralf Baechle - * This file is part of the Linux driver for the SGI IOC3. - */ -#ifndef _ASM_IA64_SN_IOC3_H -#define _ASM_IA64_SN_IOC3_H - -#include - -/* SUPERIO uart register map */ -typedef volatile struct ioc3_uartregs { - union { - volatile u8 rbr; /* read only, DLAB == 0 */ - volatile u8 thr; /* write only, DLAB == 0 */ - volatile u8 dll; /* DLAB == 1 */ - } u1; - union { - volatile u8 ier; /* DLAB == 0 */ - volatile u8 dlm; /* DLAB == 1 */ - } u2; - union { - volatile u8 iir; /* read only */ - volatile u8 fcr; /* write only */ - } u3; - volatile u8 iu_lcr; - volatile u8 iu_mcr; - volatile u8 iu_lsr; - volatile u8 iu_msr; - volatile u8 iu_scr; -} ioc3_uregs_t; - -#define iu_rbr u1.rbr -#define iu_thr u1.thr -#define iu_dll u1.dll -#define iu_ier u2.ier -#define iu_dlm u2.dlm -#define iu_iir u3.iir -#define iu_fcr u3.fcr - -struct ioc3_sioregs { - volatile u8 fill[0x141]; /* starts at 0x141 */ - - volatile u8 uartc; - volatile u8 kbdcg; - - volatile u8 fill0[0x150 - 0x142 - 1]; - - volatile u8 pp_data; - volatile u8 pp_dsr; - volatile u8 pp_dcr; - - volatile u8 fill1[0x158 - 0x152 - 1]; - - volatile u8 pp_fifa; - volatile u8 pp_cfgb; - volatile u8 pp_ecr; - - volatile u8 fill2[0x168 - 0x15a - 1]; - - volatile u8 rtcad; - volatile u8 rtcdat; - - volatile u8 fill3[0x170 - 0x169 - 1]; - - struct ioc3_uartregs uartb; /* 0x20170 */ - struct ioc3_uartregs uarta; /* 0x20178 */ -}; - -/* Register layout of IOC3 in configuration space. */ -struct ioc3 { - volatile u32 pad0[7]; /* 0x00000 */ - volatile u32 sio_ir; /* 0x0001c */ - volatile u32 sio_ies; /* 0x00020 */ - volatile u32 sio_iec; /* 0x00024 */ - volatile u32 sio_cr; /* 0x00028 */ - volatile u32 int_out; /* 0x0002c */ - volatile u32 mcr; /* 0x00030 */ - - /* General Purpose I/O registers */ - volatile u32 gpcr_s; /* 0x00034 */ - volatile u32 gpcr_c; /* 0x00038 */ - volatile u32 gpdr; /* 0x0003c */ - volatile u32 gppr_0; /* 0x00040 */ - volatile u32 gppr_1; /* 0x00044 */ - volatile u32 gppr_2; /* 0x00048 */ - volatile u32 gppr_3; /* 0x0004c */ - volatile u32 gppr_4; /* 0x00050 */ - volatile u32 gppr_5; /* 0x00054 */ - volatile u32 gppr_6; /* 0x00058 */ - volatile u32 gppr_7; /* 0x0005c */ - volatile u32 gppr_8; /* 0x00060 */ - volatile u32 gppr_9; /* 0x00064 */ - volatile u32 gppr_10; /* 0x00068 */ - volatile u32 gppr_11; /* 0x0006c */ - volatile u32 gppr_12; /* 0x00070 */ - volatile u32 gppr_13; /* 0x00074 */ - volatile u32 gppr_14; /* 0x00078 */ - volatile u32 gppr_15; /* 0x0007c */ - - /* Parallel Port Registers */ - volatile u32 ppbr_h_a; /* 0x00080 */ - volatile u32 ppbr_l_a; /* 0x00084 */ - volatile u32 ppcr_a; /* 0x00088 */ - volatile u32 ppcr; /* 0x0008c */ - volatile u32 ppbr_h_b; /* 0x00090 */ - volatile u32 ppbr_l_b; /* 0x00094 */ - volatile u32 ppcr_b; /* 0x00098 */ - - /* Keyboard and Mouse Registers */ - volatile u32 km_csr; /* 0x0009c */ - volatile u32 k_rd; /* 0x000a0 */ - volatile u32 m_rd; /* 0x000a4 */ - volatile u32 k_wd; /* 0x000a8 */ - volatile u32 m_wd; /* 0x000ac */ - - /* Serial Port Registers */ - volatile u32 sbbr_h; /* 0x000b0 */ - volatile u32 sbbr_l; /* 0x000b4 */ - volatile u32 sscr_a; /* 0x000b8 */ - volatile u32 stpir_a; /* 0x000bc */ - volatile u32 stcir_a; /* 0x000c0 */ - volatile u32 srpir_a; /* 0x000c4 */ - volatile u32 srcir_a; /* 0x000c8 */ - volatile u32 srtr_a; /* 0x000cc */ - volatile u32 shadow_a; /* 0x000d0 */ - volatile u32 sscr_b; /* 0x000d4 */ - volatile u32 stpir_b; /* 0x000d8 */ - volatile u32 stcir_b; /* 0x000dc */ - volatile u32 srpir_b; /* 0x000e0 */ - volatile u32 srcir_b; /* 0x000e4 */ - volatile u32 srtr_b; /* 0x000e8 */ - volatile u32 shadow_b; /* 0x000ec */ - - /* Ethernet Registers */ - volatile u32 emcr; /* 0x000f0 */ - volatile u32 eisr; /* 0x000f4 */ - volatile u32 eier; /* 0x000f8 */ - volatile u32 ercsr; /* 0x000fc */ - volatile u32 erbr_h; /* 0x00100 */ - volatile u32 erbr_l; /* 0x00104 */ - volatile u32 erbar; /* 0x00108 */ - volatile u32 ercir; /* 0x0010c */ - volatile u32 erpir; /* 0x00110 */ - volatile u32 ertr; /* 0x00114 */ - volatile u32 etcsr; /* 0x00118 */ - volatile u32 ersr; /* 0x0011c */ - volatile u32 etcdc; /* 0x00120 */ - volatile u32 ebir; /* 0x00124 */ - volatile u32 etbr_h; /* 0x00128 */ - volatile u32 etbr_l; /* 0x0012c */ - volatile u32 etcir; /* 0x00130 */ - volatile u32 etpir; /* 0x00134 */ - volatile u32 emar_h; /* 0x00138 */ - volatile u32 emar_l; /* 0x0013c */ - volatile u32 ehar_h; /* 0x00140 */ - volatile u32 ehar_l; /* 0x00144 */ - volatile u32 micr; /* 0x00148 */ - volatile u32 midr_r; /* 0x0014c */ - volatile u32 midr_w; /* 0x00150 */ - volatile u32 pad1[(0x20000 - 0x00154) / 4]; - - /* SuperIO Registers XXX */ - struct ioc3_sioregs sregs; /* 0x20000 */ - volatile u32 pad2[(0x40000 - 0x20180) / 4]; - - /* SSRAM Diagnostic Access */ - volatile u32 ssram[(0x80000 - 0x40000) / 4]; - - /* Bytebus device offsets - 0x80000 - Access to the generic devices selected with DEV0 - 0x9FFFF bytebus DEV_SEL_0 - 0xA0000 - Access to the generic devices selected with DEV1 - 0xBFFFF bytebus DEV_SEL_1 - 0xC0000 - Access to the generic devices selected with DEV2 - 0xDFFFF bytebus DEV_SEL_2 - 0xE0000 - Access to the generic devices selected with DEV3 - 0xFFFFF bytebus DEV_SEL_3 */ -}; - -/* - * Ethernet RX Buffer - */ -struct ioc3_erxbuf { - u32 w0; /* first word (valid,bcnt,cksum) */ - u32 err; /* second word various errors */ - /* next comes n bytes of padding */ - /* then the received ethernet frame itself */ -}; - -#define ERXBUF_IPCKSUM_MASK 0x0000ffff -#define ERXBUF_BYTECNT_MASK 0x07ff0000 -#define ERXBUF_BYTECNT_SHIFT 16 -#define ERXBUF_V 0x80000000 - -#define ERXBUF_CRCERR 0x00000001 /* aka RSV15 */ -#define ERXBUF_FRAMERR 0x00000002 /* aka RSV14 */ -#define ERXBUF_CODERR 0x00000004 /* aka RSV13 */ -#define ERXBUF_INVPREAMB 0x00000008 /* aka RSV18 */ -#define ERXBUF_LOLEN 0x00007000 /* aka RSV2_0 */ -#define ERXBUF_HILEN 0x03ff0000 /* aka RSV12_3 */ -#define ERXBUF_MULTICAST 0x04000000 /* aka RSV16 */ -#define ERXBUF_BROADCAST 0x08000000 /* aka RSV17 */ -#define ERXBUF_LONGEVENT 0x10000000 /* aka RSV19 */ -#define ERXBUF_BADPKT 0x20000000 /* aka RSV20 */ -#define ERXBUF_GOODPKT 0x40000000 /* aka RSV21 */ -#define ERXBUF_CARRIER 0x80000000 /* aka RSV22 */ - -/* - * Ethernet TX Descriptor - */ -#define ETXD_DATALEN 104 -struct ioc3_etxd { - u32 cmd; /* command field */ - u32 bufcnt; /* buffer counts field */ - u64 p1; /* buffer pointer 1 */ - u64 p2; /* buffer pointer 2 */ - u8 data[ETXD_DATALEN]; /* opt. tx data */ -}; - -#define ETXD_BYTECNT_MASK 0x000007ff /* total byte count */ -#define ETXD_INTWHENDONE 0x00001000 /* intr when done */ -#define ETXD_D0V 0x00010000 /* data 0 valid */ -#define ETXD_B1V 0x00020000 /* buf 1 valid */ -#define ETXD_B2V 0x00040000 /* buf 2 valid */ -#define ETXD_DOCHECKSUM 0x00080000 /* insert ip cksum */ -#define ETXD_CHKOFF_MASK 0x07f00000 /* cksum byte offset */ -#define ETXD_CHKOFF_SHIFT 20 - -#define ETXD_D0CNT_MASK 0x0000007f -#define ETXD_B1CNT_MASK 0x0007ff00 -#define ETXD_B1CNT_SHIFT 8 -#define ETXD_B2CNT_MASK 0x7ff00000 -#define ETXD_B2CNT_SHIFT 20 - -/* - * Bytebus device space - */ -#define IOC3_BYTEBUS_DEV0 0x80000L -#define IOC3_BYTEBUS_DEV1 0xa0000L -#define IOC3_BYTEBUS_DEV2 0xc0000L -#define IOC3_BYTEBUS_DEV3 0xe0000L - -/* ------------------------------------------------------------------------- */ - -/* Superio Registers (PIO Access) */ -#define IOC3_SIO_BASE 0x20000 -#define IOC3_SIO_UARTC (IOC3_SIO_BASE+0x141) /* UART Config */ -#define IOC3_SIO_KBDCG (IOC3_SIO_BASE+0x142) /* KBD Config */ -#define IOC3_SIO_PP_BASE (IOC3_SIO_BASE+PP_BASE) /* Parallel Port */ -#define IOC3_SIO_RTC_BASE (IOC3_SIO_BASE+0x168) /* Real Time Clock */ -#define IOC3_SIO_UB_BASE (IOC3_SIO_BASE+UARTB_BASE) /* UART B */ -#define IOC3_SIO_UA_BASE (IOC3_SIO_BASE+UARTA_BASE) /* UART A */ - -/* SSRAM Diagnostic Access */ -#define IOC3_SSRAM IOC3_RAM_OFF /* base of SSRAM diagnostic access */ -#define IOC3_SSRAM_LEN 0x40000 /* 256kb (address space size, may not be fully populated) */ -#define IOC3_SSRAM_DM 0x0000ffff /* data mask */ -#define IOC3_SSRAM_PM 0x00010000 /* parity mask */ - -/* bitmasks for PCI_SCR */ -#define PCI_SCR_PAR_RESP_EN 0x00000040 /* enb PCI parity checking */ -#define PCI_SCR_SERR_EN 0x00000100 /* enable the SERR# driver */ -#define PCI_SCR_DROP_MODE_EN 0x00008000 /* drop pios on parity err */ -#define PCI_SCR_RX_SERR (0x1 << 16) -#define PCI_SCR_DROP_MODE (0x1 << 17) -#define PCI_SCR_SIG_PAR_ERR (0x1 << 24) -#define PCI_SCR_SIG_TAR_ABRT (0x1 << 27) -#define PCI_SCR_RX_TAR_ABRT (0x1 << 28) -#define PCI_SCR_SIG_MST_ABRT (0x1 << 29) -#define PCI_SCR_SIG_SERR (0x1 << 30) -#define PCI_SCR_PAR_ERR (0x1 << 31) - -/* bitmasks for IOC3_KM_CSR */ -#define KM_CSR_K_WRT_PEND 0x00000001 /* kbd port xmitting or resetting */ -#define KM_CSR_M_WRT_PEND 0x00000002 /* mouse port xmitting or resetting */ -#define KM_CSR_K_LCB 0x00000004 /* Line Cntrl Bit for last KBD write */ -#define KM_CSR_M_LCB 0x00000008 /* same for mouse */ -#define KM_CSR_K_DATA 0x00000010 /* state of kbd data line */ -#define KM_CSR_K_CLK 0x00000020 /* state of kbd clock line */ -#define KM_CSR_K_PULL_DATA 0x00000040 /* pull kbd data line low */ -#define KM_CSR_K_PULL_CLK 0x00000080 /* pull kbd clock line low */ -#define KM_CSR_M_DATA 0x00000100 /* state of ms data line */ -#define KM_CSR_M_CLK 0x00000200 /* state of ms clock line */ -#define KM_CSR_M_PULL_DATA 0x00000400 /* pull ms data line low */ -#define KM_CSR_M_PULL_CLK 0x00000800 /* pull ms clock line low */ -#define KM_CSR_EMM_MODE 0x00001000 /* emulation mode */ -#define KM_CSR_SIM_MODE 0x00002000 /* clock X8 */ -#define KM_CSR_K_SM_IDLE 0x00004000 /* Keyboard is idle */ -#define KM_CSR_M_SM_IDLE 0x00008000 /* Mouse is idle */ -#define KM_CSR_K_TO 0x00010000 /* Keyboard trying to send/receive */ -#define KM_CSR_M_TO 0x00020000 /* Mouse trying to send/receive */ -#define KM_CSR_K_TO_EN 0x00040000 /* KM_CSR_K_TO + KM_CSR_K_TO_EN = cause - SIO_IR to assert */ -#define KM_CSR_M_TO_EN 0x00080000 /* KM_CSR_M_TO + KM_CSR_M_TO_EN = cause - SIO_IR to assert */ -#define KM_CSR_K_CLAMP_ONE 0x00100000 /* Pull K_CLK low after rec. one char */ -#define KM_CSR_M_CLAMP_ONE 0x00200000 /* Pull M_CLK low after rec. one char */ -#define KM_CSR_K_CLAMP_THREE 0x00400000 /* Pull K_CLK low after rec. three chars */ -#define KM_CSR_M_CLAMP_THREE 0x00800000 /* Pull M_CLK low after rec. three char */ - -/* bitmasks for IOC3_K_RD and IOC3_M_RD */ -#define KM_RD_DATA_2 0x000000ff /* 3rd char recvd since last read */ -#define KM_RD_DATA_2_SHIFT 0 -#define KM_RD_DATA_1 0x0000ff00 /* 2nd char recvd since last read */ -#define KM_RD_DATA_1_SHIFT 8 -#define KM_RD_DATA_0 0x00ff0000 /* 1st char recvd since last read */ -#define KM_RD_DATA_0_SHIFT 16 -#define KM_RD_FRAME_ERR_2 0x01000000 /* framing or parity error in byte 2 */ -#define KM_RD_FRAME_ERR_1 0x02000000 /* same for byte 1 */ -#define KM_RD_FRAME_ERR_0 0x04000000 /* same for byte 0 */ - -#define KM_RD_KBD_MSE 0x08000000 /* 0 if from kbd, 1 if from mouse */ -#define KM_RD_OFLO 0x10000000 /* 4th char recvd before this read */ -#define KM_RD_VALID_2 0x20000000 /* DATA_2 valid */ -#define KM_RD_VALID_1 0x40000000 /* DATA_1 valid */ -#define KM_RD_VALID_0 0x80000000 /* DATA_0 valid */ -#define KM_RD_VALID_ALL (KM_RD_VALID_0|KM_RD_VALID_1|KM_RD_VALID_2) - -/* bitmasks for IOC3_K_WD & IOC3_M_WD */ -#define KM_WD_WRT_DATA 0x000000ff /* write to keyboard/mouse port */ -#define KM_WD_WRT_DATA_SHIFT 0 - -/* bitmasks for serial RX status byte */ -#define RXSB_OVERRUN 0x01 /* char(s) lost */ -#define RXSB_PAR_ERR 0x02 /* parity error */ -#define RXSB_FRAME_ERR 0x04 /* framing error */ -#define RXSB_BREAK 0x08 /* break character */ -#define RXSB_CTS 0x10 /* state of CTS */ -#define RXSB_DCD 0x20 /* state of DCD */ -#define RXSB_MODEM_VALID 0x40 /* DCD, CTS and OVERRUN are valid */ -#define RXSB_DATA_VALID 0x80 /* data byte, FRAME_ERR PAR_ERR & BREAK valid */ - -/* bitmasks for serial TX control byte */ -#define TXCB_INT_WHEN_DONE 0x20 /* interrupt after this byte is sent */ -#define TXCB_INVALID 0x00 /* byte is invalid */ -#define TXCB_VALID 0x40 /* byte is valid */ -#define TXCB_MCR 0x80 /* data<7:0> to modem control register */ -#define TXCB_DELAY 0xc0 /* delay data<7:0> mSec */ - -/* bitmasks for IOC3_SBBR_L */ -#define SBBR_L_SIZE 0x00000001 /* 0 == 1KB rings, 1 == 4KB rings */ -#define SBBR_L_BASE 0xfffff000 /* lower serial ring base addr */ - -/* bitmasks for IOC3_SSCR_ */ -#define SSCR_RX_THRESHOLD 0x000001ff /* hiwater mark */ -#define SSCR_TX_TIMER_BUSY 0x00010000 /* TX timer in progress */ -#define SSCR_HFC_EN 0x00020000 /* hardware flow control enabled */ -#define SSCR_RX_RING_DCD 0x00040000 /* post RX record on delta-DCD */ -#define SSCR_RX_RING_CTS 0x00080000 /* post RX record on delta-CTS */ -#define SSCR_HIGH_SPD 0x00100000 /* 4X speed */ -#define SSCR_DIAG 0x00200000 /* bypass clock divider for sim */ -#define SSCR_RX_DRAIN 0x08000000 /* drain RX buffer to memory */ -#define SSCR_DMA_EN 0x10000000 /* enable ring buffer DMA */ -#define SSCR_DMA_PAUSE 0x20000000 /* pause DMA */ -#define SSCR_PAUSE_STATE 0x40000000 /* sets when PAUSE takes effect */ -#define SSCR_RESET 0x80000000 /* reset DMA channels */ - -/* all producer/comsumer pointers are the same bitfield */ -#define PROD_CONS_PTR_4K 0x00000ff8 /* for 4K buffers */ -#define PROD_CONS_PTR_1K 0x000003f8 /* for 1K buffers */ -#define PROD_CONS_PTR_OFF 3 - -/* bitmasks for IOC3_SRCIR_ */ -#define SRCIR_ARM 0x80000000 /* arm RX timer */ - -/* bitmasks for IOC3_SRPIR_ */ -#define SRPIR_BYTE_CNT 0x07000000 /* bytes in packer */ -#define SRPIR_BYTE_CNT_SHIFT 24 - -/* bitmasks for IOC3_STCIR_ */ -#define STCIR_BYTE_CNT 0x0f000000 /* bytes in unpacker */ -#define STCIR_BYTE_CNT_SHIFT 24 - -/* bitmasks for IOC3_SHADOW_ */ -#define SHADOW_DR 0x00000001 /* data ready */ -#define SHADOW_OE 0x00000002 /* overrun error */ -#define SHADOW_PE 0x00000004 /* parity error */ -#define SHADOW_FE 0x00000008 /* framing error */ -#define SHADOW_BI 0x00000010 /* break interrupt */ -#define SHADOW_THRE 0x00000020 /* transmit holding register empty */ -#define SHADOW_TEMT 0x00000040 /* transmit shift register empty */ -#define SHADOW_RFCE 0x00000080 /* char in RX fifo has an error */ -#define SHADOW_DCTS 0x00010000 /* delta clear to send */ -#define SHADOW_DDCD 0x00080000 /* delta data carrier detect */ -#define SHADOW_CTS 0x00100000 /* clear to send */ -#define SHADOW_DCD 0x00800000 /* data carrier detect */ -#define SHADOW_DTR 0x01000000 /* data terminal ready */ -#define SHADOW_RTS 0x02000000 /* request to send */ -#define SHADOW_OUT1 0x04000000 /* 16550 OUT1 bit */ -#define SHADOW_OUT2 0x08000000 /* 16550 OUT2 bit */ -#define SHADOW_LOOP 0x10000000 /* loopback enabled */ - -/* bitmasks for IOC3_SRTR_ */ -#define SRTR_CNT 0x00000fff /* reload value for RX timer */ -#define SRTR_CNT_VAL 0x0fff0000 /* current value of RX timer */ -#define SRTR_CNT_VAL_SHIFT 16 -#define SRTR_HZ 16000 /* SRTR clock frequency */ - -/* bitmasks for IOC3_SIO_IR, IOC3_SIO_IEC and IOC3_SIO_IES */ -#define SIO_IR_SA_TX_MT 0x00000001 /* Serial port A TX empty */ -#define SIO_IR_SA_RX_FULL 0x00000002 /* port A RX buf full */ -#define SIO_IR_SA_RX_HIGH 0x00000004 /* port A RX hiwat */ -#define SIO_IR_SA_RX_TIMER 0x00000008 /* port A RX timeout */ -#define SIO_IR_SA_DELTA_DCD 0x00000010 /* port A delta DCD */ -#define SIO_IR_SA_DELTA_CTS 0x00000020 /* port A delta CTS */ -#define SIO_IR_SA_INT 0x00000040 /* port A pass-thru intr */ -#define SIO_IR_SA_TX_EXPLICIT 0x00000080 /* port A explicit TX thru */ -#define SIO_IR_SA_MEMERR 0x00000100 /* port A PCI error */ -#define SIO_IR_SB_TX_MT 0x00000200 /* */ -#define SIO_IR_SB_RX_FULL 0x00000400 /* */ -#define SIO_IR_SB_RX_HIGH 0x00000800 /* */ -#define SIO_IR_SB_RX_TIMER 0x00001000 /* */ -#define SIO_IR_SB_DELTA_DCD 0x00002000 /* */ -#define SIO_IR_SB_DELTA_CTS 0x00004000 /* */ -#define SIO_IR_SB_INT 0x00008000 /* */ -#define SIO_IR_SB_TX_EXPLICIT 0x00010000 /* */ -#define SIO_IR_SB_MEMERR 0x00020000 /* */ -#define SIO_IR_PP_INT 0x00040000 /* P port pass-thru intr */ -#define SIO_IR_PP_INTA 0x00080000 /* PP context A thru */ -#define SIO_IR_PP_INTB 0x00100000 /* PP context B thru */ -#define SIO_IR_PP_MEMERR 0x00200000 /* PP PCI error */ -#define SIO_IR_KBD_INT 0x00400000 /* kbd/mouse intr */ -#define SIO_IR_RT_INT 0x08000000 /* RT output pulse */ -#define SIO_IR_GEN_INT1 0x10000000 /* RT input pulse */ -#define SIO_IR_GEN_INT_SHIFT 28 - -/* per device interrupt masks */ -#define SIO_IR_SA (SIO_IR_SA_TX_MT | SIO_IR_SA_RX_FULL | \ - SIO_IR_SA_RX_HIGH | SIO_IR_SA_RX_TIMER | \ - SIO_IR_SA_DELTA_DCD | SIO_IR_SA_DELTA_CTS | \ - SIO_IR_SA_INT | SIO_IR_SA_TX_EXPLICIT | \ - SIO_IR_SA_MEMERR) -#define SIO_IR_SB (SIO_IR_SB_TX_MT | SIO_IR_SB_RX_FULL | \ - SIO_IR_SB_RX_HIGH | SIO_IR_SB_RX_TIMER | \ - SIO_IR_SB_DELTA_DCD | SIO_IR_SB_DELTA_CTS | \ - SIO_IR_SB_INT | SIO_IR_SB_TX_EXPLICIT | \ - SIO_IR_SB_MEMERR) -#define SIO_IR_PP (SIO_IR_PP_INT | SIO_IR_PP_INTA | \ - SIO_IR_PP_INTB | SIO_IR_PP_MEMERR) -#define SIO_IR_RT (SIO_IR_RT_INT | SIO_IR_GEN_INT1) - -/* macro to load pending interrupts */ -#define IOC3_PENDING_INTRS(mem) (PCI_INW(&((mem)->sio_ir)) & \ - PCI_INW(&((mem)->sio_ies_ro))) - -/* bitmasks for SIO_CR */ -#define SIO_CR_SIO_RESET 0x00000001 /* reset the SIO */ -#define SIO_CR_SER_A_BASE 0x000000fe /* DMA poll addr port A */ -#define SIO_CR_SER_A_BASE_SHIFT 1 -#define SIO_CR_SER_B_BASE 0x00007f00 /* DMA poll addr port B */ -#define SIO_CR_SER_B_BASE_SHIFT 8 -#define SIO_SR_CMD_PULSE 0x00078000 /* byte bus strobe length */ -#define SIO_CR_CMD_PULSE_SHIFT 15 -#define SIO_CR_ARB_DIAG 0x00380000 /* cur !enet PCI requet (ro) */ -#define SIO_CR_ARB_DIAG_TXA 0x00000000 -#define SIO_CR_ARB_DIAG_RXA 0x00080000 -#define SIO_CR_ARB_DIAG_TXB 0x00100000 -#define SIO_CR_ARB_DIAG_RXB 0x00180000 -#define SIO_CR_ARB_DIAG_PP 0x00200000 -#define SIO_CR_ARB_DIAG_IDLE 0x00400000 /* 0 -> active request (ro) */ - -/* bitmasks for INT_OUT */ -#define INT_OUT_COUNT 0x0000ffff /* pulse interval timer */ -#define INT_OUT_MODE 0x00070000 /* mode mask */ -#define INT_OUT_MODE_0 0x00000000 /* set output to 0 */ -#define INT_OUT_MODE_1 0x00040000 /* set output to 1 */ -#define INT_OUT_MODE_1PULSE 0x00050000 /* send 1 pulse */ -#define INT_OUT_MODE_PULSES 0x00060000 /* send 1 pulse every interval */ -#define INT_OUT_MODE_SQW 0x00070000 /* toggle output every interval */ -#define INT_OUT_DIAG 0x40000000 /* diag mode */ -#define INT_OUT_INT_OUT 0x80000000 /* current state of INT_OUT */ - -/* time constants for INT_OUT */ -#define INT_OUT_NS_PER_TICK (30 * 260) /* 30 ns PCI clock, divisor=260 */ -#define INT_OUT_TICKS_PER_PULSE 3 /* outgoing pulse lasts 3 ticks */ -#define INT_OUT_US_TO_COUNT(x) /* convert uS to a count value */ \ - (((x) * 10 + INT_OUT_NS_PER_TICK / 200) * \ - 100 / INT_OUT_NS_PER_TICK - 1) -#define INT_OUT_COUNT_TO_US(x) /* convert count value to uS */ \ - (((x) + 1) * INT_OUT_NS_PER_TICK / 1000) -#define INT_OUT_MIN_TICKS 3 /* min period is width of pulse in "ticks" */ -#define INT_OUT_MAX_TICKS INT_OUT_COUNT /* largest possible count */ - -/* bitmasks for GPCR */ -#define GPCR_DIR 0x000000ff /* tristate pin input or output */ -#define GPCR_DIR_PIN(x) (1<<(x)) /* access one of the DIR bits */ -#define GPCR_EDGE 0x000f0000 /* extint edge or level sensitive */ -#define GPCR_EDGE_PIN(x) (1<<((x)+15)) /* access one of the EDGE bits */ - -/* values for GPCR */ -#define GPCR_INT_OUT_EN 0x00100000 /* enable INT_OUT to pin 0 */ -#define GPCR_MLAN_EN 0x00200000 /* enable MCR to pin 8 */ -#define GPCR_DIR_SERA_XCVR 0x00000080 /* Port A Transceiver select enable */ -#define GPCR_DIR_SERB_XCVR 0x00000040 /* Port B Transceiver select enable */ -#define GPCR_DIR_PHY_RST 0x00000020 /* ethernet PHY reset enable */ - -/* defs for some of the generic I/O pins */ -#define GPCR_PHY_RESET 0x20 /* pin is output to PHY reset */ -#define GPCR_UARTB_MODESEL 0x40 /* pin is output to port B mode sel */ -#define GPCR_UARTA_MODESEL 0x80 /* pin is output to port A mode sel */ - -#define GPPR_PHY_RESET_PIN 5 /* GIO pin controlling phy reset */ -#define GPPR_UARTB_MODESEL_PIN 6 /* GIO pin controlling uart b mode select */ -#define GPPR_UARTA_MODESEL_PIN 7 /* GIO pin controlling uart a mode select */ - -#define EMCR_DUPLEX 0x00000001 -#define EMCR_PROMISC 0x00000002 -#define EMCR_PADEN 0x00000004 -#define EMCR_RXOFF_MASK 0x000001f8 -#define EMCR_RXOFF_SHIFT 3 -#define EMCR_RAMPAR 0x00000200 -#define EMCR_BADPAR 0x00000800 -#define EMCR_BUFSIZ 0x00001000 -#define EMCR_TXDMAEN 0x00002000 -#define EMCR_TXEN 0x00004000 -#define EMCR_RXDMAEN 0x00008000 -#define EMCR_RXEN 0x00010000 -#define EMCR_LOOPBACK 0x00020000 -#define EMCR_ARB_DIAG 0x001c0000 -#define EMCR_ARB_DIAG_IDLE 0x00200000 -#define EMCR_RST 0x80000000 - -#define EISR_RXTIMERINT 0x00000001 -#define EISR_RXTHRESHINT 0x00000002 -#define EISR_RXOFLO 0x00000004 -#define EISR_RXBUFOFLO 0x00000008 -#define EISR_RXMEMERR 0x00000010 -#define EISR_RXPARERR 0x00000020 -#define EISR_TXEMPTY 0x00010000 -#define EISR_TXRTRY 0x00020000 -#define EISR_TXEXDEF 0x00040000 -#define EISR_TXLCOL 0x00080000 -#define EISR_TXGIANT 0x00100000 -#define EISR_TXBUFUFLO 0x00200000 -#define EISR_TXEXPLICIT 0x00400000 -#define EISR_TXCOLLWRAP 0x00800000 -#define EISR_TXDEFERWRAP 0x01000000 -#define EISR_TXMEMERR 0x02000000 -#define EISR_TXPARERR 0x04000000 - -#define ERCSR_THRESH_MASK 0x000001ff /* enet RX threshold */ -#define ERCSR_RX_TMR 0x40000000 /* simulation only */ -#define ERCSR_DIAG_OFLO 0x80000000 /* simulation only */ - -#define ERBR_ALIGNMENT 4096 -#define ERBR_L_RXRINGBASE_MASK 0xfffff000 - -#define ERBAR_BARRIER_BIT 0x0100 -#define ERBAR_RXBARR_MASK 0xffff0000 -#define ERBAR_RXBARR_SHIFT 16 - -#define ERCIR_RXCONSUME_MASK 0x00000fff - -#define ERPIR_RXPRODUCE_MASK 0x00000fff -#define ERPIR_ARM 0x80000000 - -#define ERTR_CNT_MASK 0x000007ff - -#define ETCSR_IPGT_MASK 0x0000007f -#define ETCSR_IPGR1_MASK 0x00007f00 -#define ETCSR_IPGR1_SHIFT 8 -#define ETCSR_IPGR2_MASK 0x007f0000 -#define ETCSR_IPGR2_SHIFT 16 -#define ETCSR_NOTXCLK 0x80000000 - -#define ETCDC_COLLCNT_MASK 0x0000ffff -#define ETCDC_DEFERCNT_MASK 0xffff0000 -#define ETCDC_DEFERCNT_SHIFT 16 - -#define ETBR_ALIGNMENT (64*1024) -#define ETBR_L_RINGSZ_MASK 0x00000001 -#define ETBR_L_RINGSZ128 0 -#define ETBR_L_RINGSZ512 1 -#define ETBR_L_TXRINGBASE_MASK 0xffffc000 - -#define ETCIR_TXCONSUME_MASK 0x0000ffff -#define ETCIR_IDLE 0x80000000 - -#define ETPIR_TXPRODUCE_MASK 0x0000ffff - -#define EBIR_TXBUFPROD_MASK 0x0000001f -#define EBIR_TXBUFCONS_MASK 0x00001f00 -#define EBIR_TXBUFCONS_SHIFT 8 -#define EBIR_RXBUFPROD_MASK 0x007fc000 -#define EBIR_RXBUFPROD_SHIFT 14 -#define EBIR_RXBUFCONS_MASK 0xff800000 -#define EBIR_RXBUFCONS_SHIFT 23 - -#define MICR_REGADDR_MASK 0x0000001f -#define MICR_PHYADDR_MASK 0x000003e0 -#define MICR_PHYADDR_SHIFT 5 -#define MICR_READTRIG 0x00000400 -#define MICR_BUSY 0x00000800 - -#define MIDR_DATA_MASK 0x0000ffff - -#define ERXBUF_IPCKSUM_MASK 0x0000ffff -#define ERXBUF_BYTECNT_MASK 0x07ff0000 -#define ERXBUF_BYTECNT_SHIFT 16 -#define ERXBUF_V 0x80000000 - -#define ERXBUF_CRCERR 0x00000001 /* aka RSV15 */ -#define ERXBUF_FRAMERR 0x00000002 /* aka RSV14 */ -#define ERXBUF_CODERR 0x00000004 /* aka RSV13 */ -#define ERXBUF_INVPREAMB 0x00000008 /* aka RSV18 */ -#define ERXBUF_LOLEN 0x00007000 /* aka RSV2_0 */ -#define ERXBUF_HILEN 0x03ff0000 /* aka RSV12_3 */ -#define ERXBUF_MULTICAST 0x04000000 /* aka RSV16 */ -#define ERXBUF_BROADCAST 0x08000000 /* aka RSV17 */ -#define ERXBUF_LONGEVENT 0x10000000 /* aka RSV19 */ -#define ERXBUF_BADPKT 0x20000000 /* aka RSV20 */ -#define ERXBUF_GOODPKT 0x40000000 /* aka RSV21 */ -#define ERXBUF_CARRIER 0x80000000 /* aka RSV22 */ - -#define ETXD_BYTECNT_MASK 0x000007ff /* total byte count */ -#define ETXD_INTWHENDONE 0x00001000 /* intr when done */ -#define ETXD_D0V 0x00010000 /* data 0 valid */ -#define ETXD_B1V 0x00020000 /* buf 1 valid */ -#define ETXD_B2V 0x00040000 /* buf 2 valid */ -#define ETXD_DOCHECKSUM 0x00080000 /* insert ip cksum */ -#define ETXD_CHKOFF_MASK 0x07f00000 /* cksum byte offset */ -#define ETXD_CHKOFF_SHIFT 20 - -#define ETXD_D0CNT_MASK 0x0000007f -#define ETXD_B1CNT_MASK 0x0007ff00 -#define ETXD_B1CNT_SHIFT 8 -#define ETXD_B2CNT_MASK 0x7ff00000 -#define ETXD_B2CNT_SHIFT 20 - -typedef enum ioc3_subdevs_e { - ioc3_subdev_ether, - ioc3_subdev_generic, - ioc3_subdev_nic, - ioc3_subdev_kbms, - ioc3_subdev_ttya, - ioc3_subdev_ttyb, - ioc3_subdev_ecpp, - ioc3_subdev_rt, - ioc3_nsubdevs -} ioc3_subdev_t; - -/* subdevice disable bits, - * from the standard INFO_LBL_SUBDEVS - */ -#define IOC3_SDB_ETHER (1< -#include - -#define RTC_BASE_ADDR (unsigned char *)(nvram_base) - -/* Defines for the SGS-Thomson M48T35 clock */ -#define RTC_SGS_WRITE_ENABLE 0x80 -#define RTC_SGS_READ_PROTECT 0x40 -#define RTC_SGS_YEAR_ADDR (RTC_BASE_ADDR + 0x7fffL) -#define RTC_SGS_MONTH_ADDR (RTC_BASE_ADDR + 0x7ffeL) -#define RTC_SGS_DATE_ADDR (RTC_BASE_ADDR + 0x7ffdL) -#define RTC_SGS_DAY_ADDR (RTC_BASE_ADDR + 0x7ffcL) -#define RTC_SGS_HOUR_ADDR (RTC_BASE_ADDR + 0x7ffbL) -#define RTC_SGS_MIN_ADDR (RTC_BASE_ADDR + 0x7ffaL) -#define RTC_SGS_SEC_ADDR (RTC_BASE_ADDR + 0x7ff9L) -#define RTC_SGS_CONTROL_ADDR (RTC_BASE_ADDR + 0x7ff8L) - -/* Defines for the Dallas DS1386 */ -#define RTC_DAL_UPDATE_ENABLE 0x80 -#define RTC_DAL_UPDATE_DISABLE 0x00 -#define RTC_DAL_YEAR_ADDR (RTC_BASE_ADDR + 0xaL) -#define RTC_DAL_MONTH_ADDR (RTC_BASE_ADDR + 0x9L) -#define RTC_DAL_DATE_ADDR (RTC_BASE_ADDR + 0x8L) -#define RTC_DAL_DAY_ADDR (RTC_BASE_ADDR + 0x6L) -#define RTC_DAL_HOUR_ADDR (RTC_BASE_ADDR + 0x4L) -#define RTC_DAL_MIN_ADDR (RTC_BASE_ADDR + 0x2L) -#define RTC_DAL_SEC_ADDR (RTC_BASE_ADDR + 0x1L) -#define RTC_DAL_CONTROL_ADDR (RTC_BASE_ADDR + 0xbL) -#define RTC_DAL_USER_ADDR (RTC_BASE_ADDR + 0xeL) - -/* Defines for the Dallas DS1742 */ -#define RTC_DS1742_WRITE_ENABLE 0x80 -#define RTC_DS1742_READ_ENABLE 0x40 -#define RTC_DS1742_UPDATE_DISABLE 0x00 -#define RTC_DS1742_YEAR_ADDR (RTC_BASE_ADDR + 0x7ffL) -#define RTC_DS1742_MONTH_ADDR (RTC_BASE_ADDR + 0x7feL) -#define RTC_DS1742_DATE_ADDR (RTC_BASE_ADDR + 0x7fdL) -#define RTC_DS1742_DAY_ADDR (RTC_BASE_ADDR + 0x7fcL) -#define RTC_DS1742_HOUR_ADDR (RTC_BASE_ADDR + 0x7fbL) -#define RTC_DS1742_MIN_ADDR (RTC_BASE_ADDR + 0x7faL) -#define RTC_DS1742_SEC_ADDR (RTC_BASE_ADDR + 0x7f9L) -#define RTC_DS1742_CONTROL_ADDR (RTC_BASE_ADDR + 0x7f8L) -#define RTC_DS1742_USER_ADDR (RTC_BASE_ADDR + 0x0L) - -#define BCD_TO_INT(x) (((x>>4) * 10) + (x & 0xf)) -#define INT_TO_BCD(x) (((x / 10)<<4) + (x % 10)) - -#define YRREF 1970 - -#endif /* _ASM_IA64_SN_KLCLOCK_H */ diff -Nru a/include/asm-ia64/sn/ksys/elsc.h b/include/asm-ia64/sn/ksys/elsc.h --- a/include/asm-ia64/sn/ksys/elsc.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-ia64/sn/ksys/elsc.h Mon Sep 22 00:30:24 2003 @@ -9,9 +9,6 @@ #ifndef _ASM_SN_KSYS_ELSC_H #define _ASM_SN_KSYS_ELSC_H -#include -#include - /* * Error codes * diff -Nru a/include/asm-ia64/sn/ksys/l1.h b/include/asm-ia64/sn/ksys/l1.h --- a/include/asm-ia64/sn/ksys/l1.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-ia64/sn/ksys/l1.h Mon Sep 22 00:30:20 2003 @@ -10,10 +10,7 @@ #ifndef _ASM_SN_KSYS_L1_H #define _ASM_SN_KSYS_L1_H -#include -#include -#include -#include +#include /* L1 Target Addresses */ /* @@ -39,18 +36,6 @@ #define L1_ADDR_TASK_BEDROCK 0x05 /* bedrock */ #define L1_ADDR_TASK_GENERAL 0x06 /* general requests */ -#define L1_ADDR_LOCAL \ - (L1_ADDR_TYPE_L1 << L1_ADDR_TYPE_SHFT) | \ - (L1_ADDR_RACK_LOCAL << L1_ADDR_RACK_SHFT) | \ - (L1_ADDR_BAY_LOCAL << L1_ADDR_BAY_SHFT) - -#define L1_ADDR_LOCALIO \ - (L1_ADDR_TYPE_IOBRICK << L1_ADDR_TYPE_SHFT) | \ - (L1_ADDR_RACK_LOCAL << L1_ADDR_RACK_SHFT) | \ - (L1_ADDR_BAY_LOCAL << L1_ADDR_BAY_SHFT) - -#define L1_ADDR_LOCAL_SHFT L1_ADDR_BAY_SHFT - /* response argument types */ #define L1_ARG_INT 0x00 /* 4-byte integer (big-endian) */ #define L1_ARG_ASCII 0x01 /* null-terminated ASCII string */ @@ -133,18 +118,6 @@ #define L1_EEP_IUSE 3 /* internal use area */ #define L1_EEP_SPD 4 /* serial presence detect record */ -typedef uint32_t l1addr_t; - -#define L1_BUILD_ADDR(addr,at,r,s,t) \ - (*(l1addr_t *)(addr) = ((l1addr_t)(at) << L1_ADDR_TYPE_SHFT) | \ - ((l1addr_t)(r) << L1_ADDR_RACK_SHFT) | \ - ((l1addr_t)(s) << L1_ADDR_BAY_SHFT) | \ - ((l1addr_t)(t) << L1_ADDR_TASK_SHFT)) - -#define L1_ADDRESS_TO_TASK(addr,trb,tsk) \ - (*(l1addr_t *)(addr) = (l1addr_t)(trb) | \ - ((l1addr_t)(tsk) << L1_ADDR_TASK_SHFT)) - #define L1_DISPLAY_LINE_LENGTH 12 /* L1 display characters/line */ #ifdef L1_DISP_2LINES @@ -154,11 +127,9 @@ * to system software */ #endif -#define bzero(d, n) memset((d), 0, (n)) - int elsc_display_line(nasid_t nasid, char *line, int lnum); -int iobrick_rack_bay_type_get( nasid_t nasid, uint *rack, - uint *bay, uint *brick_type ); +int iobrick_rack_bay_type_get( nasid_t nasid, unsigned int *rack, + unsigned int *bay, unsigned int *brick_type ); int iobrick_module_get( nasid_t nasid ); diff -Nru a/include/asm-ia64/sn/nodepda.h b/include/asm-ia64/sn/nodepda.h --- a/include/asm-ia64/sn/nodepda.h Mon Sep 22 00:30:19 2003 +++ b/include/asm-ia64/sn/nodepda.h Mon Sep 22 00:30:19 2003 @@ -87,7 +87,7 @@ char irq_flags[NR_IRQS]; struct pci_dev *device_dev[NR_IRQS]; char share_count[NR_IRQS]; - struct pci_dev *current; + struct pci_dev *curr; }; typedef struct irqpda_s irqpda_t; @@ -128,7 +128,7 @@ * Check if given a compact node id the corresponding node has all the * cpus disabled. */ -#define is_headless_node(cnode) (!node_to_cpumask(cnode)) +#define is_headless_node(cnode) (!any_online_cpu(node_to_cpumask(cnode))) /* * Check if given a node vertex handle the corresponding node has all the diff -Nru a/include/asm-ia64/sn/pci/pcibr_private.h b/include/asm-ia64/sn/pci/pcibr_private.h --- a/include/asm-ia64/sn/pci/pcibr_private.h Mon Sep 22 00:30:17 2003 +++ b/include/asm-ia64/sn/pci/pcibr_private.h Mon Sep 22 00:30:17 2003 @@ -15,11 +15,9 @@ * should ever peek into this file. */ -#include #include #include #include -#include /* * convenience typedefs diff -Nru a/include/asm-ia64/sn/pci/pciio.h b/include/asm-ia64/sn/pci/pciio.h --- a/include/asm-ia64/sn/pci/pciio.h Mon Sep 22 00:30:17 2003 +++ b/include/asm-ia64/sn/pci/pciio.h Mon Sep 22 00:30:18 2003 @@ -695,5 +695,39 @@ extern int pciio_error_handler(vertex_hdl_t, int, ioerror_mode_t, ioerror_t *); extern int pciio_dma_enabled(vertex_hdl_t); +/** + * sn_pci_set_vchan - Set the requested Virtual Channel bits into the mapped DMA + * address. + * @pci_dev: pci device pointer + * @addr: mapped dma address + * @vchan: Virtual Channel to use 0 or 1. + * + * Set the Virtual Channel bit in the mapped dma address. + */ + +static inline int +sn_pci_set_vchan(struct pci_dev *pci_dev, + dma_addr_t *addr, + int vchan) +{ + if (vchan > 1) { + return -1; + } + + if (!(*addr >> 32)) /* Using a mask here would be cleaner */ + return 0; /* but this generates better code */ + + if (vchan == 1) { + /* Set Bit 57 */ + *addr |= (1UL << 57); + } + else { + /* Clear Bit 57 */ + *addr &= ~(1UL << 57); + } + + return 0; +} + #endif /* C or C++ */ #endif /* _ASM_SN_PCI_PCIIO_H */ diff -Nru a/include/asm-ia64/sn/router.h b/include/asm-ia64/sn/router.h --- a/include/asm-ia64/sn/router.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-ia64/sn/router.h Mon Sep 22 00:30:20 2003 @@ -1,5 +1,4 @@ - -/* $Id$ +/* $id$ * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive @@ -19,7 +18,6 @@ #ifndef __ASSEMBLY__ -#include #include #include #include @@ -31,23 +29,19 @@ #define MAX_ROUTER_PATH 80 #define ROUTER_REG_CAST (volatile router_reg_t *) -#define PS_UINT_CAST (__psunsigned_t) -#define UINT64_CAST (uint64_t) typedef signed char port_no_t; /* Type for router port number */ #else #define ROUTERREG_CAST -#define PS_UINT_CAST -#define UINT64_CAST #endif /* __ASSEMBLY__ */ -#define MAX_ROUTER_PORTS (8) /* Max. number of ports on a router */ +#define MAX_ROUTER_PORTS 8 /* Max. number of ports on a router */ #define ALL_PORTS ((1 << MAX_ROUTER_PORTS) - 1) /* for 0 based references */ -#define PORT_INVALID (-1) /* Invalid port number */ +#define PORT_INVALID -1 /* Invalid port number */ #define IS_META(_rp) ((_rp)->flags & PCFG_ROUTER_META) @@ -126,24 +120,24 @@ */ #define RSRI_INPORT_SHFT 52 -#define RSRI_INPORT_MASK (UINT64_CAST 0xf << 52) +#define RSRI_INPORT_MASK (0xfUL << 52) #define RSRI_LINKWORKING_BIT(_L) (35 + 2 * (_L)) -#define RSRI_LINKWORKING(_L) (UINT64_CAST 1 << (35 + 2 * (_L))) -#define RSRI_LINKRESETFAIL(_L) (UINT64_CAST 1 << (34 + 2 * (_L))) +#define RSRI_LINKWORKING(_L) (1UL << (35 + 2 * (_L))) +#define RSRI_LINKRESETFAIL(_L) (1UL << (34 + 2 * (_L))) #define RSRI_LSTAT_SHFT(_L) (34 + 2 * (_L)) -#define RSRI_LSTAT_MASK(_L) (UINT64_CAST 0x3 << 34 + 2 * (_L)) -#define RSRI_LOCALSBERROR (UINT64_CAST 1 << 35) -#define RSRI_LOCALSTUCK (UINT64_CAST 1 << 34) -#define RSRI_LOCALBADVEC (UINT64_CAST 1 << 33) -#define RSRI_LOCALTAILERR (UINT64_CAST 1 << 32) +#define RSRI_LSTAT_MASK(_L) (0x3UL << 34 + 2 * (_L)) +#define RSRI_LOCALSBERROR (1UL << 35) +#define RSRI_LOCALSTUCK (1UL << 34) +#define RSRI_LOCALBADVEC (1UL << 33) +#define RSRI_LOCALTAILERR (1UL << 32) #define RSRI_LOCAL_SHFT 32 -#define RSRI_LOCAL_MASK (UINT64_CAST 0xf << 32) +#define RSRI_LOCAL_MASK (0xfUL << 32) #define RSRI_CHIPREV_SHFT 28 -#define RSRI_CHIPREV_MASK (UINT64_CAST 0xf << 28) +#define RSRI_CHIPREV_MASK (0xfUL << 28) #define RSRI_CHIPID_SHFT 12 -#define RSRI_CHIPID_MASK (UINT64_CAST 0xffff << 12) +#define RSRI_CHIPID_MASK (0xffffUL << 12) #define RSRI_MFGID_SHFT 1 -#define RSRI_MFGID_MASK (UINT64_CAST 0x7ff << 1) +#define RSRI_MFGID_MASK (0x7ffUL << 1) #define RSRI_LSTAT_WENTDOWN 0 #define RSRI_LSTAT_RESETFAIL 1 @@ -154,38 +148,38 @@ * RR_PORT_RESET mask definitions */ -#define RPRESET_WARM (UINT64_CAST 1 << 9) -#define RPRESET_LINK(_L) (UINT64_CAST 1 << (_L)) -#define RPRESET_LOCAL (UINT64_CAST 1) +#define RPRESET_WARM (1UL << 9) +#define RPRESET_LINK(_L) (1UL << (_L)) +#define RPRESET_LOCAL 1UL /* * RR_PROT_CONF mask and shift definitions */ #define RPCONF_DIRCMPDIS_SHFT 13 -#define RPCONF_DIRCMPDIS_MASK (UINT64_CAST 1 << 13) -#define RPCONF_FORCELOCAL (UINT64_CAST 1 << 12) +#define RPCONF_DIRCMPDIS_MASK (1UL << 13) +#define RPCONF_FORCELOCAL (1UL << 12) #define RPCONF_FLOCAL_SHFT 12 #define RPCONF_METAID_SHFT 8 -#define RPCONF_METAID_MASK (UINT64_CAST 0xf << 8) -#define RPCONF_RESETOK(_L) (UINT64_CAST 1 << ((_L) - 1)) +#define RPCONF_METAID_MASK (0xfUL << 8) +#define RPCONF_RESETOK(_L) (1UL << ((_L) - 1)) /* * RR_GLOBAL_PORT_DEF mask and shift definitions */ #define RGPD_MGLBLNHBR_ID_SHFT 12 /* -global neighbor ID */ -#define RGPD_MGLBLNHBR_ID_MASK (UINT64_CAST 0xf << 12) +#define RGPD_MGLBLNHBR_ID_MASK (0xfUL << 12) #define RGPD_MGLBLNHBR_VLD_SHFT 11 /* -global neighbor Valid */ -#define RGPD_MGLBLNHBR_VLD_MASK (UINT64_CAST 0x1 << 11) +#define RGPD_MGLBLNHBR_VLD_MASK (0x1UL << 11) #define RGPD_MGLBLPORT_SHFT 8 /* -global neighbor Port */ -#define RGPD_MGLBLPORT_MASK (UINT64_CAST 0x7 << 8) +#define RGPD_MGLBLPORT_MASK (0x7UL << 8) #define RGPD_PGLBLNHBR_ID_SHFT 4 /* +global neighbor ID */ -#define RGPD_PGLBLNHBR_ID_MASK (UINT64_CAST 0xf << 4) +#define RGPD_PGLBLNHBR_ID_MASK (0xfUL << 4) #define RGPD_PGLBLNHBR_VLD_SHFT 3 /* +global neighbor Valid */ -#define RGPD_PGLBLNHBR_VLD_MASK (UINT64_CAST 0x1 << 3) +#define RGPD_PGLBLNHBR_VLD_MASK (0x1UL << 3) #define RGPD_PGLBLPORT_SHFT 0 /* +global neighbor Port */ -#define RGPD_PGLBLPORT_MASK (UINT64_CAST 0x7 << 0) +#define RGPD_PGLBLPORT_MASK (0x7UL << 0) #define GLBL_PARMS_REGS 2 /* Two Global Parms registers */ @@ -194,95 +188,95 @@ */ #define RGPARM0_ARB_VALUE_SHFT 54 /* Local Block Arbitration State */ -#define RGPARM0_ARB_VALUE_MASK (UINT64_CAST 0x7 << 54) +#define RGPARM0_ARB_VALUE_MASK (0x7UL << 54) #define RGPARM0_ROTATEARB_SHFT 53 /* Rotate Local Block Arbitration */ -#define RGPARM0_ROTATEARB_MASK (UINT64_CAST 0x1 << 53) +#define RGPARM0_ROTATEARB_MASK (1UL << 53) #define RGPARM0_FAIREN_SHFT 52 /* Fairness logic Enable */ -#define RGPARM0_FAIREN_MASK (UINT64_CAST 0x1 << 52) +#define RGPARM0_FAIREN_MASK (1UL << 52) #define RGPARM0_LOCGNTTO_SHFT 40 /* Local grant timeout */ -#define RGPARM0_LOCGNTTO_MASK (UINT64_CAST 0xfff << 40) +#define RGPARM0_LOCGNTTO_MASK (0xfffUL << 40) #define RGPARM0_DATELINE_SHFT 38 /* Dateline crossing router */ -#define RGPARM0_DATELINE_MASK (UINT64_CAST 0x1 << 38) +#define RGPARM0_DATELINE_MASK (1UL << 38) #define RGPARM0_MAXRETRY_SHFT 28 /* Max retry count */ -#define RGPARM0_MAXRETRY_MASK (UINT64_CAST 0x3ff << 28) +#define RGPARM0_MAXRETRY_MASK (0x3ffUL << 28) #define RGPARM0_URGWRAP_SHFT 20 /* Urgent wrap */ -#define RGPARM0_URGWRAP_MASK (UINT64_CAST 0xff << 20) +#define RGPARM0_URGWRAP_MASK (0xffUL << 20) #define RGPARM0_DEADLKTO_SHFT 16 /* Deadlock timeout */ -#define RGPARM0_DEADLKTO_MASK (UINT64_CAST 0xf << 16) +#define RGPARM0_DEADLKTO_MASK (0xfUL << 16) #define RGPARM0_URGVAL_SHFT 12 /* Urgent value */ -#define RGPARM0_URGVAL_MASK (UINT64_CAST 0xf << 12) +#define RGPARM0_URGVAL_MASK (0xfUL << 12) #define RGPARM0_VCHSELEN_SHFT 11 /* VCH_SEL_EN */ -#define RGPARM0_VCHSELEN_MASK (UINT64_CAST 0x1 << 11) +#define RGPARM0_VCHSELEN_MASK (1UL << 11) #define RGPARM0_LOCURGTO_SHFT 9 /* Local urgent timeout */ -#define RGPARM0_LOCURGTO_MASK (UINT64_CAST 0x3 << 9) +#define RGPARM0_LOCURGTO_MASK (0x3UL << 9) #define RGPARM0_TAILVAL_SHFT 5 /* Tail value */ -#define RGPARM0_TAILVAL_MASK (UINT64_CAST 0xf << 5) +#define RGPARM0_TAILVAL_MASK (0xfUL << 5) #define RGPARM0_CLOCK_SHFT 1 /* Global clock select */ -#define RGPARM0_CLOCK_MASK (UINT64_CAST 0xf << 1) +#define RGPARM0_CLOCK_MASK (0xfUL << 1) #define RGPARM0_BYPEN_SHFT 0 -#define RGPARM0_BYPEN_MASK (UINT64_CAST 1) /* Bypass enable */ +#define RGPARM0_BYPEN_MASK 1UL /* Bypass enable */ /* * RR_GLOBAL_PARMS1 shift and mask definitions */ #define RGPARM1_TTOWRAP_SHFT 12 /* Tail timeout wrap */ -#define RGPARM1_TTOWRAP_MASK (UINT64_CAST 0xfffff << 12) +#define RGPARM1_TTOWRAP_MASK (0xfffffUL << 12) #define RGPARM1_AGERATE_SHFT 8 /* Age rate */ -#define RGPARM1_AGERATE_MASK (UINT64_CAST 0xf << 8) +#define RGPARM1_AGERATE_MASK (0xfUL << 8) #define RGPARM1_JSWSTAT_SHFT 0 /* JTAG Sw Register bits */ -#define RGPARM1_JSWSTAT_MASK (UINT64_CAST 0xff << 0) +#define RGPARM1_JSWSTAT_MASK (0xffUL << 0) /* * RR_DIAG_PARMS mask and shift definitions */ -#define RDPARM_ABSHISTOGRAM (UINT64_CAST 1 << 17) /* Absolute histgrm */ -#define RDPARM_DEADLOCKRESET (UINT64_CAST 1 << 16) /* Reset on deadlck */ -#define RDPARM_DISABLE(_L) (UINT64_CAST 1 << ((_L) + 7)) -#define RDPARM_SENDERROR(_L) (UINT64_CAST 1 << ((_L) - 1)) +#define RDPARM_ABSHISTOGRAM (1UL << 17) /* Absolute histgrm */ +#define RDPARM_DEADLOCKRESET (1UL << 16) /* Reset on deadlck */ +#define RDPARM_DISABLE(_L) (1UL << ((_L) + 7)) +#define RDPARM_SENDERROR(_L) (1UL << ((_L) - 1)) /* * RR_DEBUG_ADDR mask and shift definitions */ #define RDA_DATA_SHFT 10 /* Observed debug data */ -#define RDA_DATA_MASK (UINT64_CAST 0xffff << 10) +#define RDA_DATA_MASK (0xffffUL << 10) #define RDA_ADDR_SHFT 0 /* debug address for data */ -#define RDA_ADDR_MASK (UINT64_CAST 0x3ff << 0) +#define RDA_ADDR_MASK (0x3ffUL << 0) /* * RR_LB_TO_L2 mask and shift definitions */ #define RLBTOL2_DATA_VLD_SHFT 32 /* data is valid for JTAG controller */ -#define RLBTOL2_DATA_VLD_MASK (UINT64_CAST 0x1 << 32) +#define RLBTOL2_DATA_VLD_MASK (1UL << 32) #define RLBTOL2_DATA_SHFT 0 /* data bits for JTAG controller */ -#define RLBTOL2_DATA_MASK (UINT64_CAST 0xffffffff) +#define RLBTOL2_DATA_MASK 0xffffffffUL /* * RR_L2_TO_LB mask and shift definitions */ #define RL2TOLB_DATA_VLD_SHFT 33 /* data is valid from JTAG controller */ -#define RL2TOLB_DATA_VLD_MASK (UINT64_CAST 0x1 << 33) +#define RL2TOLB_DATA_VLD_MASK (1UL << 33) #define RL2TOLB_PARITY_SHFT 32 /* sw implemented parity for data */ -#define RL2TOLB_PARITY_MASK (UINT64_CAST 0x1 << 32) +#define RL2TOLB_PARITY_MASK (1UL << 32) #define RL2TOLB_DATA_SHFT 0 /* data bits from JTAG controller */ -#define RL2TOLB_DATA_MASK (UINT64_CAST 0xffffffff) +#define RL2TOLB_DATA_MASK 0xffffffffUL /* * RR_JBUS_CONTROL mask and shift definitions */ #define RJC_POS_BITS_SHFT 20 /* Router position bits */ -#define RJC_POS_BITS_MASK (UINT64_CAST 0xf << 20) +#define RJC_POS_BITS_MASK (0xfUL << 20) #define RJC_RD_DATA_STROBE_SHFT 16 /* count when read data is strobed in */ -#define RJC_RD_DATA_STROBE_MASK (UINT64_CAST 0xf << 16) +#define RJC_RD_DATA_STROBE_MASK (0xfUL << 16) #define RJC_WE_OE_HOLD_SHFT 8 /* time OE or WE is held */ -#define RJC_WE_OE_HOLD_MASK (UINT64_CAST 0xff << 8) +#define RJC_WE_OE_HOLD_MASK (0xffUL << 8) #define RJC_ADDR_SET_HLD_SHFT 0 /* time address driven around OE/WE */ -#define RJC_ADDR_SET_HLD_MASK (UINT64_CAST 0xff) +#define RJC_ADDR_SET_HLD_MASK 0xffUL /* * RR_SCRATCH_REGx mask and shift definitions @@ -291,58 +285,58 @@ */ #define RSCR0_BOOTED_SHFT 63 -#define RSCR0_BOOTED_MASK (UINT64_CAST 0x1 << RSCR0_BOOTED_SHFT) +#define RSCR0_BOOTED_MASK (0x1UL << RSCR0_BOOTED_SHFT) #define RSCR0_LOCALID_SHFT 56 -#define RSCR0_LOCALID_MASK (UINT64_CAST 0x7f << RSCR0_LOCALID_SHFT) +#define RSCR0_LOCALID_MASK (0x7fUL << RSCR0_LOCALID_SHFT) #define RSCR0_UNUSED_SHFT 48 -#define RSCR0_UNUSED_MASK (UINT64_CAST 0xff << RSCR0_UNUSED_SHFT) +#define RSCR0_UNUSED_MASK (0xffUL << RSCR0_UNUSED_SHFT) #define RSCR0_NIC_SHFT 0 -#define RSCR0_NIC_MASK (UINT64_CAST 0xffffffffffff) +#define RSCR0_NIC_MASK 0xffffffffffffUL #define RSCR1_MODID_SHFT 0 -#define RSCR1_MODID_MASK (UINT64_CAST 0xffff) +#define RSCR1_MODID_MASK 0xffffUL /* * RR_VECTOR_HW_BAR mask and shift definitions */ #define BAR_TX_SHFT 27 /* Barrier in trans(m)it when read */ -#define BAR_TX_MASK (UINT64_CAST 1 << BAR_TX_SHFT) +#define BAR_TX_MASK (1UL << BAR_TX_SHFT) #define BAR_VLD_SHFT 26 /* Valid Configuration */ -#define BAR_VLD_MASK (UINT64_CAST 1 << BAR_VLD_SHFT) +#define BAR_VLD_MASK (1UL << BAR_VLD_SHFT) #define BAR_SEQ_SHFT 24 /* Sequence number */ -#define BAR_SEQ_MASK (UINT64_CAST 3 << BAR_SEQ_SHFT) +#define BAR_SEQ_MASK (3UL << BAR_SEQ_SHFT) #define BAR_LEAFSTATE_SHFT 18 /* Leaf State */ -#define BAR_LEAFSTATE_MASK (UINT64_CAST 0x3f << BAR_LEAFSTATE_SHFT) +#define BAR_LEAFSTATE_MASK (0x3fUL << BAR_LEAFSTATE_SHFT) #define BAR_PARENT_SHFT 14 /* Parent Port */ -#define BAR_PARENT_MASK (UINT64_CAST 0xf << BAR_PARENT_SHFT) +#define BAR_PARENT_MASK (0xfUL << BAR_PARENT_SHFT) #define BAR_CHILDREN_SHFT 6 /* Child Select port bits */ -#define BAR_CHILDREN_MASK (UINT64_CAST 0xff << BAR_CHILDREN_SHFT) +#define BAR_CHILDREN_MASK (0xffUL << BAR_CHILDREN_SHFT) #define BAR_LEAFCOUNT_SHFT 0 /* Leaf Count to trigger parent */ -#define BAR_LEAFCOUNT_MASK (UINT64_CAST 0x3f) +#define BAR_LEAFCOUNT_MASK 0x3fUL /* * RR_PORT_PARMS(_L) mask and shift definitions */ #define RPPARM_MIPRESETEN_SHFT 29 /* Message In Progress reset enable */ -#define RPPARM_MIPRESETEN_MASK (UINT64_CAST 0x1 << 29) +#define RPPARM_MIPRESETEN_MASK (0x1UL << 29) #define RPPARM_UBAREN_SHFT 28 /* Enable user barrier requests */ -#define RPPARM_UBAREN_MASK (UINT64_CAST 0x1 << 28) +#define RPPARM_UBAREN_MASK (0x1UL << 28) #define RPPARM_OUTPDTO_SHFT 24 /* Output Port Deadlock TO value */ -#define RPPARM_OUTPDTO_MASK (UINT64_CAST 0xf << 24) +#define RPPARM_OUTPDTO_MASK (0xfUL << 24) #define RPPARM_PORTMATE_SHFT 21 /* Port Mate for the port */ -#define RPPARM_PORTMATE_MASK (UINT64_CAST 0x7 << 21) +#define RPPARM_PORTMATE_MASK (0x7UL << 21) #define RPPARM_HISTEN_SHFT 20 /* Histogram counter enable */ -#define RPPARM_HISTEN_MASK (UINT64_CAST 0x1 << 20) +#define RPPARM_HISTEN_MASK (0x1UL << 20) #define RPPARM_HISTSEL_SHFT 18 -#define RPPARM_HISTSEL_MASK (UINT64_CAST 0x3 << 18) +#define RPPARM_HISTSEL_MASK (0x3UL << 18) #define RPPARM_DAMQHS_SHFT 16 -#define RPPARM_DAMQHS_MASK (UINT64_CAST 0x3 << 16) +#define RPPARM_DAMQHS_MASK (0x3UL << 16) #define RPPARM_NULLTO_SHFT 10 -#define RPPARM_NULLTO_MASK (UINT64_CAST 0x3f << 10) +#define RPPARM_NULLTO_MASK (0x3fUL << 10) #define RPPARM_MAXBURST_SHFT 0 -#define RPPARM_MAXBURST_MASK (UINT64_CAST 0x3ff) +#define RPPARM_MAXBURST_MASK 0x3ffUL /* * NOTE: Normally the kernel tracks only UTILIZATION statistics. @@ -356,23 +350,23 @@ /* * RR_STATUS_ERROR(_L) and RR_ERROR_CLEAR(_L) mask and shift definitions */ -#define RSERR_POWERNOK (UINT64_CAST 1 << 38) -#define RSERR_PORT_DEADLOCK (UINT64_CAST 1 << 37) -#define RSERR_WARMRESET (UINT64_CAST 1 << 36) -#define RSERR_LINKRESET (UINT64_CAST 1 << 35) -#define RSERR_RETRYTIMEOUT (UINT64_CAST 1 << 34) -#define RSERR_FIFOOVERFLOW (UINT64_CAST 1 << 33) -#define RSERR_ILLEGALPORT (UINT64_CAST 1 << 32) +#define RSERR_POWERNOK (1UL << 38) +#define RSERR_PORT_DEADLOCK (1UL << 37) +#define RSERR_WARMRESET (1UL << 36) +#define RSERR_LINKRESET (1UL << 35) +#define RSERR_RETRYTIMEOUT (1UL << 34) +#define RSERR_FIFOOVERFLOW (1UL << 33) +#define RSERR_ILLEGALPORT (1UL << 32) #define RSERR_DEADLOCKTO_SHFT 28 -#define RSERR_DEADLOCKTO_MASK (UINT64_CAST 0xf << 28) +#define RSERR_DEADLOCKTO_MASK (0xfUL << 28) #define RSERR_RECVTAILTO_SHFT 24 -#define RSERR_RECVTAILTO_MASK (UINT64_CAST 0xf << 24) +#define RSERR_RECVTAILTO_MASK (0xfUL << 24) #define RSERR_RETRYCNT_SHFT 16 -#define RSERR_RETRYCNT_MASK (UINT64_CAST 0xff << 16) +#define RSERR_RETRYCNT_MASK (0xffUL << 16) #define RSERR_CBERRCNT_SHFT 8 -#define RSERR_CBERRCNT_MASK (UINT64_CAST 0xff << 8) +#define RSERR_CBERRCNT_MASK (0xffUL << 8) #define RSERR_SNERRCNT_SHFT 0 -#define RSERR_SNERRCNT_MASK (UINT64_CAST 0xff << 0) +#define RSERR_SNERRCNT_MASK (0xffUL << 0) #define PORT_STATUS_UP (1 << 0) /* Router link up */ @@ -393,10 +387,10 @@ * why the router link * went down */ -#define PROBE_RESULT_BAD (-1) /* Set if any of the router +#define PROBE_RESULT_BAD -1 /* Set if any of the router * links failed after reset */ -#define PROBE_RESULT_GOOD (0) /* Set if all the router links +#define PROBE_RESULT_GOOD 0 /* Set if all the router links * which came out of reset * are up */ @@ -528,23 +522,6 @@ #define RIP_PROMLOG 2 /* Router info in promlog */ #define RIP_CONSOLE 4 /* Router info on console */ -#define ROUTER_INFO_PRINT(_rip,_where) (_rip->ri_print |= _where) - /* Set the field used to check if a - * router info can be printed - */ -#define IS_ROUTER_INFO_PRINTED(_rip,_where) \ - (_rip->ri_print & _where) - /* Was the router info printed to - * the given location (_where) ? - * Mainly used to prevent duplicate - * router error states. - */ -#define ROUTER_INFO_LOCK(_rip,_s) _s = mutex_spinlock(&(_rip->ri_lock)) - /* Take the lock on router info - * to gain exclusive access - */ -#define ROUTER_INFO_UNLOCK(_rip,_s) mutex_spinunlock(&(_rip->ri_lock),_s) - /* Release the lock on router info */ /* * Router info hanging in the nodepda */ @@ -623,7 +600,7 @@ */ #define RHIST_BUCKET_SHFT(_x) (32 * ((_x) & 0x1)) -#define RHIST_BUCKET_MASK(_x) (UINT64_CAST 0xffffffff << RHIST_BUCKET_SHFT((_x) & 0x1)) +#define RHIST_BUCKET_MASK(_x) (0xffffffffUL << RHIST_BUCKET_SHFT((_x) & 0x1)) #define RHIST_GET_BUCKET(_x, _reg) \ ((RHIST_BUCKET_MASK(_x) & ((_reg)[(_x) >> 1])) >> RHIST_BUCKET_SHFT(_x)) @@ -631,7 +608,7 @@ * RR_RESET_MASK(_L) mask and shift definitions */ -#define RRM_RESETOK(_L) (UINT64_CAST 1 << ((_L) - 1)) +#define RRM_RESETOK(_L) (1UL << ((_L) - 1)) #define RRM_RESETOK_ALL ALL_PORTS /* @@ -639,7 +616,7 @@ */ #define RTABLE_SHFT(_L) (4 * ((_L) - 1)) -#define RTABLE_MASK(_L) (UINT64_CAST 0x7 << RTABLE_SHFT(_L)) +#define RTABLE_MASK(_L) (0x7UL << RTABLE_SHFT(_L)) #define ROUTERINFO_STKSZ 4096 diff -Nru a/include/asm-ia64/sn/sn2/intr.h b/include/asm-ia64/sn/sn2/intr.h --- a/include/asm-ia64/sn/sn2/intr.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-ia64/sn/sn2/intr.h Mon Sep 22 00:30:24 2003 @@ -17,10 +17,11 @@ #define SGI_II_ERROR (0x31) #define SGI_XBOW_ERROR (0x32) #define SGI_PCIBR_ERROR (0x33) +#define SGI_ACPI_SCI_INT (0x34) #define SGI_XPC_NOTIFY (0xe7) #define IA64_SN2_FIRST_DEVICE_VECTOR (0x34) -#define IA64_SN2_LAST_DEVICE_VECTOR (0xe6) +#define IA64_SN2_LAST_DEVICE_VECTOR (0xe7) #define SN2_IRQ_RESERVED (0x1) #define SN2_IRQ_CONNECTED (0x2) diff -Nru a/include/asm-ia64/sn/sn2/shub.h b/include/asm-ia64/sn/sn2/shub.h --- a/include/asm-ia64/sn/sn2/shub.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-ia64/sn/sn2/shub.h Mon Sep 22 00:30:24 2003 @@ -11,13 +11,6 @@ #ifndef _ASM_IA64_SN_SN2_SHUB_H #define _ASM_IA64_SN_SN2_SHUB_H -#include /* shub mmr addresses and formats */ -#include -#include -#ifndef __ASSEMBLY__ -#include /* shub mmr struct defines */ -#endif - /* * Junk Bus Address Space * The junk bus is used to access the PROM, LED's, and UART. It's diff -Nru a/include/asm-ia64/sn/sn2/shub_mmr_t.h b/include/asm-ia64/sn/sn2/shub_mmr_t.h --- a/include/asm-ia64/sn/sn2/shub_mmr_t.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-ia64/sn/sn2/shub_mmr_t.h Mon Sep 22 00:30:18 2003 @@ -7,8 +7,6 @@ * Copyright (c) 2001-2003 Silicon Graphics, Inc. All rights reserved. */ - - #ifndef _ASM_IA64_SN_SN2_SHUB_MMR_T_H #define _ASM_IA64_SN_SN2_SHUB_MMR_T_H @@ -19,7 +17,6 @@ /* FSB BINIT# Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_fsb_binit_control_u { mmr_t sh_fsb_binit_control_regval; struct { @@ -27,22 +24,12 @@ mmr_t reserved_0 : 63; } sh_fsb_binit_control_s; } sh_fsb_binit_control_u_t; -#else -typedef union sh_fsb_binit_control_u { - mmr_t sh_fsb_binit_control_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t binit : 1; - } sh_fsb_binit_control_s; -} sh_fsb_binit_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_FSB_RESET_CONTROL" */ /* FSB Reset Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_fsb_reset_control_u { mmr_t sh_fsb_reset_control_regval; struct { @@ -50,22 +37,12 @@ mmr_t reserved_0 : 63; } sh_fsb_reset_control_s; } sh_fsb_reset_control_u_t; -#else -typedef union sh_fsb_reset_control_u { - mmr_t sh_fsb_reset_control_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t reset : 1; - } sh_fsb_reset_control_s; -} sh_fsb_reset_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_FSB_SYSTEM_AGENT_CONFIG" */ /* FSB System Agent Configuration */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_fsb_system_agent_config_u { mmr_t sh_fsb_system_agent_config_regval; struct { @@ -88,37 +65,12 @@ mmr_t reserved_3 : 18; } sh_fsb_system_agent_config_s; } sh_fsb_system_agent_config_u_t; -#else -typedef union sh_fsb_system_agent_config_u { - mmr_t sh_fsb_system_agent_config_regval; - struct { - mmr_t reserved_3 : 18; - mmr_t binit_event_enables : 14; - mmr_t reserved_2 : 7; - mmr_t serialize_fsb_en : 1; - mmr_t tdot : 1; - mmr_t reserved_1 : 4; - mmr_t inta_trans_rsp : 1; - mmr_t xtpr_trans_rsp : 1; - mmr_t io_trans_rsp : 1; - mmr_t inta_rsp_data : 8; - mmr_t short_hang_en : 1; - mmr_t bnr_throttling_en : 1; - mmr_t binit_assert_en : 1; - mmr_t berr_sampling_en : 1; - mmr_t berr_assert_en : 1; - mmr_t reserved_0 : 2; - mmr_t rcnt_scnt_en : 1; - } sh_fsb_system_agent_config_s; -} sh_fsb_system_agent_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_FSB_VGA_REMAP" */ /* FSB VGA Address Space Remap */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_fsb_vga_remap_u { mmr_t sh_fsb_vga_remap_regval; struct { @@ -131,27 +83,12 @@ mmr_t reserved_2 : 1; } sh_fsb_vga_remap_s; } sh_fsb_vga_remap_u_t; -#else -typedef union sh_fsb_vga_remap_u { - mmr_t sh_fsb_vga_remap_regval; - struct { - mmr_t reserved_2 : 1; - mmr_t vga_remapping_enabled : 1; - mmr_t reserved_1 : 13; - mmr_t nid : 11; - mmr_t asid : 2; - mmr_t offset : 19; - mmr_t reserved_0 : 17; - } sh_fsb_vga_remap_s; -} sh_fsb_vga_remap_u_t; -#endif /* ==================================================================== */ /* Register "SH_FSB_RESET_STATUS" */ /* FSB Reset Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_fsb_reset_status_u { mmr_t sh_fsb_reset_status_regval; struct { @@ -159,22 +96,12 @@ mmr_t reserved_0 : 63; } sh_fsb_reset_status_s; } sh_fsb_reset_status_u_t; -#else -typedef union sh_fsb_reset_status_u { - mmr_t sh_fsb_reset_status_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t reset_in_progress : 1; - } sh_fsb_reset_status_s; -} sh_fsb_reset_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_FSB_SYMMETRIC_AGENT_STATUS" */ /* FSB Symmetric Agent Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_fsb_symmetric_agent_status_u { mmr_t sh_fsb_symmetric_agent_status_regval; struct { @@ -184,24 +111,12 @@ mmr_t reserved_0 : 61; } sh_fsb_symmetric_agent_status_s; } sh_fsb_symmetric_agent_status_u_t; -#else -typedef union sh_fsb_symmetric_agent_status_u { - mmr_t sh_fsb_symmetric_agent_status_regval; - struct { - mmr_t reserved_0 : 61; - mmr_t cpus_ready : 1; - mmr_t cpu_1_active : 1; - mmr_t cpu_0_active : 1; - } sh_fsb_symmetric_agent_status_s; -} sh_fsb_symmetric_agent_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_CREDIT_COUNT_0" */ /* Graphics-write Credit Count for CPU 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_credit_count_0_u { mmr_t sh_gfx_credit_count_0_regval; struct { @@ -210,23 +125,12 @@ mmr_t reset_gfx_state : 1; } sh_gfx_credit_count_0_s; } sh_gfx_credit_count_0_u_t; -#else -typedef union sh_gfx_credit_count_0_u { - mmr_t sh_gfx_credit_count_0_regval; - struct { - mmr_t reset_gfx_state : 1; - mmr_t reserved_0 : 43; - mmr_t count : 20; - } sh_gfx_credit_count_0_s; -} sh_gfx_credit_count_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_CREDIT_COUNT_1" */ /* Graphics-write Credit Count for CPU 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_credit_count_1_u { mmr_t sh_gfx_credit_count_1_regval; struct { @@ -235,23 +139,12 @@ mmr_t reset_gfx_state : 1; } sh_gfx_credit_count_1_s; } sh_gfx_credit_count_1_u_t; -#else -typedef union sh_gfx_credit_count_1_u { - mmr_t sh_gfx_credit_count_1_regval; - struct { - mmr_t reset_gfx_state : 1; - mmr_t reserved_0 : 43; - mmr_t count : 20; - } sh_gfx_credit_count_1_s; -} sh_gfx_credit_count_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_MODE_CNTRL_0" */ /* Graphics credit mode amd message ordering for CPU 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_mode_cntrl_0_u { mmr_t sh_gfx_mode_cntrl_0_regval; struct { @@ -261,24 +154,12 @@ mmr_t reserved_0 : 61; } sh_gfx_mode_cntrl_0_s; } sh_gfx_mode_cntrl_0_u_t; -#else -typedef union sh_gfx_mode_cntrl_0_u { - mmr_t sh_gfx_mode_cntrl_0_regval; - struct { - mmr_t reserved_0 : 61; - mmr_t relaxed_ordering : 1; - mmr_t mixed_mode_credits : 1; - mmr_t dword_credits : 1; - } sh_gfx_mode_cntrl_0_s; -} sh_gfx_mode_cntrl_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_MODE_CNTRL_1" */ /* Graphics credit mode amd message ordering for CPU 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_mode_cntrl_1_u { mmr_t sh_gfx_mode_cntrl_1_regval; struct { @@ -288,24 +169,12 @@ mmr_t reserved_0 : 61; } sh_gfx_mode_cntrl_1_s; } sh_gfx_mode_cntrl_1_u_t; -#else -typedef union sh_gfx_mode_cntrl_1_u { - mmr_t sh_gfx_mode_cntrl_1_regval; - struct { - mmr_t reserved_0 : 61; - mmr_t relaxed_ordering : 1; - mmr_t mixed_mode_credits : 1; - mmr_t dword_credits : 1; - } sh_gfx_mode_cntrl_1_s; -} sh_gfx_mode_cntrl_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_SKID_CREDIT_COUNT_0" */ /* Graphics-write Skid Credit Count for CPU 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_skid_credit_count_0_u { mmr_t sh_gfx_skid_credit_count_0_regval; struct { @@ -313,22 +182,12 @@ mmr_t reserved_0 : 44; } sh_gfx_skid_credit_count_0_s; } sh_gfx_skid_credit_count_0_u_t; -#else -typedef union sh_gfx_skid_credit_count_0_u { - mmr_t sh_gfx_skid_credit_count_0_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t skid : 20; - } sh_gfx_skid_credit_count_0_s; -} sh_gfx_skid_credit_count_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_SKID_CREDIT_COUNT_1" */ /* Graphics-write Skid Credit Count for CPU 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_skid_credit_count_1_u { mmr_t sh_gfx_skid_credit_count_1_regval; struct { @@ -336,22 +195,12 @@ mmr_t reserved_0 : 44; } sh_gfx_skid_credit_count_1_s; } sh_gfx_skid_credit_count_1_u_t; -#else -typedef union sh_gfx_skid_credit_count_1_u { - mmr_t sh_gfx_skid_credit_count_1_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t skid : 20; - } sh_gfx_skid_credit_count_1_s; -} sh_gfx_skid_credit_count_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_STALL_LIMIT_0" */ /* Graphics-write Stall Limit for CPU 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_stall_limit_0_u { mmr_t sh_gfx_stall_limit_0_regval; struct { @@ -359,22 +208,12 @@ mmr_t reserved_0 : 38; } sh_gfx_stall_limit_0_s; } sh_gfx_stall_limit_0_u_t; -#else -typedef union sh_gfx_stall_limit_0_u { - mmr_t sh_gfx_stall_limit_0_regval; - struct { - mmr_t reserved_0 : 38; - mmr_t limit : 26; - } sh_gfx_stall_limit_0_s; -} sh_gfx_stall_limit_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_STALL_LIMIT_1" */ /* Graphics-write Stall Limit for CPU 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_stall_limit_1_u { mmr_t sh_gfx_stall_limit_1_regval; struct { @@ -382,22 +221,12 @@ mmr_t reserved_0 : 38; } sh_gfx_stall_limit_1_s; } sh_gfx_stall_limit_1_u_t; -#else -typedef union sh_gfx_stall_limit_1_u { - mmr_t sh_gfx_stall_limit_1_regval; - struct { - mmr_t reserved_0 : 38; - mmr_t limit : 26; - } sh_gfx_stall_limit_1_s; -} sh_gfx_stall_limit_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_STALL_TIMER_0" */ /* Graphics-write Stall Timer for CPU 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_stall_timer_0_u { mmr_t sh_gfx_stall_timer_0_regval; struct { @@ -405,22 +234,12 @@ mmr_t reserved_0 : 38; } sh_gfx_stall_timer_0_s; } sh_gfx_stall_timer_0_u_t; -#else -typedef union sh_gfx_stall_timer_0_u { - mmr_t sh_gfx_stall_timer_0_regval; - struct { - mmr_t reserved_0 : 38; - mmr_t timer_value : 26; - } sh_gfx_stall_timer_0_s; -} sh_gfx_stall_timer_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_STALL_TIMER_1" */ /* Graphics-write Stall Timer for CPU 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_stall_timer_1_u { mmr_t sh_gfx_stall_timer_1_regval; struct { @@ -428,22 +247,12 @@ mmr_t reserved_0 : 38; } sh_gfx_stall_timer_1_s; } sh_gfx_stall_timer_1_u_t; -#else -typedef union sh_gfx_stall_timer_1_u { - mmr_t sh_gfx_stall_timer_1_regval; - struct { - mmr_t reserved_0 : 38; - mmr_t timer_value : 26; - } sh_gfx_stall_timer_1_s; -} sh_gfx_stall_timer_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_WINDOW_0" */ /* Graphics-write Window for CPU 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_window_0_u { mmr_t sh_gfx_window_0_regval; struct { @@ -453,24 +262,12 @@ mmr_t gfx_window_en : 1; } sh_gfx_window_0_s; } sh_gfx_window_0_u_t; -#else -typedef union sh_gfx_window_0_u { - mmr_t sh_gfx_window_0_regval; - struct { - mmr_t gfx_window_en : 1; - mmr_t reserved_1 : 27; - mmr_t base_addr : 12; - mmr_t reserved_0 : 24; - } sh_gfx_window_0_s; -} sh_gfx_window_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_WINDOW_1" */ /* Graphics-write Window for CPU 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_window_1_u { mmr_t sh_gfx_window_1_regval; struct { @@ -480,24 +277,12 @@ mmr_t gfx_window_en : 1; } sh_gfx_window_1_s; } sh_gfx_window_1_u_t; -#else -typedef union sh_gfx_window_1_u { - mmr_t sh_gfx_window_1_regval; - struct { - mmr_t gfx_window_en : 1; - mmr_t reserved_1 : 27; - mmr_t base_addr : 12; - mmr_t reserved_0 : 24; - } sh_gfx_window_1_s; -} sh_gfx_window_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_INTERRUPT_TIMER_LIMIT_0" */ /* Graphics-write Interrupt Limit for CPU 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_interrupt_timer_limit_0_u { mmr_t sh_gfx_interrupt_timer_limit_0_regval; struct { @@ -505,22 +290,12 @@ mmr_t reserved_0 : 56; } sh_gfx_interrupt_timer_limit_0_s; } sh_gfx_interrupt_timer_limit_0_u_t; -#else -typedef union sh_gfx_interrupt_timer_limit_0_u { - mmr_t sh_gfx_interrupt_timer_limit_0_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t interrupt_timer_limit : 8; - } sh_gfx_interrupt_timer_limit_0_s; -} sh_gfx_interrupt_timer_limit_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_INTERRUPT_TIMER_LIMIT_1" */ /* Graphics-write Interrupt Limit for CPU 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_interrupt_timer_limit_1_u { mmr_t sh_gfx_interrupt_timer_limit_1_regval; struct { @@ -528,22 +303,12 @@ mmr_t reserved_0 : 56; } sh_gfx_interrupt_timer_limit_1_s; } sh_gfx_interrupt_timer_limit_1_u_t; -#else -typedef union sh_gfx_interrupt_timer_limit_1_u { - mmr_t sh_gfx_interrupt_timer_limit_1_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t interrupt_timer_limit : 8; - } sh_gfx_interrupt_timer_limit_1_s; -} sh_gfx_interrupt_timer_limit_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_WRITE_STATUS_0" */ /* Graphics Write Status for CPU 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_write_status_0_u { mmr_t sh_gfx_write_status_0_regval; struct { @@ -552,23 +317,12 @@ mmr_t re_enable_gfx_stall : 1; } sh_gfx_write_status_0_s; } sh_gfx_write_status_0_u_t; -#else -typedef union sh_gfx_write_status_0_u { - mmr_t sh_gfx_write_status_0_regval; - struct { - mmr_t re_enable_gfx_stall : 1; - mmr_t reserved_0 : 62; - mmr_t busy : 1; - } sh_gfx_write_status_0_s; -} sh_gfx_write_status_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_GFX_WRITE_STATUS_1" */ /* Graphics Write Status for CPU 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gfx_write_status_1_u { mmr_t sh_gfx_write_status_1_regval; struct { @@ -577,23 +331,12 @@ mmr_t re_enable_gfx_stall : 1; } sh_gfx_write_status_1_s; } sh_gfx_write_status_1_u_t; -#else -typedef union sh_gfx_write_status_1_u { - mmr_t sh_gfx_write_status_1_regval; - struct { - mmr_t re_enable_gfx_stall : 1; - mmr_t reserved_0 : 62; - mmr_t busy : 1; - } sh_gfx_write_status_1_s; -} sh_gfx_write_status_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_II_INT0" */ /* SHub II Interrupt 0 Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ii_int0_u { mmr_t sh_ii_int0_regval; struct { @@ -602,23 +345,12 @@ mmr_t reserved_0 : 55; } sh_ii_int0_s; } sh_ii_int0_u_t; -#else -typedef union sh_ii_int0_u { - mmr_t sh_ii_int0_regval; - struct { - mmr_t reserved_0 : 55; - mmr_t send : 1; - mmr_t idx : 8; - } sh_ii_int0_s; -} sh_ii_int0_u_t; -#endif /* ==================================================================== */ /* Register "SH_II_INT0_CONFIG" */ /* SHub II Interrupt 0 Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ii_int0_config_u { mmr_t sh_ii_int0_config_regval; struct { @@ -630,26 +362,12 @@ mmr_t reserved_1 : 14; } sh_ii_int0_config_s; } sh_ii_int0_config_u_t; -#else -typedef union sh_ii_int0_config_u { - mmr_t sh_ii_int0_config_regval; - struct { - mmr_t reserved_1 : 14; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_ii_int0_config_s; -} sh_ii_int0_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_II_INT0_ENABLE" */ /* SHub II Interrupt 0 Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ii_int0_enable_u { mmr_t sh_ii_int0_enable_regval; struct { @@ -657,22 +375,12 @@ mmr_t reserved_0 : 63; } sh_ii_int0_enable_s; } sh_ii_int0_enable_u_t; -#else -typedef union sh_ii_int0_enable_u { - mmr_t sh_ii_int0_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t ii_enable : 1; - } sh_ii_int0_enable_s; -} sh_ii_int0_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_II_INT1" */ /* SHub II Interrupt 1 Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ii_int1_u { mmr_t sh_ii_int1_regval; struct { @@ -681,23 +389,12 @@ mmr_t reserved_0 : 55; } sh_ii_int1_s; } sh_ii_int1_u_t; -#else -typedef union sh_ii_int1_u { - mmr_t sh_ii_int1_regval; - struct { - mmr_t reserved_0 : 55; - mmr_t send : 1; - mmr_t idx : 8; - } sh_ii_int1_s; -} sh_ii_int1_u_t; -#endif /* ==================================================================== */ /* Register "SH_II_INT1_CONFIG" */ /* SHub II Interrupt 1 Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ii_int1_config_u { mmr_t sh_ii_int1_config_regval; struct { @@ -709,26 +406,12 @@ mmr_t reserved_1 : 14; } sh_ii_int1_config_s; } sh_ii_int1_config_u_t; -#else -typedef union sh_ii_int1_config_u { - mmr_t sh_ii_int1_config_regval; - struct { - mmr_t reserved_1 : 14; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_ii_int1_config_s; -} sh_ii_int1_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_II_INT1_ENABLE" */ /* SHub II Interrupt 1 Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ii_int1_enable_u { mmr_t sh_ii_int1_enable_regval; struct { @@ -736,22 +419,12 @@ mmr_t reserved_0 : 63; } sh_ii_int1_enable_s; } sh_ii_int1_enable_u_t; -#else -typedef union sh_ii_int1_enable_u { - mmr_t sh_ii_int1_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t ii_enable : 1; - } sh_ii_int1_enable_s; -} sh_ii_int1_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_INT_NODE_ID_CONFIG" */ /* SHub Interrupt Node ID Configuration */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_int_node_id_config_u { mmr_t sh_int_node_id_config_regval; struct { @@ -760,23 +433,12 @@ mmr_t reserved_0 : 52; } sh_int_node_id_config_s; } sh_int_node_id_config_u_t; -#else -typedef union sh_int_node_id_config_u { - mmr_t sh_int_node_id_config_regval; - struct { - mmr_t reserved_0 : 52; - mmr_t id_sel : 1; - mmr_t node_id : 11; - } sh_int_node_id_config_s; -} sh_int_node_id_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_IPI_INT" */ /* SHub Inter-Processor Interrupt Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ipi_int_u { mmr_t sh_ipi_int_regval; struct { @@ -791,29 +453,12 @@ mmr_t send : 1; } sh_ipi_int_s; } sh_ipi_int_u_t; -#else -typedef union sh_ipi_int_u { - mmr_t sh_ipi_int_regval; - struct { - mmr_t send : 1; - mmr_t reserved_2 : 3; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_ipi_int_s; -} sh_ipi_int_u_t; -#endif /* ==================================================================== */ /* Register "SH_IPI_INT_ENABLE" */ /* SHub Inter-Processor Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ipi_int_enable_u { mmr_t sh_ipi_int_enable_regval; struct { @@ -821,22 +466,12 @@ mmr_t reserved_0 : 63; } sh_ipi_int_enable_s; } sh_ipi_int_enable_u_t; -#else -typedef union sh_ipi_int_enable_u { - mmr_t sh_ipi_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t pio_enable : 1; - } sh_ipi_int_enable_s; -} sh_ipi_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_LOCAL_INT0_CONFIG" */ /* SHub Local Interrupt 0 Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_local_int0_config_u { mmr_t sh_local_int0_config_regval; struct { @@ -850,28 +485,12 @@ mmr_t reserved_2 : 4; } sh_local_int0_config_s; } sh_local_int0_config_u_t; -#else -typedef union sh_local_int0_config_u { - mmr_t sh_local_int0_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_local_int0_config_s; -} sh_local_int0_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_LOCAL_INT0_ENABLE" */ /* SHub Local Interrupt 0 Enable */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_local_int0_enable_u { mmr_t sh_local_int0_enable_regval; struct { @@ -894,37 +513,12 @@ mmr_t reserved_1 : 48; } sh_local_int0_enable_s; } sh_local_int0_enable_u_t; -#else -typedef union sh_local_int0_enable_u { - mmr_t sh_local_int0_enable_regval; - struct { - mmr_t reserved_1 : 48; - mmr_t stop_clock : 1; - mmr_t l1_nmi_int : 1; - mmr_t uart_int : 1; - mmr_t system_shutdown_int : 1; - mmr_t reserved_0 : 1; - mmr_t xn_uce_int : 1; - mmr_t md_uce_int : 1; - mmr_t pi_uce_int : 1; - mmr_t xn_ce_int : 1; - mmr_t md_ce_int : 1; - mmr_t pi_ce_int : 1; - mmr_t ii_hw_int : 1; - mmr_t lb_hw_int : 1; - mmr_t xn_hw_int : 1; - mmr_t md_hw_int : 1; - mmr_t pi_hw_int : 1; - } sh_local_int0_enable_s; -} sh_local_int0_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_LOCAL_INT1_CONFIG" */ /* SHub Local Interrupt 1 Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_local_int1_config_u { mmr_t sh_local_int1_config_regval; struct { @@ -938,28 +532,12 @@ mmr_t reserved_2 : 4; } sh_local_int1_config_s; } sh_local_int1_config_u_t; -#else -typedef union sh_local_int1_config_u { - mmr_t sh_local_int1_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_local_int1_config_s; -} sh_local_int1_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_LOCAL_INT1_ENABLE" */ /* SHub Local Interrupt 1 Enable */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_local_int1_enable_u { mmr_t sh_local_int1_enable_regval; struct { @@ -982,37 +560,12 @@ mmr_t reserved_1 : 48; } sh_local_int1_enable_s; } sh_local_int1_enable_u_t; -#else -typedef union sh_local_int1_enable_u { - mmr_t sh_local_int1_enable_regval; - struct { - mmr_t reserved_1 : 48; - mmr_t stop_clock : 1; - mmr_t l1_nmi_int : 1; - mmr_t uart_int : 1; - mmr_t system_shutdown_int : 1; - mmr_t reserved_0 : 1; - mmr_t xn_uce_int : 1; - mmr_t md_uce_int : 1; - mmr_t pi_uce_int : 1; - mmr_t xn_ce_int : 1; - mmr_t md_ce_int : 1; - mmr_t pi_ce_int : 1; - mmr_t ii_hw_int : 1; - mmr_t lb_hw_int : 1; - mmr_t xn_hw_int : 1; - mmr_t md_hw_int : 1; - mmr_t pi_hw_int : 1; - } sh_local_int1_enable_s; -} sh_local_int1_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_LOCAL_INT2_CONFIG" */ /* SHub Local Interrupt 2 Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_local_int2_config_u { mmr_t sh_local_int2_config_regval; struct { @@ -1026,28 +579,12 @@ mmr_t reserved_2 : 4; } sh_local_int2_config_s; } sh_local_int2_config_u_t; -#else -typedef union sh_local_int2_config_u { - mmr_t sh_local_int2_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_local_int2_config_s; -} sh_local_int2_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_LOCAL_INT2_ENABLE" */ /* SHub Local Interrupt 2 Enable */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_local_int2_enable_u { mmr_t sh_local_int2_enable_regval; struct { @@ -1070,37 +607,12 @@ mmr_t reserved_1 : 48; } sh_local_int2_enable_s; } sh_local_int2_enable_u_t; -#else -typedef union sh_local_int2_enable_u { - mmr_t sh_local_int2_enable_regval; - struct { - mmr_t reserved_1 : 48; - mmr_t stop_clock : 1; - mmr_t l1_nmi_int : 1; - mmr_t uart_int : 1; - mmr_t system_shutdown_int : 1; - mmr_t reserved_0 : 1; - mmr_t xn_uce_int : 1; - mmr_t md_uce_int : 1; - mmr_t pi_uce_int : 1; - mmr_t xn_ce_int : 1; - mmr_t md_ce_int : 1; - mmr_t pi_ce_int : 1; - mmr_t ii_hw_int : 1; - mmr_t lb_hw_int : 1; - mmr_t xn_hw_int : 1; - mmr_t md_hw_int : 1; - mmr_t pi_hw_int : 1; - } sh_local_int2_enable_s; -} sh_local_int2_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_LOCAL_INT3_CONFIG" */ /* SHub Local Interrupt 3 Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_local_int3_config_u { mmr_t sh_local_int3_config_regval; struct { @@ -1114,28 +626,12 @@ mmr_t reserved_2 : 4; } sh_local_int3_config_s; } sh_local_int3_config_u_t; -#else -typedef union sh_local_int3_config_u { - mmr_t sh_local_int3_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_local_int3_config_s; -} sh_local_int3_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_LOCAL_INT3_ENABLE" */ /* SHub Local Interrupt 3 Enable */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_local_int3_enable_u { mmr_t sh_local_int3_enable_regval; struct { @@ -1158,37 +654,12 @@ mmr_t reserved_1 : 48; } sh_local_int3_enable_s; } sh_local_int3_enable_u_t; -#else -typedef union sh_local_int3_enable_u { - mmr_t sh_local_int3_enable_regval; - struct { - mmr_t reserved_1 : 48; - mmr_t stop_clock : 1; - mmr_t l1_nmi_int : 1; - mmr_t uart_int : 1; - mmr_t system_shutdown_int : 1; - mmr_t reserved_0 : 1; - mmr_t xn_uce_int : 1; - mmr_t md_uce_int : 1; - mmr_t pi_uce_int : 1; - mmr_t xn_ce_int : 1; - mmr_t md_ce_int : 1; - mmr_t pi_ce_int : 1; - mmr_t ii_hw_int : 1; - mmr_t lb_hw_int : 1; - mmr_t xn_hw_int : 1; - mmr_t md_hw_int : 1; - mmr_t pi_hw_int : 1; - } sh_local_int3_enable_s; -} sh_local_int3_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_LOCAL_INT4_CONFIG" */ /* SHub Local Interrupt 4 Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_local_int4_config_u { mmr_t sh_local_int4_config_regval; struct { @@ -1202,28 +673,12 @@ mmr_t reserved_2 : 4; } sh_local_int4_config_s; } sh_local_int4_config_u_t; -#else -typedef union sh_local_int4_config_u { - mmr_t sh_local_int4_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_local_int4_config_s; -} sh_local_int4_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_LOCAL_INT4_ENABLE" */ /* SHub Local Interrupt 4 Enable */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_local_int4_enable_u { mmr_t sh_local_int4_enable_regval; struct { @@ -1246,37 +701,12 @@ mmr_t reserved_1 : 48; } sh_local_int4_enable_s; } sh_local_int4_enable_u_t; -#else -typedef union sh_local_int4_enable_u { - mmr_t sh_local_int4_enable_regval; - struct { - mmr_t reserved_1 : 48; - mmr_t stop_clock : 1; - mmr_t l1_nmi_int : 1; - mmr_t uart_int : 1; - mmr_t system_shutdown_int : 1; - mmr_t reserved_0 : 1; - mmr_t xn_uce_int : 1; - mmr_t md_uce_int : 1; - mmr_t pi_uce_int : 1; - mmr_t xn_ce_int : 1; - mmr_t md_ce_int : 1; - mmr_t pi_ce_int : 1; - mmr_t ii_hw_int : 1; - mmr_t lb_hw_int : 1; - mmr_t xn_hw_int : 1; - mmr_t md_hw_int : 1; - mmr_t pi_hw_int : 1; - } sh_local_int4_enable_s; -} sh_local_int4_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_LOCAL_INT5_CONFIG" */ /* SHub Local Interrupt 5 Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_local_int5_config_u { mmr_t sh_local_int5_config_regval; struct { @@ -1290,28 +720,12 @@ mmr_t reserved_2 : 4; } sh_local_int5_config_s; } sh_local_int5_config_u_t; -#else -typedef union sh_local_int5_config_u { - mmr_t sh_local_int5_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_local_int5_config_s; -} sh_local_int5_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_LOCAL_INT5_ENABLE" */ /* SHub Local Interrupt 5 Enable */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_local_int5_enable_u { mmr_t sh_local_int5_enable_regval; struct { @@ -1334,37 +748,12 @@ mmr_t reserved_1 : 48; } sh_local_int5_enable_s; } sh_local_int5_enable_u_t; -#else -typedef union sh_local_int5_enable_u { - mmr_t sh_local_int5_enable_regval; - struct { - mmr_t reserved_1 : 48; - mmr_t stop_clock : 1; - mmr_t l1_nmi_int : 1; - mmr_t uart_int : 1; - mmr_t system_shutdown_int : 1; - mmr_t reserved_0 : 1; - mmr_t xn_uce_int : 1; - mmr_t md_uce_int : 1; - mmr_t pi_uce_int : 1; - mmr_t xn_ce_int : 1; - mmr_t md_ce_int : 1; - mmr_t pi_ce_int : 1; - mmr_t ii_hw_int : 1; - mmr_t lb_hw_int : 1; - mmr_t xn_hw_int : 1; - mmr_t md_hw_int : 1; - mmr_t pi_hw_int : 1; - } sh_local_int5_enable_s; -} sh_local_int5_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC0_ERR_INT_CONFIG" */ /* SHub Processor 0 Error Interrupt Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc0_err_int_config_u { mmr_t sh_proc0_err_int_config_regval; struct { @@ -1378,28 +767,12 @@ mmr_t reserved_2 : 4; } sh_proc0_err_int_config_s; } sh_proc0_err_int_config_u_t; -#else -typedef union sh_proc0_err_int_config_u { - mmr_t sh_proc0_err_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_proc0_err_int_config_s; -} sh_proc0_err_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC1_ERR_INT_CONFIG" */ /* SHub Processor 1 Error Interrupt Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc1_err_int_config_u { mmr_t sh_proc1_err_int_config_regval; struct { @@ -1413,28 +786,12 @@ mmr_t reserved_2 : 4; } sh_proc1_err_int_config_s; } sh_proc1_err_int_config_u_t; -#else -typedef union sh_proc1_err_int_config_u { - mmr_t sh_proc1_err_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_proc1_err_int_config_s; -} sh_proc1_err_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC2_ERR_INT_CONFIG" */ /* SHub Processor 2 Error Interrupt Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc2_err_int_config_u { mmr_t sh_proc2_err_int_config_regval; struct { @@ -1448,28 +805,12 @@ mmr_t reserved_2 : 4; } sh_proc2_err_int_config_s; } sh_proc2_err_int_config_u_t; -#else -typedef union sh_proc2_err_int_config_u { - mmr_t sh_proc2_err_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_proc2_err_int_config_s; -} sh_proc2_err_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC3_ERR_INT_CONFIG" */ /* SHub Processor 3 Error Interrupt Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc3_err_int_config_u { mmr_t sh_proc3_err_int_config_regval; struct { @@ -1483,28 +824,12 @@ mmr_t reserved_2 : 4; } sh_proc3_err_int_config_s; } sh_proc3_err_int_config_u_t; -#else -typedef union sh_proc3_err_int_config_u { - mmr_t sh_proc3_err_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_proc3_err_int_config_s; -} sh_proc3_err_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC0_ADV_INT_CONFIG" */ /* SHub Processor 0 Advisory Interrupt Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc0_adv_int_config_u { mmr_t sh_proc0_adv_int_config_regval; struct { @@ -1518,28 +843,12 @@ mmr_t reserved_2 : 4; } sh_proc0_adv_int_config_s; } sh_proc0_adv_int_config_u_t; -#else -typedef union sh_proc0_adv_int_config_u { - mmr_t sh_proc0_adv_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_proc0_adv_int_config_s; -} sh_proc0_adv_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC1_ADV_INT_CONFIG" */ /* SHub Processor 1 Advisory Interrupt Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc1_adv_int_config_u { mmr_t sh_proc1_adv_int_config_regval; struct { @@ -1553,28 +862,12 @@ mmr_t reserved_2 : 4; } sh_proc1_adv_int_config_s; } sh_proc1_adv_int_config_u_t; -#else -typedef union sh_proc1_adv_int_config_u { - mmr_t sh_proc1_adv_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_proc1_adv_int_config_s; -} sh_proc1_adv_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC2_ADV_INT_CONFIG" */ /* SHub Processor 2 Advisory Interrupt Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc2_adv_int_config_u { mmr_t sh_proc2_adv_int_config_regval; struct { @@ -1588,28 +881,12 @@ mmr_t reserved_2 : 4; } sh_proc2_adv_int_config_s; } sh_proc2_adv_int_config_u_t; -#else -typedef union sh_proc2_adv_int_config_u { - mmr_t sh_proc2_adv_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_proc2_adv_int_config_s; -} sh_proc2_adv_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC3_ADV_INT_CONFIG" */ /* SHub Processor 3 Advisory Interrupt Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc3_adv_int_config_u { mmr_t sh_proc3_adv_int_config_regval; struct { @@ -1623,28 +900,12 @@ mmr_t reserved_2 : 4; } sh_proc3_adv_int_config_s; } sh_proc3_adv_int_config_u_t; -#else -typedef union sh_proc3_adv_int_config_u { - mmr_t sh_proc3_adv_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_proc3_adv_int_config_s; -} sh_proc3_adv_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC0_ERR_INT_ENABLE" */ /* SHub Processor 0 Error Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc0_err_int_enable_u { mmr_t sh_proc0_err_int_enable_regval; struct { @@ -1652,22 +913,12 @@ mmr_t reserved_0 : 63; } sh_proc0_err_int_enable_s; } sh_proc0_err_int_enable_u_t; -#else -typedef union sh_proc0_err_int_enable_u { - mmr_t sh_proc0_err_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t proc0_err_enable : 1; - } sh_proc0_err_int_enable_s; -} sh_proc0_err_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC1_ERR_INT_ENABLE" */ /* SHub Processor 1 Error Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc1_err_int_enable_u { mmr_t sh_proc1_err_int_enable_regval; struct { @@ -1675,22 +926,12 @@ mmr_t reserved_0 : 63; } sh_proc1_err_int_enable_s; } sh_proc1_err_int_enable_u_t; -#else -typedef union sh_proc1_err_int_enable_u { - mmr_t sh_proc1_err_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t proc1_err_enable : 1; - } sh_proc1_err_int_enable_s; -} sh_proc1_err_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC2_ERR_INT_ENABLE" */ /* SHub Processor 2 Error Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc2_err_int_enable_u { mmr_t sh_proc2_err_int_enable_regval; struct { @@ -1698,22 +939,12 @@ mmr_t reserved_0 : 63; } sh_proc2_err_int_enable_s; } sh_proc2_err_int_enable_u_t; -#else -typedef union sh_proc2_err_int_enable_u { - mmr_t sh_proc2_err_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t proc2_err_enable : 1; - } sh_proc2_err_int_enable_s; -} sh_proc2_err_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC3_ERR_INT_ENABLE" */ /* SHub Processor 3 Error Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc3_err_int_enable_u { mmr_t sh_proc3_err_int_enable_regval; struct { @@ -1721,22 +952,12 @@ mmr_t reserved_0 : 63; } sh_proc3_err_int_enable_s; } sh_proc3_err_int_enable_u_t; -#else -typedef union sh_proc3_err_int_enable_u { - mmr_t sh_proc3_err_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t proc3_err_enable : 1; - } sh_proc3_err_int_enable_s; -} sh_proc3_err_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC0_ADV_INT_ENABLE" */ /* SHub Processor 0 Advisory Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc0_adv_int_enable_u { mmr_t sh_proc0_adv_int_enable_regval; struct { @@ -1744,22 +965,12 @@ mmr_t reserved_0 : 63; } sh_proc0_adv_int_enable_s; } sh_proc0_adv_int_enable_u_t; -#else -typedef union sh_proc0_adv_int_enable_u { - mmr_t sh_proc0_adv_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t proc0_adv_enable : 1; - } sh_proc0_adv_int_enable_s; -} sh_proc0_adv_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC1_ADV_INT_ENABLE" */ /* SHub Processor 1 Advisory Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc1_adv_int_enable_u { mmr_t sh_proc1_adv_int_enable_regval; struct { @@ -1767,22 +978,12 @@ mmr_t reserved_0 : 63; } sh_proc1_adv_int_enable_s; } sh_proc1_adv_int_enable_u_t; -#else -typedef union sh_proc1_adv_int_enable_u { - mmr_t sh_proc1_adv_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t proc1_adv_enable : 1; - } sh_proc1_adv_int_enable_s; -} sh_proc1_adv_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC2_ADV_INT_ENABLE" */ /* SHub Processor 2 Advisory Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc2_adv_int_enable_u { mmr_t sh_proc2_adv_int_enable_regval; struct { @@ -1790,22 +991,12 @@ mmr_t reserved_0 : 63; } sh_proc2_adv_int_enable_s; } sh_proc2_adv_int_enable_u_t; -#else -typedef union sh_proc2_adv_int_enable_u { - mmr_t sh_proc2_adv_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t proc2_adv_enable : 1; - } sh_proc2_adv_int_enable_s; -} sh_proc2_adv_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC3_ADV_INT_ENABLE" */ /* SHub Processor 3 Advisory Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc3_adv_int_enable_u { mmr_t sh_proc3_adv_int_enable_regval; struct { @@ -1813,22 +1004,12 @@ mmr_t reserved_0 : 63; } sh_proc3_adv_int_enable_s; } sh_proc3_adv_int_enable_u_t; -#else -typedef union sh_proc3_adv_int_enable_u { - mmr_t sh_proc3_adv_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t proc3_adv_enable : 1; - } sh_proc3_adv_int_enable_s; -} sh_proc3_adv_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROFILE_INT_CONFIG" */ /* SHub Profile Interrupt Configuration Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_profile_int_config_u { mmr_t sh_profile_int_config_regval; struct { @@ -1842,28 +1023,12 @@ mmr_t reserved_2 : 4; } sh_profile_int_config_s; } sh_profile_int_config_u_t; -#else -typedef union sh_profile_int_config_u { - mmr_t sh_profile_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_profile_int_config_s; -} sh_profile_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROFILE_INT_ENABLE" */ /* SHub Profile Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_profile_int_enable_u { mmr_t sh_profile_int_enable_regval; struct { @@ -1871,22 +1036,12 @@ mmr_t reserved_0 : 63; } sh_profile_int_enable_s; } sh_profile_int_enable_u_t; -#else -typedef union sh_profile_int_enable_u { - mmr_t sh_profile_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t profile_enable : 1; - } sh_profile_int_enable_s; -} sh_profile_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_RTC0_INT_CONFIG" */ /* SHub RTC 0 Interrupt Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_rtc0_int_config_u { mmr_t sh_rtc0_int_config_regval; struct { @@ -1900,28 +1055,12 @@ mmr_t reserved_2 : 4; } sh_rtc0_int_config_s; } sh_rtc0_int_config_u_t; -#else -typedef union sh_rtc0_int_config_u { - mmr_t sh_rtc0_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_rtc0_int_config_s; -} sh_rtc0_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_RTC0_INT_ENABLE" */ /* SHub RTC 0 Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_rtc0_int_enable_u { mmr_t sh_rtc0_int_enable_regval; struct { @@ -1929,22 +1068,12 @@ mmr_t reserved_0 : 63; } sh_rtc0_int_enable_s; } sh_rtc0_int_enable_u_t; -#else -typedef union sh_rtc0_int_enable_u { - mmr_t sh_rtc0_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t rtc0_enable : 1; - } sh_rtc0_int_enable_s; -} sh_rtc0_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_RTC1_INT_CONFIG" */ /* SHub RTC 1 Interrupt Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_rtc1_int_config_u { mmr_t sh_rtc1_int_config_regval; struct { @@ -1958,28 +1087,12 @@ mmr_t reserved_2 : 4; } sh_rtc1_int_config_s; } sh_rtc1_int_config_u_t; -#else -typedef union sh_rtc1_int_config_u { - mmr_t sh_rtc1_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_rtc1_int_config_s; -} sh_rtc1_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_RTC1_INT_ENABLE" */ /* SHub RTC 1 Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_rtc1_int_enable_u { mmr_t sh_rtc1_int_enable_regval; struct { @@ -1987,22 +1100,12 @@ mmr_t reserved_0 : 63; } sh_rtc1_int_enable_s; } sh_rtc1_int_enable_u_t; -#else -typedef union sh_rtc1_int_enable_u { - mmr_t sh_rtc1_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t rtc1_enable : 1; - } sh_rtc1_int_enable_s; -} sh_rtc1_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_RTC2_INT_CONFIG" */ /* SHub RTC 2 Interrupt Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_rtc2_int_config_u { mmr_t sh_rtc2_int_config_regval; struct { @@ -2016,28 +1119,12 @@ mmr_t reserved_2 : 4; } sh_rtc2_int_config_s; } sh_rtc2_int_config_u_t; -#else -typedef union sh_rtc2_int_config_u { - mmr_t sh_rtc2_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_rtc2_int_config_s; -} sh_rtc2_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_RTC2_INT_ENABLE" */ /* SHub RTC 2 Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_rtc2_int_enable_u { mmr_t sh_rtc2_int_enable_regval; struct { @@ -2045,22 +1132,12 @@ mmr_t reserved_0 : 63; } sh_rtc2_int_enable_s; } sh_rtc2_int_enable_u_t; -#else -typedef union sh_rtc2_int_enable_u { - mmr_t sh_rtc2_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t rtc2_enable : 1; - } sh_rtc2_int_enable_s; -} sh_rtc2_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_RTC3_INT_CONFIG" */ /* SHub RTC 3 Interrupt Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_rtc3_int_config_u { mmr_t sh_rtc3_int_config_regval; struct { @@ -2074,28 +1151,12 @@ mmr_t reserved_2 : 4; } sh_rtc3_int_config_s; } sh_rtc3_int_config_u_t; -#else -typedef union sh_rtc3_int_config_u { - mmr_t sh_rtc3_int_config_regval; - struct { - mmr_t reserved_2 : 4; - mmr_t idx : 8; - mmr_t reserved_1 : 2; - mmr_t base : 29; - mmr_t reserved_0 : 1; - mmr_t pid : 16; - mmr_t agt : 1; - mmr_t type : 3; - } sh_rtc3_int_config_s; -} sh_rtc3_int_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_RTC3_INT_ENABLE" */ /* SHub RTC 3 Interrupt Enable Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_rtc3_int_enable_u { mmr_t sh_rtc3_int_enable_regval; struct { @@ -2103,22 +1164,12 @@ mmr_t reserved_0 : 63; } sh_rtc3_int_enable_s; } sh_rtc3_int_enable_u_t; -#else -typedef union sh_rtc3_int_enable_u { - mmr_t sh_rtc3_int_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t rtc3_enable : 1; - } sh_rtc3_int_enable_s; -} sh_rtc3_int_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_EVENT_OCCURRED" */ /* SHub Interrupt Event Occurred */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_event_occurred_u { mmr_t sh_event_occurred_regval; struct { @@ -2156,52 +1207,12 @@ mmr_t reserved_0 : 33; } sh_event_occurred_s; } sh_event_occurred_u_t; -#else -typedef union sh_event_occurred_u { - mmr_t sh_event_occurred_regval; - struct { - mmr_t reserved_0 : 33; - mmr_t ii_int1 : 1; - mmr_t ii_int0 : 1; - mmr_t ipi_int : 1; - mmr_t profile_int : 1; - mmr_t rtc3_int : 1; - mmr_t rtc2_int : 1; - mmr_t rtc1_int : 1; - mmr_t rtc0_int : 1; - mmr_t stop_clock : 1; - mmr_t l1_nmi_int : 1; - mmr_t uart_int : 1; - mmr_t system_shutdown_int : 1; - mmr_t proc3_err_int : 1; - mmr_t proc2_err_int : 1; - mmr_t proc1_err_int : 1; - mmr_t proc0_err_int : 1; - mmr_t proc3_adv_int : 1; - mmr_t proc2_adv_int : 1; - mmr_t proc1_adv_int : 1; - mmr_t proc0_adv_int : 1; - mmr_t xn_uce_int : 1; - mmr_t md_uce_int : 1; - mmr_t pi_uce_int : 1; - mmr_t xn_ce_int : 1; - mmr_t md_ce_int : 1; - mmr_t pi_ce_int : 1; - mmr_t ii_hw_int : 1; - mmr_t lb_hw_int : 1; - mmr_t xn_hw_int : 1; - mmr_t md_hw_int : 1; - mmr_t pi_hw_int : 1; - } sh_event_occurred_s; -} sh_event_occurred_u_t; -#endif /* ==================================================================== */ /* Register "SH_EVENT_OVERFLOW" */ /* SHub Interrupt Event Occurred Overflow */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_event_overflow_u { mmr_t sh_event_overflow_regval; struct { @@ -2236,49 +1247,12 @@ mmr_t reserved_0 : 36; } sh_event_overflow_s; } sh_event_overflow_u_t; -#else -typedef union sh_event_overflow_u { - mmr_t sh_event_overflow_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t profile_int : 1; - mmr_t rtc3_int : 1; - mmr_t rtc2_int : 1; - mmr_t rtc1_int : 1; - mmr_t rtc0_int : 1; - mmr_t stop_clock : 1; - mmr_t l1_nmi_int : 1; - mmr_t uart_int : 1; - mmr_t system_shutdown_int : 1; - mmr_t proc3_err_int : 1; - mmr_t proc2_err_int : 1; - mmr_t proc1_err_int : 1; - mmr_t proc0_err_int : 1; - mmr_t proc3_adv_int : 1; - mmr_t proc2_adv_int : 1; - mmr_t proc1_adv_int : 1; - mmr_t proc0_adv_int : 1; - mmr_t xn_uce_int : 1; - mmr_t md_uce_int : 1; - mmr_t pi_uce_int : 1; - mmr_t xn_ce_int : 1; - mmr_t md_ce_int : 1; - mmr_t pi_ce_int : 1; - mmr_t ii_hw_int : 1; - mmr_t lb_hw_int : 1; - mmr_t xn_hw_int : 1; - mmr_t md_hw_int : 1; - mmr_t pi_hw_int : 1; - } sh_event_overflow_s; -} sh_event_overflow_u_t; -#endif /* ==================================================================== */ /* Register "SH_JUNK_BUS_TIME" */ /* Junk Bus Timing */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_junk_bus_time_u { mmr_t sh_junk_bus_time_regval; struct { @@ -2289,25 +1263,12 @@ mmr_t reserved_0 : 32; } sh_junk_bus_time_s; } sh_junk_bus_time_u_t; -#else -typedef union sh_junk_bus_time_u { - mmr_t sh_junk_bus_time_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t uart_enable : 8; - mmr_t uart_setup_hold : 8; - mmr_t fprom_enable : 8; - mmr_t fprom_setup_hold : 8; - } sh_junk_bus_time_s; -} sh_junk_bus_time_u_t; -#endif /* ==================================================================== */ /* Register "SH_JUNK_LATCH_TIME" */ /* Junk Bus Latch Timing */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_junk_latch_time_u { mmr_t sh_junk_latch_time_regval; struct { @@ -2315,22 +1276,12 @@ mmr_t reserved_0 : 61; } sh_junk_latch_time_s; } sh_junk_latch_time_u_t; -#else -typedef union sh_junk_latch_time_u { - mmr_t sh_junk_latch_time_regval; - struct { - mmr_t reserved_0 : 61; - mmr_t setup_hold : 3; - } sh_junk_latch_time_s; -} sh_junk_latch_time_u_t; -#endif /* ==================================================================== */ /* Register "SH_JUNK_NACK_RESET" */ /* Junk Bus Nack Counter Reset */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_junk_nack_reset_u { mmr_t sh_junk_nack_reset_regval; struct { @@ -2338,22 +1289,12 @@ mmr_t reserved_0 : 63; } sh_junk_nack_reset_s; } sh_junk_nack_reset_u_t; -#else -typedef union sh_junk_nack_reset_u { - mmr_t sh_junk_nack_reset_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t pulse : 1; - } sh_junk_nack_reset_s; -} sh_junk_nack_reset_u_t; -#endif /* ==================================================================== */ /* Register "SH_JUNK_BUS_LED0" */ /* Junk Bus LED0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_junk_bus_led0_u { mmr_t sh_junk_bus_led0_regval; struct { @@ -2361,22 +1302,12 @@ mmr_t reserved_0 : 56; } sh_junk_bus_led0_s; } sh_junk_bus_led0_u_t; -#else -typedef union sh_junk_bus_led0_u { - mmr_t sh_junk_bus_led0_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t led0_data : 8; - } sh_junk_bus_led0_s; -} sh_junk_bus_led0_u_t; -#endif /* ==================================================================== */ /* Register "SH_JUNK_BUS_LED1" */ /* Junk Bus LED1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_junk_bus_led1_u { mmr_t sh_junk_bus_led1_regval; struct { @@ -2384,22 +1315,12 @@ mmr_t reserved_0 : 56; } sh_junk_bus_led1_s; } sh_junk_bus_led1_u_t; -#else -typedef union sh_junk_bus_led1_u { - mmr_t sh_junk_bus_led1_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t led1_data : 8; - } sh_junk_bus_led1_s; -} sh_junk_bus_led1_u_t; -#endif /* ==================================================================== */ /* Register "SH_JUNK_BUS_LED2" */ /* Junk Bus LED2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_junk_bus_led2_u { mmr_t sh_junk_bus_led2_regval; struct { @@ -2407,22 +1328,12 @@ mmr_t reserved_0 : 56; } sh_junk_bus_led2_s; } sh_junk_bus_led2_u_t; -#else -typedef union sh_junk_bus_led2_u { - mmr_t sh_junk_bus_led2_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t led2_data : 8; - } sh_junk_bus_led2_s; -} sh_junk_bus_led2_u_t; -#endif /* ==================================================================== */ /* Register "SH_JUNK_BUS_LED3" */ /* Junk Bus LED3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_junk_bus_led3_u { mmr_t sh_junk_bus_led3_regval; struct { @@ -2430,22 +1341,12 @@ mmr_t reserved_0 : 56; } sh_junk_bus_led3_s; } sh_junk_bus_led3_u_t; -#else -typedef union sh_junk_bus_led3_u { - mmr_t sh_junk_bus_led3_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t led3_data : 8; - } sh_junk_bus_led3_s; -} sh_junk_bus_led3_u_t; -#endif /* ==================================================================== */ /* Register "SH_JUNK_ERROR_STATUS" */ /* Junk Bus Error Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_junk_error_status_u { mmr_t sh_junk_error_status_regval; struct { @@ -2457,26 +1358,12 @@ mmr_t reserved_1 : 3; } sh_junk_error_status_s; } sh_junk_error_status_u_t; -#else -typedef union sh_junk_error_status_u { - mmr_t sh_junk_error_status_regval; - struct { - mmr_t reserved_1 : 3; - mmr_t status : 4; - mmr_t mode : 1; - mmr_t cmd : 8; - mmr_t reserved_0 : 1; - mmr_t address : 47; - } sh_junk_error_status_s; -} sh_junk_error_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_LLP_STAT" */ /* This register describes the LLP status. */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_llp_stat_u { mmr_t sh_ni0_llp_stat_regval; struct { @@ -2484,22 +1371,12 @@ mmr_t reserved_0 : 60; } sh_ni0_llp_stat_s; } sh_ni0_llp_stat_u_t; -#else -typedef union sh_ni0_llp_stat_u { - mmr_t sh_ni0_llp_stat_regval; - struct { - mmr_t reserved_0 : 60; - mmr_t link_reset_state : 4; - } sh_ni0_llp_stat_s; -} sh_ni0_llp_stat_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_LLP_RESET" */ /* Writing issues a reset to the network interface */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_llp_reset_u { mmr_t sh_ni0_llp_reset_regval; struct { @@ -2508,23 +1385,12 @@ mmr_t reserved_0 : 62; } sh_ni0_llp_reset_s; } sh_ni0_llp_reset_u_t; -#else -typedef union sh_ni0_llp_reset_u { - mmr_t sh_ni0_llp_reset_regval; - struct { - mmr_t reserved_0 : 62; - mmr_t warm : 1; - mmr_t link : 1; - } sh_ni0_llp_reset_s; -} sh_ni0_llp_reset_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_LLP_RESET_EN" */ /* Controls LLP warm reset propagation */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_llp_reset_en_u { mmr_t sh_ni0_llp_reset_en_regval; struct { @@ -2532,22 +1398,12 @@ mmr_t reserved_0 : 63; } sh_ni0_llp_reset_en_s; } sh_ni0_llp_reset_en_u_t; -#else -typedef union sh_ni0_llp_reset_en_u { - mmr_t sh_ni0_llp_reset_en_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t ok : 1; - } sh_ni0_llp_reset_en_s; -} sh_ni0_llp_reset_en_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_LLP_CHAN_MODE" */ /* Sets the signaling mode of LLP and channel */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_llp_chan_mode_u { mmr_t sh_ni0_llp_chan_mode_regval; struct { @@ -2559,26 +1415,12 @@ mmr_t reserved_0 : 59; } sh_ni0_llp_chan_mode_s; } sh_ni0_llp_chan_mode_u_t; -#else -typedef union sh_ni0_llp_chan_mode_u { - mmr_t sh_ni0_llp_chan_mode_regval; - struct { - mmr_t reserved_0 : 59; - mmr_t enable_clkquad : 1; - mmr_t enable_rmt_ft_upd : 1; - mmr_t enable_tuning : 1; - mmr_t ac_encode : 1; - mmr_t bitmode32 : 1; - } sh_ni0_llp_chan_mode_s; -} sh_ni0_llp_chan_mode_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_LLP_CONFIG" */ /* Sets the configuration of LLP and channel */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_llp_config_u { mmr_t sh_ni0_llp_config_regval; struct { @@ -2589,24 +1431,11 @@ mmr_t reserved_0 : 26; } sh_ni0_llp_config_s; } sh_ni0_llp_config_u_t; -#else -typedef union sh_ni0_llp_config_u { - mmr_t sh_ni0_llp_config_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t ftu_time : 12; - mmr_t nulltimeout : 6; - mmr_t maxretry : 10; - mmr_t maxburst : 10; - } sh_ni0_llp_config_s; -} sh_ni0_llp_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_LLP_TEST_CTL" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_llp_test_ctl_u { mmr_t sh_ni0_llp_test_ctl_regval; struct { @@ -2627,77 +1456,36 @@ mmr_t reserved_2 : 1; } sh_ni0_llp_test_ctl_s; } sh_ni0_llp_test_ctl_u_t; -#else -typedef union sh_ni0_llp_test_ctl_u { - mmr_t sh_ni0_llp_test_ctl_regval; - struct { - mmr_t reserved_2 : 1; - mmr_t cberror : 1; - mmr_t captured : 1; - mmr_t fakesnerror : 1; - mmr_t sendsnerror : 1; - mmr_t sendcberror : 1; - mmr_t capturecbonly : 1; - mmr_t armcapture : 1; - mmr_t noise_mode : 2; - mmr_t lfsr_mode : 2; - mmr_t reserved_1 : 2; - mmr_t wire_sel : 6; - mmr_t reserved_0 : 2; - mmr_t send_test_mode : 2; - mmr_t pattern : 40; - } sh_ni0_llp_test_ctl_s; -} sh_ni0_llp_test_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_LLP_CAPT_WD1" */ /* low order 64-bit captured word */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_ni0_llp_capt_wd1_u { - mmr_t sh_ni0_llp_capt_wd1_regval; - struct { - mmr_t data : 64; - } sh_ni0_llp_capt_wd1_s; -} sh_ni0_llp_capt_wd1_u_t; -#else typedef union sh_ni0_llp_capt_wd1_u { mmr_t sh_ni0_llp_capt_wd1_regval; struct { mmr_t data : 64; } sh_ni0_llp_capt_wd1_s; } sh_ni0_llp_capt_wd1_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_LLP_CAPT_WD2" */ /* high order 64-bit captured word */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_llp_capt_wd2_u { mmr_t sh_ni0_llp_capt_wd2_regval; struct { mmr_t data : 64; } sh_ni0_llp_capt_wd2_s; } sh_ni0_llp_capt_wd2_u_t; -#else -typedef union sh_ni0_llp_capt_wd2_u { - mmr_t sh_ni0_llp_capt_wd2_regval; - struct { - mmr_t data : 64; - } sh_ni0_llp_capt_wd2_s; -} sh_ni0_llp_capt_wd2_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_LLP_CAPT_SBCB" */ /* captured sideband, sequence, and CRC */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_llp_capt_sbcb_u { mmr_t sh_ni0_llp_capt_sbcb_regval; struct { @@ -2711,27 +1499,11 @@ mmr_t reserved_0 : 27; } sh_ni0_llp_capt_sbcb_s; } sh_ni0_llp_capt_sbcb_u_t; -#else -typedef union sh_ni0_llp_capt_sbcb_u { - mmr_t sh_ni0_llp_capt_sbcb_regval; - struct { - mmr_t reserved_0 : 27; - mmr_t chargeunderflow : 1; - mmr_t chargeoverflow : 1; - mmr_t fakedallsnerrors : 1; - mmr_t sentallsnerrors : 1; - mmr_t sentallcberrors : 1; - mmr_t capturedrcvcrc : 16; - mmr_t capturedrcvsbsn : 16; - } sh_ni0_llp_capt_sbcb_s; -} sh_ni0_llp_capt_sbcb_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_LLP_ERR" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_llp_err_u { mmr_t sh_ni0_llp_err_regval; struct { @@ -2747,30 +1519,12 @@ mmr_t reserved_0 : 11; } sh_ni0_llp_err_s; } sh_ni0_llp_err_u_t; -#else -typedef union sh_ni0_llp_err_u { - mmr_t sh_ni0_llp_err_regval; - struct { - mmr_t reserved_0 : 11; - mmr_t wire_overflow : 1; - mmr_t wire_cnt : 24; - mmr_t power_not_ok : 1; - mmr_t squash : 1; - mmr_t rcv_link_reset : 1; - mmr_t retry_timeout : 1; - mmr_t retry_count : 8; - mmr_t rx_cb_err_count : 8; - mmr_t rx_sn_err_count : 8; - } sh_ni0_llp_err_s; -} sh_ni0_llp_err_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_LLP_STAT" */ /* This register describes the LLP status. */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_llp_stat_u { mmr_t sh_ni1_llp_stat_regval; struct { @@ -2778,22 +1532,12 @@ mmr_t reserved_0 : 60; } sh_ni1_llp_stat_s; } sh_ni1_llp_stat_u_t; -#else -typedef union sh_ni1_llp_stat_u { - mmr_t sh_ni1_llp_stat_regval; - struct { - mmr_t reserved_0 : 60; - mmr_t link_reset_state : 4; - } sh_ni1_llp_stat_s; -} sh_ni1_llp_stat_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_LLP_RESET" */ /* Writing issues a reset to the network interface */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_llp_reset_u { mmr_t sh_ni1_llp_reset_regval; struct { @@ -2802,23 +1546,12 @@ mmr_t reserved_0 : 62; } sh_ni1_llp_reset_s; } sh_ni1_llp_reset_u_t; -#else -typedef union sh_ni1_llp_reset_u { - mmr_t sh_ni1_llp_reset_regval; - struct { - mmr_t reserved_0 : 62; - mmr_t warm : 1; - mmr_t link : 1; - } sh_ni1_llp_reset_s; -} sh_ni1_llp_reset_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_LLP_RESET_EN" */ /* Controls LLP warm reset propagation */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_llp_reset_en_u { mmr_t sh_ni1_llp_reset_en_regval; struct { @@ -2826,22 +1559,12 @@ mmr_t reserved_0 : 63; } sh_ni1_llp_reset_en_s; } sh_ni1_llp_reset_en_u_t; -#else -typedef union sh_ni1_llp_reset_en_u { - mmr_t sh_ni1_llp_reset_en_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t ok : 1; - } sh_ni1_llp_reset_en_s; -} sh_ni1_llp_reset_en_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_LLP_CHAN_MODE" */ /* Sets the signaling mode of LLP and channel */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_llp_chan_mode_u { mmr_t sh_ni1_llp_chan_mode_regval; struct { @@ -2853,26 +1576,12 @@ mmr_t reserved_0 : 59; } sh_ni1_llp_chan_mode_s; } sh_ni1_llp_chan_mode_u_t; -#else -typedef union sh_ni1_llp_chan_mode_u { - mmr_t sh_ni1_llp_chan_mode_regval; - struct { - mmr_t reserved_0 : 59; - mmr_t enable_clkquad : 1; - mmr_t enable_rmt_ft_upd : 1; - mmr_t enable_tuning : 1; - mmr_t ac_encode : 1; - mmr_t bitmode32 : 1; - } sh_ni1_llp_chan_mode_s; -} sh_ni1_llp_chan_mode_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_LLP_CONFIG" */ /* Sets the configuration of LLP and channel */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_llp_config_u { mmr_t sh_ni1_llp_config_regval; struct { @@ -2883,24 +1592,11 @@ mmr_t reserved_0 : 26; } sh_ni1_llp_config_s; } sh_ni1_llp_config_u_t; -#else -typedef union sh_ni1_llp_config_u { - mmr_t sh_ni1_llp_config_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t ftu_time : 12; - mmr_t nulltimeout : 6; - mmr_t maxretry : 10; - mmr_t maxburst : 10; - } sh_ni1_llp_config_s; -} sh_ni1_llp_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_LLP_TEST_CTL" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_llp_test_ctl_u { mmr_t sh_ni1_llp_test_ctl_regval; struct { @@ -2921,77 +1617,36 @@ mmr_t reserved_2 : 1; } sh_ni1_llp_test_ctl_s; } sh_ni1_llp_test_ctl_u_t; -#else -typedef union sh_ni1_llp_test_ctl_u { - mmr_t sh_ni1_llp_test_ctl_regval; - struct { - mmr_t reserved_2 : 1; - mmr_t cberror : 1; - mmr_t captured : 1; - mmr_t fakesnerror : 1; - mmr_t sendsnerror : 1; - mmr_t sendcberror : 1; - mmr_t capturecbonly : 1; - mmr_t armcapture : 1; - mmr_t noise_mode : 2; - mmr_t lfsr_mode : 2; - mmr_t reserved_1 : 2; - mmr_t wire_sel : 6; - mmr_t reserved_0 : 2; - mmr_t send_test_mode : 2; - mmr_t pattern : 40; - } sh_ni1_llp_test_ctl_s; -} sh_ni1_llp_test_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_LLP_CAPT_WD1" */ /* low order 64-bit captured word */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_ni1_llp_capt_wd1_u { - mmr_t sh_ni1_llp_capt_wd1_regval; - struct { - mmr_t data : 64; - } sh_ni1_llp_capt_wd1_s; -} sh_ni1_llp_capt_wd1_u_t; -#else typedef union sh_ni1_llp_capt_wd1_u { mmr_t sh_ni1_llp_capt_wd1_regval; struct { mmr_t data : 64; } sh_ni1_llp_capt_wd1_s; } sh_ni1_llp_capt_wd1_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_LLP_CAPT_WD2" */ /* high order 64-bit captured word */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_ni1_llp_capt_wd2_u { - mmr_t sh_ni1_llp_capt_wd2_regval; - struct { - mmr_t data : 64; - } sh_ni1_llp_capt_wd2_s; -} sh_ni1_llp_capt_wd2_u_t; -#else typedef union sh_ni1_llp_capt_wd2_u { mmr_t sh_ni1_llp_capt_wd2_regval; struct { mmr_t data : 64; } sh_ni1_llp_capt_wd2_s; } sh_ni1_llp_capt_wd2_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_LLP_CAPT_SBCB" */ /* captured sideband, sequence, and CRC */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_llp_capt_sbcb_u { mmr_t sh_ni1_llp_capt_sbcb_regval; struct { @@ -3005,27 +1660,11 @@ mmr_t reserved_0 : 27; } sh_ni1_llp_capt_sbcb_s; } sh_ni1_llp_capt_sbcb_u_t; -#else -typedef union sh_ni1_llp_capt_sbcb_u { - mmr_t sh_ni1_llp_capt_sbcb_regval; - struct { - mmr_t reserved_0 : 27; - mmr_t chargeunderflow : 1; - mmr_t chargeoverflow : 1; - mmr_t fakedallsnerrors : 1; - mmr_t sentallsnerrors : 1; - mmr_t sentallcberrors : 1; - mmr_t capturedrcvcrc : 16; - mmr_t capturedrcvsbsn : 16; - } sh_ni1_llp_capt_sbcb_s; -} sh_ni1_llp_capt_sbcb_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_LLP_ERR" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_llp_err_u { mmr_t sh_ni1_llp_err_regval; struct { @@ -3041,29 +1680,11 @@ mmr_t reserved_0 : 11; } sh_ni1_llp_err_s; } sh_ni1_llp_err_u_t; -#else -typedef union sh_ni1_llp_err_u { - mmr_t sh_ni1_llp_err_regval; - struct { - mmr_t reserved_0 : 11; - mmr_t wire_overflow : 1; - mmr_t wire_cnt : 24; - mmr_t power_not_ok : 1; - mmr_t squash : 1; - mmr_t rcv_link_reset : 1; - mmr_t retry_timeout : 1; - mmr_t retry_count : 8; - mmr_t rx_cb_err_count : 8; - mmr_t rx_sn_err_count : 8; - } sh_ni1_llp_err_s; -} sh_ni1_llp_err_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_LLP_TO_FIFO02_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_llp_to_fifo02_flow_u { mmr_t sh_xnni0_llp_to_fifo02_flow_regval; struct { @@ -3084,34 +1705,11 @@ mmr_t reserved_6 : 2; } sh_xnni0_llp_to_fifo02_flow_s; } sh_xnni0_llp_to_fifo02_flow_u_t; -#else -typedef union sh_xnni0_llp_to_fifo02_flow_u { - mmr_t sh_xnni0_llp_to_fifo02_flow_regval; - struct { - mmr_t reserved_6 : 2; - mmr_t credit_vc2_cap : 6; - mmr_t reserved_5 : 2; - mmr_t credit_vc2_dyn : 6; - mmr_t reserved_4 : 10; - mmr_t credit_vc0_cap : 6; - mmr_t reserved_3 : 2; - mmr_t credit_vc0_dyn : 6; - mmr_t reserved_2 : 8; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t debit_vc2_withhold : 6; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnni0_llp_to_fifo02_flow_s; -} sh_xnni0_llp_to_fifo02_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_LLP_TO_FIFO13_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_llp_to_fifo13_flow_u { mmr_t sh_xnni0_llp_to_fifo13_flow_regval; struct { @@ -3132,34 +1730,11 @@ mmr_t reserved_6 : 2; } sh_xnni0_llp_to_fifo13_flow_s; } sh_xnni0_llp_to_fifo13_flow_u_t; -#else -typedef union sh_xnni0_llp_to_fifo13_flow_u { - mmr_t sh_xnni0_llp_to_fifo13_flow_regval; - struct { - mmr_t reserved_6 : 2; - mmr_t credit_vc2_cap : 6; - mmr_t reserved_5 : 2; - mmr_t credit_vc2_dyn : 6; - mmr_t reserved_4 : 10; - mmr_t credit_vc0_cap : 6; - mmr_t reserved_3 : 2; - mmr_t credit_vc0_dyn : 6; - mmr_t reserved_2 : 8; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t debit_vc2_withhold : 6; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnni0_llp_to_fifo13_flow_s; -} sh_xnni0_llp_to_fifo13_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_LLP_DEBIT_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_llp_debit_flow_u { mmr_t sh_xnni0_llp_debit_flow_regval; struct { @@ -3181,35 +1756,11 @@ mmr_t reserved_7 : 3; } sh_xnni0_llp_debit_flow_s; } sh_xnni0_llp_debit_flow_u_t; -#else -typedef union sh_xnni0_llp_debit_flow_u { - mmr_t sh_xnni0_llp_debit_flow_regval; - struct { - mmr_t reserved_7 : 3; - mmr_t debit_vc3_cap : 5; - mmr_t reserved_6 : 3; - mmr_t debit_vc3_dyn : 5; - mmr_t reserved_5 : 3; - mmr_t debit_vc2_cap : 5; - mmr_t reserved_4 : 3; - mmr_t debit_vc2_dyn : 5; - mmr_t reserved_3 : 3; - mmr_t debit_vc1_cap : 5; - mmr_t reserved_2 : 3; - mmr_t debit_vc1_dyn : 5; - mmr_t reserved_1 : 3; - mmr_t debit_vc0_cap : 5; - mmr_t reserved_0 : 3; - mmr_t debit_vc0_dyn : 5; - } sh_xnni0_llp_debit_flow_s; -} sh_xnni0_llp_debit_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_LINK_0_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_link_0_flow_u { mmr_t sh_xnni0_link_0_flow_regval; struct { @@ -3224,28 +1775,11 @@ mmr_t reserved_3 : 33; } sh_xnni0_link_0_flow_s; } sh_xnni0_link_0_flow_u_t; -#else -typedef union sh_xnni0_link_0_flow_u { - mmr_t sh_xnni0_link_0_flow_regval; - struct { - mmr_t reserved_3 : 33; - mmr_t credit_vc0_cap : 7; - mmr_t reserved_2 : 1; - mmr_t credit_vc0_dyn : 7; - mmr_t reserved_1 : 1; - mmr_t credit_vc0_test : 7; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnni0_link_0_flow_s; -} sh_xnni0_link_0_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_LINK_1_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_link_1_flow_u { mmr_t sh_xnni0_link_1_flow_regval; struct { @@ -3260,28 +1794,11 @@ mmr_t reserved_3 : 33; } sh_xnni0_link_1_flow_s; } sh_xnni0_link_1_flow_u_t; -#else -typedef union sh_xnni0_link_1_flow_u { - mmr_t sh_xnni0_link_1_flow_regval; - struct { - mmr_t reserved_3 : 33; - mmr_t credit_vc1_cap : 7; - mmr_t reserved_2 : 1; - mmr_t credit_vc1_dyn : 7; - mmr_t reserved_1 : 1; - mmr_t credit_vc1_test : 7; - mmr_t debit_vc1_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc1_withhold : 6; - } sh_xnni0_link_1_flow_s; -} sh_xnni0_link_1_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_LINK_2_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_link_2_flow_u { mmr_t sh_xnni0_link_2_flow_regval; struct { @@ -3296,28 +1813,11 @@ mmr_t reserved_3 : 33; } sh_xnni0_link_2_flow_s; } sh_xnni0_link_2_flow_u_t; -#else -typedef union sh_xnni0_link_2_flow_u { - mmr_t sh_xnni0_link_2_flow_regval; - struct { - mmr_t reserved_3 : 33; - mmr_t credit_vc2_cap : 7; - mmr_t reserved_2 : 1; - mmr_t credit_vc2_dyn : 7; - mmr_t reserved_1 : 1; - mmr_t credit_vc2_test : 7; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc2_withhold : 6; - } sh_xnni0_link_2_flow_s; -} sh_xnni0_link_2_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_LINK_3_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_link_3_flow_u { mmr_t sh_xnni0_link_3_flow_regval; struct { @@ -3332,28 +1832,11 @@ mmr_t reserved_3 : 33; } sh_xnni0_link_3_flow_s; } sh_xnni0_link_3_flow_u_t; -#else -typedef union sh_xnni0_link_3_flow_u { - mmr_t sh_xnni0_link_3_flow_regval; - struct { - mmr_t reserved_3 : 33; - mmr_t credit_vc3_cap : 7; - mmr_t reserved_2 : 1; - mmr_t credit_vc3_dyn : 7; - mmr_t reserved_1 : 1; - mmr_t credit_vc3_test : 7; - mmr_t debit_vc3_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc3_withhold : 6; - } sh_xnni0_link_3_flow_s; -} sh_xnni0_link_3_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_LLP_TO_FIFO02_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_llp_to_fifo02_flow_u { mmr_t sh_xnni1_llp_to_fifo02_flow_regval; struct { @@ -3374,34 +1857,11 @@ mmr_t reserved_6 : 2; } sh_xnni1_llp_to_fifo02_flow_s; } sh_xnni1_llp_to_fifo02_flow_u_t; -#else -typedef union sh_xnni1_llp_to_fifo02_flow_u { - mmr_t sh_xnni1_llp_to_fifo02_flow_regval; - struct { - mmr_t reserved_6 : 2; - mmr_t credit_vc2_cap : 6; - mmr_t reserved_5 : 2; - mmr_t credit_vc2_dyn : 6; - mmr_t reserved_4 : 10; - mmr_t credit_vc0_cap : 6; - mmr_t reserved_3 : 2; - mmr_t credit_vc0_dyn : 6; - mmr_t reserved_2 : 8; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t debit_vc2_withhold : 6; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnni1_llp_to_fifo02_flow_s; -} sh_xnni1_llp_to_fifo02_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_LLP_TO_FIFO13_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_llp_to_fifo13_flow_u { mmr_t sh_xnni1_llp_to_fifo13_flow_regval; struct { @@ -3422,34 +1882,11 @@ mmr_t reserved_6 : 2; } sh_xnni1_llp_to_fifo13_flow_s; } sh_xnni1_llp_to_fifo13_flow_u_t; -#else -typedef union sh_xnni1_llp_to_fifo13_flow_u { - mmr_t sh_xnni1_llp_to_fifo13_flow_regval; - struct { - mmr_t reserved_6 : 2; - mmr_t credit_vc2_cap : 6; - mmr_t reserved_5 : 2; - mmr_t credit_vc2_dyn : 6; - mmr_t reserved_4 : 10; - mmr_t credit_vc0_cap : 6; - mmr_t reserved_3 : 2; - mmr_t credit_vc0_dyn : 6; - mmr_t reserved_2 : 8; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t debit_vc2_withhold : 6; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnni1_llp_to_fifo13_flow_s; -} sh_xnni1_llp_to_fifo13_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_LLP_DEBIT_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_llp_debit_flow_u { mmr_t sh_xnni1_llp_debit_flow_regval; struct { @@ -3471,35 +1908,11 @@ mmr_t reserved_7 : 3; } sh_xnni1_llp_debit_flow_s; } sh_xnni1_llp_debit_flow_u_t; -#else -typedef union sh_xnni1_llp_debit_flow_u { - mmr_t sh_xnni1_llp_debit_flow_regval; - struct { - mmr_t reserved_7 : 3; - mmr_t debit_vc3_cap : 5; - mmr_t reserved_6 : 3; - mmr_t debit_vc3_dyn : 5; - mmr_t reserved_5 : 3; - mmr_t debit_vc2_cap : 5; - mmr_t reserved_4 : 3; - mmr_t debit_vc2_dyn : 5; - mmr_t reserved_3 : 3; - mmr_t debit_vc1_cap : 5; - mmr_t reserved_2 : 3; - mmr_t debit_vc1_dyn : 5; - mmr_t reserved_1 : 3; - mmr_t debit_vc0_cap : 5; - mmr_t reserved_0 : 3; - mmr_t debit_vc0_dyn : 5; - } sh_xnni1_llp_debit_flow_s; -} sh_xnni1_llp_debit_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_LINK_0_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_link_0_flow_u { mmr_t sh_xnni1_link_0_flow_regval; struct { @@ -3514,28 +1927,11 @@ mmr_t reserved_3 : 33; } sh_xnni1_link_0_flow_s; } sh_xnni1_link_0_flow_u_t; -#else -typedef union sh_xnni1_link_0_flow_u { - mmr_t sh_xnni1_link_0_flow_regval; - struct { - mmr_t reserved_3 : 33; - mmr_t credit_vc0_cap : 7; - mmr_t reserved_2 : 1; - mmr_t credit_vc0_dyn : 7; - mmr_t reserved_1 : 1; - mmr_t credit_vc0_test : 7; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnni1_link_0_flow_s; -} sh_xnni1_link_0_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_LINK_1_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_link_1_flow_u { mmr_t sh_xnni1_link_1_flow_regval; struct { @@ -3550,28 +1946,11 @@ mmr_t reserved_3 : 33; } sh_xnni1_link_1_flow_s; } sh_xnni1_link_1_flow_u_t; -#else -typedef union sh_xnni1_link_1_flow_u { - mmr_t sh_xnni1_link_1_flow_regval; - struct { - mmr_t reserved_3 : 33; - mmr_t credit_vc1_cap : 7; - mmr_t reserved_2 : 1; - mmr_t credit_vc1_dyn : 7; - mmr_t reserved_1 : 1; - mmr_t credit_vc1_test : 7; - mmr_t debit_vc1_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc1_withhold : 6; - } sh_xnni1_link_1_flow_s; -} sh_xnni1_link_1_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_LINK_2_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_link_2_flow_u { mmr_t sh_xnni1_link_2_flow_regval; struct { @@ -3586,28 +1965,11 @@ mmr_t reserved_3 : 33; } sh_xnni1_link_2_flow_s; } sh_xnni1_link_2_flow_u_t; -#else -typedef union sh_xnni1_link_2_flow_u { - mmr_t sh_xnni1_link_2_flow_regval; - struct { - mmr_t reserved_3 : 33; - mmr_t credit_vc2_cap : 7; - mmr_t reserved_2 : 1; - mmr_t credit_vc2_dyn : 7; - mmr_t reserved_1 : 1; - mmr_t credit_vc2_test : 7; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc2_withhold : 6; - } sh_xnni1_link_2_flow_s; -} sh_xnni1_link_2_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_LINK_3_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_link_3_flow_u { mmr_t sh_xnni1_link_3_flow_regval; struct { @@ -3622,29 +1984,12 @@ mmr_t reserved_3 : 33; } sh_xnni1_link_3_flow_s; } sh_xnni1_link_3_flow_u_t; -#else -typedef union sh_xnni1_link_3_flow_u { - mmr_t sh_xnni1_link_3_flow_regval; - struct { - mmr_t reserved_3 : 33; - mmr_t credit_vc3_cap : 7; - mmr_t reserved_2 : 1; - mmr_t credit_vc3_dyn : 7; - mmr_t reserved_1 : 1; - mmr_t credit_vc3_test : 7; - mmr_t debit_vc3_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc3_withhold : 6; - } sh_xnni1_link_3_flow_s; -} sh_xnni1_link_3_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_IILB_LOCAL_TABLE" */ /* local lookup table */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_iilb_local_table_u { mmr_t sh_iilb_local_table_regval; struct { @@ -3655,25 +2000,12 @@ mmr_t valid : 1; } sh_iilb_local_table_s; } sh_iilb_local_table_u_t; -#else -typedef union sh_iilb_local_table_u { - mmr_t sh_iilb_local_table_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_0 : 57; - mmr_t ni_sel0 : 1; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_iilb_local_table_s; -} sh_iilb_local_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_IILB_GLOBAL_TABLE" */ /* global lookup table */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_iilb_global_table_u { mmr_t sh_iilb_global_table_regval; struct { @@ -3684,25 +2016,12 @@ mmr_t valid : 1; } sh_iilb_global_table_s; } sh_iilb_global_table_u_t; -#else -typedef union sh_iilb_global_table_u { - mmr_t sh_iilb_global_table_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_0 : 57; - mmr_t ni_sel0 : 1; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_iilb_global_table_s; -} sh_iilb_global_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_IILB_OVER_RIDE_TABLE" */ /* If enabled, bypass the Global/Local tables */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_iilb_over_ride_table_u { mmr_t sh_iilb_over_ride_table_regval; struct { @@ -3713,46 +2032,24 @@ mmr_t enable : 1; } sh_iilb_over_ride_table_s; } sh_iilb_over_ride_table_u_t; -#else -typedef union sh_iilb_over_ride_table_u { - mmr_t sh_iilb_over_ride_table_regval; - struct { - mmr_t enable : 1; - mmr_t reserved_0 : 57; - mmr_t ni_sel0 : 1; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_iilb_over_ride_table_s; -} sh_iilb_over_ride_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_IILB_RSP_PLANE_HINT" */ /* If enabled, invert incoming response only plane hint bit before lo */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_iilb_rsp_plane_hint_u { - mmr_t sh_iilb_rsp_plane_hint_regval; - struct { - mmr_t reserved_0 : 64; - } sh_iilb_rsp_plane_hint_s; -} sh_iilb_rsp_plane_hint_u_t; -#else typedef union sh_iilb_rsp_plane_hint_u { mmr_t sh_iilb_rsp_plane_hint_regval; struct { mmr_t reserved_0 : 64; } sh_iilb_rsp_plane_hint_s; } sh_iilb_rsp_plane_hint_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_LOCAL_TABLE" */ /* local lookup table */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_local_table_u { mmr_t sh_pi_local_table_regval; struct { @@ -3767,29 +2064,12 @@ mmr_t valid : 1; } sh_pi_local_table_s; } sh_pi_local_table_u_t; -#else -typedef union sh_pi_local_table_u { - mmr_t sh_pi_local_table_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_1 : 49; - mmr_t ni_sel1 : 1; - mmr_t v1 : 1; - mmr_t dir1 : 4; - mmr_t reserved_0 : 2; - mmr_t ni_sel0 : 1; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_pi_local_table_s; -} sh_pi_local_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_GLOBAL_TABLE" */ /* global lookup table */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_global_table_u { mmr_t sh_pi_global_table_regval; struct { @@ -3804,29 +2084,12 @@ mmr_t valid : 1; } sh_pi_global_table_s; } sh_pi_global_table_u_t; -#else -typedef union sh_pi_global_table_u { - mmr_t sh_pi_global_table_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_1 : 49; - mmr_t ni_sel1 : 1; - mmr_t v1 : 1; - mmr_t dir1 : 4; - mmr_t reserved_0 : 2; - mmr_t ni_sel0 : 1; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_pi_global_table_s; -} sh_pi_global_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_OVER_RIDE_TABLE" */ /* If enabled, bypass the Global/Local tables */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_over_ride_table_u { mmr_t sh_pi_over_ride_table_regval; struct { @@ -3841,29 +2104,12 @@ mmr_t enable : 1; } sh_pi_over_ride_table_s; } sh_pi_over_ride_table_u_t; -#else -typedef union sh_pi_over_ride_table_u { - mmr_t sh_pi_over_ride_table_regval; - struct { - mmr_t enable : 1; - mmr_t reserved_1 : 49; - mmr_t ni_sel1 : 1; - mmr_t v1 : 1; - mmr_t dir1 : 4; - mmr_t reserved_0 : 2; - mmr_t ni_sel0 : 1; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_pi_over_ride_table_s; -} sh_pi_over_ride_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_RSP_PLANE_HINT" */ /* If enabled, invert incoming response only plane hint bit before lo */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_rsp_plane_hint_u { mmr_t sh_pi_rsp_plane_hint_regval; struct { @@ -3871,22 +2117,12 @@ mmr_t reserved_0 : 63; } sh_pi_rsp_plane_hint_s; } sh_pi_rsp_plane_hint_u_t; -#else -typedef union sh_pi_rsp_plane_hint_u { - mmr_t sh_pi_rsp_plane_hint_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t invert : 1; - } sh_pi_rsp_plane_hint_s; -} sh_pi_rsp_plane_hint_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_LOCAL_TABLE" */ /* local lookup table */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_local_table_u { mmr_t sh_ni0_local_table_regval; struct { @@ -3896,24 +2132,12 @@ mmr_t valid : 1; } sh_ni0_local_table_s; } sh_ni0_local_table_u_t; -#else -typedef union sh_ni0_local_table_u { - mmr_t sh_ni0_local_table_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_0 : 58; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_ni0_local_table_s; -} sh_ni0_local_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_GLOBAL_TABLE" */ /* global lookup table */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_global_table_u { mmr_t sh_ni0_global_table_regval; struct { @@ -3923,24 +2147,12 @@ mmr_t valid : 1; } sh_ni0_global_table_s; } sh_ni0_global_table_u_t; -#else -typedef union sh_ni0_global_table_u { - mmr_t sh_ni0_global_table_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_0 : 58; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_ni0_global_table_s; -} sh_ni0_global_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_OVER_RIDE_TABLE" */ /* If enabled, bypass the Global/Local tables */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_over_ride_table_u { mmr_t sh_ni0_over_ride_table_regval; struct { @@ -3950,45 +2162,24 @@ mmr_t enable : 1; } sh_ni0_over_ride_table_s; } sh_ni0_over_ride_table_u_t; -#else -typedef union sh_ni0_over_ride_table_u { - mmr_t sh_ni0_over_ride_table_regval; - struct { - mmr_t enable : 1; - mmr_t reserved_0 : 58; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_ni0_over_ride_table_s; -} sh_ni0_over_ride_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_RSP_PLANE_HINT" */ /* If enabled, invert incoming response only plane hint bit before lo */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_ni0_rsp_plane_hint_u { - mmr_t sh_ni0_rsp_plane_hint_regval; - struct { - mmr_t reserved_0 : 64; - } sh_ni0_rsp_plane_hint_s; -} sh_ni0_rsp_plane_hint_u_t; -#else typedef union sh_ni0_rsp_plane_hint_u { mmr_t sh_ni0_rsp_plane_hint_regval; struct { mmr_t reserved_0 : 64; } sh_ni0_rsp_plane_hint_s; } sh_ni0_rsp_plane_hint_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_LOCAL_TABLE" */ /* local lookup table */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_local_table_u { mmr_t sh_ni1_local_table_regval; struct { @@ -3998,24 +2189,12 @@ mmr_t valid : 1; } sh_ni1_local_table_s; } sh_ni1_local_table_u_t; -#else -typedef union sh_ni1_local_table_u { - mmr_t sh_ni1_local_table_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_0 : 58; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_ni1_local_table_s; -} sh_ni1_local_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_GLOBAL_TABLE" */ /* global lookup table */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_global_table_u { mmr_t sh_ni1_global_table_regval; struct { @@ -4025,24 +2204,12 @@ mmr_t valid : 1; } sh_ni1_global_table_s; } sh_ni1_global_table_u_t; -#else -typedef union sh_ni1_global_table_u { - mmr_t sh_ni1_global_table_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_0 : 58; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_ni1_global_table_s; -} sh_ni1_global_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_OVER_RIDE_TABLE" */ /* If enabled, bypass the Global/Local tables */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_over_ride_table_u { mmr_t sh_ni1_over_ride_table_regval; struct { @@ -4052,45 +2219,24 @@ mmr_t enable : 1; } sh_ni1_over_ride_table_s; } sh_ni1_over_ride_table_u_t; -#else -typedef union sh_ni1_over_ride_table_u { - mmr_t sh_ni1_over_ride_table_regval; - struct { - mmr_t enable : 1; - mmr_t reserved_0 : 58; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_ni1_over_ride_table_s; -} sh_ni1_over_ride_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_RSP_PLANE_HINT" */ /* If enabled, invert incoming response only plane hint bit before lo */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_ni1_rsp_plane_hint_u { - mmr_t sh_ni1_rsp_plane_hint_regval; - struct { - mmr_t reserved_0 : 64; - } sh_ni1_rsp_plane_hint_s; -} sh_ni1_rsp_plane_hint_u_t; -#else typedef union sh_ni1_rsp_plane_hint_u { mmr_t sh_ni1_rsp_plane_hint_regval; struct { mmr_t reserved_0 : 64; } sh_ni1_rsp_plane_hint_s; } sh_ni1_rsp_plane_hint_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_LOCAL_TABLE" */ /* local lookup table */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_local_table_u { mmr_t sh_md_local_table_regval; struct { @@ -4105,29 +2251,12 @@ mmr_t valid : 1; } sh_md_local_table_s; } sh_md_local_table_u_t; -#else -typedef union sh_md_local_table_u { - mmr_t sh_md_local_table_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_1 : 49; - mmr_t ni_sel1 : 1; - mmr_t v1 : 1; - mmr_t dir1 : 4; - mmr_t reserved_0 : 2; - mmr_t ni_sel0 : 1; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_md_local_table_s; -} sh_md_local_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_GLOBAL_TABLE" */ /* global lookup table */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_global_table_u { mmr_t sh_md_global_table_regval; struct { @@ -4142,29 +2271,12 @@ mmr_t valid : 1; } sh_md_global_table_s; } sh_md_global_table_u_t; -#else -typedef union sh_md_global_table_u { - mmr_t sh_md_global_table_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_1 : 49; - mmr_t ni_sel1 : 1; - mmr_t v1 : 1; - mmr_t dir1 : 4; - mmr_t reserved_0 : 2; - mmr_t ni_sel0 : 1; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_md_global_table_s; -} sh_md_global_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_OVER_RIDE_TABLE" */ /* If enabled, bypass the Global/Local tables */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_over_ride_table_u { mmr_t sh_md_over_ride_table_regval; struct { @@ -4179,29 +2291,12 @@ mmr_t enable : 1; } sh_md_over_ride_table_s; } sh_md_over_ride_table_u_t; -#else -typedef union sh_md_over_ride_table_u { - mmr_t sh_md_over_ride_table_regval; - struct { - mmr_t enable : 1; - mmr_t reserved_1 : 49; - mmr_t ni_sel1 : 1; - mmr_t v1 : 1; - mmr_t dir1 : 4; - mmr_t reserved_0 : 2; - mmr_t ni_sel0 : 1; - mmr_t v0 : 1; - mmr_t dir0 : 4; - } sh_md_over_ride_table_s; -} sh_md_over_ride_table_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_RSP_PLANE_HINT" */ /* If enabled, invert incoming response only plane hint bit before lo */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_rsp_plane_hint_u { mmr_t sh_md_rsp_plane_hint_regval; struct { @@ -4209,22 +2304,12 @@ mmr_t reserved_0 : 63; } sh_md_rsp_plane_hint_s; } sh_md_rsp_plane_hint_u_t; -#else -typedef union sh_md_rsp_plane_hint_u { - mmr_t sh_md_rsp_plane_hint_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t invert : 1; - } sh_md_rsp_plane_hint_s; -} sh_md_rsp_plane_hint_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_LIQ_CTL" */ /* Local Block LIQ Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_liq_ctl_u { mmr_t sh_lb_liq_ctl_regval; struct { @@ -4238,28 +2323,12 @@ mmr_t reserved_2 : 45; } sh_lb_liq_ctl_s; } sh_lb_liq_ctl_u_t; -#else -typedef union sh_lb_liq_ctl_u { - mmr_t sh_lb_liq_ctl_regval; - struct { - mmr_t reserved_2 : 45; - mmr_t force_linvv_credit : 1; - mmr_t force_rp_credit : 1; - mmr_t force_rq_credit : 1; - mmr_t reserved_1 : 4; - mmr_t liq_rpl_ctl : 4; - mmr_t reserved_0 : 3; - mmr_t liq_req_ctl : 5; - } sh_lb_liq_ctl_s; -} sh_lb_liq_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_LOQ_CTL" */ /* Local Block LOQ Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_loq_ctl_u { mmr_t sh_lb_loq_ctl_regval; struct { @@ -4268,23 +2337,12 @@ mmr_t reserved_0 : 62; } sh_lb_loq_ctl_s; } sh_lb_loq_ctl_u_t; -#else -typedef union sh_lb_loq_ctl_u { - mmr_t sh_lb_loq_ctl_regval; - struct { - mmr_t reserved_0 : 62; - mmr_t loq_rpl_ctl : 1; - mmr_t loq_req_ctl : 1; - } sh_lb_loq_ctl_s; -} sh_lb_loq_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_MAX_REP_CREDIT_CNT" */ /* Maximum number of reply credits from XN */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_max_rep_credit_cnt_u { mmr_t sh_lb_max_rep_credit_cnt_regval; struct { @@ -4292,22 +2350,12 @@ mmr_t reserved_0 : 59; } sh_lb_max_rep_credit_cnt_s; } sh_lb_max_rep_credit_cnt_u_t; -#else -typedef union sh_lb_max_rep_credit_cnt_u { - mmr_t sh_lb_max_rep_credit_cnt_regval; - struct { - mmr_t reserved_0 : 59; - mmr_t max_cnt : 5; - } sh_lb_max_rep_credit_cnt_s; -} sh_lb_max_rep_credit_cnt_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_MAX_REQ_CREDIT_CNT" */ /* Maximum number of request credits from XN */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_max_req_credit_cnt_u { mmr_t sh_lb_max_req_credit_cnt_regval; struct { @@ -4315,22 +2363,12 @@ mmr_t reserved_0 : 59; } sh_lb_max_req_credit_cnt_s; } sh_lb_max_req_credit_cnt_u_t; -#else -typedef union sh_lb_max_req_credit_cnt_u { - mmr_t sh_lb_max_req_credit_cnt_regval; - struct { - mmr_t reserved_0 : 59; - mmr_t max_cnt : 5; - } sh_lb_max_req_credit_cnt_s; -} sh_lb_max_req_credit_cnt_u_t; -#endif /* ==================================================================== */ /* Register "SH_PIO_TIME_OUT" */ /* Local Block PIO time out value */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pio_time_out_u { mmr_t sh_pio_time_out_regval; struct { @@ -4338,22 +2376,12 @@ mmr_t reserved_0 : 48; } sh_pio_time_out_s; } sh_pio_time_out_u_t; -#else -typedef union sh_pio_time_out_u { - mmr_t sh_pio_time_out_regval; - struct { - mmr_t reserved_0 : 48; - mmr_t value : 16; - } sh_pio_time_out_s; -} sh_pio_time_out_u_t; -#endif /* ==================================================================== */ /* Register "SH_PIO_NACK_RESET" */ /* Local Block PIO Reset for nack counters */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pio_nack_reset_u { mmr_t sh_pio_nack_reset_regval; struct { @@ -4361,22 +2389,12 @@ mmr_t reserved_0 : 63; } sh_pio_nack_reset_s; } sh_pio_nack_reset_u_t; -#else -typedef union sh_pio_nack_reset_u { - mmr_t sh_pio_nack_reset_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t pulse : 1; - } sh_pio_nack_reset_s; -} sh_pio_nack_reset_u_t; -#endif /* ==================================================================== */ /* Register "SH_CONVEYOR_BELT_TIME_OUT" */ /* Local Block conveyor belt time out value */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_conveyor_belt_time_out_u { mmr_t sh_conveyor_belt_time_out_regval; struct { @@ -4384,22 +2402,12 @@ mmr_t reserved_0 : 52; } sh_conveyor_belt_time_out_s; } sh_conveyor_belt_time_out_u_t; -#else -typedef union sh_conveyor_belt_time_out_u { - mmr_t sh_conveyor_belt_time_out_regval; - struct { - mmr_t reserved_0 : 52; - mmr_t value : 12; - } sh_conveyor_belt_time_out_s; -} sh_conveyor_belt_time_out_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_CREDIT_STATUS" */ /* Credit Counter Status Register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_credit_status_u { mmr_t sh_lb_credit_status_regval; struct { @@ -4413,28 +2421,12 @@ mmr_t reserved_2 : 36; } sh_lb_credit_status_s; } sh_lb_credit_status_u_t; -#else -typedef union sh_lb_credit_status_u { - mmr_t sh_lb_credit_status_regval; - struct { - mmr_t reserved_2 : 36; - mmr_t loq_rp_credit : 5; - mmr_t loq_rq_credit : 5; - mmr_t linvv_credit : 6; - mmr_t reserved_1 : 2; - mmr_t liq_rp_credit : 4; - mmr_t reserved_0 : 1; - mmr_t liq_rq_credit : 5; - } sh_lb_credit_status_s; -} sh_lb_credit_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_DEBUG_LOCAL_SEL" */ /* LB Debug Port Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_debug_local_sel_u { mmr_t sh_lb_debug_local_sel_regval; struct { @@ -4472,52 +2464,12 @@ mmr_t trigger_enable : 1; } sh_lb_debug_local_sel_s; } sh_lb_debug_local_sel_u_t; -#else -typedef union sh_lb_debug_local_sel_u { - mmr_t sh_lb_debug_local_sel_regval; - struct { - mmr_t trigger_enable : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_chiplet_sel : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_chiplet_sel : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_chiplet_sel : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_chiplet_sel : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_chiplet_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_chiplet_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_chiplet_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_chiplet_sel : 3; - } sh_lb_debug_local_sel_s; -} sh_lb_debug_local_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_DEBUG_PERF_SEL" */ /* LB Debug Port Performance Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_debug_perf_sel_u { mmr_t sh_lb_debug_perf_sel_regval; struct { @@ -4555,52 +2507,12 @@ mmr_t reserved_15 : 1; } sh_lb_debug_perf_sel_s; } sh_lb_debug_perf_sel_u_t; -#else -typedef union sh_lb_debug_perf_sel_u { - mmr_t sh_lb_debug_perf_sel_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_chiplet_sel : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_chiplet_sel : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_chiplet_sel : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_chiplet_sel : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_chiplet_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_chiplet_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_chiplet_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_chiplet_sel : 3; - } sh_lb_debug_perf_sel_s; -} sh_lb_debug_perf_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_DEBUG_TRIG_SEL" */ /* LB Debug Trigger Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_debug_trig_sel_u { mmr_t sh_lb_debug_trig_sel_regval; struct { @@ -4638,52 +2550,12 @@ mmr_t reserved_15 : 1; } sh_lb_debug_trig_sel_s; } sh_lb_debug_trig_sel_u_t; -#else -typedef union sh_lb_debug_trig_sel_u { - mmr_t sh_lb_debug_trig_sel_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t trigger7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t trigger7_chiplet_sel : 3; - mmr_t reserved_13 : 1; - mmr_t trigger6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t trigger6_chiplet_sel : 3; - mmr_t reserved_11 : 1; - mmr_t trigger5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t trigger5_chiplet_sel : 3; - mmr_t reserved_9 : 1; - mmr_t trigger4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t trigger4_chiplet_sel : 3; - mmr_t reserved_7 : 1; - mmr_t trigger3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t trigger3_chiplet_sel : 3; - mmr_t reserved_5 : 1; - mmr_t trigger2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t trigger2_chiplet_sel : 3; - mmr_t reserved_3 : 1; - mmr_t trigger1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t trigger1_chiplet_sel : 3; - mmr_t reserved_1 : 1; - mmr_t trigger0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t trigger0_chiplet_sel : 3; - } sh_lb_debug_trig_sel_s; -} sh_lb_debug_trig_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_ERROR_DETAIL_1" */ /* LB Error capture information: HDR1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_error_detail_1_u { mmr_t sh_lb_error_detail_1_regval; struct { @@ -4700,31 +2572,12 @@ mmr_t valid : 1; } sh_lb_error_detail_1_s; } sh_lb_error_detail_1_u_t; -#else -typedef union sh_lb_error_detail_1_u { - mmr_t sh_lb_error_detail_1_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_3 : 13; - mmr_t data_err : 1; - mmr_t hdr_err : 1; - mmr_t reserved_2 : 5; - mmr_t dest : 3; - mmr_t reserved_1 : 2; - mmr_t source : 14; - mmr_t reserved_0 : 2; - mmr_t suppl : 14; - mmr_t command : 8; - } sh_lb_error_detail_1_s; -} sh_lb_error_detail_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_ERROR_DETAIL_2" */ /* LB Error Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_error_detail_2_u { mmr_t sh_lb_error_detail_2_regval; struct { @@ -4732,64 +2585,36 @@ mmr_t reserved_0 : 17; } sh_lb_error_detail_2_s; } sh_lb_error_detail_2_u_t; -#else -typedef union sh_lb_error_detail_2_u { - mmr_t sh_lb_error_detail_2_regval; - struct { - mmr_t reserved_0 : 17; - mmr_t address : 47; - } sh_lb_error_detail_2_s; -} sh_lb_error_detail_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_ERROR_DETAIL_3" */ /* LB Error Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_lb_error_detail_3_u { - mmr_t sh_lb_error_detail_3_regval; - struct { - mmr_t data : 64; - } sh_lb_error_detail_3_s; -} sh_lb_error_detail_3_u_t; -#else typedef union sh_lb_error_detail_3_u { mmr_t sh_lb_error_detail_3_regval; struct { mmr_t data : 64; } sh_lb_error_detail_3_s; } sh_lb_error_detail_3_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_ERROR_DETAIL_4" */ /* LB Error Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_lb_error_detail_4_u { - mmr_t sh_lb_error_detail_4_regval; - struct { - mmr_t route : 64; - } sh_lb_error_detail_4_s; -} sh_lb_error_detail_4_u_t; -#else typedef union sh_lb_error_detail_4_u { mmr_t sh_lb_error_detail_4_regval; struct { mmr_t route : 64; } sh_lb_error_detail_4_s; } sh_lb_error_detail_4_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_ERROR_DETAIL_5" */ /* LB Error Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_error_detail_5_u { mmr_t sh_lb_error_detail_5_regval; struct { @@ -4803,28 +2628,12 @@ mmr_t reserved_0 : 57; } sh_lb_error_detail_5_s; } sh_lb_error_detail_5_u_t; -#else -typedef union sh_lb_error_detail_5_u { - mmr_t sh_lb_error_detail_5_regval; - struct { - mmr_t reserved_0 : 57; - mmr_t nack_b_timeout : 1; - mmr_t nack_a_timeout : 1; - mmr_t count_b_overflow : 1; - mmr_t count_a_overflow : 1; - mmr_t write_retry : 1; - mmr_t ptc1_write : 1; - mmr_t read_retry : 1; - } sh_lb_error_detail_5_s; -} sh_lb_error_detail_5_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_ERROR_MASK" */ /* LB Error Mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_error_mask_u { mmr_t sh_lb_error_mask_regval; struct { @@ -4854,44 +2663,12 @@ mmr_t reserved_0 : 41; } sh_lb_error_mask_s; } sh_lb_error_mask_u_t; -#else -typedef union sh_lb_error_mask_u { - mmr_t sh_lb_error_mask_regval; - struct { - mmr_t reserved_0 : 41; - mmr_t rp_credit_overflow : 1; - mmr_t rq_credit_overflow : 1; - mmr_t unexp_valid : 1; - mmr_t rp_fifo_error : 1; - mmr_t rq_fifo_error : 1; - mmr_t gclk_drop : 1; - mmr_t vector_rp_route_error : 1; - mmr_t vector_rq_route_error : 1; - mmr_t pio_cb_err : 1; - mmr_t junk_bus_err : 1; - mmr_t ptc_1_timeout : 1; - mmr_t unexpected_linv : 1; - mmr_t linvv_overflow : 1; - mmr_t rq_time_out : 1; - mmr_t rq_bad_addr : 1; - mmr_t rp_bad_data : 1; - mmr_t rq_bad_data : 1; - mmr_t rp_long : 1; - mmr_t rq_long : 1; - mmr_t rp_short : 1; - mmr_t rq_short : 1; - mmr_t rp_bad_cmd : 1; - mmr_t rq_bad_cmd : 1; - } sh_lb_error_mask_s; -} sh_lb_error_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_ERROR_OVERFLOW" */ /* LB Error Overflow */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_error_overflow_u { mmr_t sh_lb_error_overflow_regval; struct { @@ -4921,44 +2698,12 @@ mmr_t reserved_0 : 41; } sh_lb_error_overflow_s; } sh_lb_error_overflow_u_t; -#else -typedef union sh_lb_error_overflow_u { - mmr_t sh_lb_error_overflow_regval; - struct { - mmr_t reserved_0 : 41; - mmr_t rp_credit_overflow_ovrfl : 1; - mmr_t rq_credit_overflow_ovrfl : 1; - mmr_t unexp_valid_ovrfl : 1; - mmr_t rp_fifo_error_ovrfl : 1; - mmr_t rq_fifo_error_ovrfl : 1; - mmr_t gclk_drop_ovrfl : 1; - mmr_t vector_rp_route_error_ovrfl : 1; - mmr_t vector_rq_route_error_ovrfl : 1; - mmr_t pio_cb_err_ovrfl : 1; - mmr_t junk_bus_err_ovrfl : 1; - mmr_t ptc_1_timeout_ovrfl : 1; - mmr_t unexpected_linv_ovrfl : 1; - mmr_t linvv_overflow_ovrfl : 1; - mmr_t rq_time_out_ovrfl : 1; - mmr_t rq_bad_addr_ovrfl : 1; - mmr_t rp_bad_data_ovrfl : 1; - mmr_t rq_bad_data_ovrfl : 1; - mmr_t rp_long_ovrfl : 1; - mmr_t rq_long_ovrfl : 1; - mmr_t rp_short_ovrfl : 1; - mmr_t rq_short_ovrfl : 1; - mmr_t rp_bad_cmd_ovrfl : 1; - mmr_t rq_bad_cmd_ovrfl : 1; - } sh_lb_error_overflow_s; -} sh_lb_error_overflow_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_ERROR_SUMMARY" */ /* LB Error Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_error_summary_u { mmr_t sh_lb_error_summary_regval; struct { @@ -4988,44 +2733,12 @@ mmr_t reserved_0 : 41; } sh_lb_error_summary_s; } sh_lb_error_summary_u_t; -#else -typedef union sh_lb_error_summary_u { - mmr_t sh_lb_error_summary_regval; - struct { - mmr_t reserved_0 : 41; - mmr_t rp_credit_overflow : 1; - mmr_t rq_credit_overflow : 1; - mmr_t unexp_valid : 1; - mmr_t rp_fifo_error : 1; - mmr_t rq_fifo_error : 1; - mmr_t gclk_drop : 1; - mmr_t vector_rp_route_error : 1; - mmr_t vector_rq_route_error : 1; - mmr_t pio_cb_err : 1; - mmr_t junk_bus_err : 1; - mmr_t ptc_1_timeout : 1; - mmr_t unexpected_linv : 1; - mmr_t linvv_overflow : 1; - mmr_t rq_time_out : 1; - mmr_t rq_bad_addr : 1; - mmr_t rp_bad_data : 1; - mmr_t rq_bad_data : 1; - mmr_t rp_long : 1; - mmr_t rq_long : 1; - mmr_t rp_short : 1; - mmr_t rq_short : 1; - mmr_t rp_bad_cmd : 1; - mmr_t rq_bad_cmd : 1; - } sh_lb_error_summary_s; -} sh_lb_error_summary_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_FIRST_ERROR" */ /* LB First Error */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_first_error_u { mmr_t sh_lb_first_error_regval; struct { @@ -5055,44 +2768,12 @@ mmr_t reserved_0 : 41; } sh_lb_first_error_s; } sh_lb_first_error_u_t; -#else -typedef union sh_lb_first_error_u { - mmr_t sh_lb_first_error_regval; - struct { - mmr_t reserved_0 : 41; - mmr_t rp_credit_overflow : 1; - mmr_t rq_credit_overflow : 1; - mmr_t unexp_valid : 1; - mmr_t rp_fifo_error : 1; - mmr_t rq_fifo_error : 1; - mmr_t gclk_drop : 1; - mmr_t vector_rp_route_error : 1; - mmr_t vector_rq_route_error : 1; - mmr_t pio_cb_err : 1; - mmr_t junk_bus_err : 1; - mmr_t ptc_1_timeout : 1; - mmr_t unexpected_linv : 1; - mmr_t linvv_overflow : 1; - mmr_t rq_time_out : 1; - mmr_t rq_bad_addr : 1; - mmr_t rp_bad_data : 1; - mmr_t rq_bad_data : 1; - mmr_t rp_long : 1; - mmr_t rq_long : 1; - mmr_t rp_short : 1; - mmr_t rq_short : 1; - mmr_t rp_bad_cmd : 1; - mmr_t rq_bad_cmd : 1; - } sh_lb_first_error_s; -} sh_lb_first_error_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_LAST_CREDIT" */ /* Credit counter status register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_last_credit_u { mmr_t sh_lb_last_credit_regval; struct { @@ -5106,28 +2787,12 @@ mmr_t reserved_2 : 36; } sh_lb_last_credit_s; } sh_lb_last_credit_u_t; -#else -typedef union sh_lb_last_credit_u { - mmr_t sh_lb_last_credit_regval; - struct { - mmr_t reserved_2 : 36; - mmr_t loq_rp_credit : 5; - mmr_t loq_rq_credit : 5; - mmr_t linvv_credit : 6; - mmr_t reserved_1 : 2; - mmr_t liq_rp_credit : 4; - mmr_t reserved_0 : 1; - mmr_t liq_rq_credit : 5; - } sh_lb_last_credit_s; -} sh_lb_last_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_NACK_STATUS" */ /* Nack Counter Status Register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_nack_status_u { mmr_t sh_lb_nack_status_regval; struct { @@ -5141,28 +2806,12 @@ mmr_t reserved_2 : 2; } sh_lb_nack_status_s; } sh_lb_nack_status_u_t; -#else -typedef union sh_lb_nack_status_u { - mmr_t sh_lb_nack_status_regval; - struct { - mmr_t reserved_2 : 2; - mmr_t cb_state : 2; - mmr_t cb_timeout_count : 12; - mmr_t junk_nack : 16; - mmr_t reserved_1 : 4; - mmr_t pio_nack_b : 12; - mmr_t reserved_0 : 4; - mmr_t pio_nack_a : 12; - } sh_lb_nack_status_s; -} sh_lb_nack_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_TRIGGER_COMPARE" */ /* LB Test-point Trigger Compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_trigger_compare_u { mmr_t sh_lb_trigger_compare_regval; struct { @@ -5170,22 +2819,12 @@ mmr_t reserved_0 : 32; } sh_lb_trigger_compare_s; } sh_lb_trigger_compare_u_t; -#else -typedef union sh_lb_trigger_compare_u { - mmr_t sh_lb_trigger_compare_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t mask : 32; - } sh_lb_trigger_compare_s; -} sh_lb_trigger_compare_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_TRIGGER_DATA" */ /* LB Test-point Trigger Compare Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_trigger_data_u { mmr_t sh_lb_trigger_data_regval; struct { @@ -5193,22 +2832,12 @@ mmr_t reserved_0 : 32; } sh_lb_trigger_data_s; } sh_lb_trigger_data_u_t; -#else -typedef union sh_lb_trigger_data_u { - mmr_t sh_lb_trigger_data_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t compare_pattern : 32; - } sh_lb_trigger_data_s; -} sh_lb_trigger_data_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_AEC_CONFIG" */ /* PI Adaptive Error Correction Configuration */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_aec_config_u { mmr_t sh_pi_aec_config_regval; struct { @@ -5216,22 +2845,12 @@ mmr_t reserved_0 : 61; } sh_pi_aec_config_s; } sh_pi_aec_config_u_t; -#else -typedef union sh_pi_aec_config_u { - mmr_t sh_pi_aec_config_regval; - struct { - mmr_t reserved_0 : 61; - mmr_t mode : 3; - } sh_pi_aec_config_s; -} sh_pi_aec_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_AFI_ERROR_MASK" */ /* PI AFI Error Mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_afi_error_mask_u { mmr_t sh_pi_afi_error_mask_regval; struct { @@ -5253,36 +2872,12 @@ mmr_t reserved_1 : 29; } sh_pi_afi_error_mask_s; } sh_pi_afi_error_mask_u_t; -#else -typedef union sh_pi_afi_error_mask_u { - mmr_t sh_pi_afi_error_mask_regval; - struct { - mmr_t reserved_1 : 29; - mmr_t msg_len : 1; - mmr_t fsb_tbl_miss : 1; - mmr_t bad_snoop : 1; - mmr_t livelock : 1; - mmr_t shub_fsb_ce : 1; - mmr_t shub_fsb_uce : 1; - mmr_t shub_fsb_dqe : 1; - mmr_t addr_parity : 1; - mmr_t req_parity : 1; - mmr_t addr_access : 1; - mmr_t req_format : 1; - mmr_t ioq_overrun : 1; - mmr_t rsp_parity : 1; - mmr_t hung_bus : 1; - mmr_t reserved_0 : 21; - } sh_pi_afi_error_mask_s; -} sh_pi_afi_error_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_AFI_TEST_POINT_COMPARE" */ /* PI AFI Test Point Compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_afi_test_point_compare_u { mmr_t sh_pi_afi_test_point_compare_regval; struct { @@ -5290,22 +2885,12 @@ mmr_t compare_pattern : 32; } sh_pi_afi_test_point_compare_s; } sh_pi_afi_test_point_compare_u_t; -#else -typedef union sh_pi_afi_test_point_compare_u { - mmr_t sh_pi_afi_test_point_compare_regval; - struct { - mmr_t compare_pattern : 32; - mmr_t compare_mask : 32; - } sh_pi_afi_test_point_compare_s; -} sh_pi_afi_test_point_compare_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_AFI_TEST_POINT_SELECT" */ /* PI AFI Test Point Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_afi_test_point_select_u { mmr_t sh_pi_afi_test_point_select_regval; struct { @@ -5335,44 +2920,12 @@ mmr_t trigger_enable : 1; } sh_pi_afi_test_point_select_s; } sh_pi_afi_test_point_select_u_t; -#else -typedef union sh_pi_afi_test_point_select_u { - mmr_t sh_pi_afi_test_point_select_regval; - struct { - mmr_t trigger_enable : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t nibble7_chiplet_sel : 4; - mmr_t reserved_6 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t nibble6_chiplet_sel : 4; - mmr_t reserved_5 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t nibble5_chiplet_sel : 4; - mmr_t reserved_4 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t nibble4_chiplet_sel : 4; - mmr_t reserved_3 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t nibble3_chiplet_sel : 4; - mmr_t reserved_2 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t nibble2_chiplet_sel : 4; - mmr_t reserved_1 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t nibble1_chiplet_sel : 4; - mmr_t reserved_0 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t nibble0_chiplet_sel : 4; - } sh_pi_afi_test_point_select_s; -} sh_pi_afi_test_point_select_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_AFI_TEST_POINT_TRIGGER_SELECT" */ /* PI CRBC Test Point Trigger Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_afi_test_point_trigger_select_u { mmr_t sh_pi_afi_test_point_trigger_select_regval; struct { @@ -5402,44 +2955,12 @@ mmr_t reserved_7 : 1; } sh_pi_afi_test_point_trigger_select_s; } sh_pi_afi_test_point_trigger_select_u_t; -#else -typedef union sh_pi_afi_test_point_trigger_select_u { - mmr_t sh_pi_afi_test_point_trigger_select_regval; - struct { - mmr_t reserved_7 : 1; - mmr_t trigger7_nibble_sel : 3; - mmr_t trigger7_chiplet_sel : 4; - mmr_t reserved_6 : 1; - mmr_t trigger6_nibble_sel : 3; - mmr_t trigger6_chiplet_sel : 4; - mmr_t reserved_5 : 1; - mmr_t trigger5_nibble_sel : 3; - mmr_t trigger5_chiplet_sel : 4; - mmr_t reserved_4 : 1; - mmr_t trigger4_nibble_sel : 3; - mmr_t trigger4_chiplet_sel : 4; - mmr_t reserved_3 : 1; - mmr_t trigger3_nibble_sel : 3; - mmr_t trigger3_chiplet_sel : 4; - mmr_t reserved_2 : 1; - mmr_t trigger2_nibble_sel : 3; - mmr_t trigger2_chiplet_sel : 4; - mmr_t reserved_1 : 1; - mmr_t trigger1_nibble_sel : 3; - mmr_t trigger1_chiplet_sel : 4; - mmr_t reserved_0 : 1; - mmr_t trigger0_nibble_sel : 3; - mmr_t trigger0_chiplet_sel : 4; - } sh_pi_afi_test_point_trigger_select_s; -} sh_pi_afi_test_point_trigger_select_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_AUTO_REPLY_ENABLE" */ /* PI Auto Reply Enable */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_auto_reply_enable_u { mmr_t sh_pi_auto_reply_enable_regval; struct { @@ -5447,22 +2968,12 @@ mmr_t reserved_0 : 63; } sh_pi_auto_reply_enable_s; } sh_pi_auto_reply_enable_u_t; -#else -typedef union sh_pi_auto_reply_enable_u { - mmr_t sh_pi_auto_reply_enable_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t auto_reply_enable : 1; - } sh_pi_auto_reply_enable_s; -} sh_pi_auto_reply_enable_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CAM_CONTROL" */ /* CRB CAM MMR Access Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_cam_control_u { mmr_t sh_pi_cam_control_regval; struct { @@ -5474,26 +2985,12 @@ mmr_t start : 1; } sh_pi_cam_control_s; } sh_pi_cam_control_u_t; -#else -typedef union sh_pi_cam_control_u { - mmr_t sh_pi_cam_control_regval; - struct { - mmr_t start : 1; - mmr_t reserved_1 : 53; - mmr_t rrb_rd_xfer_clear : 1; - mmr_t cam_write : 1; - mmr_t reserved_0 : 1; - mmr_t cam_indx : 7; - } sh_pi_cam_control_s; -} sh_pi_cam_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBC_TEST_POINT_COMPARE" */ /* PI CRBC Test Point Compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbc_test_point_compare_u { mmr_t sh_pi_crbc_test_point_compare_regval; struct { @@ -5501,22 +2998,12 @@ mmr_t compare_pattern : 32; } sh_pi_crbc_test_point_compare_s; } sh_pi_crbc_test_point_compare_u_t; -#else -typedef union sh_pi_crbc_test_point_compare_u { - mmr_t sh_pi_crbc_test_point_compare_regval; - struct { - mmr_t compare_pattern : 32; - mmr_t compare_mask : 32; - } sh_pi_crbc_test_point_compare_s; -} sh_pi_crbc_test_point_compare_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBC_TEST_POINT_SELECT" */ /* PI CRBC Test Point Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbc_test_point_select_u { mmr_t sh_pi_crbc_test_point_select_regval; struct { @@ -5554,52 +3041,12 @@ mmr_t trigger_enable : 1; } sh_pi_crbc_test_point_select_s; } sh_pi_crbc_test_point_select_u_t; -#else -typedef union sh_pi_crbc_test_point_select_u { - mmr_t sh_pi_crbc_test_point_select_regval; - struct { - mmr_t trigger_enable : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_chiplet_sel : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_chiplet_sel : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_chiplet_sel : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_chiplet_sel : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_chiplet_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_chiplet_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_chiplet_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_chiplet_sel : 3; - } sh_pi_crbc_test_point_select_s; -} sh_pi_crbc_test_point_select_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBC_TEST_POINT_TRIGGER_SELECT" */ /* PI CRBC Test Point Trigger Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbc_test_point_trigger_select_u { mmr_t sh_pi_crbc_test_point_trigger_select_regval; struct { @@ -5637,52 +3084,12 @@ mmr_t reserved_15 : 1; } sh_pi_crbc_test_point_trigger_select_s; } sh_pi_crbc_test_point_trigger_select_u_t; -#else -typedef union sh_pi_crbc_test_point_trigger_select_u { - mmr_t sh_pi_crbc_test_point_trigger_select_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t trigger7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t trigger7_chiplet_sel : 3; - mmr_t reserved_13 : 1; - mmr_t trigger6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t trigger6_chiplet_sel : 3; - mmr_t reserved_11 : 1; - mmr_t trigger5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t trigger5_chiplet_sel : 3; - mmr_t reserved_9 : 1; - mmr_t trigger4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t trigger4_chiplet_sel : 3; - mmr_t reserved_7 : 1; - mmr_t trigger3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t trigger3_chiplet_sel : 3; - mmr_t reserved_5 : 1; - mmr_t trigger2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t trigger2_chiplet_sel : 3; - mmr_t reserved_3 : 1; - mmr_t trigger1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t trigger1_chiplet_sel : 3; - mmr_t reserved_1 : 1; - mmr_t trigger0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t trigger0_chiplet_sel : 3; - } sh_pi_crbc_test_point_trigger_select_s; -} sh_pi_crbc_test_point_trigger_select_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBP_ERROR_MASK" */ /* PI CRBP Error Mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbp_error_mask_u { mmr_t sh_pi_crbp_error_mask_regval; struct { @@ -5710,42 +3117,12 @@ mmr_t reserved_0 : 43; } sh_pi_crbp_error_mask_s; } sh_pi_crbp_error_mask_u_t; -#else -typedef union sh_pi_crbp_error_mask_u { - mmr_t sh_pi_crbp_error_mask_regval; - struct { - mmr_t reserved_0 : 43; - mmr_t xn_rp_crd_oflow : 1; - mmr_t xn_rq_crd_oflow : 1; - mmr_t md_rp_crd_oflow : 1; - mmr_t md_rq_crd_oflow : 1; - mmr_t gfx_int_1 : 1; - mmr_t gfx_int_0 : 1; - mmr_t nack_oflow : 1; - mmr_t xn_rp_q_oflow : 1; - mmr_t xn_rq_q_oflow : 1; - mmr_t md_rp_q_oflow : 1; - mmr_t md_rq_q_oflow : 1; - mmr_t msg_color_err : 1; - mmr_t fsb_shub_ce : 1; - mmr_t fsb_shub_uce : 1; - mmr_t pio_to_err : 1; - mmr_t mem_to_err : 1; - mmr_t pio_rp_err : 1; - mmr_t mem_rp_err : 1; - mmr_t xb_proto_err : 1; - mmr_t gfx_rp_err : 1; - mmr_t fsb_proto_err : 1; - } sh_pi_crbp_error_mask_s; -} sh_pi_crbp_error_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBP_FSB_PIPE_COMPARE" */ /* CRBP FSB Pipe Compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbp_fsb_pipe_compare_u { mmr_t sh_pi_crbp_fsb_pipe_compare_regval; struct { @@ -5754,23 +3131,12 @@ mmr_t reserved_0 : 11; } sh_pi_crbp_fsb_pipe_compare_s; } sh_pi_crbp_fsb_pipe_compare_u_t; -#else -typedef union sh_pi_crbp_fsb_pipe_compare_u { - mmr_t sh_pi_crbp_fsb_pipe_compare_regval; - struct { - mmr_t reserved_0 : 11; - mmr_t compare_req : 6; - mmr_t compare_address : 47; - } sh_pi_crbp_fsb_pipe_compare_s; -} sh_pi_crbp_fsb_pipe_compare_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBP_FSB_PIPE_MASK" */ /* CRBP Compare Mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbp_fsb_pipe_mask_u { mmr_t sh_pi_crbp_fsb_pipe_mask_regval; struct { @@ -5779,23 +3145,12 @@ mmr_t reserved_0 : 11; } sh_pi_crbp_fsb_pipe_mask_s; } sh_pi_crbp_fsb_pipe_mask_u_t; -#else -typedef union sh_pi_crbp_fsb_pipe_mask_u { - mmr_t sh_pi_crbp_fsb_pipe_mask_regval; - struct { - mmr_t reserved_0 : 11; - mmr_t compare_req_mask : 6; - mmr_t compare_address_mask : 47; - } sh_pi_crbp_fsb_pipe_mask_s; -} sh_pi_crbp_fsb_pipe_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBP_TEST_POINT_COMPARE" */ /* PI CRBP Test Point Compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbp_test_point_compare_u { mmr_t sh_pi_crbp_test_point_compare_regval; struct { @@ -5803,22 +3158,12 @@ mmr_t compare_pattern : 32; } sh_pi_crbp_test_point_compare_s; } sh_pi_crbp_test_point_compare_u_t; -#else -typedef union sh_pi_crbp_test_point_compare_u { - mmr_t sh_pi_crbp_test_point_compare_regval; - struct { - mmr_t compare_pattern : 32; - mmr_t compare_mask : 32; - } sh_pi_crbp_test_point_compare_s; -} sh_pi_crbp_test_point_compare_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBP_TEST_POINT_SELECT" */ /* PI CRBP Test Point Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbp_test_point_select_u { mmr_t sh_pi_crbp_test_point_select_regval; struct { @@ -5856,52 +3201,12 @@ mmr_t trigger_enable : 1; } sh_pi_crbp_test_point_select_s; } sh_pi_crbp_test_point_select_u_t; -#else -typedef union sh_pi_crbp_test_point_select_u { - mmr_t sh_pi_crbp_test_point_select_regval; - struct { - mmr_t trigger_enable : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_chiplet_sel : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_chiplet_sel : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_chiplet_sel : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_chiplet_sel : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_chiplet_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_chiplet_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_chiplet_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_chiplet_sel : 3; - } sh_pi_crbp_test_point_select_s; -} sh_pi_crbp_test_point_select_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBP_TEST_POINT_TRIGGER_SELECT" */ /* PI CRBP Test Point Trigger Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbp_test_point_trigger_select_u { mmr_t sh_pi_crbp_test_point_trigger_select_regval; struct { @@ -5939,52 +3244,12 @@ mmr_t reserved_15 : 1; } sh_pi_crbp_test_point_trigger_select_s; } sh_pi_crbp_test_point_trigger_select_u_t; -#else -typedef union sh_pi_crbp_test_point_trigger_select_u { - mmr_t sh_pi_crbp_test_point_trigger_select_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t trigger7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t trigger7_chiplet_sel : 3; - mmr_t reserved_13 : 1; - mmr_t trigger6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t trigger6_chiplet_sel : 3; - mmr_t reserved_11 : 1; - mmr_t trigger5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t trigger5_chiplet_sel : 3; - mmr_t reserved_9 : 1; - mmr_t trigger4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t trigger4_chiplet_sel : 3; - mmr_t reserved_7 : 1; - mmr_t trigger3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t trigger3_chiplet_sel : 3; - mmr_t reserved_5 : 1; - mmr_t trigger2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t trigger2_chiplet_sel : 3; - mmr_t reserved_3 : 1; - mmr_t trigger1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t trigger1_chiplet_sel : 3; - mmr_t reserved_1 : 1; - mmr_t trigger0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t trigger0_chiplet_sel : 3; - } sh_pi_crbp_test_point_trigger_select_s; -} sh_pi_crbp_test_point_trigger_select_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBP_XB_PIPE_COMPARE_0" */ /* CRBP XB Pipe Compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbp_xb_pipe_compare_0_u { mmr_t sh_pi_crbp_xb_pipe_compare_0_regval; struct { @@ -5993,23 +3258,12 @@ mmr_t reserved_0 : 9; } sh_pi_crbp_xb_pipe_compare_0_s; } sh_pi_crbp_xb_pipe_compare_0_u_t; -#else -typedef union sh_pi_crbp_xb_pipe_compare_0_u { - mmr_t sh_pi_crbp_xb_pipe_compare_0_regval; - struct { - mmr_t reserved_0 : 9; - mmr_t compare_command : 8; - mmr_t compare_address : 47; - } sh_pi_crbp_xb_pipe_compare_0_s; -} sh_pi_crbp_xb_pipe_compare_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBP_XB_PIPE_COMPARE_1" */ /* CRBP XB Pipe Compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbp_xb_pipe_compare_1_u { mmr_t sh_pi_crbp_xb_pipe_compare_1_regval; struct { @@ -6021,26 +3275,12 @@ mmr_t reserved_2 : 23; } sh_pi_crbp_xb_pipe_compare_1_s; } sh_pi_crbp_xb_pipe_compare_1_u_t; -#else -typedef union sh_pi_crbp_xb_pipe_compare_1_u { - mmr_t sh_pi_crbp_xb_pipe_compare_1_regval; - struct { - mmr_t reserved_2 : 23; - mmr_t compare_echo : 9; - mmr_t reserved_1 : 2; - mmr_t compare_supplemental : 14; - mmr_t reserved_0 : 2; - mmr_t compare_source : 14; - } sh_pi_crbp_xb_pipe_compare_1_s; -} sh_pi_crbp_xb_pipe_compare_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBP_XB_PIPE_MASK_0" */ /* CRBP Compare Mask Register 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbp_xb_pipe_mask_0_u { mmr_t sh_pi_crbp_xb_pipe_mask_0_regval; struct { @@ -6049,23 +3289,12 @@ mmr_t reserved_0 : 9; } sh_pi_crbp_xb_pipe_mask_0_s; } sh_pi_crbp_xb_pipe_mask_0_u_t; -#else -typedef union sh_pi_crbp_xb_pipe_mask_0_u { - mmr_t sh_pi_crbp_xb_pipe_mask_0_regval; - struct { - mmr_t reserved_0 : 9; - mmr_t compare_command_mask : 8; - mmr_t compare_address_mask : 47; - } sh_pi_crbp_xb_pipe_mask_0_s; -} sh_pi_crbp_xb_pipe_mask_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBP_XB_PIPE_MASK_1" */ /* CRBP XB Pipe Compare Mask Register 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbp_xb_pipe_mask_1_u { mmr_t sh_pi_crbp_xb_pipe_mask_1_regval; struct { @@ -6077,26 +3306,12 @@ mmr_t reserved_2 : 23; } sh_pi_crbp_xb_pipe_mask_1_s; } sh_pi_crbp_xb_pipe_mask_1_u_t; -#else -typedef union sh_pi_crbp_xb_pipe_mask_1_u { - mmr_t sh_pi_crbp_xb_pipe_mask_1_regval; - struct { - mmr_t reserved_2 : 23; - mmr_t compare_echo_mask : 9; - mmr_t reserved_1 : 2; - mmr_t compare_supplemental_mask : 14; - mmr_t reserved_0 : 2; - mmr_t compare_source_mask : 14; - } sh_pi_crbp_xb_pipe_mask_1_s; -} sh_pi_crbp_xb_pipe_mask_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_DPC_QUEUE_CONFIG" */ /* DPC Queue Configuration */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_dpc_queue_config_u { mmr_t sh_pi_dpc_queue_config_regval; struct { @@ -6110,28 +3325,12 @@ mmr_t reserved_3 : 35; } sh_pi_dpc_queue_config_s; } sh_pi_dpc_queue_config_u_t; -#else -typedef union sh_pi_dpc_queue_config_u { - mmr_t sh_pi_dpc_queue_config_regval; - struct { - mmr_t reserved_3 : 35; - mmr_t fwcq_af_thresh : 5; - mmr_t reserved_2 : 3; - mmr_t fwcq_ae_level : 5; - mmr_t reserved_1 : 3; - mmr_t dwcq_af_thresh : 5; - mmr_t reserved_0 : 3; - mmr_t dwcq_ae_level : 5; - } sh_pi_dpc_queue_config_s; -} sh_pi_dpc_queue_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_ERROR_MASK" */ /* PI Error Mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_error_mask_u { mmr_t sh_pi_error_mask_regval; struct { @@ -6173,56 +3372,12 @@ mmr_t reserved_0 : 29; } sh_pi_error_mask_s; } sh_pi_error_mask_u_t; -#else -typedef union sh_pi_error_mask_u { - mmr_t sh_pi_error_mask_regval; - struct { - mmr_t reserved_0 : 29; - mmr_t msg_length : 1; - mmr_t fsb_tbl_miss : 1; - mmr_t bad_snoop : 1; - mmr_t livelock : 1; - mmr_t shub_fsb_ce : 1; - mmr_t shub_fsb_uce : 1; - mmr_t shub_fsb_dqe : 1; - mmr_t addr_parity : 1; - mmr_t req_parity : 1; - mmr_t addr_access : 1; - mmr_t req_format : 1; - mmr_t ioq_overrun : 1; - mmr_t rsp_parity : 1; - mmr_t hung_bus : 1; - mmr_t xn_rp_crd_oflow : 1; - mmr_t xn_rq_crd_oflow : 1; - mmr_t md_rp_crd_oflow : 1; - mmr_t md_rq_crd_oflow : 1; - mmr_t gfx_int_1 : 1; - mmr_t gfx_int_0 : 1; - mmr_t nack_oflow : 1; - mmr_t xn_rp_q_oflow : 1; - mmr_t xn_rq_q_oflow : 1; - mmr_t md_rp_q_oflow : 1; - mmr_t md_rq_q_oflow : 1; - mmr_t msg_color_err : 1; - mmr_t fsb_shub_ce : 1; - mmr_t fsb_shub_uce : 1; - mmr_t pio_to_err : 1; - mmr_t mem_to_err : 1; - mmr_t pio_rp_err : 1; - mmr_t mem_rp_err : 1; - mmr_t xb_proto_err : 1; - mmr_t gfx_rp_err : 1; - mmr_t fsb_proto_err : 1; - } sh_pi_error_mask_s; -} sh_pi_error_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_EXPRESS_REPLY_CONFIG" */ /* PI Express Reply Configuration */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_express_reply_config_u { mmr_t sh_pi_express_reply_config_regval; struct { @@ -6230,64 +3385,36 @@ mmr_t reserved_0 : 61; } sh_pi_express_reply_config_s; } sh_pi_express_reply_config_u_t; -#else -typedef union sh_pi_express_reply_config_u { - mmr_t sh_pi_express_reply_config_regval; - struct { - mmr_t reserved_0 : 61; - mmr_t mode : 3; - } sh_pi_express_reply_config_s; -} sh_pi_express_reply_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_FSB_COMPARE_VALUE" */ /* FSB Compare Value */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_pi_fsb_compare_value_u { - mmr_t sh_pi_fsb_compare_value_regval; - struct { - mmr_t compare_value : 64; - } sh_pi_fsb_compare_value_s; -} sh_pi_fsb_compare_value_u_t; -#else typedef union sh_pi_fsb_compare_value_u { mmr_t sh_pi_fsb_compare_value_regval; struct { mmr_t compare_value : 64; } sh_pi_fsb_compare_value_s; } sh_pi_fsb_compare_value_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_FSB_COMPARE_MASK" */ /* FSB Compare Mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_fsb_compare_mask_u { mmr_t sh_pi_fsb_compare_mask_regval; struct { mmr_t mask_value : 64; } sh_pi_fsb_compare_mask_s; } sh_pi_fsb_compare_mask_u_t; -#else -typedef union sh_pi_fsb_compare_mask_u { - mmr_t sh_pi_fsb_compare_mask_regval; - struct { - mmr_t mask_value : 64; - } sh_pi_fsb_compare_mask_s; -} sh_pi_fsb_compare_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_FSB_ERROR_INJECTION" */ /* Inject an Error onto the FSB */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_fsb_error_injection_u { mmr_t sh_pi_fsb_error_injection_regval; struct { @@ -6321,48 +3448,12 @@ mmr_t reserved_2 : 29; } sh_pi_fsb_error_injection_s; } sh_pi_fsb_error_injection_u_t; -#else -typedef union sh_pi_fsb_error_injection_u { - mmr_t sh_pi_fsb_error_injection_regval; - struct { - mmr_t reserved_2 : 29; - mmr_t bus_hang : 1; - mmr_t livelock : 1; - mmr_t ioq_overrun : 1; - mmr_t reserved_1 : 4; - mmr_t dw3_uce_from_fsb : 1; - mmr_t dw3_ce_from_fsb : 1; - mmr_t dw2_uce_from_fsb : 1; - mmr_t dw2_ce_from_fsb : 1; - mmr_t dw1_uce_from_fsb : 1; - mmr_t dw1_ce_from_fsb : 1; - mmr_t dw0_uce_from_fsb : 1; - mmr_t dw0_ce_from_fsb : 1; - mmr_t rsp_pe_from_fsb : 1; - mmr_t ap1_pe_from_fsb : 1; - mmr_t ap0_pe_from_fsb : 1; - mmr_t rp_pe_from_fsb : 1; - mmr_t reserved_0 : 6; - mmr_t ip1_pe_to_fsb : 1; - mmr_t ip0_pe_to_fsb : 1; - mmr_t dw1_uce_to_fsb : 1; - mmr_t dw1_ce_to_fsb : 1; - mmr_t dw0_uce_to_fsb : 1; - mmr_t dw0_ce_to_fsb : 1; - mmr_t rsp_pe_to_fsb : 1; - mmr_t ap1_pe_to_fsb : 1; - mmr_t ap0_pe_to_fsb : 1; - mmr_t rp_pe_to_fsb : 1; - } sh_pi_fsb_error_injection_s; -} sh_pi_fsb_error_injection_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_MD2PI_REPLY_VC_CONFIG" */ /* MD-to-PI Reply Virtual Channel Configuration */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_md2pi_reply_vc_config_u { mmr_t sh_pi_md2pi_reply_vc_config_regval; struct { @@ -6374,26 +3465,12 @@ mmr_t capture_credit_status : 1; } sh_pi_md2pi_reply_vc_config_s; } sh_pi_md2pi_reply_vc_config_u_t; -#else -typedef union sh_pi_md2pi_reply_vc_config_u { - mmr_t sh_pi_md2pi_reply_vc_config_regval; - struct { - mmr_t capture_credit_status : 1; - mmr_t force_credit : 1; - mmr_t reserved_0 : 48; - mmr_t max_credits : 6; - mmr_t data_depth : 4; - mmr_t hdr_depth : 4; - } sh_pi_md2pi_reply_vc_config_s; -} sh_pi_md2pi_reply_vc_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_MD2PI_REQUEST_VC_CONFIG" */ /* MD-to-PI Request Virtual Channel Configuration */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_md2pi_request_vc_config_u { mmr_t sh_pi_md2pi_request_vc_config_regval; struct { @@ -6405,26 +3482,12 @@ mmr_t capture_credit_status : 1; } sh_pi_md2pi_request_vc_config_s; } sh_pi_md2pi_request_vc_config_u_t; -#else -typedef union sh_pi_md2pi_request_vc_config_u { - mmr_t sh_pi_md2pi_request_vc_config_regval; - struct { - mmr_t capture_credit_status : 1; - mmr_t force_credit : 1; - mmr_t reserved_0 : 48; - mmr_t max_credits : 6; - mmr_t data_depth : 4; - mmr_t hdr_depth : 4; - } sh_pi_md2pi_request_vc_config_s; -} sh_pi_md2pi_request_vc_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_QUEUE_ERROR_INJECTION" */ /* PI Queue Error Injection */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_queue_error_injection_u { mmr_t sh_pi_queue_error_injection_regval; struct { @@ -6439,29 +3502,12 @@ mmr_t reserved_0 : 56; } sh_pi_queue_error_injection_s; } sh_pi_queue_error_injection_u_t; -#else -typedef union sh_pi_queue_error_injection_u { - mmr_t sh_pi_queue_error_injection_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t xnpi_rpy_bfr : 1; - mmr_t rxl_rdy_q : 1; - mmr_t rxl_kill_q : 1; - mmr_t ptc_intr : 1; - mmr_t mdpi_rpy_bfr : 1; - mmr_t fsb_wtl_cmnd_q : 1; - mmr_t dxb_wtl_cmnd_q : 1; - mmr_t dat_dfr_q : 1; - } sh_pi_queue_error_injection_s; -} sh_pi_queue_error_injection_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_TEST_POINT_COMPARE" */ /* PI Test Point Compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_test_point_compare_u { mmr_t sh_pi_test_point_compare_regval; struct { @@ -6469,22 +3515,12 @@ mmr_t compare_pattern : 32; } sh_pi_test_point_compare_s; } sh_pi_test_point_compare_u_t; -#else -typedef union sh_pi_test_point_compare_u { - mmr_t sh_pi_test_point_compare_regval; - struct { - mmr_t compare_pattern : 32; - mmr_t compare_mask : 32; - } sh_pi_test_point_compare_s; -} sh_pi_test_point_compare_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_TEST_POINT_SELECT" */ /* PI Test Point Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_test_point_select_u { mmr_t sh_pi_test_point_select_regval; struct { @@ -6522,52 +3558,12 @@ mmr_t trigger_enable : 1; } sh_pi_test_point_select_s; } sh_pi_test_point_select_u_t; -#else -typedef union sh_pi_test_point_select_u { - mmr_t sh_pi_test_point_select_regval; - struct { - mmr_t trigger_enable : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_chiplet_sel : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_chiplet_sel : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_chiplet_sel : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_chiplet_sel : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_chiplet_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_chiplet_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_chiplet_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_chiplet_sel : 3; - } sh_pi_test_point_select_s; -} sh_pi_test_point_select_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_TEST_POINT_TRIGGER_SELECT" */ /* PI Test Point Trigger Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_test_point_trigger_select_u { mmr_t sh_pi_test_point_trigger_select_regval; struct { @@ -6605,52 +3601,12 @@ mmr_t reserved_15 : 1; } sh_pi_test_point_trigger_select_s; } sh_pi_test_point_trigger_select_u_t; -#else -typedef union sh_pi_test_point_trigger_select_u { - mmr_t sh_pi_test_point_trigger_select_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t trigger7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t trigger7_chiplet_sel : 3; - mmr_t reserved_13 : 1; - mmr_t trigger6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t trigger6_chiplet_sel : 3; - mmr_t reserved_11 : 1; - mmr_t trigger5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t trigger5_chiplet_sel : 3; - mmr_t reserved_9 : 1; - mmr_t trigger4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t trigger4_chiplet_sel : 3; - mmr_t reserved_7 : 1; - mmr_t trigger3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t trigger3_chiplet_sel : 3; - mmr_t reserved_5 : 1; - mmr_t trigger2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t trigger2_chiplet_sel : 3; - mmr_t reserved_3 : 1; - mmr_t trigger1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t trigger1_chiplet_sel : 3; - mmr_t reserved_1 : 1; - mmr_t trigger0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t trigger0_chiplet_sel : 3; - } sh_pi_test_point_trigger_select_s; -} sh_pi_test_point_trigger_select_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_XN2PI_REPLY_VC_CONFIG" */ /* XN-to-PI Reply Virtual Channel Configuration */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_xn2pi_reply_vc_config_u { mmr_t sh_pi_xn2pi_reply_vc_config_regval; struct { @@ -6662,26 +3618,12 @@ mmr_t capture_credit_status : 1; } sh_pi_xn2pi_reply_vc_config_s; } sh_pi_xn2pi_reply_vc_config_u_t; -#else -typedef union sh_pi_xn2pi_reply_vc_config_u { - mmr_t sh_pi_xn2pi_reply_vc_config_regval; - struct { - mmr_t capture_credit_status : 1; - mmr_t force_credit : 1; - mmr_t reserved_0 : 48; - mmr_t max_credits : 6; - mmr_t data_depth : 4; - mmr_t hdr_depth : 4; - } sh_pi_xn2pi_reply_vc_config_s; -} sh_pi_xn2pi_reply_vc_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_XN2PI_REQUEST_VC_CONFIG" */ /* XN-to-PI Request Virtual Channel Configuration */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_xn2pi_request_vc_config_u { mmr_t sh_pi_xn2pi_request_vc_config_regval; struct { @@ -6693,26 +3635,12 @@ mmr_t capture_credit_status : 1; } sh_pi_xn2pi_request_vc_config_s; } sh_pi_xn2pi_request_vc_config_u_t; -#else -typedef union sh_pi_xn2pi_request_vc_config_u { - mmr_t sh_pi_xn2pi_request_vc_config_regval; - struct { - mmr_t capture_credit_status : 1; - mmr_t force_credit : 1; - mmr_t reserved_0 : 48; - mmr_t max_credits : 6; - mmr_t data_depth : 4; - mmr_t hdr_depth : 4; - } sh_pi_xn2pi_request_vc_config_s; -} sh_pi_xn2pi_request_vc_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_AEC_STATUS" */ /* PI Adaptive Error Correction Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_aec_status_u { mmr_t sh_pi_aec_status_regval; struct { @@ -6720,22 +3648,12 @@ mmr_t reserved_0 : 61; } sh_pi_aec_status_s; } sh_pi_aec_status_u_t; -#else -typedef union sh_pi_aec_status_u { - mmr_t sh_pi_aec_status_regval; - struct { - mmr_t reserved_0 : 61; - mmr_t state : 3; - } sh_pi_aec_status_s; -} sh_pi_aec_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_AFI_FIRST_ERROR" */ /* PI AFI First Error */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_afi_first_error_u { mmr_t sh_pi_afi_first_error_regval; struct { @@ -6760,39 +3678,12 @@ mmr_t reserved_2 : 29; } sh_pi_afi_first_error_s; } sh_pi_afi_first_error_u_t; -#else -typedef union sh_pi_afi_first_error_u { - mmr_t sh_pi_afi_first_error_regval; - struct { - mmr_t reserved_2 : 29; - mmr_t msg_len : 1; - mmr_t fsb_tbl_miss : 1; - mmr_t bad_snoop : 1; - mmr_t livelock : 1; - mmr_t shub_fsb_ce : 1; - mmr_t shub_fsb_uce : 1; - mmr_t shub_fsb_dqe : 1; - mmr_t addr_parity : 1; - mmr_t req_parity : 1; - mmr_t addr_access : 1; - mmr_t req_format : 1; - mmr_t ioq_overrun : 1; - mmr_t rsp_parity : 1; - mmr_t hung_bus : 1; - mmr_t reserved_1 : 12; - mmr_t fsb_shub_ce : 1; - mmr_t fsb_shub_uce : 1; - mmr_t reserved_0 : 7; - } sh_pi_afi_first_error_s; -} sh_pi_afi_first_error_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CAM_ADDRESS_READ_DATA" */ /* CRB CAM MMR Address Read Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_cam_address_read_data_u { mmr_t sh_pi_cam_address_read_data_regval; struct { @@ -6801,44 +3692,24 @@ mmr_t cam_addr_val : 1; } sh_pi_cam_address_read_data_s; } sh_pi_cam_address_read_data_u_t; -#else -typedef union sh_pi_cam_address_read_data_u { - mmr_t sh_pi_cam_address_read_data_regval; - struct { - mmr_t cam_addr_val : 1; - mmr_t reserved_0 : 15; - mmr_t cam_addr : 48; - } sh_pi_cam_address_read_data_s; -} sh_pi_cam_address_read_data_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CAM_LPRA_READ_DATA" */ /* CRB CAM MMR LPRA Read Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_cam_lpra_read_data_u { mmr_t sh_pi_cam_lpra_read_data_regval; struct { mmr_t cam_lpra : 64; } sh_pi_cam_lpra_read_data_s; } sh_pi_cam_lpra_read_data_u_t; -#else -typedef union sh_pi_cam_lpra_read_data_u { - mmr_t sh_pi_cam_lpra_read_data_regval; - struct { - mmr_t cam_lpra : 64; - } sh_pi_cam_lpra_read_data_s; -} sh_pi_cam_lpra_read_data_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CAM_STATE_READ_DATA" */ /* CRB CAM MMR State Read Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_cam_state_read_data_u { mmr_t sh_pi_cam_state_read_data_regval; struct { @@ -6851,27 +3722,12 @@ mmr_t cam_rd_data_val : 1; } sh_pi_cam_state_read_data_s; } sh_pi_cam_state_read_data_u_t; -#else -typedef union sh_pi_cam_state_read_data_u { - mmr_t sh_pi_cam_state_read_data_regval; - struct { - mmr_t cam_rd_data_val : 1; - mmr_t reserved_1 : 13; - mmr_t cam_lpra : 18; - mmr_t reserved_0 : 26; - mmr_t cam_state_rd_pend : 1; - mmr_t cam_to : 1; - mmr_t cam_state : 4; - } sh_pi_cam_state_read_data_s; -} sh_pi_cam_state_read_data_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CORRECTED_DETAIL_1" */ /* PI Corrected Error Detail */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_corrected_detail_1_u { mmr_t sh_pi_corrected_detail_1_regval; struct { @@ -6880,44 +3736,24 @@ mmr_t dep : 8; } sh_pi_corrected_detail_1_s; } sh_pi_corrected_detail_1_u_t; -#else -typedef union sh_pi_corrected_detail_1_u { - mmr_t sh_pi_corrected_detail_1_regval; - struct { - mmr_t dep : 8; - mmr_t syndrome : 8; - mmr_t address : 48; - } sh_pi_corrected_detail_1_s; -} sh_pi_corrected_detail_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CORRECTED_DETAIL_2" */ /* PI Corrected Error Detail 2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_pi_corrected_detail_2_u { - mmr_t sh_pi_corrected_detail_2_regval; - struct { - mmr_t data : 64; - } sh_pi_corrected_detail_2_s; -} sh_pi_corrected_detail_2_u_t; -#else typedef union sh_pi_corrected_detail_2_u { mmr_t sh_pi_corrected_detail_2_regval; struct { mmr_t data : 64; } sh_pi_corrected_detail_2_s; } sh_pi_corrected_detail_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CORRECTED_DETAIL_3" */ /* PI Corrected Error Detail 3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_corrected_detail_3_u { mmr_t sh_pi_corrected_detail_3_regval; struct { @@ -6926,44 +3762,24 @@ mmr_t dep : 8; } sh_pi_corrected_detail_3_s; } sh_pi_corrected_detail_3_u_t; -#else -typedef union sh_pi_corrected_detail_3_u { - mmr_t sh_pi_corrected_detail_3_regval; - struct { - mmr_t dep : 8; - mmr_t syndrome : 8; - mmr_t address : 48; - } sh_pi_corrected_detail_3_s; -} sh_pi_corrected_detail_3_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CORRECTED_DETAIL_4" */ /* PI Corrected Error Detail 4 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_pi_corrected_detail_4_u { - mmr_t sh_pi_corrected_detail_4_regval; - struct { - mmr_t data : 64; - } sh_pi_corrected_detail_4_s; -} sh_pi_corrected_detail_4_u_t; -#else typedef union sh_pi_corrected_detail_4_u { mmr_t sh_pi_corrected_detail_4_regval; struct { mmr_t data : 64; } sh_pi_corrected_detail_4_s; } sh_pi_corrected_detail_4_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_CRBP_FIRST_ERROR" */ /* PI CRBP First Error */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_crbp_first_error_u { mmr_t sh_pi_crbp_first_error_regval; struct { @@ -6991,84 +3807,36 @@ mmr_t reserved_0 : 43; } sh_pi_crbp_first_error_s; } sh_pi_crbp_first_error_u_t; -#else -typedef union sh_pi_crbp_first_error_u { - mmr_t sh_pi_crbp_first_error_regval; - struct { - mmr_t reserved_0 : 43; - mmr_t xn_rp_crd_oflow : 1; - mmr_t xn_rq_crd_oflow : 1; - mmr_t md_rp_crd_oflow : 1; - mmr_t md_rq_crd_oflow : 1; - mmr_t gfx_int_1 : 1; - mmr_t gfx_int_0 : 1; - mmr_t nack_oflow : 1; - mmr_t xn_rp_q_oflow : 1; - mmr_t xn_rq_q_oflow : 1; - mmr_t md_rp_q_oflow : 1; - mmr_t md_rq_q_oflow : 1; - mmr_t msg_color_err : 1; - mmr_t fsb_shub_ce : 1; - mmr_t fsb_shub_uce : 1; - mmr_t pio_to_err : 1; - mmr_t mem_to_err : 1; - mmr_t pio_rp_err : 1; - mmr_t mem_rp_err : 1; - mmr_t xb_proto_err : 1; - mmr_t gfx_rp_err : 1; - mmr_t fsb_proto_err : 1; - } sh_pi_crbp_first_error_s; -} sh_pi_crbp_first_error_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_ERROR_DETAIL_1" */ /* PI Error Detail 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_pi_error_detail_1_u { - mmr_t sh_pi_error_detail_1_regval; - struct { - mmr_t status : 64; - } sh_pi_error_detail_1_s; -} sh_pi_error_detail_1_u_t; -#else typedef union sh_pi_error_detail_1_u { mmr_t sh_pi_error_detail_1_regval; struct { mmr_t status : 64; } sh_pi_error_detail_1_s; } sh_pi_error_detail_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_ERROR_DETAIL_2" */ /* PI Error Detail 2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_pi_error_detail_2_u { - mmr_t sh_pi_error_detail_2_regval; - struct { - mmr_t status : 64; - } sh_pi_error_detail_2_s; -} sh_pi_error_detail_2_u_t; -#else typedef union sh_pi_error_detail_2_u { mmr_t sh_pi_error_detail_2_regval; struct { mmr_t status : 64; } sh_pi_error_detail_2_s; } sh_pi_error_detail_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_ERROR_OVERFLOW" */ /* PI Error Overflow */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_error_overflow_u { mmr_t sh_pi_error_overflow_regval; struct { @@ -7110,56 +3878,12 @@ mmr_t reserved_0 : 29; } sh_pi_error_overflow_s; } sh_pi_error_overflow_u_t; -#else -typedef union sh_pi_error_overflow_u { - mmr_t sh_pi_error_overflow_regval; - struct { - mmr_t reserved_0 : 29; - mmr_t msg_length : 1; - mmr_t fsb_tbl_miss : 1; - mmr_t bad_snoop : 1; - mmr_t livelock : 1; - mmr_t shub_fsb_ce : 1; - mmr_t shub_fsb_uce : 1; - mmr_t shub_fsb_dqe : 1; - mmr_t addr_parity : 1; - mmr_t req_parity : 1; - mmr_t addr_access : 1; - mmr_t req_format : 1; - mmr_t ioq_overrun : 1; - mmr_t rsp_parity : 1; - mmr_t hung_bus : 1; - mmr_t xn_rp_crd_oflow : 1; - mmr_t xn_rq_crd_oflow : 1; - mmr_t md_rp_crd_oflow : 1; - mmr_t md_rq_crd_oflow : 1; - mmr_t gfx_int_1 : 1; - mmr_t gfx_int_0 : 1; - mmr_t nack_oflow : 1; - mmr_t xn_rp_q_oflow : 1; - mmr_t xn_rq_q_oflow : 1; - mmr_t md_rp_q_oflow : 1; - mmr_t md_rq_q_oflow : 1; - mmr_t msg_color_err : 1; - mmr_t fsb_shub_ce : 1; - mmr_t fsb_shub_uce : 1; - mmr_t pio_to_err : 1; - mmr_t mem_to_err : 1; - mmr_t pio_rp_err : 1; - mmr_t mem_rp_err : 1; - mmr_t xb_proto_err : 1; - mmr_t gfx_rp_err : 1; - mmr_t fsb_proto_err : 1; - } sh_pi_error_overflow_s; -} sh_pi_error_overflow_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_ERROR_SUMMARY" */ /* PI Error Summary */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_error_summary_u { mmr_t sh_pi_error_summary_regval; struct { @@ -7201,56 +3925,12 @@ mmr_t reserved_0 : 29; } sh_pi_error_summary_s; } sh_pi_error_summary_u_t; -#else -typedef union sh_pi_error_summary_u { - mmr_t sh_pi_error_summary_regval; - struct { - mmr_t reserved_0 : 29; - mmr_t msg_length : 1; - mmr_t fsb_tbl_miss : 1; - mmr_t bad_snoop : 1; - mmr_t livelock : 1; - mmr_t shub_fsb_ce : 1; - mmr_t shub_fsb_uce : 1; - mmr_t shub_fsb_dqe : 1; - mmr_t addr_parity : 1; - mmr_t req_parity : 1; - mmr_t addr_access : 1; - mmr_t req_format : 1; - mmr_t ioq_overrun : 1; - mmr_t rsp_parity : 1; - mmr_t hung_bus : 1; - mmr_t xn_rp_crd_oflow : 1; - mmr_t xn_rq_crd_oflow : 1; - mmr_t md_rp_crd_oflow : 1; - mmr_t md_rq_crd_oflow : 1; - mmr_t gfx_int_1 : 1; - mmr_t gfx_int_0 : 1; - mmr_t nack_oflow : 1; - mmr_t xn_rp_q_oflow : 1; - mmr_t xn_rq_q_oflow : 1; - mmr_t md_rp_q_oflow : 1; - mmr_t md_rq_q_oflow : 1; - mmr_t msg_color_err : 1; - mmr_t fsb_shub_ce : 1; - mmr_t fsb_shub_uce : 1; - mmr_t pio_to_err : 1; - mmr_t mem_to_err : 1; - mmr_t pio_rp_err : 1; - mmr_t mem_rp_err : 1; - mmr_t xb_proto_err : 1; - mmr_t gfx_rp_err : 1; - mmr_t fsb_proto_err : 1; - } sh_pi_error_summary_s; -} sh_pi_error_summary_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_EXPRESS_REPLY_STATUS" */ /* PI Express Reply Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_express_reply_status_u { mmr_t sh_pi_express_reply_status_regval; struct { @@ -7258,22 +3938,12 @@ mmr_t reserved_0 : 61; } sh_pi_express_reply_status_s; } sh_pi_express_reply_status_u_t; -#else -typedef union sh_pi_express_reply_status_u { - mmr_t sh_pi_express_reply_status_regval; - struct { - mmr_t reserved_0 : 61; - mmr_t state : 3; - } sh_pi_express_reply_status_s; -} sh_pi_express_reply_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_FIRST_ERROR" */ /* PI First Error */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_first_error_u { mmr_t sh_pi_first_error_regval; struct { @@ -7315,56 +3985,12 @@ mmr_t reserved_0 : 29; } sh_pi_first_error_s; } sh_pi_first_error_u_t; -#else -typedef union sh_pi_first_error_u { - mmr_t sh_pi_first_error_regval; - struct { - mmr_t reserved_0 : 29; - mmr_t msg_length : 1; - mmr_t fsb_tbl_miss : 1; - mmr_t bad_snoop : 1; - mmr_t livelock : 1; - mmr_t shub_fsb_ce : 1; - mmr_t shub_fsb_uce : 1; - mmr_t shub_fsb_dqe : 1; - mmr_t addr_parity : 1; - mmr_t req_parity : 1; - mmr_t addr_access : 1; - mmr_t req_format : 1; - mmr_t ioq_overrun : 1; - mmr_t rsp_parity : 1; - mmr_t hung_bus : 1; - mmr_t xn_rp_crd_oflow : 1; - mmr_t xn_rq_crd_oflow : 1; - mmr_t md_rp_crd_oflow : 1; - mmr_t md_rq_crd_oflow : 1; - mmr_t gfx_int_1 : 1; - mmr_t gfx_int_0 : 1; - mmr_t nack_oflow : 1; - mmr_t xn_rp_q_oflow : 1; - mmr_t xn_rq_q_oflow : 1; - mmr_t md_rp_q_oflow : 1; - mmr_t md_rq_q_oflow : 1; - mmr_t msg_color_err : 1; - mmr_t fsb_shub_ce : 1; - mmr_t fsb_shub_uce : 1; - mmr_t pio_to_err : 1; - mmr_t mem_to_err : 1; - mmr_t pio_rp_err : 1; - mmr_t mem_rp_err : 1; - mmr_t xb_proto_err : 1; - mmr_t gfx_rp_err : 1; - mmr_t fsb_proto_err : 1; - } sh_pi_first_error_s; -} sh_pi_first_error_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_PI2MD_REPLY_VC_STATUS" */ /* PI-to-MD Reply Virtual Channel Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_pi2md_reply_vc_status_u { mmr_t sh_pi_pi2md_reply_vc_status_regval; struct { @@ -7372,22 +3998,12 @@ mmr_t reserved_0 : 58; } sh_pi_pi2md_reply_vc_status_s; } sh_pi_pi2md_reply_vc_status_u_t; -#else -typedef union sh_pi_pi2md_reply_vc_status_u { - mmr_t sh_pi_pi2md_reply_vc_status_regval; - struct { - mmr_t reserved_0 : 58; - mmr_t output_crd_stat : 6; - } sh_pi_pi2md_reply_vc_status_s; -} sh_pi_pi2md_reply_vc_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_PI2MD_REQUEST_VC_STATUS" */ /* PI-to-MD Request Virtual Channel Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_pi2md_request_vc_status_u { mmr_t sh_pi_pi2md_request_vc_status_regval; struct { @@ -7395,22 +4011,12 @@ mmr_t reserved_0 : 58; } sh_pi_pi2md_request_vc_status_s; } sh_pi_pi2md_request_vc_status_u_t; -#else -typedef union sh_pi_pi2md_request_vc_status_u { - mmr_t sh_pi_pi2md_request_vc_status_regval; - struct { - mmr_t reserved_0 : 58; - mmr_t output_crd_stat : 6; - } sh_pi_pi2md_request_vc_status_s; -} sh_pi_pi2md_request_vc_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_PI2XN_REPLY_VC_STATUS" */ /* PI-to-XN Reply Virtual Channel Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_pi2xn_reply_vc_status_u { mmr_t sh_pi_pi2xn_reply_vc_status_regval; struct { @@ -7418,22 +4024,12 @@ mmr_t reserved_0 : 58; } sh_pi_pi2xn_reply_vc_status_s; } sh_pi_pi2xn_reply_vc_status_u_t; -#else -typedef union sh_pi_pi2xn_reply_vc_status_u { - mmr_t sh_pi_pi2xn_reply_vc_status_regval; - struct { - mmr_t reserved_0 : 58; - mmr_t output_crd_stat : 6; - } sh_pi_pi2xn_reply_vc_status_s; -} sh_pi_pi2xn_reply_vc_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_PI2XN_REQUEST_VC_STATUS" */ /* PI-to-XN Request Virtual Channel Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_pi2xn_request_vc_status_u { mmr_t sh_pi_pi2xn_request_vc_status_regval; struct { @@ -7441,22 +4037,12 @@ mmr_t reserved_0 : 58; } sh_pi_pi2xn_request_vc_status_s; } sh_pi_pi2xn_request_vc_status_u_t; -#else -typedef union sh_pi_pi2xn_request_vc_status_u { - mmr_t sh_pi_pi2xn_request_vc_status_regval; - struct { - mmr_t reserved_0 : 58; - mmr_t output_crd_stat : 6; - } sh_pi_pi2xn_request_vc_status_s; -} sh_pi_pi2xn_request_vc_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_UNCORRECTED_DETAIL_1" */ /* PI Uncorrected Error Detail 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_uncorrected_detail_1_u { mmr_t sh_pi_uncorrected_detail_1_regval; struct { @@ -7465,44 +4051,24 @@ mmr_t dep : 8; } sh_pi_uncorrected_detail_1_s; } sh_pi_uncorrected_detail_1_u_t; -#else -typedef union sh_pi_uncorrected_detail_1_u { - mmr_t sh_pi_uncorrected_detail_1_regval; - struct { - mmr_t dep : 8; - mmr_t syndrome : 8; - mmr_t address : 48; - } sh_pi_uncorrected_detail_1_s; -} sh_pi_uncorrected_detail_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_UNCORRECTED_DETAIL_2" */ /* PI Uncorrected Error Detail 2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_uncorrected_detail_2_u { mmr_t sh_pi_uncorrected_detail_2_regval; struct { mmr_t data : 64; } sh_pi_uncorrected_detail_2_s; } sh_pi_uncorrected_detail_2_u_t; -#else -typedef union sh_pi_uncorrected_detail_2_u { - mmr_t sh_pi_uncorrected_detail_2_regval; - struct { - mmr_t data : 64; - } sh_pi_uncorrected_detail_2_s; -} sh_pi_uncorrected_detail_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_UNCORRECTED_DETAIL_3" */ /* PI Uncorrected Error Detail 3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_uncorrected_detail_3_u { mmr_t sh_pi_uncorrected_detail_3_regval; struct { @@ -7511,44 +4077,24 @@ mmr_t dep : 8; } sh_pi_uncorrected_detail_3_s; } sh_pi_uncorrected_detail_3_u_t; -#else -typedef union sh_pi_uncorrected_detail_3_u { - mmr_t sh_pi_uncorrected_detail_3_regval; - struct { - mmr_t dep : 8; - mmr_t syndrome : 8; - mmr_t address : 48; - } sh_pi_uncorrected_detail_3_s; -} sh_pi_uncorrected_detail_3_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_UNCORRECTED_DETAIL_4" */ /* PI Uncorrected Error Detail 4 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_pi_uncorrected_detail_4_u { - mmr_t sh_pi_uncorrected_detail_4_regval; - struct { - mmr_t data : 64; - } sh_pi_uncorrected_detail_4_s; -} sh_pi_uncorrected_detail_4_u_t; -#else typedef union sh_pi_uncorrected_detail_4_u { mmr_t sh_pi_uncorrected_detail_4_regval; struct { mmr_t data : 64; } sh_pi_uncorrected_detail_4_s; } sh_pi_uncorrected_detail_4_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_MD2PI_REPLY_VC_STATUS" */ /* MD-to-PI Reply Virtual Channel Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_md2pi_reply_vc_status_u { mmr_t sh_pi_md2pi_reply_vc_status_regval; struct { @@ -7558,24 +4104,12 @@ mmr_t reserved_0 : 52; } sh_pi_md2pi_reply_vc_status_s; } sh_pi_md2pi_reply_vc_status_u_t; -#else -typedef union sh_pi_md2pi_reply_vc_status_u { - mmr_t sh_pi_md2pi_reply_vc_status_regval; - struct { - mmr_t reserved_0 : 52; - mmr_t input_queue_stat : 4; - mmr_t input_dat_crd_stat : 4; - mmr_t input_hdr_crd_stat : 4; - } sh_pi_md2pi_reply_vc_status_s; -} sh_pi_md2pi_reply_vc_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_MD2PI_REQUEST_VC_STATUS" */ /* MD-to-PI Request Virtual Channel Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_md2pi_request_vc_status_u { mmr_t sh_pi_md2pi_request_vc_status_regval; struct { @@ -7585,24 +4119,12 @@ mmr_t reserved_0 : 52; } sh_pi_md2pi_request_vc_status_s; } sh_pi_md2pi_request_vc_status_u_t; -#else -typedef union sh_pi_md2pi_request_vc_status_u { - mmr_t sh_pi_md2pi_request_vc_status_regval; - struct { - mmr_t reserved_0 : 52; - mmr_t input_queue_stat : 4; - mmr_t input_dat_crd_stat : 4; - mmr_t input_hdr_crd_stat : 4; - } sh_pi_md2pi_request_vc_status_s; -} sh_pi_md2pi_request_vc_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_XN2PI_REPLY_VC_STATUS" */ /* XN-to-PI Reply Virtual Channel Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_xn2pi_reply_vc_status_u { mmr_t sh_pi_xn2pi_reply_vc_status_regval; struct { @@ -7612,24 +4134,12 @@ mmr_t reserved_0 : 52; } sh_pi_xn2pi_reply_vc_status_s; } sh_pi_xn2pi_reply_vc_status_u_t; -#else -typedef union sh_pi_xn2pi_reply_vc_status_u { - mmr_t sh_pi_xn2pi_reply_vc_status_regval; - struct { - mmr_t reserved_0 : 52; - mmr_t input_queue_stat : 4; - mmr_t input_dat_crd_stat : 4; - mmr_t input_hdr_crd_stat : 4; - } sh_pi_xn2pi_reply_vc_status_s; -} sh_pi_xn2pi_reply_vc_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_XN2PI_REQUEST_VC_STATUS" */ /* XN-to-PI Request Virtual Channel Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_xn2pi_request_vc_status_u { mmr_t sh_pi_xn2pi_request_vc_status_regval; struct { @@ -7639,23 +4149,11 @@ mmr_t reserved_0 : 52; } sh_pi_xn2pi_request_vc_status_s; } sh_pi_xn2pi_request_vc_status_u_t; -#else -typedef union sh_pi_xn2pi_request_vc_status_u { - mmr_t sh_pi_xn2pi_request_vc_status_regval; - struct { - mmr_t reserved_0 : 52; - mmr_t input_queue_stat : 4; - mmr_t input_dat_crd_stat : 4; - mmr_t input_hdr_crd_stat : 4; - } sh_pi_xn2pi_request_vc_status_s; -} sh_pi_xn2pi_request_vc_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_SIC_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_sic_flow_u { mmr_t sh_xnpi_sic_flow_regval; struct { @@ -7680,38 +4178,11 @@ mmr_t disable_bypass_out : 1; } sh_xnpi_sic_flow_s; } sh_xnpi_sic_flow_u_t; -#else -typedef union sh_xnpi_sic_flow_u { - mmr_t sh_xnpi_sic_flow_regval; - struct { - mmr_t disable_bypass_out : 1; - mmr_t reserved_7 : 2; - mmr_t credit_vc2_cap : 5; - mmr_t reserved_6 : 3; - mmr_t credit_vc2_dyn : 5; - mmr_t reserved_5 : 3; - mmr_t credit_vc2_test : 5; - mmr_t reserved_4 : 3; - mmr_t credit_vc0_cap : 5; - mmr_t reserved_3 : 3; - mmr_t credit_vc0_dyn : 5; - mmr_t reserved_2 : 3; - mmr_t credit_vc0_test : 5; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 2; - mmr_t debit_vc2_withhold : 5; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 2; - mmr_t debit_vc0_withhold : 5; - } sh_xnpi_sic_flow_s; -} sh_xnpi_sic_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_TO_NI0_PORT_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_to_ni0_port_flow_u { mmr_t sh_xnpi_to_ni0_port_flow_regval; struct { @@ -7732,34 +4203,11 @@ mmr_t reserved_6 : 2; } sh_xnpi_to_ni0_port_flow_s; } sh_xnpi_to_ni0_port_flow_u_t; -#else -typedef union sh_xnpi_to_ni0_port_flow_u { - mmr_t sh_xnpi_to_ni0_port_flow_regval; - struct { - mmr_t reserved_6 : 2; - mmr_t credit_vc2_cap : 6; - mmr_t reserved_5 : 2; - mmr_t credit_vc2_dyn : 6; - mmr_t reserved_4 : 10; - mmr_t credit_vc0_cap : 6; - mmr_t reserved_3 : 2; - mmr_t credit_vc0_dyn : 6; - mmr_t reserved_2 : 8; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t debit_vc2_withhold : 6; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnpi_to_ni0_port_flow_s; -} sh_xnpi_to_ni0_port_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_TO_NI1_PORT_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_to_ni1_port_flow_u { mmr_t sh_xnpi_to_ni1_port_flow_regval; struct { @@ -7780,34 +4228,11 @@ mmr_t reserved_6 : 2; } sh_xnpi_to_ni1_port_flow_s; } sh_xnpi_to_ni1_port_flow_u_t; -#else -typedef union sh_xnpi_to_ni1_port_flow_u { - mmr_t sh_xnpi_to_ni1_port_flow_regval; - struct { - mmr_t reserved_6 : 2; - mmr_t credit_vc2_cap : 6; - mmr_t reserved_5 : 2; - mmr_t credit_vc2_dyn : 6; - mmr_t reserved_4 : 10; - mmr_t credit_vc0_cap : 6; - mmr_t reserved_3 : 2; - mmr_t credit_vc0_dyn : 6; - mmr_t reserved_2 : 8; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t debit_vc2_withhold : 6; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnpi_to_ni1_port_flow_s; -} sh_xnpi_to_ni1_port_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_TO_IILB_PORT_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_to_iilb_port_flow_u { mmr_t sh_xnpi_to_iilb_port_flow_regval; struct { @@ -7828,34 +4253,11 @@ mmr_t reserved_6 : 2; } sh_xnpi_to_iilb_port_flow_s; } sh_xnpi_to_iilb_port_flow_u_t; -#else -typedef union sh_xnpi_to_iilb_port_flow_u { - mmr_t sh_xnpi_to_iilb_port_flow_regval; - struct { - mmr_t reserved_6 : 2; - mmr_t credit_vc2_cap : 6; - mmr_t reserved_5 : 2; - mmr_t credit_vc2_dyn : 6; - mmr_t reserved_4 : 10; - mmr_t credit_vc0_cap : 6; - mmr_t reserved_3 : 2; - mmr_t credit_vc0_dyn : 6; - mmr_t reserved_2 : 8; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t debit_vc2_withhold : 6; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnpi_to_iilb_port_flow_s; -} sh_xnpi_to_iilb_port_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_FR_NI0_PORT_FLOW_FIFO" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_fr_ni0_port_flow_fifo_u { mmr_t sh_xnpi_fr_ni0_port_flow_fifo_regval; struct { @@ -7873,31 +4275,11 @@ mmr_t reserved_5 : 19; } sh_xnpi_fr_ni0_port_flow_fifo_s; } sh_xnpi_fr_ni0_port_flow_fifo_u_t; -#else -typedef union sh_xnpi_fr_ni0_port_flow_fifo_u { - mmr_t sh_xnpi_fr_ni0_port_flow_fifo_regval; - struct { - mmr_t reserved_5 : 19; - mmr_t entry_vc2_test : 5; - mmr_t reserved_4 : 3; - mmr_t entry_vc0_test : 5; - mmr_t reserved_3 : 2; - mmr_t entry_vc2_cap : 6; - mmr_t reserved_2 : 2; - mmr_t entry_vc2_dyn : 6; - mmr_t reserved_1 : 2; - mmr_t entry_vc0_cap : 6; - mmr_t reserved_0 : 2; - mmr_t entry_vc0_dyn : 6; - } sh_xnpi_fr_ni0_port_flow_fifo_s; -} sh_xnpi_fr_ni0_port_flow_fifo_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_FR_NI1_PORT_FLOW_FIFO" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_fr_ni1_port_flow_fifo_u { mmr_t sh_xnpi_fr_ni1_port_flow_fifo_regval; struct { @@ -7915,31 +4297,11 @@ mmr_t reserved_5 : 19; } sh_xnpi_fr_ni1_port_flow_fifo_s; } sh_xnpi_fr_ni1_port_flow_fifo_u_t; -#else -typedef union sh_xnpi_fr_ni1_port_flow_fifo_u { - mmr_t sh_xnpi_fr_ni1_port_flow_fifo_regval; - struct { - mmr_t reserved_5 : 19; - mmr_t entry_vc2_test : 5; - mmr_t reserved_4 : 3; - mmr_t entry_vc0_test : 5; - mmr_t reserved_3 : 2; - mmr_t entry_vc2_cap : 6; - mmr_t reserved_2 : 2; - mmr_t entry_vc2_dyn : 6; - mmr_t reserved_1 : 2; - mmr_t entry_vc0_cap : 6; - mmr_t reserved_0 : 2; - mmr_t entry_vc0_dyn : 6; - } sh_xnpi_fr_ni1_port_flow_fifo_s; -} sh_xnpi_fr_ni1_port_flow_fifo_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_FR_IILB_PORT_FLOW_FIFO" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_fr_iilb_port_flow_fifo_u { mmr_t sh_xnpi_fr_iilb_port_flow_fifo_regval; struct { @@ -7957,31 +4319,11 @@ mmr_t reserved_5 : 19; } sh_xnpi_fr_iilb_port_flow_fifo_s; } sh_xnpi_fr_iilb_port_flow_fifo_u_t; -#else -typedef union sh_xnpi_fr_iilb_port_flow_fifo_u { - mmr_t sh_xnpi_fr_iilb_port_flow_fifo_regval; - struct { - mmr_t reserved_5 : 19; - mmr_t entry_vc2_test : 5; - mmr_t reserved_4 : 3; - mmr_t entry_vc0_test : 5; - mmr_t reserved_3 : 2; - mmr_t entry_vc2_cap : 6; - mmr_t reserved_2 : 2; - mmr_t entry_vc2_dyn : 6; - mmr_t reserved_1 : 2; - mmr_t entry_vc0_cap : 6; - mmr_t reserved_0 : 2; - mmr_t entry_vc0_dyn : 6; - } sh_xnpi_fr_iilb_port_flow_fifo_s; -} sh_xnpi_fr_iilb_port_flow_fifo_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_SIC_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_sic_flow_u { mmr_t sh_xnmd_sic_flow_regval; struct { @@ -8006,38 +4348,11 @@ mmr_t disable_bypass_out : 1; } sh_xnmd_sic_flow_s; } sh_xnmd_sic_flow_u_t; -#else -typedef union sh_xnmd_sic_flow_u { - mmr_t sh_xnmd_sic_flow_regval; - struct { - mmr_t disable_bypass_out : 1; - mmr_t reserved_7 : 2; - mmr_t credit_vc2_cap : 5; - mmr_t reserved_6 : 3; - mmr_t credit_vc2_dyn : 5; - mmr_t reserved_5 : 3; - mmr_t credit_vc2_test : 5; - mmr_t reserved_4 : 3; - mmr_t credit_vc0_cap : 5; - mmr_t reserved_3 : 3; - mmr_t credit_vc0_dyn : 5; - mmr_t reserved_2 : 3; - mmr_t credit_vc0_test : 5; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 2; - mmr_t debit_vc2_withhold : 5; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 2; - mmr_t debit_vc0_withhold : 5; - } sh_xnmd_sic_flow_s; -} sh_xnmd_sic_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_TO_NI0_PORT_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_to_ni0_port_flow_u { mmr_t sh_xnmd_to_ni0_port_flow_regval; struct { @@ -8058,34 +4373,11 @@ mmr_t reserved_6 : 2; } sh_xnmd_to_ni0_port_flow_s; } sh_xnmd_to_ni0_port_flow_u_t; -#else -typedef union sh_xnmd_to_ni0_port_flow_u { - mmr_t sh_xnmd_to_ni0_port_flow_regval; - struct { - mmr_t reserved_6 : 2; - mmr_t credit_vc2_cap : 6; - mmr_t reserved_5 : 2; - mmr_t credit_vc2_dyn : 6; - mmr_t reserved_4 : 10; - mmr_t credit_vc0_cap : 6; - mmr_t reserved_3 : 2; - mmr_t credit_vc0_dyn : 6; - mmr_t reserved_2 : 8; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t debit_vc2_withhold : 6; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnmd_to_ni0_port_flow_s; -} sh_xnmd_to_ni0_port_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_TO_NI1_PORT_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_to_ni1_port_flow_u { mmr_t sh_xnmd_to_ni1_port_flow_regval; struct { @@ -8106,34 +4398,11 @@ mmr_t reserved_6 : 2; } sh_xnmd_to_ni1_port_flow_s; } sh_xnmd_to_ni1_port_flow_u_t; -#else -typedef union sh_xnmd_to_ni1_port_flow_u { - mmr_t sh_xnmd_to_ni1_port_flow_regval; - struct { - mmr_t reserved_6 : 2; - mmr_t credit_vc2_cap : 6; - mmr_t reserved_5 : 2; - mmr_t credit_vc2_dyn : 6; - mmr_t reserved_4 : 10; - mmr_t credit_vc0_cap : 6; - mmr_t reserved_3 : 2; - mmr_t credit_vc0_dyn : 6; - mmr_t reserved_2 : 8; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t debit_vc2_withhold : 6; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnmd_to_ni1_port_flow_s; -} sh_xnmd_to_ni1_port_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_TO_IILB_PORT_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_to_iilb_port_flow_u { mmr_t sh_xnmd_to_iilb_port_flow_regval; struct { @@ -8154,34 +4423,11 @@ mmr_t reserved_6 : 2; } sh_xnmd_to_iilb_port_flow_s; } sh_xnmd_to_iilb_port_flow_u_t; -#else -typedef union sh_xnmd_to_iilb_port_flow_u { - mmr_t sh_xnmd_to_iilb_port_flow_regval; - struct { - mmr_t reserved_6 : 2; - mmr_t credit_vc2_cap : 6; - mmr_t reserved_5 : 2; - mmr_t credit_vc2_dyn : 6; - mmr_t reserved_4 : 10; - mmr_t credit_vc0_cap : 6; - mmr_t reserved_3 : 2; - mmr_t credit_vc0_dyn : 6; - mmr_t reserved_2 : 8; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t debit_vc2_withhold : 6; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnmd_to_iilb_port_flow_s; -} sh_xnmd_to_iilb_port_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_FR_NI0_PORT_FLOW_FIFO" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_fr_ni0_port_flow_fifo_u { mmr_t sh_xnmd_fr_ni0_port_flow_fifo_regval; struct { @@ -8199,31 +4445,11 @@ mmr_t reserved_5 : 19; } sh_xnmd_fr_ni0_port_flow_fifo_s; } sh_xnmd_fr_ni0_port_flow_fifo_u_t; -#else -typedef union sh_xnmd_fr_ni0_port_flow_fifo_u { - mmr_t sh_xnmd_fr_ni0_port_flow_fifo_regval; - struct { - mmr_t reserved_5 : 19; - mmr_t entry_vc2_test : 5; - mmr_t reserved_4 : 3; - mmr_t entry_vc0_test : 5; - mmr_t reserved_3 : 2; - mmr_t entry_vc2_cap : 6; - mmr_t reserved_2 : 2; - mmr_t entry_vc2_dyn : 6; - mmr_t reserved_1 : 2; - mmr_t entry_vc0_cap : 6; - mmr_t reserved_0 : 2; - mmr_t entry_vc0_dyn : 6; - } sh_xnmd_fr_ni0_port_flow_fifo_s; -} sh_xnmd_fr_ni0_port_flow_fifo_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_FR_NI1_PORT_FLOW_FIFO" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_fr_ni1_port_flow_fifo_u { mmr_t sh_xnmd_fr_ni1_port_flow_fifo_regval; struct { @@ -8241,31 +4467,11 @@ mmr_t reserved_5 : 19; } sh_xnmd_fr_ni1_port_flow_fifo_s; } sh_xnmd_fr_ni1_port_flow_fifo_u_t; -#else -typedef union sh_xnmd_fr_ni1_port_flow_fifo_u { - mmr_t sh_xnmd_fr_ni1_port_flow_fifo_regval; - struct { - mmr_t reserved_5 : 19; - mmr_t entry_vc2_test : 5; - mmr_t reserved_4 : 3; - mmr_t entry_vc0_test : 5; - mmr_t reserved_3 : 2; - mmr_t entry_vc2_cap : 6; - mmr_t reserved_2 : 2; - mmr_t entry_vc2_dyn : 6; - mmr_t reserved_1 : 2; - mmr_t entry_vc0_cap : 6; - mmr_t reserved_0 : 2; - mmr_t entry_vc0_dyn : 6; - } sh_xnmd_fr_ni1_port_flow_fifo_s; -} sh_xnmd_fr_ni1_port_flow_fifo_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_FR_IILB_PORT_FLOW_FIFO" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_fr_iilb_port_flow_fifo_u { mmr_t sh_xnmd_fr_iilb_port_flow_fifo_regval; struct { @@ -8283,31 +4489,11 @@ mmr_t reserved_5 : 19; } sh_xnmd_fr_iilb_port_flow_fifo_s; } sh_xnmd_fr_iilb_port_flow_fifo_u_t; -#else -typedef union sh_xnmd_fr_iilb_port_flow_fifo_u { - mmr_t sh_xnmd_fr_iilb_port_flow_fifo_regval; - struct { - mmr_t reserved_5 : 19; - mmr_t entry_vc2_test : 5; - mmr_t reserved_4 : 3; - mmr_t entry_vc0_test : 5; - mmr_t reserved_3 : 2; - mmr_t entry_vc2_cap : 6; - mmr_t reserved_2 : 2; - mmr_t entry_vc2_dyn : 6; - mmr_t reserved_1 : 2; - mmr_t entry_vc0_cap : 6; - mmr_t reserved_0 : 2; - mmr_t entry_vc0_dyn : 6; - } sh_xnmd_fr_iilb_port_flow_fifo_s; -} sh_xnmd_fr_iilb_port_flow_fifo_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNII_INTRA_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnii_intra_flow_u { mmr_t sh_xnii_intra_flow_regval; struct { @@ -8331,37 +4517,11 @@ mmr_t reserved_7 : 1; } sh_xnii_intra_flow_s; } sh_xnii_intra_flow_u_t; -#else -typedef union sh_xnii_intra_flow_u { - mmr_t sh_xnii_intra_flow_regval; - struct { - mmr_t reserved_7 : 1; - mmr_t credit_vc2_cap : 7; - mmr_t reserved_6 : 1; - mmr_t credit_vc2_dyn : 7; - mmr_t reserved_5 : 1; - mmr_t credit_vc2_test : 7; - mmr_t reserved_4 : 1; - mmr_t credit_vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t credit_vc0_dyn : 7; - mmr_t reserved_2 : 1; - mmr_t credit_vc0_test : 7; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t debit_vc2_withhold : 6; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnii_intra_flow_s; -} sh_xnii_intra_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNLB_INTRA_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnlb_intra_flow_u { mmr_t sh_xnlb_intra_flow_regval; struct { @@ -8385,37 +4545,11 @@ mmr_t disable_bypass_in : 1; } sh_xnlb_intra_flow_s; } sh_xnlb_intra_flow_u_t; -#else -typedef union sh_xnlb_intra_flow_u { - mmr_t sh_xnlb_intra_flow_regval; - struct { - mmr_t disable_bypass_in : 1; - mmr_t credit_vc2_cap : 7; - mmr_t reserved_6 : 1; - mmr_t credit_vc2_dyn : 7; - mmr_t reserved_5 : 1; - mmr_t credit_vc2_test : 7; - mmr_t reserved_4 : 1; - mmr_t credit_vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t credit_vc0_dyn : 7; - mmr_t reserved_2 : 1; - mmr_t credit_vc0_test : 7; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t debit_vc2_withhold : 6; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnlb_intra_flow_s; -} sh_xnlb_intra_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_TO_NI0_INTRA_FLOW_DEBIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_to_ni0_intra_flow_debit_u { mmr_t sh_xniilb_to_ni0_intra_flow_debit_regval; struct { @@ -8436,34 +4570,11 @@ mmr_t reserved_6 : 1; } sh_xniilb_to_ni0_intra_flow_debit_s; } sh_xniilb_to_ni0_intra_flow_debit_u_t; -#else -typedef union sh_xniilb_to_ni0_intra_flow_debit_u { - mmr_t sh_xniilb_to_ni0_intra_flow_debit_regval; - struct { - mmr_t reserved_6 : 1; - mmr_t vc2_cap : 7; - mmr_t reserved_5 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_4 : 9; - mmr_t vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_2 : 8; - mmr_t vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t vc2_withhold : 6; - mmr_t vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t vc0_withhold : 6; - } sh_xniilb_to_ni0_intra_flow_debit_s; -} sh_xniilb_to_ni0_intra_flow_debit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_TO_NI1_INTRA_FLOW_DEBIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_to_ni1_intra_flow_debit_u { mmr_t sh_xniilb_to_ni1_intra_flow_debit_regval; struct { @@ -8484,34 +4595,11 @@ mmr_t reserved_6 : 1; } sh_xniilb_to_ni1_intra_flow_debit_s; } sh_xniilb_to_ni1_intra_flow_debit_u_t; -#else -typedef union sh_xniilb_to_ni1_intra_flow_debit_u { - mmr_t sh_xniilb_to_ni1_intra_flow_debit_regval; - struct { - mmr_t reserved_6 : 1; - mmr_t vc2_cap : 7; - mmr_t reserved_5 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_4 : 9; - mmr_t vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_2 : 8; - mmr_t vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t vc2_withhold : 6; - mmr_t vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t vc0_withhold : 6; - } sh_xniilb_to_ni1_intra_flow_debit_s; -} sh_xniilb_to_ni1_intra_flow_debit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_TO_MD_INTRA_FLOW_DEBIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_to_md_intra_flow_debit_u { mmr_t sh_xniilb_to_md_intra_flow_debit_regval; struct { @@ -8532,34 +4620,11 @@ mmr_t reserved_6 : 1; } sh_xniilb_to_md_intra_flow_debit_s; } sh_xniilb_to_md_intra_flow_debit_u_t; -#else -typedef union sh_xniilb_to_md_intra_flow_debit_u { - mmr_t sh_xniilb_to_md_intra_flow_debit_regval; - struct { - mmr_t reserved_6 : 1; - mmr_t vc2_cap : 7; - mmr_t reserved_5 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_4 : 9; - mmr_t vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_2 : 8; - mmr_t vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t vc2_withhold : 6; - mmr_t vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t vc0_withhold : 6; - } sh_xniilb_to_md_intra_flow_debit_s; -} sh_xniilb_to_md_intra_flow_debit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_TO_IILB_INTRA_FLOW_DEBIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_to_iilb_intra_flow_debit_u { mmr_t sh_xniilb_to_iilb_intra_flow_debit_regval; struct { @@ -8580,34 +4645,11 @@ mmr_t reserved_6 : 1; } sh_xniilb_to_iilb_intra_flow_debit_s; } sh_xniilb_to_iilb_intra_flow_debit_u_t; -#else -typedef union sh_xniilb_to_iilb_intra_flow_debit_u { - mmr_t sh_xniilb_to_iilb_intra_flow_debit_regval; - struct { - mmr_t reserved_6 : 1; - mmr_t vc2_cap : 7; - mmr_t reserved_5 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_4 : 9; - mmr_t vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_2 : 8; - mmr_t vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t vc2_withhold : 6; - mmr_t vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t vc0_withhold : 6; - } sh_xniilb_to_iilb_intra_flow_debit_s; -} sh_xniilb_to_iilb_intra_flow_debit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_TO_PI_INTRA_FLOW_DEBIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_to_pi_intra_flow_debit_u { mmr_t sh_xniilb_to_pi_intra_flow_debit_regval; struct { @@ -8628,34 +4670,11 @@ mmr_t reserved_6 : 1; } sh_xniilb_to_pi_intra_flow_debit_s; } sh_xniilb_to_pi_intra_flow_debit_u_t; -#else -typedef union sh_xniilb_to_pi_intra_flow_debit_u { - mmr_t sh_xniilb_to_pi_intra_flow_debit_regval; - struct { - mmr_t reserved_6 : 1; - mmr_t vc2_cap : 7; - mmr_t reserved_5 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_4 : 9; - mmr_t vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_2 : 8; - mmr_t vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t vc2_withhold : 6; - mmr_t vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t vc0_withhold : 6; - } sh_xniilb_to_pi_intra_flow_debit_s; -} sh_xniilb_to_pi_intra_flow_debit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_FR_NI0_INTRA_FLOW_CREDIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_fr_ni0_intra_flow_credit_u { mmr_t sh_xniilb_fr_ni0_intra_flow_credit_regval; struct { @@ -8673,31 +4692,11 @@ mmr_t reserved_5 : 17; } sh_xniilb_fr_ni0_intra_flow_credit_s; } sh_xniilb_fr_ni0_intra_flow_credit_u_t; -#else -typedef union sh_xniilb_fr_ni0_intra_flow_credit_u { - mmr_t sh_xniilb_fr_ni0_intra_flow_credit_regval; - struct { - mmr_t reserved_5 : 17; - mmr_t vc2_cap : 7; - mmr_t reserved_4 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_3 : 1; - mmr_t vc2_test : 7; - mmr_t reserved_2 : 1; - mmr_t vc0_cap : 7; - mmr_t reserved_1 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_0 : 1; - mmr_t vc0_test : 7; - } sh_xniilb_fr_ni0_intra_flow_credit_s; -} sh_xniilb_fr_ni0_intra_flow_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_FR_NI1_INTRA_FLOW_CREDIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_fr_ni1_intra_flow_credit_u { mmr_t sh_xniilb_fr_ni1_intra_flow_credit_regval; struct { @@ -8715,31 +4714,11 @@ mmr_t reserved_5 : 17; } sh_xniilb_fr_ni1_intra_flow_credit_s; } sh_xniilb_fr_ni1_intra_flow_credit_u_t; -#else -typedef union sh_xniilb_fr_ni1_intra_flow_credit_u { - mmr_t sh_xniilb_fr_ni1_intra_flow_credit_regval; - struct { - mmr_t reserved_5 : 17; - mmr_t vc2_cap : 7; - mmr_t reserved_4 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_3 : 1; - mmr_t vc2_test : 7; - mmr_t reserved_2 : 1; - mmr_t vc0_cap : 7; - mmr_t reserved_1 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_0 : 1; - mmr_t vc0_test : 7; - } sh_xniilb_fr_ni1_intra_flow_credit_s; -} sh_xniilb_fr_ni1_intra_flow_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_FR_MD_INTRA_FLOW_CREDIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_fr_md_intra_flow_credit_u { mmr_t sh_xniilb_fr_md_intra_flow_credit_regval; struct { @@ -8757,31 +4736,11 @@ mmr_t reserved_5 : 17; } sh_xniilb_fr_md_intra_flow_credit_s; } sh_xniilb_fr_md_intra_flow_credit_u_t; -#else -typedef union sh_xniilb_fr_md_intra_flow_credit_u { - mmr_t sh_xniilb_fr_md_intra_flow_credit_regval; - struct { - mmr_t reserved_5 : 17; - mmr_t vc2_cap : 7; - mmr_t reserved_4 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_3 : 1; - mmr_t vc2_test : 7; - mmr_t reserved_2 : 1; - mmr_t vc0_cap : 7; - mmr_t reserved_1 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_0 : 1; - mmr_t vc0_test : 7; - } sh_xniilb_fr_md_intra_flow_credit_s; -} sh_xniilb_fr_md_intra_flow_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_FR_IILB_INTRA_FLOW_CREDIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_fr_iilb_intra_flow_credit_u { mmr_t sh_xniilb_fr_iilb_intra_flow_credit_regval; struct { @@ -8799,31 +4758,11 @@ mmr_t reserved_5 : 17; } sh_xniilb_fr_iilb_intra_flow_credit_s; } sh_xniilb_fr_iilb_intra_flow_credit_u_t; -#else -typedef union sh_xniilb_fr_iilb_intra_flow_credit_u { - mmr_t sh_xniilb_fr_iilb_intra_flow_credit_regval; - struct { - mmr_t reserved_5 : 17; - mmr_t vc2_cap : 7; - mmr_t reserved_4 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_3 : 1; - mmr_t vc2_test : 7; - mmr_t reserved_2 : 1; - mmr_t vc0_cap : 7; - mmr_t reserved_1 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_0 : 1; - mmr_t vc0_test : 7; - } sh_xniilb_fr_iilb_intra_flow_credit_s; -} sh_xniilb_fr_iilb_intra_flow_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_FR_PI_INTRA_FLOW_CREDIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_fr_pi_intra_flow_credit_u { mmr_t sh_xniilb_fr_pi_intra_flow_credit_regval; struct { @@ -8841,31 +4780,11 @@ mmr_t reserved_5 : 17; } sh_xniilb_fr_pi_intra_flow_credit_s; } sh_xniilb_fr_pi_intra_flow_credit_u_t; -#else -typedef union sh_xniilb_fr_pi_intra_flow_credit_u { - mmr_t sh_xniilb_fr_pi_intra_flow_credit_regval; - struct { - mmr_t reserved_5 : 17; - mmr_t vc2_cap : 7; - mmr_t reserved_4 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_3 : 1; - mmr_t vc2_test : 7; - mmr_t reserved_2 : 1; - mmr_t vc0_cap : 7; - mmr_t reserved_1 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_0 : 1; - mmr_t vc0_test : 7; - } sh_xniilb_fr_pi_intra_flow_credit_s; -} sh_xniilb_fr_pi_intra_flow_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_TO_PI_INTRA_FLOW_DEBIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_to_pi_intra_flow_debit_u { mmr_t sh_xnni0_to_pi_intra_flow_debit_regval; struct { @@ -8886,34 +4805,11 @@ mmr_t reserved_6 : 1; } sh_xnni0_to_pi_intra_flow_debit_s; } sh_xnni0_to_pi_intra_flow_debit_u_t; -#else -typedef union sh_xnni0_to_pi_intra_flow_debit_u { - mmr_t sh_xnni0_to_pi_intra_flow_debit_regval; - struct { - mmr_t reserved_6 : 1; - mmr_t vc2_cap : 7; - mmr_t reserved_5 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_4 : 9; - mmr_t vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_2 : 8; - mmr_t vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t vc2_withhold : 6; - mmr_t vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t vc0_withhold : 6; - } sh_xnni0_to_pi_intra_flow_debit_s; -} sh_xnni0_to_pi_intra_flow_debit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_TO_MD_INTRA_FLOW_DEBIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_to_md_intra_flow_debit_u { mmr_t sh_xnni0_to_md_intra_flow_debit_regval; struct { @@ -8934,34 +4830,11 @@ mmr_t reserved_6 : 1; } sh_xnni0_to_md_intra_flow_debit_s; } sh_xnni0_to_md_intra_flow_debit_u_t; -#else -typedef union sh_xnni0_to_md_intra_flow_debit_u { - mmr_t sh_xnni0_to_md_intra_flow_debit_regval; - struct { - mmr_t reserved_6 : 1; - mmr_t vc2_cap : 7; - mmr_t reserved_5 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_4 : 9; - mmr_t vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_2 : 8; - mmr_t vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t vc2_withhold : 6; - mmr_t vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t vc0_withhold : 6; - } sh_xnni0_to_md_intra_flow_debit_s; -} sh_xnni0_to_md_intra_flow_debit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_TO_IILB_INTRA_FLOW_DEBIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_to_iilb_intra_flow_debit_u { mmr_t sh_xnni0_to_iilb_intra_flow_debit_regval; struct { @@ -8982,34 +4855,11 @@ mmr_t reserved_6 : 1; } sh_xnni0_to_iilb_intra_flow_debit_s; } sh_xnni0_to_iilb_intra_flow_debit_u_t; -#else -typedef union sh_xnni0_to_iilb_intra_flow_debit_u { - mmr_t sh_xnni0_to_iilb_intra_flow_debit_regval; - struct { - mmr_t reserved_6 : 1; - mmr_t vc2_cap : 7; - mmr_t reserved_5 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_4 : 9; - mmr_t vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_2 : 8; - mmr_t vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t vc2_withhold : 6; - mmr_t vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t vc0_withhold : 6; - } sh_xnni0_to_iilb_intra_flow_debit_s; -} sh_xnni0_to_iilb_intra_flow_debit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_FR_PI_INTRA_FLOW_CREDIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_fr_pi_intra_flow_credit_u { mmr_t sh_xnni0_fr_pi_intra_flow_credit_regval; struct { @@ -9027,31 +4877,11 @@ mmr_t reserved_5 : 17; } sh_xnni0_fr_pi_intra_flow_credit_s; } sh_xnni0_fr_pi_intra_flow_credit_u_t; -#else -typedef union sh_xnni0_fr_pi_intra_flow_credit_u { - mmr_t sh_xnni0_fr_pi_intra_flow_credit_regval; - struct { - mmr_t reserved_5 : 17; - mmr_t vc2_cap : 7; - mmr_t reserved_4 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_3 : 1; - mmr_t vc2_test : 7; - mmr_t reserved_2 : 1; - mmr_t vc0_cap : 7; - mmr_t reserved_1 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_0 : 1; - mmr_t vc0_test : 7; - } sh_xnni0_fr_pi_intra_flow_credit_s; -} sh_xnni0_fr_pi_intra_flow_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_FR_MD_INTRA_FLOW_CREDIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_fr_md_intra_flow_credit_u { mmr_t sh_xnni0_fr_md_intra_flow_credit_regval; struct { @@ -9069,31 +4899,11 @@ mmr_t reserved_5 : 17; } sh_xnni0_fr_md_intra_flow_credit_s; } sh_xnni0_fr_md_intra_flow_credit_u_t; -#else -typedef union sh_xnni0_fr_md_intra_flow_credit_u { - mmr_t sh_xnni0_fr_md_intra_flow_credit_regval; - struct { - mmr_t reserved_5 : 17; - mmr_t vc2_cap : 7; - mmr_t reserved_4 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_3 : 1; - mmr_t vc2_test : 7; - mmr_t reserved_2 : 1; - mmr_t vc0_cap : 7; - mmr_t reserved_1 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_0 : 1; - mmr_t vc0_test : 7; - } sh_xnni0_fr_md_intra_flow_credit_s; -} sh_xnni0_fr_md_intra_flow_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_FR_IILB_INTRA_FLOW_CREDIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_fr_iilb_intra_flow_credit_u { mmr_t sh_xnni0_fr_iilb_intra_flow_credit_regval; struct { @@ -9111,31 +4921,11 @@ mmr_t reserved_5 : 17; } sh_xnni0_fr_iilb_intra_flow_credit_s; } sh_xnni0_fr_iilb_intra_flow_credit_u_t; -#else -typedef union sh_xnni0_fr_iilb_intra_flow_credit_u { - mmr_t sh_xnni0_fr_iilb_intra_flow_credit_regval; - struct { - mmr_t reserved_5 : 17; - mmr_t vc2_cap : 7; - mmr_t reserved_4 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_3 : 1; - mmr_t vc2_test : 7; - mmr_t reserved_2 : 1; - mmr_t vc0_cap : 7; - mmr_t reserved_1 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_0 : 1; - mmr_t vc0_test : 7; - } sh_xnni0_fr_iilb_intra_flow_credit_s; -} sh_xnni0_fr_iilb_intra_flow_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_0_INTRANI_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_0_intrani_flow_u { mmr_t sh_xnni0_0_intrani_flow_regval; struct { @@ -9145,23 +4935,11 @@ mmr_t reserved_1 : 56; } sh_xnni0_0_intrani_flow_s; } sh_xnni0_0_intrani_flow_u_t; -#else -typedef union sh_xnni0_0_intrani_flow_u { - mmr_t sh_xnni0_0_intrani_flow_regval; - struct { - mmr_t reserved_1 : 56; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnni0_0_intrani_flow_s; -} sh_xnni0_0_intrani_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_1_INTRANI_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_1_intrani_flow_u { mmr_t sh_xnni0_1_intrani_flow_regval; struct { @@ -9171,23 +4949,11 @@ mmr_t reserved_1 : 56; } sh_xnni0_1_intrani_flow_s; } sh_xnni0_1_intrani_flow_u_t; -#else -typedef union sh_xnni0_1_intrani_flow_u { - mmr_t sh_xnni0_1_intrani_flow_regval; - struct { - mmr_t reserved_1 : 56; - mmr_t debit_vc1_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc1_withhold : 6; - } sh_xnni0_1_intrani_flow_s; -} sh_xnni0_1_intrani_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_2_INTRANI_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_2_intrani_flow_u { mmr_t sh_xnni0_2_intrani_flow_regval; struct { @@ -9197,23 +4963,11 @@ mmr_t reserved_1 : 56; } sh_xnni0_2_intrani_flow_s; } sh_xnni0_2_intrani_flow_u_t; -#else -typedef union sh_xnni0_2_intrani_flow_u { - mmr_t sh_xnni0_2_intrani_flow_regval; - struct { - mmr_t reserved_1 : 56; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc2_withhold : 6; - } sh_xnni0_2_intrani_flow_s; -} sh_xnni0_2_intrani_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_3_INTRANI_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_3_intrani_flow_u { mmr_t sh_xnni0_3_intrani_flow_regval; struct { @@ -9223,23 +4977,11 @@ mmr_t reserved_1 : 56; } sh_xnni0_3_intrani_flow_s; } sh_xnni0_3_intrani_flow_u_t; -#else -typedef union sh_xnni0_3_intrani_flow_u { - mmr_t sh_xnni0_3_intrani_flow_regval; - struct { - mmr_t reserved_1 : 56; - mmr_t debit_vc3_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc3_withhold : 6; - } sh_xnni0_3_intrani_flow_s; -} sh_xnni0_3_intrani_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_VCSWITCH_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_vcswitch_flow_u { mmr_t sh_xnni0_vcswitch_flow_regval; struct { @@ -9257,31 +4999,11 @@ mmr_t reserved_4 : 29; } sh_xnni0_vcswitch_flow_s; } sh_xnni0_vcswitch_flow_u_t; -#else -typedef union sh_xnni0_vcswitch_flow_u { - mmr_t sh_xnni0_vcswitch_flow_regval; - struct { - mmr_t reserved_4 : 29; - mmr_t async_fifoes : 1; - mmr_t disable_sync_bypass_out : 1; - mmr_t disable_sync_bypass_in : 1; - mmr_t reserved_3 : 7; - mmr_t iilb_vcfifo_switch : 1; - mmr_t reserved_2 : 7; - mmr_t md_vcfifo_switch : 1; - mmr_t reserved_1 : 7; - mmr_t pi_vcfifo_switch : 1; - mmr_t reserved_0 : 7; - mmr_t ni_vcfifo_dateline_switch : 1; - } sh_xnni0_vcswitch_flow_s; -} sh_xnni0_vcswitch_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_TIMER_REG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_timer_reg_u { mmr_t sh_xnni0_timer_reg_regval; struct { @@ -9291,23 +5013,11 @@ mmr_t reserved_1 : 31; } sh_xnni0_timer_reg_s; } sh_xnni0_timer_reg_u_t; -#else -typedef union sh_xnni0_timer_reg_u { - mmr_t sh_xnni0_timer_reg_regval; - struct { - mmr_t reserved_1 : 31; - mmr_t linkcleanup_reg : 1; - mmr_t reserved_0 : 8; - mmr_t timeout_reg : 24; - } sh_xnni0_timer_reg_s; -} sh_xnni0_timer_reg_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_FIFO02_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_fifo02_flow_u { mmr_t sh_xnni0_fifo02_flow_regval; struct { @@ -9325,31 +5035,11 @@ mmr_t reserved_5 : 20; } sh_xnni0_fifo02_flow_s; } sh_xnni0_fifo02_flow_u_t; -#else -typedef union sh_xnni0_fifo02_flow_u { - mmr_t sh_xnni0_fifo02_flow_regval; - struct { - mmr_t reserved_5 : 20; - mmr_t count_vc2_cap : 4; - mmr_t reserved_4 : 4; - mmr_t count_vc2_dyn : 4; - mmr_t reserved_3 : 4; - mmr_t count_vc2_limit : 4; - mmr_t reserved_2 : 4; - mmr_t count_vc0_cap : 4; - mmr_t reserved_1 : 4; - mmr_t count_vc0_dyn : 4; - mmr_t reserved_0 : 4; - mmr_t count_vc0_limit : 4; - } sh_xnni0_fifo02_flow_s; -} sh_xnni0_fifo02_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_FIFO13_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_fifo13_flow_u { mmr_t sh_xnni0_fifo13_flow_regval; struct { @@ -9367,31 +5057,11 @@ mmr_t reserved_5 : 20; } sh_xnni0_fifo13_flow_s; } sh_xnni0_fifo13_flow_u_t; -#else -typedef union sh_xnni0_fifo13_flow_u { - mmr_t sh_xnni0_fifo13_flow_regval; - struct { - mmr_t reserved_5 : 20; - mmr_t count_vc3_cap : 4; - mmr_t reserved_4 : 4; - mmr_t count_vc3_dyn : 4; - mmr_t reserved_3 : 4; - mmr_t count_vc3_limit : 4; - mmr_t reserved_2 : 4; - mmr_t count_vc1_cap : 4; - mmr_t reserved_1 : 4; - mmr_t count_vc1_dyn : 4; - mmr_t reserved_0 : 4; - mmr_t count_vc1_limit : 4; - } sh_xnni0_fifo13_flow_s; -} sh_xnni0_fifo13_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_NI_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_ni_flow_u { mmr_t sh_xnni0_ni_flow_regval; struct { @@ -9413,35 +5083,11 @@ mmr_t vc3_cap : 4; } sh_xnni0_ni_flow_s; } sh_xnni0_ni_flow_u_t; -#else -typedef union sh_xnni0_ni_flow_u { - mmr_t sh_xnni0_ni_flow_regval; - struct { - mmr_t vc3_cap : 4; - mmr_t vc3_dyn : 4; - mmr_t reserved_3 : 4; - mmr_t vc3_limit : 4; - mmr_t vc2_cap : 4; - mmr_t vc2_dyn : 4; - mmr_t reserved_2 : 4; - mmr_t vc2_limit : 4; - mmr_t vc1_cap : 4; - mmr_t vc1_dyn : 4; - mmr_t reserved_1 : 4; - mmr_t vc1_limit : 4; - mmr_t vc0_cap : 4; - mmr_t vc0_dyn : 4; - mmr_t reserved_0 : 4; - mmr_t vc0_limit : 4; - } sh_xnni0_ni_flow_s; -} sh_xnni0_ni_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_DEAD_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_dead_flow_u { mmr_t sh_xnni0_dead_flow_regval; struct { @@ -9463,35 +5109,11 @@ mmr_t vc3_cap : 4; } sh_xnni0_dead_flow_s; } sh_xnni0_dead_flow_u_t; -#else -typedef union sh_xnni0_dead_flow_u { - mmr_t sh_xnni0_dead_flow_regval; - struct { - mmr_t vc3_cap : 4; - mmr_t vc3_dyn : 4; - mmr_t reserved_3 : 4; - mmr_t vc3_limit : 4; - mmr_t vc2_cap : 4; - mmr_t vc2_dyn : 4; - mmr_t reserved_2 : 4; - mmr_t vc2_limit : 4; - mmr_t vc1_cap : 4; - mmr_t vc1_dyn : 4; - mmr_t reserved_1 : 4; - mmr_t vc1_limit : 4; - mmr_t vc0_cap : 4; - mmr_t vc0_dyn : 4; - mmr_t reserved_0 : 4; - mmr_t vc0_limit : 4; - } sh_xnni0_dead_flow_s; -} sh_xnni0_dead_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI0_INJECT_AGE" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni0_inject_age_u { mmr_t sh_xnni0_inject_age_regval; struct { @@ -9500,22 +5122,11 @@ mmr_t reserved_0 : 48; } sh_xnni0_inject_age_s; } sh_xnni0_inject_age_u_t; -#else -typedef union sh_xnni0_inject_age_u { - mmr_t sh_xnni0_inject_age_regval; - struct { - mmr_t reserved_0 : 48; - mmr_t reply_inject : 8; - mmr_t request_inject : 8; - } sh_xnni0_inject_age_s; -} sh_xnni0_inject_age_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_TO_PI_INTRA_FLOW_DEBIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_to_pi_intra_flow_debit_u { mmr_t sh_xnni1_to_pi_intra_flow_debit_regval; struct { @@ -9536,34 +5147,11 @@ mmr_t reserved_6 : 1; } sh_xnni1_to_pi_intra_flow_debit_s; } sh_xnni1_to_pi_intra_flow_debit_u_t; -#else -typedef union sh_xnni1_to_pi_intra_flow_debit_u { - mmr_t sh_xnni1_to_pi_intra_flow_debit_regval; - struct { - mmr_t reserved_6 : 1; - mmr_t vc2_cap : 7; - mmr_t reserved_5 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_4 : 9; - mmr_t vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_2 : 8; - mmr_t vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t vc2_withhold : 6; - mmr_t vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t vc0_withhold : 6; - } sh_xnni1_to_pi_intra_flow_debit_s; -} sh_xnni1_to_pi_intra_flow_debit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_TO_MD_INTRA_FLOW_DEBIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_to_md_intra_flow_debit_u { mmr_t sh_xnni1_to_md_intra_flow_debit_regval; struct { @@ -9584,34 +5172,11 @@ mmr_t reserved_6 : 1; } sh_xnni1_to_md_intra_flow_debit_s; } sh_xnni1_to_md_intra_flow_debit_u_t; -#else -typedef union sh_xnni1_to_md_intra_flow_debit_u { - mmr_t sh_xnni1_to_md_intra_flow_debit_regval; - struct { - mmr_t reserved_6 : 1; - mmr_t vc2_cap : 7; - mmr_t reserved_5 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_4 : 9; - mmr_t vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_2 : 8; - mmr_t vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t vc2_withhold : 6; - mmr_t vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t vc0_withhold : 6; - } sh_xnni1_to_md_intra_flow_debit_s; -} sh_xnni1_to_md_intra_flow_debit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_TO_IILB_INTRA_FLOW_DEBIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_to_iilb_intra_flow_debit_u { mmr_t sh_xnni1_to_iilb_intra_flow_debit_regval; struct { @@ -9632,34 +5197,11 @@ mmr_t reserved_6 : 1; } sh_xnni1_to_iilb_intra_flow_debit_s; } sh_xnni1_to_iilb_intra_flow_debit_u_t; -#else -typedef union sh_xnni1_to_iilb_intra_flow_debit_u { - mmr_t sh_xnni1_to_iilb_intra_flow_debit_regval; - struct { - mmr_t reserved_6 : 1; - mmr_t vc2_cap : 7; - mmr_t reserved_5 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_4 : 9; - mmr_t vc0_cap : 7; - mmr_t reserved_3 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_2 : 8; - mmr_t vc2_force_cred : 1; - mmr_t reserved_1 : 1; - mmr_t vc2_withhold : 6; - mmr_t vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t vc0_withhold : 6; - } sh_xnni1_to_iilb_intra_flow_debit_s; -} sh_xnni1_to_iilb_intra_flow_debit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_FR_PI_INTRA_FLOW_CREDIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_fr_pi_intra_flow_credit_u { mmr_t sh_xnni1_fr_pi_intra_flow_credit_regval; struct { @@ -9677,31 +5219,11 @@ mmr_t reserved_5 : 17; } sh_xnni1_fr_pi_intra_flow_credit_s; } sh_xnni1_fr_pi_intra_flow_credit_u_t; -#else -typedef union sh_xnni1_fr_pi_intra_flow_credit_u { - mmr_t sh_xnni1_fr_pi_intra_flow_credit_regval; - struct { - mmr_t reserved_5 : 17; - mmr_t vc2_cap : 7; - mmr_t reserved_4 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_3 : 1; - mmr_t vc2_test : 7; - mmr_t reserved_2 : 1; - mmr_t vc0_cap : 7; - mmr_t reserved_1 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_0 : 1; - mmr_t vc0_test : 7; - } sh_xnni1_fr_pi_intra_flow_credit_s; -} sh_xnni1_fr_pi_intra_flow_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_FR_MD_INTRA_FLOW_CREDIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_fr_md_intra_flow_credit_u { mmr_t sh_xnni1_fr_md_intra_flow_credit_regval; struct { @@ -9719,31 +5241,11 @@ mmr_t reserved_5 : 17; } sh_xnni1_fr_md_intra_flow_credit_s; } sh_xnni1_fr_md_intra_flow_credit_u_t; -#else -typedef union sh_xnni1_fr_md_intra_flow_credit_u { - mmr_t sh_xnni1_fr_md_intra_flow_credit_regval; - struct { - mmr_t reserved_5 : 17; - mmr_t vc2_cap : 7; - mmr_t reserved_4 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_3 : 1; - mmr_t vc2_test : 7; - mmr_t reserved_2 : 1; - mmr_t vc0_cap : 7; - mmr_t reserved_1 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_0 : 1; - mmr_t vc0_test : 7; - } sh_xnni1_fr_md_intra_flow_credit_s; -} sh_xnni1_fr_md_intra_flow_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_FR_IILB_INTRA_FLOW_CREDIT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_fr_iilb_intra_flow_credit_u { mmr_t sh_xnni1_fr_iilb_intra_flow_credit_regval; struct { @@ -9761,31 +5263,11 @@ mmr_t reserved_5 : 17; } sh_xnni1_fr_iilb_intra_flow_credit_s; } sh_xnni1_fr_iilb_intra_flow_credit_u_t; -#else -typedef union sh_xnni1_fr_iilb_intra_flow_credit_u { - mmr_t sh_xnni1_fr_iilb_intra_flow_credit_regval; - struct { - mmr_t reserved_5 : 17; - mmr_t vc2_cap : 7; - mmr_t reserved_4 : 1; - mmr_t vc2_dyn : 7; - mmr_t reserved_3 : 1; - mmr_t vc2_test : 7; - mmr_t reserved_2 : 1; - mmr_t vc0_cap : 7; - mmr_t reserved_1 : 1; - mmr_t vc0_dyn : 7; - mmr_t reserved_0 : 1; - mmr_t vc0_test : 7; - } sh_xnni1_fr_iilb_intra_flow_credit_s; -} sh_xnni1_fr_iilb_intra_flow_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_0_INTRANI_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_0_intrani_flow_u { mmr_t sh_xnni1_0_intrani_flow_regval; struct { @@ -9795,23 +5277,11 @@ mmr_t reserved_1 : 56; } sh_xnni1_0_intrani_flow_s; } sh_xnni1_0_intrani_flow_u_t; -#else -typedef union sh_xnni1_0_intrani_flow_u { - mmr_t sh_xnni1_0_intrani_flow_regval; - struct { - mmr_t reserved_1 : 56; - mmr_t debit_vc0_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc0_withhold : 6; - } sh_xnni1_0_intrani_flow_s; -} sh_xnni1_0_intrani_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_1_INTRANI_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_1_intrani_flow_u { mmr_t sh_xnni1_1_intrani_flow_regval; struct { @@ -9821,23 +5291,11 @@ mmr_t reserved_1 : 56; } sh_xnni1_1_intrani_flow_s; } sh_xnni1_1_intrani_flow_u_t; -#else -typedef union sh_xnni1_1_intrani_flow_u { - mmr_t sh_xnni1_1_intrani_flow_regval; - struct { - mmr_t reserved_1 : 56; - mmr_t debit_vc1_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc1_withhold : 6; - } sh_xnni1_1_intrani_flow_s; -} sh_xnni1_1_intrani_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_2_INTRANI_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_2_intrani_flow_u { mmr_t sh_xnni1_2_intrani_flow_regval; struct { @@ -9847,23 +5305,11 @@ mmr_t reserved_1 : 56; } sh_xnni1_2_intrani_flow_s; } sh_xnni1_2_intrani_flow_u_t; -#else -typedef union sh_xnni1_2_intrani_flow_u { - mmr_t sh_xnni1_2_intrani_flow_regval; - struct { - mmr_t reserved_1 : 56; - mmr_t debit_vc2_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc2_withhold : 6; - } sh_xnni1_2_intrani_flow_s; -} sh_xnni1_2_intrani_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_3_INTRANI_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_3_intrani_flow_u { mmr_t sh_xnni1_3_intrani_flow_regval; struct { @@ -9873,23 +5319,11 @@ mmr_t reserved_1 : 56; } sh_xnni1_3_intrani_flow_s; } sh_xnni1_3_intrani_flow_u_t; -#else -typedef union sh_xnni1_3_intrani_flow_u { - mmr_t sh_xnni1_3_intrani_flow_regval; - struct { - mmr_t reserved_1 : 56; - mmr_t debit_vc3_force_cred : 1; - mmr_t reserved_0 : 1; - mmr_t debit_vc3_withhold : 6; - } sh_xnni1_3_intrani_flow_s; -} sh_xnni1_3_intrani_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_VCSWITCH_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_vcswitch_flow_u { mmr_t sh_xnni1_vcswitch_flow_regval; struct { @@ -9907,31 +5341,11 @@ mmr_t reserved_4 : 29; } sh_xnni1_vcswitch_flow_s; } sh_xnni1_vcswitch_flow_u_t; -#else -typedef union sh_xnni1_vcswitch_flow_u { - mmr_t sh_xnni1_vcswitch_flow_regval; - struct { - mmr_t reserved_4 : 29; - mmr_t async_fifoes : 1; - mmr_t disable_sync_bypass_out : 1; - mmr_t disable_sync_bypass_in : 1; - mmr_t reserved_3 : 7; - mmr_t iilb_vcfifo_switch : 1; - mmr_t reserved_2 : 7; - mmr_t md_vcfifo_switch : 1; - mmr_t reserved_1 : 7; - mmr_t pi_vcfifo_switch : 1; - mmr_t reserved_0 : 7; - mmr_t ni_vcfifo_dateline_switch : 1; - } sh_xnni1_vcswitch_flow_s; -} sh_xnni1_vcswitch_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_TIMER_REG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_timer_reg_u { mmr_t sh_xnni1_timer_reg_regval; struct { @@ -9941,23 +5355,11 @@ mmr_t reserved_1 : 31; } sh_xnni1_timer_reg_s; } sh_xnni1_timer_reg_u_t; -#else -typedef union sh_xnni1_timer_reg_u { - mmr_t sh_xnni1_timer_reg_regval; - struct { - mmr_t reserved_1 : 31; - mmr_t linkcleanup_reg : 1; - mmr_t reserved_0 : 8; - mmr_t timeout_reg : 24; - } sh_xnni1_timer_reg_s; -} sh_xnni1_timer_reg_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_FIFO02_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_fifo02_flow_u { mmr_t sh_xnni1_fifo02_flow_regval; struct { @@ -9975,31 +5377,11 @@ mmr_t reserved_5 : 20; } sh_xnni1_fifo02_flow_s; } sh_xnni1_fifo02_flow_u_t; -#else -typedef union sh_xnni1_fifo02_flow_u { - mmr_t sh_xnni1_fifo02_flow_regval; - struct { - mmr_t reserved_5 : 20; - mmr_t count_vc2_cap : 4; - mmr_t reserved_4 : 4; - mmr_t count_vc2_dyn : 4; - mmr_t reserved_3 : 4; - mmr_t count_vc2_limit : 4; - mmr_t reserved_2 : 4; - mmr_t count_vc0_cap : 4; - mmr_t reserved_1 : 4; - mmr_t count_vc0_dyn : 4; - mmr_t reserved_0 : 4; - mmr_t count_vc0_limit : 4; - } sh_xnni1_fifo02_flow_s; -} sh_xnni1_fifo02_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_FIFO13_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_fifo13_flow_u { mmr_t sh_xnni1_fifo13_flow_regval; struct { @@ -10017,31 +5399,11 @@ mmr_t reserved_5 : 20; } sh_xnni1_fifo13_flow_s; } sh_xnni1_fifo13_flow_u_t; -#else -typedef union sh_xnni1_fifo13_flow_u { - mmr_t sh_xnni1_fifo13_flow_regval; - struct { - mmr_t reserved_5 : 20; - mmr_t count_vc3_cap : 4; - mmr_t reserved_4 : 4; - mmr_t count_vc3_dyn : 4; - mmr_t reserved_3 : 4; - mmr_t count_vc3_limit : 4; - mmr_t reserved_2 : 4; - mmr_t count_vc1_cap : 4; - mmr_t reserved_1 : 4; - mmr_t count_vc1_dyn : 4; - mmr_t reserved_0 : 4; - mmr_t count_vc1_limit : 4; - } sh_xnni1_fifo13_flow_s; -} sh_xnni1_fifo13_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_NI_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_ni_flow_u { mmr_t sh_xnni1_ni_flow_regval; struct { @@ -10063,35 +5425,11 @@ mmr_t vc3_cap : 4; } sh_xnni1_ni_flow_s; } sh_xnni1_ni_flow_u_t; -#else -typedef union sh_xnni1_ni_flow_u { - mmr_t sh_xnni1_ni_flow_regval; - struct { - mmr_t vc3_cap : 4; - mmr_t vc3_dyn : 4; - mmr_t reserved_3 : 4; - mmr_t vc3_limit : 4; - mmr_t vc2_cap : 4; - mmr_t vc2_dyn : 4; - mmr_t reserved_2 : 4; - mmr_t vc2_limit : 4; - mmr_t vc1_cap : 4; - mmr_t vc1_dyn : 4; - mmr_t reserved_1 : 4; - mmr_t vc1_limit : 4; - mmr_t vc0_cap : 4; - mmr_t vc0_dyn : 4; - mmr_t reserved_0 : 4; - mmr_t vc0_limit : 4; - } sh_xnni1_ni_flow_s; -} sh_xnni1_ni_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_DEAD_FLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_dead_flow_u { mmr_t sh_xnni1_dead_flow_regval; struct { @@ -10113,35 +5451,11 @@ mmr_t vc3_cap : 4; } sh_xnni1_dead_flow_s; } sh_xnni1_dead_flow_u_t; -#else -typedef union sh_xnni1_dead_flow_u { - mmr_t sh_xnni1_dead_flow_regval; - struct { - mmr_t vc3_cap : 4; - mmr_t vc3_dyn : 4; - mmr_t reserved_3 : 4; - mmr_t vc3_limit : 4; - mmr_t vc2_cap : 4; - mmr_t vc2_dyn : 4; - mmr_t reserved_2 : 4; - mmr_t vc2_limit : 4; - mmr_t vc1_cap : 4; - mmr_t vc1_dyn : 4; - mmr_t reserved_1 : 4; - mmr_t vc1_limit : 4; - mmr_t vc0_cap : 4; - mmr_t vc0_dyn : 4; - mmr_t reserved_0 : 4; - mmr_t vc0_limit : 4; - } sh_xnni1_dead_flow_s; -} sh_xnni1_dead_flow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNNI1_INJECT_AGE" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnni1_inject_age_u { mmr_t sh_xnni1_inject_age_regval; struct { @@ -10150,23 +5464,12 @@ mmr_t reserved_0 : 48; } sh_xnni1_inject_age_s; } sh_xnni1_inject_age_u_t; -#else -typedef union sh_xnni1_inject_age_u { - mmr_t sh_xnni1_inject_age_regval; - struct { - mmr_t reserved_0 : 48; - mmr_t reply_inject : 8; - mmr_t request_inject : 8; - } sh_xnni1_inject_age_s; -} sh_xnni1_inject_age_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_DEBUG_SEL" */ /* XN Debug Port Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_debug_sel_u { mmr_t sh_xn_debug_sel_regval; struct { @@ -10204,52 +5507,12 @@ mmr_t trigger_enable : 1; } sh_xn_debug_sel_s; } sh_xn_debug_sel_u_t; -#else -typedef union sh_xn_debug_sel_u { - mmr_t sh_xn_debug_sel_regval; - struct { - mmr_t trigger_enable : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_rlm_sel : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_rlm_sel : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_rlm_sel : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_rlm_sel : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_rlm_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_rlm_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_rlm_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_rlm_sel : 3; - } sh_xn_debug_sel_s; -} sh_xn_debug_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_DEBUG_TRIG_SEL" */ /* XN Debug trigger Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_debug_trig_sel_u { mmr_t sh_xn_debug_trig_sel_regval; struct { @@ -10287,52 +5550,12 @@ mmr_t reserved_15 : 1; } sh_xn_debug_trig_sel_s; } sh_xn_debug_trig_sel_u_t; -#else -typedef union sh_xn_debug_trig_sel_u { - mmr_t sh_xn_debug_trig_sel_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t trigger7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t trigger7_rlm_sel : 3; - mmr_t reserved_13 : 1; - mmr_t trigger6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t trigger6_rlm_sel : 3; - mmr_t reserved_11 : 1; - mmr_t trigger5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t trigger5_rlm_sel : 3; - mmr_t reserved_9 : 1; - mmr_t trigger4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t trigger4_rlm_sel : 3; - mmr_t reserved_7 : 1; - mmr_t trigger3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t trigger3_rlm_sel : 3; - mmr_t reserved_5 : 1; - mmr_t trigger2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t trigger2_rlm_sel : 3; - mmr_t reserved_3 : 1; - mmr_t trigger1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t trigger1_rlm_sel : 3; - mmr_t reserved_1 : 1; - mmr_t trigger0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t trigger0_rlm_sel : 3; - } sh_xn_debug_trig_sel_s; -} sh_xn_debug_trig_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_TRIGGER_COMPARE" */ /* XN Debug Compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_trigger_compare_u { mmr_t sh_xn_trigger_compare_regval; struct { @@ -10340,22 +5563,12 @@ mmr_t reserved_0 : 32; } sh_xn_trigger_compare_s; } sh_xn_trigger_compare_u_t; -#else -typedef union sh_xn_trigger_compare_u { - mmr_t sh_xn_trigger_compare_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t mask : 32; - } sh_xn_trigger_compare_s; -} sh_xn_trigger_compare_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_TRIGGER_DATA" */ /* XN Debug Compare Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_trigger_data_u { mmr_t sh_xn_trigger_data_regval; struct { @@ -10363,22 +5576,12 @@ mmr_t reserved_0 : 32; } sh_xn_trigger_data_s; } sh_xn_trigger_data_u_t; -#else -typedef union sh_xn_trigger_data_u { - mmr_t sh_xn_trigger_data_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t compare_pattern : 32; - } sh_xn_trigger_data_s; -} sh_xn_trigger_data_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_DEBUG_SEL" */ /* XN IILB Debug Port Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_iilb_debug_sel_u { mmr_t sh_xn_iilb_debug_sel_regval; struct { @@ -10416,52 +5619,12 @@ mmr_t reserved_15 : 1; } sh_xn_iilb_debug_sel_s; } sh_xn_iilb_debug_sel_u_t; -#else -typedef union sh_xn_iilb_debug_sel_u { - mmr_t sh_xn_iilb_debug_sel_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_input_sel : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_input_sel : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_input_sel : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_input_sel : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_input_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_input_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_input_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_input_sel : 3; - } sh_xn_iilb_debug_sel_s; -} sh_xn_iilb_debug_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_DEBUG_SEL" */ /* XN PI Debug Port Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_pi_debug_sel_u { mmr_t sh_xn_pi_debug_sel_regval; struct { @@ -10499,52 +5662,12 @@ mmr_t reserved_15 : 1; } sh_xn_pi_debug_sel_s; } sh_xn_pi_debug_sel_u_t; -#else -typedef union sh_xn_pi_debug_sel_u { - mmr_t sh_xn_pi_debug_sel_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_input_sel : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_input_sel : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_input_sel : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_input_sel : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_input_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_input_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_input_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_input_sel : 3; - } sh_xn_pi_debug_sel_s; -} sh_xn_pi_debug_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_DEBUG_SEL" */ /* XN MD Debug Port Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_md_debug_sel_u { mmr_t sh_xn_md_debug_sel_regval; struct { @@ -10582,52 +5705,12 @@ mmr_t reserved_15 : 1; } sh_xn_md_debug_sel_s; } sh_xn_md_debug_sel_u_t; -#else -typedef union sh_xn_md_debug_sel_u { - mmr_t sh_xn_md_debug_sel_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_input_sel : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_input_sel : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_input_sel : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_input_sel : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_input_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_input_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_input_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_input_sel : 3; - } sh_xn_md_debug_sel_s; -} sh_xn_md_debug_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_DEBUG_SEL" */ /* XN NI0 Debug Port Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni0_debug_sel_u { mmr_t sh_xn_ni0_debug_sel_regval; struct { @@ -10665,52 +5748,12 @@ mmr_t reserved_15 : 1; } sh_xn_ni0_debug_sel_s; } sh_xn_ni0_debug_sel_u_t; -#else -typedef union sh_xn_ni0_debug_sel_u { - mmr_t sh_xn_ni0_debug_sel_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_input_sel : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_input_sel : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_input_sel : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_input_sel : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_input_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_input_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_input_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_input_sel : 3; - } sh_xn_ni0_debug_sel_s; -} sh_xn_ni0_debug_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_DEBUG_SEL" */ /* XN NI1 Debug Port Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni1_debug_sel_u { mmr_t sh_xn_ni1_debug_sel_regval; struct { @@ -10748,829 +5791,456 @@ mmr_t reserved_15 : 1; } sh_xn_ni1_debug_sel_s; } sh_xn_ni1_debug_sel_u_t; -#else -typedef union sh_xn_ni1_debug_sel_u { - mmr_t sh_xn_ni1_debug_sel_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_input_sel : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_input_sel : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_input_sel : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_input_sel : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_input_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_input_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_input_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_input_sel : 3; - } sh_xn_ni1_debug_sel_s; -} sh_xn_ni1_debug_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_LB_CMP_EXP_DATA0" */ /* IILB compare LB input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_iilb_lb_cmp_exp_data0_u { mmr_t sh_xn_iilb_lb_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_iilb_lb_cmp_exp_data0_s; } sh_xn_iilb_lb_cmp_exp_data0_u_t; -#else -typedef union sh_xn_iilb_lb_cmp_exp_data0_u { - mmr_t sh_xn_iilb_lb_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_iilb_lb_cmp_exp_data0_s; -} sh_xn_iilb_lb_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_LB_CMP_EXP_DATA1" */ /* IILB compare LB input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_iilb_lb_cmp_exp_data1_u { mmr_t sh_xn_iilb_lb_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_iilb_lb_cmp_exp_data1_s; } sh_xn_iilb_lb_cmp_exp_data1_u_t; -#else -typedef union sh_xn_iilb_lb_cmp_exp_data1_u { - mmr_t sh_xn_iilb_lb_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_iilb_lb_cmp_exp_data1_s; -} sh_xn_iilb_lb_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_LB_CMP_ENABLE0" */ /* IILB compare LB input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_lb_cmp_enable0_u { - mmr_t sh_xn_iilb_lb_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_iilb_lb_cmp_enable0_s; -} sh_xn_iilb_lb_cmp_enable0_u_t; -#else typedef union sh_xn_iilb_lb_cmp_enable0_u { mmr_t sh_xn_iilb_lb_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_iilb_lb_cmp_enable0_s; } sh_xn_iilb_lb_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_LB_CMP_ENABLE1" */ /* IILB compare LB input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_lb_cmp_enable1_u { - mmr_t sh_xn_iilb_lb_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_iilb_lb_cmp_enable1_s; -} sh_xn_iilb_lb_cmp_enable1_u_t; -#else typedef union sh_xn_iilb_lb_cmp_enable1_u { mmr_t sh_xn_iilb_lb_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_iilb_lb_cmp_enable1_s; } sh_xn_iilb_lb_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_II_CMP_EXP_DATA0" */ /* IILB compare II input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_ii_cmp_exp_data0_u { - mmr_t sh_xn_iilb_ii_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_iilb_ii_cmp_exp_data0_s; -} sh_xn_iilb_ii_cmp_exp_data0_u_t; -#else typedef union sh_xn_iilb_ii_cmp_exp_data0_u { mmr_t sh_xn_iilb_ii_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_iilb_ii_cmp_exp_data0_s; } sh_xn_iilb_ii_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_II_CMP_EXP_DATA1" */ /* IILB compare II input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_ii_cmp_exp_data1_u { - mmr_t sh_xn_iilb_ii_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_iilb_ii_cmp_exp_data1_s; -} sh_xn_iilb_ii_cmp_exp_data1_u_t; -#else typedef union sh_xn_iilb_ii_cmp_exp_data1_u { mmr_t sh_xn_iilb_ii_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_iilb_ii_cmp_exp_data1_s; } sh_xn_iilb_ii_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_II_CMP_ENABLE0" */ /* IILB compare II input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_ii_cmp_enable0_u { - mmr_t sh_xn_iilb_ii_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_iilb_ii_cmp_enable0_s; -} sh_xn_iilb_ii_cmp_enable0_u_t; -#else typedef union sh_xn_iilb_ii_cmp_enable0_u { mmr_t sh_xn_iilb_ii_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_iilb_ii_cmp_enable0_s; } sh_xn_iilb_ii_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_II_CMP_ENABLE1" */ /* IILB compare II input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_ii_cmp_enable1_u { - mmr_t sh_xn_iilb_ii_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_iilb_ii_cmp_enable1_s; -} sh_xn_iilb_ii_cmp_enable1_u_t; -#else typedef union sh_xn_iilb_ii_cmp_enable1_u { mmr_t sh_xn_iilb_ii_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_iilb_ii_cmp_enable1_s; } sh_xn_iilb_ii_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_MD_CMP_EXP_DATA0" */ /* IILB compare MD input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_md_cmp_exp_data0_u { - mmr_t sh_xn_iilb_md_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_iilb_md_cmp_exp_data0_s; -} sh_xn_iilb_md_cmp_exp_data0_u_t; -#else typedef union sh_xn_iilb_md_cmp_exp_data0_u { mmr_t sh_xn_iilb_md_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_iilb_md_cmp_exp_data0_s; } sh_xn_iilb_md_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_MD_CMP_EXP_DATA1" */ /* IILB compare MD input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_md_cmp_exp_data1_u { - mmr_t sh_xn_iilb_md_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_iilb_md_cmp_exp_data1_s; -} sh_xn_iilb_md_cmp_exp_data1_u_t; -#else typedef union sh_xn_iilb_md_cmp_exp_data1_u { mmr_t sh_xn_iilb_md_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_iilb_md_cmp_exp_data1_s; } sh_xn_iilb_md_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_MD_CMP_ENABLE0" */ /* IILB compare MD input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_md_cmp_enable0_u { - mmr_t sh_xn_iilb_md_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_iilb_md_cmp_enable0_s; -} sh_xn_iilb_md_cmp_enable0_u_t; -#else typedef union sh_xn_iilb_md_cmp_enable0_u { mmr_t sh_xn_iilb_md_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_iilb_md_cmp_enable0_s; } sh_xn_iilb_md_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_MD_CMP_ENABLE1" */ /* IILB compare MD input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_md_cmp_enable1_u { - mmr_t sh_xn_iilb_md_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_iilb_md_cmp_enable1_s; -} sh_xn_iilb_md_cmp_enable1_u_t; -#else typedef union sh_xn_iilb_md_cmp_enable1_u { mmr_t sh_xn_iilb_md_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_iilb_md_cmp_enable1_s; } sh_xn_iilb_md_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_PI_CMP_EXP_DATA0" */ /* IILB compare PI input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_pi_cmp_exp_data0_u { - mmr_t sh_xn_iilb_pi_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_iilb_pi_cmp_exp_data0_s; -} sh_xn_iilb_pi_cmp_exp_data0_u_t; -#else typedef union sh_xn_iilb_pi_cmp_exp_data0_u { mmr_t sh_xn_iilb_pi_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_iilb_pi_cmp_exp_data0_s; } sh_xn_iilb_pi_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_PI_CMP_EXP_DATA1" */ /* IILB compare PI input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_pi_cmp_exp_data1_u { - mmr_t sh_xn_iilb_pi_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_iilb_pi_cmp_exp_data1_s; -} sh_xn_iilb_pi_cmp_exp_data1_u_t; -#else typedef union sh_xn_iilb_pi_cmp_exp_data1_u { mmr_t sh_xn_iilb_pi_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_iilb_pi_cmp_exp_data1_s; } sh_xn_iilb_pi_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_PI_CMP_ENABLE0" */ /* IILB compare PI input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_iilb_pi_cmp_enable0_u { mmr_t sh_xn_iilb_pi_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_iilb_pi_cmp_enable0_s; } sh_xn_iilb_pi_cmp_enable0_u_t; -#else -typedef union sh_xn_iilb_pi_cmp_enable0_u { - mmr_t sh_xn_iilb_pi_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_iilb_pi_cmp_enable0_s; -} sh_xn_iilb_pi_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_PI_CMP_ENABLE1" */ /* IILB compare PI input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_pi_cmp_enable1_u { - mmr_t sh_xn_iilb_pi_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_iilb_pi_cmp_enable1_s; -} sh_xn_iilb_pi_cmp_enable1_u_t; -#else typedef union sh_xn_iilb_pi_cmp_enable1_u { mmr_t sh_xn_iilb_pi_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_iilb_pi_cmp_enable1_s; } sh_xn_iilb_pi_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_NI0_CMP_EXP_DATA0" */ /* IILB compare NI0 input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_ni0_cmp_exp_data0_u { - mmr_t sh_xn_iilb_ni0_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_iilb_ni0_cmp_exp_data0_s; -} sh_xn_iilb_ni0_cmp_exp_data0_u_t; -#else typedef union sh_xn_iilb_ni0_cmp_exp_data0_u { mmr_t sh_xn_iilb_ni0_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_iilb_ni0_cmp_exp_data0_s; } sh_xn_iilb_ni0_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_NI0_CMP_EXP_DATA1" */ /* IILB compare NI0 input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_ni0_cmp_exp_data1_u { - mmr_t sh_xn_iilb_ni0_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_iilb_ni0_cmp_exp_data1_s; -} sh_xn_iilb_ni0_cmp_exp_data1_u_t; -#else typedef union sh_xn_iilb_ni0_cmp_exp_data1_u { mmr_t sh_xn_iilb_ni0_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_iilb_ni0_cmp_exp_data1_s; } sh_xn_iilb_ni0_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_NI0_CMP_ENABLE0" */ /* IILB compare NI0 input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_ni0_cmp_enable0_u { - mmr_t sh_xn_iilb_ni0_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_iilb_ni0_cmp_enable0_s; -} sh_xn_iilb_ni0_cmp_enable0_u_t; -#else typedef union sh_xn_iilb_ni0_cmp_enable0_u { mmr_t sh_xn_iilb_ni0_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_iilb_ni0_cmp_enable0_s; } sh_xn_iilb_ni0_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_NI0_CMP_ENABLE1" */ /* IILB compare NI0 input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_ni0_cmp_enable1_u { - mmr_t sh_xn_iilb_ni0_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_iilb_ni0_cmp_enable1_s; -} sh_xn_iilb_ni0_cmp_enable1_u_t; -#else typedef union sh_xn_iilb_ni0_cmp_enable1_u { mmr_t sh_xn_iilb_ni0_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_iilb_ni0_cmp_enable1_s; } sh_xn_iilb_ni0_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_NI1_CMP_EXP_DATA0" */ /* IILB compare NI1 input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_ni1_cmp_exp_data0_u { - mmr_t sh_xn_iilb_ni1_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_iilb_ni1_cmp_exp_data0_s; -} sh_xn_iilb_ni1_cmp_exp_data0_u_t; -#else typedef union sh_xn_iilb_ni1_cmp_exp_data0_u { mmr_t sh_xn_iilb_ni1_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_iilb_ni1_cmp_exp_data0_s; } sh_xn_iilb_ni1_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_NI1_CMP_EXP_DATA1" */ /* IILB compare NI1 input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_iilb_ni1_cmp_exp_data1_u { mmr_t sh_xn_iilb_ni1_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_iilb_ni1_cmp_exp_data1_s; } sh_xn_iilb_ni1_cmp_exp_data1_u_t; -#else -typedef union sh_xn_iilb_ni1_cmp_exp_data1_u { - mmr_t sh_xn_iilb_ni1_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_iilb_ni1_cmp_exp_data1_s; -} sh_xn_iilb_ni1_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_NI1_CMP_ENABLE0" */ /* IILB compare NI1 input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_ni1_cmp_enable0_u { - mmr_t sh_xn_iilb_ni1_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_iilb_ni1_cmp_enable0_s; -} sh_xn_iilb_ni1_cmp_enable0_u_t; -#else typedef union sh_xn_iilb_ni1_cmp_enable0_u { mmr_t sh_xn_iilb_ni1_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_iilb_ni1_cmp_enable0_s; } sh_xn_iilb_ni1_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_IILB_NI1_CMP_ENABLE1" */ /* IILB compare NI1 input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_iilb_ni1_cmp_enable1_u { - mmr_t sh_xn_iilb_ni1_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_iilb_ni1_cmp_enable1_s; -} sh_xn_iilb_ni1_cmp_enable1_u_t; -#else typedef union sh_xn_iilb_ni1_cmp_enable1_u { mmr_t sh_xn_iilb_ni1_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_iilb_ni1_cmp_enable1_s; } sh_xn_iilb_ni1_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_IILB_CMP_EXP_DATA0" */ /* MD compare IILB input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_md_iilb_cmp_exp_data0_u { mmr_t sh_xn_md_iilb_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_md_iilb_cmp_exp_data0_s; } sh_xn_md_iilb_cmp_exp_data0_u_t; -#else -typedef union sh_xn_md_iilb_cmp_exp_data0_u { - mmr_t sh_xn_md_iilb_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_md_iilb_cmp_exp_data0_s; -} sh_xn_md_iilb_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_IILB_CMP_EXP_DATA1" */ /* MD compare IILB input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_iilb_cmp_exp_data1_u { - mmr_t sh_xn_md_iilb_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_md_iilb_cmp_exp_data1_s; -} sh_xn_md_iilb_cmp_exp_data1_u_t; -#else typedef union sh_xn_md_iilb_cmp_exp_data1_u { mmr_t sh_xn_md_iilb_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_md_iilb_cmp_exp_data1_s; } sh_xn_md_iilb_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_IILB_CMP_ENABLE0" */ /* MD compare IILB input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_md_iilb_cmp_enable0_u { mmr_t sh_xn_md_iilb_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_md_iilb_cmp_enable0_s; } sh_xn_md_iilb_cmp_enable0_u_t; -#else -typedef union sh_xn_md_iilb_cmp_enable0_u { - mmr_t sh_xn_md_iilb_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_md_iilb_cmp_enable0_s; -} sh_xn_md_iilb_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_IILB_CMP_ENABLE1" */ /* MD compare IILB input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_iilb_cmp_enable1_u { - mmr_t sh_xn_md_iilb_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_md_iilb_cmp_enable1_s; -} sh_xn_md_iilb_cmp_enable1_u_t; -#else typedef union sh_xn_md_iilb_cmp_enable1_u { mmr_t sh_xn_md_iilb_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_md_iilb_cmp_enable1_s; } sh_xn_md_iilb_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_NI0_CMP_EXP_DATA0" */ /* MD compare NI0 input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_md_ni0_cmp_exp_data0_u { mmr_t sh_xn_md_ni0_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_md_ni0_cmp_exp_data0_s; } sh_xn_md_ni0_cmp_exp_data0_u_t; -#else -typedef union sh_xn_md_ni0_cmp_exp_data0_u { - mmr_t sh_xn_md_ni0_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_md_ni0_cmp_exp_data0_s; -} sh_xn_md_ni0_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_NI0_CMP_EXP_DATA1" */ /* MD compare NI0 input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_ni0_cmp_exp_data1_u { - mmr_t sh_xn_md_ni0_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_md_ni0_cmp_exp_data1_s; -} sh_xn_md_ni0_cmp_exp_data1_u_t; -#else typedef union sh_xn_md_ni0_cmp_exp_data1_u { mmr_t sh_xn_md_ni0_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_md_ni0_cmp_exp_data1_s; } sh_xn_md_ni0_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_NI0_CMP_ENABLE0" */ /* MD compare NI0 input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_ni0_cmp_enable0_u { - mmr_t sh_xn_md_ni0_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_md_ni0_cmp_enable0_s; -} sh_xn_md_ni0_cmp_enable0_u_t; -#else typedef union sh_xn_md_ni0_cmp_enable0_u { mmr_t sh_xn_md_ni0_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_md_ni0_cmp_enable0_s; } sh_xn_md_ni0_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_NI0_CMP_ENABLE1" */ /* MD compare NI0 input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_ni0_cmp_enable1_u { - mmr_t sh_xn_md_ni0_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_md_ni0_cmp_enable1_s; -} sh_xn_md_ni0_cmp_enable1_u_t; -#else typedef union sh_xn_md_ni0_cmp_enable1_u { mmr_t sh_xn_md_ni0_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_md_ni0_cmp_enable1_s; } sh_xn_md_ni0_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_NI1_CMP_EXP_DATA0" */ /* MD compare NI1 input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_ni1_cmp_exp_data0_u { - mmr_t sh_xn_md_ni1_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_md_ni1_cmp_exp_data0_s; -} sh_xn_md_ni1_cmp_exp_data0_u_t; -#else typedef union sh_xn_md_ni1_cmp_exp_data0_u { mmr_t sh_xn_md_ni1_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_md_ni1_cmp_exp_data0_s; } sh_xn_md_ni1_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_NI1_CMP_EXP_DATA1" */ /* MD compare NI1 input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_md_ni1_cmp_exp_data1_u { mmr_t sh_xn_md_ni1_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_md_ni1_cmp_exp_data1_s; } sh_xn_md_ni1_cmp_exp_data1_u_t; -#else -typedef union sh_xn_md_ni1_cmp_exp_data1_u { - mmr_t sh_xn_md_ni1_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_md_ni1_cmp_exp_data1_s; -} sh_xn_md_ni1_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_NI1_CMP_ENABLE0" */ /* MD compare NI1 input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_ni1_cmp_enable0_u { - mmr_t sh_xn_md_ni1_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_md_ni1_cmp_enable0_s; -} sh_xn_md_ni1_cmp_enable0_u_t; -#else typedef union sh_xn_md_ni1_cmp_enable0_u { mmr_t sh_xn_md_ni1_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_md_ni1_cmp_enable0_s; } sh_xn_md_ni1_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_NI1_CMP_ENABLE1" */ /* MD compare NI1 input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_ni1_cmp_enable1_u { - mmr_t sh_xn_md_ni1_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_md_ni1_cmp_enable1_s; -} sh_xn_md_ni1_cmp_enable1_u_t; -#else typedef union sh_xn_md_ni1_cmp_enable1_u { mmr_t sh_xn_md_ni1_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_md_ni1_cmp_enable1_s; } sh_xn_md_ni1_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_SIC_CMP_EXP_HDR0" */ /* MD compare SIC input expected header0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_sic_cmp_exp_hdr0_u { - mmr_t sh_xn_md_sic_cmp_exp_hdr0_regval; - struct { - mmr_t data : 64; - } sh_xn_md_sic_cmp_exp_hdr0_s; -} sh_xn_md_sic_cmp_exp_hdr0_u_t; -#else typedef union sh_xn_md_sic_cmp_exp_hdr0_u { mmr_t sh_xn_md_sic_cmp_exp_hdr0_regval; struct { mmr_t data : 64; } sh_xn_md_sic_cmp_exp_hdr0_s; } sh_xn_md_sic_cmp_exp_hdr0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_SIC_CMP_EXP_HDR1" */ /* MD compare SIC input expected header1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_md_sic_cmp_exp_hdr1_u { mmr_t sh_xn_md_sic_cmp_exp_hdr1_regval; struct { @@ -11578,43 +6248,24 @@ mmr_t reserved_0 : 22; } sh_xn_md_sic_cmp_exp_hdr1_s; } sh_xn_md_sic_cmp_exp_hdr1_u_t; -#else -typedef union sh_xn_md_sic_cmp_exp_hdr1_u { - mmr_t sh_xn_md_sic_cmp_exp_hdr1_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t data : 42; - } sh_xn_md_sic_cmp_exp_hdr1_s; -} sh_xn_md_sic_cmp_exp_hdr1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_SIC_CMP_HDR_ENABLE0" */ /* MD compare SIC header enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_sic_cmp_hdr_enable0_u { - mmr_t sh_xn_md_sic_cmp_hdr_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_md_sic_cmp_hdr_enable0_s; -} sh_xn_md_sic_cmp_hdr_enable0_u_t; -#else typedef union sh_xn_md_sic_cmp_hdr_enable0_u { mmr_t sh_xn_md_sic_cmp_hdr_enable0_regval; struct { mmr_t enable : 64; } sh_xn_md_sic_cmp_hdr_enable0_s; } sh_xn_md_sic_cmp_hdr_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_SIC_CMP_HDR_ENABLE1" */ /* MD compare SIC header enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_md_sic_cmp_hdr_enable1_u { mmr_t sh_xn_md_sic_cmp_hdr_enable1_regval; struct { @@ -11622,463 +6273,264 @@ mmr_t reserved_0 : 22; } sh_xn_md_sic_cmp_hdr_enable1_s; } sh_xn_md_sic_cmp_hdr_enable1_u_t; -#else -typedef union sh_xn_md_sic_cmp_hdr_enable1_u { - mmr_t sh_xn_md_sic_cmp_hdr_enable1_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t enable : 42; - } sh_xn_md_sic_cmp_hdr_enable1_s; -} sh_xn_md_sic_cmp_hdr_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_SIC_CMP_DATA0" */ /* MD compare SIC data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_sic_cmp_data0_u { - mmr_t sh_xn_md_sic_cmp_data0_regval; - struct { - mmr_t data0 : 64; - } sh_xn_md_sic_cmp_data0_s; -} sh_xn_md_sic_cmp_data0_u_t; -#else typedef union sh_xn_md_sic_cmp_data0_u { mmr_t sh_xn_md_sic_cmp_data0_regval; struct { mmr_t data0 : 64; } sh_xn_md_sic_cmp_data0_s; } sh_xn_md_sic_cmp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_SIC_CMP_DATA1" */ /* MD compare SIC data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_md_sic_cmp_data1_u { mmr_t sh_xn_md_sic_cmp_data1_regval; struct { mmr_t data1 : 64; } sh_xn_md_sic_cmp_data1_s; } sh_xn_md_sic_cmp_data1_u_t; -#else -typedef union sh_xn_md_sic_cmp_data1_u { - mmr_t sh_xn_md_sic_cmp_data1_regval; - struct { - mmr_t data1 : 64; - } sh_xn_md_sic_cmp_data1_s; -} sh_xn_md_sic_cmp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_SIC_CMP_DATA2" */ /* MD compare SIC data2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_sic_cmp_data2_u { - mmr_t sh_xn_md_sic_cmp_data2_regval; - struct { - mmr_t data2 : 64; - } sh_xn_md_sic_cmp_data2_s; -} sh_xn_md_sic_cmp_data2_u_t; -#else typedef union sh_xn_md_sic_cmp_data2_u { mmr_t sh_xn_md_sic_cmp_data2_regval; struct { mmr_t data2 : 64; } sh_xn_md_sic_cmp_data2_s; } sh_xn_md_sic_cmp_data2_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_SIC_CMP_DATA3" */ /* MD compare SIC data3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_sic_cmp_data3_u { - mmr_t sh_xn_md_sic_cmp_data3_regval; - struct { - mmr_t data3 : 64; - } sh_xn_md_sic_cmp_data3_s; -} sh_xn_md_sic_cmp_data3_u_t; -#else typedef union sh_xn_md_sic_cmp_data3_u { mmr_t sh_xn_md_sic_cmp_data3_regval; struct { mmr_t data3 : 64; } sh_xn_md_sic_cmp_data3_s; } sh_xn_md_sic_cmp_data3_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_SIC_CMP_DATA_ENABLE0" */ /* MD enable compare SIC data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_sic_cmp_data_enable0_u { - mmr_t sh_xn_md_sic_cmp_data_enable0_regval; - struct { - mmr_t data_enable0 : 64; - } sh_xn_md_sic_cmp_data_enable0_s; -} sh_xn_md_sic_cmp_data_enable0_u_t; -#else typedef union sh_xn_md_sic_cmp_data_enable0_u { mmr_t sh_xn_md_sic_cmp_data_enable0_regval; struct { mmr_t data_enable0 : 64; } sh_xn_md_sic_cmp_data_enable0_s; } sh_xn_md_sic_cmp_data_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_SIC_CMP_DATA_ENABLE1" */ /* MD enable compare SIC data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_md_sic_cmp_data_enable1_u { - mmr_t sh_xn_md_sic_cmp_data_enable1_regval; - struct { - mmr_t data_enable1 : 64; - } sh_xn_md_sic_cmp_data_enable1_s; -} sh_xn_md_sic_cmp_data_enable1_u_t; -#else typedef union sh_xn_md_sic_cmp_data_enable1_u { mmr_t sh_xn_md_sic_cmp_data_enable1_regval; struct { mmr_t data_enable1 : 64; } sh_xn_md_sic_cmp_data_enable1_s; } sh_xn_md_sic_cmp_data_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_SIC_CMP_DATA_ENABLE2" */ /* MD enable compare SIC data2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_md_sic_cmp_data_enable2_u { mmr_t sh_xn_md_sic_cmp_data_enable2_regval; struct { mmr_t data_enable2 : 64; } sh_xn_md_sic_cmp_data_enable2_s; } sh_xn_md_sic_cmp_data_enable2_u_t; -#else -typedef union sh_xn_md_sic_cmp_data_enable2_u { - mmr_t sh_xn_md_sic_cmp_data_enable2_regval; - struct { - mmr_t data_enable2 : 64; - } sh_xn_md_sic_cmp_data_enable2_s; -} sh_xn_md_sic_cmp_data_enable2_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_SIC_CMP_DATA_ENABLE3" */ /* MD enable compare SIC data3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_md_sic_cmp_data_enable3_u { mmr_t sh_xn_md_sic_cmp_data_enable3_regval; struct { mmr_t data_enable3 : 64; } sh_xn_md_sic_cmp_data_enable3_s; } sh_xn_md_sic_cmp_data_enable3_u_t; -#else -typedef union sh_xn_md_sic_cmp_data_enable3_u { - mmr_t sh_xn_md_sic_cmp_data_enable3_regval; - struct { - mmr_t data_enable3 : 64; - } sh_xn_md_sic_cmp_data_enable3_s; -} sh_xn_md_sic_cmp_data_enable3_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_IILB_CMP_EXP_DATA0" */ /* PI compare IILB input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_iilb_cmp_exp_data0_u { - mmr_t sh_xn_pi_iilb_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_pi_iilb_cmp_exp_data0_s; -} sh_xn_pi_iilb_cmp_exp_data0_u_t; -#else typedef union sh_xn_pi_iilb_cmp_exp_data0_u { mmr_t sh_xn_pi_iilb_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_pi_iilb_cmp_exp_data0_s; } sh_xn_pi_iilb_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_IILB_CMP_EXP_DATA1" */ /* PI compare IILB input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_iilb_cmp_exp_data1_u { - mmr_t sh_xn_pi_iilb_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_pi_iilb_cmp_exp_data1_s; -} sh_xn_pi_iilb_cmp_exp_data1_u_t; -#else typedef union sh_xn_pi_iilb_cmp_exp_data1_u { mmr_t sh_xn_pi_iilb_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_pi_iilb_cmp_exp_data1_s; } sh_xn_pi_iilb_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_IILB_CMP_ENABLE0" */ /* PI compare IILB input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_iilb_cmp_enable0_u { - mmr_t sh_xn_pi_iilb_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_pi_iilb_cmp_enable0_s; -} sh_xn_pi_iilb_cmp_enable0_u_t; -#else typedef union sh_xn_pi_iilb_cmp_enable0_u { mmr_t sh_xn_pi_iilb_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_pi_iilb_cmp_enable0_s; } sh_xn_pi_iilb_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_IILB_CMP_ENABLE1" */ /* PI compare IILB input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_pi_iilb_cmp_enable1_u { mmr_t sh_xn_pi_iilb_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_pi_iilb_cmp_enable1_s; } sh_xn_pi_iilb_cmp_enable1_u_t; -#else -typedef union sh_xn_pi_iilb_cmp_enable1_u { - mmr_t sh_xn_pi_iilb_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_pi_iilb_cmp_enable1_s; -} sh_xn_pi_iilb_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_NI0_CMP_EXP_DATA0" */ /* PI compare NI0 input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_pi_ni0_cmp_exp_data0_u { mmr_t sh_xn_pi_ni0_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_pi_ni0_cmp_exp_data0_s; } sh_xn_pi_ni0_cmp_exp_data0_u_t; -#else -typedef union sh_xn_pi_ni0_cmp_exp_data0_u { - mmr_t sh_xn_pi_ni0_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_pi_ni0_cmp_exp_data0_s; -} sh_xn_pi_ni0_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_NI0_CMP_EXP_DATA1" */ /* PI compare NI0 input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_pi_ni0_cmp_exp_data1_u { mmr_t sh_xn_pi_ni0_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_pi_ni0_cmp_exp_data1_s; } sh_xn_pi_ni0_cmp_exp_data1_u_t; -#else -typedef union sh_xn_pi_ni0_cmp_exp_data1_u { - mmr_t sh_xn_pi_ni0_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_pi_ni0_cmp_exp_data1_s; -} sh_xn_pi_ni0_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_NI0_CMP_ENABLE0" */ /* PI compare NI0 input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_pi_ni0_cmp_enable0_u { mmr_t sh_xn_pi_ni0_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_pi_ni0_cmp_enable0_s; } sh_xn_pi_ni0_cmp_enable0_u_t; -#else -typedef union sh_xn_pi_ni0_cmp_enable0_u { - mmr_t sh_xn_pi_ni0_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_pi_ni0_cmp_enable0_s; -} sh_xn_pi_ni0_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_NI0_CMP_ENABLE1" */ /* PI compare NI0 input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_ni0_cmp_enable1_u { - mmr_t sh_xn_pi_ni0_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_pi_ni0_cmp_enable1_s; -} sh_xn_pi_ni0_cmp_enable1_u_t; -#else typedef union sh_xn_pi_ni0_cmp_enable1_u { mmr_t sh_xn_pi_ni0_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_pi_ni0_cmp_enable1_s; } sh_xn_pi_ni0_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_NI1_CMP_EXP_DATA0" */ /* PI compare NI1 input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_ni1_cmp_exp_data0_u { - mmr_t sh_xn_pi_ni1_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_pi_ni1_cmp_exp_data0_s; -} sh_xn_pi_ni1_cmp_exp_data0_u_t; -#else typedef union sh_xn_pi_ni1_cmp_exp_data0_u { mmr_t sh_xn_pi_ni1_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_pi_ni1_cmp_exp_data0_s; } sh_xn_pi_ni1_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_NI1_CMP_EXP_DATA1" */ /* PI compare NI1 input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_ni1_cmp_exp_data1_u { - mmr_t sh_xn_pi_ni1_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_pi_ni1_cmp_exp_data1_s; -} sh_xn_pi_ni1_cmp_exp_data1_u_t; -#else typedef union sh_xn_pi_ni1_cmp_exp_data1_u { mmr_t sh_xn_pi_ni1_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_pi_ni1_cmp_exp_data1_s; } sh_xn_pi_ni1_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_NI1_CMP_ENABLE0" */ /* PI compare NI1 input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_ni1_cmp_enable0_u { - mmr_t sh_xn_pi_ni1_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_pi_ni1_cmp_enable0_s; -} sh_xn_pi_ni1_cmp_enable0_u_t; -#else typedef union sh_xn_pi_ni1_cmp_enable0_u { mmr_t sh_xn_pi_ni1_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_pi_ni1_cmp_enable0_s; } sh_xn_pi_ni1_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_NI1_CMP_ENABLE1" */ /* PI compare NI1 input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_ni1_cmp_enable1_u { - mmr_t sh_xn_pi_ni1_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_pi_ni1_cmp_enable1_s; -} sh_xn_pi_ni1_cmp_enable1_u_t; -#else typedef union sh_xn_pi_ni1_cmp_enable1_u { mmr_t sh_xn_pi_ni1_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_pi_ni1_cmp_enable1_s; } sh_xn_pi_ni1_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_SIC_CMP_EXP_HDR0" */ /* PI compare SIC input expected header0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_sic_cmp_exp_hdr0_u { - mmr_t sh_xn_pi_sic_cmp_exp_hdr0_regval; - struct { - mmr_t data : 64; - } sh_xn_pi_sic_cmp_exp_hdr0_s; -} sh_xn_pi_sic_cmp_exp_hdr0_u_t; -#else typedef union sh_xn_pi_sic_cmp_exp_hdr0_u { mmr_t sh_xn_pi_sic_cmp_exp_hdr0_regval; struct { mmr_t data : 64; } sh_xn_pi_sic_cmp_exp_hdr0_s; } sh_xn_pi_sic_cmp_exp_hdr0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_SIC_CMP_EXP_HDR1" */ /* PI compare SIC input expected header1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_pi_sic_cmp_exp_hdr1_u { mmr_t sh_xn_pi_sic_cmp_exp_hdr1_regval; struct { @@ -12086,43 +6538,24 @@ mmr_t reserved_0 : 22; } sh_xn_pi_sic_cmp_exp_hdr1_s; } sh_xn_pi_sic_cmp_exp_hdr1_u_t; -#else -typedef union sh_xn_pi_sic_cmp_exp_hdr1_u { - mmr_t sh_xn_pi_sic_cmp_exp_hdr1_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t data : 42; - } sh_xn_pi_sic_cmp_exp_hdr1_s; -} sh_xn_pi_sic_cmp_exp_hdr1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_SIC_CMP_HDR_ENABLE0" */ /* PI compare SIC header enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_sic_cmp_hdr_enable0_u { - mmr_t sh_xn_pi_sic_cmp_hdr_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_pi_sic_cmp_hdr_enable0_s; -} sh_xn_pi_sic_cmp_hdr_enable0_u_t; -#else typedef union sh_xn_pi_sic_cmp_hdr_enable0_u { mmr_t sh_xn_pi_sic_cmp_hdr_enable0_regval; struct { mmr_t enable : 64; } sh_xn_pi_sic_cmp_hdr_enable0_s; } sh_xn_pi_sic_cmp_hdr_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_SIC_CMP_HDR_ENABLE1" */ /* PI compare SIC header enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_pi_sic_cmp_hdr_enable1_u { mmr_t sh_xn_pi_sic_cmp_hdr_enable1_regval; struct { @@ -12130,1029 +6563,587 @@ mmr_t reserved_0 : 22; } sh_xn_pi_sic_cmp_hdr_enable1_s; } sh_xn_pi_sic_cmp_hdr_enable1_u_t; -#else -typedef union sh_xn_pi_sic_cmp_hdr_enable1_u { - mmr_t sh_xn_pi_sic_cmp_hdr_enable1_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t enable : 42; - } sh_xn_pi_sic_cmp_hdr_enable1_s; -} sh_xn_pi_sic_cmp_hdr_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_SIC_CMP_DATA0" */ /* PI compare SIC data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_sic_cmp_data0_u { - mmr_t sh_xn_pi_sic_cmp_data0_regval; - struct { - mmr_t data0 : 64; - } sh_xn_pi_sic_cmp_data0_s; -} sh_xn_pi_sic_cmp_data0_u_t; -#else typedef union sh_xn_pi_sic_cmp_data0_u { mmr_t sh_xn_pi_sic_cmp_data0_regval; struct { mmr_t data0 : 64; } sh_xn_pi_sic_cmp_data0_s; } sh_xn_pi_sic_cmp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_SIC_CMP_DATA1" */ /* PI compare SIC data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_sic_cmp_data1_u { - mmr_t sh_xn_pi_sic_cmp_data1_regval; - struct { - mmr_t data1 : 64; - } sh_xn_pi_sic_cmp_data1_s; -} sh_xn_pi_sic_cmp_data1_u_t; -#else typedef union sh_xn_pi_sic_cmp_data1_u { mmr_t sh_xn_pi_sic_cmp_data1_regval; struct { mmr_t data1 : 64; } sh_xn_pi_sic_cmp_data1_s; } sh_xn_pi_sic_cmp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_SIC_CMP_DATA2" */ /* PI compare SIC data2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_sic_cmp_data2_u { - mmr_t sh_xn_pi_sic_cmp_data2_regval; - struct { - mmr_t data2 : 64; - } sh_xn_pi_sic_cmp_data2_s; -} sh_xn_pi_sic_cmp_data2_u_t; -#else typedef union sh_xn_pi_sic_cmp_data2_u { mmr_t sh_xn_pi_sic_cmp_data2_regval; struct { mmr_t data2 : 64; } sh_xn_pi_sic_cmp_data2_s; } sh_xn_pi_sic_cmp_data2_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_SIC_CMP_DATA3" */ /* PI compare SIC data3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_pi_sic_cmp_data3_u { mmr_t sh_xn_pi_sic_cmp_data3_regval; struct { mmr_t data3 : 64; } sh_xn_pi_sic_cmp_data3_s; } sh_xn_pi_sic_cmp_data3_u_t; -#else -typedef union sh_xn_pi_sic_cmp_data3_u { - mmr_t sh_xn_pi_sic_cmp_data3_regval; - struct { - mmr_t data3 : 64; - } sh_xn_pi_sic_cmp_data3_s; -} sh_xn_pi_sic_cmp_data3_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_SIC_CMP_DATA_ENABLE0" */ /* PI enable compare SIC data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_sic_cmp_data_enable0_u { - mmr_t sh_xn_pi_sic_cmp_data_enable0_regval; - struct { - mmr_t data_enable0 : 64; - } sh_xn_pi_sic_cmp_data_enable0_s; -} sh_xn_pi_sic_cmp_data_enable0_u_t; -#else typedef union sh_xn_pi_sic_cmp_data_enable0_u { mmr_t sh_xn_pi_sic_cmp_data_enable0_regval; struct { mmr_t data_enable0 : 64; } sh_xn_pi_sic_cmp_data_enable0_s; } sh_xn_pi_sic_cmp_data_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_SIC_CMP_DATA_ENABLE1" */ /* PI enable compare SIC data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_sic_cmp_data_enable1_u { - mmr_t sh_xn_pi_sic_cmp_data_enable1_regval; - struct { - mmr_t data_enable1 : 64; - } sh_xn_pi_sic_cmp_data_enable1_s; -} sh_xn_pi_sic_cmp_data_enable1_u_t; -#else typedef union sh_xn_pi_sic_cmp_data_enable1_u { mmr_t sh_xn_pi_sic_cmp_data_enable1_regval; struct { mmr_t data_enable1 : 64; } sh_xn_pi_sic_cmp_data_enable1_s; } sh_xn_pi_sic_cmp_data_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_SIC_CMP_DATA_ENABLE2" */ /* PI enable compare SIC data2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_sic_cmp_data_enable2_u { - mmr_t sh_xn_pi_sic_cmp_data_enable2_regval; - struct { - mmr_t data_enable2 : 64; - } sh_xn_pi_sic_cmp_data_enable2_s; -} sh_xn_pi_sic_cmp_data_enable2_u_t; -#else typedef union sh_xn_pi_sic_cmp_data_enable2_u { mmr_t sh_xn_pi_sic_cmp_data_enable2_regval; struct { mmr_t data_enable2 : 64; } sh_xn_pi_sic_cmp_data_enable2_s; } sh_xn_pi_sic_cmp_data_enable2_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_PI_SIC_CMP_DATA_ENABLE3" */ /* PI enable compare SIC data3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_pi_sic_cmp_data_enable3_u { - mmr_t sh_xn_pi_sic_cmp_data_enable3_regval; - struct { - mmr_t data_enable3 : 64; - } sh_xn_pi_sic_cmp_data_enable3_s; -} sh_xn_pi_sic_cmp_data_enable3_u_t; -#else typedef union sh_xn_pi_sic_cmp_data_enable3_u { mmr_t sh_xn_pi_sic_cmp_data_enable3_regval; struct { mmr_t data_enable3 : 64; } sh_xn_pi_sic_cmp_data_enable3_s; } sh_xn_pi_sic_cmp_data_enable3_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_IILB_CMP_EXP_DATA0" */ /* NI0 compare IILB input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_iilb_cmp_exp_data0_u { - mmr_t sh_xn_ni0_iilb_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_ni0_iilb_cmp_exp_data0_s; -} sh_xn_ni0_iilb_cmp_exp_data0_u_t; -#else typedef union sh_xn_ni0_iilb_cmp_exp_data0_u { mmr_t sh_xn_ni0_iilb_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_ni0_iilb_cmp_exp_data0_s; } sh_xn_ni0_iilb_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_IILB_CMP_EXP_DATA1" */ /* NI0 compare IILB input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni0_iilb_cmp_exp_data1_u { mmr_t sh_xn_ni0_iilb_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_ni0_iilb_cmp_exp_data1_s; } sh_xn_ni0_iilb_cmp_exp_data1_u_t; -#else -typedef union sh_xn_ni0_iilb_cmp_exp_data1_u { - mmr_t sh_xn_ni0_iilb_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_ni0_iilb_cmp_exp_data1_s; -} sh_xn_ni0_iilb_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_IILB_CMP_ENABLE0" */ /* NI0 compare IILB input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_iilb_cmp_enable0_u { - mmr_t sh_xn_ni0_iilb_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni0_iilb_cmp_enable0_s; -} sh_xn_ni0_iilb_cmp_enable0_u_t; -#else typedef union sh_xn_ni0_iilb_cmp_enable0_u { mmr_t sh_xn_ni0_iilb_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_ni0_iilb_cmp_enable0_s; } sh_xn_ni0_iilb_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_IILB_CMP_ENABLE1" */ /* NI0 compare IILB input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_iilb_cmp_enable1_u { - mmr_t sh_xn_ni0_iilb_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni0_iilb_cmp_enable1_s; -} sh_xn_ni0_iilb_cmp_enable1_u_t; -#else typedef union sh_xn_ni0_iilb_cmp_enable1_u { mmr_t sh_xn_ni0_iilb_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_ni0_iilb_cmp_enable1_s; } sh_xn_ni0_iilb_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_PI_CMP_EXP_DATA0" */ /* NI0 compare PI input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_pi_cmp_exp_data0_u { - mmr_t sh_xn_ni0_pi_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_ni0_pi_cmp_exp_data0_s; -} sh_xn_ni0_pi_cmp_exp_data0_u_t; -#else typedef union sh_xn_ni0_pi_cmp_exp_data0_u { mmr_t sh_xn_ni0_pi_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_ni0_pi_cmp_exp_data0_s; } sh_xn_ni0_pi_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_PI_CMP_EXP_DATA1" */ /* NI0 compare PI input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni0_pi_cmp_exp_data1_u { mmr_t sh_xn_ni0_pi_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_ni0_pi_cmp_exp_data1_s; } sh_xn_ni0_pi_cmp_exp_data1_u_t; -#else -typedef union sh_xn_ni0_pi_cmp_exp_data1_u { - mmr_t sh_xn_ni0_pi_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_ni0_pi_cmp_exp_data1_s; -} sh_xn_ni0_pi_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_PI_CMP_ENABLE0" */ /* NI0 compare PI input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni0_pi_cmp_enable0_u { mmr_t sh_xn_ni0_pi_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_ni0_pi_cmp_enable0_s; } sh_xn_ni0_pi_cmp_enable0_u_t; -#else -typedef union sh_xn_ni0_pi_cmp_enable0_u { - mmr_t sh_xn_ni0_pi_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni0_pi_cmp_enable0_s; -} sh_xn_ni0_pi_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_PI_CMP_ENABLE1" */ /* NI0 compare PI input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni0_pi_cmp_enable1_u { mmr_t sh_xn_ni0_pi_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_ni0_pi_cmp_enable1_s; } sh_xn_ni0_pi_cmp_enable1_u_t; -#else -typedef union sh_xn_ni0_pi_cmp_enable1_u { - mmr_t sh_xn_ni0_pi_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni0_pi_cmp_enable1_s; -} sh_xn_ni0_pi_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_MD_CMP_EXP_DATA0" */ /* NI0 compare MD input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_md_cmp_exp_data0_u { - mmr_t sh_xn_ni0_md_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_ni0_md_cmp_exp_data0_s; -} sh_xn_ni0_md_cmp_exp_data0_u_t; -#else typedef union sh_xn_ni0_md_cmp_exp_data0_u { mmr_t sh_xn_ni0_md_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_ni0_md_cmp_exp_data0_s; } sh_xn_ni0_md_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_MD_CMP_EXP_DATA1" */ /* NI0 compare MD input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_md_cmp_exp_data1_u { - mmr_t sh_xn_ni0_md_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_ni0_md_cmp_exp_data1_s; -} sh_xn_ni0_md_cmp_exp_data1_u_t; -#else typedef union sh_xn_ni0_md_cmp_exp_data1_u { mmr_t sh_xn_ni0_md_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_ni0_md_cmp_exp_data1_s; } sh_xn_ni0_md_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_MD_CMP_ENABLE0" */ /* NI0 compare MD input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni0_md_cmp_enable0_u { mmr_t sh_xn_ni0_md_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_ni0_md_cmp_enable0_s; } sh_xn_ni0_md_cmp_enable0_u_t; -#else -typedef union sh_xn_ni0_md_cmp_enable0_u { - mmr_t sh_xn_ni0_md_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni0_md_cmp_enable0_s; -} sh_xn_ni0_md_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_MD_CMP_ENABLE1" */ /* NI0 compare MD input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_md_cmp_enable1_u { - mmr_t sh_xn_ni0_md_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni0_md_cmp_enable1_s; -} sh_xn_ni0_md_cmp_enable1_u_t; -#else typedef union sh_xn_ni0_md_cmp_enable1_u { mmr_t sh_xn_ni0_md_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_ni0_md_cmp_enable1_s; } sh_xn_ni0_md_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_NI_CMP_EXP_DATA0" */ /* NI0 compare NI input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_ni_cmp_exp_data0_u { - mmr_t sh_xn_ni0_ni_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_ni0_ni_cmp_exp_data0_s; -} sh_xn_ni0_ni_cmp_exp_data0_u_t; -#else typedef union sh_xn_ni0_ni_cmp_exp_data0_u { mmr_t sh_xn_ni0_ni_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_ni0_ni_cmp_exp_data0_s; } sh_xn_ni0_ni_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_NI_CMP_EXP_DATA1" */ /* NI0 compare NI input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_ni_cmp_exp_data1_u { - mmr_t sh_xn_ni0_ni_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_ni0_ni_cmp_exp_data1_s; -} sh_xn_ni0_ni_cmp_exp_data1_u_t; -#else typedef union sh_xn_ni0_ni_cmp_exp_data1_u { mmr_t sh_xn_ni0_ni_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_ni0_ni_cmp_exp_data1_s; } sh_xn_ni0_ni_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_NI_CMP_ENABLE0" */ /* NI0 compare NI input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_ni_cmp_enable0_u { - mmr_t sh_xn_ni0_ni_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni0_ni_cmp_enable0_s; -} sh_xn_ni0_ni_cmp_enable0_u_t; -#else typedef union sh_xn_ni0_ni_cmp_enable0_u { mmr_t sh_xn_ni0_ni_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_ni0_ni_cmp_enable0_s; } sh_xn_ni0_ni_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_NI_CMP_ENABLE1" */ /* NI0 compare NI input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni0_ni_cmp_enable1_u { mmr_t sh_xn_ni0_ni_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_ni0_ni_cmp_enable1_s; } sh_xn_ni0_ni_cmp_enable1_u_t; -#else -typedef union sh_xn_ni0_ni_cmp_enable1_u { - mmr_t sh_xn_ni0_ni_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni0_ni_cmp_enable1_s; -} sh_xn_ni0_ni_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_LLP_CMP_EXP_DATA0" */ /* NI0 compare LLP input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_llp_cmp_exp_data0_u { - mmr_t sh_xn_ni0_llp_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_ni0_llp_cmp_exp_data0_s; -} sh_xn_ni0_llp_cmp_exp_data0_u_t; -#else typedef union sh_xn_ni0_llp_cmp_exp_data0_u { mmr_t sh_xn_ni0_llp_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_ni0_llp_cmp_exp_data0_s; } sh_xn_ni0_llp_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_LLP_CMP_EXP_DATA1" */ /* NI0 compare LLP input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_llp_cmp_exp_data1_u { - mmr_t sh_xn_ni0_llp_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_ni0_llp_cmp_exp_data1_s; -} sh_xn_ni0_llp_cmp_exp_data1_u_t; -#else typedef union sh_xn_ni0_llp_cmp_exp_data1_u { mmr_t sh_xn_ni0_llp_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_ni0_llp_cmp_exp_data1_s; } sh_xn_ni0_llp_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_LLP_CMP_ENABLE0" */ /* NI0 compare LLP input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_llp_cmp_enable0_u { - mmr_t sh_xn_ni0_llp_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni0_llp_cmp_enable0_s; -} sh_xn_ni0_llp_cmp_enable0_u_t; -#else typedef union sh_xn_ni0_llp_cmp_enable0_u { mmr_t sh_xn_ni0_llp_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_ni0_llp_cmp_enable0_s; } sh_xn_ni0_llp_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI0_LLP_CMP_ENABLE1" */ /* NI0 compare LLP input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni0_llp_cmp_enable1_u { - mmr_t sh_xn_ni0_llp_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni0_llp_cmp_enable1_s; -} sh_xn_ni0_llp_cmp_enable1_u_t; -#else typedef union sh_xn_ni0_llp_cmp_enable1_u { mmr_t sh_xn_ni0_llp_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_ni0_llp_cmp_enable1_s; } sh_xn_ni0_llp_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_IILB_CMP_EXP_DATA0" */ /* NI1 compare IILB input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni1_iilb_cmp_exp_data0_u { mmr_t sh_xn_ni1_iilb_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_ni1_iilb_cmp_exp_data0_s; } sh_xn_ni1_iilb_cmp_exp_data0_u_t; -#else -typedef union sh_xn_ni1_iilb_cmp_exp_data0_u { - mmr_t sh_xn_ni1_iilb_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_ni1_iilb_cmp_exp_data0_s; -} sh_xn_ni1_iilb_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_IILB_CMP_EXP_DATA1" */ /* NI1 compare IILB input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni1_iilb_cmp_exp_data1_u { mmr_t sh_xn_ni1_iilb_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_ni1_iilb_cmp_exp_data1_s; } sh_xn_ni1_iilb_cmp_exp_data1_u_t; -#else -typedef union sh_xn_ni1_iilb_cmp_exp_data1_u { - mmr_t sh_xn_ni1_iilb_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_ni1_iilb_cmp_exp_data1_s; -} sh_xn_ni1_iilb_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_IILB_CMP_ENABLE0" */ /* NI1 compare IILB input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_iilb_cmp_enable0_u { - mmr_t sh_xn_ni1_iilb_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni1_iilb_cmp_enable0_s; -} sh_xn_ni1_iilb_cmp_enable0_u_t; -#else typedef union sh_xn_ni1_iilb_cmp_enable0_u { mmr_t sh_xn_ni1_iilb_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_ni1_iilb_cmp_enable0_s; } sh_xn_ni1_iilb_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_IILB_CMP_ENABLE1" */ /* NI1 compare IILB input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_iilb_cmp_enable1_u { - mmr_t sh_xn_ni1_iilb_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni1_iilb_cmp_enable1_s; -} sh_xn_ni1_iilb_cmp_enable1_u_t; -#else typedef union sh_xn_ni1_iilb_cmp_enable1_u { mmr_t sh_xn_ni1_iilb_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_ni1_iilb_cmp_enable1_s; } sh_xn_ni1_iilb_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_PI_CMP_EXP_DATA0" */ /* NI1 compare PI input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_pi_cmp_exp_data0_u { - mmr_t sh_xn_ni1_pi_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_ni1_pi_cmp_exp_data0_s; -} sh_xn_ni1_pi_cmp_exp_data0_u_t; -#else typedef union sh_xn_ni1_pi_cmp_exp_data0_u { mmr_t sh_xn_ni1_pi_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_ni1_pi_cmp_exp_data0_s; } sh_xn_ni1_pi_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_PI_CMP_EXP_DATA1" */ /* NI1 compare PI input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni1_pi_cmp_exp_data1_u { mmr_t sh_xn_ni1_pi_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_ni1_pi_cmp_exp_data1_s; } sh_xn_ni1_pi_cmp_exp_data1_u_t; -#else -typedef union sh_xn_ni1_pi_cmp_exp_data1_u { - mmr_t sh_xn_ni1_pi_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_ni1_pi_cmp_exp_data1_s; -} sh_xn_ni1_pi_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_PI_CMP_ENABLE0" */ /* NI1 compare PI input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_pi_cmp_enable0_u { - mmr_t sh_xn_ni1_pi_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni1_pi_cmp_enable0_s; -} sh_xn_ni1_pi_cmp_enable0_u_t; -#else typedef union sh_xn_ni1_pi_cmp_enable0_u { mmr_t sh_xn_ni1_pi_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_ni1_pi_cmp_enable0_s; } sh_xn_ni1_pi_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_PI_CMP_ENABLE1" */ /* NI1 compare PI input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_pi_cmp_enable1_u { - mmr_t sh_xn_ni1_pi_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni1_pi_cmp_enable1_s; -} sh_xn_ni1_pi_cmp_enable1_u_t; -#else typedef union sh_xn_ni1_pi_cmp_enable1_u { mmr_t sh_xn_ni1_pi_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_ni1_pi_cmp_enable1_s; } sh_xn_ni1_pi_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_MD_CMP_EXP_DATA0" */ /* NI1 compare MD input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni1_md_cmp_exp_data0_u { mmr_t sh_xn_ni1_md_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_ni1_md_cmp_exp_data0_s; } sh_xn_ni1_md_cmp_exp_data0_u_t; -#else -typedef union sh_xn_ni1_md_cmp_exp_data0_u { - mmr_t sh_xn_ni1_md_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_ni1_md_cmp_exp_data0_s; -} sh_xn_ni1_md_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_MD_CMP_EXP_DATA1" */ /* NI1 compare MD input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_md_cmp_exp_data1_u { - mmr_t sh_xn_ni1_md_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_ni1_md_cmp_exp_data1_s; -} sh_xn_ni1_md_cmp_exp_data1_u_t; -#else typedef union sh_xn_ni1_md_cmp_exp_data1_u { mmr_t sh_xn_ni1_md_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_ni1_md_cmp_exp_data1_s; } sh_xn_ni1_md_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_MD_CMP_ENABLE0" */ /* NI1 compare MD input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni1_md_cmp_enable0_u { mmr_t sh_xn_ni1_md_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_ni1_md_cmp_enable0_s; } sh_xn_ni1_md_cmp_enable0_u_t; -#else -typedef union sh_xn_ni1_md_cmp_enable0_u { - mmr_t sh_xn_ni1_md_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni1_md_cmp_enable0_s; -} sh_xn_ni1_md_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_MD_CMP_ENABLE1" */ /* NI1 compare MD input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni1_md_cmp_enable1_u { mmr_t sh_xn_ni1_md_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_ni1_md_cmp_enable1_s; } sh_xn_ni1_md_cmp_enable1_u_t; -#else -typedef union sh_xn_ni1_md_cmp_enable1_u { - mmr_t sh_xn_ni1_md_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni1_md_cmp_enable1_s; -} sh_xn_ni1_md_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_NI_CMP_EXP_DATA0" */ /* NI1 compare NI input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_ni_cmp_exp_data0_u { - mmr_t sh_xn_ni1_ni_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_ni1_ni_cmp_exp_data0_s; -} sh_xn_ni1_ni_cmp_exp_data0_u_t; -#else typedef union sh_xn_ni1_ni_cmp_exp_data0_u { mmr_t sh_xn_ni1_ni_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_ni1_ni_cmp_exp_data0_s; } sh_xn_ni1_ni_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_NI_CMP_EXP_DATA1" */ /* NI1 compare NI input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_ni1_ni_cmp_exp_data1_u { mmr_t sh_xn_ni1_ni_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_ni1_ni_cmp_exp_data1_s; } sh_xn_ni1_ni_cmp_exp_data1_u_t; -#else -typedef union sh_xn_ni1_ni_cmp_exp_data1_u { - mmr_t sh_xn_ni1_ni_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_ni1_ni_cmp_exp_data1_s; -} sh_xn_ni1_ni_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_NI_CMP_ENABLE0" */ /* NI1 compare NI input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_ni_cmp_enable0_u { - mmr_t sh_xn_ni1_ni_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni1_ni_cmp_enable0_s; -} sh_xn_ni1_ni_cmp_enable0_u_t; -#else typedef union sh_xn_ni1_ni_cmp_enable0_u { mmr_t sh_xn_ni1_ni_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_ni1_ni_cmp_enable0_s; } sh_xn_ni1_ni_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_NI_CMP_ENABLE1" */ /* NI1 compare NI input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_ni_cmp_enable1_u { - mmr_t sh_xn_ni1_ni_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni1_ni_cmp_enable1_s; -} sh_xn_ni1_ni_cmp_enable1_u_t; -#else typedef union sh_xn_ni1_ni_cmp_enable1_u { mmr_t sh_xn_ni1_ni_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_ni1_ni_cmp_enable1_s; } sh_xn_ni1_ni_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_LLP_CMP_EXP_DATA0" */ /* NI1 compare LLP input expected data0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_llp_cmp_exp_data0_u { - mmr_t sh_xn_ni1_llp_cmp_exp_data0_regval; - struct { - mmr_t data : 64; - } sh_xn_ni1_llp_cmp_exp_data0_s; -} sh_xn_ni1_llp_cmp_exp_data0_u_t; -#else typedef union sh_xn_ni1_llp_cmp_exp_data0_u { mmr_t sh_xn_ni1_llp_cmp_exp_data0_regval; struct { mmr_t data : 64; } sh_xn_ni1_llp_cmp_exp_data0_s; } sh_xn_ni1_llp_cmp_exp_data0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_LLP_CMP_EXP_DATA1" */ /* NI1 compare LLP input expected data1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_llp_cmp_exp_data1_u { - mmr_t sh_xn_ni1_llp_cmp_exp_data1_regval; - struct { - mmr_t data : 64; - } sh_xn_ni1_llp_cmp_exp_data1_s; -} sh_xn_ni1_llp_cmp_exp_data1_u_t; -#else typedef union sh_xn_ni1_llp_cmp_exp_data1_u { mmr_t sh_xn_ni1_llp_cmp_exp_data1_regval; struct { mmr_t data : 64; } sh_xn_ni1_llp_cmp_exp_data1_s; } sh_xn_ni1_llp_cmp_exp_data1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_LLP_CMP_ENABLE0" */ /* NI1 compare LLP input enable0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_llp_cmp_enable0_u { - mmr_t sh_xn_ni1_llp_cmp_enable0_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni1_llp_cmp_enable0_s; -} sh_xn_ni1_llp_cmp_enable0_u_t; -#else typedef union sh_xn_ni1_llp_cmp_enable0_u { mmr_t sh_xn_ni1_llp_cmp_enable0_regval; struct { mmr_t enable : 64; } sh_xn_ni1_llp_cmp_enable0_s; } sh_xn_ni1_llp_cmp_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_NI1_LLP_CMP_ENABLE1" */ /* NI1 compare LLP input enable1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_ni1_llp_cmp_enable1_u { - mmr_t sh_xn_ni1_llp_cmp_enable1_regval; - struct { - mmr_t enable : 64; - } sh_xn_ni1_llp_cmp_enable1_s; -} sh_xn_ni1_llp_cmp_enable1_u_t; -#else typedef union sh_xn_ni1_llp_cmp_enable1_u { mmr_t sh_xn_ni1_llp_cmp_enable1_regval; struct { mmr_t enable : 64; } sh_xn_ni1_llp_cmp_enable1_s; } sh_xn_ni1_llp_cmp_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_ECC_INJ_REG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_ecc_inj_reg_u { mmr_t sh_xnpi_ecc_inj_reg_regval; struct { @@ -13182,123 +7173,55 @@ mmr_t data_cb_cont3 : 1; } sh_xnpi_ecc_inj_reg_s; } sh_xnpi_ecc_inj_reg_u_t; -#else -typedef union sh_xnpi_ecc_inj_reg_u { - mmr_t sh_xnpi_ecc_inj_reg_regval; - struct { - mmr_t data_cb_cont3 : 1; - mmr_t data_cb_1shot3 : 1; - mmr_t data_cont3 : 1; - mmr_t data_1shot3 : 1; - mmr_t reserved_3 : 4; - mmr_t byte3 : 8; - mmr_t data_cb_cont2 : 1; - mmr_t data_cb_1shot2 : 1; - mmr_t data_cont2 : 1; - mmr_t data_1shot2 : 1; - mmr_t reserved_2 : 4; - mmr_t byte2 : 8; - mmr_t data_cb_cont1 : 1; - mmr_t data_cb_1shot1 : 1; - mmr_t data_cont1 : 1; - mmr_t data_1shot1 : 1; - mmr_t reserved_1 : 4; - mmr_t byte1 : 8; - mmr_t data_cb_cont0 : 1; - mmr_t data_cb_1shot0 : 1; - mmr_t data_cont0 : 1; - mmr_t data_1shot0 : 1; - mmr_t reserved_0 : 4; - mmr_t byte0 : 8; - } sh_xnpi_ecc_inj_reg_s; -} sh_xnpi_ecc_inj_reg_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_ECC0_INJ_MASK_REG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_ecc0_inj_mask_reg_u { mmr_t sh_xnpi_ecc0_inj_mask_reg_regval; struct { mmr_t mask_ecc0 : 64; } sh_xnpi_ecc0_inj_mask_reg_s; } sh_xnpi_ecc0_inj_mask_reg_u_t; -#else -typedef union sh_xnpi_ecc0_inj_mask_reg_u { - mmr_t sh_xnpi_ecc0_inj_mask_reg_regval; - struct { - mmr_t mask_ecc0 : 64; - } sh_xnpi_ecc0_inj_mask_reg_s; -} sh_xnpi_ecc0_inj_mask_reg_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_ECC1_INJ_MASK_REG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xnpi_ecc1_inj_mask_reg_u { - mmr_t sh_xnpi_ecc1_inj_mask_reg_regval; - struct { - mmr_t mask_ecc1 : 64; - } sh_xnpi_ecc1_inj_mask_reg_s; -} sh_xnpi_ecc1_inj_mask_reg_u_t; -#else typedef union sh_xnpi_ecc1_inj_mask_reg_u { mmr_t sh_xnpi_ecc1_inj_mask_reg_regval; struct { mmr_t mask_ecc1 : 64; } sh_xnpi_ecc1_inj_mask_reg_s; } sh_xnpi_ecc1_inj_mask_reg_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_ECC2_INJ_MASK_REG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xnpi_ecc2_inj_mask_reg_u { - mmr_t sh_xnpi_ecc2_inj_mask_reg_regval; - struct { - mmr_t mask_ecc2 : 64; - } sh_xnpi_ecc2_inj_mask_reg_s; -} sh_xnpi_ecc2_inj_mask_reg_u_t; -#else typedef union sh_xnpi_ecc2_inj_mask_reg_u { mmr_t sh_xnpi_ecc2_inj_mask_reg_regval; struct { mmr_t mask_ecc2 : 64; } sh_xnpi_ecc2_inj_mask_reg_s; } sh_xnpi_ecc2_inj_mask_reg_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_ECC3_INJ_MASK_REG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_ecc3_inj_mask_reg_u { mmr_t sh_xnpi_ecc3_inj_mask_reg_regval; struct { mmr_t mask_ecc3 : 64; } sh_xnpi_ecc3_inj_mask_reg_s; } sh_xnpi_ecc3_inj_mask_reg_u_t; -#else -typedef union sh_xnpi_ecc3_inj_mask_reg_u { - mmr_t sh_xnpi_ecc3_inj_mask_reg_regval; - struct { - mmr_t mask_ecc3 : 64; - } sh_xnpi_ecc3_inj_mask_reg_s; -} sh_xnpi_ecc3_inj_mask_reg_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_ECC_INJ_REG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_ecc_inj_reg_u { mmr_t sh_xnmd_ecc_inj_reg_regval; struct { @@ -13328,123 +7251,55 @@ mmr_t data_cb_cont3 : 1; } sh_xnmd_ecc_inj_reg_s; } sh_xnmd_ecc_inj_reg_u_t; -#else -typedef union sh_xnmd_ecc_inj_reg_u { - mmr_t sh_xnmd_ecc_inj_reg_regval; - struct { - mmr_t data_cb_cont3 : 1; - mmr_t data_cb_1shot3 : 1; - mmr_t data_cont3 : 1; - mmr_t data_1shot3 : 1; - mmr_t reserved_3 : 4; - mmr_t byte3 : 8; - mmr_t data_cb_cont2 : 1; - mmr_t data_cb_1shot2 : 1; - mmr_t data_cont2 : 1; - mmr_t data_1shot2 : 1; - mmr_t reserved_2 : 4; - mmr_t byte2 : 8; - mmr_t data_cb_cont1 : 1; - mmr_t data_cb_1shot1 : 1; - mmr_t data_cont1 : 1; - mmr_t data_1shot1 : 1; - mmr_t reserved_1 : 4; - mmr_t byte1 : 8; - mmr_t data_cb_cont0 : 1; - mmr_t data_cb_1shot0 : 1; - mmr_t data_cont0 : 1; - mmr_t data_1shot0 : 1; - mmr_t reserved_0 : 4; - mmr_t byte0 : 8; - } sh_xnmd_ecc_inj_reg_s; -} sh_xnmd_ecc_inj_reg_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_ECC0_INJ_MASK_REG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xnmd_ecc0_inj_mask_reg_u { - mmr_t sh_xnmd_ecc0_inj_mask_reg_regval; - struct { - mmr_t mask_ecc0 : 64; - } sh_xnmd_ecc0_inj_mask_reg_s; -} sh_xnmd_ecc0_inj_mask_reg_u_t; -#else typedef union sh_xnmd_ecc0_inj_mask_reg_u { mmr_t sh_xnmd_ecc0_inj_mask_reg_regval; struct { mmr_t mask_ecc0 : 64; } sh_xnmd_ecc0_inj_mask_reg_s; } sh_xnmd_ecc0_inj_mask_reg_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_ECC1_INJ_MASK_REG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_ecc1_inj_mask_reg_u { mmr_t sh_xnmd_ecc1_inj_mask_reg_regval; struct { mmr_t mask_ecc1 : 64; } sh_xnmd_ecc1_inj_mask_reg_s; } sh_xnmd_ecc1_inj_mask_reg_u_t; -#else -typedef union sh_xnmd_ecc1_inj_mask_reg_u { - mmr_t sh_xnmd_ecc1_inj_mask_reg_regval; - struct { - mmr_t mask_ecc1 : 64; - } sh_xnmd_ecc1_inj_mask_reg_s; -} sh_xnmd_ecc1_inj_mask_reg_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_ECC2_INJ_MASK_REG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xnmd_ecc2_inj_mask_reg_u { - mmr_t sh_xnmd_ecc2_inj_mask_reg_regval; - struct { - mmr_t mask_ecc2 : 64; - } sh_xnmd_ecc2_inj_mask_reg_s; -} sh_xnmd_ecc2_inj_mask_reg_u_t; -#else typedef union sh_xnmd_ecc2_inj_mask_reg_u { mmr_t sh_xnmd_ecc2_inj_mask_reg_regval; struct { mmr_t mask_ecc2 : 64; } sh_xnmd_ecc2_inj_mask_reg_s; } sh_xnmd_ecc2_inj_mask_reg_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_ECC3_INJ_MASK_REG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xnmd_ecc3_inj_mask_reg_u { - mmr_t sh_xnmd_ecc3_inj_mask_reg_regval; - struct { - mmr_t mask_ecc3 : 64; - } sh_xnmd_ecc3_inj_mask_reg_s; -} sh_xnmd_ecc3_inj_mask_reg_u_t; -#else typedef union sh_xnmd_ecc3_inj_mask_reg_u { mmr_t sh_xnmd_ecc3_inj_mask_reg_regval; struct { mmr_t mask_ecc3 : 64; } sh_xnmd_ecc3_inj_mask_reg_s; } sh_xnmd_ecc3_inj_mask_reg_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_ECC_ERR_REPORT" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_ecc_err_report_u { mmr_t sh_xnmd_ecc_err_report_regval; struct { @@ -13458,28 +7313,12 @@ mmr_t reserved_3 : 15; } sh_xnmd_ecc_err_report_s; } sh_xnmd_ecc_err_report_u_t; -#else -typedef union sh_xnmd_ecc_err_report_u { - mmr_t sh_xnmd_ecc_err_report_regval; - struct { - mmr_t reserved_3 : 15; - mmr_t ecc_disable3 : 1; - mmr_t reserved_2 : 15; - mmr_t ecc_disable2 : 1; - mmr_t reserved_1 : 15; - mmr_t ecc_disable1 : 1; - mmr_t reserved_0 : 15; - mmr_t ecc_disable0 : 1; - } sh_xnmd_ecc_err_report_s; -} sh_xnmd_ecc_err_report_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_ERROR_SUMMARY_1" */ /* ni0 Error Summary Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_error_summary_1_u { mmr_t sh_ni0_error_summary_1_regval; struct { @@ -13549,84 +7388,12 @@ mmr_t tail_timeout_ni_vc3 : 1; } sh_ni0_error_summary_1_s; } sh_ni0_error_summary_1_u_t; -#else -typedef union sh_ni0_error_summary_1_u { - mmr_t sh_ni0_error_summary_1_regval; - struct { - mmr_t tail_timeout_ni_vc3 : 1; - mmr_t tail_timeout_ni_vc2 : 1; - mmr_t tail_timeout_ni_vc1 : 1; - mmr_t tail_timeout_ni_vc0 : 1; - mmr_t tail_timeout_fifo13_vc3 : 1; - mmr_t tail_timeout_fifo13_vc1 : 1; - mmr_t tail_timeout_fifo02_vc2 : 1; - mmr_t tail_timeout_fifo02_vc0 : 1; - mmr_t overflow_ni_fifo_vc3_credit : 1; - mmr_t overflow_ni_fifo_vc2_credit : 1; - mmr_t overflow_ni_fifo_vc1_credit : 1; - mmr_t overflow_ni_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_credit : 1; - mmr_t overflow_md_fifo_vc0_credit : 1; - mmr_t overflow_iilb_fifo_vc2_credit : 1; - mmr_t overflow_iilb_fifo_vc0_credit : 1; - mmr_t overflow_pi_fifo_vc2_credit : 1; - mmr_t overflow_pi_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_push : 1; - mmr_t overflow_md_fifo_vc0_push : 1; - mmr_t overflow_iilb_fifo_vc2_push : 1; - mmr_t overflow_iilb_fifo_vc0_push : 1; - mmr_t overflow_pi_fifo_vc2_push : 1; - mmr_t overflow_pi_fifo_vc0_push : 1; - mmr_t overflow_ni_fifo_vc2_pop : 1; - mmr_t overflow_ni_fifo_vc0_pop : 1; - mmr_t overflow_md_fifo_vc2_pop : 1; - mmr_t overflow_md_fifo_vc0_pop : 1; - mmr_t overflow_iilb_fifo_vc2_pop : 1; - mmr_t overflow_iilb_fifo_vc0_pop : 1; - mmr_t overflow_pi_fifo_vc2_pop : 1; - mmr_t overflow_pi_fifo_vc0_pop : 1; - mmr_t overflow_ni_fifo_debit3 : 1; - mmr_t overflow_ni_fifo_debit2 : 1; - mmr_t overflow_ni_fifo_debit1 : 1; - mmr_t overflow_ni_fifo_debit0 : 1; - mmr_t overflow_md_fifo_debit2 : 1; - mmr_t overflow_md_fifo_debit0 : 1; - mmr_t overflow_iilb_fifo_debit2 : 1; - mmr_t overflow_iilb_fifo_debit0 : 1; - mmr_t overflow_pi_fifo_debit2 : 1; - mmr_t overflow_pi_fifo_debit0 : 1; - mmr_t overflow2_vc2_credit : 1; - mmr_t overflow1_vc2_credit : 1; - mmr_t overflow0_vc2_credit : 1; - mmr_t overflow2_vc0_credit : 1; - mmr_t overflow1_vc0_credit : 1; - mmr_t overflow0_vc0_credit : 1; - mmr_t overflow_fifo13_vc2_credit : 1; - mmr_t overflow_fifo13_vc0_credit : 1; - mmr_t overflow_fifo02_vc2_credit : 1; - mmr_t overflow_fifo02_vc0_credit : 1; - mmr_t overflow_fifo13_vc3_push : 1; - mmr_t overflow_fifo13_vc1_push : 1; - mmr_t overflow_fifo02_vc2_push : 1; - mmr_t overflow_fifo02_vc0_push : 1; - mmr_t overflow_fifo13_vc3_pop : 1; - mmr_t overflow_fifo13_vc1_pop : 1; - mmr_t overflow_fifo02_vc2_pop : 1; - mmr_t overflow_fifo02_vc0_pop : 1; - mmr_t overflow_fifo13_debit2 : 1; - mmr_t overflow_fifo13_debit0 : 1; - mmr_t overflow_fifo02_debit2 : 1; - mmr_t overflow_fifo02_debit0 : 1; - } sh_ni0_error_summary_1_s; -} sh_ni0_error_summary_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_ERROR_SUMMARY_2" */ /* ni0 Error Summary Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_error_summary_2_u { mmr_t sh_ni0_error_summary_2_regval; struct { @@ -13687,75 +7454,12 @@ mmr_t reserved_1 : 1; } sh_ni0_error_summary_2_s; } sh_ni0_error_summary_2_u_t; -#else -typedef union sh_ni0_error_summary_2_u { - mmr_t sh_ni0_error_summary_2_regval; - struct { - mmr_t reserved_1 : 1; - mmr_t retry_timeout_error : 1; - mmr_t lut_read_error : 1; - mmr_t chiplet_nomatch : 1; - mmr_t llp_deadlock_vc3 : 1; - mmr_t llp_deadlock_vc2 : 1; - mmr_t llp_deadlock_vc1 : 1; - mmr_t llp_deadlock_vc0 : 1; - mmr_t underflow_ni_fifo_vc3_credit : 1; - mmr_t underflow_ni_fifo_vc2_credit : 1; - mmr_t underflow_ni_fifo_vc1_credit : 1; - mmr_t underflow_ni_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_credit : 1; - mmr_t underflow_md_fifo_vc0_credit : 1; - mmr_t underflow_iilb_fifo_vc2_credit : 1; - mmr_t underflow_iilb_fifo_vc0_credit : 1; - mmr_t underflow_pi_fifo_vc2_credit : 1; - mmr_t underflow_pi_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_push : 1; - mmr_t underflow_md_fifo_vc0_push : 1; - mmr_t underflow_iilb_fifo_vc2_push : 1; - mmr_t underflow_iilb_fifo_vc0_push : 1; - mmr_t underflow_pi_fifo_vc2_push : 1; - mmr_t underflow_pi_fifo_vc0_push : 1; - mmr_t underflow_ni_fifo_vc2_pop : 1; - mmr_t underflow_ni_fifo_vc0_pop : 1; - mmr_t underflow_md_fifo_vc2_pop : 1; - mmr_t underflow_md_fifo_vc0_pop : 1; - mmr_t underflow_iilb_fifo_vc2_pop : 1; - mmr_t underflow_iilb_fifo_vc0_pop : 1; - mmr_t underflow_pi_fifo_vc2_pop : 1; - mmr_t underflow_pi_fifo_vc0_pop : 1; - mmr_t reserved_0 : 10; - mmr_t underflow2_vc2_credit : 1; - mmr_t underflow1_vc2_credit : 1; - mmr_t underflow0_vc2_credit : 1; - mmr_t underflow2_vc0_credit : 1; - mmr_t underflow1_vc0_credit : 1; - mmr_t underflow0_vc0_credit : 1; - mmr_t underflow_fifo13_vc2_credit : 1; - mmr_t underflow_fifo13_vc0_credit : 1; - mmr_t underflow_fifo02_vc2_credit : 1; - mmr_t underflow_fifo02_vc0_credit : 1; - mmr_t underflow_fifo13_vc3_push : 1; - mmr_t underflow_fifo13_vc1_push : 1; - mmr_t underflow_fifo02_vc2_push : 1; - mmr_t underflow_fifo02_vc0_push : 1; - mmr_t underflow_fifo13_vc3_pop : 1; - mmr_t underflow_fifo13_vc1_pop : 1; - mmr_t underflow_fifo02_vc2_pop : 1; - mmr_t underflow_fifo02_vc0_pop : 1; - mmr_t illegal_vciilb : 1; - mmr_t illegal_vcmd : 1; - mmr_t illegal_vcpi : 1; - mmr_t illegal_vcni : 1; - } sh_ni0_error_summary_2_s; -} sh_ni0_error_summary_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_ERROR_OVERFLOW_1" */ /* ni0 Error Overflow Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_error_overflow_1_u { mmr_t sh_ni0_error_overflow_1_regval; struct { @@ -13825,84 +7529,12 @@ mmr_t tail_timeout_ni_vc3 : 1; } sh_ni0_error_overflow_1_s; } sh_ni0_error_overflow_1_u_t; -#else -typedef union sh_ni0_error_overflow_1_u { - mmr_t sh_ni0_error_overflow_1_regval; - struct { - mmr_t tail_timeout_ni_vc3 : 1; - mmr_t tail_timeout_ni_vc2 : 1; - mmr_t tail_timeout_ni_vc1 : 1; - mmr_t tail_timeout_ni_vc0 : 1; - mmr_t tail_timeout_fifo13_vc3 : 1; - mmr_t tail_timeout_fifo13_vc1 : 1; - mmr_t tail_timeout_fifo02_vc2 : 1; - mmr_t tail_timeout_fifo02_vc0 : 1; - mmr_t overflow_ni_fifo_vc3_credit : 1; - mmr_t overflow_ni_fifo_vc2_credit : 1; - mmr_t overflow_ni_fifo_vc1_credit : 1; - mmr_t overflow_ni_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_credit : 1; - mmr_t overflow_md_fifo_vc0_credit : 1; - mmr_t overflow_iilb_fifo_vc2_credit : 1; - mmr_t overflow_iilb_fifo_vc0_credit : 1; - mmr_t overflow_pi_fifo_vc2_credit : 1; - mmr_t overflow_pi_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_push : 1; - mmr_t overflow_md_fifo_vc0_push : 1; - mmr_t overflow_iilb_fifo_vc2_push : 1; - mmr_t overflow_iilb_fifo_vc0_push : 1; - mmr_t overflow_pi_fifo_vc2_push : 1; - mmr_t overflow_pi_fifo_vc0_push : 1; - mmr_t overflow_ni_fifo_vc2_pop : 1; - mmr_t overflow_ni_fifo_vc0_pop : 1; - mmr_t overflow_md_fifo_vc2_pop : 1; - mmr_t overflow_md_fifo_vc0_pop : 1; - mmr_t overflow_iilb_fifo_vc2_pop : 1; - mmr_t overflow_iilb_fifo_vc0_pop : 1; - mmr_t overflow_pi_fifo_vc2_pop : 1; - mmr_t overflow_pi_fifo_vc0_pop : 1; - mmr_t overflow_ni_fifo_debit3 : 1; - mmr_t overflow_ni_fifo_debit2 : 1; - mmr_t overflow_ni_fifo_debit1 : 1; - mmr_t overflow_ni_fifo_debit0 : 1; - mmr_t overflow_md_fifo_debit2 : 1; - mmr_t overflow_md_fifo_debit0 : 1; - mmr_t overflow_iilb_fifo_debit2 : 1; - mmr_t overflow_iilb_fifo_debit0 : 1; - mmr_t overflow_pi_fifo_debit2 : 1; - mmr_t overflow_pi_fifo_debit0 : 1; - mmr_t overflow2_vc2_credit : 1; - mmr_t overflow1_vc2_credit : 1; - mmr_t overflow0_vc2_credit : 1; - mmr_t overflow2_vc0_credit : 1; - mmr_t overflow1_vc0_credit : 1; - mmr_t overflow0_vc0_credit : 1; - mmr_t overflow_fifo13_vc2_credit : 1; - mmr_t overflow_fifo13_vc0_credit : 1; - mmr_t overflow_fifo02_vc2_credit : 1; - mmr_t overflow_fifo02_vc0_credit : 1; - mmr_t overflow_fifo13_vc3_push : 1; - mmr_t overflow_fifo13_vc1_push : 1; - mmr_t overflow_fifo02_vc2_push : 1; - mmr_t overflow_fifo02_vc0_push : 1; - mmr_t overflow_fifo13_vc3_pop : 1; - mmr_t overflow_fifo13_vc1_pop : 1; - mmr_t overflow_fifo02_vc2_pop : 1; - mmr_t overflow_fifo02_vc0_pop : 1; - mmr_t overflow_fifo13_debit2 : 1; - mmr_t overflow_fifo13_debit0 : 1; - mmr_t overflow_fifo02_debit2 : 1; - mmr_t overflow_fifo02_debit0 : 1; - } sh_ni0_error_overflow_1_s; -} sh_ni0_error_overflow_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_ERROR_OVERFLOW_2" */ /* ni0 Error Overflow Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_error_overflow_2_u { mmr_t sh_ni0_error_overflow_2_regval; struct { @@ -13963,75 +7595,12 @@ mmr_t reserved_1 : 1; } sh_ni0_error_overflow_2_s; } sh_ni0_error_overflow_2_u_t; -#else -typedef union sh_ni0_error_overflow_2_u { - mmr_t sh_ni0_error_overflow_2_regval; - struct { - mmr_t reserved_1 : 1; - mmr_t retry_timeout_error : 1; - mmr_t lut_read_error : 1; - mmr_t chiplet_nomatch : 1; - mmr_t llp_deadlock_vc3 : 1; - mmr_t llp_deadlock_vc2 : 1; - mmr_t llp_deadlock_vc1 : 1; - mmr_t llp_deadlock_vc0 : 1; - mmr_t underflow_ni_fifo_vc3_credit : 1; - mmr_t underflow_ni_fifo_vc2_credit : 1; - mmr_t underflow_ni_fifo_vc1_credit : 1; - mmr_t underflow_ni_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_credit : 1; - mmr_t underflow_md_fifo_vc0_credit : 1; - mmr_t underflow_iilb_fifo_vc2_credit : 1; - mmr_t underflow_iilb_fifo_vc0_credit : 1; - mmr_t underflow_pi_fifo_vc2_credit : 1; - mmr_t underflow_pi_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_push : 1; - mmr_t underflow_md_fifo_vc0_push : 1; - mmr_t underflow_iilb_fifo_vc2_push : 1; - mmr_t underflow_iilb_fifo_vc0_push : 1; - mmr_t underflow_pi_fifo_vc2_push : 1; - mmr_t underflow_pi_fifo_vc0_push : 1; - mmr_t underflow_ni_fifo_vc2_pop : 1; - mmr_t underflow_ni_fifo_vc0_pop : 1; - mmr_t underflow_md_fifo_vc2_pop : 1; - mmr_t underflow_md_fifo_vc0_pop : 1; - mmr_t underflow_iilb_fifo_vc2_pop : 1; - mmr_t underflow_iilb_fifo_vc0_pop : 1; - mmr_t underflow_pi_fifo_vc2_pop : 1; - mmr_t underflow_pi_fifo_vc0_pop : 1; - mmr_t reserved_0 : 10; - mmr_t underflow2_vc2_credit : 1; - mmr_t underflow1_vc2_credit : 1; - mmr_t underflow0_vc2_credit : 1; - mmr_t underflow2_vc0_credit : 1; - mmr_t underflow1_vc0_credit : 1; - mmr_t underflow0_vc0_credit : 1; - mmr_t underflow_fifo13_vc2_credit : 1; - mmr_t underflow_fifo13_vc0_credit : 1; - mmr_t underflow_fifo02_vc2_credit : 1; - mmr_t underflow_fifo02_vc0_credit : 1; - mmr_t underflow_fifo13_vc3_push : 1; - mmr_t underflow_fifo13_vc1_push : 1; - mmr_t underflow_fifo02_vc2_push : 1; - mmr_t underflow_fifo02_vc0_push : 1; - mmr_t underflow_fifo13_vc3_pop : 1; - mmr_t underflow_fifo13_vc1_pop : 1; - mmr_t underflow_fifo02_vc2_pop : 1; - mmr_t underflow_fifo02_vc0_pop : 1; - mmr_t illegal_vciilb : 1; - mmr_t illegal_vcmd : 1; - mmr_t illegal_vcpi : 1; - mmr_t illegal_vcni : 1; - } sh_ni0_error_overflow_2_s; -} sh_ni0_error_overflow_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_ERROR_MASK_1" */ /* ni0 Error Mask Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_error_mask_1_u { mmr_t sh_ni0_error_mask_1_regval; struct { @@ -14101,84 +7670,12 @@ mmr_t tail_timeout_ni_vc3 : 1; } sh_ni0_error_mask_1_s; } sh_ni0_error_mask_1_u_t; -#else -typedef union sh_ni0_error_mask_1_u { - mmr_t sh_ni0_error_mask_1_regval; - struct { - mmr_t tail_timeout_ni_vc3 : 1; - mmr_t tail_timeout_ni_vc2 : 1; - mmr_t tail_timeout_ni_vc1 : 1; - mmr_t tail_timeout_ni_vc0 : 1; - mmr_t tail_timeout_fifo13_vc3 : 1; - mmr_t tail_timeout_fifo13_vc1 : 1; - mmr_t tail_timeout_fifo02_vc2 : 1; - mmr_t tail_timeout_fifo02_vc0 : 1; - mmr_t overflow_ni_fifo_vc3_credit : 1; - mmr_t overflow_ni_fifo_vc2_credit : 1; - mmr_t overflow_ni_fifo_vc1_credit : 1; - mmr_t overflow_ni_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_credit : 1; - mmr_t overflow_md_fifo_vc0_credit : 1; - mmr_t overflow_iilb_fifo_vc2_credit : 1; - mmr_t overflow_iilb_fifo_vc0_credit : 1; - mmr_t overflow_pi_fifo_vc2_credit : 1; - mmr_t overflow_pi_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_push : 1; - mmr_t overflow_md_fifo_vc0_push : 1; - mmr_t overflow_iilb_fifo_vc2_push : 1; - mmr_t overflow_iilb_fifo_vc0_push : 1; - mmr_t overflow_pi_fifo_vc2_push : 1; - mmr_t overflow_pi_fifo_vc0_push : 1; - mmr_t overflow_ni_fifo_vc2_pop : 1; - mmr_t overflow_ni_fifo_vc0_pop : 1; - mmr_t overflow_md_fifo_vc2_pop : 1; - mmr_t overflow_md_fifo_vc0_pop : 1; - mmr_t overflow_iilb_fifo_vc2_pop : 1; - mmr_t overflow_iilb_fifo_vc0_pop : 1; - mmr_t overflow_pi_fifo_vc2_pop : 1; - mmr_t overflow_pi_fifo_vc0_pop : 1; - mmr_t overflow_ni_fifo_debit3 : 1; - mmr_t overflow_ni_fifo_debit2 : 1; - mmr_t overflow_ni_fifo_debit1 : 1; - mmr_t overflow_ni_fifo_debit0 : 1; - mmr_t overflow_md_fifo_debit2 : 1; - mmr_t overflow_md_fifo_debit0 : 1; - mmr_t overflow_iilb_fifo_debit2 : 1; - mmr_t overflow_iilb_fifo_debit0 : 1; - mmr_t overflow_pi_fifo_debit2 : 1; - mmr_t overflow_pi_fifo_debit0 : 1; - mmr_t overflow2_vc2_credit : 1; - mmr_t overflow1_vc2_credit : 1; - mmr_t overflow0_vc2_credit : 1; - mmr_t overflow2_vc0_credit : 1; - mmr_t overflow1_vc0_credit : 1; - mmr_t overflow0_vc0_credit : 1; - mmr_t overflow_fifo13_vc2_credit : 1; - mmr_t overflow_fifo13_vc0_credit : 1; - mmr_t overflow_fifo02_vc2_credit : 1; - mmr_t overflow_fifo02_vc0_credit : 1; - mmr_t overflow_fifo13_vc3_push : 1; - mmr_t overflow_fifo13_vc1_push : 1; - mmr_t overflow_fifo02_vc2_push : 1; - mmr_t overflow_fifo02_vc0_push : 1; - mmr_t overflow_fifo13_vc3_pop : 1; - mmr_t overflow_fifo13_vc1_pop : 1; - mmr_t overflow_fifo02_vc2_pop : 1; - mmr_t overflow_fifo02_vc0_pop : 1; - mmr_t overflow_fifo13_debit2 : 1; - mmr_t overflow_fifo13_debit0 : 1; - mmr_t overflow_fifo02_debit2 : 1; - mmr_t overflow_fifo02_debit0 : 1; - } sh_ni0_error_mask_1_s; -} sh_ni0_error_mask_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_ERROR_MASK_2" */ /* ni0 Error Mask Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_error_mask_2_u { mmr_t sh_ni0_error_mask_2_regval; struct { @@ -14239,75 +7736,12 @@ mmr_t reserved_1 : 1; } sh_ni0_error_mask_2_s; } sh_ni0_error_mask_2_u_t; -#else -typedef union sh_ni0_error_mask_2_u { - mmr_t sh_ni0_error_mask_2_regval; - struct { - mmr_t reserved_1 : 1; - mmr_t retry_timeout_error : 1; - mmr_t lut_read_error : 1; - mmr_t chiplet_nomatch : 1; - mmr_t llp_deadlock_vc3 : 1; - mmr_t llp_deadlock_vc2 : 1; - mmr_t llp_deadlock_vc1 : 1; - mmr_t llp_deadlock_vc0 : 1; - mmr_t underflow_ni_fifo_vc3_credit : 1; - mmr_t underflow_ni_fifo_vc2_credit : 1; - mmr_t underflow_ni_fifo_vc1_credit : 1; - mmr_t underflow_ni_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_credit : 1; - mmr_t underflow_md_fifo_vc0_credit : 1; - mmr_t underflow_iilb_fifo_vc2_credit : 1; - mmr_t underflow_iilb_fifo_vc0_credit : 1; - mmr_t underflow_pi_fifo_vc2_credit : 1; - mmr_t underflow_pi_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_push : 1; - mmr_t underflow_md_fifo_vc0_push : 1; - mmr_t underflow_iilb_fifo_vc2_push : 1; - mmr_t underflow_iilb_fifo_vc0_push : 1; - mmr_t underflow_pi_fifo_vc2_push : 1; - mmr_t underflow_pi_fifo_vc0_push : 1; - mmr_t underflow_ni_fifo_vc2_pop : 1; - mmr_t underflow_ni_fifo_vc0_pop : 1; - mmr_t underflow_md_fifo_vc2_pop : 1; - mmr_t underflow_md_fifo_vc0_pop : 1; - mmr_t underflow_iilb_fifo_vc2_pop : 1; - mmr_t underflow_iilb_fifo_vc0_pop : 1; - mmr_t underflow_pi_fifo_vc2_pop : 1; - mmr_t underflow_pi_fifo_vc0_pop : 1; - mmr_t reserved_0 : 10; - mmr_t underflow2_vc2_credit : 1; - mmr_t underflow1_vc2_credit : 1; - mmr_t underflow0_vc2_credit : 1; - mmr_t underflow2_vc0_credit : 1; - mmr_t underflow1_vc0_credit : 1; - mmr_t underflow0_vc0_credit : 1; - mmr_t underflow_fifo13_vc2_credit : 1; - mmr_t underflow_fifo13_vc0_credit : 1; - mmr_t underflow_fifo02_vc2_credit : 1; - mmr_t underflow_fifo02_vc0_credit : 1; - mmr_t underflow_fifo13_vc3_push : 1; - mmr_t underflow_fifo13_vc1_push : 1; - mmr_t underflow_fifo02_vc2_push : 1; - mmr_t underflow_fifo02_vc0_push : 1; - mmr_t underflow_fifo13_vc3_pop : 1; - mmr_t underflow_fifo13_vc1_pop : 1; - mmr_t underflow_fifo02_vc2_pop : 1; - mmr_t underflow_fifo02_vc0_pop : 1; - mmr_t illegal_vciilb : 1; - mmr_t illegal_vcmd : 1; - mmr_t illegal_vcpi : 1; - mmr_t illegal_vcni : 1; - } sh_ni0_error_mask_2_s; -} sh_ni0_error_mask_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_FIRST_ERROR_1" */ /* ni0 First Error Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_first_error_1_u { mmr_t sh_ni0_first_error_1_regval; struct { @@ -14377,84 +7811,12 @@ mmr_t tail_timeout_ni_vc3 : 1; } sh_ni0_first_error_1_s; } sh_ni0_first_error_1_u_t; -#else -typedef union sh_ni0_first_error_1_u { - mmr_t sh_ni0_first_error_1_regval; - struct { - mmr_t tail_timeout_ni_vc3 : 1; - mmr_t tail_timeout_ni_vc2 : 1; - mmr_t tail_timeout_ni_vc1 : 1; - mmr_t tail_timeout_ni_vc0 : 1; - mmr_t tail_timeout_fifo13_vc3 : 1; - mmr_t tail_timeout_fifo13_vc1 : 1; - mmr_t tail_timeout_fifo02_vc2 : 1; - mmr_t tail_timeout_fifo02_vc0 : 1; - mmr_t overflow_ni_fifo_vc3_credit : 1; - mmr_t overflow_ni_fifo_vc2_credit : 1; - mmr_t overflow_ni_fifo_vc1_credit : 1; - mmr_t overflow_ni_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_credit : 1; - mmr_t overflow_md_fifo_vc0_credit : 1; - mmr_t overflow_iilb_fifo_vc2_credit : 1; - mmr_t overflow_iilb_fifo_vc0_credit : 1; - mmr_t overflow_pi_fifo_vc2_credit : 1; - mmr_t overflow_pi_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_push : 1; - mmr_t overflow_md_fifo_vc0_push : 1; - mmr_t overflow_iilb_fifo_vc2_push : 1; - mmr_t overflow_iilb_fifo_vc0_push : 1; - mmr_t overflow_pi_fifo_vc2_push : 1; - mmr_t overflow_pi_fifo_vc0_push : 1; - mmr_t overflow_ni_fifo_vc2_pop : 1; - mmr_t overflow_ni_fifo_vc0_pop : 1; - mmr_t overflow_md_fifo_vc2_pop : 1; - mmr_t overflow_md_fifo_vc0_pop : 1; - mmr_t overflow_iilb_fifo_vc2_pop : 1; - mmr_t overflow_iilb_fifo_vc0_pop : 1; - mmr_t overflow_pi_fifo_vc2_pop : 1; - mmr_t overflow_pi_fifo_vc0_pop : 1; - mmr_t overflow_ni_fifo_debit3 : 1; - mmr_t overflow_ni_fifo_debit2 : 1; - mmr_t overflow_ni_fifo_debit1 : 1; - mmr_t overflow_ni_fifo_debit0 : 1; - mmr_t overflow_md_fifo_debit2 : 1; - mmr_t overflow_md_fifo_debit0 : 1; - mmr_t overflow_iilb_fifo_debit2 : 1; - mmr_t overflow_iilb_fifo_debit0 : 1; - mmr_t overflow_pi_fifo_debit2 : 1; - mmr_t overflow_pi_fifo_debit0 : 1; - mmr_t overflow2_vc2_credit : 1; - mmr_t overflow1_vc2_credit : 1; - mmr_t overflow0_vc2_credit : 1; - mmr_t overflow2_vc0_credit : 1; - mmr_t overflow1_vc0_credit : 1; - mmr_t overflow0_vc0_credit : 1; - mmr_t overflow_fifo13_vc2_credit : 1; - mmr_t overflow_fifo13_vc0_credit : 1; - mmr_t overflow_fifo02_vc2_credit : 1; - mmr_t overflow_fifo02_vc0_credit : 1; - mmr_t overflow_fifo13_vc3_push : 1; - mmr_t overflow_fifo13_vc1_push : 1; - mmr_t overflow_fifo02_vc2_push : 1; - mmr_t overflow_fifo02_vc0_push : 1; - mmr_t overflow_fifo13_vc3_pop : 1; - mmr_t overflow_fifo13_vc1_pop : 1; - mmr_t overflow_fifo02_vc2_pop : 1; - mmr_t overflow_fifo02_vc0_pop : 1; - mmr_t overflow_fifo13_debit2 : 1; - mmr_t overflow_fifo13_debit0 : 1; - mmr_t overflow_fifo02_debit2 : 1; - mmr_t overflow_fifo02_debit0 : 1; - } sh_ni0_first_error_1_s; -} sh_ni0_first_error_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_FIRST_ERROR_2" */ /* ni0 First Error Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_first_error_2_u { mmr_t sh_ni0_first_error_2_regval; struct { @@ -14515,117 +7877,36 @@ mmr_t reserved_1 : 1; } sh_ni0_first_error_2_s; } sh_ni0_first_error_2_u_t; -#else -typedef union sh_ni0_first_error_2_u { - mmr_t sh_ni0_first_error_2_regval; - struct { - mmr_t reserved_1 : 1; - mmr_t retry_timeout_error : 1; - mmr_t lut_read_error : 1; - mmr_t chiplet_nomatch : 1; - mmr_t llp_deadlock_vc3 : 1; - mmr_t llp_deadlock_vc2 : 1; - mmr_t llp_deadlock_vc1 : 1; - mmr_t llp_deadlock_vc0 : 1; - mmr_t underflow_ni_fifo_vc3_credit : 1; - mmr_t underflow_ni_fifo_vc2_credit : 1; - mmr_t underflow_ni_fifo_vc1_credit : 1; - mmr_t underflow_ni_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_credit : 1; - mmr_t underflow_md_fifo_vc0_credit : 1; - mmr_t underflow_iilb_fifo_vc2_credit : 1; - mmr_t underflow_iilb_fifo_vc0_credit : 1; - mmr_t underflow_pi_fifo_vc2_credit : 1; - mmr_t underflow_pi_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_push : 1; - mmr_t underflow_md_fifo_vc0_push : 1; - mmr_t underflow_iilb_fifo_vc2_push : 1; - mmr_t underflow_iilb_fifo_vc0_push : 1; - mmr_t underflow_pi_fifo_vc2_push : 1; - mmr_t underflow_pi_fifo_vc0_push : 1; - mmr_t underflow_ni_fifo_vc2_pop : 1; - mmr_t underflow_ni_fifo_vc0_pop : 1; - mmr_t underflow_md_fifo_vc2_pop : 1; - mmr_t underflow_md_fifo_vc0_pop : 1; - mmr_t underflow_iilb_fifo_vc2_pop : 1; - mmr_t underflow_iilb_fifo_vc0_pop : 1; - mmr_t underflow_pi_fifo_vc2_pop : 1; - mmr_t underflow_pi_fifo_vc0_pop : 1; - mmr_t reserved_0 : 10; - mmr_t underflow2_vc2_credit : 1; - mmr_t underflow1_vc2_credit : 1; - mmr_t underflow0_vc2_credit : 1; - mmr_t underflow2_vc0_credit : 1; - mmr_t underflow1_vc0_credit : 1; - mmr_t underflow0_vc0_credit : 1; - mmr_t underflow_fifo13_vc2_credit : 1; - mmr_t underflow_fifo13_vc0_credit : 1; - mmr_t underflow_fifo02_vc2_credit : 1; - mmr_t underflow_fifo02_vc0_credit : 1; - mmr_t underflow_fifo13_vc3_push : 1; - mmr_t underflow_fifo13_vc1_push : 1; - mmr_t underflow_fifo02_vc2_push : 1; - mmr_t underflow_fifo02_vc0_push : 1; - mmr_t underflow_fifo13_vc3_pop : 1; - mmr_t underflow_fifo13_vc1_pop : 1; - mmr_t underflow_fifo02_vc2_pop : 1; - mmr_t underflow_fifo02_vc0_pop : 1; - mmr_t illegal_vciilb : 1; - mmr_t illegal_vcmd : 1; - mmr_t illegal_vcpi : 1; - mmr_t illegal_vcni : 1; - } sh_ni0_first_error_2_s; -} sh_ni0_first_error_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_ERROR_DETAIL_1" */ /* ni0 Chiplet no match header bits 63:0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_ni0_error_detail_1_u { - mmr_t sh_ni0_error_detail_1_regval; - struct { - mmr_t header : 64; - } sh_ni0_error_detail_1_s; -} sh_ni0_error_detail_1_u_t; -#else typedef union sh_ni0_error_detail_1_u { mmr_t sh_ni0_error_detail_1_regval; struct { mmr_t header : 64; } sh_ni0_error_detail_1_s; } sh_ni0_error_detail_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_ERROR_DETAIL_2" */ /* ni0 Chiplet no match header bits 127:64 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_ni0_error_detail_2_u { - mmr_t sh_ni0_error_detail_2_regval; - struct { - mmr_t header : 64; - } sh_ni0_error_detail_2_s; -} sh_ni0_error_detail_2_u_t; -#else typedef union sh_ni0_error_detail_2_u { mmr_t sh_ni0_error_detail_2_regval; struct { mmr_t header : 64; } sh_ni0_error_detail_2_s; } sh_ni0_error_detail_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_ERROR_SUMMARY_1" */ /* ni1 Error Summary Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_error_summary_1_u { mmr_t sh_ni1_error_summary_1_regval; struct { @@ -14695,84 +7976,12 @@ mmr_t tail_timeout_ni_vc3 : 1; } sh_ni1_error_summary_1_s; } sh_ni1_error_summary_1_u_t; -#else -typedef union sh_ni1_error_summary_1_u { - mmr_t sh_ni1_error_summary_1_regval; - struct { - mmr_t tail_timeout_ni_vc3 : 1; - mmr_t tail_timeout_ni_vc2 : 1; - mmr_t tail_timeout_ni_vc1 : 1; - mmr_t tail_timeout_ni_vc0 : 1; - mmr_t tail_timeout_fifo13_vc3 : 1; - mmr_t tail_timeout_fifo13_vc1 : 1; - mmr_t tail_timeout_fifo02_vc2 : 1; - mmr_t tail_timeout_fifo02_vc0 : 1; - mmr_t overflow_ni_fifo_vc3_credit : 1; - mmr_t overflow_ni_fifo_vc2_credit : 1; - mmr_t overflow_ni_fifo_vc1_credit : 1; - mmr_t overflow_ni_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_credit : 1; - mmr_t overflow_md_fifo_vc0_credit : 1; - mmr_t overflow_iilb_fifo_vc2_credit : 1; - mmr_t overflow_iilb_fifo_vc0_credit : 1; - mmr_t overflow_pi_fifo_vc2_credit : 1; - mmr_t overflow_pi_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_push : 1; - mmr_t overflow_md_fifo_vc0_push : 1; - mmr_t overflow_iilb_fifo_vc2_push : 1; - mmr_t overflow_iilb_fifo_vc0_push : 1; - mmr_t overflow_pi_fifo_vc2_push : 1; - mmr_t overflow_pi_fifo_vc0_push : 1; - mmr_t overflow_ni_fifo_vc2_pop : 1; - mmr_t overflow_ni_fifo_vc0_pop : 1; - mmr_t overflow_md_fifo_vc2_pop : 1; - mmr_t overflow_md_fifo_vc0_pop : 1; - mmr_t overflow_iilb_fifo_vc2_pop : 1; - mmr_t overflow_iilb_fifo_vc0_pop : 1; - mmr_t overflow_pi_fifo_vc2_pop : 1; - mmr_t overflow_pi_fifo_vc0_pop : 1; - mmr_t overflow_ni_fifo_debit3 : 1; - mmr_t overflow_ni_fifo_debit2 : 1; - mmr_t overflow_ni_fifo_debit1 : 1; - mmr_t overflow_ni_fifo_debit0 : 1; - mmr_t overflow_md_fifo_debit2 : 1; - mmr_t overflow_md_fifo_debit0 : 1; - mmr_t overflow_iilb_fifo_debit2 : 1; - mmr_t overflow_iilb_fifo_debit0 : 1; - mmr_t overflow_pi_fifo_debit2 : 1; - mmr_t overflow_pi_fifo_debit0 : 1; - mmr_t overflow2_vc2_credit : 1; - mmr_t overflow1_vc2_credit : 1; - mmr_t overflow0_vc2_credit : 1; - mmr_t overflow2_vc0_credit : 1; - mmr_t overflow1_vc0_credit : 1; - mmr_t overflow0_vc0_credit : 1; - mmr_t overflow_fifo13_vc2_credit : 1; - mmr_t overflow_fifo13_vc0_credit : 1; - mmr_t overflow_fifo02_vc2_credit : 1; - mmr_t overflow_fifo02_vc0_credit : 1; - mmr_t overflow_fifo13_vc3_push : 1; - mmr_t overflow_fifo13_vc1_push : 1; - mmr_t overflow_fifo02_vc2_push : 1; - mmr_t overflow_fifo02_vc0_push : 1; - mmr_t overflow_fifo13_vc3_pop : 1; - mmr_t overflow_fifo13_vc1_pop : 1; - mmr_t overflow_fifo02_vc2_pop : 1; - mmr_t overflow_fifo02_vc0_pop : 1; - mmr_t overflow_fifo13_debit2 : 1; - mmr_t overflow_fifo13_debit0 : 1; - mmr_t overflow_fifo02_debit2 : 1; - mmr_t overflow_fifo02_debit0 : 1; - } sh_ni1_error_summary_1_s; -} sh_ni1_error_summary_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_ERROR_SUMMARY_2" */ /* ni1 Error Summary Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_error_summary_2_u { mmr_t sh_ni1_error_summary_2_regval; struct { @@ -14833,75 +8042,12 @@ mmr_t reserved_1 : 1; } sh_ni1_error_summary_2_s; } sh_ni1_error_summary_2_u_t; -#else -typedef union sh_ni1_error_summary_2_u { - mmr_t sh_ni1_error_summary_2_regval; - struct { - mmr_t reserved_1 : 1; - mmr_t retry_timeout_error : 1; - mmr_t lut_read_error : 1; - mmr_t chiplet_nomatch : 1; - mmr_t llp_deadlock_vc3 : 1; - mmr_t llp_deadlock_vc2 : 1; - mmr_t llp_deadlock_vc1 : 1; - mmr_t llp_deadlock_vc0 : 1; - mmr_t underflow_ni_fifo_vc3_credit : 1; - mmr_t underflow_ni_fifo_vc2_credit : 1; - mmr_t underflow_ni_fifo_vc1_credit : 1; - mmr_t underflow_ni_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_credit : 1; - mmr_t underflow_md_fifo_vc0_credit : 1; - mmr_t underflow_iilb_fifo_vc2_credit : 1; - mmr_t underflow_iilb_fifo_vc0_credit : 1; - mmr_t underflow_pi_fifo_vc2_credit : 1; - mmr_t underflow_pi_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_push : 1; - mmr_t underflow_md_fifo_vc0_push : 1; - mmr_t underflow_iilb_fifo_vc2_push : 1; - mmr_t underflow_iilb_fifo_vc0_push : 1; - mmr_t underflow_pi_fifo_vc2_push : 1; - mmr_t underflow_pi_fifo_vc0_push : 1; - mmr_t underflow_ni_fifo_vc2_pop : 1; - mmr_t underflow_ni_fifo_vc0_pop : 1; - mmr_t underflow_md_fifo_vc2_pop : 1; - mmr_t underflow_md_fifo_vc0_pop : 1; - mmr_t underflow_iilb_fifo_vc2_pop : 1; - mmr_t underflow_iilb_fifo_vc0_pop : 1; - mmr_t underflow_pi_fifo_vc2_pop : 1; - mmr_t underflow_pi_fifo_vc0_pop : 1; - mmr_t reserved_0 : 10; - mmr_t underflow2_vc2_credit : 1; - mmr_t underflow1_vc2_credit : 1; - mmr_t underflow0_vc2_credit : 1; - mmr_t underflow2_vc0_credit : 1; - mmr_t underflow1_vc0_credit : 1; - mmr_t underflow0_vc0_credit : 1; - mmr_t underflow_fifo13_vc2_credit : 1; - mmr_t underflow_fifo13_vc0_credit : 1; - mmr_t underflow_fifo02_vc2_credit : 1; - mmr_t underflow_fifo02_vc0_credit : 1; - mmr_t underflow_fifo13_vc3_push : 1; - mmr_t underflow_fifo13_vc1_push : 1; - mmr_t underflow_fifo02_vc2_push : 1; - mmr_t underflow_fifo02_vc0_push : 1; - mmr_t underflow_fifo13_vc3_pop : 1; - mmr_t underflow_fifo13_vc1_pop : 1; - mmr_t underflow_fifo02_vc2_pop : 1; - mmr_t underflow_fifo02_vc0_pop : 1; - mmr_t illegal_vciilb : 1; - mmr_t illegal_vcmd : 1; - mmr_t illegal_vcpi : 1; - mmr_t illegal_vcni : 1; - } sh_ni1_error_summary_2_s; -} sh_ni1_error_summary_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_ERROR_OVERFLOW_1" */ /* ni1 Error Overflow Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_error_overflow_1_u { mmr_t sh_ni1_error_overflow_1_regval; struct { @@ -14971,84 +8117,12 @@ mmr_t tail_timeout_ni_vc3 : 1; } sh_ni1_error_overflow_1_s; } sh_ni1_error_overflow_1_u_t; -#else -typedef union sh_ni1_error_overflow_1_u { - mmr_t sh_ni1_error_overflow_1_regval; - struct { - mmr_t tail_timeout_ni_vc3 : 1; - mmr_t tail_timeout_ni_vc2 : 1; - mmr_t tail_timeout_ni_vc1 : 1; - mmr_t tail_timeout_ni_vc0 : 1; - mmr_t tail_timeout_fifo13_vc3 : 1; - mmr_t tail_timeout_fifo13_vc1 : 1; - mmr_t tail_timeout_fifo02_vc2 : 1; - mmr_t tail_timeout_fifo02_vc0 : 1; - mmr_t overflow_ni_fifo_vc3_credit : 1; - mmr_t overflow_ni_fifo_vc2_credit : 1; - mmr_t overflow_ni_fifo_vc1_credit : 1; - mmr_t overflow_ni_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_credit : 1; - mmr_t overflow_md_fifo_vc0_credit : 1; - mmr_t overflow_iilb_fifo_vc2_credit : 1; - mmr_t overflow_iilb_fifo_vc0_credit : 1; - mmr_t overflow_pi_fifo_vc2_credit : 1; - mmr_t overflow_pi_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_push : 1; - mmr_t overflow_md_fifo_vc0_push : 1; - mmr_t overflow_iilb_fifo_vc2_push : 1; - mmr_t overflow_iilb_fifo_vc0_push : 1; - mmr_t overflow_pi_fifo_vc2_push : 1; - mmr_t overflow_pi_fifo_vc0_push : 1; - mmr_t overflow_ni_fifo_vc2_pop : 1; - mmr_t overflow_ni_fifo_vc0_pop : 1; - mmr_t overflow_md_fifo_vc2_pop : 1; - mmr_t overflow_md_fifo_vc0_pop : 1; - mmr_t overflow_iilb_fifo_vc2_pop : 1; - mmr_t overflow_iilb_fifo_vc0_pop : 1; - mmr_t overflow_pi_fifo_vc2_pop : 1; - mmr_t overflow_pi_fifo_vc0_pop : 1; - mmr_t overflow_ni_fifo_debit3 : 1; - mmr_t overflow_ni_fifo_debit2 : 1; - mmr_t overflow_ni_fifo_debit1 : 1; - mmr_t overflow_ni_fifo_debit0 : 1; - mmr_t overflow_md_fifo_debit2 : 1; - mmr_t overflow_md_fifo_debit0 : 1; - mmr_t overflow_iilb_fifo_debit2 : 1; - mmr_t overflow_iilb_fifo_debit0 : 1; - mmr_t overflow_pi_fifo_debit2 : 1; - mmr_t overflow_pi_fifo_debit0 : 1; - mmr_t overflow2_vc2_credit : 1; - mmr_t overflow1_vc2_credit : 1; - mmr_t overflow0_vc2_credit : 1; - mmr_t overflow2_vc0_credit : 1; - mmr_t overflow1_vc0_credit : 1; - mmr_t overflow0_vc0_credit : 1; - mmr_t overflow_fifo13_vc2_credit : 1; - mmr_t overflow_fifo13_vc0_credit : 1; - mmr_t overflow_fifo02_vc2_credit : 1; - mmr_t overflow_fifo02_vc0_credit : 1; - mmr_t overflow_fifo13_vc3_push : 1; - mmr_t overflow_fifo13_vc1_push : 1; - mmr_t overflow_fifo02_vc2_push : 1; - mmr_t overflow_fifo02_vc0_push : 1; - mmr_t overflow_fifo13_vc3_pop : 1; - mmr_t overflow_fifo13_vc1_pop : 1; - mmr_t overflow_fifo02_vc2_pop : 1; - mmr_t overflow_fifo02_vc0_pop : 1; - mmr_t overflow_fifo13_debit2 : 1; - mmr_t overflow_fifo13_debit0 : 1; - mmr_t overflow_fifo02_debit2 : 1; - mmr_t overflow_fifo02_debit0 : 1; - } sh_ni1_error_overflow_1_s; -} sh_ni1_error_overflow_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_ERROR_OVERFLOW_2" */ /* ni1 Error Overflow Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_error_overflow_2_u { mmr_t sh_ni1_error_overflow_2_regval; struct { @@ -15109,75 +8183,12 @@ mmr_t reserved_1 : 1; } sh_ni1_error_overflow_2_s; } sh_ni1_error_overflow_2_u_t; -#else -typedef union sh_ni1_error_overflow_2_u { - mmr_t sh_ni1_error_overflow_2_regval; - struct { - mmr_t reserved_1 : 1; - mmr_t retry_timeout_error : 1; - mmr_t lut_read_error : 1; - mmr_t chiplet_nomatch : 1; - mmr_t llp_deadlock_vc3 : 1; - mmr_t llp_deadlock_vc2 : 1; - mmr_t llp_deadlock_vc1 : 1; - mmr_t llp_deadlock_vc0 : 1; - mmr_t underflow_ni_fifo_vc3_credit : 1; - mmr_t underflow_ni_fifo_vc2_credit : 1; - mmr_t underflow_ni_fifo_vc1_credit : 1; - mmr_t underflow_ni_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_credit : 1; - mmr_t underflow_md_fifo_vc0_credit : 1; - mmr_t underflow_iilb_fifo_vc2_credit : 1; - mmr_t underflow_iilb_fifo_vc0_credit : 1; - mmr_t underflow_pi_fifo_vc2_credit : 1; - mmr_t underflow_pi_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_push : 1; - mmr_t underflow_md_fifo_vc0_push : 1; - mmr_t underflow_iilb_fifo_vc2_push : 1; - mmr_t underflow_iilb_fifo_vc0_push : 1; - mmr_t underflow_pi_fifo_vc2_push : 1; - mmr_t underflow_pi_fifo_vc0_push : 1; - mmr_t underflow_ni_fifo_vc2_pop : 1; - mmr_t underflow_ni_fifo_vc0_pop : 1; - mmr_t underflow_md_fifo_vc2_pop : 1; - mmr_t underflow_md_fifo_vc0_pop : 1; - mmr_t underflow_iilb_fifo_vc2_pop : 1; - mmr_t underflow_iilb_fifo_vc0_pop : 1; - mmr_t underflow_pi_fifo_vc2_pop : 1; - mmr_t underflow_pi_fifo_vc0_pop : 1; - mmr_t reserved_0 : 10; - mmr_t underflow2_vc2_credit : 1; - mmr_t underflow1_vc2_credit : 1; - mmr_t underflow0_vc2_credit : 1; - mmr_t underflow2_vc0_credit : 1; - mmr_t underflow1_vc0_credit : 1; - mmr_t underflow0_vc0_credit : 1; - mmr_t underflow_fifo13_vc2_credit : 1; - mmr_t underflow_fifo13_vc0_credit : 1; - mmr_t underflow_fifo02_vc2_credit : 1; - mmr_t underflow_fifo02_vc0_credit : 1; - mmr_t underflow_fifo13_vc3_push : 1; - mmr_t underflow_fifo13_vc1_push : 1; - mmr_t underflow_fifo02_vc2_push : 1; - mmr_t underflow_fifo02_vc0_push : 1; - mmr_t underflow_fifo13_vc3_pop : 1; - mmr_t underflow_fifo13_vc1_pop : 1; - mmr_t underflow_fifo02_vc2_pop : 1; - mmr_t underflow_fifo02_vc0_pop : 1; - mmr_t illegal_vciilb : 1; - mmr_t illegal_vcmd : 1; - mmr_t illegal_vcpi : 1; - mmr_t illegal_vcni : 1; - } sh_ni1_error_overflow_2_s; -} sh_ni1_error_overflow_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_ERROR_MASK_1" */ /* ni1 Error Mask Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_error_mask_1_u { mmr_t sh_ni1_error_mask_1_regval; struct { @@ -15247,84 +8258,12 @@ mmr_t tail_timeout_ni_vc3 : 1; } sh_ni1_error_mask_1_s; } sh_ni1_error_mask_1_u_t; -#else -typedef union sh_ni1_error_mask_1_u { - mmr_t sh_ni1_error_mask_1_regval; - struct { - mmr_t tail_timeout_ni_vc3 : 1; - mmr_t tail_timeout_ni_vc2 : 1; - mmr_t tail_timeout_ni_vc1 : 1; - mmr_t tail_timeout_ni_vc0 : 1; - mmr_t tail_timeout_fifo13_vc3 : 1; - mmr_t tail_timeout_fifo13_vc1 : 1; - mmr_t tail_timeout_fifo02_vc2 : 1; - mmr_t tail_timeout_fifo02_vc0 : 1; - mmr_t overflow_ni_fifo_vc3_credit : 1; - mmr_t overflow_ni_fifo_vc2_credit : 1; - mmr_t overflow_ni_fifo_vc1_credit : 1; - mmr_t overflow_ni_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_credit : 1; - mmr_t overflow_md_fifo_vc0_credit : 1; - mmr_t overflow_iilb_fifo_vc2_credit : 1; - mmr_t overflow_iilb_fifo_vc0_credit : 1; - mmr_t overflow_pi_fifo_vc2_credit : 1; - mmr_t overflow_pi_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_push : 1; - mmr_t overflow_md_fifo_vc0_push : 1; - mmr_t overflow_iilb_fifo_vc2_push : 1; - mmr_t overflow_iilb_fifo_vc0_push : 1; - mmr_t overflow_pi_fifo_vc2_push : 1; - mmr_t overflow_pi_fifo_vc0_push : 1; - mmr_t overflow_ni_fifo_vc2_pop : 1; - mmr_t overflow_ni_fifo_vc0_pop : 1; - mmr_t overflow_md_fifo_vc2_pop : 1; - mmr_t overflow_md_fifo_vc0_pop : 1; - mmr_t overflow_iilb_fifo_vc2_pop : 1; - mmr_t overflow_iilb_fifo_vc0_pop : 1; - mmr_t overflow_pi_fifo_vc2_pop : 1; - mmr_t overflow_pi_fifo_vc0_pop : 1; - mmr_t overflow_ni_fifo_debit3 : 1; - mmr_t overflow_ni_fifo_debit2 : 1; - mmr_t overflow_ni_fifo_debit1 : 1; - mmr_t overflow_ni_fifo_debit0 : 1; - mmr_t overflow_md_fifo_debit2 : 1; - mmr_t overflow_md_fifo_debit0 : 1; - mmr_t overflow_iilb_fifo_debit2 : 1; - mmr_t overflow_iilb_fifo_debit0 : 1; - mmr_t overflow_pi_fifo_debit2 : 1; - mmr_t overflow_pi_fifo_debit0 : 1; - mmr_t overflow2_vc2_credit : 1; - mmr_t overflow1_vc2_credit : 1; - mmr_t overflow0_vc2_credit : 1; - mmr_t overflow2_vc0_credit : 1; - mmr_t overflow1_vc0_credit : 1; - mmr_t overflow0_vc0_credit : 1; - mmr_t overflow_fifo13_vc2_credit : 1; - mmr_t overflow_fifo13_vc0_credit : 1; - mmr_t overflow_fifo02_vc2_credit : 1; - mmr_t overflow_fifo02_vc0_credit : 1; - mmr_t overflow_fifo13_vc3_push : 1; - mmr_t overflow_fifo13_vc1_push : 1; - mmr_t overflow_fifo02_vc2_push : 1; - mmr_t overflow_fifo02_vc0_push : 1; - mmr_t overflow_fifo13_vc3_pop : 1; - mmr_t overflow_fifo13_vc1_pop : 1; - mmr_t overflow_fifo02_vc2_pop : 1; - mmr_t overflow_fifo02_vc0_pop : 1; - mmr_t overflow_fifo13_debit2 : 1; - mmr_t overflow_fifo13_debit0 : 1; - mmr_t overflow_fifo02_debit2 : 1; - mmr_t overflow_fifo02_debit0 : 1; - } sh_ni1_error_mask_1_s; -} sh_ni1_error_mask_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_ERROR_MASK_2" */ /* ni1 Error Mask Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_error_mask_2_u { mmr_t sh_ni1_error_mask_2_regval; struct { @@ -15385,75 +8324,12 @@ mmr_t reserved_1 : 1; } sh_ni1_error_mask_2_s; } sh_ni1_error_mask_2_u_t; -#else -typedef union sh_ni1_error_mask_2_u { - mmr_t sh_ni1_error_mask_2_regval; - struct { - mmr_t reserved_1 : 1; - mmr_t retry_timeout_error : 1; - mmr_t lut_read_error : 1; - mmr_t chiplet_nomatch : 1; - mmr_t llp_deadlock_vc3 : 1; - mmr_t llp_deadlock_vc2 : 1; - mmr_t llp_deadlock_vc1 : 1; - mmr_t llp_deadlock_vc0 : 1; - mmr_t underflow_ni_fifo_vc3_credit : 1; - mmr_t underflow_ni_fifo_vc2_credit : 1; - mmr_t underflow_ni_fifo_vc1_credit : 1; - mmr_t underflow_ni_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_credit : 1; - mmr_t underflow_md_fifo_vc0_credit : 1; - mmr_t underflow_iilb_fifo_vc2_credit : 1; - mmr_t underflow_iilb_fifo_vc0_credit : 1; - mmr_t underflow_pi_fifo_vc2_credit : 1; - mmr_t underflow_pi_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_push : 1; - mmr_t underflow_md_fifo_vc0_push : 1; - mmr_t underflow_iilb_fifo_vc2_push : 1; - mmr_t underflow_iilb_fifo_vc0_push : 1; - mmr_t underflow_pi_fifo_vc2_push : 1; - mmr_t underflow_pi_fifo_vc0_push : 1; - mmr_t underflow_ni_fifo_vc2_pop : 1; - mmr_t underflow_ni_fifo_vc0_pop : 1; - mmr_t underflow_md_fifo_vc2_pop : 1; - mmr_t underflow_md_fifo_vc0_pop : 1; - mmr_t underflow_iilb_fifo_vc2_pop : 1; - mmr_t underflow_iilb_fifo_vc0_pop : 1; - mmr_t underflow_pi_fifo_vc2_pop : 1; - mmr_t underflow_pi_fifo_vc0_pop : 1; - mmr_t reserved_0 : 10; - mmr_t underflow2_vc2_credit : 1; - mmr_t underflow1_vc2_credit : 1; - mmr_t underflow0_vc2_credit : 1; - mmr_t underflow2_vc0_credit : 1; - mmr_t underflow1_vc0_credit : 1; - mmr_t underflow0_vc0_credit : 1; - mmr_t underflow_fifo13_vc2_credit : 1; - mmr_t underflow_fifo13_vc0_credit : 1; - mmr_t underflow_fifo02_vc2_credit : 1; - mmr_t underflow_fifo02_vc0_credit : 1; - mmr_t underflow_fifo13_vc3_push : 1; - mmr_t underflow_fifo13_vc1_push : 1; - mmr_t underflow_fifo02_vc2_push : 1; - mmr_t underflow_fifo02_vc0_push : 1; - mmr_t underflow_fifo13_vc3_pop : 1; - mmr_t underflow_fifo13_vc1_pop : 1; - mmr_t underflow_fifo02_vc2_pop : 1; - mmr_t underflow_fifo02_vc0_pop : 1; - mmr_t illegal_vciilb : 1; - mmr_t illegal_vcmd : 1; - mmr_t illegal_vcpi : 1; - mmr_t illegal_vcni : 1; - } sh_ni1_error_mask_2_s; -} sh_ni1_error_mask_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_FIRST_ERROR_1" */ /* ni1 First Error Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_first_error_1_u { mmr_t sh_ni1_first_error_1_regval; struct { @@ -15523,84 +8399,12 @@ mmr_t tail_timeout_ni_vc3 : 1; } sh_ni1_first_error_1_s; } sh_ni1_first_error_1_u_t; -#else -typedef union sh_ni1_first_error_1_u { - mmr_t sh_ni1_first_error_1_regval; - struct { - mmr_t tail_timeout_ni_vc3 : 1; - mmr_t tail_timeout_ni_vc2 : 1; - mmr_t tail_timeout_ni_vc1 : 1; - mmr_t tail_timeout_ni_vc0 : 1; - mmr_t tail_timeout_fifo13_vc3 : 1; - mmr_t tail_timeout_fifo13_vc1 : 1; - mmr_t tail_timeout_fifo02_vc2 : 1; - mmr_t tail_timeout_fifo02_vc0 : 1; - mmr_t overflow_ni_fifo_vc3_credit : 1; - mmr_t overflow_ni_fifo_vc2_credit : 1; - mmr_t overflow_ni_fifo_vc1_credit : 1; - mmr_t overflow_ni_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_credit : 1; - mmr_t overflow_md_fifo_vc0_credit : 1; - mmr_t overflow_iilb_fifo_vc2_credit : 1; - mmr_t overflow_iilb_fifo_vc0_credit : 1; - mmr_t overflow_pi_fifo_vc2_credit : 1; - mmr_t overflow_pi_fifo_vc0_credit : 1; - mmr_t overflow_md_fifo_vc2_push : 1; - mmr_t overflow_md_fifo_vc0_push : 1; - mmr_t overflow_iilb_fifo_vc2_push : 1; - mmr_t overflow_iilb_fifo_vc0_push : 1; - mmr_t overflow_pi_fifo_vc2_push : 1; - mmr_t overflow_pi_fifo_vc0_push : 1; - mmr_t overflow_ni_fifo_vc2_pop : 1; - mmr_t overflow_ni_fifo_vc0_pop : 1; - mmr_t overflow_md_fifo_vc2_pop : 1; - mmr_t overflow_md_fifo_vc0_pop : 1; - mmr_t overflow_iilb_fifo_vc2_pop : 1; - mmr_t overflow_iilb_fifo_vc0_pop : 1; - mmr_t overflow_pi_fifo_vc2_pop : 1; - mmr_t overflow_pi_fifo_vc0_pop : 1; - mmr_t overflow_ni_fifo_debit3 : 1; - mmr_t overflow_ni_fifo_debit2 : 1; - mmr_t overflow_ni_fifo_debit1 : 1; - mmr_t overflow_ni_fifo_debit0 : 1; - mmr_t overflow_md_fifo_debit2 : 1; - mmr_t overflow_md_fifo_debit0 : 1; - mmr_t overflow_iilb_fifo_debit2 : 1; - mmr_t overflow_iilb_fifo_debit0 : 1; - mmr_t overflow_pi_fifo_debit2 : 1; - mmr_t overflow_pi_fifo_debit0 : 1; - mmr_t overflow2_vc2_credit : 1; - mmr_t overflow1_vc2_credit : 1; - mmr_t overflow0_vc2_credit : 1; - mmr_t overflow2_vc0_credit : 1; - mmr_t overflow1_vc0_credit : 1; - mmr_t overflow0_vc0_credit : 1; - mmr_t overflow_fifo13_vc2_credit : 1; - mmr_t overflow_fifo13_vc0_credit : 1; - mmr_t overflow_fifo02_vc2_credit : 1; - mmr_t overflow_fifo02_vc0_credit : 1; - mmr_t overflow_fifo13_vc3_push : 1; - mmr_t overflow_fifo13_vc1_push : 1; - mmr_t overflow_fifo02_vc2_push : 1; - mmr_t overflow_fifo02_vc0_push : 1; - mmr_t overflow_fifo13_vc3_pop : 1; - mmr_t overflow_fifo13_vc1_pop : 1; - mmr_t overflow_fifo02_vc2_pop : 1; - mmr_t overflow_fifo02_vc0_pop : 1; - mmr_t overflow_fifo13_debit2 : 1; - mmr_t overflow_fifo13_debit0 : 1; - mmr_t overflow_fifo02_debit2 : 1; - mmr_t overflow_fifo02_debit0 : 1; - } sh_ni1_first_error_1_s; -} sh_ni1_first_error_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_FIRST_ERROR_2" */ /* ni1 First Error Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_first_error_2_u { mmr_t sh_ni1_first_error_2_regval; struct { @@ -15661,117 +8465,36 @@ mmr_t reserved_1 : 1; } sh_ni1_first_error_2_s; } sh_ni1_first_error_2_u_t; -#else -typedef union sh_ni1_first_error_2_u { - mmr_t sh_ni1_first_error_2_regval; - struct { - mmr_t reserved_1 : 1; - mmr_t retry_timeout_error : 1; - mmr_t lut_read_error : 1; - mmr_t chiplet_nomatch : 1; - mmr_t llp_deadlock_vc3 : 1; - mmr_t llp_deadlock_vc2 : 1; - mmr_t llp_deadlock_vc1 : 1; - mmr_t llp_deadlock_vc0 : 1; - mmr_t underflow_ni_fifo_vc3_credit : 1; - mmr_t underflow_ni_fifo_vc2_credit : 1; - mmr_t underflow_ni_fifo_vc1_credit : 1; - mmr_t underflow_ni_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_credit : 1; - mmr_t underflow_md_fifo_vc0_credit : 1; - mmr_t underflow_iilb_fifo_vc2_credit : 1; - mmr_t underflow_iilb_fifo_vc0_credit : 1; - mmr_t underflow_pi_fifo_vc2_credit : 1; - mmr_t underflow_pi_fifo_vc0_credit : 1; - mmr_t underflow_md_fifo_vc2_push : 1; - mmr_t underflow_md_fifo_vc0_push : 1; - mmr_t underflow_iilb_fifo_vc2_push : 1; - mmr_t underflow_iilb_fifo_vc0_push : 1; - mmr_t underflow_pi_fifo_vc2_push : 1; - mmr_t underflow_pi_fifo_vc0_push : 1; - mmr_t underflow_ni_fifo_vc2_pop : 1; - mmr_t underflow_ni_fifo_vc0_pop : 1; - mmr_t underflow_md_fifo_vc2_pop : 1; - mmr_t underflow_md_fifo_vc0_pop : 1; - mmr_t underflow_iilb_fifo_vc2_pop : 1; - mmr_t underflow_iilb_fifo_vc0_pop : 1; - mmr_t underflow_pi_fifo_vc2_pop : 1; - mmr_t underflow_pi_fifo_vc0_pop : 1; - mmr_t reserved_0 : 10; - mmr_t underflow2_vc2_credit : 1; - mmr_t underflow1_vc2_credit : 1; - mmr_t underflow0_vc2_credit : 1; - mmr_t underflow2_vc0_credit : 1; - mmr_t underflow1_vc0_credit : 1; - mmr_t underflow0_vc0_credit : 1; - mmr_t underflow_fifo13_vc2_credit : 1; - mmr_t underflow_fifo13_vc0_credit : 1; - mmr_t underflow_fifo02_vc2_credit : 1; - mmr_t underflow_fifo02_vc0_credit : 1; - mmr_t underflow_fifo13_vc3_push : 1; - mmr_t underflow_fifo13_vc1_push : 1; - mmr_t underflow_fifo02_vc2_push : 1; - mmr_t underflow_fifo02_vc0_push : 1; - mmr_t underflow_fifo13_vc3_pop : 1; - mmr_t underflow_fifo13_vc1_pop : 1; - mmr_t underflow_fifo02_vc2_pop : 1; - mmr_t underflow_fifo02_vc0_pop : 1; - mmr_t illegal_vciilb : 1; - mmr_t illegal_vcmd : 1; - mmr_t illegal_vcpi : 1; - mmr_t illegal_vcni : 1; - } sh_ni1_first_error_2_s; -} sh_ni1_first_error_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_ERROR_DETAIL_1" */ /* ni1 Chiplet no match header bits 63:0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_error_detail_1_u { mmr_t sh_ni1_error_detail_1_regval; struct { mmr_t header : 64; } sh_ni1_error_detail_1_s; } sh_ni1_error_detail_1_u_t; -#else -typedef union sh_ni1_error_detail_1_u { - mmr_t sh_ni1_error_detail_1_regval; - struct { - mmr_t header : 64; - } sh_ni1_error_detail_1_s; -} sh_ni1_error_detail_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_ERROR_DETAIL_2" */ /* ni1 Chiplet no match header bits 127:64 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_ni1_error_detail_2_u { - mmr_t sh_ni1_error_detail_2_regval; - struct { - mmr_t header : 64; - } sh_ni1_error_detail_2_s; -} sh_ni1_error_detail_2_u_t; -#else typedef union sh_ni1_error_detail_2_u { mmr_t sh_ni1_error_detail_2_regval; struct { mmr_t header : 64; } sh_ni1_error_detail_2_s; } sh_ni1_error_detail_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_CORRECTED_DETAIL_1" */ /* Corrected error details */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_corrected_detail_1_u { mmr_t sh_xn_corrected_detail_1_regval; struct { @@ -15793,78 +8516,36 @@ mmr_t reserved_3 : 4; } sh_xn_corrected_detail_1_s; } sh_xn_corrected_detail_1_u_t; -#else -typedef union sh_xn_corrected_detail_1_u { - mmr_t sh_xn_corrected_detail_1_regval; - struct { - mmr_t reserved_3 : 4; - mmr_t ecc3_vc : 2; - mmr_t ecc3_wc : 2; - mmr_t ecc3_syndrome : 8; - mmr_t reserved_2 : 4; - mmr_t ecc2_vc : 2; - mmr_t ecc2_wc : 2; - mmr_t ecc2_syndrome : 8; - mmr_t reserved_1 : 4; - mmr_t ecc1_vc : 2; - mmr_t ecc1_wc : 2; - mmr_t ecc1_syndrome : 8; - mmr_t reserved_0 : 4; - mmr_t ecc0_vc : 2; - mmr_t ecc0_wc : 2; - mmr_t ecc0_syndrome : 8; - } sh_xn_corrected_detail_1_s; -} sh_xn_corrected_detail_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_CORRECTED_DETAIL_2" */ /* Corrected error data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_corrected_detail_2_u { - mmr_t sh_xn_corrected_detail_2_regval; - struct { - mmr_t data : 64; - } sh_xn_corrected_detail_2_s; -} sh_xn_corrected_detail_2_u_t; -#else typedef union sh_xn_corrected_detail_2_u { mmr_t sh_xn_corrected_detail_2_regval; struct { mmr_t data : 64; } sh_xn_corrected_detail_2_s; } sh_xn_corrected_detail_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_CORRECTED_DETAIL_3" */ /* Corrected error header0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_corrected_detail_3_u { mmr_t sh_xn_corrected_detail_3_regval; struct { mmr_t header0 : 64; } sh_xn_corrected_detail_3_s; } sh_xn_corrected_detail_3_u_t; -#else -typedef union sh_xn_corrected_detail_3_u { - mmr_t sh_xn_corrected_detail_3_regval; - struct { - mmr_t header0 : 64; - } sh_xn_corrected_detail_3_s; -} sh_xn_corrected_detail_3_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_CORRECTED_DETAIL_4" */ /* Corrected error header1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_corrected_detail_4_u { mmr_t sh_xn_corrected_detail_4_regval; struct { @@ -15873,23 +8554,12 @@ mmr_t err_group : 2; } sh_xn_corrected_detail_4_s; } sh_xn_corrected_detail_4_u_t; -#else -typedef union sh_xn_corrected_detail_4_u { - mmr_t sh_xn_corrected_detail_4_regval; - struct { - mmr_t err_group : 2; - mmr_t reserved_0 : 20; - mmr_t header1 : 42; - } sh_xn_corrected_detail_4_s; -} sh_xn_corrected_detail_4_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_UNCORRECTED_DETAIL_1" */ /* Uncorrected error details */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_uncorrected_detail_1_u { mmr_t sh_xn_uncorrected_detail_1_regval; struct { @@ -15911,78 +8581,36 @@ mmr_t reserved_3 : 4; } sh_xn_uncorrected_detail_1_s; } sh_xn_uncorrected_detail_1_u_t; -#else -typedef union sh_xn_uncorrected_detail_1_u { - mmr_t sh_xn_uncorrected_detail_1_regval; - struct { - mmr_t reserved_3 : 4; - mmr_t ecc3_vc : 2; - mmr_t ecc3_wc : 2; - mmr_t ecc3_syndrome : 8; - mmr_t reserved_2 : 4; - mmr_t ecc2_vc : 2; - mmr_t ecc2_wc : 2; - mmr_t ecc2_syndrome : 8; - mmr_t reserved_1 : 4; - mmr_t ecc1_vc : 2; - mmr_t ecc1_wc : 2; - mmr_t ecc1_syndrome : 8; - mmr_t reserved_0 : 4; - mmr_t ecc0_vc : 2; - mmr_t ecc0_wc : 2; - mmr_t ecc0_syndrome : 8; - } sh_xn_uncorrected_detail_1_s; -} sh_xn_uncorrected_detail_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_UNCORRECTED_DETAIL_2" */ /* Uncorrected error data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xn_uncorrected_detail_2_u { - mmr_t sh_xn_uncorrected_detail_2_regval; - struct { - mmr_t data : 64; - } sh_xn_uncorrected_detail_2_s; -} sh_xn_uncorrected_detail_2_u_t; -#else typedef union sh_xn_uncorrected_detail_2_u { mmr_t sh_xn_uncorrected_detail_2_regval; struct { mmr_t data : 64; } sh_xn_uncorrected_detail_2_s; } sh_xn_uncorrected_detail_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_UNCORRECTED_DETAIL_3" */ /* Uncorrected error header0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_uncorrected_detail_3_u { mmr_t sh_xn_uncorrected_detail_3_regval; struct { mmr_t header0 : 64; } sh_xn_uncorrected_detail_3_s; } sh_xn_uncorrected_detail_3_u_t; -#else -typedef union sh_xn_uncorrected_detail_3_u { - mmr_t sh_xn_uncorrected_detail_3_regval; - struct { - mmr_t header0 : 64; - } sh_xn_uncorrected_detail_3_s; -} sh_xn_uncorrected_detail_3_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_UNCORRECTED_DETAIL_4" */ /* Uncorrected error header1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_uncorrected_detail_4_u { mmr_t sh_xn_uncorrected_detail_4_regval; struct { @@ -15991,23 +8619,12 @@ mmr_t err_group : 2; } sh_xn_uncorrected_detail_4_s; } sh_xn_uncorrected_detail_4_u_t; -#else -typedef union sh_xn_uncorrected_detail_4_u { - mmr_t sh_xn_uncorrected_detail_4_regval; - struct { - mmr_t err_group : 2; - mmr_t reserved_0 : 20; - mmr_t header1 : 42; - } sh_xn_uncorrected_detail_4_s; -} sh_xn_uncorrected_detail_4_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_ERROR_DETAIL_1" */ /* Look Up Table Address (md) */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_error_detail_1_u { mmr_t sh_xnmd_error_detail_1_regval; struct { @@ -16015,22 +8632,12 @@ mmr_t reserved_0 : 53; } sh_xnmd_error_detail_1_s; } sh_xnmd_error_detail_1_u_t; -#else -typedef union sh_xnmd_error_detail_1_u { - mmr_t sh_xnmd_error_detail_1_regval; - struct { - mmr_t reserved_0 : 53; - mmr_t lut_addr : 11; - } sh_xnmd_error_detail_1_s; -} sh_xnmd_error_detail_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_ERROR_DETAIL_1" */ /* Look Up Table Address (pi) */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_error_detail_1_u { mmr_t sh_xnpi_error_detail_1_regval; struct { @@ -16038,64 +8645,36 @@ mmr_t reserved_0 : 53; } sh_xnpi_error_detail_1_s; } sh_xnpi_error_detail_1_u_t; -#else -typedef union sh_xnpi_error_detail_1_u { - mmr_t sh_xnpi_error_detail_1_regval; - struct { - mmr_t reserved_0 : 53; - mmr_t lut_addr : 11; - } sh_xnpi_error_detail_1_s; -} sh_xnpi_error_detail_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_ERROR_DETAIL_1" */ /* Chiplet NoMatch header [63:0] */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xniilb_error_detail_1_u { - mmr_t sh_xniilb_error_detail_1_regval; - struct { - mmr_t header : 64; - } sh_xniilb_error_detail_1_s; -} sh_xniilb_error_detail_1_u_t; -#else typedef union sh_xniilb_error_detail_1_u { mmr_t sh_xniilb_error_detail_1_regval; struct { mmr_t header : 64; } sh_xniilb_error_detail_1_s; } sh_xniilb_error_detail_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_ERROR_DETAIL_2" */ /* Chiplet NoMatch header [127:64] */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_xniilb_error_detail_2_u { - mmr_t sh_xniilb_error_detail_2_regval; - struct { - mmr_t header : 64; - } sh_xniilb_error_detail_2_s; -} sh_xniilb_error_detail_2_u_t; -#else typedef union sh_xniilb_error_detail_2_u { mmr_t sh_xniilb_error_detail_2_regval; struct { mmr_t header : 64; } sh_xniilb_error_detail_2_s; } sh_xniilb_error_detail_2_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_ERROR_DETAIL_3" */ /* Look Up Table Address (iilb) */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_error_detail_3_u { mmr_t sh_xniilb_error_detail_3_regval; struct { @@ -16103,22 +8682,12 @@ mmr_t reserved_0 : 53; } sh_xniilb_error_detail_3_s; } sh_xniilb_error_detail_3_u_t; -#else -typedef union sh_xniilb_error_detail_3_u { - mmr_t sh_xniilb_error_detail_3_regval; - struct { - mmr_t reserved_0 : 53; - mmr_t lut_addr : 11; - } sh_xniilb_error_detail_3_s; -} sh_xniilb_error_detail_3_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI0_ERROR_DETAIL_3" */ /* Look Up Table Address (ni0) */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni0_error_detail_3_u { mmr_t sh_ni0_error_detail_3_regval; struct { @@ -16126,22 +8695,12 @@ mmr_t reserved_0 : 53; } sh_ni0_error_detail_3_s; } sh_ni0_error_detail_3_u_t; -#else -typedef union sh_ni0_error_detail_3_u { - mmr_t sh_ni0_error_detail_3_regval; - struct { - mmr_t reserved_0 : 53; - mmr_t lut_addr : 11; - } sh_ni0_error_detail_3_s; -} sh_ni0_error_detail_3_u_t; -#endif /* ==================================================================== */ /* Register "SH_NI1_ERROR_DETAIL_3" */ /* Look Up Table Address (ni1) */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ni1_error_detail_3_u { mmr_t sh_ni1_error_detail_3_regval; struct { @@ -16149,21 +8708,11 @@ mmr_t reserved_0 : 53; } sh_ni1_error_detail_3_s; } sh_ni1_error_detail_3_u_t; -#else -typedef union sh_ni1_error_detail_3_u { - mmr_t sh_ni1_error_detail_3_regval; - struct { - mmr_t reserved_0 : 53; - mmr_t lut_addr : 11; - } sh_ni1_error_detail_3_s; -} sh_ni1_error_detail_3_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_ERROR_SUMMARY" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_error_summary_u { mmr_t sh_xn_error_summary_regval; struct { @@ -16208,58 +8757,11 @@ mmr_t reserved_0 : 26; } sh_xn_error_summary_s; } sh_xn_error_summary_u_t; -#else -typedef union sh_xn_error_summary_u { - mmr_t sh_xn_error_summary_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t iilb_chiplet_or_lut : 1; - mmr_t iilb_fifo_underflow : 1; - mmr_t iilb_credit_underflow : 1; - mmr_t iilb_fifo_overflow : 1; - mmr_t iilb_credit_overflow : 1; - mmr_t iilb_debit_overflow : 1; - mmr_t xnpi_lut_error : 1; - mmr_t xnpi_uce_error : 1; - mmr_t xnpi_sbe_error : 1; - mmr_t xnpi_credit_underflow : 1; - mmr_t xnpi_data_buff_overflow : 1; - mmr_t xnpi_debit_overflow : 1; - mmr_t xnpi_credit_overflow : 1; - mmr_t xnmd_lut_error : 1; - mmr_t xnmd_uce_error : 1; - mmr_t xnmd_sbe_error : 1; - mmr_t xnmd_credit_underflow : 1; - mmr_t xnmd_data_buff_overflow : 1; - mmr_t xnmd_debit_overflow : 1; - mmr_t xnmd_credit_overflow : 1; - mmr_t ni1_pipe_error : 1; - mmr_t ni1_llp_error : 1; - mmr_t ni1_credit_underflow : 1; - mmr_t ni1_push_underflow : 1; - mmr_t ni1_pop_underflow : 1; - mmr_t ni1_debit_overflow : 1; - mmr_t ni1_credit_overflow : 1; - mmr_t ni1_push_overflow : 1; - mmr_t ni1_pop_overflow : 1; - mmr_t ni0_pipe_error : 1; - mmr_t ni0_llp_error : 1; - mmr_t ni0_credit_underflow : 1; - mmr_t ni0_push_underflow : 1; - mmr_t ni0_pop_underflow : 1; - mmr_t ni0_debit_overflow : 1; - mmr_t ni0_credit_overflow : 1; - mmr_t ni0_push_overflow : 1; - mmr_t ni0_pop_overflow : 1; - } sh_xn_error_summary_s; -} sh_xn_error_summary_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_ERROR_OVERFLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_error_overflow_u { mmr_t sh_xn_error_overflow_regval; struct { @@ -16304,58 +8806,11 @@ mmr_t reserved_0 : 26; } sh_xn_error_overflow_s; } sh_xn_error_overflow_u_t; -#else -typedef union sh_xn_error_overflow_u { - mmr_t sh_xn_error_overflow_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t iilb_chiplet_or_lut : 1; - mmr_t iilb_fifo_underflow : 1; - mmr_t iilb_credit_underflow : 1; - mmr_t iilb_fifo_overflow : 1; - mmr_t iilb_credit_overflow : 1; - mmr_t iilb_debit_overflow : 1; - mmr_t xnpi_lut_error : 1; - mmr_t xnpi_uce_error : 1; - mmr_t xnpi_sbe_error : 1; - mmr_t xnpi_credit_underflow : 1; - mmr_t xnpi_data_buff_overflow : 1; - mmr_t xnpi_debit_overflow : 1; - mmr_t xnpi_credit_overflow : 1; - mmr_t xnmd_lut_error : 1; - mmr_t xnmd_uce_error : 1; - mmr_t xnmd_sbe_error : 1; - mmr_t xnmd_credit_underflow : 1; - mmr_t xnmd_data_buff_overflow : 1; - mmr_t xnmd_debit_overflow : 1; - mmr_t xnmd_credit_overflow : 1; - mmr_t ni1_pipe_error : 1; - mmr_t ni1_llp_error : 1; - mmr_t ni1_credit_underflow : 1; - mmr_t ni1_push_underflow : 1; - mmr_t ni1_pop_underflow : 1; - mmr_t ni1_debit_overflow : 1; - mmr_t ni1_credit_overflow : 1; - mmr_t ni1_push_overflow : 1; - mmr_t ni1_pop_overflow : 1; - mmr_t ni0_pipe_error : 1; - mmr_t ni0_llp_error : 1; - mmr_t ni0_credit_underflow : 1; - mmr_t ni0_push_underflow : 1; - mmr_t ni0_pop_underflow : 1; - mmr_t ni0_debit_overflow : 1; - mmr_t ni0_credit_overflow : 1; - mmr_t ni0_push_overflow : 1; - mmr_t ni0_pop_overflow : 1; - } sh_xn_error_overflow_s; -} sh_xn_error_overflow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_ERROR_MASK" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_error_mask_u { mmr_t sh_xn_error_mask_regval; struct { @@ -16400,58 +8855,11 @@ mmr_t reserved_0 : 26; } sh_xn_error_mask_s; } sh_xn_error_mask_u_t; -#else -typedef union sh_xn_error_mask_u { - mmr_t sh_xn_error_mask_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t iilb_chiplet_or_lut : 1; - mmr_t iilb_fifo_underflow : 1; - mmr_t iilb_credit_underflow : 1; - mmr_t iilb_fifo_overflow : 1; - mmr_t iilb_credit_overflow : 1; - mmr_t iilb_debit_overflow : 1; - mmr_t xnpi_lut_error : 1; - mmr_t xnpi_uce_error : 1; - mmr_t xnpi_sbe_error : 1; - mmr_t xnpi_credit_underflow : 1; - mmr_t xnpi_data_buff_overflow : 1; - mmr_t xnpi_debit_overflow : 1; - mmr_t xnpi_credit_overflow : 1; - mmr_t xnmd_lut_error : 1; - mmr_t xnmd_uce_error : 1; - mmr_t xnmd_sbe_error : 1; - mmr_t xnmd_credit_underflow : 1; - mmr_t xnmd_data_buff_overflow : 1; - mmr_t xnmd_debit_overflow : 1; - mmr_t xnmd_credit_overflow : 1; - mmr_t ni1_pipe_error : 1; - mmr_t ni1_llp_error : 1; - mmr_t ni1_credit_underflow : 1; - mmr_t ni1_push_underflow : 1; - mmr_t ni1_pop_underflow : 1; - mmr_t ni1_debit_overflow : 1; - mmr_t ni1_credit_overflow : 1; - mmr_t ni1_push_overflow : 1; - mmr_t ni1_pop_overflow : 1; - mmr_t ni0_pipe_error : 1; - mmr_t ni0_llp_error : 1; - mmr_t ni0_credit_underflow : 1; - mmr_t ni0_push_underflow : 1; - mmr_t ni0_pop_underflow : 1; - mmr_t ni0_debit_overflow : 1; - mmr_t ni0_credit_overflow : 1; - mmr_t ni0_push_overflow : 1; - mmr_t ni0_pop_overflow : 1; - } sh_xn_error_mask_s; -} sh_xn_error_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_FIRST_ERROR" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_first_error_u { mmr_t sh_xn_first_error_regval; struct { @@ -16496,58 +8904,11 @@ mmr_t reserved_0 : 26; } sh_xn_first_error_s; } sh_xn_first_error_u_t; -#else -typedef union sh_xn_first_error_u { - mmr_t sh_xn_first_error_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t iilb_chiplet_or_lut : 1; - mmr_t iilb_fifo_underflow : 1; - mmr_t iilb_credit_underflow : 1; - mmr_t iilb_fifo_overflow : 1; - mmr_t iilb_credit_overflow : 1; - mmr_t iilb_debit_overflow : 1; - mmr_t xnpi_lut_error : 1; - mmr_t xnpi_uce_error : 1; - mmr_t xnpi_sbe_error : 1; - mmr_t xnpi_credit_underflow : 1; - mmr_t xnpi_data_buff_overflow : 1; - mmr_t xnpi_debit_overflow : 1; - mmr_t xnpi_credit_overflow : 1; - mmr_t xnmd_lut_error : 1; - mmr_t xnmd_uce_error : 1; - mmr_t xnmd_sbe_error : 1; - mmr_t xnmd_credit_underflow : 1; - mmr_t xnmd_data_buff_overflow : 1; - mmr_t xnmd_debit_overflow : 1; - mmr_t xnmd_credit_overflow : 1; - mmr_t ni1_pipe_error : 1; - mmr_t ni1_llp_error : 1; - mmr_t ni1_credit_underflow : 1; - mmr_t ni1_push_underflow : 1; - mmr_t ni1_pop_underflow : 1; - mmr_t ni1_debit_overflow : 1; - mmr_t ni1_credit_overflow : 1; - mmr_t ni1_push_overflow : 1; - mmr_t ni1_pop_overflow : 1; - mmr_t ni0_pipe_error : 1; - mmr_t ni0_llp_error : 1; - mmr_t ni0_credit_underflow : 1; - mmr_t ni0_push_underflow : 1; - mmr_t ni0_pop_underflow : 1; - mmr_t ni0_debit_overflow : 1; - mmr_t ni0_credit_overflow : 1; - mmr_t ni0_push_overflow : 1; - mmr_t ni0_pop_overflow : 1; - } sh_xn_first_error_s; -} sh_xn_first_error_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_ERROR_SUMMARY" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_error_summary_u { mmr_t sh_xniilb_error_summary_regval; struct { @@ -16617,83 +8978,11 @@ mmr_t lut_read_error : 1; } sh_xniilb_error_summary_s; } sh_xniilb_error_summary_u_t; -#else -typedef union sh_xniilb_error_summary_u { - mmr_t sh_xniilb_error_summary_regval; - struct { - mmr_t lut_read_error : 1; - mmr_t chiplet_nomatch : 1; - mmr_t underflow_ni1_vc2_credit_out : 1; - mmr_t underflow_ni1_vc0_credit_out : 1; - mmr_t underflow_ni0_vc2_credit_out : 1; - mmr_t underflow_ni0_vc0_credit_out : 1; - mmr_t underflow_iilb_vc2_credit_out : 1; - mmr_t underflow_iilb_vc0_credit_out : 1; - mmr_t underflow_md_vc2_credit_out : 1; - mmr_t underflow_md_vc0_credit_out : 1; - mmr_t underflow_pi_vc2_credit_out : 1; - mmr_t underflow_pi_vc0_credit_out : 1; - mmr_t overflow_ni1_vc2_credit_out : 1; - mmr_t overflow_ni1_vc0_credit_out : 1; - mmr_t overflow_ni0_vc2_credit_out : 1; - mmr_t overflow_ni0_vc0_credit_out : 1; - mmr_t overflow_iilb_vc2_credit_out : 1; - mmr_t overflow_iilb_vc0_credit_out : 1; - mmr_t overflow_md_vc2_credit_out : 1; - mmr_t overflow_md_vc0_credit_out : 1; - mmr_t overflow_pi_vc2_credit_out : 1; - mmr_t overflow_pi_vc0_credit_out : 1; - mmr_t overflow_ni1_debit2 : 1; - mmr_t overflow_ni1_debit0 : 1; - mmr_t overflow_ni0_debit2 : 1; - mmr_t overflow_ni0_debit0 : 1; - mmr_t overflow_md_debit2 : 1; - mmr_t overflow_md_debit0 : 1; - mmr_t overflow_iilb_debit2 : 1; - mmr_t overflow_iilb_debit0 : 1; - mmr_t overflow_pi_debit2 : 1; - mmr_t overflow_pi_debit0 : 1; - mmr_t underflow_ni1_vc2_credit_in : 1; - mmr_t underflow_ni0_vc2_credit_in : 1; - mmr_t underflow_md_vc2_credit_in : 1; - mmr_t underflow_iilb_vc2_credit_in : 1; - mmr_t underflow_pi_vc2_credit_in : 1; - mmr_t underflow_ni1_vc0_credit_in : 1; - mmr_t underflow_ni0_vc0_credit_in : 1; - mmr_t underflow_md_vc0_credit_in : 1; - mmr_t underflow_iilb_vc0_credit_in : 1; - mmr_t underflow_pi_vc0_credit_in : 1; - mmr_t overflow_ni1_vc2_credit_in : 1; - mmr_t overflow_ni0_vc2_credit_in : 1; - mmr_t overflow_md_vc2_credit_in : 1; - mmr_t overflow_iilb_vc2_credit_in : 1; - mmr_t overflow_pi_vc2_credit_in : 1; - mmr_t overflow_ni1_vc0_credit_in : 1; - mmr_t overflow_ni0_vc0_credit_in : 1; - mmr_t overflow_md_vc0_credit_in : 1; - mmr_t overflow_iilb_vc0_credit_in : 1; - mmr_t overflow_pi_vc0_credit_in : 1; - mmr_t underflow_lb_vc2 : 1; - mmr_t underflow_lb_vc0 : 1; - mmr_t overflow_lb_vc2 : 1; - mmr_t overflow_lb_vc0 : 1; - mmr_t underflow_ii_vc2 : 1; - mmr_t underflow_ii_vc0 : 1; - mmr_t overflow_ii_vc2 : 1; - mmr_t overflow_ii_vc0 : 1; - mmr_t overflow_lb_debit2 : 1; - mmr_t overflow_lb_debit0 : 1; - mmr_t overflow_ii_debit2 : 1; - mmr_t overflow_ii_debit0 : 1; - } sh_xniilb_error_summary_s; -} sh_xniilb_error_summary_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_ERROR_OVERFLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_error_overflow_u { mmr_t sh_xniilb_error_overflow_regval; struct { @@ -16763,83 +9052,11 @@ mmr_t lut_read_error : 1; } sh_xniilb_error_overflow_s; } sh_xniilb_error_overflow_u_t; -#else -typedef union sh_xniilb_error_overflow_u { - mmr_t sh_xniilb_error_overflow_regval; - struct { - mmr_t lut_read_error : 1; - mmr_t chiplet_nomatch : 1; - mmr_t underflow_ni1_vc2_credit_out : 1; - mmr_t underflow_ni1_vc0_credit_out : 1; - mmr_t underflow_ni0_vc2_credit_out : 1; - mmr_t underflow_ni0_vc0_credit_out : 1; - mmr_t underflow_iilb_vc2_credit_out : 1; - mmr_t underflow_iilb_vc0_credit_out : 1; - mmr_t underflow_md_vc2_credit_out : 1; - mmr_t underflow_md_vc0_credit_out : 1; - mmr_t underflow_pi_vc2_credit_out : 1; - mmr_t underflow_pi_vc0_credit_out : 1; - mmr_t overflow_ni1_vc2_credit_out : 1; - mmr_t overflow_ni1_vc0_credit_out : 1; - mmr_t overflow_ni0_vc2_credit_out : 1; - mmr_t overflow_ni0_vc0_credit_out : 1; - mmr_t overflow_iilb_vc2_credit_out : 1; - mmr_t overflow_iilb_vc0_credit_out : 1; - mmr_t overflow_md_vc2_credit_out : 1; - mmr_t overflow_md_vc0_credit_out : 1; - mmr_t overflow_pi_vc2_credit_out : 1; - mmr_t overflow_pi_vc0_credit_out : 1; - mmr_t overflow_ni1_debit2 : 1; - mmr_t overflow_ni1_debit0 : 1; - mmr_t overflow_ni0_debit2 : 1; - mmr_t overflow_ni0_debit0 : 1; - mmr_t overflow_md_debit2 : 1; - mmr_t overflow_md_debit0 : 1; - mmr_t overflow_iilb_debit2 : 1; - mmr_t overflow_iilb_debit0 : 1; - mmr_t overflow_pi_debit2 : 1; - mmr_t overflow_pi_debit0 : 1; - mmr_t underflow_ni1_vc2_credit_in : 1; - mmr_t underflow_ni0_vc2_credit_in : 1; - mmr_t underflow_md_vc2_credit_in : 1; - mmr_t underflow_iilb_vc2_credit_in : 1; - mmr_t underflow_pi_vc2_credit_in : 1; - mmr_t underflow_ni1_vc0_credit_in : 1; - mmr_t underflow_ni0_vc0_credit_in : 1; - mmr_t underflow_md_vc0_credit_in : 1; - mmr_t underflow_iilb_vc0_credit_in : 1; - mmr_t underflow_pi_vc0_credit_in : 1; - mmr_t overflow_ni1_vc2_credit_in : 1; - mmr_t overflow_ni0_vc2_credit_in : 1; - mmr_t overflow_md_vc2_credit_in : 1; - mmr_t overflow_iilb_vc2_credit_in : 1; - mmr_t overflow_pi_vc2_credit_in : 1; - mmr_t overflow_ni1_vc0_credit_in : 1; - mmr_t overflow_ni0_vc0_credit_in : 1; - mmr_t overflow_md_vc0_credit_in : 1; - mmr_t overflow_iilb_vc0_credit_in : 1; - mmr_t overflow_pi_vc0_credit_in : 1; - mmr_t underflow_lb_vc2 : 1; - mmr_t underflow_lb_vc0 : 1; - mmr_t overflow_lb_vc2 : 1; - mmr_t overflow_lb_vc0 : 1; - mmr_t underflow_ii_vc2 : 1; - mmr_t underflow_ii_vc0 : 1; - mmr_t overflow_ii_vc2 : 1; - mmr_t overflow_ii_vc0 : 1; - mmr_t overflow_lb_debit2 : 1; - mmr_t overflow_lb_debit0 : 1; - mmr_t overflow_ii_debit2 : 1; - mmr_t overflow_ii_debit0 : 1; - } sh_xniilb_error_overflow_s; -} sh_xniilb_error_overflow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_ERROR_MASK" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_error_mask_u { mmr_t sh_xniilb_error_mask_regval; struct { @@ -16909,83 +9126,11 @@ mmr_t lut_read_error : 1; } sh_xniilb_error_mask_s; } sh_xniilb_error_mask_u_t; -#else -typedef union sh_xniilb_error_mask_u { - mmr_t sh_xniilb_error_mask_regval; - struct { - mmr_t lut_read_error : 1; - mmr_t chiplet_nomatch : 1; - mmr_t underflow_ni1_vc2_credit_out : 1; - mmr_t underflow_ni1_vc0_credit_out : 1; - mmr_t underflow_ni0_vc2_credit_out : 1; - mmr_t underflow_ni0_vc0_credit_out : 1; - mmr_t underflow_iilb_vc2_credit_out : 1; - mmr_t underflow_iilb_vc0_credit_out : 1; - mmr_t underflow_md_vc2_credit_out : 1; - mmr_t underflow_md_vc0_credit_out : 1; - mmr_t underflow_pi_vc2_credit_out : 1; - mmr_t underflow_pi_vc0_credit_out : 1; - mmr_t overflow_ni1_vc2_credit_out : 1; - mmr_t overflow_ni1_vc0_credit_out : 1; - mmr_t overflow_ni0_vc2_credit_out : 1; - mmr_t overflow_ni0_vc0_credit_out : 1; - mmr_t overflow_iilb_vc2_credit_out : 1; - mmr_t overflow_iilb_vc0_credit_out : 1; - mmr_t overflow_md_vc2_credit_out : 1; - mmr_t overflow_md_vc0_credit_out : 1; - mmr_t overflow_pi_vc2_credit_out : 1; - mmr_t overflow_pi_vc0_credit_out : 1; - mmr_t overflow_ni1_debit2 : 1; - mmr_t overflow_ni1_debit0 : 1; - mmr_t overflow_ni0_debit2 : 1; - mmr_t overflow_ni0_debit0 : 1; - mmr_t overflow_md_debit2 : 1; - mmr_t overflow_md_debit0 : 1; - mmr_t overflow_iilb_debit2 : 1; - mmr_t overflow_iilb_debit0 : 1; - mmr_t overflow_pi_debit2 : 1; - mmr_t overflow_pi_debit0 : 1; - mmr_t underflow_ni1_vc2_credit_in : 1; - mmr_t underflow_ni0_vc2_credit_in : 1; - mmr_t underflow_md_vc2_credit_in : 1; - mmr_t underflow_iilb_vc2_credit_in : 1; - mmr_t underflow_pi_vc2_credit_in : 1; - mmr_t underflow_ni1_vc0_credit_in : 1; - mmr_t underflow_ni0_vc0_credit_in : 1; - mmr_t underflow_md_vc0_credit_in : 1; - mmr_t underflow_iilb_vc0_credit_in : 1; - mmr_t underflow_pi_vc0_credit_in : 1; - mmr_t overflow_ni1_vc2_credit_in : 1; - mmr_t overflow_ni0_vc2_credit_in : 1; - mmr_t overflow_md_vc2_credit_in : 1; - mmr_t overflow_iilb_vc2_credit_in : 1; - mmr_t overflow_pi_vc2_credit_in : 1; - mmr_t overflow_ni1_vc0_credit_in : 1; - mmr_t overflow_ni0_vc0_credit_in : 1; - mmr_t overflow_md_vc0_credit_in : 1; - mmr_t overflow_iilb_vc0_credit_in : 1; - mmr_t overflow_pi_vc0_credit_in : 1; - mmr_t underflow_lb_vc2 : 1; - mmr_t underflow_lb_vc0 : 1; - mmr_t overflow_lb_vc2 : 1; - mmr_t overflow_lb_vc0 : 1; - mmr_t underflow_ii_vc2 : 1; - mmr_t underflow_ii_vc0 : 1; - mmr_t overflow_ii_vc2 : 1; - mmr_t overflow_ii_vc0 : 1; - mmr_t overflow_lb_debit2 : 1; - mmr_t overflow_lb_debit0 : 1; - mmr_t overflow_ii_debit2 : 1; - mmr_t overflow_ii_debit0 : 1; - } sh_xniilb_error_mask_s; -} sh_xniilb_error_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNIILB_FIRST_ERROR" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xniilb_first_error_u { mmr_t sh_xniilb_first_error_regval; struct { @@ -17055,83 +9200,11 @@ mmr_t lut_read_error : 1; } sh_xniilb_first_error_s; } sh_xniilb_first_error_u_t; -#else -typedef union sh_xniilb_first_error_u { - mmr_t sh_xniilb_first_error_regval; - struct { - mmr_t lut_read_error : 1; - mmr_t chiplet_nomatch : 1; - mmr_t underflow_ni1_vc2_credit_out : 1; - mmr_t underflow_ni1_vc0_credit_out : 1; - mmr_t underflow_ni0_vc2_credit_out : 1; - mmr_t underflow_ni0_vc0_credit_out : 1; - mmr_t underflow_iilb_vc2_credit_out : 1; - mmr_t underflow_iilb_vc0_credit_out : 1; - mmr_t underflow_md_vc2_credit_out : 1; - mmr_t underflow_md_vc0_credit_out : 1; - mmr_t underflow_pi_vc2_credit_out : 1; - mmr_t underflow_pi_vc0_credit_out : 1; - mmr_t overflow_ni1_vc2_credit_out : 1; - mmr_t overflow_ni1_vc0_credit_out : 1; - mmr_t overflow_ni0_vc2_credit_out : 1; - mmr_t overflow_ni0_vc0_credit_out : 1; - mmr_t overflow_iilb_vc2_credit_out : 1; - mmr_t overflow_iilb_vc0_credit_out : 1; - mmr_t overflow_md_vc2_credit_out : 1; - mmr_t overflow_md_vc0_credit_out : 1; - mmr_t overflow_pi_vc2_credit_out : 1; - mmr_t overflow_pi_vc0_credit_out : 1; - mmr_t overflow_ni1_debit2 : 1; - mmr_t overflow_ni1_debit0 : 1; - mmr_t overflow_ni0_debit2 : 1; - mmr_t overflow_ni0_debit0 : 1; - mmr_t overflow_md_debit2 : 1; - mmr_t overflow_md_debit0 : 1; - mmr_t overflow_iilb_debit2 : 1; - mmr_t overflow_iilb_debit0 : 1; - mmr_t overflow_pi_debit2 : 1; - mmr_t overflow_pi_debit0 : 1; - mmr_t underflow_ni1_vc2_credit_in : 1; - mmr_t underflow_ni0_vc2_credit_in : 1; - mmr_t underflow_md_vc2_credit_in : 1; - mmr_t underflow_iilb_vc2_credit_in : 1; - mmr_t underflow_pi_vc2_credit_in : 1; - mmr_t underflow_ni1_vc0_credit_in : 1; - mmr_t underflow_ni0_vc0_credit_in : 1; - mmr_t underflow_md_vc0_credit_in : 1; - mmr_t underflow_iilb_vc0_credit_in : 1; - mmr_t underflow_pi_vc0_credit_in : 1; - mmr_t overflow_ni1_vc2_credit_in : 1; - mmr_t overflow_ni0_vc2_credit_in : 1; - mmr_t overflow_md_vc2_credit_in : 1; - mmr_t overflow_iilb_vc2_credit_in : 1; - mmr_t overflow_pi_vc2_credit_in : 1; - mmr_t overflow_ni1_vc0_credit_in : 1; - mmr_t overflow_ni0_vc0_credit_in : 1; - mmr_t overflow_md_vc0_credit_in : 1; - mmr_t overflow_iilb_vc0_credit_in : 1; - mmr_t overflow_pi_vc0_credit_in : 1; - mmr_t underflow_lb_vc2 : 1; - mmr_t underflow_lb_vc0 : 1; - mmr_t overflow_lb_vc2 : 1; - mmr_t overflow_lb_vc0 : 1; - mmr_t underflow_ii_vc2 : 1; - mmr_t underflow_ii_vc0 : 1; - mmr_t overflow_ii_vc2 : 1; - mmr_t overflow_ii_vc0 : 1; - mmr_t overflow_lb_debit2 : 1; - mmr_t overflow_lb_debit0 : 1; - mmr_t overflow_ii_debit2 : 1; - mmr_t overflow_ii_debit0 : 1; - } sh_xniilb_first_error_s; -} sh_xniilb_first_error_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_ERROR_SUMMARY" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_error_summary_u { mmr_t sh_xnpi_error_summary_regval; struct { @@ -17188,70 +9261,11 @@ mmr_t reserved_0 : 14; } sh_xnpi_error_summary_s; } sh_xnpi_error_summary_u_t; -#else -typedef union sh_xnpi_error_summary_u { - mmr_t sh_xnpi_error_summary_regval; - struct { - mmr_t reserved_0 : 14; - mmr_t overflow_header_cancel_fifo : 1; - mmr_t overflow_iilb_vc2_credit : 1; - mmr_t underflow_iilb_vc2_credit : 1; - mmr_t overflow_iilb_vc0_credit : 1; - mmr_t underflow_iilb_vc0_credit : 1; - mmr_t overflow_ni1_vc2_credit : 1; - mmr_t underflow_ni1_vc2_credit : 1; - mmr_t overflow_ni1_vc0_credit : 1; - mmr_t underflow_ni1_vc0_credit : 1; - mmr_t overflow_ni0_vc2_credit : 1; - mmr_t underflow_ni0_vc2_credit : 1; - mmr_t overflow_ni0_vc0_credit : 1; - mmr_t underflow_ni0_vc0_credit : 1; - mmr_t overflow_iilb_debit2 : 1; - mmr_t overflow_iilb_debit0 : 1; - mmr_t overflow_ni1_debit2 : 1; - mmr_t overflow_ni1_debit0 : 1; - mmr_t overflow_ni0_debit2 : 1; - mmr_t overflow_ni0_debit0 : 1; - mmr_t overflow_sic_cntr2 : 1; - mmr_t underflow_sic_cntr2 : 1; - mmr_t overflow_sic_cntr0 : 1; - mmr_t underflow_sic_cntr0 : 1; - mmr_t uncor_error3 : 1; - mmr_t uncor_error2 : 1; - mmr_t uncor_error1 : 1; - mmr_t uncor_error0 : 1; - mmr_t single_bit_error3 : 1; - mmr_t single_bit_error2 : 1; - mmr_t single_bit_error1 : 1; - mmr_t single_bit_error0 : 1; - mmr_t lut_read_error : 1; - mmr_t overflow_databuff_vc2 : 1; - mmr_t overflow_databuff_vc0 : 1; - mmr_t overflow_vc2_credit : 1; - mmr_t underflow_vc2_credit : 1; - mmr_t overflow_vc0_credit : 1; - mmr_t underflow_vc0_credit : 1; - mmr_t overflow_iilb_vc2 : 1; - mmr_t underflow_iilb_vc2 : 1; - mmr_t overflow_iilb_vc0 : 1; - mmr_t underflow_iilb_vc0 : 1; - mmr_t overflow_ni1_vc2 : 1; - mmr_t underflow_ni1_vc2 : 1; - mmr_t overflow_ni1_vc0 : 1; - mmr_t underflow_ni1_vc0 : 1; - mmr_t overflow_ni0_vc2 : 1; - mmr_t underflow_ni0_vc2 : 1; - mmr_t overflow_ni0_vc0 : 1; - mmr_t underflow_ni0_vc0 : 1; - } sh_xnpi_error_summary_s; -} sh_xnpi_error_summary_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_ERROR_OVERFLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_error_overflow_u { mmr_t sh_xnpi_error_overflow_regval; struct { @@ -17308,70 +9322,11 @@ mmr_t reserved_0 : 14; } sh_xnpi_error_overflow_s; } sh_xnpi_error_overflow_u_t; -#else -typedef union sh_xnpi_error_overflow_u { - mmr_t sh_xnpi_error_overflow_regval; - struct { - mmr_t reserved_0 : 14; - mmr_t overflow_header_cancel_fifo : 1; - mmr_t overflow_iilb_vc2_credit : 1; - mmr_t underflow_iilb_vc2_credit : 1; - mmr_t overflow_iilb_vc0_credit : 1; - mmr_t underflow_iilb_vc0_credit : 1; - mmr_t overflow_ni1_vc2_credit : 1; - mmr_t underflow_ni1_vc2_credit : 1; - mmr_t overflow_ni1_vc0_credit : 1; - mmr_t underflow_ni1_vc0_credit : 1; - mmr_t overflow_ni0_vc2_credit : 1; - mmr_t underflow_ni0_vc2_credit : 1; - mmr_t overflow_ni0_vc0_credit : 1; - mmr_t underflow_ni0_vc0_credit : 1; - mmr_t overflow_iilb_debit2 : 1; - mmr_t overflow_iilb_debit0 : 1; - mmr_t overflow_ni1_debit2 : 1; - mmr_t overflow_ni1_debit0 : 1; - mmr_t overflow_ni0_debit2 : 1; - mmr_t overflow_ni0_debit0 : 1; - mmr_t overflow_sic_cntr2 : 1; - mmr_t underflow_sic_cntr2 : 1; - mmr_t overflow_sic_cntr0 : 1; - mmr_t underflow_sic_cntr0 : 1; - mmr_t uncor_error3 : 1; - mmr_t uncor_error2 : 1; - mmr_t uncor_error1 : 1; - mmr_t uncor_error0 : 1; - mmr_t single_bit_error3 : 1; - mmr_t single_bit_error2 : 1; - mmr_t single_bit_error1 : 1; - mmr_t single_bit_error0 : 1; - mmr_t lut_read_error : 1; - mmr_t overflow_databuff_vc2 : 1; - mmr_t overflow_databuff_vc0 : 1; - mmr_t overflow_vc2_credit : 1; - mmr_t underflow_vc2_credit : 1; - mmr_t overflow_vc0_credit : 1; - mmr_t underflow_vc0_credit : 1; - mmr_t overflow_iilb_vc2 : 1; - mmr_t underflow_iilb_vc2 : 1; - mmr_t overflow_iilb_vc0 : 1; - mmr_t underflow_iilb_vc0 : 1; - mmr_t overflow_ni1_vc2 : 1; - mmr_t underflow_ni1_vc2 : 1; - mmr_t overflow_ni1_vc0 : 1; - mmr_t underflow_ni1_vc0 : 1; - mmr_t overflow_ni0_vc2 : 1; - mmr_t underflow_ni0_vc2 : 1; - mmr_t overflow_ni0_vc0 : 1; - mmr_t underflow_ni0_vc0 : 1; - } sh_xnpi_error_overflow_s; -} sh_xnpi_error_overflow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_ERROR_MASK" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_error_mask_u { mmr_t sh_xnpi_error_mask_regval; struct { @@ -17428,70 +9383,11 @@ mmr_t reserved_0 : 14; } sh_xnpi_error_mask_s; } sh_xnpi_error_mask_u_t; -#else -typedef union sh_xnpi_error_mask_u { - mmr_t sh_xnpi_error_mask_regval; - struct { - mmr_t reserved_0 : 14; - mmr_t overflow_header_cancel_fifo : 1; - mmr_t overflow_iilb_vc2_credit : 1; - mmr_t underflow_iilb_vc2_credit : 1; - mmr_t overflow_iilb_vc0_credit : 1; - mmr_t underflow_iilb_vc0_credit : 1; - mmr_t overflow_ni1_vc2_credit : 1; - mmr_t underflow_ni1_vc2_credit : 1; - mmr_t overflow_ni1_vc0_credit : 1; - mmr_t underflow_ni1_vc0_credit : 1; - mmr_t overflow_ni0_vc2_credit : 1; - mmr_t underflow_ni0_vc2_credit : 1; - mmr_t overflow_ni0_vc0_credit : 1; - mmr_t underflow_ni0_vc0_credit : 1; - mmr_t overflow_iilb_debit2 : 1; - mmr_t overflow_iilb_debit0 : 1; - mmr_t overflow_ni1_debit2 : 1; - mmr_t overflow_ni1_debit0 : 1; - mmr_t overflow_ni0_debit2 : 1; - mmr_t overflow_ni0_debit0 : 1; - mmr_t overflow_sic_cntr2 : 1; - mmr_t underflow_sic_cntr2 : 1; - mmr_t overflow_sic_cntr0 : 1; - mmr_t underflow_sic_cntr0 : 1; - mmr_t uncor_error3 : 1; - mmr_t uncor_error2 : 1; - mmr_t uncor_error1 : 1; - mmr_t uncor_error0 : 1; - mmr_t single_bit_error3 : 1; - mmr_t single_bit_error2 : 1; - mmr_t single_bit_error1 : 1; - mmr_t single_bit_error0 : 1; - mmr_t lut_read_error : 1; - mmr_t overflow_databuff_vc2 : 1; - mmr_t overflow_databuff_vc0 : 1; - mmr_t overflow_vc2_credit : 1; - mmr_t underflow_vc2_credit : 1; - mmr_t overflow_vc0_credit : 1; - mmr_t underflow_vc0_credit : 1; - mmr_t overflow_iilb_vc2 : 1; - mmr_t underflow_iilb_vc2 : 1; - mmr_t overflow_iilb_vc0 : 1; - mmr_t underflow_iilb_vc0 : 1; - mmr_t overflow_ni1_vc2 : 1; - mmr_t underflow_ni1_vc2 : 1; - mmr_t overflow_ni1_vc0 : 1; - mmr_t underflow_ni1_vc0 : 1; - mmr_t overflow_ni0_vc2 : 1; - mmr_t underflow_ni0_vc2 : 1; - mmr_t overflow_ni0_vc0 : 1; - mmr_t underflow_ni0_vc0 : 1; - } sh_xnpi_error_mask_s; -} sh_xnpi_error_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNPI_FIRST_ERROR" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnpi_first_error_u { mmr_t sh_xnpi_first_error_regval; struct { @@ -17548,70 +9444,11 @@ mmr_t reserved_0 : 14; } sh_xnpi_first_error_s; } sh_xnpi_first_error_u_t; -#else -typedef union sh_xnpi_first_error_u { - mmr_t sh_xnpi_first_error_regval; - struct { - mmr_t reserved_0 : 14; - mmr_t overflow_header_cancel_fifo : 1; - mmr_t overflow_iilb_vc2_credit : 1; - mmr_t underflow_iilb_vc2_credit : 1; - mmr_t overflow_iilb_vc0_credit : 1; - mmr_t underflow_iilb_vc0_credit : 1; - mmr_t overflow_ni1_vc2_credit : 1; - mmr_t underflow_ni1_vc2_credit : 1; - mmr_t overflow_ni1_vc0_credit : 1; - mmr_t underflow_ni1_vc0_credit : 1; - mmr_t overflow_ni0_vc2_credit : 1; - mmr_t underflow_ni0_vc2_credit : 1; - mmr_t overflow_ni0_vc0_credit : 1; - mmr_t underflow_ni0_vc0_credit : 1; - mmr_t overflow_iilb_debit2 : 1; - mmr_t overflow_iilb_debit0 : 1; - mmr_t overflow_ni1_debit2 : 1; - mmr_t overflow_ni1_debit0 : 1; - mmr_t overflow_ni0_debit2 : 1; - mmr_t overflow_ni0_debit0 : 1; - mmr_t overflow_sic_cntr2 : 1; - mmr_t underflow_sic_cntr2 : 1; - mmr_t overflow_sic_cntr0 : 1; - mmr_t underflow_sic_cntr0 : 1; - mmr_t uncor_error3 : 1; - mmr_t uncor_error2 : 1; - mmr_t uncor_error1 : 1; - mmr_t uncor_error0 : 1; - mmr_t single_bit_error3 : 1; - mmr_t single_bit_error2 : 1; - mmr_t single_bit_error1 : 1; - mmr_t single_bit_error0 : 1; - mmr_t lut_read_error : 1; - mmr_t overflow_databuff_vc2 : 1; - mmr_t overflow_databuff_vc0 : 1; - mmr_t overflow_vc2_credit : 1; - mmr_t underflow_vc2_credit : 1; - mmr_t overflow_vc0_credit : 1; - mmr_t underflow_vc0_credit : 1; - mmr_t overflow_iilb_vc2 : 1; - mmr_t underflow_iilb_vc2 : 1; - mmr_t overflow_iilb_vc0 : 1; - mmr_t underflow_iilb_vc0 : 1; - mmr_t overflow_ni1_vc2 : 1; - mmr_t underflow_ni1_vc2 : 1; - mmr_t overflow_ni1_vc0 : 1; - mmr_t underflow_ni1_vc0 : 1; - mmr_t overflow_ni0_vc2 : 1; - mmr_t underflow_ni0_vc2 : 1; - mmr_t overflow_ni0_vc0 : 1; - mmr_t underflow_ni0_vc0 : 1; - } sh_xnpi_first_error_s; -} sh_xnpi_first_error_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_ERROR_SUMMARY" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_error_summary_u { mmr_t sh_xnmd_error_summary_regval; struct { @@ -17668,70 +9505,11 @@ mmr_t reserved_0 : 14; } sh_xnmd_error_summary_s; } sh_xnmd_error_summary_u_t; -#else -typedef union sh_xnmd_error_summary_u { - mmr_t sh_xnmd_error_summary_regval; - struct { - mmr_t reserved_0 : 14; - mmr_t overflow_header_cancel_fifo : 1; - mmr_t overflow_iilb_vc2_credit : 1; - mmr_t underflow_iilb_vc2_credit : 1; - mmr_t overflow_iilb_vc0_credit : 1; - mmr_t underflow_iilb_vc0_credit : 1; - mmr_t overflow_ni1_vc2_credit : 1; - mmr_t underflow_ni1_vc2_credit : 1; - mmr_t overflow_ni1_vc0_credit : 1; - mmr_t underflow_ni1_vc0_credit : 1; - mmr_t overflow_ni0_vc2_credit : 1; - mmr_t underflow_ni0_vc2_credit : 1; - mmr_t overflow_ni0_vc0_credit : 1; - mmr_t underflow_ni0_vc0_credit : 1; - mmr_t overflow_iilb_debit2 : 1; - mmr_t overflow_iilb_debit0 : 1; - mmr_t overflow_ni1_debit2 : 1; - mmr_t overflow_ni1_debit0 : 1; - mmr_t overflow_ni0_debit2 : 1; - mmr_t overflow_ni0_debit0 : 1; - mmr_t overflow_sic_cntr2 : 1; - mmr_t underflow_sic_cntr2 : 1; - mmr_t overflow_sic_cntr0 : 1; - mmr_t underflow_sic_cntr0 : 1; - mmr_t uncor_error3 : 1; - mmr_t uncor_error2 : 1; - mmr_t uncor_error1 : 1; - mmr_t uncor_error0 : 1; - mmr_t single_bit_error3 : 1; - mmr_t single_bit_error2 : 1; - mmr_t single_bit_error1 : 1; - mmr_t single_bit_error0 : 1; - mmr_t lut_read_error : 1; - mmr_t overflow_databuff_vc2 : 1; - mmr_t overflow_databuff_vc0 : 1; - mmr_t overflow_vc2_credit : 1; - mmr_t underflow_vc2_credit : 1; - mmr_t overflow_vc0_credit : 1; - mmr_t underflow_vc0_credit : 1; - mmr_t overflow_iilb_vc2 : 1; - mmr_t underflow_iilb_vc2 : 1; - mmr_t overflow_iilb_vc0 : 1; - mmr_t underflow_iilb_vc0 : 1; - mmr_t overflow_ni1_vc2 : 1; - mmr_t underflow_ni1_vc2 : 1; - mmr_t overflow_ni1_vc0 : 1; - mmr_t underflow_ni1_vc0 : 1; - mmr_t overflow_ni0_vc2 : 1; - mmr_t underflow_ni0_vc2 : 1; - mmr_t overflow_ni0_vc0 : 1; - mmr_t underflow_ni0_vc0 : 1; - } sh_xnmd_error_summary_s; -} sh_xnmd_error_summary_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_ERROR_OVERFLOW" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_error_overflow_u { mmr_t sh_xnmd_error_overflow_regval; struct { @@ -17788,70 +9566,11 @@ mmr_t reserved_0 : 14; } sh_xnmd_error_overflow_s; } sh_xnmd_error_overflow_u_t; -#else -typedef union sh_xnmd_error_overflow_u { - mmr_t sh_xnmd_error_overflow_regval; - struct { - mmr_t reserved_0 : 14; - mmr_t overflow_header_cancel_fifo : 1; - mmr_t overflow_iilb_vc2_credit : 1; - mmr_t underflow_iilb_vc2_credit : 1; - mmr_t overflow_iilb_vc0_credit : 1; - mmr_t underflow_iilb_vc0_credit : 1; - mmr_t overflow_ni1_vc2_credit : 1; - mmr_t underflow_ni1_vc2_credit : 1; - mmr_t overflow_ni1_vc0_credit : 1; - mmr_t underflow_ni1_vc0_credit : 1; - mmr_t overflow_ni0_vc2_credit : 1; - mmr_t underflow_ni0_vc2_credit : 1; - mmr_t overflow_ni0_vc0_credit : 1; - mmr_t underflow_ni0_vc0_credit : 1; - mmr_t overflow_iilb_debit2 : 1; - mmr_t overflow_iilb_debit0 : 1; - mmr_t overflow_ni1_debit2 : 1; - mmr_t overflow_ni1_debit0 : 1; - mmr_t overflow_ni0_debit2 : 1; - mmr_t overflow_ni0_debit0 : 1; - mmr_t overflow_sic_cntr2 : 1; - mmr_t underflow_sic_cntr2 : 1; - mmr_t overflow_sic_cntr0 : 1; - mmr_t underflow_sic_cntr0 : 1; - mmr_t uncor_error3 : 1; - mmr_t uncor_error2 : 1; - mmr_t uncor_error1 : 1; - mmr_t uncor_error0 : 1; - mmr_t single_bit_error3 : 1; - mmr_t single_bit_error2 : 1; - mmr_t single_bit_error1 : 1; - mmr_t single_bit_error0 : 1; - mmr_t lut_read_error : 1; - mmr_t overflow_databuff_vc2 : 1; - mmr_t overflow_databuff_vc0 : 1; - mmr_t overflow_vc2_credit : 1; - mmr_t underflow_vc2_credit : 1; - mmr_t overflow_vc0_credit : 1; - mmr_t underflow_vc0_credit : 1; - mmr_t overflow_iilb_vc2 : 1; - mmr_t underflow_iilb_vc2 : 1; - mmr_t overflow_iilb_vc0 : 1; - mmr_t underflow_iilb_vc0 : 1; - mmr_t overflow_ni1_vc2 : 1; - mmr_t underflow_ni1_vc2 : 1; - mmr_t overflow_ni1_vc0 : 1; - mmr_t underflow_ni1_vc0 : 1; - mmr_t overflow_ni0_vc2 : 1; - mmr_t underflow_ni0_vc2 : 1; - mmr_t overflow_ni0_vc0 : 1; - mmr_t underflow_ni0_vc0 : 1; - } sh_xnmd_error_overflow_s; -} sh_xnmd_error_overflow_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_ERROR_MASK" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_error_mask_u { mmr_t sh_xnmd_error_mask_regval; struct { @@ -17908,70 +9627,11 @@ mmr_t reserved_0 : 14; } sh_xnmd_error_mask_s; } sh_xnmd_error_mask_u_t; -#else -typedef union sh_xnmd_error_mask_u { - mmr_t sh_xnmd_error_mask_regval; - struct { - mmr_t reserved_0 : 14; - mmr_t overflow_header_cancel_fifo : 1; - mmr_t overflow_iilb_vc2_credit : 1; - mmr_t underflow_iilb_vc2_credit : 1; - mmr_t overflow_iilb_vc0_credit : 1; - mmr_t underflow_iilb_vc0_credit : 1; - mmr_t overflow_ni1_vc2_credit : 1; - mmr_t underflow_ni1_vc2_credit : 1; - mmr_t overflow_ni1_vc0_credit : 1; - mmr_t underflow_ni1_vc0_credit : 1; - mmr_t overflow_ni0_vc2_credit : 1; - mmr_t underflow_ni0_vc2_credit : 1; - mmr_t overflow_ni0_vc0_credit : 1; - mmr_t underflow_ni0_vc0_credit : 1; - mmr_t overflow_iilb_debit2 : 1; - mmr_t overflow_iilb_debit0 : 1; - mmr_t overflow_ni1_debit2 : 1; - mmr_t overflow_ni1_debit0 : 1; - mmr_t overflow_ni0_debit2 : 1; - mmr_t overflow_ni0_debit0 : 1; - mmr_t overflow_sic_cntr2 : 1; - mmr_t underflow_sic_cntr2 : 1; - mmr_t overflow_sic_cntr0 : 1; - mmr_t underflow_sic_cntr0 : 1; - mmr_t uncor_error3 : 1; - mmr_t uncor_error2 : 1; - mmr_t uncor_error1 : 1; - mmr_t uncor_error0 : 1; - mmr_t single_bit_error3 : 1; - mmr_t single_bit_error2 : 1; - mmr_t single_bit_error1 : 1; - mmr_t single_bit_error0 : 1; - mmr_t lut_read_error : 1; - mmr_t overflow_databuff_vc2 : 1; - mmr_t overflow_databuff_vc0 : 1; - mmr_t overflow_vc2_credit : 1; - mmr_t underflow_vc2_credit : 1; - mmr_t overflow_vc0_credit : 1; - mmr_t underflow_vc0_credit : 1; - mmr_t overflow_iilb_vc2 : 1; - mmr_t underflow_iilb_vc2 : 1; - mmr_t overflow_iilb_vc0 : 1; - mmr_t underflow_iilb_vc0 : 1; - mmr_t overflow_ni1_vc2 : 1; - mmr_t underflow_ni1_vc2 : 1; - mmr_t overflow_ni1_vc0 : 1; - mmr_t underflow_ni1_vc0 : 1; - mmr_t overflow_ni0_vc2 : 1; - mmr_t underflow_ni0_vc2 : 1; - mmr_t overflow_ni0_vc0 : 1; - mmr_t underflow_ni0_vc0 : 1; - } sh_xnmd_error_mask_s; -} sh_xnmd_error_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_XNMD_FIRST_ERROR" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xnmd_first_error_u { mmr_t sh_xnmd_first_error_regval; struct { @@ -18028,155 +9688,60 @@ mmr_t reserved_0 : 14; } sh_xnmd_first_error_s; } sh_xnmd_first_error_u_t; -#else -typedef union sh_xnmd_first_error_u { - mmr_t sh_xnmd_first_error_regval; - struct { - mmr_t reserved_0 : 14; - mmr_t overflow_header_cancel_fifo : 1; - mmr_t overflow_iilb_vc2_credit : 1; - mmr_t underflow_iilb_vc2_credit : 1; - mmr_t overflow_iilb_vc0_credit : 1; - mmr_t underflow_iilb_vc0_credit : 1; - mmr_t overflow_ni1_vc2_credit : 1; - mmr_t underflow_ni1_vc2_credit : 1; - mmr_t overflow_ni1_vc0_credit : 1; - mmr_t underflow_ni1_vc0_credit : 1; - mmr_t overflow_ni0_vc2_credit : 1; - mmr_t underflow_ni0_vc2_credit : 1; - mmr_t overflow_ni0_vc0_credit : 1; - mmr_t underflow_ni0_vc0_credit : 1; - mmr_t overflow_iilb_debit2 : 1; - mmr_t overflow_iilb_debit0 : 1; - mmr_t overflow_ni1_debit2 : 1; - mmr_t overflow_ni1_debit0 : 1; - mmr_t overflow_ni0_debit2 : 1; - mmr_t overflow_ni0_debit0 : 1; - mmr_t overflow_sic_cntr2 : 1; - mmr_t underflow_sic_cntr2 : 1; - mmr_t overflow_sic_cntr0 : 1; - mmr_t underflow_sic_cntr0 : 1; - mmr_t uncor_error3 : 1; - mmr_t uncor_error2 : 1; - mmr_t uncor_error1 : 1; - mmr_t uncor_error0 : 1; - mmr_t single_bit_error3 : 1; - mmr_t single_bit_error2 : 1; - mmr_t single_bit_error1 : 1; - mmr_t single_bit_error0 : 1; - mmr_t lut_read_error : 1; - mmr_t overflow_databuff_vc2 : 1; - mmr_t overflow_databuff_vc0 : 1; - mmr_t overflow_vc2_credit : 1; - mmr_t underflow_vc2_credit : 1; - mmr_t overflow_vc0_credit : 1; - mmr_t underflow_vc0_credit : 1; - mmr_t overflow_iilb_vc2 : 1; - mmr_t underflow_iilb_vc2 : 1; - mmr_t overflow_iilb_vc0 : 1; - mmr_t underflow_iilb_vc0 : 1; - mmr_t overflow_ni1_vc2 : 1; - mmr_t underflow_ni1_vc2 : 1; - mmr_t overflow_ni1_vc0 : 1; - mmr_t underflow_ni1_vc0 : 1; - mmr_t overflow_ni0_vc2 : 1; - mmr_t underflow_ni0_vc2 : 1; - mmr_t overflow_ni0_vc0 : 1; - mmr_t underflow_ni0_vc0 : 1; - } sh_xnmd_first_error_s; -} sh_xnmd_first_error_u_t; -#endif /* ==================================================================== */ /* Register "SH_AUTO_REPLY_ENABLE0" */ /* Automatic Maintenance Reply Enable 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_auto_reply_enable0_u { - mmr_t sh_auto_reply_enable0_regval; - struct { - mmr_t enable0 : 64; - } sh_auto_reply_enable0_s; -} sh_auto_reply_enable0_u_t; -#else typedef union sh_auto_reply_enable0_u { mmr_t sh_auto_reply_enable0_regval; struct { mmr_t enable0 : 64; } sh_auto_reply_enable0_s; } sh_auto_reply_enable0_u_t; -#endif /* ==================================================================== */ /* Register "SH_AUTO_REPLY_ENABLE1" */ /* Automatic Maintenance Reply Enable 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_auto_reply_enable1_u { - mmr_t sh_auto_reply_enable1_regval; - struct { - mmr_t enable1 : 64; - } sh_auto_reply_enable1_s; -} sh_auto_reply_enable1_u_t; -#else typedef union sh_auto_reply_enable1_u { mmr_t sh_auto_reply_enable1_regval; struct { mmr_t enable1 : 64; } sh_auto_reply_enable1_s; } sh_auto_reply_enable1_u_t; -#endif /* ==================================================================== */ /* Register "SH_AUTO_REPLY_HEADER0" */ /* Automatic Maintenance Reply Header 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_auto_reply_header0_u { - mmr_t sh_auto_reply_header0_regval; - struct { - mmr_t header0 : 64; - } sh_auto_reply_header0_s; -} sh_auto_reply_header0_u_t; -#else typedef union sh_auto_reply_header0_u { mmr_t sh_auto_reply_header0_regval; struct { mmr_t header0 : 64; } sh_auto_reply_header0_s; } sh_auto_reply_header0_u_t; -#endif /* ==================================================================== */ /* Register "SH_AUTO_REPLY_HEADER1" */ /* Automatic Maintenance Reply Header 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_auto_reply_header1_u { - mmr_t sh_auto_reply_header1_regval; - struct { - mmr_t header1 : 64; - } sh_auto_reply_header1_s; -} sh_auto_reply_header1_u_t; -#else typedef union sh_auto_reply_header1_u { mmr_t sh_auto_reply_header1_regval; struct { mmr_t header1 : 64; } sh_auto_reply_header1_s; } sh_auto_reply_header1_u_t; -#endif /* ==================================================================== */ /* Register "SH_ENABLE_RP_AUTO_REPLY" */ /* Enable Automatic Maintenance Reply From Reply Queue */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_enable_rp_auto_reply_u { mmr_t sh_enable_rp_auto_reply_regval; struct { @@ -18184,22 +9749,12 @@ mmr_t reserved_0 : 63; } sh_enable_rp_auto_reply_s; } sh_enable_rp_auto_reply_u_t; -#else -typedef union sh_enable_rp_auto_reply_u { - mmr_t sh_enable_rp_auto_reply_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t enable : 1; - } sh_enable_rp_auto_reply_s; -} sh_enable_rp_auto_reply_u_t; -#endif /* ==================================================================== */ /* Register "SH_ENABLE_RQ_AUTO_REPLY" */ /* Enable Automatic Maintenance Reply From Request Queue */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_enable_rq_auto_reply_u { mmr_t sh_enable_rq_auto_reply_regval; struct { @@ -18207,22 +9762,12 @@ mmr_t reserved_0 : 63; } sh_enable_rq_auto_reply_s; } sh_enable_rq_auto_reply_u_t; -#else -typedef union sh_enable_rq_auto_reply_u { - mmr_t sh_enable_rq_auto_reply_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t enable : 1; - } sh_enable_rq_auto_reply_s; -} sh_enable_rq_auto_reply_u_t; -#endif /* ==================================================================== */ /* Register "SH_REDIRECT_INVAL" */ /* Redirect invalidate to LB instead of PI */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_redirect_inval_u { mmr_t sh_redirect_inval_regval; struct { @@ -18230,22 +9775,12 @@ mmr_t reserved_0 : 63; } sh_redirect_inval_s; } sh_redirect_inval_u_t; -#else -typedef union sh_redirect_inval_u { - mmr_t sh_redirect_inval_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t redirect : 1; - } sh_redirect_inval_s; -} sh_redirect_inval_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_CNTRL" */ /* Diagnostic Message Control Register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_diag_msg_cntrl_u { mmr_t sh_diag_msg_cntrl_regval; struct { @@ -18258,447 +9793,252 @@ mmr_t busy : 1; } sh_diag_msg_cntrl_s; } sh_diag_msg_cntrl_u_t; -#else -typedef union sh_diag_msg_cntrl_u { - mmr_t sh_diag_msg_cntrl_regval; - struct { - mmr_t busy : 1; - mmr_t start : 1; - mmr_t reserved_0 : 48; - mmr_t port : 1; - mmr_t error_inject_enable : 1; - mmr_t error_inject_point : 6; - mmr_t msg_length : 6; - } sh_diag_msg_cntrl_s; -} sh_diag_msg_cntrl_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA0L" */ /* Diagnostic Data, lower 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data0l_u { - mmr_t sh_diag_msg_data0l_regval; - struct { - mmr_t data_lower : 64; - } sh_diag_msg_data0l_s; -} sh_diag_msg_data0l_u_t; -#else typedef union sh_diag_msg_data0l_u { mmr_t sh_diag_msg_data0l_regval; struct { mmr_t data_lower : 64; } sh_diag_msg_data0l_s; } sh_diag_msg_data0l_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA0U" */ /* Diagnostice Data, upper 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data0u_u { - mmr_t sh_diag_msg_data0u_regval; - struct { - mmr_t data_upper : 64; - } sh_diag_msg_data0u_s; -} sh_diag_msg_data0u_u_t; -#else typedef union sh_diag_msg_data0u_u { mmr_t sh_diag_msg_data0u_regval; struct { mmr_t data_upper : 64; } sh_diag_msg_data0u_s; } sh_diag_msg_data0u_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA1L" */ /* Diagnostic Data, lower 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_diag_msg_data1l_u { mmr_t sh_diag_msg_data1l_regval; struct { mmr_t data_lower : 64; } sh_diag_msg_data1l_s; } sh_diag_msg_data1l_u_t; -#else -typedef union sh_diag_msg_data1l_u { - mmr_t sh_diag_msg_data1l_regval; - struct { - mmr_t data_lower : 64; - } sh_diag_msg_data1l_s; -} sh_diag_msg_data1l_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA1U" */ /* Diagnostice Data, upper 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data1u_u { - mmr_t sh_diag_msg_data1u_regval; - struct { - mmr_t data_upper : 64; - } sh_diag_msg_data1u_s; -} sh_diag_msg_data1u_u_t; -#else typedef union sh_diag_msg_data1u_u { mmr_t sh_diag_msg_data1u_regval; struct { mmr_t data_upper : 64; } sh_diag_msg_data1u_s; } sh_diag_msg_data1u_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA2L" */ /* Diagnostic Data, lower 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data2l_u { - mmr_t sh_diag_msg_data2l_regval; - struct { - mmr_t data_lower : 64; - } sh_diag_msg_data2l_s; -} sh_diag_msg_data2l_u_t; -#else typedef union sh_diag_msg_data2l_u { mmr_t sh_diag_msg_data2l_regval; struct { mmr_t data_lower : 64; } sh_diag_msg_data2l_s; } sh_diag_msg_data2l_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA2U" */ /* Diagnostice Data, upper 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data2u_u { - mmr_t sh_diag_msg_data2u_regval; - struct { - mmr_t data_upper : 64; - } sh_diag_msg_data2u_s; -} sh_diag_msg_data2u_u_t; -#else typedef union sh_diag_msg_data2u_u { mmr_t sh_diag_msg_data2u_regval; struct { mmr_t data_upper : 64; } sh_diag_msg_data2u_s; } sh_diag_msg_data2u_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA3L" */ /* Diagnostic Data, lower 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data3l_u { - mmr_t sh_diag_msg_data3l_regval; - struct { - mmr_t data_lower : 64; - } sh_diag_msg_data3l_s; -} sh_diag_msg_data3l_u_t; -#else typedef union sh_diag_msg_data3l_u { mmr_t sh_diag_msg_data3l_regval; struct { mmr_t data_lower : 64; } sh_diag_msg_data3l_s; } sh_diag_msg_data3l_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA3U" */ /* Diagnostice Data, upper 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data3u_u { - mmr_t sh_diag_msg_data3u_regval; - struct { - mmr_t data_upper : 64; - } sh_diag_msg_data3u_s; -} sh_diag_msg_data3u_u_t; -#else typedef union sh_diag_msg_data3u_u { mmr_t sh_diag_msg_data3u_regval; struct { mmr_t data_upper : 64; } sh_diag_msg_data3u_s; } sh_diag_msg_data3u_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA4L" */ /* Diagnostic Data, lower 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data4l_u { - mmr_t sh_diag_msg_data4l_regval; - struct { - mmr_t data_lower : 64; - } sh_diag_msg_data4l_s; -} sh_diag_msg_data4l_u_t; -#else typedef union sh_diag_msg_data4l_u { mmr_t sh_diag_msg_data4l_regval; struct { mmr_t data_lower : 64; } sh_diag_msg_data4l_s; } sh_diag_msg_data4l_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA4U" */ /* Diagnostice Data, upper 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_diag_msg_data4u_u { mmr_t sh_diag_msg_data4u_regval; struct { mmr_t data_upper : 64; } sh_diag_msg_data4u_s; } sh_diag_msg_data4u_u_t; -#else -typedef union sh_diag_msg_data4u_u { - mmr_t sh_diag_msg_data4u_regval; - struct { - mmr_t data_upper : 64; - } sh_diag_msg_data4u_s; -} sh_diag_msg_data4u_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA5L" */ /* Diagnostic Data, lower 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data5l_u { - mmr_t sh_diag_msg_data5l_regval; - struct { - mmr_t data_lower : 64; - } sh_diag_msg_data5l_s; -} sh_diag_msg_data5l_u_t; -#else typedef union sh_diag_msg_data5l_u { mmr_t sh_diag_msg_data5l_regval; struct { mmr_t data_lower : 64; } sh_diag_msg_data5l_s; } sh_diag_msg_data5l_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA5U" */ /* Diagnostice Data, upper 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data5u_u { - mmr_t sh_diag_msg_data5u_regval; - struct { - mmr_t data_upper : 64; - } sh_diag_msg_data5u_s; -} sh_diag_msg_data5u_u_t; -#else typedef union sh_diag_msg_data5u_u { mmr_t sh_diag_msg_data5u_regval; struct { mmr_t data_upper : 64; } sh_diag_msg_data5u_s; } sh_diag_msg_data5u_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA6L" */ /* Diagnostic Data, lower 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_diag_msg_data6l_u { mmr_t sh_diag_msg_data6l_regval; struct { mmr_t data_lower : 64; } sh_diag_msg_data6l_s; } sh_diag_msg_data6l_u_t; -#else -typedef union sh_diag_msg_data6l_u { - mmr_t sh_diag_msg_data6l_regval; - struct { - mmr_t data_lower : 64; - } sh_diag_msg_data6l_s; -} sh_diag_msg_data6l_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA6U" */ /* Diagnostice Data, upper 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data6u_u { - mmr_t sh_diag_msg_data6u_regval; - struct { - mmr_t data_upper : 64; - } sh_diag_msg_data6u_s; -} sh_diag_msg_data6u_u_t; -#else typedef union sh_diag_msg_data6u_u { mmr_t sh_diag_msg_data6u_regval; struct { mmr_t data_upper : 64; } sh_diag_msg_data6u_s; } sh_diag_msg_data6u_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA7L" */ /* Diagnostic Data, lower 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_diag_msg_data7l_u { mmr_t sh_diag_msg_data7l_regval; struct { mmr_t data_lower : 64; } sh_diag_msg_data7l_s; } sh_diag_msg_data7l_u_t; -#else -typedef union sh_diag_msg_data7l_u { - mmr_t sh_diag_msg_data7l_regval; - struct { - mmr_t data_lower : 64; - } sh_diag_msg_data7l_s; -} sh_diag_msg_data7l_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA7U" */ /* Diagnostice Data, upper 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data7u_u { - mmr_t sh_diag_msg_data7u_regval; - struct { - mmr_t data_upper : 64; - } sh_diag_msg_data7u_s; -} sh_diag_msg_data7u_u_t; -#else typedef union sh_diag_msg_data7u_u { mmr_t sh_diag_msg_data7u_regval; struct { mmr_t data_upper : 64; } sh_diag_msg_data7u_s; } sh_diag_msg_data7u_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA8L" */ /* Diagnostic Data, lower 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_diag_msg_data8l_u { mmr_t sh_diag_msg_data8l_regval; struct { mmr_t data_lower : 64; } sh_diag_msg_data8l_s; } sh_diag_msg_data8l_u_t; -#else -typedef union sh_diag_msg_data8l_u { - mmr_t sh_diag_msg_data8l_regval; - struct { - mmr_t data_lower : 64; - } sh_diag_msg_data8l_s; -} sh_diag_msg_data8l_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_DATA8U" */ /* Diagnostice Data, upper 64 bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_data8u_u { - mmr_t sh_diag_msg_data8u_regval; - struct { - mmr_t data_upper : 64; - } sh_diag_msg_data8u_s; -} sh_diag_msg_data8u_u_t; -#else typedef union sh_diag_msg_data8u_u { mmr_t sh_diag_msg_data8u_regval; struct { mmr_t data_upper : 64; } sh_diag_msg_data8u_s; } sh_diag_msg_data8u_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_HDR0" */ /* Diagnostice Data, lower 64 bits of header */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_hdr0_u { - mmr_t sh_diag_msg_hdr0_regval; - struct { - mmr_t header0 : 64; - } sh_diag_msg_hdr0_s; -} sh_diag_msg_hdr0_u_t; -#else typedef union sh_diag_msg_hdr0_u { mmr_t sh_diag_msg_hdr0_regval; struct { mmr_t header0 : 64; } sh_diag_msg_hdr0_s; } sh_diag_msg_hdr0_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIAG_MSG_HDR1" */ /* Diagnostice Data, upper 64 bits of header */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_diag_msg_hdr1_u { - mmr_t sh_diag_msg_hdr1_regval; - struct { - mmr_t header1 : 64; - } sh_diag_msg_hdr1_s; -} sh_diag_msg_hdr1_u_t; -#else typedef union sh_diag_msg_hdr1_u { mmr_t sh_diag_msg_hdr1_regval; struct { mmr_t header1 : 64; } sh_diag_msg_hdr1_s; } sh_diag_msg_hdr1_u_t; -#endif /* ==================================================================== */ /* Register "SH_DEBUG_SELECT" */ /* SHub Debug Port Select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_debug_select_u { mmr_t sh_debug_select_regval; struct { @@ -18724,40 +10064,12 @@ mmr_t trigger_enable : 1; } sh_debug_select_s; } sh_debug_select_u_t; -#else -typedef union sh_debug_select_u { - mmr_t sh_debug_select_regval; - struct { - mmr_t trigger_enable : 1; - mmr_t reserved_0 : 3; - mmr_t sel_ii : 9; - mmr_t debug_ii_sel : 3; - mmr_t nibble7_chiplet_sel : 3; - mmr_t nibble7_nibble_sel : 3; - mmr_t nibble6_chiplet_sel : 3; - mmr_t nibble6_nibble_sel : 3; - mmr_t nibble5_chiplet_sel : 3; - mmr_t nibble5_nibble_sel : 3; - mmr_t nibble4_chiplet_sel : 3; - mmr_t nibble4_nibble_sel : 3; - mmr_t nibble3_chiplet_sel : 3; - mmr_t nibble3_nibble_sel : 3; - mmr_t nibble2_chiplet_sel : 3; - mmr_t nibble2_nibble_sel : 3; - mmr_t nibble1_chiplet_sel : 3; - mmr_t nibble1_nibble_sel : 3; - mmr_t nibble0_chiplet_sel : 3; - mmr_t nibble0_nibble_sel : 3; - } sh_debug_select_s; -} sh_debug_select_u_t; -#endif /* ==================================================================== */ /* Register "SH_TRIGGER_COMPARE_MASK" */ /* SHub Trigger Compare Mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_trigger_compare_mask_u { mmr_t sh_trigger_compare_mask_regval; struct { @@ -18765,22 +10077,12 @@ mmr_t reserved_0 : 32; } sh_trigger_compare_mask_s; } sh_trigger_compare_mask_u_t; -#else -typedef union sh_trigger_compare_mask_u { - mmr_t sh_trigger_compare_mask_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t mask : 32; - } sh_trigger_compare_mask_s; -} sh_trigger_compare_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_TRIGGER_COMPARE_PATTERN" */ /* SHub Trigger Compare Pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_trigger_compare_pattern_u { mmr_t sh_trigger_compare_pattern_regval; struct { @@ -18788,22 +10090,12 @@ mmr_t reserved_0 : 32; } sh_trigger_compare_pattern_s; } sh_trigger_compare_pattern_u_t; -#else -typedef union sh_trigger_compare_pattern_u { - mmr_t sh_trigger_compare_pattern_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t data : 32; - } sh_trigger_compare_pattern_s; -} sh_trigger_compare_pattern_u_t; -#endif /* ==================================================================== */ /* Register "SH_TRIGGER_SEL" */ /* Trigger select for SHUB debug port */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_trigger_sel_u { mmr_t sh_trigger_sel_regval; struct { @@ -18841,52 +10133,12 @@ mmr_t reserved_15 : 1; } sh_trigger_sel_s; } sh_trigger_sel_u_t; -#else -typedef union sh_trigger_sel_u { - mmr_t sh_trigger_sel_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t nibble7_nibble_sel : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_input_sel : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble_sel : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_input_sel : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble_sel : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_input_sel : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble_sel : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_input_sel : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_input_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_input_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_input_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_input_sel : 3; - } sh_trigger_sel_s; -} sh_trigger_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_STOP_CLK_CONTROL" */ /* Stop Clock Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_stop_clk_control_u { mmr_t sh_stop_clk_control_regval; struct { @@ -18897,25 +10149,12 @@ mmr_t reserved_0 : 56; } sh_stop_clk_control_s; } sh_stop_clk_control_u_t; -#else -typedef union sh_stop_clk_control_u { - mmr_t sh_stop_clk_control_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t mode : 1; - mmr_t polarity : 1; - mmr_t event : 1; - mmr_t stimulus : 5; - } sh_stop_clk_control_s; -} sh_stop_clk_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_STOP_CLK_DELAY_PHASE" */ /* Stop Clock Delay Phase */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_stop_clk_delay_phase_u { mmr_t sh_stop_clk_delay_phase_regval; struct { @@ -18923,43 +10162,24 @@ mmr_t reserved_0 : 56; } sh_stop_clk_delay_phase_s; } sh_stop_clk_delay_phase_u_t; -#else -typedef union sh_stop_clk_delay_phase_u { - mmr_t sh_stop_clk_delay_phase_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t delay : 8; - } sh_stop_clk_delay_phase_s; -} sh_stop_clk_delay_phase_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_ARM_MASK" */ /* Trigger sequencing facility arm mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_tsf_arm_mask_u { mmr_t sh_tsf_arm_mask_regval; struct { mmr_t mask : 64; } sh_tsf_arm_mask_s; } sh_tsf_arm_mask_u_t; -#else -typedef union sh_tsf_arm_mask_u { - mmr_t sh_tsf_arm_mask_regval; - struct { - mmr_t mask : 64; - } sh_tsf_arm_mask_s; -} sh_tsf_arm_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_COUNTER_PRESETS" */ /* Trigger sequencing facility counter presets */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_tsf_counter_presets_u { mmr_t sh_tsf_counter_presets_regval; struct { @@ -18969,24 +10189,12 @@ mmr_t count_8a : 8; } sh_tsf_counter_presets_s; } sh_tsf_counter_presets_u_t; -#else -typedef union sh_tsf_counter_presets_u { - mmr_t sh_tsf_counter_presets_regval; - struct { - mmr_t count_8a : 8; - mmr_t count_8b : 8; - mmr_t count_16 : 16; - mmr_t count_32 : 32; - } sh_tsf_counter_presets_s; -} sh_tsf_counter_presets_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_DECREMENT_CTL" */ /* Trigger sequencing facility counter decrement control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_tsf_decrement_ctl_u { mmr_t sh_tsf_decrement_ctl_regval; struct { @@ -18994,22 +10202,12 @@ mmr_t reserved_0 : 48; } sh_tsf_decrement_ctl_s; } sh_tsf_decrement_ctl_u_t; -#else -typedef union sh_tsf_decrement_ctl_u { - mmr_t sh_tsf_decrement_ctl_regval; - struct { - mmr_t reserved_0 : 48; - mmr_t ctl : 16; - } sh_tsf_decrement_ctl_s; -} sh_tsf_decrement_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_DIAG_MSG_CTL" */ /* Trigger sequencing facility diagnostic message control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_tsf_diag_msg_ctl_u { mmr_t sh_tsf_diag_msg_ctl_regval; struct { @@ -19017,43 +10215,24 @@ mmr_t reserved_0 : 56; } sh_tsf_diag_msg_ctl_s; } sh_tsf_diag_msg_ctl_u_t; -#else -typedef union sh_tsf_diag_msg_ctl_u { - mmr_t sh_tsf_diag_msg_ctl_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t enable : 8; - } sh_tsf_diag_msg_ctl_s; -} sh_tsf_diag_msg_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_DISARM_MASK" */ /* Trigger sequencing facility disarm mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_tsf_disarm_mask_u { mmr_t sh_tsf_disarm_mask_regval; struct { mmr_t mask : 64; } sh_tsf_disarm_mask_s; } sh_tsf_disarm_mask_u_t; -#else -typedef union sh_tsf_disarm_mask_u { - mmr_t sh_tsf_disarm_mask_regval; - struct { - mmr_t mask : 64; - } sh_tsf_disarm_mask_s; -} sh_tsf_disarm_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_ENABLE_CTL" */ /* Trigger sequencing facility counter enable control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_tsf_enable_ctl_u { mmr_t sh_tsf_enable_ctl_regval; struct { @@ -19061,22 +10240,12 @@ mmr_t reserved_0 : 48; } sh_tsf_enable_ctl_s; } sh_tsf_enable_ctl_u_t; -#else -typedef union sh_tsf_enable_ctl_u { - mmr_t sh_tsf_enable_ctl_regval; - struct { - mmr_t reserved_0 : 48; - mmr_t ctl : 16; - } sh_tsf_enable_ctl_s; -} sh_tsf_enable_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_SOFTWARE_ARM" */ /* Trigger sequencing facility software arm */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_tsf_software_arm_u { mmr_t sh_tsf_software_arm_regval; struct { @@ -19091,29 +10260,12 @@ mmr_t reserved_0 : 56; } sh_tsf_software_arm_s; } sh_tsf_software_arm_u_t; -#else -typedef union sh_tsf_software_arm_u { - mmr_t sh_tsf_software_arm_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t bit7 : 1; - mmr_t bit6 : 1; - mmr_t bit5 : 1; - mmr_t bit4 : 1; - mmr_t bit3 : 1; - mmr_t bit2 : 1; - mmr_t bit1 : 1; - mmr_t bit0 : 1; - } sh_tsf_software_arm_s; -} sh_tsf_software_arm_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_SOFTWARE_DISARM" */ /* Trigger sequencing facility software disarm */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_tsf_software_disarm_u { mmr_t sh_tsf_software_disarm_regval; struct { @@ -19128,29 +10280,12 @@ mmr_t reserved_0 : 56; } sh_tsf_software_disarm_s; } sh_tsf_software_disarm_u_t; -#else -typedef union sh_tsf_software_disarm_u { - mmr_t sh_tsf_software_disarm_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t bit7 : 1; - mmr_t bit6 : 1; - mmr_t bit5 : 1; - mmr_t bit4 : 1; - mmr_t bit3 : 1; - mmr_t bit2 : 1; - mmr_t bit1 : 1; - mmr_t bit0 : 1; - } sh_tsf_software_disarm_s; -} sh_tsf_software_disarm_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_SOFTWARE_TRIGGERED" */ /* Trigger sequencing facility software triggered */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_tsf_software_triggered_u { mmr_t sh_tsf_software_triggered_regval; struct { @@ -19165,71 +10300,36 @@ mmr_t reserved_0 : 56; } sh_tsf_software_triggered_s; } sh_tsf_software_triggered_u_t; -#else -typedef union sh_tsf_software_triggered_u { - mmr_t sh_tsf_software_triggered_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t bit7 : 1; - mmr_t bit6 : 1; - mmr_t bit5 : 1; - mmr_t bit4 : 1; - mmr_t bit3 : 1; - mmr_t bit2 : 1; - mmr_t bit1 : 1; - mmr_t bit0 : 1; - } sh_tsf_software_triggered_s; -} sh_tsf_software_triggered_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_TRIGGER_MASK" */ /* Trigger sequencing facility trigger mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_tsf_trigger_mask_u { - mmr_t sh_tsf_trigger_mask_regval; - struct { - mmr_t mask : 64; - } sh_tsf_trigger_mask_s; -} sh_tsf_trigger_mask_u_t; -#else typedef union sh_tsf_trigger_mask_u { mmr_t sh_tsf_trigger_mask_regval; struct { mmr_t mask : 64; } sh_tsf_trigger_mask_s; } sh_tsf_trigger_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_VEC_DATA" */ /* Vector Write Request Message Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_vec_data_u { - mmr_t sh_vec_data_regval; - struct { - mmr_t data : 64; - } sh_vec_data_s; -} sh_vec_data_u_t; -#else typedef union sh_vec_data_u { mmr_t sh_vec_data_regval; struct { mmr_t data : 64; } sh_vec_data_s; } sh_vec_data_u_t; -#endif /* ==================================================================== */ /* Register "SH_VEC_PARMS" */ /* Vector Message Parameters Register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_vec_parms_u { mmr_t sh_vec_parms_regval; struct { @@ -19243,133 +10343,72 @@ mmr_t busy : 1; } sh_vec_parms_s; } sh_vec_parms_u_t; -#else -typedef union sh_vec_parms_u { - mmr_t sh_vec_parms_regval; - struct { - mmr_t busy : 1; - mmr_t start : 1; - mmr_t reserved_1 : 16; - mmr_t pio_id : 11; - mmr_t address : 32; - mmr_t reserved_0 : 1; - mmr_t ni_port : 1; - mmr_t type : 1; - } sh_vec_parms_s; -} sh_vec_parms_u_t; -#endif /* ==================================================================== */ /* Register "SH_VEC_ROUTE" */ /* Vector Request Message Route */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_vec_route_u { - mmr_t sh_vec_route_regval; - struct { - mmr_t route : 64; - } sh_vec_route_s; -} sh_vec_route_u_t; -#else typedef union sh_vec_route_u { mmr_t sh_vec_route_regval; struct { mmr_t route : 64; } sh_vec_route_s; } sh_vec_route_u_t; -#endif /* ==================================================================== */ /* Register "SH_CPU_PERM" */ /* CPU MMR Access Permission Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_cpu_perm_u { - mmr_t sh_cpu_perm_regval; - struct { - mmr_t access_bits : 64; - } sh_cpu_perm_s; -} sh_cpu_perm_u_t; -#else typedef union sh_cpu_perm_u { mmr_t sh_cpu_perm_regval; struct { mmr_t access_bits : 64; } sh_cpu_perm_s; } sh_cpu_perm_u_t; -#endif /* ==================================================================== */ /* Register "SH_CPU_PERM_OVR" */ /* CPU MMR Access Permission Override */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_cpu_perm_ovr_u { mmr_t sh_cpu_perm_ovr_regval; struct { mmr_t override : 64; } sh_cpu_perm_ovr_s; } sh_cpu_perm_ovr_u_t; -#else -typedef union sh_cpu_perm_ovr_u { - mmr_t sh_cpu_perm_ovr_regval; - struct { - mmr_t override : 64; - } sh_cpu_perm_ovr_s; -} sh_cpu_perm_ovr_u_t; -#endif /* ==================================================================== */ /* Register "SH_EXT_IO_PERM" */ /* External IO MMR Access Permission Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_ext_io_perm_u { - mmr_t sh_ext_io_perm_regval; - struct { - mmr_t access_bits : 64; - } sh_ext_io_perm_s; -} sh_ext_io_perm_u_t; -#else typedef union sh_ext_io_perm_u { mmr_t sh_ext_io_perm_regval; struct { mmr_t access_bits : 64; } sh_ext_io_perm_s; } sh_ext_io_perm_u_t; -#endif /* ==================================================================== */ /* Register "SH_EXT_IOI_ACCESS" */ /* External IO Interrupt Access Permission Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_ext_ioi_access_u { - mmr_t sh_ext_ioi_access_regval; - struct { - mmr_t access_bits : 64; - } sh_ext_ioi_access_s; -} sh_ext_ioi_access_u_t; -#else typedef union sh_ext_ioi_access_u { mmr_t sh_ext_ioi_access_regval; struct { mmr_t access_bits : 64; } sh_ext_ioi_access_s; } sh_ext_ioi_access_u_t; -#endif /* ==================================================================== */ /* Register "SH_GC_FIL_CTRL" */ /* SHub Global Clock Filter Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gc_fil_ctrl_u { mmr_t sh_gc_fil_ctrl_regval; struct { @@ -19386,31 +10425,12 @@ mmr_t reserved_4 : 6; } sh_gc_fil_ctrl_s; } sh_gc_fil_ctrl_u_t; -#else -typedef union sh_gc_fil_ctrl_u { - mmr_t sh_gc_fil_ctrl_regval; - struct { - mmr_t reserved_4 : 6; - mmr_t error_counter : 10; - mmr_t reserved_3 : 2; - mmr_t dropout_thresh : 10; - mmr_t reserved_2 : 2; - mmr_t dropout_counter : 10; - mmr_t reserved_1 : 3; - mmr_t mask_enable : 1; - mmr_t mask_counter : 12; - mmr_t reserved_0 : 3; - mmr_t offset : 5; - } sh_gc_fil_ctrl_s; -} sh_gc_fil_ctrl_u_t; -#endif /* ==================================================================== */ /* Register "SH_GC_SRC_CTRL" */ /* SHub Global Clock Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_gc_src_ctrl_u { mmr_t sh_gc_src_ctrl_regval; struct { @@ -19426,30 +10446,12 @@ mmr_t reserved_4 : 30; } sh_gc_src_ctrl_s; } sh_gc_src_ctrl_u_t; -#else -typedef union sh_gc_src_ctrl_u { - mmr_t sh_gc_src_ctrl_regval; - struct { - mmr_t reserved_4 : 30; - mmr_t source_sel : 2; - mmr_t reserved_3 : 3; - mmr_t toggle_bit : 1; - mmr_t reserved_2 : 2; - mmr_t counter : 10; - mmr_t reserved_1 : 2; - mmr_t max_count : 10; - mmr_t reserved_0 : 3; - mmr_t enable_counter : 1; - } sh_gc_src_ctrl_s; -} sh_gc_src_ctrl_u_t; -#endif /* ==================================================================== */ /* Register "SH_HARD_RESET" */ /* SHub Hard Reset */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_hard_reset_u { mmr_t sh_hard_reset_regval; struct { @@ -19457,85 +10459,48 @@ mmr_t reserved_0 : 63; } sh_hard_reset_s; } sh_hard_reset_u_t; -#else -typedef union sh_hard_reset_u { - mmr_t sh_hard_reset_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t hard_reset : 1; - } sh_hard_reset_s; -} sh_hard_reset_u_t; -#endif /* ==================================================================== */ /* Register "SH_IO_PERM" */ /* II MMR Access Permission Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_io_perm_u { mmr_t sh_io_perm_regval; struct { mmr_t access_bits : 64; } sh_io_perm_s; } sh_io_perm_u_t; -#else -typedef union sh_io_perm_u { - mmr_t sh_io_perm_regval; - struct { - mmr_t access_bits : 64; - } sh_io_perm_s; -} sh_io_perm_u_t; -#endif /* ==================================================================== */ /* Register "SH_IOI_ACCESS" */ /* II Interrupt Access Permission Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_ioi_access_u { - mmr_t sh_ioi_access_regval; - struct { - mmr_t access_bits : 64; - } sh_ioi_access_s; -} sh_ioi_access_u_t; -#else typedef union sh_ioi_access_u { mmr_t sh_ioi_access_regval; struct { mmr_t access_bits : 64; } sh_ioi_access_s; } sh_ioi_access_u_t; -#endif /* ==================================================================== */ /* Register "SH_IPI_ACCESS" */ /* CPU interrupt Access Permission Bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ipi_access_u { mmr_t sh_ipi_access_regval; struct { mmr_t access_bits : 64; } sh_ipi_access_s; } sh_ipi_access_u_t; -#else -typedef union sh_ipi_access_u { - mmr_t sh_ipi_access_regval; - struct { - mmr_t access_bits : 64; - } sh_ipi_access_s; -} sh_ipi_access_u_t; -#endif /* ==================================================================== */ /* Register "SH_JTAG_CONFIG" */ /* SHub JTAG configuration */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_jtag_config_u { mmr_t sh_jtag_config_regval; struct { @@ -19559,38 +10524,12 @@ mmr_t reserved_0 : 8; } sh_jtag_config_s; } sh_jtag_config_u_t; -#else -typedef union sh_jtag_config_u { - mmr_t sh_jtag_config_regval; - struct { - mmr_t reserved_0 : 8; - mmr_t gtl_config_re : 1; - mmr_t fsb_config_aux : 2; - mmr_t fsb_config_enable_bist : 1; - mmr_t fsb_config_output_tristate : 4; - mmr_t fsb_config_clock_ratio : 5; - mmr_t fsb_config_enable_bus_parking : 1; - mmr_t fsb_config_sample_binit : 1; - mmr_t fsb_config_ioq_depth : 1; - mmr_t jtag_mci_override : 1; - mmr_t jtag_mci_target : 14; - mmr_t jtag_mci_reset_delay : 4; - mmr_t wrt90_override : 1; - mmr_t wrt90_overrider : 1; - mmr_t wrt90_target : 14; - mmr_t ii_clk_sel : 2; - mmr_t ni_clk_sel : 1; - mmr_t md_clk_sel : 2; - } sh_jtag_config_s; -} sh_jtag_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_SHUB_ID" */ /* SHub ID Number */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_shub_id_u { mmr_t sh_shub_id_regval; struct { @@ -19608,116 +10547,60 @@ mmr_t reserved_3 : 7; } sh_shub_id_s; } sh_shub_id_u_t; -#else -typedef union sh_shub_id_u { - mmr_t sh_shub_id_regval; - struct { - mmr_t reserved_3 : 7; - mmr_t ni_port : 1; - mmr_t reserved_2 : 3; - mmr_t nodes_per_bit : 5; - mmr_t reserved_1 : 2; - mmr_t sharing_mode : 2; - mmr_t reserved_0 : 1; - mmr_t node_id : 11; - mmr_t revision : 4; - mmr_t part_number : 16; - mmr_t manufacturer : 11; - mmr_t force1 : 1; - } sh_shub_id_s; -} sh_shub_id_u_t; -#endif /* ==================================================================== */ /* Register "SH_SHUBS_PRESENT0" */ /* Shubs 0 - 63 Present. Used for invalidate generation */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_shubs_present0_u { - mmr_t sh_shubs_present0_regval; - struct { - mmr_t shubs_present0 : 64; - } sh_shubs_present0_s; -} sh_shubs_present0_u_t; -#else typedef union sh_shubs_present0_u { mmr_t sh_shubs_present0_regval; struct { mmr_t shubs_present0 : 64; } sh_shubs_present0_s; } sh_shubs_present0_u_t; -#endif /* ==================================================================== */ /* Register "SH_SHUBS_PRESENT1" */ /* Shubs 64 - 127 Present. Used for invalidate generation */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_shubs_present1_u { mmr_t sh_shubs_present1_regval; struct { mmr_t shubs_present1 : 64; } sh_shubs_present1_s; } sh_shubs_present1_u_t; -#else -typedef union sh_shubs_present1_u { - mmr_t sh_shubs_present1_regval; - struct { - mmr_t shubs_present1 : 64; - } sh_shubs_present1_s; -} sh_shubs_present1_u_t; -#endif /* ==================================================================== */ /* Register "SH_SHUBS_PRESENT2" */ /* Shubs 128 - 191 Present. Used for invalidate generation */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_shubs_present2_u { - mmr_t sh_shubs_present2_regval; - struct { - mmr_t shubs_present2 : 64; - } sh_shubs_present2_s; -} sh_shubs_present2_u_t; -#else typedef union sh_shubs_present2_u { mmr_t sh_shubs_present2_regval; struct { mmr_t shubs_present2 : 64; } sh_shubs_present2_s; } sh_shubs_present2_u_t; -#endif /* ==================================================================== */ /* Register "SH_SHUBS_PRESENT3" */ /* Shubs 192 - 255 Present. Used for invalidate generation */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_shubs_present3_u { - mmr_t sh_shubs_present3_regval; - struct { - mmr_t shubs_present3 : 64; - } sh_shubs_present3_s; -} sh_shubs_present3_u_t; -#else typedef union sh_shubs_present3_u { mmr_t sh_shubs_present3_regval; struct { mmr_t shubs_present3 : 64; } sh_shubs_present3_s; } sh_shubs_present3_u_t; -#endif /* ==================================================================== */ /* Register "SH_SOFT_RESET" */ /* SHub Soft Reset */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_soft_reset_u { mmr_t sh_soft_reset_regval; struct { @@ -19725,22 +10608,12 @@ mmr_t reserved_0 : 63; } sh_soft_reset_s; } sh_soft_reset_u_t; -#else -typedef union sh_soft_reset_u { - mmr_t sh_soft_reset_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t soft_reset : 1; - } sh_soft_reset_s; -} sh_soft_reset_u_t; -#endif /* ==================================================================== */ /* Register "SH_FIRST_ERROR" */ /* Shub Global First Error Flags */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_first_error_u { mmr_t sh_first_error_regval; struct { @@ -19748,22 +10621,12 @@ mmr_t reserved_0 : 45; } sh_first_error_s; } sh_first_error_u_t; -#else -typedef union sh_first_error_u { - mmr_t sh_first_error_regval; - struct { - mmr_t reserved_0 : 45; - mmr_t first_error : 19; - } sh_first_error_s; -} sh_first_error_u_t; -#endif /* ==================================================================== */ /* Register "SH_II_HW_TIME_STAMP" */ /* II hardware error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ii_hw_time_stamp_u { mmr_t sh_ii_hw_time_stamp_regval; struct { @@ -19771,22 +10634,12 @@ mmr_t valid : 1; } sh_ii_hw_time_stamp_s; } sh_ii_hw_time_stamp_u_t; -#else -typedef union sh_ii_hw_time_stamp_u { - mmr_t sh_ii_hw_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_ii_hw_time_stamp_s; -} sh_ii_hw_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_HW_TIME_STAMP" */ /* LB hardware error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_hw_time_stamp_u { mmr_t sh_lb_hw_time_stamp_regval; struct { @@ -19794,22 +10647,12 @@ mmr_t valid : 1; } sh_lb_hw_time_stamp_s; } sh_lb_hw_time_stamp_u_t; -#else -typedef union sh_lb_hw_time_stamp_u { - mmr_t sh_lb_hw_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_lb_hw_time_stamp_s; -} sh_lb_hw_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_COR_TIME_STAMP" */ /* MD correctable error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_cor_time_stamp_u { mmr_t sh_md_cor_time_stamp_regval; struct { @@ -19817,22 +10660,12 @@ mmr_t valid : 1; } sh_md_cor_time_stamp_s; } sh_md_cor_time_stamp_u_t; -#else -typedef union sh_md_cor_time_stamp_u { - mmr_t sh_md_cor_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_md_cor_time_stamp_s; -} sh_md_cor_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_HW_TIME_STAMP" */ /* MD hardware error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_hw_time_stamp_u { mmr_t sh_md_hw_time_stamp_regval; struct { @@ -19840,22 +10673,12 @@ mmr_t valid : 1; } sh_md_hw_time_stamp_s; } sh_md_hw_time_stamp_u_t; -#else -typedef union sh_md_hw_time_stamp_u { - mmr_t sh_md_hw_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_md_hw_time_stamp_s; -} sh_md_hw_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_UNCOR_TIME_STAMP" */ /* MD uncorrectable error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_uncor_time_stamp_u { mmr_t sh_md_uncor_time_stamp_regval; struct { @@ -19863,22 +10686,12 @@ mmr_t valid : 1; } sh_md_uncor_time_stamp_s; } sh_md_uncor_time_stamp_u_t; -#else -typedef union sh_md_uncor_time_stamp_u { - mmr_t sh_md_uncor_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_md_uncor_time_stamp_s; -} sh_md_uncor_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_COR_TIME_STAMP" */ /* PI correctable error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_cor_time_stamp_u { mmr_t sh_pi_cor_time_stamp_regval; struct { @@ -19886,22 +10699,12 @@ mmr_t valid : 1; } sh_pi_cor_time_stamp_s; } sh_pi_cor_time_stamp_u_t; -#else -typedef union sh_pi_cor_time_stamp_u { - mmr_t sh_pi_cor_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_pi_cor_time_stamp_s; -} sh_pi_cor_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_HW_TIME_STAMP" */ /* PI hardware error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_hw_time_stamp_u { mmr_t sh_pi_hw_time_stamp_regval; struct { @@ -19909,22 +10712,12 @@ mmr_t valid : 1; } sh_pi_hw_time_stamp_s; } sh_pi_hw_time_stamp_u_t; -#else -typedef union sh_pi_hw_time_stamp_u { - mmr_t sh_pi_hw_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_pi_hw_time_stamp_s; -} sh_pi_hw_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_UNCOR_TIME_STAMP" */ /* PI uncorrectable error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_uncor_time_stamp_u { mmr_t sh_pi_uncor_time_stamp_regval; struct { @@ -19932,22 +10725,12 @@ mmr_t valid : 1; } sh_pi_uncor_time_stamp_s; } sh_pi_uncor_time_stamp_u_t; -#else -typedef union sh_pi_uncor_time_stamp_u { - mmr_t sh_pi_uncor_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_pi_uncor_time_stamp_s; -} sh_pi_uncor_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC0_ADV_TIME_STAMP" */ /* Proc 0 advisory time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc0_adv_time_stamp_u { mmr_t sh_proc0_adv_time_stamp_regval; struct { @@ -19955,22 +10738,12 @@ mmr_t valid : 1; } sh_proc0_adv_time_stamp_s; } sh_proc0_adv_time_stamp_u_t; -#else -typedef union sh_proc0_adv_time_stamp_u { - mmr_t sh_proc0_adv_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_proc0_adv_time_stamp_s; -} sh_proc0_adv_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC0_ERR_TIME_STAMP" */ /* Proc 0 error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc0_err_time_stamp_u { mmr_t sh_proc0_err_time_stamp_regval; struct { @@ -19978,22 +10751,12 @@ mmr_t valid : 1; } sh_proc0_err_time_stamp_s; } sh_proc0_err_time_stamp_u_t; -#else -typedef union sh_proc0_err_time_stamp_u { - mmr_t sh_proc0_err_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_proc0_err_time_stamp_s; -} sh_proc0_err_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC1_ADV_TIME_STAMP" */ /* Proc 1 advisory time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc1_adv_time_stamp_u { mmr_t sh_proc1_adv_time_stamp_regval; struct { @@ -20001,22 +10764,12 @@ mmr_t valid : 1; } sh_proc1_adv_time_stamp_s; } sh_proc1_adv_time_stamp_u_t; -#else -typedef union sh_proc1_adv_time_stamp_u { - mmr_t sh_proc1_adv_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_proc1_adv_time_stamp_s; -} sh_proc1_adv_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC1_ERR_TIME_STAMP" */ /* Proc 1 error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc1_err_time_stamp_u { mmr_t sh_proc1_err_time_stamp_regval; struct { @@ -20024,22 +10777,12 @@ mmr_t valid : 1; } sh_proc1_err_time_stamp_s; } sh_proc1_err_time_stamp_u_t; -#else -typedef union sh_proc1_err_time_stamp_u { - mmr_t sh_proc1_err_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_proc1_err_time_stamp_s; -} sh_proc1_err_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC2_ADV_TIME_STAMP" */ /* Proc 2 advisory time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc2_adv_time_stamp_u { mmr_t sh_proc2_adv_time_stamp_regval; struct { @@ -20047,22 +10790,12 @@ mmr_t valid : 1; } sh_proc2_adv_time_stamp_s; } sh_proc2_adv_time_stamp_u_t; -#else -typedef union sh_proc2_adv_time_stamp_u { - mmr_t sh_proc2_adv_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_proc2_adv_time_stamp_s; -} sh_proc2_adv_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC2_ERR_TIME_STAMP" */ /* Proc 2 error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc2_err_time_stamp_u { mmr_t sh_proc2_err_time_stamp_regval; struct { @@ -20070,22 +10803,12 @@ mmr_t valid : 1; } sh_proc2_err_time_stamp_s; } sh_proc2_err_time_stamp_u_t; -#else -typedef union sh_proc2_err_time_stamp_u { - mmr_t sh_proc2_err_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_proc2_err_time_stamp_s; -} sh_proc2_err_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC3_ADV_TIME_STAMP" */ /* Proc 3 advisory time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc3_adv_time_stamp_u { mmr_t sh_proc3_adv_time_stamp_regval; struct { @@ -20093,22 +10816,12 @@ mmr_t valid : 1; } sh_proc3_adv_time_stamp_s; } sh_proc3_adv_time_stamp_u_t; -#else -typedef union sh_proc3_adv_time_stamp_u { - mmr_t sh_proc3_adv_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_proc3_adv_time_stamp_s; -} sh_proc3_adv_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROC3_ERR_TIME_STAMP" */ /* Proc 3 error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_proc3_err_time_stamp_u { mmr_t sh_proc3_err_time_stamp_regval; struct { @@ -20116,22 +10829,12 @@ mmr_t valid : 1; } sh_proc3_err_time_stamp_s; } sh_proc3_err_time_stamp_u_t; -#else -typedef union sh_proc3_err_time_stamp_u { - mmr_t sh_proc3_err_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_proc3_err_time_stamp_s; -} sh_proc3_err_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_COR_TIME_STAMP" */ /* XN correctable error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_cor_time_stamp_u { mmr_t sh_xn_cor_time_stamp_regval; struct { @@ -20139,22 +10842,12 @@ mmr_t valid : 1; } sh_xn_cor_time_stamp_s; } sh_xn_cor_time_stamp_u_t; -#else -typedef union sh_xn_cor_time_stamp_u { - mmr_t sh_xn_cor_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_xn_cor_time_stamp_s; -} sh_xn_cor_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_HW_TIME_STAMP" */ /* XN hardware error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_hw_time_stamp_u { mmr_t sh_xn_hw_time_stamp_regval; struct { @@ -20162,22 +10855,12 @@ mmr_t valid : 1; } sh_xn_hw_time_stamp_s; } sh_xn_hw_time_stamp_u_t; -#else -typedef union sh_xn_hw_time_stamp_u { - mmr_t sh_xn_hw_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_xn_hw_time_stamp_s; -} sh_xn_hw_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_UNCOR_TIME_STAMP" */ /* XN uncorrectable error time stamp */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_uncor_time_stamp_u { mmr_t sh_xn_uncor_time_stamp_regval; struct { @@ -20185,22 +10868,12 @@ mmr_t valid : 1; } sh_xn_uncor_time_stamp_s; } sh_xn_uncor_time_stamp_u_t; -#else -typedef union sh_xn_uncor_time_stamp_u { - mmr_t sh_xn_uncor_time_stamp_regval; - struct { - mmr_t valid : 1; - mmr_t time : 63; - } sh_xn_uncor_time_stamp_s; -} sh_xn_uncor_time_stamp_u_t; -#endif /* ==================================================================== */ /* Register "SH_DEBUG_PORT" */ /* SHub Debug Port */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_debug_port_u { mmr_t sh_debug_port_regval; struct { @@ -20215,29 +10888,12 @@ mmr_t reserved_0 : 32; } sh_debug_port_s; } sh_debug_port_u_t; -#else -typedef union sh_debug_port_u { - mmr_t sh_debug_port_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t debug_nibble7 : 4; - mmr_t debug_nibble6 : 4; - mmr_t debug_nibble5 : 4; - mmr_t debug_nibble4 : 4; - mmr_t debug_nibble3 : 4; - mmr_t debug_nibble2 : 4; - mmr_t debug_nibble1 : 4; - mmr_t debug_nibble0 : 4; - } sh_debug_port_s; -} sh_debug_port_u_t; -#endif /* ==================================================================== */ /* Register "SH_II_DEBUG_DATA" */ /* II Debug Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ii_debug_data_u { mmr_t sh_ii_debug_data_regval; struct { @@ -20245,22 +10901,12 @@ mmr_t reserved_0 : 32; } sh_ii_debug_data_s; } sh_ii_debug_data_u_t; -#else -typedef union sh_ii_debug_data_u { - mmr_t sh_ii_debug_data_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t ii_data : 32; - } sh_ii_debug_data_s; -} sh_ii_debug_data_u_t; -#endif /* ==================================================================== */ /* Register "SH_II_WRAP_DEBUG_DATA" */ /* SHub II Wrapper Debug Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ii_wrap_debug_data_u { mmr_t sh_ii_wrap_debug_data_regval; struct { @@ -20268,22 +10914,12 @@ mmr_t reserved_0 : 32; } sh_ii_wrap_debug_data_s; } sh_ii_wrap_debug_data_u_t; -#else -typedef union sh_ii_wrap_debug_data_u { - mmr_t sh_ii_wrap_debug_data_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t ii_wrap_data : 32; - } sh_ii_wrap_debug_data_s; -} sh_ii_wrap_debug_data_u_t; -#endif /* ==================================================================== */ /* Register "SH_LB_DEBUG_DATA" */ /* SHub LB Debug Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_lb_debug_data_u { mmr_t sh_lb_debug_data_regval; struct { @@ -20291,22 +10927,12 @@ mmr_t reserved_0 : 32; } sh_lb_debug_data_s; } sh_lb_debug_data_u_t; -#else -typedef union sh_lb_debug_data_u { - mmr_t sh_lb_debug_data_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t lb_data : 32; - } sh_lb_debug_data_s; -} sh_lb_debug_data_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DEBUG_DATA" */ /* SHub MD Debug Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_debug_data_u { mmr_t sh_md_debug_data_regval; struct { @@ -20314,22 +10940,12 @@ mmr_t reserved_0 : 32; } sh_md_debug_data_s; } sh_md_debug_data_u_t; -#else -typedef union sh_md_debug_data_u { - mmr_t sh_md_debug_data_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t md_data : 32; - } sh_md_debug_data_s; -} sh_md_debug_data_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_DEBUG_DATA" */ /* SHub PI Debug Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_debug_data_u { mmr_t sh_pi_debug_data_regval; struct { @@ -20337,22 +10953,12 @@ mmr_t reserved_0 : 32; } sh_pi_debug_data_s; } sh_pi_debug_data_u_t; -#else -typedef union sh_pi_debug_data_u { - mmr_t sh_pi_debug_data_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t pi_data : 32; - } sh_pi_debug_data_s; -} sh_pi_debug_data_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_DEBUG_DATA" */ /* SHub XN Debug Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_debug_data_u { mmr_t sh_xn_debug_data_regval; struct { @@ -20360,22 +10966,12 @@ mmr_t reserved_0 : 32; } sh_xn_debug_data_s; } sh_xn_debug_data_u_t; -#else -typedef union sh_xn_debug_data_u { - mmr_t sh_xn_debug_data_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t xn_data : 32; - } sh_xn_debug_data_s; -} sh_xn_debug_data_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_ARMED_STATE" */ /* Trigger sequencing facility arm state */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_tsf_armed_state_u { mmr_t sh_tsf_armed_state_regval; struct { @@ -20383,22 +10979,12 @@ mmr_t reserved_0 : 56; } sh_tsf_armed_state_s; } sh_tsf_armed_state_u_t; -#else -typedef union sh_tsf_armed_state_u { - mmr_t sh_tsf_armed_state_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t state : 8; - } sh_tsf_armed_state_s; -} sh_tsf_armed_state_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_COUNTER_VALUE" */ /* Trigger sequencing facility counter value */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_tsf_counter_value_u { mmr_t sh_tsf_counter_value_regval; struct { @@ -20408,24 +10994,12 @@ mmr_t count_8a : 8; } sh_tsf_counter_value_s; } sh_tsf_counter_value_u_t; -#else -typedef union sh_tsf_counter_value_u { - mmr_t sh_tsf_counter_value_regval; - struct { - mmr_t count_8a : 8; - mmr_t count_8b : 8; - mmr_t count_16 : 16; - mmr_t count_32 : 32; - } sh_tsf_counter_value_s; -} sh_tsf_counter_value_u_t; -#endif /* ==================================================================== */ /* Register "SH_TSF_TRIGGERED_STATE" */ /* Trigger sequencing facility triggered state */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_tsf_triggered_state_u { mmr_t sh_tsf_triggered_state_regval; struct { @@ -20433,64 +11007,36 @@ mmr_t reserved_0 : 56; } sh_tsf_triggered_state_s; } sh_tsf_triggered_state_u_t; -#else -typedef union sh_tsf_triggered_state_u { - mmr_t sh_tsf_triggered_state_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t state : 8; - } sh_tsf_triggered_state_s; -} sh_tsf_triggered_state_u_t; -#endif /* ==================================================================== */ /* Register "SH_VEC_RDDATA" */ /* Vector Reply Message Data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_vec_rddata_u { - mmr_t sh_vec_rddata_regval; - struct { - mmr_t data : 64; - } sh_vec_rddata_s; -} sh_vec_rddata_u_t; -#else typedef union sh_vec_rddata_u { mmr_t sh_vec_rddata_regval; struct { mmr_t data : 64; } sh_vec_rddata_s; } sh_vec_rddata_u_t; -#endif /* ==================================================================== */ /* Register "SH_VEC_RETURN" */ /* Vector Reply Message Return Route */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_vec_return_u { - mmr_t sh_vec_return_regval; - struct { - mmr_t route : 64; - } sh_vec_return_s; -} sh_vec_return_u_t; -#else typedef union sh_vec_return_u { mmr_t sh_vec_return_regval; struct { mmr_t route : 64; } sh_vec_return_s; } sh_vec_return_u_t; -#endif /* ==================================================================== */ /* Register "SH_VEC_STATUS" */ /* Vector Reply Message Status */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_vec_status_u { mmr_t sh_vec_status_regval; struct { @@ -20503,27 +11049,12 @@ mmr_t status_valid : 1; } sh_vec_status_s; } sh_vec_status_u_t; -#else -typedef union sh_vec_status_u { - mmr_t sh_vec_status_regval; - struct { - mmr_t status_valid : 1; - mmr_t overrun : 1; - mmr_t reserved_0 : 2; - mmr_t source : 14; - mmr_t pio_id : 11; - mmr_t address : 32; - mmr_t type : 3; - } sh_vec_status_s; -} sh_vec_status_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNT0_CONTROL" */ /* Performance Counter 0 Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_count0_control_u { mmr_t sh_performance_count0_control_regval; struct { @@ -20541,32 +11072,12 @@ mmr_t reserved_0 : 45; } sh_performance_count0_control_s; } sh_performance_count0_control_u_t; -#else -typedef union sh_performance_count0_control_u { - mmr_t sh_performance_count0_control_regval; - struct { - mmr_t reserved_0 : 45; - mmr_t peak_det_enable : 1; - mmr_t dec_enable : 1; - mmr_t inc_enable : 1; - mmr_t dn_mode : 1; - mmr_t dn_polarity : 1; - mmr_t dn_event : 1; - mmr_t dn_stimulus : 5; - mmr_t up_mode : 1; - mmr_t up_polarity : 1; - mmr_t up_event : 1; - mmr_t up_stimulus : 5; - } sh_performance_count0_control_s; -} sh_performance_count0_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNT1_CONTROL" */ /* Performance Counter 1 Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_count1_control_u { mmr_t sh_performance_count1_control_regval; struct { @@ -20584,32 +11095,12 @@ mmr_t reserved_0 : 45; } sh_performance_count1_control_s; } sh_performance_count1_control_u_t; -#else -typedef union sh_performance_count1_control_u { - mmr_t sh_performance_count1_control_regval; - struct { - mmr_t reserved_0 : 45; - mmr_t peak_det_enable : 1; - mmr_t dec_enable : 1; - mmr_t inc_enable : 1; - mmr_t dn_mode : 1; - mmr_t dn_polarity : 1; - mmr_t dn_event : 1; - mmr_t dn_stimulus : 5; - mmr_t up_mode : 1; - mmr_t up_polarity : 1; - mmr_t up_event : 1; - mmr_t up_stimulus : 5; - } sh_performance_count1_control_s; -} sh_performance_count1_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNT2_CONTROL" */ /* Performance Counter 2 Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_count2_control_u { mmr_t sh_performance_count2_control_regval; struct { @@ -20627,32 +11118,12 @@ mmr_t reserved_0 : 45; } sh_performance_count2_control_s; } sh_performance_count2_control_u_t; -#else -typedef union sh_performance_count2_control_u { - mmr_t sh_performance_count2_control_regval; - struct { - mmr_t reserved_0 : 45; - mmr_t peak_det_enable : 1; - mmr_t dec_enable : 1; - mmr_t inc_enable : 1; - mmr_t dn_mode : 1; - mmr_t dn_polarity : 1; - mmr_t dn_event : 1; - mmr_t dn_stimulus : 5; - mmr_t up_mode : 1; - mmr_t up_polarity : 1; - mmr_t up_event : 1; - mmr_t up_stimulus : 5; - } sh_performance_count2_control_s; -} sh_performance_count2_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNT3_CONTROL" */ /* Performance Counter 3 Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_count3_control_u { mmr_t sh_performance_count3_control_regval; struct { @@ -20670,32 +11141,12 @@ mmr_t reserved_0 : 45; } sh_performance_count3_control_s; } sh_performance_count3_control_u_t; -#else -typedef union sh_performance_count3_control_u { - mmr_t sh_performance_count3_control_regval; - struct { - mmr_t reserved_0 : 45; - mmr_t peak_det_enable : 1; - mmr_t dec_enable : 1; - mmr_t inc_enable : 1; - mmr_t dn_mode : 1; - mmr_t dn_polarity : 1; - mmr_t dn_event : 1; - mmr_t dn_stimulus : 5; - mmr_t up_mode : 1; - mmr_t up_polarity : 1; - mmr_t up_event : 1; - mmr_t up_stimulus : 5; - } sh_performance_count3_control_s; -} sh_performance_count3_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNT4_CONTROL" */ /* Performance Counter 4 Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_count4_control_u { mmr_t sh_performance_count4_control_regval; struct { @@ -20713,32 +11164,12 @@ mmr_t reserved_0 : 45; } sh_performance_count4_control_s; } sh_performance_count4_control_u_t; -#else -typedef union sh_performance_count4_control_u { - mmr_t sh_performance_count4_control_regval; - struct { - mmr_t reserved_0 : 45; - mmr_t peak_det_enable : 1; - mmr_t dec_enable : 1; - mmr_t inc_enable : 1; - mmr_t dn_mode : 1; - mmr_t dn_polarity : 1; - mmr_t dn_event : 1; - mmr_t dn_stimulus : 5; - mmr_t up_mode : 1; - mmr_t up_polarity : 1; - mmr_t up_event : 1; - mmr_t up_stimulus : 5; - } sh_performance_count4_control_s; -} sh_performance_count4_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNT5_CONTROL" */ /* Performance Counter 5 Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_count5_control_u { mmr_t sh_performance_count5_control_regval; struct { @@ -20756,32 +11187,12 @@ mmr_t reserved_0 : 45; } sh_performance_count5_control_s; } sh_performance_count5_control_u_t; -#else -typedef union sh_performance_count5_control_u { - mmr_t sh_performance_count5_control_regval; - struct { - mmr_t reserved_0 : 45; - mmr_t peak_det_enable : 1; - mmr_t dec_enable : 1; - mmr_t inc_enable : 1; - mmr_t dn_mode : 1; - mmr_t dn_polarity : 1; - mmr_t dn_event : 1; - mmr_t dn_stimulus : 5; - mmr_t up_mode : 1; - mmr_t up_polarity : 1; - mmr_t up_event : 1; - mmr_t up_stimulus : 5; - } sh_performance_count5_control_s; -} sh_performance_count5_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNT6_CONTROL" */ /* Performance Counter 6 Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_count6_control_u { mmr_t sh_performance_count6_control_regval; struct { @@ -20799,32 +11210,12 @@ mmr_t reserved_0 : 45; } sh_performance_count6_control_s; } sh_performance_count6_control_u_t; -#else -typedef union sh_performance_count6_control_u { - mmr_t sh_performance_count6_control_regval; - struct { - mmr_t reserved_0 : 45; - mmr_t peak_det_enable : 1; - mmr_t dec_enable : 1; - mmr_t inc_enable : 1; - mmr_t dn_mode : 1; - mmr_t dn_polarity : 1; - mmr_t dn_event : 1; - mmr_t dn_stimulus : 5; - mmr_t up_mode : 1; - mmr_t up_polarity : 1; - mmr_t up_event : 1; - mmr_t up_stimulus : 5; - } sh_performance_count6_control_s; -} sh_performance_count6_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNT7_CONTROL" */ /* Performance Counter 7 Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_count7_control_u { mmr_t sh_performance_count7_control_regval; struct { @@ -20842,32 +11233,12 @@ mmr_t reserved_0 : 45; } sh_performance_count7_control_s; } sh_performance_count7_control_u_t; -#else -typedef union sh_performance_count7_control_u { - mmr_t sh_performance_count7_control_regval; - struct { - mmr_t reserved_0 : 45; - mmr_t peak_det_enable : 1; - mmr_t dec_enable : 1; - mmr_t inc_enable : 1; - mmr_t dn_mode : 1; - mmr_t dn_polarity : 1; - mmr_t dn_event : 1; - mmr_t dn_stimulus : 5; - mmr_t up_mode : 1; - mmr_t up_polarity : 1; - mmr_t up_event : 1; - mmr_t up_stimulus : 5; - } sh_performance_count7_control_s; -} sh_performance_count7_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROFILE_DN_CONTROL" */ /* Profile Counter Down Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_profile_dn_control_u { mmr_t sh_profile_dn_control_regval; struct { @@ -20878,25 +11249,12 @@ mmr_t reserved_0 : 56; } sh_profile_dn_control_s; } sh_profile_dn_control_u_t; -#else -typedef union sh_profile_dn_control_u { - mmr_t sh_profile_dn_control_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t mode : 1; - mmr_t polarity : 1; - mmr_t event : 1; - mmr_t stimulus : 5; - } sh_profile_dn_control_s; -} sh_profile_dn_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROFILE_PEAK_CONTROL" */ /* Profile Counter Peak Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_profile_peak_control_u { mmr_t sh_profile_peak_control_regval; struct { @@ -20908,26 +11266,12 @@ mmr_t reserved_2 : 57; } sh_profile_peak_control_s; } sh_profile_peak_control_u_t; -#else -typedef union sh_profile_peak_control_u { - mmr_t sh_profile_peak_control_regval; - struct { - mmr_t reserved_2 : 57; - mmr_t polarity : 1; - mmr_t event : 1; - mmr_t reserved_1 : 1; - mmr_t stimulus : 1; - mmr_t reserved_0 : 3; - } sh_profile_peak_control_s; -} sh_profile_peak_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROFILE_RANGE" */ /* Profile Counter Range */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_profile_range_u { mmr_t sh_profile_range_regval; struct { @@ -20941,28 +11285,12 @@ mmr_t range7 : 8; } sh_profile_range_s; } sh_profile_range_u_t; -#else -typedef union sh_profile_range_u { - mmr_t sh_profile_range_regval; - struct { - mmr_t range7 : 8; - mmr_t range6 : 8; - mmr_t range5 : 8; - mmr_t range4 : 8; - mmr_t range3 : 8; - mmr_t range2 : 8; - mmr_t range1 : 8; - mmr_t range0 : 8; - } sh_profile_range_s; -} sh_profile_range_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROFILE_UP_CONTROL" */ /* Profile Counter Up Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_profile_up_control_u { mmr_t sh_profile_up_control_regval; struct { @@ -20973,25 +11301,12 @@ mmr_t reserved_0 : 56; } sh_profile_up_control_s; } sh_profile_up_control_u_t; -#else -typedef union sh_profile_up_control_u { - mmr_t sh_profile_up_control_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t mode : 1; - mmr_t polarity : 1; - mmr_t event : 1; - mmr_t stimulus : 5; - } sh_profile_up_control_s; -} sh_profile_up_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNTER0" */ /* Performance Counter 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_counter0_u { mmr_t sh_performance_counter0_regval; struct { @@ -20999,22 +11314,12 @@ mmr_t reserved_0 : 32; } sh_performance_counter0_s; } sh_performance_counter0_u_t; -#else -typedef union sh_performance_counter0_u { - mmr_t sh_performance_counter0_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t count : 32; - } sh_performance_counter0_s; -} sh_performance_counter0_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNTER1" */ /* Performance Counter 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_counter1_u { mmr_t sh_performance_counter1_regval; struct { @@ -21022,22 +11327,12 @@ mmr_t reserved_0 : 32; } sh_performance_counter1_s; } sh_performance_counter1_u_t; -#else -typedef union sh_performance_counter1_u { - mmr_t sh_performance_counter1_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t count : 32; - } sh_performance_counter1_s; -} sh_performance_counter1_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNTER2" */ /* Performance Counter 2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_counter2_u { mmr_t sh_performance_counter2_regval; struct { @@ -21045,22 +11340,12 @@ mmr_t reserved_0 : 32; } sh_performance_counter2_s; } sh_performance_counter2_u_t; -#else -typedef union sh_performance_counter2_u { - mmr_t sh_performance_counter2_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t count : 32; - } sh_performance_counter2_s; -} sh_performance_counter2_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNTER3" */ /* Performance Counter 3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_counter3_u { mmr_t sh_performance_counter3_regval; struct { @@ -21068,22 +11353,12 @@ mmr_t reserved_0 : 32; } sh_performance_counter3_s; } sh_performance_counter3_u_t; -#else -typedef union sh_performance_counter3_u { - mmr_t sh_performance_counter3_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t count : 32; - } sh_performance_counter3_s; -} sh_performance_counter3_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNTER4" */ /* Performance Counter 4 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_counter4_u { mmr_t sh_performance_counter4_regval; struct { @@ -21091,22 +11366,12 @@ mmr_t reserved_0 : 32; } sh_performance_counter4_s; } sh_performance_counter4_u_t; -#else -typedef union sh_performance_counter4_u { - mmr_t sh_performance_counter4_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t count : 32; - } sh_performance_counter4_s; -} sh_performance_counter4_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNTER5" */ /* Performance Counter 5 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_counter5_u { mmr_t sh_performance_counter5_regval; struct { @@ -21114,22 +11379,12 @@ mmr_t reserved_0 : 32; } sh_performance_counter5_s; } sh_performance_counter5_u_t; -#else -typedef union sh_performance_counter5_u { - mmr_t sh_performance_counter5_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t count : 32; - } sh_performance_counter5_s; -} sh_performance_counter5_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNTER6" */ /* Performance Counter 6 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_counter6_u { mmr_t sh_performance_counter6_regval; struct { @@ -21137,22 +11392,12 @@ mmr_t reserved_0 : 32; } sh_performance_counter6_s; } sh_performance_counter6_u_t; -#else -typedef union sh_performance_counter6_u { - mmr_t sh_performance_counter6_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t count : 32; - } sh_performance_counter6_s; -} sh_performance_counter6_u_t; -#endif /* ==================================================================== */ /* Register "SH_PERFORMANCE_COUNTER7" */ /* Performance Counter 7 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_performance_counter7_u { mmr_t sh_performance_counter7_regval; struct { @@ -21160,22 +11405,12 @@ mmr_t reserved_0 : 32; } sh_performance_counter7_s; } sh_performance_counter7_u_t; -#else -typedef union sh_performance_counter7_u { - mmr_t sh_performance_counter7_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t count : 32; - } sh_performance_counter7_s; -} sh_performance_counter7_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROFILE_COUNTER" */ /* Profile Counter */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_profile_counter_u { mmr_t sh_profile_counter_regval; struct { @@ -21183,22 +11418,12 @@ mmr_t reserved_0 : 56; } sh_profile_counter_s; } sh_profile_counter_u_t; -#else -typedef union sh_profile_counter_u { - mmr_t sh_profile_counter_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t counter : 8; - } sh_profile_counter_s; -} sh_profile_counter_u_t; -#endif /* ==================================================================== */ /* Register "SH_PROFILE_PEAK" */ /* Profile Peak Counter */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_profile_peak_u { mmr_t sh_profile_peak_regval; struct { @@ -21206,22 +11431,12 @@ mmr_t reserved_0 : 56; } sh_profile_peak_s; } sh_profile_peak_u_t; -#else -typedef union sh_profile_peak_u { - mmr_t sh_profile_peak_regval; - struct { - mmr_t reserved_0 : 56; - mmr_t counter : 8; - } sh_profile_peak_s; -} sh_profile_peak_u_t; -#endif /* ==================================================================== */ /* Register "SH_PTC_0" */ /* Puge Translation Cache Message Configuration Information */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ptc_0_u { mmr_t sh_ptc_0_regval; struct { @@ -21233,26 +11448,12 @@ mmr_t start : 1; } sh_ptc_0_s; } sh_ptc_0_u_t; -#else -typedef union sh_ptc_0_u { - mmr_t sh_ptc_0_regval; - struct { - mmr_t start : 1; - mmr_t reserved_1 : 31; - mmr_t rid : 24; - mmr_t ps : 6; - mmr_t reserved_0 : 1; - mmr_t a : 1; - } sh_ptc_0_s; -} sh_ptc_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_PTC_1" */ /* Puge Translation Cache Message Configuration Information */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ptc_1_u { mmr_t sh_ptc_1_regval; struct { @@ -21262,24 +11463,12 @@ mmr_t start : 1; } sh_ptc_1_s; } sh_ptc_1_u_t; -#else -typedef union sh_ptc_1_u { - mmr_t sh_ptc_1_regval; - struct { - mmr_t start : 1; - mmr_t reserved_1 : 2; - mmr_t vpn : 49; - mmr_t reserved_0 : 12; - } sh_ptc_1_s; -} sh_ptc_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_PTC_PARMS" */ /* PTC Time-out parmaeters */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_ptc_parms_u { mmr_t sh_ptc_parms_regval; struct { @@ -21288,23 +11477,12 @@ mmr_t reserved_0 : 28; } sh_ptc_parms_s; } sh_ptc_parms_u_t; -#else -typedef union sh_ptc_parms_u { - mmr_t sh_ptc_parms_regval; - struct { - mmr_t reserved_0 : 28; - mmr_t ptc_to_val : 12; - mmr_t ptc_to_wrap : 24; - } sh_ptc_parms_s; -} sh_ptc_parms_u_t; -#endif /* ==================================================================== */ /* Register "SH_INT_CMPA" */ /* RTC Compare Value for Processor A */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_int_cmpa_u { mmr_t sh_int_cmpa_regval; struct { @@ -21312,22 +11490,12 @@ mmr_t reserved_0 : 9; } sh_int_cmpa_s; } sh_int_cmpa_u_t; -#else -typedef union sh_int_cmpa_u { - mmr_t sh_int_cmpa_regval; - struct { - mmr_t reserved_0 : 9; - mmr_t real_time_cmpa : 55; - } sh_int_cmpa_s; -} sh_int_cmpa_u_t; -#endif /* ==================================================================== */ /* Register "SH_INT_CMPB" */ /* RTC Compare Value for Processor B */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_int_cmpb_u { mmr_t sh_int_cmpb_regval; struct { @@ -21335,22 +11503,12 @@ mmr_t reserved_0 : 9; } sh_int_cmpb_s; } sh_int_cmpb_u_t; -#else -typedef union sh_int_cmpb_u { - mmr_t sh_int_cmpb_regval; - struct { - mmr_t reserved_0 : 9; - mmr_t real_time_cmpb : 55; - } sh_int_cmpb_s; -} sh_int_cmpb_u_t; -#endif /* ==================================================================== */ /* Register "SH_INT_CMPC" */ /* RTC Compare Value for Processor C */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_int_cmpc_u { mmr_t sh_int_cmpc_regval; struct { @@ -21358,22 +11516,12 @@ mmr_t reserved_0 : 9; } sh_int_cmpc_s; } sh_int_cmpc_u_t; -#else -typedef union sh_int_cmpc_u { - mmr_t sh_int_cmpc_regval; - struct { - mmr_t reserved_0 : 9; - mmr_t real_time_cmpc : 55; - } sh_int_cmpc_s; -} sh_int_cmpc_u_t; -#endif /* ==================================================================== */ /* Register "SH_INT_CMPD" */ /* RTC Compare Value for Processor D */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_int_cmpd_u { mmr_t sh_int_cmpd_regval; struct { @@ -21381,22 +11529,12 @@ mmr_t reserved_0 : 9; } sh_int_cmpd_s; } sh_int_cmpd_u_t; -#else -typedef union sh_int_cmpd_u { - mmr_t sh_int_cmpd_regval; - struct { - mmr_t reserved_0 : 9; - mmr_t real_time_cmpd : 55; - } sh_int_cmpd_s; -} sh_int_cmpd_u_t; -#endif /* ==================================================================== */ /* Register "SH_INT_PROF" */ /* Profile Compare Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_int_prof_u { mmr_t sh_int_prof_regval; struct { @@ -21404,22 +11542,12 @@ mmr_t reserved_0 : 32; } sh_int_prof_s; } sh_int_prof_u_t; -#else -typedef union sh_int_prof_u { - mmr_t sh_int_prof_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t profile_compare : 32; - } sh_int_prof_s; -} sh_int_prof_u_t; -#endif /* ==================================================================== */ /* Register "SH_RTC" */ /* Real-time Clock */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_rtc_u { mmr_t sh_rtc_regval; struct { @@ -21427,85 +11555,48 @@ mmr_t reserved_0 : 9; } sh_rtc_s; } sh_rtc_u_t; -#else -typedef union sh_rtc_u { - mmr_t sh_rtc_regval; - struct { - mmr_t reserved_0 : 9; - mmr_t real_time_clock : 55; - } sh_rtc_s; -} sh_rtc_u_t; -#endif /* ==================================================================== */ /* Register "SH_SCRATCH0" */ /* Scratch Register 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_scratch0_u { mmr_t sh_scratch0_regval; struct { mmr_t scratch0 : 64; } sh_scratch0_s; } sh_scratch0_u_t; -#else -typedef union sh_scratch0_u { - mmr_t sh_scratch0_regval; - struct { - mmr_t scratch0 : 64; - } sh_scratch0_s; -} sh_scratch0_u_t; -#endif /* ==================================================================== */ /* Register "SH_SCRATCH1" */ /* Scratch Register 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_scratch1_u { - mmr_t sh_scratch1_regval; - struct { - mmr_t scratch1 : 64; - } sh_scratch1_s; -} sh_scratch1_u_t; -#else typedef union sh_scratch1_u { mmr_t sh_scratch1_regval; struct { mmr_t scratch1 : 64; } sh_scratch1_s; } sh_scratch1_u_t; -#endif /* ==================================================================== */ /* Register "SH_SCRATCH2" */ /* Scratch Register 2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_scratch2_u { - mmr_t sh_scratch2_regval; - struct { - mmr_t scratch2 : 64; - } sh_scratch2_s; -} sh_scratch2_u_t; -#else typedef union sh_scratch2_u { mmr_t sh_scratch2_regval; struct { mmr_t scratch2 : 64; } sh_scratch2_s; } sh_scratch2_u_t; -#endif /* ==================================================================== */ /* Register "SH_SCRATCH3" */ /* Scratch Register 3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_scratch3_u { mmr_t sh_scratch3_regval; struct { @@ -21513,22 +11604,12 @@ mmr_t reserved_0 : 63; } sh_scratch3_s; } sh_scratch3_u_t; -#else -typedef union sh_scratch3_u { - mmr_t sh_scratch3_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t scratch3 : 1; - } sh_scratch3_s; -} sh_scratch3_u_t; -#endif /* ==================================================================== */ /* Register "SH_SCRATCH4" */ /* Scratch Register 4 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_scratch4_u { mmr_t sh_scratch4_regval; struct { @@ -21536,22 +11617,12 @@ mmr_t reserved_0 : 63; } sh_scratch4_s; } sh_scratch4_u_t; -#else -typedef union sh_scratch4_u { - mmr_t sh_scratch4_regval; - struct { - mmr_t reserved_0 : 63; - mmr_t scratch4 : 1; - } sh_scratch4_s; -} sh_scratch4_u_t; -#endif /* ==================================================================== */ /* Register "SH_CRB_MESSAGE_CONTROL" */ /* Coherent Request Buffer Message Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_crb_message_control_u { mmr_t sh_crb_message_control_regval; struct { @@ -21572,35 +11643,12 @@ mmr_t ivack_throttle_control : 16; } sh_crb_message_control_s; } sh_crb_message_control_u_t; -#else -typedef union sh_crb_message_control_u { - mmr_t sh_crb_message_control_regval; - struct { - mmr_t ivack_throttle_control : 16; - mmr_t ivack_stall_count : 16; - mmr_t reserved_0 : 20; - mmr_t enable_ivack_consolidation : 1; - mmr_t suppress_bogus_writes : 1; - mmr_t wrb_attribute_mismatch_xb_enable : 1; - mmr_t rrb_attribute_mismatch_xb_enable : 1; - mmr_t irb_attribute_mismatch_fsb_enable : 1; - mmr_t wrb_attribute_mismatch_fsb_enable : 1; - mmr_t rrb_attribute_mismatch_fsb_enable : 1; - mmr_t message_color_enable : 1; - mmr_t message_color : 1; - mmr_t remote_speculative_message_enable : 1; - mmr_t local_speculative_message_enable : 1; - mmr_t system_coherence_enable : 1; - } sh_crb_message_control_s; -} sh_crb_message_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_CRB_NACK_LIMIT" */ /* CRB Nack Limit */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_crb_nack_limit_u { mmr_t sh_crb_nack_limit_regval; struct { @@ -21610,24 +11658,12 @@ mmr_t enable : 1; } sh_crb_nack_limit_s; } sh_crb_nack_limit_u_t; -#else -typedef union sh_crb_nack_limit_u { - mmr_t sh_crb_nack_limit_regval; - struct { - mmr_t enable : 1; - mmr_t reserved_0 : 47; - mmr_t pri_freq : 4; - mmr_t limit : 12; - } sh_crb_nack_limit_s; -} sh_crb_nack_limit_u_t; -#endif /* ==================================================================== */ /* Register "SH_CRB_TIMEOUT_PRESCALE" */ /* Coherent Request Buffer Timeout Prescale */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_crb_timeout_prescale_u { mmr_t sh_crb_timeout_prescale_regval; struct { @@ -21635,22 +11671,12 @@ mmr_t reserved_0 : 32; } sh_crb_timeout_prescale_s; } sh_crb_timeout_prescale_u_t; -#else -typedef union sh_crb_timeout_prescale_u { - mmr_t sh_crb_timeout_prescale_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t scaling_factor : 32; - } sh_crb_timeout_prescale_s; -} sh_crb_timeout_prescale_u_t; -#endif /* ==================================================================== */ /* Register "SH_CRB_TIMEOUT_SKID" */ /* Coherent Request Buffer Timeout Skid Limit */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_crb_timeout_skid_u { mmr_t sh_crb_timeout_skid_regval; struct { @@ -21659,23 +11685,12 @@ mmr_t reset_skid_count : 1; } sh_crb_timeout_skid_s; } sh_crb_timeout_skid_u_t; -#else -typedef union sh_crb_timeout_skid_u { - mmr_t sh_crb_timeout_skid_regval; - struct { - mmr_t reset_skid_count : 1; - mmr_t reserved_0 : 57; - mmr_t skid : 6; - } sh_crb_timeout_skid_s; -} sh_crb_timeout_skid_u_t; -#endif /* ==================================================================== */ /* Register "SH_MEMORY_WRITE_STATUS_0" */ /* Memory Write Status for CPU 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_memory_write_status_0_u { mmr_t sh_memory_write_status_0_regval; struct { @@ -21683,22 +11698,12 @@ mmr_t reserved_0 : 58; } sh_memory_write_status_0_s; } sh_memory_write_status_0_u_t; -#else -typedef union sh_memory_write_status_0_u { - mmr_t sh_memory_write_status_0_regval; - struct { - mmr_t reserved_0 : 58; - mmr_t pending_write_count : 6; - } sh_memory_write_status_0_s; -} sh_memory_write_status_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_MEMORY_WRITE_STATUS_1" */ /* Memory Write Status for CPU 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_memory_write_status_1_u { mmr_t sh_memory_write_status_1_regval; struct { @@ -21706,22 +11711,12 @@ mmr_t reserved_0 : 58; } sh_memory_write_status_1_s; } sh_memory_write_status_1_u_t; -#else -typedef union sh_memory_write_status_1_u { - mmr_t sh_memory_write_status_1_regval; - struct { - mmr_t reserved_0 : 58; - mmr_t pending_write_count : 6; - } sh_memory_write_status_1_s; -} sh_memory_write_status_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_PIO_WRITE_STATUS_0" */ /* PIO Write Status for CPU 0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pio_write_status_0_u { mmr_t sh_pio_write_status_0_regval; struct { @@ -21735,28 +11730,12 @@ mmr_t writes_ok : 1; } sh_pio_write_status_0_s; } sh_pio_write_status_0_u_t; -#else -typedef union sh_pio_write_status_0_u { - mmr_t sh_pio_write_status_0_regval; - struct { - mmr_t writes_ok : 1; - mmr_t reserved_1 : 1; - mmr_t pending_write_count : 6; - mmr_t reserved_0 : 6; - mmr_t write_error_address : 47; - mmr_t write_error : 1; - mmr_t write_deadlock : 1; - mmr_t multi_write_error : 1; - } sh_pio_write_status_0_s; -} sh_pio_write_status_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_PIO_WRITE_STATUS_1" */ /* PIO Write Status for CPU 1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pio_write_status_1_u { mmr_t sh_pio_write_status_1_regval; struct { @@ -21770,28 +11749,12 @@ mmr_t writes_ok : 1; } sh_pio_write_status_1_s; } sh_pio_write_status_1_u_t; -#else -typedef union sh_pio_write_status_1_u { - mmr_t sh_pio_write_status_1_regval; - struct { - mmr_t writes_ok : 1; - mmr_t reserved_1 : 1; - mmr_t pending_write_count : 6; - mmr_t reserved_0 : 6; - mmr_t write_error_address : 47; - mmr_t write_error : 1; - mmr_t write_deadlock : 1; - mmr_t multi_write_error : 1; - } sh_pio_write_status_1_s; -} sh_pio_write_status_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MEMORY_WRITE_STATUS_NON_USER_0" */ /* Memory Write Status for CPU 0. OS access only */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_memory_write_status_non_user_0_u { mmr_t sh_memory_write_status_non_user_0_regval; struct { @@ -21800,23 +11763,12 @@ mmr_t clear : 1; } sh_memory_write_status_non_user_0_s; } sh_memory_write_status_non_user_0_u_t; -#else -typedef union sh_memory_write_status_non_user_0_u { - mmr_t sh_memory_write_status_non_user_0_regval; - struct { - mmr_t clear : 1; - mmr_t reserved_0 : 57; - mmr_t pending_write_count : 6; - } sh_memory_write_status_non_user_0_s; -} sh_memory_write_status_non_user_0_u_t; -#endif /* ==================================================================== */ /* Register "SH_MEMORY_WRITE_STATUS_NON_USER_1" */ /* Memory Write Status for CPU 1. OS access only */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_memory_write_status_non_user_1_u { mmr_t sh_memory_write_status_non_user_1_regval; struct { @@ -21825,23 +11777,12 @@ mmr_t clear : 1; } sh_memory_write_status_non_user_1_s; } sh_memory_write_status_non_user_1_u_t; -#else -typedef union sh_memory_write_status_non_user_1_u { - mmr_t sh_memory_write_status_non_user_1_regval; - struct { - mmr_t clear : 1; - mmr_t reserved_0 : 57; - mmr_t pending_write_count : 6; - } sh_memory_write_status_non_user_1_s; -} sh_memory_write_status_non_user_1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MMRBIST_ERR" */ /* Error capture for bist read errors */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_mmrbist_err_u { mmr_t sh_mmrbist_err_regval; struct { @@ -21853,26 +11794,12 @@ mmr_t reserved_1 : 25; } sh_mmrbist_err_s; } sh_mmrbist_err_u_t; -#else -typedef union sh_mmrbist_err_u { - mmr_t sh_mmrbist_err_regval; - struct { - mmr_t reserved_1 : 25; - mmr_t cancelled : 1; - mmr_t multiple_detected : 1; - mmr_t detected : 1; - mmr_t reserved_0 : 3; - mmr_t addr : 33; - } sh_mmrbist_err_s; -} sh_mmrbist_err_u_t; -#endif /* ==================================================================== */ /* Register "SH_MISC_ERR_HDR_LOWER" */ /* Header capture register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_misc_err_hdr_lower_u { mmr_t sh_misc_err_hdr_lower_regval; struct { @@ -21886,28 +11813,12 @@ mmr_t valid : 1; } sh_misc_err_hdr_lower_s; } sh_misc_err_hdr_lower_u_t; -#else -typedef union sh_misc_err_hdr_lower_u { - mmr_t sh_misc_err_hdr_lower_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_2 : 2; - mmr_t write : 1; - mmr_t reserved_1 : 2; - mmr_t src : 14; - mmr_t cmd : 8; - mmr_t addr : 33; - mmr_t reserved_0 : 3; - } sh_misc_err_hdr_lower_s; -} sh_misc_err_hdr_lower_u_t; -#endif /* ==================================================================== */ /* Register "SH_MISC_ERR_HDR_UPPER" */ /* Error header capture packet and protocol errors */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_misc_err_hdr_upper_u { mmr_t sh_misc_err_hdr_upper_regval; struct { @@ -21924,31 +11835,12 @@ mmr_t reserved_1 : 35; } sh_misc_err_hdr_upper_s; } sh_misc_err_hdr_upper_u_t; -#else -typedef union sh_misc_err_hdr_upper_u { - mmr_t sh_misc_err_hdr_upper_regval; - struct { - mmr_t reserved_1 : 35; - mmr_t echo : 9; - mmr_t reserved_0 : 12; - mmr_t xn_pkt_size : 1; - mmr_t pi_pkt_size : 1; - mmr_t dir_acc : 1; - mmr_t rmw_cor : 1; - mmr_t rmw_uc : 1; - mmr_t nonexist_addr : 1; - mmr_t illegal_cmd : 1; - mmr_t dir_protocol : 1; - } sh_misc_err_hdr_upper_s; -} sh_misc_err_hdr_upper_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIR_UC_ERR_HDR_LOWER" */ /* Header capture register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_dir_uc_err_hdr_lower_u { mmr_t sh_dir_uc_err_hdr_lower_regval; struct { @@ -21962,28 +11854,12 @@ mmr_t valid : 1; } sh_dir_uc_err_hdr_lower_s; } sh_dir_uc_err_hdr_lower_u_t; -#else -typedef union sh_dir_uc_err_hdr_lower_u { - mmr_t sh_dir_uc_err_hdr_lower_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_2 : 2; - mmr_t write : 1; - mmr_t reserved_1 : 2; - mmr_t src : 14; - mmr_t cmd : 8; - mmr_t addr : 33; - mmr_t reserved_0 : 3; - } sh_dir_uc_err_hdr_lower_s; -} sh_dir_uc_err_hdr_lower_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIR_UC_ERR_HDR_UPPER" */ /* Error header capture packet and protocol errors */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_dir_uc_err_hdr_upper_u { mmr_t sh_dir_uc_err_hdr_upper_regval; struct { @@ -21994,25 +11870,12 @@ mmr_t reserved_2 : 35; } sh_dir_uc_err_hdr_upper_s; } sh_dir_uc_err_hdr_upper_u_t; -#else -typedef union sh_dir_uc_err_hdr_upper_u { - mmr_t sh_dir_uc_err_hdr_upper_regval; - struct { - mmr_t reserved_2 : 35; - mmr_t echo : 9; - mmr_t reserved_1 : 16; - mmr_t dir_uc : 1; - mmr_t reserved_0 : 3; - } sh_dir_uc_err_hdr_upper_s; -} sh_dir_uc_err_hdr_upper_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIR_COR_ERR_HDR_LOWER" */ /* Header capture register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_dir_cor_err_hdr_lower_u { mmr_t sh_dir_cor_err_hdr_lower_regval; struct { @@ -22026,28 +11889,12 @@ mmr_t valid : 1; } sh_dir_cor_err_hdr_lower_s; } sh_dir_cor_err_hdr_lower_u_t; -#else -typedef union sh_dir_cor_err_hdr_lower_u { - mmr_t sh_dir_cor_err_hdr_lower_regval; - struct { - mmr_t valid : 1; - mmr_t reserved_2 : 2; - mmr_t write : 1; - mmr_t reserved_1 : 2; - mmr_t src : 14; - mmr_t cmd : 8; - mmr_t addr : 33; - mmr_t reserved_0 : 3; - } sh_dir_cor_err_hdr_lower_s; -} sh_dir_cor_err_hdr_lower_u_t; -#endif /* ==================================================================== */ /* Register "SH_DIR_COR_ERR_HDR_UPPER" */ /* Error header capture packet and protocol errors */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_dir_cor_err_hdr_upper_u { mmr_t sh_dir_cor_err_hdr_upper_regval; struct { @@ -22058,25 +11905,12 @@ mmr_t reserved_2 : 35; } sh_dir_cor_err_hdr_upper_s; } sh_dir_cor_err_hdr_upper_u_t; -#else -typedef union sh_dir_cor_err_hdr_upper_u { - mmr_t sh_dir_cor_err_hdr_upper_regval; - struct { - mmr_t reserved_2 : 35; - mmr_t echo : 9; - mmr_t reserved_1 : 11; - mmr_t dir_cor : 1; - mmr_t reserved_0 : 8; - } sh_dir_cor_err_hdr_upper_s; -} sh_dir_cor_err_hdr_upper_u_t; -#endif /* ==================================================================== */ /* Register "SH_MEM_ERROR_SUMMARY" */ /* Memory error flags */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_mem_error_summary_u { mmr_t sh_mem_error_summary_regval; struct { @@ -22118,56 +11952,12 @@ mmr_t reserved_5 : 29; } sh_mem_error_summary_s; } sh_mem_error_summary_u_t; -#else -typedef union sh_mem_error_summary_u { - mmr_t sh_mem_error_summary_regval; - struct { - mmr_t reserved_5 : 29; - mmr_t xn_pkt_size : 1; - mmr_t pi_pkt_size : 1; - mmr_t red_black_err_timeout : 1; - mmr_t xn_request_overflow : 1; - mmr_t pi_request_overflow : 1; - mmr_t xn_reply_overflow : 1; - mmr_t pi_reply_overflow : 1; - mmr_t reserved_4 : 1; - mmr_t dqrs_int_hw : 1; - mmr_t dqrs_int_cor : 1; - mmr_t dqrs_int_uc : 1; - mmr_t reserved_3 : 1; - mmr_t dqrp_int_hw : 1; - mmr_t dqrp_int_cor : 1; - mmr_t dqrp_int_uc : 1; - mmr_t reserved_2 : 1; - mmr_t dqls_int_hw : 1; - mmr_t dqls_int_cor : 1; - mmr_t dqls_int_uc : 1; - mmr_t reserved_1 : 1; - mmr_t dqlp_int_hw : 1; - mmr_t dqlp_int_cor : 1; - mmr_t dqlp_int_uc : 1; - mmr_t reserved_0 : 1; - mmr_t dir_acc : 1; - mmr_t acy_int_hw : 1; - mmr_t acx_int_hw : 1; - mmr_t dqrp_dir_cor : 1; - mmr_t dqrp_dir_uc : 1; - mmr_t dqlp_dir_cor : 1; - mmr_t dqlp_dir_uc : 1; - mmr_t dqrp_dir_perr : 1; - mmr_t dqlp_dir_perr : 1; - mmr_t nonexist_addr : 1; - mmr_t illegal_cmd : 1; - } sh_mem_error_summary_s; -} sh_mem_error_summary_u_t; -#endif /* ==================================================================== */ /* Register "SH_MEM_ERROR_OVERFLOW" */ /* Memory error flags */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_mem_error_overflow_u { mmr_t sh_mem_error_overflow_regval; struct { @@ -22209,56 +11999,12 @@ mmr_t reserved_5 : 29; } sh_mem_error_overflow_s; } sh_mem_error_overflow_u_t; -#else -typedef union sh_mem_error_overflow_u { - mmr_t sh_mem_error_overflow_regval; - struct { - mmr_t reserved_5 : 29; - mmr_t xn_pkt_size : 1; - mmr_t pi_pkt_size : 1; - mmr_t red_black_err_timeout : 1; - mmr_t xn_request_overflow : 1; - mmr_t pi_request_overflow : 1; - mmr_t xn_reply_overflow : 1; - mmr_t pi_reply_overflow : 1; - mmr_t reserved_4 : 1; - mmr_t dqrs_int_hw : 1; - mmr_t dqrs_int_cor : 1; - mmr_t dqrs_int_uc : 1; - mmr_t reserved_3 : 1; - mmr_t dqrp_int_hw : 1; - mmr_t dqrp_int_cor : 1; - mmr_t dqrp_int_uc : 1; - mmr_t reserved_2 : 1; - mmr_t dqls_int_hw : 1; - mmr_t dqls_int_cor : 1; - mmr_t dqls_int_uc : 1; - mmr_t reserved_1 : 1; - mmr_t dqlp_int_hw : 1; - mmr_t dqlp_int_cor : 1; - mmr_t dqlp_int_uc : 1; - mmr_t reserved_0 : 1; - mmr_t dir_acc : 1; - mmr_t acy_int_hw : 1; - mmr_t acx_int_hw : 1; - mmr_t dqrp_dir_cor : 1; - mmr_t dqrp_dir_uc : 1; - mmr_t dqlp_dir_cor : 1; - mmr_t dqlp_dir_uc : 1; - mmr_t dqrp_dir_perr : 1; - mmr_t dqlp_dir_perr : 1; - mmr_t nonexist_addr : 1; - mmr_t illegal_cmd : 1; - } sh_mem_error_overflow_s; -} sh_mem_error_overflow_u_t; -#endif /* ==================================================================== */ /* Register "SH_MEM_ERROR_MASK" */ /* Memory error flags */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_mem_error_mask_u { mmr_t sh_mem_error_mask_regval; struct { @@ -22300,56 +12046,12 @@ mmr_t reserved_5 : 29; } sh_mem_error_mask_s; } sh_mem_error_mask_u_t; -#else -typedef union sh_mem_error_mask_u { - mmr_t sh_mem_error_mask_regval; - struct { - mmr_t reserved_5 : 29; - mmr_t xn_pkt_size : 1; - mmr_t pi_pkt_size : 1; - mmr_t red_black_err_timeout : 1; - mmr_t xn_request_overflow : 1; - mmr_t pi_request_overflow : 1; - mmr_t xn_reply_overflow : 1; - mmr_t pi_reply_overflow : 1; - mmr_t reserved_4 : 1; - mmr_t dqrs_int_hw : 1; - mmr_t dqrs_int_cor : 1; - mmr_t dqrs_int_uc : 1; - mmr_t reserved_3 : 1; - mmr_t dqrp_int_hw : 1; - mmr_t dqrp_int_cor : 1; - mmr_t dqrp_int_uc : 1; - mmr_t reserved_2 : 1; - mmr_t dqls_int_hw : 1; - mmr_t dqls_int_cor : 1; - mmr_t dqls_int_uc : 1; - mmr_t reserved_1 : 1; - mmr_t dqlp_int_hw : 1; - mmr_t dqlp_int_cor : 1; - mmr_t dqlp_int_uc : 1; - mmr_t reserved_0 : 1; - mmr_t dir_acc : 1; - mmr_t acy_int_hw : 1; - mmr_t acx_int_hw : 1; - mmr_t dqrp_dir_cor : 1; - mmr_t dqrp_dir_uc : 1; - mmr_t dqlp_dir_cor : 1; - mmr_t dqlp_dir_uc : 1; - mmr_t dqrp_dir_perr : 1; - mmr_t dqlp_dir_perr : 1; - mmr_t nonexist_addr : 1; - mmr_t illegal_cmd : 1; - } sh_mem_error_mask_s; -} sh_mem_error_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_DIMM_CFG" */ /* AC Mem Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_dimm_cfg_u { mmr_t sh_x_dimm_cfg_regval; struct { @@ -22377,42 +12079,12 @@ mmr_t reserved_4 : 28; } sh_x_dimm_cfg_s; } sh_x_dimm_cfg_u_t; -#else -typedef union sh_x_dimm_cfg_u { - mmr_t sh_x_dimm_cfg_regval; - struct { - mmr_t reserved_4 : 28; - mmr_t freq : 4; - mmr_t reserved_3 : 1; - mmr_t dimm3_cs : 2; - mmr_t dimm3_rev : 1; - mmr_t dimm3_2bk : 1; - mmr_t dimm3_size : 3; - mmr_t reserved_2 : 1; - mmr_t dimm2_cs : 2; - mmr_t dimm2_rev : 1; - mmr_t dimm2_2bk : 1; - mmr_t dimm2_size : 3; - mmr_t reserved_1 : 1; - mmr_t dimm1_cs : 2; - mmr_t dimm1_rev : 1; - mmr_t dimm1_2bk : 1; - mmr_t dimm1_size : 3; - mmr_t reserved_0 : 1; - mmr_t dimm0_cs : 2; - mmr_t dimm0_rev : 1; - mmr_t dimm0_2bk : 1; - mmr_t dimm0_size : 3; - } sh_x_dimm_cfg_s; -} sh_x_dimm_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_DIMM_CFG" */ /* AC Mem Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_dimm_cfg_u { mmr_t sh_y_dimm_cfg_regval; struct { @@ -22440,42 +12112,12 @@ mmr_t reserved_4 : 28; } sh_y_dimm_cfg_s; } sh_y_dimm_cfg_u_t; -#else -typedef union sh_y_dimm_cfg_u { - mmr_t sh_y_dimm_cfg_regval; - struct { - mmr_t reserved_4 : 28; - mmr_t freq : 4; - mmr_t reserved_3 : 1; - mmr_t dimm3_cs : 2; - mmr_t dimm3_rev : 1; - mmr_t dimm3_2bk : 1; - mmr_t dimm3_size : 3; - mmr_t reserved_2 : 1; - mmr_t dimm2_cs : 2; - mmr_t dimm2_rev : 1; - mmr_t dimm2_2bk : 1; - mmr_t dimm2_size : 3; - mmr_t reserved_1 : 1; - mmr_t dimm1_cs : 2; - mmr_t dimm1_rev : 1; - mmr_t dimm1_2bk : 1; - mmr_t dimm1_size : 3; - mmr_t reserved_0 : 1; - mmr_t dimm0_cs : 2; - mmr_t dimm0_rev : 1; - mmr_t dimm0_2bk : 1; - mmr_t dimm0_size : 3; - } sh_y_dimm_cfg_s; -} sh_y_dimm_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_JNR_DIMM_CFG" */ /* AC Mem Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_jnr_dimm_cfg_u { mmr_t sh_jnr_dimm_cfg_regval; struct { @@ -22503,42 +12145,12 @@ mmr_t reserved_4 : 28; } sh_jnr_dimm_cfg_s; } sh_jnr_dimm_cfg_u_t; -#else -typedef union sh_jnr_dimm_cfg_u { - mmr_t sh_jnr_dimm_cfg_regval; - struct { - mmr_t reserved_4 : 28; - mmr_t freq : 4; - mmr_t reserved_3 : 1; - mmr_t dimm3_cs : 2; - mmr_t dimm3_rev : 1; - mmr_t dimm3_2bk : 1; - mmr_t dimm3_size : 3; - mmr_t reserved_2 : 1; - mmr_t dimm2_cs : 2; - mmr_t dimm2_rev : 1; - mmr_t dimm2_2bk : 1; - mmr_t dimm2_size : 3; - mmr_t reserved_1 : 1; - mmr_t dimm1_cs : 2; - mmr_t dimm1_rev : 1; - mmr_t dimm1_2bk : 1; - mmr_t dimm1_size : 3; - mmr_t reserved_0 : 1; - mmr_t dimm0_cs : 2; - mmr_t dimm0_rev : 1; - mmr_t dimm0_2bk : 1; - mmr_t dimm0_size : 3; - } sh_jnr_dimm_cfg_s; -} sh_jnr_dimm_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_PHASE_CFG" */ /* AC Phase Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_phase_cfg_u { mmr_t sh_x_phase_cfg_regval; struct { @@ -22560,36 +12172,12 @@ mmr_t reserved_0 : 1; } sh_x_phase_cfg_s; } sh_x_phase_cfg_u_t; -#else -typedef union sh_x_phase_cfg_u { - mmr_t sh_x_phase_cfg_regval; - struct { - mmr_t reserved_0 : 1; - mmr_t dq_sel_a : 4; - mmr_t sel_a : 4; - mmr_t phe_bubble : 3; - mmr_t phd_bubble : 3; - mmr_t phc_bubble : 3; - mmr_t phb_bubble : 3; - mmr_t pha_bubble : 3; - mmr_t bubble_en : 5; - mmr_t add_cp : 5; - mmr_t hold_req : 5; - mmr_t hold : 5; - mmr_t dq_ld_b : 5; - mmr_t dq_ld_a : 5; - mmr_t ld_b : 5; - mmr_t ld_a : 5; - } sh_x_phase_cfg_s; -} sh_x_phase_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_CFG" */ /* AC Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_cfg_u { mmr_t sh_x_cfg_regval; struct { @@ -22609,34 +12197,12 @@ mmr_t clr_dir_cache : 1; } sh_x_cfg_s; } sh_x_cfg_u_t; -#else -typedef union sh_x_cfg_u { - mmr_t sh_x_cfg_regval; - struct { - mmr_t clr_dir_cache : 1; - mmr_t inv_cas_addr : 1; - mmr_t req_cntr_val : 6; - mmr_t req_cntr_dis : 1; - mmr_t trcd4_en : 1; - mmr_t trcd2_en : 1; - mmr_t sso_wt_en : 1; - mmr_t wt_bb_clr : 4; - mmr_t dc_bb_clr : 4; - mmr_t da_bb_clr : 4; - mmr_t ta_dlys : 32; - mmr_t dir_counter_init : 6; - mmr_t dirc_random_replacement : 1; - mmr_t mode_serial : 1; - } sh_x_cfg_s; -} sh_x_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_DQCT_CFG" */ /* AC Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_dqct_cfg_u { mmr_t sh_x_dqct_cfg_regval; struct { @@ -22649,27 +12215,12 @@ mmr_t reserved_0 : 40; } sh_x_dqct_cfg_s; } sh_x_dqct_cfg_u_t; -#else -typedef union sh_x_dqct_cfg_u { - mmr_t sh_x_dqct_cfg_regval; - struct { - mmr_t reserved_0 : 40; - mmr_t mdir_rd_sel : 4; - mmr_t dir_rd_sel : 4; - mmr_t dta_wt_sel : 4; - mmr_t dta_rd_sel : 4; - mmr_t wt_sel : 4; - mmr_t rd_sel : 4; - } sh_x_dqct_cfg_s; -} sh_x_dqct_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_REFRESH_CONTROL" */ /* Refresh Control Register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_refresh_control_u { mmr_t sh_x_refresh_control_regval; struct { @@ -22681,26 +12232,12 @@ mmr_t reserved_0 : 36; } sh_x_refresh_control_s; } sh_x_refresh_control_u_t; -#else -typedef union sh_x_refresh_control_u { - mmr_t sh_x_refresh_control_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t half_rate : 4; - mmr_t interleave : 1; - mmr_t hold : 6; - mmr_t interval : 9; - mmr_t enable : 8; - } sh_x_refresh_control_s; -} sh_x_refresh_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_PHASE_CFG" */ /* AC Phase Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_phase_cfg_u { mmr_t sh_y_phase_cfg_regval; struct { @@ -22722,36 +12259,12 @@ mmr_t reserved_0 : 1; } sh_y_phase_cfg_s; } sh_y_phase_cfg_u_t; -#else -typedef union sh_y_phase_cfg_u { - mmr_t sh_y_phase_cfg_regval; - struct { - mmr_t reserved_0 : 1; - mmr_t dq_sel_a : 4; - mmr_t sel_a : 4; - mmr_t phe_bubble : 3; - mmr_t phd_bubble : 3; - mmr_t phc_bubble : 3; - mmr_t phb_bubble : 3; - mmr_t pha_bubble : 3; - mmr_t bubble_en : 5; - mmr_t add_cp : 5; - mmr_t hold_req : 5; - mmr_t hold : 5; - mmr_t dq_ld_b : 5; - mmr_t dq_ld_a : 5; - mmr_t ld_b : 5; - mmr_t ld_a : 5; - } sh_y_phase_cfg_s; -} sh_y_phase_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_CFG" */ /* AC Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_cfg_u { mmr_t sh_y_cfg_regval; struct { @@ -22771,34 +12284,12 @@ mmr_t clr_dir_cache : 1; } sh_y_cfg_s; } sh_y_cfg_u_t; -#else -typedef union sh_y_cfg_u { - mmr_t sh_y_cfg_regval; - struct { - mmr_t clr_dir_cache : 1; - mmr_t inv_cas_addr : 1; - mmr_t req_cntr_val : 6; - mmr_t req_cntr_dis : 1; - mmr_t trcd4_en : 1; - mmr_t trcd2_en : 1; - mmr_t sso_wt_en : 1; - mmr_t wt_bb_clr : 4; - mmr_t dc_bb_clr : 4; - mmr_t da_bb_clr : 4; - mmr_t ta_dlys : 32; - mmr_t dir_counter_init : 6; - mmr_t dirc_random_replacement : 1; - mmr_t mode_serial : 1; - } sh_y_cfg_s; -} sh_y_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_DQCT_CFG" */ /* AC Config Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_dqct_cfg_u { mmr_t sh_y_dqct_cfg_regval; struct { @@ -22811,27 +12302,12 @@ mmr_t reserved_0 : 40; } sh_y_dqct_cfg_s; } sh_y_dqct_cfg_u_t; -#else -typedef union sh_y_dqct_cfg_u { - mmr_t sh_y_dqct_cfg_regval; - struct { - mmr_t reserved_0 : 40; - mmr_t mdir_rd_sel : 4; - mmr_t dir_rd_sel : 4; - mmr_t dta_wt_sel : 4; - mmr_t dta_rd_sel : 4; - mmr_t wt_sel : 4; - mmr_t rd_sel : 4; - } sh_y_dqct_cfg_s; -} sh_y_dqct_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_REFRESH_CONTROL" */ /* Refresh Control Register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_refresh_control_u { mmr_t sh_y_refresh_control_regval; struct { @@ -22843,26 +12319,12 @@ mmr_t reserved_0 : 36; } sh_y_refresh_control_s; } sh_y_refresh_control_u_t; -#else -typedef union sh_y_refresh_control_u { - mmr_t sh_y_refresh_control_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t half_rate : 4; - mmr_t interleave : 1; - mmr_t hold : 6; - mmr_t interval : 9; - mmr_t enable : 8; - } sh_y_refresh_control_s; -} sh_y_refresh_control_u_t; -#endif /* ==================================================================== */ /* Register "SH_MEM_RED_BLACK" */ /* MD fairness watchdog timers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_mem_red_black_u { mmr_t sh_mem_red_black_regval; struct { @@ -22871,22 +12333,11 @@ mmr_t reserved_0 : 12; } sh_mem_red_black_s; } sh_mem_red_black_u_t; -#else -typedef union sh_mem_red_black_u { - mmr_t sh_mem_red_black_regval; - struct { - mmr_t reserved_0 : 12; - mmr_t err_time : 36; - mmr_t time : 16; - } sh_mem_red_black_s; -} sh_mem_red_black_u_t; -#endif /* ==================================================================== */ /* Register "SH_MISC_MEM_CFG" */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_misc_mem_cfg_u { mmr_t sh_misc_mem_cfg_regval; struct { @@ -22909,37 +12360,12 @@ mmr_t reserved_5 : 11; } sh_misc_mem_cfg_s; } sh_misc_mem_cfg_u_t; -#else -typedef union sh_misc_mem_cfg_u { - mmr_t sh_misc_mem_cfg_regval; - struct { - mmr_t reserved_5 : 11; - mmr_t alternate_xn_rp_plane : 1; - mmr_t reserved_4 : 2; - mmr_t disabled_victims : 6; - mmr_t reserved_3 : 3; - mmr_t disabled_write_tnums : 5; - mmr_t reserved_2 : 3; - mmr_t disabled_read_tnums : 5; - mmr_t throttle_cnt : 8; - mmr_t reserved_1 : 2; - mmr_t low_victim_buffer_threshold : 6; - mmr_t reserved_0 : 2; - mmr_t low_write_buffer_threshold : 6; - mmr_t xn_rd_same_as_pi : 1; - mmr_t jnr_bypass_enable : 1; - mmr_t spec_header_enable : 1; - mmr_t express_header_enable : 1; - } sh_misc_mem_cfg_s; -} sh_misc_mem_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_PIO_RQ_CRD_CTL" */ /* pio_rq Credit Circulation Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pio_rq_crd_ctl_u { mmr_t sh_pio_rq_crd_ctl_regval; struct { @@ -22947,22 +12373,12 @@ mmr_t reserved_0 : 58; } sh_pio_rq_crd_ctl_s; } sh_pio_rq_crd_ctl_u_t; -#else -typedef union sh_pio_rq_crd_ctl_u { - mmr_t sh_pio_rq_crd_ctl_regval; - struct { - mmr_t reserved_0 : 58; - mmr_t depth : 6; - } sh_pio_rq_crd_ctl_s; -} sh_pio_rq_crd_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_MD_RQ_CRD_CTL" */ /* pi_md_rq Credit Circulation Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_md_rq_crd_ctl_u { mmr_t sh_pi_md_rq_crd_ctl_regval; struct { @@ -22970,22 +12386,12 @@ mmr_t reserved_0 : 58; } sh_pi_md_rq_crd_ctl_s; } sh_pi_md_rq_crd_ctl_u_t; -#else -typedef union sh_pi_md_rq_crd_ctl_u { - mmr_t sh_pi_md_rq_crd_ctl_regval; - struct { - mmr_t reserved_0 : 58; - mmr_t depth : 6; - } sh_pi_md_rq_crd_ctl_s; -} sh_pi_md_rq_crd_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_PI_MD_RP_CRD_CTL" */ /* pi_md_rp Credit Circulation Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_pi_md_rp_crd_ctl_u { mmr_t sh_pi_md_rp_crd_ctl_regval; struct { @@ -22993,22 +12399,12 @@ mmr_t reserved_0 : 58; } sh_pi_md_rp_crd_ctl_s; } sh_pi_md_rp_crd_ctl_u_t; -#else -typedef union sh_pi_md_rp_crd_ctl_u { - mmr_t sh_pi_md_rp_crd_ctl_regval; - struct { - mmr_t reserved_0 : 58; - mmr_t depth : 6; - } sh_pi_md_rp_crd_ctl_s; -} sh_pi_md_rp_crd_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_RQ_CRD_CTL" */ /* xn_md_rq Credit Circulation Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_md_rq_crd_ctl_u { mmr_t sh_xn_md_rq_crd_ctl_regval; struct { @@ -23016,22 +12412,12 @@ mmr_t reserved_0 : 58; } sh_xn_md_rq_crd_ctl_s; } sh_xn_md_rq_crd_ctl_u_t; -#else -typedef union sh_xn_md_rq_crd_ctl_u { - mmr_t sh_xn_md_rq_crd_ctl_regval; - struct { - mmr_t reserved_0 : 58; - mmr_t depth : 6; - } sh_xn_md_rq_crd_ctl_s; -} sh_xn_md_rq_crd_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_XN_MD_RP_CRD_CTL" */ /* xn_md_rp Credit Circulation Control */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_xn_md_rp_crd_ctl_u { mmr_t sh_xn_md_rp_crd_ctl_regval; struct { @@ -23039,22 +12425,12 @@ mmr_t reserved_0 : 58; } sh_xn_md_rp_crd_ctl_s; } sh_xn_md_rp_crd_ctl_u_t; -#else -typedef union sh_xn_md_rp_crd_ctl_u { - mmr_t sh_xn_md_rp_crd_ctl_regval; - struct { - mmr_t reserved_0 : 58; - mmr_t depth : 6; - } sh_xn_md_rp_crd_ctl_s; -} sh_xn_md_rp_crd_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_TAG0" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_tag0_u { mmr_t sh_x_tag0_regval; struct { @@ -23062,22 +12438,12 @@ mmr_t reserved_0 : 44; } sh_x_tag0_s; } sh_x_tag0_u_t; -#else -typedef union sh_x_tag0_u { - mmr_t sh_x_tag0_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_x_tag0_s; -} sh_x_tag0_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_TAG1" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_tag1_u { mmr_t sh_x_tag1_regval; struct { @@ -23085,22 +12451,12 @@ mmr_t reserved_0 : 44; } sh_x_tag1_s; } sh_x_tag1_u_t; -#else -typedef union sh_x_tag1_u { - mmr_t sh_x_tag1_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_x_tag1_s; -} sh_x_tag1_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_TAG2" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_tag2_u { mmr_t sh_x_tag2_regval; struct { @@ -23108,22 +12464,12 @@ mmr_t reserved_0 : 44; } sh_x_tag2_s; } sh_x_tag2_u_t; -#else -typedef union sh_x_tag2_u { - mmr_t sh_x_tag2_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_x_tag2_s; -} sh_x_tag2_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_TAG3" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_tag3_u { mmr_t sh_x_tag3_regval; struct { @@ -23131,22 +12477,12 @@ mmr_t reserved_0 : 44; } sh_x_tag3_s; } sh_x_tag3_u_t; -#else -typedef union sh_x_tag3_u { - mmr_t sh_x_tag3_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_x_tag3_s; -} sh_x_tag3_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_TAG4" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_tag4_u { mmr_t sh_x_tag4_regval; struct { @@ -23154,22 +12490,12 @@ mmr_t reserved_0 : 44; } sh_x_tag4_s; } sh_x_tag4_u_t; -#else -typedef union sh_x_tag4_u { - mmr_t sh_x_tag4_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_x_tag4_s; -} sh_x_tag4_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_TAG5" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_tag5_u { mmr_t sh_x_tag5_regval; struct { @@ -23177,22 +12503,12 @@ mmr_t reserved_0 : 44; } sh_x_tag5_s; } sh_x_tag5_u_t; -#else -typedef union sh_x_tag5_u { - mmr_t sh_x_tag5_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_x_tag5_s; -} sh_x_tag5_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_TAG6" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_tag6_u { mmr_t sh_x_tag6_regval; struct { @@ -23200,22 +12516,12 @@ mmr_t reserved_0 : 44; } sh_x_tag6_s; } sh_x_tag6_u_t; -#else -typedef union sh_x_tag6_u { - mmr_t sh_x_tag6_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_x_tag6_s; -} sh_x_tag6_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_TAG7" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_tag7_u { mmr_t sh_x_tag7_regval; struct { @@ -23223,22 +12529,12 @@ mmr_t reserved_0 : 44; } sh_x_tag7_s; } sh_x_tag7_u_t; -#else -typedef union sh_x_tag7_u { - mmr_t sh_x_tag7_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_x_tag7_s; -} sh_x_tag7_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_TAG0" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_tag0_u { mmr_t sh_y_tag0_regval; struct { @@ -23246,22 +12542,12 @@ mmr_t reserved_0 : 44; } sh_y_tag0_s; } sh_y_tag0_u_t; -#else -typedef union sh_y_tag0_u { - mmr_t sh_y_tag0_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_y_tag0_s; -} sh_y_tag0_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_TAG1" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_tag1_u { mmr_t sh_y_tag1_regval; struct { @@ -23269,22 +12555,12 @@ mmr_t reserved_0 : 44; } sh_y_tag1_s; } sh_y_tag1_u_t; -#else -typedef union sh_y_tag1_u { - mmr_t sh_y_tag1_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_y_tag1_s; -} sh_y_tag1_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_TAG2" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_tag2_u { mmr_t sh_y_tag2_regval; struct { @@ -23292,22 +12568,12 @@ mmr_t reserved_0 : 44; } sh_y_tag2_s; } sh_y_tag2_u_t; -#else -typedef union sh_y_tag2_u { - mmr_t sh_y_tag2_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_y_tag2_s; -} sh_y_tag2_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_TAG3" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_tag3_u { mmr_t sh_y_tag3_regval; struct { @@ -23315,22 +12581,12 @@ mmr_t reserved_0 : 44; } sh_y_tag3_s; } sh_y_tag3_u_t; -#else -typedef union sh_y_tag3_u { - mmr_t sh_y_tag3_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_y_tag3_s; -} sh_y_tag3_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_TAG4" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_tag4_u { mmr_t sh_y_tag4_regval; struct { @@ -23338,22 +12594,12 @@ mmr_t reserved_0 : 44; } sh_y_tag4_s; } sh_y_tag4_u_t; -#else -typedef union sh_y_tag4_u { - mmr_t sh_y_tag4_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_y_tag4_s; -} sh_y_tag4_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_TAG5" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_tag5_u { mmr_t sh_y_tag5_regval; struct { @@ -23361,22 +12607,12 @@ mmr_t reserved_0 : 44; } sh_y_tag5_s; } sh_y_tag5_u_t; -#else -typedef union sh_y_tag5_u { - mmr_t sh_y_tag5_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_y_tag5_s; -} sh_y_tag5_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_TAG6" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_tag6_u { mmr_t sh_y_tag6_regval; struct { @@ -23384,22 +12620,12 @@ mmr_t reserved_0 : 44; } sh_y_tag6_s; } sh_y_tag6_u_t; -#else -typedef union sh_y_tag6_u { - mmr_t sh_y_tag6_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_y_tag6_s; -} sh_y_tag6_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_TAG7" */ /* AC tag Registers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_tag7_u { mmr_t sh_y_tag7_regval; struct { @@ -23407,22 +12633,12 @@ mmr_t reserved_0 : 44; } sh_y_tag7_s; } sh_y_tag7_u_t; -#else -typedef union sh_y_tag7_u { - mmr_t sh_y_tag7_regval; - struct { - mmr_t reserved_0 : 44; - mmr_t tag : 20; - } sh_y_tag7_s; -} sh_y_tag7_u_t; -#endif /* ==================================================================== */ /* Register "SH_MMRBIST_BASE" */ /* mmr/bist base address */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_mmrbist_base_u { mmr_t sh_mmrbist_base_regval; struct { @@ -23431,23 +12647,12 @@ mmr_t reserved_1 : 14; } sh_mmrbist_base_s; } sh_mmrbist_base_u_t; -#else -typedef union sh_mmrbist_base_u { - mmr_t sh_mmrbist_base_regval; - struct { - mmr_t reserved_1 : 14; - mmr_t dword_addr : 47; - mmr_t reserved_0 : 3; - } sh_mmrbist_base_s; -} sh_mmrbist_base_u_t; -#endif /* ==================================================================== */ /* Register "SH_MMRBIST_CTL" */ /* Bist base address */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_mmrbist_ctl_u { mmr_t sh_mmrbist_ctl_regval; struct { @@ -23463,30 +12668,12 @@ mmr_t reserved_3 : 19; } sh_mmrbist_ctl_s; } sh_mmrbist_ctl_u_t; -#else -typedef union sh_mmrbist_ctl_u { - mmr_t sh_mmrbist_ctl_regval; - struct { - mmr_t reserved_3 : 19; - mmr_t reset_state : 1; - mmr_t reserved_2 : 1; - mmr_t mem_idle : 1; - mmr_t fail : 1; - mmr_t in_progress : 1; - mmr_t reserved_1 : 1; - mmr_t cmd : 7; - mmr_t reserved_0 : 1; - mmr_t block_length : 31; - } sh_mmrbist_ctl_s; -} sh_mmrbist_ctl_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DBUG_DATA_CFG" */ /* configuration for md debug data muxes */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dbug_data_cfg_u { mmr_t sh_md_dbug_data_cfg_regval; struct { @@ -23524,52 +12711,12 @@ mmr_t reserved_15 : 1; } sh_md_dbug_data_cfg_s; } sh_md_dbug_data_cfg_u_t; -#else -typedef union sh_md_dbug_data_cfg_u { - mmr_t sh_md_dbug_data_cfg_regval; - struct { - mmr_t reserved_15 : 1; - mmr_t nibble7_nibble : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_chiplet : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_chiplet : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_chiplet : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_chiplet : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_chiplet : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_chiplet : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_chiplet : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_chiplet : 3; - } sh_md_dbug_data_cfg_s; -} sh_md_dbug_data_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DBUG_TRIGGER_CFG" */ /* configuration for md debug triggers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dbug_trigger_cfg_u { mmr_t sh_md_dbug_trigger_cfg_regval; struct { @@ -23607,52 +12754,12 @@ mmr_t enable : 1; } sh_md_dbug_trigger_cfg_s; } sh_md_dbug_trigger_cfg_u_t; -#else -typedef union sh_md_dbug_trigger_cfg_u { - mmr_t sh_md_dbug_trigger_cfg_regval; - struct { - mmr_t enable : 1; - mmr_t nibble7_nibble : 3; - mmr_t reserved_14 : 1; - mmr_t nibble7_chiplet : 3; - mmr_t reserved_13 : 1; - mmr_t nibble6_nibble : 3; - mmr_t reserved_12 : 1; - mmr_t nibble6_chiplet : 3; - mmr_t reserved_11 : 1; - mmr_t nibble5_nibble : 3; - mmr_t reserved_10 : 1; - mmr_t nibble5_chiplet : 3; - mmr_t reserved_9 : 1; - mmr_t nibble4_nibble : 3; - mmr_t reserved_8 : 1; - mmr_t nibble4_chiplet : 3; - mmr_t reserved_7 : 1; - mmr_t nibble3_nibble : 3; - mmr_t reserved_6 : 1; - mmr_t nibble3_chiplet : 3; - mmr_t reserved_5 : 1; - mmr_t nibble2_nibble : 3; - mmr_t reserved_4 : 1; - mmr_t nibble2_chiplet : 3; - mmr_t reserved_3 : 1; - mmr_t nibble1_nibble : 3; - mmr_t reserved_2 : 1; - mmr_t nibble1_chiplet : 3; - mmr_t reserved_1 : 1; - mmr_t nibble0_nibble : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_chiplet : 3; - } sh_md_dbug_trigger_cfg_s; -} sh_md_dbug_trigger_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DBUG_COMPARE" */ /* md debug compare pattern and mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dbug_compare_u { mmr_t sh_md_dbug_compare_regval; struct { @@ -23660,22 +12767,12 @@ mmr_t mask : 32; } sh_md_dbug_compare_s; } sh_md_dbug_compare_u_t; -#else -typedef union sh_md_dbug_compare_u { - mmr_t sh_md_dbug_compare_regval; - struct { - mmr_t mask : 32; - mmr_t pattern : 32; - } sh_md_dbug_compare_s; -} sh_md_dbug_compare_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_MOD_DBUG_SEL" */ /* MD acx debug select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_mod_dbug_sel_u { mmr_t sh_x_mod_dbug_sel_regval; struct { @@ -23689,28 +12786,12 @@ mmr_t reserved_0 : 6; } sh_x_mod_dbug_sel_s; } sh_x_mod_dbug_sel_u_t; -#else -typedef union sh_x_mod_dbug_sel_u { - mmr_t sh_x_mod_dbug_sel_regval; - struct { - mmr_t reserved_0 : 6; - mmr_t dqr_sel : 6; - mmr_t dql_sel : 6; - mmr_t atr_sel : 11; - mmr_t atl_sel : 11; - mmr_t arb_sel : 8; - mmr_t wbq_sel : 8; - mmr_t tag_sel : 8; - } sh_x_mod_dbug_sel_s; -} sh_x_mod_dbug_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_DBUG_SEL" */ /* MD acx debug select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_dbug_sel_u { mmr_t sh_x_dbug_sel_regval; struct { @@ -23718,22 +12799,12 @@ mmr_t reserved_0 : 40; } sh_x_dbug_sel_s; } sh_x_dbug_sel_u_t; -#else -typedef union sh_x_dbug_sel_u { - mmr_t sh_x_dbug_sel_regval; - struct { - mmr_t reserved_0 : 40; - mmr_t dbg_sel : 24; - } sh_x_dbug_sel_s; -} sh_x_dbug_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_LADDR_CMP" */ /* MD acx address compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_laddr_cmp_u { mmr_t sh_x_laddr_cmp_regval; struct { @@ -23743,24 +12814,12 @@ mmr_t reserved_1 : 4; } sh_x_laddr_cmp_s; } sh_x_laddr_cmp_u_t; -#else -typedef union sh_x_laddr_cmp_u { - mmr_t sh_x_laddr_cmp_regval; - struct { - mmr_t reserved_1 : 4; - mmr_t mask_val : 28; - mmr_t reserved_0 : 4; - mmr_t cmp_val : 28; - } sh_x_laddr_cmp_s; -} sh_x_laddr_cmp_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_RADDR_CMP" */ /* MD acx address compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_raddr_cmp_u { mmr_t sh_x_raddr_cmp_regval; struct { @@ -23770,24 +12829,12 @@ mmr_t reserved_1 : 4; } sh_x_raddr_cmp_s; } sh_x_raddr_cmp_u_t; -#else -typedef union sh_x_raddr_cmp_u { - mmr_t sh_x_raddr_cmp_regval; - struct { - mmr_t reserved_1 : 4; - mmr_t mask_val : 28; - mmr_t reserved_0 : 4; - mmr_t cmp_val : 28; - } sh_x_raddr_cmp_s; -} sh_x_raddr_cmp_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_TAG_CMP" */ /* MD acx tagmgr compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_tag_cmp_u { mmr_t sh_x_tag_cmp_regval; struct { @@ -23797,24 +12844,12 @@ mmr_t reserved_0 : 9; } sh_x_tag_cmp_s; } sh_x_tag_cmp_u_t; -#else -typedef union sh_x_tag_cmp_u { - mmr_t sh_x_tag_cmp_regval; - struct { - mmr_t reserved_0 : 9; - mmr_t src : 14; - mmr_t addr : 33; - mmr_t cmd : 8; - } sh_x_tag_cmp_s; -} sh_x_tag_cmp_u_t; -#endif /* ==================================================================== */ /* Register "SH_X_TAG_MASK" */ /* MD acx tagmgr mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_x_tag_mask_u { mmr_t sh_x_tag_mask_regval; struct { @@ -23824,24 +12859,12 @@ mmr_t reserved_0 : 9; } sh_x_tag_mask_s; } sh_x_tag_mask_u_t; -#else -typedef union sh_x_tag_mask_u { - mmr_t sh_x_tag_mask_regval; - struct { - mmr_t reserved_0 : 9; - mmr_t src : 14; - mmr_t addr : 33; - mmr_t cmd : 8; - } sh_x_tag_mask_s; -} sh_x_tag_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_MOD_DBUG_SEL" */ /* MD acy debug select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_mod_dbug_sel_u { mmr_t sh_y_mod_dbug_sel_regval; struct { @@ -23855,28 +12878,12 @@ mmr_t reserved_0 : 6; } sh_y_mod_dbug_sel_s; } sh_y_mod_dbug_sel_u_t; -#else -typedef union sh_y_mod_dbug_sel_u { - mmr_t sh_y_mod_dbug_sel_regval; - struct { - mmr_t reserved_0 : 6; - mmr_t dqr_sel : 6; - mmr_t dql_sel : 6; - mmr_t atr_sel : 11; - mmr_t atl_sel : 11; - mmr_t arb_sel : 8; - mmr_t wbq_sel : 8; - mmr_t tag_sel : 8; - } sh_y_mod_dbug_sel_s; -} sh_y_mod_dbug_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_DBUG_SEL" */ /* MD acy debug select */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_dbug_sel_u { mmr_t sh_y_dbug_sel_regval; struct { @@ -23884,22 +12891,12 @@ mmr_t reserved_0 : 40; } sh_y_dbug_sel_s; } sh_y_dbug_sel_u_t; -#else -typedef union sh_y_dbug_sel_u { - mmr_t sh_y_dbug_sel_regval; - struct { - mmr_t reserved_0 : 40; - mmr_t dbg_sel : 24; - } sh_y_dbug_sel_s; -} sh_y_dbug_sel_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_LADDR_CMP" */ /* MD acy address compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_laddr_cmp_u { mmr_t sh_y_laddr_cmp_regval; struct { @@ -23909,24 +12906,12 @@ mmr_t reserved_1 : 4; } sh_y_laddr_cmp_s; } sh_y_laddr_cmp_u_t; -#else -typedef union sh_y_laddr_cmp_u { - mmr_t sh_y_laddr_cmp_regval; - struct { - mmr_t reserved_1 : 4; - mmr_t mask_val : 28; - mmr_t reserved_0 : 4; - mmr_t cmp_val : 28; - } sh_y_laddr_cmp_s; -} sh_y_laddr_cmp_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_RADDR_CMP" */ /* MD acy address compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_raddr_cmp_u { mmr_t sh_y_raddr_cmp_regval; struct { @@ -23936,24 +12921,12 @@ mmr_t reserved_1 : 4; } sh_y_raddr_cmp_s; } sh_y_raddr_cmp_u_t; -#else -typedef union sh_y_raddr_cmp_u { - mmr_t sh_y_raddr_cmp_regval; - struct { - mmr_t reserved_1 : 4; - mmr_t mask_val : 28; - mmr_t reserved_0 : 4; - mmr_t cmp_val : 28; - } sh_y_raddr_cmp_s; -} sh_y_raddr_cmp_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_TAG_CMP" */ /* MD acy tagmgr compare */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_tag_cmp_u { mmr_t sh_y_tag_cmp_regval; struct { @@ -23963,24 +12936,12 @@ mmr_t reserved_0 : 9; } sh_y_tag_cmp_s; } sh_y_tag_cmp_u_t; -#else -typedef union sh_y_tag_cmp_u { - mmr_t sh_y_tag_cmp_regval; - struct { - mmr_t reserved_0 : 9; - mmr_t src : 14; - mmr_t addr : 33; - mmr_t cmd : 8; - } sh_y_tag_cmp_s; -} sh_y_tag_cmp_u_t; -#endif /* ==================================================================== */ /* Register "SH_Y_TAG_MASK" */ /* MD acy tagmgr mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_y_tag_mask_u { mmr_t sh_y_tag_mask_regval; struct { @@ -23990,24 +12951,12 @@ mmr_t reserved_0 : 9; } sh_y_tag_mask_s; } sh_y_tag_mask_u_t; -#else -typedef union sh_y_tag_mask_u { - mmr_t sh_y_tag_mask_regval; - struct { - mmr_t reserved_0 : 9; - mmr_t src : 14; - mmr_t addr : 33; - mmr_t cmd : 8; - } sh_y_tag_mask_s; -} sh_y_tag_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_JNR_DBUG_DATA_CFG" */ /* configuration for md jnr debug data muxes */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_jnr_dbug_data_cfg_u { mmr_t sh_md_jnr_dbug_data_cfg_regval; struct { @@ -24029,36 +12978,12 @@ mmr_t reserved_7 : 33; } sh_md_jnr_dbug_data_cfg_s; } sh_md_jnr_dbug_data_cfg_u_t; -#else -typedef union sh_md_jnr_dbug_data_cfg_u { - mmr_t sh_md_jnr_dbug_data_cfg_regval; - struct { - mmr_t reserved_7 : 33; - mmr_t nibble7_sel : 3; - mmr_t reserved_6 : 1; - mmr_t nibble6_sel : 3; - mmr_t reserved_5 : 1; - mmr_t nibble5_sel : 3; - mmr_t reserved_4 : 1; - mmr_t nibble4_sel : 3; - mmr_t reserved_3 : 1; - mmr_t nibble3_sel : 3; - mmr_t reserved_2 : 1; - mmr_t nibble2_sel : 3; - mmr_t reserved_1 : 1; - mmr_t nibble1_sel : 3; - mmr_t reserved_0 : 1; - mmr_t nibble0_sel : 3; - } sh_md_jnr_dbug_data_cfg_s; -} sh_md_jnr_dbug_data_cfg_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_LAST_CREDIT" */ /* captures last credit values on reset */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_last_credit_u { mmr_t sh_md_last_credit_regval; struct { @@ -24074,30 +12999,12 @@ mmr_t reserved_4 : 26; } sh_md_last_credit_s; } sh_md_last_credit_u_t; -#else -typedef union sh_md_last_credit_u { - mmr_t sh_md_last_credit_regval; - struct { - mmr_t reserved_4 : 26; - mmr_t to_lb : 6; - mmr_t reserved_3 : 2; - mmr_t rp_to_xn : 6; - mmr_t reserved_2 : 2; - mmr_t rq_to_xn : 6; - mmr_t reserved_1 : 2; - mmr_t rp_to_pi : 6; - mmr_t reserved_0 : 2; - mmr_t rq_to_pi : 6; - } sh_md_last_credit_s; -} sh_md_last_credit_u_t; -#endif /* ==================================================================== */ /* Register "SH_MEM_CAPTURE_ADDR" */ /* Address capture address register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_mem_capture_addr_u { mmr_t sh_mem_capture_addr_regval; struct { @@ -24107,24 +13014,12 @@ mmr_t reserved_1 : 20; } sh_mem_capture_addr_s; } sh_mem_capture_addr_u_t; -#else -typedef union sh_mem_capture_addr_u { - mmr_t sh_mem_capture_addr_regval; - struct { - mmr_t reserved_1 : 20; - mmr_t cmd : 8; - mmr_t addr : 33; - mmr_t reserved_0 : 3; - } sh_mem_capture_addr_s; -} sh_mem_capture_addr_u_t; -#endif /* ==================================================================== */ /* Register "SH_MEM_CAPTURE_MASK" */ /* Address capture mask register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_mem_capture_mask_u { mmr_t sh_mem_capture_mask_regval; struct { @@ -24136,26 +13031,12 @@ mmr_t reserved_1 : 18; } sh_mem_capture_mask_s; } sh_mem_capture_mask_u_t; -#else -typedef union sh_mem_capture_mask_u { - mmr_t sh_mem_capture_mask_regval; - struct { - mmr_t reserved_1 : 18; - mmr_t enable_remote : 1; - mmr_t enable_local : 1; - mmr_t cmd : 8; - mmr_t addr : 33; - mmr_t reserved_0 : 3; - } sh_mem_capture_mask_s; -} sh_mem_capture_mask_u_t; -#endif /* ==================================================================== */ /* Register "SH_MEM_CAPTURE_HDR" */ /* Address capture header register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_mem_capture_hdr_u { mmr_t sh_mem_capture_hdr_regval; struct { @@ -24166,25 +13047,12 @@ mmr_t cntr : 6; } sh_mem_capture_hdr_s; } sh_mem_capture_hdr_u_t; -#else -typedef union sh_mem_capture_hdr_u { - mmr_t sh_mem_capture_hdr_regval; - struct { - mmr_t cntr : 6; - mmr_t src : 14; - mmr_t cmd : 8; - mmr_t addr : 33; - mmr_t reserved_0 : 3; - } sh_mem_capture_hdr_s; -} sh_mem_capture_hdr_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_CONFIG" */ /* DQ directory config register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_config_u { mmr_t sh_md_dqlp_mmr_dir_config_regval; struct { @@ -24194,276 +13062,156 @@ mmr_t reserved_0 : 59; } sh_md_dqlp_mmr_dir_config_s; } sh_md_dqlp_mmr_dir_config_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_config_u { - mmr_t sh_md_dqlp_mmr_dir_config_regval; - struct { - mmr_t reserved_0 : 59; - mmr_t en_dirpois : 1; - mmr_t en_direcc : 1; - mmr_t sys_size : 3; - } sh_md_dqlp_mmr_dir_config_s; -} sh_md_dqlp_mmr_dir_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_PRESVEC0" */ /* node [63:0] presence bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqlp_mmr_dir_presvec0_u { - mmr_t sh_md_dqlp_mmr_dir_presvec0_regval; - struct { - mmr_t vec : 64; - } sh_md_dqlp_mmr_dir_presvec0_s; -} sh_md_dqlp_mmr_dir_presvec0_u_t; -#else typedef union sh_md_dqlp_mmr_dir_presvec0_u { mmr_t sh_md_dqlp_mmr_dir_presvec0_regval; struct { mmr_t vec : 64; } sh_md_dqlp_mmr_dir_presvec0_s; } sh_md_dqlp_mmr_dir_presvec0_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_PRESVEC1" */ /* node [127:64] presence bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqlp_mmr_dir_presvec1_u { - mmr_t sh_md_dqlp_mmr_dir_presvec1_regval; - struct { - mmr_t vec : 64; - } sh_md_dqlp_mmr_dir_presvec1_s; -} sh_md_dqlp_mmr_dir_presvec1_u_t; -#else typedef union sh_md_dqlp_mmr_dir_presvec1_u { mmr_t sh_md_dqlp_mmr_dir_presvec1_regval; struct { mmr_t vec : 64; } sh_md_dqlp_mmr_dir_presvec1_s; } sh_md_dqlp_mmr_dir_presvec1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_PRESVEC2" */ /* node [191:128] presence bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqlp_mmr_dir_presvec2_u { - mmr_t sh_md_dqlp_mmr_dir_presvec2_regval; - struct { - mmr_t vec : 64; - } sh_md_dqlp_mmr_dir_presvec2_s; -} sh_md_dqlp_mmr_dir_presvec2_u_t; -#else typedef union sh_md_dqlp_mmr_dir_presvec2_u { mmr_t sh_md_dqlp_mmr_dir_presvec2_regval; struct { mmr_t vec : 64; } sh_md_dqlp_mmr_dir_presvec2_s; } sh_md_dqlp_mmr_dir_presvec2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_PRESVEC3" */ /* node [255:192] presence bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqlp_mmr_dir_presvec3_u { - mmr_t sh_md_dqlp_mmr_dir_presvec3_regval; - struct { - mmr_t vec : 64; - } sh_md_dqlp_mmr_dir_presvec3_s; -} sh_md_dqlp_mmr_dir_presvec3_u_t; -#else typedef union sh_md_dqlp_mmr_dir_presvec3_u { mmr_t sh_md_dqlp_mmr_dir_presvec3_regval; struct { mmr_t vec : 64; } sh_md_dqlp_mmr_dir_presvec3_s; } sh_md_dqlp_mmr_dir_presvec3_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_LOCVEC0" */ /* local vector for acc=0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_locvec0_u { mmr_t sh_md_dqlp_mmr_dir_locvec0_regval; struct { mmr_t vec : 64; } sh_md_dqlp_mmr_dir_locvec0_s; } sh_md_dqlp_mmr_dir_locvec0_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_locvec0_u { - mmr_t sh_md_dqlp_mmr_dir_locvec0_regval; - struct { - mmr_t vec : 64; - } sh_md_dqlp_mmr_dir_locvec0_s; -} sh_md_dqlp_mmr_dir_locvec0_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_LOCVEC1" */ /* local vector for acc=1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqlp_mmr_dir_locvec1_u { - mmr_t sh_md_dqlp_mmr_dir_locvec1_regval; - struct { - mmr_t vec : 64; - } sh_md_dqlp_mmr_dir_locvec1_s; -} sh_md_dqlp_mmr_dir_locvec1_u_t; -#else typedef union sh_md_dqlp_mmr_dir_locvec1_u { mmr_t sh_md_dqlp_mmr_dir_locvec1_regval; struct { mmr_t vec : 64; } sh_md_dqlp_mmr_dir_locvec1_s; } sh_md_dqlp_mmr_dir_locvec1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_LOCVEC2" */ /* local vector for acc=2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqlp_mmr_dir_locvec2_u { - mmr_t sh_md_dqlp_mmr_dir_locvec2_regval; - struct { - mmr_t vec : 64; - } sh_md_dqlp_mmr_dir_locvec2_s; -} sh_md_dqlp_mmr_dir_locvec2_u_t; -#else typedef union sh_md_dqlp_mmr_dir_locvec2_u { mmr_t sh_md_dqlp_mmr_dir_locvec2_regval; struct { mmr_t vec : 64; } sh_md_dqlp_mmr_dir_locvec2_s; } sh_md_dqlp_mmr_dir_locvec2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_LOCVEC3" */ /* local vector for acc=3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqlp_mmr_dir_locvec3_u { - mmr_t sh_md_dqlp_mmr_dir_locvec3_regval; - struct { - mmr_t vec : 64; - } sh_md_dqlp_mmr_dir_locvec3_s; -} sh_md_dqlp_mmr_dir_locvec3_u_t; -#else typedef union sh_md_dqlp_mmr_dir_locvec3_u { mmr_t sh_md_dqlp_mmr_dir_locvec3_regval; struct { mmr_t vec : 64; } sh_md_dqlp_mmr_dir_locvec3_s; } sh_md_dqlp_mmr_dir_locvec3_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_LOCVEC4" */ /* local vector for acc=4 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqlp_mmr_dir_locvec4_u { - mmr_t sh_md_dqlp_mmr_dir_locvec4_regval; - struct { - mmr_t vec : 64; - } sh_md_dqlp_mmr_dir_locvec4_s; -} sh_md_dqlp_mmr_dir_locvec4_u_t; -#else typedef union sh_md_dqlp_mmr_dir_locvec4_u { mmr_t sh_md_dqlp_mmr_dir_locvec4_regval; struct { mmr_t vec : 64; } sh_md_dqlp_mmr_dir_locvec4_s; } sh_md_dqlp_mmr_dir_locvec4_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_LOCVEC5" */ /* local vector for acc=5 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqlp_mmr_dir_locvec5_u { - mmr_t sh_md_dqlp_mmr_dir_locvec5_regval; - struct { - mmr_t vec : 64; - } sh_md_dqlp_mmr_dir_locvec5_s; -} sh_md_dqlp_mmr_dir_locvec5_u_t; -#else typedef union sh_md_dqlp_mmr_dir_locvec5_u { mmr_t sh_md_dqlp_mmr_dir_locvec5_regval; struct { mmr_t vec : 64; } sh_md_dqlp_mmr_dir_locvec5_s; } sh_md_dqlp_mmr_dir_locvec5_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_LOCVEC6" */ /* local vector for acc=6 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqlp_mmr_dir_locvec6_u { - mmr_t sh_md_dqlp_mmr_dir_locvec6_regval; - struct { - mmr_t vec : 64; - } sh_md_dqlp_mmr_dir_locvec6_s; -} sh_md_dqlp_mmr_dir_locvec6_u_t; -#else typedef union sh_md_dqlp_mmr_dir_locvec6_u { mmr_t sh_md_dqlp_mmr_dir_locvec6_regval; struct { mmr_t vec : 64; } sh_md_dqlp_mmr_dir_locvec6_s; } sh_md_dqlp_mmr_dir_locvec6_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_LOCVEC7" */ /* local vector for acc=7 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_locvec7_u { mmr_t sh_md_dqlp_mmr_dir_locvec7_regval; struct { mmr_t vec : 64; } sh_md_dqlp_mmr_dir_locvec7_s; } sh_md_dqlp_mmr_dir_locvec7_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_locvec7_u { - mmr_t sh_md_dqlp_mmr_dir_locvec7_regval; - struct { - mmr_t vec : 64; - } sh_md_dqlp_mmr_dir_locvec7_s; -} sh_md_dqlp_mmr_dir_locvec7_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_PRIVEC0" */ /* privilege vector for acc=0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_privec0_u { mmr_t sh_md_dqlp_mmr_dir_privec0_regval; struct { @@ -24472,23 +13220,12 @@ mmr_t reserved_0 : 36; } sh_md_dqlp_mmr_dir_privec0_s; } sh_md_dqlp_mmr_dir_privec0_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_privec0_u { - mmr_t sh_md_dqlp_mmr_dir_privec0_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqlp_mmr_dir_privec0_s; -} sh_md_dqlp_mmr_dir_privec0_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_PRIVEC1" */ /* privilege vector for acc=1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_privec1_u { mmr_t sh_md_dqlp_mmr_dir_privec1_regval; struct { @@ -24497,23 +13234,12 @@ mmr_t reserved_0 : 36; } sh_md_dqlp_mmr_dir_privec1_s; } sh_md_dqlp_mmr_dir_privec1_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_privec1_u { - mmr_t sh_md_dqlp_mmr_dir_privec1_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqlp_mmr_dir_privec1_s; -} sh_md_dqlp_mmr_dir_privec1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_PRIVEC2" */ /* privilege vector for acc=2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_privec2_u { mmr_t sh_md_dqlp_mmr_dir_privec2_regval; struct { @@ -24522,23 +13248,12 @@ mmr_t reserved_0 : 36; } sh_md_dqlp_mmr_dir_privec2_s; } sh_md_dqlp_mmr_dir_privec2_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_privec2_u { - mmr_t sh_md_dqlp_mmr_dir_privec2_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqlp_mmr_dir_privec2_s; -} sh_md_dqlp_mmr_dir_privec2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_PRIVEC3" */ /* privilege vector for acc=3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_privec3_u { mmr_t sh_md_dqlp_mmr_dir_privec3_regval; struct { @@ -24547,23 +13262,12 @@ mmr_t reserved_0 : 36; } sh_md_dqlp_mmr_dir_privec3_s; } sh_md_dqlp_mmr_dir_privec3_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_privec3_u { - mmr_t sh_md_dqlp_mmr_dir_privec3_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqlp_mmr_dir_privec3_s; -} sh_md_dqlp_mmr_dir_privec3_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_PRIVEC4" */ /* privilege vector for acc=4 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_privec4_u { mmr_t sh_md_dqlp_mmr_dir_privec4_regval; struct { @@ -24572,23 +13276,12 @@ mmr_t reserved_0 : 36; } sh_md_dqlp_mmr_dir_privec4_s; } sh_md_dqlp_mmr_dir_privec4_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_privec4_u { - mmr_t sh_md_dqlp_mmr_dir_privec4_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqlp_mmr_dir_privec4_s; -} sh_md_dqlp_mmr_dir_privec4_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_PRIVEC5" */ /* privilege vector for acc=5 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_privec5_u { mmr_t sh_md_dqlp_mmr_dir_privec5_regval; struct { @@ -24597,23 +13290,12 @@ mmr_t reserved_0 : 36; } sh_md_dqlp_mmr_dir_privec5_s; } sh_md_dqlp_mmr_dir_privec5_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_privec5_u { - mmr_t sh_md_dqlp_mmr_dir_privec5_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqlp_mmr_dir_privec5_s; -} sh_md_dqlp_mmr_dir_privec5_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_PRIVEC6" */ /* privilege vector for acc=6 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_privec6_u { mmr_t sh_md_dqlp_mmr_dir_privec6_regval; struct { @@ -24622,23 +13304,12 @@ mmr_t reserved_0 : 36; } sh_md_dqlp_mmr_dir_privec6_s; } sh_md_dqlp_mmr_dir_privec6_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_privec6_u { - mmr_t sh_md_dqlp_mmr_dir_privec6_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqlp_mmr_dir_privec6_s; -} sh_md_dqlp_mmr_dir_privec6_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_PRIVEC7" */ /* privilege vector for acc=7 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_privec7_u { mmr_t sh_md_dqlp_mmr_dir_privec7_regval; struct { @@ -24647,23 +13318,12 @@ mmr_t reserved_0 : 36; } sh_md_dqlp_mmr_dir_privec7_s; } sh_md_dqlp_mmr_dir_privec7_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_privec7_u { - mmr_t sh_md_dqlp_mmr_dir_privec7_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqlp_mmr_dir_privec7_s; -} sh_md_dqlp_mmr_dir_privec7_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_TIMER" */ /* MD SXRO timer */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_timer_u { mmr_t sh_md_dqlp_mmr_dir_timer_regval; struct { @@ -24673,24 +13333,12 @@ mmr_t reserved_0 : 42; } sh_md_dqlp_mmr_dir_timer_s; } sh_md_dqlp_mmr_dir_timer_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_timer_u { - mmr_t sh_md_dqlp_mmr_dir_timer_regval; - struct { - mmr_t reserved_0 : 42; - mmr_t timer_cur : 9; - mmr_t timer_en : 1; - mmr_t timer_div : 12; - } sh_md_dqlp_mmr_dir_timer_s; -} sh_md_dqlp_mmr_dir_timer_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_PIOWD_DIR_ENTRY" */ /* directory pio write data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_piowd_dir_entry_u { mmr_t sh_md_dqlp_mmr_piowd_dir_entry_regval; struct { @@ -24701,25 +13349,12 @@ mmr_t reserved_0 : 6; } sh_md_dqlp_mmr_piowd_dir_entry_s; } sh_md_dqlp_mmr_piowd_dir_entry_u_t; -#else -typedef union sh_md_dqlp_mmr_piowd_dir_entry_u { - mmr_t sh_md_dqlp_mmr_piowd_dir_entry_regval; - struct { - mmr_t reserved_0 : 6; - mmr_t acc : 3; - mmr_t pri : 3; - mmr_t dirb : 26; - mmr_t dira : 26; - } sh_md_dqlp_mmr_piowd_dir_entry_s; -} sh_md_dqlp_mmr_piowd_dir_entry_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_PIOWD_DIR_ECC" */ /* directory ecc register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_piowd_dir_ecc_u { mmr_t sh_md_dqlp_mmr_piowd_dir_ecc_regval; struct { @@ -24728,23 +13363,12 @@ mmr_t reserved_0 : 50; } sh_md_dqlp_mmr_piowd_dir_ecc_s; } sh_md_dqlp_mmr_piowd_dir_ecc_u_t; -#else -typedef union sh_md_dqlp_mmr_piowd_dir_ecc_u { - mmr_t sh_md_dqlp_mmr_piowd_dir_ecc_regval; - struct { - mmr_t reserved_0 : 50; - mmr_t eccb : 7; - mmr_t ecca : 7; - } sh_md_dqlp_mmr_piowd_dir_ecc_s; -} sh_md_dqlp_mmr_piowd_dir_ecc_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_XPIORD_XDIR_ENTRY" */ /* x directory pio read data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_xpiord_xdir_entry_u { mmr_t sh_md_dqlp_mmr_xpiord_xdir_entry_regval; struct { @@ -24757,27 +13381,12 @@ mmr_t reserved_0 : 4; } sh_md_dqlp_mmr_xpiord_xdir_entry_s; } sh_md_dqlp_mmr_xpiord_xdir_entry_u_t; -#else -typedef union sh_md_dqlp_mmr_xpiord_xdir_entry_u { - mmr_t sh_md_dqlp_mmr_xpiord_xdir_entry_regval; - struct { - mmr_t reserved_0 : 4; - mmr_t unc : 1; - mmr_t cor : 1; - mmr_t acc : 3; - mmr_t pri : 3; - mmr_t dirb : 26; - mmr_t dira : 26; - } sh_md_dqlp_mmr_xpiord_xdir_entry_s; -} sh_md_dqlp_mmr_xpiord_xdir_entry_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_XPIORD_XDIR_ECC" */ /* x directory ecc */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_xpiord_xdir_ecc_u { mmr_t sh_md_dqlp_mmr_xpiord_xdir_ecc_regval; struct { @@ -24786,23 +13395,12 @@ mmr_t reserved_0 : 50; } sh_md_dqlp_mmr_xpiord_xdir_ecc_s; } sh_md_dqlp_mmr_xpiord_xdir_ecc_u_t; -#else -typedef union sh_md_dqlp_mmr_xpiord_xdir_ecc_u { - mmr_t sh_md_dqlp_mmr_xpiord_xdir_ecc_regval; - struct { - mmr_t reserved_0 : 50; - mmr_t eccb : 7; - mmr_t ecca : 7; - } sh_md_dqlp_mmr_xpiord_xdir_ecc_s; -} sh_md_dqlp_mmr_xpiord_xdir_ecc_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_YPIORD_YDIR_ENTRY" */ /* y directory pio read data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_ypiord_ydir_entry_u { mmr_t sh_md_dqlp_mmr_ypiord_ydir_entry_regval; struct { @@ -24815,27 +13413,12 @@ mmr_t reserved_0 : 4; } sh_md_dqlp_mmr_ypiord_ydir_entry_s; } sh_md_dqlp_mmr_ypiord_ydir_entry_u_t; -#else -typedef union sh_md_dqlp_mmr_ypiord_ydir_entry_u { - mmr_t sh_md_dqlp_mmr_ypiord_ydir_entry_regval; - struct { - mmr_t reserved_0 : 4; - mmr_t unc : 1; - mmr_t cor : 1; - mmr_t acc : 3; - mmr_t pri : 3; - mmr_t dirb : 26; - mmr_t dira : 26; - } sh_md_dqlp_mmr_ypiord_ydir_entry_s; -} sh_md_dqlp_mmr_ypiord_ydir_entry_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_YPIORD_YDIR_ECC" */ /* y directory ecc */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_ypiord_ydir_ecc_u { mmr_t sh_md_dqlp_mmr_ypiord_ydir_ecc_regval; struct { @@ -24844,23 +13427,12 @@ mmr_t reserved_0 : 50; } sh_md_dqlp_mmr_ypiord_ydir_ecc_s; } sh_md_dqlp_mmr_ypiord_ydir_ecc_u_t; -#else -typedef union sh_md_dqlp_mmr_ypiord_ydir_ecc_u { - mmr_t sh_md_dqlp_mmr_ypiord_ydir_ecc_regval; - struct { - mmr_t reserved_0 : 50; - mmr_t eccb : 7; - mmr_t ecca : 7; - } sh_md_dqlp_mmr_ypiord_ydir_ecc_s; -} sh_md_dqlp_mmr_ypiord_ydir_ecc_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_XCERR1" */ /* correctable dir ecc group 1 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_xcerr1_u { mmr_t sh_md_dqlp_mmr_xcerr1_regval; struct { @@ -24871,25 +13443,12 @@ mmr_t reserved_0 : 25; } sh_md_dqlp_mmr_xcerr1_s; } sh_md_dqlp_mmr_xcerr1_u_t; -#else -typedef union sh_md_dqlp_mmr_xcerr1_u { - mmr_t sh_md_dqlp_mmr_xcerr1_regval; - struct { - mmr_t reserved_0 : 25; - mmr_t arm : 1; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp1 : 36; - } sh_md_dqlp_mmr_xcerr1_s; -} sh_md_dqlp_mmr_xcerr1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_XCERR2" */ /* correctable dir ecc group 2 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_xcerr2_u { mmr_t sh_md_dqlp_mmr_xcerr2_regval; struct { @@ -24899,24 +13458,12 @@ mmr_t reserved_0 : 26; } sh_md_dqlp_mmr_xcerr2_s; } sh_md_dqlp_mmr_xcerr2_u_t; -#else -typedef union sh_md_dqlp_mmr_xcerr2_u { - mmr_t sh_md_dqlp_mmr_xcerr2_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp2 : 36; - } sh_md_dqlp_mmr_xcerr2_s; -} sh_md_dqlp_mmr_xcerr2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_XUERR1" */ /* uncorrectable dir ecc group 1 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_xuerr1_u { mmr_t sh_md_dqlp_mmr_xuerr1_regval; struct { @@ -24927,25 +13474,12 @@ mmr_t reserved_0 : 25; } sh_md_dqlp_mmr_xuerr1_s; } sh_md_dqlp_mmr_xuerr1_u_t; -#else -typedef union sh_md_dqlp_mmr_xuerr1_u { - mmr_t sh_md_dqlp_mmr_xuerr1_regval; - struct { - mmr_t reserved_0 : 25; - mmr_t arm : 1; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp1 : 36; - } sh_md_dqlp_mmr_xuerr1_s; -} sh_md_dqlp_mmr_xuerr1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_XUERR2" */ /* uncorrectable dir ecc group 2 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_xuerr2_u { mmr_t sh_md_dqlp_mmr_xuerr2_regval; struct { @@ -24955,24 +13489,12 @@ mmr_t reserved_0 : 26; } sh_md_dqlp_mmr_xuerr2_s; } sh_md_dqlp_mmr_xuerr2_u_t; -#else -typedef union sh_md_dqlp_mmr_xuerr2_u { - mmr_t sh_md_dqlp_mmr_xuerr2_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp2 : 36; - } sh_md_dqlp_mmr_xuerr2_s; -} sh_md_dqlp_mmr_xuerr2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_XPERR" */ /* protocol error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_xperr_u { mmr_t sh_md_dqlp_mmr_xperr_regval; struct { @@ -24990,32 +13512,12 @@ mmr_t reserved_0 : 1; } sh_md_dqlp_mmr_xperr_s; } sh_md_dqlp_mmr_xperr_u_t; -#else -typedef union sh_md_dqlp_mmr_xperr_u { - mmr_t sh_md_dqlp_mmr_xperr_regval; - struct { - mmr_t reserved_0 : 1; - mmr_t arm : 1; - mmr_t more : 1; - mmr_t val : 1; - mmr_t mybit : 8; - mmr_t unc : 1; - mmr_t cor : 1; - mmr_t priv : 1; - mmr_t prige : 1; - mmr_t src : 14; - mmr_t cmd : 8; - mmr_t dir : 26; - } sh_md_dqlp_mmr_xperr_s; -} sh_md_dqlp_mmr_xperr_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_YCERR1" */ /* correctable dir ecc group 1 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_ycerr1_u { mmr_t sh_md_dqlp_mmr_ycerr1_regval; struct { @@ -25026,25 +13528,12 @@ mmr_t reserved_0 : 25; } sh_md_dqlp_mmr_ycerr1_s; } sh_md_dqlp_mmr_ycerr1_u_t; -#else -typedef union sh_md_dqlp_mmr_ycerr1_u { - mmr_t sh_md_dqlp_mmr_ycerr1_regval; - struct { - mmr_t reserved_0 : 25; - mmr_t arm : 1; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp1 : 36; - } sh_md_dqlp_mmr_ycerr1_s; -} sh_md_dqlp_mmr_ycerr1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_YCERR2" */ /* correctable dir ecc group 2 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_ycerr2_u { mmr_t sh_md_dqlp_mmr_ycerr2_regval; struct { @@ -25054,24 +13543,12 @@ mmr_t reserved_0 : 26; } sh_md_dqlp_mmr_ycerr2_s; } sh_md_dqlp_mmr_ycerr2_u_t; -#else -typedef union sh_md_dqlp_mmr_ycerr2_u { - mmr_t sh_md_dqlp_mmr_ycerr2_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp2 : 36; - } sh_md_dqlp_mmr_ycerr2_s; -} sh_md_dqlp_mmr_ycerr2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_YUERR1" */ /* uncorrectable dir ecc group 1 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_yuerr1_u { mmr_t sh_md_dqlp_mmr_yuerr1_regval; struct { @@ -25082,25 +13559,12 @@ mmr_t reserved_0 : 25; } sh_md_dqlp_mmr_yuerr1_s; } sh_md_dqlp_mmr_yuerr1_u_t; -#else -typedef union sh_md_dqlp_mmr_yuerr1_u { - mmr_t sh_md_dqlp_mmr_yuerr1_regval; - struct { - mmr_t reserved_0 : 25; - mmr_t arm : 1; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp1 : 36; - } sh_md_dqlp_mmr_yuerr1_s; -} sh_md_dqlp_mmr_yuerr1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_YUERR2" */ /* uncorrectable dir ecc group 2 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_yuerr2_u { mmr_t sh_md_dqlp_mmr_yuerr2_regval; struct { @@ -25110,24 +13574,12 @@ mmr_t reserved_0 : 26; } sh_md_dqlp_mmr_yuerr2_s; } sh_md_dqlp_mmr_yuerr2_u_t; -#else -typedef union sh_md_dqlp_mmr_yuerr2_u { - mmr_t sh_md_dqlp_mmr_yuerr2_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp2 : 36; - } sh_md_dqlp_mmr_yuerr2_s; -} sh_md_dqlp_mmr_yuerr2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_YPERR" */ /* protocol error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_yperr_u { mmr_t sh_md_dqlp_mmr_yperr_regval; struct { @@ -25145,32 +13597,12 @@ mmr_t reserved_0 : 1; } sh_md_dqlp_mmr_yperr_s; } sh_md_dqlp_mmr_yperr_u_t; -#else -typedef union sh_md_dqlp_mmr_yperr_u { - mmr_t sh_md_dqlp_mmr_yperr_regval; - struct { - mmr_t reserved_0 : 1; - mmr_t arm : 1; - mmr_t more : 1; - mmr_t val : 1; - mmr_t mybit : 8; - mmr_t unc : 1; - mmr_t cor : 1; - mmr_t priv : 1; - mmr_t prige : 1; - mmr_t src : 14; - mmr_t cmd : 8; - mmr_t dir : 26; - } sh_md_dqlp_mmr_yperr_s; -} sh_md_dqlp_mmr_yperr_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_CMDTRIG" */ /* cmd triggers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_cmdtrig_u { mmr_t sh_md_dqlp_mmr_dir_cmdtrig_regval; struct { @@ -25181,25 +13613,12 @@ mmr_t reserved_0 : 32; } sh_md_dqlp_mmr_dir_cmdtrig_s; } sh_md_dqlp_mmr_dir_cmdtrig_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_cmdtrig_u { - mmr_t sh_md_dqlp_mmr_dir_cmdtrig_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t cmd3 : 8; - mmr_t cmd2 : 8; - mmr_t cmd1 : 8; - mmr_t cmd0 : 8; - } sh_md_dqlp_mmr_dir_cmdtrig_s; -} sh_md_dqlp_mmr_dir_cmdtrig_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_TBLTRIG" */ /* dir table trigger */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_tbltrig_u { mmr_t sh_md_dqlp_mmr_dir_tbltrig_regval; struct { @@ -25212,27 +13631,12 @@ mmr_t reserved_0 : 22; } sh_md_dqlp_mmr_dir_tbltrig_s; } sh_md_dqlp_mmr_dir_tbltrig_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_tbltrig_u { - mmr_t sh_md_dqlp_mmr_dir_tbltrig_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t mybit : 8; - mmr_t dirst : 9; - mmr_t prige : 1; - mmr_t acc : 2; - mmr_t cmd : 8; - mmr_t src : 14; - } sh_md_dqlp_mmr_dir_tbltrig_s; -} sh_md_dqlp_mmr_dir_tbltrig_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_DIR_TBLMASK" */ /* dir table trigger mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_dir_tblmask_u { mmr_t sh_md_dqlp_mmr_dir_tblmask_regval; struct { @@ -25245,27 +13649,12 @@ mmr_t reserved_0 : 22; } sh_md_dqlp_mmr_dir_tblmask_s; } sh_md_dqlp_mmr_dir_tblmask_u_t; -#else -typedef union sh_md_dqlp_mmr_dir_tblmask_u { - mmr_t sh_md_dqlp_mmr_dir_tblmask_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t mybit : 8; - mmr_t dirst : 9; - mmr_t prige : 1; - mmr_t acc : 2; - mmr_t cmd : 8; - mmr_t src : 14; - } sh_md_dqlp_mmr_dir_tblmask_s; -} sh_md_dqlp_mmr_dir_tblmask_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_XBIST_H" */ /* rising edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_xbist_h_u { mmr_t sh_md_dqlp_mmr_xbist_h_regval; struct { @@ -25277,26 +13666,12 @@ mmr_t reserved_1 : 21; } sh_md_dqlp_mmr_xbist_h_s; } sh_md_dqlp_mmr_xbist_h_u_t; -#else -typedef union sh_md_dqlp_mmr_xbist_h_u { - mmr_t sh_md_dqlp_mmr_xbist_h_regval; - struct { - mmr_t reserved_1 : 21; - mmr_t arm : 1; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqlp_mmr_xbist_h_s; -} sh_md_dqlp_mmr_xbist_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_XBIST_L" */ /* falling edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_xbist_l_u { mmr_t sh_md_dqlp_mmr_xbist_l_regval; struct { @@ -25307,25 +13682,12 @@ mmr_t reserved_1 : 22; } sh_md_dqlp_mmr_xbist_l_s; } sh_md_dqlp_mmr_xbist_l_u_t; -#else -typedef union sh_md_dqlp_mmr_xbist_l_u { - mmr_t sh_md_dqlp_mmr_xbist_l_regval; - struct { - mmr_t reserved_1 : 22; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqlp_mmr_xbist_l_s; -} sh_md_dqlp_mmr_xbist_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_XBIST_ERR_H" */ /* rising edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_xbist_err_h_u { mmr_t sh_md_dqlp_mmr_xbist_err_h_regval; struct { @@ -25336,25 +13698,12 @@ mmr_t reserved_1 : 22; } sh_md_dqlp_mmr_xbist_err_h_s; } sh_md_dqlp_mmr_xbist_err_h_u_t; -#else -typedef union sh_md_dqlp_mmr_xbist_err_h_u { - mmr_t sh_md_dqlp_mmr_xbist_err_h_regval; - struct { - mmr_t reserved_1 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqlp_mmr_xbist_err_h_s; -} sh_md_dqlp_mmr_xbist_err_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_XBIST_ERR_L" */ /* falling edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_xbist_err_l_u { mmr_t sh_md_dqlp_mmr_xbist_err_l_regval; struct { @@ -25365,25 +13714,12 @@ mmr_t reserved_1 : 22; } sh_md_dqlp_mmr_xbist_err_l_s; } sh_md_dqlp_mmr_xbist_err_l_u_t; -#else -typedef union sh_md_dqlp_mmr_xbist_err_l_u { - mmr_t sh_md_dqlp_mmr_xbist_err_l_regval; - struct { - mmr_t reserved_1 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqlp_mmr_xbist_err_l_s; -} sh_md_dqlp_mmr_xbist_err_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_YBIST_H" */ /* rising edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_ybist_h_u { mmr_t sh_md_dqlp_mmr_ybist_h_regval; struct { @@ -25395,26 +13731,12 @@ mmr_t reserved_1 : 21; } sh_md_dqlp_mmr_ybist_h_s; } sh_md_dqlp_mmr_ybist_h_u_t; -#else -typedef union sh_md_dqlp_mmr_ybist_h_u { - mmr_t sh_md_dqlp_mmr_ybist_h_regval; - struct { - mmr_t reserved_1 : 21; - mmr_t arm : 1; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqlp_mmr_ybist_h_s; -} sh_md_dqlp_mmr_ybist_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_YBIST_L" */ /* falling edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_ybist_l_u { mmr_t sh_md_dqlp_mmr_ybist_l_regval; struct { @@ -25425,25 +13747,12 @@ mmr_t reserved_1 : 22; } sh_md_dqlp_mmr_ybist_l_s; } sh_md_dqlp_mmr_ybist_l_u_t; -#else -typedef union sh_md_dqlp_mmr_ybist_l_u { - mmr_t sh_md_dqlp_mmr_ybist_l_regval; - struct { - mmr_t reserved_1 : 22; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqlp_mmr_ybist_l_s; -} sh_md_dqlp_mmr_ybist_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_YBIST_ERR_H" */ /* rising edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_ybist_err_h_u { mmr_t sh_md_dqlp_mmr_ybist_err_h_regval; struct { @@ -25454,25 +13763,12 @@ mmr_t reserved_1 : 22; } sh_md_dqlp_mmr_ybist_err_h_s; } sh_md_dqlp_mmr_ybist_err_h_u_t; -#else -typedef union sh_md_dqlp_mmr_ybist_err_h_u { - mmr_t sh_md_dqlp_mmr_ybist_err_h_regval; - struct { - mmr_t reserved_1 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqlp_mmr_ybist_err_h_s; -} sh_md_dqlp_mmr_ybist_err_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLP_MMR_YBIST_ERR_L" */ /* falling edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqlp_mmr_ybist_err_l_u { mmr_t sh_md_dqlp_mmr_ybist_err_l_regval; struct { @@ -25483,25 +13779,12 @@ mmr_t reserved_1 : 22; } sh_md_dqlp_mmr_ybist_err_l_s; } sh_md_dqlp_mmr_ybist_err_l_u_t; -#else -typedef union sh_md_dqlp_mmr_ybist_err_l_u { - mmr_t sh_md_dqlp_mmr_ybist_err_l_regval; - struct { - mmr_t reserved_1 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqlp_mmr_ybist_err_l_s; -} sh_md_dqlp_mmr_ybist_err_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLS_MMR_XBIST_H" */ /* rising edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqls_mmr_xbist_h_u { mmr_t sh_md_dqls_mmr_xbist_h_regval; struct { @@ -25512,25 +13795,12 @@ mmr_t reserved_0 : 21; } sh_md_dqls_mmr_xbist_h_s; } sh_md_dqls_mmr_xbist_h_u_t; -#else -typedef union sh_md_dqls_mmr_xbist_h_u { - mmr_t sh_md_dqls_mmr_xbist_h_regval; - struct { - mmr_t reserved_0 : 21; - mmr_t arm : 1; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t pat : 40; - } sh_md_dqls_mmr_xbist_h_s; -} sh_md_dqls_mmr_xbist_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLS_MMR_XBIST_L" */ /* falling edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqls_mmr_xbist_l_u { mmr_t sh_md_dqls_mmr_xbist_l_regval; struct { @@ -25540,24 +13810,12 @@ mmr_t reserved_0 : 22; } sh_md_dqls_mmr_xbist_l_s; } sh_md_dqls_mmr_xbist_l_u_t; -#else -typedef union sh_md_dqls_mmr_xbist_l_u { - mmr_t sh_md_dqls_mmr_xbist_l_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t pat : 40; - } sh_md_dqls_mmr_xbist_l_s; -} sh_md_dqls_mmr_xbist_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLS_MMR_XBIST_ERR_H" */ /* rising edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqls_mmr_xbist_err_h_u { mmr_t sh_md_dqls_mmr_xbist_err_h_regval; struct { @@ -25567,24 +13825,12 @@ mmr_t reserved_0 : 22; } sh_md_dqls_mmr_xbist_err_h_s; } sh_md_dqls_mmr_xbist_err_h_u_t; -#else -typedef union sh_md_dqls_mmr_xbist_err_h_u { - mmr_t sh_md_dqls_mmr_xbist_err_h_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t pat : 40; - } sh_md_dqls_mmr_xbist_err_h_s; -} sh_md_dqls_mmr_xbist_err_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLS_MMR_XBIST_ERR_L" */ /* falling edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqls_mmr_xbist_err_l_u { mmr_t sh_md_dqls_mmr_xbist_err_l_regval; struct { @@ -25594,24 +13840,12 @@ mmr_t reserved_0 : 22; } sh_md_dqls_mmr_xbist_err_l_s; } sh_md_dqls_mmr_xbist_err_l_u_t; -#else -typedef union sh_md_dqls_mmr_xbist_err_l_u { - mmr_t sh_md_dqls_mmr_xbist_err_l_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t pat : 40; - } sh_md_dqls_mmr_xbist_err_l_s; -} sh_md_dqls_mmr_xbist_err_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLS_MMR_YBIST_H" */ /* rising edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqls_mmr_ybist_h_u { mmr_t sh_md_dqls_mmr_ybist_h_regval; struct { @@ -25622,25 +13856,12 @@ mmr_t reserved_0 : 21; } sh_md_dqls_mmr_ybist_h_s; } sh_md_dqls_mmr_ybist_h_u_t; -#else -typedef union sh_md_dqls_mmr_ybist_h_u { - mmr_t sh_md_dqls_mmr_ybist_h_regval; - struct { - mmr_t reserved_0 : 21; - mmr_t arm : 1; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t pat : 40; - } sh_md_dqls_mmr_ybist_h_s; -} sh_md_dqls_mmr_ybist_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLS_MMR_YBIST_L" */ /* falling edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqls_mmr_ybist_l_u { mmr_t sh_md_dqls_mmr_ybist_l_regval; struct { @@ -25650,24 +13871,12 @@ mmr_t reserved_0 : 22; } sh_md_dqls_mmr_ybist_l_s; } sh_md_dqls_mmr_ybist_l_u_t; -#else -typedef union sh_md_dqls_mmr_ybist_l_u { - mmr_t sh_md_dqls_mmr_ybist_l_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t pat : 40; - } sh_md_dqls_mmr_ybist_l_s; -} sh_md_dqls_mmr_ybist_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLS_MMR_YBIST_ERR_H" */ /* rising edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqls_mmr_ybist_err_h_u { mmr_t sh_md_dqls_mmr_ybist_err_h_regval; struct { @@ -25677,24 +13886,12 @@ mmr_t reserved_0 : 22; } sh_md_dqls_mmr_ybist_err_h_s; } sh_md_dqls_mmr_ybist_err_h_u_t; -#else -typedef union sh_md_dqls_mmr_ybist_err_h_u { - mmr_t sh_md_dqls_mmr_ybist_err_h_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t pat : 40; - } sh_md_dqls_mmr_ybist_err_h_s; -} sh_md_dqls_mmr_ybist_err_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLS_MMR_YBIST_ERR_L" */ /* falling edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqls_mmr_ybist_err_l_u { mmr_t sh_md_dqls_mmr_ybist_err_l_regval; struct { @@ -25704,24 +13901,12 @@ mmr_t reserved_0 : 22; } sh_md_dqls_mmr_ybist_err_l_s; } sh_md_dqls_mmr_ybist_err_l_u_t; -#else -typedef union sh_md_dqls_mmr_ybist_err_l_u { - mmr_t sh_md_dqls_mmr_ybist_err_l_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t pat : 40; - } sh_md_dqls_mmr_ybist_err_l_s; -} sh_md_dqls_mmr_ybist_err_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLS_MMR_JNR_DEBUG" */ /* joiner/fct debug configuration */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqls_mmr_jnr_debug_u { mmr_t sh_md_dqls_mmr_jnr_debug_regval; struct { @@ -25730,23 +13915,12 @@ mmr_t reserved_0 : 62; } sh_md_dqls_mmr_jnr_debug_s; } sh_md_dqls_mmr_jnr_debug_u_t; -#else -typedef union sh_md_dqls_mmr_jnr_debug_u { - mmr_t sh_md_dqls_mmr_jnr_debug_regval; - struct { - mmr_t reserved_0 : 62; - mmr_t rw : 1; - mmr_t px : 1; - } sh_md_dqls_mmr_jnr_debug_s; -} sh_md_dqls_mmr_jnr_debug_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQLS_MMR_XAMOPW_ERR" */ /* amo/partial rmw ecc error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqls_mmr_xamopw_err_u { mmr_t sh_md_dqls_mmr_xamopw_err_regval; struct { @@ -25762,30 +13936,12 @@ mmr_t reserved_2 : 31; } sh_md_dqls_mmr_xamopw_err_s; } sh_md_dqls_mmr_xamopw_err_u_t; -#else -typedef union sh_md_dqls_mmr_xamopw_err_u { - mmr_t sh_md_dqls_mmr_xamopw_err_regval; - struct { - mmr_t reserved_2 : 31; - mmr_t arm : 1; - mmr_t reserved_1 : 6; - mmr_t runc : 1; - mmr_t rcor : 1; - mmr_t rsyn : 8; - mmr_t reserved_0 : 6; - mmr_t sunc : 1; - mmr_t scor : 1; - mmr_t ssyn : 8; - } sh_md_dqls_mmr_xamopw_err_s; -} sh_md_dqls_mmr_xamopw_err_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_CONFIG" */ /* DQ directory config register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_config_u { mmr_t sh_md_dqrp_mmr_dir_config_regval; struct { @@ -25795,276 +13951,156 @@ mmr_t reserved_0 : 59; } sh_md_dqrp_mmr_dir_config_s; } sh_md_dqrp_mmr_dir_config_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_config_u { - mmr_t sh_md_dqrp_mmr_dir_config_regval; - struct { - mmr_t reserved_0 : 59; - mmr_t en_dirpois : 1; - mmr_t en_direcc : 1; - mmr_t sys_size : 3; - } sh_md_dqrp_mmr_dir_config_s; -} sh_md_dqrp_mmr_dir_config_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_PRESVEC0" */ /* node [63:0] presence bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqrp_mmr_dir_presvec0_u { - mmr_t sh_md_dqrp_mmr_dir_presvec0_regval; - struct { - mmr_t vec : 64; - } sh_md_dqrp_mmr_dir_presvec0_s; -} sh_md_dqrp_mmr_dir_presvec0_u_t; -#else typedef union sh_md_dqrp_mmr_dir_presvec0_u { mmr_t sh_md_dqrp_mmr_dir_presvec0_regval; struct { mmr_t vec : 64; } sh_md_dqrp_mmr_dir_presvec0_s; } sh_md_dqrp_mmr_dir_presvec0_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_PRESVEC1" */ /* node [127:64] presence bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_presvec1_u { mmr_t sh_md_dqrp_mmr_dir_presvec1_regval; struct { mmr_t vec : 64; } sh_md_dqrp_mmr_dir_presvec1_s; } sh_md_dqrp_mmr_dir_presvec1_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_presvec1_u { - mmr_t sh_md_dqrp_mmr_dir_presvec1_regval; - struct { - mmr_t vec : 64; - } sh_md_dqrp_mmr_dir_presvec1_s; -} sh_md_dqrp_mmr_dir_presvec1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_PRESVEC2" */ /* node [191:128] presence bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqrp_mmr_dir_presvec2_u { - mmr_t sh_md_dqrp_mmr_dir_presvec2_regval; - struct { - mmr_t vec : 64; - } sh_md_dqrp_mmr_dir_presvec2_s; -} sh_md_dqrp_mmr_dir_presvec2_u_t; -#else typedef union sh_md_dqrp_mmr_dir_presvec2_u { mmr_t sh_md_dqrp_mmr_dir_presvec2_regval; struct { mmr_t vec : 64; } sh_md_dqrp_mmr_dir_presvec2_s; } sh_md_dqrp_mmr_dir_presvec2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_PRESVEC3" */ /* node [255:192] presence bits */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqrp_mmr_dir_presvec3_u { - mmr_t sh_md_dqrp_mmr_dir_presvec3_regval; - struct { - mmr_t vec : 64; - } sh_md_dqrp_mmr_dir_presvec3_s; -} sh_md_dqrp_mmr_dir_presvec3_u_t; -#else typedef union sh_md_dqrp_mmr_dir_presvec3_u { mmr_t sh_md_dqrp_mmr_dir_presvec3_regval; struct { mmr_t vec : 64; } sh_md_dqrp_mmr_dir_presvec3_s; } sh_md_dqrp_mmr_dir_presvec3_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_LOCVEC0" */ /* local vector for acc=0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqrp_mmr_dir_locvec0_u { - mmr_t sh_md_dqrp_mmr_dir_locvec0_regval; - struct { - mmr_t vec : 64; - } sh_md_dqrp_mmr_dir_locvec0_s; -} sh_md_dqrp_mmr_dir_locvec0_u_t; -#else typedef union sh_md_dqrp_mmr_dir_locvec0_u { mmr_t sh_md_dqrp_mmr_dir_locvec0_regval; struct { mmr_t vec : 64; } sh_md_dqrp_mmr_dir_locvec0_s; } sh_md_dqrp_mmr_dir_locvec0_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_LOCVEC1" */ /* local vector for acc=1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_locvec1_u { mmr_t sh_md_dqrp_mmr_dir_locvec1_regval; struct { mmr_t vec : 64; } sh_md_dqrp_mmr_dir_locvec1_s; } sh_md_dqrp_mmr_dir_locvec1_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_locvec1_u { - mmr_t sh_md_dqrp_mmr_dir_locvec1_regval; - struct { - mmr_t vec : 64; - } sh_md_dqrp_mmr_dir_locvec1_s; -} sh_md_dqrp_mmr_dir_locvec1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_LOCVEC2" */ /* local vector for acc=2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_locvec2_u { mmr_t sh_md_dqrp_mmr_dir_locvec2_regval; struct { mmr_t vec : 64; } sh_md_dqrp_mmr_dir_locvec2_s; } sh_md_dqrp_mmr_dir_locvec2_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_locvec2_u { - mmr_t sh_md_dqrp_mmr_dir_locvec2_regval; - struct { - mmr_t vec : 64; - } sh_md_dqrp_mmr_dir_locvec2_s; -} sh_md_dqrp_mmr_dir_locvec2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_LOCVEC3" */ /* local vector for acc=3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_locvec3_u { mmr_t sh_md_dqrp_mmr_dir_locvec3_regval; struct { mmr_t vec : 64; } sh_md_dqrp_mmr_dir_locvec3_s; } sh_md_dqrp_mmr_dir_locvec3_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_locvec3_u { - mmr_t sh_md_dqrp_mmr_dir_locvec3_regval; - struct { - mmr_t vec : 64; - } sh_md_dqrp_mmr_dir_locvec3_s; -} sh_md_dqrp_mmr_dir_locvec3_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_LOCVEC4" */ /* local vector for acc=4 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqrp_mmr_dir_locvec4_u { - mmr_t sh_md_dqrp_mmr_dir_locvec4_regval; - struct { - mmr_t vec : 64; - } sh_md_dqrp_mmr_dir_locvec4_s; -} sh_md_dqrp_mmr_dir_locvec4_u_t; -#else typedef union sh_md_dqrp_mmr_dir_locvec4_u { mmr_t sh_md_dqrp_mmr_dir_locvec4_regval; struct { mmr_t vec : 64; } sh_md_dqrp_mmr_dir_locvec4_s; } sh_md_dqrp_mmr_dir_locvec4_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_LOCVEC5" */ /* local vector for acc=5 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqrp_mmr_dir_locvec5_u { - mmr_t sh_md_dqrp_mmr_dir_locvec5_regval; - struct { - mmr_t vec : 64; - } sh_md_dqrp_mmr_dir_locvec5_s; -} sh_md_dqrp_mmr_dir_locvec5_u_t; -#else typedef union sh_md_dqrp_mmr_dir_locvec5_u { mmr_t sh_md_dqrp_mmr_dir_locvec5_regval; struct { mmr_t vec : 64; } sh_md_dqrp_mmr_dir_locvec5_s; } sh_md_dqrp_mmr_dir_locvec5_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_LOCVEC6" */ /* local vector for acc=6 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_locvec6_u { mmr_t sh_md_dqrp_mmr_dir_locvec6_regval; struct { mmr_t vec : 64; } sh_md_dqrp_mmr_dir_locvec6_s; } sh_md_dqrp_mmr_dir_locvec6_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_locvec6_u { - mmr_t sh_md_dqrp_mmr_dir_locvec6_regval; - struct { - mmr_t vec : 64; - } sh_md_dqrp_mmr_dir_locvec6_s; -} sh_md_dqrp_mmr_dir_locvec6_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_LOCVEC7" */ /* local vector for acc=7 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN -typedef union sh_md_dqrp_mmr_dir_locvec7_u { - mmr_t sh_md_dqrp_mmr_dir_locvec7_regval; - struct { - mmr_t vec : 64; - } sh_md_dqrp_mmr_dir_locvec7_s; -} sh_md_dqrp_mmr_dir_locvec7_u_t; -#else typedef union sh_md_dqrp_mmr_dir_locvec7_u { mmr_t sh_md_dqrp_mmr_dir_locvec7_regval; struct { mmr_t vec : 64; } sh_md_dqrp_mmr_dir_locvec7_s; } sh_md_dqrp_mmr_dir_locvec7_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_PRIVEC0" */ /* privilege vector for acc=0 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_privec0_u { mmr_t sh_md_dqrp_mmr_dir_privec0_regval; struct { @@ -26073,23 +14109,12 @@ mmr_t reserved_0 : 36; } sh_md_dqrp_mmr_dir_privec0_s; } sh_md_dqrp_mmr_dir_privec0_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_privec0_u { - mmr_t sh_md_dqrp_mmr_dir_privec0_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqrp_mmr_dir_privec0_s; -} sh_md_dqrp_mmr_dir_privec0_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_PRIVEC1" */ /* privilege vector for acc=1 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_privec1_u { mmr_t sh_md_dqrp_mmr_dir_privec1_regval; struct { @@ -26098,23 +14123,12 @@ mmr_t reserved_0 : 36; } sh_md_dqrp_mmr_dir_privec1_s; } sh_md_dqrp_mmr_dir_privec1_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_privec1_u { - mmr_t sh_md_dqrp_mmr_dir_privec1_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqrp_mmr_dir_privec1_s; -} sh_md_dqrp_mmr_dir_privec1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_PRIVEC2" */ /* privilege vector for acc=2 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_privec2_u { mmr_t sh_md_dqrp_mmr_dir_privec2_regval; struct { @@ -26123,23 +14137,12 @@ mmr_t reserved_0 : 36; } sh_md_dqrp_mmr_dir_privec2_s; } sh_md_dqrp_mmr_dir_privec2_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_privec2_u { - mmr_t sh_md_dqrp_mmr_dir_privec2_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqrp_mmr_dir_privec2_s; -} sh_md_dqrp_mmr_dir_privec2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_PRIVEC3" */ /* privilege vector for acc=3 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_privec3_u { mmr_t sh_md_dqrp_mmr_dir_privec3_regval; struct { @@ -26148,23 +14151,12 @@ mmr_t reserved_0 : 36; } sh_md_dqrp_mmr_dir_privec3_s; } sh_md_dqrp_mmr_dir_privec3_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_privec3_u { - mmr_t sh_md_dqrp_mmr_dir_privec3_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqrp_mmr_dir_privec3_s; -} sh_md_dqrp_mmr_dir_privec3_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_PRIVEC4" */ /* privilege vector for acc=4 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_privec4_u { mmr_t sh_md_dqrp_mmr_dir_privec4_regval; struct { @@ -26173,23 +14165,12 @@ mmr_t reserved_0 : 36; } sh_md_dqrp_mmr_dir_privec4_s; } sh_md_dqrp_mmr_dir_privec4_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_privec4_u { - mmr_t sh_md_dqrp_mmr_dir_privec4_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqrp_mmr_dir_privec4_s; -} sh_md_dqrp_mmr_dir_privec4_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_PRIVEC5" */ /* privilege vector for acc=5 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_privec5_u { mmr_t sh_md_dqrp_mmr_dir_privec5_regval; struct { @@ -26198,23 +14179,12 @@ mmr_t reserved_0 : 36; } sh_md_dqrp_mmr_dir_privec5_s; } sh_md_dqrp_mmr_dir_privec5_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_privec5_u { - mmr_t sh_md_dqrp_mmr_dir_privec5_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqrp_mmr_dir_privec5_s; -} sh_md_dqrp_mmr_dir_privec5_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_PRIVEC6" */ /* privilege vector for acc=6 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_privec6_u { mmr_t sh_md_dqrp_mmr_dir_privec6_regval; struct { @@ -26223,23 +14193,12 @@ mmr_t reserved_0 : 36; } sh_md_dqrp_mmr_dir_privec6_s; } sh_md_dqrp_mmr_dir_privec6_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_privec6_u { - mmr_t sh_md_dqrp_mmr_dir_privec6_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqrp_mmr_dir_privec6_s; -} sh_md_dqrp_mmr_dir_privec6_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_PRIVEC7" */ /* privilege vector for acc=7 */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_privec7_u { mmr_t sh_md_dqrp_mmr_dir_privec7_regval; struct { @@ -26248,23 +14207,12 @@ mmr_t reserved_0 : 36; } sh_md_dqrp_mmr_dir_privec7_s; } sh_md_dqrp_mmr_dir_privec7_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_privec7_u { - mmr_t sh_md_dqrp_mmr_dir_privec7_regval; - struct { - mmr_t reserved_0 : 36; - mmr_t out : 14; - mmr_t in : 14; - } sh_md_dqrp_mmr_dir_privec7_s; -} sh_md_dqrp_mmr_dir_privec7_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_TIMER" */ /* MD SXRO timer */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_timer_u { mmr_t sh_md_dqrp_mmr_dir_timer_regval; struct { @@ -26274,24 +14222,12 @@ mmr_t reserved_0 : 42; } sh_md_dqrp_mmr_dir_timer_s; } sh_md_dqrp_mmr_dir_timer_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_timer_u { - mmr_t sh_md_dqrp_mmr_dir_timer_regval; - struct { - mmr_t reserved_0 : 42; - mmr_t timer_cur : 9; - mmr_t timer_en : 1; - mmr_t timer_div : 12; - } sh_md_dqrp_mmr_dir_timer_s; -} sh_md_dqrp_mmr_dir_timer_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_PIOWD_DIR_ENTRY" */ /* directory pio write data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_piowd_dir_entry_u { mmr_t sh_md_dqrp_mmr_piowd_dir_entry_regval; struct { @@ -26302,25 +14238,12 @@ mmr_t reserved_0 : 6; } sh_md_dqrp_mmr_piowd_dir_entry_s; } sh_md_dqrp_mmr_piowd_dir_entry_u_t; -#else -typedef union sh_md_dqrp_mmr_piowd_dir_entry_u { - mmr_t sh_md_dqrp_mmr_piowd_dir_entry_regval; - struct { - mmr_t reserved_0 : 6; - mmr_t acc : 3; - mmr_t pri : 3; - mmr_t dirb : 26; - mmr_t dira : 26; - } sh_md_dqrp_mmr_piowd_dir_entry_s; -} sh_md_dqrp_mmr_piowd_dir_entry_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_PIOWD_DIR_ECC" */ /* directory ecc register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_piowd_dir_ecc_u { mmr_t sh_md_dqrp_mmr_piowd_dir_ecc_regval; struct { @@ -26329,23 +14252,12 @@ mmr_t reserved_0 : 50; } sh_md_dqrp_mmr_piowd_dir_ecc_s; } sh_md_dqrp_mmr_piowd_dir_ecc_u_t; -#else -typedef union sh_md_dqrp_mmr_piowd_dir_ecc_u { - mmr_t sh_md_dqrp_mmr_piowd_dir_ecc_regval; - struct { - mmr_t reserved_0 : 50; - mmr_t eccb : 7; - mmr_t ecca : 7; - } sh_md_dqrp_mmr_piowd_dir_ecc_s; -} sh_md_dqrp_mmr_piowd_dir_ecc_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_XPIORD_XDIR_ENTRY" */ /* x directory pio read data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_xpiord_xdir_entry_u { mmr_t sh_md_dqrp_mmr_xpiord_xdir_entry_regval; struct { @@ -26358,27 +14270,12 @@ mmr_t reserved_0 : 4; } sh_md_dqrp_mmr_xpiord_xdir_entry_s; } sh_md_dqrp_mmr_xpiord_xdir_entry_u_t; -#else -typedef union sh_md_dqrp_mmr_xpiord_xdir_entry_u { - mmr_t sh_md_dqrp_mmr_xpiord_xdir_entry_regval; - struct { - mmr_t reserved_0 : 4; - mmr_t unc : 1; - mmr_t cor : 1; - mmr_t acc : 3; - mmr_t pri : 3; - mmr_t dirb : 26; - mmr_t dira : 26; - } sh_md_dqrp_mmr_xpiord_xdir_entry_s; -} sh_md_dqrp_mmr_xpiord_xdir_entry_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_XPIORD_XDIR_ECC" */ /* x directory ecc */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_xpiord_xdir_ecc_u { mmr_t sh_md_dqrp_mmr_xpiord_xdir_ecc_regval; struct { @@ -26387,23 +14284,12 @@ mmr_t reserved_0 : 50; } sh_md_dqrp_mmr_xpiord_xdir_ecc_s; } sh_md_dqrp_mmr_xpiord_xdir_ecc_u_t; -#else -typedef union sh_md_dqrp_mmr_xpiord_xdir_ecc_u { - mmr_t sh_md_dqrp_mmr_xpiord_xdir_ecc_regval; - struct { - mmr_t reserved_0 : 50; - mmr_t eccb : 7; - mmr_t ecca : 7; - } sh_md_dqrp_mmr_xpiord_xdir_ecc_s; -} sh_md_dqrp_mmr_xpiord_xdir_ecc_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_YPIORD_YDIR_ENTRY" */ /* y directory pio read data */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_ypiord_ydir_entry_u { mmr_t sh_md_dqrp_mmr_ypiord_ydir_entry_regval; struct { @@ -26416,27 +14302,12 @@ mmr_t reserved_0 : 4; } sh_md_dqrp_mmr_ypiord_ydir_entry_s; } sh_md_dqrp_mmr_ypiord_ydir_entry_u_t; -#else -typedef union sh_md_dqrp_mmr_ypiord_ydir_entry_u { - mmr_t sh_md_dqrp_mmr_ypiord_ydir_entry_regval; - struct { - mmr_t reserved_0 : 4; - mmr_t unc : 1; - mmr_t cor : 1; - mmr_t acc : 3; - mmr_t pri : 3; - mmr_t dirb : 26; - mmr_t dira : 26; - } sh_md_dqrp_mmr_ypiord_ydir_entry_s; -} sh_md_dqrp_mmr_ypiord_ydir_entry_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_YPIORD_YDIR_ECC" */ /* y directory ecc */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_ypiord_ydir_ecc_u { mmr_t sh_md_dqrp_mmr_ypiord_ydir_ecc_regval; struct { @@ -26445,23 +14316,12 @@ mmr_t reserved_0 : 50; } sh_md_dqrp_mmr_ypiord_ydir_ecc_s; } sh_md_dqrp_mmr_ypiord_ydir_ecc_u_t; -#else -typedef union sh_md_dqrp_mmr_ypiord_ydir_ecc_u { - mmr_t sh_md_dqrp_mmr_ypiord_ydir_ecc_regval; - struct { - mmr_t reserved_0 : 50; - mmr_t eccb : 7; - mmr_t ecca : 7; - } sh_md_dqrp_mmr_ypiord_ydir_ecc_s; -} sh_md_dqrp_mmr_ypiord_ydir_ecc_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_XCERR1" */ /* correctable dir ecc group 1 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_xcerr1_u { mmr_t sh_md_dqrp_mmr_xcerr1_regval; struct { @@ -26472,25 +14332,12 @@ mmr_t reserved_0 : 25; } sh_md_dqrp_mmr_xcerr1_s; } sh_md_dqrp_mmr_xcerr1_u_t; -#else -typedef union sh_md_dqrp_mmr_xcerr1_u { - mmr_t sh_md_dqrp_mmr_xcerr1_regval; - struct { - mmr_t reserved_0 : 25; - mmr_t arm : 1; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp1 : 36; - } sh_md_dqrp_mmr_xcerr1_s; -} sh_md_dqrp_mmr_xcerr1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_XCERR2" */ /* correctable dir ecc group 2 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_xcerr2_u { mmr_t sh_md_dqrp_mmr_xcerr2_regval; struct { @@ -26500,24 +14347,12 @@ mmr_t reserved_0 : 26; } sh_md_dqrp_mmr_xcerr2_s; } sh_md_dqrp_mmr_xcerr2_u_t; -#else -typedef union sh_md_dqrp_mmr_xcerr2_u { - mmr_t sh_md_dqrp_mmr_xcerr2_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp2 : 36; - } sh_md_dqrp_mmr_xcerr2_s; -} sh_md_dqrp_mmr_xcerr2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_XUERR1" */ /* uncorrectable dir ecc group 1 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_xuerr1_u { mmr_t sh_md_dqrp_mmr_xuerr1_regval; struct { @@ -26528,25 +14363,12 @@ mmr_t reserved_0 : 25; } sh_md_dqrp_mmr_xuerr1_s; } sh_md_dqrp_mmr_xuerr1_u_t; -#else -typedef union sh_md_dqrp_mmr_xuerr1_u { - mmr_t sh_md_dqrp_mmr_xuerr1_regval; - struct { - mmr_t reserved_0 : 25; - mmr_t arm : 1; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp1 : 36; - } sh_md_dqrp_mmr_xuerr1_s; -} sh_md_dqrp_mmr_xuerr1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_XUERR2" */ /* uncorrectable dir ecc group 2 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_xuerr2_u { mmr_t sh_md_dqrp_mmr_xuerr2_regval; struct { @@ -26556,24 +14378,12 @@ mmr_t reserved_0 : 26; } sh_md_dqrp_mmr_xuerr2_s; } sh_md_dqrp_mmr_xuerr2_u_t; -#else -typedef union sh_md_dqrp_mmr_xuerr2_u { - mmr_t sh_md_dqrp_mmr_xuerr2_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp2 : 36; - } sh_md_dqrp_mmr_xuerr2_s; -} sh_md_dqrp_mmr_xuerr2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_XPERR" */ /* protocol error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_xperr_u { mmr_t sh_md_dqrp_mmr_xperr_regval; struct { @@ -26591,32 +14401,12 @@ mmr_t reserved_0 : 1; } sh_md_dqrp_mmr_xperr_s; } sh_md_dqrp_mmr_xperr_u_t; -#else -typedef union sh_md_dqrp_mmr_xperr_u { - mmr_t sh_md_dqrp_mmr_xperr_regval; - struct { - mmr_t reserved_0 : 1; - mmr_t arm : 1; - mmr_t more : 1; - mmr_t val : 1; - mmr_t mybit : 8; - mmr_t unc : 1; - mmr_t cor : 1; - mmr_t priv : 1; - mmr_t prige : 1; - mmr_t src : 14; - mmr_t cmd : 8; - mmr_t dir : 26; - } sh_md_dqrp_mmr_xperr_s; -} sh_md_dqrp_mmr_xperr_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_YCERR1" */ /* correctable dir ecc group 1 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_ycerr1_u { mmr_t sh_md_dqrp_mmr_ycerr1_regval; struct { @@ -26627,25 +14417,12 @@ mmr_t reserved_0 : 25; } sh_md_dqrp_mmr_ycerr1_s; } sh_md_dqrp_mmr_ycerr1_u_t; -#else -typedef union sh_md_dqrp_mmr_ycerr1_u { - mmr_t sh_md_dqrp_mmr_ycerr1_regval; - struct { - mmr_t reserved_0 : 25; - mmr_t arm : 1; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp1 : 36; - } sh_md_dqrp_mmr_ycerr1_s; -} sh_md_dqrp_mmr_ycerr1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_YCERR2" */ /* correctable dir ecc group 2 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_ycerr2_u { mmr_t sh_md_dqrp_mmr_ycerr2_regval; struct { @@ -26655,24 +14432,12 @@ mmr_t reserved_0 : 26; } sh_md_dqrp_mmr_ycerr2_s; } sh_md_dqrp_mmr_ycerr2_u_t; -#else -typedef union sh_md_dqrp_mmr_ycerr2_u { - mmr_t sh_md_dqrp_mmr_ycerr2_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp2 : 36; - } sh_md_dqrp_mmr_ycerr2_s; -} sh_md_dqrp_mmr_ycerr2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_YUERR1" */ /* uncorrectable dir ecc group 1 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_yuerr1_u { mmr_t sh_md_dqrp_mmr_yuerr1_regval; struct { @@ -26683,25 +14448,12 @@ mmr_t reserved_0 : 25; } sh_md_dqrp_mmr_yuerr1_s; } sh_md_dqrp_mmr_yuerr1_u_t; -#else -typedef union sh_md_dqrp_mmr_yuerr1_u { - mmr_t sh_md_dqrp_mmr_yuerr1_regval; - struct { - mmr_t reserved_0 : 25; - mmr_t arm : 1; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp1 : 36; - } sh_md_dqrp_mmr_yuerr1_s; -} sh_md_dqrp_mmr_yuerr1_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_YUERR2" */ /* uncorrectable dir ecc group 2 error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_yuerr2_u { mmr_t sh_md_dqrp_mmr_yuerr2_regval; struct { @@ -26711,24 +14463,12 @@ mmr_t reserved_0 : 26; } sh_md_dqrp_mmr_yuerr2_s; } sh_md_dqrp_mmr_yuerr2_u_t; -#else -typedef union sh_md_dqrp_mmr_yuerr2_u { - mmr_t sh_md_dqrp_mmr_yuerr2_regval; - struct { - mmr_t reserved_0 : 26; - mmr_t more : 1; - mmr_t val : 1; - mmr_t grp2 : 36; - } sh_md_dqrp_mmr_yuerr2_s; -} sh_md_dqrp_mmr_yuerr2_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_YPERR" */ /* protocol error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_yperr_u { mmr_t sh_md_dqrp_mmr_yperr_regval; struct { @@ -26746,32 +14486,12 @@ mmr_t reserved_0 : 1; } sh_md_dqrp_mmr_yperr_s; } sh_md_dqrp_mmr_yperr_u_t; -#else -typedef union sh_md_dqrp_mmr_yperr_u { - mmr_t sh_md_dqrp_mmr_yperr_regval; - struct { - mmr_t reserved_0 : 1; - mmr_t arm : 1; - mmr_t more : 1; - mmr_t val : 1; - mmr_t mybit : 8; - mmr_t unc : 1; - mmr_t cor : 1; - mmr_t priv : 1; - mmr_t prige : 1; - mmr_t src : 14; - mmr_t cmd : 8; - mmr_t dir : 26; - } sh_md_dqrp_mmr_yperr_s; -} sh_md_dqrp_mmr_yperr_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_CMDTRIG" */ /* cmd triggers */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_cmdtrig_u { mmr_t sh_md_dqrp_mmr_dir_cmdtrig_regval; struct { @@ -26782,25 +14502,12 @@ mmr_t reserved_0 : 32; } sh_md_dqrp_mmr_dir_cmdtrig_s; } sh_md_dqrp_mmr_dir_cmdtrig_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_cmdtrig_u { - mmr_t sh_md_dqrp_mmr_dir_cmdtrig_regval; - struct { - mmr_t reserved_0 : 32; - mmr_t cmd3 : 8; - mmr_t cmd2 : 8; - mmr_t cmd1 : 8; - mmr_t cmd0 : 8; - } sh_md_dqrp_mmr_dir_cmdtrig_s; -} sh_md_dqrp_mmr_dir_cmdtrig_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_TBLTRIG" */ /* dir table trigger */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_tbltrig_u { mmr_t sh_md_dqrp_mmr_dir_tbltrig_regval; struct { @@ -26813,27 +14520,12 @@ mmr_t reserved_0 : 22; } sh_md_dqrp_mmr_dir_tbltrig_s; } sh_md_dqrp_mmr_dir_tbltrig_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_tbltrig_u { - mmr_t sh_md_dqrp_mmr_dir_tbltrig_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t mybit : 8; - mmr_t dirst : 9; - mmr_t prige : 1; - mmr_t acc : 2; - mmr_t cmd : 8; - mmr_t src : 14; - } sh_md_dqrp_mmr_dir_tbltrig_s; -} sh_md_dqrp_mmr_dir_tbltrig_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_DIR_TBLMASK" */ /* dir table trigger mask */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_dir_tblmask_u { mmr_t sh_md_dqrp_mmr_dir_tblmask_regval; struct { @@ -26846,27 +14538,12 @@ mmr_t reserved_0 : 22; } sh_md_dqrp_mmr_dir_tblmask_s; } sh_md_dqrp_mmr_dir_tblmask_u_t; -#else -typedef union sh_md_dqrp_mmr_dir_tblmask_u { - mmr_t sh_md_dqrp_mmr_dir_tblmask_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t mybit : 8; - mmr_t dirst : 9; - mmr_t prige : 1; - mmr_t acc : 2; - mmr_t cmd : 8; - mmr_t src : 14; - } sh_md_dqrp_mmr_dir_tblmask_s; -} sh_md_dqrp_mmr_dir_tblmask_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_XBIST_H" */ /* rising edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_xbist_h_u { mmr_t sh_md_dqrp_mmr_xbist_h_regval; struct { @@ -26878,26 +14555,12 @@ mmr_t reserved_1 : 21; } sh_md_dqrp_mmr_xbist_h_s; } sh_md_dqrp_mmr_xbist_h_u_t; -#else -typedef union sh_md_dqrp_mmr_xbist_h_u { - mmr_t sh_md_dqrp_mmr_xbist_h_regval; - struct { - mmr_t reserved_1 : 21; - mmr_t arm : 1; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqrp_mmr_xbist_h_s; -} sh_md_dqrp_mmr_xbist_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_XBIST_L" */ /* falling edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_xbist_l_u { mmr_t sh_md_dqrp_mmr_xbist_l_regval; struct { @@ -26908,25 +14571,12 @@ mmr_t reserved_1 : 22; } sh_md_dqrp_mmr_xbist_l_s; } sh_md_dqrp_mmr_xbist_l_u_t; -#else -typedef union sh_md_dqrp_mmr_xbist_l_u { - mmr_t sh_md_dqrp_mmr_xbist_l_regval; - struct { - mmr_t reserved_1 : 22; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqrp_mmr_xbist_l_s; -} sh_md_dqrp_mmr_xbist_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_XBIST_ERR_H" */ /* rising edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_xbist_err_h_u { mmr_t sh_md_dqrp_mmr_xbist_err_h_regval; struct { @@ -26937,25 +14587,12 @@ mmr_t reserved_1 : 22; } sh_md_dqrp_mmr_xbist_err_h_s; } sh_md_dqrp_mmr_xbist_err_h_u_t; -#else -typedef union sh_md_dqrp_mmr_xbist_err_h_u { - mmr_t sh_md_dqrp_mmr_xbist_err_h_regval; - struct { - mmr_t reserved_1 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqrp_mmr_xbist_err_h_s; -} sh_md_dqrp_mmr_xbist_err_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_XBIST_ERR_L" */ /* falling edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_xbist_err_l_u { mmr_t sh_md_dqrp_mmr_xbist_err_l_regval; struct { @@ -26966,25 +14603,12 @@ mmr_t reserved_1 : 22; } sh_md_dqrp_mmr_xbist_err_l_s; } sh_md_dqrp_mmr_xbist_err_l_u_t; -#else -typedef union sh_md_dqrp_mmr_xbist_err_l_u { - mmr_t sh_md_dqrp_mmr_xbist_err_l_regval; - struct { - mmr_t reserved_1 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqrp_mmr_xbist_err_l_s; -} sh_md_dqrp_mmr_xbist_err_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_YBIST_H" */ /* rising edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_ybist_h_u { mmr_t sh_md_dqrp_mmr_ybist_h_regval; struct { @@ -26996,26 +14620,12 @@ mmr_t reserved_1 : 21; } sh_md_dqrp_mmr_ybist_h_s; } sh_md_dqrp_mmr_ybist_h_u_t; -#else -typedef union sh_md_dqrp_mmr_ybist_h_u { - mmr_t sh_md_dqrp_mmr_ybist_h_regval; - struct { - mmr_t reserved_1 : 21; - mmr_t arm : 1; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqrp_mmr_ybist_h_s; -} sh_md_dqrp_mmr_ybist_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_YBIST_L" */ /* falling edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_ybist_l_u { mmr_t sh_md_dqrp_mmr_ybist_l_regval; struct { @@ -27026,25 +14636,12 @@ mmr_t reserved_1 : 22; } sh_md_dqrp_mmr_ybist_l_s; } sh_md_dqrp_mmr_ybist_l_u_t; -#else -typedef union sh_md_dqrp_mmr_ybist_l_u { - mmr_t sh_md_dqrp_mmr_ybist_l_regval; - struct { - mmr_t reserved_1 : 22; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqrp_mmr_ybist_l_s; -} sh_md_dqrp_mmr_ybist_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_YBIST_ERR_H" */ /* rising edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_ybist_err_h_u { mmr_t sh_md_dqrp_mmr_ybist_err_h_regval; struct { @@ -27055,25 +14652,12 @@ mmr_t reserved_1 : 22; } sh_md_dqrp_mmr_ybist_err_h_s; } sh_md_dqrp_mmr_ybist_err_h_u_t; -#else -typedef union sh_md_dqrp_mmr_ybist_err_h_u { - mmr_t sh_md_dqrp_mmr_ybist_err_h_regval; - struct { - mmr_t reserved_1 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqrp_mmr_ybist_err_h_s; -} sh_md_dqrp_mmr_ybist_err_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRP_MMR_YBIST_ERR_L" */ /* falling edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrp_mmr_ybist_err_l_u { mmr_t sh_md_dqrp_mmr_ybist_err_l_regval; struct { @@ -27084,25 +14668,12 @@ mmr_t reserved_1 : 22; } sh_md_dqrp_mmr_ybist_err_l_s; } sh_md_dqrp_mmr_ybist_err_l_u_t; -#else -typedef union sh_md_dqrp_mmr_ybist_err_l_u { - mmr_t sh_md_dqrp_mmr_ybist_err_l_regval; - struct { - mmr_t reserved_1 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t reserved_0 : 8; - mmr_t pat : 32; - } sh_md_dqrp_mmr_ybist_err_l_s; -} sh_md_dqrp_mmr_ybist_err_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRS_MMR_XBIST_H" */ /* rising edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrs_mmr_xbist_h_u { mmr_t sh_md_dqrs_mmr_xbist_h_regval; struct { @@ -27113,25 +14684,12 @@ mmr_t reserved_0 : 21; } sh_md_dqrs_mmr_xbist_h_s; } sh_md_dqrs_mmr_xbist_h_u_t; -#else -typedef union sh_md_dqrs_mmr_xbist_h_u { - mmr_t sh_md_dqrs_mmr_xbist_h_regval; - struct { - mmr_t reserved_0 : 21; - mmr_t arm : 1; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t pat : 40; - } sh_md_dqrs_mmr_xbist_h_s; -} sh_md_dqrs_mmr_xbist_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRS_MMR_XBIST_L" */ /* falling edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrs_mmr_xbist_l_u { mmr_t sh_md_dqrs_mmr_xbist_l_regval; struct { @@ -27141,24 +14699,12 @@ mmr_t reserved_0 : 22; } sh_md_dqrs_mmr_xbist_l_s; } sh_md_dqrs_mmr_xbist_l_u_t; -#else -typedef union sh_md_dqrs_mmr_xbist_l_u { - mmr_t sh_md_dqrs_mmr_xbist_l_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t pat : 40; - } sh_md_dqrs_mmr_xbist_l_s; -} sh_md_dqrs_mmr_xbist_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRS_MMR_XBIST_ERR_H" */ /* rising edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrs_mmr_xbist_err_h_u { mmr_t sh_md_dqrs_mmr_xbist_err_h_regval; struct { @@ -27168,24 +14714,12 @@ mmr_t reserved_0 : 22; } sh_md_dqrs_mmr_xbist_err_h_s; } sh_md_dqrs_mmr_xbist_err_h_u_t; -#else -typedef union sh_md_dqrs_mmr_xbist_err_h_u { - mmr_t sh_md_dqrs_mmr_xbist_err_h_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t pat : 40; - } sh_md_dqrs_mmr_xbist_err_h_s; -} sh_md_dqrs_mmr_xbist_err_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRS_MMR_XBIST_ERR_L" */ /* falling edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrs_mmr_xbist_err_l_u { mmr_t sh_md_dqrs_mmr_xbist_err_l_regval; struct { @@ -27195,24 +14729,12 @@ mmr_t reserved_0 : 22; } sh_md_dqrs_mmr_xbist_err_l_s; } sh_md_dqrs_mmr_xbist_err_l_u_t; -#else -typedef union sh_md_dqrs_mmr_xbist_err_l_u { - mmr_t sh_md_dqrs_mmr_xbist_err_l_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t pat : 40; - } sh_md_dqrs_mmr_xbist_err_l_s; -} sh_md_dqrs_mmr_xbist_err_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRS_MMR_YBIST_H" */ /* rising edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrs_mmr_ybist_h_u { mmr_t sh_md_dqrs_mmr_ybist_h_regval; struct { @@ -27223,25 +14745,12 @@ mmr_t reserved_0 : 21; } sh_md_dqrs_mmr_ybist_h_s; } sh_md_dqrs_mmr_ybist_h_u_t; -#else -typedef union sh_md_dqrs_mmr_ybist_h_u { - mmr_t sh_md_dqrs_mmr_ybist_h_regval; - struct { - mmr_t reserved_0 : 21; - mmr_t arm : 1; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t pat : 40; - } sh_md_dqrs_mmr_ybist_h_s; -} sh_md_dqrs_mmr_ybist_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRS_MMR_YBIST_L" */ /* falling edge bist/fill pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrs_mmr_ybist_l_u { mmr_t sh_md_dqrs_mmr_ybist_l_regval; struct { @@ -27251,24 +14760,12 @@ mmr_t reserved_0 : 22; } sh_md_dqrs_mmr_ybist_l_s; } sh_md_dqrs_mmr_ybist_l_u_t; -#else -typedef union sh_md_dqrs_mmr_ybist_l_u { - mmr_t sh_md_dqrs_mmr_ybist_l_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t rot : 1; - mmr_t inv : 1; - mmr_t pat : 40; - } sh_md_dqrs_mmr_ybist_l_s; -} sh_md_dqrs_mmr_ybist_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRS_MMR_YBIST_ERR_H" */ /* rising edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrs_mmr_ybist_err_h_u { mmr_t sh_md_dqrs_mmr_ybist_err_h_regval; struct { @@ -27278,24 +14775,12 @@ mmr_t reserved_0 : 22; } sh_md_dqrs_mmr_ybist_err_h_s; } sh_md_dqrs_mmr_ybist_err_h_u_t; -#else -typedef union sh_md_dqrs_mmr_ybist_err_h_u { - mmr_t sh_md_dqrs_mmr_ybist_err_h_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t pat : 40; - } sh_md_dqrs_mmr_ybist_err_h_s; -} sh_md_dqrs_mmr_ybist_err_h_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRS_MMR_YBIST_ERR_L" */ /* falling edge bist error pattern */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrs_mmr_ybist_err_l_u { mmr_t sh_md_dqrs_mmr_ybist_err_l_regval; struct { @@ -27305,24 +14790,12 @@ mmr_t reserved_0 : 22; } sh_md_dqrs_mmr_ybist_err_l_s; } sh_md_dqrs_mmr_ybist_err_l_u_t; -#else -typedef union sh_md_dqrs_mmr_ybist_err_l_u { - mmr_t sh_md_dqrs_mmr_ybist_err_l_regval; - struct { - mmr_t reserved_0 : 22; - mmr_t more : 1; - mmr_t val : 1; - mmr_t pat : 40; - } sh_md_dqrs_mmr_ybist_err_l_s; -} sh_md_dqrs_mmr_ybist_err_l_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRS_MMR_JNR_DEBUG" */ /* joiner/fct debug configuration */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrs_mmr_jnr_debug_u { mmr_t sh_md_dqrs_mmr_jnr_debug_regval; struct { @@ -27331,23 +14804,12 @@ mmr_t reserved_0 : 62; } sh_md_dqrs_mmr_jnr_debug_s; } sh_md_dqrs_mmr_jnr_debug_u_t; -#else -typedef union sh_md_dqrs_mmr_jnr_debug_u { - mmr_t sh_md_dqrs_mmr_jnr_debug_regval; - struct { - mmr_t reserved_0 : 62; - mmr_t rw : 1; - mmr_t px : 1; - } sh_md_dqrs_mmr_jnr_debug_s; -} sh_md_dqrs_mmr_jnr_debug_u_t; -#endif /* ==================================================================== */ /* Register "SH_MD_DQRS_MMR_YAMOPW_ERR" */ /* amo/partial rmw ecc error register */ /* ==================================================================== */ -#ifdef LITTLE_ENDIAN typedef union sh_md_dqrs_mmr_yamopw_err_u { mmr_t sh_md_dqrs_mmr_yamopw_err_regval; struct { @@ -27363,23 +14825,5 @@ mmr_t reserved_2 : 31; } sh_md_dqrs_mmr_yamopw_err_s; } sh_md_dqrs_mmr_yamopw_err_u_t; -#else -typedef union sh_md_dqrs_mmr_yamopw_err_u { - mmr_t sh_md_dqrs_mmr_yamopw_err_regval; - struct { - mmr_t reserved_2 : 31; - mmr_t arm : 1; - mmr_t reserved_1 : 6; - mmr_t runc : 1; - mmr_t rcor : 1; - mmr_t rsyn : 8; - mmr_t reserved_0 : 6; - mmr_t sunc : 1; - mmr_t scor : 1; - mmr_t ssyn : 8; - } sh_md_dqrs_mmr_yamopw_err_s; -} sh_md_dqrs_mmr_yamopw_err_u_t; -#endif - #endif /* _ASM_IA64_SN_SN2_SHUB_MMR_T_H */ diff -Nru a/include/asm-ia64/spinlock.h b/include/asm-ia64/spinlock.h --- a/include/asm-ia64/spinlock.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-ia64/spinlock.h Mon Sep 22 00:30:18 2003 @@ -24,6 +24,7 @@ #define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 } #define spin_lock_init(x) ((x)->lock = 0) +#ifdef ASM_SUPPORTED /* * Try to get the lock. If we fail to get the lock, make a non-standard call to * ia64_spinlock_contention(). We do not use a normal call because that would force all @@ -85,6 +86,21 @@ # endif /* CONFIG_MCKINLEY */ #endif } +#else /* !ASM_SUPPORTED */ +# define _raw_spin_lock(x) \ +do { \ + __u32 *ia64_spinlock_ptr = (__u32 *) (x); \ + __u64 ia64_spinlock_val; \ + ia64_spinlock_val = ia64_cmpxchg4_acq(ia64_spinlock_ptr, 1, 0); \ + if (unlikely(ia64_spinlock_val)) { \ + do { \ + while (*ia64_spinlock_ptr) \ + ia64_barrier(); \ + ia64_spinlock_val = ia64_cmpxchg4_acq(ia64_spinlock_ptr, 1, 0); \ + } while (ia64_spinlock_val); \ + } \ +} while (0) +#endif /* !ASM_SUPPORTED */ #define spin_is_locked(x) ((x)->lock != 0) #define _raw_spin_unlock(x) do { barrier(); ((spinlock_t *) x)->lock = 0; } while (0) @@ -117,22 +133,19 @@ ia64_fetchadd(-1, (int *) __read_lock_ptr, rel); \ } while (0) +#ifdef ASM_SUPPORTED #define _raw_write_lock(rw) \ do { \ __asm__ __volatile__ ( \ "mov ar.ccv = r0\n" \ - "dep r29 = -1, r0, 31, 1\n" \ - ";;\n" \ + "dep r29 = -1, r0, 31, 1;;\n" \ "1:\n" \ - "ld4 r2 = [%0]\n" \ - ";;\n" \ + "ld4 r2 = [%0];;\n" \ "cmp4.eq p0,p7 = r0,r2\n" \ "(p7) br.cond.spnt.few 1b \n" \ - "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" \ - ";;\n" \ + "cmpxchg4.acq r2 = [%0], r29, ar.ccv;;\n" \ "cmp4.eq p0,p7 = r0, r2\n" \ - "(p7) br.cond.spnt.few 1b\n" \ - ";;\n" \ + "(p7) br.cond.spnt.few 1b;;\n" \ :: "r"(rw) : "ar.ccv", "p7", "r2", "r29", "memory"); \ } while(0) @@ -142,12 +155,34 @@ \ __asm__ __volatile__ ( \ "mov ar.ccv = r0\n" \ - "dep r29 = -1, r0, 31, 1\n" \ - ";;\n" \ + "dep r29 = -1, r0, 31, 1;;\n" \ "cmpxchg4.acq %0 = [%1], r29, ar.ccv\n" \ : "=r"(result) : "r"(rw) : "ar.ccv", "r29", "memory"); \ (result == 0); \ }) + +#else /* !ASM_SUPPORTED */ + +#define _raw_write_lock(l) \ +({ \ + __u64 ia64_val, ia64_set_val = ia64_dep_mi(-1, 0, 31, 1); \ + __u32 *ia64_write_lock_ptr = (__u32 *) (l); \ + do { \ + while (*ia64_write_lock_ptr) \ + ia64_barrier(); \ + ia64_val = ia64_cmpxchg4_acq(ia64_write_lock_ptr, ia64_set_val, 0); \ + } while (ia64_val); \ +}) + +#define _raw_write_trylock(rw) \ +({ \ + __u64 ia64_val; \ + __u64 ia64_set_val = ia64_dep_mi(-1, 0, 31,1); \ + ia64_val = ia64_cmpxchg4_acq((__u32 *)(rw), ia64_set_val, 0); \ + (ia64_val == 0); \ +}) + +#endif /* !ASM_SUPPORTED */ #define _raw_write_unlock(x) \ ({ \ diff -Nru a/include/asm-ia64/uaccess.h b/include/asm-ia64/uaccess.h --- a/include/asm-ia64/uaccess.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-ia64/uaccess.h Mon Sep 22 00:30:20 2003 @@ -33,6 +33,7 @@ #include #include +#include #include /* @@ -86,6 +87,8 @@ #define __put_user(x,ptr) __put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr))) #define __get_user(x,ptr) __get_user_nocheck((x),(ptr),sizeof(*(ptr))) +#ifdef ASM_SUPPORTED + extern void __get_user_unknown (void); #define __get_user_nocheck(x,ptr,size) \ @@ -216,6 +219,90 @@ "\t.xdata4 \"__ex_table\", 1b-., 1f-.\n" \ "[1:]" \ : "=r"(__pu_err) : "m"(__m(addr)), "rO"(x), "0"(__pu_err)) + +#else /* !ASM_SUPPORTED */ + +#define RELOC_TYPE 2 /* ip-rel */ + +#define __put_user_xx(val, addr, size, err) \ + __st_user("__ex_table", (unsigned long) addr, size, RELOC_TYPE, (unsigned long) (val)); \ + (err) = ia64_getreg(_IA64_REG_R8); + +#define __get_user_xx(val, addr, size, err) \ + __ld_user("__ex_table", (unsigned long) addr, size, RELOC_TYPE); \ + (err) = ia64_getreg(_IA64_REG_R8); \ + (val) = ia64_getreg(_IA64_REG_R9); + +extern void __get_user_unknown (void); + +#define __get_user_nocheck(x, ptr, size) \ +({ \ + register long __gu_err = 0; \ + register long __gu_val = 0; \ + const __typeof__(*(ptr)) *__gu_addr = (ptr); \ + switch (size) { \ + case 1: case 2: case 4: case 8: \ + __get_user_xx(__gu_val, __gu_addr, size, __gu_err); \ + break; \ + default: \ + __get_user_unknown(); \ + break; \ + } \ + (x) = (__typeof__(*(ptr))) __gu_val; \ + __gu_err; \ +}) + +#define __get_user_check(x,ptr,size,segment) \ +({ \ + register long __gu_err = -EFAULT; \ + register long __gu_val = 0; \ + const __typeof__(*(ptr)) *__gu_addr = (ptr); \ + if (__access_ok((long) __gu_addr, size, segment)) { \ + switch (size) { \ + case 1: case 2: case 4: case 8: \ + __get_user_xx(__gu_val, __gu_addr, size, __gu_err); \ + break; \ + default: \ + __get_user_unknown(); break; \ + } \ + } \ + (x) = (__typeof__(*(ptr))) __gu_val; \ + __gu_err; \ +}) + +extern void __put_user_unknown (void); + +#define __put_user_nocheck(x, ptr, size) \ +({ \ + int __pu_err = 0; \ + __typeof__(*(ptr)) *__pu_addr = (ptr); \ + switch (size) { \ + case 1: case 2: case 4: case 8: \ + __put_user_xx(x, __pu_addr, size, __pu_err); \ + break; \ + default: \ + __put_user_unknown(); break; \ + } \ + __pu_err; \ +}) + +#define __put_user_check(x,ptr,size,segment) \ +({ \ + register long __pu_err = -EFAULT; \ + __typeof__(*(ptr)) *__pu_addr = (ptr); \ + if (__access_ok((long)__pu_addr,size,segment)) { \ + switch (size) { \ + case 1: case 2: case 4: case 8: \ + __put_user_xx(x,__pu_addr, size, __pu_err); \ + break; \ + default: \ + __put_user_unknown(); break; \ + } \ + } \ + __pu_err; \ +}) + +#endif /* !ASM_SUPPORTED */ /* * Complex access routines diff -Nru a/include/asm-ia64/unistd.h b/include/asm-ia64/unistd.h --- a/include/asm-ia64/unistd.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-ia64/unistd.h Mon Sep 22 00:30:18 2003 @@ -248,7 +248,6 @@ #define __NR_sys_clock_nanosleep 1256 #define __NR_sys_fstatfs64 1257 #define __NR_sys_statfs64 1258 -#define __NR_fadvises64_64 1259 #ifdef __KERNEL__ diff -Nru a/include/asm-m68k/processor.h b/include/asm-m68k/processor.h --- a/include/asm-m68k/processor.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-m68k/processor.h Mon Sep 22 00:30:23 2003 @@ -56,7 +56,6 @@ /* * Bus types */ -#define EISA_bus 0 #define MCA_bus 0 struct task_work { diff -Nru a/include/asm-m68k/signal.h b/include/asm-m68k/signal.h --- a/include/asm-m68k/signal.h Mon Sep 22 00:30:19 2003 +++ b/include/asm-m68k/signal.h Mon Sep 22 00:30:19 2003 @@ -68,7 +68,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/asm-m68knommu/processor.h b/include/asm-m68knommu/processor.h --- a/include/asm-m68knommu/processor.h Mon Sep 22 00:30:22 2003 +++ b/include/asm-m68knommu/processor.h Mon Sep 22 00:30:22 2003 @@ -58,7 +58,6 @@ /* * Bus types */ -#define EISA_bus 0 #define MCA_bus 0 /* diff -Nru a/include/asm-m68knommu/signal.h b/include/asm-m68knommu/signal.h --- a/include/asm-m68knommu/signal.h Mon Sep 22 00:30:22 2003 +++ b/include/asm-m68knommu/signal.h Mon Sep 22 00:30:22 2003 @@ -68,7 +68,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/asm-mips/processor.h b/include/asm-mips/processor.h --- a/include/asm-mips/processor.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-mips/processor.h Mon Sep 22 00:30:18 2003 @@ -135,12 +135,6 @@ /* * Bus types (default is ISA, but people can check others with these..) */ -#ifdef CONFIG_EISA -extern int EISA_bus; -#else -#define EISA_bus (0) -#endif - #define MCA_bus 0 #define MCA_bus__is_a_macro /* for versions in ksyms.c */ diff -Nru a/include/asm-mips/signal.h b/include/asm-mips/signal.h --- a/include/asm-mips/signal.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-mips/signal.h Mon Sep 22 00:30:20 2003 @@ -59,7 +59,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/asm-parisc/atomic.h b/include/asm-parisc/atomic.h --- a/include/asm-parisc/atomic.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-parisc/atomic.h Mon Sep 22 00:30:20 2003 @@ -49,27 +49,14 @@ * Cache-line alignment would conflict with, for example, linux/module.h */ -typedef struct { - volatile int counter; -} atomic_t; +typedef struct { volatile long counter; } atomic_t; -/* -** xchg/cmpxchg moved from asm/system.h - ggg -*/ - -#if 1 /* This should get optimized out since it's never called. ** Or get a link error if xchg is used "wrong". */ extern void __xchg_called_with_bad_pointer(void); -#else -static inline void __xchg_called_with_bad_pointer(void) -{ - extern void panic(const char * fmt, ...); - panic("xchg called with bad pointer"); -} -#endif + /* __xchg32/64 defined in arch/parisc/lib/bitops.c */ extern unsigned long __xchg8(char, char *); diff -Nru a/include/asm-parisc/bitops.h b/include/asm-parisc/bitops.h --- a/include/asm-parisc/bitops.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-parisc/bitops.h Mon Sep 22 00:30:18 2003 @@ -203,55 +203,102 @@ return !!(*addr & mask); } -extern __inline__ unsigned long ffz(unsigned long word) -{ - unsigned long result; - - result = 0; - while (word & 1) { - result++; - word >>= 1; - } - - return result; -} - #ifdef __KERNEL__ /** - * __ffs - find first bit in word. + * __ffs - find first bit in word. returns 0 to "BITS_PER_LONG-1". * @word: The word to search * - * Undefined if no bit exists, so code should check against 0 first. + * __ffs() return is undefined if no bit is set. + * + * 32-bit fast __ffs by LaMont Jones "lamont At hp com". + * 64-bit enhancement by Grant Grundler "grundler At parisc-linux org". + * (with help from willy/jejb to get the semantics right) + * + * This algorithm avoids branches by making use of nullification. + * One side effect of "extr" instructions is it sets PSW[N] bit. + * How PSW[N] (nullify next insn) gets set is determined by the + * "condition" field (eg "<>" or "TR" below) in the extr* insn. + * Only the 1st and one of either the 2cd or 3rd insn will get executed. + * Each set of 3 insn will get executed in 2 cycles on PA8x00 vs 16 or so + * cycles for each mispredicted branch. */ -static __inline__ unsigned long __ffs(unsigned long word) + +static __inline__ unsigned long __ffs(unsigned long x) { - unsigned long result = 0; + unsigned long ret; - while (!(word & 1UL)) { - result++; - word >>= 1; - } - return result; + __asm__( +#if BITS_PER_LONG > 32 + " ldi 63,%1\n" + " extrd,u,*<> %0,63,32,%%r0\n" + " extrd,u,*TR %0,31,32,%0\n" + " addi -32,%1,%1\n" +#else + " ldi 31,%1\n" +#endif + " extru,<> %0,31,16,%%r0\n" + " extru,TR %0,15,16,%0\n" + " addi -16,%1,%1\n" + " extru,<> %0,31,8,%%r0\n" + " extru,TR %0,23,8,%0\n" + " addi -8,%1,%1\n" + " extru,<> %0,31,4,%%r0\n" + " extru,TR %0,27,4,%0\n" + " addi -4,%1,%1\n" + " extru,<> %0,31,2,%%r0\n" + " extru,TR %0,29,2,%0\n" + " addi -2,%1,%1\n" + " extru,= %0,31,1,%%r0\n" + " addi -1,%1,%1\n" + : "+r" (x), "=r" (ret) ); + return ret; } +/* Undefined if no bit is zero. */ +#define ffz(x) __ffs(~x) + /* - * ffs: find first bit set. This is defined the same way as - * the libc and compiler builtin ffs routines, therefore - * differs in spirit from the above ffz (man ffs). + * ffs: find first bit set. returns 1 to BITS_PER_LONG or 0 (if none set) + * This is defined the same way as the libc and compiler builtin + * ffs routines, therefore differs in spirit from the above ffz (man ffs). */ static __inline__ int ffs(int x) { - if (!x) - return 0; - return __ffs((unsigned long)x); + return x ? (__ffs((unsigned long)x) + 1) : 0; } /* - * fls: find last bit set. + * fls: find last (most significant) bit set. + * fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. */ -#define fls(x) generic_fls(x) +static __inline__ int fls(int x) +{ + int ret; + if (!x) + return 0; + + __asm__( + " ldi 1,%1\n" + " extru,<> %0,15,16,%%r0\n" + " zdep,TR %0,15,16,%0\n" /* xxxx0000 */ + " addi 16,%1,%1\n" + " extru,<> %0,7,8,%%r0\n" + " zdep,TR %0,23,24,%0\n" /* xx000000 */ + " addi 8,%1,%1\n" + " extru,<> %0,3,4,%%r0\n" + " zdep,TR %0,27,28,%0\n" /* x0000000 */ + " addi 4,%1,%1\n" + " extru,<> %0,1,2,%%r0\n" + " zdep,TR %0,29,30,%0\n" /* y0000000 (y&3 = 0 */ + " addi 2,%1,%1\n" + " extru,= %0,0,1,%%r0\n" + " addi 1,%1,%1\n" /* if y & 8, add 1 */ + : "+r" (x), "=r" (ret) ); + + return ret; +} /* * hweightN: returns the hamming weight (i.e. the number diff -Nru a/include/asm-parisc/byteorder.h b/include/asm-parisc/byteorder.h --- a/include/asm-parisc/byteorder.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-parisc/byteorder.h Mon Sep 22 00:30:24 2003 @@ -5,6 +5,25 @@ #ifdef __GNUC__ +static __inline__ __const__ __u16 ___arch__swab16(__u16 x) +{ + __asm__("dep %0, 15, 8, %0\n\t" /* deposit 00ab -> 0bab */ + "shd %%r0, %0, 8, %0" /* shift 000000ab -> 00ba */ + : "=r" (x) + : "0" (x)); + return x; +} + +static __inline__ __const__ __u32 ___arch__swab24(__u32 x) +{ + __asm__("shd %0, %0, 8, %0\n\t" /* shift xabcxabc -> cxab */ + "dep %0, 15, 8, %0\n\t" /* deposit cxab -> cbab */ + "shd %%r0, %0, 8, %0" /* shift 0000cbab -> 0cba */ + : "=r" (x) + : "0" (x)); + return x; +} + static __inline__ __const__ __u32 ___arch__swab32(__u32 x) { unsigned int temp; @@ -39,34 +58,21 @@ return x; } #define __arch__swab64(x) ___arch__swab64(x) -#else +#define __BYTEORDER_HAS_U64__ +#elif !defined(__STRICT_ANSI__) static __inline__ __const__ __u64 ___arch__swab64(__u64 x) { - __u32 t1 = (__u32) x; - __u32 t2 = (__u32) ((x) >> 32); - ___arch__swab32(t1); - ___arch__swab32(t2); - return (((__u64) t1 << 32) + ((__u64) t2)); + __u32 t1 = ___arch__swab32((__u32) x); + __u32 t2 = ___arch__swab32((__u32) (x >> 32)); + return (((__u64) t1 << 32) | t2); } +#define __arch__swab64(x) ___arch__swab64(x) +#define __BYTEORDER_HAS_U64__ #endif - -static __inline__ __const__ __u16 ___arch__swab16(__u16 x) -{ - __asm__("dep %0, 15, 8, %0\n\t" /* deposit 00ab -> 0bab */ - "shd %r0, %0, 8, %0" /* shift 000000ab -> 00ba */ - : "=r" (x) - : "0" (x)); - return x; -} - -#define __arch__swab32(x) ___arch__swab32(x) #define __arch__swab16(x) ___arch__swab16(x) - -#if !defined(__STRICT_ANSI__) || defined(__KERNEL__) -# define __BYTEORDER_HAS_U64__ -# define __SWAB_64_THRU_32__ -#endif +#define __arch__swab24(x) ___arch__swab24(x) +#define __arch__swab32(x) ___arch__swab32(x) #endif /* __GNUC__ */ diff -Nru a/include/asm-parisc/cacheflush.h b/include/asm-parisc/cacheflush.h --- a/include/asm-parisc/cacheflush.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-parisc/cacheflush.h Mon Sep 22 00:30:24 2003 @@ -78,8 +78,9 @@ #define flush_icache_range(s,e) do { flush_kernel_dcache_range_asm(s,e); flush_kernel_icache_range_asm(s,e); } while (0) -#define flush_icache_user_range(vma, page, addr, len) \ - flush_icache_page((vma), (page)) +#define flush_icache_user_range(vma, page, addr, len) do { \ + flush_user_dcache_range(addr, addr + len); \ + flush_user_icache_range(addr, addr + len); } while (0) static inline void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) diff -Nru a/include/asm-parisc/elf.h b/include/asm-parisc/elf.h --- a/include/asm-parisc/elf.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-parisc/elf.h Mon Sep 22 00:30:23 2003 @@ -283,6 +283,7 @@ */ #define ELF_DATA ELFDATA2MSB #define ELF_ARCH EM_PARISC +#define ELF_OSABI ELFOSABI_LINUX /* %r23 is set by ld.so to a pointer to a function which might be registered using atexit. This provides a mean for the dynamic diff -Nru a/include/asm-parisc/hil.h b/include/asm-parisc/hil.h --- a/include/asm-parisc/hil.h Mon Sep 22 00:30:23 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,26 +0,0 @@ -#ifndef _ASM_HIL_H -#define _ASM_HIL_H - -/* - * linux/asm-parisc/hil.h - * - * (c) 1999 Matthew Wilcox - */ - -extern unsigned long hil_base; /* declared in drivers/parisc/hil.c */ -extern unsigned int hil_irq; - -#define HILBASE hil_base /* 0xf0821000 (old) or 0xf0201000 (new) */ -#define HIL_DATA 0x800 -#define HIL_CMD 0x801 - -#define HIL_IRQ hil_irq - -#define hil_busy() (gsc_readb(HILBASE + HIL_CMD) & HIL_BUSY) -#define hil_data_available() (gsc_readb(HILBASE + HIL_CMD) & HIL_DATA_RDY) -#define hil_status() (gsc_readb(HILBASE + HIL_CMD)) -#define hil_command(x) do { gsc_writeb((x), HILBASE + HIL_CMD); } while (0) -#define hil_read_data() (gsc_readb(HILBASE + HIL_DATA)) -#define hil_write_data(x) do { gsc_writeb((x), HILBASE + HIL_DATA); } while (0) - -#endif diff -Nru a/include/asm-parisc/io.h b/include/asm-parisc/io.h --- a/include/asm-parisc/io.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-parisc/io.h Mon Sep 22 00:30:18 2003 @@ -291,4 +291,11 @@ #define dma_cache_wback(_start,_size) do { flush_kernel_dcache_range(_start,_size); } while (0) #define dma_cache_wback_inv(_start,_size) do { flush_kernel_dcache_range(_start,_size); } while (0) +/* PA machines have an MM I/O space from 0xf0000000-0xffffffff in 32 + * bit mode and from 0xfffffffff0000000-0xfffffffffffffff in 64 bit + * mode (essentially just sign extending. This macro takes in a 32 + * bit I/O address (still with the leading f) and outputs the correct + * value for either 32 or 64 bit mode */ +#define F_EXTEND(x) ((unsigned long)((x) | (0xffffffff00000000ULL))) + #endif diff -Nru a/include/asm-parisc/local.h b/include/asm-parisc/local.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-parisc/local.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,40 @@ +#ifndef _ARCH_PARISC_LOCAL_H +#define _ARCH_PARISC_LOCAL_H + +#include +#include + +typedef atomic_t local_t; + +#define LOCAL_INIT(i) ATOMIC_INIT(i) +#define local_read(v) atomic_read(v) +#define local_set(v,i) atomic_set(v,i) + +#define local_inc(v) atomic_inc(v) +#define local_dec(v) atomic_dec(v) +#define local_add(i, v) atomic_add(i, v) +#define local_sub(i, v) atomic_sub(i, v) + +#define __local_inc(v) ((v)->counter++) +#define __local_dec(v) ((v)->counter--) +#define __local_add(i,v) ((v)->counter+=(i)) +#define __local_sub(i,v) ((v)->counter-=(i)) + +/* Use these for per-cpu local_t variables: on some archs they are + * much more efficient than these naive implementations. Note they take + * a variable, not an address. + */ +#define cpu_local_read(v) local_read(&__get_cpu_var(v)) +#define cpu_local_set(v, i) local_set(&__get_cpu_var(v), (i)) + +#define cpu_local_inc(v) local_inc(&__get_cpu_var(v)) +#define cpu_local_dec(v) local_dec(&__get_cpu_var(v)) +#define cpu_local_add(i, v) local_add((i), &__get_cpu_var(v)) +#define cpu_local_sub(i, v) local_sub((i), &__get_cpu_var(v)) + +#define __cpu_local_inc(v) __local_inc(&__get_cpu_var(v)) +#define __cpu_local_dec(v) __local_dec(&__get_cpu_var(v)) +#define __cpu_local_add(i, v) __local_add((i), &__get_cpu_var(v)) +#define __cpu_local_sub(i, v) __local_sub((i), &__get_cpu_var(v)) + +#endif /* _ARCH_PARISC_LOCAL_H */ diff -Nru a/include/asm-parisc/processor.h b/include/asm-parisc/processor.h --- a/include/asm-parisc/processor.h Mon Sep 22 00:30:25 2003 +++ b/include/asm-parisc/processor.h Mon Sep 22 00:30:25 2003 @@ -101,12 +101,6 @@ #define CPU_HVERSION ((boot_cpu_data.hversion >> 4) & 0x0FFF) -#ifdef CONFIG_EISA -extern int EISA_bus; -#else -#define EISA_bus 0 -#endif - #define MCA_bus 0 #define MCA_bus__is_a_macro /* for versions in ksyms.c */ diff -Nru a/include/asm-parisc/sections.h b/include/asm-parisc/sections.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-parisc/sections.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,7 @@ +#ifndef _PARISC_SECTIONS_H +#define _PARISC_SECTIONS_H + +/* nothing to see, move along */ +#include + +#endif diff -Nru a/include/asm-parisc/signal.h b/include/asm-parisc/signal.h --- a/include/asm-parisc/signal.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-parisc/signal.h Mon Sep 22 00:30:24 2003 @@ -42,7 +42,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 37 -#define SIGRTMAX (_NSIG-1) /* it's 44 under HP/UX */ +#define SIGRTMAX _NSIG /* it's 44 under HP/UX */ /* * SA_FLAGS values: diff -Nru a/include/asm-parisc/uaccess.h b/include/asm-parisc/uaccess.h --- a/include/asm-parisc/uaccess.h Mon Sep 22 00:30:19 2003 +++ b/include/asm-parisc/uaccess.h Mon Sep 22 00:30:19 2003 @@ -28,6 +28,11 @@ * that put_user is the same as __put_user, etc. */ +extern int __get_kernel_bad(void); +extern int __get_user_bad(void); +extern int __put_kernel_bad(void); +extern int __put_user_bad(void); + #define access_ok(type,addr,size) (1) #define verify_area(type,addr,size) (0) @@ -35,8 +40,8 @@ #define get_user __get_user #if BITS_PER_LONG == 32 -#define LDD_KERNEL(ptr) BUG() -#define LDD_USER(ptr) BUG() +#define LDD_KERNEL(ptr) __get_kernel_bad(); +#define LDD_USER(ptr) __get_user_bad(); #define STD_KERNEL(x, ptr) __put_kernel_asm64((u32)x,ptr) #define STD_USER(x, ptr) __put_user_asm64((u32)x,ptr) #else @@ -72,7 +77,7 @@ case 2: __get_kernel_asm("ldh",ptr); break; \ case 4: __get_kernel_asm("ldw",ptr); break; \ case 8: LDD_KERNEL(ptr); break; \ - default: BUG(); break; \ + default: __get_kernel_bad(); break; \ } \ } \ else { \ @@ -81,7 +86,7 @@ case 2: __get_user_asm("ldh",ptr); break; \ case 4: __get_user_asm("ldw",ptr); break; \ case 8: LDD_USER(ptr); break; \ - default: BUG(); break; \ + default: __get_user_bad(); break; \ } \ } \ \ @@ -141,7 +146,7 @@ case 2: __put_kernel_asm("sth",x,ptr); break; \ case 4: __put_kernel_asm("stw",x,ptr); break; \ case 8: STD_KERNEL(x,ptr); break; \ - default: BUG(); break; \ + default: __put_kernel_bad(); break; \ } \ } \ else { \ @@ -150,7 +155,7 @@ case 2: __put_user_asm("sth",x,ptr); break; \ case 4: __put_user_asm("stw",x,ptr); break; \ case 8: STD_USER(x,ptr); break; \ - default: BUG(); break; \ + default: __put_user_bad(); break; \ } \ } \ \ diff -Nru a/include/asm-ppc/bitops.h b/include/asm-ppc/bitops.h --- a/include/asm-ppc/bitops.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-ppc/bitops.h Mon Sep 22 00:30:21 2003 @@ -276,7 +276,7 @@ * Find the first bit set in a 140-bit bitmap. * The first 100 bits are unlikely to be set. */ -static inline int sched_find_first_bit(unsigned long *b) +static inline int sched_find_first_bit(const unsigned long *b) { if (unlikely(b[0])) return __ffs(b[0]); @@ -295,7 +295,7 @@ * @offset: The bitnumber to start searching at * @size: The maximum size to search */ -static __inline__ unsigned long find_next_bit(unsigned long *addr, +static __inline__ unsigned long find_next_bit(const unsigned long *addr, unsigned long size, unsigned long offset) { unsigned int *p = ((unsigned int *) addr) + (offset >> 5); @@ -352,7 +352,7 @@ #define find_first_zero_bit(addr, size) \ find_next_zero_bit((addr), (size), 0) -static __inline__ unsigned long find_next_zero_bit(unsigned long * addr, +static __inline__ unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size, unsigned long offset) { unsigned int * p = ((unsigned int *) addr) + (offset >> 5); @@ -411,7 +411,7 @@ #define ext2_find_first_zero_bit(addr, size) \ ext2_find_next_zero_bit((addr), (size), 0) -static __inline__ unsigned long ext2_find_next_zero_bit(void *addr, +static __inline__ unsigned long ext2_find_next_zero_bit(const void *addr, unsigned long size, unsigned long offset) { unsigned int *p = ((unsigned int *) addr) + (offset >> 5); diff -Nru a/include/asm-ppc/highmem.h b/include/asm-ppc/highmem.h --- a/include/asm-ppc/highmem.h Mon Sep 22 00:30:25 2003 +++ b/include/asm-ppc/highmem.h Mon Sep 22 00:30:25 2003 @@ -26,6 +26,7 @@ #include #include #include +#include /* undef for production */ #define HIGHMEM_DEBUG 1 @@ -41,8 +42,8 @@ * easily, subsequent pte tables have to be allocated in one physical * chunk of RAM. */ -#define PKMAP_BASE CONFIG_HIGHMEM_START -#define LAST_PKMAP 1024 +#define PKMAP_BASE CONFIG_HIGHMEM_START +#define LAST_PKMAP (1 << PTE_SHIFT) #define LAST_PKMAP_MASK (LAST_PKMAP-1) #define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT) #define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT)) diff -Nru a/include/asm-ppc/ioctl.h b/include/asm-ppc/ioctl.h --- a/include/asm-ppc/ioctl.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-ppc/ioctl.h Mon Sep 22 00:30:21 2003 @@ -37,11 +37,21 @@ ((nr) << _IOC_NRSHIFT) | \ ((size) << _IOC_SIZESHIFT)) +/* provoke compile error for invalid uses of size argument */ +extern int __invalid_size_argument_for_IOC; +#define _IOC_TYPECHECK(t) \ + ((sizeof(t) == sizeof(t[1]) && \ + sizeof(t) < (1 << _IOC_SIZEBITS)) ? \ + sizeof(t) : __invalid_size_argument_for_IOC) + /* used to create numbers */ #define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) -#define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size)) -#define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size)) -#define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size)) +#define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size))) +#define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) +#define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) +#define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size)) +#define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size)) +#define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size)) /* used to decode them.. */ #define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK) diff -Nru a/include/asm-ppc/processor.h b/include/asm-ppc/processor.h --- a/include/asm-ppc/processor.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-ppc/processor.h Mon Sep 22 00:30:18 2003 @@ -803,7 +803,6 @@ /* * Bus types */ -#define EISA_bus 0 #define MCA_bus 0 #define MCA_bus__is_a_macro @@ -848,6 +847,7 @@ /* AltiVec status */ vector128 vscr __attribute((aligned(16))); unsigned long vrsave; + int used_vr; /* set if process has used altivec */ #endif /* CONFIG_ALTIVEC */ }; diff -Nru a/include/asm-ppc/signal.h b/include/asm-ppc/signal.h --- a/include/asm-ppc/signal.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-ppc/signal.h Mon Sep 22 00:30:18 2003 @@ -61,7 +61,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/asm-ppc/time.h b/include/asm-ppc/time.h --- a/include/asm-ppc/time.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-ppc/time.h Mon Sep 22 00:30:18 2003 @@ -97,6 +97,13 @@ return rtcl; } +extern __inline__ unsigned long get_rtcu(void) +{ + unsigned long rtcu; + asm volatile("mfrtcu %0" : "=r" (rtcu)); + return rtcu; +} + extern __inline__ unsigned get_native_tbl(void) { if (__USE_RTC()) return get_rtcl(); @@ -140,6 +147,7 @@ #endif /* Use mulhwu to scale processor timebase to timeval */ +/* Specifically, this computes (x * y) / 2^32. -- paulus */ #define mulhwu(x,y) \ ({unsigned z; asm ("mulhwu %0,%1,%2" : "=r" (z) : "r" (x), "r" (y)); z;}) diff -Nru a/include/asm-ppc/ucontext.h b/include/asm-ppc/ucontext.h --- a/include/asm-ppc/ucontext.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-ppc/ucontext.h Mon Sep 22 00:30:23 2003 @@ -1,14 +1,28 @@ #ifndef _ASMPPC_UCONTEXT_H #define _ASMPPC_UCONTEXT_H -/* Copied from i386. */ +#include +#include + +struct mcontext { + elf_gregset_t mc_gregs; + elf_fpregset_t mc_fregs; + unsigned long mc_pad[2]; + elf_vrregset_t mc_vregs __attribute__((__aligned__(16))); +}; struct ucontext { - unsigned long uc_flags; - struct ucontext *uc_link; - stack_t uc_stack; - struct sigcontext uc_mcontext; - sigset_t uc_sigmask; /* mask last for extensibility */ + unsigned long uc_flags; + struct ucontext *uc_link; + stack_t uc_stack; + int uc_pad[7]; + struct mcontext *uc_regs; /* backward compat */ + sigset_t uc_oldsigmask; /* backward compat */ + int uc_pad2; + sigset_t uc_sigmask; + /* glibc has 1024-bit signal masks, ours are 64-bit */ + int uc_maskext[30]; + struct mcontext uc_mcontext; }; #endif /* !_ASMPPC_UCONTEXT_H */ diff -Nru a/include/asm-ppc64/hvcall.h b/include/asm-ppc64/hvcall.h --- a/include/asm-ppc64/hvcall.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-ppc64/hvcall.h Mon Sep 22 00:30:18 2003 @@ -59,9 +59,6 @@ #define H_XIRR 0x74 #define H_PERFMON 0x7c -#define HSC ".long 0x44000022\n" -#define H_ENTER_r3 "li 3, 0x08\n" - /* plpar_hcall() -- Generic call interface using above opcodes * * The actual call interface is a hypervisor call instruction with diff -Nru a/include/asm-ppc64/ioctl.h b/include/asm-ppc64/ioctl.h --- a/include/asm-ppc64/ioctl.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-ppc64/ioctl.h Mon Sep 22 00:30:20 2003 @@ -42,11 +42,21 @@ ((nr) << _IOC_NRSHIFT) | \ ((size) << _IOC_SIZESHIFT)) +/* provoke compile error for invalid uses of size argument */ +extern int __invalid_size_argument_for_IOC; +#define _IOC_TYPECHECK(t) \ + ((sizeof(t) == sizeof(t[1]) && \ + sizeof(t) < (1 << _IOC_SIZEBITS)) ? \ + sizeof(t) : __invalid_size_argument_for_IOC) + /* used to create numbers */ #define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) -#define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size)) -#define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size)) -#define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size)) +#define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size))) +#define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) +#define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) +#define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size)) +#define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size)) +#define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size)) /* used to decode them.. */ #define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK) diff -Nru a/include/asm-ppc64/local.h b/include/asm-ppc64/local.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-ppc64/local.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1 @@ +#include diff -Nru a/include/asm-ppc64/mmu.h b/include/asm-ppc64/mmu.h --- a/include/asm-ppc64/mmu.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-ppc64/mmu.h Mon Sep 22 00:30:23 2003 @@ -18,6 +18,12 @@ /* Default "unsigned long" context */ typedef unsigned long mm_context_t; +#ifdef CONFIG_HUGETLB_PAGE +#define CONTEXT_LOW_HPAGES (1UL<<63) +#else +#define CONTEXT_LOW_HPAGES 0 +#endif + /* * Define the size of the cache used for segment table entries. The first * entry is used as a cache pointer, therefore the actual number of entries diff -Nru a/include/asm-ppc64/mmu_context.h b/include/asm-ppc64/mmu_context.h --- a/include/asm-ppc64/mmu_context.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-ppc64/mmu_context.h Mon Sep 22 00:30:20 2003 @@ -127,7 +127,8 @@ #endif mmu_context_queue.size++; - mmu_context_queue.elements[index] = mm->context; + mmu_context_queue.elements[index] = + mm->context & ~CONTEXT_LOW_HPAGES; spin_unlock_irqrestore(&mmu_context_queue.lock, flags); } @@ -188,6 +189,8 @@ get_vsid( unsigned long context, unsigned long ea ) { unsigned long ordinal, vsid; + + context &= ~CONTEXT_LOW_HPAGES; ordinal = (((ea >> 28) & 0x1fffff) * LAST_USER_CONTEXT) | context; vsid = (ordinal * VSID_RANDOMIZER) & VSID_MASK; diff -Nru a/include/asm-ppc64/mmzone.h b/include/asm-ppc64/mmzone.h --- a/include/asm-ppc64/mmzone.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-ppc64/mmzone.h Mon Sep 22 00:30:24 2003 @@ -20,7 +20,7 @@ extern int numa_cpu_lookup_table[]; extern int numa_memory_lookup_table[]; -extern unsigned long numa_cpumask_lookup_table[]; +extern cpumask_t numa_cpumask_lookup_table[]; extern int nr_cpus_in_node[]; #define MAX_MEMORY (1UL << 41) diff -Nru a/include/asm-ppc64/paca.h b/include/asm-ppc64/paca.h --- a/include/asm-ppc64/paca.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-ppc64/paca.h Mon Sep 22 00:30:21 2003 @@ -63,7 +63,7 @@ u16 xPacaIndex; /* Logical processor number 0x18 */ u16 active; /* Is this cpu active? 0x1a */ u32 default_decr; /* Default decrementer value 0x1c */ - u64 xHrdIntStack; /* Stack for hardware interrupts 0x20 */ + u64 unused1; u64 xKsave; /* Saved Kernel stack addr or zero 0x28 */ u64 pvr; /* Processor version register 0x30 */ u8 *exception_sp; /* 0x38 */ @@ -73,7 +73,7 @@ STAB xStab_data; /* Segment table information 0x50,0x58,0x60 */ u8 xSegments[STAB_CACHE_SIZE]; /* Cache of used stab entries 0x68,0x70 */ u8 xProcEnabled; /* 1=soft enabled 0x78 */ - u8 xHrdIntCount; /* Count of active hardware interrupts 0x79 */ + u8 unused2; u8 prof_enabled; /* 1=iSeries profiling enabled 0x7A */ u8 stab_cache_pointer; u8 resv1[4]; /* 0x7B-0x7F */ diff -Nru a/include/asm-ppc64/page.h b/include/asm-ppc64/page.h --- a/include/asm-ppc64/page.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-ppc64/page.h Mon Sep 22 00:30:18 2003 @@ -22,6 +22,39 @@ #define PAGE_MASK (~(PAGE_SIZE-1)) #define PAGE_OFFSET_MASK (PAGE_SIZE-1) +#ifdef CONFIG_HUGETLB_PAGE + +#define HPAGE_SHIFT 24 +#define HPAGE_SIZE ((1UL) << HPAGE_SHIFT) +#define HPAGE_MASK (~(HPAGE_SIZE - 1)) +#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) + +/* For 64-bit processes the hugepage range is 1T-1.5T */ +#define TASK_HPAGE_BASE (0x0000010000000000UL) +#define TASK_HPAGE_END (0x0000018000000000UL) +/* For 32-bit processes the hugepage range is 2-3G */ +#define TASK_HPAGE_BASE_32 (0x80000000UL) +#define TASK_HPAGE_END_32 (0xc0000000UL) + +#define ARCH_HAS_HUGEPAGE_ONLY_RANGE +#define is_hugepage_only_range(addr, len) \ + ( ((addr > (TASK_HPAGE_BASE-len)) && (addr < TASK_HPAGE_END)) || \ + ((current->mm->context & CONTEXT_LOW_HPAGES) && \ + (addr > (TASK_HPAGE_BASE_32-len)) && (addr < TASK_HPAGE_END_32)) ) +#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA + +#define in_hugepage_area(context, addr) \ + ((cur_cpu_spec->cpu_features & CPU_FTR_16M_PAGE) && \ + ((((addr) >= TASK_HPAGE_BASE) && ((addr) < TASK_HPAGE_END)) || \ + (((context) & CONTEXT_LOW_HPAGES) && \ + (((addr) >= TASK_HPAGE_BASE_32) && ((addr) < TASK_HPAGE_END_32))))) + +#else /* !CONFIG_HUGETLB_PAGE */ + +#define in_hugepage_area(mm, addr) 0 + +#endif /* !CONFIG_HUGETLB_PAGE */ + #define SID_SHIFT 28 #define SID_MASK 0xfffffffff #define GET_ESID(x) (((x) >> SID_SHIFT) & SID_MASK) diff -Nru a/include/asm-ppc64/pgtable.h b/include/asm-ppc64/pgtable.h --- a/include/asm-ppc64/pgtable.h Mon Sep 22 00:30:24 2003 +++ b/include/asm-ppc64/pgtable.h Mon Sep 22 00:30:24 2003 @@ -149,6 +149,25 @@ /* shift to put page number into pte */ #define PTE_SHIFT (16) +/* We allow 2^41 bytes of real memory, so we need 29 bits in the PMD + * to give the PTE page number. The bottom two bits are for flags. */ +#define PMD_TO_PTEPAGE_SHIFT (2) + +#ifdef CONFIG_HUGETLB_PAGE +#define _PMD_HUGEPAGE 0x00000001U +#define HUGEPTE_BATCH_SIZE (1<<(HPAGE_SHIFT-PMD_SHIFT)) + +int hash_huge_page(struct mm_struct *mm, unsigned long access, + unsigned long ea, unsigned long vsid, int local); + +#define HAVE_ARCH_UNMAPPED_AREA +#else + +#define hash_huge_page(mm,a,ea,vsid,local) -1 +#define _PMD_HUGEPAGE 0 + +#endif + #ifndef __ASSEMBLY__ /* @@ -178,12 +197,16 @@ #define pte_pfn(x) ((unsigned long)((pte_val(x) >> PTE_SHIFT))) #define pte_page(x) pfn_to_page(pte_pfn(x)) -#define pmd_set(pmdp, ptep) (pmd_val(*(pmdp)) = (__ba_to_bpn(ptep))) +#define pmd_set(pmdp, ptep) \ + (pmd_val(*(pmdp)) = (__ba_to_bpn(ptep) << PMD_TO_PTEPAGE_SHIFT)) #define pmd_none(pmd) (!pmd_val(pmd)) -#define pmd_bad(pmd) ((pmd_val(pmd)) == 0) -#define pmd_present(pmd) ((pmd_val(pmd)) != 0) +#define pmd_hugepage(pmd) (!!(pmd_val(pmd) & _PMD_HUGEPAGE)) +#define pmd_bad(pmd) (((pmd_val(pmd)) == 0) || pmd_hugepage(pmd)) +#define pmd_present(pmd) ((!pmd_hugepage(pmd)) \ + && (pmd_val(pmd) & ~_PMD_HUGEPAGE) != 0) #define pmd_clear(pmdp) (pmd_val(*(pmdp)) = 0) -#define pmd_page_kernel(pmd) (__bpn_to_ba(pmd_val(pmd))) +#define pmd_page_kernel(pmd) \ + (__bpn_to_ba(pmd_val(pmd) >> PMD_TO_PTEPAGE_SHIFT)) #define pmd_page(pmd) virt_to_page(pmd_page_kernel(pmd)) #define pgd_set(pgdp, pmdp) (pgd_val(*(pgdp)) = (__ba_to_bpn(pmdp))) #define pgd_none(pgd) (!pgd_val(pgd)) diff -Nru a/include/asm-ppc64/processor.h b/include/asm-ppc64/processor.h --- a/include/asm-ppc64/processor.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-ppc64/processor.h Mon Sep 22 00:30:18 2003 @@ -612,8 +612,6 @@ /* * Bus types */ -#define EISA_bus 0 -#define EISA_bus__is_a_macro /* for versions in ksyms.c */ #define MCA_bus 0 #define MCA_bus__is_a_macro /* for versions in ksyms.c */ diff -Nru a/include/asm-ppc64/prom.h b/include/asm-ppc64/prom.h --- a/include/asm-ppc64/prom.h Mon Sep 22 00:30:25 2003 +++ b/include/asm-ppc64/prom.h Mon Sep 22 00:30:25 2003 @@ -183,8 +183,6 @@ extern struct device_node *find_path_device(const char *path); extern struct device_node *find_compatible_devices(const char *type, const char *compat); -extern struct device_node *find_pci_device_OFnode(unsigned char bus, - unsigned char dev_fn); extern struct device_node *find_all_nodes(void); extern int device_is_compatible(struct device_node *device, const char *); extern int machine_is_compatible(const char *compat); diff -Nru a/include/asm-ppc64/rtas.h b/include/asm-ppc64/rtas.h --- a/include/asm-ppc64/rtas.h Mon Sep 22 00:30:25 2003 +++ b/include/asm-ppc64/rtas.h Mon Sep 22 00:30:25 2003 @@ -166,6 +166,13 @@ extern void rtas_power_off(void); extern void rtas_halt(void); +/* Given an RTAS status code of 9900..9905 compute the hinted delay */ +unsigned int rtas_extended_busy_delay_time(int status); +static inline int rtas_is_extended_busy(int status) +{ + return status >= 9900 && status <= 9909; +} + /* Some RTAS ops require a data buffer and that buffer must be < 4G. * Rather than having a memory allocator, just use this buffer * (get the lock first), make the RTAS call. Copy the data instead diff -Nru a/include/asm-ppc64/rwsem.h b/include/asm-ppc64/rwsem.h --- a/include/asm-ppc64/rwsem.h Mon Sep 22 00:30:25 2003 +++ b/include/asm-ppc64/rwsem.h Mon Sep 22 00:30:25 2003 @@ -1,5 +1,5 @@ /* - * include/asm-ppc/rwsem.h: R/W semaphores for PPC using the stuff + * include/asm-ppc64/rwsem.h: R/W semaphores for PPC using the stuff * in lib/rwsem.c. Adapted largely from include/asm-i386/rwsem.h * by Paul Mackerras . * @@ -74,9 +74,7 @@ */ static inline void __down_read(struct rw_semaphore *sem) { - if (atomic_inc_return((atomic_t *)(&sem->count)) > 0) - smp_wmb(); - else + if (unlikely(atomic_inc_return((atomic_t *)(&sem->count)) <= 0)) rwsem_down_read_failed(sem); } @@ -87,7 +85,6 @@ while ((tmp = sem->count) >= 0) { if (tmp == cmpxchg(&sem->count, tmp, tmp + RWSEM_ACTIVE_READ_BIAS)) { - smp_wmb(); return 1; } } @@ -103,9 +100,7 @@ tmp = atomic_add_return(RWSEM_ACTIVE_WRITE_BIAS, (atomic_t *)(&sem->count)); - if (tmp == RWSEM_ACTIVE_WRITE_BIAS) - smp_wmb(); - else + if (unlikely(tmp != RWSEM_ACTIVE_WRITE_BIAS)) rwsem_down_write_failed(sem); } @@ -115,7 +110,6 @@ tmp = cmpxchg(&sem->count, RWSEM_UNLOCKED_VALUE, RWSEM_ACTIVE_WRITE_BIAS); - smp_wmb(); return tmp == RWSEM_UNLOCKED_VALUE; } @@ -126,9 +120,8 @@ { int tmp; - smp_wmb(); tmp = atomic_dec_return((atomic_t *)(&sem->count)); - if (tmp < -1 && (tmp & RWSEM_ACTIVE_MASK) == 0) + if (unlikely(tmp < -1 && (tmp & RWSEM_ACTIVE_MASK) == 0)) rwsem_wake(sem); } @@ -137,9 +130,8 @@ */ static inline void __up_write(struct rw_semaphore *sem) { - smp_wmb(); - if (atomic_sub_return(RWSEM_ACTIVE_WRITE_BIAS, - (atomic_t *)(&sem->count)) < 0) + if (unlikely(atomic_sub_return(RWSEM_ACTIVE_WRITE_BIAS, + (atomic_t *)(&sem->count)) < 0)) rwsem_wake(sem); } @@ -158,7 +150,6 @@ { int tmp; - smp_wmb(); tmp = atomic_add_return(-RWSEM_WAITING_BIAS, (atomic_t *)(&sem->count)); if (tmp < 0) rwsem_downgrade_wake(sem); @@ -169,7 +160,6 @@ */ static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem) { - smp_mb(); return atomic_add_return(delta, (atomic_t *)(&sem->count)); } diff -Nru a/include/asm-ppc64/semaphore.h b/include/asm-ppc64/semaphore.h --- a/include/asm-ppc64/semaphore.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-ppc64/semaphore.h Mon Sep 22 00:30:21 2003 @@ -82,9 +82,8 @@ /* * Try to get the semaphore, take the slow path if we fail. */ - if (atomic_dec_return(&sem->count) < 0) + if (unlikely(atomic_dec_return(&sem->count) < 0)) __down(sem); - smp_wmb(); } static inline int down_interruptible(struct semaphore * sem) @@ -96,23 +95,18 @@ #endif might_sleep(); - if (atomic_dec_return(&sem->count) < 0) + if (unlikely(atomic_dec_return(&sem->count) < 0)) ret = __down_interruptible(sem); - smp_wmb(); return ret; } static inline int down_trylock(struct semaphore * sem) { - int ret; - #ifdef WAITQUEUE_DEBUG CHECK_MAGIC(sem->__magic); #endif - ret = atomic_dec_if_positive(&sem->count) < 0; - smp_wmb(); - return ret; + return atomic_dec_if_positive(&sem->count) < 0; } static inline void up(struct semaphore * sem) @@ -121,8 +115,7 @@ CHECK_MAGIC(sem->__magic); #endif - smp_wmb(); - if (atomic_inc_return(&sem->count) <= 0) + if (unlikely(atomic_inc_return(&sem->count) <= 0)) __up(sem); } diff -Nru a/include/asm-ppc64/serial.h b/include/asm-ppc64/serial.h --- a/include/asm-ppc64/serial.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-ppc64/serial.h Mon Sep 22 00:30:23 2003 @@ -26,11 +26,9 @@ /* Standard COM flags (except for COM4, because of the 8514 problem) */ #ifdef CONFIG_SERIAL_DETECT_IRQ -#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ) -#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ) +#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ) #else -#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST) -#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF +#define STD_COM_FLAGS ASYNC_BOOT_AUTOCONF #endif #ifdef CONFIG_SERIAL_MANY_PORTS @@ -60,8 +58,8 @@ /* UART CLK PORT IRQ FLAGS */ \ { 0, BASE_BAUD, 0x3F8, 4, STD_COM_FLAGS }, /* ttyS0 */ \ { 0, BASE_BAUD, 0x2F8, 3, STD_COM_FLAGS }, /* ttyS1 */ \ - { 0, BASE_BAUD, 0x3E8, 4, STD_COM_FLAGS }, /* ttyS2 */ \ - { 0, BASE_BAUD, 0x2E8, 3, STD_COM4_FLAGS }, /* ttyS3 */ + { 0, BASE_BAUD, 0x890, 0xf, STD_COM_FLAGS }, /* ttyS2 */ \ + { 0, BASE_BAUD, 0x898, 0xe, STD_COM_FLAGS }, /* ttyS3 */ #ifdef CONFIG_SERIAL_MANY_PORTS diff -Nru a/include/asm-ppc64/signal.h b/include/asm-ppc64/signal.h --- a/include/asm-ppc64/signal.h Mon Sep 22 00:30:21 2003 +++ b/include/asm-ppc64/signal.h Mon Sep 22 00:30:21 2003 @@ -57,7 +57,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/asm-ppc64/topology.h b/include/asm-ppc64/topology.h --- a/include/asm-ppc64/topology.h Mon Sep 22 00:30:25 2003 +++ b/include/asm-ppc64/topology.h Mon Sep 22 00:30:25 2003 @@ -24,14 +24,16 @@ #define parent_node(node) (node) -static inline unsigned long node_to_cpumask(int node) +static inline cpumask_t node_to_cpumask(int node) { return numa_cpumask_lookup_table[node]; } static inline int node_to_first_cpu(int node) { - return __ffs(node_to_cpumask(node)); + cpumask_t tmp; + tmp = node_to_cpumask(node); + return first_cpu(tmp); } #define node_to_memblk(node) (node) diff -Nru a/include/asm-ppc64/uaccess.h b/include/asm-ppc64/uaccess.h --- a/include/asm-ppc64/uaccess.h Mon Sep 22 00:30:22 2003 +++ b/include/asm-ppc64/uaccess.h Mon Sep 22 00:30:22 2003 @@ -132,6 +132,7 @@ #define __put_user_size(x,ptr,size,retval,errret) \ do { \ + might_sleep(); \ retval = 0; \ switch (size) { \ case 1: __put_user_asm(x,ptr,retval,"stb",errret); break; \ @@ -185,6 +186,7 @@ #define __get_user_size(x,ptr,size,retval,errret) \ do { \ + might_sleep(); \ retval = 0; \ switch (size) { \ case 1: __get_user_asm(x,ptr,retval,"lbz",errret); break; \ @@ -220,6 +222,7 @@ static inline unsigned long __copy_from_user(void *to, const void __user *from, unsigned long n) { + might_sleep(); if (__builtin_constant_p(n)) { unsigned long ret; @@ -244,6 +247,7 @@ static inline unsigned long __copy_to_user(void __user *to, const void *from, unsigned long n) { + might_sleep(); if (__builtin_constant_p(n)) { unsigned long ret; @@ -289,6 +293,7 @@ static inline unsigned long copy_in_user(void *to, const void *from, unsigned long n) { + might_sleep(); if (likely(access_ok(VERIFY_READ, from, n) && access_ok(VERIFY_WRITE, to, n))) n =__copy_tofrom_user(to, from, n); @@ -300,6 +305,7 @@ static inline unsigned long clear_user(void *addr, unsigned long size) { + might_sleep(); if (likely(access_ok(VERIFY_WRITE, addr, size))) size = __clear_user(addr, size); return size; @@ -310,6 +316,7 @@ static inline long strncpy_from_user(char *dst, const char *src, long count) { + might_sleep(); if (likely(access_ok(VERIFY_READ, src, 1))) return __strncpy_from_user(dst, src, count); return -EFAULT; @@ -329,6 +336,7 @@ */ static inline int strnlen_user(const char *str, long len) { + might_sleep(); if (likely(access_ok(VERIFY_READ, str, 1))) return __strnlen_user(str, len); return 0; diff -Nru a/include/asm-s390/signal.h b/include/asm-s390/signal.h --- a/include/asm-s390/signal.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-s390/signal.h Mon Sep 22 00:30:23 2003 @@ -78,7 +78,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/asm-sh/processor.h b/include/asm-sh/processor.h --- a/include/asm-sh/processor.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-sh/processor.h Mon Sep 22 00:30:20 2003 @@ -169,8 +169,6 @@ /* * Bus types */ -#define EISA_bus 0 -#define EISA_bus__is_a_macro /* for versions in ksyms.c */ #define MCA_bus 0 #define MCA_bus__is_a_macro /* for versions in ksyms.c */ diff -Nru a/include/asm-sh/signal.h b/include/asm-sh/signal.h --- a/include/asm-sh/signal.h Mon Sep 22 00:30:22 2003 +++ b/include/asm-sh/signal.h Mon Sep 22 00:30:22 2003 @@ -57,7 +57,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/asm-sparc/processor.h b/include/asm-sparc/processor.h --- a/include/asm-sparc/processor.h Mon Sep 22 00:30:25 2003 +++ b/include/asm-sparc/processor.h Mon Sep 22 00:30:25 2003 @@ -27,7 +27,6 @@ /* * Bus types */ -#define EISA_bus 0 #define MCA_bus 0 #define MCA_bus__is_a_macro /* for versions in ksyms.c */ diff -Nru a/include/asm-sparc/sfp-machine.h b/include/asm-sparc/sfp-machine.h --- a/include/asm-sparc/sfp-machine.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-sparc/sfp-machine.h Mon Sep 22 00:30:23 2003 @@ -77,9 +77,9 @@ /* Some assembly to speed things up. */ #define __FP_FRAC_ADD_3(r2,r1,r0,x2,x1,x0,y2,y1,y0) \ - __asm__ ("addcc %r7,%8,%2 - addxcc %r5,%6,%1 - addx %r3,%4,%0" \ + __asm__ ("addcc %r7,%8,%2\n\t" \ + "addxcc %r5,%6,%1\n\t" \ + "addx %r3,%4,%0\n" \ : "=r" ((USItype)(r2)), \ "=&r" ((USItype)(r1)), \ "=&r" ((USItype)(r0)) \ @@ -92,9 +92,9 @@ : "cc") #define __FP_FRAC_SUB_3(r2,r1,r0,x2,x1,x0,y2,y1,y0) \ - __asm__ ("subcc %r7,%8,%2 - subxcc %r5,%6,%1 - subx %r3,%4,%0" \ + __asm__ ("subcc %r7,%8,%2\n\t" \ + "subxcc %r5,%6,%1\n\t" \ + "subx %r3,%4,%0\n" \ : "=r" ((USItype)(r2)), \ "=&r" ((USItype)(r1)), \ "=&r" ((USItype)(r0)) \ @@ -111,11 +111,11 @@ /* We need to fool gcc, as we need to pass more than 10 \ input/outputs. */ \ register USItype _t1 __asm__ ("g1"), _t2 __asm__ ("g2"); \ - __asm__ __volatile__ (" - addcc %r8,%9,%1 - addxcc %r6,%7,%0 - addxcc %r4,%5,%%g2 - addx %r2,%3,%%g1" \ + __asm__ __volatile__ ( \ + "addcc %r8,%9,%1\n\t" \ + "addxcc %r6,%7,%0\n\t" \ + "addxcc %r4,%5,%%g2\n\t" \ + "addx %r2,%3,%%g1\n\t" \ : "=&r" ((USItype)(r1)), \ "=&r" ((USItype)(r0)) \ : "%rJ" ((USItype)(x3)), \ @@ -136,11 +136,11 @@ /* We need to fool gcc, as we need to pass more than 10 \ input/outputs. */ \ register USItype _t1 __asm__ ("g1"), _t2 __asm__ ("g2"); \ - __asm__ __volatile__ (" - subcc %r8,%9,%1 - subxcc %r6,%7,%0 - subxcc %r4,%5,%%g2 - subx %r2,%3,%%g1" \ + __asm__ __volatile__ ( \ + "subcc %r8,%9,%1\n\t" \ + "subxcc %r6,%7,%0\n\t" \ + "subxcc %r4,%5,%%g2\n\t" \ + "subx %r2,%3,%%g1\n\t" \ : "=&r" ((USItype)(r1)), \ "=&r" ((USItype)(r0)) \ : "%rJ" ((USItype)(x3)), \ @@ -161,10 +161,10 @@ #define __FP_FRAC_DEC_4(x3,x2,x1,x0,y3,y2,y1,y0) __FP_FRAC_SUB_4(x3,x2,x1,x0,x3,x2,x1,x0,y3,y2,y1,y0) #define __FP_FRAC_ADDI_4(x3,x2,x1,x0,i) \ - __asm__ ("addcc %3,%4,%3 - addxcc %2,%%g0,%2 - addxcc %1,%%g0,%1 - addx %0,%%g0,%0" \ + __asm__ ("addcc %3,%4,%3\n\t" \ + "addxcc %2,%%g0,%2\n\t" \ + "addxcc %1,%%g0,%1\n\t" \ + "addx %0,%%g0,%0\n\t" \ : "=&r" ((USItype)(x3)), \ "=&r" ((USItype)(x2)), \ "=&r" ((USItype)(x1)), \ diff -Nru a/include/asm-sparc/signal.h b/include/asm-sparc/signal.h --- a/include/asm-sparc/signal.h Mon Sep 22 00:30:22 2003 +++ b/include/asm-sparc/signal.h Mon Sep 22 00:30:22 2003 @@ -89,7 +89,7 @@ #define _NSIG_WORDS (__NEW_NSIG / _NSIG_BPW) #define SIGRTMIN 32 -#define SIGRTMAX (__NEW_NSIG - 1) +#define SIGRTMAX __NEW_NSIG #if defined(__KERNEL__) || defined(__WANT_POSIX1B_SIGNALS__) #define _NSIG __NEW_NSIG diff -Nru a/include/asm-sparc64/bugs.h b/include/asm-sparc64/bugs.h --- a/include/asm-sparc64/bugs.h Mon Sep 22 00:30:22 2003 +++ b/include/asm-sparc64/bugs.h Mon Sep 22 00:30:22 2003 @@ -4,4 +4,13 @@ * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) */ -static void check_bugs(void) { } +#include + +extern unsigned long loops_per_jiffy; + +static void check_bugs(void) +{ +#ifndef CONFIG_SMP + cpu_data(0).udelay_val = loops_per_jiffy; +#endif +} diff -Nru a/include/asm-sparc64/delay.h b/include/asm-sparc64/delay.h --- a/include/asm-sparc64/delay.h Mon Sep 22 00:30:23 2003 +++ b/include/asm-sparc64/delay.h Mon Sep 22 00:30:23 2003 @@ -13,12 +13,6 @@ #ifndef __ASSEMBLY__ -#ifdef CONFIG_SMP -#include -#else -extern unsigned long loops_per_jiffy; -#endif - static __inline__ void __delay(unsigned long loops) { __asm__ __volatile__( diff -Nru a/include/asm-sparc64/processor.h b/include/asm-sparc64/processor.h --- a/include/asm-sparc64/processor.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-sparc64/processor.h Mon Sep 22 00:30:18 2003 @@ -22,7 +22,6 @@ #include /* Bus types */ -#define EISA_bus 0 #define MCA_bus 0 #define MCA_bus__is_a_macro /* for versions in ksyms.c */ diff -Nru a/include/asm-sparc64/signal.h b/include/asm-sparc64/signal.h --- a/include/asm-sparc64/signal.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-sparc64/signal.h Mon Sep 22 00:30:20 2003 @@ -89,7 +89,7 @@ #define _NSIG_WORDS (__NEW_NSIG / _NSIG_BPW) #define SIGRTMIN 32 -#define SIGRTMAX (__NEW_NSIG - 1) +#define SIGRTMAX __NEW_NSIG #if defined(__KERNEL__) || defined(__WANT_POSIX1B_SIGNALS__) #define _NSIG __NEW_NSIG diff -Nru a/include/asm-sparc64/vga.h b/include/asm-sparc64/vga.h --- a/include/asm-sparc64/vga.h Mon Sep 22 00:30:19 2003 +++ b/include/asm-sparc64/vga.h Mon Sep 22 00:30:19 2003 @@ -13,18 +13,16 @@ static inline void scr_writew(u16 val, u16 *addr) { - if ((long) addr < 0) - *addr = val; - else - writew(val, (unsigned long) addr); + BUG_ON((long) addr >= 0); + + *addr = val; } static inline u16 scr_readw(const u16 *addr) { - if ((long) addr < 0) - return *addr; - else - return readw((unsigned long) addr); + BUG_ON((long) addr >= 0); + + return *addr; } #define VGA_MAP_MEM(x) (x) diff -Nru a/include/asm-v850/processor.h b/include/asm-v850/processor.h --- a/include/asm-v850/processor.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-v850/processor.h Mon Sep 22 00:30:20 2003 @@ -52,8 +52,6 @@ /* * Bus types */ -#define EISA_bus 0 -#define EISA_bus__is_a_macro /* for versions in ksyms.c */ #define MCA_bus 0 #define MCA_bus__is_a_macro /* for versions in ksyms.c */ diff -Nru a/include/asm-v850/signal.h b/include/asm-v850/signal.h --- a/include/asm-v850/signal.h Mon Sep 22 00:30:20 2003 +++ b/include/asm-v850/signal.h Mon Sep 22 00:30:20 2003 @@ -71,7 +71,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/asm-x86_64/processor.h b/include/asm-x86_64/processor.h --- a/include/asm-x86_64/processor.h Mon Sep 22 00:30:25 2003 +++ b/include/asm-x86_64/processor.h Mon Sep 22 00:30:25 2003 @@ -160,7 +160,6 @@ /* * Bus types */ -#define EISA_bus 0 #define MCA_bus 0 #define MCA_bus__is_a_macro diff -Nru a/include/asm-x86_64/signal.h b/include/asm-x86_64/signal.h --- a/include/asm-x86_64/signal.h Mon Sep 22 00:30:18 2003 +++ b/include/asm-x86_64/signal.h Mon Sep 22 00:30:18 2003 @@ -77,7 +77,7 @@ /* These should not be considered constants from userland. */ #define SIGRTMIN 32 -#define SIGRTMAX (_NSIG-1) +#define SIGRTMAX _NSIG /* * SA_FLAGS values: diff -Nru a/include/linux/atmclip.h b/include/linux/atmclip.h --- a/include/linux/atmclip.h Mon Sep 22 00:30:24 2003 +++ b/include/linux/atmclip.h Mon Sep 22 00:30:24 2003 @@ -18,8 +18,4 @@ #define SIOCMKCLIP _IO('a',ATMIOC_CLIP) /* create IP interface */ -#ifdef __KERNEL__ -extern const unsigned char llc_oui[6]; -#endif - #endif diff -Nru a/include/linux/bio.h b/include/linux/bio.h --- a/include/linux/bio.h Mon Sep 22 00:30:23 2003 +++ b/include/linux/bio.h Mon Sep 22 00:30:23 2003 @@ -20,7 +20,6 @@ #ifndef __LINUX_BIO_H #define __LINUX_BIO_H -#include #include #include diff -Nru a/include/linux/blkdev.h b/include/linux/blkdev.h --- a/include/linux/blkdev.h Mon Sep 22 00:30:19 2003 +++ b/include/linux/blkdev.h Mon Sep 22 00:30:19 2003 @@ -262,6 +262,7 @@ int busy; /* current depth */ int max_depth; /* what we will send to device */ int real_max_depth; /* what the array can hold */ + atomic_t refcnt; /* map can be shared */ }; struct request_queue @@ -579,7 +580,7 @@ extern int blk_queue_start_tag(request_queue_t *, struct request *); extern struct request *blk_queue_find_tag(request_queue_t *, int); extern void blk_queue_end_tag(request_queue_t *, struct request *); -extern int blk_queue_init_tags(request_queue_t *, int); +extern int blk_queue_init_tags(request_queue_t *, int, struct blk_queue_tag *); extern void blk_queue_free_tags(request_queue_t *); extern int blk_queue_resize_tags(request_queue_t *, int); extern void blk_queue_invalidate_tags(request_queue_t *); diff -Nru a/include/linux/coda.h b/include/linux/coda.h --- a/include/linux/coda.h Mon Sep 22 00:30:21 2003 +++ b/include/linux/coda.h Mon Sep 22 00:30:21 2003 @@ -59,7 +59,7 @@ #ifndef _CODA_HEADER_ #define _CODA_HEADER_ - +#include /* Catch new _KERNEL defn for NetBSD and DJGPP/__CYGWIN32__ */ #if defined(__NetBSD__) || \ @@ -163,11 +163,11 @@ #ifndef _VENUS_DIRENT_T_ #define _VENUS_DIRENT_T_ 1 struct venus_dirent { - unsigned long d_fileno; /* file number of entry */ - unsigned short d_reclen; /* length of this record */ - unsigned char d_type; /* file type, see below */ - unsigned char d_namlen; /* length of string in d_name */ - char d_name[CODA_MAXNAMLEN + 1];/* name must be no longer than this */ + u_int32_t d_fileno; /* file number of entry */ + u_int16_t d_reclen; /* length of this record */ + u_int8_t d_type; /* file type, see below */ + u_int8_t d_namlen; /* length of string in d_name */ + char d_name[CODA_MAXNAMLEN + 1];/* name must be no longer than this */ }; #undef DIRSIZ #define DIRSIZ(dp) ((sizeof (struct venus_dirent) - (CODA_MAXNAMLEN+1)) + \ @@ -194,54 +194,42 @@ #endif -#ifndef _FID_T_ -#define _FID_T_ 1 -typedef u_long VolumeId; -typedef u_long VnodeId; -typedef u_long Unique_t; -typedef u_long FileVersion; -#endif - -#ifndef _VICEFID_T_ -#define _VICEFID_T_ 1 -typedef struct ViceFid { - VolumeId Volume; - VnodeId Vnode; - Unique_t Unique; -} ViceFid; -#endif /* VICEFID */ +#ifndef _VUID_T_ +#define _VUID_T_ +typedef u_int32_t vuid_t; +typedef u_int32_t vgid_t; +#endif /*_VUID_T_ */ +#ifdef CODA_FS_OLD_API +struct CodaFid { + u_int32_t opaque[3]; +}; -#ifdef __linux__ -static __inline__ ino_t coda_f2i(struct ViceFid *fid) +static __inline__ ino_t coda_f2i(struct CodaFid *fid) { if ( ! fid ) return 0; - if (fid->Vnode == 0xfffffffe || fid->Vnode == 0xffffffff) - return ((fid->Volume << 20) | (fid->Unique & 0xfffff)); + if (fid->opaque[1] == 0xfffffffe || fid->opaque[1] == 0xffffffff) + return ((fid->opaque[0] << 20) | (fid->opaque[2] & 0xfffff)); else - return (fid->Unique + (fid->Vnode<<10) + (fid->Volume<<20)); + return (fid->opaque[2] + (fid->opaque[1]<<10) + (fid->opaque[0]<<20)); } - -#else -#define coda_f2i(fid)\ - ((fid) ? ((fid)->Unique + ((fid)->Vnode<<10) + ((fid)->Volume<<20)) : 0) -#endif - - -#ifndef _VUID_T_ -#define _VUID_T_ -typedef u_int32_t vuid_t; -typedef u_int32_t vgid_t; -#endif /*_VUID_T_ */ -#ifndef _CODACRED_T_ -#define _CODACRED_T_ struct coda_cred { vuid_t cr_uid, cr_euid, cr_suid, cr_fsuid; /* Real, efftve, set, fs uid*/ - vgid_t cr_groupid, cr_egid, cr_sgid, cr_fsgid; /* same for groups */ + vgid_t cr_groupid, cr_egid, cr_sgid, cr_fsgid; /* same for groups */ }; -#endif + +#else /* not defined(CODA_FS_OLD_API) */ + +struct CodaFid { + u_int32_t opaque[4]; +}; + +#define coda_f2i(fid)\ + (fid ? (fid->opaque[3] ^ (fid->opaque[2]<<10) ^ (fid->opaque[1]<<20) ^ fid->opaque[0]) : 0) + +#endif #ifndef _VENUS_VATTR_T_ #define _VENUS_VATTR_T_ @@ -330,31 +318,41 @@ #define CODA_KERNEL_VERSION 0 /* don't care about kernel version number */ #define CODA_KERNEL_VERSION 1 /* The old venus 4.6 compatible interface */ #endif -#define CODA_KERNEL_VERSION 2 /* venus_lookup gets an extra parameter */ +#ifdef CODA_FS_OLD_API +#define CODA_KERNEL_VERSION 2 /* venus_lookup got an extra parameter */ +#else +#define CODA_KERNEL_VERSION 3 /* 128-bit file identifiers */ +#endif /* * Venus <-> Coda RPC arguments */ struct coda_in_hdr { - unsigned long opcode; - unsigned long unique; /* Keep multiple outstanding msgs distinct */ - u_short pid; /* Common to all */ - u_short pgid; /* Common to all */ - u_short sid; /* Common to all */ - struct coda_cred cred; /* Common to all */ + u_int32_t opcode; + u_int32_t unique; /* Keep multiple outstanding msgs distinct */ +#ifdef CODA_FS_OLD_API + u_int16_t pid; /* Common to all */ + u_int16_t pgid; /* Common to all */ + u_int16_t sid; /* Common to all */ + struct coda_cred cred; /* Common to all */ +#else + pid_t pid; + pid_t pgid; + vuid_t uid; +#endif }; /* Really important that opcode and unique are 1st two fields! */ struct coda_out_hdr { - unsigned long opcode; - unsigned long unique; - unsigned long result; + u_int32_t opcode; + u_int32_t unique; + u_int32_t result; }; /* coda_root: NO_IN */ struct coda_root_out { struct coda_out_hdr oh; - ViceFid VFid; + struct CodaFid VFid; }; struct coda_root_in { @@ -364,7 +362,7 @@ /* coda_open: */ struct coda_open_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; int flags; }; @@ -378,7 +376,7 @@ /* coda_store: */ struct coda_store_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; int flags; }; @@ -389,7 +387,7 @@ /* coda_release: */ struct coda_release_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; int flags; }; @@ -400,7 +398,7 @@ /* coda_close: */ struct coda_close_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; int flags; }; @@ -411,7 +409,7 @@ /* coda_ioctl: */ struct coda_ioctl_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; int cmd; int len; int rwflag; @@ -428,7 +426,7 @@ /* coda_getattr: */ struct coda_getattr_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; }; struct coda_getattr_out { @@ -440,7 +438,7 @@ /* coda_setattr: NO_OUT */ struct coda_setattr_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; struct coda_vattr attr; }; @@ -451,7 +449,7 @@ /* coda_access: NO_OUT */ struct coda_access_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; int flags; }; @@ -467,14 +465,14 @@ /* coda_lookup: */ struct coda_lookup_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; int name; /* Place holder for data. */ int flags; }; struct coda_lookup_out { struct coda_out_hdr oh; - ViceFid VFid; + struct CodaFid VFid; int vtype; }; @@ -482,7 +480,7 @@ /* coda_create: */ struct coda_create_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; struct coda_vattr attr; int excl; int mode; @@ -491,7 +489,7 @@ struct coda_create_out { struct coda_out_hdr oh; - ViceFid VFid; + struct CodaFid VFid; struct coda_vattr attr; }; @@ -499,7 +497,7 @@ /* coda_remove: NO_OUT */ struct coda_remove_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; int name; /* Place holder for data. */ }; @@ -510,8 +508,8 @@ /* coda_link: NO_OUT */ struct coda_link_in { struct coda_in_hdr ih; - ViceFid sourceFid; /* cnode to link *to* */ - ViceFid destFid; /* Directory in which to place link */ + struct CodaFid sourceFid; /* cnode to link *to* */ + struct CodaFid destFid; /* Directory in which to place link */ int tname; /* Place holder for data. */ }; @@ -523,9 +521,9 @@ /* coda_rename: NO_OUT */ struct coda_rename_in { struct coda_in_hdr ih; - ViceFid sourceFid; + struct CodaFid sourceFid; int srcname; - ViceFid destFid; + struct CodaFid destFid; int destname; }; @@ -536,14 +534,14 @@ /* coda_mkdir: */ struct coda_mkdir_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; struct coda_vattr attr; int name; /* Place holder for data. */ }; struct coda_mkdir_out { struct coda_out_hdr oh; - ViceFid VFid; + struct CodaFid VFid; struct coda_vattr attr; }; @@ -551,7 +549,7 @@ /* coda_rmdir: NO_OUT */ struct coda_rmdir_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; int name; /* Place holder for data. */ }; @@ -562,7 +560,7 @@ /* coda_symlink: NO_OUT */ struct coda_symlink_in { struct coda_in_hdr ih; - ViceFid VFid; /* Directory to put symlink in */ + struct CodaFid VFid; /* Directory to put symlink in */ int srcname; struct coda_vattr attr; int tname; @@ -575,7 +573,7 @@ /* coda_readlink: */ struct coda_readlink_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; }; struct coda_readlink_out { @@ -588,7 +586,7 @@ /* coda_fsync: NO_OUT */ struct coda_fsync_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; }; struct coda_fsync_out { @@ -598,12 +596,12 @@ /* coda_vget: */ struct coda_vget_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; }; struct coda_vget_out { struct coda_out_hdr oh; - ViceFid VFid; + struct CodaFid VFid; int vtype; }; @@ -616,50 +614,46 @@ /* CODA_PURGEUSER is a venus->kernel call */ struct coda_purgeuser_out { struct coda_out_hdr oh; +#ifdef CODA_FS_OLD_API struct coda_cred cred; +#else + vuid_t uid; +#endif }; /* coda_zapfile: */ /* CODA_ZAPFILE is a venus->kernel call */ struct coda_zapfile_out { struct coda_out_hdr oh; - ViceFid CodaFid; + struct CodaFid CodaFid; }; /* coda_zapdir: */ /* CODA_ZAPDIR is a venus->kernel call */ struct coda_zapdir_out { struct coda_out_hdr oh; - ViceFid CodaFid; -}; - -/* coda_zapnode: */ -/* CODA_ZAPVNODE is a venus->kernel call */ -struct coda_zapvnode_out { - struct coda_out_hdr oh; - struct coda_cred cred; - ViceFid VFid; + struct CodaFid CodaFid; }; /* coda_purgefid: */ /* CODA_PURGEFID is a venus->kernel call */ struct coda_purgefid_out { struct coda_out_hdr oh; - ViceFid CodaFid; + struct CodaFid CodaFid; }; /* coda_replace: */ /* CODA_REPLACE is a venus->kernel call */ struct coda_replace_out { /* coda_replace is a venus->kernel call */ struct coda_out_hdr oh; - ViceFid NewFid; - ViceFid OldFid; + struct CodaFid NewFid; + struct CodaFid OldFid; }; /* coda_open_by_fd: */ struct coda_open_by_fd_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; int flags; }; @@ -675,7 +669,7 @@ /* coda_open_by_path: */ struct coda_open_by_path_in { struct coda_in_hdr ih; - ViceFid VFid; + struct CodaFid VFid; int flags; }; @@ -741,7 +735,6 @@ struct coda_purgeuser_out coda_purgeuser; struct coda_zapfile_out coda_zapfile; struct coda_zapdir_out coda_zapdir; - struct coda_zapvnode_out coda_zapvnode; struct coda_purgefid_out coda_purgefid; struct coda_replace_out coda_replace; struct coda_open_by_fd_out coda_open_by_fd; @@ -755,7 +748,6 @@ struct coda_purgeuser_out purgeuser; struct coda_zapfile_out zapfile; struct coda_zapdir_out zapdir; - struct coda_zapvnode_out zapvnode; struct coda_purgefid_out purgefid; struct coda_replace_out replace; }; @@ -778,18 +770,9 @@ struct ViceIoctl vi; }; -#define CODA_CONTROL ".CONTROL" -#define CODA_CONTROLLEN 8 -#define CTL_VOL -1 -#define CTL_VNO -1 -#define CTL_UNI -1 -#define CTL_INO -1 -#define CTL_FILE "/coda/.CONTROL" - - -#define IS_CTL_FID(fidp) ((fidp)->Volume == CTL_VOL &&\ - (fidp)->Vnode == CTL_VNO &&\ - (fidp)->Unique == CTL_UNI) +#define CODA_CONTROL ".CONTROL" +#define CODA_CONTROLLEN 8 +#define CTL_INO -1 /* Data passed to mount */ diff -Nru a/include/linux/coda_cache.h b/include/linux/coda_cache.h --- a/include/linux/coda_cache.h Mon Sep 22 00:30:22 2003 +++ b/include/linux/coda_cache.h Mon Sep 22 00:30:22 2003 @@ -13,7 +13,7 @@ /* credential cache */ void coda_cache_enter(struct inode *inode, int mask); void coda_cache_clear_inode(struct inode *); -void coda_cache_clear_all(struct super_block *sb, struct coda_cred *cred); +void coda_cache_clear_all(struct super_block *sb); int coda_cache_check(struct inode *inode, int mask); /* for downcalls and attributes and lookups */ diff -Nru a/include/linux/coda_fs_i.h b/include/linux/coda_fs_i.h --- a/include/linux/coda_fs_i.h Mon Sep 22 00:30:24 2003 +++ b/include/linux/coda_fs_i.h Mon Sep 22 00:30:24 2003 @@ -17,11 +17,12 @@ * coda fs inode data */ struct coda_inode_info { - struct ViceFid c_fid; /* Coda identifier */ + struct CodaFid c_fid; /* Coda identifier */ u_short c_flags; /* flags (see below) */ struct list_head c_cilist; /* list of all coda inodes */ unsigned int c_mapcount; /* nr of times this inode is mapped */ - struct coda_cred c_cached_cred; /* credentials of cached perms */ + unsigned int c_cached_epoch; /* epoch for cached permissions */ + vuid_t c_uid; /* fsuid for cached permissions */ unsigned int c_cached_perm; /* cached access permissions */ struct inode vfs_inode; }; @@ -34,7 +35,6 @@ int cfi_magic; /* magic number */ struct file *cfi_container; /* container file for this cnode */ unsigned int cfi_mapcount; /* nr of times this file is mapped */ - struct coda_cred cfi_cred; /* credentials of opener */ }; #define CODA_FTOC(file) ((struct coda_file_info *)((file)->private_data)) @@ -45,11 +45,11 @@ #define C_DYING 0x4 /* from venus (which died) */ #define C_PURGE 0x8 -int coda_cnode_make(struct inode **, struct ViceFid *, struct super_block *); -struct inode *coda_iget(struct super_block *sb, struct ViceFid *fid, struct coda_vattr *attr); +int coda_cnode_make(struct inode **, struct CodaFid *, struct super_block *); +struct inode *coda_iget(struct super_block *sb, struct CodaFid *fid, struct coda_vattr *attr); int coda_cnode_makectl(struct inode **inode, struct super_block *sb); -struct inode *coda_fid_to_inode(ViceFid *fid, struct super_block *sb); -void coda_replace_fid(struct inode *, ViceFid *, ViceFid *); +struct inode *coda_fid_to_inode(struct CodaFid *fid, struct super_block *sb); +void coda_replace_fid(struct inode *, struct CodaFid *, struct CodaFid *); #endif #endif diff -Nru a/include/linux/coda_linux.h b/include/linux/coda_linux.h --- a/include/linux/coda_linux.h Mon Sep 22 00:30:19 2003 +++ b/include/linux/coda_linux.h Mon Sep 22 00:30:19 2003 @@ -42,26 +42,21 @@ int coda_revalidate_inode(struct dentry *); int coda_getattr(struct vfsmount *, struct dentry *, struct kstat *); int coda_setattr(struct dentry *, struct iattr *); -int coda_isnullfid(ViceFid *fid); /* global variables */ extern int coda_fake_statfs; /* this file: heloers */ -static __inline__ struct ViceFid *coda_i2f(struct inode *); +static __inline__ struct CodaFid *coda_i2f(struct inode *); static __inline__ char *coda_i2s(struct inode *); static __inline__ void coda_flag_inode(struct inode *, int flag); -char *coda_f2s(ViceFid *f); +char *coda_f2s(struct CodaFid *f); int coda_isroot(struct inode *i); int coda_iscontrol(const char *name, size_t length); -void coda_load_creds(struct coda_cred *cred); void coda_vattr_to_iattr(struct inode *, struct coda_vattr *); void coda_iattr_to_vattr(struct iattr *, struct coda_vattr *); unsigned short coda_flags_to_cflags(unsigned short); -void print_vattr( struct coda_vattr *attr ); -int coda_cred_ok(struct coda_cred *cred); -int coda_cred_eq(struct coda_cred *cred1, struct coda_cred *cred2); /* sysctl.h */ void coda_sysctl_init(void); @@ -88,7 +83,7 @@ return list_entry(inode, struct coda_inode_info, vfs_inode); } -static __inline__ struct ViceFid *coda_i2f(struct inode *inode) +static __inline__ struct CodaFid *coda_i2f(struct inode *inode) { return &(ITOC(inode)->c_fid); } diff -Nru a/include/linux/coda_psdev.h b/include/linux/coda_psdev.h --- a/include/linux/coda_psdev.h Mon Sep 22 00:30:21 2003 +++ b/include/linux/coda_psdev.h Mon Sep 22 00:30:21 2003 @@ -6,13 +6,11 @@ #define CODA_SUPER_MAGIC 0x73757245 -struct statfs; +struct kstatfs; struct coda_sb_info { - struct venus_comm * sbi_vcomm; - struct super_block *sbi_sb; - struct list_head sbi_cihead; + struct venus_comm *sbi_vcomm; }; /* communication pending/processing queues */ @@ -33,46 +31,45 @@ /* upcalls */ -int venus_rootfid(struct super_block *sb, ViceFid *fidp); -int venus_getattr(struct super_block *sb, struct ViceFid *fid, - struct coda_vattr *attr); -int venus_setattr(struct super_block *, struct ViceFid *, - struct coda_vattr *); -int venus_lookup(struct super_block *sb, struct ViceFid *fid, - const char *name, int length, int *type, - struct ViceFid *resfid); -int venus_store(struct super_block *sb, struct ViceFid *fid, int flags, - struct coda_cred *); -int venus_release(struct super_block *sb, struct ViceFid *fid, int flags); -int venus_close(struct super_block *sb, struct ViceFid *fid, int flags, - struct coda_cred *); -int venus_open(struct super_block *sb, struct ViceFid *fid, - int flags, struct file **f); -int venus_mkdir(struct super_block *sb, struct ViceFid *dirfid, +int venus_rootfid(struct super_block *sb, struct CodaFid *fidp); +int venus_getattr(struct super_block *sb, struct CodaFid *fid, + struct coda_vattr *attr); +int venus_setattr(struct super_block *, struct CodaFid *, struct coda_vattr *); +int venus_lookup(struct super_block *sb, struct CodaFid *fid, + const char *name, int length, int *type, + struct CodaFid *resfid); +int venus_store(struct super_block *sb, struct CodaFid *fid, int flags, + vuid_t uid); +int venus_release(struct super_block *sb, struct CodaFid *fid, int flags); +int venus_close(struct super_block *sb, struct CodaFid *fid, int flags, + vuid_t uid); +int venus_open(struct super_block *sb, struct CodaFid *fid, int flags, + struct file **f); +int venus_mkdir(struct super_block *sb, struct CodaFid *dirfid, const char *name, int length, - struct ViceFid *newfid, struct coda_vattr *attrs); -int venus_create(struct super_block *sb, struct ViceFid *dirfid, + struct CodaFid *newfid, struct coda_vattr *attrs); +int venus_create(struct super_block *sb, struct CodaFid *dirfid, const char *name, int length, int excl, int mode, dev_t rdev, - struct ViceFid *newfid, struct coda_vattr *attrs) ; -int venus_rmdir(struct super_block *sb, struct ViceFid *dirfid, + struct CodaFid *newfid, struct coda_vattr *attrs) ; +int venus_rmdir(struct super_block *sb, struct CodaFid *dirfid, const char *name, int length); -int venus_remove(struct super_block *sb, struct ViceFid *dirfid, +int venus_remove(struct super_block *sb, struct CodaFid *dirfid, const char *name, int length); -int venus_readlink(struct super_block *sb, struct ViceFid *fid, +int venus_readlink(struct super_block *sb, struct CodaFid *fid, char *buffer, int *length); -int venus_rename(struct super_block *, struct ViceFid *new_fid, - struct ViceFid *old_fid, size_t old_length, +int venus_rename(struct super_block *, struct CodaFid *new_fid, + struct CodaFid *old_fid, size_t old_length, size_t new_length, const char *old_name, const char *new_name); -int venus_link(struct super_block *sb, struct ViceFid *fid, - struct ViceFid *dirfid, const char *name, int len ); -int venus_symlink(struct super_block *sb, struct ViceFid *fid, +int venus_link(struct super_block *sb, struct CodaFid *fid, + struct CodaFid *dirfid, const char *name, int len ); +int venus_symlink(struct super_block *sb, struct CodaFid *fid, const char *name, int len, const char *symname, int symlen); -int venus_access(struct super_block *sb, struct ViceFid *fid, int mask); -int venus_pioctl(struct super_block *sb, struct ViceFid *fid, +int venus_access(struct super_block *sb, struct CodaFid *fid, int mask); +int venus_pioctl(struct super_block *sb, struct CodaFid *fid, unsigned int cmd, struct PioctlData *data); int coda_downcall(int opcode, union outputArgs *out, struct super_block *sb); -int venus_fsync(struct super_block *sb, struct ViceFid *fid); +int venus_fsync(struct super_block *sb, struct CodaFid *fid); int venus_statfs(struct super_block *sb, struct kstatfs *sfs); diff -Nru a/include/linux/compiler-gcc+.h b/include/linux/compiler-gcc+.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/linux/compiler-gcc+.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,14 @@ +/* Never include this file directly. Include instead. */ + +/* + * These definitions are for Ueber-GCC: always newer than the latest + * version and hence sporting everything plus a kitchen-sink. + */ +#include + +#define inline __inline__ __attribute__((always_inline)) +#define __inline__ __inline__ __attribute__((always_inline)) +#define __inline __inline__ __attribute__((always_inline)) +#define __deprecated __attribute__((deprecated)) +#define __attribute_used__ __attribute__((__used__)) +#define __attribute_pure__ __attribute__((pure)) diff -Nru a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/linux/compiler-gcc.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,17 @@ +/* Never include this file directly. Include instead. */ + +/* + * Common definitions for all gcc versions go here. + */ + + +/* Optimization barrier */ +/* The "volatile" is due to gcc bugs */ +#define barrier() __asm__ __volatile__("": : :"memory") + +/* This macro obfuscates arithmetic on a variable address so that gcc + shouldn't recognize the original var, and make assumptions about it */ +#define RELOC_HIDE(ptr, off) \ + ({ unsigned long __ptr; \ + __asm__ ("" : "=g"(__ptr) : "0"(ptr)); \ + (typeof(ptr)) (__ptr + (off)); }) diff -Nru a/include/linux/compiler-gcc2.h b/include/linux/compiler-gcc2.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/linux/compiler-gcc2.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,23 @@ +/* Never include this file directly. Include instead. */ + +/* These definitions are for GCC v2.x. */ + +/* Somewhere in the middle of the GCC 2.96 development cycle, we implemented + a mechanism by which the user can annotate likely branch directions and + expect the blocks to be reordered appropriately. Define __builtin_expect + to nothing for earlier compilers. */ +#include + +#if __GNUC_MINOR__ < 96 +# define __builtin_expect(x, expected_value) (x) +#endif + +#define __attribute_used__ __attribute__((__unused__)) + +/* + * The attribute `pure' is not implemented in GCC versions earlier + * than 2.96. + */ +#if __GNUC_MINOR__ >= 96 +# define __attribute_pure__ __attribute__((pure)) +#endif diff -Nru a/include/linux/compiler-gcc3.h b/include/linux/compiler-gcc3.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/linux/compiler-gcc3.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,22 @@ +/* Never include this file directly. Include instead. */ + +/* These definitions are for GCC v3.x. */ +#include + +#if __GNUC_MINOR__ >= 1 +# define inline __inline__ __attribute__((always_inline)) +# define __inline__ __inline__ __attribute__((always_inline)) +# define __inline __inline__ __attribute__((always_inline)) +#endif + +#if __GNUC_MINOR__ > 0 +# define __deprecated __attribute__((deprecated)) +#endif + +#if __GNUC_MINOR__ >= 3 +# define __attribute_used__ __attribute__((__used__)) +#else +# define __attribute_used__ __attribute__((__unused__)) +#endif + +#define __attribute_pure__ __attribute__((pure)) diff -Nru a/include/linux/compiler-intel.h b/include/linux/compiler-intel.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/linux/compiler-intel.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,24 @@ +/* Never include this file directly. Include instead. */ + +#ifdef __ECC + +/* Some compiler specific definitions are overwritten here + * for Intel ECC compiler + */ + +#include + +/* Intel ECC compiler doesn't support gcc specific asm stmts. + * It uses intrinsics to do the equivalent things. + */ +#undef barrier +#undef RELOC_HIDE + +#define barrier() __memory_barrier() + +#define RELOC_HIDE(ptr, off) \ + ({ unsigned long __ptr; \ + __ptr = (unsigned long) (ptr); \ + (typeof(ptr)) (__ptr + (off)); }) + +#endif diff -Nru a/include/linux/compiler.h b/include/linux/compiler.h --- a/include/linux/compiler.h Mon Sep 22 00:30:23 2003 +++ b/include/linux/compiler.h Mon Sep 22 00:30:23 2003 @@ -2,28 +2,36 @@ #define __LINUX_COMPILER_H #ifdef __CHECKER__ - #define __user __attribute__((noderef, address_space(1))) - #define __kernel /* default address space */ +# define __user __attribute__((noderef, address_space(1))) +# define __kernel /* default address space */ #else - #define __user - #define __kernel +# define __user +# define __kernel #endif -#if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) -#define inline __inline__ __attribute__((always_inline)) -#define __inline__ __inline__ __attribute__((always_inline)) -#define __inline __inline__ __attribute__((always_inline)) +#if __GNUC__ > 3 +# include /* catch-all for GCC 4, 5, etc. */ +#elif __GNUC__ == 3 +# include +#elif __GNUC__ == 2 +# include +#else +# error Sorry, your compiler is too old/not recognized. #endif -/* Somewhere in the middle of the GCC 2.96 development cycle, we implemented - a mechanism by which the user can annotate likely branch directions and - expect the blocks to be reordered appropriately. Define __builtin_expect - to nothing for earlier compilers. */ - -#if __GNUC__ == 2 && __GNUC_MINOR__ < 96 -#define __builtin_expect(x, expected_value) (x) +/* Intel compiler defines __GNUC__. So we will overwrite implementations + * coming from above header files here + */ +#ifdef __INTEL_COMPILER +# include #endif +/* + * Generic compiler-dependent macros required for kernel + * build go below this comment. Actual compiler/compiler version + * specific implementations come from the above header files + */ + #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) @@ -33,10 +41,8 @@ * Usage is: * int __deprecated foo(void) */ -#if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3 -#define __deprecated __attribute__((deprecated)) -#else -#define __deprecated +#ifndef __deprecated +# define __deprecated /* unimplemented */ #endif /* @@ -50,10 +56,8 @@ * In prior versions of gcc, such functions and data would be emitted, but * would be warned about except with attribute((unused)). */ -#if __GNUC__ == 3 && __GNUC_MINOR__ >= 3 || __GNUC__ > 3 -#define __attribute_used__ __attribute__((__used__)) -#else -#define __attribute_used__ __attribute__((__unused__)) +#ifndef __attribute_used__ +# define __attribute_used__ /* unimplemented */ #endif /* @@ -65,19 +69,21 @@ * elimination and loop optimization just as an arithmetic operator * would be. * [...] - * The attribute `pure' is not implemented in GCC versions earlier - * than 2.96. */ -#if (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) || __GNUC__ > 2 -#define __attribute_pure__ __attribute__((pure)) -#else -#define __attribute_pure__ /* unimplemented */ +#ifndef __attribute_pure__ +# define __attribute_pure__ /* unimplemented */ +#endif + +/* Optimization barrier */ +#ifndef barrier +# define barrier() __memory_barrier() #endif -/* This macro obfuscates arithmetic on a variable address so that gcc - shouldn't recognize the original var, and make assumptions about it */ -#define RELOC_HIDE(ptr, off) \ +#ifndef RELOC_HIDE +# define RELOC_HIDE(ptr, off) \ ({ unsigned long __ptr; \ - __asm__ ("" : "=g"(__ptr) : "0"(ptr)); \ + __ptr = (unsigned long) (ptr); \ (typeof(ptr)) (__ptr + (off)); }) +#endif + #endif /* __LINUX_COMPILER_H */ diff -Nru a/include/linux/console.h b/include/linux/console.h --- a/include/linux/console.h Mon Sep 22 00:30:21 2003 +++ b/include/linux/console.h Mon Sep 22 00:30:21 2003 @@ -15,7 +15,6 @@ #define _LINUX_CONSOLE_H_ 1 #include -#include #include struct vc_data; diff -Nru a/include/linux/cpufreq.h b/include/linux/cpufreq.h --- a/include/linux/cpufreq.h Mon Sep 22 00:30:22 2003 +++ b/include/linux/cpufreq.h Mon Sep 22 00:30:22 2003 @@ -60,6 +60,13 @@ unsigned int transition_latency; /* in 10^(-9) s */ }; +struct cpufreq_real_policy { + unsigned int min; /* in kHz */ + unsigned int max; /* in kHz */ + unsigned int policy; /* see above */ + struct cpufreq_governor *governor; /* see below */ +}; + struct cpufreq_policy { unsigned int cpu; /* cpu nr */ struct cpufreq_cpuinfo cpuinfo;/* see above */ @@ -74,6 +81,8 @@ struct semaphore lock; /* CPU ->setpolicy or ->target may only be called once a time */ + struct cpufreq_real_policy user_policy; + struct kobject kobj; struct completion kobj_unregister; }; @@ -217,6 +226,7 @@ *********************************************************************/ int cpufreq_set_policy(struct cpufreq_policy *policy); int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu); +int cpufreq_update_policy(unsigned int cpu); /* the proc_intf.c needs this */ int cpufreq_parse_governor (char *str_governor, unsigned int *policy, struct cpufreq_governor **governor); @@ -290,7 +300,7 @@ #ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE extern struct cpufreq_governor cpufreq_gov_performance; #define CPUFREQ_DEFAULT_GOVERNOR &cpufreq_gov_performance -#elif CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE +#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE) extern struct cpufreq_governor cpufreq_gov_userspace; #define CPUFREQ_DEFAULT_GOVERNOR &cpufreq_gov_userspace #endif diff -Nru a/include/linux/devfs_fs_kernel.h b/include/linux/devfs_fs_kernel.h --- a/include/linux/devfs_fs_kernel.h Mon Sep 22 00:30:23 2003 +++ b/include/linux/devfs_fs_kernel.h Mon Sep 22 00:30:23 2003 @@ -4,7 +4,6 @@ #include #include #include -#include #include #include diff -Nru a/include/linux/eisa.h b/include/linux/eisa.h --- a/include/linux/eisa.h Mon Sep 22 00:30:23 2003 +++ b/include/linux/eisa.h Mon Sep 22 00:30:23 2003 @@ -1,6 +1,19 @@ #ifndef _LINUX_EISA_H #define _LINUX_EISA_H +#include +#include + +#ifdef CONFIG_EISA +# ifdef CONFIG_EISA_ALWAYS +# define EISA_bus 1 +# else + extern int EISA_bus; +# endif +#else +# define EISA_bus 0 +#endif + #define EISA_SIG_LEN 8 #define EISA_MAX_SLOTS 8 diff -Nru a/include/linux/elevator.h b/include/linux/elevator.h --- a/include/linux/elevator.h Mon Sep 22 00:30:18 2003 +++ b/include/linux/elevator.h Mon Sep 22 00:30:18 2003 @@ -15,7 +15,6 @@ typedef void (elevator_remove_req_fn) (request_queue_t *, struct request *); typedef void (elevator_requeue_req_fn) (request_queue_t *, struct request *); typedef struct request *(elevator_request_list_fn) (request_queue_t *, struct request *); -typedef struct list_head *(elevator_get_sort_head_fn) (request_queue_t *, struct request *); typedef void (elevator_completed_req_fn) (request_queue_t *, struct request *); typedef int (elevator_may_queue_fn) (request_queue_t *, int); diff -Nru a/include/linux/elf.h b/include/linux/elf.h --- a/include/linux/elf.h Mon Sep 22 00:30:19 2003 +++ b/include/linux/elf.h Mon Sep 22 00:30:19 2003 @@ -360,7 +360,8 @@ #define EI_CLASS 4 #define EI_DATA 5 #define EI_VERSION 6 -#define EI_PAD 7 +#define EI_OSABI 7 +#define EI_PAD 8 #define ELFMAG0 0x7f /* EI_MAG */ #define ELFMAG1 'E' @@ -381,6 +382,13 @@ #define EV_NONE 0 /* e_version, EI_VERSION */ #define EV_CURRENT 1 #define EV_NUM 2 + +#define ELFOSABI_NONE 0 +#define ELFOSABI_LINUX 3 + +#ifndef ELF_OSABI +#define ELF_OSABI ELFOSABI_NONE +#endif /* Notes used in ET_CORE */ #define NT_PRSTATUS 1 diff -Nru a/include/linux/eventpoll.h b/include/linux/eventpoll.h --- a/include/linux/eventpoll.h Mon Sep 22 00:30:21 2003 +++ b/include/linux/eventpoll.h Mon Sep 22 00:30:21 2003 @@ -48,9 +48,10 @@ /* Kernel space functions implementing the user space "epoll" API */ asmlinkage long sys_epoll_create(int size); -asmlinkage long sys_epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); -asmlinkage long sys_epoll_wait(int epfd, struct epoll_event *events, int maxevents, - int timeout); +asmlinkage long sys_epoll_ctl(int epfd, int op, int fd, + struct epoll_event __user *event); +asmlinkage long sys_epoll_wait(int epfd, struct epoll_event __user *events, + int maxevents, int timeout); #ifdef CONFIG_EPOLL diff -Nru a/include/linux/ftape.h b/include/linux/ftape.h --- a/include/linux/ftape.h Mon Sep 22 00:30:23 2003 +++ b/include/linux/ftape.h Mon Sep 22 00:30:23 2003 @@ -199,8 +199,6 @@ #define ABS(a) ((a) < 0 ? -(a) : (a)) #define NR_ITEMS(x) (int)(sizeof(x)/ sizeof(*x)) -extern int ftape_init(void); - #endif /* __KERNEL__ */ #endif diff -Nru a/include/linux/if_frad.h b/include/linux/if_frad.h --- a/include/linux/if_frad.h Mon Sep 22 00:30:18 2003 +++ b/include/linux/if_frad.h Mon Sep 22 00:30:18 2003 @@ -191,9 +191,6 @@ int buffer; /* current buffer for S508 firmware */ }; -int register_frad(const char *name); -int unregister_frad(const char *name); - extern void dlci_ioctl_set(int (*hook)(unsigned int, void *)); #endif /* __KERNEL__ */ diff -Nru a/include/linux/input.h b/include/linux/input.h --- a/include/linux/input.h Mon Sep 22 00:30:21 2003 +++ b/include/linux/input.h Mon Sep 22 00:30:21 2003 @@ -751,7 +751,7 @@ #define LONG(x) ((x)/BITS_PER_LONG) #define INPUT_KEYCODE(dev, scancode) ((dev->keycodesize == 1) ? ((u8*)dev->keycode)[scancode] : \ - ((dev->keycodesize == 1) ? ((u16*)dev->keycode)[scancode] : (((u32*)dev->keycode)[scancode]))) + ((dev->keycodesize == 2) ? ((u16*)dev->keycode)[scancode] : (((u32*)dev->keycode)[scancode]))) #define init_input_dev(dev) do { INIT_LIST_HEAD(&((dev)->h_list)); INIT_LIST_HEAD(&((dev)->node)); } while (0) diff -Nru a/include/linux/interrupt.h b/include/linux/interrupt.h --- a/include/linux/interrupt.h Mon Sep 22 00:30:22 2003 +++ b/include/linux/interrupt.h Mon Sep 22 00:30:22 2003 @@ -3,6 +3,7 @@ #define _LINUX_INTERRUPT_H #include +#include #include #include #include diff -Nru a/include/linux/ipv6.h b/include/linux/ipv6.h --- a/include/linux/ipv6.h Mon Sep 22 00:30:23 2003 +++ b/include/linux/ipv6.h Mon Sep 22 00:30:23 2003 @@ -122,6 +122,52 @@ struct in6_addr daddr; }; +/* + * This structure contains configuration options per IPv6 link. + */ +struct ipv6_devconf { + __s32 forwarding; + __s32 hop_limit; + __s32 mtu6; + __s32 accept_ra; + __s32 accept_redirects; + __s32 autoconf; + __s32 dad_transmits; + __s32 rtr_solicits; + __s32 rtr_solicit_interval; + __s32 rtr_solicit_delay; +#ifdef CONFIG_IPV6_PRIVACY + __s32 use_tempaddr; + __s32 temp_valid_lft; + __s32 temp_prefered_lft; + __s32 regen_max_retry; + __s32 max_desync_factor; +#endif + void *sysctl; +}; + +/* index values for the variables in ipv6_devconf */ +enum { + DEVCONF_FORWARDING = 0, + DEVCONF_HOPLIMIT, + DEVCONF_MTU6, + DEVCONF_ACCEPT_RA, + DEVCONF_ACCEPT_REDIRECTS, + DEVCONF_AUTOCONF, + DEVCONF_DAD_TRANSMITS, + DEVCONF_RTR_SOLICITS, + DEVCONF_RTR_SOLICIT_INTERVAL, + DEVCONF_RTR_SOLICIT_DELAY, +#ifdef CONFIG_IPV6_PRIVACY + DEVCONF_USE_TEMPADDR, + DEVCONF_TEMP_VALID_LFT, + DEVCONF_TEMP_PREFERED_LFT, + DEVCONF_REGEN_MAX_RETRY, + DEVCONF_MAX_DESYNC_FACTOR, +#endif + DEVCONF_MAX +}; + #ifdef __KERNEL__ #include /* struct sockaddr_in6 */ #include diff -Nru a/include/linux/kernel.h b/include/linux/kernel.h --- a/include/linux/kernel.h Mon Sep 22 00:30:17 2003 +++ b/include/linux/kernel.h Mon Sep 22 00:30:17 2003 @@ -15,10 +15,6 @@ #include #include -/* Optimization barrier */ -/* The "volatile" is due to gcc bugs */ -#define barrier() __asm__ __volatile__("": : :"memory") - #define INT_MAX ((int)(~0U>>1)) #define INT_MIN (-INT_MAX - 1) #define UINT_MAX (~0U) diff -Nru a/include/linux/llc.h b/include/linux/llc.h --- a/include/linux/llc.h Mon Sep 22 00:30:21 2003 +++ b/include/linux/llc.h Mon Sep 22 00:30:21 2003 @@ -79,13 +79,5 @@ #define LLC_SAP_DYN_TRIES 4 #define llc_ui_skb_cb(__skb) ((struct sockaddr_llc *)&((__skb)->cb[0])) - -#ifdef CONFIG_LLC_UI -extern int llc_ui_init(void); -extern void llc_ui_exit(void); -#else -#define llc_ui_init() -#define llc_ui_exit() -#endif #endif /* __KERNEL__ */ #endif /* __LINUX_LLC_H */ diff -Nru a/include/linux/miscdevice.h b/include/linux/miscdevice.h --- a/include/linux/miscdevice.h Mon Sep 22 00:30:22 2003 +++ b/include/linux/miscdevice.h Mon Sep 22 00:30:22 2003 @@ -36,14 +36,12 @@ #define TUN_MINOR 200 -extern int misc_init(void); - struct miscdevice { int minor; const char *name; struct file_operations *fops; - struct miscdevice * next, * prev; + struct list_head list; char devfs_name[64]; }; diff -Nru a/include/linux/mm.h b/include/linux/mm.h --- a/include/linux/mm.h Mon Sep 22 00:30:18 2003 +++ b/include/linux/mm.h Mon Sep 22 00:30:18 2003 @@ -432,6 +432,7 @@ extern pte_t *FASTCALL(pte_alloc_kernel(struct mm_struct *mm, pmd_t *pmd, unsigned long address)); extern pte_t *FASTCALL(pte_alloc_map(struct mm_struct *mm, pmd_t *pmd, unsigned long address)); extern int install_page(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, struct page *page, pgprot_t prot); +extern int install_file_pte(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, unsigned long pgoff, pgprot_t prot); extern int handle_mm_fault(struct mm_struct *mm,struct vm_area_struct *vma, unsigned long address, int write_access); extern int make_pages_present(unsigned long addr, unsigned long end); extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write); diff -Nru a/include/linux/netdevice.h b/include/linux/netdevice.h --- a/include/linux/netdevice.h Mon Sep 22 00:30:24 2003 +++ b/include/linux/netdevice.h Mon Sep 22 00:30:24 2003 @@ -28,8 +28,6 @@ #include #include #include -#include -#include #include #include @@ -37,6 +35,8 @@ #ifdef __KERNEL__ #include +#include +#include struct divert_blk; struct vlan_group; @@ -502,7 +502,11 @@ extern void dev_add_pack(struct packet_type *pt); extern void dev_remove_pack(struct packet_type *pt); extern void __dev_remove_pack(struct packet_type *pt); -extern int dev_get(const char *name); +extern int __dev_get(const char *name); +static inline int __deprecated dev_get(const char *name) +{ + return __dev_get(name); +} extern struct net_device *dev_get_by_flags(unsigned short flags, unsigned short mask); extern struct net_device *__dev_get_by_flags(unsigned short flags, diff -Nru a/include/linux/netfilter_ipv4/ipt_physdev.h b/include/linux/netfilter_ipv4/ipt_physdev.h --- a/include/linux/netfilter_ipv4/ipt_physdev.h Mon Sep 22 00:30:23 2003 +++ b/include/linux/netfilter_ipv4/ipt_physdev.h Mon Sep 22 00:30:23 2003 @@ -13,12 +13,12 @@ #define IPT_PHYSDEV_OP_MASK (0x20 - 1) struct ipt_physdev_info { - u_int8_t invert; - u_int8_t bitmask; char physindev[IFNAMSIZ]; char in_mask[IFNAMSIZ]; char physoutdev[IFNAMSIZ]; char out_mask[IFNAMSIZ]; + u_int8_t invert; + u_int8_t bitmask; }; #endif /*_IPT_PHYSDEV_H*/ diff -Nru a/include/linux/nls.h b/include/linux/nls.h --- a/include/linux/nls.h Mon Sep 22 00:30:20 2003 +++ b/include/linux/nls.h Mon Sep 22 00:30:20 2003 @@ -8,6 +8,7 @@ struct nls_table { char *charset; + char *alias; int (*uni2char) (wchar_t uni, unsigned char *out, int boundlen); int (*char2uni) (const unsigned char *rawstring, int boundlen, wchar_t *uni); @@ -31,6 +32,8 @@ extern int utf8_mbstowcs(wchar_t *, const __u8 *, int); extern int utf8_wctomb(__u8 *, wchar_t, int); extern int utf8_wcstombs(__u8 *, const wchar_t *, int); + +#define MODULE_ALIAS_NLS(name) MODULE_ALIAS("nls_" __stringify(name)) #endif /* _LINUX_NLS_H */ diff -Nru a/include/linux/pnpbios.h b/include/linux/pnpbios.h --- a/include/linux/pnpbios.h Mon Sep 22 00:30:20 2003 +++ b/include/linux/pnpbios.h Mon Sep 22 00:30:20 2003 @@ -26,7 +26,7 @@ #ifdef __KERNEL__ #include -#include +#include /* * Return codes @@ -131,13 +131,7 @@ #ifdef CONFIG_PNPBIOS /* non-exported */ -extern int pnpbios_dont_use_current_config; extern struct pnp_dev_node_info node_info; -extern void *pnpbios_kmalloc(size_t size, int f); -extern int pnpbios_init (void); -extern int pnpbios_interface_attach_device(struct pnp_bios_node * node); -extern int pnpbios_proc_init (void); -extern void pnpbios_proc_exit (void); extern int pnp_bios_dev_node_info (struct pnp_dev_node_info *data); extern int pnp_bios_get_dev_node (u8 *nodenum, char config, struct pnp_bios_node *data); diff -Nru a/include/linux/proc_fs.h b/include/linux/proc_fs.h --- a/include/linux/proc_fs.h Mon Sep 22 00:30:17 2003 +++ b/include/linux/proc_fs.h Mon Sep 22 00:30:17 2003 @@ -185,9 +185,10 @@ #else #define proc_root_driver NULL -#define proc_net_fops_create(name,mode,fops) do {} while(0) -static inline struct proc_dir_entry *proc_net_create(const char *name, mode_t mode, - get_info_t *get_info) {return NULL;} +#define proc_net NULL + +#define proc_net_fops_create(name, mode, fops) ({ (void)(mode), NULL; }) +#define proc_net_create(name, mode, info) ({ (void)(mode), NULL; }) static inline void proc_net_remove(const char *name) {} static inline struct dentry *proc_pid_unhash(struct task_struct *p) { return NULL; } diff -Nru a/include/linux/random.h b/include/linux/random.h --- a/include/linux/random.h Mon Sep 22 00:30:25 2003 +++ b/include/linux/random.h Mon Sep 22 00:30:25 2003 @@ -42,7 +42,6 @@ #ifdef __KERNEL__ -extern void rand_initialize(void); extern void rand_initialize_irq(int irq); extern void batch_entropy_store(u32 a, u32 b, int num); diff -Nru a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h --- a/include/linux/rtnetlink.h Mon Sep 22 00:30:23 2003 +++ b/include/linux/rtnetlink.h Mon Sep 22 00:30:23 2003 @@ -508,10 +508,12 @@ #define IFLA_MASTER IFLA_MASTER IFLA_WIRELESS, /* Wireless Extension event - see wireless.h */ #define IFLA_WIRELESS IFLA_WIRELESS + IFLA_PROTINFO, /* Protocol specific information for a link */ +#define IFLA_PROTINFO IFLA_PROTINFO }; -#define IFLA_MAX IFLA_WIRELESS +#define IFLA_MAX IFLA_PROTINFO #define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg)))) #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg)) @@ -544,6 +546,18 @@ or maybe 0, what means, that real media is unknown (usual for IPIP tunnels, when route to endpoint is allowed to change) */ + +/* Subtype attributes for IFLA_PROTINFO */ +enum +{ + IFLA_INET6_UNSPEC, + IFLA_INET6_FLAGS, /* link flags */ + IFLA_INET6_CONF, /* sysctl parameters */ + IFLA_INET6_STATS, /* statistics */ + IFLA_INET6_MCAST, /* MC things. What of them? */ +}; + +#define IFLA_INET6_MAX IFLA_INET6_MCAST /***************************************************************** * Traffic control messages. diff -Nru a/include/linux/sched.h b/include/linux/sched.h --- a/include/linux/sched.h Mon Sep 22 00:30:18 2003 +++ b/include/linux/sched.h Mon Sep 22 00:30:18 2003 @@ -281,7 +281,9 @@ #define MAX_RT_PRIO MAX_USER_RT_PRIO #define MAX_PRIO (MAX_RT_PRIO + 40) - + +#define rt_task(p) ((p)->prio < MAX_RT_PRIO) + /* * Some day this will be a full-fledged user tracking system.. */ @@ -340,7 +342,9 @@ prio_array_t *array; unsigned long sleep_avg; - unsigned long last_run; + long interactive_credit; + unsigned long long timestamp; + int activated; unsigned long policy; cpumask_t cpus_allowed; @@ -360,7 +364,7 @@ unsigned long personality; int did_exec:1; pid_t pid; - pid_t pgrp; + pid_t __pgrp; /* Accessed via process_group() */ pid_t tty_old_pgrp; pid_t session; pid_t tgid; @@ -375,7 +379,7 @@ struct task_struct *parent; /* parent process */ struct list_head children; /* list of my children */ struct list_head sibling; /* linkage in my parent's children list */ - struct task_struct *group_leader; + struct task_struct *group_leader; /* threadgroup leader */ /* PID/PID hash table linkage. */ struct pid_link pids[PIDTYPE_MAX]; @@ -461,6 +465,11 @@ siginfo_t *last_siginfo; /* For ptrace use. */ }; +static inline pid_t process_group(struct task_struct *tsk) +{ + return tsk->group_leader->__pgrp; +} + extern void __put_task_struct(struct task_struct *tsk); #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0) #define put_task_struct(tsk) \ @@ -498,6 +507,8 @@ return 0; } #endif + +extern unsigned long long sched_clock(void); #ifdef CONFIG_NUMA extern void sched_balance_exec(void); diff -Nru a/include/linux/seq_file.h b/include/linux/seq_file.h --- a/include/linux/seq_file.h Mon Sep 22 00:30:25 2003 +++ b/include/linux/seq_file.h Mon Sep 22 00:30:25 2003 @@ -65,5 +65,8 @@ int single_open(struct file *, int (*)(struct seq_file *, void *), void *); int single_release(struct inode *, struct file *); int seq_release_private(struct inode *, struct file *); + +#define SEQ_START_TOKEN ((void *)1) + #endif #endif diff -Nru a/include/linux/serial_core.h b/include/linux/serial_core.h --- a/include/linux/serial_core.h Mon Sep 22 00:30:18 2003 +++ b/include/linux/serial_core.h Mon Sep 22 00:30:18 2003 @@ -67,6 +67,12 @@ #define PORT_PC9861 45 #define PORT_PC9801_101 46 +/* DZ */ +#define PORT_DZ 47 + +/* Parisc type numbers. */ +#define PORT_MUX 48 + /* Macintosh Zilog type numbers */ #define PORT_MAC_ZILOG 50 /* m68k : not yet implemented */ #define PORT_PMAC_ZILOG 51 @@ -319,8 +325,8 @@ /* * Power Management */ -int uart_suspend_port(struct uart_driver *reg, struct uart_port *port, u32 level); -int uart_resume_port(struct uart_driver *reg, struct uart_port *port, u32 level); +int uart_suspend_port(struct uart_driver *reg, struct uart_port *port); +int uart_resume_port(struct uart_driver *reg, struct uart_port *port); #define uart_circ_empty(circ) ((circ)->head == (circ)->tail) #define uart_circ_clear(circ) ((circ)->head = (circ)->tail = 0) diff -Nru a/include/linux/serio.h b/include/linux/serio.h --- a/include/linux/serio.h Mon Sep 22 00:30:22 2003 +++ b/include/linux/serio.h Mon Sep 22 00:30:22 2003 @@ -65,7 +65,9 @@ irqreturn_t serio_interrupt(struct serio *serio, unsigned char data, unsigned int flags, struct pt_regs *regs); void serio_register_port(struct serio *serio); +void serio_register_slave_port(struct serio *serio); void serio_unregister_port(struct serio *serio); +void serio_unregister_slave_port(struct serio *serio); void serio_register_device(struct serio_dev *dev); void serio_unregister_device(struct serio_dev *dev); @@ -104,6 +106,7 @@ #define SERIO_RS232 0x02000000UL #define SERIO_HIL_MLC 0x03000000UL #define SERIO_PC9800 0x04000000UL +#define SERIO_PS_PSTHRU 0x05000000UL #define SERIO_PROTO 0xFFUL #define SERIO_MSC 0x01 diff -Nru a/include/linux/skbuff.h b/include/linux/skbuff.h --- a/include/linux/skbuff.h Mon Sep 22 00:30:22 2003 +++ b/include/linux/skbuff.h Mon Sep 22 00:30:22 2003 @@ -306,7 +306,7 @@ * * Returns true if the queue is empty, false otherwise. */ -static inline int skb_queue_empty(struct sk_buff_head *list) +static inline int skb_queue_empty(const struct sk_buff_head *list) { return list->next == (struct sk_buff *)list; } @@ -357,7 +357,7 @@ * one of multiple shared copies of the buffer. Cloned buffers are * shared data so must not be written to under normal circumstances. */ -static inline int skb_cloned(struct sk_buff *skb) +static inline int skb_cloned(const struct sk_buff *skb) { return skb->cloned && atomic_read(&skb_shinfo(skb)->dataref) != 1; } @@ -369,7 +369,7 @@ * Returns true if more than one person has a reference to this * buffer. */ -static inline int skb_shared(struct sk_buff *skb) +static inline int skb_shared(const struct sk_buff *skb) { return atomic_read(&skb->users) != 1; } @@ -477,7 +477,7 @@ * * Return the length of an &sk_buff queue. */ -static inline __u32 skb_queue_len(struct sk_buff_head *list_) +static inline __u32 skb_queue_len(const struct sk_buff_head *list_) { return list_->qlen; } diff -Nru a/include/linux/smb_mount.h b/include/linux/smb_mount.h --- a/include/linux/smb_mount.h Mon Sep 22 00:30:17 2003 +++ b/include/linux/smb_mount.h Mon Sep 22 00:30:17 2003 @@ -43,11 +43,11 @@ struct smb_mount_data_kernel { int version; - __kernel_uid_t mounted_uid; /* Who may umount() this filesystem? */ - __kernel_uid_t uid; - __kernel_gid_t gid; - __kernel_mode_t file_mode; - __kernel_mode_t dir_mode; + uid_t mounted_uid; /* Who may umount() this filesystem? */ + uid_t uid; + gid_t gid; + mode_t file_mode; + mode_t dir_mode; u32 flags; diff -Nru a/include/linux/swap.h b/include/linux/swap.h --- a/include/linux/swap.h Mon Sep 22 00:30:18 2003 +++ b/include/linux/swap.h Mon Sep 22 00:30:18 2003 @@ -3,7 +3,6 @@ #include #include -#include #include #include #include diff -Nru a/include/linux/tty.h b/include/linux/tty.h --- a/include/linux/tty.h Mon Sep 22 00:30:21 2003 +++ b/include/linux/tty.h Mon Sep 22 00:30:21 2003 @@ -351,7 +351,6 @@ extern int lp_init(void); extern int pty_init(void); -extern void tty_init(void); extern int mxser_init(void); extern int moxa_init(void); extern int ip2_init(void); diff -Nru a/include/linux/usb.h b/include/linux/usb.h --- a/include/linux/usb.h Mon Sep 22 00:30:21 2003 +++ b/include/linux/usb.h Mon Sep 22 00:30:21 2003 @@ -80,7 +80,6 @@ * @act_altsetting: index of current altsetting. this number is always * less than num_altsetting. after the device is configured, each * interface uses its default setting of zero. - * @max_altsetting: the max number of altsettings for this interface. * @driver: the USB driver that is bound to this interface. * @minor: the minor number assigned to this interface, if this * interface is bound to a driver that uses the USB major number. @@ -118,7 +117,6 @@ unsigned act_altsetting; /* active alternate setting */ unsigned num_altsetting; /* number of alternate settings */ - unsigned max_altsetting; /* total memory allocated */ struct usb_driver *driver; /* driver */ int minor; /* minor number this interface is bound to */ diff -Nru a/include/linux/usb_gadget.h b/include/linux/usb_gadget.h --- a/include/linux/usb_gadget.h Mon Sep 22 00:30:21 2003 +++ b/include/linux/usb_gadget.h Mon Sep 22 00:30:21 2003 @@ -72,9 +72,9 @@ unsigned length; dma_addr_t dma; - unsigned no_interrupt : 1, - zero : 1, - short_not_ok : 1; + unsigned no_interrupt:1; + unsigned zero:1; + unsigned short_not_ok:1; void (*complete)(struct usb_ep *ep, struct usb_request *req); @@ -122,9 +122,11 @@ /** * struct usb_ep - device side representation of USB endpoint * @name:identifier for the endpoint, such as "ep-a" or "ep9in-bulk" + * @ops: Function pointers used to access hardware-specific operations. * @ep_list:the gadget's ep_list holds all of its endpoints - * @maxpacket:the maximum packet size used on this endpoint, as - * configured when the endpoint was enabled. + * @maxpacket:The maximum packet size used on this endpoint. The initial + * value can sometimes be reduced (hardware allowing), according to + * the endpoint descriptor used to configure the endpoint. * @driver_data:for use by the gadget driver. all other fields are * read-only to gadget drivers. * @@ -138,7 +140,7 @@ const char *name; const struct usb_ep_ops *ops; struct list_head ep_list; - unsigned maxpacket : 16; + unsigned maxpacket:16; }; /*-------------------------------------------------------------------------*/ @@ -443,18 +445,21 @@ /** * struct usb_gadget - represents a usb slave device + * @ops: Function pointers used to access hardware-specific operations. * @ep0: Endpoint zero, used when reading or writing responses to * driver setup() requests * @ep_list: List of other endpoints supported by the device. * @speed: Speed of current connection to USB host. * @name: Identifies the controller hardware type. Used in diagnostics * and sometimes configuration. + * @dev: Driver model state for this abstract device. * * Gadgets have a mostly-portable "gadget driver" implementing device - * functions, handling all usb configurations and interfaces. They - * also have a hardware-specific driver (accessed through ops vectors), - * which insulates the gadget driver from hardware details and packages - * the hardware endpoints through generic i/o queues. + * functions, handling all usb configurations and interfaces. Gadget + * drivers talk to hardware-specific code indirectly, through ops vectors. + * That insulates the gadget driver from hardware details, and packages + * the hardware endpoints through generic i/o queues. The "usb_gadget" + * and "usb_ep" interfaces provide that insulation from the hardware. * * Except for the driver data, all fields in this structure are * read-only to the gadget driver. That driver data is part of the @@ -469,10 +474,6 @@ struct list_head ep_list; /* of usb_ep */ enum usb_device_speed speed; const char *name; - - /* use this to allocate dma-coherent buffers or set up - * dma mappings. or print diagnostics, etc. - */ struct device dev; }; @@ -576,6 +577,7 @@ * Called in a context that permits sleeping. * @suspend: Invoked on USB suspend. May be called in_interrupt. * @resume: Invoked on USB resume. May be called in_interrupt. + * @driver: Driver model state for this driver. * * Devices are disabled till a gadget driver successfully bind()s, which * means the driver will handle setup() requests needed to enumerate (and diff -Nru a/include/linux/writeback.h b/include/linux/writeback.h --- a/include/linux/writeback.h Mon Sep 22 00:30:18 2003 +++ b/include/linux/writeback.h Mon Sep 22 00:30:18 2003 @@ -80,11 +80,10 @@ struct ctl_table; struct file; -int dirty_writeback_centisecs_handler(struct ctl_table *, int, struct file *, - void *, size_t *); +int dirty_writeback_centisecs_handler(struct ctl_table *, int, struct file *, + void __user *, size_t *); void page_writeback_init(void); -void balance_dirty_pages(struct address_space *mapping); void balance_dirty_pages_ratelimited(struct address_space *mapping); int pdflush_operation(void (*fn)(unsigned long), unsigned long arg0); int do_writepages(struct address_space *mapping, struct writeback_control *wbc); diff -Nru a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h --- a/include/net/bluetooth/bluetooth.h Mon Sep 22 00:30:21 2003 +++ b/include/net/bluetooth/bluetooth.h Mon Sep 22 00:30:21 2003 @@ -131,7 +131,7 @@ void bt_sock_unlink(struct bt_sock_list *l, struct sock *s); int bt_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, int len, int flags); uint bt_sock_poll(struct file * file, struct socket *sock, poll_table *wait); -int bt_sock_w4_connect(struct sock *sk, int flags); +int bt_sock_wait_state(struct sock *sk, int state, unsigned long timeo); void bt_accept_enqueue(struct sock *parent, struct sock *sk); struct sock *bt_accept_dequeue(struct sock *parent, struct socket *newsock); diff -Nru a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h --- a/include/net/bluetooth/hci.h Mon Sep 22 00:30:24 2003 +++ b/include/net/bluetooth/hci.h Mon Sep 22 00:30:24 2003 @@ -304,6 +304,8 @@ __u8 num_rsp; } __attribute__ ((packed)); +#define OCF_INQUIRY_CANCEL 0x0002 + #define OCF_LINK_KEY_REPLY 0x000B #define OCF_LINK_KEY_NEG_REPLY 0x000C struct hci_cp_link_key_reply { diff -Nru a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h --- a/include/net/bluetooth/l2cap.h Mon Sep 22 00:30:19 2003 +++ b/include/net/bluetooth/l2cap.h Mon Sep 22 00:30:19 2003 @@ -220,6 +220,7 @@ __u32 link_mode; __u8 conf_state; + __u8 conf_retry; __u16 conf_mtu; __u8 ident; @@ -234,6 +235,7 @@ #define L2CAP_CONF_REQ_SENT 0x01 #define L2CAP_CONF_INPUT_DONE 0x02 #define L2CAP_CONF_OUTPUT_DONE 0x04 +#define L2CAP_CONF_MAX_RETRIES 2 void l2cap_load(void); diff -Nru a/include/net/if_inet6.h b/include/net/if_inet6.h --- a/include/net/if_inet6.h Mon Sep 22 00:30:24 2003 +++ b/include/net/if_inet6.h Mon Sep 22 00:30:24 2003 @@ -16,7 +16,12 @@ #define _NET_IF_INET6_H #include +#include +/* inet6_dev.if_flags */ + +#define IF_RA_OTHERCONF 0x80 +#define IF_RA_MANAGED 0x40 #define IF_RA_RCVD 0x20 #define IF_RS_SENT 0x10 @@ -131,28 +136,6 @@ #define IFA_LINK IPV6_ADDR_LINKLOCAL #define IFA_SITE IPV6_ADDR_SITELOCAL #define IFA_GLOBAL 0x0000U - -struct ipv6_devconf -{ - int forwarding; - int hop_limit; - int mtu6; - int accept_ra; - int accept_redirects; - int autoconf; - int dad_transmits; - int rtr_solicits; - int rtr_solicit_interval; - int rtr_solicit_delay; -#ifdef CONFIG_IPV6_PRIVACY - int use_tempaddr; - int temp_valid_lft; - int temp_prefered_lft; - int regen_max_retry; - int max_desync_factor; -#endif - void *sysctl; -}; struct ipv6_devstat { struct proc_dir_entry *proc_dir_entry; diff -Nru a/include/net/llc.h b/include/net/llc.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/net/llc.h Mon Sep 22 00:30:24 2003 @@ -0,0 +1,91 @@ +#ifndef LLC_H +#define LLC_H +/* + * Copyright (c) 1997 by Procom Technology, Inc. + * 2001-2003 by Arnaldo Carvalho de Melo + * + * This program can be redistributed or modified under the terms of the + * GNU General Public License as published by the Free Software Foundation. + * This program is distributed without any warranty or implied warranty + * of merchantability or fitness for a particular purpose. + * + * See the GNU General Public License for more details. + */ + +#include +#include +#include +#include + +struct net_device; +struct packet_type; +struct sk_buff; + +struct llc_addr { + unsigned char lsap; + unsigned char mac[IFHWADDRLEN]; +}; + +#define LLC_SAP_STATE_INACTIVE 1 +#define LLC_SAP_STATE_ACTIVE 2 + +/** + * struct llc_sap - Defines the SAP component + * + * @station - station this sap belongs to + * @state - sap state + * @p_bit - only lowest-order bit used + * @f_bit - only lowest-order bit used + * @laddr - SAP value in this 'lsap' + * @node - entry in station sap_list + * @sk_list - LLC sockets this one manages + */ +struct llc_sap { + unsigned char state; + unsigned char p_bit; + unsigned char f_bit; + int (*rcv_func)(struct sk_buff *skb, + struct net_device *dev, + struct packet_type *pt); + struct llc_addr laddr; + struct list_head node; + struct { + rwlock_t lock; + struct hlist_head list; + } sk_list; +}; + +#define LLC_DEST_INVALID 0 /* Invalid LLC PDU type */ +#define LLC_DEST_SAP 1 /* Type 1 goes here */ +#define LLC_DEST_CONN 2 /* Type 2 goes here */ + +extern struct list_head llc_sap_list; +extern rwlock_t llc_sap_list_lock; +extern unsigned char llc_station_mac_sa[ETH_ALEN]; + +extern int llc_rcv(struct sk_buff *skb, struct net_device *dev, + struct packet_type *pt); + +extern int llc_mac_hdr_init(struct sk_buff *skb, + unsigned char *sa, unsigned char *da); + +extern void llc_add_pack(int type, void (*handler)(struct llc_sap *sap, + struct sk_buff *skb)); +extern void llc_remove_pack(int type); + +extern void llc_set_station_handler(void (*handler)(struct sk_buff *skb)); + +extern struct llc_sap *llc_sap_open(unsigned char lsap, + int (*rcv)(struct sk_buff *skb, + struct net_device *dev, + struct packet_type *pt)); +extern void llc_sap_close(struct llc_sap *sap); + +extern struct llc_sap *llc_sap_find(unsigned char sap_value); + +extern int llc_build_and_send_ui_pkt(struct llc_sap *sap, struct sk_buff *skb, + unsigned char *dmac, unsigned char dsap); + +extern int llc_station_init(void); +extern void llc_station_exit(void); +#endif /* LLC_H */ diff -Nru a/include/net/llc_actn.h b/include/net/llc_actn.h --- a/include/net/llc_actn.h Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,49 +0,0 @@ -#ifndef LLC_ACTN_H -#define LLC_ACTN_H -/* - * Copyright (c) 1997 by Procom Technology,Inc. - * 2001 by Arnaldo Carvalho de Melo - * - * This program can be redistributed or modified under the terms of the - * GNU General Public License as published by the Free Software Foundation. - * This program is distributed without any warranty or implied warranty - * of merchantability or fitness for a particular purpose. - * - * See the GNU General Public License for more details. - */ -/* Station component state transition actions */ -#define LLC_STATION_AC_START_ACK_TMR 1 -#define LLC_STATION_AC_SET_RETRY_CNT_0 2 -#define LLC_STATION_AC_INC_RETRY_CNT_BY_1 3 -#define LLC_STATION_AC_SET_XID_R_CNT_0 4 -#define LLC_STATION_AC_INC_XID_R_CNT_BY_1 5 -#define LLC_STATION_AC_SEND_NULL_DSAP_XID_C 6 -#define LLC_STATION_AC_SEND_XID_R 7 -#define LLC_STATION_AC_SEND_TEST_R 8 -#define LLC_STATION_AC_REPORT_STATUS 9 - -/* All station state event action functions look like this */ -typedef int (*llc_station_action_t)(struct llc_station *station, - struct sk_buff *skb); -extern int llc_station_ac_start_ack_timer(struct llc_station *station, - struct sk_buff *skb); -extern int llc_station_ac_set_retry_cnt_0(struct llc_station *station, - struct sk_buff *skb); -extern int llc_station_ac_inc_retry_cnt_by_1(struct llc_station *station, - struct sk_buff *skb); -extern int llc_station_ac_set_xid_r_cnt_0(struct llc_station *station, - struct sk_buff *skb); -extern int llc_station_ac_inc_xid_r_cnt_by_1(struct llc_station *station, - struct sk_buff *skb); -extern int llc_station_ac_send_null_dsap_xid_c(struct llc_station *station, - struct sk_buff *skb); -extern int llc_station_ac_send_xid_r(struct llc_station *station, - struct sk_buff *skb); -extern int llc_station_ac_send_test_r(struct llc_station *station, - struct sk_buff *skb); -extern int llc_station_ac_report_status(struct llc_station *station, - struct sk_buff *skb); -extern int llc_station_ac_report_status(struct llc_station *station, - struct sk_buff *skb); -extern void llc_station_ack_tmr_cb(unsigned long timeout_data); -#endif /* LLC_ACTN_H */ diff -Nru a/include/net/llc_conn.h b/include/net/llc_conn.h --- a/include/net/llc_conn.h Mon Sep 22 00:30:24 2003 +++ b/include/net/llc_conn.h Mon Sep 22 00:30:24 2003 @@ -15,6 +15,14 @@ #include #include +#define LLC_EVENT 1 +#define LLC_PACKET 2 + +#define LLC_P_TIME 2 +#define LLC_ACK_TIME 1 +#define LLC_REJ_TIME 3 +#define LLC_BUSY_TIME 3 + struct llc_timer { struct timer_list timer; u16 expire; /* timer expire time */ @@ -69,6 +77,16 @@ #define llc_sk(__sk) ((struct llc_opt *)(__sk)->sk_protinfo) +static __inline__ void llc_set_backlog_type(struct sk_buff *skb, char type) +{ + skb->cb[sizeof(skb->cb) - 1] = type; +} + +static __inline__ char llc_backlog_type(struct sk_buff *skb) +{ + return skb->cb[sizeof(skb->cb) - 1]; +} + extern struct sock *llc_sk_alloc(int family, int priority); extern void llc_sk_free(struct sock *sk); @@ -90,9 +108,10 @@ struct llc_addr *laddr); extern struct sock *llc_lookup_listener(struct llc_sap *sap, struct llc_addr *laddr); -extern struct sock *llc_lookup_dgram(struct llc_sap *sap, - struct llc_addr *laddr); -extern void llc_save_primitive(struct sk_buff* skb, u8 prim); +extern void llc_sap_add_socket(struct llc_sap *sap, struct sock *sk); +extern void llc_sap_remove_socket(struct llc_sap *sap, struct sock *sk); + extern u8 llc_data_accept_state(u8 state); extern void llc_build_offset_table(void); +extern int llc_release_sockets(struct llc_sap *sap); #endif /* LLC_CONN_H */ diff -Nru a/include/net/llc_evnt.h b/include/net/llc_evnt.h --- a/include/net/llc_evnt.h Mon Sep 22 00:30:23 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,70 +0,0 @@ -#ifndef LLC_EVNT_H -#define LLC_EVNT_H -/* - * Copyright (c) 1997 by Procom Technology,Inc. - * 2001 by Arnaldo Carvalho de Melo - * - * This program can be redistributed or modified under the terms of the - * GNU General Public License as published by the Free Software Foundation. - * This program is distributed without any warranty or implied warranty - * of merchantability or fitness for a particular purpose. - * - * See the GNU General Public License for more details. - */ -/* Station component state transition events */ -/* Types of events (possible values in 'ev->type') */ -#define LLC_STATION_EV_TYPE_SIMPLE 1 -#define LLC_STATION_EV_TYPE_CONDITION 2 -#define LLC_STATION_EV_TYPE_PRIM 3 -#define LLC_STATION_EV_TYPE_PDU 4 /* command/response PDU */ -#define LLC_STATION_EV_TYPE_ACK_TMR 5 -#define LLC_STATION_EV_TYPE_RPT_STATUS 6 - -/* Events */ -#define LLC_STATION_EV_ENABLE_WITH_DUP_ADDR_CHECK 1 -#define LLC_STATION_EV_ENABLE_WITHOUT_DUP_ADDR_CHECK 2 -#define LLC_STATION_EV_ACK_TMR_EXP_LT_RETRY_CNT_MAX_RETRY 3 -#define LLC_STATION_EV_ACK_TMR_EXP_EQ_RETRY_CNT_MAX_RETRY 4 -#define LLC_STATION_EV_RX_NULL_DSAP_XID_C 5 -#define LLC_STATION_EV_RX_NULL_DSAP_0_XID_R_XID_R_CNT_EQ 6 -#define LLC_STATION_EV_RX_NULL_DSAP_1_XID_R_XID_R_CNT_EQ 7 -#define LLC_STATION_EV_RX_NULL_DSAP_TEST_C 8 -#define LLC_STATION_EV_DISABLE_REQ 9 - -struct llc_station_state_ev { - u8 type; - u8 prim; - u8 prim_type; - u8 reason; - struct list_head node; /* node in station->ev_q.list */ -}; - -static __inline__ struct llc_station_state_ev * - llc_station_ev(struct sk_buff *skb) -{ - return (struct llc_station_state_ev *)skb->cb; -} - -typedef int (*llc_station_ev_t)(struct llc_station *station, - struct sk_buff *skb); - -extern int llc_stat_ev_enable_with_dup_addr_check(struct llc_station *station, - struct sk_buff *skb); -extern int llc_stat_ev_enable_without_dup_addr_check(struct llc_station *station, - struct sk_buff *skb); -extern int llc_stat_ev_ack_tmr_exp_lt_retry_cnt_max_retry(struct llc_station * - station, - struct sk_buff *skb); -extern int llc_stat_ev_ack_tmr_exp_eq_retry_cnt_max_retry(struct llc_station *station, - struct sk_buff *skb); -extern int llc_stat_ev_rx_null_dsap_xid_c(struct llc_station *station, - struct sk_buff *skb); -extern int llc_stat_ev_rx_null_dsap_0_xid_r_xid_r_cnt_eq(struct llc_station *station, - struct sk_buff *skb); -extern int llc_stat_ev_rx_null_dsap_1_xid_r_xid_r_cnt_eq(struct llc_station *station, - struct sk_buff *skb); -extern int llc_stat_ev_rx_null_dsap_test_c(struct llc_station *station, - struct sk_buff *skb); -extern int llc_stat_ev_disable_req(struct llc_station *station, - struct sk_buff *skb); -#endif /* LLC_EVNT_H */ diff -Nru a/include/net/llc_if.h b/include/net/llc_if.h --- a/include/net/llc_if.h Mon Sep 22 00:30:22 2003 +++ b/include/net/llc_if.h Mon Sep 22 00:30:22 2003 @@ -16,6 +16,7 @@ #include #include #include +#include #define LLC_DATAUNIT_PRIM 1 #define LLC_CONN_PRIM 2 @@ -60,29 +61,41 @@ #define LLC_STATUS_CONFLICT 7 /* disconnect conn */ #define LLC_STATUS_RESET_DONE 8 /* */ -/* Structures and types */ -/* SAP/MAC Address pair */ -struct llc_addr { - u8 lsap; - u8 mac[IFHWADDRLEN]; -}; - -struct llc_sap; - -extern struct llc_sap *llc_sap_open(u8 lsap, - int (*func)(struct sk_buff *skb, - struct net_device *dev, - struct packet_type *pt)); -extern void llc_sap_close(struct llc_sap *sap); +extern u8 llc_mac_null_var[IFHWADDRLEN]; + +/** + * llc_mac_null - determines if a address is a null mac address + * @mac: Mac address to test if null. + * + * Determines if a given address is a null mac address. Returns 0 if the + * address is not a null mac, 1 if the address is a null mac. + */ +static __inline__ int llc_mac_null(u8 *mac) +{ + return !memcmp(mac, llc_mac_null_var, IFHWADDRLEN); +} + +static __inline__ int llc_addrany(struct llc_addr *addr) +{ + return llc_mac_null(addr->mac) && !addr->lsap; +} + +/** + * llc_mac_match - determines if two mac addresses are the same + * @mac1: First mac address to compare. + * @mac2: Second mac address to compare. + * + * Determines if two given mac address are the same. Returns 0 if there + * is not a complete match up to len, 1 if a complete match up to len is + * found. + */ +static __inline__ int llc_mac_match(u8 *mac1, u8 *mac2) +{ + return !memcmp(mac1, mac2, IFHWADDRLEN); +} extern int llc_establish_connection(struct sock *sk, u8 *lmac, u8 *dmac, u8 dsap); extern int llc_build_and_send_pkt(struct sock *sk, struct sk_buff *skb); -extern void llc_build_and_send_ui_pkt(struct llc_sap *sap, struct sk_buff *skb, - u8 *dmac, u8 dsap); -extern void llc_build_and_send_xid_pkt(struct llc_sap *sap, struct sk_buff *skb, - u8 *dmac, u8 dsap); -extern void llc_build_and_send_test_pkt(struct llc_sap *sap, struct sk_buff *skb, - u8 *dmac, u8 dsap); extern int llc_send_disc(struct sock *sk); #endif /* LLC_IF_H */ diff -Nru a/include/net/llc_mac.h b/include/net/llc_mac.h --- a/include/net/llc_mac.h Mon Sep 22 00:30:24 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,61 +0,0 @@ -#ifndef LLC_MAC_H -#define LLC_MAC_H -/* - * Copyright (c) 1997 by Procom Technology, Inc. - * 2001, 2002 by Arnaldo Carvalho de Melo - * - * This program can be redistributed or modified under the terms of the - * GNU General Public License as published by the Free Software Foundation. - * This program is distributed without any warranty or implied warranty - * of merchantability or fitness for a particular purpose. - * - * See the GNU General Public License for more details. - */ -extern int llc_rcv(struct sk_buff *skb, struct net_device *dev, - struct packet_type *pt); -extern u16 lan_hdrs_init(struct sk_buff *skb, u8 *sa, u8 *da); -extern int llc_conn_rcv(struct sock *sk, struct sk_buff *skb); - -static __inline__ void llc_set_backlog_type(struct sk_buff *skb, char type) -{ - skb->cb[sizeof(skb->cb) - 1] = type; -} - -static __inline__ char llc_backlog_type(struct sk_buff *skb) -{ - return skb->cb[sizeof(skb->cb) - 1]; -} - -extern u8 llc_mac_null_var[IFHWADDRLEN]; - -/** - * llc_mac_null - determines if a address is a null mac address - * @mac: Mac address to test if null. - * - * Determines if a given address is a null mac address. Returns 0 if the - * address is not a null mac, 1 if the address is a null mac. - */ -static __inline__ int llc_mac_null(u8 *mac) -{ - return !memcmp(mac, llc_mac_null_var, IFHWADDRLEN); -} - -static __inline__ int llc_addrany(struct llc_addr *addr) -{ - return llc_mac_null(addr->mac) && !addr->lsap; -} - -/** - * llc_mac_match - determines if two mac addresses are the same - * @mac1: First mac address to compare. - * @mac2: Second mac address to compare. - * - * Determines if two given mac address are the same. Returns 0 if there - * is not a complete match up to len, 1 if a complete match up to len is - * found. - */ -static __inline__ int llc_mac_match(u8 *mac1, u8 *mac2) -{ - return !memcmp(mac1, mac2, IFHWADDRLEN); -} -#endif /* LLC_MAC_H */ diff -Nru a/include/net/llc_main.h b/include/net/llc_main.h --- a/include/net/llc_main.h Mon Sep 22 00:30:21 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,67 +0,0 @@ -#ifndef LLC_MAIN_H -#define LLC_MAIN_H -/* - * Copyright (c) 1997 by Procom Technology, Inc. - * 2001 by Arnaldo Carvalho de Melo - * - * This program can be redistributed or modified under the terms of the - * GNU General Public License as published by the Free Software Foundation. - * This program is distributed without any warranty or implied warranty - * of merchantability or fitness for a particular purpose. - * - * See the GNU General Public License for more details. - */ -#define LLC_EVENT 1 -#define LLC_PACKET 2 -#define LLC_TYPE_1 1 -#define LLC_TYPE_2 2 -#define LLC_P_TIME 2 -#define LLC_ACK_TIME 1 -#define LLC_REJ_TIME 3 -#define LLC_BUSY_TIME 3 -#define LLC_DEST_INVALID 0 /* Invalid LLC PDU type */ -#define LLC_DEST_SAP 1 /* Type 1 goes here */ -#define LLC_DEST_CONN 2 /* Type 2 goes here */ - -/** - * struct llc_station - LLC station component - * - * SAP and connection resource manager, one per adapter. - * - * @state - state of station - * @xid_r_count - XID response PDU counter - * @mac_sa - MAC source address - * @sap_list - list of related SAPs - * @ev_q - events entering state mach. - * @mac_pdu_q - PDUs ready to send to MAC - */ -struct llc_station { - u8 state; - u8 xid_r_count; - struct timer_list ack_timer; - u8 retry_count; - u8 maximum_retry; - u8 mac_sa[6]; - struct { - rwlock_t lock; - struct list_head list; - } sap_list; - struct { - struct sk_buff_head list; - spinlock_t lock; - } ev_q; - struct sk_buff_head mac_pdu_q; -}; - -extern struct llc_sap *llc_sap_alloc(void); -extern void llc_sap_save(struct llc_sap *sap); -extern void llc_free_sap(struct llc_sap *sap); -extern struct llc_sap *llc_sap_find(u8 lsap); -extern void llc_station_state_process(struct llc_station *station, - struct sk_buff *skb); -extern void llc_station_send_pdu(struct llc_station *station, - struct sk_buff *skb); -extern struct sk_buff *llc_alloc_frame(void); - -extern struct llc_station llc_main_station; -#endif /* LLC_MAIN_H */ diff -Nru a/include/net/llc_pdu.h b/include/net/llc_pdu.h --- a/include/net/llc_pdu.h Mon Sep 22 00:30:23 2003 +++ b/include/net/llc_pdu.h Mon Sep 22 00:30:23 2003 @@ -2,7 +2,7 @@ #define LLC_PDU_H /* * Copyright (c) 1997 by Procom Technology,Inc. - * 2001 by Arnaldo Carvalho de Melo + * 2001-2003 by Arnaldo Carvalho de Melo * * This program can be redistributed or modified under the terms of the * GNU General Public License as published by the Free Software Foundation. @@ -11,7 +11,10 @@ * * See the GNU General Public License for more details. */ -/* LLC PDU structure */ + +#include +#include + /* Lengths of frame formats */ #define LLC_PDU_LEN_I 4 /* header and 2 control bytes */ #define LLC_PDU_LEN_S 4 @@ -198,7 +201,7 @@ u8 ctrl_2; }; -static __inline__ struct llc_pdu_sn *llc_pdu_sn_hdr(struct sk_buff *skb) +static inline struct llc_pdu_sn *llc_pdu_sn_hdr(struct sk_buff *skb) { return (struct llc_pdu_sn *)skb->nh.raw; } @@ -210,16 +213,146 @@ u8 ctrl_1; }; -static __inline__ struct llc_pdu_un *llc_pdu_un_hdr(struct sk_buff *skb) +static inline struct llc_pdu_un *llc_pdu_un_hdr(struct sk_buff *skb) { return (struct llc_pdu_un *)skb->nh.raw; } -static __inline__ void *llc_set_pdu_hdr(struct sk_buff *skb, void *ptr) +static inline void *llc_set_pdu_hdr(struct sk_buff *skb, void *ptr) { return skb->nh.raw = ptr; } +/** + * llc_pdu_header_init - initializes pdu header + * @skb: input skb that header must be set into it. + * @type: type of PDU (U, I or S). + * @ssap: source sap. + * @dsap: destination sap. + * @cr: command/response bit (0 or 1). + * + * This function sets DSAP, SSAP and command/Response bit in LLC header. + */ +static inline void llc_pdu_header_init(struct sk_buff *skb, u8 type, + u8 ssap, u8 dsap, u8 cr) +{ + const int hlen = type == LLC_PDU_TYPE_U ? 3 : 4; + struct llc_pdu_un *pdu = llc_set_pdu_hdr(skb, skb_push(skb, hlen)); + pdu->dsap = dsap; + pdu->ssap = ssap; + pdu->ssap |= cr; +} + +/** + * llc_pdu_decode_sa - extracs source address (MAC) of input frame + * @skb: input skb that source address must be extracted from it. + * @sa: pointer to source address (6 byte array). + * + * This function extracts source address(MAC) of input frame. + */ +static inline void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa) +{ + if (skb->protocol == ntohs(ETH_P_802_2)) + memcpy(sa, ((struct ethhdr *)skb->mac.raw)->h_source, ETH_ALEN); + else if (skb->protocol == ntohs(ETH_P_TR_802_2)) + memcpy(sa, ((struct trh_hdr *)skb->mac.raw)->saddr, ETH_ALEN); +} + +/** + * llc_pdu_decode_da - extracts dest address of input frame + * @skb: input skb that destination address must be extracted from it + * @sa: pointer to destination address (6 byte array). + * + * This function extracts destination address(MAC) of input frame. + */ +static inline void llc_pdu_decode_da(struct sk_buff *skb, u8 *da) +{ + if (skb->protocol == ntohs(ETH_P_802_2)) + memcpy(da, ((struct ethhdr *)skb->mac.raw)->h_dest, ETH_ALEN); + else if (skb->protocol == ntohs(ETH_P_TR_802_2)) + memcpy(da, ((struct trh_hdr *)skb->mac.raw)->daddr, ETH_ALEN); +} + +/** + * llc_pdu_decode_ssap - extracts source SAP of input frame + * @skb: input skb that source SAP must be extracted from it. + * @ssap: source SAP (output argument). + * + * This function extracts source SAP of input frame. Right bit of SSAP is + * command/response bit. + */ +static inline void llc_pdu_decode_ssap(struct sk_buff *skb, u8 *ssap) +{ + *ssap = llc_pdu_un_hdr(skb)->ssap & 0xFE; +} + +/** + * llc_pdu_decode_dsap - extracts dest SAP of input frame + * @skb: input skb that destination SAP must be extracted from it. + * @dsap: destination SAP (output argument). + * + * This function extracts destination SAP of input frame. right bit of + * DSAP designates individual/group SAP. + */ +static inline void llc_pdu_decode_dsap(struct sk_buff *skb, u8 *dsap) +{ + *dsap = llc_pdu_un_hdr(skb)->dsap & 0xFE; +} + +/** + * llc_pdu_init_as_ui_cmd - sets LLC header as UI PDU + * @skb: input skb that header must be set into it. + * + * This function sets third byte of LLC header as a UI PDU. + */ +static inline void llc_pdu_init_as_ui_cmd(struct sk_buff *skb) +{ + struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); + + pdu->ctrl_1 = LLC_PDU_TYPE_U; + pdu->ctrl_1 |= LLC_1_PDU_CMD_UI; +} + +/** + * llc_pdu_init_as_test_cmd - sets PDU as TEST + * @skb - Address of the skb to build + * + * Sets a PDU as TEST + */ +static inline void llc_pdu_init_as_test_cmd(struct sk_buff *skb) +{ + struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); + + pdu->ctrl_1 = LLC_PDU_TYPE_U; + pdu->ctrl_1 |= LLC_1_PDU_CMD_TEST; + pdu->ctrl_1 |= LLC_U_PF_BIT_MASK; +} + +/** + * llc_pdu_init_as_test_rsp - build TEST response PDU + * @skb: Address of the skb to build + * @ev_skb: The received TEST command PDU frame + * + * Builds a pdu frame as a TEST response. + */ +static inline void llc_pdu_init_as_test_rsp(struct sk_buff *skb, + struct sk_buff *ev_skb) +{ + struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); + + pdu->ctrl_1 = LLC_PDU_TYPE_U; + pdu->ctrl_1 |= LLC_1_PDU_CMD_TEST; + pdu->ctrl_1 |= LLC_U_PF_BIT_MASK; + if (ev_skb->protocol == ntohs(ETH_P_802_2)) { + struct llc_pdu_un *ev_pdu = llc_pdu_un_hdr(ev_skb); + int dsize; + + dsize = ntohs(((struct ethhdr *)ev_skb->mac.raw)->h_proto) - 3; + memcpy(((u8 *)pdu) + 3, ((u8 *)ev_pdu) + 3, dsize); + skb_put(skb, dsize); + } +} + /* LLC Type 1 XID command/response information fields format */ struct llc_xid_info { u8 fmt_id; /* always 0x18 for LLC */ @@ -227,6 +360,54 @@ u8 rw; /* sender receive window */ }; +/** + * llc_pdu_init_as_xid_cmd - sets bytes 3, 4 & 5 of LLC header as XID + * @skb: input skb that header must be set into it. + * + * This function sets third,fourth,fifth and sixth bytes of LLC header as + * a XID PDU. + */ +static inline void llc_pdu_init_as_xid_cmd(struct sk_buff *skb, + u8 svcs_supported, u8 rx_window) +{ + struct llc_xid_info *xid_info; + struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); + + pdu->ctrl_1 = LLC_PDU_TYPE_U; + pdu->ctrl_1 |= LLC_1_PDU_CMD_XID; + pdu->ctrl_1 |= LLC_U_PF_BIT_MASK; + xid_info = (struct llc_xid_info *)(((u8 *)&pdu->ctrl_1) + 1); + xid_info->fmt_id = LLC_XID_FMT_ID; /* 0x81 */ + xid_info->type = svcs_supported; + xid_info->rw = rx_window << 1; /* size of receive window */ + skb_put(skb, 3); +} + +/** + * llc_pdu_init_as_xid_rsp - builds XID response PDU + * @skb: Address of the skb to build + * @svcs_supported: The class of the LLC (I or II) + * @rx_window: The size of the receive window of the LLC + * + * Builds a pdu frame as an XID response. + */ +static inline void llc_pdu_init_as_xid_rsp(struct sk_buff *skb, + u8 svcs_supported, u8 rx_window) +{ + struct llc_xid_info *xid_info; + struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); + + pdu->ctrl_1 = LLC_PDU_TYPE_U; + pdu->ctrl_1 |= LLC_1_PDU_CMD_XID; + pdu->ctrl_1 |= LLC_U_PF_BIT_MASK; + + xid_info = (struct llc_xid_info *)(((u8 *)&pdu->ctrl_1) + 1); + xid_info->fmt_id = LLC_XID_FMT_ID; + xid_info->type = svcs_supported; + xid_info->rw = rx_window << 1; + skb_put(skb, 3); +} + /* LLC Type 2 FRMR response information field format */ struct llc_frmr_info { u16 rej_pdu_ctrl; /* bits 1-8 if U-PDU */ @@ -239,17 +420,6 @@ extern void llc_pdu_set_pf_bit(struct sk_buff *skb, u8 bit_value); extern void llc_pdu_decode_pf_bit(struct sk_buff *skb, u8 *pf_bit); extern void llc_pdu_decode_cr_bit(struct sk_buff *skb, u8 *cr_bit); -extern void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa); -extern void llc_pdu_decode_da(struct sk_buff *skb, u8 *ds); -extern void llc_pdu_decode_dsap(struct sk_buff *skb, u8 *dsap); -extern void llc_pdu_decode_ssap(struct sk_buff *skb, u8 *ssap); -extern void llc_decode_pdu_type(struct sk_buff *skb, u8 *destination); -extern void llc_pdu_header_init(struct sk_buff *skb, u8 pdu_type, u8 ssap, - u8 dsap, u8 cr); -extern void llc_pdu_init_as_ui_cmd(struct sk_buff *skb); -extern void llc_pdu_init_as_xid_cmd(struct sk_buff *skb, u8 svcs_supported, - u8 rx_window); -extern void llc_pdu_init_as_test_cmd(struct sk_buff *skb); extern void llc_pdu_init_as_disc_cmd(struct sk_buff *skb, u8 p_bit); extern void llc_pdu_init_as_i_cmd(struct sk_buff *skb, u8 p_bit, u8 ns, u8 nr); extern void llc_pdu_init_as_rej_cmd(struct sk_buff *skb, u8 p_bit, u8 nr); @@ -257,10 +427,6 @@ extern void llc_pdu_init_as_rr_cmd(struct sk_buff *skb, u8 p_bit, u8 nr); extern void llc_pdu_init_as_sabme_cmd(struct sk_buff *skb, u8 p_bit); extern void llc_pdu_init_as_dm_rsp(struct sk_buff *skb, u8 f_bit); -extern void llc_pdu_init_as_xid_rsp(struct sk_buff *skb, u8 svcs_supported, - u8 rx_window); -extern void llc_pdu_init_as_test_rsp(struct sk_buff *skb, - struct sk_buff *ev_skb); extern void llc_pdu_init_as_frmr_rsp(struct sk_buff *skb, struct llc_pdu_sn *prev_pdu, u8 f_bit, u8 vs, u8 vr, u8 vzyxw); diff -Nru a/include/net/llc_s_st.h b/include/net/llc_s_st.h --- a/include/net/llc_s_st.h Mon Sep 22 00:30:25 2003 +++ b/include/net/llc_s_st.h Mon Sep 22 00:30:25 2003 @@ -11,10 +11,7 @@ * * See the GNU General Public License for more details. */ -/* Defines SAP component states */ -#define LLC_SAP_STATE_INACTIVE 1 -#define LLC_SAP_STATE_ACTIVE 2 #define LLC_NR_SAP_STATES 2 /* size of state table */ /* structures and types */ diff -Nru a/include/net/llc_sap.h b/include/net/llc_sap.h --- a/include/net/llc_sap.h Mon Sep 22 00:30:18 2003 +++ b/include/net/llc_sap.h Mon Sep 22 00:30:18 2003 @@ -2,7 +2,7 @@ #define LLC_SAP_H /* * Copyright (c) 1997 by Procom Technology,Inc. - * 2001 by Arnaldo Carvalho de Melo + * 2001-2003 by Arnaldo Carvalho de Melo * * This program can be redistributed or modified under the terms of the * GNU General Public License as published by the Free Software Foundation. @@ -11,37 +11,20 @@ * * See the GNU General Public License for more details. */ -#include -#include -/** - * struct llc_sap - Defines the SAP component - * - * @station - station this sap belongs to - * @state - sap state - * @p_bit - only lowest-order bit used - * @f_bit - only lowest-order bit used - * @laddr - SAP value in this 'lsap' - * @node - entry in station sap_list - * @sk_list - LLC sockets this one manages - */ -struct llc_sap { - struct llc_station *station; - u8 state; - u8 p_bit; - u8 f_bit; - int (*rcv_func)(struct sk_buff *skb, - struct net_device *dev, - struct packet_type *pt); - struct llc_addr laddr; - struct list_head node; - struct { - rwlock_t lock; - struct hlist_head list; - } sk_list; -}; +struct llc_sap; +struct sk_buff; -extern void llc_sap_assign_sock(struct llc_sap *sap, struct sock *sk); -extern void llc_sap_unassign_sock(struct llc_sap *sap, struct sock *sk); extern void llc_sap_state_process(struct llc_sap *sap, struct sk_buff *skb); extern void llc_sap_rtn_pdu(struct llc_sap *sap, struct sk_buff *skb); +extern void llc_save_primitive(struct sk_buff* skb, unsigned char prim); +extern struct sk_buff *llc_alloc_frame(void); + +extern void llc_build_and_send_test_pkt(struct llc_sap *sap, + struct sk_buff *skb, + unsigned char *dmac, + unsigned char dsap); +extern void llc_build_and_send_xid_pkt(struct llc_sap *sap, + struct sk_buff *skb, + unsigned char *dmac, + unsigned char dsap); #endif /* LLC_SAP_H */ diff -Nru a/include/net/llc_stat.h b/include/net/llc_stat.h --- a/include/net/llc_stat.h Mon Sep 22 00:30:22 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,35 +0,0 @@ -#ifndef LLC_STAT_H -#define LLC_STAT_H -/* - * Copyright (c) 1997 by Procom Technology,Inc. - * 2001 by Arnaldo Carvalho de Melo - * - * This program can be redistributed or modified under the terms of the - * GNU General Public License as published by the Free Software Foundation. - * This program is distributed without any warranty or implied warranty - * of merchantability or fitness for a particular purpose. - * - * See the GNU General Public License for more details. - */ -/* Station component state table */ -/* Station component states */ -#define LLC_STATION_STATE_DOWN 1 /* initial state */ -#define LLC_STATION_STATE_DUP_ADDR_CHK 2 -#define LLC_STATION_STATE_UP 3 - -#define LLC_NBR_STATION_STATES 3 /* size of state table */ - -/* Station component state table structure */ -struct llc_station_state_trans { - llc_station_ev_t ev; - u8 next_state; - llc_station_action_t *ev_actions; -}; - -struct llc_station_state { - u8 curr_state; - struct llc_station_state_trans **transitions; -}; - -extern struct llc_station_state llc_station_state_table[LLC_NBR_STATION_STATES]; -#endif /* LLC_STAT_H */ diff -Nru a/include/net/rose.h b/include/net/rose.h --- a/include/net/rose.h Mon Sep 22 00:30:18 2003 +++ b/include/net/rose.h Mon Sep 22 00:30:18 2003 @@ -140,9 +140,6 @@ #define rose_sk(__sk) ((rose_cb *)(__sk)->sk_protinfo) -/* Magic value indicating first entry in /proc (ie header) */ -#define ROSE_PROC_START ((void *) 1) - /* af_rose.c */ extern ax25_address rose_callsign; extern int sysctl_rose_restart_request_timeout; diff -Nru a/include/net/syncppp.h b/include/net/syncppp.h --- a/include/net/syncppp.h Mon Sep 22 00:30:20 2003 +++ b/include/net/syncppp.h Mon Sep 22 00:30:20 2003 @@ -57,8 +57,11 @@ struct sppp sppp; /* Synchronous PPP */ }; -#define sppp_of(dev) \ - (&((struct ppp_device *)(*(unsigned long *)((dev)->priv)))->sppp) +static inline struct sppp *sppp_of(struct net_device *dev) +{ + struct ppp_device *ppp = dev->priv; + return &ppp->sppp; +} #define PP_KEEPALIVE 0x01 /* use keepalive protocol */ #define PP_CISCO 0x02 /* use Cisco protocol instead of PPP */ diff -Nru a/include/pcmcia/ss.h b/include/pcmcia/ss.h --- a/include/pcmcia/ss.h Mon Sep 22 00:30:24 2003 +++ b/include/pcmcia/ss.h Mon Sep 22 00:30:24 2003 @@ -78,7 +78,6 @@ #define SS_DMA_MODE 0x0080 #define SS_SPKR_ENA 0x0100 #define SS_OUTPUT_ENA 0x0200 -#define SS_DEBOUNCED 0x0400 /* Tell driver that the debounce delay has ended */ /* Flags for I/O port and memory windows */ #define MAP_ACTIVE 0x01 @@ -176,7 +175,6 @@ u_short functions; u_short lock_count; client_handle_t clients; - u_int real_clients; pccard_mem_map cis_mem; u_char *cis_virt; struct config_t *config; @@ -249,7 +247,7 @@ extern struct class pcmcia_socket_class; /* socket drivers are expected to use these callbacks in their .drv struct */ -extern int pcmcia_socket_dev_suspend(struct device *dev, u32 state, u32 level); -extern int pcmcia_socket_dev_resume(struct device *dev, u32 level); +extern int pcmcia_socket_dev_suspend(struct device *dev, u32 state); +extern int pcmcia_socket_dev_resume(struct device *dev); #endif /* _LINUX_SS_H */ diff -Nru a/include/rxrpc/call.h b/include/rxrpc/call.h --- a/include/rxrpc/call.h Mon Sep 22 00:30:18 2003 +++ b/include/rxrpc/call.h Mon Sep 22 00:30:18 2003 @@ -67,8 +67,8 @@ wait_queue_head_t waitq; /* wait queue for events to happen */ struct list_head link; /* general internal list link */ struct list_head call_link; /* master call list link */ - u32 chan_ix; /* connection channel index (net order) */ - u32 call_id; /* call ID on connection (net order) */ + uint32_t chan_ix; /* connection channel index (net order) */ + uint32_t call_id; /* call ID on connection (net order) */ unsigned long cjif; /* jiffies at call creation */ unsigned long flags; /* control flags */ #define RXRPC_CALL_ACKS_TIMO 0x00000001 /* ACKS timeout reached */ @@ -103,7 +103,7 @@ char ackr_dfr_perm; /* request for deferred ACKs permitted */ rxrpc_seq_t ackr_dfr_seq; /* seqno for deferred ACK */ struct rxrpc_ackpacket ackr; /* pending normal ACK packet */ - u8 ackr_array[RXRPC_CALL_ACK_WINDOW_SIZE]; /* ACK records */ + uint8_t ackr_array[RXRPC_CALL_ACK_WINDOW_SIZE]; /* ACK records */ /* presentation layer */ char app_last_rcv; /* T if received last packet from remote end */ @@ -131,14 +131,14 @@ struct list_head app_attn_link; /* application attention list linkage */ size_t app_mark; /* trigger callback when app_ready_qty>=app_mark */ char app_async_read; /* T if in async-read mode */ - u8 *app_read_buf; /* application async read buffer (app_mark size) */ - u8 *app_scr_alloc; /* application scratch allocation pointer */ + uint8_t *app_read_buf; /* application async read buffer (app_mark size) */ + uint8_t *app_scr_alloc; /* application scratch allocation pointer */ void *app_scr_ptr; /* application pointer into scratch buffer */ #define RXRPC_APP_MARK_EOF 0xFFFFFFFFU /* mark at end of input */ /* application scratch buffer */ - u8 app_scratch[0] __attribute__((aligned(sizeof(long)))); + uint8_t app_scratch[0] __attribute__((aligned(sizeof(long)))); }; #define RXRPC_CALL_SCRATCH_SIZE (PAGE_SIZE - sizeof(struct rxrpc_call)) @@ -206,7 +206,7 @@ extern int rxrpc_call_write_data(struct rxrpc_call *call, size_t sioc, struct iovec siov[], - u8 rxhdr_flags, + uint8_t rxhdr_flags, int alloc_flags, int dup_data, size_t *size_sent); diff -Nru a/include/rxrpc/connection.h b/include/rxrpc/connection.h --- a/include/rxrpc/connection.h Mon Sep 22 00:30:24 2003 +++ b/include/rxrpc/connection.h Mon Sep 22 00:30:24 2003 @@ -34,6 +34,7 @@ struct list_head link; /* link in peer's list */ struct list_head proc_link; /* link in proc list */ struct list_head err_link; /* link in ICMP error processing list */ + struct list_head id_link; /* link in ID grant list */ struct sockaddr_in addr; /* remote address */ struct rxrpc_call *channels[4]; /* channels (active calls) */ wait_queue_head_t chanwait; /* wait for channel to become available */ @@ -44,19 +45,19 @@ rxrpc_serial_t serial_counter; /* packet serial number counter */ /* the following should all be in net order */ - u32 in_epoch; /* peer's epoch */ - u32 out_epoch; /* my epoch */ - u32 conn_id; /* connection ID, appropriately shifted */ - u16 service_id; /* service ID */ - u8 security_ix; /* security ID */ - u8 in_clientflag; /* RXRPC_CLIENT_INITIATED if we are server */ - u8 out_clientflag; /* RXRPC_CLIENT_INITIATED if we are client */ + uint32_t in_epoch; /* peer's epoch */ + uint32_t out_epoch; /* my epoch */ + uint32_t conn_id; /* connection ID, appropriately shifted */ + uint16_t service_id; /* service ID */ + uint8_t security_ix; /* security ID */ + uint8_t in_clientflag; /* RXRPC_CLIENT_INITIATED if we are server */ + uint8_t out_clientflag; /* RXRPC_CLIENT_INITIATED if we are client */ }; extern int rxrpc_create_connection(struct rxrpc_transport *trans, - u16 port, - u32 addr, - unsigned short service_id, + uint16_t port, + uint32_t addr, + uint16_t service_id, void *security, struct rxrpc_connection **_conn); diff -Nru a/include/rxrpc/message.h b/include/rxrpc/message.h --- a/include/rxrpc/message.h Mon Sep 22 00:30:20 2003 +++ b/include/rxrpc/message.h Mon Sep 22 00:30:20 2003 @@ -9,8 +9,8 @@ * 2 of the License, or (at your option) any later version. */ -#ifndef _H_3AD3363A_3A9C_11D6_83D8_0002B3163499 -#define _H_3AD3363A_3A9C_11D6_83D8_0002B3163499 +#ifndef _LINUX_RXRPC_MESSAGE_H +#define _LINUX_RXRPC_MESSAGE_H #include @@ -61,7 +61,7 @@ extern int rxrpc_conn_newmsg(struct rxrpc_connection *conn, struct rxrpc_call *call, - u8 type, + uint8_t type, int count, struct iovec diov[], int alloc_flags, @@ -69,4 +69,4 @@ extern int rxrpc_conn_sendmsg(struct rxrpc_connection *conn, struct rxrpc_message *msg); -#endif /* _H_3AD3363A_3A9C_11D6_83D8_0002B3163499 */ +#endif /* _LINUX_RXRPC_MESSAGE_H */ diff -Nru a/include/rxrpc/packet.h b/include/rxrpc/packet.h --- a/include/rxrpc/packet.h Mon Sep 22 00:30:20 2003 +++ b/include/rxrpc/packet.h Mon Sep 22 00:30:20 2003 @@ -27,21 +27,21 @@ */ struct rxrpc_header { - u32 epoch; /* client boot timestamp */ + uint32_t epoch; /* client boot timestamp */ - u32 cid; /* connection and channel ID */ + uint32_t cid; /* connection and channel ID */ #define RXRPC_MAXCALLS 4 /* max active calls per conn */ #define RXRPC_CHANNELMASK (RXRPC_MAXCALLS-1) /* mask for channel ID */ #define RXRPC_CIDMASK (~RXRPC_CHANNELMASK) /* mask for connection ID */ #define RXRPC_CIDSHIFT 2 /* shift for connection ID */ - u32 callNumber; /* call ID (0 for connection-level packets) */ + uint32_t callNumber; /* call ID (0 for connection-level packets) */ #define RXRPC_PROCESS_MAXCALLS (1<<2) /* maximum number of active calls per conn (power of 2) */ - u32 seq; /* sequence number of pkt in call stream */ - u32 serial; /* serial number of pkt sent to network */ + uint32_t seq; /* sequence number of pkt in call stream */ + uint32_t serial; /* serial number of pkt sent to network */ - u8 type; /* packet type */ + uint8_t type; /* packet type */ #define RXRPC_PACKET_TYPE_DATA 1 /* data */ #define RXRPC_PACKET_TYPE_ACK 2 /* ACK */ #define RXRPC_PACKET_TYPE_BUSY 3 /* call reject */ @@ -52,7 +52,7 @@ #define RXRPC_PACKET_TYPE_DEBUG 8 /* debug info request */ #define RXRPC_N_PACKET_TYPES 9 /* number of packet types (incl type 0) */ - u8 flags; /* packet flags */ + uint8_t flags; /* packet flags */ #define RXRPC_CLIENT_INITIATED 0x01 /* signifies a packet generated by a client */ #define RXRPC_REQUEST_ACK 0x02 /* request an unconditional ACK of this packet */ #define RXRPC_LAST_PACKET 0x04 /* the last packet from this side for this call */ @@ -60,10 +60,10 @@ #define RXRPC_JUMBO_PACKET 0x20 /* [DATA] this is a jumbo packet */ #define RXRPC_SLOW_START_OK 0x20 /* [ACK] slow start supported */ - u8 userStatus; /* app-layer defined status */ - u8 securityIndex; /* security protocol ID */ - u16 _rsvd; /* reserved (used by kerberos security as cksum) */ - u16 serviceId; /* service ID */ + uint8_t userStatus; /* app-layer defined status */ + uint8_t securityIndex; /* security protocol ID */ + uint16_t _rsvd; /* reserved (used by kerberos security as cksum) */ + uint16_t serviceId; /* service ID */ } __attribute__((packed)); @@ -83,9 +83,9 @@ */ struct rxrpc_jumbo_header { - u8 flags; /* packet flags (as per rxrpc_header) */ - u8 pad; - u16 _rsvd; /* reserved (used by kerberos security as cksum) */ + uint8_t flags; /* packet flags (as per rxrpc_header) */ + uint8_t pad; + uint16_t _rsvd; /* reserved (used by kerberos security as cksum) */ }; #define RXRPC_JUMBO_DATALEN 1412 /* non-terminal jumbo packet data length */ @@ -97,13 +97,14 @@ */ struct rxrpc_ackpacket { - u16 bufferSpace; /* number of packet buffers available */ - u16 maxSkew; /* diff between serno being ACK'd and highest serial no received */ - u32 firstPacket; /* sequence no of first ACK'd packet in attached list */ - u32 previousPacket; /* sequence no of previous packet received */ - u32 serial; /* serial no of packet that prompted this ACK */ + uint16_t bufferSpace; /* number of packet buffers available */ + uint16_t maxSkew; /* diff between serno being ACK'd and highest serial no + * received */ + uint32_t firstPacket; /* sequence no of first ACK'd packet in attached list */ + uint32_t previousPacket; /* sequence no of previous packet received */ + uint32_t serial; /* serial no of packet that prompted this ACK */ - u8 reason; /* reason for ACK */ + uint8_t reason; /* reason for ACK */ #define RXRPC_ACK_REQUESTED 1 /* ACK was requested on packet */ #define RXRPC_ACK_DUPLICATE 2 /* duplicate packet received */ #define RXRPC_ACK_OUT_OF_SEQUENCE 3 /* out of sequence packet received */ @@ -114,10 +115,10 @@ #define RXRPC_ACK_DELAY 8 /* nothing happened since received packet */ #define RXRPC_ACK_IDLE 9 /* ACK due to fully received ACK window */ - u8 nAcks; /* number of ACKs */ + uint8_t nAcks; /* number of ACKs */ #define RXRPC_MAXACKS 255 - u8 acks[0]; /* list of ACK/NAKs */ + uint8_t acks[0]; /* list of ACK/NAKs */ #define RXRPC_ACK_TYPE_NACK 0 #define RXRPC_ACK_TYPE_ACK 1 diff -Nru a/include/rxrpc/peer.h b/include/rxrpc/peer.h --- a/include/rxrpc/peer.h Mon Sep 22 00:30:23 2003 +++ b/include/rxrpc/peer.h Mon Sep 22 00:30:23 2003 @@ -42,7 +42,10 @@ struct rxrpc_timer timeout; /* timeout for grave destruction */ struct list_head link; /* link in transport's peer list */ struct list_head proc_link; /* link in /proc list */ - rwlock_t conn_lock; /* lock for connections */ + rwlock_t conn_idlock; /* lock for connection IDs */ + struct list_head conn_idlist; /* list of connections granted IDs */ + uint32_t conn_idcounter; /* connection ID counter */ + rwlock_t conn_lock; /* lock for active/dead connections */ struct list_head conn_active; /* active connections to/from this peer */ struct list_head conn_graveyard; /* graveyard for inactive connections */ spinlock_t conn_gylock; /* lock for conn_graveyard */ diff -Nru a/include/rxrpc/rxrpc.h b/include/rxrpc/rxrpc.h --- a/include/rxrpc/rxrpc.h Mon Sep 22 00:30:24 2003 +++ b/include/rxrpc/rxrpc.h Mon Sep 22 00:30:24 2003 @@ -14,7 +14,7 @@ #ifdef __KERNEL__ -extern u32 rxrpc_epoch; +extern uint32_t rxrpc_epoch; extern int rxrpc_ktrace; extern int rxrpc_kdebug; diff -Nru a/include/rxrpc/transport.h b/include/rxrpc/transport.h --- a/include/rxrpc/transport.h Mon Sep 22 00:30:25 2003 +++ b/include/rxrpc/transport.h Mon Sep 22 00:30:25 2003 @@ -85,10 +85,11 @@ static inline void rxrpc_get_transport(struct rxrpc_transport *trans) { - if (atomic_read(&trans->usage)<=0) + if (atomic_read(&trans->usage) <= 0) BUG(); atomic_inc(&trans->usage); - //printk("rxrpc_get_transport(%p{u=%d})\n",trans,atomic_read(&trans->usage)); + //printk("rxrpc_get_transport(%p{u=%d})\n", + // trans, atomic_read(&trans->usage)); } extern void rxrpc_put_transport(struct rxrpc_transport *trans); @@ -98,11 +99,6 @@ extern void rxrpc_del_service(struct rxrpc_transport *trans, struct rxrpc_service *srv); - -#if 0 -extern int rxrpc_trans_add_connection(struct rxrpc_transport *trans, - struct rxrpc_connection *conn); -#endif extern void rxrpc_trans_receive_packet(struct rxrpc_transport *trans); diff -Nru a/include/rxrpc/types.h b/include/rxrpc/types.h --- a/include/rxrpc/types.h Mon Sep 22 00:30:20 2003 +++ b/include/rxrpc/types.h Mon Sep 22 00:30:20 2003 @@ -19,8 +19,8 @@ #include #include -typedef unsigned rxrpc_seq_t; /* Rx message sequence number */ -typedef unsigned rxrpc_serial_t; /* Rx message serial number */ +typedef uint32_t rxrpc_seq_t; /* Rx message sequence number */ +typedef uint32_t rxrpc_serial_t; /* Rx message serial number */ struct rxrpc_call; struct rxrpc_connection; diff -Nru a/include/scsi/scsi_tcq.h b/include/scsi/scsi_tcq.h --- a/include/scsi/scsi_tcq.h Mon Sep 22 00:30:23 2003 +++ b/include/scsi/scsi_tcq.h Mon Sep 22 00:30:23 2003 @@ -27,7 +27,7 @@ { if (sdev->tagged_supported) { if (!blk_queue_tagged(sdev->request_queue)) - blk_queue_init_tags(sdev->request_queue, depth); + blk_queue_init_tags(sdev->request_queue, depth, NULL); scsi_adjust_queue_depth(sdev, MSG_ORDERED_TAG, depth); } } diff -Nru a/init/Kconfig b/init/Kconfig --- a/init/Kconfig Mon Sep 22 00:30:24 2003 +++ b/init/Kconfig Mon Sep 22 00:30:24 2003 @@ -143,24 +143,24 @@ This option enables the complete Linux kernel ".config" file contents, information on compiler used to build the kernel, kernel running when this kernel was built and kernel version - from Makefile to be saved in kernel. It provides documentation + from Makefile to be saved in the kernel. It provides documentation of which kernel options are used in a running kernel or in an on-disk kernel. This information can be extracted from the kernel image file with the script scripts/extract-ikconfig and used as input to rebuild the current kernel or to build another kernel. It can also be extracted from a running kernel by reading - /proc/ikconfig/config and /proc/ikconfig/built_with, if enabled. - /proc/ikconfig/config will list the configuration that was used - to build the kernel and /proc/ikconfig/built_with will list + /proc/config.gz and /proc/config_built_with, if enabled (below). + /proc/config.gz will list the configuration that was used + to build the kernel and /proc/config_built_with will list information on the compiler and host machine that was used to build the kernel. config IKCONFIG_PROC - bool "Enable access to .config through /proc/ikconfig" + bool "Enable access to .config through /proc/config.gz" depends on IKCONFIG && PROC_FS ---help--- This option enables access to kernel configuration file and build - information through /proc/ikconfig. + information through /proc/config.gz. menuconfig EMBEDDED @@ -204,15 +204,22 @@ config MODULES bool "Enable loadable module support" help - Kernel modules are small pieces of compiled code which can be - inserted in or removed from the running kernel, using the programs - insmod and rmmod. This is described in the file - , including the fact that you have - to say "make modules" in order to compile the modules that you chose - during kernel configuration. Modules can be device drivers, file - systems, binary executable formats, and so on. If you think that you - may want to make use of modules with this kernel in the future, then - say Y here. If unsure, say Y. + Kernel modules are small pieces of compiled code which can + be inserted in the running kernel, rather than being + permanently built into the kernel. You use the "modprobe" + tool to add (and sometimes remove) them. If you say Y here, + many parts of the kernel can be built as modules (by + answering M instead of Y where indicated): this is most + useful for infrequently used options which are not required + for booting. For more information, see the man pages for + modprobe, lsmod, modinfo, insmod and rmmod. + + If you say Y here, you will need to run "make + modules_install" to put the modules under /lib/modules/ + where modprobe can find them (you may need to be root to do + this). + + If unsure, say Y. config MODULE_UNLOAD bool "Module unloading" @@ -251,21 +258,18 @@ compiled for different kernels, by adding enough information to the modules to (hopefully) spot any changes which would make them incompatible with the kernel you are running. If - you say Y here, you will need a copy of genksyms. If unsure, say N. config KMOD - bool "Kernel module loader" + bool "Automatic kernel module loading" depends on MODULES help - Normally when you have selected some drivers and/or file systems to - be created as loadable modules, you also have the responsibility to - load the corresponding modules (using the programs insmod or - modprobe) before you can use them. If you say Y here however, the - kernel will be able to load modules for itself: when a part of the - kernel needs a module, it runs modprobe with the appropriate - arguments, thereby loading the module if it is available. (This is a - replacement for kerneld.) Say Y here and read about configuring it - in . + Normally when you have selected some parts of the kernel to + be created as kernel modules, you must load them (using the + "modprobe" command) before you can use them. If you say Y + here, some parts of the kernel will be able to load modules + automatically: when a part of the kernel needs a module, it + runs modprobe with the appropriate arguments, thereby + loading the module if it is available. If unsure, say Y. endmenu diff -Nru a/init/do_mounts_rd.c b/init/do_mounts_rd.c --- a/init/do_mounts_rd.c Mon Sep 22 00:30:23 2003 +++ b/init/do_mounts_rd.c Mon Sep 22 00:30:23 2003 @@ -332,7 +332,7 @@ insize = read(crd_infd, inbuf, INBUFSIZ); if (insize == 0) { - error("RAMDISK: ran out of compressed data\n"); + error("RAMDISK: ran out of compressed data"); return -1; } @@ -369,7 +369,7 @@ static void __init error(char *x) { - printk(KERN_ERR "%s", x); + printk(KERN_ERR "%s\n", x); exit_code = 1; unzip_error = 1; } diff -Nru a/init/initramfs.c b/init/initramfs.c --- a/init/initramfs.c Mon Sep 22 00:30:18 2003 +++ b/init/initramfs.c Mon Sep 22 00:30:18 2003 @@ -248,7 +248,6 @@ next_state = Reset; return 0; } - printk(KERN_INFO "-> %s\n", collected); if (S_ISREG(mode)) { if (maybe_link() >= 0) { wfd = sys_open(collected, O_WRONLY|O_CREAT, mode); @@ -261,11 +260,13 @@ } else if (S_ISDIR(mode)) { sys_mkdir(collected, mode); sys_chown(collected, uid, gid); + sys_chmod(collected, mode); } else if (S_ISBLK(mode) || S_ISCHR(mode) || S_ISFIFO(mode) || S_ISSOCK(mode)) { if (maybe_link() == 0) { sys_mknod(collected, mode, rdev); sys_chown(collected, uid, gid); + sys_chmod(collected, mode); } } else panic("populate_root: bogus mode: %o\n", mode); diff -Nru a/init/main.c b/init/main.c --- a/init/main.c Mon Sep 22 00:30:19 2003 +++ b/init/main.c Mon Sep 22 00:30:19 2003 @@ -542,12 +542,16 @@ spawn_ksoftirqd(); } +static void run_init_process(char *init_filename) +{ + argv_init[0] = init_filename; + execve(init_filename, argv_init, envp_init); +} + extern void prepare_namespace(void); static int init(void * unused) { - static char * argv_sh[] = { "sh", NULL, }; - lock_kernel(); /* * Tell the world that we're going to be the grim @@ -592,10 +596,12 @@ */ if (execute_command) - execve(execute_command,argv_init,envp_init); - execve("/sbin/init",argv_init,envp_init); - execve("/etc/init",argv_init,envp_init); - execve("/bin/init",argv_init,envp_init); - execve("/bin/sh",argv_sh,envp_init); + run_init_process(execute_command); + + run_init_process("/sbin/init"); + run_init_process("/etc/init"); + run_init_process("/bin/init"); + run_init_process("/bin/sh"); + panic("No init found. Try passing init= option to kernel."); } diff -Nru a/ipc/sem.c b/ipc/sem.c --- a/ipc/sem.c Mon Sep 22 00:30:20 2003 +++ b/ipc/sem.c Mon Sep 22 00:30:20 2003 @@ -1038,8 +1038,10 @@ * allocated an undo structure, it was invalidated by an RMID * and now a new array with received the same id. Check and retry. */ - if (un && un->semid == -1) + if (un && un->semid == -1) { + sem_unlock(sma); goto retry_undos; + } error = -EFBIG; if (max >= sma->sem_nsems) goto out_unlock_free; diff -Nru a/kernel/Makefile b/kernel/Makefile --- a/kernel/Makefile Mon Sep 22 00:30:19 2003 +++ b/kernel/Makefile Mon Sep 22 00:30:19 2003 @@ -18,6 +18,7 @@ obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o obj-$(CONFIG_COMPAT) += compat.o obj-$(CONFIG_IKCONFIG) += configs.o +obj-$(CONFIG_IKCONFIG_PROC) += configs.o ifneq ($(CONFIG_IA64),y) # According to Alan Modra , the -fno-omit-frame-pointer is @@ -28,12 +29,32 @@ CFLAGS_sched.o := $(PROFILING) -fno-omit-frame-pointer endif +# configs.o uses generated files - dependecies must be listed explicitly +$(obj)/configs.o: $(obj)/ikconfig.h + +ifdef CONFIG_IKCONFIG_PROC +$(obj)/configs.o: $(obj)/config_data.h +endif + +# ikconfig.h contains all the selected config entries - generated +# from top-level Makefile and .config. Info from ikconfig.h can +# be extracted from the kernel binary. + quiet_cmd_ikconfig = IKCFG $@ cmd_ikconfig = $(CONFIG_SHELL) $< .config $(srctree)/Makefile > $@ targets += ikconfig.h - $(obj)/ikconfig.h: scripts/mkconfigs .config Makefile FORCE $(call if_changed,ikconfig) -$(obj)/configs.o: $(obj)/ikconfig.h +# config_data.h contains the same information as ikconfig.h but gzipped. +# Info from config_data can be extracted from /proc/config* +targets += config_data.gz +$(obj)/config_data.gz: .config FORCE + $(call if_changed,gzip) + +quiet_cmd_ikconfiggz = IKCFG $@ + cmd_ikconfiggz = cat $< | scripts/bin2c kernel_config_data > $@ +targets += config_data.h +$(obj)/config_data.h: $(obj)/config_data.gz FORCE + $(call if_changed,ikconfiggz) diff -Nru a/kernel/configs.c b/kernel/configs.c --- a/kernel/configs.c Mon Sep 22 00:30:20 2003 +++ b/kernel/configs.c Mon Sep 22 00:30:20 2003 @@ -23,6 +23,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include @@ -35,129 +36,74 @@ /**************************************************/ /* the actual current config file */ +/* This one is for extraction from the kernel binary file image. */ #include "ikconfig.h" #ifdef CONFIG_IKCONFIG_PROC +/* This is the data that can be read from /proc/config.gz. */ +#include "config_data.h" + /**************************************************/ /* globals and useful constants */ -static const char IKCONFIG_NAME[] = "ikconfig"; -static const char IKCONFIG_VERSION[] = "0.6"; - -static int ikconfig_size; -static struct proc_dir_entry *ikconfig_dir; +static const char IKCONFIG_VERSION[] __initdata = "0.7"; static ssize_t -ikconfig_read(struct file *file, char __user *buf, - size_t len, loff_t *offset) +ikconfig_read_current(struct file *file, char __user *buf, + size_t len, loff_t * offset) { loff_t pos = *offset; ssize_t count; - - if (pos >= ikconfig_size) + + if (pos >= kernel_config_data_size) return 0; - count = min(len, (size_t)(ikconfig_size - pos)); - if(copy_to_user(buf, ikconfig_config + pos, count)) + count = min(len, (size_t)(kernel_config_data_size - pos)); + if(copy_to_user(buf, kernel_config_data + pos, count)) return -EFAULT; *offset += count; return count; } -static struct file_operations config_fops = { +static struct file_operations ikconfig_file_ops = { .owner = THIS_MODULE, - .read = ikconfig_read, + .read = ikconfig_read_current, }; /***************************************************/ -/* built_with_show: let people read the info */ -/* we have on the tools used to build this kernel */ - -static int builtwith_show(struct seq_file *seq, void *v) -{ - seq_printf(seq, - "Kernel: %s\nCompiler: %s\nVersion_in_Makefile: %s\n", - ikconfig_built_with, LINUX_COMPILER, UTS_RELEASE); - return 0; -} - -static int built_with_open(struct inode *inode, struct file *file) -{ - return single_open(file, builtwith_show, PDE(inode)->data); -} - -static struct file_operations builtwith_fops = { - .owner = THIS_MODULE, - .open = built_with_open, - .read = seq_read, - .llseek = seq_lseek, - .release = single_release, -}; - -/***************************************************/ /* ikconfig_init: start up everything we need to */ -int __init -ikconfig_init(void) +static int __init ikconfig_init(void) { struct proc_dir_entry *entry; - printk(KERN_INFO "ikconfig %s with /proc/ikconfig\n", + printk(KERN_INFO "ikconfig %s with /proc/config*\n", IKCONFIG_VERSION); - /* create the ikconfig directory */ - ikconfig_dir = proc_mkdir(IKCONFIG_NAME, NULL); - if (ikconfig_dir == NULL) - goto leave; - ikconfig_dir->owner = THIS_MODULE; - /* create the current config file */ - entry = create_proc_entry("config", S_IFREG | S_IRUGO, ikconfig_dir); + entry = create_proc_entry("config.gz", S_IFREG | S_IRUGO, + &proc_root); if (!entry) - goto leave2; + return -ENOMEM; - entry->proc_fops = &config_fops; - entry->size = ikconfig_size = strlen(ikconfig_config); - - /* create the "built with" file */ - entry = create_proc_entry("built_with", S_IFREG | S_IRUGO, - ikconfig_dir); - if (!entry) - goto leave3; - entry->proc_fops = &builtwith_fops; + entry->proc_fops = &ikconfig_file_ops; + entry->size = kernel_config_data_size; return 0; - -leave3: - /* remove the file from proc */ - remove_proc_entry("config", ikconfig_dir); - -leave2: - /* remove the ikconfig directory */ - remove_proc_entry(IKCONFIG_NAME, NULL); - -leave: - return -ENOMEM; } /***************************************************/ -/* cleanup_ikconfig: clean up our mess */ +/* ikconfig_cleanup: clean up our mess */ -static void -cleanup_ikconfig(void) +static void __exit ikconfig_cleanup(void) { - /* remove the files */ - remove_proc_entry("config", ikconfig_dir); - remove_proc_entry("built_with", ikconfig_dir); - - /* remove the ikconfig directory */ - remove_proc_entry(IKCONFIG_NAME, NULL); + remove_proc_entry("config.gz", &proc_root); } module_init(ikconfig_init); -module_exit(cleanup_ikconfig); +module_exit(ikconfig_cleanup); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Randy Dunlap"); diff -Nru a/kernel/exit.c b/kernel/exit.c --- a/kernel/exit.c Mon Sep 22 00:30:24 2003 +++ b/kernel/exit.c Mon Sep 22 00:30:24 2003 @@ -152,7 +152,7 @@ || p->state >= TASK_ZOMBIE || p->real_parent->pid == 1) continue; - if (p->real_parent->pgrp != pgrp + if (process_group(p->real_parent) != pgrp && p->real_parent->session == p->session) { ret = 0; break; @@ -247,9 +247,9 @@ curr->session = session; attach_pid(curr, PIDTYPE_SID, session); } - if (curr->pgrp != pgrp) { + if (process_group(curr) != pgrp) { detach_pid(curr, PIDTYPE_PGID); - curr->pgrp = pgrp; + curr->group_leader->__pgrp = pgrp; attach_pid(curr, PIDTYPE_PGID, pgrp); } } @@ -508,9 +508,9 @@ * than we are, and it was the only connection * outside, so the child pgrp is now orphaned. */ - if ((p->pgrp != father->pgrp) && + if ((process_group(p) != process_group(father)) && (p->session == father->session)) { - int pgrp = p->pgrp; + int pgrp = process_group(p); if (will_become_orphaned_pgrp(pgrp, NULL) && has_stopped_jobs(pgrp)) { __kill_pg_info(SIGHUP, (void *)1, pgrp); @@ -618,12 +618,12 @@ t = tsk->real_parent; - if ((t->pgrp != tsk->pgrp) && + if ((process_group(t) != process_group(tsk)) && (t->session == tsk->session) && - will_become_orphaned_pgrp(tsk->pgrp, tsk) && - has_stopped_jobs(tsk->pgrp)) { - __kill_pg_info(SIGHUP, (void *)1, tsk->pgrp); - __kill_pg_info(SIGCONT, (void *)1, tsk->pgrp); + will_become_orphaned_pgrp(process_group(tsk), tsk) && + has_stopped_jobs(process_group(tsk))) { + __kill_pg_info(SIGHUP, (void *)1, process_group(tsk)); + __kill_pg_info(SIGCONT, (void *)1, process_group(tsk)); } /* Let father know we died @@ -813,10 +813,10 @@ if (p->pid != pid) return 0; } else if (!pid) { - if (p->pgrp != current->pgrp) + if (process_group(p) != process_group(current)) return 0; } else if (pid != -1) { - if (p->pgrp != -pid) + if (process_group(p) != -pid) return 0; } diff -Nru a/kernel/fork.c b/kernel/fork.c --- a/kernel/fork.c Mon Sep 22 00:30:18 2003 +++ b/kernel/fork.c Mon Sep 22 00:30:18 2003 @@ -305,7 +305,7 @@ return retval; fail_nomem: retval = -ENOMEM; - fail: +fail: vm_unacct_memory(charge); goto out; } @@ -499,7 +499,7 @@ goto fail_nomem; if (init_new_context(tsk,mm)) - goto free_pt; + goto fail_nocontext; retval = dup_mmap(mm, oldmm); if (retval) @@ -514,6 +514,15 @@ mmput(mm); fail_nomem: return retval; + +fail_nocontext: + /* + * If init_new_context() failed, we cannot use mmput() to free the mm + * because it calls destroy_context() + */ + mm_free_pgd(mm); + free_mm(mm); + return retval; } static inline struct fs_struct *__copy_fs_struct(struct fs_struct *old) @@ -925,7 +934,7 @@ */ p->first_time_slice = 1; current->time_slice >>= 1; - p->last_run = jiffies; + p->timestamp = sched_clock(); if (!current->time_slice) { /* * This case is rare, it happens when the parent has only @@ -1004,7 +1013,7 @@ attach_pid(p, PIDTYPE_PID, p->pid); if (thread_group_leader(p)) { attach_pid(p, PIDTYPE_TGID, p->tgid); - attach_pid(p, PIDTYPE_PGID, p->pgrp); + attach_pid(p, PIDTYPE_PGID, process_group(p)); attach_pid(p, PIDTYPE_SID, p->session); if (p->pid) __get_cpu_var(process_counts)++; diff -Nru a/kernel/ksyms.c b/kernel/ksyms.c --- a/kernel/ksyms.c Mon Sep 22 00:30:18 2003 +++ b/kernel/ksyms.c Mon Sep 22 00:30:18 2003 @@ -348,8 +348,6 @@ EXPORT_SYMBOL(unlock_page); /* device registration */ -EXPORT_SYMBOL(register_chrdev); -EXPORT_SYMBOL(unregister_chrdev); EXPORT_SYMBOL(register_blkdev); EXPORT_SYMBOL(unregister_blkdev); EXPORT_SYMBOL(tty_register_driver); diff -Nru a/kernel/pid.c b/kernel/pid.c --- a/kernel/pid.c Mon Sep 22 00:30:22 2003 +++ b/kernel/pid.c Mon Sep 22 00:30:22 2003 @@ -250,13 +250,13 @@ attach_pid(thread, PIDTYPE_PID, thread->pid); attach_pid(thread, PIDTYPE_TGID, thread->tgid); - attach_pid(thread, PIDTYPE_PGID, thread->pgrp); + attach_pid(thread, PIDTYPE_PGID, leader->__pgrp); attach_pid(thread, PIDTYPE_SID, thread->session); list_add_tail(&thread->tasks, &init_task.tasks); attach_pid(leader, PIDTYPE_PID, leader->pid); attach_pid(leader, PIDTYPE_TGID, leader->tgid); - attach_pid(leader, PIDTYPE_PGID, leader->pgrp); + attach_pid(leader, PIDTYPE_PGID, leader->__pgrp); attach_pid(leader, PIDTYPE_SID, leader->session); } diff -Nru a/kernel/posix-timers.c b/kernel/posix-timers.c --- a/kernel/posix-timers.c Mon Sep 22 00:30:22 2003 +++ b/kernel/posix-timers.c Mon Sep 22 00:30:22 2003 @@ -344,6 +344,7 @@ return NULL; if ((event->sigev_notify & ~SIGEV_NONE & MIPS_SIGEV) && + event->sigev_signo && ((unsigned) (event->sigev_signo > SIGRTMAX))) return NULL; diff -Nru a/kernel/sched.c b/kernel/sched.c --- a/kernel/sched.c Mon Sep 22 00:30:24 2003 +++ b/kernel/sched.c Mon Sep 22 00:30:24 2003 @@ -14,6 +14,7 @@ * an array-switch method of distributing timeslices * and per-CPU runqueues. Cleanups and useful suggestions * by Davide Libenzi, preemptible kernel bits by Robert Love. + * 2003-09-03 Interactivity tuning by Con Kolivas. */ #include @@ -58,6 +59,14 @@ #define USER_PRIO(p) ((p)-MAX_RT_PRIO) #define TASK_USER_PRIO(p) USER_PRIO((p)->static_prio) #define MAX_USER_PRIO (USER_PRIO(MAX_PRIO)) +#define AVG_TIMESLICE (MIN_TIMESLICE + ((MAX_TIMESLICE - MIN_TIMESLICE) *\ + (MAX_PRIO-1-NICE_TO_PRIO(0))/(MAX_USER_PRIO - 1))) + +/* + * Some helpers for converting nanosecond timing to jiffy resolution + */ +#define NS_TO_JIFFIES(TIME) ((TIME) / (1000000000 / HZ)) +#define JIFFIES_TO_NS(TIME) ((TIME) * (1000000000 / HZ)) /* * These are the 'tuning knobs' of the scheduler: @@ -68,14 +77,18 @@ */ #define MIN_TIMESLICE ( 10 * HZ / 1000) #define MAX_TIMESLICE (200 * HZ / 1000) -#define CHILD_PENALTY 50 +#define ON_RUNQUEUE_WEIGHT 30 +#define CHILD_PENALTY 95 #define PARENT_PENALTY 100 #define EXIT_WEIGHT 3 #define PRIO_BONUS_RATIO 25 +#define MAX_BONUS (MAX_USER_PRIO * PRIO_BONUS_RATIO / 100) #define INTERACTIVE_DELTA 2 -#define MAX_SLEEP_AVG (10*HZ) -#define STARVATION_LIMIT (10*HZ) +#define MAX_SLEEP_AVG (AVG_TIMESLICE * MAX_BONUS) +#define STARVATION_LIMIT (MAX_SLEEP_AVG) +#define NS_MAX_SLEEP_AVG (JIFFIES_TO_NS(MAX_SLEEP_AVG)) #define NODE_THRESHOLD 125 +#define CREDIT_LIMIT 100 /* * If a task is 'interactive' then we reinsert it in the active @@ -105,6 +118,19 @@ * too hard. */ +#define CURRENT_BONUS(p) \ + (NS_TO_JIFFIES((p)->sleep_avg) * MAX_BONUS / \ + MAX_SLEEP_AVG) + +#ifdef CONFIG_SMP +#define TIMESLICE_GRANULARITY(p) (MIN_TIMESLICE * \ + (1 << (((MAX_BONUS - CURRENT_BONUS(p)) ? : 1) - 1)) * \ + num_online_cpus()) +#else +#define TIMESLICE_GRANULARITY(p) (MIN_TIMESLICE * \ + (1 << (((MAX_BONUS - CURRENT_BONUS(p)) ? : 1) - 1))) +#endif + #define SCALE(v1,v1_max,v2_max) \ (v1) * (v2_max) / (v1_max) @@ -115,6 +141,19 @@ #define TASK_INTERACTIVE(p) \ ((p)->prio <= (p)->static_prio - DELTA(p)) +#define JUST_INTERACTIVE_SLEEP(p) \ + (JIFFIES_TO_NS(MAX_SLEEP_AVG * \ + (MAX_BONUS / 2 + DELTA((p)) + 1) / MAX_BONUS - 1)) + +#define HIGH_CREDIT(p) \ + ((p)->interactive_credit > CREDIT_LIMIT) + +#define LOW_CREDIT(p) \ + ((p)->interactive_credit < -CREDIT_LIMIT) + +#define TASK_PREEMPTS_CURR(p, rq) \ + ((p)->prio < (rq)->curr->prio) + /* * BASE_TIMESLICE scales user-nice values [ -20 ... 19 ] * to time slice values. @@ -179,7 +218,6 @@ #define this_rq() (&__get_cpu_var(runqueues)) #define task_rq(p) cpu_rq(task_cpu(p)) #define cpu_curr(cpu) (cpu_rq(cpu)->curr) -#define rt_task(p) ((p)->prio < MAX_RT_PRIO) /* * Default context-switch locking: @@ -319,8 +357,7 @@ if (rt_task(p)) return p->prio; - bonus = MAX_USER_PRIO*PRIO_BONUS_RATIO*p->sleep_avg/MAX_SLEEP_AVG/100 - - MAX_USER_PRIO*PRIO_BONUS_RATIO/100/2; + bonus = CURRENT_BONUS(p) - MAX_BONUS / 2; prio = p->static_prio - bonus; if (prio < MAX_RT_PRIO) @@ -339,6 +376,82 @@ nr_running_inc(rq); } +static void recalc_task_prio(task_t *p, unsigned long long now) +{ + unsigned long long __sleep_time = now - p->timestamp; + unsigned long sleep_time; + + if (__sleep_time > NS_MAX_SLEEP_AVG) + sleep_time = NS_MAX_SLEEP_AVG; + else + sleep_time = (unsigned long)__sleep_time; + + if (likely(sleep_time > 0)) { + /* + * User tasks that sleep a long time are categorised as + * idle and will get just interactive status to stay active & + * prevent them suddenly becoming cpu hogs and starving + * other processes. + */ + if (p->mm && p->activated != -1 && + sleep_time > JUST_INTERACTIVE_SLEEP(p)){ + p->sleep_avg = JIFFIES_TO_NS(MAX_SLEEP_AVG - + AVG_TIMESLICE); + if (!HIGH_CREDIT(p)) + p->interactive_credit++; + } else { + /* + * The lower the sleep avg a task has the more + * rapidly it will rise with sleep time. + */ + sleep_time *= (MAX_BONUS - CURRENT_BONUS(p)) ? : 1; + + /* + * Tasks with low interactive_credit are limited to + * one timeslice worth of sleep avg bonus. + */ + if (LOW_CREDIT(p) && + sleep_time > JIFFIES_TO_NS(task_timeslice(p))) + sleep_time = + JIFFIES_TO_NS(task_timeslice(p)); + + /* + * Non high_credit tasks waking from uninterruptible + * sleep are limited in their sleep_avg rise as they + * are likely to be cpu hogs waiting on I/O + */ + if (p->activated == -1 && !HIGH_CREDIT(p) && p->mm){ + if (p->sleep_avg >= JUST_INTERACTIVE_SLEEP(p)) + sleep_time = 0; + else if (p->sleep_avg + sleep_time >= + JUST_INTERACTIVE_SLEEP(p)){ + p->sleep_avg = + JUST_INTERACTIVE_SLEEP(p); + sleep_time = 0; + } + } + + /* + * This code gives a bonus to interactive tasks. + * + * The boost works by updating the 'average sleep time' + * value here, based on ->timestamp. The more time a task + * spends sleeping, the higher the average gets - and the + * higher the priority boost gets as well. + */ + p->sleep_avg += sleep_time; + + if (p->sleep_avg > NS_MAX_SLEEP_AVG){ + p->sleep_avg = NS_MAX_SLEEP_AVG; + if (!HIGH_CREDIT(p)) + p->interactive_credit++; + } + } + } + + p->prio = effective_prio(p); +} + /* * activate_task - move a task to the runqueue and do priority recalculation * @@ -347,34 +460,33 @@ */ static inline void activate_task(task_t *p, runqueue_t *rq) { - long sleep_time = jiffies - p->last_run - 1; + unsigned long long now = sched_clock(); - if (sleep_time > 0) { - int sleep_avg; + recalc_task_prio(p, now); + /* + * This checks to make sure it's not an uninterruptible task + * that is now waking up. + */ + if (!p->activated){ /* - * This code gives a bonus to interactive tasks. - * - * The boost works by updating the 'average sleep time' - * value here, based on ->last_run. The more time a task - * spends sleeping, the higher the average gets - and the - * higher the priority boost gets as well. + * Tasks which were woken up by interrupts (ie. hw events) + * are most likely of interactive nature. So we give them + * the credit of extending their sleep time to the period + * of time they spend on the runqueue, waiting for execution + * on a CPU, first time around: */ - sleep_avg = p->sleep_avg + sleep_time; - + if (in_interrupt()) + p->activated = 2; + else /* - * 'Overflow' bonus ticks go to the waker as well, so the - * ticks are not lost. This has the effect of further - * boosting tasks that are related to maximum-interactive - * tasks. + * Normal first-time wakeups get a credit too for on-runqueue + * time, but it will be weighted down: */ - if (sleep_avg > MAX_SLEEP_AVG) - sleep_avg = MAX_SLEEP_AVG; - if (p->sleep_avg != sleep_avg) { - p->sleep_avg = sleep_avg; - p->prio = effective_prio(p); + p->activated = 1; } - } + p->timestamp = now; + __activate_task(p, rq); } @@ -495,13 +607,19 @@ task_rq_unlock(rq, &flags); goto repeat_lock_task; } - if (old_state == TASK_UNINTERRUPTIBLE) + if (old_state == TASK_UNINTERRUPTIBLE){ rq->nr_uninterruptible--; + /* + * Tasks on involuntary sleep don't earn + * sleep_avg beyond just interactive state. + */ + p->activated = -1; + } if (sync) __activate_task(p, rq); else { activate_task(p, rq); - if (p->prio < rq->curr->prio) + if (TASK_PREEMPTS_CURR(p, rq)) resched_task(rq->curr); } success = 1; @@ -550,8 +668,14 @@ * and children as well, to keep max-interactive tasks * from forking tasks that are max-interactive. */ - current->sleep_avg = current->sleep_avg * PARENT_PENALTY / 100; - p->sleep_avg = p->sleep_avg * CHILD_PENALTY / 100; + current->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(current) * + PARENT_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS); + + p->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(p) * + CHILD_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS); + + p->interactive_credit = 0; + p->prio = effective_prio(p); set_task_cpu(p, smp_processor_id()); @@ -592,8 +716,9 @@ * the sleep_avg of the parent as well. */ if (p->sleep_avg < p->parent->sleep_avg) - p->parent->sleep_avg = (p->parent->sleep_avg * EXIT_WEIGHT + - p->sleep_avg) / (EXIT_WEIGHT + 1); + p->parent->sleep_avg = p->parent->sleep_avg / + (EXIT_WEIGHT + 1) * EXIT_WEIGHT + p->sleep_avg / + (EXIT_WEIGHT + 1); } /** @@ -959,10 +1084,10 @@ if (likely(!busiest)) goto out; - *imbalance = (max_load - nr_running) / 2; + *imbalance = max_load - nr_running; /* It needs an at least ~25% imbalance to trigger balancing. */ - if (!idle && (*imbalance < (max_load + 3)/4)) { + if (!idle && ((*imbalance)*4 < max_load)) { busiest = NULL; goto out; } @@ -972,7 +1097,7 @@ * Make sure nothing changed since we checked the * runqueue length. */ - if (busiest->nr_running <= nr_running + 1) { + if (busiest->nr_running <= nr_running) { spin_unlock(&busiest->lock); busiest = NULL; } @@ -995,13 +1120,31 @@ * Note that idle threads have a prio of MAX_PRIO, for this test * to be always true for them. */ - if (p->prio < this_rq->curr->prio) + if (TASK_PREEMPTS_CURR(p, this_rq)) set_need_resched(); - else { - if (p->prio == this_rq->curr->prio && - p->time_slice > this_rq->curr->time_slice) - set_need_resched(); - } +} + +/* + * Previously: + * + * #define CAN_MIGRATE_TASK(p,rq,this_cpu) \ + * ((!idle || (NS_TO_JIFFIES(now - (p)->timestamp) > \ + * cache_decay_ticks)) && !task_running(rq, p) && \ + * cpu_isset(this_cpu, (p)->cpus_allowed)) + */ + +static inline int +can_migrate_task(task_t *tsk, runqueue_t *rq, int this_cpu, int idle) +{ + unsigned long delta = sched_clock() - tsk->timestamp; + + if (!idle && (delta <= JIFFIES_TO_NS(cache_decay_ticks))) + return 0; + if (task_running(rq, tsk)) + return 0; + if (!cpu_isset(this_cpu, tsk->cpus_allowed)) + return 0; + return 1; } /* @@ -1025,6 +1168,12 @@ goto out; /* + * We only want to steal a number of tasks equal to 1/2 the imbalance, + * otherwise we'll just shift the imbalance to the new queue: + */ + imbalance /= 2; + + /* * We first consider expired tasks. Those will likely not be * executed in the near future, and they are most likely to * be cache-cold, thus switching CPUs has the least effect @@ -1063,14 +1212,9 @@ * 3) are cache-hot on their current CPU. */ -#define CAN_MIGRATE_TASK(p,rq,this_cpu) \ - ((!idle || (jiffies - (p)->last_run > cache_decay_ticks)) && \ - !task_running(rq, p) && \ - cpu_isset(this_cpu, (p)->cpus_allowed)) - curr = curr->prev; - if (!CAN_MIGRATE_TASK(tmp, busiest, this_cpu)) { + if (!can_migrate_task(tmp, busiest, this_cpu, idle)) { if (curr != head) goto skip_queue; idx++; @@ -1232,14 +1376,11 @@ spin_lock(&rq->lock); /* * The task was running during this tick - update the - * time slice counter and the sleep average. Note: we - * do not update a thread's priority until it either - * goes to sleep or uses up its timeslice. This makes - * it possible for interactive tasks to use up their - * timeslices at their highest priority levels. + * time slice counter. Note: we do not update a thread's + * priority until it either goes to sleep or uses up its + * timeslice. This makes it possible for interactive tasks + * to use up their timeslices at their highest priority levels. */ - if (p->sleep_avg) - p->sleep_avg--; if (unlikely(rt_task(p))) { /* * RR tasks need a special form of timeslice management. @@ -1263,12 +1404,39 @@ p->time_slice = task_timeslice(p); p->first_time_slice = 0; + if (!rq->expired_timestamp) + rq->expired_timestamp = jiffies; if (!TASK_INTERACTIVE(p) || EXPIRED_STARVING(rq)) { - if (!rq->expired_timestamp) - rq->expired_timestamp = jiffies; enqueue_task(p, rq->expired); } else enqueue_task(p, rq->active); + } else { + /* + * Prevent a too long timeslice allowing a task to monopolize + * the CPU. We do this by splitting up the timeslice into + * smaller pieces. + * + * Note: this does not mean the task's timeslices expire or + * get lost in any way, they just might be preempted by + * another task of equal priority. (one with higher + * priority would have preempted this task already.) We + * requeue this task to the end of the list on this priority + * level, which is in essence a round-robin of tasks with + * equal priority. + * + * This only applies to tasks in the interactive + * delta range with at least TIMESLICE_GRANULARITY to requeue. + */ + if (TASK_INTERACTIVE(p) && !((task_timeslice(p) - + p->time_slice) % TIMESLICE_GRANULARITY(p)) && + (p->time_slice >= TIMESLICE_GRANULARITY(p)) && + (p->array == rq->active)) { + + dequeue_task(p, rq->active); + set_tsk_need_resched(p); + p->prio = effective_prio(p); + enqueue_task(p, rq->active); + } } out_unlock: spin_unlock(&rq->lock); @@ -1287,6 +1455,8 @@ runqueue_t *rq; prio_array_t *array; struct list_head *queue; + unsigned long long now; + unsigned long run_time; int idx; /* @@ -1307,7 +1477,20 @@ rq = this_rq(); release_kernel_lock(prev); - prev->last_run = jiffies; + now = sched_clock(); + if (likely(now - prev->timestamp < NS_MAX_SLEEP_AVG)) + run_time = now - prev->timestamp; + else + run_time = NS_MAX_SLEEP_AVG; + + /* + * Tasks with interactive credits get charged less run_time + * at high sleep_avg to delay them losing their interactive + * status + */ + if (HIGH_CREDIT(prev)) + run_time /= (CURRENT_BONUS(prev) ? : 1); + spin_lock_irq(&rq->lock); /* @@ -1357,12 +1540,33 @@ queue = array->queue + idx; next = list_entry(queue->next, task_t, run_list); + if (next->activated > 0) { + unsigned long long delta = now - next->timestamp; + + if (next->activated == 1) + delta = delta * (ON_RUNQUEUE_WEIGHT * 128 / 100) / 128; + + array = next->array; + dequeue_task(next, array); + recalc_task_prio(next, next->timestamp + delta); + enqueue_task(next, array); + } + next->activated = 0; switch_tasks: prefetch(next); clear_tsk_need_resched(prev); RCU_qsctr(task_cpu(prev))++; + prev->sleep_avg -= run_time; + if ((long)prev->sleep_avg <= 0){ + prev->sleep_avg = 0; + if (!(HIGH_CREDIT(prev) || LOW_CREDIT(prev))) + prev->interactive_credit--; + } + prev->timestamp = now; + if (likely(prev != next)) { + next->timestamp = now; rq->nr_switches++; rq->curr = next; @@ -1602,6 +1806,7 @@ unsigned long flags; prio_array_t *array; runqueue_t *rq; + int old_prio, new_prio, delta; if (TASK_NICE(p) == nice || nice < -20 || nice > 19) return; @@ -1610,6 +1815,12 @@ * the task might be in the middle of scheduling on another CPU. */ rq = task_rq_lock(p, &flags); + /* + * The RT priorities are set via setscheduler(), but we still + * allow the 'normal' nice value to be set - but as expected + * it wont have any effect on scheduling until the task is + * not SCHED_NORMAL: + */ if (rt_task(p)) { p->static_prio = NICE_TO_PRIO(nice); goto out_unlock; @@ -1617,16 +1828,20 @@ array = p->array; if (array) dequeue_task(p, array); + + old_prio = p->prio; + new_prio = NICE_TO_PRIO(nice); + delta = new_prio - old_prio; p->static_prio = NICE_TO_PRIO(nice); - p->prio = NICE_TO_PRIO(nice); + p->prio += delta; + if (array) { enqueue_task(p, array); /* - * If the task is running and lowered its priority, - * or increased its priority then reschedule its CPU: + * If the task increased its priority or is running and + * lowered its priority, then reschedule its CPU: */ - if ((NICE_TO_PRIO(nice) < p->static_prio) || - task_running(rq, p)) + if (delta < 0 || (delta > 0 && task_running(rq, p))) resched_task(rq->curr); } out_unlock: @@ -2383,6 +2598,12 @@ local_irq_restore(flags); } +typedef struct { + int cpu; + struct completion startup_done; + task_t *task; +} migration_startup_t; + /* * migration_thread - this is a highprio system thread that performs * thread migration by bumping thread off CPU then 'pushing' onto @@ -2392,20 +2613,21 @@ { /* Marking "param" __user is ok, since we do a set_fs(KERNEL_DS); */ struct sched_param __user param = { .sched_priority = MAX_RT_PRIO-1 }; - int cpu = (long) data; + migration_startup_t *startup = data; + int cpu = startup->cpu; runqueue_t *rq; int ret; + startup->task = current; + complete(&startup->startup_done); + set_current_state(TASK_UNINTERRUPTIBLE); + schedule(); + + BUG_ON(smp_processor_id() != cpu); + daemonize("migration/%d", cpu); set_fs(KERNEL_DS); - /* - * Either we are running on the right CPU, or there's a a - * migration thread on this CPU, guaranteed (we're started - * serially). - */ - set_cpus_allowed(current, cpumask_of_cpu(cpu)); - ret = setscheduler(0, SCHED_FIFO, ¶m); rq = this_rq(); @@ -2441,13 +2663,30 @@ unsigned long action, void *hcpu) { + long cpu = (long) hcpu; + migration_startup_t startup; + switch (action) { case CPU_ONLINE: - printk("Starting migration thread for cpu %li\n", - (long)hcpu); - kernel_thread(migration_thread, hcpu, CLONE_KERNEL); - while (!cpu_rq((long)hcpu)->migration_thread) + + printk("Starting migration thread for cpu %li\n", cpu); + + startup.cpu = cpu; + startup.task = NULL; + init_completion(&startup.startup_done); + + kernel_thread(migration_thread, &startup, CLONE_KERNEL); + wait_for_completion(&startup.startup_done); + wait_task_inactive(startup.task); + + startup.task->thread_info->cpu = cpu; + startup.task->cpus_allowed = cpumask_of_cpu(cpu); + + wake_up_process(startup.task); + + while (!cpu_rq(cpu)->migration_thread) yield(); + break; } return NOTIFY_OK; @@ -2570,6 +2809,8 @@ prev_jiffy = jiffies; printk(KERN_ERR "Debug: sleeping function called from invalid" " context at %s:%d\n", file, line); + printk("in_atomic():%d, irqs_disabled():%d\n", + in_atomic(), irqs_disabled()); dump_stack(); } #endif diff -Nru a/kernel/signal.c b/kernel/signal.c --- a/kernel/signal.c Mon Sep 22 00:30:21 2003 +++ b/kernel/signal.c Mon Sep 22 00:30:21 2003 @@ -1139,7 +1139,7 @@ static int kill_something_info(int sig, struct siginfo *info, int pid) { if (!pid) { - return kill_pg_info(sig, info, current->pgrp); + return kill_pg_info(sig, info, process_group(current)); } else if (pid == -1) { int retval = 0, count = 0; struct task_struct * p; @@ -1798,7 +1798,7 @@ /* signals can be posted during this window */ - if (is_orphaned_pgrp(current->pgrp)) + if (is_orphaned_pgrp(process_group(current))) goto relock; spin_lock_irq(¤t->sighand->siglock); diff -Nru a/kernel/softirq.c b/kernel/softirq.c --- a/kernel/softirq.c Mon Sep 22 00:30:20 2003 +++ b/kernel/softirq.c Mon Sep 22 00:30:20 2003 @@ -9,8 +9,6 @@ #include #include #include -#include -#include #include #include #include diff -Nru a/kernel/sys.c b/kernel/sys.c --- a/kernel/sys.c Mon Sep 22 00:30:18 2003 +++ b/kernel/sys.c Mon Sep 22 00:30:18 2003 @@ -290,7 +290,7 @@ break; case PRIO_PGRP: if (!who) - who = current->pgrp; + who = process_group(current); for_each_task_pid(who, PIDTYPE_PGID, p, l, pid) error = set_one_prio(p, niceval, error); break; @@ -346,7 +346,7 @@ break; case PRIO_PGRP: if (!who) - who = current->pgrp; + who = process_group(current); for_each_task_pid(who, PIDTYPE_PGID, p, l, pid) { niceval = 20 - task_nice(p); if (niceval > retval) @@ -979,11 +979,12 @@ if (err) goto out; - if (p->pgrp != pgid) { + if (process_group(p) != pgid) { detach_pid(p, PIDTYPE_PGID); - p->pgrp = pgid; + p->group_leader->__pgrp = pgid; attach_pid(p, PIDTYPE_PGID, pgid); } + err = 0; out: /* All paths lead to here, thus we are safe. -DaveM */ @@ -994,7 +995,7 @@ asmlinkage long sys_getpgid(pid_t pid) { if (!pid) { - return current->pgrp; + return process_group(current); } else { int retval; struct task_struct *p; @@ -1006,7 +1007,7 @@ if (p) { retval = security_task_getpgid(p); if (!retval) - retval = p->pgrp; + retval = process_group(p); } read_unlock(&tasklist_lock); return retval; @@ -1016,7 +1017,7 @@ asmlinkage long sys_getpgrp(void) { /* SMP - assuming writes are word atomic this is fine */ - return current->pgrp; + return process_group(current); } asmlinkage long sys_getsid(pid_t pid) @@ -1059,7 +1060,7 @@ __set_special_pids(current->pid, current->pid); current->tty = NULL; current->tty_old_pgrp = 0; - err = current->pgrp; + err = process_group(current); out: write_unlock_irq(&tasklist_lock); return err; diff -Nru a/kernel/sysctl.c b/kernel/sysctl.c --- a/kernel/sysctl.c Mon Sep 22 00:30:18 2003 +++ b/kernel/sysctl.c Mon Sep 22 00:30:18 2003 @@ -643,7 +643,7 @@ .data = &dirty_writeback_centisecs, .maxlen = sizeof(dirty_writeback_centisecs), .mode = 0644, - .proc_handler = dirty_writeback_centisecs_handler, + .proc_handler = &dirty_writeback_centisecs_handler, }, { .ctl_name = VM_DIRTY_EXPIRE_CS, diff -Nru a/lib/inflate.c b/lib/inflate.c --- a/lib/inflate.c Mon Sep 22 00:30:21 2003 +++ b/lib/inflate.c Mon Sep 22 00:30:21 2003 @@ -871,7 +871,7 @@ { DEBG("dyn5b "); if (i == 1) { - error(" incomplete literal tree\n"); + error("incomplete literal tree"); huft_free(tl); } return i; /* incomplete code set */ @@ -882,7 +882,7 @@ { DEBG("dyn5d "); if (i == 1) { - error(" incomplete distance tree\n"); + error("incomplete distance tree"); #ifdef PKZIP_BUG_WORKAROUND i = 0; } @@ -1097,15 +1097,15 @@ flags = (uch)get_byte(); if ((flags & ENCRYPTED) != 0) { - error("Input is encrypted\n"); + error("Input is encrypted"); return -1; } if ((flags & CONTINUATION) != 0) { - error("Multi part input\n"); + error("Multi part input"); return -1; } if ((flags & RESERVED) != 0) { - error("Input has invalid flags\n"); + error("Input has invalid flags"); return -1; } (ulg)get_byte(); /* Get timestamp */ diff -Nru a/mm/fadvise.c b/mm/fadvise.c --- a/mm/fadvise.c Mon Sep 22 00:30:21 2003 +++ b/mm/fadvise.c Mon Sep 22 00:30:21 2003 @@ -20,7 +20,7 @@ * POSIX_FADV_WILLNEED could set PG_Referenced, and POSIX_FADV_NOREUSE could * deactivate the pages and clear PG_Referenced. */ -long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice) +asmlinkage long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice) { struct file *file = fget(fd); struct inode *inode; @@ -80,7 +80,7 @@ return ret; } -long sys_fadvise64(int fd, loff_t offset, size_t len, int advice) +asmlinkage long sys_fadvise64(int fd, loff_t offset, size_t len, int advice) { return sys_fadvise64_64(fd, offset, len, advice); } diff -Nru a/mm/filemap.c b/mm/filemap.c --- a/mm/filemap.c Mon Sep 22 00:30:20 2003 +++ b/mm/filemap.c Mon Sep 22 00:30:20 2003 @@ -1266,6 +1266,20 @@ page_cache_release(page); return err; } + } else { + /* + * If a nonlinear mapping then store the file page offset + * in the pte. + */ + unsigned long pgidx; + pgidx = (addr - vma->vm_start) >> PAGE_SHIFT; + pgidx += vma->vm_pgoff; + pgidx >>= PAGE_CACHE_SHIFT - PAGE_SHIFT; + if (pgoff != pgidx) { + err = install_file_pte(mm, vma, addr, pgoff, prot); + if (err) + return err; + } } len -= PAGE_SIZE; diff -Nru a/mm/fremap.c b/mm/fremap.c --- a/mm/fremap.c Mon Sep 22 00:30:18 2003 +++ b/mm/fremap.c Mon Sep 22 00:30:18 2003 @@ -61,6 +61,7 @@ pte_t *pte; pgd_t *pgd; pmd_t *pmd; + pte_t pte_val; struct pte_chain *pte_chain; pte_chain = pte_chain_alloc(GFP_KERNEL); @@ -83,10 +84,11 @@ flush_icache_page(vma, page); set_pte(pte, mk_pte(page, prot)); pte_chain = page_add_rmap(page, pte, pte_chain); + pte_val = *pte; pte_unmap(pte); if (flush) flush_tlb_page(vma, addr); - update_mmu_cache(vma, addr, *pte); + update_mmu_cache(vma, addr, pte_val); spin_unlock(&mm->page_table_lock); pte_chain_free(pte_chain); return 0; @@ -98,6 +100,47 @@ return err; } EXPORT_SYMBOL(install_page); + + +/* + * Install a file pte to a given virtual memory address, release any + * previously existing mapping. + */ +int install_file_pte(struct mm_struct *mm, struct vm_area_struct *vma, + unsigned long addr, unsigned long pgoff, pgprot_t prot) +{ + int err = -ENOMEM, flush; + pte_t *pte; + pgd_t *pgd; + pmd_t *pmd; + pte_t pte_val; + + pgd = pgd_offset(mm, addr); + spin_lock(&mm->page_table_lock); + + pmd = pmd_alloc(mm, pgd, addr); + if (!pmd) + goto err_unlock; + + pte = pte_alloc_map(mm, pmd, addr); + if (!pte) + goto err_unlock; + + flush = zap_pte(mm, vma, addr, pte); + + set_pte(pte, pgoff_to_pte(pgoff)); + pte_val = *pte; + pte_unmap(pte); + if (flush) + flush_tlb_page(vma, addr); + update_mmu_cache(vma, addr, pte_val); + spin_unlock(&mm->page_table_lock); + return 0; + +err_unlock: + spin_unlock(&mm->page_table_lock); + return err; +} /*** diff -Nru a/mm/memory.c b/mm/memory.c --- a/mm/memory.c Mon Sep 22 00:30:21 2003 +++ b/mm/memory.c Mon Sep 22 00:30:21 2003 @@ -1655,6 +1655,8 @@ len = (end+PAGE_SIZE-1)/PAGE_SIZE-addr/PAGE_SIZE; ret = get_user_pages(current, current->mm, addr, len, write, 0, NULL, NULL); + if (ret < 0) + return ret; return ret == len ? 0 : -1; } diff -Nru a/mm/mlock.c b/mm/mlock.c --- a/mm/mlock.c Mon Sep 22 00:30:18 2003 +++ b/mm/mlock.c Mon Sep 22 00:30:18 2003 @@ -13,21 +13,24 @@ unsigned long start, unsigned long end, unsigned int newflags) { struct mm_struct * mm = vma->vm_mm; - int pages, error; + int pages; + int ret = 0; if (newflags == vma->vm_flags) - return 0; + goto out; if (start != vma->vm_start) { - error = split_vma(mm, vma, start, 1); - if (error) - return -EAGAIN; + if (split_vma(mm, vma, start, 1)) { + ret = -EAGAIN; + goto out; + } } if (end != vma->vm_end) { - error = split_vma(mm, vma, end, 0); - if (error) - return -EAGAIN; + if (split_vma(mm, vma, end, 0)) { + ret = -EAGAIN; + goto out; + } } spin_lock(&mm->page_table_lock); @@ -40,11 +43,12 @@ pages = (end - start) >> PAGE_SHIFT; if (newflags & VM_LOCKED) { pages = -pages; - make_pages_present(start, end); + ret = make_pages_present(start, end); } vma->vm_mm->locked_vm -= pages; - return 0; +out: + return ret; } static int do_mlock(unsigned long start, size_t len, int on) diff -Nru a/mm/page-writeback.c b/mm/page-writeback.c --- a/mm/page-writeback.c Mon Sep 22 00:30:23 2003 +++ b/mm/page-writeback.c Mon Sep 22 00:30:23 2003 @@ -111,6 +111,7 @@ int unmapped_ratio; long background; long dirty; + struct task_struct *tsk; get_page_state(ps); @@ -129,7 +130,8 @@ background = (background_ratio * total_pages) / 100; dirty = (dirty_ratio * total_pages) / 100; - if (current->flags & PF_LESS_THROTTLE) { + tsk = current; + if (tsk->flags & PF_LESS_THROTTLE || rt_task(tsk)) { background += background / 4; dirty += dirty / 4; } @@ -144,7 +146,7 @@ * If we're over `background_thresh' then pdflush is woken to perform some * writeout. */ -void balance_dirty_pages(struct address_space *mapping) +static void balance_dirty_pages(struct address_space *mapping) { struct page_state ps; long nr_reclaimable; @@ -219,6 +221,10 @@ if (dirty_exceeded) ratelimit = 8; + /* + * Check the rate limiting. Also, we do not want to throttle real-time + * tasks in balance_dirty_pages(). Period. + */ if (get_cpu_var(ratelimits)++ >= ratelimit) { __get_cpu_var(ratelimits) = 0; put_cpu_var(ratelimits); diff -Nru a/mm/page_alloc.c b/mm/page_alloc.c --- a/mm/page_alloc.c Mon Sep 22 00:30:18 2003 +++ b/mm/page_alloc.c Mon Sep 22 00:30:18 2003 @@ -520,7 +520,8 @@ * * Herein lies the mysterious "incremental min". That's the * - * min += z->pages_low; + * local_low = z->pages_low; + * min += local_low; * * thing. The intent here is to provide additional protection to low zones for * allocation requests which _could_ use higher zones. So a GFP_HIGHMEM @@ -538,10 +539,11 @@ unsigned long min; struct zone **zones, *classzone; struct page *page; + struct reclaim_state reclaim_state; + struct task_struct *p = current; int i; int cold; int do_retry; - struct reclaim_state reclaim_state; might_sleep_if(wait); @@ -558,8 +560,17 @@ min = 1UL << order; for (i = 0; zones[i] != NULL; i++) { struct zone *z = zones[i]; + unsigned long local_low; + + /* + * This is the fabled 'incremental min'. We let real-time tasks + * dip their real-time paws a little deeper into reserves. + */ + local_low = z->pages_low; + if (rt_task(p)) + local_low >>= 1; + min += local_low; - min += z->pages_low; if (z->free_pages >= min || (!wait && z->free_pages >= z->pages_high)) { page = buffered_rmqueue(z, order, cold); @@ -582,6 +593,8 @@ local_min = z->pages_min; if (gfp_mask & __GFP_HIGH) local_min >>= 2; + if (rt_task(p)) + local_min >>= 1; min += local_min; if (z->free_pages >= min || (!wait && z->free_pages >= z->pages_high)) { @@ -595,7 +608,7 @@ /* here we're in the low on memory slow path */ rebalance: - if ((current->flags & (PF_MEMALLOC | PF_MEMDIE)) && !in_interrupt()) { + if ((p->flags & (PF_MEMALLOC | PF_MEMDIE)) && !in_interrupt()) { /* go through the zonelist yet again, ignoring mins */ for (i = 0; zones[i] != NULL; i++) { struct zone *z = zones[i]; @@ -611,14 +624,14 @@ if (!wait) goto nopage; - current->flags |= PF_MEMALLOC; + p->flags |= PF_MEMALLOC; reclaim_state.reclaimed_slab = 0; - current->reclaim_state = &reclaim_state; + p->reclaim_state = &reclaim_state; try_to_free_pages(classzone, gfp_mask, order); - current->reclaim_state = NULL; - current->flags &= ~PF_MEMALLOC; + p->reclaim_state = NULL; + p->flags &= ~PF_MEMALLOC; /* go through the zonelist yet one more time */ min = 1UL << order; @@ -658,7 +671,7 @@ if (!(gfp_mask & __GFP_NOWARN)) { printk("%s: page allocation failure." " order:%d, mode:0x%x\n", - current->comm, order, gfp_mask); + p->comm, order, gfp_mask); } return NULL; got_pg: diff -Nru a/mm/shmem.c b/mm/shmem.c --- a/mm/shmem.c Mon Sep 22 00:30:21 2003 +++ b/mm/shmem.c Mon Sep 22 00:30:21 2003 @@ -984,7 +984,22 @@ page_cache_release(page); return err; } + } else if (nonblock) { + /* + * If a nonlinear mapping then store the file page + * offset in the pte. + */ + unsigned long pgidx; + pgidx = (addr - vma->vm_start) >> PAGE_SHIFT; + pgidx += vma->vm_pgoff; + pgidx >>= PAGE_CACHE_SHIFT - PAGE_SHIFT; + if (pgoff != pgidx) { + err = install_file_pte(mm, vma, addr, pgoff, prot); + if (err) + return err; + } } + len -= PAGE_SIZE; addr += PAGE_SIZE; pgoff++; diff -Nru a/mm/slab.c b/mm/slab.c --- a/mm/slab.c Mon Sep 22 00:30:23 2003 +++ b/mm/slab.c Mon Sep 22 00:30:23 2003 @@ -293,6 +293,10 @@ atomic_t freehit; atomic_t freemiss; #endif +#if DEBUG + int dbghead; + int reallen; +#endif }; #define CFLGS_OFF_SLAB (0x80000000UL) @@ -356,32 +360,68 @@ #define POISON_AFTER 0x6b /* for use-after-free poisoning */ #define POISON_END 0xa5 /* end-byte of poisoning */ +/* memory layout of objects: + * 0 : objp + * 0 .. cachep->dbghead - BYTES_PER_WORD - 1: padding. This ensures that + * the end of an object is aligned with the end of the real + * allocation. Catches writes behind the end of the allocation. + * cachep->dbghead - BYTES_PER_WORD .. cachep->dbghead - 1: + * redzone word. + * cachep->dbghead: The real object. + * cachep->objsize - 2* BYTES_PER_WORD: redzone word [BYTES_PER_WORD long] + * cachep->objsize - 1* BYTES_PER_WORD: last caller address [BYTES_PER_WORD long] + */ static inline int obj_dbghead(kmem_cache_t *cachep) { - if (cachep->flags & SLAB_RED_ZONE) - return BYTES_PER_WORD; - return 0; + return cachep->dbghead; } -static inline int obj_dbglen(kmem_cache_t *cachep) +static inline int obj_reallen(kmem_cache_t *cachep) { - int len = 0; + return cachep->reallen; +} - if (cachep->flags & SLAB_RED_ZONE) { - len += 2*BYTES_PER_WORD; - } - if (cachep->flags & SLAB_STORE_USER) { - len += BYTES_PER_WORD; - } - return len; +static unsigned long *dbg_redzone1(kmem_cache_t *cachep, void *objp) +{ + BUG_ON(!(cachep->flags & SLAB_RED_ZONE)); + return (unsigned long*) (objp+obj_dbghead(cachep)-BYTES_PER_WORD); +} + +static unsigned long *dbg_redzone2(kmem_cache_t *cachep, void *objp) +{ + BUG_ON(!(cachep->flags & SLAB_RED_ZONE)); + if (cachep->flags & SLAB_STORE_USER) + return (unsigned long*) (objp+cachep->objsize-2*BYTES_PER_WORD); + return (unsigned long*) (objp+cachep->objsize-BYTES_PER_WORD); +} + +static void **dbg_userword(kmem_cache_t *cachep, void *objp) +{ + BUG_ON(!(cachep->flags & SLAB_STORE_USER)); + return (void**)(objp+cachep->objsize-BYTES_PER_WORD); } #else static inline int obj_dbghead(kmem_cache_t *cachep) { return 0; } -static inline int obj_dbglen(kmem_cache_t *cachep) +static inline int obj_reallen(kmem_cache_t *cachep) +{ + return cachep->objsize; +} +static inline unsigned long *dbg_redzone1(kmem_cache_t *cachep, void *objp) +{ + BUG(); + return 0; +} +static inline unsigned long *dbg_redzone2(kmem_cache_t *cachep, void *objp) +{ + BUG(); + return 0; +} +static inline void **dbg_userword(kmem_cache_t *cachep, void *objp) { + BUG(); return 0; } #endif @@ -804,7 +844,7 @@ #ifdef CONFIG_DEBUG_PAGEALLOC static void store_stackinfo(kmem_cache_t *cachep, unsigned long *addr, unsigned long caller) { - int size = cachep->objsize-obj_dbglen(cachep); + int size = obj_reallen(cachep); addr = (unsigned long *)&((char*)addr)[obj_dbghead(cachep)]; @@ -836,7 +876,7 @@ static void poison_obj(kmem_cache_t *cachep, void *addr, unsigned char val) { - int size = cachep->objsize-obj_dbglen(cachep); + int size = obj_reallen(cachep); addr = &((char*)addr)[obj_dbghead(cachep)]; memset(addr, val, size); @@ -858,47 +898,42 @@ return NULL; } -static void check_poison_obj(kmem_cache_t *cachep, void *addr) +static void check_poison_obj(kmem_cache_t *cachep, void *objp) { void *end; - int size = cachep->objsize-obj_dbglen(cachep); + void *realobj; + int size = obj_reallen(cachep); - addr = &((char*)addr)[obj_dbghead(cachep)]; + realobj = objp+obj_dbghead(cachep); - end = scan_poisoned_obj(addr, size); + end = scan_poisoned_obj(realobj, size); if (end) { int s; printk(KERN_ERR "Slab corruption: start=%p, expend=%p, " - "problemat=%p\n", addr, addr+size-1, end); + "problemat=%p\n", realobj, realobj+size-1, end); if (cachep->flags & SLAB_STORE_USER) { - void *pc; - - if (cachep->flags & SLAB_RED_ZONE) - pc = *(void**)(addr+size+BYTES_PER_WORD); - else - pc = *(void**)(addr+size); - printk(KERN_ERR "Last user: [<%p>]", pc); - print_symbol("(%s)", (unsigned long)pc); + printk(KERN_ERR "Last user: [<%p>]", *dbg_userword(cachep, objp)); + print_symbol("(%s)", (unsigned long)*dbg_userword(cachep, objp)); printk("\n"); } printk(KERN_ERR "Data: "); for (s = 0; s < size; s++) { - if (((char*)addr)[s] == POISON_BEFORE) + if (((char*)realobj)[s] == POISON_BEFORE) printk("."); - else if (((char*)addr)[s] == POISON_AFTER) + else if (((char*)realobj)[s] == POISON_AFTER) printk("*"); else - printk("%02X ", ((unsigned char*)addr)[s]); + printk("%02X ", ((unsigned char*)realobj)[s]); } printk("\n"); printk(KERN_ERR "Next: "); for (; s < size + 32; s++) { - if (((char*)addr)[s] == POISON_BEFORE) + if (((char*)realobj)[s] == POISON_BEFORE) printk("."); - else if (((char*)addr)[s] == POISON_AFTER) + else if (((char*)realobj)[s] == POISON_AFTER) printk("*"); else - printk("%02X ", ((unsigned char*)addr)[s]); + printk("%02X ", ((unsigned char*)realobj)[s]); } printk("\n"); slab_error(cachep, "object was modified after freeing"); @@ -916,7 +951,6 @@ int i; for (i = 0; i < cachep->num; i++) { void *objp = slabp->s_mem + cachep->objsize * i; - int objlen = cachep->objsize; if (cachep->flags & SLAB_POISON) { #ifdef CONFIG_DEBUG_PAGEALLOC @@ -928,21 +962,16 @@ check_poison_obj(cachep, objp); #endif } - if (cachep->flags & SLAB_STORE_USER) - objlen -= BYTES_PER_WORD; - if (cachep->flags & SLAB_RED_ZONE) { - if (*((unsigned long*)(objp)) != RED_INACTIVE) + if (*dbg_redzone1(cachep, objp) != RED_INACTIVE) slab_error(cachep, "start of a freed object " "was overwritten"); - if (*((unsigned long*)(objp + objlen - BYTES_PER_WORD)) - != RED_INACTIVE) + if (*dbg_redzone2(cachep, objp) != RED_INACTIVE) slab_error(cachep, "end of a freed object " "was overwritten"); - objp += BYTES_PER_WORD; } if (cachep->dtor && !(cachep->flags & SLAB_POISON)) - (cachep->dtor)(objp, cachep, 0); + (cachep->dtor)(objp+obj_dbghead(cachep), cachep, 0); } #else if (cachep->dtor) { @@ -1020,10 +1049,6 @@ } #if FORCED_DEBUG -#ifdef CONFIG_DEBUG_PAGEALLOC - if (size < PAGE_SIZE-3*BYTES_PER_WORD && size > 128) - size = PAGE_SIZE-3*BYTES_PER_WORD; -#endif /* * Enable redzoning and last user accounting, except * - for caches with forced alignment: redzoning would violate the @@ -1054,6 +1079,9 @@ goto opps; memset(cachep, 0, sizeof(kmem_cache_t)); +#if DEBUG + cachep->reallen = size; +#endif /* Check that size is in terms of words. This is needed to avoid * unaligned accesses for some archs when redzoning is used, and makes * sure any on-slab bufctl's are also correctly aligned. @@ -1071,13 +1099,21 @@ * when redzoning. */ flags &= ~SLAB_HWCACHE_ALIGN; - size += 2*BYTES_PER_WORD; /* words for redzone */ + /* add space for red zone words */ + cachep->dbghead += BYTES_PER_WORD; + size += 2*BYTES_PER_WORD; } if (flags & SLAB_STORE_USER) { flags &= ~SLAB_HWCACHE_ALIGN; - size += BYTES_PER_WORD; /* word for kfree caller address */ + size += BYTES_PER_WORD; /* add space */ + } +#if FORCED_DEBUG && defined(CONFIG_DEBUG_PAGEALLOC) + if (size > 128 && cachep->reallen > L1_CACHE_BYTES && size < PAGE_SIZE) { + cachep->dbghead += PAGE_SIZE - size; + size = PAGE_SIZE; } #endif +#endif align = BYTES_PER_WORD; if (flags & SLAB_HWCACHE_ALIGN) align = L1_CACHE_BYTES; @@ -1444,20 +1480,15 @@ for (i = 0; i < cachep->num; i++) { void* objp = slabp->s_mem+cachep->objsize*i; #if DEBUG - int objlen = cachep->objsize; /* need to poison the objs? */ if (cachep->flags & SLAB_POISON) poison_obj(cachep, objp, POISON_BEFORE); - if (cachep->flags & SLAB_STORE_USER) { - objlen -= BYTES_PER_WORD; - ((unsigned long*)(objp+objlen))[0] = 0; - } + if (cachep->flags & SLAB_STORE_USER) + *dbg_userword(cachep, objp) = NULL; if (cachep->flags & SLAB_RED_ZONE) { - *((unsigned long*)(objp)) = RED_INACTIVE; - objp += BYTES_PER_WORD; - objlen -= 2* BYTES_PER_WORD; - *((unsigned long*)(objp + objlen)) = RED_INACTIVE; + *dbg_redzone1(cachep, objp) = RED_INACTIVE; + *dbg_redzone2(cachep, objp) = RED_INACTIVE; } /* * Constructors are not allowed to allocate memory from @@ -1465,14 +1496,13 @@ * Otherwise, deadlock. They must also be threaded. */ if (cachep->ctor && !(cachep->flags & SLAB_POISON)) - cachep->ctor(objp, cachep, ctor_flags); + cachep->ctor(objp+obj_dbghead(cachep), cachep, ctor_flags); if (cachep->flags & SLAB_RED_ZONE) { - if (*((unsigned long*)(objp + objlen)) != RED_INACTIVE) + if (*dbg_redzone2(cachep, objp) != RED_INACTIVE) slab_error(cachep, "constructor overwrote the" " end of an object"); - objp -= BYTES_PER_WORD; - if (*((unsigned long*)(objp)) != RED_INACTIVE) + if (*dbg_redzone1(cachep, objp) != RED_INACTIVE) slab_error(cachep, "constructor overwrote the" " start of an object"); } @@ -1623,9 +1653,9 @@ #if DEBUG struct page *page; unsigned int objnr; - int objlen = cachep->objsize; struct slab *slabp; + objp -= obj_dbghead(cachep); kfree_debugcheck(objp); page = virt_to_page(objp); @@ -1638,21 +1668,18 @@ } slabp = GET_PAGE_SLAB(page); - if (cachep->flags & SLAB_STORE_USER) { - objlen -= BYTES_PER_WORD; - } if (cachep->flags & SLAB_RED_ZONE) { - objp -= BYTES_PER_WORD; - if (xchg((unsigned long *)objp, RED_INACTIVE) != RED_ACTIVE) - slab_error(cachep, "double free, or memory before" - " object was overwritten"); - if (xchg((unsigned long *)(objp+objlen-BYTES_PER_WORD), RED_INACTIVE) != RED_ACTIVE) - slab_error(cachep, "double free, or memory after " + if (*dbg_redzone1(cachep, objp) != RED_ACTIVE || *dbg_redzone2(cachep, objp) != RED_ACTIVE) { + slab_error(cachep, "double free, or memory outside" " object was overwritten"); + printk(KERN_ERR "%p: redzone 1: 0x%lx, redzone 2: 0x%lx.\n", + objp, *dbg_redzone1(cachep, objp), *dbg_redzone2(cachep, objp)); + } + *dbg_redzone1(cachep, objp) = RED_INACTIVE; + *dbg_redzone2(cachep, objp) = RED_INACTIVE; } - if (cachep->flags & SLAB_STORE_USER) { - *((void**)(objp+objlen)) = caller; - } + if (cachep->flags & SLAB_STORE_USER) + *dbg_userword(cachep, objp) = caller; objnr = (objp-slabp->s_mem)/cachep->objsize; @@ -1825,8 +1852,6 @@ unsigned long flags, void *objp, void *caller) { #if DEBUG - int objlen = cachep->objsize; - if (!objp) return objp; if (cachep->flags & SLAB_POISON) { @@ -1840,24 +1865,20 @@ #endif poison_obj(cachep, objp, POISON_BEFORE); } - if (cachep->flags & SLAB_STORE_USER) { - objlen -= BYTES_PER_WORD; - *((void **)(objp+objlen)) = caller; - } + if (cachep->flags & SLAB_STORE_USER) + *dbg_userword(cachep, objp) = caller; if (cachep->flags & SLAB_RED_ZONE) { - /* Set alloc red-zone, and check old one. */ - if (xchg((unsigned long *)objp, RED_ACTIVE) != RED_INACTIVE) { - slab_error(cachep, "memory before object was " - "overwritten"); - } - if (xchg((unsigned long *)(objp+objlen - BYTES_PER_WORD), - RED_ACTIVE) != RED_INACTIVE) { - slab_error(cachep, "memory after object was " - "overwritten"); + if (*dbg_redzone1(cachep, objp) != RED_INACTIVE || *dbg_redzone2(cachep, objp) != RED_INACTIVE) { + slab_error(cachep, "double free, or memory outside" + " object was overwritten"); + printk(KERN_ERR "%p: redzone 1: 0x%lx, redzone 2: 0x%lx.\n", + objp, *dbg_redzone1(cachep, objp), *dbg_redzone2(cachep, objp)); } - objp += BYTES_PER_WORD; + *dbg_redzone1(cachep, objp) = RED_ACTIVE; + *dbg_redzone2(cachep, objp) = RED_ACTIVE; } + objp += obj_dbghead(cachep); if (cachep->ctor && cachep->flags & SLAB_POISON) { unsigned long ctor_flags = SLAB_CTOR_CONSTRUCTOR; @@ -2175,7 +2196,7 @@ unsigned int kmem_cache_size(kmem_cache_t *cachep) { - return cachep->objsize-obj_dbglen(cachep); + return obj_reallen(cachep); } kmem_cache_t * kmem_find_general_cachep (size_t size, int gfpflags) @@ -2763,12 +2784,17 @@ if (objnr >= c->num) { printk("Bad obj number.\n"); } else { - kernel_map_pages(virt_to_page(objp), c->objsize/PAGE_SIZE, 1); + kernel_map_pages(virt_to_page(objp), + c->objsize/PAGE_SIZE, 1); - printk("redzone: %lxh/%lxh/%lxh.\n", - ((unsigned long*)objp)[0], - ((unsigned long*)(objp+c->objsize))[-2], - ((unsigned long*)(objp+c->objsize))[-1]); + if (c->flags & SLAB_RED_ZONE) + printk("redzone: 0x%lx/0x%lx.\n", + *dbg_redzone1(c, objp), + *dbg_redzone2(c, objp)); + + if (c->flags & SLAB_STORE_USER) + printk("Last user: %p.\n", + *dbg_userword(c, objp)); } spin_unlock_irqrestore(&c->spinlock, flags); diff -Nru a/net/802/p8022.c b/net/802/p8022.c --- a/net/802/p8022.c Mon Sep 22 00:30:19 2003 +++ b/net/802/p8022.c Mon Sep 22 00:30:19 2003 @@ -22,8 +22,8 @@ #include #include #include +#include #include -#include static int p8022_request(struct datalink_proto *dl, struct sk_buff *skb, unsigned char *dest) diff -Nru a/net/802/psnap.c b/net/802/psnap.c --- a/net/802/psnap.c Mon Sep 22 00:30:25 2003 +++ b/net/802/psnap.c Mon Sep 22 00:30:25 2003 @@ -15,9 +15,8 @@ #include #include #include +#include #include -#include -#include #include #include #include diff -Nru a/net/802/tr.c b/net/802/tr.c --- a/net/802/tr.c Mon Sep 22 00:30:18 2003 +++ b/net/802/tr.c Mon Sep 22 00:30:18 2003 @@ -464,8 +464,6 @@ */ #ifdef CONFIG_PROC_FS -/* Magic token to indicate first entry (header line) */ -#define RIF_PROC_START ((void *)1) static struct rif_cache_s *rif_get_idx(loff_t pos) { @@ -487,7 +485,7 @@ { spin_lock_bh(&rif_lock); - return *pos ? rif_get_idx(*pos - 1) : RIF_PROC_START; + return *pos ? rif_get_idx(*pos - 1) : SEQ_START_TOKEN; } static void *rif_seq_next(struct seq_file *seq, void *v, loff_t *pos) @@ -497,7 +495,7 @@ ++*pos; - if (v == RIF_PROC_START) { + if (v == SEQ_START_TOKEN) { i = -1; goto scan; } @@ -524,7 +522,7 @@ int j, rcf_len, segment, brdgnmb; struct rif_cache_s *entry = v; - if (v == RIF_PROC_START) + if (v == SEQ_START_TOKEN) seq_puts(seq, "if TR address TTL rcf routing segments\n"); else { diff -Nru a/net/8021q/vlanproc.c b/net/8021q/vlanproc.c --- a/net/8021q/vlanproc.c Mon Sep 22 00:30:20 2003 +++ b/net/8021q/vlanproc.c Mon Sep 22 00:30:20 2003 @@ -46,10 +46,6 @@ static void vlan_seq_stop(struct seq_file *seq, void *); static int vlandev_seq_show(struct seq_file *seq, void *v); -/* Miscellaneous */ -#define SEQ_START_TOKEN ((void *) 1) - - /* * Global Data */ diff -Nru a/net/Kconfig b/net/Kconfig --- a/net/Kconfig Mon Sep 22 00:30:18 2003 +++ b/net/Kconfig Mon Sep 22 00:30:18 2003 @@ -370,24 +370,11 @@ config VLAN_8021Q tristate "802.1Q VLAN Support" -config LLC - tristate "ANSI/IEEE 802.2 - aka LLC (IPX, Appletalk, Token Ring)" - help - This is a Logical Link Layer protocol used for Appletalk, IPX, - Token Ring devices, the linux-sna.org project and in the future by - NetBEUI. It originally came from Procom Inc. that released the code - for 2.0.36 and was heavily modified to work with 2.{4,5}. - Select this if you want to have support for those protocols or if - you want to have the sockets interface for LLC. - - -config LLC_UI - bool "LLC sockets interface" - depends on LLC +source "net/llc/Kconfig" config IPX tristate "The IPX protocol" - depends on LLC + select LLC ---help--- This is support for the Novell networking protocol, IPX, commonly used for local networks of Windows machines. You need it if you @@ -424,7 +411,7 @@ config ATALK tristate "Appletalk protocol support" - depends on LLC + select LLC ---help--- AppleTalk is the protocol that Apple computers can use to communicate on a network. If your Linux box is connected to such a network and you @@ -479,9 +466,8 @@ using the X.21 protocol (not yet supported by Linux) or one can do X.25 over a standard telephone line using an ordinary modem (say Y to "X.25 async driver" below) or over Ethernet using an ordinary - Ethernet card and either the 802.2 LLC protocol (say Y to "802.2 - LLC" below) or LAPB over Ethernet (say Y to "LAPB Data Link Driver" - and "LAPB over Ethernet driver" below). + Ethernet card and the LAPB over Ethernet (say Y to "LAPB Data Link + Driver" and "LAPB over Ethernet driver" below). 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), diff -Nru a/net/appletalk/aarp.c b/net/appletalk/aarp.c --- a/net/appletalk/aarp.c Mon Sep 22 00:30:24 2003 +++ b/net/appletalk/aarp.c Mon Sep 22 00:30:24 2003 @@ -941,7 +941,7 @@ iter->table = resolved; iter->bucket = 0; - return *pos ? iter_next(iter, pos) : ((void *)1); + return *pos ? iter_next(iter, pos) : SEQ_START_TOKEN; } static void *aarp_seq_next(struct seq_file *seq, void *v, loff_t *pos) @@ -952,7 +952,7 @@ ++*pos; /* first line after header */ - if (v == ((void *)1)) + if (v == SEQ_START_TOKEN) entry = iter_next(iter, NULL); /* next entry in current bucket */ @@ -987,7 +987,7 @@ struct aarp_entry *entry = v; unsigned long now = jiffies; - if (v == ((void *)1)) + if (v == SEQ_START_TOKEN) seq_puts(seq, "Address Interface Hardware Address" " Expires LastSend Retry Status\n"); diff -Nru a/net/appletalk/atalk_proc.c b/net/appletalk/atalk_proc.c --- a/net/appletalk/atalk_proc.c Mon Sep 22 00:30:24 2003 +++ b/net/appletalk/atalk_proc.c Mon Sep 22 00:30:24 2003 @@ -33,7 +33,7 @@ loff_t l = *pos; read_lock_bh(&atalk_interfaces_lock); - return l ? atalk_get_interface_idx(--l) : (void *)1; + return l ? atalk_get_interface_idx(--l) : SEQ_START_TOKEN; } static void *atalk_seq_interface_next(struct seq_file *seq, void *v, loff_t *pos) @@ -41,7 +41,7 @@ struct atalk_iface *i; ++*pos; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { i = NULL; if (atalk_interfaces) i = atalk_interfaces; @@ -62,7 +62,7 @@ { struct atalk_iface *iface; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(seq, "Interface Address Networks " "Status\n"); goto out; @@ -92,7 +92,7 @@ loff_t l = *pos; read_lock_bh(&atalk_routes_lock); - return l ? atalk_get_route_idx(--l) : (void *)1; + return l ? atalk_get_route_idx(--l) : SEQ_START_TOKEN; } static void *atalk_seq_route_next(struct seq_file *seq, void *v, loff_t *pos) @@ -100,7 +100,7 @@ struct atalk_route *r; ++*pos; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { r = NULL; if (atalk_routes) r = atalk_routes; @@ -121,7 +121,7 @@ { struct atalk_route *rt; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(seq, "Target Router Flags Dev\n"); goto out; } @@ -160,7 +160,7 @@ loff_t l = *pos; read_lock_bh(&atalk_sockets_lock); - return l ? atalk_get_socket_idx(--l) : (void *)1; + return l ? atalk_get_socket_idx(--l) : SEQ_START_TOKEN; } static void *atalk_seq_socket_next(struct seq_file *seq, void *v, loff_t *pos) @@ -168,7 +168,7 @@ struct sock *i; ++*pos; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { i = sk_head(&atalk_sockets); goto out; } @@ -187,7 +187,7 @@ struct sock *s; struct atalk_sock *at; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_printf(seq, "Type Local_addr Remote_addr Tx_queue " "Rx_queue St UID\n"); goto out; diff -Nru a/net/atm/br2684.c b/net/atm/br2684.c --- a/net/atm/br2684.c Mon Sep 22 00:30:21 2003 +++ b/net/atm/br2684.c Mon Sep 22 00:30:21 2003 @@ -732,9 +732,10 @@ #ifdef CONFIG_ATM_BR2684_IPFILTER #define b1(var, byte) ((u8 *) &brvcc->filter.var)[byte] #define bs(var) b1(var, 0), b1(var, 1), b1(var, 2), b1(var, 3) - if (brvcc->filter.netmask != 0 && pos-- == 0) - return sprintf(buf, " filter=%d.%d.%d.%d/" - "%d.%d.%d.%d\n", bs(prefix), bs(netmask)); + if (brvcc->filter.netmask != 0) + seq_printf(seq, " filter=%d.%d.%d.%d/" + "%d.%d.%d.%d\n", + bs(prefix), bs(netmask)); #undef bs #undef b1 #endif /* CONFIG_ATM_BR2684_IPFILTER */ diff -Nru a/net/atm/clip.c b/net/atm/clip.c --- a/net/atm/clip.c Mon Sep 22 00:30:25 2003 +++ b/net/atm/clip.c Mon Sep 22 00:30:25 2003 @@ -93,6 +93,7 @@ printk(KERN_CRIT "!clip_vcc->entry (clip_vcc %p)\n",clip_vcc); return; } + spin_lock_bh(&entry->neigh->dev->xmit_lock); /* block clip_start_xmit() */ entry->neigh->used = jiffies; for (walk = &entry->vccs; *walk; walk = &(*walk)->next) if (*walk == clip_vcc) { @@ -102,17 +103,20 @@ clip_vcc->entry = NULL; if (clip_vcc->xoff) netif_wake_queue(entry->neigh->dev); - if (entry->vccs) return; + if (entry->vccs) + goto out; entry->expires = jiffies-1; /* force resolution or expiration */ error = neigh_update(entry->neigh,NULL,NUD_NONE,0,0); if (error) printk(KERN_CRIT "unlink_clip_vcc: " "neigh_update failed with %d\n",error); - return; + goto out; } printk(KERN_CRIT "ATMARP: unlink_clip_vcc failed (entry %p, vcc " "0x%p)\n",entry,clip_vcc); +out: + spin_unlock_bh(&entry->neigh->dev->xmit_lock); } @@ -189,6 +193,13 @@ return 0; } +static const unsigned char llc_oui[] = { + 0xaa, /* DSAP: non-ISO */ + 0xaa, /* SSAP: non-ISO */ + 0x03, /* Ctrl: Unnumbered Information Command PDU */ + 0x00, /* OUI: EtherType */ + 0x00, + 0x00 }; static void clip_push(struct atm_vcc *vcc,struct sk_buff *skb) { diff -Nru a/net/atm/ipcommon.c b/net/atm/ipcommon.c --- a/net/atm/ipcommon.c Mon Sep 22 00:30:20 2003 +++ b/net/atm/ipcommon.c Mon Sep 22 00:30:20 2003 @@ -22,15 +22,6 @@ #endif -const unsigned char llc_oui[] = { - 0xaa, /* DSAP: non-ISO */ - 0xaa, /* SSAP: non-ISO */ - 0x03, /* Ctrl: Unnumbered Information Command PDU */ - 0x00, /* OUI: EtherType */ - 0x00, - 0x00 }; - - /* * skb_migrate appends the list at "from" to "to", emptying "from" in the * process. skb_migrate is atomic with respect to all other skb operations on @@ -67,5 +58,4 @@ } -EXPORT_SYMBOL(llc_oui); EXPORT_SYMBOL(skb_migrate); diff -Nru a/net/atm/proc.c b/net/atm/proc.c --- a/net/atm/proc.c Mon Sep 22 00:30:20 2003 +++ b/net/atm/proc.c Mon Sep 22 00:30:20 2003 @@ -1,21 +1,13 @@ -/* net/atm/proc.c - ATM /proc interface */ - -/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */ - -/* - * The mechanism used here isn't designed for speed but rather for convenience - * of implementation. We only return one entry per read system call, so we can - * be reasonably sure not to overrun the page and race conditions may lead to - * the addition or omission of some lines but never to any corruption of a - * line's internal structure. +/* net/atm/proc.c - ATM /proc interface + * + * Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA * - * Making the whole thing slightly more efficient is left as an exercise to the - * reader. (Suggestions: wrapper which loops to get several entries per system - * call; or make --left slightly more clever to avoid O(n^2) characteristics.) - * I find it fast enough on my unloaded 266 MHz Pentium 2 :-) + * seq_file api usage by romieu@fr.zoreil.com + * + * Evaluating the efficiency of the whole thing if left as an exercise to + * the reader. */ - #include #include /* for EXPORT_SYMBOL */ #include @@ -24,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -51,119 +44,202 @@ static ssize_t proc_dev_atm_read(struct file *file,char *buf,size_t count, loff_t *pos); -static ssize_t proc_spec_atm_read(struct file *file,char *buf,size_t count, - loff_t *pos); -static struct file_operations proc_dev_atm_operations = { +static struct file_operations proc_atm_dev_ops = { .owner = THIS_MODULE, .read = proc_dev_atm_read, }; -static struct file_operations proc_spec_atm_operations = { - .owner = THIS_MODULE, - .read = proc_spec_atm_read, -}; - -static void add_stats(char *buf,const char *aal, +static void add_stats(struct seq_file *seq, const char *aal, const struct k_atm_aal_stats *stats) { - sprintf(strchr(buf,0),"%s ( %d %d %d %d %d )",aal, + seq_printf(seq, "%s ( %d %d %d %d %d )", aal, atomic_read(&stats->tx),atomic_read(&stats->tx_err), atomic_read(&stats->rx),atomic_read(&stats->rx_err), atomic_read(&stats->rx_drop)); } - -static void atm_dev_info(const struct atm_dev *dev,char *buf) +static void atm_dev_info(struct seq_file *seq, const struct atm_dev *dev) { - int off,i; + int i; - off = sprintf(buf,"%3d %-8s",dev->number,dev->type); + seq_printf(seq, "%3d %-8s", dev->number, dev->type); for (i = 0; i < ESI_LEN; i++) - off += sprintf(buf+off,"%02x",dev->esi[i]); - strcat(buf," "); - add_stats(buf,"0",&dev->stats.aal0); - strcat(buf," "); - add_stats(buf,"5",&dev->stats.aal5); - sprintf(strchr(buf,0), "\t[%d]", atomic_read(&dev->refcnt)); - strcat(buf,"\n"); + seq_printf(seq, "%02x", dev->esi[i]); + seq_puts(seq, " "); + add_stats(seq, "0", &dev->stats.aal0); + seq_puts(seq, " "); + add_stats(seq, "5", &dev->stats.aal5); + seq_printf(seq, "\t[%d]", atomic_read(&dev->refcnt)); + seq_putc(seq, '\n'); } - #if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) - -static int svc_addr(char *buf,struct sockaddr_atmsvc *addr) +static void svc_addr(struct seq_file *seq, struct sockaddr_atmsvc *addr) { static int code[] = { 1,2,10,6,1,0 }; static int e164[] = { 1,8,4,6,1,0 }; - int *fields; - int len,i,j,pos; - len = 0; if (*addr->sas_addr.pub) { - strcpy(buf,addr->sas_addr.pub); - len = strlen(addr->sas_addr.pub); - buf += len; - if (*addr->sas_addr.prv) { - *buf++ = '+'; - len++; - } + seq_printf(seq, "%s", addr->sas_addr.pub); + if (*addr->sas_addr.prv) + seq_putc(seq, '+'); + } else if (!*addr->sas_addr.prv) { + seq_printf(seq, "%s", "(none)"); + return; } - else if (!*addr->sas_addr.prv) { - strcpy(buf,"(none)"); - return strlen(buf); - } if (*addr->sas_addr.prv) { - len += 44; - pos = 0; - fields = *addr->sas_addr.prv == ATM_AFI_E164 ? e164 : code; + unsigned char *prv = addr->sas_addr.prv; + int *fields; + int i, j; + + fields = *prv == ATM_AFI_E164 ? e164 : code; for (i = 0; fields[i]; i++) { - for (j = fields[i]; j; j--) { - sprintf(buf,"%02X",addr->sas_addr.prv[pos++]); - buf += 2; - } - if (fields[i+1]) *buf++ = '.'; + for (j = fields[i]; j; j--) + seq_printf(seq, "%02X", *prv++); + if (fields[i+1]) + seq_putc(seq, '.'); } } - return len; } - -static void atmarp_info(struct net_device *dev,struct atmarp_entry *entry, - struct clip_vcc *clip_vcc,char *buf) +static void atmarp_info(struct seq_file *seq, struct net_device *dev, + struct atmarp_entry *entry, struct clip_vcc *clip_vcc) { - unsigned char *ip; - int svc,off,ip_len; + char buf[17]; + int svc, off; svc = !clip_vcc || clip_vcc->vcc->sk->sk_family == AF_ATMSVC; - off = sprintf(buf,"%-6s%-4s%-4s%5ld ",dev->name,svc ? "SVC" : "PVC", + seq_printf(seq, "%-6s%-4s%-4s%5ld ", dev->name, svc ? "SVC" : "PVC", !clip_vcc || clip_vcc->encap ? "LLC" : "NULL", - (jiffies-(clip_vcc ? clip_vcc->last_use : entry->neigh->used))/ - HZ); - ip = (unsigned char *) &entry->ip; - ip_len = sprintf(buf+off,"%d.%d.%d.%d",ip[0],ip[1],ip[2],ip[3]); - off += ip_len; - while (ip_len++ < 16) buf[off++] = ' '; - if (!clip_vcc) + (jiffies-(clip_vcc ? clip_vcc->last_use : entry->neigh->used))/HZ); + + off = snprintf(buf, sizeof(buf) - 1, "%d.%d.%d.%d", NIPQUAD(entry->ip)); + while (off < 16) + buf[off++] = ' '; + buf[off] = '\0'; + seq_printf(seq, "%s", buf); + + if (!clip_vcc) { if (time_before(jiffies, entry->expires)) - strcpy(buf+off,"(resolving)\n"); - else sprintf(buf+off,"(expired, ref %d)\n", - atomic_read(&entry->neigh->refcnt)); - else if (!svc) - sprintf(buf+off,"%d.%d.%d\n",clip_vcc->vcc->dev->number, - clip_vcc->vcc->vpi,clip_vcc->vcc->vci); - else { - off += svc_addr(buf+off,&clip_vcc->vcc->remote); - strcpy(buf+off,"\n"); - } + seq_printf(seq, "(resolving)\n"); + else + seq_printf(seq, "(expired, ref %d)\n", + atomic_read(&entry->neigh->refcnt)); + } else if (!svc) { + seq_printf(seq, "%d.%d.%d\n", clip_vcc->vcc->dev->number, + clip_vcc->vcc->vpi, clip_vcc->vcc->vci); + } else { + svc_addr(seq, &clip_vcc->vcc->remote); + seq_putc(seq, '\n'); + } +} + +#endif /* CONFIG_ATM_CLIP */ + +struct vcc_state { + struct sock *sk; + int family; + int clip_info; +}; + +static inline int compare_family(struct sock *sk, int family) +{ + struct atm_vcc *vcc = atm_sk(sk); + + return !family || (vcc->sk->sk_family == family); +} + +static int __vcc_walk(struct sock **sock, int family, loff_t l) +{ + struct sock *sk = *sock; + + if (sk == (void *)1) { + sk = hlist_empty(&vcc_sklist) ? NULL : __sk_head(&vcc_sklist); + l--; + } + for (; sk; sk = sk_next(sk)) { + l -= compare_family(sk, family); + if (l < 0) + goto out; + } + sk = (void *)1; +out: + *sock = sk; + return (l < 0); +} + +static inline void *vcc_walk(struct vcc_state *state, loff_t l) +{ + return __vcc_walk(&state->sk, state->family, l) ? + state : NULL; +} + +static int __vcc_seq_open(struct inode *inode, struct file *file, + int family, struct seq_operations *ops) +{ + struct vcc_state *state; + struct seq_file *seq; + int rc = -ENOMEM; + + state = kmalloc(sizeof(*state), GFP_KERNEL); + if (!state) + goto out; + + rc = seq_open(file, ops); + if (rc) + goto out_kfree; + + state->family = family; + state->clip_info = try_atm_clip_ops(); + + seq = file->private_data; + seq->private = state; +out: + return rc; +out_kfree: + kfree(state); + goto out; } +static int vcc_seq_release(struct inode *inode, struct file *file) +{ +#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) + struct seq_file *seq = file->private_data; + struct vcc_state *state = seq->private; + if (state->clip_info) + module_put(atm_clip_ops->owner); #endif + return seq_release_private(inode, file); +} +static void *vcc_seq_start(struct seq_file *seq, loff_t *pos) +{ + struct vcc_state *state = seq->private; + loff_t left = *pos; -static void pvc_info(struct atm_vcc *vcc, char *buf, int clip_info) + read_lock(&vcc_sklist_lock); + state->sk = (void *)1; + return left ? vcc_walk(state, left) : (void *)1; +} + +static void vcc_seq_stop(struct seq_file *seq, void *v) +{ + read_unlock(&vcc_sklist_lock); +} + +static void *vcc_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + struct vcc_state *state = seq->private; + + v = vcc_walk(state, 1); + *pos += !!PTR_ERR(v); + return v; +} + +static void pvc_info(struct seq_file *seq, struct atm_vcc *vcc, int clip_info) { static const char *class_name[] = { "off","UBR","CBR","VBR","ABR" }; static const char *aal_name[] = { @@ -171,9 +247,8 @@ "???", "5", "???", "???", /* 4- 7 */ "???", "???", "???", "???", /* 8-11 */ "???", "0", "???", "???"}; /* 12-15 */ - int off; - off = sprintf(buf,"%3d %3d %5d %-3s %7d %-5s %7d %-6s", + seq_printf(seq, "%3d %3d %5d %-3s %7d %-5s %7d %-6s", vcc->dev->number,vcc->vpi,vcc->vci, vcc->qos.aal >= sizeof(aal_name)/sizeof(aal_name[0]) ? "err" : aal_name[vcc->qos.aal],vcc->qos.rxtp.min_pcr, @@ -185,18 +260,14 @@ struct net_device *dev; dev = clip_vcc->entry ? clip_vcc->entry->neigh->dev : NULL; - off += sprintf(buf+off,"CLIP, Itf:%s, Encap:", + seq_printf(seq, "CLIP, Itf:%s, Encap:", dev ? dev->name : "none?"); - if (clip_vcc->encap) - off += sprintf(buf+off,"LLC/SNAP"); - else - off += sprintf(buf+off,"None"); + seq_printf(seq, "%s", clip_vcc->encap ? "LLC/SNAP" : "None"); } #endif - strcpy(buf+off,"\n"); + seq_putc(seq, '\n'); } - static const char *vcc_state(struct atm_vcc *vcc) { static const char *map[] = { ATM_VS2TXT_MAP }; @@ -204,337 +275,592 @@ return map[ATM_VF2VS(vcc->flags)]; } - -static void vc_info(struct atm_vcc *vcc,char *buf) +static void vcc_info(struct seq_file *seq, struct atm_vcc *vcc) { - char *here; - - here = buf+sprintf(buf,"%p ",vcc); - if (!vcc->dev) here += sprintf(here,"Unassigned "); - else here += sprintf(here,"%3d %3d %5d ",vcc->dev->number,vcc->vpi, - vcc->vci); + seq_printf(seq, "%p ", vcc); + if (!vcc->dev) + seq_printf(seq, "Unassigned "); + else + seq_printf(seq, "%3d %3d %5d ", vcc->dev->number, vcc->vpi, + vcc->vci); switch (vcc->sk->sk_family) { case AF_ATMPVC: - here += sprintf(here,"PVC"); + seq_printf(seq, "PVC"); break; case AF_ATMSVC: - here += sprintf(here,"SVC"); + seq_printf(seq, "SVC"); break; default: - here += sprintf(here, "%3d", vcc->sk->sk_family); + seq_printf(seq, "%3d", vcc->sk->sk_family); } - here += sprintf(here," %04lx %5d %7d/%7d %7d/%7d\n",vcc->flags, - vcc->sk->sk_err, - atomic_read(&vcc->sk->sk_wmem_alloc), vcc->sk->sk_sndbuf, - atomic_read(&vcc->sk->sk_rmem_alloc), vcc->sk->sk_rcvbuf); + seq_printf(seq, " %04lx %5d %7d/%7d %7d/%7d\n", vcc->flags, vcc->sk->sk_err, + atomic_read(&vcc->sk->sk_wmem_alloc),vcc->sk->sk_sndbuf, + atomic_read(&vcc->sk->sk_rmem_alloc),vcc->sk->sk_rcvbuf); } - -static void svc_info(struct atm_vcc *vcc,char *buf) +static void svc_info(struct seq_file *seq, struct atm_vcc *vcc) { - char *here; - int i; - if (!vcc->dev) - sprintf(buf,sizeof(void *) == 4 ? "N/A@%p%10s" : "N/A@%p%2s", - vcc,""); - else sprintf(buf,"%3d %3d %5d ",vcc->dev->number,vcc->vpi, - vcc->vci); - here = strchr(buf,0); - here += sprintf(here,"%-10s ",vcc_state(vcc)); - here += sprintf(here,"%s%s",vcc->remote.sas_addr.pub, + seq_printf(seq, sizeof(void *) == 4 ? + "N/A@%p%10s" : "N/A@%p%2s", vcc, ""); + else + seq_printf(seq, "%3d %3d %5d ", + vcc->dev->number, vcc->vpi, vcc->vci); + seq_printf(seq, "%-10s ", vcc_state(vcc)); + seq_printf(seq, "%s%s", vcc->remote.sas_addr.pub, *vcc->remote.sas_addr.pub && *vcc->remote.sas_addr.prv ? "+" : ""); - if (*vcc->remote.sas_addr.prv) + if (*vcc->remote.sas_addr.prv) { + int i; + for (i = 0; i < ATM_ESA_LEN; i++) - here += sprintf(here,"%02x", - vcc->remote.sas_addr.prv[i]); - strcat(here,"\n"); + seq_printf(seq, "%02x", vcc->remote.sas_addr.prv[i]); + } + seq_putc(seq, '\n'); } - #if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE) -static char* -lec_arp_get_status_string(unsigned char status) +static char* lec_arp_get_status_string(unsigned char status) { - switch(status) { - case ESI_UNKNOWN: - return "ESI_UNKNOWN "; - case ESI_ARP_PENDING: - return "ESI_ARP_PENDING "; - case ESI_VC_PENDING: - return "ESI_VC_PENDING "; - case ESI_FLUSH_PENDING: - return "ESI_FLUSH_PENDING "; - case ESI_FORWARD_DIRECT: - return "ESI_FORWARD_DIRECT"; - default: - return " "; - } + static char *lec_arp_status_string[] = { + "ESI_UNKNOWN ", + "ESI_ARP_PENDING ", + "ESI_VC_PENDING ", + " ", + "ESI_FLUSH_PENDING ", + "ESI_FORWARD_DIRECT", + "" + }; + + if (status > ESI_FORWARD_DIRECT) + status = ESI_FORWARD_DIRECT + 1; + return lec_arp_status_string[status]; } -static void -lec_info(struct lec_arp_table *entry, char *buf) +static void lec_info(struct seq_file *seq, struct lec_arp_table *entry) { - int j, offset=0; + int i; - for(j=0;jmac_addr[j]); - } - offset+=sprintf(buf+offset, " "); - for(j=0;jatm_addr[j]); + for (i = 0; i < ETH_ALEN; i++) + seq_printf(seq, "%2.2x", entry->mac_addr[i] & 0xff); + seq_printf(seq, " "); + for (i = 0; i < ATM_ESA_LEN; i++) + seq_printf(seq, "%2.2x", entry->atm_addr[i] & 0xff); + seq_printf(seq, " %s %4.4x", lec_arp_get_status_string(entry->status), + entry->flags & 0xffff); + if (entry->vcc) + seq_printf(seq, "%3d %3d ", entry->vcc->vpi, entry->vcc->vci); + else + seq_printf(seq, " "); + if (entry->recv_vcc) { + seq_printf(seq, " %3d %3d", entry->recv_vcc->vpi, + entry->recv_vcc->vci); } - offset+=sprintf(buf+offset, " %s %4.4x", - lec_arp_get_status_string(entry->status), - entry->flags&0xffff); - if (entry->vcc) { - offset+=sprintf(buf+offset, "%3d %3d ", entry->vcc->vpi, - entry->vcc->vci); - } else - offset+=sprintf(buf+offset, " "); - if (entry->recv_vcc) { - offset+=sprintf(buf+offset, " %3d %3d", - entry->recv_vcc->vpi, entry->recv_vcc->vci); - } - - sprintf(buf+offset,"\n"); + seq_putc(seq, '\n'); } -#endif +#endif /* CONFIG_ATM_LANE */ -static int atm_devices_info(loff_t pos,char *buf) +static int atm_dev_seq_show(struct seq_file *seq, void *v) { - struct atm_dev *dev; - struct list_head *p; - int left; + static char atm_dev_banner[] = + "Itf Type ESI/\"MAC\"addr " + "AAL(TX,err,RX,err,drop) ... [refcnt]\n"; + + if (v == (void *)1) + seq_puts(seq, atm_dev_banner); + else { + struct atm_dev *dev = list_entry(v, struct atm_dev, dev_list); - if (!pos) { - return sprintf(buf,"Itf Type ESI/\"MAC\"addr " - "AAL(TX,err,RX,err,drop) ... [refcnt]\n"); - } - left = pos-1; - spin_lock(&atm_dev_lock); - list_for_each(p, &atm_devs) { - dev = list_entry(p, struct atm_dev, dev_list); - if (left-- == 0) { - atm_dev_info(dev,buf); - spin_unlock(&atm_dev_lock); - return strlen(buf); - } + atm_dev_info(seq, dev); + } + return 0; +} + +static struct seq_operations atm_dev_seq_ops = { + .start = atm_dev_seq_start, + .next = atm_dev_seq_next, + .stop = atm_dev_seq_stop, + .show = atm_dev_seq_show, +}; + +static int atm_dev_seq_open(struct inode *inode, struct file *file) +{ + return seq_open(file, &atm_dev_seq_ops); +} + +static struct file_operations devices_seq_fops = { + .open = atm_dev_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int pvc_seq_show(struct seq_file *seq, void *v) +{ + static char atm_pvc_banner[] = + "Itf VPI VCI AAL RX(PCR,Class) TX(PCR,Class)\n"; + + if (v == (void *)1) + seq_puts(seq, atm_pvc_banner); + else { + struct vcc_state *state = seq->private; + struct atm_vcc *vcc = atm_sk(state->sk); + + pvc_info(seq, vcc, state->clip_info); } - spin_unlock(&atm_dev_lock); return 0; } -/* - * FIXME: it isn't safe to walk the VCC list without turning off interrupts. - * What is really needed is some lock on the devices. Ditto for ATMARP. - */ +static struct seq_operations pvc_seq_ops = { + .start = vcc_seq_start, + .next = vcc_seq_next, + .stop = vcc_seq_stop, + .show = pvc_seq_show, +}; + +static int pvc_seq_open(struct inode *inode, struct file *file) +{ + return __vcc_seq_open(inode, file, PF_ATMPVC, &pvc_seq_ops); +} + +static struct file_operations pvc_seq_fops = { + .open = pvc_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = vcc_seq_release, +}; -static int atm_pvc_info(loff_t pos,char *buf) +static int vcc_seq_show(struct seq_file *seq, void *v) { - struct hlist_node *node; - struct sock *s; - struct atm_vcc *vcc; - int left, clip_info = 0; - - if (!pos) { - return sprintf(buf,"Itf VPI VCI AAL RX(PCR,Class) " - "TX(PCR,Class)\n"); + if (v == (void *)1) { + seq_printf(seq, sizeof(void *) == 4 ? "%-8s%s" : "%-16s%s", + "Address ", "Itf VPI VCI Fam Flags Reply " + "Send buffer Recv buffer\n"); + } else { + struct vcc_state *state = seq->private; + struct atm_vcc *vcc = atm_sk(state->sk); + + vcc_info(seq, vcc); + } + return 0; +} + +static struct seq_operations vcc_seq_ops = { + .start = vcc_seq_start, + .next = vcc_seq_next, + .stop = vcc_seq_stop, + .show = vcc_seq_show, +}; + +static int vcc_seq_open(struct inode *inode, struct file *file) +{ + return __vcc_seq_open(inode, file, 0, &vcc_seq_ops); +} + +static struct file_operations vcc_seq_fops = { + .open = vcc_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = vcc_seq_release, +}; + +static int svc_seq_show(struct seq_file *seq, void *v) +{ + static char atm_svc_banner[] = + "Itf VPI VCI State Remote\n"; + + if (v == (void *)1) + seq_puts(seq, atm_svc_banner); + else { + struct vcc_state *state = seq->private; + struct atm_vcc *vcc = atm_sk(state->sk); + + svc_info(seq, vcc); } - left = pos-1; -#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) - if (try_atm_clip_ops()) - clip_info = 1; -#endif - read_lock(&vcc_sklist_lock); - sk_for_each(s, node, &vcc_sklist) { - vcc = atm_sk(s); - if (vcc->sk->sk_family == PF_ATMPVC && vcc->dev && !left--) { - pvc_info(vcc,buf,clip_info); - read_unlock(&vcc_sklist_lock); + return 0; +} + +static struct seq_operations svc_seq_ops = { + .start = vcc_seq_start, + .next = vcc_seq_next, + .stop = vcc_seq_stop, + .show = svc_seq_show, +}; + +static int svc_seq_open(struct inode *inode, struct file *file) +{ + return __vcc_seq_open(inode, file, PF_ATMSVC, &svc_seq_ops); +} + +static struct file_operations svc_seq_fops = { + .open = svc_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = vcc_seq_release, +}; + #if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) - if (clip_info) - module_put(atm_clip_ops->owner); -#endif - return strlen(buf); - } + +struct arp_state { + int bucket; + struct neighbour *n; + struct clip_vcc *vcc; +}; + +static void *arp_vcc_walk(struct arp_state *state, + struct atmarp_entry *e, loff_t *l) +{ + struct clip_vcc *vcc = state->vcc; + + if (!vcc) + vcc = e->vccs; + if (vcc == (void *)1) { + vcc = e->vccs; + --*l; + } + for (; vcc; vcc = vcc->next) { + if (--*l < 0) + break; } - read_unlock(&vcc_sklist_lock); -#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) - if (clip_info) - module_put(atm_clip_ops->owner); -#endif - return 0; + state->vcc = vcc; + return (*l < 0) ? state : NULL; } + +static void *arp_get_idx(struct arp_state *state, loff_t l) +{ + void *v = NULL; + for (; state->bucket <= NEIGH_HASHMASK; state->bucket++) { + for (; state->n; state->n = state->n->next) { + v = arp_vcc_walk(state, NEIGH2ENTRY(state->n), &l); + if (v) + goto done; + } + state->n = clip_tbl_hook->hash_buckets[state->bucket + 1]; + } +done: + return v; +} -static int atm_vc_info(loff_t pos,char *buf) +static void *arp_seq_start(struct seq_file *seq, loff_t *pos) { - struct atm_vcc *vcc; - struct hlist_node *node; - struct sock *s; - int left; - - if (!pos) - return sprintf(buf,sizeof(void *) == 4 ? "%-8s%s" : "%-16s%s", - "Address"," Itf VPI VCI Fam Flags Reply Send buffer" - " Recv buffer\n"); - left = pos-1; - read_lock(&vcc_sklist_lock); - sk_for_each(s, node, &vcc_sklist) { - vcc = atm_sk(s); - if (!left--) { - vc_info(vcc,buf); - read_unlock(&vcc_sklist_lock); - return strlen(buf); - } + struct arp_state *state = seq->private; + void *ret = (void *)1; + + if (!clip_tbl_hook) { + state->bucket = -1; + goto out; } - read_unlock(&vcc_sklist_lock); - return 0; + read_lock_bh(&clip_tbl_hook->lock); + state->bucket = 0; + state->n = clip_tbl_hook->hash_buckets[0]; + state->vcc = (void *)1; + if (*pos) + ret = arp_get_idx(state, *pos); +out: + return ret; } +static void arp_seq_stop(struct seq_file *seq, void *v) +{ + struct arp_state *state = seq->private; -static int atm_svc_info(loff_t pos,char *buf) + if (state->bucket != -1) + read_unlock_bh(&clip_tbl_hook->lock); +} + +static void *arp_seq_next(struct seq_file *seq, void *v, loff_t *pos) { - struct hlist_node *node; - struct sock *s; - struct atm_vcc *vcc; - int left; - - if (!pos) - return sprintf(buf,"Itf VPI VCI State Remote\n"); - left = pos-1; - read_lock(&vcc_sklist_lock); - sk_for_each(s, node, &vcc_sklist) { - vcc = atm_sk(s); - if (vcc->sk->sk_family == PF_ATMSVC && !left--) { - svc_info(vcc,buf); - read_unlock(&vcc_sklist_lock); - return strlen(buf); - } - } - read_unlock(&vcc_sklist_lock); + struct arp_state *state = seq->private; - return 0; + v = arp_get_idx(state, 1); + *pos += !!PTR_ERR(v); + return v; } -#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) -static int atm_arp_info(loff_t pos,char *buf) +static int arp_seq_show(struct seq_file *seq, void *v) { - struct neighbour *n; - int i,count; + static char atm_arp_banner[] = + "IPitf TypeEncp Idle IP address ATM address\n"; + + if (v == (void *)1) + seq_puts(seq, atm_arp_banner); + else { + struct arp_state *state = seq->private; + struct neighbour *n = state->n; + struct clip_vcc *vcc = state->vcc; - if (!pos) { - return sprintf(buf,"IPitf TypeEncp Idle IP address " - "ATM address\n"); + atmarp_info(seq, n->dev, NEIGH2ENTRY(n), vcc); } + return 0; +} + +static struct seq_operations arp_seq_ops = { + .start = arp_seq_start, + .next = arp_seq_next, + .stop = arp_seq_stop, + .show = arp_seq_show, +}; + +static int arp_seq_open(struct inode *inode, struct file *file) +{ + struct arp_state *state; + struct seq_file *seq; + int rc = -EAGAIN; + if (!try_atm_clip_ops()) - return 0; - count = pos; - read_lock_bh(&clip_tbl_hook->lock); - for (i = 0; i <= NEIGH_HASHMASK; i++) - for (n = clip_tbl_hook->hash_buckets[i]; n; n = n->next) { - struct atmarp_entry *entry = NEIGH2ENTRY(n); - struct clip_vcc *vcc; - - if (!entry->vccs) { - if (--count) continue; - atmarp_info(n->dev,entry,NULL,buf); - read_unlock_bh(&clip_tbl_hook->lock); - module_put(atm_clip_ops->owner); - return strlen(buf); - } - for (vcc = entry->vccs; vcc; - vcc = vcc->next) { - if (--count) continue; - atmarp_info(n->dev,entry,vcc,buf); - read_unlock_bh(&clip_tbl_hook->lock); - module_put(atm_clip_ops->owner); - return strlen(buf); - } - } - read_unlock_bh(&clip_tbl_hook->lock); + goto out; + + state = kmalloc(sizeof(*state), GFP_KERNEL); + if (!state) { + rc = -ENOMEM; + goto out_put; + } + + rc = seq_open(file, &arp_seq_ops); + if (rc) + goto out_kfree; + + seq = file->private_data; + seq->private = state; +out: + return rc; + +out_put: module_put(atm_clip_ops->owner); - return 0; +out_kfree: + kfree(state); + goto out; } -#endif -#if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE) -static int atm_lec_info(loff_t pos,char *buf) +static int arp_seq_release(struct inode *inode, struct file *file) { + module_put(atm_clip_ops->owner); + return seq_release_private(inode, file); +} + +static struct file_operations arp_seq_fops = { + .open = arp_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = arp_seq_release, +}; + +#endif /* CONFIG_ATM_CLIP */ + +#if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE) + +struct lec_state { unsigned long flags; - struct lec_priv *priv; + struct lec_priv *locked; struct lec_arp_table *entry; - int i, count, d, e; struct net_device *dev; + int itf; + int arp_table; + int misc_table; +}; - if (!pos) { - return sprintf(buf,"Itf MAC ATM destination" - " Status Flags " - "VPI/VCI Recv VPI/VCI\n"); +static void *lec_tbl_walk(struct lec_state *state, struct lec_arp_table *tbl, + loff_t *l) +{ + struct lec_arp_table *e = state->entry; + + if (!e) + e = tbl; + if (e == (void *)1) { + e = tbl; + --*l; } - if (!try_atm_lane_ops()) - return 0; /* the lane module is not there yet */ + for (; e; e = e->next) { + if (--*l < 0) + break; + } + state->entry = e; + return (*l < 0) ? state : NULL; +} - count = pos; - for(d = 0; d < MAX_LEC_ITF; d++) { - dev = atm_lane_ops->get_lec(d); - if (!dev || !(priv = (struct lec_priv *) dev->priv)) - continue; - spin_lock_irqsave(&priv->lec_arp_lock, flags); - for(i = 0; i < LEC_ARP_TABLE_SIZE; i++) { - for(entry = priv->lec_arp_tables[i]; entry; entry = entry->next) { - if (--count) - continue; - e = sprintf(buf,"%s ", dev->name); - lec_info(entry, buf+e); - spin_unlock_irqrestore(&priv->lec_arp_lock, flags); - dev_put(dev); - module_put(atm_lane_ops->owner); - return strlen(buf); - } - } - for(entry = priv->lec_arp_empty_ones; entry; entry = entry->next) { - if (--count) - continue; - e = sprintf(buf,"%s ", dev->name); - lec_info(entry, buf+e); - spin_unlock_irqrestore(&priv->lec_arp_lock, flags); - dev_put(dev); - module_put(atm_lane_ops->owner); - return strlen(buf); - } - for(entry = priv->lec_no_forward; entry; entry=entry->next) { - if (--count) - continue; - e = sprintf(buf,"%s ", dev->name); - lec_info(entry, buf+e); - spin_unlock_irqrestore(&priv->lec_arp_lock, flags); - dev_put(dev); - module_put(atm_lane_ops->owner); - return strlen(buf); - } - for(entry = priv->mcast_fwds; entry; entry = entry->next) { - if (--count) - continue; - e = sprintf(buf,"%s ", dev->name); - lec_info(entry, buf+e); - spin_unlock_irqrestore(&priv->lec_arp_lock, flags); - dev_put(dev); - module_put(atm_lane_ops->owner); - return strlen(buf); - } - spin_unlock_irqrestore(&priv->lec_arp_lock, flags); +static void *lec_arp_walk(struct lec_state *state, loff_t *l, + struct lec_priv *priv) +{ + void *v = NULL; + int p; + + for (p = state->arp_table; p < LEC_ARP_TABLE_SIZE; p++) { + v = lec_tbl_walk(state, priv->lec_arp_tables[p], l); + if (v) + break; + } + state->arp_table = p; + return v; +} + +static void *lec_misc_walk(struct lec_state *state, loff_t *l, + struct lec_priv *priv) +{ + struct lec_arp_table *lec_misc_tables[] = { + priv->lec_arp_empty_ones, + priv->lec_no_forward, + priv->mcast_fwds + }; + void *v = NULL; + int q; + + for (q = state->misc_table; q < ARRAY_SIZE(lec_misc_tables); q++) { + v = lec_tbl_walk(state, lec_misc_tables[q], l); + if (v) + break; + } + state->misc_table = q; + return v; +} + +static void *lec_priv_walk(struct lec_state *state, loff_t *l, + struct lec_priv *priv) +{ + if (!state->locked) { + state->locked = priv; + spin_lock_irqsave(&priv->lec_arp_lock, state->flags); + } + if (!lec_arp_walk(state, l, priv) && + !lec_misc_walk(state, l, priv)) { + spin_unlock_irqrestore(&priv->lec_arp_lock, state->flags); + state->locked = NULL; + /* Partial state reset for the next time we get called */ + state->arp_table = state->misc_table = 0; + } + return state->locked; +} + +static void *lec_itf_walk(struct lec_state *state, loff_t *l) +{ + struct net_device *dev; + void *v; + + dev = state->dev ? state->dev : atm_lane_ops->get_lec(state->itf); + v = (dev && dev->priv) ? lec_priv_walk(state, l, dev->priv) : NULL; + if (!v && dev) { dev_put(dev); + /* Partial state reset for the next time we get called */ + dev = NULL; + } + state->dev = dev; + return v; +} + +static void *lec_get_idx(struct lec_state *state, loff_t l) +{ + void *v = NULL; + + for (; state->itf < MAX_LEC_ITF; state->itf++) { + v = lec_itf_walk(state, &l); + if (v) + break; + } + return v; +} + +static void *lec_seq_start(struct seq_file *seq, loff_t *pos) +{ + struct lec_state *state = seq->private; + + state->itf = 0; + state->dev = NULL; + state->locked = NULL; + state->arp_table = 0; + state->misc_table = 0; + state->entry = (void *)1; + + return *pos ? lec_get_idx(state, *pos) : (void*)1; +} + +static void lec_seq_stop(struct seq_file *seq, void *v) +{ + struct lec_state *state = seq->private; + + if (state->dev) { + spin_unlock_irqrestore(&state->locked->lec_arp_lock, + state->flags); + dev_put(state->dev); + } +} + +static void *lec_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + struct lec_state *state = seq->private; + + v = lec_get_idx(state, 1); + *pos += !!PTR_ERR(v); + return v; +} + +static int lec_seq_show(struct seq_file *seq, void *v) +{ + static char lec_banner[] = "Itf MAC ATM destination" + " Status Flags " + "VPI/VCI Recv VPI/VCI\n"; + + if (v == (void *)1) + seq_puts(seq, lec_banner); + else { + struct lec_state *state = seq->private; + struct net_device *dev = state->dev; + + seq_printf(seq, "%s ", dev->name); + lec_info(seq, state->entry); } - module_put(atm_lane_ops->owner); return 0; } -#endif +static struct seq_operations lec_seq_ops = { + .start = lec_seq_start, + .next = lec_seq_next, + .stop = lec_seq_stop, + .show = lec_seq_show, +}; + +static int lec_seq_open(struct inode *inode, struct file *file) +{ + struct lec_state *state; + struct seq_file *seq; + int rc = -EAGAIN; + + if (!try_atm_lane_ops()) + goto out; + + state = kmalloc(sizeof(*state), GFP_KERNEL); + if (!state) { + rc = -ENOMEM; + goto out; + } + + rc = seq_open(file, &lec_seq_ops); + if (rc) + goto out_kfree; + seq = file->private_data; + seq->private = state; +out: + return rc; +out_kfree: + kfree(state); + goto out; +} + +static int lec_seq_release(struct inode *inode, struct file *file) +{ + module_put(atm_lane_ops->owner); + return seq_release_private(inode, file); +} + +static struct file_operations lec_seq_fops = { + .open = lec_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = lec_seq_release, +}; + +#endif /* CONFIG_ATM_LANE */ static ssize_t proc_dev_atm_read(struct file *file,char *buf,size_t count, loff_t *pos) @@ -562,28 +888,6 @@ } -static ssize_t proc_spec_atm_read(struct file *file,char *buf,size_t count, - loff_t *pos) -{ - unsigned long page; - int length; - int (*info)(loff_t,char *); - info = PDE(file->f_dentry->d_inode)->data; - - if (count == 0) return 0; - page = get_zeroed_page(GFP_KERNEL); - if (!page) return -ENOMEM; - length = (*info)(*pos,(char *) page); - if (length > count) length = -EINVAL; - if (length >= 0) { - if (copy_to_user(buf,(char *) page,length)) length = -EFAULT; - (*pos)++; - } - free_page(page); - return length; -} - - struct proc_dir_entry *atm_proc_root; EXPORT_SYMBOL(atm_proc_root); @@ -604,19 +908,19 @@ dev->proc_name = kmalloc(strlen(dev->type) + digits + 2, GFP_KERNEL); if (!dev->proc_name) - goto fail1; + goto err_out; sprintf(dev->proc_name,"%s:%d",dev->type, dev->number); dev->proc_entry = create_proc_entry(dev->proc_name, 0, atm_proc_root); if (!dev->proc_entry) - goto fail0; + goto err_free_name; dev->proc_entry->data = dev; - dev->proc_entry->proc_fops = &proc_dev_atm_operations; + dev->proc_entry->proc_fops = &proc_atm_dev_ops; dev->proc_entry->owner = THIS_MODULE; return 0; -fail0: +err_free_name: kfree(dev->proc_name); -fail1: +err_out: return error; } @@ -630,57 +934,65 @@ kfree(dev->proc_name); } +static struct atm_proc_entry { + char *name; + struct file_operations *proc_fops; + struct proc_dir_entry *dirent; +} atm_proc_ents[] = { + { .name = "devices", .proc_fops = &devices_seq_fops }, + { .name = "pvc", .proc_fops = &pvc_seq_fops }, + { .name = "svc", .proc_fops = &svc_seq_fops }, + { .name = "vc", .proc_fops = &vcc_seq_fops }, +#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) + { .name = "arp", .proc_fops = &arp_seq_fops }, +#endif +#if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE) + { .name = "lec", .proc_fops = &lec_seq_fops }, +#endif + { .name = NULL, .proc_fops = NULL } +}; + +static void atm_proc_dirs_remove(void) +{ + static struct atm_proc_entry *e; -#define CREATE_ENTRY(name) \ - name = create_proc_entry(#name,0,atm_proc_root); \ - if (!name) goto cleanup; \ - name->data = atm_##name##_info; \ - name->proc_fops = &proc_spec_atm_operations; \ - name->owner = THIS_MODULE - -static struct proc_dir_entry *devices = NULL, *pvc = NULL, - *svc = NULL, *arp = NULL, *lec = NULL, *vc = NULL; - -static void atm_proc_cleanup(void) -{ - if (devices) - remove_proc_entry("devices",atm_proc_root); - if (pvc) - remove_proc_entry("pvc",atm_proc_root); - if (svc) - remove_proc_entry("svc",atm_proc_root); - if (arp) - remove_proc_entry("arp",atm_proc_root); - if (lec) - remove_proc_entry("lec",atm_proc_root); - if (vc) - remove_proc_entry("vc",atm_proc_root); - remove_proc_entry("net/atm",NULL); + for (e = atm_proc_ents; e->name; e++) { + if (e->dirent) + remove_proc_entry(e->name, atm_proc_root); + } + remove_proc_entry("net/atm", NULL); } int __init atm_proc_init(void) { + static struct atm_proc_entry *e; + int ret; + atm_proc_root = proc_mkdir("net/atm",NULL); if (!atm_proc_root) - return -ENOMEM; - CREATE_ENTRY(devices); - CREATE_ENTRY(pvc); - CREATE_ENTRY(svc); - CREATE_ENTRY(vc); -#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE) - CREATE_ENTRY(arp); -#endif -#if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE) - CREATE_ENTRY(lec); -#endif - return 0; - -cleanup: - atm_proc_cleanup(); - return -ENOMEM; + goto err_out; + for (e = atm_proc_ents; e->name; e++) { + struct proc_dir_entry *dirent; + + dirent = create_proc_entry(e->name, S_IRUGO, atm_proc_root); + if (!dirent) + goto err_out_remove; + dirent->proc_fops = e->proc_fops; + dirent->owner = THIS_MODULE; + e->dirent = dirent; + } + ret = 0; +out: + return ret; + +err_out_remove: + atm_proc_dirs_remove(); +err_out: + ret = -ENOMEM; + goto out; } -void atm_proc_exit(void) +void __exit atm_proc_exit(void) { - atm_proc_cleanup(); + atm_proc_dirs_remove(); } diff -Nru a/net/atm/resources.c b/net/atm/resources.c --- a/net/atm/resources.c Mon Sep 22 00:30:24 2003 +++ b/net/atm/resources.c Mon Sep 22 00:30:24 2003 @@ -30,7 +30,7 @@ { struct atm_dev *dev; - dev = kmalloc(sizeof(*dev), GFP_ATOMIC); + dev = kmalloc(sizeof(*dev), GFP_KERNEL); if (!dev) return NULL; memset(dev, 0, sizeof(*dev)); @@ -393,6 +393,35 @@ done: atm_dev_put(dev); return error; +} + +static __inline__ void *dev_get_idx(loff_t left) +{ + struct list_head *p; + + list_for_each(p, &atm_devs) { + if (!--left) + break; + } + return (p != &atm_devs) ? p : NULL; +} + +void *atm_dev_seq_start(struct seq_file *seq, loff_t *pos) +{ + spin_lock(&atm_dev_lock); + return *pos ? dev_get_idx(*pos) : (void *) 1; +} + +void atm_dev_seq_stop(struct seq_file *seq, void *v) +{ + spin_unlock(&atm_dev_lock); +} + +void *atm_dev_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + ++*pos; + v = (v == (void *)1) ? atm_devs.next : ((struct list_head *)v)->next; + return (v == &atm_devs) ? NULL : v; } diff -Nru a/net/atm/resources.h b/net/atm/resources.h --- a/net/atm/resources.h Mon Sep 22 00:30:24 2003 +++ b/net/atm/resources.h Mon Sep 22 00:30:24 2003 @@ -21,6 +21,11 @@ #include +void *atm_dev_seq_start(struct seq_file *seq, loff_t *pos); +void atm_dev_seq_stop(struct seq_file *seq, void *v); +void *atm_dev_seq_next(struct seq_file *seq, void *v, loff_t *pos); + + int atm_proc_dev_register(struct atm_dev *dev); void atm_proc_dev_deregister(struct atm_dev *dev); diff -Nru a/net/ax25/ax25_route.c b/net/ax25/ax25_route.c --- a/net/ax25/ax25_route.c Mon Sep 22 00:30:23 2003 +++ b/net/ax25/ax25_route.c Mon Sep 22 00:30:23 2003 @@ -281,8 +281,6 @@ #ifdef CONFIG_PROC_FS -#define AX25_PROC_START ((void *)1) - static void *ax25_rt_seq_start(struct seq_file *seq, loff_t *pos) { struct ax25_route *ax25_rt; @@ -290,7 +288,7 @@ read_lock(&ax25_route_lock); if (*pos == 0) - return AX25_PROC_START; + return SEQ_START_TOKEN; for (ax25_rt = ax25_route_list; ax25_rt != NULL; ax25_rt = ax25_rt->next) { if (i == *pos) @@ -304,7 +302,7 @@ static void *ax25_rt_seq_next(struct seq_file *seq, void *v, loff_t *pos) { ++*pos; - return (v == AX25_PROC_START) ? ax25_route_list : + return (v == SEQ_START_TOKEN) ? ax25_route_list : ((struct ax25_route *) v)->next; } @@ -315,7 +313,7 @@ static int ax25_rt_seq_show(struct seq_file *seq, void *v) { - if (v == AX25_PROC_START) + if (v == SEQ_START_TOKEN) seq_puts(seq, "callsign dev mode digipeaters\n"); else { struct ax25_route *ax25_rt = v; diff -Nru a/net/ax25/ax25_uid.c b/net/ax25/ax25_uid.c --- a/net/ax25/ax25_uid.c Mon Sep 22 00:30:19 2003 +++ b/net/ax25/ax25_uid.c Mon Sep 22 00:30:19 2003 @@ -144,8 +144,6 @@ #ifdef CONFIG_PROC_FS -#define AX25_PROC_START ((void *)1) - static void *ax25_uid_seq_start(struct seq_file *seq, loff_t *pos) { struct ax25_uid_assoc *pt; @@ -153,7 +151,7 @@ read_lock(&ax25_uid_lock); if (*pos == 0) - return AX25_PROC_START; + return SEQ_START_TOKEN; for (pt = ax25_uid_list; pt != NULL; pt = pt->next) { if (i == *pos) @@ -166,7 +164,7 @@ static void *ax25_uid_seq_next(struct seq_file *seq, void *v, loff_t *pos) { ++*pos; - return (v == AX25_PROC_START) ? ax25_uid_list : + return (v == SEQ_START_TOKEN) ? ax25_uid_list : ((struct ax25_uid_assoc *) v)->next; } @@ -177,7 +175,7 @@ static int ax25_uid_seq_show(struct seq_file *seq, void *v) { - if (v == AX25_PROC_START) + if (v == SEQ_START_TOKEN) seq_printf(seq, "Policy: %d\n", ax25_uid_policy); else { struct ax25_uid_assoc *pt = v; diff -Nru a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c --- a/net/bluetooth/af_bluetooth.c Mon Sep 22 00:30:19 2003 +++ b/net/bluetooth/af_bluetooth.c Mon Sep 22 00:30:19 2003 @@ -27,7 +27,7 @@ * * $Id: af_bluetooth.c,v 1.3 2002/04/17 17:37:15 maxk Exp $ */ -#define VERSION "2.2" +#define VERSION "2.3" #include #include @@ -130,7 +130,6 @@ } sock_init_data(sock, sk); - sk_set_owner(sk, THIS_MODULE); INIT_LIST_HEAD(&bt_sk(sk)->accept_q); sk->sk_zapped = 0; @@ -273,37 +272,33 @@ return mask; } -int bt_sock_w4_connect(struct sock *sk, int flags) +int bt_sock_wait_state(struct sock *sk, int state, unsigned long timeo) { DECLARE_WAITQUEUE(wait, current); - long timeo = sock_sndtimeo(sk, flags & O_NONBLOCK); int err = 0; BT_DBG("sk %p", sk); add_wait_queue(sk->sk_sleep, &wait); - while (sk->sk_state != BT_CONNECTED) { + while (sk->sk_state != state) { set_current_state(TASK_INTERRUPTIBLE); + if (!timeo) { err = -EAGAIN; break; } + if (signal_pending(current)) { + err = sock_intr_errno(timeo); + break; + } + release_sock(sk); timeo = schedule_timeout(timeo); lock_sock(sk); - err = 0; - if (sk->sk_state == BT_CONNECTED) - break; - if (sk->sk_err) { err = sock_error(sk); - break; - } - - if (signal_pending(current)) { - err = sock_intr_errno(timeo); break; } } diff -Nru a/net/bluetooth/bnep/bnep.h b/net/bluetooth/bnep/bnep.h --- a/net/bluetooth/bnep/bnep.h Mon Sep 22 00:30:22 2003 +++ b/net/bluetooth/bnep/bnep.h Mon Sep 22 00:30:22 2003 @@ -168,11 +168,11 @@ u64 mc_filter; struct socket *sock; - struct net_device dev; + struct net_device *dev; struct net_device_stats stats; }; -int bnep_net_init(struct net_device *dev); +void bnep_net_setup(struct net_device *dev); int bnep_sock_init(void); int bnep_sock_cleanup(void); diff -Nru a/net/bluetooth/bnep/core.c b/net/bluetooth/bnep/core.c --- a/net/bluetooth/bnep/core.c Mon Sep 22 00:30:23 2003 +++ b/net/bluetooth/bnep/core.c Mon Sep 22 00:30:23 2003 @@ -180,7 +180,7 @@ s->mc_filter = 0; /* Always send broadcast */ - set_bit(bnep_mc_hash(s->dev.broadcast), (ulong *) &s->mc_filter); + set_bit(bnep_mc_hash(s->dev->broadcast), (ulong *) &s->mc_filter); /* Add address ranges to the multicast hash */ for (; n > 0; n--) { @@ -293,7 +293,7 @@ static inline int bnep_rx_frame(struct bnep_session *s, struct sk_buff *skb) { - struct net_device *dev = &s->dev; + struct net_device *dev = s->dev; struct sk_buff *nskb; u8 type; @@ -451,7 +451,7 @@ static int bnep_session(void *arg) { struct bnep_session *s = arg; - struct net_device *dev = &s->dev; + struct net_device *dev = s->dev; struct sock *sk = s->sock->sk; struct sk_buff *skb; wait_queue_t wait; @@ -501,7 +501,7 @@ __bnep_unlink_session(s); up_write(&bnep_session_sem); - kfree(s); + kfree(dev); return 0; } @@ -517,10 +517,13 @@ baswap((void *) dst, &bt_sk(sock->sk)->dst); baswap((void *) src, &bt_sk(sock->sk)->src); - s = kmalloc(sizeof(struct bnep_session), GFP_KERNEL); - if (!s) - return -ENOMEM; - memset(s, 0, sizeof(struct bnep_session)); + /* session struct allocated as private part of net_device */ + dev = alloc_netdev(sizeof(struct bnep_session), + (*req->device) ? req->device : "bnep%d", + bnep_net_setup); + if (!dev) + return ENOMEM; + down_write(&bnep_session_sem); @@ -530,20 +533,15 @@ goto failed; } - dev = &s->dev; - - if (*req->device) - strcpy(dev->name, req->device); - else - strcpy(dev->name, "bnep%d"); + s = dev->priv; - memset(dev->broadcast, 0xff, ETH_ALEN); - /* This is rx header therefore addresses are swapped. * ie eh.h_dest is our local address. */ memcpy(s->eh.h_dest, &src, ETH_ALEN); memcpy(s->eh.h_source, &dst, ETH_ALEN); + memcpy(dev->dev_addr, s->eh.h_dest, ETH_ALEN); + s->dev = dev; s->sock = sock; s->role = req->role; s->state = BT_CONNECTED; @@ -569,8 +567,6 @@ s->proto_filter[2].end = htons(0x86DD); #endif - dev->init = bnep_net_init; - dev->priv = s; err = register_netdev(dev); if (err) { goto failed; @@ -578,7 +574,7 @@ __bnep_link_session(s); - err = kernel_thread(bnep_session, s, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + err = kernel_thread(bnep_session, s, CLONE_KERNEL); if (err < 0) { /* Session thread start failed, gotta cleanup. */ unregister_netdev(dev); @@ -592,7 +588,7 @@ failed: up_write(&bnep_session_sem); - kfree(s); + kfree(dev); return err; } @@ -624,7 +620,7 @@ static void __bnep_copy_ci(struct bnep_conninfo *ci, struct bnep_session *s) { memcpy(ci->dst, s->eh.h_source, ETH_ALEN); - strcpy(ci->device, s->dev.name); + strcpy(ci->device, s->dev->name); ci->flags = s->flags; ci->state = s->state; ci->role = s->role; diff -Nru a/net/bluetooth/bnep/netdev.c b/net/bluetooth/bnep/netdev.c --- a/net/bluetooth/bnep/netdev.c Mon Sep 22 00:30:23 2003 +++ b/net/bluetooth/bnep/netdev.c Mon Sep 22 00:30:23 2003 @@ -226,11 +226,10 @@ return 0; } -int bnep_net_init(struct net_device *dev) +void bnep_net_setup(struct net_device *dev) { - struct bnep_session *s = dev->priv; - memcpy(dev->dev_addr, s->eh.h_dest, ETH_ALEN); + memset(dev->broadcast, 0xff, ETH_ALEN); dev->addr_len = ETH_ALEN; ether_setup(dev); @@ -245,6 +244,4 @@ dev->watchdog_timeo = HZ * 2; dev->tx_timeout = bnep_net_timeout; - - return 0; } diff -Nru a/net/bluetooth/bnep/sock.c b/net/bluetooth/bnep/sock.c --- a/net/bluetooth/bnep/sock.c Mon Sep 22 00:30:25 2003 +++ b/net/bluetooth/bnep/sock.c Mon Sep 22 00:30:25 2003 @@ -175,6 +175,9 @@ if (!(sk = bt_sock_alloc(sock, PF_BLUETOOTH, 0, GFP_KERNEL))) return -ENOMEM; + + sk_set_owner(sk, THIS_MODULE); + sock->ops = &bnep_sock_ops; sock->state = SS_UNCONNECTED; @@ -186,6 +189,7 @@ static struct net_proto_family bnep_sock_family_ops = { .family = PF_BLUETOOTH, + .owner = THIS_MODULE, .create = bnep_sock_create }; diff -Nru a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c --- a/net/bluetooth/hci_core.c Mon Sep 22 00:30:20 2003 +++ b/net/bluetooth/hci_core.c Mon Sep 22 00:30:20 2003 @@ -394,7 +394,7 @@ { struct hci_inquiry_req ir; struct hci_dev *hdev; - int err = 0, do_inquiry = 0; + int err = 0, do_inquiry = 0, max_rsp; long timeo; __u8 *buf, *ptr; @@ -417,16 +417,19 @@ if (do_inquiry && (err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo)) < 0) goto done; + /* for unlimited number of responses we will use buffer with 255 entries */ + max_rsp = (ir.num_rsp == 0) ? 255 : ir.num_rsp; + /* cache_dump can't sleep. Therefore we allocate temp buffer and then * copy it to the user space. */ - if (!(buf = kmalloc(sizeof(struct inquiry_info) * ir.num_rsp, GFP_KERNEL))) { + if (!(buf = kmalloc(sizeof(struct inquiry_info) * max_rsp, GFP_KERNEL))) { err = -ENOMEM; goto done; } hci_dev_lock_bh(hdev); - ir.num_rsp = inquiry_cache_dump(hdev, ir.num_rsp, buf); + ir.num_rsp = inquiry_cache_dump(hdev, max_rsp, buf); hci_dev_unlock_bh(hdev); BT_DBG("num_rsp %d", ir.num_rsp); diff -Nru a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c --- a/net/bluetooth/hci_event.c Mon Sep 22 00:30:18 2003 +++ b/net/bluetooth/hci_event.c Mon Sep 22 00:30:18 2003 @@ -62,9 +62,22 @@ /* Command Complete OGF LINK_CTL */ static void hci_cc_link_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb) { + __u8 status; + BT_DBG("%s ocf 0x%x", hdev->name, ocf); switch (ocf) { + case OCF_INQUIRY_CANCEL: + status = *((__u8 *) skb->data); + + if (status) { + BT_DBG("%s Inquiry cancel error: status 0x%x", hdev->name, status); + } else { + clear_bit(HCI_INQUIRY, &hdev->flags); + hci_req_complete(hdev, status); + } + break; + default: BT_DBG("%s Command complete: ogf LINK_CTL ocf %x", hdev->name, ocf); break; diff -Nru a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c --- a/net/bluetooth/hci_sock.c Mon Sep 22 00:30:22 2003 +++ b/net/bluetooth/hci_sock.c Mon Sep 22 00:30:22 2003 @@ -75,7 +75,7 @@ /* OGF_LINK_POLICY */ { 0x1200, 0x0, 0x0, 0x0 }, /* OGF_HOST_CTL */ - { 0x80100000, 0x2a, 0x0, 0x0 }, + { 0x80100000, 0x202a, 0x0, 0x0 }, /* OGF_INFO_PARAM */ { 0x22a, 0x0, 0x0, 0x0 }, /* OGF_STATUS_PARAM */ @@ -586,6 +586,8 @@ sk = bt_sock_alloc(sock, protocol, sizeof(struct hci_pinfo), GFP_KERNEL); if (!sk) return -ENOMEM; + + sk_set_owner(sk, THIS_MODULE); sock->state = SS_UNCONNECTED; sk->sk_state = BT_OPEN; diff -Nru a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c --- a/net/bluetooth/l2cap.c Mon Sep 22 00:30:23 2003 +++ b/net/bluetooth/l2cap.c Mon Sep 22 00:30:23 2003 @@ -289,7 +289,7 @@ struct l2cap_disconn_req req; sk->sk_state = BT_DISCONN; - l2cap_sock_set_timer(sk, HZ * 5); + l2cap_sock_set_timer(sk, sk->sk_sndtimeo); req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid); req.scid = __cpu_to_le16(l2cap_pi(sk)->scid); @@ -314,11 +314,9 @@ static void l2cap_sock_close(struct sock *sk) { l2cap_sock_clear_timer(sk); - lock_sock(sk); __l2cap_sock_close(sk, ECONNRESET); release_sock(sk); - l2cap_sock_kill(sk); } @@ -530,8 +528,8 @@ goto done; wait: - err = bt_sock_w4_connect(sk, flags); - + err = bt_sock_wait_state(sk, BT_CONNECTED, + sock_sndtimeo(sk, flags & O_NONBLOCK)); done: release_sock(sk); return err; @@ -831,32 +829,39 @@ static int l2cap_sock_shutdown(struct socket *sock, int how) { struct sock *sk = sock->sk; + int err = 0; BT_DBG("sock %p, sk %p", sock, sk); if (!sk) return 0; - l2cap_sock_clear_timer(sk); - lock_sock(sk); - sk->sk_shutdown = SHUTDOWN_MASK; - __l2cap_sock_close(sk, ECONNRESET); - release_sock(sk); + if (!sk->sk_shutdown) { + sk->sk_shutdown = SHUTDOWN_MASK; + l2cap_sock_clear_timer(sk); + __l2cap_sock_close(sk, 0); - return 0; + if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime) + err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime); + } + release_sock(sk); + return err; } static int l2cap_sock_release(struct socket *sock) { struct sock *sk = sock->sk; + int err; BT_DBG("sock %p, sk %p", sock, sk); if (!sk) return 0; + err = l2cap_sock_shutdown(sock, 2); + sock_orphan(sk); - l2cap_sock_close(sk); - return 0; + l2cap_sock_kill(sk); + return err; } /* ---- L2CAP channels ---- */ @@ -980,9 +985,11 @@ hci_conn_put(conn->hcon); } - sk->sk_state = BT_CLOSED; - sk->sk_err = err; + sk->sk_state = BT_CLOSED; sk->sk_zapped = 1; + + if (err) + sk->sk_err = err; if (parent) parent->sk_data_ready(parent, 0); @@ -1518,18 +1525,35 @@ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid))) return -ENOENT; - if (result) { - struct l2cap_disconn_req req; + switch (result) { + case L2CAP_CONF_SUCCESS: + break; - /* They didn't like our options. Well... we do not negotiate. - * Close channel. - */ + case L2CAP_CONF_UNACCEPT: + if (++l2cap_pi(sk)->conf_retry < L2CAP_CONF_MAX_RETRIES) { + char req[128]; + /* + It does not make sense to adjust L2CAP parameters + that are currently defined in the spec. We simply + resend config request that we sent earlier. It is + stupid :) but it helps qualification testing + which expects at least some response from us. + */ + l2cap_send_req(conn, L2CAP_CONF_REQ, + l2cap_build_conf_req(sk, req), req); + goto done; + } + + default: sk->sk_state = BT_DISCONN; + sk->sk_err = ECONNRESET; l2cap_sock_set_timer(sk, HZ * 5); - - req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid); - req.scid = __cpu_to_le16(l2cap_pi(sk)->scid); - l2cap_send_req(conn, L2CAP_DISCONN_REQ, sizeof(req), &req); + { + struct l2cap_disconn_req req; + req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid); + req.scid = __cpu_to_le16(l2cap_pi(sk)->scid); + l2cap_send_req(conn, L2CAP_DISCONN_REQ, sizeof(req), &req); + } goto done; } @@ -1590,7 +1614,7 @@ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid))) return 0; - l2cap_chan_del(sk, ECONNABORTED); + l2cap_chan_del(sk, 0); bh_unlock_sock(sk); l2cap_sock_kill(sk); diff -Nru a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c --- a/net/bluetooth/rfcomm/core.c Mon Sep 22 00:30:18 2003 +++ b/net/bluetooth/rfcomm/core.c Mon Sep 22 00:30:18 2003 @@ -280,13 +280,13 @@ static int __rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel) { struct rfcomm_session *s; - u8 dlci = __dlci(0, channel); int err = 0; + u8 dlci; - BT_DBG("dlc %p state %ld %s %s channel %d dlci %d", - d, d->state, batostr(src), batostr(dst), channel, dlci); + BT_DBG("dlc %p state %ld %s %s channel %d", + d, d->state, batostr(src), batostr(dst), channel); - if (dlci < 1 || dlci > 62) + if (channel < 1 || channel > 30) return -EINVAL; if (d->state != BT_OPEN && d->state != BT_CLOSED) @@ -299,6 +299,8 @@ return err; } + dlci = __dlci(!s->initiator, channel); + /* Check if DLCI already exists */ if (rfcomm_dlc_get(s, dlci)) return -EBUSY; @@ -715,7 +717,7 @@ hdr->len = __len8(sizeof(*mcc) + 1); mcc = (void *) ptr; ptr += sizeof(*mcc); - mcc->type = __mcc_type(s->initiator, RFCOMM_NSC); + mcc->type = __mcc_type(cr, RFCOMM_NSC); mcc->len = __len8(1); /* Type that we didn't like */ @@ -741,7 +743,7 @@ hdr->len = __len8(sizeof(*mcc) + sizeof(*pn)); mcc = (void *) ptr; ptr += sizeof(*mcc); - mcc->type = __mcc_type(s->initiator, RFCOMM_PN); + mcc->type = __mcc_type(cr, RFCOMM_PN); mcc->len = __len8(sizeof(*pn)); pn = (void *) ptr; ptr += sizeof(*pn); @@ -850,7 +852,51 @@ msc = (void *) ptr; ptr += sizeof(*msc); msc->dlci = __addr(1, dlci); - msc->v24_sig = v24_sig; + msc->v24_sig = v24_sig | 0x01; + + *ptr = __fcs(buf); ptr++; + + return rfcomm_send_frame(s, buf, ptr - buf); +} + +static int rfcomm_send_fcoff(struct rfcomm_session *s, int cr) +{ + struct rfcomm_hdr *hdr; + struct rfcomm_mcc *mcc; + u8 buf[16], *ptr = buf; + + BT_DBG("%p cr %d", s, cr); + + hdr = (void *) ptr; ptr += sizeof(*hdr); + hdr->addr = __addr(s->initiator, 0); + hdr->ctrl = __ctrl(RFCOMM_UIH, 0); + hdr->len = __len8(sizeof(*mcc)); + + mcc = (void *) ptr; ptr += sizeof(*mcc); + mcc->type = __mcc_type(cr, RFCOMM_FCOFF); + mcc->len = __len8(0); + + *ptr = __fcs(buf); ptr++; + + return rfcomm_send_frame(s, buf, ptr - buf); +} + +static int rfcomm_send_fcon(struct rfcomm_session *s, int cr) +{ + struct rfcomm_hdr *hdr; + struct rfcomm_mcc *mcc; + u8 buf[16], *ptr = buf; + + BT_DBG("%p cr %d", s, cr); + + hdr = (void *) ptr; ptr += sizeof(*hdr); + hdr->addr = __addr(s->initiator, 0); + hdr->ctrl = __ctrl(RFCOMM_UIH, 0); + hdr->len = __len8(sizeof(*mcc)); + + mcc = (void *) ptr; ptr += sizeof(*mcc); + mcc->type = __mcc_type(cr, RFCOMM_FCON); + mcc->len = __len8(0); *ptr = __fcs(buf); ptr++; @@ -1085,6 +1131,8 @@ d->state = BT_CONNECTED; d->state_change(d, 0); rfcomm_dlc_unlock(d); + + rfcomm_send_msc(s, 1, dlci, d->v24_sig); } else { rfcomm_send_dm(s, dlci); } @@ -1207,6 +1255,14 @@ } /* check for sane values: ignore/accept bit_rate, 8 bits, 1 stop bit, no parity, no flow control lines, normal XON/XOFF chars */ + if (rpn->param_mask & RFCOMM_RPN_PM_BITRATE) { + bit_rate = rpn->bit_rate; + if (bit_rate != RFCOMM_RPN_BR_115200) { + BT_DBG("RPN bit rate mismatch 0x%x", bit_rate); + bit_rate = RFCOMM_RPN_BR_115200; + rpn_mask ^= RFCOMM_RPN_PM_BITRATE; + } + } if (rpn->param_mask & RFCOMM_RPN_PM_DATA) { data_bits = __get_rpn_data_bits(rpn->line_settings); if (data_bits != RFCOMM_RPN_DATA_8) { @@ -1232,22 +1288,25 @@ } } if (rpn->param_mask & RFCOMM_RPN_PM_FLOW) { - if (rpn->flow_ctrl != RFCOMM_RPN_FLOW_NONE) { - BT_DBG("RPN flow ctrl mismatch 0x%x", rpn->flow_ctrl); + flow_ctrl = rpn->flow_ctrl; + if (flow_ctrl != RFCOMM_RPN_FLOW_NONE) { + BT_DBG("RPN flow ctrl mismatch 0x%x", flow_ctrl); flow_ctrl = RFCOMM_RPN_FLOW_NONE; rpn_mask ^= RFCOMM_RPN_PM_FLOW; } } if (rpn->param_mask & RFCOMM_RPN_PM_XON) { - if (rpn->xon_char != RFCOMM_RPN_XON_CHAR) { - BT_DBG("RPN XON char mismatch 0x%x", rpn->xon_char); + xon_char = rpn->xon_char; + if (xon_char != RFCOMM_RPN_XON_CHAR) { + BT_DBG("RPN XON char mismatch 0x%x", xon_char); xon_char = RFCOMM_RPN_XON_CHAR; rpn_mask ^= RFCOMM_RPN_PM_XON; } } if (rpn->param_mask & RFCOMM_RPN_PM_XOFF) { - if (rpn->xoff_char != RFCOMM_RPN_XOFF_CHAR) { - BT_DBG("RPN XOFF char mismatch 0x%x", rpn->xoff_char); + xoff_char = rpn->xoff_char; + if (xoff_char != RFCOMM_RPN_XOFF_CHAR) { + BT_DBG("RPN XOFF char mismatch 0x%x", xoff_char); xoff_char = RFCOMM_RPN_XOFF_CHAR; rpn_mask ^= RFCOMM_RPN_PM_XOFF; } @@ -1343,6 +1402,20 @@ rfcomm_recv_msc(s, cr, skb); break; + case RFCOMM_FCOFF: + if (cr) { + set_bit(RFCOMM_TX_THROTTLED, &s->flags); + rfcomm_send_fcoff(s, 0); + } + break; + + case RFCOMM_FCON: + if (cr) { + clear_bit(RFCOMM_TX_THROTTLED, &s->flags); + rfcomm_send_fcon(s, 0); + } + break; + case RFCOMM_TEST: if (cr) rfcomm_send_test(s, 0, skb->data, skb->len); @@ -1533,6 +1606,9 @@ continue; } + if (test_bit(RFCOMM_TX_THROTTLED, &s->flags)) + continue; + if ((d->state == BT_CONNECTED || d->state == BT_DISCONN) && d->mscex == RFCOMM_MSCEX_OK) rfcomm_process_tx(d); @@ -1881,7 +1957,7 @@ { l2cap_load(); - kernel_thread(rfcomm_run, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); + kernel_thread(rfcomm_run, NULL, CLONE_KERNEL); BT_INFO("RFCOMM ver %s", VERSION); diff -Nru a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c --- a/net/bluetooth/rfcomm/sock.c Mon Sep 22 00:30:23 2003 +++ b/net/bluetooth/rfcomm/sock.c Mon Sep 22 00:30:23 2003 @@ -192,8 +192,10 @@ BT_DBG("parent %p", parent); /* Close not yet accepted dlcs */ - while ((sk = bt_accept_dequeue(parent, NULL))) + while ((sk = bt_accept_dequeue(parent, NULL))) { rfcomm_sock_close(sk); + rfcomm_sock_kill(sk); + } parent->sk_state = BT_CLOSED; parent->sk_zapped = 1; @@ -215,15 +217,10 @@ sock_put(sk); } -/* Close socket. - * Must be called on unlocked socket. - */ -static void rfcomm_sock_close(struct sock *sk) +static void __rfcomm_sock_close(struct sock *sk) { struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; - lock_sock(sk); - BT_DBG("sk %p state %d socket %p", sk, sk->sk_state, sk->sk_socket); switch (sk->sk_state) { @@ -240,11 +237,17 @@ default: sk->sk_zapped = 1; break; - }; + } +} +/* Close socket. + * Must be called on unlocked socket. + */ +static void rfcomm_sock_close(struct sock *sk) +{ + lock_sock(sk); + __rfcomm_sock_close(sk); release_sock(sk); - - rfcomm_sock_kill(sk); } static void rfcomm_sock_init(struct sock *sk, struct sock *parent) @@ -374,7 +377,8 @@ err = rfcomm_dlc_open(d, &bt_sk(sk)->src, &sa->rc_bdaddr, sa->rc_channel); if (!err) - err = bt_sock_w4_connect(sk, flags); + err = bt_sock_wait_state(sk, BT_CONNECTED, + sock_sndtimeo(sk, flags & O_NONBLOCK)); release_sock(sk); return err; @@ -558,9 +562,6 @@ int target, err = 0, copied = 0; long timeo; - if (sk->sk_state != BT_CONNECTED) - return -EINVAL; - if (flags & MSG_OOB) return -EOPNOTSUPP; @@ -635,23 +636,6 @@ return copied ? : err; } -static int rfcomm_sock_shutdown(struct socket *sock, int how) -{ - struct sock *sk = sock->sk; - - BT_DBG("sock %p, sk %p", sock, sk); - - if (!sk) return 0; - - lock_sock(sk); - sk->sk_shutdown = SHUTDOWN_MASK; - if (sk->sk_state == BT_CONNECTED) - rfcomm_dlc_close(rfcomm_pi(sk)->dlc, 0); - release_sock(sk); - - return 0; -} - static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen) { struct sock *sk = sock->sk; @@ -710,19 +694,42 @@ return err; } +static int rfcomm_sock_shutdown(struct socket *sock, int how) +{ + struct sock *sk = sock->sk; + int err = 0; + + BT_DBG("sock %p, sk %p", sock, sk); + + if (!sk) return 0; + + lock_sock(sk); + if (!sk->sk_shutdown) { + sk->sk_shutdown = SHUTDOWN_MASK; + __rfcomm_sock_close(sk); + + if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime) + err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime); + } + release_sock(sk); + return err; +} + static int rfcomm_sock_release(struct socket *sock) { struct sock *sk = sock->sk; + int err; BT_DBG("sock %p, sk %p", sock, sk); if (!sk) return 0; - sock_orphan(sk); - rfcomm_sock_close(sk); + err = rfcomm_sock_shutdown(sock, 2); - return 0; + sock_orphan(sk); + rfcomm_sock_kill(sk); + return err; } /* ---- RFCOMM core layer callbacks ---- diff -Nru a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c --- a/net/bluetooth/rfcomm/tty.c Mon Sep 22 00:30:22 2003 +++ b/net/bluetooth/rfcomm/tty.c Mon Sep 22 00:30:22 2003 @@ -668,40 +668,8 @@ return room; } -static int rfcomm_tty_set_modem_status(uint cmd, struct rfcomm_dlc *dlc, uint status) -{ - u8 v24_sig, mask; - - BT_DBG("dlc %p cmd 0x%02x", dlc, cmd); - - if (cmd == TIOCMSET) - v24_sig = 0; - else - rfcomm_dlc_get_modem_status(dlc, &v24_sig); - - mask = ((status & TIOCM_DSR) ? RFCOMM_V24_RTC : 0) | - ((status & TIOCM_DTR) ? RFCOMM_V24_RTC : 0) | - ((status & TIOCM_RTS) ? RFCOMM_V24_RTR : 0) | - ((status & TIOCM_CTS) ? RFCOMM_V24_RTR : 0) | - ((status & TIOCM_RI) ? RFCOMM_V24_IC : 0) | - ((status & TIOCM_CD) ? RFCOMM_V24_DV : 0); - - if (cmd == TIOCMBIC) - v24_sig &= ~mask; - else - v24_sig |= mask; - - rfcomm_dlc_set_modem_status(dlc, v24_sig); - return 0; -} - static int rfcomm_tty_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, unsigned long arg) { - struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; - struct rfcomm_dlc *dlc = dev->dlc; - uint status; - int err; - BT_DBG("tty %p cmd 0x%02x", tty, cmd); switch (cmd) { @@ -713,18 +681,6 @@ BT_DBG("TCSETS is not supported"); return -ENOIOCTLCMD; - case TIOCMGET: - BT_DBG("TIOCMGET"); - - return put_user(dev->modem_status, (unsigned int *)arg); - - case TIOCMSET: /* Turns on and off the lines as specified by the mask */ - case TIOCMBIS: /* Turns on the lines as specified by the mask */ - case TIOCMBIC: /* Turns off the lines as specified by the mask */ - if ((err = get_user(status, (unsigned int *)arg))) - return err; - return rfcomm_tty_set_modem_status(cmd, dlc, status); - case TIOCMIWAIT: BT_DBG("TIOCMIWAIT"); break; @@ -851,6 +807,48 @@ return 0; } +static int rfcomm_tty_tiocmget(struct tty_struct *tty, struct file *filp) +{ + struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; + + BT_DBG("tty %p dev %p", tty, dev); + + return dev->modem_status; +} + +static int rfcomm_tty_tiocmset(struct tty_struct *tty, struct file *filp, unsigned int set, unsigned int clear) +{ + struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; + struct rfcomm_dlc *dlc = dev->dlc; + u8 v24_sig; + + BT_DBG("tty %p dev %p set 0x%02x clear 0x%02x", tty, dev, set, clear); + + rfcomm_dlc_get_modem_status(dlc, &v24_sig); + + if (set & TIOCM_DSR || set & TIOCM_DTR) + v24_sig |= RFCOMM_V24_RTC; + if (set & TIOCM_RTS || set & TIOCM_CTS) + v24_sig |= RFCOMM_V24_RTR; + if (set & TIOCM_RI) + v24_sig |= RFCOMM_V24_IC; + if (set & TIOCM_CD) + v24_sig |= RFCOMM_V24_DV; + + if (clear & TIOCM_DSR || clear & TIOCM_DTR) + v24_sig &= ~RFCOMM_V24_RTC; + if (clear & TIOCM_RTS || clear & TIOCM_CTS) + v24_sig &= ~RFCOMM_V24_RTR; + if (clear & TIOCM_RI) + v24_sig &= ~RFCOMM_V24_IC; + if (clear & TIOCM_CD) + v24_sig &= ~RFCOMM_V24_DV; + + rfcomm_dlc_set_modem_status(dlc, v24_sig); + + return 0; +} + /* ---- TTY structure ---- */ static struct tty_driver *rfcomm_tty_driver; @@ -870,6 +868,8 @@ .hangup = rfcomm_tty_hangup, .wait_until_sent = rfcomm_tty_wait_until_sent, .read_proc = rfcomm_tty_read_proc, + .tiocmget = rfcomm_tty_tiocmget, + .tiocmset = rfcomm_tty_tiocmset, }; int rfcomm_init_ttys(void) @@ -878,18 +878,17 @@ if (!rfcomm_tty_driver) return -1; - rfcomm_tty_driver->owner = THIS_MODULE, - rfcomm_tty_driver->driver_name = "rfcomm", - rfcomm_tty_driver->devfs_name = "bluetooth/rfcomm/", - rfcomm_tty_driver->name = "rfcomm", - rfcomm_tty_driver->major = RFCOMM_TTY_MAJOR, - rfcomm_tty_driver->minor_start = RFCOMM_TTY_MINOR, - rfcomm_tty_driver->type = TTY_DRIVER_TYPE_SERIAL, - rfcomm_tty_driver->subtype = SERIAL_TYPE_NORMAL, - rfcomm_tty_driver->flags = TTY_DRIVER_REAL_RAW, - rfcomm_tty_driver->init_termios = tty_std_termios; - rfcomm_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; - rfcomm_tty_driver->flags = TTY_DRIVER_REAL_RAW; + rfcomm_tty_driver->owner = THIS_MODULE; + rfcomm_tty_driver->driver_name = "rfcomm"; + rfcomm_tty_driver->devfs_name = "bluetooth/rfcomm/"; + rfcomm_tty_driver->name = "rfcomm"; + rfcomm_tty_driver->major = RFCOMM_TTY_MAJOR; + rfcomm_tty_driver->minor_start = RFCOMM_TTY_MINOR; + rfcomm_tty_driver->type = TTY_DRIVER_TYPE_SERIAL; + rfcomm_tty_driver->subtype = SERIAL_TYPE_NORMAL; + rfcomm_tty_driver->flags = TTY_DRIVER_REAL_RAW; + rfcomm_tty_driver->init_termios = tty_std_termios; + rfcomm_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; tty_set_operations(rfcomm_tty_driver, &rfcomm_ops); if (tty_register_driver(rfcomm_tty_driver)) { diff -Nru a/net/bluetooth/sco.c b/net/bluetooth/sco.c --- a/net/bluetooth/sco.c Mon Sep 22 00:30:19 2003 +++ b/net/bluetooth/sco.c Mon Sep 22 00:30:19 2003 @@ -353,8 +353,10 @@ BT_DBG("parent %p", parent); /* Close not yet accepted channels */ - while ((sk = bt_accept_dequeue(parent, NULL))) + while ((sk = bt_accept_dequeue(parent, NULL))) { sco_sock_close(sk); + sco_sock_kill(sk); + } parent->sk_state = BT_CLOSED; parent->sk_zapped = 1; @@ -523,7 +525,8 @@ if ((err = sco_connect(sk))) goto done; - err = bt_sock_w4_connect(sk, flags); + err = bt_sock_wait_state(sk, BT_CONNECTED, + sock_sndtimeo(sk, flags & O_NONBLOCK)); done: release_sock(sk); @@ -727,16 +730,24 @@ static int sco_sock_release(struct socket *sock) { struct sock *sk = sock->sk; + int err = 0; BT_DBG("sock %p, sk %p", sock, sk); if (!sk) return 0; - - sock_orphan(sk); + sco_sock_close(sk); - return 0; + if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime) { + lock_sock(sk); + err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime); + release_sock(sk); + } + + sock_orphan(sk); + sco_sock_kill(sk); + return err; } static void __sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent) diff -Nru a/net/bluetooth/syms.c b/net/bluetooth/syms.c --- a/net/bluetooth/syms.c Mon Sep 22 00:30:22 2003 +++ b/net/bluetooth/syms.c Mon Sep 22 00:30:22 2003 @@ -77,6 +77,6 @@ EXPORT_SYMBOL(bt_sock_poll); EXPORT_SYMBOL(bt_accept_enqueue); EXPORT_SYMBOL(bt_accept_dequeue); -EXPORT_SYMBOL(bt_sock_w4_connect); +EXPORT_SYMBOL(bt_sock_wait_state); EXPORT_SYMBOL(proc_bt); diff -Nru a/net/bridge/br_forward.c b/net/bridge/br_forward.c --- a/net/bridge/br_forward.c Mon Sep 22 00:30:20 2003 +++ b/net/bridge/br_forward.c Mon Sep 22 00:30:20 2003 @@ -69,6 +69,7 @@ indev = skb->dev; skb->dev = to->dev; + skb->ip_summed = CHECKSUM_NONE; NF_HOOK(PF_BRIDGE, NF_BR_FORWARD, skb, indev, skb->dev, br_forward_finish); diff -Nru a/net/core/dev.c b/net/core/dev.c --- a/net/core/dev.c Mon Sep 22 00:30:21 2003 +++ b/net/core/dev.c Mon Sep 22 00:30:21 2003 @@ -470,10 +470,10 @@ * to be sure the name is not allocated or removed during the test the * caller must hold the rtnl semaphore. * - * This function primarily exists for back compatibility with older + * This function exists only for back compatibility with older * drivers. */ -int dev_get(const char *name) +int __dev_get(const char *name) { struct net_device *dev; @@ -698,7 +698,13 @@ void dev_load(const char *name) { - if (!dev_get(name) && capable(CAP_SYS_MODULE)) + struct net_device *dev; + + read_lock(&dev_base_lock); + dev = __dev_get_by_name(name); + read_unlock(&dev_base_lock); + + if (!dev && capable(CAP_SYS_MODULE)) request_module("%s", name); } @@ -841,7 +847,11 @@ * engine, but this requires more changes in devices. */ smp_mb__after_clear_bit(); /* Commit netif_running(). */ - netif_poll_disable(dev); + while (test_bit(__LINK_STATE_RX_SCHED, &dev->state)) { + /* No hurry. */ + current->state = TASK_INTERRUPTIBLE; + schedule_timeout(1); + } /* * Call the device specific close. This cannot fail. @@ -1840,13 +1850,13 @@ void *dev_seq_start(struct seq_file *seq, loff_t *pos) { read_lock(&dev_base_lock); - return *pos ? dev_get_idx(*pos - 1) : (void *)1; + return *pos ? dev_get_idx(*pos - 1) : SEQ_START_TOKEN; } void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos) { ++*pos; - return v == (void *)1 ? dev_base : ((struct net_device *)v)->next; + return v == SEQ_START_TOKEN ? dev_base : ((struct net_device *)v)->next; } void dev_seq_stop(struct seq_file *seq, void *v) @@ -1886,7 +1896,7 @@ */ static int dev_seq_show(struct seq_file *seq, void *v) { - if (v == (void *)1) + if (v == SEQ_START_TOKEN) seq_puts(seq, "Inter-| Receive " " | Transmit\n" " face |bytes packets errs drop fifo frame " @@ -1990,26 +2000,21 @@ static int __init dev_proc_init(void) { - struct proc_dir_entry *p; int rc = -ENOMEM; - p = create_proc_entry("dev", S_IRUGO, proc_net); - if (!p) + if (!proc_net_fops_create("dev", S_IRUGO, &dev_seq_fops)) goto out; - p->proc_fops = &dev_seq_fops; - p = create_proc_entry("softnet_stat", S_IRUGO, proc_net); - if (!p) + if (!proc_net_fops_create("softnet_stat", S_IRUGO, &softnet_seq_fops)) goto out_dev; - p->proc_fops = &softnet_seq_fops; if (wireless_proc_init()) goto out_softnet; rc = 0; out: return rc; out_softnet: - remove_proc_entry("softnet_stat", proc_net); + proc_net_remove("softnet_stat"); out_dev: - remove_proc_entry("dev", proc_net); + proc_net_remove("dev"); goto out; } #else @@ -2755,7 +2760,6 @@ current->state = TASK_INTERRUPTIBLE; schedule_timeout(HZ / 4); - current->state = TASK_RUNNING; if (time_after(jiffies, warning_time + 10 * HZ)) { printk(KERN_EMERG "unregister_netdevice: " diff -Nru a/net/core/wireless.c b/net/core/wireless.c --- a/net/core/wireless.c Mon Sep 22 00:30:23 2003 +++ b/net/core/wireless.c Mon Sep 22 00:30:23 2003 @@ -458,7 +458,7 @@ */ static int wireless_seq_show(struct seq_file *seq, void *v) { - if (v == (void *)1) + if (v == SEQ_START_TOKEN) seq_printf(seq, "Inter-| sta-| Quality | Discarded " "packets | Missed | WE\n" " face | tus | link level noise | nwid " @@ -495,15 +495,10 @@ int __init wireless_proc_init(void) { - struct proc_dir_entry *p; - int rc = 0; + if (!proc_net_fops_create("wireless", S_IRUGO, &wireless_seq_fops)) + return -ENOMEM; - p = create_proc_entry("wireless", S_IRUGO, proc_net); - if (p) - p->proc_fops = &wireless_seq_fops; - else - rc = -ENOMEM; - return rc; + return 0; } #endif /* CONFIG_PROC_FS */ diff -Nru a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c --- a/net/decnet/af_decnet.c Mon Sep 22 00:30:22 2003 +++ b/net/decnet/af_decnet.c Mon Sep 22 00:30:22 2003 @@ -2146,14 +2146,14 @@ static void *dn_socket_seq_start(struct seq_file *seq, loff_t *pos) { - return *pos ? dn_socket_get_idx(seq, *pos - 1) : (void*)1; + return *pos ? dn_socket_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; } static void *dn_socket_seq_next(struct seq_file *seq, void *v, loff_t *pos) { void *rc; - if (v == (void*)1) { + if (v == SEQ_START_TOKEN) { rc = dn_socket_get_idx(seq, 0); goto out; } @@ -2169,7 +2169,7 @@ static void dn_socket_seq_stop(struct seq_file *seq, void *v) { - if (v && v != (void*)1) + if (v && v != SEQ_START_TOKEN) read_unlock_bh(&dn_hash_lock); } @@ -2269,7 +2269,7 @@ static int dn_socket_seq_show(struct seq_file *seq, void *v) { - if (v == (void*)1) { + if (v == SEQ_START_TOKEN) { seq_puts(seq, "Local Remote\n"); } else { dn_socket_format_entry(seq, v); diff -Nru a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c --- a/net/decnet/dn_dev.c Mon Sep 22 00:30:20 2003 +++ b/net/decnet/dn_dev.c Mon Sep 22 00:30:20 2003 @@ -1365,7 +1365,7 @@ read_unlock(&dev_base_lock); return dev; } - return (void*)1; + return SEQ_START_TOKEN; } static void *dn_dev_seq_next(struct seq_file *seq, void *v, loff_t *pos) @@ -1373,7 +1373,7 @@ struct net_device *dev = v; loff_t one = 1; - if (v == (void*)1) { + if (v == SEQ_START_TOKEN) { dev = dn_dev_seq_start(seq, &one); } else { dev = dn_dev_get_next(seq, dev); @@ -1386,7 +1386,7 @@ static void dn_dev_seq_stop(struct seq_file *seq, void *v) { - if (v && v != (void*)1) + if (v && v != SEQ_START_TOKEN) read_unlock(&dev_base_lock); } @@ -1406,7 +1406,7 @@ static int dn_dev_seq_show(struct seq_file *seq, void *v) { - if (v == (void*)1) + if (v == SEQ_START_TOKEN) seq_puts(seq, "Name Flags T1 Timer1 T3 Timer3 BlkSize Pri State DevType Router Peer\n"); else { struct net_device *dev = v; diff -Nru a/net/decnet/dn_neigh.c b/net/decnet/dn_neigh.c --- a/net/decnet/dn_neigh.c Mon Sep 22 00:30:23 2003 +++ b/net/decnet/dn_neigh.c Mon Sep 22 00:30:23 2003 @@ -604,7 +604,7 @@ static void *dn_neigh_seq_start(struct seq_file *seq, loff_t *pos) { - return *pos ? dn_neigh_get_idx(seq, *pos - 1) : (void*)1; + return *pos ? dn_neigh_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; } static void *dn_neigh_seq_next(struct seq_file *seq, void *v, loff_t *pos) @@ -612,7 +612,7 @@ void *rc; - if (v == (void*)1) { + if (v == SEQ_START_TOKEN) { rc = dn_neigh_get_idx(seq, 0); goto out; } @@ -628,7 +628,7 @@ static void dn_neigh_seq_stop(struct seq_file *seq, void *v) { - if (v && v != (void*)1) + if (v && v != SEQ_START_TOKEN) read_unlock_bh(&dn_neigh_table.lock); } @@ -653,7 +653,7 @@ static int dn_neigh_seq_show(struct seq_file *seq, void *v) { - if (v == (void*)1) { + if (v == SEQ_START_TOKEN) { seq_puts(seq, "Addr Flags State Use Blksize Dev\n"); } else { dn_neigh_format_entry(seq, v); diff -Nru a/net/ipv4/arp.c b/net/ipv4/arp.c --- a/net/ipv4/arp.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv4/arp.c Mon Sep 22 00:30:24 2003 @@ -1275,7 +1275,7 @@ static void *arp_seq_start(struct seq_file *seq, loff_t *pos) { - return *pos ? arp_get_idx(seq, *pos - 1) : (void *)1; + return *pos ? arp_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; } static void *arp_seq_next(struct seq_file *seq, void *v, loff_t *pos) @@ -1283,7 +1283,7 @@ void *rc; struct arp_iter_state* state; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { rc = arp_get_idx(seq, 0); goto out; } @@ -1306,7 +1306,7 @@ { struct arp_iter_state* state = seq->private; - if (!state->is_pneigh && v != (void *)1) + if (!state->is_pneigh && v != SEQ_START_TOKEN) read_unlock_bh(&arp_tbl.lock); } @@ -1359,7 +1359,7 @@ static int arp_seq_show(struct seq_file *seq, void *v) { - if (v == (void *)1) + if (v == SEQ_START_TOKEN) seq_puts(seq, "IP address HW type Flags " "HW address Mask Device\n"); else { @@ -1416,14 +1416,9 @@ static int __init arp_proc_init(void) { - int rc = 0; - struct proc_dir_entry *p = create_proc_entry("arp", S_IRUGO, proc_net); - - if (p) - p->proc_fops = &arp_seq_fops; - else - rc = -ENOMEM; - return rc; + if (!proc_net_fops_create("arp", S_IRUGO, &arp_seq_fops)) + return -ENOMEM; + return 0; } #else /* CONFIG_PROC_FS */ diff -Nru a/net/ipv4/fib_hash.c b/net/ipv4/fib_hash.c --- a/net/ipv4/fib_hash.c Mon Sep 22 00:30:21 2003 +++ b/net/ipv4/fib_hash.c Mon Sep 22 00:30:21 2003 @@ -979,14 +979,14 @@ read_lock(&fib_hash_lock); if (ip_fib_main_table) - v = *pos ? fib_get_next(seq) : (void *)1; + v = *pos ? fib_get_next(seq) : SEQ_START_TOKEN; return v; } static void *fib_seq_next(struct seq_file *seq, void *v, loff_t *pos) { ++*pos; - return v == (void *)1 ? fib_get_first(seq) : fib_get_next(seq); + return v == SEQ_START_TOKEN ? fib_get_first(seq) : fib_get_next(seq); } static void fib_seq_stop(struct seq_file *seq, void *v) @@ -1025,7 +1025,7 @@ struct fib_node *f; struct fib_info *fi; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_printf(seq, "%-127s\n", "Iface\tDestination\tGateway " "\tFlags\tRefCnt\tUse\tMetric\tMask\t\tMTU" "\tWindow\tIRTT"); @@ -1096,19 +1096,13 @@ int __init fib_proc_init(void) { - struct proc_dir_entry *p; - int rc = 0; - - p = create_proc_entry("route", S_IRUGO, proc_net); - if (p) - p->proc_fops = &fib_seq_fops; - else - rc = -ENOMEM; - return rc; + if (!proc_net_fops_create("route", S_IRUGO, &fib_seq_fops)) + return -ENOMEM; + return 0; } void __init fib_proc_exit(void) { - remove_proc_entry("route", proc_net); + proc_net_remove("route"); } #endif /* CONFIG_PROC_FS */ diff -Nru a/net/ipv4/icmp.c b/net/ipv4/icmp.c --- a/net/ipv4/icmp.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv4/icmp.c Mon Sep 22 00:30:24 2003 @@ -669,7 +669,7 @@ printk(KERN_WARNING "%u.%u.%u.%u sent an invalid ICMP " "type %u, code %u " "error to a broadcast: %u.%u.%u.%u on %s\n", - NIPQUAD(iph->saddr), + NIPQUAD(skb->nh.iph->saddr), icmph->type, icmph->code, NIPQUAD(iph->daddr), skb->dev->name); diff -Nru a/net/ipv4/igmp.c b/net/ipv4/igmp.c --- a/net/ipv4/igmp.c Mon Sep 22 00:30:25 2003 +++ b/net/ipv4/igmp.c Mon Sep 22 00:30:25 2003 @@ -280,8 +280,10 @@ .nl_u = { .ip4_u = { .daddr = IGMPV3_ALL_MCR } }, .proto = IPPROTO_IGMP }; - if (ip_route_output_key(&rt, &fl)) + if (ip_route_output_key(&rt, &fl)) { + kfree_skb(skb); return 0; + } } if (rt->rt_src == 0) { ip_rt_put(rt); @@ -2162,13 +2164,13 @@ static void *igmp_mc_seq_start(struct seq_file *seq, loff_t *pos) { read_lock(&dev_base_lock); - return *pos ? igmp_mc_get_idx(seq, *pos) : (void *)1; + return *pos ? igmp_mc_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; } static void *igmp_mc_seq_next(struct seq_file *seq, void *v, loff_t *pos) { struct ip_mc_list *im; - if (v == (void *)1) + if (v == SEQ_START_TOKEN) im = igmp_mc_get_first(seq); else im = igmp_mc_get_next(seq, v); @@ -2190,7 +2192,7 @@ static int igmp_mc_seq_show(struct seq_file *seq, void *v) { - if (v == (void *)1) + if (v == SEQ_START_TOKEN) seq_printf(seq, "Idx\tDevice : Count Querier\tGroup Users Timer\tReporter\n"); else { @@ -2337,13 +2339,13 @@ static void *igmp_mcf_seq_start(struct seq_file *seq, loff_t *pos) { read_lock(&dev_base_lock); - return *pos ? igmp_mcf_get_idx(seq, *pos) : (void *)1; + return *pos ? igmp_mcf_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; } static void *igmp_mcf_seq_next(struct seq_file *seq, void *v, loff_t *pos) { struct ip_sf_list *psf; - if (v == (void *)1) + if (v == SEQ_START_TOKEN) psf = igmp_mcf_get_first(seq); else psf = igmp_mcf_get_next(seq, v); @@ -2372,7 +2374,7 @@ struct ip_sf_list *psf = (struct ip_sf_list *)v; struct igmp_mcf_iter_state *state = igmp_mcf_seq_private(seq); - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_printf(seq, "%3s %6s " "%10s %10s %6s %6s\n", "Idx", @@ -2430,15 +2432,8 @@ int __init igmp_mc_proc_init(void) { - struct proc_dir_entry *p; - - p = create_proc_entry("igmp", S_IRUGO, proc_net); - if (p) - p->proc_fops = &igmp_mc_seq_fops; - - p = create_proc_entry("mcfilter", S_IRUGO, proc_net); - if (p) - p->proc_fops = &igmp_mcf_seq_fops; + proc_net_fops_create("igmp", S_IRUGO, &igmp_mc_seq_fops); + proc_net_fops_create("mcfilter", S_IRUGO, &igmp_mcf_seq_fops); return 0; } #endif diff -Nru a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c --- a/net/ipv4/ip_input.c Mon Sep 22 00:30:18 2003 +++ b/net/ipv4/ip_input.c Mon Sep 22 00:30:18 2003 @@ -201,6 +201,7 @@ #ifdef CONFIG_NETFILTER_DEBUG nf_debug_ip_local_deliver(skb); + skb->nf_debug = 0; #endif /*CONFIG_NETFILTER_DEBUG*/ __skb_pull(skb, ihl); diff -Nru a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c --- a/net/ipv4/ipconfig.c Mon Sep 22 00:30:18 2003 +++ b/net/ipv4/ipconfig.c Mon Sep 22 00:30:18 2003 @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -1092,43 +1093,45 @@ #ifdef CONFIG_PROC_FS -static int pnp_get_info(char *buffer, char **start, - off_t offset, int length) +static int pnp_seq_show(struct seq_file *seq, void *v) { - int len; - int i; + int i; if (ic_proto_used & IC_PROTO) - sprintf(buffer, "#PROTO: %s\n", - (ic_proto_used & IC_RARP) ? "RARP" - : (ic_proto_used & IC_USE_DHCP) ? "DHCP" : "BOOTP"); + seq_printf(seq, "#PROTO: %s\n", + (ic_proto_used & IC_RARP) ? "RARP" + : (ic_proto_used & IC_USE_DHCP) ? "DHCP" : "BOOTP"); else - strcpy(buffer, "#MANUAL\n"); - len = strlen(buffer); + seq_puts(seq, "#MANUAL\n"); if (ic_domain[0]) - len += sprintf(buffer + len, - "domain %s\n", ic_domain); + seq_printf(seq, + "domain %s\n", ic_domain); for (i = 0; i < CONF_NAMESERVERS_MAX; i++) { if (ic_nameservers[i] != INADDR_NONE) - len += sprintf(buffer + len, - "nameserver %u.%u.%u.%u\n", - NIPQUAD(ic_nameservers[i])); + seq_printf(seq, + "nameserver %u.%u.%u.%u\n", + NIPQUAD(ic_nameservers[i])); } if (ic_servaddr != INADDR_NONE) - len += sprintf(buffer + len, - "bootserver %u.%u.%u.%u\n", - NIPQUAD(ic_servaddr)); - - if (offset > len) - offset = len; - *start = buffer + offset; - - if (offset + length > len) - length = len - offset; - return length; + seq_printf(seq, + "bootserver %u.%u.%u.%u\n", + NIPQUAD(ic_servaddr)); + return 0; } +static int pnp_seq_open(struct inode *indoe, struct file *file) +{ + return single_open(file, pnp_seq_show, NULL); +} + +static struct file_operations pnp_seq_fops = { + .owner = THIS_MODULE, + .open = pnp_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; #endif /* CONFIG_PROC_FS */ /* @@ -1140,7 +1143,7 @@ unsigned long jiff; #ifdef CONFIG_PROC_FS - proc_net_create("pnp", 0, pnp_get_info); + proc_net_fops_create("pnp", S_IRUGO, &pnp_seq_fops); #endif /* CONFIG_PROC_FS */ if (!ic_enable) @@ -1153,7 +1156,7 @@ /* Give hardware a chance to settle */ jiff = jiffies + CONF_PRE_OPEN; while (time_before(jiffies, jiff)) - ; + cpu_relax(); /* Setup all network devices */ if (ic_open_devs() < 0) @@ -1162,7 +1165,7 @@ /* Give drivers a chance to settle */ jiff = jiffies + CONF_POST_OPEN; while (time_before(jiffies, jiff)) - ; + cpu_relax(); /* * If the config information is insufficient (e.g., our IP address or diff -Nru a/net/ipv4/ipvs/ip_vs_app.c b/net/ipv4/ipvs/ip_vs_app.c --- a/net/ipv4/ipvs/ip_vs_app.c Mon Sep 22 00:30:17 2003 +++ b/net/ipv4/ipvs/ip_vs_app.c Mon Sep 22 00:30:17 2003 @@ -35,6 +35,7 @@ #include #include #include +#include #include @@ -213,18 +214,14 @@ */ void unregister_ip_vs_app(struct ip_vs_app *app) { - struct ip_vs_app *inc; - struct list_head *l = &app->incs_list; + struct ip_vs_app *inc, *nxt; down(&__ip_vs_app_mutex); - while (l->next != l) { - inc = list_entry(l->next, struct ip_vs_app, a_list); + list_for_each_entry_safe(inc, nxt, &app->incs_list, a_list) { ip_vs_app_inc_release(inc); } - list_del(&app->a_list); - up(&__ip_vs_app_mutex); /* decrease the module use count */ @@ -238,13 +235,11 @@ */ struct ip_vs_app *ip_vs_app_get_by_name(char *appname) { - struct list_head *p; struct ip_vs_app *app, *a = NULL; down(&__ip_vs_app_mutex); - list_for_each (p, &ip_vs_app_list) { - app = list_entry(p, struct ip_vs_app, a_list); + list_for_each_entry(ent, &ip_vs_app_list, a_list) { if (strcmp(app->name, appname)) continue; @@ -480,55 +475,99 @@ } +#ifdef CONFIG_PROC_FS /* * /proc/net/ip_vs_app entry function */ -static int -ip_vs_app_getinfo(char *buffer, char **start, off_t offset, int length) + +static struct ip_vs_app *ip_vs_app_idx(loff_t pos) { - off_t pos=0; - int len=0; - char temp[64]; struct ip_vs_app *app, *inc; - struct list_head *e, *i; - pos = 64; - if (pos > offset) { - len += sprintf(buffer+len, "%-63s\n", - "prot port usecnt name"); + list_for_each_entry(app, &ip_vs_app_list, a_list) { + list_for_each_entry(inc, &app->incs_list, a_list) { + if (pos-- == 0) + return inc; + } } + return NULL; +} + +static void *ip_vs_app_seq_start(struct seq_file *seq, loff_t *pos) +{ down(&__ip_vs_app_mutex); - list_for_each (e, &ip_vs_app_list) { - app = list_entry(e, struct ip_vs_app, a_list); - list_for_each (i, &app->incs_list) { - inc = list_entry(i, struct ip_vs_app, a_list); + + return *pos ? ip_vs_app_idx(*pos - 1) : SEQ_START_TOKEN; +} + +static void *ip_vs_app_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + struct ip_vs_app *inc, *app; + struct list_head *e; + + ++*pos; + if (v == SEQ_START_TOKEN) + return ip_vs_app_idx(0); + + inc = v; + app = inc->app; - pos += 64; - if (pos <= offset) - continue; - sprintf(temp, "%-3s %-7u %-6d %-17s", - ip_vs_proto_name(inc->protocol), - ntohs(inc->port), - atomic_read(&inc->usecnt), - inc->name); - len += sprintf(buffer+len, "%-63s\n", temp); - if (pos >= offset+length) - goto done; + if ((e = inc->a_list.next) != &app->incs_list) + return list_entry(e, struct ip_vs_app, a_list); + + /* go on to next application */ + for (e = app->a_list.next; e != &ip_vs_app_list; e = e->next) { + app = list_entry(e, struct ip_vs_app, a_list); + list_for_each_entry(inc, &app->incs_list, a_list) { + return inc; } } - done: + return NULL; +} + +static void ip_vs_app_seq_stop(struct seq_file *seq, void *v) +{ up(&__ip_vs_app_mutex); +} - *start = buffer+len-(pos-offset); /* Start of wanted data */ - len = pos-offset; - if (len > length) - len = length; - if (len < 0) - len = 0; - return len; +static int ip_vs_app_seq_show(struct seq_file *seq, void *v) +{ + if (v == SEQ_START_TOKEN) + seq_puts(seq, "prot port usecnt name\n"); + else { + const struct ip_vs_app *inc = v; + + seq_printf(seq, "%-3s %-7u %-6d %-17s\n", + ip_vs_proto_name(inc->protocol), + ntohs(inc->port), + atomic_read(&inc->usecnt), + inc->name); + } + return 0; } +static struct seq_operations ip_vs_app_seq_ops = { + .start = ip_vs_app_seq_start, + .next = ip_vs_app_seq_next, + .stop = ip_vs_app_seq_stop, + .show = ip_vs_app_seq_show, +}; + +static int ip_vs_app_open(struct inode *inode, struct file *file) +{ + return seq_open(file, &ip_vs_app_seq_ops); +} + +static struct file_operations ip_vs_app_fops = { + .owner = THIS_MODULE, + .open = ip_vs_app_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; +#endif + /* * Replace a segment of data with a new segment @@ -577,7 +616,7 @@ int ip_vs_app_init(void) { /* we will replace it with proc_net_ipvs_create() soon */ - proc_net_create("ip_vs_app", 0, ip_vs_app_getinfo); + proc_net_fops_create("ip_vs_app", 0, &ip_vs_app_fops); return 0; } diff -Nru a/net/ipv4/ipvs/ip_vs_conn.c b/net/ipv4/ipvs/ip_vs_conn.c --- a/net/ipv4/ipvs/ip_vs_conn.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv4/ipvs/ip_vs_conn.c Mon Sep 22 00:30:24 2003 @@ -30,6 +30,7 @@ #include #include #include /* for proc_net_* */ +#include #include #include @@ -188,15 +189,12 @@ { unsigned hash; struct ip_vs_conn *cp; - struct list_head *l,*e; hash = ip_vs_conn_hashkey(protocol, s_addr, s_port); - l = &ip_vs_conn_tab[hash]; ct_read_lock(hash); - for (e=l->next; e!=l; e=e->next) { - cp = list_entry(e, struct ip_vs_conn, c_list); + list_for_each_entry(cp, &ip_vs_conn_tab[hash], c_list) { if (s_addr==cp->caddr && s_port==cp->cport && d_port==cp->vport && d_addr==cp->vaddr && protocol==cp->protocol) { @@ -242,18 +240,15 @@ { unsigned hash; struct ip_vs_conn *cp, *ret=NULL; - struct list_head *l,*e; /* * Check for "full" addressed entries */ hash = ip_vs_conn_hashkey(protocol, d_addr, d_port); - l = &ip_vs_conn_tab[hash]; ct_read_lock(hash); - for (e=l->next; e!=l; e=e->next) { - cp = list_entry(e, struct ip_vs_conn, c_list); + list_for_each_entry(cp, &ip_vs_conn_tab[hash], c_list) { if (d_addr == cp->caddr && d_port == cp->cport && s_port == cp->dport && s_addr == cp->daddr && protocol == cp->protocol) { @@ -615,61 +610,112 @@ /* * /proc/net/ip_vs_conn entries */ -static int -ip_vs_conn_getinfo(char *buffer, char **start, off_t offset, int length) +#ifdef CONFIG_PROC_FS + +static void *ip_vs_conn_array(struct seq_file *seq, loff_t pos) { - off_t pos=0; - int idx, len=0; - char temp[70]; + int idx; struct ip_vs_conn *cp; - struct list_head *l, *e; - - pos = 128; - if (pos > offset) { - len += sprintf(buffer+len, "%-127s\n", - "Pro FromIP FPrt ToIP TPrt DestIP DPrt State Expires"); + + for(idx = 0; idx < IP_VS_CONN_TAB_SIZE; idx++) { + ct_read_lock_bh(idx); + list_for_each_entry(cp, &ip_vs_conn_tab[idx], c_list) { + if (pos-- == 0) { + seq->private = &ip_vs_conn_tab[idx]; + return cp; + } + } + ct_read_unlock_bh(idx); } - for(idx = 0; idx < IP_VS_CONN_TAB_SIZE; idx++) { - /* - * Lock is actually only need in next loop - * we are called from uspace: must stop bh. - */ + return NULL; +} + +static void *ip_vs_conn_seq_start(struct seq_file *seq, loff_t *pos) +{ + seq->private = NULL; + return *pos ? ip_vs_conn_array(seq, *pos - 1) :SEQ_START_TOKEN; +} + +static void *ip_vs_conn_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + struct ip_vs_conn *cp = v; + struct list_head *e, *l = seq->private; + int idx; + + ++*pos; + if (v == SEQ_START_TOKEN) + return ip_vs_conn_array(seq, 0); + + /* more on same hash chain? */ + if ((e = cp->c_list.next) != l) + return list_entry(e, struct ip_vs_conn, c_list); + + idx = l - ip_vs_conn_tab; + ct_read_unlock_bh(idx); + + while (++idx < IP_VS_CONN_TAB_SIZE) { ct_read_lock_bh(idx); + list_for_each_entry(cp, &ip_vs_conn_tab[idx], c_list) { + seq->private = &ip_vs_conn_tab[idx]; + return cp; + } + ct_read_unlock_bh(idx); + } + seq->private = NULL; + return NULL; +} - l = &ip_vs_conn_tab[idx]; - for (e=l->next; e!=l; e=e->next) { - cp = list_entry(e, struct ip_vs_conn, c_list); - pos += 128; - if (pos <= offset) - continue; - sprintf(temp, - "%-3s %08X %04X %08X %04X %08X %04X %-11s %7lu", +static void ip_vs_conn_seq_stop(struct seq_file *seq, void *v) +{ + struct list_head *l = seq->private; + + if (l) + ct_read_unlock(l - ip_vs_conn_tab); +} + +static int ip_vs_conn_seq_show(struct seq_file *seq, void *v) +{ + + if (v == SEQ_START_TOKEN) + seq_puts(seq, + "Pro FromIP FPrt ToIP TPrt DestIP DPrt State Expires\n"); + else { + const struct ip_vs_conn *cp = v; + + seq_printf(seq, + "%-3s %08X %04X %08X %04X %08X %04X %-11s %7lu\n", ip_vs_proto_name(cp->protocol), ntohl(cp->caddr), ntohs(cp->cport), ntohl(cp->vaddr), ntohs(cp->vport), ntohl(cp->daddr), ntohs(cp->dport), ip_vs_state_name(cp->protocol, cp->state), (cp->timer.expires-jiffies)/HZ); - len += sprintf(buffer+len, "%-127s\n", temp); - if (pos >= offset+length) { - ct_read_unlock_bh(idx); - goto done; - } - } - ct_read_unlock_bh(idx); } + return 0; +} + +static struct seq_operations ip_vs_conn_seq_ops = { + .start = ip_vs_conn_seq_start, + .next = ip_vs_conn_seq_next, + .stop = ip_vs_conn_seq_stop, + .show = ip_vs_conn_seq_show, +}; - done: - *start = buffer+len-(pos-offset); /* Start of wanted data */ - len = pos-offset; - if (len > length) - len = length; - if (len < 0) - len = 0; - return len; +static int ip_vs_conn_open(struct inode *inode, struct file *file) +{ + return seq_open(file, &ip_vs_conn_seq_ops); } +static struct file_operations ip_vs_conn_fops = { + .owner = THIS_MODULE, + .open = ip_vs_conn_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; +#endif + /* * Randomly drop connection entries before running out of memory @@ -687,7 +733,7 @@ /* if the conn entry hasn't lasted for 60 seconds, don't drop it. This will leave enough time for normal connection to get through. */ - if (cp->timeout+jiffies-cp->timer.expires < 60*HZ) + if (time_before(cp->timeout + jiffies, cp->timer.expires + 60*HZ)) return 0; /* Don't drop the entry if its number of incoming packets is not @@ -707,7 +753,6 @@ { int idx; struct ip_vs_conn *cp; - struct list_head *l,*e; struct ip_vs_conn *ct; /* @@ -721,9 +766,7 @@ */ ct_write_lock(hash); - l = &ip_vs_conn_tab[hash]; - for (e=l->next; e!=l; e=e->next) { - cp = list_entry(e, struct ip_vs_conn, c_list); + list_for_each_entry(cp, &ip_vs_conn_tab[hash], c_list) { if (!cp->cport && !(cp->flags & IP_VS_CONN_F_NO_CPORT)) /* connection template */ continue; @@ -775,7 +818,6 @@ { int idx; struct ip_vs_conn *cp; - struct list_head *l,*e; struct ip_vs_conn *ct; flush_again: @@ -785,9 +827,7 @@ */ ct_write_lock_bh(idx); - l = &ip_vs_conn_tab[idx]; - for (e=l->next; e!=l; e=e->next) { - cp = list_entry(e, struct ip_vs_conn, c_list); + list_for_each_entry(cp, &ip_vs_conn_tab[idx], c_list) { atomic_inc(&cp->refcnt); ct_write_unlock(idx); @@ -848,7 +888,7 @@ __ip_vs_conntbl_lock_array[idx].l = RW_LOCK_UNLOCKED; } - proc_net_create("ip_vs_conn", 0, ip_vs_conn_getinfo); + proc_net_fops_create("ip_vs_conn", 0, &ip_vs_conn_fops); /* calculate the random value for connection hash */ get_random_bytes(&ip_vs_conn_rnd, sizeof(ip_vs_conn_rnd)); diff -Nru a/net/ipv4/ipvs/ip_vs_ctl.c b/net/ipv4/ipvs/ip_vs_ctl.c --- a/net/ipv4/ipvs/ip_vs_ctl.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv4/ipvs/ip_vs_ctl.c Mon Sep 22 00:30:24 2003 @@ -31,6 +31,8 @@ #include #include #include +#include +#include #include #include @@ -46,7 +48,7 @@ static DECLARE_MUTEX(__ip_vs_mutex); /* lock for service table */ -rwlock_t __ip_vs_svc_lock = RW_LOCK_UNLOCKED; +static rwlock_t __ip_vs_svc_lock = RW_LOCK_UNLOCKED; /* lock for table with the real services */ static rwlock_t __ip_vs_rs_lock = RW_LOCK_UNLOCKED; @@ -361,14 +363,11 @@ { unsigned hash; struct ip_vs_service *svc; - struct list_head *l,*e; /* Check for "full" addressed entries */ hash = ip_vs_svc_hashkey(protocol, vaddr, vport); - l = &ip_vs_svc_table[hash]; - for (e=l->next; e!=l; e=e->next) { - svc = list_entry(e, struct ip_vs_service, s_list); + list_for_each_entry(svc, &ip_vs_svc_table[hash], s_list){ if ((svc->addr == vaddr) && (svc->port == vport) && (svc->protocol == protocol)) { @@ -389,14 +388,11 @@ { unsigned hash; struct ip_vs_service *svc; - struct list_head *l,*e; /* Check for fwmark addressed entries */ hash = ip_vs_svc_fwm_hashkey(fwmark); - l = &ip_vs_svc_fwm_table[hash]; - for (e=l->next; e!=l; e=e->next) { - svc = list_entry(e, struct ip_vs_service, f_list); + list_for_each_entry(svc, &ip_vs_svc_fwm_table[hash], f_list) { if (svc->fwmark == fwmark) { /* HIT */ atomic_inc(&svc->usecnt); @@ -533,7 +529,6 @@ { unsigned hash; struct ip_vs_dest *dest; - struct list_head *l,*e; /* * Check for "full" addressed entries @@ -541,11 +536,8 @@ */ hash = ip_vs_rs_hashkey(daddr, dport); - l = &ip_vs_rtable[hash]; - read_lock(&__ip_vs_rs_lock); - for (e=l->next; e!=l; e=e->next) { - dest = list_entry(e, struct ip_vs_dest, d_list); + list_for_each_entry(dest, &ip_vs_rtable[hash], d_list) { if ((dest->addr == daddr) && (dest->port == dport) && ((dest->protocol == protocol) || @@ -567,14 +559,11 @@ ip_vs_lookup_dest(struct ip_vs_service *svc, __u32 daddr, __u16 dport) { struct ip_vs_dest *dest; - struct list_head *l, *e; /* * Find the destination for the given service */ - l = &svc->destinations; - for (e=l->next; e!=l; e=e->next) { - dest = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(dest, &svc->destinations, n_list) { if ((dest->addr == daddr) && (dest->port == dport)) { /* HIT */ return dest; @@ -598,16 +587,12 @@ static struct ip_vs_dest * ip_vs_trash_get_dest(struct ip_vs_service *svc, __u32 daddr, __u16 dport) { - struct ip_vs_dest *dest; - struct list_head *l, *e; + struct ip_vs_dest *dest, *nxt; /* * Find the destination in trash */ - l = &ip_vs_dest_trash; - - for (e=l->next; e!=l; e=e->next) { - dest = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry_safe(dest, nxt, &ip_vs_dest_trash, n_list) { IP_VS_DBG(3, "Destination %u/%u.%u.%u.%u:%u still in trash, " "refcnt=%d\n", dest->vfwmark, @@ -632,7 +617,6 @@ "from trash\n", dest->vfwmark, NIPQUAD(dest->addr), ntohs(dest->port)); - e = e->prev; list_del(&dest->n_list); ip_vs_dst_reset(dest); __ip_vs_unbind_svc(dest); @@ -655,13 +639,9 @@ */ static void ip_vs_trash_cleanup(void) { - struct ip_vs_dest *dest; - struct list_head *l; - - l = &ip_vs_dest_trash; + struct ip_vs_dest *dest, *nxt; - while (l->next != l) { - dest = list_entry(l->next, struct ip_vs_dest, n_list); + list_for_each_entry_safe(dest, nxt, &ip_vs_dest_trash, n_list) { list_del(&dest->n_list); ip_vs_dst_reset(dest); __ip_vs_unbind_svc(dest); @@ -1196,8 +1176,7 @@ */ static void __ip_vs_del_service(struct ip_vs_service *svc) { - struct list_head *l; - struct ip_vs_dest *dest; + struct ip_vs_dest *dest, *nxt; struct ip_vs_scheduler *old_sched; ip_vs_num_services--; @@ -1218,9 +1197,7 @@ /* * Unlink the whole destination list */ - l = &svc->destinations; - while (l->next != l) { - dest = list_entry(l->next, struct ip_vs_dest, n_list); + list_for_each_entry_safe(dest, nxt, &svc->destinations, n_list) { __ip_vs_unlink_dest(svc, dest, 0); __ip_vs_del_dest(dest); } @@ -1277,16 +1254,13 @@ static int ip_vs_flush(void) { int idx; - struct ip_vs_service *svc; - struct list_head *l; + struct ip_vs_service *svc, *nxt; /* * Flush the service table hashed by */ for(idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) { - l = &ip_vs_svc_table[idx]; - while (l->next != l) { - svc = list_entry(l->next,struct ip_vs_service,s_list); + list_for_each_entry_safe(svc, nxt, &ip_vs_svc_table[idx], s_list) { write_lock_bh(&__ip_vs_svc_lock); ip_vs_svc_unhash(svc); /* @@ -1302,9 +1276,8 @@ * Flush the service table hashed by fwmark */ for(idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) { - l = &ip_vs_svc_fwm_table[idx]; - while (l->next != l) { - svc = list_entry(l->next,struct ip_vs_service,f_list); + list_for_each_entry_safe(svc, nxt, + &ip_vs_svc_fwm_table[idx], f_list) { write_lock_bh(&__ip_vs_svc_lock); ip_vs_svc_unhash(svc); /* @@ -1334,12 +1307,10 @@ static int ip_vs_zero_service(struct ip_vs_service *svc) { - struct list_head *l; struct ip_vs_dest *dest; write_lock_bh(&__ip_vs_svc_lock); - list_for_each (l, &svc->destinations) { - dest = list_entry(l, struct ip_vs_dest, n_list); + list_for_each_entry(dest, &svc->destinations, n_list) { ip_vs_zero_stats(&dest->stats); } ip_vs_zero_stats(&svc->stats); @@ -1350,19 +1321,16 @@ static int ip_vs_zero_all(void) { int idx; - struct list_head *l; struct ip_vs_service *svc; for(idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) { - list_for_each (l, &ip_vs_svc_table[idx]) { - svc = list_entry(l, struct ip_vs_service, s_list); + list_for_each_entry(svc, &ip_vs_svc_table[idx], s_list) { ip_vs_zero_service(svc); } } for(idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) { - list_for_each (l, &ip_vs_svc_fwm_table[idx]) { - svc = list_entry(l, struct ip_vs_service, f_list); + list_for_each_entry(svc, &ip_vs_svc_fwm_table[idx], f_list) { ip_vs_zero_service(svc); } } @@ -1507,207 +1475,253 @@ {0}} }; +#ifdef CONFIG_PROC_FS + +struct ip_vs_iter { + struct list_head *table; + int bucket; +}; /* * Write the contents of the VS rule table to a PROCfs file. * (It is kept just for backward compatibility) */ -static inline char *ip_vs_fwd_name(unsigned flags) +static inline const char *ip_vs_fwd_name(unsigned flags) { - char *fwd; - switch (flags & IP_VS_CONN_F_FWD_MASK) { case IP_VS_CONN_F_LOCALNODE: - fwd = "Local"; - break; + return "Local"; case IP_VS_CONN_F_TUNNEL: - fwd = "Tunnel"; - break; + return "Tunnel"; case IP_VS_CONN_F_DROUTE: - fwd = "Route"; - break; + return "Route"; default: - fwd = "Masq"; + return "Masq"; } - return fwd; } -static inline int sprintf_dest(char *str, struct ip_vs_dest *dest) -{ - return sprintf(str, " -> %08X:%04X %-7s %-6d %-10d %-10d", - ntohl(dest->addr), ntohs(dest->port), - ip_vs_fwd_name(atomic_read(&dest->conn_flags)), - atomic_read(&dest->weight), - atomic_read(&dest->activeconns), - atomic_read(&dest->inactconns)); -} -static int ip_vs_get_info(char *buf, char **start, off_t offset, int length) +/* Get the Nth entry in the two lists */ +static struct ip_vs_service *ip_vs_info_array(struct seq_file *seq, loff_t pos) { - int len=0; - off_t pos=0; - char temp[64], temp2[32]; + struct ip_vs_iter *iter = seq->private; int idx; struct ip_vs_service *svc; - struct ip_vs_dest *dest; - struct list_head *l, *e, *p, *q; - - /* - * Note: since the length of the buffer is usually the multiple - * of 512, it is good to use fixed record of the divisor of 512, - * so that records won't be truncated at buffer boundary. - */ - pos = 192; - if (pos > offset) { - sprintf(temp, - "IP Virtual Server version %d.%d.%d (size=%d)", - NVERSION(IP_VS_VERSION_CODE), IP_VS_CONN_TAB_SIZE); - len += sprintf(buf+len, "%-63s\n", temp); - len += sprintf(buf+len, "%-63s\n", - "Prot LocalAddress:Port Scheduler Flags"); - len += sprintf(buf+len, "%-63s\n", - " -> RemoteAddress:Port Forward Weight ActiveConn InActConn"); - } - read_lock_bh(&__ip_vs_svc_lock); - - /* print the service table hashed by */ + /* look in hash by protocol */ for (idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) { - l = &ip_vs_svc_table[idx]; - for (e=l->next; e!=l; e=e->next) { - svc = list_entry(e, struct ip_vs_service, s_list); - pos += 64; - if (pos > offset) { - if (svc->flags & IP_VS_SVC_F_PERSISTENT) - sprintf(temp2, "persistent %d %08X", - svc->timeout, - ntohl(svc->netmask)); - else - temp2[0] = '\0'; - - sprintf(temp, "%s %08X:%04X %s %s", - ip_vs_proto_name(svc->protocol), - ntohl(svc->addr), - ntohs(svc->port), - svc->scheduler->name, temp2); - len += sprintf(buf+len, "%-63s\n", temp); - if (len >= length) - goto done; - } - - p = &svc->destinations; - for (q=p->next; q!=p; q=q->next) { - dest = list_entry(q, struct ip_vs_dest, n_list); - pos += 64; - if (pos <= offset) - continue; - sprintf_dest(temp, dest); - len += sprintf(buf+len, "%-63s\n", temp); - if (len >= length) - goto done; + list_for_each_entry(svc, &ip_vs_svc_table[idx], s_list) { + if (pos-- == 0){ + iter->table = ip_vs_svc_table; + iter->bucket = idx; + return svc; } } } - /* print the service table hashed by fwmark */ + /* keep looking in fwmark */ for (idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) { - l = &ip_vs_svc_fwm_table[idx]; - for (e=l->next; e!=l; e=e->next) { - svc = list_entry(e, struct ip_vs_service, f_list); - pos += 64; - if (pos > offset) { - if (svc->flags & IP_VS_SVC_F_PERSISTENT) - sprintf(temp2, "persistent %d %08X", - svc->timeout, - ntohl(svc->netmask)); - else - temp2[0] = '\0'; - - sprintf(temp, "FWM %08X %s %s", - svc->fwmark, - svc->scheduler->name, temp2); - len += sprintf(buf+len, "%-63s\n", temp); - if (len >= length) - goto done; + list_for_each_entry(svc, &ip_vs_svc_fwm_table[idx], f_list) { + if (pos-- == 0) { + iter->table = ip_vs_svc_fwm_table; + iter->bucket = idx; + return svc; } + } + } + + return NULL; +} + +static void *ip_vs_info_seq_start(struct seq_file *seq, loff_t *pos) +{ + + read_lock_bh(&__ip_vs_svc_lock); + return *pos ? ip_vs_info_array(seq, *pos - 1) : SEQ_START_TOKEN; +} + - p = &svc->destinations; - for (q=p->next; q!=p; q=q->next) { - dest = list_entry(q, struct ip_vs_dest, n_list); - pos += 64; - if (pos <= offset) - continue; - sprintf_dest(temp, dest); - len += sprintf(buf+len, "%-63s\n", temp); - if (len >= length) - goto done; +static void *ip_vs_info_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + struct list_head *e; + struct ip_vs_iter *iter; + struct ip_vs_service *svc; + + ++*pos; + if (v == SEQ_START_TOKEN) + return ip_vs_info_array(seq,0); + + svc = v; + iter = seq->private; + + if (iter->table == ip_vs_svc_table) { + /* next service in table hashed by protocol */ + if ((e = svc->s_list.next) != &ip_vs_svc_table[iter->bucket]) + return list_entry(e, struct ip_vs_service, s_list); + + + while (++iter->bucket < IP_VS_SVC_TAB_SIZE) { + list_for_each_entry(svc,&ip_vs_svc_table[iter->bucket], + s_list) { + return svc; } } + + iter->table = ip_vs_svc_fwm_table; + iter->bucket = -1; + goto scan_fwmark; } - done: + /* next service in hashed by fwmark */ + if ((e = svc->f_list.next) != &ip_vs_svc_fwm_table[iter->bucket]) + return list_entry(e, struct ip_vs_service, f_list); + + scan_fwmark: + while (++iter->bucket < IP_VS_SVC_TAB_SIZE) { + list_for_each_entry(svc, &ip_vs_svc_fwm_table[iter->bucket], + f_list) + return svc; + } + + return NULL; +} + +static void ip_vs_info_seq_stop(struct seq_file *seq, void *v) +{ read_unlock_bh(&__ip_vs_svc_lock); +} + + +static int ip_vs_info_seq_show(struct seq_file *seq, void *v) +{ + if (v == SEQ_START_TOKEN) { + seq_printf(seq, + "IP Virtual Server version %d.%d.%d (size=%d)\n", + NVERSION(IP_VS_VERSION_CODE), IP_VS_CONN_TAB_SIZE); + seq_puts(seq, + "Prot LocalAddress:Port Scheduler Flags\n"); + seq_puts(seq, + " -> RemoteAddress:Port Forward Weight ActiveConn InActConn\n"); + } else { + const struct ip_vs_service *svc = v; + const struct ip_vs_iter *iter = seq->private; + const struct ip_vs_dest *dest; + + if (iter->table == ip_vs_svc_table) + seq_printf(seq, "%s %08X:%04X %s ", + ip_vs_proto_name(svc->protocol), + ntohl(svc->addr), + ntohs(svc->port), + svc->scheduler->name); + else + seq_printf(seq, "FWM %08X %s ", + svc->fwmark, svc->scheduler->name); + + if (svc->flags & IP_VS_SVC_F_PERSISTENT) + seq_printf(seq, "persistent %d %08X\n", + svc->timeout, + ntohl(svc->netmask)); + else + seq_putc(seq, '\n'); + + list_for_each_entry(dest, &svc->destinations, n_list) { + seq_printf(seq, + " -> %08X:%04X %-7s %-6d %-10d %-10d\n", + ntohl(dest->addr), ntohs(dest->port), + ip_vs_fwd_name(atomic_read(&dest->conn_flags)), + atomic_read(&dest->weight), + atomic_read(&dest->activeconns), + atomic_read(&dest->inactconns)); + } + } + return 0; +} - *start = buf+len-(pos-offset); /* Start of wanted data */ - len = pos-offset; - if (len > length) - len = length; - if (len < 0) - len = 0; - return len; +static struct seq_operations ip_vs_info_seq_ops = { + .start = ip_vs_info_seq_start, + .next = ip_vs_info_seq_next, + .stop = ip_vs_info_seq_stop, + .show = ip_vs_info_seq_show, +}; + +static int ip_vs_info_open(struct inode *inode, struct file *file) +{ + struct seq_file *seq; + int rc = -ENOMEM; + struct ip_vs_iter *s = kmalloc(sizeof(*s), GFP_KERNEL); + + if (!s) + goto out; + + rc = seq_open(file, &ip_vs_info_seq_ops); + if (rc) + goto out_kfree; + + seq = file->private_data; + seq->private = s; + memset(s, 0, sizeof(*s)); +out: + return rc; +out_kfree: + kfree(s); + goto out; } +static struct file_operations ip_vs_info_fops = { + .owner = THIS_MODULE, + .open = ip_vs_info_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release_private, +}; + +#endif struct ip_vs_stats ip_vs_stats; -static int -ip_vs_stats_get_info(char *buf, char **start, off_t offset, int length) +#ifdef CONFIG_PROC_FS +static int ip_vs_stats_show(struct seq_file *seq, void *v) { - int len=0; - off_t pos=0; - char temp[64]; - - pos += 320; - if (pos > offset) { - len += sprintf(buf+len, "%-63s\n%-63s\n", -/* 01234567 01234567 01234567 0123456701234567 0123456701234567 */ - " Total Incoming Outgoing Incoming Outgoing", - " Conns Packets Packets Bytes Bytes"); - - spin_lock_bh(&ip_vs_stats.lock); - sprintf(temp, "%8X %8X %8X %8X%08X %8X%08X", - ip_vs_stats.conns, - ip_vs_stats.inpkts, - ip_vs_stats.outpkts, - (__u32)(ip_vs_stats.inbytes>>32), - (__u32)ip_vs_stats.inbytes, - (__u32)(ip_vs_stats.outbytes>>32), - (__u32)ip_vs_stats.outbytes); - len += sprintf(buf+len, "%-62s\n\n", temp); - - len += sprintf(buf+len, "%-63s\n", -/* 01234567 01234567 01234567 0123456701234567 0123456701234567 */ - " Conns/s Pkts/s Pkts/s Bytes/s Bytes/s"); - sprintf(temp, "%8X %8X %8X %16X %16X", + +/* 01234567 01234567 01234567 0123456701234567 0123456701234567 */ + seq_puts(seq, + " Total Incoming Outgoing Incoming Outgoing\n"); + seq_printf(seq, + " Conns Packets Packets Bytes Bytes\n"); + + spin_lock_bh(&ip_vs_stats.lock); + seq_printf(seq, "%8X %8X %8X %16LX %16LX\n\n", ip_vs_stats.conns, + ip_vs_stats.inpkts, ip_vs_stats.outpkts, + ip_vs_stats.inbytes, ip_vs_stats.outbytes); + +/* 01234567 01234567 01234567 0123456701234567 0123456701234567 */ + seq_puts(seq, + " Conns/s Pkts/s Pkts/s Bytes/s Bytes/s\n"); + seq_printf(seq,"%8X %8X %8X %16X %16X\n", ip_vs_stats.cps, ip_vs_stats.inpps, ip_vs_stats.outpps, ip_vs_stats.inbps, ip_vs_stats.outbps); - len += sprintf(buf+len, "%-63s\n", temp); + spin_unlock_bh(&ip_vs_stats.lock); - spin_unlock_bh(&ip_vs_stats.lock); - } + return 0; +} - *start = buf+len-(pos-offset); /* Start of wanted data */ - len = pos-offset; - if (len > length) - len = length; - if (len < 0) - len = 0; - return len; +static int ip_vs_stats_seq_open(struct inode *inode, struct file *file) +{ + return single_open(file, ip_vs_stats_show, NULL); } +static struct file_operations ip_vs_stats_fops = { + .owner = THIS_MODULE, + .open = ip_vs_stats_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +#endif /* * Set timeout values for tcp tcpfin udp in the timeout_table. @@ -1912,19 +1926,17 @@ static inline int __ip_vs_get_service_entries(const struct ip_vs_get_services *get, - struct ip_vs_get_services *uptr) + struct ip_vs_get_services __user *uptr) { int idx, count=0; struct ip_vs_service *svc; - struct list_head *l; struct ip_vs_service_entry entry; int ret = 0; for (idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) { - list_for_each (l, &ip_vs_svc_table[idx]) { + list_for_each_entry(svc, &ip_vs_svc_table[idx], s_list) { if (count >= get->num_services) goto out; - svc = list_entry(l, struct ip_vs_service, s_list); ip_vs_copy_service(&entry, svc); if (copy_to_user(&uptr->entrytable[count], &entry, sizeof(entry))) { @@ -1936,10 +1948,9 @@ } for (idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) { - list_for_each (l, &ip_vs_svc_fwm_table[idx]) { + list_for_each_entry(svc, &ip_vs_svc_fwm_table[idx], f_list) { if (count >= get->num_services) goto out; - svc = list_entry(l, struct ip_vs_service, f_list); ip_vs_copy_service(&entry, svc); if (copy_to_user(&uptr->entrytable[count], &entry, sizeof(entry))) { @@ -1955,7 +1966,7 @@ static inline int __ip_vs_get_dest_entries(const struct ip_vs_get_dests *get, - struct ip_vs_get_dests *uptr) + struct ip_vs_get_dests __user *uptr) { struct ip_vs_service *svc; int ret = 0; @@ -1968,14 +1979,12 @@ if (svc) { int count = 0; struct ip_vs_dest *dest; - struct list_head *l, *e; struct ip_vs_dest_entry entry; - l = &svc->destinations; - for (e=l->next; e!=l; e=e->next) { + list_for_each_entry(dest, &svc->destinations, n_list) { if (count >= get->num_dests) break; - dest = list_entry(e, struct ip_vs_dest, n_list); + entry.addr = dest->addr; entry.port = dest->port; entry.conn_flags = atomic_read(&dest->conn_flags); @@ -2034,7 +2043,7 @@ }; static int -do_ip_vs_get_ctl(struct sock *sk, int cmd, void *user, int *len) +do_ip_vs_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) { unsigned char arg[128]; int ret = 0; @@ -2195,8 +2204,8 @@ return ret; } - proc_net_create("ip_vs", 0, ip_vs_get_info); - proc_net_create("ip_vs_stats", 0, ip_vs_stats_get_info); + proc_net_fops_create("ip_vs", 0, &ip_vs_info_fops); + proc_net_fops_create("ip_vs_stats",0, &ip_vs_stats_fops); ipv4_vs_table.sysctl_header = register_sysctl_table(ipv4_vs_table.root_dir, 0); diff -Nru a/net/ipv4/ipvs/ip_vs_lblc.c b/net/ipv4/ipvs/ip_vs_lblc.c --- a/net/ipv4/ipvs/ip_vs_lblc.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv4/ipvs/ip_vs_lblc.c Mon Sep 22 00:30:24 2003 @@ -246,15 +246,12 @@ { unsigned hash; struct ip_vs_lblc_entry *en; - struct list_head *l,*e; hash = ip_vs_lblc_hashkey(addr); - l = &tbl->bucket[hash]; read_lock(&tbl->lock); - for (e=l->next; e!=l; e=e->next) { - en = list_entry(e, struct ip_vs_lblc_entry, list); + list_for_each_entry(en, &tbl->bucket[hash], list) { if (en->addr == addr) { /* HIT */ read_unlock(&tbl->lock); @@ -274,14 +271,11 @@ static void ip_vs_lblc_flush(struct ip_vs_lblc_table *tbl) { int i; - struct list_head *l; - struct ip_vs_lblc_entry *en; + struct ip_vs_lblc_entry *en, *nxt; for (i=0; ilock); - for (l=&tbl->bucket[i]; l->next!=l; ) { - en = list_entry(l->next, - struct ip_vs_lblc_entry, list); + list_for_each_entry_safe(en, nxt, &tbl->bucket[i], list) { ip_vs_lblc_free(en); atomic_dec(&tbl->entries); } @@ -294,21 +288,17 @@ { unsigned long now = jiffies; int i, j; - struct list_head *l, *e; - struct ip_vs_lblc_entry *en; + struct ip_vs_lblc_entry *en, *nxt; for (i=0, j=tbl->rover; ibucket[j]; + write_lock(&tbl->lock); - while (e->next != l) { - en = list_entry(e->next, - struct ip_vs_lblc_entry, list); - if ((now - en->lastuse) < - sysctl_ip_vs_lblc_expiration) { - e = e->next; + list_for_each_entry_safe(en, nxt, &tbl->bucket[j], list) { + if (time_before(now, + en->lastuse + sysctl_ip_vs_lblc_expiration)) continue; - } + ip_vs_lblc_free(en); atomic_dec(&tbl->entries); } @@ -335,8 +325,7 @@ unsigned long now = jiffies; int goal; int i, j; - struct list_head *l, *e; - struct ip_vs_lblc_entry *en; + struct ip_vs_lblc_entry *en, *nxt; tbl = (struct ip_vs_lblc_table *)data; @@ -358,15 +347,12 @@ for (i=0, j=tbl->rover; ibucket[j]; + write_lock(&tbl->lock); - while (e->next != l) { - en = list_entry(e->next, - struct ip_vs_lblc_entry, list); - if ((now - en->lastuse) < ENTRY_TIMEOUT) { - e = e->next; + list_for_each_entry_safe(en, nxt, &tbl->bucket[j], list) { + if (time_before(now, en->lastuse + ENTRY_TIMEOUT)) continue; - } + ip_vs_lblc_free(en); atomic_dec(&tbl->entries); goal--; @@ -452,7 +438,6 @@ static inline struct ip_vs_dest * __ip_vs_wlc_schedule(struct ip_vs_service *svc, struct iphdr *iph) { - register struct list_head *l, *e; struct ip_vs_dest *dest, *least; int loh, doh; @@ -473,10 +458,7 @@ * The server with weight=0 is quiesced and will not receive any * new connection. */ - - l = &svc->destinations; - for (e=l->next; e!=l; e=e->next) { - least = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(least, &svc->destinations, n_list) { if (least->flags & IP_VS_DEST_F_OVERLOAD) continue; if (atomic_read(&least->weight) > 0) { @@ -491,9 +473,7 @@ * Find the destination with the least load. */ nextstage: - for (e=e->next; e!=l; e=e->next) { - dest = list_entry(e, struct ip_vs_dest, n_list); - + list_for_each_entry(dest, &svc->destinations, n_list) { if (dest->flags & IP_VS_DEST_F_OVERLOAD) continue; @@ -525,12 +505,9 @@ is_overloaded(struct ip_vs_dest *dest, struct ip_vs_service *svc) { if (atomic_read(&dest->activeconns) > atomic_read(&dest->weight)) { - register struct list_head *l, *e; struct ip_vs_dest *d; - l = &svc->destinations; - for (e=l->next; e!=l; e=e->next) { - d = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(d, &svc->destinations, n_list) { if (atomic_read(&d->activeconns)*2 < atomic_read(&d->weight)) { return 1; diff -Nru a/net/ipv4/ipvs/ip_vs_lblcr.c b/net/ipv4/ipvs/ip_vs_lblcr.c --- a/net/ipv4/ipvs/ip_vs_lblcr.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv4/ipvs/ip_vs_lblcr.c Mon Sep 22 00:30:24 2003 @@ -432,15 +432,12 @@ { unsigned hash; struct ip_vs_lblcr_entry *en; - struct list_head *l,*e; hash = ip_vs_lblcr_hashkey(addr); - l = &tbl->bucket[hash]; read_lock(&tbl->lock); - for (e=l->next; e!=l; e=e->next) { - en = list_entry(e, struct ip_vs_lblcr_entry, list); + list_for_each_entry(en, &tbl->bucket[hash], list) { if (en->addr == addr) { /* HIT */ read_unlock(&tbl->lock); @@ -460,14 +457,11 @@ static void ip_vs_lblcr_flush(struct ip_vs_lblcr_table *tbl) { int i; - struct list_head *l; - struct ip_vs_lblcr_entry *en; + struct ip_vs_lblcr_entry *en, *nxt; for (i=0; ilock); - for (l=&tbl->bucket[i]; l->next!=l; ) { - en = list_entry(l->next, - struct ip_vs_lblcr_entry, list); + list_for_each_entry_safe(en, nxt, &tbl->bucket[i], list) { ip_vs_lblcr_free(en); atomic_dec(&tbl->entries); } @@ -480,21 +474,17 @@ { unsigned long now = jiffies; int i, j; - struct list_head *l, *e; - struct ip_vs_lblcr_entry *en; + struct ip_vs_lblcr_entry *en, *nxt; for (i=0, j=tbl->rover; ibucket[j]; + write_lock(&tbl->lock); - while (e->next != l) { - en = list_entry(e->next, - struct ip_vs_lblcr_entry, list); - if ((now - en->lastuse) < - sysctl_ip_vs_lblcr_expiration) { - e = e->next; + list_for_each_entry_safe(en, nxt, &tbl->bucket[j], list) { + if (time_after(en->lastuse+sysctl_ip_vs_lblcr_expiration, + now)) continue; - } + ip_vs_lblcr_free(en); atomic_dec(&tbl->entries); } @@ -521,8 +511,7 @@ unsigned long now = jiffies; int goal; int i, j; - struct list_head *l, *e; - struct ip_vs_lblcr_entry *en; + struct ip_vs_lblcr_entry *en, *nxt; tbl = (struct ip_vs_lblcr_table *)data; @@ -544,15 +533,12 @@ for (i=0, j=tbl->rover; ibucket[j]; + write_lock(&tbl->lock); - while (e->next != l) { - en = list_entry(e->next, - struct ip_vs_lblcr_entry, list); - if ((now - en->lastuse) < ENTRY_TIMEOUT) { - e = e->next; + list_for_each_entry_safe(en, nxt, &tbl->bucket[j], list) { + if (time_before(now, en->lastuse+ENTRY_TIMEOUT)) continue; - } + ip_vs_lblcr_free(en); atomic_dec(&tbl->entries); goal--; @@ -583,7 +569,6 @@ struct ip_vs_lblcr_table *tbl; unsigned long now = jiffies; int i; - struct list_head *l, *e; struct ip_vs_lblcr_entry *en; tbl = lblcr_table_list; @@ -593,13 +578,11 @@ len += size; for (i=0; ibucket[i]; read_lock_bh(&tbl->lock); - for (e=l->next; e!=l; e=e->next) { + list_for_each_entry(en, &tbl->bucket[i], list) { char tbuf[16]; struct ip_vs_dest_list *d; - en = list_entry(e, struct ip_vs_lblcr_entry, list); sprintf(tbuf, "%u.%u.%u.%u", NIPQUAD(en->addr)); size = sprintf(buffer+len, "%8lu %-16s ", now-en->lastuse, tbuf); @@ -708,7 +691,6 @@ static inline struct ip_vs_dest * __ip_vs_wlc_schedule(struct ip_vs_service *svc, struct iphdr *iph) { - register struct list_head *l, *e; struct ip_vs_dest *dest, *least; int loh, doh; @@ -729,10 +711,7 @@ * The server with weight=0 is quiesced and will not receive any * new connection. */ - - l = &svc->destinations; - for (e=l->next; e!=l; e=e->next) { - least = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(least, &svc->destinations, n_list) { if (least->flags & IP_VS_DEST_F_OVERLOAD) continue; @@ -748,8 +727,7 @@ * Find the destination with the least load. */ nextstage: - for (e=e->next; e!=l; e=e->next) { - dest = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(dest, &svc->destinations, n_list) { if (dest->flags & IP_VS_DEST_F_OVERLOAD) continue; @@ -781,12 +759,9 @@ is_overloaded(struct ip_vs_dest *dest, struct ip_vs_service *svc) { if (atomic_read(&dest->activeconns) > atomic_read(&dest->weight)) { - register struct list_head *l, *e; struct ip_vs_dest *d; - l = &svc->destinations; - for (e=l->next; e!=l; e=e->next) { - d = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(d, &svc->destinations, n_list) { if (atomic_read(&d->activeconns)*2 < atomic_read(&d->weight)) { return 1; diff -Nru a/net/ipv4/ipvs/ip_vs_lc.c b/net/ipv4/ipvs/ip_vs_lc.c --- a/net/ipv4/ipvs/ip_vs_lc.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv4/ipvs/ip_vs_lc.c Mon Sep 22 00:30:24 2003 @@ -65,7 +65,6 @@ static struct ip_vs_dest * ip_vs_lc_schedule(struct ip_vs_service *svc, struct iphdr *iph) { - struct list_head *l, *e; struct ip_vs_dest *dest, *least; unsigned int loh, doh; @@ -80,9 +79,7 @@ * served, but no new connection is assigned to the server. */ - l = &svc->destinations; - for (e=l->next; e!=l; e=e->next) { - least = list_entry (e, struct ip_vs_dest, n_list); + list_for_each_entry(least, &svc->destinations, n_list) { if (least->flags & IP_VS_DEST_F_OVERLOAD) continue; if (atomic_read(&least->weight) > 0) { @@ -96,8 +93,7 @@ * Find the destination with the least load. */ nextstage: - for (e=e->next; e!=l; e=e->next) { - dest = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(dest, &svc->destinations, n_list) { if ((dest->flags & IP_VS_DEST_F_OVERLOAD) || atomic_read(&dest->weight) == 0) continue; diff -Nru a/net/ipv4/ipvs/ip_vs_nq.c b/net/ipv4/ipvs/ip_vs_nq.c --- a/net/ipv4/ipvs/ip_vs_nq.c Mon Sep 22 00:30:25 2003 +++ b/net/ipv4/ipvs/ip_vs_nq.c Mon Sep 22 00:30:25 2003 @@ -81,7 +81,6 @@ static struct ip_vs_dest * ip_vs_nq_schedule(struct ip_vs_service *svc, struct iphdr *iph) { - register struct list_head *l, *e; struct ip_vs_dest *dest, *least; unsigned int loh, doh; @@ -100,9 +99,7 @@ * new connections. */ - l = &svc->destinations; - for (e=l->next; e!=l; e=e->next) { - least = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(least, &svc->destinations, n_list) { if (!(least->flags & IP_VS_DEST_F_OVERLOAD) && atomic_read(&least->weight) > 0) { loh = ip_vs_nq_dest_overhead(least); @@ -120,8 +117,7 @@ * Find the destination with the least load. */ nextstage: - for (e=e->next; e!=l; e=e->next) { - dest = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(dest, &svc->destinations, n_list) { if (dest->flags & IP_VS_DEST_F_OVERLOAD) continue; diff -Nru a/net/ipv4/ipvs/ip_vs_proto_tcp.c b/net/ipv4/ipvs/ip_vs_proto_tcp.c --- a/net/ipv4/ipvs/ip_vs_proto_tcp.c Mon Sep 22 00:30:20 2003 +++ b/net/ipv4/ipvs/ip_vs_proto_tcp.c Mon Sep 22 00:30:20 2003 @@ -479,22 +479,19 @@ static int tcp_register_app(struct ip_vs_app *inc) { struct ip_vs_app *i; - struct list_head *t, *p; __u16 hash, port = inc->port; int ret = 0; hash = tcp_app_hashkey(port); - t = &tcp_apps[hash]; spin_lock_bh(&tcp_app_lock); - for (p = t->next; p != t; p = p->next) { - i = list_entry(p, struct ip_vs_app, p_list); + list_for_each_entry(i, &tcp_apps[hash], p_list) { if (i->port == port) { ret = -EEXIST; goto out; } } - list_add(&inc->p_list, t); + list_add(&inc->p_list, &tcp_apps[hash]); atomic_inc(&ip_vs_protocol_tcp.appcnt); out: @@ -516,7 +513,6 @@ static int tcp_app_conn_bind(struct ip_vs_conn *cp) { - struct list_head *t, *p; int hash; struct ip_vs_app *inc; int result = 0; @@ -527,11 +523,9 @@ /* Lookup application incarnations and bind the right one */ hash = tcp_app_hashkey(cp->vport); - t = &tcp_apps[hash]; spin_lock(&tcp_app_lock); - for (p = t->next; p != t; p = p->next) { - inc = list_entry(p, struct ip_vs_app, p_list); + list_for_each_entry(inc, &tcp_apps[hash], p_list) { if (inc->port == cp->vport) { if (unlikely(!ip_vs_app_inc_get(inc))) break; diff -Nru a/net/ipv4/ipvs/ip_vs_proto_udp.c b/net/ipv4/ipvs/ip_vs_proto_udp.c --- a/net/ipv4/ipvs/ip_vs_proto_udp.c Mon Sep 22 00:30:25 2003 +++ b/net/ipv4/ipvs/ip_vs_proto_udp.c Mon Sep 22 00:30:25 2003 @@ -245,22 +245,20 @@ static int udp_register_app(struct ip_vs_app *inc) { struct ip_vs_app *i; - struct list_head *t, *p; __u16 hash, port = inc->port; int ret = 0; hash = udp_app_hashkey(port); - t = &udp_apps[hash]; + spin_lock_bh(&udp_app_lock); - for (p = t->next; p != t; p = p->next) { - i = list_entry(p, struct ip_vs_app, p_list); + list_for_each_entry(i, &udp_apps[hash], p_list) { if (i->port == port) { ret = -EEXIST; goto out; } } - list_add(&inc->p_list, t); + list_add(&inc->p_list, &udp_apps[hash]); atomic_inc(&ip_vs_protocol_udp.appcnt); out: @@ -281,7 +279,6 @@ static int udp_app_conn_bind(struct ip_vs_conn *cp) { - struct list_head *t, *p; int hash; struct ip_vs_app *inc; int result = 0; @@ -292,11 +289,9 @@ /* Lookup application incarnations and bind the right one */ hash = udp_app_hashkey(cp->vport); - t = &udp_apps[hash]; spin_lock(&udp_app_lock); - for (p = t->next; p != t; p = p->next) { - inc = list_entry(p, struct ip_vs_app, p_list); + list_for_each_entry(inc, &udp_apps[hash], p_list) { if (inc->port == cp->vport) { if (unlikely(!ip_vs_app_inc_get(inc))) break; diff -Nru a/net/ipv4/ipvs/ip_vs_rr.c b/net/ipv4/ipvs/ip_vs_rr.c --- a/net/ipv4/ipvs/ip_vs_rr.c Mon Sep 22 00:30:22 2003 +++ b/net/ipv4/ipvs/ip_vs_rr.c Mon Sep 22 00:30:22 2003 @@ -57,7 +57,7 @@ static struct ip_vs_dest * ip_vs_rr_schedule(struct ip_vs_service *svc, struct iphdr *iph) { - register struct list_head *p, *q; + struct list_head *p, *q; struct ip_vs_dest *dest; IP_VS_DBG(6, "ip_vs_rr_schedule(): Scheduling...\n"); @@ -73,12 +73,12 @@ continue; } + dest = list_entry(q, struct ip_vs_dest, n_list); if (!(dest->flags & IP_VS_DEST_F_OVERLOAD) && atomic_read(&dest->weight) > 0) /* HIT */ goto out; - q = q->next; } while (q != p); write_unlock(&svc->sched_lock); return NULL; diff -Nru a/net/ipv4/ipvs/ip_vs_sched.c b/net/ipv4/ipvs/ip_vs_sched.c --- a/net/ipv4/ipvs/ip_vs_sched.c Mon Sep 22 00:30:18 2003 +++ b/net/ipv4/ipvs/ip_vs_sched.c Mon Sep 22 00:30:18 2003 @@ -106,18 +106,13 @@ static struct ip_vs_scheduler *ip_vs_sched_getbyname(const char *sched_name) { struct ip_vs_scheduler *sched; - struct list_head *l, *e; IP_VS_DBG(2, "ip_vs_sched_getbyname(): sched_name \"%s\"\n", sched_name); - l = &ip_vs_schedulers; - read_lock_bh(&__ip_vs_sched_lock); - for (e=l->next; e!=l; e=e->next) { - sched = list_entry(e, struct ip_vs_scheduler, n_list); - + list_for_each_entry(sched, &ip_vs_schedulers, n_list) { /* * Test and get the modules atomically */ diff -Nru a/net/ipv4/ipvs/ip_vs_sed.c b/net/ipv4/ipvs/ip_vs_sed.c --- a/net/ipv4/ipvs/ip_vs_sed.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv4/ipvs/ip_vs_sed.c Mon Sep 22 00:30:24 2003 @@ -85,7 +85,6 @@ static struct ip_vs_dest * ip_vs_sed_schedule(struct ip_vs_service *svc, struct iphdr *iph) { - register struct list_head *l, *e; struct ip_vs_dest *dest, *least; unsigned int loh, doh; @@ -104,9 +103,7 @@ * new connections. */ - l = &svc->destinations; - for (e=l->next; e!=l; e=e->next) { - least = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(least, &svc->destinations, n_list) { if (!(least->flags & IP_VS_DEST_F_OVERLOAD) && atomic_read(&least->weight) > 0) { loh = ip_vs_sed_dest_overhead(least); @@ -119,9 +116,7 @@ * Find the destination with the least load. */ nextstage: - for (e=e->next; e!=l; e=e->next) { - dest = list_entry(e, struct ip_vs_dest, n_list); - + list_for_each_entry(dest, &svc->destinations, n_list) { if (dest->flags & IP_VS_DEST_F_OVERLOAD) continue; doh = ip_vs_sed_dest_overhead(dest); diff -Nru a/net/ipv4/ipvs/ip_vs_sync.c b/net/ipv4/ipvs/ip_vs_sync.c --- a/net/ipv4/ipvs/ip_vs_sync.c Mon Sep 22 00:30:17 2003 +++ b/net/ipv4/ipvs/ip_vs_sync.c Mon Sep 22 00:30:17 2003 @@ -206,8 +206,8 @@ struct ip_vs_sync_buff *sb; spin_lock_bh(&curr_sb_lock); - if (curr_sb && - (jiffies - curr_sb->firstuse > time || time == 0)) { + if (curr_sb && (time == 0 || + time_before(jiffies - curr_sb->firstuse, time))) { sb = curr_sb; curr_sb = NULL; } else diff -Nru a/net/ipv4/ipvs/ip_vs_wlc.c b/net/ipv4/ipvs/ip_vs_wlc.c --- a/net/ipv4/ipvs/ip_vs_wlc.c Mon Sep 22 00:30:22 2003 +++ b/net/ipv4/ipvs/ip_vs_wlc.c Mon Sep 22 00:30:22 2003 @@ -73,7 +73,6 @@ static struct ip_vs_dest * ip_vs_wlc_schedule(struct ip_vs_service *svc, struct iphdr *iph) { - register struct list_head *l, *e; struct ip_vs_dest *dest, *least; unsigned int loh, doh; @@ -92,9 +91,7 @@ * new connections. */ - l = &svc->destinations; - for (e=l->next; e!=l; e=e->next) { - least = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(least, &svc->destinations, n_list) { if (!(least->flags & IP_VS_DEST_F_OVERLOAD) && atomic_read(&least->weight) > 0) { loh = ip_vs_wlc_dest_overhead(least); @@ -107,9 +104,7 @@ * Find the destination with the least load. */ nextstage: - for (e=e->next; e!=l; e=e->next) { - dest = list_entry(e, struct ip_vs_dest, n_list); - + list_for_each_entry(dest, &svc->destinations, n_list) { if (dest->flags & IP_VS_DEST_F_OVERLOAD) continue; doh = ip_vs_wlc_dest_overhead(dest); diff -Nru a/net/ipv4/ipvs/ip_vs_wrr.c b/net/ipv4/ipvs/ip_vs_wrr.c --- a/net/ipv4/ipvs/ip_vs_wrr.c Mon Sep 22 00:30:18 2003 +++ b/net/ipv4/ipvs/ip_vs_wrr.c Mon Sep 22 00:30:18 2003 @@ -56,25 +56,22 @@ static int ip_vs_wrr_gcd_weight(struct ip_vs_service *svc) { - register struct list_head *l, *e; struct ip_vs_dest *dest; int weight; int g = 1; - l = &svc->destinations; - for (e=l->next; e!=l; e=e->next) { - dest = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(dest, &svc->destinations, n_list) { weight = atomic_read(&dest->weight); if (weight > 0) { g = weight; - break; + goto search_gcd; } } - if (e == l) - return g; - for (e=e->next; e!=l; e=e->next) { - dest = list_entry(e, struct ip_vs_dest, n_list); + return g; + + search_gcd: + list_for_each_entry(dest, &svc->destinations, n_list) { weight = atomic_read(&dest->weight); if (weight > 0) g = gcd(weight, g); @@ -89,13 +86,10 @@ */ static int ip_vs_wrr_max_weight(struct ip_vs_service *svc) { - register struct list_head *l, *e; struct ip_vs_dest *dest; int weight = 0; - l = &svc->destinations; - for (e=l->next; e!=l; e=e->next) { - dest = list_entry(e, struct ip_vs_dest, n_list); + list_for_each_entry(dest, &svc->destinations, n_list) { if (atomic_read(&dest->weight) > weight) weight = atomic_read(&dest->weight); } diff -Nru a/net/ipv4/netfilter/ip_nat_amanda.c b/net/ipv4/netfilter/ip_nat_amanda.c --- a/net/ipv4/netfilter/ip_nat_amanda.c Mon Sep 22 00:30:19 2003 +++ b/net/ipv4/netfilter/ip_nat_amanda.c Mon Sep 22 00:30:19 2003 @@ -101,7 +101,7 @@ struct ip_conntrack_expect *exp = expect; struct ip_ct_amanda_expect *ct_amanda_info = &exp->help.exp_amanda_info; struct ip_conntrack_tuple t = exp->tuple; - int port; + u_int16_t port; MUST_BE_LOCKED(&ip_amanda_lock); @@ -115,7 +115,7 @@ writable */ t.dst.ip = newip; - for (port = ct_amanda_info->port + 10; port != 0; port++) { + for (port = ct_amanda_info->port; port != 0; port++) { t.dst.u.tcp.port = htons(port); if (ip_conntrack_change_expect(exp, &t) == 0) break; diff -Nru a/net/ipv4/netfilter/ip_nat_irc.c b/net/ipv4/netfilter/ip_nat_irc.c --- a/net/ipv4/netfilter/ip_nat_irc.c Mon Sep 22 00:30:25 2003 +++ b/net/ipv4/netfilter/ip_nat_irc.c Mon Sep 22 00:30:25 2003 @@ -99,7 +99,7 @@ struct ip_conntrack_tuple t; struct iphdr *iph = (*pskb)->nh.iph; struct tcphdr *tcph = (void *) iph + iph->ihl * 4; - int port; + u_int16_t port; /* "4294967296 65635 " */ char buffer[18]; diff -Nru a/net/ipv4/netfilter/ip_nat_snmp_basic.c b/net/ipv4/netfilter/ip_nat_snmp_basic.c --- a/net/ipv4/netfilter/ip_nat_snmp_basic.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv4/netfilter/ip_nat_snmp_basic.c Mon Sep 22 00:30:24 2003 @@ -51,9 +51,9 @@ #include #include #include +#include #include #include -#include MODULE_LICENSE("GPL"); MODULE_AUTHOR("James Morris "); diff -Nru a/net/ipv4/netfilter/ip_nat_tftp.c b/net/ipv4/netfilter/ip_nat_tftp.c --- a/net/ipv4/netfilter/ip_nat_tftp.c Mon Sep 22 00:30:20 2003 +++ b/net/ipv4/netfilter/ip_nat_tftp.c Mon Sep 22 00:30:20 2003 @@ -30,7 +30,7 @@ #include MODULE_AUTHOR("Magnus Boden "); -MODULE_DESCRIPTION("tfpt NAT helper"); +MODULE_DESCRIPTION("tftp NAT helper"); MODULE_LICENSE("GPL"); #define MAX_PORTS 8 diff -Nru a/net/ipv4/netfilter/ipt_MASQUERADE.c b/net/ipv4/netfilter/ipt_MASQUERADE.c --- a/net/ipv4/netfilter/ipt_MASQUERADE.c Mon Sep 22 00:30:22 2003 +++ b/net/ipv4/netfilter/ipt_MASQUERADE.c Mon Sep 22 00:30:22 2003 @@ -130,57 +130,35 @@ } static inline int -device_cmp(const struct ip_conntrack *i, void *ifindex) +device_cmp(const struct ip_conntrack *i, void *_ina) { - int ret; + int ret = 0; + struct in_ifaddr *ina = _ina; READ_LOCK(&masq_lock); - ret = (i->nat.masq_index == (int)(long)ifindex); + /* If it's masquerading out this interface with a different address, + or we don't know the new address of this interface. */ + if (i->nat.masq_index == ina->ifa_dev->dev->ifindex + && i->tuplehash[IP_CT_DIR_REPLY].tuple.dst.ip != ina->ifa_address) + ret = 1; READ_UNLOCK(&masq_lock); return ret; } -static int masq_device_event(struct notifier_block *this, - unsigned long event, - void *ptr) -{ - struct net_device *dev = ptr; - - if (event == NETDEV_DOWN) { - /* Device was downed. Search entire table for - conntracks which were associated with that device, - and forget them. */ - IP_NF_ASSERT(dev->ifindex != 0); - - ip_ct_selective_cleanup(device_cmp, (void *)(long)dev->ifindex); - } - - return NOTIFY_DONE; -} - static int masq_inet_event(struct notifier_block *this, unsigned long event, void *ptr) { - struct net_device *dev = ((struct in_ifaddr *)ptr)->ifa_dev->dev; - - if (event == NETDEV_DOWN) { - /* IP address was deleted. Search entire table for - conntracks which were associated with that device, - and forget them. */ - IP_NF_ASSERT(dev->ifindex != 0); - - ip_ct_selective_cleanup(device_cmp, (void *)(long)dev->ifindex); - } + /* For some configurations, interfaces often come back with + * the same address. If not, clean up old conntrack + * entries. */ + if (event == NETDEV_UP) + ip_ct_selective_cleanup(device_cmp, ptr); return NOTIFY_DONE; } -static struct notifier_block masq_dev_notifier = { - .notifier_call = masq_device_event, -}; - static struct notifier_block masq_inet_notifier = { .notifier_call = masq_inet_event, }; @@ -198,12 +176,9 @@ ret = ipt_register_target(&masquerade); - if (ret == 0) { - /* Register for device down reports */ - register_netdevice_notifier(&masq_dev_notifier); + if (ret == 0) /* Register IP address change reports */ register_inetaddr_notifier(&masq_inet_notifier); - } return ret; } @@ -211,7 +186,6 @@ static void __exit fini(void) { ipt_unregister_target(&masquerade); - unregister_netdevice_notifier(&masq_dev_notifier); unregister_inetaddr_notifier(&masq_inet_notifier); } diff -Nru a/net/ipv4/netfilter/ipt_REJECT.c b/net/ipv4/netfilter/ipt_REJECT.c --- a/net/ipv4/netfilter/ipt_REJECT.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv4/netfilter/ipt_REJECT.c Mon Sep 22 00:30:24 2003 @@ -84,45 +84,34 @@ static void send_reset(struct sk_buff *oldskb, int local) { struct sk_buff *nskb; - struct tcphdr *otcph, *tcph; + struct tcphdr otcph, *tcph; struct rtable *rt; - unsigned int otcplen; u_int16_t tmp_port; u_int32_t tmp_addr; int needs_ack; int hh_len; - /* IP header checks: fragment, too short. */ - if (oldskb->nh.iph->frag_off & htons(IP_OFFSET) - || oldskb->len < (oldskb->nh.iph->ihl<<2) + sizeof(struct tcphdr)) + /* IP header checks: fragment. */ + if (oldskb->nh.iph->frag_off & htons(IP_OFFSET)) return; - otcph = (struct tcphdr *)((u_int32_t*)oldskb->nh.iph + oldskb->nh.iph->ihl); - otcplen = oldskb->len - oldskb->nh.iph->ihl*4; - if (skb_copy_bits(oldskb, oldskb->nh.iph->ihl*4, - otcph, sizeof(*otcph)) < 0) - return; + &otcph, sizeof(otcph)) < 0) + return; /* No RST for RST. */ - if (otcph->rst) - return; - - /* Check checksum. */ - if (tcp_v4_check(otcph, otcplen, oldskb->nh.iph->saddr, - oldskb->nh.iph->daddr, - csum_partial((char *)otcph, otcplen, 0)) != 0) + if (otcph.rst) return; + /* FIXME: Check checksum --RR */ if ((rt = route_reverse(oldskb, local)) == NULL) return; hh_len = (rt->u.dst.dev->hard_header_len + 15)&~15; - /* Copy skb (even if skb is about to be dropped, we can't just - clone it because there may be other things, such as tcpdump, - interested in it). We also need to expand headroom in case - hh_len of incoming interface < hh_len of outgoing interface */ + /* We need a linear, writeable skb. We also need to expand + headroom in case hh_len of incoming interface < hh_len of + outgoing interface */ nskb = skb_copy_expand(oldskb, hh_len, skb_tailroom(oldskb), GFP_ATOMIC); if (!nskb) { @@ -163,12 +152,13 @@ if (tcph->ack) { needs_ack = 0; - tcph->seq = otcph->ack_seq; + tcph->seq = otcph.ack_seq; tcph->ack_seq = 0; } else { needs_ack = 1; - tcph->ack_seq = htonl(ntohl(otcph->seq) + otcph->syn + otcph->fin - + otcplen - (otcph->doff<<2)); + tcph->ack_seq = htonl(ntohl(otcph.seq) + otcph.syn + otcph.fin + + oldskb->len - oldskb->nh.iph->ihl*4 + - (otcph.doff<<2)); tcph->seq = 0; } diff -Nru a/net/ipv4/netfilter/ipt_physdev.c b/net/ipv4/netfilter/ipt_physdev.c --- a/net/ipv4/netfilter/ipt_physdev.c Mon Sep 22 00:30:20 2003 +++ b/net/ipv4/netfilter/ipt_physdev.c Mon Sep 22 00:30:20 2003 @@ -23,7 +23,7 @@ int i; static const char nulldevname[IFNAMSIZ]; const struct ipt_physdev_info *info = matchinfo; - unsigned long ret; + unsigned int ret; const char *indev, *outdev; struct nf_bridge_info *nf_bridge; @@ -65,10 +65,10 @@ if (!(info->bitmask & IPT_PHYSDEV_OP_IN)) goto match_outdev; indev = nf_bridge->physindev ? nf_bridge->physindev->name : nulldevname; - for (i = 0, ret = 0; i < IFNAMSIZ/sizeof(unsigned long); i++) { - ret |= (((const unsigned long *)indev)[i] - ^ ((const unsigned long *)info->physindev)[i]) - & ((const unsigned long *)info->in_mask)[i]; + for (i = 0, ret = 0; i < IFNAMSIZ/sizeof(unsigned int); i++) { + ret |= (((const unsigned int *)indev)[i] + ^ ((const unsigned int *)info->physindev)[i]) + & ((const unsigned int *)info->in_mask)[i]; } if ((ret == 0) ^ !(info->invert & IPT_PHYSDEV_OP_IN)) @@ -79,10 +79,10 @@ return MATCH; outdev = nf_bridge->physoutdev ? nf_bridge->physoutdev->name : nulldevname; - for (i = 0, ret = 0; i < IFNAMSIZ/sizeof(unsigned long); i++) { - ret |= (((const unsigned long *)outdev)[i] - ^ ((const unsigned long *)info->physoutdev)[i]) - & ((const unsigned long *)info->out_mask)[i]; + for (i = 0, ret = 0; i < IFNAMSIZ/sizeof(unsigned int); i++) { + ret |= (((const unsigned int *)outdev)[i] + ^ ((const unsigned int *)info->physoutdev)[i]) + & ((const unsigned int *)info->out_mask)[i]; } return (ret != 0) ^ !(info->invert & IPT_PHYSDEV_OP_OUT); diff -Nru a/net/ipv4/proc.c b/net/ipv4/proc.c --- a/net/ipv4/proc.c Mon Sep 22 00:30:18 2003 +++ b/net/ipv4/proc.c Mon Sep 22 00:30:18 2003 @@ -238,28 +238,21 @@ int __init ip_misc_proc_init(void) { int rc = 0; - struct proc_dir_entry *p; - p = create_proc_entry("netstat", S_IRUGO, proc_net); - if (!p) + if (!proc_net_fops_create("netstat", S_IRUGO, &netstat_seq_fops)) goto out_netstat; - p->proc_fops = &netstat_seq_fops; - p = create_proc_entry("snmp", S_IRUGO, proc_net); - if (!p) + if (!proc_net_fops_create("snmp", S_IRUGO, &snmp_seq_fops)) goto out_snmp; - p->proc_fops = &snmp_seq_fops; - p = create_proc_entry("sockstat", S_IRUGO, proc_net); - if (!p) + if (!proc_net_fops_create("sockstat", S_IRUGO, &sockstat_seq_fops)) goto out_sockstat; - p->proc_fops = &sockstat_seq_fops; out: return rc; out_sockstat: - remove_proc_entry("snmp", proc_net); + proc_net_remove("snmp"); out_snmp: - remove_proc_entry("netstat", proc_net); + proc_net_remove("netstat"); out_netstat: rc = -ENOMEM; goto out; diff -Nru a/net/ipv4/raw.c b/net/ipv4/raw.c --- a/net/ipv4/raw.c Mon Sep 22 00:30:22 2003 +++ b/net/ipv4/raw.c Mon Sep 22 00:30:22 2003 @@ -736,14 +736,14 @@ static void *raw_seq_start(struct seq_file *seq, loff_t *pos) { read_lock(&raw_v4_lock); - return *pos ? raw_get_idx(seq, *pos) : (void *)1; + return *pos ? raw_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; } static void *raw_seq_next(struct seq_file *seq, void *v, loff_t *pos) { struct sock *sk; - if (v == (void *)1) + if (v == SEQ_START_TOKEN) sk = raw_get_first(seq); else sk = raw_get_next(seq, v); @@ -778,7 +778,7 @@ { char tmpbuf[129]; - if (v == (void *)1) + if (v == SEQ_START_TOKEN) seq_printf(seq, "%-127s\n", " sl local_address rem_address st tx_queue " "rx_queue tr tm->when retrnsmt uid timeout " @@ -831,19 +831,13 @@ int __init raw_proc_init(void) { - struct proc_dir_entry *p; - int rc = 0; - - p = create_proc_entry("raw", S_IRUGO, proc_net); - if (p) - p->proc_fops = &raw_seq_fops; - else - rc = -ENOMEM; - return rc; + if (!proc_net_fops_create("raw", S_IRUGO, &raw_seq_fops)) + return -ENOMEM; + return 0; } void __init raw_proc_exit(void) { - remove_proc_entry("raw", proc_net); + proc_net_remove("raw"); } #endif /* CONFIG_PROC_FS */ diff -Nru a/net/ipv4/route.c b/net/ipv4/route.c --- a/net/ipv4/route.c Mon Sep 22 00:30:25 2003 +++ b/net/ipv4/route.c Mon Sep 22 00:30:25 2003 @@ -259,14 +259,14 @@ static void *rt_cache_seq_start(struct seq_file *seq, loff_t *pos) { - return *pos ? rt_cache_get_idx(seq, *pos) : (void *)1; + return *pos ? rt_cache_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; } static void *rt_cache_seq_next(struct seq_file *seq, void *v, loff_t *pos) { struct rtable *r = NULL; - if (v == (void *)1) + if (v == SEQ_START_TOKEN) r = rt_cache_get_first(seq); else r = rt_cache_get_next(seq, v); @@ -276,13 +276,13 @@ static void rt_cache_seq_stop(struct seq_file *seq, void *v) { - if (v && v != (void *)1) + if (v && v != SEQ_START_TOKEN) rcu_read_unlock(); } static int rt_cache_seq_show(struct seq_file *seq, void *v) { - if (v == (void *)1) + if (v == SEQ_START_TOKEN) seq_printf(seq, "%-127s\n", "Iface\tDestination\tGateway \tFlags\t\tRefCnt\tUse\t" "Metric\tSource\t\tMTU\tWindow\tIRTT\tTOS\tHHRef\t" diff -Nru a/net/ipv4/tcp_diag.c b/net/ipv4/tcp_diag.c --- a/net/ipv4/tcp_diag.c Mon Sep 22 00:30:18 2003 +++ b/net/ipv4/tcp_diag.c Mon Sep 22 00:30:18 2003 @@ -213,7 +213,7 @@ int dif); #endif -static int tcpdiag_get_exact(struct sk_buff *in_skb, struct nlmsghdr *nlh) +static int tcpdiag_get_exact(struct sk_buff *in_skb, const struct nlmsghdr *nlh) { int err; struct sock *sk; @@ -272,7 +272,7 @@ return err; } -int bitstring_match(u32 *a1, u32 *a2, int bits) +static int bitstring_match(const u32 *a1, const u32 *a2, int bits) { int words = bits >> 5; @@ -299,12 +299,12 @@ } -int tcpdiag_bc_run(char *bc, int len, struct sock *sk) +static int tcpdiag_bc_run(const void *bc, int len, struct sock *sk) { while (len > 0) { int yes = 1; struct inet_opt *inet = inet_sk(sk); - struct tcpdiag_bc_op *op = (struct tcpdiag_bc_op*)bc; + const struct tcpdiag_bc_op *op = bc; switch (op->code) { case TCPDIAG_BC_NOP: @@ -385,10 +385,10 @@ return (len == 0); } -int valid_cc(char *bc, int len, int cc) +static int valid_cc(const void *bc, int len, int cc) { while (len >= 0) { - struct tcpdiag_bc_op *op = (struct tcpdiag_bc_op*)bc; + const struct tcpdiag_bc_op *op = bc; if (cc > len) return 0; @@ -402,9 +402,9 @@ return 0; } -int tcpdiag_bc_audit(char *bytecode, int bytecode_len) +static int tcpdiag_bc_audit(const void *bytecode, int bytecode_len) { - char *bc = bytecode; + const unsigned char *bc = bytecode; int len = bytecode_len; while (len > 0) { @@ -442,7 +442,7 @@ } -int tcpdiag_dump(struct sk_buff *skb, struct netlink_callback *cb) +static int tcpdiag_dump(struct sk_buff *skb, struct netlink_callback *cb) { int i, num; int s_i, s_num; diff -Nru a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c --- a/net/ipv4/tcp_ipv4.c Mon Sep 22 00:30:20 2003 +++ b/net/ipv4/tcp_ipv4.c Mon Sep 22 00:30:20 2003 @@ -2351,7 +2351,7 @@ static void *tcp_seq_start(struct seq_file *seq, loff_t *pos) { - return *pos ? tcp_get_idx(seq, *pos - 1) : (void *)1; + return *pos ? tcp_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; } static void *tcp_seq_next(struct seq_file *seq, void *v, loff_t *pos) @@ -2359,7 +2359,7 @@ void *rc = NULL; struct tcp_iter_state* st; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { rc = tcp_get_idx(seq, 0); goto out; } @@ -2397,7 +2397,7 @@ read_unlock_bh(&tp->syn_wait_lock); } case TCP_SEQ_STATE_LISTENING: - if (v != (void *)1) + if (v != SEQ_START_TOKEN) tcp_listen_unlock(); break; case TCP_SEQ_STATE_TIME_WAIT: @@ -2413,11 +2413,15 @@ { struct tcp_seq_afinfo *afinfo = PDE(inode)->data; struct seq_file *seq; - int rc = -ENOMEM; - struct tcp_iter_state *s = kmalloc(sizeof(*s), GFP_KERNEL); + struct tcp_iter_state *s; + int rc; + if (unlikely(afinfo == NULL)) + return -EINVAL; + + s = kmalloc(sizeof(*s), GFP_KERNEL); if (!s) - goto out; + return -ENOMEM; memset(s, 0, sizeof(*s)); s->family = afinfo->family; s->seq_ops.start = tcp_seq_start; @@ -2450,11 +2454,10 @@ afinfo->seq_fops->llseek = seq_lseek; afinfo->seq_fops->release = seq_release_private; - p = create_proc_entry(afinfo->name, S_IRUGO, proc_net); - if (p) { + p = proc_net_fops_create(afinfo->name, S_IRUGO, afinfo->seq_fops); + if (p) p->data = afinfo; - p->proc_fops = afinfo->seq_fops; - } else + else rc = -ENOMEM; return rc; } @@ -2463,7 +2466,7 @@ { if (!afinfo) return; - remove_proc_entry(afinfo->name, proc_net); + proc_net_remove(afinfo->name); memset(afinfo->seq_fops, 0, sizeof(*afinfo->seq_fops)); } @@ -2559,7 +2562,7 @@ struct tcp_iter_state* st; char tmpbuf[TMPSZ + 1]; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_printf(seq, "%-*s\n", TMPSZ - 1, " sl local_address rem_address st tx_queue " "rx_queue tr tm->when retrnsmt uid timeout " diff -Nru a/net/ipv4/udp.c b/net/ipv4/udp.c --- a/net/ipv4/udp.c Mon Sep 22 00:30:19 2003 +++ b/net/ipv4/udp.c Mon Sep 22 00:30:19 2003 @@ -384,6 +384,7 @@ struct udp_opt *up = udp_sk(sk); if (up->pending) { + up->len = 0; up->pending = 0; ip_flush_pending_frames(sk); } @@ -1460,11 +1461,10 @@ afinfo->seq_fops->llseek = seq_lseek; afinfo->seq_fops->release = seq_release_private; - p = create_proc_entry(afinfo->name, S_IRUGO, proc_net); - if (p) { + p = proc_net_fops_create(afinfo->name, S_IRUGO, afinfo->seq_fops); + if (p) p->data = afinfo; - p->proc_fops = afinfo->seq_fops; - } else + else rc = -ENOMEM; return rc; } @@ -1473,7 +1473,7 @@ { if (!afinfo) return; - remove_proc_entry(afinfo->name, proc_net); + proc_net_remove(afinfo->name); memset(afinfo->seq_fops, 0, sizeof(*afinfo->seq_fops)); } @@ -1497,7 +1497,7 @@ static int udp4_seq_show(struct seq_file *seq, void *v) { - if (v == (void *)1) + if (v == SEQ_START_TOKEN) seq_printf(seq, "%-127s\n", " sl local_address rem_address st tx_queue " "rx_queue tr tm->when retrnsmt uid timeout " diff -Nru a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c --- a/net/ipv6/addrconf.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv6/addrconf.c Mon Sep 22 00:30:24 2003 @@ -2149,59 +2149,65 @@ int bucket; }; -static inline struct inet6_ifaddr *if6_get_bucket(struct seq_file *seq, loff_t *pos) +static struct inet6_ifaddr *if6_get_first(struct seq_file *seq) { - int i; struct inet6_ifaddr *ifa = NULL; - loff_t l = *pos; struct if6_iter_state *state = seq->private; - for (; state->bucket < IN6_ADDR_HSIZE; ++state->bucket) - for (i = 0, ifa = inet6_addr_lst[state->bucket]; ifa; ++i, ifa=ifa->lst_next) { - if (l--) - continue; - *pos = i; - goto out; - } -out: + for (state->bucket = 0; state->bucket < IN6_ADDR_HSIZE; ++state->bucket) { + ifa = inet6_addr_lst[state->bucket]; + if (ifa) + break; + } + return ifa; +} + +static struct inet6_ifaddr *if6_get_next(struct seq_file *seq, struct inet6_ifaddr *ifa) +{ + struct if6_iter_state *state = seq->private; + + ifa = ifa->lst_next; +try_again: + if (!ifa && ++state->bucket < IN6_ADDR_HSIZE) { + ifa = inet6_addr_lst[state->bucket]; + goto try_again; + } return ifa; } +static struct inet6_ifaddr *if6_get_idx(struct seq_file *seq, loff_t pos) +{ + struct inet6_ifaddr *ifa = if6_get_first(seq); + + if (ifa) + while(pos && (ifa = if6_get_next(seq, ifa)) != NULL) + --pos; + return pos ? NULL : ifa; +} + static void *if6_seq_start(struct seq_file *seq, loff_t *pos) { read_lock_bh(&addrconf_hash_lock); - return *pos ? if6_get_bucket(seq, pos) : (void *)1; + return if6_get_idx(seq, *pos); } static void *if6_seq_next(struct seq_file *seq, void *v, loff_t *pos) { struct inet6_ifaddr *ifa; - struct if6_iter_state *state; - - if (v == (void *)1) { - ifa = if6_get_bucket(seq, pos); - goto out; - } - - state = seq->private; - ifa = v; - ifa = ifa->lst_next; - if (ifa) - goto out; - - if (++state->bucket >= IN6_ADDR_HSIZE) - goto out; - - *pos = 0; - ifa = if6_get_bucket(seq, pos); -out: + ifa = if6_get_next(seq, v); ++*pos; return ifa; } -static inline void if6_iface_seq_show(struct seq_file *seq, struct inet6_ifaddr *ifp) +static void if6_seq_stop(struct seq_file *seq, void *v) { + read_unlock_bh(&addrconf_hash_lock); +} + +static int if6_seq_show(struct seq_file *seq, void *v) +{ + struct inet6_ifaddr *ifp = (struct inet6_ifaddr *)v; seq_printf(seq, "%04x%04x%04x%04x%04x%04x%04x%04x %02x %02x %02x %02x %8s\n", NIP6(ifp->addr), @@ -2210,22 +2216,9 @@ ifp->scope, ifp->flags, ifp->idev->dev->name); -} - -static int if6_seq_show(struct seq_file *seq, void *v) -{ - if (v == (void *)1) - return 0; - else - if6_iface_seq_show(seq, v); return 0; } -static void if6_seq_stop(struct seq_file *seq, void *v) -{ - read_unlock_bh(&addrconf_hash_lock); -} - static struct seq_operations if6_seq_ops = { .start = if6_seq_start, .next = if6_seq_next, @@ -2266,16 +2259,11 @@ int __init if6_proc_init(void) { - struct proc_dir_entry *p; - int rc = 0; - - p = create_proc_entry("if_inet6", S_IRUGO, proc_net); - if (p) - p->proc_fops = &if6_fops; - else - rc = -ENOMEM; - return rc; + if (!proc_net_fops_create("if_inet6", S_IRUGO, &if6_fops)) + return -ENOMEM; + return 0; } + void if6_proc_exit(void) { proc_net_remove("if_inet6"); @@ -2529,7 +2517,109 @@ netlink_broadcast(rtnl, skb, 0, RTMGRP_IPV6_IFADDR, GFP_ATOMIC); } +static void inline ipv6_store_devconf(struct ipv6_devconf *cnf, + __s32 *array, int bytes) +{ + memset(array, 0, bytes); + array[DEVCONF_FORWARDING] = cnf->forwarding; + array[DEVCONF_HOPLIMIT] = cnf->hop_limit; + array[DEVCONF_MTU6] = cnf->mtu6; + array[DEVCONF_ACCEPT_RA] = cnf->accept_ra; + array[DEVCONF_ACCEPT_REDIRECTS] = cnf->accept_redirects; + array[DEVCONF_AUTOCONF] = cnf->autoconf; + array[DEVCONF_DAD_TRANSMITS] = cnf->dad_transmits; + array[DEVCONF_RTR_SOLICITS] = cnf->rtr_solicits; + array[DEVCONF_RTR_SOLICIT_INTERVAL] = cnf->rtr_solicit_interval; + array[DEVCONF_RTR_SOLICIT_DELAY] = cnf->rtr_solicit_delay; +#ifdef CONFIG_IPV6_PRIVACY + array[DEVCONF_USE_TEMPADDR] = cnf->use_tempaddr; + array[DEVCONF_TEMP_VALID_LFT] = cnf->temp_valid_lft; + array[DEVCONF_TEMP_PREFERED_LFT] = cnf->temp_prefered_lft; + array[DEVCONF_REGEN_MAX_RETRY] = cnf->regen_max_retry; + array[DEVCONF_MAX_DESYNC_FACTOR] = cnf->max_desync_factor; +#endif +} + +static int inet6_fill_ifinfo(struct sk_buff *skb, struct net_device *dev, + struct inet6_dev *idev, + int type, u32 pid, u32 seq) +{ + __s32 *array = NULL; + struct ifinfomsg *r; + struct nlmsghdr *nlh; + unsigned char *b = skb->tail; + struct rtattr *subattr; + + nlh = NLMSG_PUT(skb, pid, seq, type, sizeof(*r)); + if (pid) nlh->nlmsg_flags |= NLM_F_MULTI; + r = NLMSG_DATA(nlh); + r->ifi_family = AF_INET6; + r->ifi_type = dev->type; + r->ifi_index = dev->ifindex; + r->ifi_flags = dev->flags; + r->ifi_change = 0; + if (!netif_running(dev) || !netif_carrier_ok(dev)) + r->ifi_flags &= ~IFF_RUNNING; + else + r->ifi_flags |= IFF_RUNNING; + + RTA_PUT(skb, IFLA_IFNAME, strlen(dev->name)+1, dev->name); + + subattr = (struct rtattr*)skb->tail; + + RTA_PUT(skb, IFLA_PROTINFO, 0, NULL); + + /* return the device flags */ + RTA_PUT(skb, IFLA_INET6_FLAGS, sizeof(__u32), &idev->if_flags); + + /* return the device sysctl params */ + if ((array = kmalloc(DEVCONF_MAX * sizeof(*array), GFP_ATOMIC)) == NULL) + goto rtattr_failure; + ipv6_store_devconf(&idev->cnf, array, DEVCONF_MAX * sizeof(*array)); + RTA_PUT(skb, IFLA_INET6_CONF, DEVCONF_MAX * sizeof(*array), array); + + /* XXX - Statistics/MC not implemented */ + subattr->rta_len = skb->tail - (u8*)subattr; + + nlh->nlmsg_len = skb->tail - b; + kfree(array); + return skb->len; + +nlmsg_failure: +rtattr_failure: + if (array) + kfree(array); + skb_trim(skb, b - skb->data); + return -1; +} + +static int inet6_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb) +{ + int idx, err; + int s_idx = cb->args[0]; + struct net_device *dev; + struct inet6_dev *idev; + + read_lock(&dev_base_lock); + for (dev=dev_base, idx=0; dev; dev = dev->next, idx++) { + if (idx < s_idx) + continue; + if ((idev = in6_dev_get(dev)) == NULL) + continue; + err = inet6_fill_ifinfo(skb, dev, idev, RTM_NEWLINK, + NETLINK_CB(cb->skb).pid, cb->nlh->nlmsg_seq); + in6_dev_put(idev); + if (err <= 0) + break; + } + read_unlock(&dev_base_lock); + cb->args[0] = idx; + + return skb->len; +} + static struct rtnetlink_link inet6_rtnetlink_table[RTM_MAX - RTM_BASE + 1] = { + [RTM_GETLINK - RTM_BASE] = { .dumpit = inet6_dump_ifinfo, }, [RTM_NEWADDR - RTM_BASE] = { .doit = inet6_rtm_newaddr, }, [RTM_DELADDR - RTM_BASE] = { .doit = inet6_rtm_deladdr, }, [RTM_GETADDR - RTM_BASE] = { .dumpit = inet6_dump_ifaddr, }, diff -Nru a/net/ipv6/anycast.c b/net/ipv6/anycast.c --- a/net/ipv6/anycast.c Mon Sep 22 00:30:18 2003 +++ b/net/ipv6/anycast.c Mon Sep 22 00:30:18 2003 @@ -505,7 +505,7 @@ static void *ac6_seq_start(struct seq_file *seq, loff_t *pos) { read_lock(&dev_base_lock); - return *pos ? ac6_get_idx(seq, *pos) : ac6_get_first(seq); + return ac6_get_idx(seq, *pos); } static void *ac6_seq_next(struct seq_file *seq, void *v, loff_t *pos) @@ -581,11 +581,9 @@ int __init ac6_proc_init(void) { - struct proc_dir_entry *p; + if (!proc_net_fops_create("anycast6", S_IRUGO, &ac6_seq_fops)) + return -ENOMEM; - p = create_proc_entry("anycast6", S_IRUGO, proc_net); - if (p) - p->proc_fops = &ac6_seq_fops; return 0; } diff -Nru a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c --- a/net/ipv6/ip6_flowlabel.c Mon Sep 22 00:30:19 2003 +++ b/net/ipv6/ip6_flowlabel.c Mon Sep 22 00:30:19 2003 @@ -603,14 +603,14 @@ static void *ip6fl_seq_start(struct seq_file *seq, loff_t *pos) { read_lock_bh(&ip6_fl_lock); - return *pos ? ip6fl_get_idx(seq, *pos) : (void *)1; + return *pos ? ip6fl_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; } static void *ip6fl_seq_next(struct seq_file *seq, void *v, loff_t *pos) { struct ip6_flowlabel *fl; - if (v == (void *)1) + if (v == SEQ_START_TOKEN) fl = ip6fl_get_first(seq); else fl = ip6fl_get_next(seq, v); @@ -644,7 +644,7 @@ static int ip6fl_seq_show(struct seq_file *seq, void *v) { - if (v == (void *)1) + if (v == SEQ_START_TOKEN) seq_printf(seq, "Label S Owner Users Linger Expires " "Dst Opt\n"); else @@ -695,12 +695,7 @@ void ip6_flowlabel_init() { #ifdef CONFIG_PROC_FS - struct proc_dir_entry *p; -#endif -#ifdef CONFIG_PROC_FS - p = create_proc_entry("ip6_flowlabel", S_IRUGO, proc_net); - if (p) - p->proc_fops = &ip6fl_seq_fops; + proc_net_fops_create("ip6_flowlabel", S_IRUGO, &ip6fl_seq_fops); #endif } diff -Nru a/net/ipv6/mcast.c b/net/ipv6/mcast.c --- a/net/ipv6/mcast.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv6/mcast.c Mon Sep 22 00:30:24 2003 @@ -2119,7 +2119,7 @@ static void *igmp6_mc_seq_start(struct seq_file *seq, loff_t *pos) { read_lock(&dev_base_lock); - return *pos ? igmp6_mc_get_idx(seq, *pos) : igmp6_mc_get_first(seq); + return igmp6_mc_get_idx(seq, *pos); } static void *igmp6_mc_seq_next(struct seq_file *seq, void *v, loff_t *pos) @@ -2278,13 +2278,13 @@ static void *igmp6_mcf_seq_start(struct seq_file *seq, loff_t *pos) { read_lock(&dev_base_lock); - return *pos ? igmp6_mcf_get_idx(seq, *pos) : (void *)1; + return *pos ? igmp6_mcf_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; } static void *igmp6_mcf_seq_next(struct seq_file *seq, void *v, loff_t *pos) { struct ip6_sf_list *psf; - if (v == (void *)1) + if (v == SEQ_START_TOKEN) psf = igmp6_mcf_get_first(seq); else psf = igmp6_mcf_get_next(seq, v); @@ -2313,7 +2313,7 @@ struct ip6_sf_list *psf = (struct ip6_sf_list *)v; struct igmp6_mcf_iter_state *state = igmp6_mcf_seq_private(seq); - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_printf(seq, "%3s %6s " "%32s %32s %6s %6s\n", "Idx", @@ -2378,9 +2378,6 @@ struct ipv6_pinfo *np; struct sock *sk; int err; -#ifdef CONFIG_PROC_FS - struct proc_dir_entry *p; -#endif err = sock_create(PF_INET6, SOCK_RAW, IPPROTO_ICMPV6, &igmp6_socket); if (err < 0) { @@ -2399,12 +2396,8 @@ np->hop_limit = 1; #ifdef CONFIG_PROC_FS - p = create_proc_entry("igmp6", S_IRUGO, proc_net); - if (p) - p->proc_fops = &igmp6_mc_seq_fops; - p = create_proc_entry("mcfilter6", S_IRUGO, proc_net); - if (p) - p->proc_fops = &igmp6_mcf_seq_fops; + proc_net_fops_create("igmp6", S_IRUGO, &igmp6_mc_seq_fops); + proc_net_fops_create("mcfilter6", S_IRUGO, &igmp6_mcf_seq_fops); #endif return 0; @@ -2414,6 +2407,7 @@ { sock_release(igmp6_socket); igmp6_socket = NULL; /* for safety */ + #ifdef CONFIG_PROC_FS proc_net_remove("mcfilter6"); proc_net_remove("igmp6"); diff -Nru a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c --- a/net/ipv6/ndisc.c Mon Sep 22 00:30:22 2003 +++ b/net/ipv6/ndisc.c Mon Sep 22 00:30:22 2003 @@ -1044,6 +1044,17 @@ in6_dev->if_flags |= IF_RA_RCVD; } + /* + * Remember the managed/otherconf flags from most recently + * received RA message (RFC 2462) -- yoshfuji + */ + in6_dev->if_flags = (in6_dev->if_flags & ~(IF_RA_MANAGED | + IF_RA_OTHERCONF)) | + (ra_msg->icmph.icmp6_addrconf_managed ? + IF_RA_MANAGED : 0) | + (ra_msg->icmph.icmp6_addrconf_other ? + IF_RA_OTHERCONF : 0); + lifetime = ntohs(ra_msg->icmph.icmp6_rt_lifetime); rt = rt6_get_dflt_router(&skb->nh.ipv6h->saddr, skb->dev); diff -Nru a/net/ipv6/proc.c b/net/ipv6/proc.c --- a/net/ipv6/proc.c Mon Sep 22 00:30:21 2003 +++ b/net/ipv6/proc.c Mon Sep 22 00:30:21 2003 @@ -32,7 +32,6 @@ #ifdef CONFIG_PROC_FS static struct proc_dir_entry *proc_net_devsnmp6; -#endif static int fold_prot_inuse(struct proto *proto) { @@ -58,7 +57,6 @@ return 0; } - struct snmp6_item { char *name; @@ -221,9 +219,7 @@ int snmp6_register_dev(struct inet6_dev *idev) { int err = -ENOMEM; -#ifdef CONFIG_PROC_FS struct proc_dir_entry *p; -#endif if (!idev || !idev->dev) return -EINVAL; @@ -232,7 +228,6 @@ __alignof__(struct icmpv6_mib)) < 0) goto err_icmp; -#ifdef CONFIG_PROC_FS if (!proc_net_devsnmp6) { err = -ENOENT; goto err_proc; @@ -244,27 +239,22 @@ p->proc_fops = &snmp6_seq_fops; idev->stats.proc_dir_entry = p; -#endif return 0; -#ifdef CONFIG_PROC_FS err_proc: snmp6_mib_free((void **)idev->stats.icmpv6); -#endif err_icmp: return err; } int snmp6_unregister_dev(struct inet6_dev *idev) { -#ifdef CONFIG_PROC_FS if (!proc_net_devsnmp6) return -ENOENT; if (!idev || !idev->stats.proc_dir_entry) return -EINVAL; remove_proc_entry(idev->stats.proc_dir_entry->name, proc_net_devsnmp6); -#endif snmp6_mib_free((void **)idev->stats.icmpv6); return 0; @@ -273,21 +263,16 @@ int __init ipv6_misc_proc_init(void) { int rc = 0; - struct proc_dir_entry *p; - p = create_proc_entry("snmp6", S_IRUGO, proc_net); - if (!p) + if (!proc_net_fops_create("snmp6", S_IRUGO, &snmp6_seq_fops)) goto proc_snmp6_fail; - else - p->proc_fops = &snmp6_seq_fops; + proc_net_devsnmp6 = proc_mkdir("dev_snmp6", proc_net); if (!proc_net_devsnmp6) goto proc_dev_snmp6_fail; - p = create_proc_entry("sockstat6", S_IRUGO, proc_net); - if (!p) + + if (!proc_net_fops_create("sockstat6", S_IRUGO, &sockstat6_seq_fops)) goto proc_sockstat6_fail; - else - p->proc_fops = &sockstat6_seq_fops; out: return rc; @@ -306,4 +291,32 @@ proc_net_remove("dev_snmp6"); proc_net_remove("snmp6"); } + +#else /* CONFIG_PROC_FS */ + + +int snmp6_register_dev(struct inet6_dev *idev) +{ + int err = -ENOMEM; + + if (!idev || !idev->dev) + return -EINVAL; + + if (snmp6_mib_init((void **)idev->stats.icmpv6, sizeof(struct icmpv6_mib), + __alignof__(struct icmpv6_mib)) < 0) + goto err_icmp; + + return 0; + +err_icmp: + return err; +} + +int snmp6_unregister_dev(struct inet6_dev *idev) +{ + snmp6_mib_free((void **)idev->stats.icmpv6); + return 0; +} + +#endif diff -Nru a/net/ipv6/raw.c b/net/ipv6/raw.c --- a/net/ipv6/raw.c Mon Sep 22 00:30:21 2003 +++ b/net/ipv6/raw.c Mon Sep 22 00:30:21 2003 @@ -961,14 +961,14 @@ static void *raw6_seq_start(struct seq_file *seq, loff_t *pos) { read_lock(&raw_v6_lock); - return *pos ? raw6_get_idx(seq, *pos) : (void *)1; + return *pos ? raw6_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; } static void *raw6_seq_next(struct seq_file *seq, void *v, loff_t *pos) { struct sock *sk; - if (v == (void *)1) + if (v == SEQ_START_TOKEN) sk = raw6_get_first(seq); else sk = raw6_get_next(seq, v); @@ -1010,7 +1010,7 @@ static int raw6_seq_show(struct seq_file *seq, void *v) { - if (v == (void *)1) + if (v == SEQ_START_TOKEN) seq_printf(seq, " sl " "local_address " @@ -1059,12 +1059,8 @@ int __init raw6_proc_init(void) { - struct proc_dir_entry *p = create_proc_entry("raw6", S_IRUGO, proc_net); - - if (!p) + if (!proc_net_fops_create("raw6", S_IRUGO, &raw6_seq_fops)) return -ENOMEM; - p->proc_fops = &raw6_seq_fops; - return 0; } diff -Nru a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c --- a/net/ipv6/tcp_ipv6.c Mon Sep 22 00:30:22 2003 +++ b/net/ipv6/tcp_ipv6.c Mon Sep 22 00:30:22 2003 @@ -2023,11 +2023,12 @@ atomic_read(&tw->tw_refcnt), tw); } +#ifdef CONFIG_PROC_FS static int tcp6_seq_show(struct seq_file *seq, void *v) { struct tcp_iter_state *st; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_printf(seq, " sl " "local_address " @@ -2072,6 +2073,7 @@ { tcp_proc_unregister(&tcp6_seq_afinfo); } +#endif struct proto tcpv6_prot = { .name = "TCPv6", diff -Nru a/net/ipv6/udp.c b/net/ipv6/udp.c --- a/net/ipv6/udp.c Mon Sep 22 00:30:24 2003 +++ b/net/ipv6/udp.c Mon Sep 22 00:30:24 2003 @@ -704,6 +704,7 @@ struct udp_opt *up = udp_sk(sk); if (up->pending) { + up->len = 0; up->pending = 0; ip6_flush_pending_frames(sk); } @@ -1113,7 +1114,7 @@ static int udp6_seq_show(struct seq_file *seq, void *v) { - if (v == (void *)1) + if (v == SEQ_START_TOKEN) seq_printf(seq, " sl " "local_address " diff -Nru a/net/ipx/ipx_proc.c b/net/ipx/ipx_proc.c --- a/net/ipx/ipx_proc.c Mon Sep 22 00:30:18 2003 +++ b/net/ipx/ipx_proc.c Mon Sep 22 00:30:18 2003 @@ -39,7 +39,7 @@ loff_t l = *pos; spin_lock_bh(&ipx_interfaces_lock); - return l ? ipx_get_interface_idx(--l) : (void *)1; + return l ? ipx_get_interface_idx(--l) : SEQ_START_TOKEN; } static void *ipx_seq_interface_next(struct seq_file *seq, void *v, loff_t *pos) @@ -47,7 +47,7 @@ struct ipx_interface *i; ++*pos; - if (v == (void *)1) + if (v == SEQ_START_TOKEN) i = ipx_interfaces_head(); else i = ipx_interfaces_next(v); @@ -63,7 +63,7 @@ { struct ipx_interface *i; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(seq, "Network Node_Address Primary Device " "Frame_Type"); #ifdef IPX_REFCNT_DEBUG @@ -123,7 +123,7 @@ { loff_t l = *pos; read_lock_bh(&ipx_routes_lock); - return l ? ipx_get_route_idx(--l) : (void *)1; + return l ? ipx_get_route_idx(--l) : SEQ_START_TOKEN; } static void *ipx_seq_route_next(struct seq_file *seq, void *v, loff_t *pos) @@ -131,7 +131,7 @@ struct ipx_route *r; ++*pos; - if (v == (void *)1) + if (v == SEQ_START_TOKEN) r = ipx_routes_head(); else r = ipx_routes_next(v); @@ -147,7 +147,7 @@ { struct ipx_route *rt; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(seq, "Network Router_Net Router_Node\n"); goto out; } @@ -195,7 +195,7 @@ loff_t l = *pos; spin_lock_bh(&ipx_interfaces_lock); - return l ? ipx_get_socket_idx(--l) : (void *)1; + return l ? ipx_get_socket_idx(--l) : SEQ_START_TOKEN; } static void *ipx_seq_socket_next(struct seq_file *seq, void *v, loff_t *pos) @@ -205,7 +205,7 @@ struct ipx_opt *ipxs; ++*pos; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { sk = NULL; i = ipx_interfaces_head(); if (!i) @@ -245,7 +245,7 @@ struct sock *s; struct ipx_opt *ipxs; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { #ifdef CONFIG_IPX_INTERN seq_puts(seq, "Local_Address " "Remote_Address Tx_Queue " diff -Nru a/net/irda/discovery.c b/net/irda/discovery.c --- a/net/irda/discovery.c Mon Sep 22 00:30:20 2003 +++ b/net/irda/discovery.c Mon Sep 22 00:30:20 2003 @@ -32,6 +32,7 @@ #include #include +#include #include #include @@ -349,70 +350,131 @@ return 0; } -/* - * Function proc_discovery_read (buf, start, offset, len, unused) - * - * Print discovery information in /proc file system - * - */ -int discovery_proc_read(char *buf, char **start, off_t offset, int length, - int unused) -{ - discovery_t *discovery; +#ifdef CONFIG_PROC_FS +struct discovery_iter_state { unsigned long flags; - hashbin_t *cachelog = irlmp->cachelog; - int len = 0; +}; - if (!irlmp) - return len; +static inline discovery_t *discovery_seq_idx(loff_t pos) - len = sprintf(buf, "IrLMP: Discovery log:\n\n"); - - spin_lock_irqsave(&cachelog->hb_spinlock, flags); +{ + discovery_t *discovery; - discovery = (discovery_t *) hashbin_get_first(cachelog); - while (( discovery != NULL) && (len < length)) { - len += sprintf(buf+len, "nickname: %s,", discovery->data.info); + for (discovery = (discovery_t *) hashbin_get_first(irlmp->cachelog); + discovery != NULL; + discovery = (discovery_t *) hashbin_get_next(irlmp->cachelog)) { + if (pos-- == 0) + break; + } - len += sprintf(buf+len, " hint: 0x%02x%02x", - discovery->data.hints[0], - discovery->data.hints[1]); + return discovery; +} + +static void *discovery_seq_start(struct seq_file *seq, loff_t *pos) +{ + struct discovery_iter_state *iter = seq->private; + + spin_lock_irqsave(&irlmp->cachelog->hb_spinlock, iter->flags); + return *pos ? discovery_seq_idx(*pos - 1) : SEQ_START_TOKEN; +} + +static void *discovery_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + ++*pos; + return (v == SEQ_START_TOKEN) + ? (void *) hashbin_get_first(irlmp->cachelog) + : (void *) hashbin_get_next(irlmp->cachelog); +} + +static void discovery_seq_stop(struct seq_file *seq, void *v) +{ + struct discovery_iter_state *iter = seq->private; + spin_unlock_irqrestore(&irlmp->cachelog->hb_spinlock, iter->flags); +} + +static int discovery_seq_show(struct seq_file *seq, void *v) +{ + if (v == SEQ_START_TOKEN) + seq_puts(seq, "IrLMP: Discovery log:\n\n"); + else { + const discovery_t *discovery = v; + + seq_printf(seq, "nickname: %s, hint: 0x%02x%02x", + discovery->data.info, + discovery->data.hints[0], + discovery->data.hints[1]); #if 0 if ( discovery->data.hints[0] & HINT_PNP) - len += sprintf( buf+len, "PnP Compatible "); + seq_puts(seq, "PnP Compatible "); if ( discovery->data.hints[0] & HINT_PDA) - len += sprintf( buf+len, "PDA/Palmtop "); + seq_puts(seq, "PDA/Palmtop "); if ( discovery->data.hints[0] & HINT_COMPUTER) - len += sprintf( buf+len, "Computer "); + seq_puts(seq, "Computer "); if ( discovery->data.hints[0] & HINT_PRINTER) - len += sprintf( buf+len, "Printer "); + seq_puts(seq, "Printer "); if ( discovery->data.hints[0] & HINT_MODEM) - len += sprintf( buf+len, "Modem "); + seq_puts(seq, "Modem "); if ( discovery->data.hints[0] & HINT_FAX) - len += sprintf( buf+len, "Fax "); + seq_puts(seq, "Fax "); if ( discovery->data.hints[0] & HINT_LAN) - len += sprintf( buf+len, "LAN Access "); + seq_puts(seq, "LAN Access "); if ( discovery->data.hints[1] & HINT_TELEPHONY) - len += sprintf( buf+len, "Telephony "); + seq_puts(seq, "Telephony "); if ( discovery->data.hints[1] & HINT_FILE_SERVER) - len += sprintf( buf+len, "File Server "); + seq_puts(seq, "File Server "); if ( discovery->data.hints[1] & HINT_COMM) - len += sprintf( buf+len, "IrCOMM "); + seq_puts(seq, "IrCOMM "); if ( discovery->data.hints[1] & HINT_OBEX) - len += sprintf( buf+len, "IrOBEX "); + seq_puts(seq, "IrOBEX "); #endif - len += sprintf(buf+len, ", saddr: 0x%08x", - discovery->data.saddr); - - len += sprintf(buf+len, ", daddr: 0x%08x\n", + seq_printf(seq,", saddr: 0x%08x, daddr: 0x%08x\n\n", + discovery->data.saddr, discovery->data.daddr); - len += sprintf(buf+len, "\n"); - - discovery = (discovery_t *) hashbin_get_next(cachelog); + seq_putc(seq, '\n'); } - spin_unlock_irqrestore(&cachelog->hb_spinlock, flags); + return 0; +} - return len; +static struct seq_operations discovery_seq_ops = { + .start = discovery_seq_start, + .next = discovery_seq_next, + .stop = discovery_seq_stop, + .show = discovery_seq_show, +}; + +static int discovery_seq_open(struct inode *inode, struct file *file) +{ + struct seq_file *seq; + int rc = -ENOMEM; + struct discovery_iter_state *s; + + ASSERT(irlmp != NULL, return -EINVAL;); + + s = kmalloc(sizeof(*s), GFP_KERNEL); + if (!s) + goto out; + + rc = seq_open(file, &discovery_seq_ops); + if (rc) + goto out_kfree; + + seq = file->private_data; + seq->private = s; + memset(s, 0, sizeof(*s)); +out: + return rc; +out_kfree: + kfree(s); + goto out; } + +struct file_operations discovery_seq_fops = { + .owner = THIS_MODULE, + .open = discovery_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release_private, +}; +#endif diff -Nru a/net/irda/ircomm/ircomm_core.c b/net/irda/ircomm/ircomm_core.c --- a/net/irda/ircomm/ircomm_core.c Mon Sep 22 00:30:17 2003 +++ b/net/irda/ircomm/ircomm_core.c Mon Sep 22 00:30:17 2003 @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -53,9 +54,16 @@ struct sk_buff *skb, int clen); #ifdef CONFIG_PROC_FS -static int ircomm_proc_read(char *buf, char **start, off_t offset, int len); - extern struct proc_dir_entry *proc_irda; +static int ircomm_seq_open(struct inode *, struct file *); + +static struct file_operations ircomm_proc_fops = { + .owner = THIS_MODULE, + .open = ircomm_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release_private, +}; #endif /* CONFIG_PROC_FS */ hashbin_t *ircomm = NULL; @@ -69,7 +77,11 @@ } #ifdef CONFIG_PROC_FS - create_proc_info_entry("ircomm", 0, proc_irda, ircomm_proc_read); + { struct proc_dir_entry *ent; + ent = create_proc_entry("ircomm", 0, proc_irda); + if (ent) + ent->proc_fops = &ircomm_proc_fops; + } #endif /* CONFIG_PROC_FS */ MESSAGE("IrCOMM protocol (Dag Brattli)\n"); @@ -496,49 +508,98 @@ EXPORT_SYMBOL(ircomm_flow_request); #ifdef CONFIG_PROC_FS -/* - * Function ircomm_proc_read (buf, start, offset, len, unused) - * - * - * - */ -int ircomm_proc_read(char *buf, char **start, off_t offset, int len) -{ - struct ircomm_cb *self; +struct ircomm_iter_state { unsigned long flags; - - len = 0; +}; + +static void *ircomm_seq_start(struct seq_file *seq, loff_t *pos) +{ + struct ircomm_iter_state *iter = seq->private; + struct ircomm_cb *self; + loff_t off = 0; + + spin_lock_irqsave(&ircomm->hb_spinlock, iter->flags); + + for (self = (struct ircomm_cb *) hashbin_get_first(ircomm); + self != NULL; + self = (struct ircomm_cb *) hashbin_get_next(ircomm)) { + if (off++ == *pos) + break; + + } + return self; +} + +static void *ircomm_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + ++*pos; - spin_lock_irqsave(&ircomm->hb_spinlock, flags); + return (void *) hashbin_get_next(ircomm); +} + +static void ircomm_seq_stop(struct seq_file *seq, void *v) +{ + struct ircomm_iter_state *iter = seq->private; + spin_unlock_irqrestore(&ircomm->hb_spinlock, iter->flags); +} - self = (struct ircomm_cb *) hashbin_get_first(ircomm); - while (self != NULL) { - ASSERT(self->magic == IRCOMM_MAGIC, break;); - - if(self->line < 0x10) - len += sprintf(buf+len, "ircomm%d", self->line); - else - len += sprintf(buf+len, "irlpt%d", self->line - 0x10); - len += sprintf(buf+len, " state: %s, ", - ircomm_state[ self->state]); - len += sprintf(buf+len, - "slsap_sel: %#02x, dlsap_sel: %#02x, mode:", - self->slsap_sel, self->dlsap_sel); - if(self->service_type & IRCOMM_3_WIRE_RAW) - len += sprintf(buf+len, " 3-wire-raw"); - if(self->service_type & IRCOMM_3_WIRE) - len += sprintf(buf+len, " 3-wire"); - if(self->service_type & IRCOMM_9_WIRE) - len += sprintf(buf+len, " 9-wire"); - if(self->service_type & IRCOMM_CENTRONICS) - len += sprintf(buf+len, " Centronics"); - len += sprintf(buf+len, "\n"); - - self = (struct ircomm_cb *) hashbin_get_next(ircomm); - } - spin_unlock_irqrestore(&ircomm->hb_spinlock, flags); +static int ircomm_seq_show(struct seq_file *seq, void *v) +{ + const struct ircomm_cb *self = v; + + ASSERT(self->magic == IRCOMM_MAGIC, return -EINVAL; ); + + if(self->line < 0x10) + seq_printf(seq, "ircomm%d", self->line); + else + seq_printf(seq, "irlpt%d", self->line - 0x10); + + seq_printf(seq, + " state: %s, slsap_sel: %#02x, dlsap_sel: %#02x, mode:", + ircomm_state[ self->state], + self->slsap_sel, self->dlsap_sel); + + if(self->service_type & IRCOMM_3_WIRE_RAW) + seq_printf(seq, " 3-wire-raw"); + if(self->service_type & IRCOMM_3_WIRE) + seq_printf(seq, " 3-wire"); + if(self->service_type & IRCOMM_9_WIRE) + seq_printf(seq, " 9-wire"); + if(self->service_type & IRCOMM_CENTRONICS) + seq_printf(seq, " Centronics"); + seq_putc(seq, '\n'); + + return 0; +} + +static struct seq_operations ircomm_seq_ops = { + .start = ircomm_seq_start, + .next = ircomm_seq_next, + .stop = ircomm_seq_stop, + .show = ircomm_seq_show, +}; + +static int ircomm_seq_open(struct inode *inode, struct file *file) +{ + struct seq_file *seq; + int rc = -ENOMEM; + struct ircomm_iter_state *s = kmalloc(sizeof(*s), GFP_KERNEL); + + if (!s) + goto out; - return len; + rc = seq_open(file, &ircomm_seq_ops); + if (rc) + goto out_kfree; + + seq = file->private_data; + seq->private = s; + memset(s, 0, sizeof(*s)); +out: + return rc; +out_kfree: + kfree(s); + goto out; } #endif /* CONFIG_PROC_FS */ diff -Nru a/net/irda/iriap.c b/net/irda/iriap.c --- a/net/irda/iriap.c Mon Sep 22 00:30:20 2003 +++ b/net/irda/iriap.c Mon Sep 22 00:30:20 2003 @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -970,35 +971,67 @@ #ifdef CONFIG_PROC_FS -static char *ias_value_types[] = { +static const char *ias_value_types[] = { "IAS_MISSING", "IAS_INTEGER", "IAS_OCT_SEQ", "IAS_STRING" }; -int irias_proc_read(char *buf, char **start, off_t offset, int len) +struct irias_iter_state { + unsigned long flags; +}; + +static inline struct ias_object *irias_seq_idx(loff_t pos) { struct ias_object *obj; - struct ias_attrib *attrib; - unsigned long flags; - ASSERT( irias_objects != NULL, return 0;); + for (obj = (struct ias_object *) hashbin_get_first(irias_objects); + obj; obj = (struct ias_object *) hashbin_get_next(irias_objects)) { + if (pos-- == 0) + break; + } + + return obj; +} - len = 0; +static void *irias_seq_start(struct seq_file *seq, loff_t *pos) +{ + struct irias_iter_state *iter = seq->private; - len += sprintf(buf+len, "LM-IAS Objects:\n"); + spin_lock_irqsave(&irias_objects->hb_spinlock, iter->flags); - spin_lock_irqsave(&irias_objects->hb_spinlock, flags); + return *pos ? irias_seq_idx(*pos - 1) : SEQ_START_TOKEN; +} + +static void *irias_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + ++*pos; + + return (v == SEQ_START_TOKEN) + ? (void *) hashbin_get_first(irias_objects) + : (void *) hashbin_get_next(irias_objects); +} - /* List all irias_objects */ - obj = (struct ias_object *) hashbin_get_first(irias_objects); - while ( obj != NULL) { - ASSERT(obj->magic == IAS_OBJECT_MAGIC, return 0;); +static void irias_seq_stop(struct seq_file *seq, void *v) +{ + struct irias_iter_state *iter = seq->private; - len += sprintf(buf+len, "name: %s, ", obj->name); - len += sprintf(buf+len, "id=%d", obj->id); - len += sprintf(buf+len, "\n"); + spin_unlock_irqrestore(&irias_objects->hb_spinlock, iter->flags); +} + +static int irias_seq_show(struct seq_file *seq, void *v) +{ + if (v == SEQ_START_TOKEN) + seq_puts(seq, "LM-IAS Objects:\n"); + else { + struct ias_object *obj = v; + struct ias_attrib *attrib; + + ASSERT(obj->magic == IAS_OBJECT_MAGIC, return -EINVAL;); + + seq_printf(seq, "name: %s, id=%d\n", + obj->name, obj->id); /* Careful for priority inversions here ! * All other uses of attrib spinlock are independent of @@ -1006,48 +1039,83 @@ spin_lock(&obj->attribs->hb_spinlock); /* List all attributes for this object */ - attrib = (struct ias_attrib *) - hashbin_get_first(obj->attribs); - while (attrib != NULL) { - ASSERT(attrib->magic == IAS_ATTRIB_MAGIC, return 0;); - - len += sprintf(buf+len, " - Attribute name: \"%s\", ", - attrib->name); - len += sprintf(buf+len, "value[%s]: ", - ias_value_types[attrib->value->type]); + for (attrib = (struct ias_attrib *) hashbin_get_first(obj->attribs); + attrib != NULL; + attrib = (struct ias_attrib *) hashbin_get_next(obj->attribs)) { + + ASSERT(attrib->magic == IAS_ATTRIB_MAGIC, break; ); + + seq_printf(seq, " - Attribute name: \"%s\", ", + attrib->name); + seq_printf(seq, "value[%s]: ", + ias_value_types[attrib->value->type]); switch (attrib->value->type) { case IAS_INTEGER: - len += sprintf(buf+len, "%d\n", - attrib->value->t.integer); + seq_printf(seq, "%d\n", + attrib->value->t.integer); break; case IAS_STRING: - len += sprintf(buf+len, "\"%s\"\n", - attrib->value->t.string); + seq_printf(seq, "\"%s\"\n", + attrib->value->t.string); break; case IAS_OCT_SEQ: - len += sprintf(buf+len, "octet sequence (%d bytes)\n", attrib->value->len); + seq_printf(seq, "octet sequence (%d bytes)\n", + attrib->value->len); break; case IAS_MISSING: - len += sprintf(buf+len, "missing\n"); + seq_puts(seq, "missing\n"); break; default: - IRDA_DEBUG(0, "%s(), Unknown value type!\n", - __FUNCTION__); - return -1; + seq_printf(seq, "type %d?\n", + attrib->value->type); } - len += sprintf(buf+len, "\n"); + seq_putc(seq, '\n'); - attrib = (struct ias_attrib *) - hashbin_get_next(obj->attribs); } spin_unlock(&obj->attribs->hb_spinlock); - - obj = (struct ias_object *) hashbin_get_next(irias_objects); } - spin_unlock_irqrestore(&irias_objects->hb_spinlock, flags); - return len; + return 0; +} + +static struct seq_operations irias_seq_ops = { + .start = irias_seq_start, + .next = irias_seq_next, + .stop = irias_seq_stop, + .show = irias_seq_show, +}; + +static int irias_seq_open(struct inode *inode, struct file *file) +{ + struct seq_file *seq; + int rc = -ENOMEM; + struct irias_iter_state *s; + + ASSERT( irias_objects != NULL, return -EINVAL;); + s = kmalloc(sizeof(*s), GFP_KERNEL); + if (!s) + goto out; + + rc = seq_open(file, &irias_seq_ops); + if (rc) + goto out_kfree; + seq = file->private_data; + seq->private = s; + memset(s, 0, sizeof(*s)); +out: + return rc; +out_kfree: + kfree(s); + goto out; } + +struct file_operations irias_seq_fops = { + .owner = THIS_MODULE, + .open = irias_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release_private, +}; #endif /* PROC_FS */ diff -Nru a/net/irda/irlan/irlan_common.c b/net/irda/irlan/irlan_common.c --- a/net/irda/irlan/irlan_common.c Mon Sep 22 00:30:22 2003 +++ b/net/irda/irlan/irlan_common.c Mon Sep 22 00:30:22 2003 @@ -1068,7 +1068,6 @@ } #ifdef CONFIG_PROC_FS -#define IRLAN_PROC_START_TOKEN ((void *)1) /* * Start of reading /proc entries. @@ -1083,7 +1082,7 @@ rcu_read_lock(); if (*pos == 0) - return IRLAN_PROC_START_TOKEN; + return SEQ_START_TOKEN; list_for_each_entry(self, &irlans, dev_list) { if (*pos == i) @@ -1099,7 +1098,7 @@ struct list_head *nxt; ++*pos; - if (v == IRLAN_PROC_START_TOKEN) + if (v == SEQ_START_TOKEN) nxt = irlans.next; else nxt = ((struct irlan_cb *)v)->dev_list.next; @@ -1120,7 +1119,7 @@ */ static int irlan_seq_show(struct seq_file *seq, void *v) { - if (v == IRLAN_PROC_START_TOKEN) + if (v == SEQ_START_TOKEN) seq_puts(seq, "IrLAN instances:\n"); else { struct irlan_cb *self = v; diff -Nru a/net/irda/irlap.c b/net/irda/irlap.c --- a/net/irda/irlap.c Mon Sep 22 00:30:24 2003 +++ b/net/irda/irlap.c Mon Sep 22 00:30:24 2003 @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -72,11 +73,6 @@ }; #endif /* CONFIG_IRDA_DEBUG */ -#ifdef CONFIG_PROC_FS -int irlap_proc_read(char *, char **, off_t, int); - -#endif /* CONFIG_PROC_FS */ - int __init irlap_init(void) { /* Check if the compiler did its job properly. @@ -1096,100 +1092,163 @@ } #ifdef CONFIG_PROC_FS -/* - * Function irlap_proc_read (buf, start, offset, len, unused) - * - * Give some info to the /proc file system - * - */ -int irlap_proc_read(char *buf, char **start, off_t offset, int len) +struct irlap_iter_state { + int id; + unsigned long flags; +}; + +static void *irlap_seq_start(struct seq_file *seq, loff_t *pos) { + struct irlap_iter_state *iter = seq->private; struct irlap_cb *self; - unsigned long flags; - int i = 0; - spin_lock_irqsave(&irlap->hb_spinlock, flags); + /* Protect our access to the tsap list */ + spin_lock_irqsave(&irlap->hb_spinlock, iter->flags); + iter->id = 0; + + for (self = (struct irlap_cb *) hashbin_get_first(irlap); + self; self = (struct irlap_cb *) hashbin_get_next(irlap)) { + if (iter->id == *pos) + break; + ++iter->id; + } + + return self; +} - len = 0; +static void *irlap_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + struct irlap_iter_state *iter = seq->private; - self = (struct irlap_cb *) hashbin_get_first(irlap); - while (self != NULL) { - ASSERT(self != NULL, break;); - ASSERT(self->magic == LAP_MAGIC, break;); + ++*pos; + ++iter->id; + return (void *) hashbin_get_next(irlap); +} - len += sprintf(buf+len, "irlap%d ", i++); - len += sprintf(buf+len, "state: %s\n", - irlap_state[self->state]); +static void irlap_seq_stop(struct seq_file *seq, void *v) +{ + struct irlap_iter_state *iter = seq->private; + spin_unlock_irqrestore(&irlap->hb_spinlock, iter->flags); +} + +static int irlap_seq_show(struct seq_file *seq, void *v) +{ + const struct irlap_iter_state *iter = seq->private; + const struct irlap_cb *self = v; + + ASSERT(self->magic == LAP_MAGIC, return -EINVAL;); - len += sprintf(buf+len, " device name: %s, ", - (self->netdev) ? self->netdev->name : "bug"); - len += sprintf(buf+len, "hardware name: %s\n", self->hw_name); + seq_printf(seq, "irlap%d ", iter->id); + seq_printf(seq, "state: %s\n", + irlap_state[self->state]); - len += sprintf(buf+len, " caddr: %#02x, ", self->caddr); - len += sprintf(buf+len, "saddr: %#08x, ", self->saddr); - len += sprintf(buf+len, "daddr: %#08x\n", self->daddr); + seq_printf(seq, " device name: %s, ", + (self->netdev) ? self->netdev->name : "bug"); + seq_printf(seq, "hardware name: %s\n", self->hw_name); - len += sprintf(buf+len, " win size: %d, ", - self->window_size); - len += sprintf(buf+len, "win: %d, ", self->window); + seq_printf(seq, " caddr: %#02x, ", self->caddr); + seq_printf(seq, "saddr: %#08x, ", self->saddr); + seq_printf(seq, "daddr: %#08x\n", self->daddr); + + seq_printf(seq, " win size: %d, ", + self->window_size); + seq_printf(seq, "win: %d, ", self->window); #ifdef CONFIG_IRDA_DYNAMIC_WINDOW - len += sprintf(buf+len, "line capacity: %d, ", - self->line_capacity); - len += sprintf(buf+len, "bytes left: %d\n", self->bytes_left); + seq_printf(seq, "line capacity: %d, ", + self->line_capacity); + seq_printf(seq, "bytes left: %d\n", self->bytes_left); #endif /* CONFIG_IRDA_DYNAMIC_WINDOW */ - len += sprintf(buf+len, " tx queue len: %d ", - skb_queue_len(&self->txq)); - len += sprintf(buf+len, "win queue len: %d ", - skb_queue_len(&self->wx_list)); - len += sprintf(buf+len, "rbusy: %s", self->remote_busy ? - "TRUE" : "FALSE"); - len += sprintf(buf+len, " mbusy: %s\n", self->media_busy ? - "TRUE" : "FALSE"); - - len += sprintf(buf+len, " retrans: %d ", self->retry_count); - len += sprintf(buf+len, "vs: %d ", self->vs); - len += sprintf(buf+len, "vr: %d ", self->vr); - len += sprintf(buf+len, "va: %d\n", self->va); - - len += sprintf(buf+len, " qos\tbps\tmaxtt\tdsize\twinsize\taddbofs\tmintt\tldisc\tcomp\n"); - - len += sprintf(buf+len, " tx\t%d\t", - self->qos_tx.baud_rate.value); - len += sprintf(buf+len, "%d\t", - self->qos_tx.max_turn_time.value); - len += sprintf(buf+len, "%d\t", - self->qos_tx.data_size.value); - len += sprintf(buf+len, "%d\t", - self->qos_tx.window_size.value); - len += sprintf(buf+len, "%d\t", - self->qos_tx.additional_bofs.value); - len += sprintf(buf+len, "%d\t", - self->qos_tx.min_turn_time.value); - len += sprintf(buf+len, "%d\t", - self->qos_tx.link_disc_time.value); - len += sprintf(buf+len, "\n"); - - len += sprintf(buf+len, " rx\t%d\t", - self->qos_rx.baud_rate.value); - len += sprintf(buf+len, "%d\t", - self->qos_rx.max_turn_time.value); - len += sprintf(buf+len, "%d\t", - self->qos_rx.data_size.value); - len += sprintf(buf+len, "%d\t", - self->qos_rx.window_size.value); - len += sprintf(buf+len, "%d\t", - self->qos_rx.additional_bofs.value); - len += sprintf(buf+len, "%d\t", - self->qos_rx.min_turn_time.value); - len += sprintf(buf+len, "%d\t", - self->qos_rx.link_disc_time.value); - len += sprintf(buf+len, "\n"); + seq_printf(seq, " tx queue len: %d ", + skb_queue_len(&self->txq)); + seq_printf(seq, "win queue len: %d ", + skb_queue_len(&self->wx_list)); + seq_printf(seq, "rbusy: %s", self->remote_busy ? + "TRUE" : "FALSE"); + seq_printf(seq, " mbusy: %s\n", self->media_busy ? + "TRUE" : "FALSE"); + + seq_printf(seq, " retrans: %d ", self->retry_count); + seq_printf(seq, "vs: %d ", self->vs); + seq_printf(seq, "vr: %d ", self->vr); + seq_printf(seq, "va: %d\n", self->va); + + seq_printf(seq, " qos\tbps\tmaxtt\tdsize\twinsize\taddbofs\tmintt\tldisc\tcomp\n"); + + seq_printf(seq, " tx\t%d\t", + self->qos_tx.baud_rate.value); + seq_printf(seq, "%d\t", + self->qos_tx.max_turn_time.value); + seq_printf(seq, "%d\t", + self->qos_tx.data_size.value); + seq_printf(seq, "%d\t", + self->qos_tx.window_size.value); + seq_printf(seq, "%d\t", + self->qos_tx.additional_bofs.value); + seq_printf(seq, "%d\t", + self->qos_tx.min_turn_time.value); + seq_printf(seq, "%d\t", + self->qos_tx.link_disc_time.value); + seq_printf(seq, "\n"); + + seq_printf(seq, " rx\t%d\t", + self->qos_rx.baud_rate.value); + seq_printf(seq, "%d\t", + self->qos_rx.max_turn_time.value); + seq_printf(seq, "%d\t", + self->qos_rx.data_size.value); + seq_printf(seq, "%d\t", + self->qos_rx.window_size.value); + seq_printf(seq, "%d\t", + self->qos_rx.additional_bofs.value); + seq_printf(seq, "%d\t", + self->qos_rx.min_turn_time.value); + seq_printf(seq, "%d\n", + self->qos_rx.link_disc_time.value); + + return 0; +} - self = (struct irlap_cb *) hashbin_get_next(irlap); +static struct seq_operations irlap_seq_ops = { + .start = irlap_seq_start, + .next = irlap_seq_next, + .stop = irlap_seq_stop, + .show = irlap_seq_show, +}; + +static int irlap_seq_open(struct inode *inode, struct file *file) +{ + struct seq_file *seq; + int rc = -ENOMEM; + struct irlap_iter_state *s = kmalloc(sizeof(*s), GFP_KERNEL); + + if (!s) + goto out; + + if (irlap == NULL) { + rc = -EINVAL; + goto out_kfree; } - spin_unlock_irqrestore(&irlap->hb_spinlock, flags); - return len; -} + rc = seq_open(file, &irlap_seq_ops); + if (rc) + goto out_kfree; + + seq = file->private_data; + seq->private = s; + memset(s, 0, sizeof(*s)); +out: + return rc; +out_kfree: + kfree(s); + goto out; +} + +struct file_operations irlap_seq_fops = { + .owner = THIS_MODULE, + .open = irlap_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release_private, +}; #endif /* CONFIG_PROC_FS */ diff -Nru a/net/irda/irlap_frame.c b/net/irda/irlap_frame.c --- a/net/irda/irlap_frame.c Mon Sep 22 00:30:20 2003 +++ b/net/irda/irlap_frame.c Mon Sep 22 00:30:20 2003 @@ -159,9 +159,9 @@ { struct snrm_frame *frame; - frame = (struct snrm_frame *) skb->data; + if (pskb_may_pull(skb,sizeof(struct snrm_frame))) { + frame = (struct snrm_frame *) skb->data; - if (skb->len >= sizeof(struct snrm_frame)) { /* Copy the new connection address ignoring the C/R bit */ info->caddr = frame->ncaddr & 0xFE; @@ -402,6 +402,11 @@ ASSERT(self != NULL, return;); ASSERT(self->magic == LAP_MAGIC, return;); + if (!pskb_may_pull(skb, sizeof(struct xid_frame))) { + ERROR("%s: frame to short!\n", __FUNCTION__); + return; + } + xid = (struct xid_frame *) skb->data; info->daddr = le32_to_cpu(xid->saddr); @@ -469,6 +474,11 @@ __u8 *discovery_info; char *text; + if (!pskb_may_pull(skb, sizeof(struct xid_frame))) { + ERROR("%s: frame to short!\n", __FUNCTION__); + return; + } + xid = (struct xid_frame *) skb->data; info->daddr = le32_to_cpu(xid->saddr); @@ -507,7 +517,8 @@ */ if (info->s == 0xff) { /* Check if things are sane at this point... */ - if((discovery_info == NULL) || (skb->len < 3)) { + if((discovery_info == NULL) || + !pskb_may_pull(skb, 3)) { ERROR("%s: discovery frame to short!\n", __FUNCTION__); return; } @@ -1150,6 +1161,11 @@ ASSERT(skb != NULL, return;); ASSERT(info != NULL, return;); + if (!pskb_may_pull(skb, 4)) { + ERROR("%s: frame to short!\n", __FUNCTION__); + return; + } + frame = skb->data; info->nr = frame[2] >> 5; /* Next to receive */ @@ -1234,6 +1250,10 @@ IRDA_DEBUG(2, "%s()\n", __FUNCTION__); + if (!pskb_may_pull(skb, sizeof(*frame))) { + ERROR("%s: frame to short!\n", __FUNCTION__); + return; + } frame = (struct test_frame *) skb->data; /* Broadcast frames must carry saddr and daddr fields */ @@ -1302,15 +1322,9 @@ dev_kfree_skb(skb); return -1; } - if (skb_is_nonlinear(skb)) - if (skb_linearize(skb, GFP_ATOMIC) != 0) { - ERROR("%s: can't linearize skb!\n", __FUNCTION__); - dev_kfree_skb(skb); - return -1; - } /* Check if frame is large enough for parsing */ - if (skb->len < 2) { + if (!pskb_may_pull(skb, 2)) { ERROR("%s: frame to short!\n", __FUNCTION__); dev_kfree_skb(skb); return -1; diff -Nru a/net/irda/irlmp.c b/net/irda/irlmp.c --- a/net/irda/irlmp.c Mon Sep 22 00:30:24 2003 +++ b/net/irda/irlmp.c Mon Sep 22 00:30:24 2003 @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -63,9 +64,6 @@ }; __u8 *irlmp_hint_to_service(__u8 *hint); -#ifdef CONFIG_PROC_FS -int irlmp_proc_read(char *buf, char **start, off_t offst, int len); -#endif /* * Function irlmp_init (void) @@ -1780,81 +1778,190 @@ } #ifdef CONFIG_PROC_FS -/* - * Function irlmp_proc_read (buf, start, offset, len, unused) - * - * Give some info to the /proc file system - * - */ -int irlmp_proc_read(char *buf, char **start, off_t offset, int len) -{ - struct lsap_cb *self; - struct lap_cb *lap; + +struct irlmp_iter_state { unsigned long flags; + hashbin_t *hashbin; +}; - ASSERT(irlmp != NULL, return 0;); +#define LSAP_START_TOKEN ((void *)1) +#define LINK_START_TOKEN ((void *)2) - len = 0; +static void *irlmp_seq_hb_idx(struct irlmp_iter_state *iter, + hashbin_t *bin, loff_t *off) +{ + void *element; - len += sprintf( buf+len, "Unconnected LSAPs:\n"); - spin_lock_irqsave(&irlmp->unconnected_lsaps->hb_spinlock, flags); - self = (struct lsap_cb *) hashbin_get_first( irlmp->unconnected_lsaps); - while (self != NULL) { - ASSERT(self->magic == LMP_LSAP_MAGIC, break;); - len += sprintf(buf+len, "lsap state: %s, ", - irlsap_state[ self->lsap_state]); - len += sprintf(buf+len, - "slsap_sel: %#02x, dlsap_sel: %#02x, ", - self->slsap_sel, self->dlsap_sel); - len += sprintf(buf+len, "(%s)", self->notify.name); - len += sprintf(buf+len, "\n"); + spin_lock_irqsave(&bin->hb_spinlock, iter->flags); + for (element = hashbin_get_first(bin); + element != NULL; + element = hashbin_get_next(bin)) { + if (!off || *off-- == 0) { + /* NB: hashbin left locked */ + iter->hashbin = bin; + return element; + } + } + spin_unlock_irqrestore(&bin->hb_spinlock, iter->flags); + return NULL; +} + + +static void *irlmp_seq_start(struct seq_file *seq, loff_t *pos) +{ + struct irlmp_iter_state *iter = seq->private; + void *v; + loff_t off = *pos; + + iter->hashbin = NULL; + if (off-- == 0) + return LSAP_START_TOKEN; + + v = irlmp_seq_hb_idx(iter, irlmp->unconnected_lsaps, &off); + if (v) + return v; - self = (struct lsap_cb *) hashbin_get_next( - irlmp->unconnected_lsaps); + if (off-- == 0) + return LINK_START_TOKEN; + + return irlmp_seq_hb_idx(iter, irlmp->links, &off); +} + +static void *irlmp_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + struct irlmp_iter_state *iter = seq->private; + + ++*pos; + + if (v == LSAP_START_TOKEN) { + v = irlmp_seq_hb_idx(iter, irlmp->unconnected_lsaps, NULL); + return v ? v : LINK_START_TOKEN; } - spin_unlock_irqrestore(&irlmp->unconnected_lsaps->hb_spinlock, flags); - len += sprintf(buf+len, "\nRegistred Link Layers:\n"); - spin_lock_irqsave(&irlmp->links->hb_spinlock, flags); - lap = (struct lap_cb *) hashbin_get_first(irlmp->links); - while (lap != NULL) { - len += sprintf(buf+len, "lap state: %s, ", - irlmp_state[lap->lap_state]); + if (v == LINK_START_TOKEN) + return irlmp_seq_hb_idx(iter, irlmp->links, NULL); + + ASSERT( iter->hashbin != NULL, return NULL; ); + + v = hashbin_get_next(iter->hashbin); + if (v) + return v; + + spin_unlock_irqrestore(&iter->hashbin->hb_spinlock, iter->flags); + + if (iter->hashbin == irlmp->unconnected_lsaps) { + iter->hashbin = NULL; + return LINK_START_TOKEN; + } + return NULL; +} + +static void irlmp_seq_stop(struct seq_file *seq, void *v) +{ + struct irlmp_iter_state *iter = seq->private; + + if (iter->hashbin) + spin_unlock_irqrestore(&iter->hashbin->hb_spinlock, iter->flags); + +} + +static int irlmp_seq_show(struct seq_file *seq, void *v) +{ + const struct irlmp_iter_state *iter = seq->private; + struct lsap_cb *self = v; + + if (v == LSAP_START_TOKEN) + seq_puts(seq, "Unconnected LSAPs:\n"); + else if (v == LINK_START_TOKEN) + seq_puts(seq, "\nRegistered Link Layers:\n"); + else if (iter->hashbin == irlmp->unconnected_lsaps) { + self = v; + ASSERT(self->magic == LMP_LSAP_MAGIC, return -EINVAL; ); + seq_printf(seq, "lsap state: %s, ", + irlsap_state[ self->lsap_state]); + seq_printf(seq, + "slsap_sel: %#02x, dlsap_sel: %#02x, ", + self->slsap_sel, self->dlsap_sel); + seq_printf(seq, "(%s)", self->notify.name); + seq_printf(seq, "\n"); + } else if (iter->hashbin == irlmp->links) { + struct lap_cb *lap = v; - len += sprintf(buf+len, "saddr: %#08x, daddr: %#08x, ", - lap->saddr, lap->daddr); - len += sprintf(buf+len, "num lsaps: %d", - HASHBIN_GET_SIZE(lap->lsaps)); - len += sprintf(buf+len, "\n"); + seq_printf(seq, "lap state: %s, ", + irlmp_state[lap->lap_state]); + + seq_printf(seq, "saddr: %#08x, daddr: %#08x, ", + lap->saddr, lap->daddr); + seq_printf(seq, "num lsaps: %d", + HASHBIN_GET_SIZE(lap->lsaps)); + seq_printf(seq, "\n"); /* Careful for priority inversions here ! * All other uses of attrib spinlock are independent of * the object spinlock, so we are safe. Jean II */ spin_lock(&lap->lsaps->hb_spinlock); - len += sprintf(buf+len, "\n Connected LSAPs:\n"); - self = (struct lsap_cb *) hashbin_get_first(lap->lsaps); - while (self != NULL) { + seq_printf(seq, "\n Connected LSAPs:\n"); + for (self = (struct lsap_cb *) hashbin_get_first(lap->lsaps); + self != NULL; + self = (struct lsap_cb *)hashbin_get_next(lap->lsaps)) { ASSERT(self->magic == LMP_LSAP_MAGIC, break;); - len += sprintf(buf+len, " lsap state: %s, ", - irlsap_state[ self->lsap_state]); - len += sprintf(buf+len, - "slsap_sel: %#02x, dlsap_sel: %#02x, ", - self->slsap_sel, self->dlsap_sel); - len += sprintf(buf+len, "(%s)", self->notify.name); - len += sprintf(buf+len, "\n"); + seq_printf(seq, " lsap state: %s, ", + irlsap_state[ self->lsap_state]); + seq_printf(seq, + "slsap_sel: %#02x, dlsap_sel: %#02x, ", + self->slsap_sel, self->dlsap_sel); + seq_printf(seq, "(%s)", self->notify.name); + seq_putc(seq, '\n'); - self = (struct lsap_cb *) hashbin_get_next( - lap->lsaps); } spin_unlock(&lap->lsaps->hb_spinlock); - len += sprintf(buf+len, "\n"); - - lap = (struct lap_cb *) hashbin_get_next(irlmp->links); - } - spin_unlock_irqrestore(&irlmp->links->hb_spinlock, flags); + seq_putc(seq, '\n'); + } else + return -EINVAL; - return len; + return 0; } + +static struct seq_operations irlmp_seq_ops = { + .start = irlmp_seq_start, + .next = irlmp_seq_next, + .stop = irlmp_seq_stop, + .show = irlmp_seq_show, +}; + +static int irlmp_seq_open(struct inode *inode, struct file *file) +{ + struct seq_file *seq; + int rc = -ENOMEM; + struct irlmp_iter_state *s; + + ASSERT(irlmp != NULL, return -EINVAL;); + + s = kmalloc(sizeof(*s), GFP_KERNEL); + if (!s) + goto out; + + rc = seq_open(file, &irlmp_seq_ops); + if (rc) + goto out_kfree; + + seq = file->private_data; + seq->private = s; + memset(s, 0, sizeof(*s)); +out: + return rc; +out_kfree: + kfree(s); + goto out; +} + +struct file_operations irlmp_seq_fops = { + .owner = THIS_MODULE, + .open = irlmp_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release_private, +}; #endif /* PROC_FS */ diff -Nru a/net/irda/irproc.c b/net/irda/irproc.c --- a/net/irda/irproc.c Mon Sep 22 00:30:17 2003 +++ b/net/irda/irproc.c Mon Sep 22 00:30:17 2003 @@ -25,6 +25,7 @@ #include #include +#include #include #include @@ -32,25 +33,25 @@ #include #include -extern int irlap_proc_read(char *buf, char **start, off_t offset, int len); -extern int irlmp_proc_read(char *buf, char **start, off_t offset, int len); -extern int irttp_proc_read(char *buf, char **start, off_t offset, int len); -extern int irias_proc_read(char *buf, char **start, off_t offset, int len); -extern int discovery_proc_read(char *buf, char **start, off_t offset, int len); +extern struct file_operations discovery_seq_fops; +extern struct file_operations irlap_seq_fops; +extern struct file_operations irlmp_seq_fops; +extern struct file_operations irttp_seq_fops; +extern struct file_operations irias_seq_fops; struct irda_entry { - char *name; - int (*fn)(char*, char**, off_t, int); + const char *name; + struct file_operations *fops; }; struct proc_dir_entry *proc_irda; -static struct irda_entry dir[] = { - {"discovery", discovery_proc_read}, - {"irttp", irttp_proc_read}, - {"irlmp", irlmp_proc_read}, - {"irlap", irlap_proc_read}, - {"irias", irias_proc_read}, +static struct irda_entry irda_dirs[] = { + {"discovery", &discovery_seq_fops}, + {"irttp", &irttp_seq_fops}, + {"irlmp", &irlmp_seq_fops}, + {"irlap", &irlap_seq_fops}, + {"irias", &irias_seq_fops}, }; /* @@ -64,15 +65,15 @@ int i; struct proc_dir_entry *d; - proc_irda = proc_mkdir("net/irda", NULL); + proc_irda = proc_mkdir("irda", proc_net); if (proc_irda == NULL) return; proc_irda->owner = THIS_MODULE; - for (i=0; iowner = THIS_MODULE; + for (i=0; iproc_fops = irda_dirs[i].fops; } } @@ -87,10 +88,10 @@ int i; if (proc_irda) { - for (i=0; i #include #include +#include #include #include @@ -1767,71 +1768,127 @@ } #ifdef CONFIG_PROC_FS -/* - * Function irttp_proc_read (buf, start, offset, len, unused) - * - * Give some info to the /proc file system - */ -int irttp_proc_read(char *buf, char **start, off_t offset, int len) -{ - struct tsap_cb *self; +struct irttp_iter_state { + int id; unsigned long flags; - int i = 0; - - ASSERT(irttp != NULL, return 0;); +}; - len = 0; +static void *irttp_seq_start(struct seq_file *seq, loff_t *pos) +{ + struct irttp_iter_state *iter = seq->private; + struct tsap_cb *self; /* Protect our access to the tsap list */ - spin_lock_irqsave(&irttp->tsaps->hb_spinlock, flags); + spin_lock_irqsave(&irttp->tsaps->hb_spinlock, iter->flags); + iter->id = 0; - self = (struct tsap_cb *) hashbin_get_first(irttp->tsaps); - while (self != NULL) { - if (!self || self->magic != TTP_TSAP_MAGIC) + for (self = (struct tsap_cb *) hashbin_get_first(irttp->tsaps); + self != NULL; + self = (struct tsap_cb *) hashbin_get_next(irttp->tsaps)) { + if (iter->id == *pos) break; + ++iter->id; + } + + return self; +} + +static void *irttp_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + struct irttp_iter_state *iter = seq->private; - len += sprintf(buf+len, "TSAP %d, ", i++); - len += sprintf(buf+len, "stsap_sel: %02x, ", - self->stsap_sel); - len += sprintf(buf+len, "dtsap_sel: %02x\n", - self->dtsap_sel); - len += sprintf(buf+len, " connected: %s, ", - self->connected? "TRUE":"FALSE"); - len += sprintf(buf+len, "avail credit: %d, ", - self->avail_credit); - len += sprintf(buf+len, "remote credit: %d, ", - self->remote_credit); - len += sprintf(buf+len, "send credit: %d\n", - self->send_credit); - len += sprintf(buf+len, " tx packets: %ld, ", - self->stats.tx_packets); - len += sprintf(buf+len, "rx packets: %ld, ", - self->stats.rx_packets); - len += sprintf(buf+len, "tx_queue len: %d ", - skb_queue_len(&self->tx_queue)); - len += sprintf(buf+len, "rx_queue len: %d\n", - skb_queue_len(&self->rx_queue)); - len += sprintf(buf+len, " tx_sdu_busy: %s, ", - self->tx_sdu_busy? "TRUE":"FALSE"); - len += sprintf(buf+len, "rx_sdu_busy: %s\n", - self->rx_sdu_busy? "TRUE":"FALSE"); - len += sprintf(buf+len, " max_seg_size: %d, ", - self->max_seg_size); - len += sprintf(buf+len, "tx_max_sdu_size: %d, ", - self->tx_max_sdu_size); - len += sprintf(buf+len, "rx_max_sdu_size: %d\n", - self->rx_max_sdu_size); + ++*pos; + ++iter->id; + return (void *) hashbin_get_next(irttp->tsaps); +} - len += sprintf(buf+len, " Used by (%s)\n", - self->notify.name); +static void irttp_seq_stop(struct seq_file *seq, void *v) +{ + struct irttp_iter_state *iter = seq->private; + spin_unlock_irqrestore(&irttp->tsaps->hb_spinlock, iter->flags); +} - len += sprintf(buf+len, "\n"); +static int irttp_seq_show(struct seq_file *seq, void *v) +{ + const struct irttp_iter_state *iter = seq->private; + const struct tsap_cb *self = v; - self = (struct tsap_cb *) hashbin_get_next(irttp->tsaps); - } - spin_unlock_irqrestore(&irttp->tsaps->hb_spinlock, flags); + seq_printf(seq, "TSAP %d, ", iter->id); + seq_printf(seq, "stsap_sel: %02x, ", + self->stsap_sel); + seq_printf(seq, "dtsap_sel: %02x\n", + self->dtsap_sel); + seq_printf(seq, " connected: %s, ", + self->connected? "TRUE":"FALSE"); + seq_printf(seq, "avail credit: %d, ", + self->avail_credit); + seq_printf(seq, "remote credit: %d, ", + self->remote_credit); + seq_printf(seq, "send credit: %d\n", + self->send_credit); + seq_printf(seq, " tx packets: %ld, ", + self->stats.tx_packets); + seq_printf(seq, "rx packets: %ld, ", + self->stats.rx_packets); + seq_printf(seq, "tx_queue len: %d ", + skb_queue_len(&self->tx_queue)); + seq_printf(seq, "rx_queue len: %d\n", + skb_queue_len(&self->rx_queue)); + seq_printf(seq, " tx_sdu_busy: %s, ", + self->tx_sdu_busy? "TRUE":"FALSE"); + seq_printf(seq, "rx_sdu_busy: %s\n", + self->rx_sdu_busy? "TRUE":"FALSE"); + seq_printf(seq, " max_seg_size: %d, ", + self->max_seg_size); + seq_printf(seq, "tx_max_sdu_size: %d, ", + self->tx_max_sdu_size); + seq_printf(seq, "rx_max_sdu_size: %d\n", + self->rx_max_sdu_size); - return len; + seq_printf(seq, " Used by (%s)\n\n", + self->notify.name); + return 0; } + +static struct seq_operations irttp_seq_ops = { + .start = irttp_seq_start, + .next = irttp_seq_next, + .stop = irttp_seq_stop, + .show = irttp_seq_show, +}; + +static int irttp_seq_open(struct inode *inode, struct file *file) +{ + struct seq_file *seq; + int rc = -ENOMEM; + struct irttp_iter_state *s; + + ASSERT(irttp != NULL, return -EINVAL;); + + s = kmalloc(sizeof(*s), GFP_KERNEL); + if (!s) + goto out; + + rc = seq_open(file, &irttp_seq_ops); + if (rc) + goto out_kfree; + + seq = file->private_data; + seq->private = s; + memset(s, 0, sizeof(*s)); +out: + return rc; +out_kfree: + kfree(s); + goto out; +} + +struct file_operations irttp_seq_fops = { + .owner = THIS_MODULE, + .open = irttp_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release_private, +}; #endif /* PROC_FS */ diff -Nru a/net/llc/Kconfig b/net/llc/Kconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/net/llc/Kconfig Mon Sep 22 00:30:25 2003 @@ -0,0 +1,10 @@ +config LLC + tristate + depends on NET + +config LLC2 + tristate "ANSI/IEEE 802.2 LLC type 2 Support" + select LLC + help + This is a Logical Link Layer type 2, connection oriented support. + Select this if you want to have support for PF_LLC sockets. diff -Nru a/net/llc/Makefile b/net/llc/Makefile --- a/net/llc/Makefile Mon Sep 22 00:30:24 2003 +++ b/net/llc/Makefile Mon Sep 22 00:30:24 2003 @@ -2,7 +2,7 @@ # Makefile for the Linux 802.2 LLC (fully-functional) layer. # # Copyright (c) 1997 by Procom Technology,Inc. -# 2001, 2002 by Arnaldo Carvalho de Melo +# 2001-2003 by Arnaldo Carvalho de Melo # # This program can be redistributed or modified under the terms of the # GNU General Public License as published by the Free Software Foundation. @@ -14,7 +14,11 @@ obj-$(CONFIG_LLC) += llc.o -llc-y := llc_if.o llc_c_ev.o llc_c_ac.o llc_mac.o llc_sap.o llc_s_st.o \ - llc_main.o llc_s_ac.o llc_conn.o llc_c_st.o llc_stat.o llc_actn.o \ - llc_s_ev.o llc_evnt.o llc_pdu.o llc_proc.o -llc-$(CONFIG_LLC_UI) += af_llc.o +llc-y := llc_core.o llc_input.o llc_output.o + +obj-$(CONFIG_LLC2) += llc2.o + +llc2-y := llc_if.o llc_c_ev.o llc_c_ac.o llc_conn.o llc_c_st.o llc_pdu.o \ + llc_sap.o llc_s_ac.o llc_s_ev.o llc_s_st.o af_llc.o llc_station.o + +llc2-$(CONFIG_PROC_FS) += llc_proc.o diff -Nru a/net/llc/af_llc.c b/net/llc/af_llc.c --- a/net/llc/af_llc.c Mon Sep 22 00:30:17 2003 +++ b/net/llc/af_llc.c Mon Sep 22 00:30:17 2003 @@ -24,13 +24,13 @@ #include #include #include +#include +#include +#include #include #include #include -#include -#include -#include -#include +#include /* remember: uninitialized global data is zeroed because its in .bss */ static u16 llc_ui_sap_last_autoport = LLC_SAP_DYN_START; @@ -182,10 +182,12 @@ if (!llc_send_disc(sk)) llc_ui_wait_for_disc(sk, sk->sk_rcvtimeo); if (!sk->sk_zapped) - llc_sap_unassign_sock(llc->sap, sk); + llc_sap_remove_socket(llc->sap, sk); release_sock(sk); - if (llc->sap && hlist_empty(&llc->sap->sk_list.list)) + if (llc->sap && hlist_empty(&llc->sap->sk_list.list)) { + llc_release_sockets(llc->sap); llc_sap_close(llc->sap); + } sock_put(sk); llc_sk_free(sk); out: @@ -303,7 +305,7 @@ memcpy(llc->daddr.mac, addr->sllc_dmac, IFHWADDRLEN); memcpy(&llc->addr, addr, sizeof(llc->addr)); /* assign new connection to its SAP */ - llc_sap_assign_sock(sap, sk); + llc_sap_add_socket(sap, sk); rc = sk->sk_zapped = 0; out: return rc; @@ -1042,14 +1044,38 @@ .sendpage = sock_no_sendpage, }; -int __init llc_ui_init(void) +extern void llc_sap_handler(struct llc_sap *sap, struct sk_buff *skb); +extern void llc_conn_handler(struct llc_sap *sap, struct sk_buff *skb); + +static int __init llc2_init(void) { + int rc; + + llc_build_offset_table(); + llc_station_init(); llc_ui_sap_last_autoport = LLC_SAP_DYN_START; - sock_register(&llc_ui_family_ops); - return 0; + rc = llc_proc_init(); + if (!rc) { + sock_register(&llc_ui_family_ops); + llc_add_pack(LLC_DEST_SAP, llc_sap_handler); + llc_add_pack(LLC_DEST_CONN, llc_conn_handler); + } + return rc; } -void __exit llc_ui_exit(void) +static void __exit llc2_exit(void) { + llc_station_exit(); + llc_remove_pack(LLC_DEST_SAP); + llc_remove_pack(LLC_DEST_CONN); sock_unregister(PF_LLC); + llc_proc_exit(); } + +module_init(llc2_init); +module_exit(llc2_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Procom 1997, Jay Schullist 2001, Arnaldo C. Melo 2001-2003"); +MODULE_DESCRIPTION("IEEE 802.2 PF_LLC support"); +MODULE_ALIAS_NETPROTO(PF_LLC); diff -Nru a/net/llc/llc_actn.c b/net/llc/llc_actn.c --- a/net/llc/llc_actn.c Mon Sep 22 00:30:19 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,138 +0,0 @@ -/* - * llc_actn.c - Implementation of actions of station component of LLC - * - * Description : - * Functions in this module are implementation of station component actions. - * Details of actions can be found in IEEE-802.2 standard document. - * All functions have one station and one event as input argument. All of - * them return 0 On success and 1 otherwise. - * - * Copyright (c) 1997 by Procom Technology, Inc. - * 2001-2003 by Arnaldo Carvalho de Melo - * - * This program can be redistributed or modified under the terms of the - * GNU General Public License as published by the Free Software Foundation. - * This program is distributed without any warranty or implied warranty - * of merchantability or fitness for a particular purpose. - * - * See the GNU General Public License for more details. - */ -#include -#include -#include -#include -#include -#include - -int llc_station_ac_start_ack_timer(struct llc_station *station, - struct sk_buff *skb) -{ - mod_timer(&station->ack_timer, jiffies + LLC_ACK_TIME * HZ); - return 0; -} - -int llc_station_ac_set_retry_cnt_0(struct llc_station *station, - struct sk_buff *skb) -{ - station->retry_count = 0; - return 0; -} - -int llc_station_ac_inc_retry_cnt_by_1(struct llc_station *station, - struct sk_buff *skb) -{ - station->retry_count++; - return 0; -} - -int llc_station_ac_set_xid_r_cnt_0(struct llc_station *station, - struct sk_buff *skb) -{ - station->xid_r_count = 0; - return 0; -} - -int llc_station_ac_inc_xid_r_cnt_by_1(struct llc_station *station, - struct sk_buff *skb) -{ - station->xid_r_count++; - return 0; -} - -int llc_station_ac_send_null_dsap_xid_c(struct llc_station *station, - struct sk_buff *skb) -{ - int rc = 1; - struct sk_buff *nskb = llc_alloc_frame(); - - if (!nskb) - goto out; - rc = 0; - llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, 0, 0, LLC_PDU_CMD); - llc_pdu_init_as_xid_cmd(nskb, LLC_XID_NULL_CLASS_2, 127); - lan_hdrs_init(nskb, station->mac_sa, station->mac_sa); - llc_station_send_pdu(station, nskb); -out: - return rc; -} - -int llc_station_ac_send_xid_r(struct llc_station *station, - struct sk_buff *skb) -{ - u8 mac_da[ETH_ALEN], dsap; - int rc = 1; - struct sk_buff* nskb = llc_alloc_frame(); - - if (!nskb) - goto out; - rc = 0; - nskb->dev = skb->dev; - llc_pdu_decode_sa(skb, mac_da); - llc_pdu_decode_ssap(skb, &dsap); - llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, 0, dsap, LLC_PDU_RSP); - llc_pdu_init_as_xid_rsp(nskb, LLC_XID_NULL_CLASS_2, 127); - lan_hdrs_init(nskb, station->mac_sa, mac_da); - llc_station_send_pdu(station, nskb); -out: - return rc; -} - -int llc_station_ac_send_test_r(struct llc_station *station, - struct sk_buff *skb) -{ - u8 mac_da[ETH_ALEN], dsap; - int rc = 1; - struct sk_buff *nskb = llc_alloc_frame(); - - if (!nskb) - goto out; - rc = 0; - nskb->dev = skb->dev; - llc_pdu_decode_sa(skb, mac_da); - llc_pdu_decode_ssap(skb, &dsap); - llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, 0, dsap, LLC_PDU_RSP); - llc_pdu_init_as_test_rsp(nskb, skb); - lan_hdrs_init(nskb, station->mac_sa, mac_da); - llc_station_send_pdu(station, nskb); -out: - return rc; -} - -int llc_station_ac_report_status(struct llc_station *station, - struct sk_buff *skb) -{ - return 0; -} - -void llc_station_ack_tmr_cb(unsigned long timeout_data) -{ - struct llc_station *station = (struct llc_station *)timeout_data; - struct sk_buff *skb = alloc_skb(0, GFP_ATOMIC); - - if (skb) { - struct llc_station_state_ev *ev = llc_station_ev(skb); - - ev->type = LLC_STATION_EV_TYPE_ACK_TMR; - llc_station_state_process(station, skb); - } -} diff -Nru a/net/llc/llc_c_ac.c b/net/llc/llc_c_ac.c --- a/net/llc/llc_c_ac.c Mon Sep 22 00:30:25 2003 +++ b/net/llc/llc_c_ac.c Mon Sep 22 00:30:25 2003 @@ -21,12 +21,13 @@ #include #include #include -#include #include #include #include #include -#include +#include + +#include "llc_output.h" static int llc_conn_ac_inc_vs_by_1(struct sock *sk, struct sk_buff *skb); static void llc_process_tmr_ev(struct sock *sk, struct sk_buff *skb); @@ -52,7 +53,7 @@ int llc_conn_ac_conn_ind(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOTCONN; u8 dsap; struct llc_sap *sap; @@ -97,28 +98,24 @@ { struct llc_conn_state_ev *ev = llc_conn_ev(skb); u8 reason = 0; - int rc = 1; + int rc = 0; if (ev->type == LLC_CONN_EV_TYPE_PDU) { struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); if (LLC_PDU_IS_RSP(pdu) && LLC_PDU_TYPE_IS_U(pdu) && - LLC_U_PDU_RSP(pdu) == LLC_2_PDU_RSP_DM) { + LLC_U_PDU_RSP(pdu) == LLC_2_PDU_RSP_DM) reason = LLC_DISC_REASON_RX_DM_RSP_PDU; - rc = 0; - } else if (LLC_PDU_IS_CMD(pdu) && + else if (LLC_PDU_IS_CMD(pdu) && LLC_PDU_TYPE_IS_U(pdu) && - LLC_U_PDU_CMD(pdu) == LLC_2_PDU_CMD_DISC) { + LLC_U_PDU_CMD(pdu) == LLC_2_PDU_CMD_DISC) reason = LLC_DISC_REASON_RX_DISC_CMD_PDU; - rc = 0; - } - } else if (ev->type == LLC_CONN_EV_TYPE_ACK_TMR) { + } else if (ev->type == LLC_CONN_EV_TYPE_ACK_TMR) reason = LLC_DISC_REASON_ACK_TMR_EXP; - rc = 0; - } else { + else { reason = 0; - rc = 1; + rc = -EINVAL; } if (!rc) { ev->reason = reason; @@ -217,29 +214,33 @@ int llc_conn_ac_send_disc_cmd_p_set_x(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { - u8 p_bit = 1; struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; nskb->dev = llc->dev; llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_CMD); - llc_pdu_init_as_disc_cmd(nskb, p_bit); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; - llc_conn_send_pdu(sk, nskb); - } - llc_conn_ac_set_p_flag_1(sk, skb); - return rc; + llc_pdu_init_as_disc_cmd(nskb, 1); + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; + llc_conn_send_pdu(sk, nskb); + llc_conn_ac_set_p_flag_1(sk, skb); + } +out: + return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_dm_rsp_f_set_p(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { @@ -252,16 +253,21 @@ llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_dm_rsp(nskb, f_bit); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_dm_rsp_f_set_1(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { @@ -273,16 +279,21 @@ llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_dm_rsp(nskb, f_bit); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_dm_rsp_f_set_f_flag(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { @@ -294,17 +305,22 @@ llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_dm_rsp(nskb, f_bit); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_frmr_rsp_f_set_x(struct sock *sk, struct sk_buff *skb) { u8 f_bit; - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb; struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb); struct llc_opt *llc = llc_sk(sk); @@ -323,16 +339,21 @@ llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_frmr_rsp(nskb, pdu, f_bit, llc->vS, llc->vR, INCORRECT); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_resend_frmr_rsp_f_set_0(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { @@ -346,17 +367,22 @@ llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_frmr_rsp(nskb, pdu, f_bit, llc->vS, llc->vR, INCORRECT); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_resend_frmr_rsp_f_set_p(struct sock *sk, struct sk_buff *skb) { u8 f_bit; - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb; llc_pdu_decode_pf_bit(skb, &f_bit); @@ -371,41 +397,50 @@ llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_frmr_rsp(nskb, pdu, f_bit, llc->vS, llc->vR, INCORRECT); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_i_cmd_p_set_1(struct sock *sk, struct sk_buff *skb) { - u8 p_bit = 1; + int rc; struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; llc_pdu_header_init(skb, LLC_PDU_TYPE_I, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_CMD); - llc_pdu_init_as_i_cmd(skb, p_bit, llc->vS, llc->vR); - lan_hdrs_init(skb, llc->dev->dev_addr, llc->daddr.mac); - llc_conn_send_pdu(sk, skb); - llc_conn_ac_inc_vs_by_1(sk, skb); - return 0; + llc_pdu_init_as_i_cmd(skb, 1, llc->vS, llc->vR); + rc = llc_mac_hdr_init(skb, llc->dev->dev_addr, llc->daddr.mac); + if (!rc) { + llc_conn_send_pdu(sk, skb); + llc_conn_ac_inc_vs_by_1(sk, skb); + } + return rc; } int llc_conn_ac_send_i_cmd_p_set_0(struct sock *sk, struct sk_buff *skb) { - u8 p_bit = 0; + int rc; struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; llc_pdu_header_init(skb, LLC_PDU_TYPE_I, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_CMD); - llc_pdu_init_as_i_cmd(skb, p_bit, llc->vS, llc->vR); - lan_hdrs_init(skb, llc->dev->dev_addr, llc->daddr.mac); - llc_conn_send_pdu(sk, skb); - llc_conn_ac_inc_vs_by_1(sk, skb); - return 0; + llc_pdu_init_as_i_cmd(skb, 0, llc->vS, llc->vR); + rc = llc_mac_hdr_init(skb, llc->dev->dev_addr, llc->daddr.mac); + if (!rc) { + llc_conn_send_pdu(sk, skb); + llc_conn_ac_inc_vs_by_1(sk, skb); + } + return rc; } int llc_conn_ac_resend_i_cmd_p_set_1(struct sock *sk, struct sk_buff *skb) @@ -431,16 +466,18 @@ int llc_conn_ac_send_i_xxx_x_set_0(struct sock *sk, struct sk_buff *skb) { - u8 p_bit = 0; + int rc; struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; llc_pdu_header_init(skb, LLC_PDU_TYPE_I, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_CMD); - llc_pdu_init_as_i_cmd(skb, p_bit, llc->vS, llc->vR); - lan_hdrs_init(skb, llc->dev->dev_addr, llc->daddr.mac); - llc_conn_send_pdu(sk, skb); - llc_conn_ac_inc_vs_by_1(sk, skb); + llc_pdu_init_as_i_cmd(skb, 0, llc->vS, llc->vR); + rc = llc_mac_hdr_init(skb, llc->dev->dev_addr, llc->daddr.mac); + if (!rc) { + llc_conn_send_pdu(sk, skb); + llc_conn_ac_inc_vs_by_1(sk, skb); + } return 0; } @@ -457,9 +494,8 @@ struct sk_buff *skb) { u8 nr; - u8 f_bit = 0; struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb); - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { @@ -469,15 +505,17 @@ nskb->dev = llc->dev; llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); - llc_pdu_init_as_rr_rsp(nskb, f_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; - llc_conn_send_pdu(sk, nskb); + llc_pdu_init_as_rr_rsp(nskb, 0, llc->vR); + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (!rc) + llc_conn_send_pdu(sk, nskb); + else + kfree_skb(skb); } if (rc) { nr = LLC_I_GET_NR(pdu); rc = 0; - llc_conn_resend_i_pdu_as_cmd(sk, nr, f_bit); + llc_conn_resend_i_pdu_as_cmd(sk, nr, 0); } return rc; } @@ -493,28 +531,32 @@ int llc_conn_ac_send_rej_cmd_p_set_1(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; - u8 p_bit = 1; nskb->dev = llc->dev; llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_CMD); - llc_pdu_init_as_rej_cmd(nskb, p_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + llc_pdu_init_as_rej_cmd(nskb, 1, llc->vR); + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_rej_rsp_f_set_1(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { @@ -526,16 +568,21 @@ llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_rej_rsp(nskb, f_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_rej_xxx_x_set_0(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { @@ -547,37 +594,46 @@ llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_rej_rsp(nskb, f_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_rnr_cmd_p_set_1(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; - u8 p_bit = 1; nskb->dev = llc->dev; llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_CMD); - llc_pdu_init_as_rnr_cmd(nskb, p_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + llc_pdu_init_as_rnr_cmd(nskb, 1, llc->vR); + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_rnr_rsp_f_set_1(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { @@ -589,16 +645,21 @@ llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_rnr_rsp(nskb, f_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_rnr_xxx_x_set_0(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { @@ -610,11 +671,16 @@ llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_rnr_rsp(nskb, f_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_set_remote_busy(struct sock *sk, struct sk_buff *skb) @@ -631,70 +697,82 @@ int llc_conn_ac_opt_send_rnr_xxx_x_set_0(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; - u8 f_bit = 0; nskb->dev = llc->dev; llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); - llc_pdu_init_as_rnr_rsp(nskb, f_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + llc_pdu_init_as_rnr_rsp(nskb, 0, llc->vR); + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_rr_cmd_p_set_1(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { - u8 p_bit = 1; struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; nskb->dev = llc->dev; llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_CMD); - llc_pdu_init_as_rr_cmd(nskb, p_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + llc_pdu_init_as_rr_cmd(nskb, 1, llc->vR); + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_ack_cmd_p_set_1(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { - u8 p_bit = 1; struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; nskb->dev = llc->dev; llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_CMD); - llc_pdu_init_as_rr_cmd(nskb, p_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + llc_pdu_init_as_rr_cmd(nskb, 1, llc->vR); + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_rr_rsp_f_set_1(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { @@ -706,16 +784,21 @@ llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_rr_rsp(nskb, f_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_ack_rsp_f_set_1(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { @@ -727,53 +810,66 @@ llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_rr_rsp(nskb, f_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_rr_xxx_x_set_0(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; - u8 f_bit = 0; nskb->dev = llc->dev; llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); - llc_pdu_init_as_rr_rsp(nskb, f_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + llc_pdu_init_as_rr_rsp(nskb, 0, llc->vR); + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_ack_xxx_x_set_0(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; - u8 f_bit = 0; nskb->dev = llc->dev; llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); - llc_pdu_init_as_rr_rsp(nskb, f_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + llc_pdu_init_as_rr_rsp(nskb, 0, llc->vR); + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } void llc_conn_set_p_flag(struct sock *sk, u8 value) @@ -788,10 +884,9 @@ int llc_conn_ac_send_sabme_cmd_p_set_x(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); struct llc_opt *llc = llc_sk(sk); - u8 p_bit = 1; if (nskb) { struct llc_sap *sap = llc->sap; @@ -802,41 +897,49 @@ nskb->dev = llc->dev; llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_CMD); - llc_pdu_init_as_sabme_cmd(nskb, p_bit); - lan_hdrs_init(nskb, llc->dev->dev_addr, dmac); - rc = 0; - llc_conn_send_pdu(sk, nskb); - } - llc_conn_set_p_flag(sk, p_bit); - - return rc; + llc_pdu_init_as_sabme_cmd(nskb, 1); + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, dmac); + if (rc) + goto free; + llc_conn_send_pdu(sk, nskb); + llc_conn_set_p_flag(sk, 1); + } +out: + return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_ua_rsp_f_set_f_flag(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; - u8 f_bit = llc->f_flag; nskb->dev = llc->dev; llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); - llc_pdu_init_as_ua_rsp(nskb, f_bit); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + llc_pdu_init_as_ua_rsp(nskb, llc->f_flag); + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_send_ua_rsp_f_set_p(struct sock *sk, struct sk_buff *skb) { u8 f_bit; - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); llc_pdu_decode_pf_bit(skb, &f_bit); @@ -848,11 +951,16 @@ llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); llc_pdu_init_as_ua_rsp(nskb, f_bit); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } int llc_conn_ac_set_s_flag_0(struct sock *sk, struct sk_buff *skb) @@ -935,17 +1043,19 @@ */ int llc_conn_ac_send_i_rsp_f_set_ackpf(struct sock *sk, struct sk_buff *skb) { + int rc; struct llc_opt *llc = llc_sk(sk); - u8 p_bit = llc->ack_pf; struct llc_sap *sap = llc->sap; llc_pdu_header_init(skb, LLC_PDU_TYPE_I, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); - llc_pdu_init_as_i_cmd(skb, p_bit, llc->vS, llc->vR); - lan_hdrs_init(skb, llc->dev->dev_addr, llc->daddr.mac); - llc_conn_send_pdu(sk, skb); - llc_conn_ac_inc_vs_by_1(sk, skb); - return 0; + llc_pdu_init_as_i_cmd(skb, llc->ack_pf, llc->vS, llc->vR); + rc = llc_mac_hdr_init(skb, llc->dev->dev_addr, llc->daddr.mac); + if (!rc) { + llc_conn_send_pdu(sk, skb); + llc_conn_ac_inc_vs_by_1(sk, skb); + } + return rc; } /** @@ -983,23 +1093,27 @@ */ int llc_conn_ac_send_rr_rsp_f_set_ackpf(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + int rc = -ENOBUFS; struct sk_buff *nskb = llc_alloc_frame(); if (nskb) { struct llc_opt *llc = llc_sk(sk); struct llc_sap *sap = llc->sap; - u8 f_bit = llc->ack_pf; nskb->dev = llc->dev; llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap, llc->daddr.lsap, LLC_PDU_RSP); - llc_pdu_init_as_rr_rsp(nskb, f_bit, llc->vR); - lan_hdrs_init(nskb, llc->dev->dev_addr, llc->daddr.mac); - rc = 0; + llc_pdu_init_as_rr_rsp(nskb, llc->ack_pf, llc->vR); + rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); + if (rc) + goto free; llc_conn_send_pdu(sk, nskb); } +out: return rc; +free: + kfree_skb(nskb); + goto out; } /** @@ -1193,7 +1307,6 @@ { int acked; u16 unacked = 0; - u8 fbit; struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb); struct llc_opt *llc = llc_sk(sk); @@ -1215,8 +1328,10 @@ mod_timer(&llc->ack_timer.timer, jiffies + llc->ack_timer.expire * HZ); } else if (llc->failed_data_req) { - llc_pdu_decode_pf_bit(skb, &fbit); - if (fbit == 1) { + u8 f_bit; + + llc_pdu_decode_pf_bit(skb, &f_bit); + if (f_bit == 1) { llc->failed_data_req = 0; llc_conn_ac_data_confirm(sk, skb); } diff -Nru a/net/llc/llc_conn.c b/net/llc/llc_conn.c --- a/net/llc/llc_conn.c Mon Sep 22 00:30:18 2003 +++ b/net/llc/llc_conn.c Mon Sep 22 00:30:18 2003 @@ -11,21 +11,22 @@ * * See the GNU General Public License for more details. */ -#include -#include + #include -#include #include #include #include #include -#include #include #include #include -#include #include -#include + +#if 0 +#define dprintk(args...) printk(KERN_DEBUG args) +#else +#define dprintk(args...) +#endif static int llc_find_offset(int state, int ev_type); static void llc_conn_send_pdus(struct sock *sk); @@ -39,22 +40,6 @@ /* Offset table on connection states transition diagram */ static int llc_offset_table[NBR_CONN_STATES][NBR_CONN_EV]; -void llc_save_primitive(struct sk_buff* skb, u8 prim) -{ - struct sockaddr_llc *addr = llc_ui_skb_cb(skb); - - /* save primitive for use by the user. */ - addr->sllc_family = skb->sk->sk_family; - addr->sllc_arphrd = skb->dev->type; - addr->sllc_test = prim == LLC_TEST_PRIM; - addr->sllc_xid = prim == LLC_XID_PRIM; - addr->sllc_ua = prim == LLC_DATAUNIT_PRIM; - llc_pdu_decode_sa(skb, addr->sllc_smac); - llc_pdu_decode_da(skb, addr->sllc_dmac); - llc_pdu_decode_dsap(skb, &addr->sllc_dsap); - llc_pdu_decode_ssap(skb, &addr->sllc_ssap); -} - /** * llc_conn_state_process - sends event to connection state machine * @sk: connection @@ -541,35 +526,6 @@ } /** - * llc_lookup_dgram - Finds dgram socket for the local sap/mac - * @sap: SAP - * @laddr: address of local LLC (MAC + SAP) - * - * Search socket list of the SAP and finds connection using the local - * mac, and local sap. Returns pointer for socket found, %NULL otherwise. - */ -struct sock *llc_lookup_dgram(struct llc_sap *sap, struct llc_addr *laddr) -{ - struct sock *rc; - struct hlist_node *node; - - read_lock_bh(&sap->sk_list.lock); - sk_for_each(rc, node, &sap->sk_list.list) { - struct llc_opt *llc = llc_sk(rc); - - if (rc->sk_type == SOCK_DGRAM && - llc->laddr.lsap == laddr->lsap && - llc_mac_match(llc->laddr.mac, laddr->mac)) { - sock_hold(rc); - goto found; - } - } - rc = NULL; -found: - read_unlock_bh(&sap->sk_list.lock); - return rc; -} -/** * llc_data_accept_state - designates if in this state data can be sent. * @state: state of connection. * @@ -650,4 +606,324 @@ rc = llc_offset_table[state][3]; break; } return rc; +} + +/** + * llc_sap_add_socket - adds a socket to a SAP + * @sap: SAP + * @sk: socket + * + * This function adds a socket to sk_list of a SAP. + */ +void llc_sap_add_socket(struct llc_sap *sap, struct sock *sk) +{ + write_lock_bh(&sap->sk_list.lock); + llc_sk(sk)->sap = sap; + sk_add_node(sk, &sap->sk_list.list); + write_unlock_bh(&sap->sk_list.lock); +} + +/** + * llc_sap_remove_socket - removes a socket from SAP + * @sap: SAP + * @sk: socket + * + * This function removes a connection from sk_list.list of a SAP if + * the connection was in this list. + */ +void llc_sap_remove_socket(struct llc_sap *sap, struct sock *sk) +{ + write_lock_bh(&sap->sk_list.lock); + sk_del_node_init(sk); + write_unlock_bh(&sap->sk_list.lock); +} + +/** + * llc_conn_rcv - sends received pdus to the connection state machine + * @sk: current connection structure. + * @skb: received frame. + * + * Sends received pdus to the connection state machine. + */ +static int llc_conn_rcv(struct sock* sk, struct sk_buff *skb) +{ + struct llc_conn_state_ev *ev = llc_conn_ev(skb); + struct llc_opt *llc = llc_sk(sk); + + if (!llc->dev) + llc->dev = skb->dev; + ev->type = LLC_CONN_EV_TYPE_PDU; + ev->reason = 0; + return llc_conn_state_process(sk, skb); +} + +void llc_conn_handler(struct llc_sap *sap, struct sk_buff *skb) +{ + struct llc_addr saddr, daddr; + struct sock *sk; + + llc_pdu_decode_sa(skb, saddr.mac); + llc_pdu_decode_ssap(skb, &saddr.lsap); + llc_pdu_decode_da(skb, daddr.mac); + llc_pdu_decode_dsap(skb, &daddr.lsap); + + sk = llc_lookup_established(sap, &saddr, &daddr); + if (!sk) { + /* + * Didn't find an active connection; verify if there + * is a listening socket for this llc addr + */ + struct llc_opt *llc; + struct sock *parent = llc_lookup_listener(sap, &daddr); + + if (!parent) { + dprintk("llc_lookup_listener failed!\n"); + goto drop; + } + + sk = llc_sk_alloc(parent->sk_family, GFP_ATOMIC); + if (!sk) { + sock_put(parent); + goto drop; + } + llc = llc_sk(sk); + memcpy(&llc->laddr, &daddr, sizeof(llc->laddr)); + memcpy(&llc->daddr, &saddr, sizeof(llc->daddr)); + llc_sap_add_socket(sap, sk); + sock_hold(sk); + sock_put(parent); + skb->sk = parent; + } else + skb->sk = sk; + bh_lock_sock(sk); + if (!sock_owned_by_user(sk)) + llc_conn_rcv(sk, skb); + else { + dprintk("%s: adding to backlog...\n", __FUNCTION__); + llc_set_backlog_type(skb, LLC_PACKET); + sk_add_backlog(sk, skb); + } + bh_unlock_sock(sk); + sock_put(sk); + return; +drop: + kfree_skb(skb); +} + +#undef LLC_REFCNT_DEBUG +#ifdef LLC_REFCNT_DEBUG +static atomic_t llc_sock_nr; +#endif + +/** + * llc_release_sockets - releases all sockets in a sap + * @sap: sap to release its sockets + * + * Releases all connections of a sap. Returns 0 if all actions complete + * successfully, nonzero otherwise + */ +int llc_release_sockets(struct llc_sap *sap) +{ + int rc = 0; + struct sock *sk; + struct hlist_node *node; + + write_lock_bh(&sap->sk_list.lock); + + sk_for_each(sk, node, &sap->sk_list.list) { + llc_sk(sk)->state = LLC_CONN_STATE_TEMP; + + if (llc_send_disc(sk)) + rc = 1; + } + + write_unlock_bh(&sap->sk_list.lock); + return rc; +} + +/** + * llc_backlog_rcv - Processes rx frames and expired timers. + * @sk: LLC sock (p8022 connection) + * @skb: queued rx frame or event + * + * This function processes frames that has received and timers that has + * expired during sending an I pdu (refer to data_req_handler). frames + * queue by llc_rcv function (llc_mac.c) and timers queue by timer + * callback functions(llc_c_ac.c). + */ +static int llc_backlog_rcv(struct sock *sk, struct sk_buff *skb) +{ + int rc = 0; + struct llc_opt *llc = llc_sk(sk); + + if (llc_backlog_type(skb) == LLC_PACKET) { + if (llc->state > 1) /* not closed */ + rc = llc_conn_rcv(sk, skb); + else + goto out_kfree_skb; + } else if (llc_backlog_type(skb) == LLC_EVENT) { + /* timer expiration event */ + if (llc->state > 1) /* not closed */ + rc = llc_conn_state_process(sk, skb); + else + goto out_kfree_skb; + } else { + printk(KERN_ERR "%s: invalid skb in backlog\n", __FUNCTION__); + goto out_kfree_skb; + } +out: + return rc; +out_kfree_skb: + kfree_skb(skb); + goto out; +} + +/** + * llc_sk_init - Initializes a socket with default llc values. + * @sk: socket to initialize. + * + * Initializes a socket with default llc values. + */ +int llc_sk_init(struct sock* sk) +{ + struct llc_opt *llc = kmalloc(sizeof(*llc), GFP_ATOMIC); + int rc = -ENOMEM; + + if (!llc) + goto out; + memset(llc, 0, sizeof(*llc)); + rc = 0; + + llc->sk = sk; + llc->state = LLC_CONN_STATE_ADM; + llc->inc_cntr = llc->dec_cntr = 2; + llc->dec_step = llc->connect_step = 1; + + init_timer(&llc->ack_timer.timer); + llc->ack_timer.expire = LLC_ACK_TIME; + llc->ack_timer.timer.data = (unsigned long)sk; + llc->ack_timer.timer.function = llc_conn_ack_tmr_cb; + + init_timer(&llc->pf_cycle_timer.timer); + llc->pf_cycle_timer.expire = LLC_P_TIME; + llc->pf_cycle_timer.timer.data = (unsigned long)sk; + llc->pf_cycle_timer.timer.function = llc_conn_pf_cycle_tmr_cb; + + init_timer(&llc->rej_sent_timer.timer); + llc->rej_sent_timer.expire = LLC_REJ_TIME; + llc->rej_sent_timer.timer.data = (unsigned long)sk; + llc->rej_sent_timer.timer.function = llc_conn_rej_tmr_cb; + + init_timer(&llc->busy_state_timer.timer); + llc->busy_state_timer.expire = LLC_BUSY_TIME; + llc->busy_state_timer.timer.data = (unsigned long)sk; + llc->busy_state_timer.timer.function = llc_conn_busy_tmr_cb; + + llc->n2 = 2; /* max retransmit */ + llc->k = 2; /* tx win size, will adjust dynam */ + llc->rw = 128; /* rx win size (opt and equal to + * tx_win of remote LLC) */ + skb_queue_head_init(&llc->pdu_unack_q); + sk->sk_backlog_rcv = llc_backlog_rcv; + llc_sk(sk) = llc; +out: + return rc; +} + +/** + * llc_sk_alloc - Allocates LLC sock + * @family: upper layer protocol family + * @priority: for allocation (%GFP_KERNEL, %GFP_ATOMIC, etc) + * + * Allocates a LLC sock and initializes it. Returns the new LLC sock + * or %NULL if there's no memory available for one + */ +struct sock *llc_sk_alloc(int family, int priority) +{ + struct sock *sk = sk_alloc(family, priority, 1, NULL); + + if (!sk) + goto out; + if (llc_sk_init(sk)) + goto outsk; + sock_init_data(NULL, sk); + sk_set_owner(sk, THIS_MODULE); +#ifdef LLC_REFCNT_DEBUG + atomic_inc(&llc_sock_nr); + printk(KERN_DEBUG "LLC socket %p created in %s, now we have %d alive\n", sk, + __FUNCTION__, atomic_read(&llc_sock_nr)); +#endif +out: + return sk; +outsk: + sk_free(sk); + sk = NULL; + goto out; +} + +/** + * llc_sk_free - Frees a LLC socket + * @sk - socket to free + * + * Frees a LLC socket + */ +void llc_sk_free(struct sock *sk) +{ + struct llc_opt *llc = llc_sk(sk); + + llc->state = LLC_CONN_OUT_OF_SVC; + /* Stop all (possibly) running timers */ + llc_conn_ac_stop_all_timers(sk, NULL); +#ifdef DEBUG_LLC_CONN_ALLOC + printk(KERN_INFO "%s: unackq=%d, txq=%d\n", __FUNCTION__, + skb_queue_len(&llc->pdu_unack_q), + skb_queue_len(&sk->sk_write_queue)); +#endif + skb_queue_purge(&sk->sk_receive_queue); + skb_queue_purge(&sk->sk_write_queue); + skb_queue_purge(&llc->pdu_unack_q); +#ifdef LLC_REFCNT_DEBUG + if (atomic_read(&sk->sk_refcnt) != 1) { + printk(KERN_DEBUG "Destruction of LLC sock %p delayed in %s, cnt=%d\n", + sk, __FUNCTION__, atomic_read(&sk->sk_refcnt)); + printk(KERN_DEBUG "%d LLC sockets are still alive\n", + atomic_read(&llc_sock_nr)); + } else { + atomic_dec(&llc_sock_nr); + printk(KERN_DEBUG "LLC socket %p released in %s, %d are still alive\n", sk, + __FUNCTION__, atomic_read(&llc_sock_nr)); + } +#endif + sock_put(sk); +} + +/** + * llc_sk_reset - resets a connection + * @sk: LLC socket to reset + * + * Resets a connection to the out of service state. Stops its timers + * and frees any frames in the queues of the connection. + */ +void llc_sk_reset(struct sock *sk) +{ + struct llc_opt *llc = llc_sk(sk); + + llc_conn_ac_stop_all_timers(sk, NULL); + skb_queue_purge(&sk->sk_write_queue); + skb_queue_purge(&llc->pdu_unack_q); + llc->remote_busy_flag = 0; + llc->cause_flag = 0; + llc->retry_count = 0; + llc_conn_set_p_flag(sk, 0); + llc->f_flag = 0; + llc->s_flag = 0; + llc->ack_pf = 0; + llc->first_pdu_Ns = 0; + llc->ack_must_be_send = 0; + llc->dec_step = 1; + llc->inc_cntr = 2; + llc->dec_cntr = 2; + llc->X = 0; + llc->failed_data_req = 0 ; + llc->last_nr = 0; } diff -Nru a/net/llc/llc_core.c b/net/llc/llc_core.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/net/llc/llc_core.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,181 @@ +/* + * llc_core.c - Minimum needed routines for sap handling and module init/exit + * + * Copyright (c) 1997 by Procom Technology, Inc. + * 2001-2003 by Arnaldo Carvalho de Melo + * + * This program can be redistributed or modified under the terms of the + * GNU General Public License as published by the Free Software Foundation. + * This program is distributed without any warranty or implied warranty + * of merchantability or fitness for a particular purpose. + * + * See the GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +LIST_HEAD(llc_sap_list); +rwlock_t llc_sap_list_lock = RW_LOCK_UNLOCKED; + +unsigned char llc_station_mac_sa[ETH_ALEN]; + +/** + * llc_sap_alloc - allocates and initializes sap. + * + * Allocates and initializes sap. + */ +struct llc_sap *llc_sap_alloc(void) +{ + struct llc_sap *sap = kmalloc(sizeof(*sap), GFP_ATOMIC); + + if (sap) { + memset(sap, 0, sizeof(*sap)); + sap->state = LLC_SAP_STATE_ACTIVE; + memcpy(sap->laddr.mac, llc_station_mac_sa, ETH_ALEN); + rwlock_init(&sap->sk_list.lock); + } + return sap; +} + +/** + * llc_add_sap - add sap to station list + * @sap: Address of the sap + * + * Adds a sap to the LLC's station sap list. + */ +void llc_add_sap(struct llc_sap *sap) +{ + write_lock_bh(&llc_sap_list_lock); + list_add_tail(&sap->node, &llc_sap_list); + write_unlock_bh(&llc_sap_list_lock); +} + +/** + * llc_del_sap - del sap from station list + * @sap: Address of the sap + * + * Removes a sap to the LLC's station sap list. + */ +void llc_del_sap(struct llc_sap *sap) +{ + write_lock_bh(&llc_sap_list_lock); + list_del(&sap->node); + write_unlock_bh(&llc_sap_list_lock); +} + +/** + * llc_sap_find - searchs a SAP in station + * @sap_value: sap to be found + * + * Searchs for a sap in the sap list of the LLC's station upon the sap ID. + * Returns the sap or %NULL if not found. + */ +struct llc_sap *llc_sap_find(unsigned char sap_value) +{ + struct llc_sap* sap; + + read_lock_bh(&llc_sap_list_lock); + list_for_each_entry(sap, &llc_sap_list, node) + if (sap->laddr.lsap == sap_value) + goto out; + sap = NULL; +out: + read_unlock_bh(&llc_sap_list_lock); + return sap; +} + +/** + * llc_sap_open - open interface to the upper layers. + * @lsap: SAP number. + * @func: rcv func for datalink protos + * + * Interface function to upper layer. Each one who wants to get a SAP + * (for example NetBEUI) should call this function. Returns the opened + * SAP for success, NULL for failure. + */ +struct llc_sap *llc_sap_open(unsigned char lsap, + int (*func)(struct sk_buff *skb, + struct net_device *dev, + struct packet_type *pt)) +{ + struct llc_sap *sap = llc_sap_find(lsap); + + if (sap) { /* SAP already exists */ + sap = NULL; + goto out; + } + sap = llc_sap_alloc(); + if (!sap) + goto out; + sap->laddr.lsap = lsap; + sap->rcv_func = func; + llc_add_sap(sap); +out: + return sap; +} + +/** + * llc_sap_close - close interface for upper layers. + * @sap: SAP to be closed. + * + * Close interface function to upper layer. Each one who wants to + * close an open SAP (for example NetBEUI) should call this function. + * Removes this sap from the list of saps in the station and then + * frees the memory for this sap. + */ +void llc_sap_close(struct llc_sap *sap) +{ + WARN_ON(!hlist_empty(&sap->sk_list.list)); + llc_del_sap(sap); + kfree(sap); +} + +static struct packet_type llc_packet_type = { + .type = __constant_htons(ETH_P_802_2), + .func = llc_rcv, + .data = (void *)1, +}; + +static struct packet_type llc_tr_packet_type = { + .type = __constant_htons(ETH_P_TR_802_2), + .func = llc_rcv, + .data = (void *)1, +}; + +static int __init llc_init(void) +{ + if (dev_base->next) + memcpy(llc_station_mac_sa, dev_base->next->dev_addr, ETH_ALEN); + else + memset(llc_station_mac_sa, 0, ETH_ALEN); + dev_add_pack(&llc_packet_type); + dev_add_pack(&llc_tr_packet_type); + return 0; +} + +static void __exit llc_exit(void) +{ + dev_remove_pack(&llc_packet_type); + dev_remove_pack(&llc_tr_packet_type); +} + +module_init(llc_init); +module_exit(llc_exit); + +EXPORT_SYMBOL(llc_station_mac_sa); +EXPORT_SYMBOL(llc_sap_list); +EXPORT_SYMBOL(llc_sap_list_lock); +EXPORT_SYMBOL(llc_sap_find); +EXPORT_SYMBOL(llc_sap_open); +EXPORT_SYMBOL(llc_sap_close); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Procom 1997, Jay Schullist 2001, Arnaldo C. Melo 2001-2003"); +MODULE_DESCRIPTION("LLC IEEE 802.2 core support"); diff -Nru a/net/llc/llc_evnt.c b/net/llc/llc_evnt.c --- a/net/llc/llc_evnt.c Mon Sep 22 00:30:19 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,125 +0,0 @@ -/* - * llc_evnt.c - LLC station component event match functions - * Description : - * Functions in this module are implementation of station component events. - * Details of events can be found in IEEE-802.2 standard document. - * All functions have one station and one event as input argument. All of - * them return 0 On success and 1 otherwise. - * - * Copyright (c) 1997 by Procom Technology, Inc. - * 2001-2003 by Arnaldo Carvalho de Melo - * - * This program can be redistributed or modified under the terms of the - * GNU General Public License as published by the Free Software Foundation. - * This program is distributed without any warranty or implied warranty - * of merchantability or fitness for a particular purpose. - * - * See the GNU General Public License for more details. - */ -#include -#include -#include -#include -#include -#include - -int llc_stat_ev_enable_with_dup_addr_check(struct llc_station *station, - struct sk_buff *skb) -{ - struct llc_station_state_ev *ev = llc_station_ev(skb); - - return ev->type == LLC_STATION_EV_TYPE_SIMPLE && - ev->prim_type == - LLC_STATION_EV_ENABLE_WITH_DUP_ADDR_CHECK ? 0 : 1; -} - -int llc_stat_ev_enable_without_dup_addr_check(struct llc_station *station, - struct sk_buff *skb) -{ - struct llc_station_state_ev *ev = llc_station_ev(skb); - - return ev->type == LLC_STATION_EV_TYPE_SIMPLE && - ev->prim_type == - LLC_STATION_EV_ENABLE_WITHOUT_DUP_ADDR_CHECK ? 0 : 1; -} - -int llc_stat_ev_ack_tmr_exp_lt_retry_cnt_max_retry(struct llc_station *station, - struct sk_buff *skb) -{ - struct llc_station_state_ev *ev = llc_station_ev(skb); - - return ev->type == LLC_STATION_EV_TYPE_ACK_TMR && - station->retry_count < station->maximum_retry ? 0 : 1; -} - -int llc_stat_ev_ack_tmr_exp_eq_retry_cnt_max_retry(struct llc_station *station, - struct sk_buff *skb) -{ - struct llc_station_state_ev *ev = llc_station_ev(skb); - - return ev->type == LLC_STATION_EV_TYPE_ACK_TMR && - station->retry_count == station->maximum_retry ? 0 : 1; -} - -int llc_stat_ev_rx_null_dsap_xid_c(struct llc_station *station, - struct sk_buff *skb) -{ - struct llc_station_state_ev *ev = llc_station_ev(skb); - struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); - - return ev->type == LLC_STATION_EV_TYPE_PDU && - LLC_PDU_IS_CMD(pdu) && /* command PDU */ - LLC_PDU_TYPE_IS_U(pdu) && /* U type PDU */ - LLC_U_PDU_CMD(pdu) == LLC_1_PDU_CMD_XID && - !pdu->dsap ? 0 : 1; /* NULL DSAP value */ -} - -int llc_stat_ev_rx_null_dsap_0_xid_r_xid_r_cnt_eq(struct llc_station *station, - struct sk_buff *skb) -{ - struct llc_station_state_ev *ev = llc_station_ev(skb); - struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); - - return ev->type == LLC_STATION_EV_TYPE_PDU && - LLC_PDU_IS_RSP(pdu) && /* response PDU */ - LLC_PDU_TYPE_IS_U(pdu) && /* U type PDU */ - LLC_U_PDU_RSP(pdu) == LLC_1_PDU_CMD_XID && - !pdu->dsap && /* NULL DSAP value */ - !station->xid_r_count ? 0 : 1; -} - -int llc_stat_ev_rx_null_dsap_1_xid_r_xid_r_cnt_eq(struct llc_station *station, - struct sk_buff *skb) -{ - struct llc_station_state_ev *ev = llc_station_ev(skb); - struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); - - return ev->type == LLC_STATION_EV_TYPE_PDU && - LLC_PDU_IS_RSP(pdu) && /* response PDU */ - LLC_PDU_TYPE_IS_U(pdu) && /* U type PDU */ - LLC_U_PDU_RSP(pdu) == LLC_1_PDU_CMD_XID && - !pdu->dsap && /* NULL DSAP value */ - station->xid_r_count == 1 ? 0 : 1; -} - -int llc_stat_ev_rx_null_dsap_test_c(struct llc_station *station, - struct sk_buff *skb) -{ - struct llc_station_state_ev *ev = llc_station_ev(skb); - struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); - - return ev->type == LLC_STATION_EV_TYPE_PDU && - LLC_PDU_IS_CMD(pdu) && /* command PDU */ - LLC_PDU_TYPE_IS_U(pdu) && /* U type PDU */ - LLC_U_PDU_CMD(pdu) == LLC_1_PDU_CMD_TEST && - !pdu->dsap ? 0 : 1; /* NULL DSAP */ -} - -int llc_stat_ev_disable_req(struct llc_station *station, struct sk_buff *skb) -{ - struct llc_station_state_ev *ev = llc_station_ev(skb); - - return ev->type == LLC_STATION_EV_TYPE_PRIM && - ev->prim == LLC_DISABLE_PRIM && - ev->prim_type == LLC_PRIM_TYPE_REQ ? 0 : 1; -} diff -Nru a/net/llc/llc_if.c b/net/llc/llc_if.c --- a/net/llc/llc_if.c Mon Sep 22 00:30:21 2003 +++ b/net/llc/llc_if.c Mon Sep 22 00:30:21 2003 @@ -25,136 +25,8 @@ #include #include #include -#include -/** - * llc_sap_open - open interface to the upper layers. - * @lsap: SAP number. - * @func: rcv func for datalink protos - * - * Interface function to upper layer. Each one who wants to get a SAP - * (for example NetBEUI) should call this function. Returns the opened - * SAP for success, NULL for failure. - */ -struct llc_sap *llc_sap_open(u8 lsap, int (*func)(struct sk_buff *skb, - struct net_device *dev, - struct packet_type *pt)) -{ - /* verify this SAP is not already open; if so, return error */ - struct llc_sap *sap; - - sap = llc_sap_find(lsap); - if (sap) { /* SAP already exists */ - sap = NULL; - goto out; - } - /* sap requested does not yet exist */ - sap = llc_sap_alloc(); - if (!sap) - goto out; - /* allocated a SAP; initialize it and clear out its memory pool */ - sap->laddr.lsap = lsap; - sap->rcv_func = func; - sap->station = &llc_main_station; - /* initialized SAP; add it to list of SAPs this station manages */ - llc_sap_save(sap); -out: - return sap; -} - -/** - * llc_sap_close - close interface for upper layers. - * @sap: SAP to be closed. - * - * Close interface function to upper layer. Each one who wants to - * close an open SAP (for example NetBEUI) should call this function. - */ -void llc_sap_close(struct llc_sap *sap) -{ - llc_free_sap(sap); -} - -/** - * llc_build_and_send_ui_pkt - unitdata request interface for upper layers - * @sap: sap to use - * @skb: packet to send - * @dmac: destination mac address - * @dsap: destination sap - * - * Upper layers calls this function when upper layer wants to send data - * using connection-less mode communication (UI pdu). - * - * Accept data frame from network layer to be sent using connection- - * less mode communication; timeout/retries handled by network layer; - * package primitive as an event and send to SAP event handler - */ -void llc_build_and_send_ui_pkt(struct llc_sap *sap, struct sk_buff *skb, - u8 *dmac, u8 dsap) -{ - struct llc_sap_state_ev *ev = llc_sap_ev(skb); - - ev->saddr.lsap = sap->laddr.lsap; - ev->daddr.lsap = dsap; - memcpy(ev->saddr.mac, skb->dev->dev_addr, IFHWADDRLEN); - memcpy(ev->daddr.mac, dmac, IFHWADDRLEN); - - ev->type = LLC_SAP_EV_TYPE_PRIM; - ev->prim = LLC_DATAUNIT_PRIM; - ev->prim_type = LLC_PRIM_TYPE_REQ; - llc_sap_state_process(sap, skb); -} - -/** - * llc_build_and_send_test_pkt - TEST interface for upper layers. - * @sap: sap to use - * @skb: packet to send - * @dmac: destination mac address - * @dsap: destination sap - * - * This function is called when upper layer wants to send a TEST pdu. - * Returns 0 for success, 1 otherwise. - */ -void llc_build_and_send_test_pkt(struct llc_sap *sap, - struct sk_buff *skb, u8 *dmac, u8 dsap) -{ - struct llc_sap_state_ev *ev = llc_sap_ev(skb); - - ev->saddr.lsap = sap->laddr.lsap; - ev->daddr.lsap = dsap; - memcpy(ev->saddr.mac, skb->dev->dev_addr, IFHWADDRLEN); - memcpy(ev->daddr.mac, dmac, IFHWADDRLEN); - - ev->type = LLC_SAP_EV_TYPE_PRIM; - ev->prim = LLC_TEST_PRIM; - ev->prim_type = LLC_PRIM_TYPE_REQ; - llc_sap_state_process(sap, skb); -} - -/** - * llc_build_and_send_xid_pkt - XID interface for upper layers - * @sap: sap to use - * @skb: packet to send - * @dmac: destination mac address - * @dsap: destination sap - * - * This function is called when upper layer wants to send a XID pdu. - * Returns 0 for success, 1 otherwise. - */ -void llc_build_and_send_xid_pkt(struct llc_sap *sap, struct sk_buff *skb, - u8 *dmac, u8 dsap) -{ - struct llc_sap_state_ev *ev = llc_sap_ev(skb); - - ev->saddr.lsap = sap->laddr.lsap; - ev->daddr.lsap = dsap; - memcpy(ev->saddr.mac, skb->dev->dev_addr, IFHWADDRLEN); - memcpy(ev->daddr.mac, dmac, IFHWADDRLEN); - - ev->type = LLC_SAP_EV_TYPE_PRIM; - ev->prim = LLC_XID_PRIM; - ev->prim_type = LLC_PRIM_TYPE_REQ; - llc_sap_state_process(sap, skb); -} +u8 llc_mac_null_var[IFHWADDRLEN]; /** * llc_build_and_send_pkt - Connection data sending for upper layers. @@ -307,7 +179,3 @@ } return rc; } - -EXPORT_SYMBOL(llc_sap_open); -EXPORT_SYMBOL(llc_sap_close); -EXPORT_SYMBOL(llc_build_and_send_ui_pkt); diff -Nru a/net/llc/llc_input.c b/net/llc/llc_input.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/net/llc/llc_input.c Mon Sep 22 00:30:24 2003 @@ -0,0 +1,189 @@ +/* + * llc_input.c - Minimal input path for LLC + * + * Copyright (c) 1997 by Procom Technology, Inc. + * 2001-2003 by Arnaldo Carvalho de Melo + * + * This program can be redistributed or modified under the terms of the + * GNU General Public License as published by the Free Software Foundation. + * This program is distributed without any warranty or implied warranty + * of merchantability or fitness for a particular purpose. + * + * See the GNU General Public License for more details. + */ +#include +#include +#include +#include + +#if 0 +#define dprintk(args...) printk(KERN_DEBUG args) +#else +#define dprintk(args...) +#endif + +/* + * Packet handler for the station, registerable because in the minimal + * LLC core that is taking shape only the very minimal subset of LLC that + * is needed for things like IPX, Appletalk, etc will stay, with all the + * rest in the llc1 and llc2 modules. + */ +static void (*llc_station_handler)(struct sk_buff *skb); + +/* + * Packet handlers for LLC_DEST_SAP and LLC_DEST_CONN. + */ +static void (*llc_type_handlers[2])(struct llc_sap *sap, + struct sk_buff *skb); + +void llc_add_pack(int type, void (*handler)(struct llc_sap *sap, + struct sk_buff *skb)) +{ + if (type == LLC_DEST_SAP || type == LLC_DEST_CONN) + llc_type_handlers[type] = handler; +} + +void llc_remove_pack(int type) +{ + if (type == LLC_DEST_SAP || type == LLC_DEST_CONN) + llc_type_handlers[type] = NULL; +} + +void llc_set_station_handler(void (*handler)(struct sk_buff *skb)) +{ + llc_station_handler = handler; +} + +/** + * llc_pdu_type - returns which LLC component must handle for PDU + * @skb: input skb + * + * This function returns which LLC component must handle this PDU. + */ +static __inline__ int llc_pdu_type(struct sk_buff *skb) +{ + int type = LLC_DEST_CONN; /* I-PDU or S-PDU type */ + struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb); + + if ((pdu->ctrl_1 & LLC_PDU_TYPE_MASK) != LLC_PDU_TYPE_U) + goto out; + switch (LLC_U_PDU_CMD(pdu)) { + case LLC_1_PDU_CMD_XID: + case LLC_1_PDU_CMD_UI: + case LLC_1_PDU_CMD_TEST: + type = LLC_DEST_SAP; + break; + case LLC_2_PDU_CMD_SABME: + case LLC_2_PDU_CMD_DISC: + case LLC_2_PDU_RSP_UA: + case LLC_2_PDU_RSP_DM: + case LLC_2_PDU_RSP_FRMR: + break; + default: + type = LLC_DEST_INVALID; + break; + } +out: + return type; +} + +/** + * llc_fixup_skb - initializes skb pointers + * @skb: This argument points to incoming skb + * + * Initializes internal skb pointer to start of network layer by deriving + * length of LLC header; finds length of LLC control field in LLC header + * by looking at the two lowest-order bits of the first control field + * byte; field is either 3 or 4 bytes long. + */ +static inline int llc_fixup_skb(struct sk_buff *skb) +{ + u8 llc_len = 2; + struct llc_pdu_sn *pdu; + + if (!pskb_may_pull(skb, sizeof(*pdu))) + return 0; + + pdu = (struct llc_pdu_sn *)skb->data; + if ((pdu->ctrl_1 & LLC_PDU_TYPE_MASK) == LLC_PDU_TYPE_U) + llc_len = 1; + llc_len += 2; + skb->h.raw += llc_len; + skb_pull(skb, llc_len); + if (skb->protocol == htons(ETH_P_802_2)) { + u16 pdulen = ((struct ethhdr *)skb->mac.raw)->h_proto, + data_size = ntohs(pdulen) - llc_len; + + skb_trim(skb, data_size); + } + return 1; +} + +/** + * llc_rcv - 802.2 entry point from net lower layers + * @skb: received pdu + * @dev: device that receive pdu + * @pt: packet type + * + * When the system receives a 802.2 frame this function is called. It + * checks SAP and connection of received pdu and passes frame to + * llc_{station,sap,conn}_rcv for sending to proper state machine. If + * the frame is related to a busy connection (a connection is sending + * data now), it queues this frame in the connection's backlog. + */ +int llc_rcv(struct sk_buff *skb, struct net_device *dev, + struct packet_type *pt) +{ + struct llc_sap *sap; + struct llc_pdu_sn *pdu; + int dest; + + /* + * When the interface is in promisc. mode, drop all the crap that it + * receives, do not try to analyse it. + */ + if (unlikely(skb->pkt_type == PACKET_OTHERHOST)) { + dprintk("%s: PACKET_OTHERHOST\n", __FUNCTION__); + goto drop; + } + skb = skb_share_check(skb, GFP_ATOMIC); + if (unlikely(!skb)) + goto out; + if (unlikely(!llc_fixup_skb(skb))) + goto drop; + pdu = llc_pdu_sn_hdr(skb); + if (unlikely(!pdu->dsap)) /* NULL DSAP, refer to station */ + goto handle_station; + sap = llc_sap_find(pdu->dsap); + if (unlikely(!sap)) {/* unknown SAP */ + dprintk("%s: llc_sap_find(%02X) failed!\n", __FUNCTION__, + pdu->dsap); + goto drop; + } + /* + * First the upper layer protocols that don't need the full + * LLC functionality + */ + if (sap->rcv_func) { + sap->rcv_func(skb, dev, pt); + goto out; + } + dest = llc_pdu_type(skb); + if (unlikely(!dest || !llc_type_handlers[dest - 1])) + goto drop; + llc_type_handlers[dest - 1](sap, skb); +out: + return 0; +drop: + kfree_skb(skb); + goto out; +handle_station: + if (!llc_station_handler) + goto drop; + llc_station_handler(skb); + goto out; +} + +EXPORT_SYMBOL(llc_add_pack); +EXPORT_SYMBOL(llc_remove_pack); +EXPORT_SYMBOL(llc_set_station_handler); diff -Nru a/net/llc/llc_mac.c b/net/llc/llc_mac.c --- a/net/llc/llc_mac.c Mon Sep 22 00:30:24 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,302 +0,0 @@ -/* - * llc_mac.c - Manages interface between LLC and MAC - * - * Copyright (c) 1997 by Procom Technology, Inc. - * 2001-2003 by Arnaldo Carvalho de Melo - * - * This program can be redistributed or modified under the terms of the - * GNU General Public License as published by the Free Software Foundation. - * This program is distributed without any warranty or implied warranty - * of merchantability or fitness for a particular purpose. - * - * See the GNU General Public License for more details. - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if 0 -#define dprintk(args...) printk(KERN_DEBUG args) -#else -#define dprintk(args...) -#endif - -u8 llc_mac_null_var[IFHWADDRLEN]; - -static int fix_up_incoming_skb(struct sk_buff *skb); -static void llc_station_rcv(struct sk_buff *skb); -static void llc_sap_rcv(struct llc_sap *sap, struct sk_buff *skb); - -/** - * llc_rcv - 802.2 entry point from net lower layers - * @skb: received pdu - * @dev: device that receive pdu - * @pt: packet type - * - * When the system receives a 802.2 frame this function is called. It - * checks SAP and connection of received pdu and passes frame to - * llc_{station,sap,conn}_rcv for sending to proper state machine. If - * the frame is related to a busy connection (a connection is sending - * data now), it queues this frame in the connection's backlog. - */ -int llc_rcv(struct sk_buff *skb, struct net_device *dev, - struct packet_type *pt) -{ - struct llc_sap *sap; - struct llc_pdu_sn *pdu; - u8 dest; - - /* - * When the interface is in promisc. mode, drop all the crap that it - * receives, do not try to analyse it. - */ - if (skb->pkt_type == PACKET_OTHERHOST) { - dprintk("%s: PACKET_OTHERHOST\n", __FUNCTION__); - goto drop; - } - skb = skb_share_check(skb, GFP_ATOMIC); - if (!skb) - goto out; - if (!fix_up_incoming_skb(skb)) - goto drop; - pdu = llc_pdu_sn_hdr(skb); - if (!pdu->dsap) { /* NULL DSAP, refer to station */ - dprintk("%s: calling llc_station_rcv!\n", __FUNCTION__); - llc_station_rcv(skb); - goto out; - } - sap = llc_sap_find(pdu->dsap); - if (!sap) {/* unknown SAP */ - dprintk("%s: llc_sap_find(%02X) failed!\n", __FUNCTION__, - pdu->dsap); - goto drop; - } - llc_decode_pdu_type(skb, &dest); - if (dest == LLC_DEST_SAP) { /* type 1 services */ - if (sap->rcv_func) - sap->rcv_func(skb, dev, pt); - else { - struct llc_addr laddr; - struct sock *sk; - - llc_pdu_decode_da(skb, laddr.mac); - llc_pdu_decode_dsap(skb, &laddr.lsap); - - sk = llc_lookup_dgram(sap, &laddr); - if (!sk) - goto drop; - skb->sk = sk; - llc_sap_rcv(sap, skb); - sock_put(sk); - } - } else if (dest == LLC_DEST_CONN) { - struct llc_addr saddr, daddr; - struct sock *sk; - int rc; - - llc_pdu_decode_sa(skb, saddr.mac); - llc_pdu_decode_ssap(skb, &saddr.lsap); - llc_pdu_decode_da(skb, daddr.mac); - llc_pdu_decode_dsap(skb, &daddr.lsap); - - sk = llc_lookup_established(sap, &saddr, &daddr); - if (!sk) { - /* - * Didn't find an active connection; verify if there - * is a listening socket for this llc addr - */ - struct llc_opt *llc; - struct sock *parent; - - parent = llc_lookup_listener(sap, &daddr); - - if (!parent) { - dprintk("llc_lookup_listener failed!\n"); - goto drop; - } - - sk = llc_sk_alloc(parent->sk_family, GFP_ATOMIC); - if (!sk) { - sock_put(parent); - goto drop; - } - llc = llc_sk(sk); - memcpy(&llc->laddr, &daddr, sizeof(llc->laddr)); - memcpy(&llc->daddr, &saddr, sizeof(llc->daddr)); - llc_sap_assign_sock(sap, sk); - sock_hold(sk); - sock_put(parent); - skb->sk = parent; - } else - skb->sk = sk; - bh_lock_sock(sk); - if (!sock_owned_by_user(sk)) { - /* rc = */ llc_conn_rcv(sk, skb); - rc = 0; - } else { - dprintk("%s: adding to backlog...\n", __FUNCTION__); - llc_set_backlog_type(skb, LLC_PACKET); - sk_add_backlog(sk, skb); - rc = 0; - } - bh_unlock_sock(sk); - sock_put(sk); - if (rc) - goto drop; - } else /* unknown or not supported pdu */ - goto drop; -out: - return 0; -drop: - kfree_skb(skb); - goto out; -} - -/** - * fix_up_incoming_skb - initializes skb pointers - * @skb: This argument points to incoming skb - * - * Initializes internal skb pointer to start of network layer by deriving - * length of LLC header; finds length of LLC control field in LLC header - * by looking at the two lowest-order bits of the first control field - * byte; field is either 3 or 4 bytes long. - */ -static int fix_up_incoming_skb(struct sk_buff *skb) -{ - u8 llc_len = 2; - struct llc_pdu_sn *pdu; - - if (!pskb_may_pull(skb, sizeof(*pdu))) - return 0; - - pdu = (struct llc_pdu_sn *)skb->data; - if ((pdu->ctrl_1 & LLC_PDU_TYPE_MASK) == LLC_PDU_TYPE_U) - llc_len = 1; - llc_len += 2; - skb->h.raw += llc_len; - skb_pull(skb, llc_len); - if (skb->protocol == htons(ETH_P_802_2)) { - u16 pdulen = ((struct ethhdr *)skb->mac.raw)->h_proto, - data_size = ntohs(pdulen) - llc_len; - - skb_trim(skb, data_size); - } - return 1; -} - -/* - * llc_station_rcv - send received pdu to the station state machine - * @skb: received frame. - * - * Sends data unit to station state machine. - */ -static void llc_station_rcv(struct sk_buff *skb) -{ - struct llc_station_state_ev *ev = llc_station_ev(skb); - - ev->type = LLC_STATION_EV_TYPE_PDU; - ev->reason = 0; - llc_station_state_process(&llc_main_station, skb); -} - - -/** - * llc_conn_rcv - sends received pdus to the connection state machine - * @sk: current connection structure. - * @skb: received frame. - * - * Sends received pdus to the connection state machine. - */ -int llc_conn_rcv(struct sock* sk, struct sk_buff *skb) -{ - struct llc_conn_state_ev *ev = llc_conn_ev(skb); - struct llc_opt *llc = llc_sk(sk); - - if (!llc->dev) - llc->dev = skb->dev; - ev->type = LLC_CONN_EV_TYPE_PDU; - ev->reason = 0; - return llc_conn_state_process(sk, skb); -} - -/** - * llc_sap_rcv - sends received pdus to the sap state machine - * @sap: current sap component structure. - * @skb: received frame. - * - * Sends received pdus to the sap state machine. - */ -static void llc_sap_rcv(struct llc_sap *sap, struct sk_buff *skb) -{ - struct llc_sap_state_ev *ev = llc_sap_ev(skb); - - ev->type = LLC_SAP_EV_TYPE_PDU; - ev->reason = 0; - llc_sap_state_process(sap, skb); -} - -/** - * lan_hdrs_init - fills MAC header fields - * @skb: Address of the frame to initialize its MAC header - * @sa: The MAC source address - * @da: The MAC destination address - * - * Fills MAC header fields, depending on MAC type. Returns 0, If MAC type - * is a valid type and initialization completes correctly 1, otherwise. - */ -u16 lan_hdrs_init(struct sk_buff *skb, u8 *sa, u8 *da) -{ - u16 rc = 0; - - switch (skb->dev->type) { -#ifdef CONFIG_TR - case ARPHRD_IEEE802_TR: { - struct trh_hdr *trh; - struct net_device *dev = skb->dev; - - trh = (struct trh_hdr *)skb_push(skb, sizeof(*trh)); - trh->ac = AC; - trh->fc = LLC_FRAME; - if (sa) - memcpy(trh->saddr, sa, dev->addr_len); - else - memset(trh->saddr, 0, dev->addr_len); - if (da) { - memcpy(trh->daddr, da, dev->addr_len); - tr_source_route(skb, trh, dev); - } - skb->mac.raw = skb->data; - break; - } -#endif - case ARPHRD_ETHER: - case ARPHRD_LOOPBACK: { - unsigned short len = skb->len; - struct ethhdr *eth; - - skb->mac.raw = skb_push(skb, sizeof(*eth)); - eth = (struct ethhdr *)skb->mac.raw; - eth->h_proto = htons(len); - memcpy(eth->h_dest, da, ETH_ALEN); - memcpy(eth->h_source, sa, ETH_ALEN); - break; - } - default: - printk(KERN_WARNING "Unknown DEVICE type : %d\n", - skb->dev->type); - rc = 1; - } - return rc; -} diff -Nru a/net/llc/llc_main.c b/net/llc/llc_main.c --- a/net/llc/llc_main.c Mon Sep 22 00:30:20 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,607 +0,0 @@ -/* - * llc_main.c - This module contains main functions to manage station, saps - * and connections of the LLC. - * - * Copyright (c) 1997 by Procom Technology, Inc. - * 2001-2003 by Arnaldo Carvalho de Melo - * - * This program can be redistributed or modified under the terms of the - * GNU General Public License as published by the Free Software Foundation. - * This program is distributed without any warranty or implied warranty - * of merchantability or fitness for a particular purpose. - * - * See the GNU General Public License for more details. - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* static function prototypes */ -static void llc_station_service_events(struct llc_station *station); -static void llc_station_free_ev(struct llc_station *station, - struct sk_buff *skb); -static void llc_station_send_pdus(struct llc_station *station); -static u16 llc_station_next_state(struct llc_station *station, - struct sk_buff *skb); -static u16 llc_exec_station_trans_actions(struct llc_station *station, - struct llc_station_state_trans *trans, - struct sk_buff *skb); -static struct llc_station_state_trans * - llc_find_station_trans(struct llc_station *station, - struct sk_buff *skb); -static int llc_rtn_all_conns(struct llc_sap *sap); - -struct llc_station llc_main_station; /* only one of its kind */ - -#undef LLC_REFCNT_DEBUG -#ifdef LLC_REFCNT_DEBUG -static atomic_t llc_sock_nr; -#endif - -/** - * llc_sap_alloc - allocates and initializes sap. - * - * Allocates and initializes sap. - */ -struct llc_sap *llc_sap_alloc(void) -{ - struct llc_sap *sap = kmalloc(sizeof(*sap), GFP_ATOMIC); - - if (sap) { - memset(sap, 0, sizeof(*sap)); - sap->state = LLC_SAP_STATE_ACTIVE; - memcpy(sap->laddr.mac, llc_main_station.mac_sa, ETH_ALEN); - rwlock_init(&sap->sk_list.lock); - } - return sap; -} - -/** - * llc_free_sap - frees a sap - * @sap: Address of the sap - * - * Frees all associated connections (if any), removes this sap from - * the list of saps in te station and them frees the memory for this sap. - */ -void llc_free_sap(struct llc_sap *sap) -{ - llc_rtn_all_conns(sap); - write_lock_bh(&sap->station->sap_list.lock); - list_del(&sap->node); - write_unlock_bh(&sap->station->sap_list.lock); - kfree(sap); -} - -/** - * llc_sap_save - add sap to station list - * @sap: Address of the sap - * - * Adds a sap to the LLC's station sap list. - */ -void llc_sap_save(struct llc_sap *sap) -{ - write_lock_bh(&llc_main_station.sap_list.lock); - list_add_tail(&sap->node, &llc_main_station.sap_list.list); - write_unlock_bh(&llc_main_station.sap_list.lock); -} - -/** - * llc_sap_find - searchs a SAP in station - * @sap_value: sap to be found - * - * Searchs for a sap in the sap list of the LLC's station upon the sap ID. - * Returns the sap or %NULL if not found. - */ -struct llc_sap *llc_sap_find(u8 sap_value) -{ - struct llc_sap* sap = NULL; - struct list_head *entry; - - read_lock_bh(&llc_main_station.sap_list.lock); - list_for_each(entry, &llc_main_station.sap_list.list) { - sap = list_entry(entry, struct llc_sap, node); - if (sap->laddr.lsap == sap_value) - break; - } - if (entry == &llc_main_station.sap_list.list) /* not found */ - sap = NULL; - read_unlock_bh(&llc_main_station.sap_list.lock); - return sap; -} - -/** - * llc_backlog_rcv - Processes rx frames and expired timers. - * @sk: LLC sock (p8022 connection) - * @skb: queued rx frame or event - * - * This function processes frames that has received and timers that has - * expired during sending an I pdu (refer to data_req_handler). frames - * queue by llc_rcv function (llc_mac.c) and timers queue by timer - * callback functions(llc_c_ac.c). - */ -static int llc_backlog_rcv(struct sock *sk, struct sk_buff *skb) -{ - int rc = 0; - struct llc_opt *llc = llc_sk(sk); - - if (llc_backlog_type(skb) == LLC_PACKET) { - if (llc->state > 1) /* not closed */ - rc = llc_conn_rcv(sk, skb); - else - goto out_kfree_skb; - } else if (llc_backlog_type(skb) == LLC_EVENT) { - /* timer expiration event */ - if (llc->state > 1) /* not closed */ - rc = llc_conn_state_process(sk, skb); - else - goto out_kfree_skb; - } else { - printk(KERN_ERR "%s: invalid skb in backlog\n", __FUNCTION__); - goto out_kfree_skb; - } -out: - return rc; -out_kfree_skb: - kfree_skb(skb); - goto out; -} - -/** - * llc_sk_init - Initializes a socket with default llc values. - * @sk: socket to initialize. - * - * Initializes a socket with default llc values. - */ -int llc_sk_init(struct sock* sk) -{ - struct llc_opt *llc = kmalloc(sizeof(*llc), GFP_ATOMIC); - int rc = -ENOMEM; - - if (!llc) - goto out; - memset(llc, 0, sizeof(*llc)); - rc = 0; - - llc->sk = sk; - llc->state = LLC_CONN_STATE_ADM; - llc->inc_cntr = llc->dec_cntr = 2; - llc->dec_step = llc->connect_step = 1; - - init_timer(&llc->ack_timer.timer); - llc->ack_timer.expire = LLC_ACK_TIME; - llc->ack_timer.timer.data = (unsigned long)sk; - llc->ack_timer.timer.function = llc_conn_ack_tmr_cb; - - init_timer(&llc->pf_cycle_timer.timer); - llc->pf_cycle_timer.expire = LLC_P_TIME; - llc->pf_cycle_timer.timer.data = (unsigned long)sk; - llc->pf_cycle_timer.timer.function = llc_conn_pf_cycle_tmr_cb; - - init_timer(&llc->rej_sent_timer.timer); - llc->rej_sent_timer.expire = LLC_REJ_TIME; - llc->rej_sent_timer.timer.data = (unsigned long)sk; - llc->rej_sent_timer.timer.function = llc_conn_rej_tmr_cb; - - init_timer(&llc->busy_state_timer.timer); - llc->busy_state_timer.expire = LLC_BUSY_TIME; - llc->busy_state_timer.timer.data = (unsigned long)sk; - llc->busy_state_timer.timer.function = llc_conn_busy_tmr_cb; - - llc->n2 = 2; /* max retransmit */ - llc->k = 2; /* tx win size, will adjust dynam */ - llc->rw = 128; /* rx win size (opt and equal to - * tx_win of remote LLC) */ - skb_queue_head_init(&llc->pdu_unack_q); - sk->sk_backlog_rcv = llc_backlog_rcv; - llc_sk(sk) = llc; -out: - return rc; -} - -/** - * llc_sk_alloc - Allocates LLC sock - * @family: upper layer protocol family - * @priority: for allocation (%GFP_KERNEL, %GFP_ATOMIC, etc) - * - * Allocates a LLC sock and initializes it. Returns the new LLC sock - * or %NULL if there's no memory available for one - */ -struct sock *llc_sk_alloc(int family, int priority) -{ - struct sock *sk = sk_alloc(family, priority, 1, NULL); - - if (!sk) - goto out; - if (llc_sk_init(sk)) - goto outsk; - sock_init_data(NULL, sk); - sk_set_owner(sk, THIS_MODULE); -#ifdef LLC_REFCNT_DEBUG - atomic_inc(&llc_sock_nr); - printk(KERN_DEBUG "LLC socket %p created in %s, now we have %d alive\n", sk, - __FUNCTION__, atomic_read(&llc_sock_nr)); -#endif -out: - return sk; -outsk: - sk_free(sk); - sk = NULL; - goto out; -} - -/** - * llc_sk_free - Frees a LLC socket - * @sk - socket to free - * - * Frees a LLC socket - */ -void llc_sk_free(struct sock *sk) -{ - struct llc_opt *llc = llc_sk(sk); - - llc->state = LLC_CONN_OUT_OF_SVC; - /* Stop all (possibly) running timers */ - llc_conn_ac_stop_all_timers(sk, NULL); -#ifdef DEBUG_LLC_CONN_ALLOC - printk(KERN_INFO "%s: unackq=%d, txq=%d\n", __FUNCTION__, - skb_queue_len(&llc->pdu_unack_q), - skb_queue_len(&sk->sk_write_queue)); -#endif - skb_queue_purge(&sk->sk_receive_queue); - skb_queue_purge(&sk->sk_write_queue); - skb_queue_purge(&llc->pdu_unack_q); -#ifdef LLC_REFCNT_DEBUG - if (atomic_read(&sk->sk_refcnt) != 1) { - printk(KERN_DEBUG "Destruction of LLC sock %p delayed in %s, cnt=%d\n", - sk, __FUNCTION__, atomic_read(&sk->sk_refcnt)); - printk(KERN_DEBUG "%d LLC sockets are still alive\n", - atomic_read(&llc_sock_nr)); - } else { - atomic_dec(&llc_sock_nr); - printk(KERN_DEBUG "LLC socket %p released in %s, %d are still alive\n", sk, - __FUNCTION__, atomic_read(&llc_sock_nr)); - } -#endif - sock_put(sk); -} - -/** - * llc_sk_reset - resets a connection - * @sk: LLC socket to reset - * - * Resets a connection to the out of service state. Stops its timers - * and frees any frames in the queues of the connection. - */ -void llc_sk_reset(struct sock *sk) -{ - struct llc_opt *llc = llc_sk(sk); - - llc_conn_ac_stop_all_timers(sk, NULL); - skb_queue_purge(&sk->sk_write_queue); - skb_queue_purge(&llc->pdu_unack_q); - llc->remote_busy_flag = 0; - llc->cause_flag = 0; - llc->retry_count = 0; - llc_conn_set_p_flag(sk, 0); - llc->f_flag = 0; - llc->s_flag = 0; - llc->ack_pf = 0; - llc->first_pdu_Ns = 0; - llc->ack_must_be_send = 0; - llc->dec_step = 1; - llc->inc_cntr = 2; - llc->dec_cntr = 2; - llc->X = 0; - llc->failed_data_req = 0 ; - llc->last_nr = 0; -} - -/** - * llc_rtn_all_conns - Closes all connections of a sap - * @sap: sap to close its connections - * - * Closes all connections of a sap. Returns 0 if all actions complete - * successfully, nonzero otherwise - */ -static int llc_rtn_all_conns(struct llc_sap *sap) -{ - int rc = 0; - struct sock *sk; - struct hlist_node *node; - - write_lock_bh(&sap->sk_list.lock); - - sk_for_each(sk, node, &sap->sk_list.list) { - llc_sk(sk)->state = LLC_CONN_STATE_TEMP; - - if (llc_send_disc(sk)) - rc = 1; - } - - write_unlock_bh(&sap->sk_list.lock); - return rc; -} - -/** - * llc_station_state_process: queue event and try to process queue. - * @station: Address of the station - * @skb: Address of the event - * - * Queues an event (on the station event queue) for handling by the - * station state machine and attempts to process any queued-up events. - */ -void llc_station_state_process(struct llc_station *station, struct sk_buff *skb) -{ - spin_lock_bh(&station->ev_q.lock); - skb_queue_tail(&station->ev_q.list, skb); - llc_station_service_events(station); - spin_unlock_bh(&station->ev_q.lock); -} - -/** - * llc_station_send_pdu - queues PDU to send - * @station: Address of the station - * @skb: Address of the PDU - * - * Queues a PDU to send to the MAC layer. - */ -void llc_station_send_pdu(struct llc_station *station, struct sk_buff *skb) -{ - skb_queue_tail(&station->mac_pdu_q, skb); - llc_station_send_pdus(station); -} - -/** - * llc_station_send_pdus - tries to send queued PDUs - * @station: Address of the station - * - * Tries to send any PDUs queued in the station mac_pdu_q to the MAC - * layer. - */ -static void llc_station_send_pdus(struct llc_station *station) -{ - struct sk_buff *skb; - - while ((skb = skb_dequeue(&station->mac_pdu_q)) != NULL) - if (dev_queue_xmit(skb)) - break; -} - -/** - * llc_station_free_ev - frees an event - * @station: Address of the station - * @skb: Address of the event - * - * Frees an event. - */ -static void llc_station_free_ev(struct llc_station *station, - struct sk_buff *skb) -{ - struct llc_station_state_ev *ev = llc_station_ev(skb); - - if (ev->type == LLC_STATION_EV_TYPE_PDU) - kfree_skb(skb); -} - -/** - * llc_station_service_events - service events in the queue - * @station: Address of the station - * - * Get an event from the station event queue (if any); attempt to service - * the event; if event serviced, get the next event (if any) on the event - * queue; if event not service, re-queue the event on the event queue and - * attempt to service the next event; when serviced all events in queue, - * finished; if don't transition to different state, just service all - * events once; if transition to new state, service all events again. - * Caller must hold station->ev_q.lock. - */ -static void llc_station_service_events(struct llc_station *station) -{ - struct sk_buff *skb; - - while ((skb = skb_dequeue(&station->ev_q.list)) != NULL) - llc_station_next_state(station, skb); -} - -/** - * llc_station_next_state - processes event and goes to the next state - * @station: Address of the station - * @skb: Address of the event - * - * Processes an event, executes any transitions related to that event and - * updates the state of the station. - */ -static u16 llc_station_next_state(struct llc_station *station, - struct sk_buff *skb) -{ - u16 rc = 1; - struct llc_station_state_trans *trans; - - if (station->state > LLC_NBR_STATION_STATES) - goto out; - trans = llc_find_station_trans(station, skb); - if (trans) { - /* got the state to which we next transition; perform the - * actions associated with this transition before actually - * transitioning to the next state - */ - rc = llc_exec_station_trans_actions(station, trans, skb); - if (!rc) - /* transition station to next state if all actions - * execute successfully; done; wait for next event - */ - station->state = trans->next_state; - } else - /* event not recognized in current state; re-queue it for - * processing again at a later time; return failure - */ - rc = 0; -out: - llc_station_free_ev(station, skb); - return rc; -} - -/** - * llc_find_station_trans - finds transition for this event - * @station: Address of the station - * @skb: Address of the event - * - * Search thru events of the current state of the station until list - * exhausted or it's obvious that the event is not valid for the current - * state. Returns the address of the transition if cound, %NULL otherwise. - */ -static struct llc_station_state_trans * - llc_find_station_trans(struct llc_station *station, - struct sk_buff *skb) -{ - int i = 0; - struct llc_station_state_trans *rc = NULL; - struct llc_station_state_trans **next_trans; - struct llc_station_state *curr_state = - &llc_station_state_table[station->state - 1]; - - for (next_trans = curr_state->transitions; next_trans[i]->ev; i++) - if (!next_trans[i]->ev(station, skb)) { - rc = next_trans[i]; - break; - } - return rc; -} - -/** - * llc_exec_station_trans_actions - executes actions for transition - * @station: Address of the station - * @trans: Address of the transition - * @skb: Address of the event that caused the transition - * - * Executes actions of a transition of the station state machine. Returns - * 0 if all actions complete successfully, nonzero otherwise. - */ -static u16 llc_exec_station_trans_actions(struct llc_station *station, - struct llc_station_state_trans *trans, - struct sk_buff *skb) -{ - u16 rc = 0; - llc_station_action_t *next_action = trans->ev_actions; - - for (; next_action && *next_action; next_action++) - if ((*next_action)(station, skb)) - rc = 1; - return rc; -} - -/** - * llc_alloc_frame - allocates sk_buff for frame - * - * Allocates an sk_buff for frame and initializes sk_buff fields. - * Returns allocated skb or %NULL when out of memory. - */ -struct sk_buff *llc_alloc_frame(void) -{ - struct sk_buff *skb = alloc_skb(128, GFP_ATOMIC); - - if (skb) { - skb_reserve(skb, 50); - skb->nh.raw = skb->h.raw = skb->data; - skb->protocol = htons(ETH_P_802_2); - skb->dev = dev_base->next; - skb->mac.raw = skb->head; - } - return skb; -} - -static struct packet_type llc_packet_type = { - .type = __constant_htons(ETH_P_802_2), - .func = llc_rcv, - .data = (void *)1, -}; - -static struct packet_type llc_tr_packet_type = { - .type = __constant_htons(ETH_P_TR_802_2), - .func = llc_rcv, - .data = (void *)1, -}; - -static char llc_banner[] __initdata = - KERN_INFO "LLC 2.0 by Procom, 1997, Arnaldo C. Melo, 2001, 2002\n" - KERN_INFO "NET 4.0 IEEE 802.2 extended support\n"; -static char llc_error_msg[] __initdata = - KERN_ERR "LLC install NOT successful.\n"; - -static int __init llc_init(void) -{ - u16 rc = 0; - struct sk_buff *skb; - struct llc_station_state_ev *ev; - - printk(llc_banner); - INIT_LIST_HEAD(&llc_main_station.sap_list.list); - rwlock_init(&llc_main_station.sap_list.lock); - skb_queue_head_init(&llc_main_station.mac_pdu_q); - skb_queue_head_init(&llc_main_station.ev_q.list); - spin_lock_init(&llc_main_station.ev_q.lock); - init_timer(&llc_main_station.ack_timer); - llc_main_station.ack_timer.data = (unsigned long)&llc_main_station; - llc_main_station.ack_timer.function = llc_station_ack_tmr_cb; - - if (llc_proc_init()) - goto err; - skb = alloc_skb(0, GFP_ATOMIC); - if (!skb) - goto err_skb; - llc_build_offset_table(); - ev = llc_station_ev(skb); - memset(ev, 0, sizeof(*ev)); - if (dev_base->next) - memcpy(llc_main_station.mac_sa, - dev_base->next->dev_addr, ETH_ALEN); - else - memset(llc_main_station.mac_sa, 0, ETH_ALEN); - llc_main_station.ack_timer.expires = jiffies + 3 * HZ; - llc_main_station.maximum_retry = 1; - llc_main_station.state = LLC_STATION_STATE_DOWN; - ev->type = LLC_STATION_EV_TYPE_SIMPLE; - ev->prim_type = LLC_STATION_EV_ENABLE_WITHOUT_DUP_ADDR_CHECK; - rc = llc_station_next_state(&llc_main_station, skb); - llc_ui_init(); - dev_add_pack(&llc_packet_type); - dev_add_pack(&llc_tr_packet_type); -out: - return rc; -err_skb: - llc_proc_exit(); -err: - printk(llc_error_msg); - rc = 1; - goto out; -} - -static void __exit llc_exit(void) -{ - llc_ui_exit(); - llc_proc_exit(); - dev_remove_pack(&llc_packet_type); - dev_remove_pack(&llc_tr_packet_type); -} - -module_init(llc_init); -module_exit(llc_exit); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Procom, 1997, Arnaldo C. Melo, Jay Schullist, 2001-2003"); -MODULE_DESCRIPTION("LLC 2.0, IEEE 802.2 extended support"); -MODULE_ALIAS_NETPROTO(PF_LLC); diff -Nru a/net/llc/llc_output.c b/net/llc/llc_output.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/net/llc/llc_output.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,105 @@ +/* + * llc_output.c - LLC minimal output path + * + * Copyright (c) 1997 by Procom Technology, Inc. + * 2001-2003 by Arnaldo Carvalho de Melo + * + * This program can be redistributed or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation. + * This program is distributed without any warranty or implied warranty + * of merchantability or fitness for a particular purpose. + * + * See the GNU General Public License version 2 for more details. + */ + +#include +#include +#include +#include +#include +#include + +/** + * llc_mac_hdr_init - fills MAC header fields + * @skb: Address of the frame to initialize its MAC header + * @sa: The MAC source address + * @da: The MAC destination address + * + * Fills MAC header fields, depending on MAC type. Returns 0, If MAC type + * is a valid type and initialization completes correctly 1, otherwise. + */ +int llc_mac_hdr_init(struct sk_buff *skb, unsigned char *sa, unsigned char *da) +{ + int rc = 0; + + switch (skb->dev->type) { +#ifdef CONFIG_TR + case ARPHRD_IEEE802_TR: { + struct net_device *dev = skb->dev; + struct trh_hdr *trh; + + trh = (struct trh_hdr *)skb_push(skb, sizeof(*trh)); + trh->ac = AC; + trh->fc = LLC_FRAME; + if (sa) + memcpy(trh->saddr, sa, dev->addr_len); + else + memset(trh->saddr, 0, dev->addr_len); + if (da) { + memcpy(trh->daddr, da, dev->addr_len); + tr_source_route(skb, trh, dev); + } + skb->mac.raw = skb->data; + break; + } +#endif + case ARPHRD_ETHER: + case ARPHRD_LOOPBACK: { + unsigned short len = skb->len; + struct ethhdr *eth; + + skb->mac.raw = skb_push(skb, sizeof(*eth)); + eth = (struct ethhdr *)skb->mac.raw; + eth->h_proto = htons(len); + memcpy(eth->h_dest, da, ETH_ALEN); + memcpy(eth->h_source, sa, ETH_ALEN); + break; + } + default: + printk(KERN_WARNING "device type not supported: %d\n", + skb->dev->type); + rc = -EINVAL; + } + return rc; +} + +/** + * llc_build_and_send_ui_pkt - unitdata request interface for upper layers + * @sap: sap to use + * @skb: packet to send + * @dmac: destination mac address + * @dsap: destination sap + * + * Upper layers calls this function when upper layer wants to send data + * using connection-less mode communication (UI pdu). + * + * Accept data frame from network layer to be sent using connection- + * less mode communication; timeout/retries handled by network layer; + * package primitive as an event and send to SAP event handler + */ +int llc_build_and_send_ui_pkt(struct llc_sap *sap, struct sk_buff *skb, + unsigned char *dmac, unsigned char dsap) +{ + int rc; + llc_pdu_header_init(skb, LLC_PDU_TYPE_U, sap->laddr.lsap, + dsap, LLC_PDU_CMD); + llc_pdu_init_as_ui_cmd(skb); + rc = llc_mac_hdr_init(skb, skb->dev->dev_addr, dmac); + if (!rc) + rc = dev_queue_xmit(skb); + return rc; +} + +EXPORT_SYMBOL(llc_mac_hdr_init); +EXPORT_SYMBOL(llc_build_and_send_ui_pkt); diff -Nru a/net/llc/llc_output.h b/net/llc/llc_output.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/net/llc/llc_output.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,20 @@ +#ifndef LLC_OUTPUT_H +#define LLC_OUTPUT_H +/* + * Copyright (c) 1997 by Procom Technology, Inc. + * 2001-2003 by Arnaldo Carvalho de Melo + * + * This program can be redistributed or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation. + * This program is distributed without any warranty or implied warranty + * of merchantability or fitness for a particular purpose. + * + * See the GNU General Public License version 2 for more details. + */ + +struct sk_buff; + +int llc_mac_hdr_init(struct sk_buff *skb, unsigned char *sa, unsigned char *da); + +#endif /* LLC_OUTPUT_H */ diff -Nru a/net/llc/llc_pdu.c b/net/llc/llc_pdu.c --- a/net/llc/llc_pdu.c Mon Sep 22 00:30:19 2003 +++ b/net/llc/llc_pdu.c Mon Sep 22 00:30:19 2003 @@ -11,35 +11,13 @@ * * See the GNU General Public License for more details. */ + #include -#include #include -#include -#include static void llc_pdu_decode_pdu_type(struct sk_buff *skb, u8 *type); -static __inline__ int llc_get_hdr_len(u8 pdu_type); static u8 llc_pdu_get_pf_bit(struct llc_pdu_sn *pdu); -/** - * llc_pdu_header_init - initializes pdu header - * @skb: input skb that header must be set into it. - * @type: type of PDU (U, I or S). - * @ssap: source sap. - * @dsap: destination sap. - * @cr: command/response bit (0 or 1). - * - * This function sets DSAP, SSAP and command/Response bit in LLC header. - */ -void llc_pdu_header_init(struct sk_buff *skb, u8 type, u8 ssap, u8 dsap, u8 cr) -{ - struct llc_pdu_un *pdu = - llc_set_pdu_hdr(skb, skb_push(skb, llc_get_hdr_len(type))); - pdu->dsap = dsap; - pdu->ssap = ssap; - pdu->ssap |= cr; -} - void llc_pdu_set_cmd_rsp(struct sk_buff *skb, u8 pdu_type) { llc_pdu_un_hdr(skb)->ssap |= pdu_type; @@ -115,114 +93,6 @@ } /** - * llc_pdu_decode_sa - extracs source address (MAC) of input frame - * @skb: input skb that source address must be extracted from it. - * @sa: pointer to source address (6 byte array). - * - * This function extracts source address(MAC) of input frame. - */ -void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa) -{ - if (skb->protocol == ntohs(ETH_P_802_2)) - memcpy(sa, ((struct ethhdr *)skb->mac.raw)->h_source, ETH_ALEN); - else if (skb->protocol == ntohs(ETH_P_TR_802_2)) - memcpy(sa, ((struct trh_hdr *)skb->mac.raw)->saddr, ETH_ALEN); -} - -/** - * llc_pdu_decode_da - extracts dest address of input frame - * @skb: input skb that destination address must be extracted from it - * @sa: pointer to destination address (6 byte array). - * - * This function extracts destination address(MAC) of input frame. - */ -void llc_pdu_decode_da(struct sk_buff *skb, u8 *da) -{ - if (skb->protocol == ntohs(ETH_P_802_2)) - memcpy(da, ((struct ethhdr *)skb->mac.raw)->h_dest, ETH_ALEN); - else if (skb->protocol == ntohs(ETH_P_TR_802_2)) - memcpy(da, ((struct trh_hdr *)skb->mac.raw)->daddr, ETH_ALEN); -} - -/** - * llc_pdu_decode_dsap - extracts dest SAP of input frame - * @skb: input skb that destination SAP must be extracted from it. - * @dsap: destination SAP (output argument). - * - * This function extracts destination SAP of input frame. right bit of - * DSAP designates individual/group SAP. - */ -void llc_pdu_decode_dsap(struct sk_buff *skb, u8 *dsap) -{ - *dsap = llc_pdu_un_hdr(skb)->dsap & 0xFE; -} - -/** - * llc_pdu_decode_ssap - extracts source SAP of input frame - * @skb: input skb that source SAP must be extracted from it. - * @ssap: source SAP (output argument). - * - * This function extracts source SAP of input frame. Right bit of SSAP is - * command/response bit. - */ -void llc_pdu_decode_ssap(struct sk_buff *skb, u8 *ssap) -{ - *ssap = llc_pdu_un_hdr(skb)->ssap & 0xFE; -} - -/** - * llc_pdu_init_as_ui_cmd - sets LLC header as UI PDU - * @skb: input skb that header must be set into it. - * - * This function sets third byte of LLC header as a UI PDU. - */ -void llc_pdu_init_as_ui_cmd(struct sk_buff *skb) -{ - struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); - - pdu->ctrl_1 = LLC_PDU_TYPE_U; - pdu->ctrl_1 |= LLC_1_PDU_CMD_UI; -} - -/** - * llc_pdu_init_as_xid_cmd - sets bytes 3, 4 & 5 of LLC header as XID - * @skb: input skb that header must be set into it. - * - * This function sets third,fourth,fifth and sixth bytes of LLC header as - * a XID PDU. - */ -void llc_pdu_init_as_xid_cmd(struct sk_buff *skb, u8 svcs_supported, - u8 rx_window) -{ - struct llc_xid_info *xid_info; - struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); - - pdu->ctrl_1 = LLC_PDU_TYPE_U; - pdu->ctrl_1 |= LLC_1_PDU_CMD_XID; - pdu->ctrl_1 |= LLC_U_PF_BIT_MASK; - xid_info = (struct llc_xid_info *)(((u8 *)&pdu->ctrl_1) + 1); - xid_info->fmt_id = LLC_XID_FMT_ID; /* 0x81 */ - xid_info->type = svcs_supported; - xid_info->rw = rx_window << 1; /* size of receive window */ - skb_put(skb, 3); -} - -/** - * llc_pdu_init_as_test_cmd - sets PDU as TEST - * @skb - Address of the skb to build - * - * Sets a PDU as TEST - */ -void llc_pdu_init_as_test_cmd(struct sk_buff *skb) -{ - struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); - - pdu->ctrl_1 = LLC_PDU_TYPE_U; - pdu->ctrl_1 |= LLC_1_PDU_CMD_TEST; - pdu->ctrl_1 |= LLC_U_PF_BIT_MASK; -} - -/** * llc_pdu_init_as_disc_cmd - Builds DISC PDU * @skb: Address of the skb to build * @p_bit: The P bit to set in the PDU @@ -350,55 +220,6 @@ } /** - * llc_pdu_init_as_xid_rsp - builds XID response PDU - * @skb: Address of the skb to build - * @svcs_supported: The class of the LLC (I or II) - * @rx_window: The size of the receive window of the LLC - * - * Builds a pdu frame as an XID response. - */ -void llc_pdu_init_as_xid_rsp(struct sk_buff *skb, u8 svcs_supported, - u8 rx_window) -{ - struct llc_xid_info *xid_info; - struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); - - pdu->ctrl_1 = LLC_PDU_TYPE_U; - pdu->ctrl_1 |= LLC_1_PDU_CMD_XID; - pdu->ctrl_1 |= LLC_U_PF_BIT_MASK; - - xid_info = (struct llc_xid_info *)(((u8 *)&pdu->ctrl_1) + 1); - xid_info->fmt_id = LLC_XID_FMT_ID; - xid_info->type = svcs_supported; - xid_info->rw = rx_window << 1; - skb_put(skb, 3); -} - -/** - * llc_pdu_init_as_test_rsp - build TEST response PDU - * @skb: Address of the skb to build - * @ev_skb: The received TEST command PDU frame - * - * Builds a pdu frame as a TEST response. - */ -void llc_pdu_init_as_test_rsp(struct sk_buff *skb, struct sk_buff *ev_skb) -{ - int dsize; - struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); - - pdu->ctrl_1 = LLC_PDU_TYPE_U; - pdu->ctrl_1 |= LLC_1_PDU_CMD_TEST; - pdu->ctrl_1 |= LLC_U_PF_BIT_MASK; - if (ev_skb->protocol == ntohs(ETH_P_802_2)) { - struct llc_pdu_un *ev_pdu = llc_pdu_un_hdr(ev_skb); - - dsize = ntohs(((struct ethhdr *)ev_skb->mac.raw)->h_proto) - 3; - memcpy(((u8 *)pdu) + 3, ((u8 *)ev_pdu) + 3, dsize); - skb_put(skb, dsize); - } -} - -/** * llc_pdu_init_as_frmr_rsp - builds FRMR response PDU * @skb: Address of the frame to build * @prev_pdu: The rejected PDU frame @@ -530,58 +351,6 @@ *type = LLC_PDU_TYPE_S; } else *type = LLC_PDU_TYPE_I; -} - -/** - * llc_decode_pdu_type - designates component LLC must handle for PDU - * @skb: input skb - * @dest: destination component - * - * This function designates which component of LLC must handle this PDU. - */ -void llc_decode_pdu_type(struct sk_buff *skb, u8 *dest) -{ - u8 type = LLC_DEST_CONN; /* I-PDU or S-PDU type */ - struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb); - - if ((pdu->ctrl_1 & LLC_PDU_TYPE_MASK) != LLC_PDU_TYPE_U) - goto out; - switch (LLC_U_PDU_CMD(pdu)) { - case LLC_1_PDU_CMD_XID: - case LLC_1_PDU_CMD_UI: - case LLC_1_PDU_CMD_TEST: - type = LLC_DEST_SAP; - break; - case LLC_2_PDU_CMD_SABME: - case LLC_2_PDU_CMD_DISC: - case LLC_2_PDU_RSP_UA: - case LLC_2_PDU_RSP_DM: - case LLC_2_PDU_RSP_FRMR: - break; - default: - type = LLC_DEST_INVALID; - break; - } -out: - *dest = type; -} - -/** - * llc_get_hdr_len - designates LLC header length - * @type: type of PDU. - * - * This function designates LLC header length of PDU. header length for I - * and S PDU is 4 and for U is 3 bytes. Returns the length of header. - */ -static __inline__ int llc_get_hdr_len(u8 type) -{ - static int hdr_len[] = { - [LLC_PDU_TYPE_U] = 3, - [LLC_PDU_TYPE_I] = 4, - [LLC_PDU_TYPE_S] = 4, - }; - - return hdr_len[type]; } /** diff -Nru a/net/llc/llc_proc.c b/net/llc/llc_proc.c --- a/net/llc/llc_proc.c Mon Sep 22 00:30:18 2003 +++ b/net/llc/llc_proc.c Mon Sep 22 00:30:18 2003 @@ -20,13 +20,11 @@ #include #include #include +#include #include #include #include #include -#include -#include -#include static void llc_ui_format_mac(struct seq_file *seq, unsigned char *mac) { @@ -41,7 +39,7 @@ struct hlist_node *node; struct sock *sk = NULL; - list_for_each(sap_entry, &llc_main_station.sap_list.list) { + list_for_each(sap_entry, &llc_sap_list) { sap = list_entry(sap_entry, struct llc_sap, node); read_lock_bh(&sap->sk_list.lock); @@ -66,8 +64,8 @@ { loff_t l = *pos; - read_lock_bh(&llc_main_station.sap_list.lock); - return l ? llc_get_sk_idx(--l) : (void *)1; + read_lock_bh(&llc_sap_list_lock); + return l ? llc_get_sk_idx(--l) : SEQ_START_TOKEN; } static void *llc_seq_next(struct seq_file *seq, void *v, loff_t *pos) @@ -77,7 +75,7 @@ struct llc_sap *sap; ++*pos; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { sk = llc_get_sk_idx(0); goto out; } @@ -92,7 +90,7 @@ read_unlock_bh(&sap->sk_list.lock); sk = NULL; for (;;) { - if (sap->node.next == &llc_main_station.sap_list.list) + if (sap->node.next == &llc_sap_list) break; sap = list_entry(sap->node.next, struct llc_sap, node); read_lock_bh(&sap->sk_list.lock); @@ -115,7 +113,7 @@ read_unlock_bh(&sap->sk_list.lock); } - read_unlock_bh(&llc_main_station.sap_list.lock); + read_unlock_bh(&llc_sap_list_lock); } static int llc_seq_socket_show(struct seq_file *seq, void *v) @@ -123,7 +121,7 @@ struct sock* sk; struct llc_opt *llc; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(seq, "SKt Mc local_mac_sap remote_mac_sap " " tx_queue rx_queue st uid link\n"); goto out; @@ -172,7 +170,7 @@ struct sock* sk; struct llc_opt *llc; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(seq, "Connection list:\n" "dsap state retr txw rxw pf ff sf df rs cs " "tack tpfc trs tbs blog busr\n"); diff -Nru a/net/llc/llc_s_ac.c b/net/llc/llc_s_ac.c --- a/net/llc/llc_s_ac.c Mon Sep 22 00:30:24 2003 +++ b/net/llc/llc_s_ac.c Mon Sep 22 00:30:24 2003 @@ -17,13 +17,14 @@ * * See the GNU General Public License for more details. */ + #include -#include -#include -#include -#include +#include #include -#include +#include +#include +#include +#include "llc_output.h" /** * llc_sap_action_unit_data_ind - forward UI PDU to network layer @@ -56,7 +57,7 @@ llc_pdu_header_init(skb, LLC_PDU_TYPE_U, ev->saddr.lsap, ev->daddr.lsap, LLC_PDU_CMD); llc_pdu_init_as_ui_cmd(skb); - rc = lan_hdrs_init(skb, ev->saddr.mac, ev->daddr.mac); + rc = llc_mac_hdr_init(skb, ev->saddr.mac, ev->daddr.mac); if (!rc) rc = dev_queue_xmit(skb); return rc; @@ -79,7 +80,7 @@ llc_pdu_header_init(skb, LLC_PDU_TYPE_U, ev->saddr.lsap, ev->daddr.lsap, LLC_PDU_CMD); llc_pdu_init_as_xid_cmd(skb, LLC_XID_NULL_CLASS_2, 0); - rc = lan_hdrs_init(skb, ev->saddr.mac, ev->daddr.mac); + rc = llc_mac_hdr_init(skb, ev->saddr.mac, ev->daddr.mac); if (!rc) rc = dev_queue_xmit(skb); return rc; @@ -109,7 +110,7 @@ llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, dsap, LLC_PDU_RSP); llc_pdu_init_as_xid_rsp(nskb, LLC_XID_NULL_CLASS_2, 0); - rc = lan_hdrs_init(nskb, mac_sa, mac_da); + rc = llc_mac_hdr_init(nskb, mac_sa, mac_da); if (!rc) rc = dev_queue_xmit(nskb); out: @@ -133,7 +134,7 @@ llc_pdu_header_init(skb, LLC_PDU_TYPE_U, ev->saddr.lsap, ev->daddr.lsap, LLC_PDU_CMD); llc_pdu_init_as_test_cmd(skb); - rc = lan_hdrs_init(skb, ev->saddr.mac, ev->daddr.mac); + rc = llc_mac_hdr_init(skb, ev->saddr.mac, ev->daddr.mac); if (!rc) rc = dev_queue_xmit(skb); return rc; @@ -155,7 +156,7 @@ llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, dsap, LLC_PDU_RSP); llc_pdu_init_as_test_rsp(nskb, skb); - rc = lan_hdrs_init(nskb, mac_sa, mac_da); + rc = llc_mac_hdr_init(nskb, mac_sa, mac_da); if (!rc) rc = dev_queue_xmit(nskb); out: diff -Nru a/net/llc/llc_sap.c b/net/llc/llc_sap.c --- a/net/llc/llc_sap.c Mon Sep 22 00:30:23 2003 +++ b/net/llc/llc_sap.c Mon Sep 22 00:30:23 2003 @@ -11,46 +11,53 @@ * * See the GNU General Public License for more details. */ -#include + +#include +#include #include +#include #include -#include #include +#include #include #include #include -#include -#include -#include +#include /** - * llc_sap_assign_sock - adds a connection to a SAP - * @sap: pointer to SAP. - * @conn: pointer to connection. + * llc_alloc_frame - allocates sk_buff for frame * - * This function adds a connection to connection_list of a SAP. + * Allocates an sk_buff for frame and initializes sk_buff fields. + * Returns allocated skb or %NULL when out of memory. */ -void llc_sap_assign_sock(struct llc_sap *sap, struct sock *sk) +struct sk_buff *llc_alloc_frame(void) { - write_lock_bh(&sap->sk_list.lock); - llc_sk(sk)->sap = sap; - sk_add_node(sk, &sap->sk_list.list); - write_unlock_bh(&sap->sk_list.lock); + struct sk_buff *skb = alloc_skb(128, GFP_ATOMIC); + + if (skb) { + skb_reserve(skb, 50); + skb->nh.raw = skb->h.raw = skb->data; + skb->protocol = htons(ETH_P_802_2); + skb->dev = dev_base->next; + skb->mac.raw = skb->head; + } + return skb; } -/** - * llc_sap_unassign_sock - removes a connection from SAP - * @sap: SAP - * @sk: pointer to connection - * - * This function removes a connection from sk_list.list of a SAP if - * the connection was in this list. - */ -void llc_sap_unassign_sock(struct llc_sap *sap, struct sock *sk) +void llc_save_primitive(struct sk_buff* skb, u8 prim) { - write_lock_bh(&sap->sk_list.lock); - sk_del_node_init(sk); - write_unlock_bh(&sap->sk_list.lock); + struct sockaddr_llc *addr = llc_ui_skb_cb(skb); + + /* save primitive for use by the user. */ + addr->sllc_family = skb->sk->sk_family; + addr->sllc_arphrd = skb->dev->type; + addr->sllc_test = prim == LLC_TEST_PRIM; + addr->sllc_xid = prim == LLC_XID_PRIM; + addr->sllc_ua = prim == LLC_DATAUNIT_PRIM; + llc_pdu_decode_sa(skb, addr->sllc_smac); + llc_pdu_decode_da(skb, addr->sllc_dmac); + llc_pdu_decode_dsap(skb, &addr->sllc_dsap); + llc_pdu_decode_ssap(skb, &addr->sllc_ssap); } /** @@ -192,4 +199,119 @@ } } kfree_skb(skb); +} + +/** + * llc_build_and_send_test_pkt - TEST interface for upper layers. + * @sap: sap to use + * @skb: packet to send + * @dmac: destination mac address + * @dsap: destination sap + * + * This function is called when upper layer wants to send a TEST pdu. + * Returns 0 for success, 1 otherwise. + */ +void llc_build_and_send_test_pkt(struct llc_sap *sap, + struct sk_buff *skb, u8 *dmac, u8 dsap) +{ + struct llc_sap_state_ev *ev = llc_sap_ev(skb); + + ev->saddr.lsap = sap->laddr.lsap; + ev->daddr.lsap = dsap; + memcpy(ev->saddr.mac, skb->dev->dev_addr, IFHWADDRLEN); + memcpy(ev->daddr.mac, dmac, IFHWADDRLEN); + + ev->type = LLC_SAP_EV_TYPE_PRIM; + ev->prim = LLC_TEST_PRIM; + ev->prim_type = LLC_PRIM_TYPE_REQ; + llc_sap_state_process(sap, skb); +} + +/** + * llc_build_and_send_xid_pkt - XID interface for upper layers + * @sap: sap to use + * @skb: packet to send + * @dmac: destination mac address + * @dsap: destination sap + * + * This function is called when upper layer wants to send a XID pdu. + * Returns 0 for success, 1 otherwise. + */ +void llc_build_and_send_xid_pkt(struct llc_sap *sap, struct sk_buff *skb, + u8 *dmac, u8 dsap) +{ + struct llc_sap_state_ev *ev = llc_sap_ev(skb); + + ev->saddr.lsap = sap->laddr.lsap; + ev->daddr.lsap = dsap; + memcpy(ev->saddr.mac, skb->dev->dev_addr, IFHWADDRLEN); + memcpy(ev->daddr.mac, dmac, IFHWADDRLEN); + + ev->type = LLC_SAP_EV_TYPE_PRIM; + ev->prim = LLC_XID_PRIM; + ev->prim_type = LLC_PRIM_TYPE_REQ; + llc_sap_state_process(sap, skb); +} + +/** + * llc_sap_rcv - sends received pdus to the sap state machine + * @sap: current sap component structure. + * @skb: received frame. + * + * Sends received pdus to the sap state machine. + */ +static void llc_sap_rcv(struct llc_sap *sap, struct sk_buff *skb) +{ + struct llc_sap_state_ev *ev = llc_sap_ev(skb); + + ev->type = LLC_SAP_EV_TYPE_PDU; + ev->reason = 0; + llc_sap_state_process(sap, skb); +} + +/** + * llc_lookup_dgram - Finds dgram socket for the local sap/mac + * @sap: SAP + * @laddr: address of local LLC (MAC + SAP) + * + * Search socket list of the SAP and finds connection using the local + * mac, and local sap. Returns pointer for socket found, %NULL otherwise. + */ +struct sock *llc_lookup_dgram(struct llc_sap *sap, struct llc_addr *laddr) +{ + struct sock *rc; + struct hlist_node *node; + + read_lock_bh(&sap->sk_list.lock); + sk_for_each(rc, node, &sap->sk_list.list) { + struct llc_opt *llc = llc_sk(rc); + + if (rc->sk_type == SOCK_DGRAM && + llc->laddr.lsap == laddr->lsap && + llc_mac_match(llc->laddr.mac, laddr->mac)) { + sock_hold(rc); + goto found; + } + } + rc = NULL; +found: + read_unlock_bh(&sap->sk_list.lock); + return rc; +} + +void llc_sap_handler(struct llc_sap *sap, struct sk_buff *skb) +{ + struct llc_addr laddr; + struct sock *sk; + + llc_pdu_decode_da(skb, laddr.mac); + llc_pdu_decode_dsap(skb, &laddr.lsap); + + sk = llc_lookup_dgram(sap, &laddr); + if (sk) { + skb->sk = sk; + llc_sap_rcv(sap, skb); + sock_put(sk); + } else + kfree_skb(skb); } diff -Nru a/net/llc/llc_stat.c b/net/llc/llc_stat.c --- a/net/llc/llc_stat.c Mon Sep 22 00:30:18 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,218 +0,0 @@ -/* - * llc_stat.c - Implementation of LLC station component state machine - * transitions - * Copyright (c) 1997 by Procom Technology, Inc. - * 2001-2003 by Arnaldo Carvalho de Melo - * - * This program can be redistributed or modified under the terms of the - * GNU General Public License as published by the Free Software Foundation. - * This program is distributed without any warranty or implied warranty - * of merchantability or fitness for a particular purpose. - * - * See the GNU General Public License for more details. - */ -#include -#include -#include -#include -#include -#include - -/* COMMON STATION STATE transitions */ - -/* dummy last-transition indicator; common to all state transition groups - * last entry for this state - * all members are zeros, .bss zeroes it - */ -static struct llc_station_state_trans llc_stat_state_trans_end; - -/* DOWN STATE transitions */ - -/* state transition for LLC_STATION_EV_ENABLE_WITH_DUP_ADDR_CHECK event */ -static llc_station_action_t llc_stat_down_state_actions_1[] = { - [0] = llc_station_ac_start_ack_timer, - [1] = llc_station_ac_set_retry_cnt_0, - [2] = llc_station_ac_set_xid_r_cnt_0, - [3] = llc_station_ac_send_null_dsap_xid_c, - [4] = NULL, -}; - -static struct llc_station_state_trans llc_stat_down_state_trans_1 = { - .ev = llc_stat_ev_enable_with_dup_addr_check, - .next_state = LLC_STATION_STATE_DUP_ADDR_CHK, - .ev_actions = llc_stat_down_state_actions_1, -}; - -/* state transition for LLC_STATION_EV_ENABLE_WITHOUT_DUP_ADDR_CHECK event */ -static llc_station_action_t llc_stat_down_state_actions_2[] = { - [0] = llc_station_ac_report_status, /* STATION UP */ - [1] = NULL, -}; - -static struct llc_station_state_trans llc_stat_down_state_trans_2 = { - .ev = llc_stat_ev_enable_without_dup_addr_check, - .next_state = LLC_STATION_STATE_UP, - .ev_actions = llc_stat_down_state_actions_2, -}; - -/* array of pointers; one to each transition */ -static struct llc_station_state_trans *llc_stat_dwn_state_trans[] = { - [0] = &llc_stat_down_state_trans_1, - [1] = &llc_stat_down_state_trans_2, - [2] = &llc_stat_state_trans_end, -}; - -/* UP STATE transitions */ -/* state transition for LLC_STATION_EV_DISABLE_REQ event */ -static llc_station_action_t llc_stat_up_state_actions_1[] = { - [0] = llc_station_ac_report_status, /* STATION DOWN */ - [1] = NULL, -}; - -static struct llc_station_state_trans llc_stat_up_state_trans_1 = { - .ev = llc_stat_ev_disable_req, - .next_state = LLC_STATION_STATE_DOWN, - .ev_actions = llc_stat_up_state_actions_1, -}; - -/* state transition for LLC_STATION_EV_RX_NULL_DSAP_XID_C event */ -static llc_station_action_t llc_stat_up_state_actions_2[] = { - [0] = llc_station_ac_send_xid_r, - [1] = NULL, -}; - -static struct llc_station_state_trans llc_stat_up_state_trans_2 = { - .ev = llc_stat_ev_rx_null_dsap_xid_c, - .next_state = LLC_STATION_STATE_UP, - .ev_actions = llc_stat_up_state_actions_2, -}; - -/* state transition for LLC_STATION_EV_RX_NULL_DSAP_TEST_C event */ -static llc_station_action_t llc_stat_up_state_actions_3[] = { - [0] = llc_station_ac_send_test_r, - [1] = NULL, -}; - -static struct llc_station_state_trans llc_stat_up_state_trans_3 = { - .ev = llc_stat_ev_rx_null_dsap_test_c, - .next_state = LLC_STATION_STATE_UP, - .ev_actions = llc_stat_up_state_actions_3, -}; - -/* array of pointers; one to each transition */ -static struct llc_station_state_trans *llc_stat_up_state_trans [] = { - [0] = &llc_stat_up_state_trans_1, - [1] = &llc_stat_up_state_trans_2, - [2] = &llc_stat_up_state_trans_3, - [3] = &llc_stat_state_trans_end, -}; - -/* DUP ADDR CHK STATE transitions */ -/* state transition for LLC_STATION_EV_RX_NULL_DSAP_0_XID_R_XID_R_CNT_EQ - * event - */ -static llc_station_action_t llc_stat_dupaddr_state_actions_1[] = { - [0] = llc_station_ac_inc_xid_r_cnt_by_1, - [1] = NULL, -}; - -static struct llc_station_state_trans llc_stat_dupaddr_state_trans_1 = { - .ev = llc_stat_ev_rx_null_dsap_0_xid_r_xid_r_cnt_eq, - .next_state = LLC_STATION_STATE_DUP_ADDR_CHK, - .ev_actions = llc_stat_dupaddr_state_actions_1, -}; - -/* state transition for LLC_STATION_EV_RX_NULL_DSAP_1_XID_R_XID_R_CNT_EQ - * event - */ -static llc_station_action_t llc_stat_dupaddr_state_actions_2[] = { - [0] = llc_station_ac_report_status, /* DUPLICATE ADDRESS FOUND */ - [1] = NULL, -}; - -static struct llc_station_state_trans llc_stat_dupaddr_state_trans_2 = { - .ev = llc_stat_ev_rx_null_dsap_1_xid_r_xid_r_cnt_eq, - .next_state = LLC_STATION_STATE_DOWN, - .ev_actions = llc_stat_dupaddr_state_actions_2, -}; - -/* state transition for LLC_STATION_EV_RX_NULL_DSAP_XID_C event */ -static llc_station_action_t llc_stat_dupaddr_state_actions_3[] = { - [0] = llc_station_ac_send_xid_r, - [1] = NULL, -}; - -static struct llc_station_state_trans llc_stat_dupaddr_state_trans_3 = { - .ev = llc_stat_ev_rx_null_dsap_xid_c, - .next_state = LLC_STATION_STATE_DUP_ADDR_CHK, - .ev_actions = llc_stat_dupaddr_state_actions_3, -}; - -/* state transition for LLC_STATION_EV_ACK_TMR_EXP_LT_RETRY_CNT_MAX_RETRY - * event - */ -static llc_station_action_t llc_stat_dupaddr_state_actions_4[] = { - [0] = llc_station_ac_start_ack_timer, - [1] = llc_station_ac_inc_retry_cnt_by_1, - [2] = llc_station_ac_set_xid_r_cnt_0, - [3] = llc_station_ac_send_null_dsap_xid_c, - [4] = NULL, -}; - -static struct llc_station_state_trans llc_stat_dupaddr_state_trans_4 = { - .ev = llc_stat_ev_ack_tmr_exp_lt_retry_cnt_max_retry, - .next_state = LLC_STATION_STATE_DUP_ADDR_CHK, - .ev_actions = llc_stat_dupaddr_state_actions_4, -}; - -/* state transition for LLC_STATION_EV_ACK_TMR_EXP_EQ_RETRY_CNT_MAX_RETRY - * event - */ -static llc_station_action_t llc_stat_dupaddr_state_actions_5[] = { - [0] = llc_station_ac_report_status, /* STATION UP */ - [1] = NULL, -}; - -static struct llc_station_state_trans llc_stat_dupaddr_state_trans_5 = { - .ev = llc_stat_ev_ack_tmr_exp_eq_retry_cnt_max_retry, - .next_state = LLC_STATION_STATE_UP, - .ev_actions = llc_stat_dupaddr_state_actions_5, -}; - -/* state transition for LLC_STATION_EV_DISABLE_REQ event */ -static llc_station_action_t llc_stat_dupaddr_state_actions_6[] = { - [0] = llc_station_ac_report_status, /* STATION DOWN */ - [1] = NULL, -}; - -static struct llc_station_state_trans llc_stat_dupaddr_state_trans_6 = { - .ev = llc_stat_ev_disable_req, - .next_state = LLC_STATION_STATE_DOWN, - .ev_actions = llc_stat_dupaddr_state_actions_6, -}; - -/* array of pointers; one to each transition */ -static struct llc_station_state_trans *llc_stat_dupaddr_state_trans[] = { - [0] = &llc_stat_dupaddr_state_trans_6, /* Request */ - [1] = &llc_stat_dupaddr_state_trans_4, /* Timer */ - [2] = &llc_stat_dupaddr_state_trans_5, - [3] = &llc_stat_dupaddr_state_trans_1, /* Receive frame */ - [4] = &llc_stat_dupaddr_state_trans_2, - [5] = &llc_stat_dupaddr_state_trans_3, - [6] = &llc_stat_state_trans_end, -}; - -struct llc_station_state llc_station_state_table[LLC_NBR_STATION_STATES] = { - [LLC_STATION_STATE_DOWN - 1] = { - .curr_state = LLC_STATION_STATE_DOWN, - .transitions = llc_stat_dwn_state_trans, - }, - [LLC_STATION_STATE_DUP_ADDR_CHK - 1] = { - .curr_state = LLC_STATION_STATE_DUP_ADDR_CHK, - .transitions = llc_stat_dupaddr_state_trans, - }, - [LLC_STATION_STATE_UP - 1] = { - .curr_state = LLC_STATION_STATE_UP, - .transitions = llc_stat_up_state_trans, - }, -}; diff -Nru a/net/llc/llc_station.c b/net/llc/llc_station.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/net/llc/llc_station.c Mon Sep 22 00:30:20 2003 @@ -0,0 +1,713 @@ +/* + * llc_station.c - station component of LLC + * + * Copyright (c) 1997 by Procom Technology, Inc. + * 2001-2003 by Arnaldo Carvalho de Melo + * + * This program can be redistributed or modified under the terms of the + * GNU General Public License as published by the Free Software Foundation. + * This program is distributed without any warranty or implied warranty + * of merchantability or fitness for a particular purpose. + * + * See the GNU General Public License for more details. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * struct llc_station - LLC station component + * + * SAP and connection resource manager, one per adapter. + * + * @state - state of station + * @xid_r_count - XID response PDU counter + * @mac_sa - MAC source address + * @sap_list - list of related SAPs + * @ev_q - events entering state mach. + * @mac_pdu_q - PDUs ready to send to MAC + */ +struct llc_station { + u8 state; + u8 xid_r_count; + struct timer_list ack_timer; + u8 retry_count; + u8 maximum_retry; + struct { + struct sk_buff_head list; + spinlock_t lock; + } ev_q; + struct sk_buff_head mac_pdu_q; +}; + +/* Types of events (possible values in 'ev->type') */ +#define LLC_STATION_EV_TYPE_SIMPLE 1 +#define LLC_STATION_EV_TYPE_CONDITION 2 +#define LLC_STATION_EV_TYPE_PRIM 3 +#define LLC_STATION_EV_TYPE_PDU 4 /* command/response PDU */ +#define LLC_STATION_EV_TYPE_ACK_TMR 5 +#define LLC_STATION_EV_TYPE_RPT_STATUS 6 + +/* Events */ +#define LLC_STATION_EV_ENABLE_WITH_DUP_ADDR_CHECK 1 +#define LLC_STATION_EV_ENABLE_WITHOUT_DUP_ADDR_CHECK 2 +#define LLC_STATION_EV_ACK_TMR_EXP_LT_RETRY_CNT_MAX_RETRY 3 +#define LLC_STATION_EV_ACK_TMR_EXP_EQ_RETRY_CNT_MAX_RETRY 4 +#define LLC_STATION_EV_RX_NULL_DSAP_XID_C 5 +#define LLC_STATION_EV_RX_NULL_DSAP_0_XID_R_XID_R_CNT_EQ 6 +#define LLC_STATION_EV_RX_NULL_DSAP_1_XID_R_XID_R_CNT_EQ 7 +#define LLC_STATION_EV_RX_NULL_DSAP_TEST_C 8 +#define LLC_STATION_EV_DISABLE_REQ 9 + +struct llc_station_state_ev { + u8 type; + u8 prim; + u8 prim_type; + u8 reason; + struct list_head node; /* node in station->ev_q.list */ +}; + +static __inline__ struct llc_station_state_ev * + llc_station_ev(struct sk_buff *skb) +{ + return (struct llc_station_state_ev *)skb->cb; +} + +typedef int (*llc_station_ev_t)(struct sk_buff *skb); + +#define LLC_STATION_STATE_DOWN 1 /* initial state */ +#define LLC_STATION_STATE_DUP_ADDR_CHK 2 +#define LLC_STATION_STATE_UP 3 + +#define LLC_NBR_STATION_STATES 3 /* size of state table */ + +typedef int (*llc_station_action_t)(struct sk_buff *skb); + +/* Station component state table structure */ +struct llc_station_state_trans { + llc_station_ev_t ev; + u8 next_state; + llc_station_action_t *ev_actions; +}; + +struct llc_station_state { + u8 curr_state; + struct llc_station_state_trans **transitions; +}; + +static struct llc_station llc_main_station; + +static int llc_stat_ev_enable_with_dup_addr_check(struct sk_buff *skb) +{ + struct llc_station_state_ev *ev = llc_station_ev(skb); + + return ev->type == LLC_STATION_EV_TYPE_SIMPLE && + ev->prim_type == + LLC_STATION_EV_ENABLE_WITH_DUP_ADDR_CHECK ? 0 : 1; +} + +static int llc_stat_ev_enable_without_dup_addr_check(struct sk_buff *skb) +{ + struct llc_station_state_ev *ev = llc_station_ev(skb); + + return ev->type == LLC_STATION_EV_TYPE_SIMPLE && + ev->prim_type == + LLC_STATION_EV_ENABLE_WITHOUT_DUP_ADDR_CHECK ? 0 : 1; +} + +static int llc_stat_ev_ack_tmr_exp_lt_retry_cnt_max_retry(struct sk_buff *skb) +{ + struct llc_station_state_ev *ev = llc_station_ev(skb); + + return ev->type == LLC_STATION_EV_TYPE_ACK_TMR && + llc_main_station.retry_count < + llc_main_station.maximum_retry ? 0 : 1; +} + +static int llc_stat_ev_ack_tmr_exp_eq_retry_cnt_max_retry(struct sk_buff *skb) +{ + struct llc_station_state_ev *ev = llc_station_ev(skb); + + return ev->type == LLC_STATION_EV_TYPE_ACK_TMR && + llc_main_station.retry_count == + llc_main_station.maximum_retry ? 0 : 1; +} + +static int llc_stat_ev_rx_null_dsap_xid_c(struct sk_buff *skb) +{ + struct llc_station_state_ev *ev = llc_station_ev(skb); + struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); + + return ev->type == LLC_STATION_EV_TYPE_PDU && + LLC_PDU_IS_CMD(pdu) && /* command PDU */ + LLC_PDU_TYPE_IS_U(pdu) && /* U type PDU */ + LLC_U_PDU_CMD(pdu) == LLC_1_PDU_CMD_XID && + !pdu->dsap ? 0 : 1; /* NULL DSAP value */ +} + +static int llc_stat_ev_rx_null_dsap_0_xid_r_xid_r_cnt_eq(struct sk_buff *skb) +{ + struct llc_station_state_ev *ev = llc_station_ev(skb); + struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); + + return ev->type == LLC_STATION_EV_TYPE_PDU && + LLC_PDU_IS_RSP(pdu) && /* response PDU */ + LLC_PDU_TYPE_IS_U(pdu) && /* U type PDU */ + LLC_U_PDU_RSP(pdu) == LLC_1_PDU_CMD_XID && + !pdu->dsap && /* NULL DSAP value */ + !llc_main_station.xid_r_count ? 0 : 1; +} + +static int llc_stat_ev_rx_null_dsap_1_xid_r_xid_r_cnt_eq(struct sk_buff *skb) +{ + struct llc_station_state_ev *ev = llc_station_ev(skb); + struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); + + return ev->type == LLC_STATION_EV_TYPE_PDU && + LLC_PDU_IS_RSP(pdu) && /* response PDU */ + LLC_PDU_TYPE_IS_U(pdu) && /* U type PDU */ + LLC_U_PDU_RSP(pdu) == LLC_1_PDU_CMD_XID && + !pdu->dsap && /* NULL DSAP value */ + llc_main_station.xid_r_count == 1 ? 0 : 1; +} + +static int llc_stat_ev_rx_null_dsap_test_c(struct sk_buff *skb) +{ + struct llc_station_state_ev *ev = llc_station_ev(skb); + struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb); + + return ev->type == LLC_STATION_EV_TYPE_PDU && + LLC_PDU_IS_CMD(pdu) && /* command PDU */ + LLC_PDU_TYPE_IS_U(pdu) && /* U type PDU */ + LLC_U_PDU_CMD(pdu) == LLC_1_PDU_CMD_TEST && + !pdu->dsap ? 0 : 1; /* NULL DSAP */ +} + +static int llc_stat_ev_disable_req(struct sk_buff *skb) +{ + struct llc_station_state_ev *ev = llc_station_ev(skb); + + return ev->type == LLC_STATION_EV_TYPE_PRIM && + ev->prim == LLC_DISABLE_PRIM && + ev->prim_type == LLC_PRIM_TYPE_REQ ? 0 : 1; +} + +/** + * llc_station_send_pdu - queues PDU to send + * @skb: Address of the PDU + * + * Queues a PDU to send to the MAC layer. + */ +static void llc_station_send_pdu(struct sk_buff *skb) +{ + skb_queue_tail(&llc_main_station.mac_pdu_q, skb); + while ((skb = skb_dequeue(&llc_main_station.mac_pdu_q)) != NULL) + if (dev_queue_xmit(skb)) + break; +} + +static int llc_station_ac_start_ack_timer(struct sk_buff *skb) +{ + mod_timer(&llc_main_station.ack_timer, jiffies + LLC_ACK_TIME * HZ); + return 0; +} + +static int llc_station_ac_set_retry_cnt_0(struct sk_buff *skb) +{ + llc_main_station.retry_count = 0; + return 0; +} + +static int llc_station_ac_inc_retry_cnt_by_1(struct sk_buff *skb) +{ + llc_main_station.retry_count++; + return 0; +} + +static int llc_station_ac_set_xid_r_cnt_0(struct sk_buff *skb) +{ + llc_main_station.xid_r_count = 0; + return 0; +} + +static int llc_station_ac_inc_xid_r_cnt_by_1(struct sk_buff *skb) +{ + llc_main_station.xid_r_count++; + return 0; +} + +static int llc_station_ac_send_null_dsap_xid_c(struct sk_buff *skb) +{ + int rc = 1; + struct sk_buff *nskb = llc_alloc_frame(); + + if (!nskb) + goto out; + llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, 0, 0, LLC_PDU_CMD); + llc_pdu_init_as_xid_cmd(nskb, LLC_XID_NULL_CLASS_2, 127); + rc = llc_mac_hdr_init(nskb, llc_station_mac_sa, llc_station_mac_sa); + if (rc) + goto free; + llc_station_send_pdu(nskb); +out: + return rc; +free: + kfree_skb(skb); + goto out; +} + +static int llc_station_ac_send_xid_r(struct sk_buff *skb) +{ + u8 mac_da[ETH_ALEN], dsap; + int rc = 1; + struct sk_buff* nskb = llc_alloc_frame(); + + if (!nskb) + goto out; + rc = 0; + nskb->dev = skb->dev; + llc_pdu_decode_sa(skb, mac_da); + llc_pdu_decode_ssap(skb, &dsap); + llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, 0, dsap, LLC_PDU_RSP); + llc_pdu_init_as_xid_rsp(nskb, LLC_XID_NULL_CLASS_2, 127); + rc = llc_mac_hdr_init(nskb, llc_station_mac_sa, mac_da); + if (rc) + goto free; + llc_station_send_pdu(nskb); +out: + return rc; +free: + kfree_skb(skb); + goto out; +} + +static int llc_station_ac_send_test_r(struct sk_buff *skb) +{ + u8 mac_da[ETH_ALEN], dsap; + int rc = 1; + struct sk_buff *nskb = llc_alloc_frame(); + + if (!nskb) + goto out; + rc = 0; + nskb->dev = skb->dev; + llc_pdu_decode_sa(skb, mac_da); + llc_pdu_decode_ssap(skb, &dsap); + llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, 0, dsap, LLC_PDU_RSP); + llc_pdu_init_as_test_rsp(nskb, skb); + rc = llc_mac_hdr_init(nskb, llc_station_mac_sa, mac_da); + if (rc) + goto free; + llc_station_send_pdu(nskb); +out: + return rc; +free: + kfree_skb(skb); + goto out; +} + +static int llc_station_ac_report_status(struct sk_buff *skb) +{ + return 0; +} + +/* COMMON STATION STATE transitions */ + +/* dummy last-transition indicator; common to all state transition groups + * last entry for this state + * all members are zeros, .bss zeroes it + */ +static struct llc_station_state_trans llc_stat_state_trans_end; + +/* DOWN STATE transitions */ + +/* state transition for LLC_STATION_EV_ENABLE_WITH_DUP_ADDR_CHECK event */ +static llc_station_action_t llc_stat_down_state_actions_1[] = { + [0] = llc_station_ac_start_ack_timer, + [1] = llc_station_ac_set_retry_cnt_0, + [2] = llc_station_ac_set_xid_r_cnt_0, + [3] = llc_station_ac_send_null_dsap_xid_c, + [4] = NULL, +}; + +static struct llc_station_state_trans llc_stat_down_state_trans_1 = { + .ev = llc_stat_ev_enable_with_dup_addr_check, + .next_state = LLC_STATION_STATE_DUP_ADDR_CHK, + .ev_actions = llc_stat_down_state_actions_1, +}; + +/* state transition for LLC_STATION_EV_ENABLE_WITHOUT_DUP_ADDR_CHECK event */ +static llc_station_action_t llc_stat_down_state_actions_2[] = { + [0] = llc_station_ac_report_status, /* STATION UP */ + [1] = NULL, +}; + +static struct llc_station_state_trans llc_stat_down_state_trans_2 = { + .ev = llc_stat_ev_enable_without_dup_addr_check, + .next_state = LLC_STATION_STATE_UP, + .ev_actions = llc_stat_down_state_actions_2, +}; + +/* array of pointers; one to each transition */ +static struct llc_station_state_trans *llc_stat_dwn_state_trans[] = { + [0] = &llc_stat_down_state_trans_1, + [1] = &llc_stat_down_state_trans_2, + [2] = &llc_stat_state_trans_end, +}; + +/* UP STATE transitions */ +/* state transition for LLC_STATION_EV_DISABLE_REQ event */ +static llc_station_action_t llc_stat_up_state_actions_1[] = { + [0] = llc_station_ac_report_status, /* STATION DOWN */ + [1] = NULL, +}; + +static struct llc_station_state_trans llc_stat_up_state_trans_1 = { + .ev = llc_stat_ev_disable_req, + .next_state = LLC_STATION_STATE_DOWN, + .ev_actions = llc_stat_up_state_actions_1, +}; + +/* state transition for LLC_STATION_EV_RX_NULL_DSAP_XID_C event */ +static llc_station_action_t llc_stat_up_state_actions_2[] = { + [0] = llc_station_ac_send_xid_r, + [1] = NULL, +}; + +static struct llc_station_state_trans llc_stat_up_state_trans_2 = { + .ev = llc_stat_ev_rx_null_dsap_xid_c, + .next_state = LLC_STATION_STATE_UP, + .ev_actions = llc_stat_up_state_actions_2, +}; + +/* state transition for LLC_STATION_EV_RX_NULL_DSAP_TEST_C event */ +static llc_station_action_t llc_stat_up_state_actions_3[] = { + [0] = llc_station_ac_send_test_r, + [1] = NULL, +}; + +static struct llc_station_state_trans llc_stat_up_state_trans_3 = { + .ev = llc_stat_ev_rx_null_dsap_test_c, + .next_state = LLC_STATION_STATE_UP, + .ev_actions = llc_stat_up_state_actions_3, +}; + +/* array of pointers; one to each transition */ +static struct llc_station_state_trans *llc_stat_up_state_trans [] = { + [0] = &llc_stat_up_state_trans_1, + [1] = &llc_stat_up_state_trans_2, + [2] = &llc_stat_up_state_trans_3, + [3] = &llc_stat_state_trans_end, +}; + +/* DUP ADDR CHK STATE transitions */ +/* state transition for LLC_STATION_EV_RX_NULL_DSAP_0_XID_R_XID_R_CNT_EQ + * event + */ +static llc_station_action_t llc_stat_dupaddr_state_actions_1[] = { + [0] = llc_station_ac_inc_xid_r_cnt_by_1, + [1] = NULL, +}; + +static struct llc_station_state_trans llc_stat_dupaddr_state_trans_1 = { + .ev = llc_stat_ev_rx_null_dsap_0_xid_r_xid_r_cnt_eq, + .next_state = LLC_STATION_STATE_DUP_ADDR_CHK, + .ev_actions = llc_stat_dupaddr_state_actions_1, +}; + +/* state transition for LLC_STATION_EV_RX_NULL_DSAP_1_XID_R_XID_R_CNT_EQ + * event + */ +static llc_station_action_t llc_stat_dupaddr_state_actions_2[] = { + [0] = llc_station_ac_report_status, /* DUPLICATE ADDRESS FOUND */ + [1] = NULL, +}; + +static struct llc_station_state_trans llc_stat_dupaddr_state_trans_2 = { + .ev = llc_stat_ev_rx_null_dsap_1_xid_r_xid_r_cnt_eq, + .next_state = LLC_STATION_STATE_DOWN, + .ev_actions = llc_stat_dupaddr_state_actions_2, +}; + +/* state transition for LLC_STATION_EV_RX_NULL_DSAP_XID_C event */ +static llc_station_action_t llc_stat_dupaddr_state_actions_3[] = { + [0] = llc_station_ac_send_xid_r, + [1] = NULL, +}; + +static struct llc_station_state_trans llc_stat_dupaddr_state_trans_3 = { + .ev = llc_stat_ev_rx_null_dsap_xid_c, + .next_state = LLC_STATION_STATE_DUP_ADDR_CHK, + .ev_actions = llc_stat_dupaddr_state_actions_3, +}; + +/* state transition for LLC_STATION_EV_ACK_TMR_EXP_LT_RETRY_CNT_MAX_RETRY + * event + */ +static llc_station_action_t llc_stat_dupaddr_state_actions_4[] = { + [0] = llc_station_ac_start_ack_timer, + [1] = llc_station_ac_inc_retry_cnt_by_1, + [2] = llc_station_ac_set_xid_r_cnt_0, + [3] = llc_station_ac_send_null_dsap_xid_c, + [4] = NULL, +}; + +static struct llc_station_state_trans llc_stat_dupaddr_state_trans_4 = { + .ev = llc_stat_ev_ack_tmr_exp_lt_retry_cnt_max_retry, + .next_state = LLC_STATION_STATE_DUP_ADDR_CHK, + .ev_actions = llc_stat_dupaddr_state_actions_4, +}; + +/* state transition for LLC_STATION_EV_ACK_TMR_EXP_EQ_RETRY_CNT_MAX_RETRY + * event + */ +static llc_station_action_t llc_stat_dupaddr_state_actions_5[] = { + [0] = llc_station_ac_report_status, /* STATION UP */ + [1] = NULL, +}; + +static struct llc_station_state_trans llc_stat_dupaddr_state_trans_5 = { + .ev = llc_stat_ev_ack_tmr_exp_eq_retry_cnt_max_retry, + .next_state = LLC_STATION_STATE_UP, + .ev_actions = llc_stat_dupaddr_state_actions_5, +}; + +/* state transition for LLC_STATION_EV_DISABLE_REQ event */ +static llc_station_action_t llc_stat_dupaddr_state_actions_6[] = { + [0] = llc_station_ac_report_status, /* STATION DOWN */ + [1] = NULL, +}; + +static struct llc_station_state_trans llc_stat_dupaddr_state_trans_6 = { + .ev = llc_stat_ev_disable_req, + .next_state = LLC_STATION_STATE_DOWN, + .ev_actions = llc_stat_dupaddr_state_actions_6, +}; + +/* array of pointers; one to each transition */ +static struct llc_station_state_trans *llc_stat_dupaddr_state_trans[] = { + [0] = &llc_stat_dupaddr_state_trans_6, /* Request */ + [1] = &llc_stat_dupaddr_state_trans_4, /* Timer */ + [2] = &llc_stat_dupaddr_state_trans_5, + [3] = &llc_stat_dupaddr_state_trans_1, /* Receive frame */ + [4] = &llc_stat_dupaddr_state_trans_2, + [5] = &llc_stat_dupaddr_state_trans_3, + [6] = &llc_stat_state_trans_end, +}; + +static struct llc_station_state + llc_station_state_table[LLC_NBR_STATION_STATES] = { + [LLC_STATION_STATE_DOWN - 1] = { + .curr_state = LLC_STATION_STATE_DOWN, + .transitions = llc_stat_dwn_state_trans, + }, + [LLC_STATION_STATE_DUP_ADDR_CHK - 1] = { + .curr_state = LLC_STATION_STATE_DUP_ADDR_CHK, + .transitions = llc_stat_dupaddr_state_trans, + }, + [LLC_STATION_STATE_UP - 1] = { + .curr_state = LLC_STATION_STATE_UP, + .transitions = llc_stat_up_state_trans, + }, +}; + +/** + * llc_exec_station_trans_actions - executes actions for transition + * @trans: Address of the transition + * @skb: Address of the event that caused the transition + * + * Executes actions of a transition of the station state machine. Returns + * 0 if all actions complete successfully, nonzero otherwise. + */ +static u16 llc_exec_station_trans_actions(struct llc_station_state_trans *trans, + struct sk_buff *skb) +{ + u16 rc = 0; + llc_station_action_t *next_action = trans->ev_actions; + + for (; next_action && *next_action; next_action++) + if ((*next_action)(skb)) + rc = 1; + return rc; +} + +/** + * llc_find_station_trans - finds transition for this event + * @skb: Address of the event + * + * Search thru events of the current state of the station until list + * exhausted or it's obvious that the event is not valid for the current + * state. Returns the address of the transition if cound, %NULL otherwise. + */ +static struct llc_station_state_trans * + llc_find_station_trans(struct sk_buff *skb) +{ + int i = 0; + struct llc_station_state_trans *rc = NULL; + struct llc_station_state_trans **next_trans; + struct llc_station_state *curr_state = + &llc_station_state_table[llc_main_station.state - 1]; + + for (next_trans = curr_state->transitions; next_trans[i]->ev; i++) + if (!next_trans[i]->ev(skb)) { + rc = next_trans[i]; + break; + } + return rc; +} + +/** + * llc_station_free_ev - frees an event + * @skb: Address of the event + * + * Frees an event. + */ +static void llc_station_free_ev(struct sk_buff *skb) +{ + struct llc_station_state_ev *ev = llc_station_ev(skb); + + if (ev->type == LLC_STATION_EV_TYPE_PDU) + kfree_skb(skb); +} + +/** + * llc_station_next_state - processes event and goes to the next state + * @skb: Address of the event + * + * Processes an event, executes any transitions related to that event and + * updates the state of the station. + */ +static u16 llc_station_next_state(struct sk_buff *skb) +{ + u16 rc = 1; + struct llc_station_state_trans *trans; + + if (llc_main_station.state > LLC_NBR_STATION_STATES) + goto out; + trans = llc_find_station_trans(skb); + if (trans) { + /* got the state to which we next transition; perform the + * actions associated with this transition before actually + * transitioning to the next state + */ + rc = llc_exec_station_trans_actions(trans, skb); + if (!rc) + /* transition station to next state if all actions + * execute successfully; done; wait for next event + */ + llc_main_station.state = trans->next_state; + } else + /* event not recognized in current state; re-queue it for + * processing again at a later time; return failure + */ + rc = 0; +out: + llc_station_free_ev(skb); + return rc; +} + +/** + * llc_station_service_events - service events in the queue + * + * Get an event from the station event queue (if any); attempt to service + * the event; if event serviced, get the next event (if any) on the event + * queue; if event not service, re-queue the event on the event queue and + * attempt to service the next event; when serviced all events in queue, + * finished; if don't transition to different state, just service all + * events once; if transition to new state, service all events again. + * Caller must hold llc_main_station.ev_q.lock. + */ +static void llc_station_service_events(void) +{ + struct sk_buff *skb; + + while ((skb = skb_dequeue(&llc_main_station.ev_q.list)) != NULL) + llc_station_next_state(skb); +} + +/** + * llc_station_state_process: queue event and try to process queue. + * @skb: Address of the event + * + * Queues an event (on the station event queue) for handling by the + * station state machine and attempts to process any queued-up events. + */ +void llc_station_state_process(struct sk_buff *skb) +{ + spin_lock_bh(&llc_main_station.ev_q.lock); + skb_queue_tail(&llc_main_station.ev_q.list, skb); + llc_station_service_events(); + spin_unlock_bh(&llc_main_station.ev_q.lock); +} + +static void llc_station_ack_tmr_cb(unsigned long timeout_data) +{ + struct sk_buff *skb = alloc_skb(0, GFP_ATOMIC); + + if (skb) { + struct llc_station_state_ev *ev = llc_station_ev(skb); + + ev->type = LLC_STATION_EV_TYPE_ACK_TMR; + llc_station_state_process(skb); + } +} + +/* + * llc_station_rcv - send received pdu to the station state machine + * @skb: received frame. + * + * Sends data unit to station state machine. + */ +static void llc_station_rcv(struct sk_buff *skb) +{ + struct llc_station_state_ev *ev = llc_station_ev(skb); + + ev->type = LLC_STATION_EV_TYPE_PDU; + ev->reason = 0; + llc_station_state_process(skb); +} + +int __init llc_station_init(void) +{ + u16 rc = -ENOBUFS; + struct sk_buff *skb; + struct llc_station_state_ev *ev; + + skb_queue_head_init(&llc_main_station.mac_pdu_q); + skb_queue_head_init(&llc_main_station.ev_q.list); + spin_lock_init(&llc_main_station.ev_q.lock); + init_timer(&llc_main_station.ack_timer); + llc_main_station.ack_timer.data = (unsigned long)&llc_main_station; + llc_main_station.ack_timer.function = llc_station_ack_tmr_cb; + + skb = alloc_skb(0, GFP_ATOMIC); + if (!skb) + goto out; + rc = 0; + llc_set_station_handler(llc_station_rcv); + ev = llc_station_ev(skb); + memset(ev, 0, sizeof(*ev)); + llc_main_station.ack_timer.expires = jiffies + 3 * HZ; + llc_main_station.maximum_retry = 1; + llc_main_station.state = LLC_STATION_STATE_DOWN; + ev->type = LLC_STATION_EV_TYPE_SIMPLE; + ev->prim_type = LLC_STATION_EV_ENABLE_WITHOUT_DUP_ADDR_CHECK; + rc = llc_station_next_state(skb); +out: + return rc; +} + +void __exit llc_station_exit(void) +{ + llc_set_station_handler(NULL); +} diff -Nru a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c --- a/net/netlink/af_netlink.c Mon Sep 22 00:30:21 2003 +++ b/net/netlink/af_netlink.c Mon Sep 22 00:30:21 2003 @@ -988,7 +988,7 @@ static void *netlink_seq_start(struct seq_file *seq, loff_t *pos) { read_lock(&nl_table_lock); - return *pos ? netlink_seq_socket_idx(seq, *pos - 1) : (void *) 1; + return *pos ? netlink_seq_socket_idx(seq, *pos - 1) : SEQ_START_TOKEN; } static void *netlink_seq_next(struct seq_file *seq, void *v, loff_t *pos) @@ -997,7 +997,7 @@ ++*pos; - if (v == (void *) 1) + if (v == SEQ_START_TOKEN) return netlink_seq_socket_idx(seq, 0); s = sk_next(v); @@ -1023,7 +1023,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v) { - if (v == (void *)1) + if (v == SEQ_START_TOKEN) seq_puts(seq, "sk Eth Pid Groups " "Rmem Wmem Dump Locks\n"); diff -Nru a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c --- a/net/netrom/af_netrom.c Mon Sep 22 00:30:21 2003 +++ b/net/netrom/af_netrom.c Mon Sep 22 00:30:21 2003 @@ -62,6 +62,7 @@ static spinlock_t nr_list_lock = SPIN_LOCK_UNLOCKED; static struct proto_ops nr_proto_ops; +void nr_init_timers(struct sock *sk); static struct sock *nr_alloc_sock(void) { @@ -279,17 +280,12 @@ kfree_skb(skb); } - while ((skb = skb_dequeue(&sk->sk_write_queue)) != NULL) { - kfree_skb(skb); - } if (atomic_read(&sk->sk_wmem_alloc) || atomic_read(&sk->sk_rmem_alloc)) { /* Defer: outstanding buffers */ - init_timer(&sk->sk_timer); - sk->sk_timer.expires = jiffies + 2 * HZ; sk->sk_timer.function = nr_destroy_timer; - sk->sk_timer.data = (unsigned long)sk; + sk->sk_timer.expires = jiffies + 2 * HZ; add_timer(&sk->sk_timer); } else sock_put(sk); @@ -442,10 +438,7 @@ skb_queue_head_init(&nr->reseq_queue); skb_queue_head_init(&nr->frag_queue); - init_timer(&nr->t1timer); - init_timer(&nr->t2timer); - init_timer(&nr->t4timer); - init_timer(&nr->idletimer); + nr_init_timers(sk); nr->t1 = sysctl_netrom_transport_timeout; nr->t2 = sysctl_netrom_transport_acknowledge_delay; @@ -491,10 +484,7 @@ skb_queue_head_init(&nr->reseq_queue); skb_queue_head_init(&nr->frag_queue); - init_timer(&nr->t1timer); - init_timer(&nr->t2timer); - init_timer(&nr->t4timer); - init_timer(&nr->idletimer); + nr_init_timers(sk); onr = nr_sk(osk); @@ -1241,8 +1231,6 @@ #ifdef CONFIG_PROC_FS -/* Marker for header entry */ -#define NETROM_PROC_START ((void *)1) static void *nr_info_start(struct seq_file *seq, loff_t *pos) { struct sock *s; @@ -1251,7 +1239,7 @@ spin_lock_bh(&nr_list_lock); if (*pos == 0) - return NETROM_PROC_START; + return SEQ_START_TOKEN; sk_for_each(s, node, &nr_list) { if (i == *pos) @@ -1265,7 +1253,7 @@ { ++*pos; - return (v == NETROM_PROC_START) ? sk_head(&nr_list) + return (v == SEQ_START_TOKEN) ? sk_head(&nr_list) : sk_next((struct sock *)v); } @@ -1281,7 +1269,7 @@ nr_cb *nr; const char *devname; - if (v == NETROM_PROC_START) + if (v == SEQ_START_TOKEN) seq_puts(seq, "user_addr dest_node src_node dev my your st vs vr va t1 t2 t4 idle n2 wnd Snd-Q Rcv-Q inode\n"); diff -Nru a/net/netrom/nr_loopback.c b/net/netrom/nr_loopback.c --- a/net/netrom/nr_loopback.c Mon Sep 22 00:30:24 2003 +++ b/net/netrom/nr_loopback.c Mon Sep 22 00:30:24 2003 @@ -14,19 +14,17 @@ #include #include -static struct sk_buff_head loopback_queue; -static struct timer_list loopback_timer; +static void nr_loopback_timer(unsigned long); -static void nr_set_loopback_timer(void); +static struct sk_buff_head loopback_queue; +static struct timer_list loopback_timer = TIMER_INITIALIZER(nr_loopback_timer, 0, 0); -void nr_loopback_init(void) +void __init nr_loopback_init(void) { skb_queue_head_init(&loopback_queue); - - init_timer(&loopback_timer); } -static int nr_loopback_running(void) +static inline int nr_loopback_running(void) { return timer_pending(&loopback_timer); } @@ -42,26 +40,13 @@ skb_queue_tail(&loopback_queue, skbn); if (!nr_loopback_running()) - nr_set_loopback_timer(); + mod_timer(&loopback_timer, jiffies + 10); } kfree_skb(skb); return 1; } -static void nr_loopback_timer(unsigned long); - -static void nr_set_loopback_timer(void) -{ - del_timer(&loopback_timer); - - loopback_timer.data = 0; - loopback_timer.function = &nr_loopback_timer; - loopback_timer.expires = jiffies + 10; - - add_timer(&loopback_timer); -} - static void nr_loopback_timer(unsigned long param) { struct sk_buff *skb; @@ -80,12 +65,12 @@ dev_put(dev); if (!skb_queue_empty(&loopback_queue) && !nr_loopback_running()) - nr_set_loopback_timer(); + mod_timer(&loopback_timer, jiffies + 10); } } void __exit nr_loopback_clear(void) { - del_timer(&loopback_timer); + del_timer_sync(&loopback_timer); skb_queue_purge(&loopback_queue); } diff -Nru a/net/netrom/nr_route.c b/net/netrom/nr_route.c --- a/net/netrom/nr_route.c Mon Sep 22 00:30:25 2003 +++ b/net/netrom/nr_route.c Mon Sep 22 00:30:25 2003 @@ -841,7 +841,6 @@ } #ifdef CONFIG_PROC_FS -#define NETROM_PROC_START ((void *) 1) static void *nr_node_start(struct seq_file *seq, loff_t *pos) { @@ -851,7 +850,7 @@ spin_lock_bh(&nr_node_list_lock); if (*pos == 0) - return NETROM_PROC_START; + return SEQ_START_TOKEN; nr_node_for_each(nr_node, node, &nr_node_list) { if (i == *pos) @@ -867,7 +866,7 @@ struct hlist_node *node; ++*pos; - node = (v == NETROM_PROC_START) + node = (v == SEQ_START_TOKEN) ? nr_node_list.first : ((struct nr_node *)v)->node_node.next; @@ -883,7 +882,7 @@ { int i; - if (v == NETROM_PROC_START) + if (v == SEQ_START_TOKEN) seq_puts(seq, "callsign mnemonic w n qual obs neigh qual obs neigh qual obs neigh\n"); else { @@ -936,7 +935,7 @@ spin_lock_bh(&nr_neigh_list_lock); if (*pos == 0) - return NETROM_PROC_START; + return SEQ_START_TOKEN; nr_neigh_for_each(nr_neigh, node, &nr_neigh_list) { if (i == *pos) @@ -950,7 +949,7 @@ struct hlist_node *node; ++*pos; - node = (v == NETROM_PROC_START) + node = (v == SEQ_START_TOKEN) ? nr_neigh_list.first : ((struct nr_neigh *)v)->neigh_node.next; @@ -966,7 +965,7 @@ { int i; - if (v == NETROM_PROC_START) + if (v == SEQ_START_TOKEN) seq_puts(seq, "addr callsign dev qual lock count failed digipeaters\n"); else { struct nr_neigh *nr_neigh = v; diff -Nru a/net/netrom/nr_timer.c b/net/netrom/nr_timer.c --- a/net/netrom/nr_timer.c Mon Sep 22 00:30:23 2003 +++ b/net/netrom/nr_timer.c Mon Sep 22 00:30:23 2003 @@ -36,69 +36,63 @@ static void nr_t4timer_expiry(unsigned long); static void nr_idletimer_expiry(unsigned long); -void nr_start_t1timer(struct sock *sk) +void nr_init_timers(struct sock *sk) { nr_cb *nr = nr_sk(sk); - del_timer(&nr->t1timer); - + init_timer(&nr->t1timer); nr->t1timer.data = (unsigned long)sk; nr->t1timer.function = &nr_t1timer_expiry; - nr->t1timer.expires = jiffies + nr->t1; + + init_timer(&nr->t2timer); + nr->t2timer.data = (unsigned long)sk; + nr->t2timer.function = &nr_t2timer_expiry; + + init_timer(&nr->t4timer); + nr->t4timer.data = (unsigned long)sk; + nr->t4timer.function = &nr_t4timer_expiry; - add_timer(&nr->t1timer); + init_timer(&nr->idletimer); + nr->idletimer.data = (unsigned long)sk; + nr->idletimer.function = &nr_idletimer_expiry; + + /* initialized by sock_init_data */ + sk->sk_timer.data = (unsigned long)sk; + sk->sk_timer.function = &nr_heartbeat_expiry; } -void nr_start_t2timer(struct sock *sk) +void nr_start_t1timer(struct sock *sk) { nr_cb *nr = nr_sk(sk); - del_timer(&nr->t2timer); + mod_timer(&nr->t1timer, jiffies + nr->t1); +} - nr->t2timer.data = (unsigned long)sk; - nr->t2timer.function = &nr_t2timer_expiry; - nr->t2timer.expires = jiffies + nr->t2; +void nr_start_t2timer(struct sock *sk) +{ + nr_cb *nr = nr_sk(sk); - add_timer(&nr->t2timer); + mod_timer(&nr->t2timer, jiffies + nr->t2); } void nr_start_t4timer(struct sock *sk) { nr_cb *nr = nr_sk(sk); - del_timer(&nr->t4timer); - - nr->t4timer.data = (unsigned long)sk; - nr->t4timer.function = &nr_t4timer_expiry; - nr->t4timer.expires = jiffies + nr->t4; - - add_timer(&nr->t4timer); + mod_timer(&nr->t4timer, jiffies + nr->t4); } void nr_start_idletimer(struct sock *sk) { nr_cb *nr = nr_sk(sk); - del_timer(&nr->idletimer); - - if (nr->idle > 0) { - nr->idletimer.data = (unsigned long)sk; - nr->idletimer.function = &nr_idletimer_expiry; - nr->idletimer.expires = jiffies + nr->idle; - - add_timer(&nr->idletimer); - } + if (nr->idle > 0) + mod_timer(&nr->idletimer, jiffies + nr->idle); } void nr_start_heartbeat(struct sock *sk) { - del_timer(&sk->sk_timer); - - sk->sk_timer.data = (unsigned long)sk; - sk->sk_timer.function = &nr_heartbeat_expiry; - sk->sk_timer.expires = jiffies + 5 * HZ; - - add_timer(&sk->sk_timer); + mod_timer(&sk->sk_timer, jiffies + 5 * HZ); } void nr_stop_t1timer(struct sock *sk) diff -Nru a/net/netsyms.c b/net/netsyms.c --- a/net/netsyms.c Mon Sep 22 00:30:21 2003 +++ b/net/netsyms.c Mon Sep 22 00:30:21 2003 @@ -511,7 +511,7 @@ EXPORT_SYMBOL(dev_add_pack); EXPORT_SYMBOL(dev_remove_pack); EXPORT_SYMBOL(__dev_remove_pack); -EXPORT_SYMBOL(dev_get); +EXPORT_SYMBOL(__dev_get); EXPORT_SYMBOL(dev_alloc); EXPORT_SYMBOL(dev_alloc_name); EXPORT_SYMBOL(__netdev_watchdog_up); diff -Nru a/net/packet/af_packet.c b/net/packet/af_packet.c --- a/net/packet/af_packet.c Mon Sep 22 00:30:23 2003 +++ b/net/packet/af_packet.c Mon Sep 22 00:30:23 2003 @@ -381,6 +381,23 @@ } #endif +static inline unsigned run_filter(struct sk_buff *skb, struct sock *sk, unsigned res) +{ + struct sk_filter *filter; + + bh_lock_sock(sk); + filter = sk->sk_filter; + /* + * Our caller already checked that filter != NULL but we need to + * verify that under bh_lock_sock() to be safe + */ + if (likely(filter != NULL)) + res = sk_run_filter(skb, filter->insns, filter->len); + bh_unlock_sock(sk); + + return res; +} + /* This function makes lazy skb cloning in hope that most of packets are discarded by BPF. @@ -429,15 +446,7 @@ snaplen = skb->len; if (sk->sk_filter) { - unsigned res = snaplen; - struct sk_filter *filter; - - bh_lock_sock(sk); - if ((filter = sk->sk_filter) != NULL) - res = sk_run_filter(skb, sk->sk_filter->insns, - sk->sk_filter->len); - bh_unlock_sock(sk); - + unsigned res = run_filter(skb, sk, snaplen); if (res == 0) goto drop_n_restore; if (snaplen > res) @@ -533,15 +542,7 @@ snaplen = skb->len; if (sk->sk_filter) { - unsigned res = snaplen; - struct sk_filter *filter; - - bh_lock_sock(sk); - if ((filter = sk->sk_filter) != NULL) - res = sk_run_filter(skb, sk->sk_filter->insns, - sk->sk_filter->len); - bh_unlock_sock(sk); - + unsigned res = run_filter(skb, sk, snaplen); if (res == 0) goto drop_n_restore; if (snaplen > res) diff -Nru a/net/rose/af_rose.c b/net/rose/af_rose.c --- a/net/rose/af_rose.c Mon Sep 22 00:30:21 2003 +++ b/net/rose/af_rose.c Mon Sep 22 00:30:21 2003 @@ -1344,7 +1344,7 @@ spin_lock_bh(&rose_list_lock); if (*pos == 0) - return ROSE_PROC_START; + return SEQ_START_TOKEN; i = 1; sk_for_each(s, node, &rose_list) { @@ -1359,7 +1359,7 @@ { ++*pos; - return (v == ROSE_PROC_START) ? sk_head(&rose_list) + return (v == SEQ_START_TOKEN) ? sk_head(&rose_list) : sk_next((struct sock *)v); } @@ -1370,7 +1370,7 @@ static int rose_info_show(struct seq_file *seq, void *v) { - if (v == ROSE_PROC_START) + if (v == SEQ_START_TOKEN) seq_puts(seq, "dest_addr dest_call src_addr src_call dev lci neigh st vs vr va t t1 t2 t3 hb idle Snd-Q Rcv-Q inode\n"); diff -Nru a/net/rose/rose_route.c b/net/rose/rose_route.c --- a/net/rose/rose_route.c Mon Sep 22 00:30:25 2003 +++ b/net/rose/rose_route.c Mon Sep 22 00:30:25 2003 @@ -1076,7 +1076,7 @@ spin_lock_bh(&rose_neigh_list_lock); if (*pos == 0) - return ROSE_PROC_START; + return SEQ_START_TOKEN; for (rose_node = rose_node_list; rose_node && i < *pos; rose_node = rose_node->next, ++i); @@ -1088,7 +1088,7 @@ { ++*pos; - return (v == ROSE_PROC_START) ? rose_node_list + return (v == SEQ_START_TOKEN) ? rose_node_list : ((struct rose_node *)v)->next; } @@ -1101,7 +1101,7 @@ { int i; - if (v == ROSE_PROC_START) + if (v == SEQ_START_TOKEN) seq_puts(seq, "address mask n neigh neigh neigh\n"); else { const struct rose_node *rose_node = v; @@ -1152,7 +1152,7 @@ spin_lock_bh(&rose_neigh_list_lock); if (*pos == 0) - return ROSE_PROC_START; + return SEQ_START_TOKEN; for (rose_neigh = rose_neigh_list; rose_neigh && i < *pos; rose_neigh = rose_neigh->next, ++i); @@ -1164,7 +1164,7 @@ { ++*pos; - return (v == ROSE_PROC_START) ? rose_neigh_list + return (v == SEQ_START_TOKEN) ? rose_neigh_list : ((struct rose_neigh *)v)->next; } @@ -1177,7 +1177,7 @@ { int i; - if (v == ROSE_PROC_START) + if (v == SEQ_START_TOKEN) seq_puts(seq, "addr callsign dev count use mode restart t0 tf digipeaters\n"); else { @@ -1234,7 +1234,7 @@ spin_lock_bh(&rose_route_list_lock); if (*pos == 0) - return ROSE_PROC_START; + return SEQ_START_TOKEN; for (rose_route = rose_route_list; rose_route && i < *pos; rose_route = rose_route->next, ++i); @@ -1246,7 +1246,7 @@ { ++*pos; - return (v == ROSE_PROC_START) ? rose_route_list + return (v == SEQ_START_TOKEN) ? rose_route_list : ((struct rose_route *)v)->next; } @@ -1257,7 +1257,7 @@ static int rose_route_show(struct seq_file *seq, void *v) { - if (v == ROSE_PROC_START) + if (v == SEQ_START_TOKEN) seq_puts(seq, "lci address callsign neigh <-> lci address callsign neigh\n"); else { diff -Nru a/net/rxrpc/Makefile b/net/rxrpc/Makefile --- a/net/rxrpc/Makefile Mon Sep 22 00:30:22 2003 +++ b/net/rxrpc/Makefile Mon Sep 22 00:30:22 2003 @@ -2,7 +2,9 @@ # Makefile for Linux kernel Rx RPC # -rxrpc-y := \ +#CFLAGS += -finstrument-functions + +rxrpc-objs := \ call.o \ connection.o \ krxiod.o \ @@ -13,7 +15,11 @@ rxrpc_syms.o \ transport.o -rxrpc-$(CONFIG_PROC_FS) += proc.o -rxrpc-$(CONFIG_SYSCTL) += sysctl.o +ifeq ($(CONFIG_PROC_FS),y) +rxrpc-objs += proc.o +endif +ifeq ($(CONFIG_SYSCTL),y) +rxrpc-objs += sysctl.o +endif obj-$(CONFIG_RXRPC) := rxrpc.o diff -Nru a/net/rxrpc/call.c b/net/rxrpc/call.c --- a/net/rxrpc/call.c Mon Sep 22 00:30:24 2003 +++ b/net/rxrpc/call.c Mon Sep 22 00:30:24 2003 @@ -53,20 +53,25 @@ }; const char *rxrpc_pkts[] = { - "?00", "data", "ack", "busy", "abort", "ackall", "chall", "resp", "debug", + "?00", + "data", "ack", "busy", "abort", "ackall", "chall", "resp", "debug", "?09", "?10", "?11", "?12", "?13", "?14", "?15" }; const char *rxrpc_acks[] = { - "---", "REQ", "DUP", "SEQ", "WIN", "MEM", "PNG", "PNR", "DLY", "IDL", "-?-" + "---", "REQ", "DUP", "SEQ", "WIN", "MEM", "PNG", "PNR", "DLY", "IDL", + "-?-" }; static const char _acktype[] = "NA-"; static void rxrpc_call_receive_packet(struct rxrpc_call *call); -static void rxrpc_call_receive_data_packet(struct rxrpc_call *call, struct rxrpc_message *msg); -static void rxrpc_call_receive_ack_packet(struct rxrpc_call *call, struct rxrpc_message *msg); -static void rxrpc_call_definitively_ACK(struct rxrpc_call *call, rxrpc_seq_t higest); +static void rxrpc_call_receive_data_packet(struct rxrpc_call *call, + struct rxrpc_message *msg); +static void rxrpc_call_receive_ack_packet(struct rxrpc_call *call, + struct rxrpc_message *msg); +static void rxrpc_call_definitively_ACK(struct rxrpc_call *call, + rxrpc_seq_t higest); static void rxrpc_call_resend(struct rxrpc_call *call, rxrpc_seq_t highest); static int __rxrpc_call_read_data(struct rxrpc_call *call); @@ -75,7 +80,7 @@ rxrpc_seq_t seq, size_t count); #define _state(call) \ - _debug("[[[ state %s ]]]",rxrpc_call_states[call->app_call_state]); + _debug("[[[ state %s ]]]", rxrpc_call_states[call->app_call_state]); static void rxrpc_call_default_attn_func(struct rxrpc_call *call) { @@ -103,7 +108,7 @@ { struct rxrpc_call *call = (struct rxrpc_call *) _call; - _debug("ACKS TIMEOUT %05lu",jiffies - call->cjif); + _debug("ACKS TIMEOUT %05lu", jiffies - call->cjif); call->flags |= RXRPC_CALL_ACKS_TIMO; rxrpc_krxiod_queue_call(call); @@ -113,7 +118,7 @@ { struct rxrpc_call *call = (struct rxrpc_call *) _call; - _debug("RCV TIMEOUT %05lu",jiffies - call->cjif); + _debug("RCV TIMEOUT %05lu", jiffies - call->cjif); call->flags |= RXRPC_CALL_RCV_TIMO; rxrpc_krxiod_queue_call(call); @@ -133,15 +138,18 @@ /* * calculate a timeout based on an RTT value */ -static inline unsigned long __rxrpc_rtt_based_timeout(struct rxrpc_call *call, unsigned long val) +static inline unsigned long __rxrpc_rtt_based_timeout(struct rxrpc_call *call, + unsigned long val) { - unsigned long expiry = call->conn->peer->rtt / (1000000/HZ); + unsigned long expiry = call->conn->peer->rtt / (1000000 / HZ); expiry += 10; - if (expiryHZ) expiry = HZ; + if (expiry < HZ / 25) + expiry = HZ / 25; + if (expiry > HZ) + expiry = HZ; - _leave(" = %lu jiffies",expiry); + _leave(" = %lu jiffies", expiry); return jiffies + expiry; } /* end __rxrpc_rtt_based_timeout() */ @@ -154,7 +162,7 @@ { struct rxrpc_call *call; - _enter("%p",conn); + _enter("%p", conn); /* allocate and initialise a call record */ call = (struct rxrpc_call *) get_zeroed_page(GFP_KERNEL); @@ -163,7 +171,7 @@ return -ENOMEM; } - atomic_set(&call->usage,1); + atomic_set(&call->usage, 1); init_waitqueue_head(&call->waitq); spin_lock_init(&call->lock); @@ -200,7 +208,7 @@ call->cjif = jiffies; - _leave(" = 0 (%p)",call); + _leave(" = 0 (%p)", call); *_call = call; @@ -217,34 +225,37 @@ rxrpc_call_aemap_func_t aemap, struct rxrpc_call **_call) { - DECLARE_WAITQUEUE(myself,current); + DECLARE_WAITQUEUE(myself, current); struct rxrpc_call *call; int ret, cix, loop; - _enter("%p",conn); + _enter("%p", conn); /* allocate and initialise a call record */ - ret = __rxrpc_create_call(conn,&call); - if (ret<0) { - _leave(" = %d",ret); + ret = __rxrpc_create_call(conn, &call); + if (ret < 0) { + _leave(" = %d", ret); return ret; } call->app_call_state = RXRPC_CSTATE_CLNT_SND_ARGS; - if (attn) call->app_attn_func = attn; - if (error) call->app_error_func = error; - if (aemap) call->app_aemap_func = aemap; + if (attn) + call->app_attn_func = attn; + if (error) + call->app_error_func = error; + if (aemap) + call->app_aemap_func = aemap; _state(call); spin_lock(&conn->lock); set_current_state(TASK_INTERRUPTIBLE); - add_wait_queue(&conn->chanwait,&myself); + add_wait_queue(&conn->chanwait, &myself); try_again: /* try to find an unused channel */ - for (cix=0; cix<4; cix++) + for (cix = 0; cix < 4; cix++) if (!conn->channels[cix]) goto obtained_chan; @@ -263,14 +274,15 @@ /* got a channel - now attach to the connection */ obtained_chan: - remove_wait_queue(&conn->chanwait,&myself); + remove_wait_queue(&conn->chanwait, &myself); set_current_state(TASK_RUNNING); /* concoct a unique call number */ next_callid: call->call_id = htonl(++conn->call_counter); - for (loop=0; loop<4; loop++) - if (conn->channels[loop] && conn->channels[loop]->call_id==call->call_id) + for (loop = 0; loop < 4; loop++) + if (conn->channels[loop] && + conn->channels[loop]->call_id == call->call_id) goto next_callid; rxrpc_get_connection(conn); @@ -281,24 +293,23 @@ spin_unlock(&conn->lock); down_write(&rxrpc_calls_sem); - list_add_tail(&call->call_link,&rxrpc_calls); + list_add_tail(&call->call_link, &rxrpc_calls); up_write(&rxrpc_calls_sem); __RXACCT(atomic_inc(&rxrpc_call_count)); *_call = call; - _leave(" = 0 (call=%p cix=%u)",call,cix); + _leave(" = 0 (call=%p cix=%u)", call, cix); return 0; error_unwait: - remove_wait_queue(&conn->chanwait,&myself); + remove_wait_queue(&conn->chanwait, &myself); set_current_state(TASK_RUNNING); spin_unlock(&conn->lock); - free_page((unsigned long)call); - _leave(" = %d",ret); + free_page((unsigned long) call); + _leave(" = %d", ret); return ret; - } /* end rxrpc_create_call() */ /*****************************************************************************/ @@ -315,18 +326,18 @@ cix = ntohl(msg->hdr.cid) & RXRPC_CHANNELMASK; - _enter("%p,%u,%u",conn,ntohl(msg->hdr.callNumber),cix); + _enter("%p,%u,%u", conn, ntohl(msg->hdr.callNumber), cix); /* allocate and initialise a call record */ - ret = __rxrpc_create_call(conn,&call); - if (ret<0) { - _leave(" = %d",ret); + ret = __rxrpc_create_call(conn, &call); + if (ret < 0) { + _leave(" = %d", ret); return ret; } call->pkt_rcv_count = 1; call->app_call_state = RXRPC_CSTATE_SRVR_RCV_OPID; - call->app_mark = sizeof(u32); + call->app_mark = sizeof(uint32_t); _state(call); @@ -348,20 +359,20 @@ spin_unlock(&conn->lock); - if (ret<0) { - free_page((unsigned long)call); + if (ret < 0) { + free_page((unsigned long) call); call = NULL; } - if (ret==0) { + if (ret == 0) { down_write(&rxrpc_calls_sem); - list_add_tail(&call->call_link,&rxrpc_calls); + list_add_tail(&call->call_link, &rxrpc_calls); up_write(&rxrpc_calls_sem); __RXACCT(atomic_inc(&rxrpc_call_count)); *_call = call; } - _leave(" = %d [%p]",ret,call); + _leave(" = %d [%p]", ret, call); return ret; } /* end rxrpc_incoming_call() */ @@ -377,10 +388,11 @@ _enter("%p{u=%d}",call,atomic_read(&call->usage)); /* sanity check */ - if (atomic_read(&call->usage)<=0) + if (atomic_read(&call->usage) <= 0) BUG(); - /* to prevent a race, the decrement and the de-list must be effectively atomic */ + /* to prevent a race, the decrement and the de-list must be effectively + * atomic */ spin_lock(&conn->lock); if (likely(!atomic_dec_and_test(&call->usage))) { spin_unlock(&conn->lock); @@ -388,7 +400,7 @@ return; } - if (conn->channels[ntohl(call->chan_ix)]==call) + if (conn->channels[ntohl(call->chan_ix)] == call) conn->channels[ntohl(call->chan_ix)] = NULL; spin_unlock(&conn->lock); @@ -412,25 +424,29 @@ rxrpc_put_message(call->snd_ping); while (!list_empty(&call->acks_pendq)) { - msg = list_entry(call->acks_pendq.next,struct rxrpc_message,link); + msg = list_entry(call->acks_pendq.next, + struct rxrpc_message, link); list_del(&msg->link); rxrpc_put_message(msg); } while (!list_empty(&call->rcv_receiveq)) { - msg = list_entry(call->rcv_receiveq.next,struct rxrpc_message,link); + msg = list_entry(call->rcv_receiveq.next, + struct rxrpc_message, link); list_del(&msg->link); rxrpc_put_message(msg); } while (!list_empty(&call->app_readyq)) { - msg = list_entry(call->app_readyq.next,struct rxrpc_message,link); + msg = list_entry(call->app_readyq.next, + struct rxrpc_message, link); list_del(&msg->link); rxrpc_put_message(msg); } while (!list_empty(&call->app_unreadyq)) { - msg = list_entry(call->app_unreadyq.next,struct rxrpc_message,link); + msg = list_entry(call->app_unreadyq.next, + struct rxrpc_message, link); list_del(&msg->link); rxrpc_put_message(msg); } @@ -442,7 +458,7 @@ up_write(&rxrpc_calls_sem); __RXACCT(atomic_dec(&rxrpc_call_count)); - free_page((unsigned long)call); + free_page((unsigned long) call); _leave(" [destroyed]"); } /* end rxrpc_put_call() */ @@ -451,7 +467,8 @@ /* * actually generate a normal ACK */ -static inline int __rxrpc_call_gen_normal_ACK(struct rxrpc_call *call, rxrpc_seq_t seq) +static inline int __rxrpc_call_gen_normal_ACK(struct rxrpc_call *call, + rxrpc_seq_t seq) { struct rxrpc_message *msg; struct iovec diov[3]; @@ -478,35 +495,36 @@ diov[0].iov_len = sizeof(struct rxrpc_ackpacket); diov[0].iov_base = &call->ackr; - diov[1].iov_len = (call->ackr_pend_cnt+3); + diov[1].iov_len = call->ackr_pend_cnt + 3; diov[1].iov_base = call->ackr_array; diov[2].iov_len = sizeof(aux); diov[2].iov_base = &aux; /* build and send the message */ - ret = rxrpc_conn_newmsg(call->conn,call,RXRPC_PACKET_TYPE_ACK,3,diov,GFP_KERNEL,&msg); - if (ret<0) + ret = rxrpc_conn_newmsg(call->conn,call, RXRPC_PACKET_TYPE_ACK, + 3, diov, GFP_KERNEL, &msg); + if (ret < 0) goto out; msg->seq = seq; msg->hdr.seq = htonl(seq); msg->hdr.flags |= RXRPC_SLOW_START_OK; - ret = rxrpc_conn_sendmsg(call->conn,msg); + ret = rxrpc_conn_sendmsg(call->conn, msg); rxrpc_put_message(msg); - if (ret<0) + if (ret < 0) goto out; call->pkt_snd_count++; /* count how many actual ACKs there were at the front */ - for (delta=0; deltaackr_pend_cnt; delta++) - if (call->ackr_array[delta]!=RXRPC_ACK_TYPE_ACK) + for (delta = 0; delta < call->ackr_pend_cnt; delta++) + if (call->ackr_array[delta] != RXRPC_ACK_TYPE_ACK) break; call->ackr_pend_cnt -= delta; /* all ACK'd to this point */ /* crank the ACK window around */ - if (delta==0) { + if (delta == 0) { /* un-ACK'd window */ } else if (delta < RXRPC_CALL_ACK_WINDOW_SIZE) { @@ -528,22 +546,26 @@ /* fully ACK'd window * - just clear the whole thing */ - memset(&call->ackr_array,RXRPC_ACK_TYPE_NACK,sizeof(call->ackr_array)); + memset(&call->ackr_array, + RXRPC_ACK_TYPE_NACK, + sizeof(call->ackr_array)); } /* clear this ACK */ - memset(&call->ackr,0,sizeof(call->ackr)); + memset(&call->ackr, 0, sizeof(call->ackr)); out: - if (!call->app_call_state) printk("___ STATE 0 ___\n"); + if (!call->app_call_state) + printk("___ STATE 0 ___\n"); return ret; } /* end __rxrpc_call_gen_normal_ACK() */ /*****************************************************************************/ /* - * note the reception of a packet in the call's ACK records and generate an appropriate ACK packet - * if necessary - * - returns 0 if packet should be processed, 1 if packet should be ignored and -ve on an error + * note the reception of a packet in the call's ACK records and generate an + * appropriate ACK packet if necessary + * - returns 0 if packet should be processed, 1 if packet should be ignored + * and -ve on an error */ static int rxrpc_call_generate_ACK(struct rxrpc_call *call, struct rxrpc_header *hdr, @@ -555,19 +577,20 @@ int ret = 0, err; u8 special_ACK, do_ACK, force; - _enter("%p,%p { seq=%d tp=%d fl=%02x }",call,hdr,ntohl(hdr->seq),hdr->type,hdr->flags); + _enter("%p,%p { seq=%d tp=%d fl=%02x }", + call, hdr, ntohl(hdr->seq), hdr->type, hdr->flags); seq = ntohl(hdr->seq); offset = seq - call->ackr_win_bot; do_ACK = RXRPC_ACK_DELAY; special_ACK = 0; - force = (seq==1); + force = (seq == 1); if (call->ackr_high_seq < seq) call->ackr_high_seq = seq; /* deal with generation of obvious special ACKs first */ - if (ack && ack->reason==RXRPC_ACK_PING) { + if (ack && ack->reason == RXRPC_ACK_PING) { special_ACK = RXRPC_ACK_PING_RESPONSE; ret = 1; goto gen_ACK; @@ -594,9 +617,9 @@ /* okay... it's a normal data packet inside the ACK window */ call->ackr_array[offset] = RXRPC_ACK_TYPE_ACK; - if (offsetackr_pend_cnt) { + if (offset < call->ackr_pend_cnt) { } - else if (offset>call->ackr_pend_cnt) { + else if (offset > call->ackr_pend_cnt) { do_ACK = RXRPC_ACK_OUT_OF_SEQUENCE; call->ackr_pend_cnt = offset; goto gen_ACK; @@ -616,8 +639,8 @@ } /* re-ACK packets previously received out-of-order */ - for (offset++; offsetackr_array[offset]!=RXRPC_ACK_TYPE_ACK) + for (offset++; offset < RXRPC_CALL_ACK_WINDOW_SIZE; offset++) + if (call->ackr_array[offset] != RXRPC_ACK_TYPE_ACK) break; call->ackr_pend_cnt = offset; @@ -629,55 +652,61 @@ gen_ACK: _debug("%05lu ACKs pend=%u norm=%s special=%s%s", jiffies - call->cjif, - call->ackr_pend_cnt,rxrpc_acks[do_ACK],rxrpc_acks[special_ACK], + call->ackr_pend_cnt, + rxrpc_acks[do_ACK], + rxrpc_acks[special_ACK], force ? " immediate" : - do_ACK==RXRPC_ACK_REQUESTED ? " merge-req" : + do_ACK == RXRPC_ACK_REQUESTED ? " merge-req" : hdr->flags & RXRPC_LAST_PACKET ? " finalise" : " defer" ); /* send any pending normal ACKs if need be */ - if (call->ackr_pend_cnt>0) { + if (call->ackr_pend_cnt > 0) { /* fill out the appropriate form */ - call->ackr.bufferSpace = htons(RXRPC_CALL_ACK_WINDOW_SIZE); - call->ackr.maxSkew = htons(min(call->ackr_high_seq - seq,65535U)); - call->ackr.firstPacket = htonl(call->ackr_win_bot); - call->ackr.previousPacket = call->ackr_prev_seq; - call->ackr.serial = hdr->serial; - call->ackr.nAcks = call->ackr_pend_cnt; + call->ackr.bufferSpace = htons(RXRPC_CALL_ACK_WINDOW_SIZE); + call->ackr.maxSkew = htons(min(call->ackr_high_seq - seq, + 65535U)); + call->ackr.firstPacket = htonl(call->ackr_win_bot); + call->ackr.previousPacket = call->ackr_prev_seq; + call->ackr.serial = hdr->serial; + call->ackr.nAcks = call->ackr_pend_cnt; - if (do_ACK==RXRPC_ACK_REQUESTED) + if (do_ACK == RXRPC_ACK_REQUESTED) call->ackr.reason = do_ACK; /* generate the ACK immediately if necessary */ if (special_ACK || force) { - err = __rxrpc_call_gen_normal_ACK(call,do_ACK==RXRPC_ACK_DELAY ? 0 : seq); - if (err<0) { + err = __rxrpc_call_gen_normal_ACK( + call, do_ACK == RXRPC_ACK_DELAY ? 0 : seq); + if (err < 0) { ret = err; goto out; } } } - if (call->ackr.reason==RXRPC_ACK_REQUESTED) + if (call->ackr.reason == RXRPC_ACK_REQUESTED) call->ackr_dfr_seq = seq; - /* start the ACK timer if not running if there are any pending deferred ACKs */ - if (call->ackr_pend_cnt>0 && - call->ackr.reason!=RXRPC_ACK_REQUESTED && + /* start the ACK timer if not running if there are any pending deferred + * ACKs */ + if (call->ackr_pend_cnt > 0 && + call->ackr.reason != RXRPC_ACK_REQUESTED && !timer_pending(&call->ackr_dfr_timo) ) { unsigned long timo; timo = rxrpc_call_dfr_ack_timeout + jiffies; - _debug("START ACKR TIMER for cj=%lu",timo-call->cjif); + _debug("START ACKR TIMER for cj=%lu", timo-call->cjif); spin_lock(&call->lock); - mod_timer(&call->ackr_dfr_timo,timo); + mod_timer(&call->ackr_dfr_timo, timo); spin_unlock(&call->lock); } - else if ((call->ackr_pend_cnt==0 || call->ackr.reason==RXRPC_ACK_REQUESTED) && + else if ((call->ackr_pend_cnt == 0 || + call->ackr.reason == RXRPC_ACK_REQUESTED) && timer_pending(&call->ackr_dfr_timo) ) { /* stop timer if no pending ACKs */ @@ -689,21 +718,25 @@ if (special_ACK) { struct rxrpc_ackpacket ack; struct iovec diov[2]; - u8 acks[1] = { RXRPC_ACK_TYPE_ACK }; + uint8_t acks[1] = { RXRPC_ACK_TYPE_ACK }; /* fill out the appropriate form */ - ack.bufferSpace = htons(RXRPC_CALL_ACK_WINDOW_SIZE); - ack.maxSkew = htons(min(call->ackr_high_seq - seq,65535U)); - ack.firstPacket = htonl(call->ackr_win_bot); - ack.previousPacket = call->ackr_prev_seq; - ack.serial = hdr->serial; - ack.reason = special_ACK; - ack.nAcks = 0; - //ack.nAcks = special_ACK==RXRPC_ACK_OUT_OF_SEQUENCE ? 0 : hdr->seq ? 1 : 0; - - _proto("Rx Sending s-ACK { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }", - ntohs(ack.maxSkew),ntohl(ack.firstPacket),ntohl(ack.previousPacket), - ntohl(ack.serial),rxrpc_acks[ack.reason],ack.nAcks); + ack.bufferSpace = htons(RXRPC_CALL_ACK_WINDOW_SIZE); + ack.maxSkew = htons(min(call->ackr_high_seq - seq,65535U)); + ack.firstPacket = htonl(call->ackr_win_bot); + ack.previousPacket = call->ackr_prev_seq; + ack.serial = hdr->serial; + ack.reason = special_ACK; + ack.nAcks = 0; + + _proto("Rx Sending s-ACK" + " { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }", + ntohs(ack.maxSkew), + ntohl(ack.firstPacket), + ntohl(ack.previousPacket), + ntohl(ack.serial), + rxrpc_acks[ack.reason], + ack.nAcks); diov[0].iov_len = sizeof(struct rxrpc_ackpacket); diov[0].iov_base = &ack; @@ -711,11 +744,11 @@ diov[1].iov_base = acks; /* build and send the message */ - err = rxrpc_conn_newmsg(call->conn,call,RXRPC_PACKET_TYPE_ACK, - hdr->seq ? 2 : 1,diov, + err = rxrpc_conn_newmsg(call->conn,call, RXRPC_PACKET_TYPE_ACK, + hdr->seq ? 2 : 1, diov, GFP_KERNEL, &msg); - if (err<0) { + if (err < 0) { ret = err; goto out; } @@ -724,9 +757,9 @@ msg->hdr.seq = htonl(seq); msg->hdr.flags |= RXRPC_SLOW_START_OK; - err = rxrpc_conn_sendmsg(call->conn,msg); + err = rxrpc_conn_sendmsg(call->conn, msg); rxrpc_put_message(msg); - if (err<0) { + if (err < 0) { ret = err; goto out; } @@ -737,7 +770,7 @@ if (hdr->seq) call->ackr_prev_seq = hdr->seq; - _leave(" = %d",ret); + _leave(" = %d", ret); return ret; } /* end rxrpc_call_generate_ACK() */ @@ -748,7 +781,7 @@ */ void rxrpc_call_do_stuff(struct rxrpc_call *call) { - _enter("%p{flags=%lx}",call,call->flags); + _enter("%p{flags=%lx}", call, call->flags); /* handle packet reception */ if (call->flags & RXRPC_CALL_RCV_PKT) { @@ -761,19 +794,19 @@ if (call->flags & RXRPC_CALL_ACKS_TIMO) { _debug("- overdue ACK timeout"); call->flags &= ~RXRPC_CALL_ACKS_TIMO; - rxrpc_call_resend(call,call->snd_seq_count); + rxrpc_call_resend(call, call->snd_seq_count); } /* handle lack of reception */ if (call->flags & RXRPC_CALL_RCV_TIMO) { _debug("- reception timeout"); call->flags &= ~RXRPC_CALL_RCV_TIMO; - rxrpc_call_abort(call,-EIO); + rxrpc_call_abort(call, -EIO); } /* handle deferred ACKs */ if (call->flags & RXRPC_CALL_ACKR_TIMO || - (call->ackr.nAcks>0 && call->ackr.reason==RXRPC_ACK_REQUESTED) + (call->ackr.nAcks > 0 && call->ackr.reason == RXRPC_ACK_REQUESTED) ) { _debug("- deferred ACK timeout: cj=%05lu r=%s n=%u", jiffies - call->cjif, @@ -782,9 +815,10 @@ call->flags &= ~RXRPC_CALL_ACKR_TIMO; - if (call->ackr.nAcks>0 && call->app_call_state!=RXRPC_CSTATE_ERROR) { + if (call->ackr.nAcks > 0 && + call->app_call_state != RXRPC_CSTATE_ERROR) { /* generate ACK */ - __rxrpc_call_gen_normal_ACK(call,call->ackr_dfr_seq); + __rxrpc_call_gen_normal_ACK(call, call->ackr_dfr_seq); call->ackr_dfr_seq = 0; } } @@ -807,10 +841,11 @@ int ret; u32 _error; - _enter("%p{%08x},%p{%d},%d",conn,ntohl(conn->conn_id),call,ntohl(call->call_id),errno); + _enter("%p{%08x},%p{%d},%d", + conn, ntohl(conn->conn_id), call, ntohl(call->call_id), errno); /* if this call is already aborted, then just wake up any waiters */ - if (call->app_call_state==RXRPC_CSTATE_ERROR) { + if (call->app_call_state == RXRPC_CSTATE_ERROR) { spin_unlock(&call->lock); call->app_error_func(call); _leave(" = 0"); @@ -820,12 +855,12 @@ rxrpc_get_call(call); /* change the state _with_ the lock still held */ - call->app_call_state = RXRPC_CSTATE_ERROR; - call->app_err_state = RXRPC_ESTATE_LOCAL_ABORT; - call->app_errno = errno; - call->app_mark = RXRPC_APP_MARK_EOF; - call->app_read_buf = NULL; - call->app_async_read = 0; + call->app_call_state = RXRPC_CSTATE_ERROR; + call->app_err_state = RXRPC_ESTATE_LOCAL_ABORT; + call->app_errno = errno; + call->app_mark = RXRPC_APP_MARK_EOF; + call->app_read_buf = NULL; + call->app_async_read = 0; _state(call); @@ -840,22 +875,25 @@ del_timer_sync(&call->ackr_dfr_timo); if (rxrpc_call_is_ack_pending(call)) - __rxrpc_call_gen_normal_ACK(call,0); + __rxrpc_call_gen_normal_ACK(call, 0); - /* send the abort packet only if we actually traded some other packets */ + /* send the abort packet only if we actually traded some other + * packets */ ret = 0; if (call->pkt_snd_count || call->pkt_rcv_count) { /* actually send the abort */ - _proto("Rx Sending Call ABORT { data=%d }",call->app_abort_code); + _proto("Rx Sending Call ABORT { data=%d }", + call->app_abort_code); _error = htonl(call->app_abort_code); diov[0].iov_len = sizeof(_error); diov[0].iov_base = &_error; - ret = rxrpc_conn_newmsg(conn,call,RXRPC_PACKET_TYPE_ABORT,1,diov,GFP_KERNEL,&msg); - if (ret==0) { - ret = rxrpc_conn_sendmsg(conn,msg); + ret = rxrpc_conn_newmsg(conn, call, RXRPC_PACKET_TYPE_ABORT, + 1, diov, GFP_KERNEL, &msg); + if (ret == 0) { + ret = rxrpc_conn_sendmsg(conn, msg); rxrpc_put_message(msg); } } @@ -865,8 +903,7 @@ rxrpc_put_call(call); - _leave(" = %d",ret); - + _leave(" = %d", ret); return ret; } /* end __rxrpc_call_abort() */ @@ -879,7 +916,7 @@ { spin_lock(&call->lock); - return __rxrpc_call_abort(call,error); + return __rxrpc_call_abort(call, error); } /* end rxrpc_call_abort() */ @@ -891,11 +928,12 @@ { struct rxrpc_message *msg; struct list_head *_p; - u32 data32; + uint32_t data32; - _enter("%p",call); + _enter("%p", call); - rxrpc_get_call(call); /* must not go away too soon if aborted by app-layer */ + rxrpc_get_call(call); /* must not go away too soon if aborted by + * app-layer */ while (!list_empty(&call->rcv_receiveq)) { /* try to get next packet */ @@ -907,9 +945,10 @@ } spin_unlock(&call->lock); - if (!_p) break; + if (!_p) + break; - msg = list_entry(_p,struct rxrpc_message,link); + msg = list_entry(_p, struct rxrpc_message, link); _proto("Rx %05lu Received %s packet (%%%u,#%u,%c%c%c%c%c)", jiffies - call->cjif, @@ -927,9 +966,10 @@ /* deal with data packets */ case RXRPC_PACKET_TYPE_DATA: /* ACK the packet if necessary */ - switch (rxrpc_call_generate_ACK(call,&msg->hdr,NULL)) { + switch (rxrpc_call_generate_ACK(call, &msg->hdr, + NULL)) { case 0: /* useful packet */ - rxrpc_call_receive_data_packet(call,msg); + rxrpc_call_receive_data_packet(call, msg); break; case 1: /* duplicate or out-of-window packet */ break; @@ -941,29 +981,30 @@ /* deal with ACK packets */ case RXRPC_PACKET_TYPE_ACK: - rxrpc_call_receive_ack_packet(call,msg); + rxrpc_call_receive_ack_packet(call, msg); break; /* deal with abort packets */ case RXRPC_PACKET_TYPE_ABORT: data32 = 0; - if (skb_copy_bits(msg->pkt,msg->offset,&data32,sizeof(data32))<0) { + if (skb_copy_bits(msg->pkt, msg->offset, + &data32, sizeof(data32)) < 0) { printk("Rx Received short ABORT packet\n"); } else { data32 = ntohl(data32); } - _proto("Rx Received Call ABORT { data=%d }",data32); + _proto("Rx Received Call ABORT { data=%d }", data32); spin_lock(&call->lock); - call->app_call_state = RXRPC_CSTATE_ERROR; - call->app_err_state = RXRPC_ESTATE_PEER_ABORT; - call->app_abort_code = data32; - call->app_errno = -ECONNABORTED; - call->app_mark = RXRPC_APP_MARK_EOF; - call->app_read_buf = NULL; - call->app_async_read = 0; + call->app_call_state = RXRPC_CSTATE_ERROR; + call->app_err_state = RXRPC_ESTATE_PEER_ABORT; + call->app_abort_code = data32; + call->app_errno = -ECONNABORTED; + call->app_mark = RXRPC_APP_MARK_EOF; + call->app_read_buf = NULL; + call->app_async_read = 0; /* ask the app to translate the error code */ call->app_aemap_func(call); @@ -974,7 +1015,8 @@ default: /* deal with other packet types */ - _proto("Rx Unsupported packet type %u (#%u)",msg->hdr.type,msg->seq); + _proto("Rx Unsupported packet type %u (#%u)", + msg->hdr.type, msg->seq); break; } @@ -990,14 +1032,18 @@ /* * process next data packet * - as the next data packet arrives: - * - it is queued on app_readyq _if_ it is the next one expected (app_ready_seq+1) + * - it is queued on app_readyq _if_ it is the next one expected + * (app_ready_seq+1) * - it is queued on app_unreadyq _if_ it is not the next one expected - * - if a packet placed on app_readyq completely fills a hole leading up to the first packet - * on app_unreadyq, then packets now in sequence are tranferred to app_readyq - * - the application layer can only see packets on app_readyq (app_ready_qty bytes) + * - if a packet placed on app_readyq completely fills a hole leading up to + * the first packet on app_unreadyq, then packets now in sequence are + * tranferred to app_readyq + * - the application layer can only see packets on app_readyq + * (app_ready_qty bytes) * - the application layer is prodded every time a new packet arrives */ -static void rxrpc_call_receive_data_packet(struct rxrpc_call *call, struct rxrpc_message *msg) +static void rxrpc_call_receive_data_packet(struct rxrpc_call *call, + struct rxrpc_message *msg) { const struct rxrpc_operation *optbl, *op; struct rxrpc_message *pmsg; @@ -1005,22 +1051,23 @@ int ret, lo, hi, rmtimo; u32 opid; - _enter("%p{%u},%p{%u}",call,ntohl(call->call_id),msg,msg->seq); + _enter("%p{%u},%p{%u}", call, ntohl(call->call_id), msg, msg->seq); rxrpc_get_message(msg); - /* add to the unready queue if we'd have to create a hole in the ready queue otherwise */ - if (msg->seq != call->app_ready_seq+1) { - _debug("Call add packet %d to unreadyq",msg->seq); + /* add to the unready queue if we'd have to create a hole in the ready + * queue otherwise */ + if (msg->seq != call->app_ready_seq + 1) { + _debug("Call add packet %d to unreadyq", msg->seq); /* insert in seq order */ list_for_each(_p,&call->app_unreadyq) { - pmsg = list_entry(_p,struct rxrpc_message,link); - if (pmsg->seq>msg->seq) + pmsg = list_entry(_p, struct rxrpc_message, link); + if (pmsg->seq > msg->seq) break; } - list_add_tail(&msg->link,_p); + list_add_tail(&msg->link, _p); _leave(" [unreadyq]"); return; @@ -1028,33 +1075,35 @@ /* next in sequence - simply append into the call's ready queue */ _debug("Call add packet %d to readyq (+%Zd => %Zd bytes)", - msg->seq,msg->dsize,call->app_ready_qty); + msg->seq, msg->dsize, call->app_ready_qty); spin_lock(&call->lock); call->app_ready_seq = msg->seq; call->app_ready_qty += msg->dsize; - list_add_tail(&msg->link,&call->app_readyq); + list_add_tail(&msg->link, &call->app_readyq); /* move unready packets to the readyq if we got rid of a hole */ while (!list_empty(&call->app_unreadyq)) { - pmsg = list_entry(call->app_unreadyq.next,struct rxrpc_message,link); + pmsg = list_entry(call->app_unreadyq.next, + struct rxrpc_message, link); - if (pmsg->seq != call->app_ready_seq+1) + if (pmsg->seq != call->app_ready_seq + 1) break; /* next in sequence - just move list-to-list */ _debug("Call transfer packet %d to readyq (+%Zd => %Zd bytes)", - pmsg->seq,pmsg->dsize,call->app_ready_qty); + pmsg->seq, pmsg->dsize, call->app_ready_qty); call->app_ready_seq = pmsg->seq; call->app_ready_qty += pmsg->dsize; list_del_init(&pmsg->link); - list_add_tail(&pmsg->link,&call->app_readyq); + list_add_tail(&pmsg->link, &call->app_readyq); } /* see if we've got the last packet yet */ if (!list_empty(&call->app_readyq)) { - pmsg = list_entry(call->app_readyq.prev,struct rxrpc_message,link); + pmsg = list_entry(call->app_readyq.prev, + struct rxrpc_message, link); if (pmsg->hdr.flags & RXRPC_LAST_PACKET) { call->app_last_rcv = 1; _debug("Last packet on readyq"); @@ -1068,25 +1117,27 @@ _leave(" [error]"); return; - /* extract the operation ID from an incoming call if that's not yet been done */ + /* extract the operation ID from an incoming call if that's not + * yet been done */ case RXRPC_CSTATE_SRVR_RCV_OPID: spin_unlock(&call->lock); /* handle as yet insufficient data for the operation ID */ - if (call->app_ready_qty<4) { + if (call->app_ready_qty < 4) { if (call->app_last_rcv) - rxrpc_call_abort(call,-EINVAL); /* trouble - last packet seen */ + /* trouble - last packet seen */ + rxrpc_call_abort(call, -EINVAL); _leave(""); return; } /* pull the operation ID out of the buffer */ - ret = rxrpc_call_read_data(call,&opid,sizeof(opid),0); - if (ret<0) { - printk("Unexpected error from read-data: %d\n",ret); - if (call->app_call_state!=RXRPC_CSTATE_ERROR) - rxrpc_call_abort(call,ret); + ret = rxrpc_call_read_data(call, &opid, sizeof(opid), 0); + if (ret < 0) { + printk("Unexpected error from read-data: %d\n", ret); + if (call->app_call_state != RXRPC_CSTATE_ERROR) + rxrpc_call_abort(call, ret); _leave(""); return; } @@ -1097,38 +1148,42 @@ lo = 0; hi = call->conn->service->ops_end - optbl; - while (loapp_opcode==op->id) + if (call->app_opcode == op->id) goto found_op; - if (call->app_opcode>op->id) - lo = mid+1; + if (call->app_opcode > op->id) + lo = mid + 1; else hi = mid; } /* search failed */ kproto("Rx Client requested operation %d from %s service", - call->app_opcode,call->conn->service->name); - rxrpc_call_abort(call,-EINVAL); + call->app_opcode, call->conn->service->name); + rxrpc_call_abort(call, -EINVAL); _leave(" [inval]"); return; found_op: _proto("Rx Client requested operation %s from %s service", - op->name,call->conn->service->name); + op->name, call->conn->service->name); - /* we're now waiting for the argument block (unless the call was aborted) */ + /* we're now waiting for the argument block (unless the call + * was aborted) */ spin_lock(&call->lock); - if (call->app_call_state==RXRPC_CSTATE_SRVR_RCV_OPID || - call->app_call_state==RXRPC_CSTATE_SRVR_SND_REPLY) { + if (call->app_call_state == RXRPC_CSTATE_SRVR_RCV_OPID || + call->app_call_state == RXRPC_CSTATE_SRVR_SND_REPLY) { if (!call->app_last_rcv) - call->app_call_state = RXRPC_CSTATE_SRVR_RCV_ARGS; - else if (call->app_ready_qty>0) - call->app_call_state = RXRPC_CSTATE_SRVR_GOT_ARGS; + call->app_call_state = + RXRPC_CSTATE_SRVR_RCV_ARGS; + else if (call->app_ready_qty > 0) + call->app_call_state = + RXRPC_CSTATE_SRVR_GOT_ARGS; else - call->app_call_state = RXRPC_CSTATE_SRVR_SND_REPLY; + call->app_call_state = + RXRPC_CSTATE_SRVR_SND_REPLY; call->app_mark = op->asize; call->app_user = op->user; } @@ -1166,20 +1221,21 @@ default: /* deal with data reception in an unexpected state */ - printk("Unexpected state [[[ %u ]]]\n",call->app_call_state); - __rxrpc_call_abort(call,-EBADMSG); + printk("Unexpected state [[[ %u ]]]\n", call->app_call_state); + __rxrpc_call_abort(call, -EBADMSG); _leave(""); return; } - if (call->app_call_state==RXRPC_CSTATE_CLNT_RCV_REPLY && call->app_last_rcv) + if (call->app_call_state == RXRPC_CSTATE_CLNT_RCV_REPLY && + call->app_last_rcv) BUG(); /* otherwise just invoke the data function whenever we can satisfy its desire for more * data */ _proto("Rx Received Op Data: st=%u qty=%Zu mk=%Zu%s", - call->app_call_state,call->app_ready_qty,call->app_mark, + call->app_call_state, call->app_ready_qty, call->app_mark, call->app_last_rcv ? " last-rcvd" : ""); spin_lock(&call->lock); @@ -1196,8 +1252,8 @@ case -ECONNABORTED: spin_unlock(&call->lock); break; - default: - __rxrpc_call_abort(call,ret); + default: + __rxrpc_call_abort(call, ret); break; } @@ -1211,17 +1267,18 @@ /* * received an ACK packet */ -static void rxrpc_call_receive_ack_packet(struct rxrpc_call *call, struct rxrpc_message *msg) +static void rxrpc_call_receive_ack_packet(struct rxrpc_call *call, + struct rxrpc_message *msg) { struct rxrpc_ackpacket ack; rxrpc_serial_t serial; rxrpc_seq_t seq; int ret; - _enter("%p{%u},%p{%u}",call,ntohl(call->call_id),msg,msg->seq); + _enter("%p{%u},%p{%u}", call, ntohl(call->call_id), msg, msg->seq); /* extract the basic ACK record */ - if (skb_copy_bits(msg->pkt,msg->offset,&ack,sizeof(ack))<0) { + if (skb_copy_bits(msg->pkt, msg->offset, &ack, sizeof(ack)) < 0) { printk("Rx Received short ACK packet\n"); return; } @@ -1241,10 +1298,14 @@ call->ackr.nAcks ); - /* check the other side isn't ACK'ing a sequence number I haven't sent yet */ - if (ack.nAcks>0 && (seq > call->snd_seq_count || seq+ack.nAcks-1 > call->snd_seq_count)) { - printk("Received ACK (#%u-#%u) for unsent packet\n",seq,seq+ack.nAcks-1); - rxrpc_call_abort(call,-EINVAL); + /* check the other side isn't ACK'ing a sequence number I haven't sent + * yet */ + if (ack.nAcks > 0 && + (seq > call->snd_seq_count || + seq + ack.nAcks - 1 > call->snd_seq_count)) { + printk("Received ACK (#%u-#%u) for unsent packet\n", + seq, seq + ack.nAcks - 1); + rxrpc_call_abort(call, -EINVAL); _leave(""); return; } @@ -1255,7 +1316,7 @@ /* find the prompting packet */ spin_lock(&call->lock); - if (call->snd_ping && call->snd_ping->hdr.serial==serial) { + if (call->snd_ping && call->snd_ping->hdr.serial == serial) { /* it was a ping packet */ rttmsg = call->snd_ping; call->snd_ping = NULL; @@ -1263,22 +1324,28 @@ if (rttmsg) { rttmsg->rttdone = 1; - rxrpc_peer_calculate_rtt(call->conn->peer,rttmsg,msg); + rxrpc_peer_calculate_rtt(call->conn->peer, + rttmsg, msg); rxrpc_put_message(rttmsg); } } else { struct list_head *_p; - /* it ought to be a data packet - look in the pending ACK list */ - list_for_each(_p,&call->acks_pendq) { - rttmsg = list_entry(_p,struct rxrpc_message,link); - if (rttmsg->hdr.serial==serial) { + /* it ought to be a data packet - look in the pending + * ACK list */ + list_for_each(_p, &call->acks_pendq) { + rttmsg = list_entry(_p, struct rxrpc_message, + link); + if (rttmsg->hdr.serial == serial) { if (rttmsg->rttdone) - break; /* never do RTT twice without resending */ + /* never do RTT twice without + * resending */ + break; rttmsg->rttdone = 1; - rxrpc_peer_calculate_rtt(call->conn->peer,rttmsg,msg); + rxrpc_peer_calculate_rtt( + call->conn->peer, rttmsg, msg); break; } } @@ -1287,24 +1354,25 @@ } switch (ack.reason) { - /* deal with negative/positive acknowledgement of data packets */ + /* deal with negative/positive acknowledgement of data + * packets */ case RXRPC_ACK_REQUESTED: case RXRPC_ACK_DELAY: case RXRPC_ACK_IDLE: - rxrpc_call_definitively_ACK(call,seq-1); + rxrpc_call_definitively_ACK(call, seq - 1); case RXRPC_ACK_DUPLICATE: case RXRPC_ACK_OUT_OF_SEQUENCE: case RXRPC_ACK_EXCEEDS_WINDOW: call->snd_resend_cnt = 0; - ret = rxrpc_call_record_ACK(call,msg,seq,ack.nAcks); - if (ret<0) - rxrpc_call_abort(call,ret); + ret = rxrpc_call_record_ACK(call, msg, seq, ack.nAcks); + if (ret < 0) + rxrpc_call_abort(call, ret); break; /* respond to ping packets immediately */ case RXRPC_ACK_PING: - rxrpc_call_generate_ACK(call,&msg->hdr,&ack); + rxrpc_call_generate_ACK(call, &msg->hdr, &ack); break; /* only record RTT on ping response packets */ @@ -1312,10 +1380,12 @@ if (call->snd_ping) { struct rxrpc_message *rttmsg; - /* only do RTT stuff if the response matches the retained ping */ + /* only do RTT stuff if the response matches the + * retained ping */ rttmsg = NULL; spin_lock(&call->lock); - if (call->snd_ping && call->snd_ping->hdr.serial==ack.serial) { + if (call->snd_ping && + call->snd_ping->hdr.serial == ack.serial) { rttmsg = call->snd_ping; call->snd_ping = NULL; } @@ -1323,14 +1393,15 @@ if (rttmsg) { rttmsg->rttdone = 1; - rxrpc_peer_calculate_rtt(call->conn->peer,rttmsg,msg); + rxrpc_peer_calculate_rtt(call->conn->peer, + rttmsg, msg); rxrpc_put_message(rttmsg); } } break; default: - printk("Unsupported ACK reason %u\n",ack.reason); + printk("Unsupported ACK reason %u\n", ack.reason); break; } @@ -1339,38 +1410,44 @@ /*****************************************************************************/ /* - * record definitive ACKs for all messages up to and including the one with the 'highest' seq + * record definitive ACKs for all messages up to and including the one with the + * 'highest' seq */ -static void rxrpc_call_definitively_ACK(struct rxrpc_call *call, rxrpc_seq_t highest) +static void rxrpc_call_definitively_ACK(struct rxrpc_call *call, + rxrpc_seq_t highest) { struct rxrpc_message *msg; int now_complete; - _enter("%p{ads=%u},%u",call,call->acks_dftv_seq,highest); + _enter("%p{ads=%u},%u", call, call->acks_dftv_seq, highest); - while (call->acks_dftv_seqacks_dftv_seq < highest) { call->acks_dftv_seq++; - _proto("Definitive ACK on packet #%u",call->acks_dftv_seq); + _proto("Definitive ACK on packet #%u", call->acks_dftv_seq); - /* discard those at front of queue until message with highest ACK is found */ + /* discard those at front of queue until message with highest + * ACK is found */ spin_lock(&call->lock); msg = NULL; if (!list_empty(&call->acks_pendq)) { - msg = list_entry(call->acks_pendq.next,struct rxrpc_message,link); + msg = list_entry(call->acks_pendq.next, + struct rxrpc_message, link); list_del_init(&msg->link); /* dequeue */ - if (msg->state==RXRPC_MSG_SENT) + if (msg->state == RXRPC_MSG_SENT) call->acks_pend_cnt--; } spin_unlock(&call->lock); /* insanity check */ if (!msg) - panic("%s(): acks_pendq unexpectedly empty\n",__FUNCTION__); + panic("%s(): acks_pendq unexpectedly empty\n", + __FUNCTION__); - if (msg->seq!=call->acks_dftv_seq) - panic("%s(): Packet #%u expected at front of acks_pendq (#%u found)\n", - __FUNCTION__,call->acks_dftv_seq,msg->seq); + if (msg->seq != call->acks_dftv_seq) + panic("%s(): Packet #%u expected at front of acks_pendq" + " (#%u found)\n", + __FUNCTION__, call->acks_dftv_seq, msg->seq); /* discard the message */ msg->state = RXRPC_MSG_DONE; @@ -1380,8 +1457,8 @@ /* if all sent packets are definitively ACK'd then prod any sleepers just in case */ now_complete = 0; spin_lock(&call->lock); - if (call->acks_dftv_seq==call->snd_seq_count) { - if (call->app_call_state!=RXRPC_CSTATE_COMPLETE) { + if (call->acks_dftv_seq == call->snd_seq_count) { + if (call->app_call_state != RXRPC_CSTATE_COMPLETE) { call->app_call_state = RXRPC_CSTATE_COMPLETE; _state(call); now_complete = 1; @@ -1417,13 +1494,15 @@ u8 acks[16]; _enter("%p{apc=%u ads=%u},%p,%u,%Zu", - call,call->acks_pend_cnt,call->acks_dftv_seq,msg,seq,count); + call, call->acks_pend_cnt, call->acks_dftv_seq, + msg, seq, count); - /* handle re-ACK'ing of definitively ACK'd packets (may be out-of-order ACKs) */ - if (seq<=call->acks_dftv_seq) { + /* handle re-ACK'ing of definitively ACK'd packets (may be out-of-order + * ACKs) */ + if (seq <= call->acks_dftv_seq) { unsigned delta = call->acks_dftv_seq - seq; - if (count<=delta) { + if (count <= delta) { _leave(" = 0 [all definitively ACK'd]"); return 0; } @@ -1435,14 +1514,14 @@ highest = seq + count - 1; resend = 0; - while (count>0) { + while (count > 0) { /* extract up to 16 ACK slots at a time */ - chunk = min(count,sizeof(acks)); + chunk = min(count, sizeof(acks)); count -= chunk; - memset(acks,2,sizeof(acks)); + memset(acks, 2, sizeof(acks)); - if (skb_copy_bits(msg->pkt,msg->offset,&acks,chunk)<0) { + if (skb_copy_bits(msg->pkt, msg->offset, &acks, chunk) < 0) { printk("Rx Received short ACK packet\n"); _leave(" = -EINVAL"); return -EINVAL; @@ -1450,7 +1529,7 @@ msg->offset += chunk; /* check that the ACK set is valid */ - for (ix=0; ixacks_pend_cnt ); - /* mark the packets in the ACK queue as being provisionally ACK'd */ + /* mark the packets in the ACK queue as being provisionally + * ACK'd */ ix = 0; spin_lock(&call->lock); /* find the first packet ACK'd/NAK'd here */ - list_for_each(_p,&call->acks_pendq) { - dmsg = list_entry(_p,struct rxrpc_message,link); - if (dmsg->seq==seq) + list_for_each(_p, &call->acks_pendq) { + dmsg = list_entry(_p, struct rxrpc_message, link); + if (dmsg->seq == seq) goto found_first; - _debug("- %u: skipping #%u",ix,dmsg->seq); + _debug("- %u: skipping #%u", ix, dmsg->seq); } goto bad_queue; found_first: do { _debug("- %u: processing #%u (%c) apc=%u", - ix,dmsg->seq,_acktype[acks[ix]],call->acks_pend_cnt); + ix, dmsg->seq, _acktype[acks[ix]], + call->acks_pend_cnt); - if (acks[ix]==RXRPC_ACK_TYPE_ACK) { - if (dmsg->state==RXRPC_MSG_SENT) call->acks_pend_cnt--; + if (acks[ix] == RXRPC_ACK_TYPE_ACK) { + if (dmsg->state == RXRPC_MSG_SENT) + call->acks_pend_cnt--; dmsg->state = RXRPC_MSG_ACKED; } else { - if (dmsg->state==RXRPC_MSG_ACKED) call->acks_pend_cnt++; + if (dmsg->state == RXRPC_MSG_ACKED) + call->acks_pend_cnt++; dmsg->state = RXRPC_MSG_SENT; } ix++; seq++; _p = dmsg->link.next; - dmsg = list_entry(_p,struct rxrpc_message,link); - } while(ixacks_pendq && dmsg->seq==seq); + dmsg = list_entry(_p, struct rxrpc_message, link); + } while(ix < chunk && + _p != &call->acks_pendq && + dmsg->seq == seq); - if (ixlock); } if (resend) - rxrpc_call_resend(call,highest); + rxrpc_call_resend(call, highest); - /* if all packets are provisionally ACK'd, then wake up anyone who's waiting for that */ + /* if all packets are provisionally ACK'd, then wake up anyone who's + * waiting for that */ now_complete = 0; spin_lock(&call->lock); - if (call->acks_pend_cnt==0) { - if (call->app_call_state==RXRPC_CSTATE_SRVR_RCV_FINAL_ACK) { + if (call->acks_pend_cnt == 0) { + if (call->app_call_state == RXRPC_CSTATE_SRVR_RCV_FINAL_ACK) { call->app_call_state = RXRPC_CSTATE_COMPLETE; _state(call); } @@ -1547,19 +1635,21 @@ call->app_attn_func(call); } - _leave(" = 0 (apc=%u)",call->acks_pend_cnt); + _leave(" = 0 (apc=%u)", call->acks_pend_cnt); return 0; bad_queue: - panic("%s(): acks_pendq in bad state (packet #%u absent)\n",__FUNCTION__,seq); + panic("%s(): acks_pendq in bad state (packet #%u absent)\n", + __FUNCTION__, seq); } /* end rxrpc_call_record_ACK() */ /*****************************************************************************/ /* * transfer data from the ready packet queue to the asynchronous read buffer - * - since this func is the only one going to look at packets queued on app_readyq, we don't need - * a lock to modify or access them, only to modify the queue pointers + * - since this func is the only one going to look at packets queued on + * app_readyq, we don't need a lock to modify or access them, only to modify + * the queue pointers * - called with call->lock held * - the buffer must be in kernel space * - returns: @@ -1575,16 +1665,20 @@ int ret; _enter("%p{as=%d buf=%p qty=%Zu/%Zu}", - call,call->app_async_read,call->app_read_buf,call->app_ready_qty,call->app_mark); + call, + call->app_async_read, call->app_read_buf, + call->app_ready_qty, call->app_mark); /* check the state */ switch (call->app_call_state) { case RXRPC_CSTATE_SRVR_RCV_ARGS: case RXRPC_CSTATE_CLNT_RCV_REPLY: if (call->app_last_rcv) { - printk("%s(%p,%p,%Zd): Inconsistent call state (%s, last pkt)", - __FUNCTION__,call,call->app_read_buf,call->app_mark, - rxrpc_call_states[call->app_call_state]); + printk("%s(%p,%p,%Zd):" + " Inconsistent call state (%s, last pkt)", + __FUNCTION__, + call, call->app_read_buf, call->app_mark, + rxrpc_call_states[call->app_call_state]); BUG(); } break; @@ -1596,9 +1690,11 @@ case RXRPC_CSTATE_SRVR_SND_REPLY: if (!call->app_last_rcv) { - printk("%s(%p,%p,%Zd): Inconsistent call state (%s, not last pkt)", - __FUNCTION__,call,call->app_read_buf,call->app_mark, - rxrpc_call_states[call->app_call_state]); + printk("%s(%p,%p,%Zd):" + " Inconsistent call state (%s, not last pkt)", + __FUNCTION__, + call, call->app_read_buf, call->app_mark, + rxrpc_call_states[call->app_call_state]); BUG(); } _debug("Trying to read data from call in SND_REPLY state"); @@ -1609,13 +1705,14 @@ return -ECONNABORTED; default: - printk("reading in unexpected state [[[ %u ]]]\n",call->app_call_state); + printk("reading in unexpected state [[[ %u ]]]\n", + call->app_call_state); BUG(); } /* handle the case of not having an async buffer */ if (!call->app_async_read) { - if (call->app_mark==RXRPC_APP_MARK_EOF) { + if (call->app_mark == RXRPC_APP_MARK_EOF) { ret = call->app_last_rcv ? 0 : -EAGAIN; } else { @@ -1628,28 +1725,33 @@ } } - _leave(" = %d [no buf]",ret); + _leave(" = %d [no buf]", ret); return 0; } - while (!list_empty(&call->app_readyq) && call->app_mark>0) { - msg = list_entry(call->app_readyq.next,struct rxrpc_message,link); + while (!list_empty(&call->app_readyq) && call->app_mark > 0) { + msg = list_entry(call->app_readyq.next, + struct rxrpc_message, link); /* drag as much data as we need out of this packet */ - qty = min(call->app_mark,msg->dsize); + qty = min(call->app_mark, msg->dsize); - _debug("reading %Zu from skb=%p off=%lu",qty,msg->pkt,msg->offset); + _debug("reading %Zu from skb=%p off=%lu", + qty, msg->pkt, msg->offset); if (call->app_read_buf) - if (skb_copy_bits(msg->pkt,msg->offset,call->app_read_buf,qty)<0) - panic("%s: Failed to copy data from packet: (%p,%p,%Zd)", - __FUNCTION__,call,call->app_read_buf,qty); + if (skb_copy_bits(msg->pkt, msg->offset, + call->app_read_buf, qty) < 0) + panic("%s: Failed to copy data from packet:" + " (%p,%p,%Zd)", + __FUNCTION__, + call, call->app_read_buf, qty); /* if that packet is now empty, discard it */ call->app_ready_qty -= qty; msg->dsize -= qty; - if (msg->dsize==0) { + if (msg->dsize == 0) { list_del_init(&msg->link); rxrpc_put_message(msg); } @@ -1658,10 +1760,11 @@ } call->app_mark -= qty; - if (call->app_read_buf) call->app_read_buf += qty; + if (call->app_read_buf) + call->app_read_buf += qty; } - if (call->app_mark==0) { + if (call->app_mark == 0) { call->app_async_read = 0; call->app_mark = RXRPC_APP_MARK_EOF; call->app_read_buf = NULL; @@ -1695,7 +1798,8 @@ } if (call->app_last_rcv) { - _debug("Insufficient data (%Zu/%Zu)",call->app_ready_qty,call->app_mark); + _debug("Insufficient data (%Zu/%Zu)", + call->app_ready_qty, call->app_mark); call->app_async_read = 0; call->app_mark = RXRPC_APP_MARK_EOF; call->app_read_buf = NULL; @@ -1710,22 +1814,26 @@ /*****************************************************************************/ /* - * attempt to read the specified amount of data from the call's ready queue into the buffer - * provided - * - since this func is the only one going to look at packets queued on app_readyq, we don't need - * a lock to modify or access them, only to modify the queue pointers + * attempt to read the specified amount of data from the call's ready queue + * into the buffer provided + * - since this func is the only one going to look at packets queued on + * app_readyq, we don't need a lock to modify or access them, only to modify + * the queue pointers * - if the buffer pointer is NULL, then data is merely drained, not copied - * - if flags&RXRPC_CALL_READ_BLOCK, then the function will wait until there is enough data or an - * error will be generated - * - note that the caller must have added the calling task to the call's wait queue beforehand - * - if flags&RXRPC_CALL_READ_ALL, then an error will be generated if this function doesn't read - * all available data + * - if flags&RXRPC_CALL_READ_BLOCK, then the function will wait until there is + * enough data or an error will be generated + * - note that the caller must have added the calling task to the call's wait + * queue beforehand + * - if flags&RXRPC_CALL_READ_ALL, then an error will be generated if this + * function doesn't read all available data */ -int rxrpc_call_read_data(struct rxrpc_call *call, void *buffer, size_t size, int flags) +int rxrpc_call_read_data(struct rxrpc_call *call, + void *buffer, size_t size, int flags) { int ret; - _enter("%p{arq=%Zu},%p,%Zd,%x",call,call->app_ready_qty,buffer,size,flags); + _enter("%p{arq=%Zu},%p,%Zd,%x", + call, call->app_ready_qty, buffer, size, flags); spin_lock(&call->lock); @@ -1744,9 +1852,10 @@ ret = __rxrpc_call_read_data(call); switch (ret) { case 0: - if (flags&RXRPC_CALL_READ_ALL && (!call->app_last_rcv || call->app_ready_qty>0)) { + if (flags & RXRPC_CALL_READ_ALL && + (!call->app_last_rcv || call->app_ready_qty > 0)) { _leave(" = -EBADMSG"); - __rxrpc_call_abort(call,-EBADMSG); + __rxrpc_call_abort(call, -EBADMSG); return -EBADMSG; } @@ -1757,18 +1866,18 @@ case -ECONNABORTED: spin_unlock(&call->lock); - _leave(" = %d [aborted]",ret); + _leave(" = %d [aborted]", ret); return ret; - default: - __rxrpc_call_abort(call,ret); - _leave(" = %d",ret); + default: + __rxrpc_call_abort(call, ret); + _leave(" = %d", ret); return ret; case -EAGAIN: spin_unlock(&call->lock); - if (!(flags&RXRPC_CALL_READ_BLOCK)) { + if (!(flags & RXRPC_CALL_READ_BLOCK)) { _leave(" = -EAGAIN"); return -EAGAIN; } @@ -1789,7 +1898,7 @@ return -EINTR; } - if (call->app_call_state==RXRPC_CSTATE_ERROR) { + if (call->app_call_state == RXRPC_CSTATE_ERROR) { _leave(" = -ECONNABORTED"); return -ECONNABORTED; } @@ -1804,8 +1913,8 @@ /* * write data to a call * - the data may not be sent immediately if it doesn't fill a buffer - * - if we can't queue all the data for buffering now, siov[] will have been adjusted to take - * account of what has been sent + * - if we can't queue all the data for buffering now, siov[] will have been + * adjusted to take account of what has been sent */ int rxrpc_call_write_data(struct rxrpc_call *call, size_t sioc, @@ -1821,7 +1930,9 @@ char *buf; int ret; - _enter("%p,%Zu,%p,%02x,%x,%d,%p",call,sioc,siov,rxhdr_flags,alloc_flags,dup_data,size_sent); + _enter("%p,%Zu,%p,%02x,%x,%d,%p", + call, sioc, siov, rxhdr_flags, alloc_flags, dup_data, + size_sent); *size_sent = 0; size = 0; @@ -1840,8 +1951,9 @@ /* calculate how much data we've been given */ sptr = siov; - for (; sioc>0; sptr++, sioc--) { - if (!sptr->iov_len) continue; + for (; sioc > 0; sptr++, sioc--) { + if (!sptr->iov_len) + continue; if (!sptr->iov_base) goto out; @@ -1849,27 +1961,30 @@ size += sptr->iov_len; } - _debug("- size=%Zu mtu=%Zu",size,call->conn->mtu_size); + _debug("- size=%Zu mtu=%Zu", size, call->conn->mtu_size); do { /* make sure there's a message under construction */ if (!call->snd_nextmsg) { /* no - allocate a message with no data yet attached */ - ret = rxrpc_conn_newmsg(call->conn,call,RXRPC_PACKET_TYPE_DATA, - 0,NULL,alloc_flags,&call->snd_nextmsg); - if (ret<0) + ret = rxrpc_conn_newmsg(call->conn, call, + RXRPC_PACKET_TYPE_DATA, + 0, NULL, alloc_flags, + &call->snd_nextmsg); + if (ret < 0) goto out; - _debug("- allocated new message [ds=%Zu]",call->snd_nextmsg->dsize); + _debug("- allocated new message [ds=%Zu]", + call->snd_nextmsg->dsize); } msg = call->snd_nextmsg; msg->hdr.flags |= rxhdr_flags; /* deal with zero-length terminal packet */ - if (size==0) { + if (size == 0) { if (rxhdr_flags & RXRPC_LAST_PACKET) { ret = rxrpc_call_flush(call); - if (ret<0) + if (ret < 0) goto out; } break; @@ -1877,24 +1992,27 @@ /* work out how much space current packet has available */ space = call->conn->mtu_size - msg->dsize; - chunk = min(space,size); + chunk = min(space, size); - _debug("- [before] space=%Zu chunk=%Zu",space,chunk); + _debug("- [before] space=%Zu chunk=%Zu", space, chunk); while (!siov->iov_len) siov++; - /* if we are going to have to duplicate the data then coalesce it too */ + /* if we are going to have to duplicate the data then coalesce + * it too */ if (dup_data) { /* don't allocate more that 1 page at a time */ - if (chunk>PAGE_SIZE) + if (chunk > PAGE_SIZE) chunk = PAGE_SIZE; /* allocate a data buffer and attach to the message */ - buf = kmalloc(chunk,alloc_flags); + buf = kmalloc(chunk, alloc_flags); if (unlikely(!buf)) { - if (msg->dsize==sizeof(struct rxrpc_header)) { - /* discard an empty msg and wind back the seq counter */ + if (msg->dsize == + sizeof(struct rxrpc_header)) { + /* discard an empty msg and wind back + * the seq counter */ rxrpc_put_message(msg); call->snd_nextmsg = NULL; call->snd_seq_count--; @@ -1905,7 +2023,7 @@ } tmp = msg->dcount++; - set_bit(tmp,&msg->dfree); + set_bit(tmp, &msg->dfree); msg->data[tmp].iov_base = buf; msg->data[tmp].iov_len = chunk; msg->dsize += chunk; @@ -1913,9 +2031,9 @@ size -= chunk; /* load the buffer with data */ - while (chunk>0) { - tmp = min(chunk,siov->iov_len); - memcpy(buf,siov->iov_base,tmp); + while (chunk > 0) { + tmp = min(chunk, siov->iov_len); + memcpy(buf, siov->iov_base, tmp); buf += tmp; siov->iov_base += tmp; siov->iov_len -= tmp; @@ -1926,7 +2044,8 @@ } else { /* we want to attach the supplied buffers directly */ - while (chunk>0 && msg->dcount 0 && + msg->dcount < RXRPC_MSG_MAX_IOCS) { tmp = msg->dcount++; msg->data[tmp].iov_base = siov->iov_base; msg->data[tmp].iov_len = siov->iov_len; @@ -1938,20 +2057,20 @@ } } - _debug("- [loaded] chunk=%Zu size=%Zu",chunk,size); + _debug("- [loaded] chunk=%Zu size=%Zu", chunk, size); /* dispatch the message when full, final or requesting ACK */ - if (msg->dsize>=call->conn->mtu_size || rxhdr_flags) { + if (msg->dsize >= call->conn->mtu_size || rxhdr_flags) { ret = rxrpc_call_flush(call); - if (ret<0) + if (ret < 0) goto out; } - } while(size>0); + } while(size > 0); ret = 0; out: - _leave(" = %d (%Zd queued, %Zd rem)",ret,*size_sent,size); + _leave(" = %d (%Zd queued, %Zd rem)", ret, *size_sent, size); return ret; } /* end rxrpc_call_write_data() */ @@ -1965,7 +2084,7 @@ struct rxrpc_message *msg; int ret = 0; - _enter("%p",call); + _enter("%p", call); rxrpc_get_call(call); @@ -1983,25 +2102,28 @@ } _proto("Sending DATA message { ds=%Zu dc=%u df=%02lu }", - msg->dsize,msg->dcount,msg->dfree); + msg->dsize, msg->dcount, msg->dfree); /* queue and adjust call state */ spin_lock(&call->lock); - list_add_tail(&msg->link,&call->acks_pendq); + list_add_tail(&msg->link, &call->acks_pendq); - /* decide what to do depending on current state and if this is the last packet */ + /* decide what to do depending on current state and if this is + * the last packet */ ret = -EINVAL; switch (call->app_call_state) { case RXRPC_CSTATE_SRVR_SND_REPLY: if (msg->hdr.flags & RXRPC_LAST_PACKET) { - call->app_call_state = RXRPC_CSTATE_SRVR_RCV_FINAL_ACK; + call->app_call_state = + RXRPC_CSTATE_SRVR_RCV_FINAL_ACK; _state(call); } break; case RXRPC_CSTATE_CLNT_SND_ARGS: if (msg->hdr.flags & RXRPC_LAST_PACKET) { - call->app_call_state = RXRPC_CSTATE_CLNT_RCV_REPLY; + call->app_call_state = + RXRPC_CSTATE_CLNT_RCV_REPLY; _state(call); } break; @@ -2016,19 +2138,20 @@ call->acks_pend_cnt++; mod_timer(&call->acks_timeout, - __rxrpc_rtt_based_timeout(call,rxrpc_call_acks_timeout)); + __rxrpc_rtt_based_timeout(call, + rxrpc_call_acks_timeout)); spin_unlock(&call->lock); - ret = rxrpc_conn_sendmsg(call->conn,msg); - if (ret==0) + ret = rxrpc_conn_sendmsg(call->conn, msg); + if (ret == 0) call->pkt_snd_count++; } out: rxrpc_put_call(call); - _leave(" = %d",ret); + _leave(" = %d", ret); return ret; } /* end rxrpc_call_flush() */ @@ -2043,14 +2166,16 @@ struct list_head *_p; rxrpc_seq_t seq = 0; - _enter("%p,%u",call,highest); + _enter("%p,%u", call, highest); _proto("Rx Resend required"); /* handle too many resends */ - if (call->snd_resend_cnt>=rxrpc_call_max_resend) { - _debug("Aborting due to too many resends (rcv=%d)",call->pkt_rcv_count); - rxrpc_call_abort(call,call->pkt_rcv_count>0?-EIO:-ETIMEDOUT); + if (call->snd_resend_cnt >= rxrpc_call_max_resend) { + _debug("Aborting due to too many resends (rcv=%d)", + call->pkt_rcv_count); + rxrpc_call_abort(call, + call->pkt_rcv_count > 0 ? -EIO : -ETIMEDOUT); _leave(""); return; } @@ -2059,35 +2184,38 @@ call->snd_resend_cnt++; for (;;) { /* determine which the next packet we might need to ACK is */ - if (seq<=call->acks_dftv_seq) + if (seq <= call->acks_dftv_seq) seq = call->acks_dftv_seq; seq++; - if (seq>highest) + if (seq > highest) break; /* look for the packet in the pending-ACK queue */ - list_for_each(_p,&call->acks_pendq) { - msg = list_entry(_p,struct rxrpc_message,link); - if (msg->seq==seq) + list_for_each(_p, &call->acks_pendq) { + msg = list_entry(_p, struct rxrpc_message, link); + if (msg->seq == seq) goto found_msg; } - panic("%s(%p,%d): Inconsistent pending-ACK queue (ds=%u sc=%u sq=%u)\n", - __FUNCTION__,call,highest,call->acks_dftv_seq,call->snd_seq_count,seq); + panic("%s(%p,%d):" + " Inconsistent pending-ACK queue (ds=%u sc=%u sq=%u)\n", + __FUNCTION__, call, highest, + call->acks_dftv_seq, call->snd_seq_count, seq); found_msg: - if (msg->state!=RXRPC_MSG_SENT) + if (msg->state != RXRPC_MSG_SENT) continue; /* only un-ACK'd packets */ rxrpc_get_message(msg); spin_unlock(&call->lock); - /* send each message again (and ignore any errors we might incur) */ + /* send each message again (and ignore any errors we might + * incur) */ _proto("Resending DATA message { ds=%Zu dc=%u df=%02lu }", - msg->dsize,msg->dcount,msg->dfree); + msg->dsize, msg->dcount, msg->dfree); - if (rxrpc_conn_sendmsg(call->conn,msg)==0) + if (rxrpc_conn_sendmsg(call->conn, msg) == 0) call->pkt_snd_count++; rxrpc_put_message(msg); @@ -2096,7 +2224,8 @@ } /* reset the timeout */ - mod_timer(&call->acks_timeout,__rxrpc_rtt_based_timeout(call,rxrpc_call_acks_timeout)); + mod_timer(&call->acks_timeout, + __rxrpc_rtt_based_timeout(call, rxrpc_call_acks_timeout)); spin_unlock(&call->lock); @@ -2109,10 +2238,10 @@ */ void rxrpc_call_handle_error(struct rxrpc_call *call, int local, int errno) { - _enter("%p{%u},%d",call,ntohl(call->call_id),errno); + _enter("%p{%u},%d", call, ntohl(call->call_id), errno); /* if this call is already aborted, then just wake up any waiters */ - if (call->app_call_state==RXRPC_CSTATE_ERROR) { + if (call->app_call_state == RXRPC_CSTATE_ERROR) { call->app_error_func(call); } else { @@ -2124,10 +2253,10 @@ call->app_err_state = RXRPC_ESTATE_LOCAL_ERROR; else call->app_err_state = RXRPC_ESTATE_REMOTE_ERROR; - call->app_errno = errno; - call->app_mark = RXRPC_APP_MARK_EOF; - call->app_read_buf = NULL; - call->app_async_read = 0; + call->app_errno = errno; + call->app_mark = RXRPC_APP_MARK_EOF; + call->app_read_buf = NULL; + call->app_async_read = 0; /* map the error */ call->app_aemap_func(call); diff -Nru a/net/rxrpc/connection.c b/net/rxrpc/connection.c --- a/net/rxrpc/connection.c Mon Sep 22 00:30:22 2003 +++ b/net/rxrpc/connection.c Mon Sep 22 00:30:22 2003 @@ -28,18 +28,20 @@ LIST_HEAD(rxrpc_conns); DECLARE_RWSEM(rxrpc_conns_sem); +unsigned long rxrpc_conn_timeout = 60 * 60; static void __rxrpc_conn_timeout(rxrpc_timer_t *timer) { - struct rxrpc_connection *conn = list_entry(timer,struct rxrpc_connection,timeout); + struct rxrpc_connection *conn = + list_entry(timer, struct rxrpc_connection, timeout); - _debug("Rx CONN TIMEOUT [%p{u=%d}]",conn,atomic_read(&conn->usage)); + _debug("Rx CONN TIMEOUT [%p{u=%d}]", conn, atomic_read(&conn->usage)); rxrpc_conn_do_timeout(conn); } static const struct rxrpc_timer_ops rxrpc_conn_timer_ops = { - .timed_out = __rxrpc_conn_timeout, + timed_out: __rxrpc_conn_timeout, }; /*****************************************************************************/ @@ -54,19 +56,20 @@ _enter("%p",peer); /* allocate and initialise a connection record */ - conn = kmalloc(sizeof(struct rxrpc_connection),GFP_KERNEL); + conn = kmalloc(sizeof(struct rxrpc_connection), GFP_KERNEL); if (!conn) { _leave(" = -ENOMEM"); return -ENOMEM; } - memset(conn,0,sizeof(struct rxrpc_connection)); - atomic_set(&conn->usage,1); + memset(conn, 0, sizeof(struct rxrpc_connection)); + atomic_set(&conn->usage, 1); INIT_LIST_HEAD(&conn->link); + INIT_LIST_HEAD(&conn->id_link); init_waitqueue_head(&conn->chanwait); spin_lock_init(&conn->lock); - rxrpc_timer_init(&conn->timeout,&rxrpc_conn_timer_ops); + rxrpc_timer_init(&conn->timeout, &rxrpc_conn_timer_ops); do_gettimeofday(&conn->atime); conn->mtu_size = 1024; @@ -75,7 +78,7 @@ __RXACCT(atomic_inc(&rxrpc_connection_count)); *_conn = conn; - _leave(" = 0 (%p)",conn); + _leave(" = 0 (%p)", conn); return 0; } /* end __rxrpc_create_connection() */ @@ -85,61 +88,123 @@ * create a new connection record for outgoing connections */ int rxrpc_create_connection(struct rxrpc_transport *trans, - u16 port, - u32 addr, - unsigned short service_id, + uint16_t port, + uint32_t addr, + uint16_t service_id, void *security, struct rxrpc_connection **_conn) { - struct rxrpc_connection *conn; + struct rxrpc_connection *candidate, *conn; struct rxrpc_peer *peer; + struct list_head *_p; + uint32_t connid; int ret; - _enter("%p{%hu},%u,%hu",trans,trans->port,ntohs(port),service_id); + _enter("%p{%hu},%u,%hu", trans, trans->port, ntohs(port), service_id); /* get a peer record */ - ret = rxrpc_peer_lookup(trans,addr,&peer); - if (ret<0) { - _leave(" = %d",ret); + ret = rxrpc_peer_lookup(trans, addr, &peer); + if (ret < 0) { + _leave(" = %d", ret); return ret; } /* allocate and initialise a connection record */ - ret = __rxrpc_create_connection(peer,&conn); - if (ret<0) { + ret = __rxrpc_create_connection(peer, &candidate); + if (ret < 0) { rxrpc_put_peer(peer); - _leave(" = %d",ret); + _leave(" = %d", ret); return ret; } /* fill in the specific bits */ - conn->addr.sin_family = AF_INET; - conn->addr.sin_port = port; - conn->addr.sin_addr.s_addr = addr; - - conn->in_epoch = rxrpc_epoch; - conn->out_epoch = rxrpc_epoch; - conn->in_clientflag = 0; - conn->out_clientflag = RXRPC_CLIENT_INITIATED; - conn->conn_id = htonl((unsigned long) conn & RXRPC_CIDMASK); - conn->service_id = htons(service_id); + candidate->addr.sin_family = AF_INET; + candidate->addr.sin_port = port; + candidate->addr.sin_addr.s_addr = addr; + + candidate->in_epoch = rxrpc_epoch; + candidate->out_epoch = rxrpc_epoch; + candidate->in_clientflag = 0; + candidate->out_clientflag = RXRPC_CLIENT_INITIATED; + candidate->service_id = htons(service_id); + + /* invent a unique connection ID */ + write_lock(&peer->conn_idlock); + + try_next_id: + connid = htonl(peer->conn_idcounter & RXRPC_CIDMASK); + peer->conn_idcounter += RXRPC_MAXCALLS; + + list_for_each(_p, &peer->conn_idlist) { + conn = list_entry(_p, struct rxrpc_connection, id_link); + if (connid == conn->conn_id) + goto try_next_id; + if (connid > conn->conn_id) + break; + } + + _debug("selected candidate conn ID %x.%u", + ntohl(peer->addr.s_addr), ntohl(connid)); + + candidate->conn_id = connid; + list_add_tail(&candidate->id_link, _p); + + write_unlock(&peer->conn_idlock); /* attach to peer */ - conn->peer = peer; + candidate->peer = peer; write_lock(&peer->conn_lock); - list_add_tail(&conn->link,&peer->conn_active); + + /* search the peer's transport graveyard list */ + spin_lock(&peer->conn_gylock); + list_for_each(_p, &peer->conn_graveyard) { + conn = list_entry(_p, struct rxrpc_connection, link); + if (conn->addr.sin_port == candidate->addr.sin_port && + conn->security_ix == candidate->security_ix && + conn->service_id == candidate->service_id && + conn->in_clientflag == 0) + goto found_in_graveyard; + } + spin_unlock(&peer->conn_gylock); + + /* pick the new candidate */ + _debug("created connection: {%08x} [out]", htonl(candidate->conn_id)); atomic_inc(&peer->conn_count); + conn = candidate; + candidate = NULL; + + make_active: + list_add_tail(&conn->link, &peer->conn_active); write_unlock(&peer->conn_lock); - down_write(&rxrpc_conns_sem); - list_add_tail(&conn->proc_link,&rxrpc_conns); - up_write(&rxrpc_conns_sem); + if (candidate) { + write_lock(&peer->conn_idlock); + list_del(&candidate->id_link); + write_unlock(&peer->conn_idlock); + + __RXACCT(atomic_dec(&rxrpc_connection_count)); + kfree(candidate); + } + else { + down_write(&rxrpc_conns_sem); + list_add_tail(&conn->proc_link, &rxrpc_conns); + up_write(&rxrpc_conns_sem); + } *_conn = conn; - _leave(" = 0 (%p)",conn); + _leave(" = 0 (%p)", conn); return 0; + + /* handle resurrecting a connection from the graveyard */ + found_in_graveyard: + _debug("resurrecting connection: {%08x} [out]", htonl(conn->conn_id)); + rxrpc_get_connection(conn); + rxrpc_krxtimod_del_timer(&conn->timeout); + list_del_init(&conn->link); + spin_unlock(&peer->conn_gylock); + goto make_active; } /* end rxrpc_create_connection() */ /*****************************************************************************/ @@ -159,7 +224,10 @@ u8 x_clflag; _enter("%p{{%hu}},%u,%hu", - peer,peer->trans->port,ntohs(msg->pkt->h.uh->source),ntohs(msg->hdr.serviceId)); + peer, + peer->trans->port, + ntohs(msg->pkt->h.uh->source), + ntohs(msg->hdr.serviceId)); x_port = msg->pkt->h.uh->source; x_epoch = msg->hdr.epoch; @@ -170,8 +238,8 @@ /* [common case] search the transport's active list first */ read_lock(&peer->conn_lock); - list_for_each(_p,&peer->conn_active) { - conn = list_entry(_p,struct rxrpc_connection,link); + list_for_each(_p, &peer->conn_active) { + conn = list_entry(_p, struct rxrpc_connection, link); if (conn->addr.sin_port == x_port && conn->in_epoch == x_epoch && conn->conn_id == x_connid && @@ -187,9 +255,9 @@ * - only examine the graveyard for an outbound connection */ if (x_clflag) { - ret = __rxrpc_create_connection(peer,&candidate); - if (ret<0) { - _leave(" = %d",ret); + ret = __rxrpc_create_connection(peer, &candidate); + if (ret < 0) { + _leave(" = %d", ret); return ret; } @@ -206,10 +274,11 @@ candidate->security_ix = x_secix; } - /* search the active list again, just in case it appeared whilst we were busy */ + /* search the active list again, just in case it appeared whilst we + * were busy */ write_lock(&peer->conn_lock); - list_for_each(_p,&peer->conn_active) { - conn = list_entry(_p,struct rxrpc_connection,link); + list_for_each(_p, &peer->conn_active) { + conn = list_entry(_p, struct rxrpc_connection, link); if (conn->addr.sin_port == x_port && conn->in_epoch == x_epoch && conn->conn_id == x_connid && @@ -221,8 +290,8 @@ /* search the transport's graveyard list */ spin_lock(&peer->conn_gylock); - list_for_each(_p,&peer->conn_graveyard) { - conn = list_entry(_p,struct rxrpc_connection,link); + list_for_each(_p, &peer->conn_graveyard) { + conn = list_entry(_p, struct rxrpc_connection, link); if (conn->addr.sin_port == x_port && conn->in_epoch == x_epoch && conn->conn_id == x_connid && @@ -241,6 +310,7 @@ } /* we can now add the new candidate to the list */ + _debug("created connection: {%08x} [in]", htonl(candidate->conn_id)); rxrpc_get_peer(peer); conn = candidate; candidate = NULL; @@ -248,25 +318,29 @@ fresh = 1; make_active: - list_add_tail(&conn->link,&peer->conn_active); + list_add_tail(&conn->link, &peer->conn_active); success_uwfree: write_unlock(&peer->conn_lock); if (candidate) { + write_lock(&peer->conn_idlock); + list_del(&candidate->id_link); + write_unlock(&peer->conn_idlock); + __RXACCT(atomic_dec(&rxrpc_connection_count)); kfree(candidate); } if (fresh) { down_write(&rxrpc_conns_sem); - list_add_tail(&conn->proc_link,&rxrpc_conns); + list_add_tail(&conn->proc_link, &rxrpc_conns); up_write(&rxrpc_conns_sem); } success: *_conn = conn; - _leave(" = 0 (%p)",conn); + _leave(" = 0 (%p)", conn); return 0; /* handle the connection being found in the active list straight off */ @@ -277,6 +351,7 @@ /* handle resurrecting a connection from the graveyard */ found_in_graveyard: + _debug("resurrecting connection: {%08x} [in]", htonl(conn->conn_id)); rxrpc_get_peer(peer); rxrpc_get_connection(conn); rxrpc_krxtimod_del_timer(&conn->timeout); @@ -284,7 +359,8 @@ spin_unlock(&peer->conn_gylock); goto make_active; - /* handle finding the connection on the second time through the active list */ + /* handle finding the connection on the second time through the active + * list */ found_active_second_chance: rxrpc_get_connection(conn); goto success_uwfree; @@ -294,19 +370,26 @@ /*****************************************************************************/ /* * finish using a connection record - * - it will be transferred to the peer's connection graveyard when refcount reaches 0 + * - it will be transferred to the peer's connection graveyard when refcount + * reaches 0 */ void rxrpc_put_connection(struct rxrpc_connection *conn) { - struct rxrpc_peer *peer = conn->peer; + struct rxrpc_peer *peer; + + if (!conn) + return; + + _enter("%p{u=%d p=%hu}", + conn, atomic_read(&conn->usage), ntohs(conn->addr.sin_port)); - _enter("%p{u=%d p=%hu}",conn,atomic_read(&conn->usage),ntohs(conn->addr.sin_port)); + peer = conn->peer; + spin_lock(&peer->conn_gylock); /* sanity check */ - if (atomic_read(&conn->usage)<=0) + if (atomic_read(&conn->usage) <= 0) BUG(); - spin_lock(&peer->conn_gylock); if (likely(!atomic_dec_and_test(&conn->usage))) { spin_unlock(&peer->conn_gylock); _leave(""); @@ -314,11 +397,11 @@ } /* move to graveyard queue */ + _debug("burying connection: {%08x}", htonl(conn->conn_id)); list_del(&conn->link); - list_add_tail(&conn->link,&peer->conn_graveyard); + list_add_tail(&conn->link, &peer->conn_graveyard); - /* discard in 100 secs */ - rxrpc_krxtimod_add_timer(&conn->timeout,20*HZ); + rxrpc_krxtimod_add_timer(&conn->timeout, rxrpc_conn_timeout * HZ); spin_unlock(&peer->conn_gylock); @@ -335,16 +418,17 @@ { struct rxrpc_peer *peer; - _enter("%p{u=%d p=%hu}",conn,atomic_read(&conn->usage),ntohs(conn->addr.sin_port)); + _enter("%p{u=%d p=%hu}", + conn, atomic_read(&conn->usage), ntohs(conn->addr.sin_port)); peer = conn->peer; - if (atomic_read(&conn->usage)<0) + if (atomic_read(&conn->usage) < 0) BUG(); /* remove from graveyard if still dead */ spin_lock(&peer->conn_gylock); - if (atomic_read(&conn->usage)==0) { + if (atomic_read(&conn->usage) == 0) { list_del_init(&conn->link); } else { @@ -357,12 +441,17 @@ return; /* resurrected */ } - _debug("--- Destroying Connection %p ---",conn); + _debug("--- Destroying Connection %p{%08x} ---", + conn, htonl(conn->conn_id)); down_write(&rxrpc_conns_sem); list_del(&conn->proc_link); up_write(&rxrpc_conns_sem); + write_lock(&peer->conn_idlock); + list_del(&conn->id_link); + write_unlock(&peer->conn_idlock); + __RXACCT(atomic_dec(&rxrpc_connection_count)); kfree(conn); @@ -379,12 +468,12 @@ */ void rxrpc_conn_clearall(struct rxrpc_peer *peer) { - DECLARE_WAITQUEUE(myself,current); + DECLARE_WAITQUEUE(myself, current); struct rxrpc_connection *conn; int err; - _enter("%p",peer); + _enter("%p", peer); /* there shouldn't be any active conns remaining */ if (!list_empty(&peer->conn_active)) @@ -393,11 +482,12 @@ /* manually timeout all conns in the graveyard */ spin_lock(&peer->conn_gylock); while (!list_empty(&peer->conn_graveyard)) { - conn = list_entry(peer->conn_graveyard.next,struct rxrpc_connection,link); + conn = list_entry(peer->conn_graveyard.next, + struct rxrpc_connection, link); err = rxrpc_krxtimod_del_timer(&conn->timeout); spin_unlock(&peer->conn_gylock); - if (err==0) + if (err == 0) rxrpc_conn_do_timeout(conn); spin_lock(&peer->conn_gylock); @@ -406,27 +496,27 @@ /* wait for the the conn graveyard to be completely cleared */ set_current_state(TASK_UNINTERRUPTIBLE); - add_wait_queue(&peer->conn_gy_waitq,&myself); + add_wait_queue(&peer->conn_gy_waitq, &myself); - while (atomic_read(&peer->conn_count)!=0) { + while (atomic_read(&peer->conn_count) != 0) { schedule(); set_current_state(TASK_UNINTERRUPTIBLE); } - remove_wait_queue(&peer->conn_gy_waitq,&myself); + remove_wait_queue(&peer->conn_gy_waitq, &myself); set_current_state(TASK_RUNNING); _leave(""); - } /* end rxrpc_conn_clearall() */ /*****************************************************************************/ /* - * allocate and prepare a message for sending out through the transport endpoint + * allocate and prepare a message for sending out through the transport + * endpoint */ int rxrpc_conn_newmsg(struct rxrpc_connection *conn, struct rxrpc_call *call, - u8 type, + uint8_t type, int dcount, struct iovec diov[], int alloc_flags, @@ -435,21 +525,21 @@ struct rxrpc_message *msg; int loop; - _enter("%p{%d},%p,%u",conn,ntohs(conn->addr.sin_port),call,type); + _enter("%p{%d},%p,%u", conn, ntohs(conn->addr.sin_port), call, type); - if (dcount>3) { + if (dcount > 3) { _leave(" = -EINVAL"); return -EINVAL; } - msg = kmalloc(sizeof(struct rxrpc_message),alloc_flags); + msg = kmalloc(sizeof(struct rxrpc_message), alloc_flags); if (!msg) { _leave(" = -ENOMEM"); return -ENOMEM; } - memset(msg,0,sizeof(*msg)); - atomic_set(&msg->usage,1); + memset(msg, 0, sizeof(*msg)); + atomic_set(&msg->usage, 1); INIT_LIST_HEAD(&msg->link); @@ -471,7 +561,8 @@ msg->hdr.seq = htonl(msg->seq); break; case RXRPC_PACKET_TYPE_ACK: - /* ACK sequence numbers are complicated. The following may be wrong: + /* ACK sequence numbers are complicated. The following + * may be wrong: * - jumbo packet ACKs should have a seq number * - normal ACKs should not */ @@ -485,7 +576,7 @@ msg->data[0].iov_len = sizeof(msg->hdr); msg->data[0].iov_base = &msg->hdr; - for (loop=0; loopdsize += diov[loop].iov_len; msg->data[loop+1].iov_len = diov[loop].iov_len; msg->data[loop+1].iov_base = diov[loop].iov_base; @@ -493,7 +584,7 @@ __RXACCT(atomic_inc(&rxrpc_message_count)); *_msg = msg; - _leave(" = 0 (%p) #%d",msg,atomic_read(&rxrpc_message_count)); + _leave(" = 0 (%p) #%d", msg, atomic_read(&rxrpc_message_count)); return 0; } /* end rxrpc_conn_newmsg() */ @@ -505,13 +596,14 @@ { int loop; - _enter("%p #%d",msg,atomic_read(&rxrpc_message_count)); + _enter("%p #%d", msg, atomic_read(&rxrpc_message_count)); - if (msg->pkt) kfree_skb(msg->pkt); - if (msg->conn) rxrpc_put_connection(msg->conn); + if (msg->pkt) + kfree_skb(msg->pkt); + rxrpc_put_connection(msg->conn); - for (loop=0; loop<8; loop++) - if (test_bit(loop,&msg->dfree)) + for (loop = 0; loop < 8; loop++) + if (test_bit(loop, &msg->dfree)) kfree(msg->data[loop].iov_base); __RXACCT(atomic_dec(&rxrpc_message_count)); @@ -524,13 +616,14 @@ /* * send a message out through the transport endpoint */ -int rxrpc_conn_sendmsg(struct rxrpc_connection *conn, struct rxrpc_message *msg) +int rxrpc_conn_sendmsg(struct rxrpc_connection *conn, + struct rxrpc_message *msg) { struct msghdr msghdr; mm_segment_t oldfs; int ret; - _enter("%p{%d}",conn,ntohs(conn->addr.sin_port)); + _enter("%p{%d}", conn, ntohs(conn->addr.sin_port)); /* fill in some fields in the header */ spin_lock(&conn->lock); @@ -545,7 +638,7 @@ msghdr.msg_iovlen = msg->dcount; msghdr.msg_control = NULL; msghdr.msg_controllen = 0; - msghdr.msg_flags = MSG_CONFIRM|MSG_DONTWAIT; + msghdr.msg_flags = MSG_CONFIRM | MSG_DONTWAIT; _net("Sending message type %d of %Zd bytes to %08x:%d", msg->hdr.type, @@ -556,10 +649,10 @@ /* send the message */ oldfs = get_fs(); set_fs(KERNEL_DS); - ret = sock_sendmsg(conn->trans->socket,&msghdr,msg->dsize); + ret = sock_sendmsg(conn->trans->socket, &msghdr, msg->dsize); set_fs(oldfs); - if (ret<0) { + if (ret < 0) { msg->state = RXRPC_MSG_ERROR; } else { @@ -572,7 +665,7 @@ spin_unlock(&conn->lock); } - _leave(" = %d",ret); + _leave(" = %d", ret); return ret; } /* end rxrpc_conn_sendmsg() */ @@ -590,7 +683,7 @@ unsigned cix, seq; int ret = 0; - _enter("%p,%p,%p",conn,call,msg); + _enter("%p,%p,%p", conn, call, msg); if (!call) { cix = ntohl(msg->hdr.cid) & RXRPC_CHANNELMASK; @@ -600,7 +693,7 @@ if (!call || call->call_id != msg->hdr.callNumber) { spin_unlock(&conn->lock); - rxrpc_trans_immediate_abort(conn->trans,msg,-ENOENT); + rxrpc_trans_immediate_abort(conn->trans, msg, -ENOENT); goto out; } else { @@ -622,19 +715,21 @@ call->pkt_rcv_count++; if (msg->pkt->dst && msg->pkt->dst->dev) - conn->peer->if_mtu = msg->pkt->dst->dev->mtu - msg->pkt->dst->dev->hard_header_len; + conn->peer->if_mtu = + msg->pkt->dst->dev->mtu - + msg->pkt->dst->dev->hard_header_len; /* queue on the call in seq order */ rxrpc_get_message(msg); seq = msg->seq; spin_lock(&call->lock); - list_for_each(_p,&call->rcv_receiveq) { - pmsg = list_entry(_p,struct rxrpc_message,link); - if (pmsg->seq>seq) + list_for_each(_p, &call->rcv_receiveq) { + pmsg = list_entry(_p, struct rxrpc_message, link); + if (pmsg->seq > seq) break; } - list_add_tail(&msg->link,_p); + list_add_tail(&msg->link, _p); /* reset the activity timeout */ call->flags |= RXRPC_CALL_RCV_PKT; @@ -646,8 +741,7 @@ rxrpc_put_call(call); out: - _leave(" = %d",ret); - + _leave(" = %d", ret); return ret; } /* end rxrpc_conn_receive_call_packet() */ @@ -655,18 +749,19 @@ /* * handle an ICMP error being applied to a connection */ -void rxrpc_conn_handle_error(struct rxrpc_connection *conn, int local, int errno) +void rxrpc_conn_handle_error(struct rxrpc_connection *conn, + int local, int errno) { struct rxrpc_call *calls[4]; int loop; - _enter("%p{%d},%d",conn,ntohs(conn->addr.sin_port),errno); + _enter("%p{%d},%d", conn, ntohs(conn->addr.sin_port), errno); /* get a ref to all my calls in one go */ - memset(calls,0,sizeof(calls)); + memset(calls, 0, sizeof(calls)); spin_lock(&conn->lock); - for (loop=3; loop>=0; loop--) { + for (loop = 3; loop >= 0; loop--) { if (conn->channels[loop]) { calls[loop] = conn->channels[loop]; rxrpc_get_call(calls[loop]); @@ -676,9 +771,9 @@ spin_unlock(&conn->lock); /* now kick them all */ - for (loop=3; loop>=0; loop--) { + for (loop = 3; loop >= 0; loop--) { if (calls[loop]) { - rxrpc_call_handle_error(calls[loop],local,errno); + rxrpc_call_handle_error(calls[loop], local, errno); rxrpc_put_call(calls[loop]); } } diff -Nru a/net/rxrpc/internal.h b/net/rxrpc/internal.h --- a/net/rxrpc/internal.h Mon Sep 22 00:30:20 2003 +++ b/net/rxrpc/internal.h Mon Sep 22 00:30:20 2003 @@ -55,7 +55,7 @@ siginfo_t sinfo; spin_lock_irq(¤t->sighand->siglock); - dequeue_signal(current,¤t->blocked,&sinfo); + dequeue_signal(current, ¤t->blocked, &sinfo); spin_unlock_irq(¤t->sighand->siglock); } } @@ -71,6 +71,7 @@ */ extern struct list_head rxrpc_conns; extern struct rw_semaphore rxrpc_conns_sem; +extern unsigned long rxrpc_conn_timeout; extern void rxrpc_conn_do_timeout(struct rxrpc_connection *conn); extern void rxrpc_conn_clearall(struct rxrpc_peer *peer); @@ -80,6 +81,7 @@ */ extern struct list_head rxrpc_peers; extern struct rw_semaphore rxrpc_peers_sem; +extern unsigned long rxrpc_peer_timeout; extern void rxrpc_peer_calculate_rtt(struct rxrpc_peer *peer, struct rxrpc_message *msg, diff -Nru a/net/rxrpc/krxiod.c b/net/rxrpc/krxiod.c --- a/net/rxrpc/krxiod.c Mon Sep 22 00:30:18 2003 +++ b/net/rxrpc/krxiod.c Mon Sep 22 00:30:18 2003 @@ -44,6 +44,12 @@ daemonize("krxiod"); + /* only certain signals are of interest */ + spin_lock_irq(¤t->sighand->siglock); + siginitsetinv(¤t->blocked, 0); + recalc_sigpending(); + spin_unlock_irq(¤t->sighand->siglock); + /* loop around waiting for work to do */ do { /* wait for work or to be told to exit */ @@ -51,7 +57,7 @@ if (!atomic_read(&rxrpc_krxiod_qcount)) { set_current_state(TASK_INTERRUPTIBLE); - add_wait_queue(&rxrpc_krxiod_sleepq,&krxiod); + add_wait_queue(&rxrpc_krxiod_sleepq, &krxiod); for (;;) { set_current_state(TASK_INTERRUPTIBLE); @@ -63,7 +69,7 @@ schedule(); } - remove_wait_queue(&rxrpc_krxiod_sleepq,&krxiod); + remove_wait_queue(&rxrpc_krxiod_sleepq, &krxiod); set_current_state(TASK_RUNNING); } _debug("### End Wait"); @@ -78,12 +84,16 @@ spin_lock_irq(&rxrpc_krxiod_transportq_lock); if (!list_empty(&rxrpc_krxiod_transportq)) { - trans = list_entry(rxrpc_krxiod_transportq.next, - struct rxrpc_transport,krxiodq_link); + trans = list_entry( + rxrpc_krxiod_transportq.next, + struct rxrpc_transport, + krxiodq_link); + list_del_init(&trans->krxiodq_link); atomic_dec(&rxrpc_krxiod_qcount); - /* make sure it hasn't gone away and doesn't go away */ + /* make sure it hasn't gone away and doesn't go + * away */ if (atomic_read(&trans->usage)>0) rxrpc_get_transport(trans); else @@ -106,13 +116,16 @@ if (!list_empty(&rxrpc_krxiod_callq)) { call = list_entry(rxrpc_krxiod_callq.next, - struct rxrpc_call,rcv_krxiodq_lk); + struct rxrpc_call, + rcv_krxiodq_lk); list_del_init(&call->rcv_krxiodq_lk); atomic_dec(&rxrpc_krxiod_qcount); - /* make sure it hasn't gone away and doesn't go away */ - if (atomic_read(&call->usage)>0) { - _debug("@@@ KRXIOD Begin Attend Call %p",call); + /* make sure it hasn't gone away and doesn't go + * away */ + if (atomic_read(&call->usage) > 0) { + _debug("@@@ KRXIOD" + " Begin Attend Call %p",call); rxrpc_get_call(call); } else { @@ -125,7 +138,7 @@ if (call) { rxrpc_call_do_stuff(call); rxrpc_put_call(call); - _debug("@@@ KRXIOD End Attend Call %p",call); + _debug("@@@ KRXIOD End Attend Call %p", call); } } @@ -137,7 +150,7 @@ } while (!rxrpc_krxiod_die); /* and that's all */ - complete_and_exit(&rxrpc_krxiod_dead,0); + complete_and_exit(&rxrpc_krxiod_dead, 0); } /* end rxrpc_krxiod() */ @@ -147,7 +160,7 @@ */ int __init rxrpc_krxiod_init(void) { - return kernel_thread(rxrpc_krxiod,NULL,0); + return kernel_thread(rxrpc_krxiod, NULL, 0); } /* end rxrpc_krxiod_init() */ @@ -174,16 +187,17 @@ _enter(""); if (list_empty(&trans->krxiodq_link)) { - spin_lock_irqsave(&rxrpc_krxiod_transportq_lock,flags); + spin_lock_irqsave(&rxrpc_krxiod_transportq_lock, flags); if (list_empty(&trans->krxiodq_link)) { - if (atomic_read(&trans->usage)>0) { - list_add_tail(&trans->krxiodq_link,&rxrpc_krxiod_transportq); + if (atomic_read(&trans->usage) > 0) { + list_add_tail(&trans->krxiodq_link, + &rxrpc_krxiod_transportq); atomic_inc(&rxrpc_krxiod_qcount); } } - spin_unlock_irqrestore(&rxrpc_krxiod_transportq_lock,flags); + spin_unlock_irqrestore(&rxrpc_krxiod_transportq_lock, flags); wake_up_all(&rxrpc_krxiod_sleepq); } @@ -201,12 +215,12 @@ _enter(""); - spin_lock_irqsave(&rxrpc_krxiod_transportq_lock,flags); + spin_lock_irqsave(&rxrpc_krxiod_transportq_lock, flags); if (!list_empty(&trans->krxiodq_link)) { list_del_init(&trans->krxiodq_link); atomic_dec(&rxrpc_krxiod_qcount); } - spin_unlock_irqrestore(&rxrpc_krxiod_transportq_lock,flags); + spin_unlock_irqrestore(&rxrpc_krxiod_transportq_lock, flags); _leave(""); @@ -221,15 +235,16 @@ unsigned long flags; if (list_empty(&call->rcv_krxiodq_lk)) { - spin_lock_irqsave(&rxrpc_krxiod_callq_lock,flags); - if (atomic_read(&call->usage)>0) { - list_add_tail(&call->rcv_krxiodq_lk,&rxrpc_krxiod_callq); + spin_lock_irqsave(&rxrpc_krxiod_callq_lock, flags); + if (atomic_read(&call->usage) > 0) { + list_add_tail(&call->rcv_krxiodq_lk, + &rxrpc_krxiod_callq); atomic_inc(&rxrpc_krxiod_qcount); } - spin_unlock_irqrestore(&rxrpc_krxiod_callq_lock,flags); + spin_unlock_irqrestore(&rxrpc_krxiod_callq_lock, flags); } wake_up_all(&rxrpc_krxiod_sleepq); - + } /* end rxrpc_krxiod_queue_call() */ /*****************************************************************************/ @@ -240,11 +255,11 @@ { unsigned long flags; - spin_lock_irqsave(&rxrpc_krxiod_callq_lock,flags); + spin_lock_irqsave(&rxrpc_krxiod_callq_lock, flags); if (!list_empty(&call->rcv_krxiodq_lk)) { list_del_init(&call->rcv_krxiodq_lk); atomic_dec(&rxrpc_krxiod_qcount); } - spin_unlock_irqrestore(&rxrpc_krxiod_callq_lock,flags); + spin_unlock_irqrestore(&rxrpc_krxiod_callq_lock, flags); } /* end rxrpc_krxiod_dequeue_call() */ diff -Nru a/net/rxrpc/krxsecd.c b/net/rxrpc/krxsecd.c --- a/net/rxrpc/krxsecd.c Mon Sep 22 00:30:19 2003 +++ b/net/rxrpc/krxsecd.c Mon Sep 22 00:30:19 2003 @@ -36,7 +36,8 @@ static atomic_t rxrpc_krxsecd_qcount; -/* queue of unprocessed inbound messages with seqno #1 and RXRPC_CLIENT_INITIATED flag set */ +/* queue of unprocessed inbound messages with seqno #1 and + * RXRPC_CLIENT_INITIATED flag set */ static LIST_HEAD(rxrpc_krxsecd_initmsgq); static spinlock_t rxrpc_krxsecd_initmsgq_lock = SPIN_LOCK_UNLOCKED; @@ -48,14 +49,20 @@ */ static int rxrpc_krxsecd(void *arg) { - DECLARE_WAITQUEUE(krxsecd,current); + DECLARE_WAITQUEUE(krxsecd, current); int die; - printk("Started krxsecd %d\n",current->pid); + printk("Started krxsecd %d\n", current->pid); daemonize("krxsecd"); + /* only certain signals are of interest */ + spin_lock_irq(¤t->sighand->siglock); + siginitsetinv(¤t->blocked, 0); + recalc_sigpending(); + spin_unlock_irq(¤t->sighand->siglock); + /* loop around waiting for work to do */ do { /* wait for work or to be told to exit */ @@ -63,7 +70,7 @@ if (!atomic_read(&rxrpc_krxsecd_qcount)) { set_current_state(TASK_INTERRUPTIBLE); - add_wait_queue(&rxrpc_krxsecd_sleepq,&krxsecd); + add_wait_queue(&rxrpc_krxsecd_sleepq, &krxsecd); for (;;) { set_current_state(TASK_INTERRUPTIBLE); @@ -75,7 +82,7 @@ schedule(); } - remove_wait_queue(&rxrpc_krxsecd_sleepq,&krxsecd); + remove_wait_queue(&rxrpc_krxsecd_sleepq, &krxsecd); set_current_state(TASK_RUNNING); } die = rxrpc_krxsecd_die; @@ -91,7 +98,7 @@ if (!list_empty(&rxrpc_krxsecd_initmsgq)) { msg = list_entry(rxrpc_krxsecd_initmsgq.next, - struct rxrpc_message,link); + struct rxrpc_message, link); list_del_init(&msg->link); atomic_dec(&rxrpc_krxsecd_qcount); } @@ -112,7 +119,7 @@ } while (!die); /* and that's all */ - complete_and_exit(&rxrpc_krxsecd_dead,0); + complete_and_exit(&rxrpc_krxsecd_dead, 0); } /* end rxrpc_krxsecd() */ @@ -122,7 +129,7 @@ */ int __init rxrpc_krxsecd_init(void) { - return kernel_thread(rxrpc_krxsecd,NULL,0); + return kernel_thread(rxrpc_krxsecd, NULL, 0); } /* end rxrpc_krxsecd_init() */ @@ -154,11 +161,11 @@ /* move all the messages for this transport onto a temp list */ spin_lock(&rxrpc_krxsecd_initmsgq_lock); - list_for_each_safe(_p,_n,&rxrpc_krxsecd_initmsgq) { - msg = list_entry(_p,struct rxrpc_message,link); - if (msg->trans==trans) { + list_for_each_safe(_p, _n, &rxrpc_krxsecd_initmsgq) { + msg = list_entry(_p, struct rxrpc_message, link); + if (msg->trans == trans) { list_del(&msg->link); - list_add_tail(&msg->link,&tmp); + list_add_tail(&msg->link, &tmp); atomic_dec(&rxrpc_krxsecd_qcount); } } @@ -167,7 +174,7 @@ /* zap all messages on the temp list */ while (!list_empty(&tmp)) { - msg = list_entry(tmp.next,struct rxrpc_message,link); + msg = list_entry(tmp.next, struct rxrpc_message, link); list_del_init(&msg->link); rxrpc_put_message(msg); } @@ -181,14 +188,14 @@ */ void rxrpc_krxsecd_queue_incoming_call(struct rxrpc_message *msg) { - _enter("%p",msg); + _enter("%p", msg); /* queue for processing by krxsecd */ spin_lock(&rxrpc_krxsecd_initmsgq_lock); if (!rxrpc_krxsecd_die) { rxrpc_get_message(msg); - list_add_tail(&msg->link,&rxrpc_krxsecd_initmsgq); + list_add_tail(&msg->link, &rxrpc_krxsecd_initmsgq); atomic_inc(&rxrpc_krxsecd_qcount); } @@ -212,10 +219,10 @@ unsigned short sid; int ret; - _enter("%p{tr=%p}",msg,trans); + _enter("%p{tr=%p}", msg, trans); - ret = rxrpc_incoming_call(msg->conn,msg,&call); - if (ret<0) + ret = rxrpc_incoming_call(msg->conn, msg, &call); + if (ret < 0) goto out; /* find the matching service on the transport */ @@ -223,11 +230,11 @@ srv = NULL; spin_lock(&trans->lock); - list_for_each(_p,&trans->services) { - srv = list_entry(_p,struct rxrpc_service,link); - if (srv->service_id==sid && try_module_get(srv->owner)) { + list_for_each(_p, &trans->services) { + srv = list_entry(_p, struct rxrpc_service, link); + if (srv->service_id == sid && try_module_get(srv->owner)) { /* found a match (made sure it won't vanish) */ - _debug("found service '%s'",srv->name); + _debug("found service '%s'", srv->name); call->owner = srv->owner; break; } @@ -238,7 +245,7 @@ * - the func must inc the call's usage count to keep it */ ret = -ENOENT; - if (_p!=&trans->services) { + if (_p != &trans->services) { /* attempt to accept the call */ call->conn->service = srv; call->app_attn_func = srv->attn_func; @@ -248,19 +255,20 @@ ret = srv->new_call(call); /* send an abort if an error occurred */ - if (ret<0) { - rxrpc_call_abort(call,ret); + if (ret < 0) { + rxrpc_call_abort(call, ret); } else { /* formally receive and ACK the new packet */ - ret = rxrpc_conn_receive_call_packet(call->conn,call,msg); + ret = rxrpc_conn_receive_call_packet(call->conn, + call, msg); } } rxrpc_put_call(call); out: - if (ret<0) - rxrpc_trans_immediate_abort(trans,msg,ret); + if (ret < 0) + rxrpc_trans_immediate_abort(trans, msg, ret); - _leave(" (%d)",ret); + _leave(" (%d)", ret); } /* end rxrpc_krxsecd_process_incoming_call() */ diff -Nru a/net/rxrpc/krxtimod.c b/net/rxrpc/krxtimod.c --- a/net/rxrpc/krxtimod.c Mon Sep 22 00:30:18 2003 +++ b/net/rxrpc/krxtimod.c Mon Sep 22 00:30:18 2003 @@ -36,8 +36,8 @@ { int ret; - ret = kernel_thread(krxtimod,NULL,0); - if (ret<0) + ret = kernel_thread(krxtimod, NULL, 0); + if (ret < 0) return ret; wait_for_completion(&krxtimod_alive); @@ -64,30 +64,36 @@ */ static int krxtimod(void *arg) { - DECLARE_WAITQUEUE(myself,current); + DECLARE_WAITQUEUE(myself, current); rxrpc_timer_t *timer; - printk("Started krxtimod %d\n",current->pid); + printk("Started krxtimod %d\n", current->pid); daemonize("krxtimod"); complete(&krxtimod_alive); + /* only certain signals are of interest */ + spin_lock_irq(¤t->sighand->siglock); + siginitsetinv(¤t->blocked, 0); + recalc_sigpending(); + spin_unlock_irq(¤t->sighand->siglock); + /* loop around looking for things to attend to */ loop: set_current_state(TASK_INTERRUPTIBLE); - add_wait_queue(&krxtimod_sleepq,&myself); + add_wait_queue(&krxtimod_sleepq, &myself); for (;;) { unsigned long jif; - unsigned long timeout; + signed long timeout; /* deal with the server being asked to die */ if (krxtimod_die) { - remove_wait_queue(&krxtimod_sleepq,&myself); + remove_wait_queue(&krxtimod_sleepq, &myself); _leave(""); - complete_and_exit(&krxtimod_dead,0); + complete_and_exit(&krxtimod_dead, 0); } /* discard pending signals */ @@ -97,18 +103,19 @@ spin_lock(&krxtimod_lock); if (list_empty(&krxtimod_list)) { timeout = MAX_SCHEDULE_TIMEOUT; - } else { - unsigned long tmo; - + } + else { timer = list_entry(krxtimod_list.next, rxrpc_timer_t, link); - tmo = timer->timo_jif; + timeout = timer->timo_jif; jif = jiffies; - if (time_before_eq(tmo,jif)) + if (time_before_eq((unsigned long) timeout, jif)) goto immediate; - timeout = (long)tmo - (long)jiffies; + else { + timeout = (long) timeout - (long) jiffies; + } } spin_unlock(&krxtimod_lock); @@ -118,13 +125,14 @@ } /* the thing on the front of the queue needs processing - * - we come here with the lock held and timer pointing to the expired entry + * - we come here with the lock held and timer pointing to the expired + * entry */ immediate: - remove_wait_queue(&krxtimod_sleepq,&myself); + remove_wait_queue(&krxtimod_sleepq, &myself); set_current_state(TASK_RUNNING); - _debug("@@@ Begin Timeout of %p",timer); + _debug("@@@ Begin Timeout of %p", timer); /* dequeue the timer */ list_del_init(&timer->link); @@ -147,29 +155,30 @@ struct list_head *_p; rxrpc_timer_t *ptimer; - _enter("%p,%lu",timer,timeout); + _enter("%p,%lu", timer, timeout); spin_lock(&krxtimod_lock); list_del(&timer->link); - /* the timer was deferred or reset - put it back in the queue at the right place */ + /* the timer was deferred or reset - put it back in the queue at the + * right place */ timer->timo_jif = jiffies + timeout; - list_for_each(_p,&krxtimod_list) { - ptimer = list_entry(_p,rxrpc_timer_t,link); - if (time_before(timer->timo_jif,ptimer->timo_jif)) + list_for_each(_p, &krxtimod_list) { + ptimer = list_entry(_p, rxrpc_timer_t, link); + if (time_before(timer->timo_jif, ptimer->timo_jif)) break; } - list_add_tail(&timer->link,_p); /* insert before stopping point */ + list_add_tail(&timer->link, _p); /* insert before stopping point */ spin_unlock(&krxtimod_lock); wake_up(&krxtimod_sleepq); _leave(""); -} /* end rxrpc_krxtimod_queue_vlocation() */ +} /* end rxrpc_krxtimod_add_timer() */ /*****************************************************************************/ /* @@ -180,7 +189,7 @@ { int ret = 0; - _enter("%p",timer); + _enter("%p", timer); spin_lock(&krxtimod_lock); @@ -193,6 +202,6 @@ wake_up(&krxtimod_sleepq); - _leave(" = %d",ret); + _leave(" = %d", ret); return ret; } /* end rxrpc_krxtimod_del_timer() */ diff -Nru a/net/rxrpc/main.c b/net/rxrpc/main.c --- a/net/rxrpc/main.c Mon Sep 22 00:30:24 2003 +++ b/net/rxrpc/main.c Mon Sep 22 00:30:24 2003 @@ -32,7 +32,7 @@ MODULE_AUTHOR("Red Hat, Inc."); MODULE_LICENSE("GPL"); -u32 rxrpc_epoch; +uint32_t rxrpc_epoch; /*****************************************************************************/ /* @@ -101,11 +101,16 @@ { kenter(""); - __RXACCT(printk("Outstanding Messages : %d\n",atomic_read(&rxrpc_message_count))); - __RXACCT(printk("Outstanding Calls : %d\n",atomic_read(&rxrpc_call_count))); - __RXACCT(printk("Outstanding Connections: %d\n",atomic_read(&rxrpc_connection_count))); - __RXACCT(printk("Outstanding Peers : %d\n",atomic_read(&rxrpc_peer_count))); - __RXACCT(printk("Outstanding Transports : %d\n",atomic_read(&rxrpc_transport_count))); + __RXACCT(printk("Outstanding Messages : %d\n", + atomic_read(&rxrpc_message_count))); + __RXACCT(printk("Outstanding Calls : %d\n", + atomic_read(&rxrpc_call_count))); + __RXACCT(printk("Outstanding Connections: %d\n", + atomic_read(&rxrpc_connection_count))); + __RXACCT(printk("Outstanding Peers : %d\n", + atomic_read(&rxrpc_peer_count))); + __RXACCT(printk("Outstanding Transports : %d\n", + atomic_read(&rxrpc_transport_count))); rxrpc_krxsecd_kill(); rxrpc_krxiod_kill(); @@ -117,11 +122,61 @@ rxrpc_proc_cleanup(); #endif - __RXACCT(printk("Outstanding Messages : %d\n",atomic_read(&rxrpc_message_count))); - __RXACCT(printk("Outstanding Calls : %d\n",atomic_read(&rxrpc_call_count))); - __RXACCT(printk("Outstanding Connections: %d\n",atomic_read(&rxrpc_connection_count))); - __RXACCT(printk("Outstanding Peers : %d\n",atomic_read(&rxrpc_peer_count))); - __RXACCT(printk("Outstanding Transports : %d\n",atomic_read(&rxrpc_transport_count))); + __RXACCT(printk("Outstanding Messages : %d\n", + atomic_read(&rxrpc_message_count))); + __RXACCT(printk("Outstanding Calls : %d\n", + atomic_read(&rxrpc_call_count))); + __RXACCT(printk("Outstanding Connections: %d\n", + atomic_read(&rxrpc_connection_count))); + __RXACCT(printk("Outstanding Peers : %d\n", + atomic_read(&rxrpc_peer_count))); + __RXACCT(printk("Outstanding Transports : %d\n", + atomic_read(&rxrpc_transport_count))); kleave(""); } /* end rxrpc_cleanup() */ + +/*****************************************************************************/ +/* + * clear the dead space between task_struct and kernel stack + * - called by supplying -finstrument-functions to gcc + */ +#if 0 +void __cyg_profile_func_enter (void *this_fn, void *call_site) +__attribute__((no_instrument_function)); + +void __cyg_profile_func_enter (void *this_fn, void *call_site) +{ + asm volatile(" movl %%esp,%%edi \n" + " andl %0,%%edi \n" + " addl %1,%%edi \n" + " movl %%esp,%%ecx \n" + " subl %%edi,%%ecx \n" + " shrl $2,%%ecx \n" + " movl $0xedededed,%%eax \n" + " rep stosl \n" + : + : "i"(~(THREAD_SIZE-1)), "i"(sizeof(struct thread_info)) + : "eax", "ecx", "edi", "memory", "cc" + ); +} + +void __cyg_profile_func_exit(void *this_fn, void *call_site) +__attribute__((no_instrument_function)); + +void __cyg_profile_func_exit(void *this_fn, void *call_site) +{ + asm volatile(" movl %%esp,%%edi \n" + " andl %0,%%edi \n" + " addl %1,%%edi \n" + " movl %%esp,%%ecx \n" + " subl %%edi,%%ecx \n" + " shrl $2,%%ecx \n" + " movl $0xdadadada,%%eax \n" + " rep stosl \n" + : + : "i"(~(THREAD_SIZE-1)), "i"(sizeof(struct thread_info)) + : "eax", "ecx", "edi", "memory", "cc" + ); +} +#endif diff -Nru a/net/rxrpc/peer.c b/net/rxrpc/peer.c --- a/net/rxrpc/peer.c Mon Sep 22 00:30:21 2003 +++ b/net/rxrpc/peer.c Mon Sep 22 00:30:21 2003 @@ -28,12 +28,14 @@ __RXACCT_DECL(atomic_t rxrpc_peer_count); LIST_HEAD(rxrpc_peers); DECLARE_RWSEM(rxrpc_peers_sem); +unsigned long rxrpc_peer_timeout = 12 * 60 * 60; static void __rxrpc_peer_timeout(rxrpc_timer_t *timer) { - struct rxrpc_peer *peer = list_entry(timer,struct rxrpc_peer,timeout); + struct rxrpc_peer *peer = + list_entry(timer, struct rxrpc_peer, timeout); - _debug("Rx PEER TIMEOUT [%p{u=%d}]",peer,atomic_read(&peer->usage)); + _debug("Rx PEER TIMEOUT [%p{u=%d}]", peer, atomic_read(&peer->usage)); rxrpc_peer_do_timeout(peer); } @@ -46,32 +48,35 @@ /* * create a peer record */ -static int __rxrpc_create_peer(struct rxrpc_transport *trans, u32 addr, struct rxrpc_peer **_peer) +static int __rxrpc_create_peer(struct rxrpc_transport *trans, uint32_t addr, + struct rxrpc_peer **_peer) { struct rxrpc_peer *peer; - _enter("%p,%08x",trans,ntohl(addr)); + _enter("%p,%08x", trans, ntohl(addr)); /* allocate and initialise a peer record */ - peer = kmalloc(sizeof(struct rxrpc_peer),GFP_KERNEL); + peer = kmalloc(sizeof(struct rxrpc_peer), GFP_KERNEL); if (!peer) { _leave(" = -ENOMEM"); return -ENOMEM; } - memset(peer,0,sizeof(struct rxrpc_peer)); - atomic_set(&peer->usage,1); + memset(peer, 0, sizeof(struct rxrpc_peer)); + atomic_set(&peer->usage, 1); INIT_LIST_HEAD(&peer->link); INIT_LIST_HEAD(&peer->proc_link); + INIT_LIST_HEAD(&peer->conn_idlist); INIT_LIST_HEAD(&peer->conn_active); INIT_LIST_HEAD(&peer->conn_graveyard); spin_lock_init(&peer->conn_gylock); init_waitqueue_head(&peer->conn_gy_waitq); + rwlock_init(&peer->conn_idlock); rwlock_init(&peer->conn_lock); - atomic_set(&peer->conn_count,0); + atomic_set(&peer->conn_count, 0); spin_lock_init(&peer->lock); - rxrpc_timer_init(&peer->timeout,&rxrpc_peer_timer_ops); + rxrpc_timer_init(&peer->timeout, &rxrpc_peer_timer_ops); peer->addr.s_addr = addr; @@ -80,7 +85,7 @@ __RXACCT(atomic_inc(&rxrpc_peer_count)); *_peer = peer; - _leave(" = 0 (%p)",peer); + _leave(" = 0 (%p)", peer); return 0; } /* end __rxrpc_create_peer() */ @@ -91,43 +96,45 @@ * - returns (if successful) with peer record usage incremented * - resurrects it from the graveyard if found there */ -int rxrpc_peer_lookup(struct rxrpc_transport *trans, u32 addr, struct rxrpc_peer **_peer) +int rxrpc_peer_lookup(struct rxrpc_transport *trans, uint32_t addr, + struct rxrpc_peer **_peer) { struct rxrpc_peer *peer, *candidate = NULL; struct list_head *_p; int ret; - _enter("%p{%hu},%08x",trans,trans->port,ntohl(addr)); + _enter("%p{%hu},%08x", trans, trans->port, ntohl(addr)); /* [common case] search the transport's active list first */ read_lock(&trans->peer_lock); - list_for_each(_p,&trans->peer_active) { - peer = list_entry(_p,struct rxrpc_peer,link); - if (peer->addr.s_addr==addr) + list_for_each(_p, &trans->peer_active) { + peer = list_entry(_p, struct rxrpc_peer, link); + if (peer->addr.s_addr == addr) goto found_active; } read_unlock(&trans->peer_lock); /* [uncommon case] not active - create a candidate for a new record */ - ret = __rxrpc_create_peer(trans,addr,&candidate); - if (ret<0) { - _leave(" = %d",ret); + ret = __rxrpc_create_peer(trans, addr, &candidate); + if (ret < 0) { + _leave(" = %d", ret); return ret; } - /* search the active list again, just in case it appeared whilst we were busy */ + /* search the active list again, just in case it appeared whilst we + * were busy */ write_lock(&trans->peer_lock); - list_for_each(_p,&trans->peer_active) { - peer = list_entry(_p,struct rxrpc_peer,link); - if (peer->addr.s_addr==addr) + list_for_each(_p, &trans->peer_active) { + peer = list_entry(_p, struct rxrpc_peer, link); + if (peer->addr.s_addr == addr) goto found_active_second_chance; } /* search the transport's graveyard list */ spin_lock(&trans->peer_gylock); - list_for_each(_p,&trans->peer_graveyard) { - peer = list_entry(_p,struct rxrpc_peer,link); - if (peer->addr.s_addr==addr) + list_for_each(_p, &trans->peer_graveyard) { + peer = list_entry(_p, struct rxrpc_peer, link); + if (peer->addr.s_addr == addr) goto found_in_graveyard; } spin_unlock(&trans->peer_gylock); @@ -141,12 +148,12 @@ if (peer->ops && peer->ops->adding) { ret = peer->ops->adding(peer); - if (ret<0) { + if (ret < 0) { write_unlock(&trans->peer_lock); __RXACCT(atomic_dec(&rxrpc_peer_count)); kfree(peer); rxrpc_put_transport(trans); - _leave(" = %d",ret); + _leave(" = %d", ret); return ret; } } @@ -154,7 +161,7 @@ atomic_inc(&trans->peer_count); make_active: - list_add_tail(&peer->link,&trans->peer_active); + list_add_tail(&peer->link, &trans->peer_active); success_uwfree: write_unlock(&trans->peer_lock); @@ -166,7 +173,7 @@ if (list_empty(&peer->proc_link)) { down_write(&rxrpc_peers_sem); - list_add_tail(&peer->proc_link,&rxrpc_peers); + list_add_tail(&peer->proc_link, &rxrpc_peers); up_write(&rxrpc_peers_sem); } @@ -174,7 +181,9 @@ *_peer = peer; _leave(" = 0 (%p{u=%d cc=%d})", - peer,atomic_read(&peer->usage),atomic_read(&peer->conn_count)); + peer, + atomic_read(&peer->usage), + atomic_read(&peer->conn_count)); return 0; /* handle the peer being found in the active list straight off */ @@ -192,7 +201,8 @@ spin_unlock(&trans->peer_gylock); goto make_active; - /* handle finding the peer on the second time through the active list */ + /* handle finding the peer on the second time through the active + * list */ found_active_second_chance: rxrpc_get_peer(peer); goto success_uwfree; @@ -202,16 +212,20 @@ /*****************************************************************************/ /* * finish with a peer record - * - it gets sent to the graveyard from where it can be resurrected or timed out + * - it gets sent to the graveyard from where it can be resurrected or timed + * out */ void rxrpc_put_peer(struct rxrpc_peer *peer) { struct rxrpc_transport *trans = peer->trans; - _enter("%p{cc=%d a=%08x}",peer,atomic_read(&peer->conn_count),ntohl(peer->addr.s_addr)); + _enter("%p{cc=%d a=%08x}", + peer, + atomic_read(&peer->conn_count), + ntohl(peer->addr.s_addr)); /* sanity check */ - if (atomic_read(&peer->usage)<=0) + if (atomic_read(&peer->usage) <= 0) BUG(); write_lock(&trans->peer_lock); @@ -227,12 +241,11 @@ list_del(&peer->link); write_unlock(&trans->peer_lock); - list_add_tail(&peer->link,&trans->peer_graveyard); + list_add_tail(&peer->link, &trans->peer_graveyard); - if (!list_empty(&peer->conn_active)) BUG(); + BUG_ON(!list_empty(&peer->conn_active)); - /* discard in 600 secs */ - rxrpc_krxtimod_add_timer(&peer->timeout,100*HZ); + rxrpc_krxtimod_add_timer(&peer->timeout, rxrpc_peer_timeout * HZ); spin_unlock(&trans->peer_gylock); @@ -251,15 +264,16 @@ struct rxrpc_transport *trans = peer->trans; _enter("%p{u=%d cc=%d a=%08x}", - peer,atomic_read(&peer->usage),atomic_read(&peer->conn_count), + peer, + atomic_read(&peer->usage), + atomic_read(&peer->conn_count), ntohl(peer->addr.s_addr)); - if (atomic_read(&peer->usage)<0) - BUG(); + BUG_ON(atomic_read(&peer->usage) < 0); /* remove from graveyard if still dead */ spin_lock(&trans->peer_gylock); - if (atomic_read(&peer->usage)==0) + if (atomic_read(&peer->usage) == 0) list_del_init(&peer->link); else peer = NULL; @@ -273,8 +287,8 @@ /* clear all connections on this peer */ rxrpc_conn_clearall(peer); - if (!list_empty(&peer->conn_active)) BUG(); - if (!list_empty(&peer->conn_graveyard)) BUG(); + BUG_ON(!list_empty(&peer->conn_active)); + BUG_ON(!list_empty(&peer->conn_graveyard)); /* inform the application layer */ if (peer->ops && peer->ops->discarding) @@ -310,18 +324,18 @@ _enter("%p",trans); /* there shouldn't be any active peers remaining */ - if (!list_empty(&trans->peer_active)) - BUG(); + BUG_ON(!list_empty(&trans->peer_active)); /* manually timeout all peers in the graveyard */ spin_lock(&trans->peer_gylock); while (!list_empty(&trans->peer_graveyard)) { - peer = list_entry(trans->peer_graveyard.next,struct rxrpc_peer,link); - _debug("Clearing peer %p\n",peer); + peer = list_entry(trans->peer_graveyard.next, + struct rxrpc_peer, link); + _debug("Clearing peer %p\n", peer); err = rxrpc_krxtimod_del_timer(&peer->timeout); spin_unlock(&trans->peer_gylock); - if (err==0) + if (err == 0) rxrpc_peer_do_timeout(peer); spin_lock(&trans->peer_gylock); @@ -330,18 +344,17 @@ /* wait for the the peer graveyard to be completely cleared */ set_current_state(TASK_UNINTERRUPTIBLE); - add_wait_queue(&trans->peer_gy_waitq,&myself); + add_wait_queue(&trans->peer_gy_waitq, &myself); - while (atomic_read(&trans->peer_count)!=0) { + while (atomic_read(&trans->peer_count) != 0) { schedule(); set_current_state(TASK_UNINTERRUPTIBLE); } - remove_wait_queue(&trans->peer_gy_waitq,&myself); + remove_wait_queue(&trans->peer_gy_waitq, &myself); set_current_state(TASK_RUNNING); _leave(""); - } /* end rxrpc_peer_clearall() */ /*****************************************************************************/ @@ -355,7 +368,7 @@ unsigned long long rtt; int loop; - _enter("%p,%p,%p",peer,msg,resp); + _enter("%p,%p,%p", peer, msg, resp); /* calculate the latest RTT */ rtt = resp->stamp.tv_sec - msg->stamp.tv_sec; @@ -367,16 +380,18 @@ peer->rtt_point++; peer->rtt_point %= RXRPC_RTT_CACHE_SIZE; - if (peer->rtt_usagertt_usage++; + if (peer->rtt_usage < RXRPC_RTT_CACHE_SIZE) + peer->rtt_usage++; /* recalculate RTT */ rtt = 0; - for (loop=peer->rtt_usage-1; loop>=0; loop--) + for (loop = peer->rtt_usage - 1; loop >= 0; loop--) rtt += peer->rtt_cache[loop]; - do_div(rtt,peer->rtt_usage); + do_div(rtt, peer->rtt_usage); peer->rtt = rtt; - _leave(" RTT=%lu.%lums",(long)(peer->rtt/1000),(long)(peer->rtt%1000)); + _leave(" RTT=%lu.%lums", + (long) (peer->rtt / 1000), (long) (peer->rtt % 1000)); } /* end rxrpc_peer_calculate_rtt() */ diff -Nru a/net/rxrpc/proc.c b/net/rxrpc/proc.c --- a/net/rxrpc/proc.c Mon Sep 22 00:30:22 2003 +++ b/net/rxrpc/proc.c Mon Sep 22 00:30:22 2003 @@ -38,7 +38,6 @@ }; static struct file_operations rxrpc_proc_transports_fops = { - .owner = THIS_MODULE, .open = rxrpc_proc_transports_open, .read = seq_read, .llseek = seq_lseek, @@ -59,7 +58,6 @@ }; static struct file_operations rxrpc_proc_peers_fops = { - .owner = THIS_MODULE, .open = rxrpc_proc_peers_open, .read = seq_read, .llseek = seq_lseek, @@ -80,7 +78,6 @@ }; static struct file_operations rxrpc_proc_conns_fops = { - .owner = THIS_MODULE, .open = rxrpc_proc_conns_open, .read = seq_read, .llseek = seq_lseek, @@ -101,7 +98,6 @@ }; static struct file_operations rxrpc_proc_calls_fops = { - .owner = THIS_MODULE, .open = rxrpc_proc_calls_open, .read = seq_read, .llseek = seq_lseek, @@ -137,30 +133,30 @@ { struct proc_dir_entry *p; - proc_rxrpc = proc_mkdir("rxrpc",proc_net); + proc_rxrpc = proc_mkdir("rxrpc", proc_net); if (!proc_rxrpc) goto error; proc_rxrpc->owner = THIS_MODULE; - p = create_proc_entry("calls",0,proc_rxrpc); + p = create_proc_entry("calls", 0, proc_rxrpc); if (!p) goto error_proc; p->proc_fops = &rxrpc_proc_calls_fops; p->owner = THIS_MODULE; - p = create_proc_entry("connections",0,proc_rxrpc); + p = create_proc_entry("connections", 0, proc_rxrpc); if (!p) goto error_calls; p->proc_fops = &rxrpc_proc_conns_fops; p->owner = THIS_MODULE; - p = create_proc_entry("peers",0,proc_rxrpc); + p = create_proc_entry("peers", 0, proc_rxrpc); if (!p) goto error_calls; p->proc_fops = &rxrpc_proc_peers_fops; p->owner = THIS_MODULE; - p = create_proc_entry("transports",0,proc_rxrpc); + p = create_proc_entry("transports", 0, proc_rxrpc); if (!p) goto error_conns; p->proc_fops = &rxrpc_proc_transports_fops; @@ -169,11 +165,11 @@ return 0; error_conns: - remove_proc_entry("conns",proc_rxrpc); + remove_proc_entry("connections", proc_rxrpc); error_calls: - remove_proc_entry("calls",proc_rxrpc); + remove_proc_entry("calls", proc_rxrpc); error_proc: - remove_proc_entry("rxrpc",proc_net); + remove_proc_entry("rxrpc", proc_net); error: return -ENOMEM; } /* end rxrpc_proc_init() */ @@ -184,12 +180,12 @@ */ void rxrpc_proc_cleanup(void) { - remove_proc_entry("transports",proc_rxrpc); - remove_proc_entry("peers",proc_rxrpc); - remove_proc_entry("connections",proc_rxrpc); - remove_proc_entry("calls",proc_rxrpc); + remove_proc_entry("transports", proc_rxrpc); + remove_proc_entry("peers", proc_rxrpc); + remove_proc_entry("connections", proc_rxrpc); + remove_proc_entry("calls", proc_rxrpc); - remove_proc_entry("rxrpc",proc_net); + remove_proc_entry("rxrpc", proc_net); } /* end rxrpc_proc_cleanup() */ @@ -202,8 +198,8 @@ struct seq_file *m; int ret; - ret = seq_open(file,&rxrpc_proc_transports_ops); - if (ret<0) + ret = seq_open(file, &rxrpc_proc_transports_ops); + if (ret < 0) return ret; m = file->private_data; @@ -226,15 +222,15 @@ /* allow for the header line */ if (!pos) - return (void *)1; + return SEQ_START_TOKEN; pos--; /* find the n'th element in the list */ - list_for_each(_p,&rxrpc_proc_transports) + list_for_each(_p, &rxrpc_proc_transports) if (!pos--) break; - return _p!=&rxrpc_proc_transports ? _p : NULL; + return _p != &rxrpc_proc_transports ? _p : NULL; } /* end rxrpc_proc_transports_start() */ /*****************************************************************************/ @@ -248,9 +244,9 @@ (*pos)++; _p = v; - _p = v==(void*)1 ? rxrpc_proc_transports.next : _p->next; + _p = (v == SEQ_START_TOKEN) ? rxrpc_proc_transports.next : _p->next; - return _p!=&rxrpc_proc_transports ? _p : NULL; + return _p != &rxrpc_proc_transports ? _p : NULL; } /* end rxrpc_proc_transports_next() */ /*****************************************************************************/ @@ -269,16 +265,17 @@ */ static int rxrpc_proc_transports_show(struct seq_file *m, void *v) { - struct rxrpc_transport *trans = list_entry(v,struct rxrpc_transport,proc_link); + struct rxrpc_transport *trans = + list_entry(v, struct rxrpc_transport, proc_link); /* display header on line 1 */ - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(m, "LOCAL USE\n"); return 0; } /* display one transport per line on subsequent lines */ - seq_printf(m,"%5hu %3d\n", + seq_printf(m, "%5hu %3d\n", trans->port, atomic_read(&trans->usage) ); @@ -295,8 +292,8 @@ struct seq_file *m; int ret; - ret = seq_open(file,&rxrpc_proc_peers_ops); - if (ret<0) + ret = seq_open(file, &rxrpc_proc_peers_ops); + if (ret < 0) return ret; m = file->private_data; @@ -307,7 +304,8 @@ /*****************************************************************************/ /* - * set up the iterator to start reading from the peers list and return the first item + * set up the iterator to start reading from the peers list and return the + * first item */ static void *rxrpc_proc_peers_start(struct seq_file *m, loff_t *_pos) { @@ -319,15 +317,15 @@ /* allow for the header line */ if (!pos) - return (void *)1; + return SEQ_START_TOKEN; pos--; /* find the n'th element in the list */ - list_for_each(_p,&rxrpc_peers) + list_for_each(_p, &rxrpc_peers) if (!pos--) break; - return _p!=&rxrpc_peers ? _p : NULL; + return _p != &rxrpc_peers ? _p : NULL; } /* end rxrpc_proc_peers_start() */ /*****************************************************************************/ @@ -341,9 +339,9 @@ (*pos)++; _p = v; - _p = v==(void*)1 ? rxrpc_peers.next : _p->next; + _p = (v == SEQ_START_TOKEN) ? rxrpc_peers.next : _p->next; - return _p!=&rxrpc_peers ? _p : NULL; + return _p != &rxrpc_peers ? _p : NULL; } /* end rxrpc_proc_peers_next() */ /*****************************************************************************/ @@ -362,21 +360,23 @@ */ static int rxrpc_proc_peers_show(struct seq_file *m, void *v) { - struct rxrpc_peer *peer = list_entry(v,struct rxrpc_peer,proc_link); + struct rxrpc_peer *peer = list_entry(v, struct rxrpc_peer, proc_link); signed long timeout; /* display header on line 1 */ - if (v == (void *)1) { - seq_puts(m,"LOCAL REMOTE USAGE CONNS TIMEOUT MTU RTT(uS)\n"); + if (v == SEQ_START_TOKEN) { + seq_puts(m, "LOCAL REMOTE USAGE CONNS TIMEOUT" + " MTU RTT(uS)\n"); return 0; } /* display one peer per line on subsequent lines */ timeout = 0; if (!list_empty(&peer->timeout.link)) - timeout = (signed long)peer->timeout.timo_jif - (signed long)jiffies; + timeout = (signed long) peer->timeout.timo_jif - + (signed long) jiffies; - seq_printf(m,"%5hu %08x %5d %5d %8ld %5Zu %7lu\n", + seq_printf(m, "%5hu %08x %5d %5d %8ld %5Zu %7lu\n", peer->trans->port, ntohl(peer->addr.s_addr), atomic_read(&peer->usage), @@ -391,15 +391,16 @@ /*****************************************************************************/ /* - * open "/proc/net/rxrpc/connections" which provides a summary of extant connections + * open "/proc/net/rxrpc/connections" which provides a summary of extant + * connections */ static int rxrpc_proc_conns_open(struct inode *inode, struct file *file) { struct seq_file *m; int ret; - ret = seq_open(file,&rxrpc_proc_conns_ops); - if (ret<0) + ret = seq_open(file, &rxrpc_proc_conns_ops); + if (ret < 0) return ret; m = file->private_data; @@ -410,7 +411,8 @@ /*****************************************************************************/ /* - * set up the iterator to start reading from the conns list and return the first item + * set up the iterator to start reading from the conns list and return the + * first item */ static void *rxrpc_proc_conns_start(struct seq_file *m, loff_t *_pos) { @@ -422,15 +424,15 @@ /* allow for the header line */ if (!pos) - return (void *)1; + return SEQ_START_TOKEN; pos--; /* find the n'th element in the list */ - list_for_each(_p,&rxrpc_conns) + list_for_each(_p, &rxrpc_conns) if (!pos--) break; - return _p!=&rxrpc_conns ? _p : NULL; + return _p != &rxrpc_conns ? _p : NULL; } /* end rxrpc_proc_conns_start() */ /*****************************************************************************/ @@ -444,9 +446,9 @@ (*pos)++; _p = v; - _p = v==(void*)1 ? rxrpc_conns.next : _p->next; + _p = (v == SEQ_START_TOKEN) ? rxrpc_conns.next : _p->next; - return _p!=&rxrpc_conns ? _p : NULL; + return _p != &rxrpc_conns ? _p : NULL; } /* end rxrpc_proc_conns_next() */ /*****************************************************************************/ @@ -465,13 +467,16 @@ */ static int rxrpc_proc_conns_show(struct seq_file *m, void *v) { - struct rxrpc_connection *conn = list_entry(v,struct rxrpc_connection,proc_link); + struct rxrpc_connection *conn; signed long timeout; + conn = list_entry(v, struct rxrpc_connection, proc_link); + /* display header on line 1 */ - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(m, - "LOCAL REMOTE RPORT SRVC CONN END SERIALNO CALLNO MTU TIMEOUT" + "LOCAL REMOTE RPORT SRVC CONN END SERIALNO " + "CALLNO MTU TIMEOUT" "\n"); return 0; } @@ -479,9 +484,11 @@ /* display one conn per line on subsequent lines */ timeout = 0; if (!list_empty(&conn->timeout.link)) - timeout = (signed long)conn->timeout.timo_jif - (signed long)jiffies; + timeout = (signed long) conn->timeout.timo_jif - + (signed long) jiffies; - seq_printf(m,"%5hu %08x %5hu %04hx %08x %-3.3s %08x %08x %5Zu %8ld\n", + seq_printf(m, + "%5hu %08x %5hu %04hx %08x %-3.3s %08x %08x %5Zu %8ld\n", conn->trans->port, ntohl(conn->addr.sin_addr.s_addr), ntohs(conn->addr.sin_port), @@ -506,8 +513,8 @@ struct seq_file *m; int ret; - ret = seq_open(file,&rxrpc_proc_calls_ops); - if (ret<0) + ret = seq_open(file, &rxrpc_proc_calls_ops); + if (ret < 0) return ret; m = file->private_data; @@ -518,7 +525,8 @@ /*****************************************************************************/ /* - * set up the iterator to start reading from the calls list and return the first item + * set up the iterator to start reading from the calls list and return the + * first item */ static void *rxrpc_proc_calls_start(struct seq_file *m, loff_t *_pos) { @@ -530,15 +538,15 @@ /* allow for the header line */ if (!pos) - return (void *)1; + return SEQ_START_TOKEN; pos--; /* find the n'th element in the list */ - list_for_each(_p,&rxrpc_calls) + list_for_each(_p, &rxrpc_calls) if (!pos--) break; - return _p!=&rxrpc_calls ? _p : NULL; + return _p != &rxrpc_calls ? _p : NULL; } /* end rxrpc_proc_calls_start() */ /*****************************************************************************/ @@ -552,9 +560,9 @@ (*pos)++; _p = v; - _p = v==(void*)1 ? rxrpc_calls.next : _p->next; + _p = (v == SEQ_START_TOKEN) ? rxrpc_calls.next : _p->next; - return _p!=&rxrpc_calls ? _p : NULL; + return _p != &rxrpc_calls ? _p : NULL; } /* end rxrpc_proc_calls_next() */ /*****************************************************************************/ @@ -573,10 +581,10 @@ */ static int rxrpc_proc_calls_show(struct seq_file *m, void *v) { - struct rxrpc_call *call = list_entry(v,struct rxrpc_call,call_link); + struct rxrpc_call *call = list_entry(v, struct rxrpc_call, call_link); /* display header on line 1 */ - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(m, "LOCAL REMOT SRVC CONN CALL DIR USE " " L STATE OPCODE ABORT ERRNO\n" diff -Nru a/net/rxrpc/sysctl.c b/net/rxrpc/sysctl.c --- a/net/rxrpc/sysctl.c Mon Sep 22 00:30:21 2003 +++ b/net/rxrpc/sysctl.c Mon Sep 22 00:30:21 2003 @@ -60,6 +60,22 @@ .mode = 0644, .proc_handler = &proc_dointvec }, + { + .ctl_name = 5, + .procname = "peertimo", + .data = &rxrpc_peer_timeout, + .maxlen = sizeof(unsigned long), + .mode = 0644, + .proc_handler = &proc_doulongvec_minmax + }, + { + .ctl_name = 6, + .procname = "conntimo", + .data = &rxrpc_conn_timeout, + .maxlen = sizeof(unsigned long), + .mode = 0644, + .proc_handler = &proc_doulongvec_minmax + }, { .ctl_name = 0 } }; @@ -67,6 +83,7 @@ { .ctl_name = 1, .procname = "rxrpc", + .maxlen = 0, .mode = 0555, .child = rxrpc_sysctl_table }, @@ -81,7 +98,7 @@ int rxrpc_sysctl_init(void) { #ifdef CONFIG_SYSCTL - rxrpc_sysctl = register_sysctl_table(rxrpc_dir_sysctl_table,0); + rxrpc_sysctl = register_sysctl_table(rxrpc_dir_sysctl_table, 0); if (!rxrpc_sysctl) return -ENOMEM; #endif /* CONFIG_SYSCTL */ diff -Nru a/net/rxrpc/transport.c b/net/rxrpc/transport.c --- a/net/rxrpc/transport.c Mon Sep 22 00:30:23 2003 +++ b/net/rxrpc/transport.c Mon Sep 22 00:30:23 2003 @@ -56,7 +56,8 @@ /* * create a new transport endpoint using the specified UDP port */ -int rxrpc_create_transport(unsigned short port, struct rxrpc_transport **_trans) +int rxrpc_create_transport(unsigned short port, + struct rxrpc_transport **_trans) { struct rxrpc_transport *trans; struct sockaddr_in sin; @@ -64,14 +65,14 @@ struct sock *sock; int ret, opt; - _enter("%hu",port); + _enter("%hu", port); - trans = kmalloc(sizeof(struct rxrpc_transport),GFP_KERNEL); + trans = kmalloc(sizeof(struct rxrpc_transport), GFP_KERNEL); if (!trans) return -ENOMEM; - memset(trans,0,sizeof(struct rxrpc_transport)); - atomic_set(&trans->usage,1); + memset(trans, 0, sizeof(struct rxrpc_transport)); + atomic_set(&trans->usage, 1); INIT_LIST_HEAD(&trans->services); INIT_LIST_HEAD(&trans->link); INIT_LIST_HEAD(&trans->krxiodq_link); @@ -81,58 +82,58 @@ spin_lock_init(&trans->peer_gylock); init_waitqueue_head(&trans->peer_gy_waitq); rwlock_init(&trans->peer_lock); - atomic_set(&trans->peer_count,0); + atomic_set(&trans->peer_count, 0); trans->port = port; /* create a UDP socket to be my actual transport endpoint */ - ret = sock_create(PF_INET,SOCK_DGRAM,IPPROTO_UDP,&trans->socket); - if (ret<0) + ret = sock_create(PF_INET, SOCK_DGRAM, IPPROTO_UDP, &trans->socket); + if (ret < 0) goto error; /* use the specified port */ if (port) { - memset(&sin,0,sizeof(sin)); + memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_port = htons(port); - ret = trans->socket->ops->bind(trans->socket,(struct sockaddr *)&sin,sizeof(sin)); - if (ret<0) + ret = trans->socket->ops->bind(trans->socket, + (struct sockaddr *) &sin, + sizeof(sin)); + if (ret < 0) goto error; } opt = 1; oldfs = get_fs(); set_fs(KERNEL_DS); - ret = trans->socket->ops->setsockopt(trans->socket,SOL_IP,IP_RECVERR, - (char*)&opt,sizeof(opt)); + ret = trans->socket->ops->setsockopt(trans->socket, SOL_IP, IP_RECVERR, + (char *) &opt, sizeof(opt)); set_fs(oldfs); spin_lock(&rxrpc_transports_lock); - list_add(&trans->link,&rxrpc_transports); + list_add(&trans->link, &rxrpc_transports); spin_unlock(&rxrpc_transports_lock); /* set the socket up */ sock = trans->socket->sk; - sock->sk_user_data = trans; - sock->sk_data_ready = rxrpc_data_ready; - sock->sk_error_report = rxrpc_error_report; + sock->sk_user_data = trans; + sock->sk_data_ready = rxrpc_data_ready; + sock->sk_error_report = rxrpc_error_report; down_write(&rxrpc_proc_transports_sem); - list_add_tail(&trans->proc_link,&rxrpc_proc_transports); + list_add_tail(&trans->proc_link, &rxrpc_proc_transports); up_write(&rxrpc_proc_transports_sem); __RXACCT(atomic_inc(&rxrpc_transport_count)); *_trans = trans; - _leave(" = 0 (%p)",trans); + _leave(" = 0 (%p)", trans); return 0; error: rxrpc_put_transport(trans); - _leave(" = %d",ret); - + _leave(" = %d", ret); return ret; - } /* end rxrpc_create_transport() */ /*****************************************************************************/ @@ -151,12 +152,13 @@ */ void rxrpc_put_transport(struct rxrpc_transport *trans) { - _enter("%p{u=%d p=%hu}",trans,atomic_read(&trans->usage),trans->port); + _enter("%p{u=%d p=%hu}", + trans, atomic_read(&trans->usage), trans->port); - if (atomic_read(&trans->usage)<=0) - BUG(); + BUG_ON(atomic_read(&trans->usage) <= 0); - /* to prevent a race, the decrement and the dequeue must be effectively atomic */ + /* to prevent a race, the decrement and the dequeue must be + * effectively atomic */ spin_lock(&rxrpc_transports_lock); if (likely(!atomic_dec_and_test(&trans->usage))) { spin_unlock(&rxrpc_transports_lock); @@ -169,7 +171,7 @@ /* finish cleaning up the transport */ if (trans->socket) - trans->socket->ops->shutdown(trans->socket,2); + trans->socket->ops->shutdown(trans->socket, 2); rxrpc_krxsecd_clear_transport(trans); rxrpc_krxiod_dequeue_transport(trans); @@ -192,41 +194,41 @@ kfree(trans); _leave(""); - } /* end rxrpc_put_transport() */ /*****************************************************************************/ /* * add a service to a transport to be listened upon */ -int rxrpc_add_service(struct rxrpc_transport *trans, struct rxrpc_service *newsrv) +int rxrpc_add_service(struct rxrpc_transport *trans, + struct rxrpc_service *newsrv) { struct rxrpc_service *srv; struct list_head *_p; int ret = -EEXIST; - _enter("%p{%hu},%p{%hu}",trans,trans->port,newsrv,newsrv->service_id); + _enter("%p{%hu},%p{%hu}", + trans, trans->port, newsrv, newsrv->service_id); /* verify that the service ID is not already present */ spin_lock(&trans->lock); - list_for_each(_p,&trans->services) { - srv = list_entry(_p,struct rxrpc_service,link); - if (srv->service_id==newsrv->service_id) + list_for_each(_p, &trans->services) { + srv = list_entry(_p, struct rxrpc_service, link); + if (srv->service_id == newsrv->service_id) goto out; } /* okay - add the transport to the list */ - list_add_tail(&newsrv->link,&trans->services); + list_add_tail(&newsrv->link, &trans->services); rxrpc_get_transport(trans); ret = 0; out: spin_unlock(&trans->lock); - _leave("= %d",ret); + _leave("= %d", ret); return ret; - } /* end rxrpc_add_service() */ /*****************************************************************************/ @@ -235,7 +237,7 @@ */ void rxrpc_del_service(struct rxrpc_transport *trans, struct rxrpc_service *srv) { - _enter("%p{%hu},%p{%hu}",trans,trans->port,srv,srv->service_id); + _enter("%p{%hu},%p{%hu}", trans, trans->port, srv, srv->service_id); spin_lock(&trans->lock); list_del(&srv->link); @@ -244,7 +246,6 @@ rxrpc_put_transport(trans); _leave(""); - } /* end rxrpc_del_service() */ /*****************************************************************************/ @@ -255,7 +256,7 @@ { struct rxrpc_transport *trans; - _enter("%p{t=%p},%d",sk,sk->sk_user_data,count); + _enter("%p{t=%p},%d", sk, sk->sk_user_data, count); /* queue the transport for attention by krxiod */ trans = (struct rxrpc_transport *) sk->sk_user_data; @@ -267,7 +268,6 @@ wake_up_interruptible(sk->sk_sleep); _leave(""); - } /* end rxrpc_data_ready() */ /*****************************************************************************/ @@ -279,7 +279,7 @@ { struct rxrpc_transport *trans; - _enter("%p{t=%p}",sk,sk->sk_user_data); + _enter("%p{t=%p}", sk, sk->sk_user_data); /* queue the transport for attention by krxiod */ trans = (struct rxrpc_transport *) sk->sk_user_data; @@ -293,13 +293,12 @@ wake_up_interruptible(sk->sk_sleep); _leave(""); - } /* end rxrpc_error_report() */ /*****************************************************************************/ /* - * split a message up, allocating message records and filling them in from the contents of a - * socket buffer + * split a message up, allocating message records and filling them in + * from the contents of a socket buffer */ static int rxrpc_incoming_msg(struct rxrpc_transport *trans, struct sk_buff *pkt, @@ -310,18 +309,19 @@ _enter(""); - msg = kmalloc(sizeof(struct rxrpc_message),GFP_KERNEL); + msg = kmalloc(sizeof(struct rxrpc_message), GFP_KERNEL); if (!msg) { _leave(" = -ENOMEM"); return -ENOMEM; } - memset(msg,0,sizeof(*msg)); - atomic_set(&msg->usage,1); + memset(msg, 0, sizeof(*msg)); + atomic_set(&msg->usage, 1); list_add_tail(&msg->link,msgq); /* dig out the Rx routing parameters */ - if (skb_copy_bits(pkt,sizeof(struct udphdr),&msg->hdr,sizeof(msg->hdr))<0) { + if (skb_copy_bits(pkt, sizeof(struct udphdr), + &msg->hdr, sizeof(msg->hdr)) < 0) { ret = -EBADMSG; goto error; } @@ -352,7 +352,9 @@ __RXACCT(atomic_inc(&rxrpc_message_count)); /* split off jumbo packets */ - while (msg->hdr.type==RXRPC_PACKET_TYPE_DATA && msg->hdr.flags & RXRPC_JUMBO_PACKET) { + while (msg->hdr.type == RXRPC_PACKET_TYPE_DATA && + msg->hdr.flags & RXRPC_JUMBO_PACKET + ) { struct rxrpc_jumbo_header jumbo; struct rxrpc_message *jumbomsg = msg; @@ -360,23 +362,25 @@ /* quick sanity check */ ret = -EBADMSG; - if (msg->dsize < RXRPC_JUMBO_DATALEN+sizeof(struct rxrpc_jumbo_header)) + if (msg->dsize < + RXRPC_JUMBO_DATALEN + sizeof(struct rxrpc_jumbo_header)) goto error; if (msg->hdr.flags & RXRPC_LAST_PACKET) goto error; /* dig out the secondary header */ - if (skb_copy_bits(pkt,msg->offset+RXRPC_JUMBO_DATALEN,&jumbo,sizeof(jumbo))<0) + if (skb_copy_bits(pkt, msg->offset + RXRPC_JUMBO_DATALEN, + &jumbo, sizeof(jumbo)) < 0) goto error; /* allocate a new message record */ ret = -ENOMEM; - msg = kmalloc(sizeof(struct rxrpc_message),GFP_KERNEL); + msg = kmalloc(sizeof(struct rxrpc_message), GFP_KERNEL); if (!msg) goto error; - memcpy(msg,jumbomsg,sizeof(*msg)); - list_add_tail(&msg->link,msgq); + memcpy(msg, jumbomsg, sizeof(*msg)); + list_add_tail(&msg->link, msgq); /* adjust the jumbo packet */ jumbomsg->dsize = RXRPC_JUMBO_DATALEN; @@ -388,12 +392,15 @@ msg->seq++; msg->hdr.seq = htonl(msg->seq); msg->hdr.serial = htonl(ntohl(msg->hdr.serial) + 1); - msg->offset += RXRPC_JUMBO_DATALEN + sizeof(struct rxrpc_jumbo_header); - msg->dsize -= RXRPC_JUMBO_DATALEN + sizeof(struct rxrpc_jumbo_header); + msg->offset += RXRPC_JUMBO_DATALEN + + sizeof(struct rxrpc_jumbo_header); + msg->dsize -= RXRPC_JUMBO_DATALEN + + sizeof(struct rxrpc_jumbo_header); msg->hdr.flags = jumbo.flags; msg->hdr._rsvd = jumbo._rsvd; - _net("Rx Split jumbo packet from %s (%08x;%08x,%1x,%d,%s,%02x,%d,%d)", + _net("Rx Split jumbo packet from %s" + " (%08x;%08x,%1x,%d,%s,%02x,%d,%d)", msg->hdr.flags & RXRPC_CLIENT_INITIATED ? "client" : "server", ntohl(msg->hdr.epoch), (ntohl(msg->hdr.cid) & RXRPC_CIDMASK) >> RXRPC_CIDSHIFT, @@ -407,18 +414,18 @@ __RXACCT(atomic_inc(&rxrpc_message_count)); } - _leave(" = 0 #%d",atomic_read(&rxrpc_message_count)); + _leave(" = 0 #%d", atomic_read(&rxrpc_message_count)); return 0; error: while (!list_empty(msgq)) { - msg = list_entry(msgq->next,struct rxrpc_message,link); + msg = list_entry(msgq->next, struct rxrpc_message, link); list_del_init(&msg->link); rxrpc_put_message(msg); } - _leave(" = %d",ret); + _leave(" = %d", ret); return ret; } /* end rxrpc_incoming_msg() */ @@ -438,7 +445,7 @@ LIST_HEAD(msgq); - _enter("%p{%d}",trans,trans->port); + _enter("%p{%d}", trans, trans->port); for (;;) { /* deal with outstanting errors first */ @@ -446,22 +453,25 @@ rxrpc_trans_receive_error_report(trans); /* attempt to receive a packet */ - pkt = skb_recv_datagram(trans->socket->sk,0,1,&ret); + pkt = skb_recv_datagram(trans->socket->sk, 0, 1, &ret); if (!pkt) { - if (ret==-EAGAIN) { + if (ret == -EAGAIN) { _leave(" EAGAIN"); return; } /* an icmp error may have occurred */ rxrpc_krxiod_queue_transport(trans); - _leave(" error %d\n",ret); + _leave(" error %d\n", ret); return; } - /* we'll probably need to checksum it (didn't call sock_recvmsg) */ + /* we'll probably need to checksum it (didn't call + * sock_recvmsg) */ if (pkt->ip_summed != CHECKSUM_UNNECESSARY) { - if ((unsigned short)csum_fold(skb_checksum(pkt,0,pkt->len,pkt->csum))) { + if ((unsigned short) + csum_fold(skb_checksum(pkt, 0, pkt->len, + pkt->csum))) { kfree_skb(pkt); rxrpc_krxiod_queue_transport(trans); _leave(" CSUM failed"); @@ -472,34 +482,36 @@ addr = pkt->nh.iph->saddr; port = pkt->h.uh->source; - _net("Rx Received UDP packet from %08x:%04hu",ntohl(addr),ntohs(port)); + _net("Rx Received UDP packet from %08x:%04hu", + ntohl(addr), ntohs(port)); /* unmarshall the Rx parameters and split jumbo packets */ - ret = rxrpc_incoming_msg(trans,pkt,&msgq); - if (ret<0) { + ret = rxrpc_incoming_msg(trans, pkt, &msgq); + if (ret < 0) { kfree_skb(pkt); rxrpc_krxiod_queue_transport(trans); _leave(" bad packet"); return; } - if (list_empty(&msgq)) BUG(); + BUG_ON(list_empty(&msgq)); - msg = list_entry(msgq.next,struct rxrpc_message,link); + msg = list_entry(msgq.next, struct rxrpc_message, link); - /* locate the record for the peer from which it originated */ - ret = rxrpc_peer_lookup(trans,addr,&peer); - if (ret<0) { + /* locate the record for the peer from which it + * originated */ + ret = rxrpc_peer_lookup(trans, addr, &peer); + if (ret < 0) { kdebug("Rx No connections from that peer"); - rxrpc_trans_immediate_abort(trans,msg,-EINVAL); + rxrpc_trans_immediate_abort(trans, msg, -EINVAL); goto finished_msg; } /* try and find a matching connection */ - ret = rxrpc_connection_lookup(peer,msg,&msg->conn); - if (ret<0) { + ret = rxrpc_connection_lookup(peer, msg, &msg->conn); + if (ret < 0) { kdebug("Rx Unknown Connection"); - rxrpc_trans_immediate_abort(trans,msg,-EINVAL); + rxrpc_trans_immediate_abort(trans, msg, -EINVAL); rxrpc_put_peer(peer); goto finished_msg; } @@ -507,23 +519,23 @@ /* deal with the first packet of a new call */ if (msg->hdr.flags & RXRPC_CLIENT_INITIATED && - msg->hdr.type==RXRPC_PACKET_TYPE_DATA && - ntohl(msg->hdr.seq)==1 + msg->hdr.type == RXRPC_PACKET_TYPE_DATA && + ntohl(msg->hdr.seq) == 1 ) { _debug("Rx New server call"); - rxrpc_trans_receive_new_call(trans,&msgq); + rxrpc_trans_receive_new_call(trans, &msgq); goto finished_msg; } /* deal with subsequent packet(s) of call */ _debug("Rx Call packet"); while (!list_empty(&msgq)) { - msg = list_entry(msgq.next,struct rxrpc_message,link); + msg = list_entry(msgq.next, struct rxrpc_message, link); list_del_init(&msg->link); - ret = rxrpc_conn_receive_call_packet(msg->conn,NULL,msg); - if (ret<0) { - rxrpc_trans_immediate_abort(trans,msg,ret); + ret = rxrpc_conn_receive_call_packet(msg->conn, NULL, msg); + if (ret < 0) { + rxrpc_trans_immediate_abort(trans, msg, ret); rxrpc_put_message(msg); goto finished_msg; } @@ -536,7 +548,7 @@ /* dispose of the packets */ finished_msg: while (!list_empty(&msgq)) { - msg = list_entry(msgq.next,struct rxrpc_message,link); + msg = list_entry(msgq.next, struct rxrpc_message, link); list_del_init(&msg->link); rxrpc_put_message(msg); @@ -561,7 +573,7 @@ _enter(""); /* only bother with the first packet */ - msg = list_entry(msgq->next,struct rxrpc_message,link); + msg = list_entry(msgq->next, struct rxrpc_message, link); list_del_init(&msg->link); rxrpc_krxsecd_queue_incoming_call(msg); rxrpc_put_message(msg); @@ -584,13 +596,13 @@ struct msghdr msghdr; struct iovec iov[2]; mm_segment_t oldfs; + uint32_t _error; int len, ret; - u32 _error; - _enter("%p,%p,%d",trans,msg,error); + _enter("%p,%p,%d", trans, msg, error); /* don't abort an abort packet */ - if (msg->hdr.type==RXRPC_PACKET_TYPE_ABORT) { + if (msg->hdr.type == RXRPC_PACKET_TYPE_ABORT) { _leave(" = 0"); return 0; } @@ -598,12 +610,13 @@ _error = htonl(-error); /* set up the message to be transmitted */ - memcpy(&ahdr,&msg->hdr,sizeof(ahdr)); + memcpy(&ahdr, &msg->hdr, sizeof(ahdr)); ahdr.epoch = msg->hdr.epoch; ahdr.serial = htonl(1); ahdr.seq = 0; ahdr.type = RXRPC_PACKET_TYPE_ABORT; - ahdr.flags = RXRPC_LAST_PACKET | (~msg->hdr.flags & RXRPC_CLIENT_INITIATED); + ahdr.flags = RXRPC_LAST_PACKET; + ahdr.flags |= ~msg->hdr.flags & RXRPC_CLIENT_INITIATED; iov[0].iov_len = sizeof(ahdr); iov[0].iov_base = &ahdr; @@ -634,17 +647,17 @@ /* send the message */ oldfs = get_fs(); set_fs(KERNEL_DS); - ret = sock_sendmsg(trans->socket,&msghdr,len); + ret = sock_sendmsg(trans->socket, &msghdr, len); set_fs(oldfs); - _leave(" = %d",ret); + _leave(" = %d", ret); return ret; } /* end rxrpc_trans_immediate_abort() */ /*****************************************************************************/ /* - * receive an ICMP error report and percolate it to all connections heading to the affected - * host or port + * receive an ICMP error report and percolate it to all connections + * heading to the affected host or port */ static void rxrpc_trans_receive_error_report(struct rxrpc_transport *trans) { @@ -655,10 +668,10 @@ struct errormsg emsg; struct msghdr msg; mm_segment_t oldfs; + uint16_t port; int local, err; - u16 port; - _enter("%p",trans); + _enter("%p", trans); for (;;) { trans->error_rcvd = 0; @@ -674,48 +687,63 @@ oldfs = get_fs(); set_fs(KERNEL_DS); - err = sock_recvmsg(trans->socket,&msg,0,MSG_ERRQUEUE|MSG_DONTWAIT|MSG_TRUNC); + err = sock_recvmsg(trans->socket, &msg, 0, + MSG_ERRQUEUE | MSG_DONTWAIT | MSG_TRUNC); set_fs(oldfs); - if (err==-EAGAIN) { + if (err == -EAGAIN) { _leave(""); return; } - if (err<0) { - printk("%s: unable to recv an error report: %d\n",__FUNCTION__,err); + if (err < 0) { + printk("%s: unable to recv an error report: %d\n", + __FUNCTION__, err); _leave(""); return; } - msg.msg_controllen = (char*)msg.msg_control - (char*)&emsg; + msg.msg_controllen = (char *) msg.msg_control - (char *) &emsg; - if (msg.msg_controllenconn_lock); - list_for_each(_p,&peer->conn_active) { - conn = list_entry(_p,struct rxrpc_connection,link); - if (port && conn->addr.sin_port!=port) + list_for_each(_p, &peer->conn_active) { + conn = list_entry(_p, struct rxrpc_connection, + link); + if (port && conn->addr.sin_port != port) continue; if (!list_empty(&conn->err_link)) continue; rxrpc_get_connection(conn); - list_add_tail(&conn->err_link,&connq); + list_add_tail(&conn->err_link, &connq); } read_unlock(&peer->conn_lock); /* service all those connections */ while (!list_empty(&connq)) { - conn = list_entry(connq.next,struct rxrpc_connection,err_link); + conn = list_entry(connq.next, + struct rxrpc_connection, + err_link); list_del(&conn->err_link); - rxrpc_conn_handle_error(conn,local,err); + rxrpc_conn_handle_error(conn, local, err); rxrpc_put_connection(conn); } diff -Nru a/net/sched/estimator.c b/net/sched/estimator.c --- a/net/sched/estimator.c Mon Sep 22 00:30:18 2003 +++ b/net/sched/estimator.c Mon Sep 22 00:30:18 2003 @@ -26,7 +26,6 @@ #include #include #include -#include #include #include diff -Nru a/net/sched/police.c b/net/sched/police.c --- a/net/sched/police.c Mon Sep 22 00:30:24 2003 +++ b/net/sched/police.c Mon Sep 22 00:30:24 2003 @@ -27,7 +27,6 @@ #include #include #include -#include #include #include diff -Nru a/net/sched/sch_api.c b/net/sched/sch_api.c --- a/net/sched/sch_api.c Mon Sep 22 00:30:21 2003 +++ b/net/sched/sch_api.c Mon Sep 22 00:30:21 2003 @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -1059,27 +1060,27 @@ int psched_tick_per_us = 1; #ifdef CONFIG_PROC_FS -static int psched_read_proc(char *buffer, char **start, off_t offset, - int length, int *eof, void *data) +static int psched_show(struct seq_file *seq, void *v) { - int len; - - len = sprintf(buffer, "%08x %08x %08x %08x\n", + seq_printf(seq, "%08x %08x %08x %08x\n", psched_tick_per_us, psched_us_per_tick, 1000000, HZ); - len -= offset; - - if (len > length) - len = length; - if(len < 0) - len = 0; - - *start = buffer + offset; - *eof = 1; + return 0; +} - return len; +static int psched_open(struct inode *inode, struct file *file) +{ + return single_open(file, psched_show, PDE(inode)->data); } + +static struct file_operations psched_fops = { + .owner = THIS_MODULE, + .open = psched_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; #endif #if PSCHED_CLOCK_SOURCE == PSCHED_GETTIMEOFDAY @@ -1250,9 +1251,7 @@ tc_filter_init(); #endif -#ifdef CONFIG_PROC_FS - create_proc_read_entry("net/psched", 0, 0, psched_read_proc, NULL); -#endif + proc_net_fops_create("psched", 0, &psched_fops); return 0; } diff -Nru a/net/sched/sch_atm.c b/net/sched/sch_atm.c --- a/net/sched/sch_atm.c Mon Sep 22 00:30:21 2003 +++ b/net/sched/sch_atm.c Mon Sep 22 00:30:21 2003 @@ -216,6 +216,13 @@ tasklet_schedule(&p->task); } +static const u8 llc_oui_ip[] = { + 0xaa, /* DSAP: non-ISO */ + 0xaa, /* SSAP: non-ISO */ + 0x03, /* Ctrl: Unnumbered Information Command PDU */ + 0x00, /* OUI: EtherType */ + 0x00, 0x00, + 0x08, 0x00 }; /* Ethertype IP (0800) */ static int atm_tc_change(struct Qdisc *sch, u32 classid, u32 parent, struct rtattr **tca, unsigned long *arg) @@ -322,11 +329,10 @@ flow->next = p->link.next; p->link.next = flow; flow->hdr_len = hdr_len; - if (hdr) memcpy(flow->hdr,hdr,hdr_len); - else { - memcpy(flow->hdr,llc_oui,sizeof(llc_oui)); - ((u16 *) flow->hdr)[3] = htons(ETH_P_IP); - } + if (hdr) + memcpy(flow->hdr,hdr,hdr_len); + else + memcpy(flow->hdr,llc_oui_ip,sizeof(llc_oui_ip)); *arg = (unsigned long) flow; return 0; err_out: diff -Nru a/net/sched/sch_generic.c b/net/sched/sch_generic.c --- a/net/sched/sch_generic.c Mon Sep 22 00:30:18 2003 +++ b/net/sched/sch_generic.c Mon Sep 22 00:30:18 2003 @@ -7,7 +7,7 @@ * 2 of the License, or (at your option) any later version. * * Authors: Alexey Kuznetsov, - * Jamal Hadi Salim, 990601 + * Jamal Hadi Salim, 990601 * - Ingress support */ @@ -278,6 +278,8 @@ if (list->qlen <= qdisc->dev->tx_queue_len) { __skb_queue_tail(list, skb); qdisc->q.qlen++; + qdisc->stats.bytes += skb->len; + qdisc->stats.packets++; return 0; } qdisc->stats.drops++; @@ -326,6 +328,21 @@ qdisc->q.qlen = 0; } +static int pfifo_fast_dump(struct Qdisc *qdisc, struct sk_buff *skb) +{ + unsigned char *b = skb->tail; + struct tc_prio_qopt opt; + + opt.bands = 3; + memcpy(&opt.priomap, prio2band, TC_PRIO_MAX+1); + RTA_PUT(skb, TCA_OPTIONS, sizeof(opt), &opt); + return skb->len; + +rtattr_failure: + skb_trim(skb, b - skb->data); + return -1; +} + static int pfifo_fast_init(struct Qdisc *qdisc, struct rtattr *opt) { int i; @@ -349,6 +366,7 @@ .requeue = pfifo_fast_requeue, .init = pfifo_fast_init, .reset = pfifo_fast_reset, + .dump = pfifo_fast_dump, .owner = THIS_MODULE, }; @@ -438,6 +456,12 @@ printk(KERN_INFO "%s: activation failed\n", dev->name); return; } + + write_lock(&qdisc_tree_lock); + qdisc->next = dev->qdisc_list; + dev->qdisc_list = qdisc; + write_unlock(&qdisc_tree_lock); + } else { qdisc = &noqueue_qdisc; } diff -Nru a/net/sched/sch_htb.c b/net/sched/sch_htb.c --- a/net/sched/sch_htb.c Mon Sep 22 00:30:22 2003 +++ b/net/sched/sch_htb.c Mon Sep 22 00:30:22 2003 @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff -Nru a/net/sunrpc/cache.c b/net/sunrpc/cache.c --- a/net/sunrpc/cache.c Mon Sep 22 00:30:22 2003 +++ b/net/sunrpc/cache.c Mon Sep 22 00:30:22 2003 @@ -1035,7 +1035,7 @@ read_lock(&cd->hash_lock); if (!n--) - return (void *)1; + return SEQ_START_TOKEN; hash = n >> 32; entry = n & ((1LL<<32) - 1); @@ -1060,7 +1060,7 @@ int hash = (*pos >> 32); struct cache_detail *cd = ((struct handle*)m->private)->cd; - if (p == (void *)1) + if (p == SEQ_START_TOKEN) hash = 0; else if (ch->next == NULL) { hash++; @@ -1092,7 +1092,7 @@ struct cache_head *cp = p; struct cache_detail *cd = ((struct handle*)m->private)->cd; - if (p == (void *)1) + if (p == SEQ_START_TOKEN) return cd->cache_show(m, cd, NULL); ifdebug(CACHE) diff -Nru a/net/wanrouter/af_wanpipe.c b/net/wanrouter/af_wanpipe.c --- a/net/wanrouter/af_wanpipe.c Mon Sep 22 00:30:25 2003 +++ b/net/wanrouter/af_wanpipe.c Mon Sep 22 00:30:25 2003 @@ -32,7 +32,6 @@ * ******************************************************************************/ -#include #include #include #include diff -Nru a/net/wanrouter/wanmain.c b/net/wanrouter/wanmain.c --- a/net/wanrouter/wanmain.c Mon Sep 22 00:30:23 2003 +++ b/net/wanrouter/wanmain.c Mon Sep 22 00:30:23 2003 @@ -42,7 +42,6 @@ * Jun 02, 1999 Gideon Hack Updates for Linux 2.0.X and 2.2.X kernels. *****************************************************************************/ -#include #include #include /* offsetof(), etc. */ #include /* return codes */ diff -Nru a/net/wanrouter/wanproc.c b/net/wanrouter/wanproc.c --- a/net/wanrouter/wanproc.c Mon Sep 22 00:30:21 2003 +++ b/net/wanrouter/wanproc.c Mon Sep 22 00:30:21 2003 @@ -86,7 +86,7 @@ lock_kernel(); if (!l--) - return (void *)1; + return SEQ_START_TOKEN; for (wandev = wanrouter_router_devlist; l-- && wandev; wandev = wandev->next) ; @@ -97,7 +97,7 @@ { struct wan_device *wandev = v; (*pos)++; - return (v == (void *)1) ? wanrouter_router_devlist : wandev->next; + return (v == SEQ_START_TOKEN) ? wanrouter_router_devlist : wandev->next; } static void r_stop(struct seq_file *m, void *v) @@ -108,7 +108,7 @@ static int config_show(struct seq_file *m, void *v) { struct wan_device *p = v; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(m, "Device name | port |IRQ|DMA| mem.addr |" "mem.size|option1|option2|option3|option4\n"); return 0; @@ -124,7 +124,7 @@ static int status_show(struct seq_file *m, void *v) { struct wan_device *p = v; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(m, "Device name |protocol|station|interface|" "clocking|baud rate| MTU |ndev|link state\n"); return 0; diff -Nru a/net/x25/x25_proc.c b/net/x25/x25_proc.c --- a/net/x25/x25_proc.c Mon Sep 22 00:30:19 2003 +++ b/net/x25/x25_proc.c Mon Sep 22 00:30:19 2003 @@ -44,7 +44,7 @@ loff_t l = *pos; read_lock_bh(&x25_route_list_lock); - return l ? x25_get_route_idx(--l) : (void *)1; + return l ? x25_get_route_idx(--l) : SEQ_START_TOKEN; } static void *x25_seq_route_next(struct seq_file *seq, void *v, loff_t *pos) @@ -52,7 +52,7 @@ struct x25_route *rt; ++*pos; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { rt = NULL; if (!list_empty(&x25_route_list)) rt = list_entry(x25_route_list.next, @@ -77,7 +77,7 @@ { struct x25_route *rt; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_puts(seq, "Address Digits Device\n"); goto out; } @@ -108,7 +108,7 @@ loff_t l = *pos; read_lock_bh(&x25_list_lock); - return l ? x25_get_socket_idx(--l) : (void *)1; + return l ? x25_get_socket_idx(--l) : SEQ_START_TOKEN; } static void *x25_seq_socket_next(struct seq_file *seq, void *v, loff_t *pos) @@ -116,7 +116,7 @@ struct sock *s; ++*pos; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { s = sk_head(&x25_list); goto out; } @@ -137,7 +137,7 @@ struct net_device *dev; const char *devname; - if (v == (void *)1) { + if (v == SEQ_START_TOKEN) { seq_printf(seq, "dest_addr src_addr dev lci st vs vr " "va t t2 t21 t22 t23 Snd-Q Rcv-Q inode\n"); goto out; diff -Nru a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c --- a/net/xfrm/xfrm_user.c Mon Sep 22 00:30:22 2003 +++ b/net/xfrm/xfrm_user.c Mon Sep 22 00:30:22 2003 @@ -433,9 +433,9 @@ case IPPROTO_COMP: /* IPCOMP spi is 16-bits. */ - if (p->min >= 0x10000 || - p->max >= 0x10000) + if (p->max >= 0x10000) return -EINVAL; + break; default: return -EINVAL; @@ -470,7 +470,7 @@ spin_lock_bh(&x->lock); if (x->km.state != XFRM_STATE_DEAD) { - xfrm_alloc_spi(x, p->min, p->max); + xfrm_alloc_spi(x, htonl(p->min), htonl(p->max)); if (x->id.spi) resp_skb = xfrm_state_netlink(skb, x, nlh->nlmsg_seq); } diff -Nru a/scripts/Makefile b/scripts/Makefile --- a/scripts/Makefile Mon Sep 22 00:30:22 2003 +++ b/scripts/Makefile Mon Sep 22 00:30:22 2003 @@ -9,7 +9,7 @@ # conmakehash: Create arrays for initializing the kernel console tables host-progs := fixdep split-include conmakehash docproc kallsyms modpost \ - mk_elfconfig pnmtologo + mk_elfconfig pnmtologo bin2c always := $(host-progs) empty.o modpost-objs := modpost.o file2alias.o diff -Nru a/scripts/bin2c.c b/scripts/bin2c.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/scripts/bin2c.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,27 @@ +#include + +int main(int argc, char *argv[]) +{ + int ch, total=0; + + if (argc > 1) + printf("const char %s[] %s=\n", + argv[1], argc > 2 ? argv[2] : ""); + + do { + printf("\t\""); + while ((ch = getchar()) != EOF) + { + total++; + printf("\\x%02x",ch); + if (total % 16 == 0) + break; + } + printf("\"\n"); + } while (ch != EOF); + + if (argc > 1) + printf("\t;\n\nconst int %s_size = %d;\n", argv[1], total); + + return 0; +} diff -Nru a/scripts/mkcompile_h b/scripts/mkcompile_h --- a/scripts/mkcompile_h Mon Sep 22 00:30:25 2003 +++ b/scripts/mkcompile_h Mon Sep 22 00:30:25 2003 @@ -27,7 +27,7 @@ UTS_VERSION="#$VERSION" if [ -n "$SMP" ] ; then UTS_VERSION="$UTS_VERSION SMP"; fi -UTS_VERSION="$UTS_VERSION `LANG=C date`" +UTS_VERSION="$UTS_VERSION `LC_ALL=C LANG=C date`" # Truncate to maximum length @@ -42,7 +42,7 @@ echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\" - echo \#define LINUX_COMPILE_TIME \"`LANG=C date +%T`\" + echo \#define LINUX_COMPILE_TIME \"`LC_ALL=C LANG=C date +%T`\" echo \#define LINUX_COMPILE_BY \"`whoami`\" echo \#define LINUX_COMPILE_HOST \"`hostname | $UTS_TRUNCATE`\" diff -Nru a/scripts/mkconfigs b/scripts/mkconfigs --- a/scripts/mkconfigs Mon Sep 22 00:30:20 2003 +++ b/scripts/mkconfigs Mon Sep 22 00:30:20 2003 @@ -25,12 +25,6 @@ # - Retain lines that begin with "# CONFIG_" # - lines that use double-quotes must \\-escape-quote them - -kernel_version() -{ - KERNVER="`grep VERSION $1 | head -1 | cut -f3 -d' '`.`grep PATCHLEVEL $1 | head -1 | cut -f3 -d' '`.`grep SUBLEVEL $1 | head -1 | cut -f3 -d' '``grep EXTRAVERSION $1 | head -1 | cut -f3 -d' '`" -} - if [ $# -lt 2 ] then echo "Usage: `basename $0` " @@ -66,15 +60,7 @@ * */" -echo "static char *ikconfig_built_with =" -echo " \"`uname -s` `uname -r` `uname -v` `uname -m`\";" -echo -kernel_version $makefile -echo "#ifdef CONFIG_IKCONFIG_PROC" -echo "static char *ikconfig_config = " -echo "#else" -echo "static char *ikconfig_config __initdata __attribute__((unused)) = " -echo "#endif" +echo "static char const ikconfig_config[] __attribute__((unused)) = " echo "\"CONFIG_BEGIN=n\\n\\" echo "`cat $config | sed 's/\"/\\\\\"/g' | grep "^#\? \?CONFIG_" | awk '{ print $0 "\\\\n\\\\" }' `" echo "CONFIG_END=n\\n\";" diff -Nru a/scripts/modpost.c b/scripts/modpost.c --- a/scripts/modpost.c Mon Sep 22 00:30:19 2003 +++ b/scripts/modpost.c Mon Sep 22 00:30:19 2003 @@ -193,7 +193,7 @@ *size = st.st_size; map = mmap(NULL, *size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); - if (mmap == MAP_FAILED) { + if (map == MAP_FAILED) { perror(filename); abort(); } diff -Nru a/security/Makefile b/security/Makefile --- a/security/Makefile Mon Sep 22 00:30:23 2003 +++ b/security/Makefile Mon Sep 22 00:30:23 2003 @@ -6,7 +6,7 @@ # if we don't select a security model, use the default capabilities ifneq ($(CONFIG_SECURITY),y) -obj-y += capability.o +obj-y += commoncap.o capability.o endif # Object file lists @@ -15,5 +15,5 @@ ifeq ($(CONFIG_SECURITY_SELINUX),y) obj-$(CONFIG_SECURITY_SELINUX) += selinux/built-in.o endif -obj-$(CONFIG_SECURITY_CAPABILITIES) += capability.o -obj-$(CONFIG_SECURITY_ROOTPLUG) += root_plug.o +obj-$(CONFIG_SECURITY_CAPABILITIES) += commoncap.o capability.o +obj-$(CONFIG_SECURITY_ROOTPLUG) += commoncap.o root_plug.o diff -Nru a/security/capability.c b/security/capability.c --- a/security/capability.c Mon Sep 22 00:30:20 2003 +++ b/security/capability.c Mon Sep 22 00:30:20 2003 @@ -23,334 +23,6 @@ #include #include -int cap_capable (struct task_struct *tsk, int cap) -{ - /* Derived from include/linux/sched.h:capable. */ - if (cap_raised (tsk->cap_effective, cap)) - return 0; - else - return -EPERM; -} - -int cap_ptrace (struct task_struct *parent, struct task_struct *child) -{ - /* Derived from arch/i386/kernel/ptrace.c:sys_ptrace. */ - if (!cap_issubset (child->cap_permitted, current->cap_permitted) && - !capable (CAP_SYS_PTRACE)) - return -EPERM; - else - return 0; -} - -int cap_capget (struct task_struct *target, kernel_cap_t *effective, - kernel_cap_t *inheritable, kernel_cap_t *permitted) -{ - /* Derived from kernel/capability.c:sys_capget. */ - *effective = cap_t (target->cap_effective); - *inheritable = cap_t (target->cap_inheritable); - *permitted = cap_t (target->cap_permitted); - return 0; -} - -int cap_capset_check (struct task_struct *target, kernel_cap_t *effective, - kernel_cap_t *inheritable, kernel_cap_t *permitted) -{ - /* Derived from kernel/capability.c:sys_capset. */ - /* verify restrictions on target's new Inheritable set */ - if (!cap_issubset (*inheritable, - cap_combine (target->cap_inheritable, - current->cap_permitted))) { - return -EPERM; - } - - /* verify restrictions on target's new Permitted set */ - if (!cap_issubset (*permitted, - cap_combine (target->cap_permitted, - current->cap_permitted))) { - return -EPERM; - } - - /* verify the _new_Effective_ is a subset of the _new_Permitted_ */ - if (!cap_issubset (*effective, *permitted)) { - return -EPERM; - } - - return 0; -} - -void cap_capset_set (struct task_struct *target, kernel_cap_t *effective, - kernel_cap_t *inheritable, kernel_cap_t *permitted) -{ - target->cap_effective = *effective; - target->cap_inheritable = *inheritable; - target->cap_permitted = *permitted; -} - -int cap_bprm_set_security (struct linux_binprm *bprm) -{ - /* Copied from fs/exec.c:prepare_binprm. */ - - /* We don't have VFS support for capabilities yet */ - cap_clear (bprm->cap_inheritable); - cap_clear (bprm->cap_permitted); - cap_clear (bprm->cap_effective); - - /* To support inheritance of root-permissions and suid-root - * executables under compatibility mode, we raise all three - * capability sets for the file. - * - * If only the real uid is 0, we only raise the inheritable - * and permitted sets of the executable file. - */ - - if (!issecure (SECURE_NOROOT)) { - if (bprm->e_uid == 0 || current->uid == 0) { - cap_set_full (bprm->cap_inheritable); - cap_set_full (bprm->cap_permitted); - } - if (bprm->e_uid == 0) - cap_set_full (bprm->cap_effective); - } - return 0; -} - -/* Copied from fs/exec.c */ -static inline int must_not_trace_exec (struct task_struct *p) -{ - return (p->ptrace & PT_PTRACED) && !(p->ptrace & PT_PTRACE_CAP); -} - -void cap_bprm_compute_creds (struct linux_binprm *bprm) -{ - /* Derived from fs/exec.c:compute_creds. */ - kernel_cap_t new_permitted, working; - - new_permitted = cap_intersect (bprm->cap_permitted, cap_bset); - working = cap_intersect (bprm->cap_inheritable, - current->cap_inheritable); - new_permitted = cap_combine (new_permitted, working); - - task_lock(current); - if (!cap_issubset (new_permitted, current->cap_permitted)) { - current->mm->dumpable = 0; - - if (must_not_trace_exec (current) - || atomic_read (¤t->fs->count) > 1 - || atomic_read (¤t->files->count) > 1 - || atomic_read (¤t->sighand->count) > 1) { - if (!capable (CAP_SETPCAP)) { - new_permitted = cap_intersect (new_permitted, - current-> - cap_permitted); - } - } - } - - /* For init, we want to retain the capabilities set - * in the init_task struct. Thus we skip the usual - * capability rules */ - if (current->pid != 1) { - current->cap_permitted = new_permitted; - current->cap_effective = - cap_intersect (new_permitted, bprm->cap_effective); - } - - /* AUD: Audit candidate if current->cap_effective is set */ - task_unlock(current); - - current->keep_capabilities = 0; -} - -int cap_bprm_secureexec (struct linux_binprm *bprm) -{ - /* If/when this module is enhanced to incorporate capability - bits on files, the test below should be extended to also perform a - test between the old and new capability sets. For now, - it simply preserves the legacy decision algorithm used by - the old userland. */ - return (current->euid != current->uid || - current->egid != current->gid); -} - -/* moved from kernel/sys.c. */ -/* - * cap_emulate_setxuid() fixes the effective / permitted capabilities of - * a process after a call to setuid, setreuid, or setresuid. - * - * 1) When set*uiding _from_ one of {r,e,s}uid == 0 _to_ all of - * {r,e,s}uid != 0, the permitted and effective capabilities are - * cleared. - * - * 2) When set*uiding _from_ euid == 0 _to_ euid != 0, the effective - * capabilities of the process are cleared. - * - * 3) When set*uiding _from_ euid != 0 _to_ euid == 0, the effective - * capabilities are set to the permitted capabilities. - * - * fsuid is handled elsewhere. fsuid == 0 and {r,e,s}uid!= 0 should - * never happen. - * - * -astor - * - * cevans - New behaviour, Oct '99 - * A process may, via prctl(), elect to keep its capabilities when it - * calls setuid() and switches away from uid==0. Both permitted and - * effective sets will be retained. - * Without this change, it was impossible for a daemon to drop only some - * of its privilege. The call to setuid(!=0) would drop all privileges! - * Keeping uid 0 is not an option because uid 0 owns too many vital - * files.. - * Thanks to Olaf Kirch and Peter Benie for spotting this. - */ -static inline void cap_emulate_setxuid (int old_ruid, int old_euid, - int old_suid) -{ - if ((old_ruid == 0 || old_euid == 0 || old_suid == 0) && - (current->uid != 0 && current->euid != 0 && current->suid != 0) && - !current->keep_capabilities) { - cap_clear (current->cap_permitted); - cap_clear (current->cap_effective); - } - if (old_euid == 0 && current->euid != 0) { - cap_clear (current->cap_effective); - } - if (old_euid != 0 && current->euid == 0) { - current->cap_effective = current->cap_permitted; - } -} - -int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, - int flags) -{ - switch (flags) { - case LSM_SETID_RE: - case LSM_SETID_ID: - case LSM_SETID_RES: - /* Copied from kernel/sys.c:setreuid/setuid/setresuid. */ - if (!issecure (SECURE_NO_SETUID_FIXUP)) { - cap_emulate_setxuid (old_ruid, old_euid, old_suid); - } - break; - case LSM_SETID_FS: - { - uid_t old_fsuid = old_ruid; - - /* Copied from kernel/sys.c:setfsuid. */ - - /* - * FIXME - is fsuser used for all CAP_FS_MASK capabilities? - * if not, we might be a bit too harsh here. - */ - - if (!issecure (SECURE_NO_SETUID_FIXUP)) { - if (old_fsuid == 0 && current->fsuid != 0) { - cap_t (current->cap_effective) &= - ~CAP_FS_MASK; - } - if (old_fsuid != 0 && current->fsuid == 0) { - cap_t (current->cap_effective) |= - (cap_t (current->cap_permitted) & - CAP_FS_MASK); - } - } - break; - } - default: - return -EINVAL; - } - - return 0; -} - -void cap_task_reparent_to_init (struct task_struct *p) -{ - p->cap_effective = CAP_INIT_EFF_SET; - p->cap_inheritable = CAP_INIT_INH_SET; - p->cap_permitted = CAP_FULL_SET; - p->keep_capabilities = 0; - return; -} - -int cap_syslog (int type) -{ - if ((type != 3) && !capable(CAP_SYS_ADMIN)) - return -EPERM; - return 0; -} - -/* - * Check that a process has enough memory to allocate a new virtual - * mapping. 0 means there is enough memory for the allocation to - * succeed and -ENOMEM implies there is not. - * - * We currently support three overcommit policies, which are set via the - * vm.overcommit_memory sysctl. See Documentation/vm/overcommit-acounting - * - * Strict overcommit modes added 2002 Feb 26 by Alan Cox. - * Additional code 2002 Jul 20 by Robert Love. - */ -int cap_vm_enough_memory(long pages) -{ - unsigned long free, allowed; - - vm_acct_memory(pages); - - /* We estimate memory ourselves (common case) */ - if (sysctl_overcommit_memory == 0) { - free = get_page_cache_size(); - free += nr_free_pages(); - free += nr_swap_pages; - - /* - * Any slabs which are created with the - * SLAB_RECLAIM_ACCOUNT flag claim to have contents - * which are reclaimable, under pressure. The dentry - * cache and most inode caches should fall into this - */ - free += atomic_read(&slab_reclaim_pages); - - /* - * Leave the last 3% for root - */ - if (!capable(CAP_SYS_ADMIN)) - free -= free / 32; - - if (free > pages) - return 0; - - vm_unacct_memory(pages); - return -ENOMEM; - } - - /* Kernel assumes allocation */ - if (sysctl_overcommit_memory == 1) - return 0; - - /* sysctl_overcommit_memory must be 2 which means strict_overcommit*/ - allowed = totalram_pages * sysctl_overcommit_ratio / 100; - allowed += total_swap_pages; - - if (atomic_read(&vm_committed_space) < allowed) - return 0; - - vm_unacct_memory(pages); - - return -ENOMEM; -} - -EXPORT_SYMBOL(cap_capable); -EXPORT_SYMBOL(cap_ptrace); -EXPORT_SYMBOL(cap_capget); -EXPORT_SYMBOL(cap_capset_check); -EXPORT_SYMBOL(cap_capset_set); -EXPORT_SYMBOL(cap_bprm_set_security); -EXPORT_SYMBOL(cap_bprm_compute_creds); -EXPORT_SYMBOL(cap_bprm_secureexec); -EXPORT_SYMBOL(cap_task_post_setuid); -EXPORT_SYMBOL(cap_task_reparent_to_init); -EXPORT_SYMBOL(cap_syslog); -EXPORT_SYMBOL(cap_vm_enough_memory); - #ifdef CONFIG_SECURITY diff -Nru a/security/commoncap.c b/security/commoncap.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/security/commoncap.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,353 @@ +/* Common capabilities, needed by capability.o and root_plug.o + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int cap_capable (struct task_struct *tsk, int cap) +{ + /* Derived from include/linux/sched.h:capable. */ + if (cap_raised (tsk->cap_effective, cap)) + return 0; + else + return -EPERM; +} + +int cap_ptrace (struct task_struct *parent, struct task_struct *child) +{ + /* Derived from arch/i386/kernel/ptrace.c:sys_ptrace. */ + if (!cap_issubset (child->cap_permitted, current->cap_permitted) && + !capable (CAP_SYS_PTRACE)) + return -EPERM; + else + return 0; +} + +int cap_capget (struct task_struct *target, kernel_cap_t *effective, + kernel_cap_t *inheritable, kernel_cap_t *permitted) +{ + /* Derived from kernel/capability.c:sys_capget. */ + *effective = cap_t (target->cap_effective); + *inheritable = cap_t (target->cap_inheritable); + *permitted = cap_t (target->cap_permitted); + return 0; +} + +int cap_capset_check (struct task_struct *target, kernel_cap_t *effective, + kernel_cap_t *inheritable, kernel_cap_t *permitted) +{ + /* Derived from kernel/capability.c:sys_capset. */ + /* verify restrictions on target's new Inheritable set */ + if (!cap_issubset (*inheritable, + cap_combine (target->cap_inheritable, + current->cap_permitted))) { + return -EPERM; + } + + /* verify restrictions on target's new Permitted set */ + if (!cap_issubset (*permitted, + cap_combine (target->cap_permitted, + current->cap_permitted))) { + return -EPERM; + } + + /* verify the _new_Effective_ is a subset of the _new_Permitted_ */ + if (!cap_issubset (*effective, *permitted)) { + return -EPERM; + } + + return 0; +} + +void cap_capset_set (struct task_struct *target, kernel_cap_t *effective, + kernel_cap_t *inheritable, kernel_cap_t *permitted) +{ + target->cap_effective = *effective; + target->cap_inheritable = *inheritable; + target->cap_permitted = *permitted; +} + +int cap_bprm_set_security (struct linux_binprm *bprm) +{ + /* Copied from fs/exec.c:prepare_binprm. */ + + /* We don't have VFS support for capabilities yet */ + cap_clear (bprm->cap_inheritable); + cap_clear (bprm->cap_permitted); + cap_clear (bprm->cap_effective); + + /* To support inheritance of root-permissions and suid-root + * executables under compatibility mode, we raise all three + * capability sets for the file. + * + * If only the real uid is 0, we only raise the inheritable + * and permitted sets of the executable file. + */ + + if (!issecure (SECURE_NOROOT)) { + if (bprm->e_uid == 0 || current->uid == 0) { + cap_set_full (bprm->cap_inheritable); + cap_set_full (bprm->cap_permitted); + } + if (bprm->e_uid == 0) + cap_set_full (bprm->cap_effective); + } + return 0; +} + +/* Copied from fs/exec.c */ +static inline int must_not_trace_exec (struct task_struct *p) +{ + return (p->ptrace & PT_PTRACED) && !(p->ptrace & PT_PTRACE_CAP); +} + +void cap_bprm_compute_creds (struct linux_binprm *bprm) +{ + /* Derived from fs/exec.c:compute_creds. */ + kernel_cap_t new_permitted, working; + + new_permitted = cap_intersect (bprm->cap_permitted, cap_bset); + working = cap_intersect (bprm->cap_inheritable, + current->cap_inheritable); + new_permitted = cap_combine (new_permitted, working); + + task_lock(current); + if (!cap_issubset (new_permitted, current->cap_permitted)) { + current->mm->dumpable = 0; + + if (must_not_trace_exec (current) + || atomic_read (¤t->fs->count) > 1 + || atomic_read (¤t->files->count) > 1 + || atomic_read (¤t->sighand->count) > 1) { + if (!capable (CAP_SETPCAP)) { + new_permitted = cap_intersect (new_permitted, + current-> + cap_permitted); + } + } + } + + /* For init, we want to retain the capabilities set + * in the init_task struct. Thus we skip the usual + * capability rules */ + if (current->pid != 1) { + current->cap_permitted = new_permitted; + current->cap_effective = + cap_intersect (new_permitted, bprm->cap_effective); + } + + /* AUD: Audit candidate if current->cap_effective is set */ + task_unlock(current); + + current->keep_capabilities = 0; +} + +int cap_bprm_secureexec (struct linux_binprm *bprm) +{ + /* If/when this module is enhanced to incorporate capability + bits on files, the test below should be extended to also perform a + test between the old and new capability sets. For now, + it simply preserves the legacy decision algorithm used by + the old userland. */ + return (current->euid != current->uid || + current->egid != current->gid); +} + +/* moved from kernel/sys.c. */ +/* + * cap_emulate_setxuid() fixes the effective / permitted capabilities of + * a process after a call to setuid, setreuid, or setresuid. + * + * 1) When set*uiding _from_ one of {r,e,s}uid == 0 _to_ all of + * {r,e,s}uid != 0, the permitted and effective capabilities are + * cleared. + * + * 2) When set*uiding _from_ euid == 0 _to_ euid != 0, the effective + * capabilities of the process are cleared. + * + * 3) When set*uiding _from_ euid != 0 _to_ euid == 0, the effective + * capabilities are set to the permitted capabilities. + * + * fsuid is handled elsewhere. fsuid == 0 and {r,e,s}uid!= 0 should + * never happen. + * + * -astor + * + * cevans - New behaviour, Oct '99 + * A process may, via prctl(), elect to keep its capabilities when it + * calls setuid() and switches away from uid==0. Both permitted and + * effective sets will be retained. + * Without this change, it was impossible for a daemon to drop only some + * of its privilege. The call to setuid(!=0) would drop all privileges! + * Keeping uid 0 is not an option because uid 0 owns too many vital + * files.. + * Thanks to Olaf Kirch and Peter Benie for spotting this. + */ +static inline void cap_emulate_setxuid (int old_ruid, int old_euid, + int old_suid) +{ + if ((old_ruid == 0 || old_euid == 0 || old_suid == 0) && + (current->uid != 0 && current->euid != 0 && current->suid != 0) && + !current->keep_capabilities) { + cap_clear (current->cap_permitted); + cap_clear (current->cap_effective); + } + if (old_euid == 0 && current->euid != 0) { + cap_clear (current->cap_effective); + } + if (old_euid != 0 && current->euid == 0) { + current->cap_effective = current->cap_permitted; + } +} + +int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, + int flags) +{ + switch (flags) { + case LSM_SETID_RE: + case LSM_SETID_ID: + case LSM_SETID_RES: + /* Copied from kernel/sys.c:setreuid/setuid/setresuid. */ + if (!issecure (SECURE_NO_SETUID_FIXUP)) { + cap_emulate_setxuid (old_ruid, old_euid, old_suid); + } + break; + case LSM_SETID_FS: + { + uid_t old_fsuid = old_ruid; + + /* Copied from kernel/sys.c:setfsuid. */ + + /* + * FIXME - is fsuser used for all CAP_FS_MASK capabilities? + * if not, we might be a bit too harsh here. + */ + + if (!issecure (SECURE_NO_SETUID_FIXUP)) { + if (old_fsuid == 0 && current->fsuid != 0) { + cap_t (current->cap_effective) &= + ~CAP_FS_MASK; + } + if (old_fsuid != 0 && current->fsuid == 0) { + cap_t (current->cap_effective) |= + (cap_t (current->cap_permitted) & + CAP_FS_MASK); + } + } + break; + } + default: + return -EINVAL; + } + + return 0; +} + +void cap_task_reparent_to_init (struct task_struct *p) +{ + p->cap_effective = CAP_INIT_EFF_SET; + p->cap_inheritable = CAP_INIT_INH_SET; + p->cap_permitted = CAP_FULL_SET; + p->keep_capabilities = 0; + return; +} + +int cap_syslog (int type) +{ + if ((type != 3) && !capable(CAP_SYS_ADMIN)) + return -EPERM; + return 0; +} + +/* + * Check that a process has enough memory to allocate a new virtual + * mapping. 0 means there is enough memory for the allocation to + * succeed and -ENOMEM implies there is not. + * + * We currently support three overcommit policies, which are set via the + * vm.overcommit_memory sysctl. See Documentation/vm/overcommit-acounting + * + * Strict overcommit modes added 2002 Feb 26 by Alan Cox. + * Additional code 2002 Jul 20 by Robert Love. + */ +int cap_vm_enough_memory(long pages) +{ + unsigned long free, allowed; + + vm_acct_memory(pages); + + /* + * Sometimes we want to use more memory than we have + */ + if (sysctl_overcommit_memory == 1) + return 0; + + if (sysctl_overcommit_memory == 0) { + free = get_page_cache_size(); + free += nr_free_pages(); + free += nr_swap_pages; + + /* + * Any slabs which are created with the + * SLAB_RECLAIM_ACCOUNT flag claim to have contents + * which are reclaimable, under pressure. The dentry + * cache and most inode caches should fall into this + */ + free += atomic_read(&slab_reclaim_pages); + + /* + * Leave the last 3% for root + */ + if (!capable(CAP_SYS_ADMIN)) + free -= free / 32; + + if (free > pages) + return 0; + vm_unacct_memory(pages); + return -ENOMEM; + } + + allowed = totalram_pages * sysctl_overcommit_ratio / 100; + allowed += total_swap_pages; + + if (atomic_read(&vm_committed_space) < allowed) + return 0; + + vm_unacct_memory(pages); + + return -ENOMEM; +} + +EXPORT_SYMBOL(cap_capable); +EXPORT_SYMBOL(cap_ptrace); +EXPORT_SYMBOL(cap_capget); +EXPORT_SYMBOL(cap_capset_check); +EXPORT_SYMBOL(cap_capset_set); +EXPORT_SYMBOL(cap_bprm_set_security); +EXPORT_SYMBOL(cap_bprm_compute_creds); +EXPORT_SYMBOL(cap_bprm_secureexec); +EXPORT_SYMBOL(cap_task_post_setuid); +EXPORT_SYMBOL(cap_task_reparent_to_init); +EXPORT_SYMBOL(cap_syslog); +EXPORT_SYMBOL(cap_vm_enough_memory); + +MODULE_DESCRIPTION("Standard Linux Common Capabilities Security Module"); +MODULE_LICENSE("GPL"); diff -Nru a/security/security.c b/security/security.c --- a/security/security.c Mon Sep 22 00:30:17 2003 +++ b/security/security.c Mon Sep 22 00:30:17 2003 @@ -79,9 +79,8 @@ * value passed to this function. A call to unregister_security() should be * done to remove this security_options structure from the kernel. * - * If the @ops structure does not contain function pointers for all hooks in - * the structure, or there is already a security module registered with the - * kernel, an error will be returned. Otherwise 0 is returned on success. + * If there is already a security module registered with the kernel, + * an error will be returned. Otherwise 0 is returned on success. */ int register_security (struct security_operations *ops) { diff -Nru a/security/selinux/Kconfig b/security/selinux/Kconfig --- a/security/selinux/Kconfig Mon Sep 22 00:30:18 2003 +++ b/security/selinux/Kconfig Mon Sep 22 00:30:18 2003 @@ -8,9 +8,20 @@ You can obtain the policy compiler (checkpolicy), the utility for labeling filesystems (setfiles), and an example policy configuration from http://www.nsa.gov/selinux. - SELinux needs to be explicitly enabled on the kernel command line with - selinux=1. If you specify selinux=0 or do not use this parameter, - SELinux will not be enabled. + If you are unsure how to answer this question, answer N. + +config SECURITY_SELINUX_BOOTPARAM + bool "NSA SELinux boot parameter" + depends on SECURITY_SELINUX + default n + help + This option adds a kernel parameter 'selinux', which allows SELinux + to be disabled at boot. If this option is selected, SELinux + functionality can be disabled with selinux=0 on the kernel + command line. The purpose of this option is to allow a single + kernel image to be distributed with SELinux built in, but not + necessarily enabled. + If you are unsure how to answer this question, answer N. config SECURITY_SELINUX_DEVELOP diff -Nru a/security/selinux/hooks.c b/security/selinux/hooks.c --- a/security/selinux/hooks.c Mon Sep 22 00:30:24 2003 +++ b/security/selinux/hooks.c Mon Sep 22 00:30:24 2003 @@ -73,7 +73,8 @@ __setup("enforcing=", enforcing_setup); #endif -int selinux_enabled = 0; +#ifdef CONFIG_SECURITY_SELINUX_BOOTPARAM +int selinux_enabled = 1; static int __init selinux_enabled_setup(char *str) { @@ -81,6 +82,7 @@ return 1; } __setup("selinux=", selinux_enabled_setup); +#endif /* Original (dummy) security module. */ static struct security_operations *original_ops = NULL; @@ -3357,7 +3359,7 @@ struct task_security_struct *tsec; if (!selinux_enabled) { - printk(KERN_INFO "SELinux: Not enabled at boot.\n"); + printk(KERN_INFO "SELinux: Disabled at boot.\n"); return 0; } diff -Nru a/security/selinux/include/security.h b/security/selinux/include/security.h --- a/security/selinux/include/security.h Mon Sep 22 00:30:18 2003 +++ b/security/selinux/include/security.h Mon Sep 22 00:30:18 2003 @@ -14,6 +14,12 @@ #define SELINUX_MAGIC 0xf97cff8c +#ifdef CONFIG_SECURITY_SELINUX_BOOTPARAM +extern int selinux_enabled; +#else +#define selinux_enabled 1 +#endif + int security_load_policy(void * data, size_t len); struct av_decision { diff -Nru a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c --- a/security/selinux/selinuxfs.c Mon Sep 22 00:30:25 2003 +++ b/security/selinux/selinuxfs.c Mon Sep 22 00:30:25 2003 @@ -17,8 +17,6 @@ #include "security.h" #include "objsec.h" -extern int selinux_enabled; - /* Check whether a task is allowed to use a security operation. */ int task_has_security(struct task_struct *tsk, u32 perms) diff -Nru a/sound/core/ioctl32/ioctl32.c b/sound/core/ioctl32/ioctl32.c --- a/sound/core/ioctl32/ioctl32.c Mon Sep 22 00:30:18 2003 +++ b/sound/core/ioctl32/ioctl32.c Mon Sep 22 00:30:18 2003 @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include diff -Nru a/sound/oss/Kconfig b/sound/oss/Kconfig --- a/sound/oss/Kconfig Mon Sep 22 00:30:24 2003 +++ b/sound/oss/Kconfig Mon Sep 22 00:30:24 2003 @@ -237,13 +237,6 @@ tristate "PA Harmony audio driver" depends on GSC_LASI && SOUND -config SOUND_RME96XX - tristate "RME Hammerfall (RME96XX) support (EXPERIMENTAL)" - depends on SOUND_PRIME!=n && SOUND && PCI && EXPERIMENTAL - help - Say Y or M if you have a Hammerfall, Hammerfall light or Hammerfall - DSP card from RME. - config SOUND_SONICVIBES tristate "S3 SonicVibes" depends on SOUND_PRIME!=n && SOUND && SOUND_GAMEPORT diff -Nru a/sound/oss/ac97_codec.c b/sound/oss/ac97_codec.c --- a/sound/oss/ac97_codec.c Mon Sep 22 00:30:18 2003 +++ b/sound/oss/ac97_codec.c Mon Sep 22 00:30:18 2003 @@ -1078,6 +1078,10 @@ /* WM9711, WM9712 */ static int wolfson_init11(struct ac97_codec * codec) { + /* stop pop's during suspend/resume */ + codec->codec_write(codec, AC97_WM97XX_TEST, + codec->codec_read(codec, AC97_WM97XX_TEST) & 0xffbf); + /* set out3 volume */ codec->codec_write(codec, AC97_WM9711_OUT3VOL, 0x0808); return 0; diff -Nru a/sound/oss/dmasound/Kconfig b/sound/oss/dmasound/Kconfig --- a/sound/oss/dmasound/Kconfig Mon Sep 22 00:30:21 2003 +++ b/sound/oss/dmasound/Kconfig Mon Sep 22 00:30:21 2003 @@ -12,9 +12,9 @@ want). If you want to compile it as a module, say M here and read . -config DMASOUND_AWACS +config DMASOUND_PMAC tristate "PowerMac DMA sound support" - depends on PPC_PMAC && SOUND + depends on PPC_PMAC && SOUND && I2C help If you want to use the internal audio of your PowerMac in Linux, answer Y to this question. This will provide a Sun-like /dev/audio, diff -Nru a/sound/oss/dmasound/Makefile b/sound/oss/dmasound/Makefile --- a/sound/oss/dmasound/Makefile Mon Sep 22 00:30:19 2003 +++ b/sound/oss/dmasound/Makefile Mon Sep 22 00:30:19 2003 @@ -2,7 +2,12 @@ # Makefile for the DMA sound driver # -obj-$(CONFIG_DMASOUND_ATARI) += dmasound_core.o dmasound_atari.o -obj-$(CONFIG_DMASOUND_AWACS) += dmasound_core.o dmasound_awacs.o -obj-$(CONFIG_DMASOUND_PAULA) += dmasound_core.o dmasound_paula.o -obj-$(CONFIG_DMASOUND_Q40) += dmasound_core.o dmasound_q40.o +dmasound_pmac-y += dmasound_awacs.o \ + trans_16.o dac3550a.o tas_common.o \ + tas3001c.o tas3001c_tables.o \ + tas3004.o tas3004_tables.o + +obj-$(CONFIG_DMASOUND_ATARI) += dmasound_core.o dmasound_atari.o +obj-$(CONFIG_DMASOUND_PMAC) += dmasound_core.o dmasound_pmac.o +obj-$(CONFIG_DMASOUND_PAULA) += dmasound_core.o dmasound_paula.o +obj-$(CONFIG_DMASOUND_Q40) += dmasound_core.o dmasound_q40.o diff -Nru a/sound/oss/dmasound/awacs_defs.h b/sound/oss/dmasound/awacs_defs.h --- a/sound/oss/dmasound/awacs_defs.h Mon Sep 22 00:30:19 2003 +++ b/sound/oss/dmasound/awacs_defs.h Mon Sep 22 00:30:19 2003 @@ -71,17 +71,20 @@ /* ------- - --- ----- - ------ */ #define MASK_GAINRIGHT (0xf) /* Gain Right Mask */ #define MASK_GAINLEFT (0xf << 4) /* Gain Left Mask */ -#define MASK_GAINLINE (0x1 << 8) /* Change Gain for Line??? */ -#define MASK_GAINMIC (0x0 << 8) /* Change Gain for Mic??? */ +#define MASK_GAINLINE (0x1 << 8) /* Disable Mic preamp */ +#define MASK_GAINMIC (0x0 << 8) /* Enable Mic preamp */ #define MASK_MUX_CD (0x1 << 9) /* Select CD in MUX */ -#define MASK_MUX_AUDIN (0x1 << 10) /* Select Audio In in MUX */ -#define MASK_MUX_MIC (0x1 << 11) /* Select Mic in MUX */ +#define MASK_MUX_MIC (0x1 << 10) /* Select Mic in MUX */ +#define MASK_MUX_AUDIN (0x1 << 11) /* Select Audio In in MUX */ #define MASK_MUX_LINE MASK_MUX_AUDIN #define GAINRIGHT(x) ((x) & MASK_GAINRIGHT) #define GAINLEFT(x) (((x) << 4) & MASK_GAINLEFT) +#define DEF_CD_GAIN 0x00bb +#define DEF_MIC_GAIN 0x00cc + /* Address 1 Bit Masks */ /* ------- - --- ----- */ #define MASK_ADDR1RES1 (0x3) /* Reserved */ @@ -93,7 +96,10 @@ #define MASK_ADDR1RES2 (0x1 << 8) /* Reserved */ #define MASK_AMUTE (0x1 << 9) /* Output A (Headphone) Mute when 1 */ #define MASK_HDMUTE MASK_AMUTE -#define MASK_PAROUT (0x3 << 10) /* Parallel Out (???) */ +#define MASK_PAROUT0 (0x1 << 10) /* Parallel Output 0 */ +#define MASK_PAROUT1 (0x2 << 10) /* Parallel Output 1 */ + +#define MASK_MIC_BOOST (0x4) /* screamer mic boost */ #define SAMPLERATE_48000 (0x0 << 3) /* 48 or 44.1 kHz */ #define SAMPLERATE_32000 (0x1 << 3) /* 32 or 29.4 kHz */ @@ -162,8 +168,9 @@ #define RATE_LOW 1 /* HIGH = 48kHz, etc; LOW = 44.1kHz, etc. */ - +/*******************/ /* Burgundy values */ +/*******************/ #define MASK_ADDR_BURGUNDY_INPSEL21 (0x11 << 12) #define MASK_ADDR_BURGUNDY_INPSEL3 (0x12 << 12) @@ -225,5 +232,20 @@ #define DEF_BURGUNDY_ATTENSPEAKER (0x44) #define DEF_BURGUNDY_ATTENLINEOUT (0xCC) #define DEF_BURGUNDY_ATTENHP (0xCC) + +/*********************/ +/* i2s layout values */ +/*********************/ + +#define I2S_REG_INT_CTL 0x00 +#define I2S_REG_SERIAL_FORMAT 0x10 +#define I2S_REG_CODEC_MSG_OUT 0x20 +#define I2S_REG_CODEC_MSG_IN 0x30 +#define I2S_REG_FRAME_COUNT 0x40 +#define I2S_REG_FRAME_MATCH 0x50 +#define I2S_REG_DATAWORD_SIZES 0x60 +#define I2S_REG_PEAKLEVEL_SEL 0x70 +#define I2S_REG_PEAKLEVEL_IN0 0x80 +#define I2S_REG_PEAKLEVEL_IN1 0x90 #endif /* _AWACS_DEFS_H_ */ diff -Nru a/sound/oss/dmasound/dac3550a.c b/sound/oss/dmasound/dac3550a.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/sound/oss/dmasound/dac3550a.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,222 @@ +/* + * Driver for the i2c/i2s based DAC3550a sound chip used + * on some Apple iBooks. Also known as "DACA". + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dmasound.h" + +/* FYI: This code was derived from the tas3001c.c Texas/Tumbler mixer + * control code, as well as info derived from the AppleDACAAudio driver + * from Darwin CVS (main thing I derived being register numbers and + * values, as well as when to make the calls). */ + +#define I2C_DRIVERID_DACA (0xFDCB) + +#define DACA_VERSION "0.1" +#define DACA_DATE "20010930" + +static int cur_left_vol; +static int cur_right_vol; +static struct i2c_client *daca_client; + +static int daca_attach_adapter(struct i2c_adapter *adapter); +static int daca_detect_client(struct i2c_adapter *adapter, int address); +static int daca_detach_client(struct i2c_client *client); + +/* Unique ID allocation */ +static int daca_id; + +struct daca_data +{ + int arf; /* place holder for furture use */ +}; + +struct i2c_driver daca_driver = { + .owner = THIS_MODULE, + .name = "DAC3550A driver V " DACA_VERSION, + .id = I2C_DRIVERID_DACA, + .flags = I2C_DF_NOTIFY, + .attach_adapter = daca_attach_adapter, + .detach_client = daca_detach_client, +}; + +#define VOL_MAX ((1<<20) - 1) + +void daca_get_volume(uint * left_vol, uint *right_vol) +{ + *left_vol = cur_left_vol >> 5; + *right_vol = cur_right_vol >> 5; +} + +int daca_set_volume(uint left_vol, uint right_vol) +{ + unsigned short voldata; + + if (!daca_client) + return -1; + + /* Derived from experience, not from any specific values */ + left_vol <<= 5; + right_vol <<= 5; + + if (left_vol > VOL_MAX) + left_vol = VOL_MAX; + if (right_vol > VOL_MAX) + right_vol = VOL_MAX; + + voldata = ((left_vol >> 14) & 0x3f) << 8; + voldata |= (right_vol >> 14) & 0x3f; + + if (i2c_smbus_write_word_data(daca_client, 2, voldata) < 0) { + printk("daca: failed to set volume \n"); + return -1; + } + + cur_left_vol = left_vol; + cur_right_vol = right_vol; + + return 0; +} + +int daca_leave_sleep(void) +{ + if (!daca_client) + return -1; + + /* Do a short sleep, just to make sure I2C bus is awake and paying + * attention to us + */ + wait_ms(20); + /* Write the sample rate reg the value it needs */ + i2c_smbus_write_byte_data(daca_client, 1, 8); + daca_set_volume(cur_left_vol >> 5, cur_right_vol >> 5); + /* Another short delay, just to make sure the other I2C bus writes + * have taken... + */ + wait_ms(20); + /* Write the global config reg - invert right power amp, + * DAC on, use 5-volt mode */ + i2c_smbus_write_byte_data(daca_client, 3, 0x45); + + return 0; +} + +int daca_enter_sleep(void) +{ + if (!daca_client) + return -1; + + i2c_smbus_write_byte_data(daca_client, 1, 8); + daca_set_volume(cur_left_vol >> 5, cur_right_vol >> 5); + + /* Write the global config reg - invert right power amp, + * DAC on, enter low-power mode, use 5-volt mode + */ + i2c_smbus_write_byte_data(daca_client, 3, 0x65); + + return 0; +} + +static int daca_attach_adapter(struct i2c_adapter *adapter) +{ + if (!strncmp(adapter->name, "mac-io", 6)) + daca_detect_client(adapter, 0x4d); + return 0; +} + +static int daca_init_client(struct i2c_client * new_client) +{ + /* + * Probe is not working with the current i2c-keywest + * driver. We try to use addr 0x4d on each adapters + * instead, by setting the format register. + * + * FIXME: I'm sure that can be obtained from the + * device-tree. --BenH. + */ + + /* Write the global config reg - invert right power amp, + * DAC on, use 5-volt mode + */ + if (i2c_smbus_write_byte_data(new_client, 3, 0x45)) + return -1; + + i2c_smbus_write_byte_data(new_client, 1, 8); + daca_client = new_client; + daca_set_volume(15000, 15000); + + return 0; +} + +static int daca_detect_client(struct i2c_adapter *adapter, int address) +{ + const char *client_name = "DAC 3550A Digital Equalizer"; + struct i2c_client *new_client; + struct daca_data *data; + int rc = -ENODEV; + + new_client = kmalloc(sizeof(*new_client) + sizeof(*data), GFP_KERNEL); + if (!new_client) + return -ENOMEM; + + new_client->addr = address; + new_client->adapter = adapter; + new_client->driver = &daca_driver; + new_client->flags = 0; + strcpy(new_client->name, client_name); + new_client->id = daca_id++; /* racy... */ + + data = (struct daca_data *)(new_client+1); + dev_set_drvdata(&new_client->dev, data); + + if (daca_init_client(new_client)) + goto bail; + + /* Tell the i2c layer a new client has arrived */ + if (i2c_attach_client(new_client)) + goto bail; + + return 0; + bail: + kfree(new_client); + return rc; +} + + +static int daca_detach_client(struct i2c_client *client) +{ + if (client == daca_client) + daca_client = NULL; + + i2c_detach_client(client); + kfree(client); + return 0; +} + +void daca_cleanup(void) +{ + i2c_del_driver(&daca_driver); +} + +int daca_init(void) +{ + printk("dac3550a driver version %s (%s)\n",DACA_VERSION,DACA_DATE); + return i2c_add_driver(&daca_driver); +} diff -Nru a/sound/oss/dmasound/dmasound_awacs.c b/sound/oss/dmasound/dmasound_awacs.c --- a/sound/oss/dmasound/dmasound_awacs.c Mon Sep 22 00:30:20 2003 +++ b/sound/oss/dmasound/dmasound_awacs.c Mon Sep 22 00:30:20 2003 @@ -45,7 +45,14 @@ * 01/02/2002 [0.7] - BenH * - all sort of minor bits went in since the latest update, I * bumped the version number for that reason -*/ + * + * 07/26/2002 [0.8] - BenH + * - More minor bits since last changelog (I should be more careful + * with those) + * - Support for snapper & better tumbler integration by Toby Sargeant + * - Headphone detect for scremer by Julien Blache + * - More tumbler fixed by Andreas Schwab + */ /* GENERAL FIXME/TODO: check that the assumptions about what is written to mac-io is valid for DACA & Tumbler. @@ -68,6 +75,7 @@ #include #include #include +#include #include #ifdef CONFIG_ADB_CUDA #include @@ -89,10 +97,14 @@ #include "awacs_defs.h" #include "dmasound.h" +#include "tas3001c.h" +#include "tas3004.h" +#include "tas_common.h" #define DMASOUND_AWACS_REVISION 0 #define DMASOUND_AWACS_EDITION 7 +#define AWACS_SNAPPER 110 /* fake revision # for snapper */ #define AWACS_BURGUNDY 100 /* fake revision # for burgundy */ #define AWACS_TUMBLER 90 /* fake revision # for tumbler */ #define AWACS_DACA 80 /* fake revision # for daca (ibook) */ @@ -103,11 +115,13 @@ */ static int awacs_irq, awacs_tx_irq, awacs_rx_irq; static volatile struct awacs_regs *awacs; +static volatile u32 *i2s; static volatile struct dbdma_regs *awacs_txdma, *awacs_rxdma; static int awacs_rate_index; static int awacs_subframe; static int awacs_spkr_vol; static struct device_node* awacs_node; +static struct device_node* i2s_node; static char awacs_name[64]; static int awacs_revision; @@ -164,6 +178,8 @@ static int cd_lev = 0x6363 ; /* 99 % */ static int line_lev; +static int hdp_connected; + /* * Stuff for outputting a beep. The values range from -327 to +327 * so we can multiply by an amplitude in the range 0..100 to get a @@ -215,7 +231,6 @@ static short *beep_buf; static void *beep_dbdma_cmd_space; static volatile struct dbdma_cmd *beep_dbdma_cmd; -static void (*orig_mksound)(unsigned int, unsigned int); /* Burgundy functions */ static void awacs_burgundy_wcw(unsigned addr,unsigned newval); @@ -286,25 +301,12 @@ extern TRANS transAwacsNormalRead ; extern int daca_init(void); -extern int daca_cleanup(void); +extern void daca_cleanup(void); extern int daca_set_volume(uint left_vol, uint right_vol); extern void daca_get_volume(uint * left_vol, uint *right_vol); extern int daca_enter_sleep(void); extern int daca_leave_sleep(void); -extern int tas_init(void); -extern int tas_cleanup(void); -extern int tumbler_set_volume(uint left_vol, uint right_vol); -extern void tumbler_get_volume(uint * left_vol, uint *right_vol); -extern void tumbler_set_treble(int treble); -extern void tumbler_get_treble(int *treble); -extern void tumbler_set_bass(int bass); -extern void tumbler_get_bass(int *bass); -extern void tumbler_set_pcm_lvl(int pcm_lvl); -extern void tumbler_get_pcm_lvl(int *pcm_lvl); -extern int tumbler_enter_sleep(void); -extern int tumbler_leave_sleep(void); - #define TRY_LOCK() \ if ((rc = down_interruptible(&dmasound_sem)) != 0) \ return rc; @@ -331,7 +333,7 @@ } -/*** AE - TUMBLER START *********************************************************/ +/*** AE - TUMBLER / SNAPPER START ************************************************/ int gpio_audio_reset, gpio_audio_reset_pol; @@ -393,31 +395,35 @@ return ((pmac_call_feature(PMAC_FTR_READ_GPIO, NULL, gpio_addr, 0) & 0x02) !=0); } +/* + * Headphone interrupt via GPIO (Tumbler, Snapper, DACA) + */ static irqreturn_t headphone_intr(int irq, void *devid, struct pt_regs *regs) { - int handled = 0; - spin_lock(&dmasound.lock); + unsigned long flags; + + spin_lock_irqsave(&dmasound.lock, flags); if (read_audio_gpio(gpio_headphone_detect) == gpio_headphone_detect_pol) { - handled = 1; printk(KERN_INFO "Audio jack plugged, muting speakers.\n"); - write_audio_gpio(gpio_amp_mute, gpio_amp_mute_pol); write_audio_gpio(gpio_headphone_mute, !gpio_headphone_mute_pol); + write_audio_gpio(gpio_amp_mute, gpio_amp_mute_pol); + tas_output_device_change(sound_device_id,TAS_OUTPUT_HEADPHONES,0); } else { - handled = 1; printk(KERN_INFO "Audio jack unplugged, enabling speakers.\n"); write_audio_gpio(gpio_amp_mute, !gpio_amp_mute_pol); write_audio_gpio(gpio_headphone_mute, gpio_headphone_mute_pol); + tas_output_device_change(sound_device_id,TAS_OUTPUT_INTERNAL_SPKR,0); } - spin_unlock(&dmasound.lock); - return IRQ_RETVAL(handled); + spin_unlock_irqrestore(&dmasound.lock, flags); + return IRQ_HANDLED; } /* Initialize tumbler */ static int -awacs_tumbler_init(void) +tas_dmasound_init(void) { setup_audio_gpio( "audio-hw-reset", @@ -474,15 +480,124 @@ static int -awacs_tumbler_cleanup(void) +tas_dmasound_cleanup(void) { if (gpio_headphone_irq) free_irq(gpio_headphone_irq, 0); return 0; } +/* We don't support 48k yet */ +static int tas_freqs[1] = { 44100 } ; +static int tas_freqs_ok[1] = { 1 } ; + +/* don't know what to do really - just have to leave it where + * OF left things +*/ + +static int +tas_set_frame_rate(void) +{ + if (i2s) { + out_le32(i2s + (I2S_REG_SERIAL_FORMAT >> 2), 0x41190000); + out_le32(i2s + (I2S_REG_DATAWORD_SIZES >> 2), 0x02000200); + } + dmasound.hard.speed = 44100 ; + awacs_rate_index = 0 ; + return 44100 ; +} + +static int +tas_mixer_ioctl(u_int cmd, u_long arg) +{ + int data; + int rc; + + rc=tas_device_ioctl(cmd, arg); + if (rc != -EINVAL) { + return rc; + } + + if ((cmd & ~0xff) == MIXER_WRITE(0) && + tas_supported_mixers() & (1<<(cmd & 0xff))) { + rc = get_user(data, (int *)(arg)); + if (rc<0) return rc; + tas_set_mixer_level(cmd & 0xff, data); + tas_get_mixer_level(cmd & 0xff, &data); + return ioctl_return2((int *)(arg), data); + } + if ((cmd & ~0xff) == MIXER_READ(0) && + tas_supported_mixers() & (1<<(cmd & 0xff))) { + tas_get_mixer_level(cmd & 0xff, &data); + return ioctl_return2((int *)(arg), data); + } + + switch(cmd) { + case SOUND_MIXER_READ_DEVMASK: + data = tas_supported_mixers() | SOUND_MASK_SPEAKER; + rc = IOCTL_OUT(arg, data); + break; + case SOUND_MIXER_READ_STEREODEVS: + data = tas_stereo_mixers(); + rc = IOCTL_OUT(arg, data); + break; + case SOUND_MIXER_READ_CAPS: + rc = IOCTL_OUT(arg, 0); + break; + case SOUND_MIXER_READ_RECMASK: + data = 0; + rc = IOCTL_OUT(arg, data); + break; + case SOUND_MIXER_READ_RECSRC: + data = 0; + rc = IOCTL_OUT(arg, data); + break; + case SOUND_MIXER_WRITE_RECSRC: + IOCTL_IN(arg, data); + data =0; + rc = IOCTL_OUT(arg, data); + break; + case SOUND_MIXER_WRITE_SPEAKER: /* really bell volume */ + IOCTL_IN(arg, data); + beep_vol = data & 0xff; + /* fall through */ + case SOUND_MIXER_READ_SPEAKER: + rc = IOCTL_OUT(arg, (beep_vol<<8) | beep_vol); + break; + case SOUND_MIXER_OUTMASK: + case SOUND_MIXER_OUTSRC: + default: + rc = -EINVAL; + } + + return rc; +} + +static void __init +tas_init_frame_rates(unsigned int *prop, unsigned int l) +{ + int i ; + if (prop) { + for (i=0; i<1; i++) + tas_freqs_ok[i] = 0; + for (l /= sizeof(int); l > 0; --l) { + unsigned int r = *prop++; + /* Apple 'Fixed' format */ + if (r >= 0x10000) + r >>= 16; + for (i = 0; i < 1; ++i) { + if (r == tas_freqs[i]) { + tas_freqs_ok[i] = 1; + break; + } + } + } + } + /* else we assume that all the rates are available */ +} + -/*** AE - TUMBLER END *********************************************************/ +/*** AE - TUMBLER / SNAPPER END ************************************************/ @@ -503,8 +618,10 @@ static int __init PMacIrqInit(void) { - if (request_irq(awacs_irq, pmac_awacs_intr, 0, "Built-in Sound misc", 0) - || request_irq(awacs_tx_irq, pmac_awacs_tx_intr, 0, "Built-in Sound out", 0) + if (awacs) + if (request_irq(awacs_irq, pmac_awacs_intr, 0, "Built-in Sound misc", 0)) + return 0; + if (request_irq(awacs_tx_irq, pmac_awacs_tx_intr, 0, "Built-in Sound out", 0) || request_irq(awacs_rx_irq, pmac_awacs_rx_intr, 0, "Built-in Sound in", 0)) return 0; return 1; @@ -517,23 +634,28 @@ DBDMA_DO_STOP(awacs_txdma); DBDMA_DO_STOP(awacs_rxdma); - /* disable interrupts from awacs interface */ - out_le32(&awacs->control, in_le32(&awacs->control) & 0xfff); - + if (awacs) + /* disable interrupts from awacs interface */ + out_le32(&awacs->control, in_le32(&awacs->control) & 0xfff); + /* Switch off the sound clock */ pmac_call_feature(PMAC_FTR_SOUND_CHIP_ENABLE, awacs_node, 0, 0); /* Make sure proper bits are set on pismo & tipb */ - if (machine_is_compatible("PowerBook3,1") || - machine_is_compatible("PowerBook3,2")) { + if ((machine_is_compatible("PowerBook3,1") || + machine_is_compatible("PowerBook3,2")) && awacs) { awacs_reg[1] |= MASK_PAROUT0 | MASK_PAROUT1; awacs_write(MASK_ADDR1 | awacs_reg[1]); wait_ms(200); } - free_irq(awacs_irq, 0); + if (awacs) + free_irq(awacs_irq, 0); free_irq(awacs_tx_irq, 0); free_irq(awacs_rx_irq, 0); - /* all OF versions I've seen use this value */ - iounmap((void *)awacs); + + if (awacs) + iounmap((void *)awacs); + if (i2s) + iounmap((void *)i2s); iounmap((void *)awacs_txdma); iounmap((void *)awacs_rxdma); @@ -547,10 +669,8 @@ kfree(awacs_rx_cmd_space); if (beep_dbdma_cmd_space) kfree(beep_dbdma_cmd_space); - if (beep_buf) { + if (beep_buf) kfree(beep_buf); - kd_mksound = orig_mksound; - } #ifdef CONFIG_PMAC_PBOOK pmu_unregister_sleep_notifier(&awacs_sleep_notifier); #endif @@ -563,26 +683,16 @@ DBDMA_DO_STOP(awacs_txdma); } -static int tumbler_freqs[2] = { 48000, 44100 } ; -static int tumbler_freqs_ok[2] = { 1, 1 } ; - -/* don't know what to do really - just have to leave it where - * OF left things -*/ - -static int tumbler_set_frame_rate(void) -{ - dmasound.hard.speed = 44100 ; - awacs_rate_index = 0 ; - return 44100 ; -} - /* don't know what to do really - just have to leave it where * OF left things */ static int daca_set_frame_rate(void) { + if (i2s) { + out_le32(i2s + (I2S_REG_SERIAL_FORMAT >> 2), 0x41190000); + out_le32(i2s + (I2S_REG_DATAWORD_SIZES >> 2), 0x02000200); + } dmasound.hard.speed = 44100 ; awacs_rate_index = 0 ; return 44100 ; @@ -593,7 +703,8 @@ }; static int awacs_freqs_ok[8] = { 1, 1, 1, 1, 1, 1, 1, 1 }; -static int awacs_set_frame_rate(int desired, int catch_r) +static int +awacs_set_frame_rate(int desired, int catch_r) { int tolerance, i = 8 ; /* @@ -617,13 +728,9 @@ return dmasound.hard.speed; } -static int burgundy_frame_rates = 1 ; -static int burgundy_set_frame_rate(void) +static int +burgundy_set_frame_rate(void) { -#ifdef DEBUG_DMASOUND -if (burgundy_frame_rates > 1) - printk("dmasound_pmac: warning Burgundy had more than one frame rate\n"); -#endif awacs_rate_index = 0 ; awacs_reg[1] = (awacs_reg[1] & ~MASK_SAMPLERATE) ; /* XXX disable error interrupt on burgundy for now */ @@ -631,24 +738,24 @@ return 44100 ; } -static int set_frame_rate(int desired, int catch_r) +static int +set_frame_rate(int desired, int catch_r) { switch (awacs_revision) { case AWACS_BURGUNDY: - dmasound.hard.speed = - burgundy_set_frame_rate(); + dmasound.hard.speed = burgundy_set_frame_rate(); break ; case AWACS_TUMBLER: - dmasound.hard.speed = - tumbler_set_frame_rate(); + case AWACS_SNAPPER: + dmasound.hard.speed = tas_set_frame_rate(); break ; case AWACS_DACA: dmasound.hard.speed = daca_set_frame_rate(); break ; default: - dmasound.hard.speed = - awacs_set_frame_rate(desired, catch_r); + dmasound.hard.speed = awacs_set_frame_rate(desired, + catch_r); break ; } return dmasound.hard.speed ; @@ -698,11 +805,13 @@ dmasound.trans_write = &transAwacsExpand; dmasound.trans_read = &transAwacsNormalRead; - if (hw_can_byteswap && (dmasound.hard.format == AFMT_S16_LE)) - out_le32(&awacs->byteswap, BS_VAL); - else - out_le32(&awacs->byteswap, 0); - + if (awacs) { + if (hw_can_byteswap && (dmasound.hard.format == AFMT_S16_LE)) + out_le32(&awacs->byteswap, BS_VAL); + else + out_le32(&awacs->byteswap, 0); + } + expand_bal = -dmasound.soft.speed; } @@ -787,18 +896,28 @@ static int PMacSetVolume(int volume) { - return awacs_volume_setter(volume, 2, MASK_AMUTE, 6); + printk(KERN_WARNING "Bogus call to PMacSetVolume !\n"); + return 0; +} + +static void awacs_setup_for_beep(int speed) +{ + out_le32(&awacs->control, + (in_le32(&awacs->control) & ~0x1f00) + | ((speed > 0 ? speed : awacs_rate_index) << 8)); + + if (hw_can_byteswap && (dmasound.hard.format == AFMT_S16_LE) && speed == -1) + out_le32(&awacs->byteswap, BS_VAL); + else + out_le32(&awacs->byteswap, 0); } +/* CHECK: how much of this *really* needs IRQs masked? */ static void __PMacPlay(void) { volatile struct dbdma_cmd *cp; int next_frg, count; - unsigned long flags; - - /* CHECK: how much of this *really* needs IRQs masked? */ - spin_lock_irqsave(&dmasound.lock, flags); count = 300 ; /* > two cycles at the lowest sample rate */ /* what we want to send next */ @@ -810,15 +929,8 @@ out_le32(&awacs_txdma->control, (RUN|PAUSE|FLUSH|WAKE) << 16); while ( (in_le32(&awacs_txdma->status) & RUN) && count--) udelay(1); - /* FIXME: check that this is OK for other chip sets */ - out_le32(&awacs->control, - (in_le32(&awacs->control) & ~0x1f00) - | (awacs_rate_index << 8)); - - if (hw_can_byteswap && (dmasound.hard.format == AFMT_S16_LE)) - out_le32(&awacs->byteswap, BS_VAL); - else - out_le32(&awacs->byteswap, 0); + if (awacs) + awacs_setup_for_beep(-1); out_le32(&awacs_txdma->cmdptr, virt_to_bus(&(awacs_tx_cmds[next_frg]))); @@ -865,14 +977,18 @@ out_le32(&awacs_txdma->control, ((RUN|WAKE) << 16) + (RUN|WAKE)); ++write_sq.active; } - spin_unlock_irqrestore(&dmasound.lock, flags); } static void PMacPlay(void) { LOCK(); - if (!awacs_sleeping) + if (!awacs_sleeping) { + unsigned long flags; + + spin_lock_irqsave(&dmasound.lock, flags); __PMacPlay(); + spin_unlock_irqrestore(&dmasound.lock, flags); + } UNLOCK(); } @@ -919,6 +1035,7 @@ { int i = write_sq.front; int stat; + int i_nowrap = write_sq.front; volatile struct dbdma_cmd *cp; /* != 0 when we are dealing with a DEAD xfer */ static int emergency_in_use; @@ -976,6 +1093,7 @@ emergency_in_use = 0 ; /* done that */ --write_sq.count; --write_sq.active; + i_nowrap++; if (++i >= write_sq.max_count) i = 0; } @@ -988,7 +1106,7 @@ } /* if we used some data up then wake the writer to supply some more*/ - if (i != write_sq.front) + if (i_nowrap != write_sq.front) WAKE_UP(write_sq.action_queue); write_sq.front = i; @@ -1091,11 +1209,30 @@ pmac_awacs_intr(int irq, void *devid, struct pt_regs *regs) { int ctrl; + int status; + int r1; + spin_lock(&dmasound.lock); ctrl = in_le32(&awacs->control); + status = in_le32(&awacs->codec_stat); if (ctrl & MASK_PORTCHG) { - /* do something when headphone is plugged/unplugged? */ + /* tested on Screamer, should work on others too */ + if (awacs_revision == AWACS_SCREAMER) { + if (((status & MASK_HDPCONN) >> 3) && (hdp_connected == 0)) { + hdp_connected = 1; + + r1 = awacs_reg[1] | MASK_SPKMUTE; + awacs_reg[1] = r1; + awacs_write(r1 | MASK_ADDR_MUTE); + } else if (((status & MASK_HDPCONN) >> 3 == 0) && (hdp_connected == 1)) { + hdp_connected = 0; + + r1 = awacs_reg[1] & ~MASK_SPKMUTE; + awacs_reg[1] = r1; + awacs_write(r1 | MASK_ADDR_MUTE); + } + } } if (ctrl & MASK_CNTLERR) { int err = (in_le32(&awacs->codec_stat) & MASK_ERRCODE) >> 16; @@ -1113,7 +1250,7 @@ awacs_write(int val) { int count = 300 ; - if (awacs_revision >= AWACS_DACA) + if (awacs_revision >= AWACS_DACA || !awacs) return ; while ((in_le32(&awacs->codec_ctrl) & MASK_NEWECMD) && count--) @@ -1136,22 +1273,16 @@ out_le32(&awacs_txdma->control, (RUN|PAUSE|FLUSH|WAKE) << 16); while ((in_le32(&awacs_txdma->status) & RUN) && count--) udelay(1); - /* FIXME: check this is OK for DACA, Tumbler */ - out_le32(&awacs->control, - (in_le32(&awacs->control) & ~0x1f00) - | (awacs_rate_index << 8)); - if (hw_can_byteswap && (dmasound.hard.format == AFMT_S16_LE)) - out_le32(&awacs->byteswap, BS_VAL); - else - out_le32(&awacs->byteswap, 0); + if (awacs) + awacs_setup_for_beep(-1); beep_playing = 0; } spin_unlock_irqrestore(&dmasound.lock, flags); } static struct timer_list beep_timer = TIMER_INITIALIZER(awacs_nosound, 0, 0); -}; +#if 0 /* would need to go through the input layer in 2.6, later.. --hch */ /* we generate the beep with a single dbdma command that loops a buffer forever - without generating interrupts. So, to stop it you have to stop dma output as per awacs_nosound. @@ -1237,17 +1368,15 @@ out_le32(&awacs_txdma->control, (RUN|WAKE|FLUSH|PAUSE) << 16); while ((in_le32(&awacs_txdma->status) & RUN) && count--) udelay(1); /* timeout > 2 samples at lowest rate*/ - /* FIXME: check this is OK on DACA, Tumbler */ - out_le32(&awacs->control, - (in_le32(&awacs->control) & ~0x1f00) - | (beep_speed << 8)); - out_le32(&awacs->byteswap, 0); /* force BE */ + if (awacs) + awacs_setup_for_beep(beep_speed); out_le32(&awacs_txdma->cmdptr, virt_to_bus(beep_dbdma_cmd)); (void)in_le32(&awacs_txdma->status); out_le32(&awacs_txdma->control, RUN | (RUN << 16)); } spin_unlock_irqrestore(&dmasound.lock, flags); } +#endif /* used in init and for wake-up */ @@ -1267,10 +1396,12 @@ awacs_write(awacs_reg[1] + MASK_ADDR1); awacs_write(awacs_reg[7] + MASK_ADDR7); } - if (hw_can_byteswap && (dmasound.hard.format == AFMT_S16_LE)) - out_le32(&awacs->byteswap, BS_VAL); - else - out_le32(&awacs->byteswap, 0); + if (awacs) { + if (hw_can_byteswap && (dmasound.hard.format == AFMT_S16_LE)) + out_le32(&awacs->byteswap, BS_VAL); + else + out_le32(&awacs->byteswap, 0); + } } #ifdef CONFIG_PMAC_PBOOK @@ -1280,6 +1411,8 @@ /* FIXME: sort out disabling/re-enabling of read stuff as well */ static int awacs_sleep_notify(struct pmu_sleep_notifier *self, int when) { + unsigned long flags; + switch (when) { case PBOOK_SLEEP_NOW: LOCK(); @@ -1297,9 +1430,18 @@ /* stop rx - if going - a bit of a daft user... but */ out_le32(&awacs_rxdma->control, (RUN|WAKE|FLUSH << 16)); /* deny interrupts */ + if (awacs) + disable_irq(awacs_irq); + disable_irq(awacs_tx_irq); + disable_irq(awacs_rx_irq); + /* Chip specific sleep code */ switch (awacs_revision) { case AWACS_TUMBLER: - tumbler_enter_sleep(); /* Stub for now */ + case AWACS_SNAPPER: + write_audio_gpio(gpio_headphone_mute, gpio_headphone_mute_pol); + write_audio_gpio(gpio_amp_mute, gpio_amp_mute_pol); + tas_enter_sleep(); + write_audio_gpio(gpio_audio_reset, gpio_audio_reset_pol); break ; case AWACS_DACA: daca_enter_sleep(); @@ -1312,17 +1454,14 @@ out_le32(&awacs->control, 0x11) ; break ; } - disable_irq(awacs_irq); - disable_irq(awacs_tx_irq); - disable_irq(awacs_rx_irq); /* Disable sound clock */ pmac_call_feature(PMAC_FTR_SOUND_CHIP_ENABLE, awacs_node, 0, 0); /* According to Darwin, we do that after turning off the sound * chip clock. All this will have to be cleaned up once we properly * parse the OF sound-objects */ - if (machine_is_compatible("PowerBook3,1") || - machine_is_compatible("PowerBook3,2")) { + if ((machine_is_compatible("PowerBook3,1") || + machine_is_compatible("PowerBook3,2")) && awacs) { awacs_reg[1] |= MASK_PAROUT0 | MASK_PAROUT1; awacs_write(MASK_ADDR1 | awacs_reg[1]); wait_ms(200); @@ -1331,8 +1470,8 @@ case PBOOK_WAKE: /* Enable sound clock */ pmac_call_feature(PMAC_FTR_SOUND_CHIP_ENABLE, awacs_node, 0, 1); - if (machine_is_compatible("PowerBook3,1") || - machine_is_compatible("PowerBook3,2")) { + if ((machine_is_compatible("PowerBook3,1") || + machine_is_compatible("PowerBook3,2")) && awacs) { wait_ms(100); awacs_reg[1] &= ~(MASK_PAROUT0 | MASK_PAROUT1); awacs_write(MASK_ADDR1 | awacs_reg[1]); @@ -1342,13 +1481,20 @@ /* restore settings */ switch (awacs_revision) { case AWACS_TUMBLER: + case AWACS_SNAPPER: + write_audio_gpio(gpio_headphone_mute, gpio_headphone_mute_pol); + write_audio_gpio(gpio_amp_mute, gpio_amp_mute_pol); + write_audio_gpio(gpio_audio_reset, gpio_audio_reset_pol); + wait_ms(100); + write_audio_gpio(gpio_audio_reset, !gpio_audio_reset_pol); + wait_ms(150); + tas_leave_sleep(); /* Stub for now */ headphone_intr(0,0,0); - tumbler_leave_sleep(); /* Stub for now */ break; case AWACS_DACA: wait_ms(10); /* Check this !!! */ daca_leave_sleep(); - break ; /* don't know how yet */ + break ; /* dont know how yet */ case AWACS_BURGUNDY: break ; case AWACS_SCREAMER: @@ -1358,17 +1504,20 @@ break ; } /* Recalibrate chip */ - if (awacs_revision == AWACS_SCREAMER) + if (awacs_revision == AWACS_SCREAMER && awacs) awacs_recalibrate(); /* Make sure dma is stopped */ PMacSilence(); - enable_irq(awacs_irq); + if (awacs) + enable_irq(awacs_irq); enable_irq(awacs_tx_irq); enable_irq(awacs_rx_irq); - /* OK, allow ints back again */ - out_le32(&awacs->control, MASK_IEPC - | (awacs_rate_index << 8) | 0x11 - | (awacs_revision < AWACS_DACA ? MASK_IEE: 0)); + if (awacs) { + /* OK, allow ints back again */ + out_le32(&awacs->control, MASK_IEPC + | (awacs_rate_index << 8) | 0x11 + | (awacs_revision < AWACS_DACA ? MASK_IEE: 0)); + } if (macio_base && is_pbook_g3) { /* FIXME: should restore the setup we had...*/ out_8(macio_base + 0x37, 3); @@ -1384,7 +1533,9 @@ awacs_sleeping = 0; /* Resume pending sounds. */ /* we don't try to restart input... */ + spin_lock_irqsave(&dmasound.lock, flags); __PMacPlay(); + spin_unlock_irqrestore(&dmasound.lock, flags); UNLOCK(); } return PBOOK_SLEEP_OK; @@ -1956,7 +2107,7 @@ case SOUND_MIXER_READ_SPEAKER: data = awacs_burgundy_rcb(MASK_ADDR_BURGUNDY_ATTENSPEAKER); data = (((data & 0xf)*100)/16) + ((((data>>4)*100)/16)<<8); - rc = IOCTL_OUT(arg, ~data); + rc = IOCTL_OUT(arg, (~data) & 0x0000ffff); break; case SOUND_MIXER_WRITE_ALTPCM: /* really bell volume */ IOCTL_IN(arg, data); @@ -2011,89 +2162,6 @@ return rc; } -static int tumbler_mixer_ioctl(u_int cmd, u_long arg) -{ - int data; - int rc; - - /* We are, we are, we are... Tumbler (and very dumb) */ - /* Ok, we're not THAT dumb anymore, but still pretty dumb :-) */ - - switch(cmd) { - case SOUND_MIXER_READ_DEVMASK: - data = SOUND_MASK_VOLUME | SOUND_MASK_ALTPCM | - SOUND_MASK_BASS | SOUND_MASK_TREBLE | - SOUND_MASK_PCM; - rc = IOCTL_OUT(arg, data); - break; - case SOUND_MIXER_READ_RECMASK: - data = 0; - rc = IOCTL_OUT(arg, data); - break; - case SOUND_MIXER_READ_RECSRC: - data = 0; - rc = IOCTL_OUT(arg, data); - break; - case SOUND_MIXER_WRITE_RECSRC: - IOCTL_IN(arg, data); - data =0; - rc = IOCTL_OUT(arg, data); - break; - case SOUND_MIXER_READ_STEREODEVS: - data = SOUND_MASK_VOLUME | SOUND_MASK_PCM; - rc = IOCTL_OUT(arg, data); - break; - case SOUND_MIXER_READ_CAPS: - rc = IOCTL_OUT(arg, 0); - break; - case SOUND_MIXER_WRITE_BASS: - IOCTL_IN(arg, data); - tumbler_set_bass(data); - /* Fall through */ - case SOUND_MIXER_READ_BASS: - tumbler_get_bass(&data); - rc = IOCTL_OUT(arg, data); - break; - case SOUND_MIXER_WRITE_TREBLE: - IOCTL_IN(arg, data); - tumbler_set_treble(data); - /* Fall through */ - case SOUND_MIXER_READ_TREBLE: - tumbler_get_treble(&data); - rc = IOCTL_OUT(arg, data); - break; - case SOUND_MIXER_WRITE_PCM: - IOCTL_IN(arg, data); - tumbler_set_pcm_lvl(data); - /* Fall through */ - case SOUND_MIXER_READ_PCM: - tumbler_get_pcm_lvl(&data); - IOCTL_OUT(arg, data); - break; - case SOUND_MIXER_WRITE_VOLUME: - IOCTL_IN(arg, data); - tumbler_set_volume(data, data); - /* Fall through */ - case SOUND_MIXER_READ_VOLUME: - tumbler_get_volume(& data, &data); - rc = IOCTL_OUT(arg, data); - break; - case SOUND_MIXER_WRITE_ALTPCM: /* really bell volume */ - IOCTL_IN(arg, data); - beep_vol = data & 0xff; - /* fall through */ - case SOUND_MIXER_READ_ALTPCM: - rc = IOCTL_OUT(arg, beep_vol); - break; - case SOUND_MIXER_OUTMASK: - case SOUND_MIXER_OUTSRC: - default: - rc = -EINVAL; - } - - return rc; -} - static int daca_mixer_ioctl(u_int cmd, u_long arg) { int data; @@ -2158,7 +2226,8 @@ rc = daca_mixer_ioctl(cmd, arg); break; case AWACS_TUMBLER: - rc = tumbler_mixer_ioctl(cmd, arg); + case AWACS_SNAPPER: + rc = tas_mixer_ioctl(cmd, arg); break ; default: /* ;-)) */ rc = awacs_mixer_ioctl(cmd, arg); @@ -2175,7 +2244,9 @@ case AWACS_TUMBLER: printk("AE-Init tumbler mixer\n"); break ; - + case AWACS_SNAPPER: + printk("AE-Init snapper mixer\n"); + break ; case AWACS_DACA: case AWACS_BURGUNDY: break ; /* don't know yet */ @@ -2366,12 +2437,12 @@ len += sprintf(b,"44100 ") ; break ; case AWACS_TUMBLER: - for (i=0; i<2; i++){ - if (tumbler_freqs_ok[i]) - len += sprintf(b+len,"%d ", tumbler_freqs[i]) ; + case AWACS_SNAPPER: + for (i=0; i<1; i++){ + if (tas_freqs_ok[i]) + len += sprintf(b+len,"%d ", tas_freqs[i]) ; } break ; - case AWACS_AWACS: case AWACS_SCREAMER: default: @@ -2472,8 +2543,8 @@ code that looks for chip properties knows how to go about it. */ -static struct device_node -__init *get_snd_io_node(void) +static struct device_node* __init +get_snd_io_node(void) { struct device_node *np = NULL; @@ -2494,7 +2565,7 @@ * this seems to be what iBooks (& Tumbler) have. */ if (np == NULL) - np = find_devices("i2s-a"); + np = i2s_node = find_devices("i2s-a"); /* if we didn't find this - perhaps we are on an early model * which _only_ has an 'awacs' node @@ -2514,23 +2585,22 @@ we have to deduce the info other ways for these. */ -static struct device_node -__init *get_snd_info_node(struct device_node *io) +static struct device_node* __init +get_snd_info_node(struct device_node *io) { struct device_node *info; info = find_devices("sound"); - while (info != 0 && info->parent != io) + while (info && info->parent != io) info = info->next; - - return info ; + return info; } /* Find out what type of codec we have. */ -static int -__init get_codec_type(struct device_node *info) +static int __init +get_codec_type(struct device_node *info) { /* already set if pre-davbus model and info will be NULL */ int codec = awacs_revision ; @@ -2547,14 +2617,16 @@ codec = AWACS_DACA; if (device_is_compatible(info, "tumbler")) codec = AWACS_TUMBLER; + if (device_is_compatible(info, "snapper")) + codec = AWACS_SNAPPER; } return codec ; } /* find out what type, if any, of expansion card we have */ -static void -__init get_expansion_type(void) +static void __init +get_expansion_type(void) { if (find_devices("perch") != NULL) has_perch = 1; @@ -2572,8 +2644,8 @@ * Set dmasound.mach.max_dsp_rate on the basis of these routines. */ -static void -__init init_awacs_frame_rates(unsigned int *prop, unsigned int l) +static void __init +awacs_init_frame_rates(unsigned int *prop, unsigned int l) { int i ; if (prop) { @@ -2595,31 +2667,8 @@ /* else we assume that all the rates are available */ } -static void -__init init_tumbler_frame_rates(unsigned int *prop, unsigned int l) -{ - int i ; - if (prop) { - for (i=0; i<2; i++) - tumbler_freqs_ok[i] = 0; - for (l /= sizeof(int); l > 0; --l) { - unsigned int r = *prop++; - /* Apple 'Fixed' format */ - if (r >= 0x10000) - r >>= 16; - for (i = 0; i < 2; ++i) { - if (r == tumbler_freqs[i]) { - tumbler_freqs_ok[i] = 1; - break; - } - } - } - } - /* else we assume that all the rates are available */ -} - -static void -__init init_burgundy_frame_rates(unsigned int *prop, unsigned int l) +static void __init +burgundy_init_frame_rates(unsigned int *prop, unsigned int l) { int temp[9] ; int i = 0 ; @@ -2644,8 +2693,8 @@ #endif } -static void -__init init_daca_frame_rates(unsigned int *prop, unsigned int l) +static void __init +daca_init_frame_rates(unsigned int *prop, unsigned int l) { int temp[9] ; int i = 0 ; @@ -2671,21 +2720,22 @@ #endif } -static void -__init init_frame_rates(unsigned int *prop, unsigned int l) +static void __init +init_frame_rates(unsigned int *prop, unsigned int l) { - switch (awacs_revision){ + switch (awacs_revision) { case AWACS_TUMBLER: - init_tumbler_frame_rates(prop, l); + case AWACS_SNAPPER: + tas_init_frame_rates(prop, l); break ; case AWACS_DACA: - init_daca_frame_rates(prop, l); + daca_init_frame_rates(prop, l); break ; case AWACS_BURGUNDY: - init_burgundy_frame_rates(prop, l); + burgundy_init_frame_rates(prop, l); break ; - default: /* ;-))) */ - init_awacs_frame_rates(prop, l); + default: + awacs_init_frame_rates(prop, l); break ; } } @@ -2693,11 +2743,11 @@ /* find things/machines that can't do mac-io byteswap */ -static void -__init set_hw_byteswap(struct device_node *io) +static void __init +set_hw_byteswap(struct device_node *io) { struct device_node *mio ; - unsigned int *p, kl = 0 ; + unsigned int kl = 0 ; /* if seems that Keylargo can't byte-swap */ @@ -2744,9 +2794,6 @@ if( beep_dbdma_cmd_space ) kfree(beep_dbdma_cmd_space) ; return -ENOMEM ; } - /* OK, we should be safe to claim the mksound vector now */ - orig_mksound = kd_mksound; - kd_mksound = awacs_mksound; return 0 ; } @@ -2842,23 +2889,26 @@ } /* all OF versions I've seen use this value */ - awacs = (volatile struct awacs_regs *) - ioremap(io->addrs[0].address, 0x1000); + if (i2s_node) + i2s = (u32 *)ioremap(io->addrs[0].address, 0x1000); + else + awacs = (volatile struct awacs_regs *) + ioremap(io->addrs[0].address, 0x1000); awacs_txdma = (volatile struct dbdma_regs *) ioremap(io->addrs[1].address, 0x100); awacs_rxdma = (volatile struct dbdma_regs *) ioremap(io->addrs[2].address, 0x100); -#ifdef CONFIG_PMAC_PBOOK /* first of all make sure that the chip is powered up....*/ pmac_call_feature(PMAC_FTR_SOUND_CHIP_ENABLE, io, 0, 1); - if (awacs_revision == AWACS_SCREAMER) + if (awacs_revision == AWACS_SCREAMER && awacs) awacs_recalibrate(); -#endif + awacs_irq = io->intrs[0].line; awacs_tx_irq = io->intrs[1].line; awacs_rx_irq = io->intrs[2].line; + /* Hack for legacy crap that will be killed someday */ awacs_node = io; /* if we have an awacs or screamer - probe the chip to make @@ -2909,8 +2959,9 @@ /* if it's there use it to set up frame rates */ init_frame_rates(prop, l) ; } - - out_le32(&awacs->control, 0x11); /* set everything quiesent */ + + if (awacs) + out_le32(&awacs->control, 0x11); /* set everything quiesent */ set_hw_byteswap(io) ; /* figure out if the h/w can do it */ @@ -2942,25 +2993,27 @@ switch (awacs_revision) { case AWACS_TUMBLER: -#ifdef CONFIG_KMOD - request_module("i2c-keywest"); -#endif /* CONFIG_KMOD */ - awacs_tumbler_init(); - tas_init(); - break ; + tas_register_driver(&tas3001c_hooks); + tas_init(I2C_DRIVERID_TAS3001C, I2C_DRIVERNAME_TAS3001C); + tas_dmasound_init(); + tas_post_init(); + break ; + case AWACS_SNAPPER: + tas_register_driver(&tas3004_hooks); + tas_init(I2C_DRIVERID_TAS3004,I2C_DRIVERNAME_TAS3004); + tas_dmasound_init(); + tas_post_init(); + break; case AWACS_DACA: -#ifdef CONFIG_KMOD - request_module("i2c-keywest"); -#endif /* CONFIG_KMOD */ daca_init(); - break ; /* don't know how yet */ + break; case AWACS_BURGUNDY: awacs_burgundy_init(); break ; case AWACS_SCREAMER: case AWACS_AWACS: default: - load_awacs() ; + load_awacs(); break ; } @@ -3031,11 +3084,15 @@ dmasound.mach.hardware_afmts = AFMT_S16_BE ; /* shut out chips that do output only. - may need to extend this to machines which have no inputs - even tho' - they use screamer - IIRC one of the powerbooks is like this. - */ + * may need to extend this to machines which have no inputs - even tho' + * they use screamer - IIRC one of the powerbooks is like this. + * + * FIXME: Actually, some TUMBLER and SNAPPER do have inputs... + */ - if (awacs_revision != AWACS_TUMBLER && awacs_revision != AWACS_DACA) { + if (awacs_revision != AWACS_TUMBLER && + awacs_revision != AWACS_SNAPPER && + awacs_revision != AWACS_DACA) { dmasound.mach.capabilities = DSP_CAP_DUPLEX ; dmasound.mach.record = PMacRecord ; } @@ -3053,6 +3110,9 @@ case AWACS_TUMBLER: sprintf(awacs_name, "PowerMac Tumbler ") ; break ; + case AWACS_SNAPPER: + sprintf(awacs_name, "PowerMac Snapper ") ; + break ; case AWACS_SCREAMER: sprintf(awacs_name, "PowerMac Screamer ") ; break ; @@ -3069,7 +3129,8 @@ { switch (awacs_revision) { case AWACS_TUMBLER: - awacs_tumbler_cleanup(); + case AWACS_SNAPPER: + tas_dmasound_cleanup(); tas_cleanup(); break ; case AWACS_DACA: diff -Nru a/sound/oss/dmasound/tas3001c.c b/sound/oss/dmasound/tas3001c.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/sound/oss/dmasound/tas3001c.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,861 @@ +/* + * Driver for the i2c/i2s based TA3004 sound chip used + * on some Apple hardware. Also known as "snapper". + * + * Tobias Sargeant + * Based upon, tas3001c.c by Christopher C. Chimelis : + * + * TODO: + * ----- + * * Enable control over input line 2 (is this connected?) + * * Implement sleep support (at least mute everything and + * * set gains to minimum during sleep) + * * Look into some of Darwin's tweaks regarding the mute + * * lines (delays & different behaviour on some HW) + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dmasound.h" +#include "tas_common.h" +#include "tas3001c.h" + +#include "tas_ioctl.h" + +#define TAS3001C_BIQUAD_FILTER_COUNT 6 +#define TAS3001C_BIQUAD_CHANNEL_COUNT 2 + +#define VOL_DEFAULT (100 * 4 / 5) +#define INPUT_DEFAULT (100 * 4 / 5) +#define BASS_DEFAULT (100 / 2) +#define TREBLE_DEFAULT (100 / 2) + +struct tas3001c_data_t { + struct tas_data_t super; + int device_id; + int output_id; + int speaker_id; + struct tas_drce_t drce_state; +}; + + +static const union tas_biquad_t +tas3001c_eq_unity={ + buf: { 0x100000, 0x000000, 0x000000, 0x000000, 0x000000 } +}; + + +static inline unsigned char db_to_regval(short db) { + int r=0; + + r=(db+0x59a0) / 0x60; + + if (r < 0x91) return 0x91; + if (r > 0xef) return 0xef; + return r; +} + +static inline short quantize_db(short db) { + return db_to_regval(db) * 0x60 - 0x59a0; +} + + +static inline int +register_width(enum tas3001c_reg_t r) +{ + switch(r) { + case TAS3001C_REG_MCR: + case TAS3001C_REG_TREBLE: + case TAS3001C_REG_BASS: + return 1; + + case TAS3001C_REG_DRC: + return 2; + + case TAS3001C_REG_MIXER1: + case TAS3001C_REG_MIXER2: + return 3; + + case TAS3001C_REG_VOLUME: + return 6; + + case TAS3001C_REG_LEFT_BIQUAD0: + case TAS3001C_REG_LEFT_BIQUAD1: + case TAS3001C_REG_LEFT_BIQUAD2: + case TAS3001C_REG_LEFT_BIQUAD3: + case TAS3001C_REG_LEFT_BIQUAD4: + case TAS3001C_REG_LEFT_BIQUAD5: + case TAS3001C_REG_LEFT_BIQUAD6: + + case TAS3001C_REG_RIGHT_BIQUAD0: + case TAS3001C_REG_RIGHT_BIQUAD1: + case TAS3001C_REG_RIGHT_BIQUAD2: + case TAS3001C_REG_RIGHT_BIQUAD3: + case TAS3001C_REG_RIGHT_BIQUAD4: + case TAS3001C_REG_RIGHT_BIQUAD5: + case TAS3001C_REG_RIGHT_BIQUAD6: + return 15; + + default: + return 0; + } +} + +static int +tas3001c_write_register( struct tas3001c_data_t *self, + enum tas3001c_reg_t reg_num, + char *data, + uint write_mode) +{ + if (reg_num==TAS3001C_REG_MCR || + reg_num==TAS3001C_REG_BASS || + reg_num==TAS3001C_REG_TREBLE) { + return tas_write_byte_register(&self->super, + (uint)reg_num, + *data, + write_mode); + } else { + return tas_write_register(&self->super, + (uint)reg_num, + register_width(reg_num), + data, + write_mode); + } +} + +static int +tas3001c_sync_register( struct tas3001c_data_t *self, + enum tas3001c_reg_t reg_num) +{ + if (reg_num==TAS3001C_REG_MCR || + reg_num==TAS3001C_REG_BASS || + reg_num==TAS3001C_REG_TREBLE) { + return tas_sync_byte_register(&self->super, + (uint)reg_num, + register_width(reg_num)); + } else { + return tas_sync_register(&self->super, + (uint)reg_num, + register_width(reg_num)); + } +} + +static int +tas3001c_read_register( struct tas3001c_data_t *self, + enum tas3001c_reg_t reg_num, + char *data, + uint write_mode) +{ + return tas_read_register(&self->super, + (uint)reg_num, + register_width(reg_num), + data); +} + +static inline int +tas3001c_fast_load(struct tas3001c_data_t *self, int fast) +{ + if (fast) + self->super.shadow[TAS3001C_REG_MCR][0] |= 0x80; + else + self->super.shadow[TAS3001C_REG_MCR][0] &= 0x7f; + return tas3001c_sync_register(self,TAS3001C_REG_MCR); +} + +static uint +tas3001c_supported_mixers(struct tas3001c_data_t *self) +{ + return SOUND_MASK_VOLUME | + SOUND_MASK_PCM | + SOUND_MASK_ALTPCM | + SOUND_MASK_TREBLE | + SOUND_MASK_BASS; +} + +static int +tas3001c_mixer_is_stereo(struct tas3001c_data_t *self,int mixer) +{ + switch(mixer) { + case SOUND_MIXER_VOLUME: + return 1; + default: + return 0; + } +} + +static uint +tas3001c_stereo_mixers(struct tas3001c_data_t *self) +{ + uint r=tas3001c_supported_mixers(self); + uint i; + + for (i=1; isuper.mixer[mixer]; + + return 0; +} + +static int +tas3001c_set_mixer_level(struct tas3001c_data_t *self,int mixer,uint level) +{ + int rc; + tas_shadow_t *shadow; + + uint temp; + uint offset=0; + + if (!self) + return -1; + + shadow=self->super.shadow; + + if (!tas3001c_mixer_is_stereo(self,mixer)) + level = tas_mono_to_stereo(level); + + switch(mixer) { + case SOUND_MIXER_VOLUME: + temp = tas3001c_gain.master[level&0xff]; + shadow[TAS3001C_REG_VOLUME][0] = (temp >> 16) & 0xff; + shadow[TAS3001C_REG_VOLUME][1] = (temp >> 8) & 0xff; + shadow[TAS3001C_REG_VOLUME][2] = (temp >> 0) & 0xff; + temp = tas3001c_gain.master[(level>>8)&0xff]; + shadow[TAS3001C_REG_VOLUME][3] = (temp >> 16) & 0xff; + shadow[TAS3001C_REG_VOLUME][4] = (temp >> 8) & 0xff; + shadow[TAS3001C_REG_VOLUME][5] = (temp >> 0) & 0xff; + rc = tas3001c_sync_register(self,TAS3001C_REG_VOLUME); + break; + case SOUND_MIXER_ALTPCM: + /* tas3001c_fast_load(self, 1); */ + level = tas_mono_to_stereo(level); + temp = tas3001c_gain.mixer[level&0xff]; + shadow[TAS3001C_REG_MIXER2][offset+0] = (temp >> 16) & 0xff; + shadow[TAS3001C_REG_MIXER2][offset+1] = (temp >> 8) & 0xff; + shadow[TAS3001C_REG_MIXER2][offset+2] = (temp >> 0) & 0xff; + rc = tas3001c_sync_register(self,TAS3001C_REG_MIXER2); + /* tas3001c_fast_load(self, 0); */ + break; + case SOUND_MIXER_PCM: + /* tas3001c_fast_load(self, 1); */ + level = tas_mono_to_stereo(level); + temp = tas3001c_gain.mixer[level&0xff]; + shadow[TAS3001C_REG_MIXER1][offset+0] = (temp >> 16) & 0xff; + shadow[TAS3001C_REG_MIXER1][offset+1] = (temp >> 8) & 0xff; + shadow[TAS3001C_REG_MIXER1][offset+2] = (temp >> 0) & 0xff; + rc = tas3001c_sync_register(self,TAS3001C_REG_MIXER1); + /* tas3001c_fast_load(self, 0); */ + break; + case SOUND_MIXER_TREBLE: + temp = tas3001c_gain.treble[level&0xff]; + shadow[TAS3001C_REG_TREBLE][0]=temp&0xff; + rc = tas3001c_sync_register(self,TAS3001C_REG_TREBLE); + break; + case SOUND_MIXER_BASS: + temp = tas3001c_gain.bass[level&0xff]; + shadow[TAS3001C_REG_BASS][0]=temp&0xff; + rc = tas3001c_sync_register(self,TAS3001C_REG_BASS); + break; + default: + rc = -1; + break; + } + if (rc < 0) + return rc; + self->super.mixer[mixer]=level; + return 0; +} + +static int +tas3001c_leave_sleep(struct tas3001c_data_t *self) +{ + unsigned char mcr = (1<<6)+(2<<4)+(2<<2); + + if (!self) + return -1; + + /* Make sure something answers on the i2c bus */ + if (tas3001c_write_register(self, TAS3001C_REG_MCR, &mcr, + WRITE_NORMAL|FORCE_WRITE) < 0) + return -1; + + tas3001c_fast_load(self, 1); + + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD0); + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD1); + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD2); + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD3); + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD4); + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD5); + + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD0); + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD1); + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD2); + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD3); + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD4); + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD5); + + tas3001c_fast_load(self, 0); + + (void)tas3001c_sync_register(self,TAS3001C_REG_BASS); + (void)tas3001c_sync_register(self,TAS3001C_REG_TREBLE); + (void)tas3001c_sync_register(self,TAS3001C_REG_MIXER1); + (void)tas3001c_sync_register(self,TAS3001C_REG_MIXER2); + (void)tas3001c_sync_register(self,TAS3001C_REG_VOLUME); + + return 0; +} + +static int +tas3001c_enter_sleep(struct tas3001c_data_t *self) +{ + /* Stub for now, but I have the details on low-power mode */ + if (!self) + return -1; + return 0; +} + +static int +tas3001c_sync_biquad( struct tas3001c_data_t *self, + u_int channel, + u_int filter) +{ + enum tas3001c_reg_t reg; + + if (channel >= TAS3001C_BIQUAD_CHANNEL_COUNT || + filter >= TAS3001C_BIQUAD_FILTER_COUNT) return -EINVAL; + + reg=( channel ? TAS3001C_REG_RIGHT_BIQUAD0 : TAS3001C_REG_LEFT_BIQUAD0 ) + filter; + + return tas3001c_sync_register(self,reg); +} + +static int +tas3001c_write_biquad_shadow( struct tas3001c_data_t *self, + u_int channel, + u_int filter, + const union tas_biquad_t *biquad) +{ + tas_shadow_t *shadow=self->super.shadow; + enum tas3001c_reg_t reg; + + if (channel >= TAS3001C_BIQUAD_CHANNEL_COUNT || + filter >= TAS3001C_BIQUAD_FILTER_COUNT) return -EINVAL; + + reg=( channel ? TAS3001C_REG_RIGHT_BIQUAD0 : TAS3001C_REG_LEFT_BIQUAD0 ) + filter; + + SET_4_20(shadow[reg], 0,biquad->coeff.b0); + SET_4_20(shadow[reg], 3,biquad->coeff.b1); + SET_4_20(shadow[reg], 6,biquad->coeff.b2); + SET_4_20(shadow[reg], 9,biquad->coeff.a1); + SET_4_20(shadow[reg],12,biquad->coeff.a2); + + return 0; +} + +static int +tas3001c_write_biquad( struct tas3001c_data_t *self, + u_int channel, + u_int filter, + const union tas_biquad_t *biquad) +{ + int rc; + + rc=tas3001c_write_biquad_shadow(self, channel, filter, biquad); + if (rc < 0) return rc; + + return tas3001c_sync_biquad(self, channel, filter); +} + +static int +tas3001c_write_biquad_list( struct tas3001c_data_t *self, + u_int filter_count, + u_int flags, + struct tas_biquad_ctrl_t *biquads) +{ + int i; + int rc; + + if (flags & TAS_BIQUAD_FAST_LOAD) tas3001c_fast_load(self,1); + + for (i=0; isuper.shadow; + enum tas3001c_reg_t reg; + + if (channel >= TAS3001C_BIQUAD_CHANNEL_COUNT || + filter >= TAS3001C_BIQUAD_FILTER_COUNT) return -EINVAL; + + reg=( channel ? TAS3001C_REG_RIGHT_BIQUAD0 : TAS3001C_REG_LEFT_BIQUAD0 ) + filter; + + biquad->coeff.b0=GET_4_20(shadow[reg], 0); + biquad->coeff.b1=GET_4_20(shadow[reg], 3); + biquad->coeff.b2=GET_4_20(shadow[reg], 6); + biquad->coeff.a1=GET_4_20(shadow[reg], 9); + biquad->coeff.a2=GET_4_20(shadow[reg],12); + + return 0; +} + +static int +tas3001c_eq_rw( struct tas3001c_data_t *self, + u_int cmd, + u_long arg) +{ + int rc; + struct tas_biquad_ctrl_t biquad; + + if (copy_from_user((void *)&biquad, (const void *)arg, sizeof(struct tas_biquad_ctrl_t))) { + return -EFAULT; + } + + if (cmd & SIOC_IN) { + rc=tas3001c_write_biquad(self, biquad.channel, biquad.filter, &biquad.data); + if (rc != 0) return rc; + } + + if (cmd & SIOC_OUT) { + rc=tas3001c_read_biquad(self, biquad.channel, biquad.filter, &biquad.data); + if (rc != 0) return rc; + + if (copy_to_user((void *)arg, (const void *)&biquad, sizeof(struct tas_biquad_ctrl_t))) { + return -EFAULT; + } + + } + return 0; +} + +static int +tas3001c_eq_list_rw( struct tas3001c_data_t *self, + u_int cmd, + u_long arg) +{ + int rc; + int filter_count; + int flags; + int i,j; + char sync_required[2][6]; + struct tas_biquad_ctrl_t biquad; + + memset(sync_required,0,sizeof(sync_required)); + + if (copy_from_user((void *)&filter_count, + (const void *)arg + offsetof(struct tas_biquad_ctrl_list_t,filter_count), + sizeof(int))) { + return -EFAULT; + } + + if (copy_from_user((void *)&flags, + (const void *)arg + offsetof(struct tas_biquad_ctrl_list_t,flags), + sizeof(int))) { + return -EFAULT; + } + + if (cmd & SIOC_IN) { + } + + for (i=0; i < filter_count; i++) { + if (copy_from_user((void *)&biquad, + (const void *)arg + offsetof(struct tas_biquad_ctrl_list_t, biquads[i]), + sizeof(struct tas_biquad_ctrl_t))) { + return -EFAULT; + } + + if (cmd & SIOC_IN) { + sync_required[biquad.channel][biquad.filter]=1; + rc=tas3001c_write_biquad_shadow(self, biquad.channel, biquad.filter, &biquad.data); + if (rc != 0) return rc; + } + + if (cmd & SIOC_OUT) { + rc=tas3001c_read_biquad(self, biquad.channel, biquad.filter, &biquad.data); + if (rc != 0) return rc; + + if (copy_to_user((void *)arg + offsetof(struct tas_biquad_ctrl_list_t, biquads[i]), + (const void *)&biquad, + sizeof(struct tas_biquad_ctrl_t))) { + return -EFAULT; + } + } + } + + if (cmd & SIOC_IN) { + if (flags & TAS_BIQUAD_FAST_LOAD) tas3001c_fast_load(self,1); + for (i=0; i<2; i++) { + for (j=0; j<6; j++) { + if (sync_required[i][j]) { + rc=tas3001c_sync_biquad(self, i, j); + if (rc < 0) return rc; + } + } + } + if (flags & TAS_BIQUAD_FAST_LOAD) { + tas3001c_fast_load(self,0); + /* now we need to set up the mixers again, + because leaving fast mode resets them. */ + (void)tas3001c_sync_register(self,TAS3001C_REG_BASS); + (void)tas3001c_sync_register(self,TAS3001C_REG_TREBLE); + (void)tas3001c_sync_register(self,TAS3001C_REG_MIXER1); + (void)tas3001c_sync_register(self,TAS3001C_REG_MIXER2); + (void)tas3001c_sync_register(self,TAS3001C_REG_VOLUME); + } + } + + return 0; +} + +static int +tas3001c_update_drce( struct tas3001c_data_t *self, + int flags, + struct tas_drce_t *drce) +{ + tas_shadow_t *shadow; + shadow=self->super.shadow; + + shadow[TAS3001C_REG_DRC][1] = 0xc1; + + if (flags & TAS_DRCE_THRESHOLD) { + self->drce_state.threshold=quantize_db(drce->threshold); + shadow[TAS3001C_REG_DRC][2] = db_to_regval(self->drce_state.threshold); + } + + if (flags & TAS_DRCE_ENABLE) { + self->drce_state.enable = drce->enable; + } + + if (!self->drce_state.enable) { + shadow[TAS3001C_REG_DRC][0] = 0xf0; + } + +#ifdef DEBUG_DRCE + printk("DRCE IOCTL: set [ ENABLE:%x THRESH:%x\n", + self->drce_state.enable, + self->drce_state.threshold); + + printk("DRCE IOCTL: reg [ %02x %02x ]\n", + (unsigned char)shadow[TAS3001C_REG_DRC][0], + (unsigned char)shadow[TAS3001C_REG_DRC][1]); +#endif + + return tas3001c_sync_register(self, TAS3001C_REG_DRC); +} + +static int +tas3001c_drce_rw( struct tas3001c_data_t *self, + u_int cmd, + u_long arg) +{ + int rc; + struct tas_drce_ctrl_t drce_ctrl; + + if (copy_from_user((void *)&drce_ctrl, + (const void *)arg, + sizeof(struct tas_drce_ctrl_t))) { + return -EFAULT; + } + +#ifdef DEBUG_DRCE + printk("DRCE IOCTL: input [ FLAGS:%x ENABLE:%x THRESH:%x\n", + drce_ctrl.flags, + drce_ctrl.data.enable, + drce_ctrl.data.threshold); +#endif + + if (cmd & SIOC_IN) { + rc = tas3001c_update_drce(self, drce_ctrl.flags, &drce_ctrl.data); + if (rc < 0) + return rc; + } + + if (cmd & SIOC_OUT) { + if (drce_ctrl.flags & TAS_DRCE_ENABLE) + drce_ctrl.data.enable = self->drce_state.enable; + + if (drce_ctrl.flags & TAS_DRCE_THRESHOLD) + drce_ctrl.data.threshold = self->drce_state.threshold; + + if (copy_to_user((void *)arg, + (const void *)&drce_ctrl, + sizeof(struct tas_drce_ctrl_t))) { + return -EFAULT; + } + } + + return 0; +} + +static void +tas3001c_update_device_parameters(struct tas3001c_data_t *self) +{ + int i,j; + + if (!self) return; + + if (self->output_id == TAS_OUTPUT_HEADPHONES) { + tas3001c_fast_load(self, 1); + + for (i=0; idevice_id == self->device_id && + (eq->output_id == 0 || eq->output_id == self->output_id) && + (eq->speaker_id == 0 || eq->speaker_id == self->speaker_id)) { + + tas3001c_update_drce(self, TAS_DRCE_ALL, eq->drce); + tas3001c_write_biquad_list(self, eq->filter_count, TAS_BIQUAD_FAST_LOAD, eq->biquads); + + break; + } + } +} + +static void +tas3001c_device_change_handler(void *self) +{ + if (self) + tas3001c_update_device_parameters(self); +} + +static struct work_struct device_change; + +static int +tas3001c_output_device_change( struct tas3001c_data_t *self, + int device_id, + int output_id, + int speaker_id) +{ + self->device_id=device_id; + self->output_id=output_id; + self->speaker_id=speaker_id; + + schedule_work(&device_change); + return 0; +} + +static int +tas3001c_device_ioctl( struct tas3001c_data_t *self, + u_int cmd, + u_long arg) +{ + switch (cmd) { + case TAS_READ_EQ: + case TAS_WRITE_EQ: + return tas3001c_eq_rw(self, cmd, arg); + + case TAS_READ_EQ_LIST: + case TAS_WRITE_EQ_LIST: + return tas3001c_eq_list_rw(self, cmd, arg); + + case TAS_READ_EQ_FILTER_COUNT: + put_user(TAS3001C_BIQUAD_FILTER_COUNT, (uint *)(arg)); + return 0; + + case TAS_READ_EQ_CHANNEL_COUNT: + put_user(TAS3001C_BIQUAD_CHANNEL_COUNT, (uint *)(arg)); + return 0; + + case TAS_READ_DRCE: + case TAS_WRITE_DRCE: + return tas3001c_drce_rw(self, cmd, arg); + + case TAS_READ_DRCE_CAPS: + put_user(TAS_DRCE_ENABLE | TAS_DRCE_THRESHOLD, (uint *)(arg)); + return 0; + + case TAS_READ_DRCE_MIN: + case TAS_READ_DRCE_MAX: { + struct tas_drce_ctrl_t drce_ctrl; + + if (copy_from_user((void *)&drce_ctrl, + (const void *)arg, + sizeof(struct tas_drce_ctrl_t))) { + return -EFAULT; + } + + if (drce_ctrl.flags & TAS_DRCE_THRESHOLD) { + if (cmd == TAS_READ_DRCE_MIN) { + drce_ctrl.data.threshold=-36<<8; + } else { + drce_ctrl.data.threshold=-6<<8; + } + } + + if (copy_to_user((void *)arg, + (const void *)&drce_ctrl, + sizeof(struct tas_drce_ctrl_t))) { + return -EFAULT; + } + } + } + + return -EINVAL; +} + +static int +tas3001c_init_mixer(struct tas3001c_data_t *self) +{ + unsigned char mcr = (1<<6)+(2<<4)+(2<<2); + + /* Make sure something answers on the i2c bus */ + if (tas3001c_write_register(self, TAS3001C_REG_MCR, &mcr, + WRITE_NORMAL|FORCE_WRITE) < 0) + return -1; + + tas3001c_fast_load(self, 1); + + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD0); + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD1); + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD2); + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD3); + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD4); + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD5); + (void)tas3001c_sync_register(self,TAS3001C_REG_RIGHT_BIQUAD6); + + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD0); + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD1); + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD2); + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD3); + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD4); + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD5); + (void)tas3001c_sync_register(self,TAS3001C_REG_LEFT_BIQUAD6); + + tas3001c_fast_load(self, 0); + + tas3001c_set_mixer_level(self, SOUND_MIXER_VOLUME, VOL_DEFAULT<<8 | VOL_DEFAULT); + tas3001c_set_mixer_level(self, SOUND_MIXER_PCM, INPUT_DEFAULT<<8 | INPUT_DEFAULT); + tas3001c_set_mixer_level(self, SOUND_MIXER_ALTPCM, 0); + + tas3001c_set_mixer_level(self, SOUND_MIXER_BASS, BASS_DEFAULT); + tas3001c_set_mixer_level(self, SOUND_MIXER_TREBLE, TREBLE_DEFAULT); + + return 0; +} + +static int +tas3001c_uninit_mixer(struct tas3001c_data_t *self) +{ + tas3001c_set_mixer_level(self, SOUND_MIXER_VOLUME, 0); + tas3001c_set_mixer_level(self, SOUND_MIXER_PCM, 0); + tas3001c_set_mixer_level(self, SOUND_MIXER_ALTPCM, 0); + + tas3001c_set_mixer_level(self, SOUND_MIXER_BASS, 0); + tas3001c_set_mixer_level(self, SOUND_MIXER_TREBLE, 0); + + return 0; +} + +static int +tas3001c_init(struct i2c_client *client) +{ + struct tas3001c_data_t *self; + size_t sz = sizeof(*self) + (TAS3001C_REG_MAX*sizeof(tas_shadow_t)); + int i, j; + + self = kmalloc(sz, GFP_KERNEL); + if (!self) + return -ENOMEM; + memset(self, 0, sz); + + self->super.client = client; + self->super.shadow = (tas_shadow_t *)(self+1); + self->output_id = TAS_OUTPUT_HEADPHONES; + + dev_set_drvdata(&client->dev, self); + + for (i = 0; i < TAS3001C_BIQUAD_CHANNEL_COUNT; i++) + for (j = 0; j < TAS3001C_BIQUAD_FILTER_COUNT; j++) + tas3001c_write_biquad_shadow(self, i, j, + &tas3001c_eq_unity); + + INIT_WORK(&device_change, tas3001c_device_change_handler, self); + return 0; +} + +static void +tas3001c_uninit(struct tas3001c_data_t *self) +{ + tas3001c_uninit_mixer(self); + kfree(self); +} + +struct tas_driver_hooks_t tas3001c_hooks = { + .init = (tas_hook_init_t)tas3001c_init, + .post_init = (tas_hook_post_init_t)tas3001c_init_mixer, + .uninit = (tas_hook_uninit_t)tas3001c_uninit, + .get_mixer_level = (tas_hook_get_mixer_level_t)tas3001c_get_mixer_level, + .set_mixer_level = (tas_hook_set_mixer_level_t)tas3001c_set_mixer_level, + .enter_sleep = (tas_hook_enter_sleep_t)tas3001c_enter_sleep, + .leave_sleep = (tas_hook_leave_sleep_t)tas3001c_leave_sleep, + .supported_mixers = (tas_hook_supported_mixers_t)tas3001c_supported_mixers, + .mixer_is_stereo = (tas_hook_mixer_is_stereo_t)tas3001c_mixer_is_stereo, + .stereo_mixers = (tas_hook_stereo_mixers_t)tas3001c_stereo_mixers, + .output_device_change = (tas_hook_output_device_change_t)tas3001c_output_device_change, + .device_ioctl = (tas_hook_device_ioctl_t)tas3001c_device_ioctl +}; diff -Nru a/sound/oss/dmasound/tas3001c.h b/sound/oss/dmasound/tas3001c.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/sound/oss/dmasound/tas3001c.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,64 @@ +/* + * Header file for the i2c/i2s based TA3001c sound chip used + * on some Apple hardware. Also known as "tumbler". + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Written by Christopher C. Chimelis + */ + +#ifndef _TAS3001C_H_ +#define _TAS3001C_H_ + +#include + +#include "tas_common.h" +#include "tas_eq_prefs.h" + +/* + * Macros that correspond to the registers that we write to + * when setting the various values. + */ + +#define TAS3001C_VERSION "0.3" +#define TAS3001C_DATE "20011214" + +#define I2C_DRIVERNAME_TAS3001C "TAS3001c driver V " TAS3001C_VERSION +#define I2C_DRIVERID_TAS3001C (I2C_DRIVERID_TAS_BASE+0) + +extern struct tas_driver_hooks_t tas3001c_hooks; +extern struct tas_gain_t tas3001c_gain; +extern struct tas_eq_pref_t *tas3001c_eq_prefs[]; + +enum tas3001c_reg_t { + TAS3001C_REG_MCR = 0x01, + TAS3001C_REG_DRC = 0x02, + + TAS3001C_REG_VOLUME = 0x04, + TAS3001C_REG_TREBLE = 0x05, + TAS3001C_REG_BASS = 0x06, + TAS3001C_REG_MIXER1 = 0x07, + TAS3001C_REG_MIXER2 = 0x08, + + TAS3001C_REG_LEFT_BIQUAD0 = 0x0a, + TAS3001C_REG_LEFT_BIQUAD1 = 0x0b, + TAS3001C_REG_LEFT_BIQUAD2 = 0x0c, + TAS3001C_REG_LEFT_BIQUAD3 = 0x0d, + TAS3001C_REG_LEFT_BIQUAD4 = 0x0e, + TAS3001C_REG_LEFT_BIQUAD5 = 0x0f, + TAS3001C_REG_LEFT_BIQUAD6 = 0x10, + + TAS3001C_REG_RIGHT_BIQUAD0 = 0x13, + TAS3001C_REG_RIGHT_BIQUAD1 = 0x14, + TAS3001C_REG_RIGHT_BIQUAD2 = 0x15, + TAS3001C_REG_RIGHT_BIQUAD3 = 0x16, + TAS3001C_REG_RIGHT_BIQUAD4 = 0x17, + TAS3001C_REG_RIGHT_BIQUAD5 = 0x18, + TAS3001C_REG_RIGHT_BIQUAD6 = 0x19, + + TAS3001C_REG_MAX = 0x20 +}; + +#endif /* _TAS3001C_H_ */ diff -Nru a/sound/oss/dmasound/tas3001c_tables.c b/sound/oss/dmasound/tas3001c_tables.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/sound/oss/dmasound/tas3001c_tables.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,375 @@ +#include "tas_common.h" +#include "tas_eq_prefs.h" + +static struct tas_drce_t eqp_0e_2_1_drce = { + enable: 1, + above: { val: 3.0 * (1<<8), expand: 0 }, + below: { val: 1.0 * (1<<8), expand: 0 }, + threshold: -15.33 * (1<<8), + energy: 2.4 * (1<<12), + attack: 0.013 * (1<<12), + decay: 0.212 * (1<<12), +}; + +static struct tas_biquad_ctrl_t eqp_0e_2_1_biquads[]={ + { channel: 0, filter: 0, data: { coeff: { 0x0FCAD3, 0xE06A58, 0x0FCAD3, 0xE06B09, 0x0F9657 } } }, + { channel: 0, filter: 1, data: { coeff: { 0x041731, 0x082E63, 0x041731, 0xFD8D08, 0x02CFBD } } }, + { channel: 0, filter: 2, data: { coeff: { 0x0FFDC7, 0xE0524C, 0x0FBFAA, 0xE0524C, 0x0FBD72 } } }, + { channel: 0, filter: 3, data: { coeff: { 0x0F3D35, 0xE228CA, 0x0EC7B2, 0xE228CA, 0x0E04E8 } } }, + { channel: 0, filter: 4, data: { coeff: { 0x0FCEBF, 0xE181C2, 0x0F2656, 0xE181C2, 0x0EF516 } } }, + { channel: 0, filter: 5, data: { coeff: { 0x0EC417, 0x073E22, 0x0B0633, 0x073E22, 0x09CA4A } } }, + + { channel: 1, filter: 0, data: { coeff: { 0x0FCAD3, 0xE06A58, 0x0FCAD3, 0xE06B09, 0x0F9657 } } }, + { channel: 1, filter: 1, data: { coeff: { 0x041731, 0x082E63, 0x041731, 0xFD8D08, 0x02CFBD } } }, + { channel: 1, filter: 2, data: { coeff: { 0x0FFDC7, 0xE0524C, 0x0FBFAA, 0xE0524C, 0x0FBD72 } } }, + { channel: 1, filter: 3, data: { coeff: { 0x0F3D35, 0xE228CA, 0x0EC7B2, 0xE228CA, 0x0E04E8 } } }, + { channel: 1, filter: 4, data: { coeff: { 0x0FCEBF, 0xE181C2, 0x0F2656, 0xE181C2, 0x0EF516 } } }, + { channel: 1, filter: 5, data: { coeff: { 0x0EC417, 0x073E22, 0x0B0633, 0x073E22, 0x09CA4A } } }, +}; + +static struct tas_eq_pref_t eqp_0e_2_1 = { + sample_rate: 44100, + device_id: 0x0e, + output_id: TAS_OUTPUT_EXTERNAL_SPKR, + speaker_id: 0x01, + + drce: &eqp_0e_2_1_drce, + + filter_count: 12, + biquads: eqp_0e_2_1_biquads +}; + +/* ======================================================================== */ + +static struct tas_drce_t eqp_10_1_0_drce={ + enable: 1, + above: { val: 3.0 * (1<<8), expand: 0 }, + below: { val: 1.0 * (1<<8), expand: 0 }, + threshold: -12.46 * (1<<8), + energy: 2.4 * (1<<12), + attack: 0.013 * (1<<12), + decay: 0.212 * (1<<12), +}; + +static struct tas_biquad_ctrl_t eqp_10_1_0_biquads[]={ + { channel: 0, filter: 0, data: { coeff: { 0x0F4A12, 0xE16BDA, 0x0F4A12, 0xE173F0, 0x0E9C3A } } }, + { channel: 0, filter: 1, data: { coeff: { 0x02DD54, 0x05BAA8, 0x02DD54, 0xF8001D, 0x037532 } } }, + { channel: 0, filter: 2, data: { coeff: { 0x0E2FC7, 0xE4D5DC, 0x0D7477, 0xE4D5DC, 0x0BA43F } } }, + { channel: 0, filter: 3, data: { coeff: { 0x0E7899, 0xE67CCA, 0x0D0E93, 0xE67CCA, 0x0B872D } } }, + { channel: 0, filter: 4, data: { coeff: { 0x100000, 0x000000, 0x000000, 0x000000, 0x000000 } } }, + { channel: 0, filter: 5, data: { coeff: { 0x100000, 0x000000, 0x000000, 0x000000, 0x000000 } } }, + + { channel: 1, filter: 0, data: { coeff: { 0x0F4A12, 0xE16BDA, 0x0F4A12, 0xE173F0, 0x0E9C3A } } }, + { channel: 1, filter: 1, data: { coeff: { 0x02DD54, 0x05BAA8, 0x02DD54, 0xF8001D, 0x037532 } } }, + { channel: 1, filter: 2, data: { coeff: { 0x0E2FC7, 0xE4D5DC, 0x0D7477, 0xE4D5DC, 0x0BA43F } } }, + { channel: 1, filter: 3, data: { coeff: { 0x0E7899, 0xE67CCA, 0x0D0E93, 0xE67CCA, 0x0B872D } } }, + { channel: 1, filter: 4, data: { coeff: { 0x100000, 0x000000, 0x000000, 0x000000, 0x000000 } } }, + { channel: 1, filter: 5, data: { coeff: { 0x100000, 0x000000, 0x000000, 0x000000, 0x000000 } } }, +}; + +static struct tas_eq_pref_t eqp_10_1_0 = { + sample_rate: 44100, + device_id: 0x10, + output_id: TAS_OUTPUT_INTERNAL_SPKR, + speaker_id: 0x00, + + drce: &eqp_10_1_0_drce, + + filter_count: 12, + biquads: eqp_10_1_0_biquads +}; + +/* ======================================================================== */ + +static struct tas_drce_t eqp_15_2_1_drce={ + enable: 1, + above: { val: 3.0 * (1<<8), expand: 0 }, + below: { val: 1.0 * (1<<8), expand: 0 }, + threshold: -15.33 * (1<<8), + energy: 2.4 * (1<<12), + attack: 0.013 * (1<<12), + decay: 0.212 * (1<<12), +}; + +static struct tas_biquad_ctrl_t eqp_15_2_1_biquads[]={ + { channel: 0, filter: 0, data: { coeff: { 0x0FE143, 0xE05204, 0x0FCCC5, 0xE05266, 0x0FAE6B } } }, + { channel: 0, filter: 1, data: { coeff: { 0x102383, 0xE03A03, 0x0FA325, 0xE03A03, 0x0FC6A8 } } }, + { channel: 0, filter: 2, data: { coeff: { 0x0FF2AB, 0xE06285, 0x0FB20A, 0xE06285, 0x0FA4B5 } } }, + { channel: 0, filter: 3, data: { coeff: { 0x0F544D, 0xE35971, 0x0D8F3A, 0xE35971, 0x0CE388 } } }, + { channel: 0, filter: 4, data: { coeff: { 0x13E1D3, 0xF3ECB5, 0x042227, 0xF3ECB5, 0x0803FA } } }, + { channel: 0, filter: 5, data: { coeff: { 0x0AC119, 0x034181, 0x078AB1, 0x034181, 0x024BCA } } }, + + { channel: 1, filter: 0, data: { coeff: { 0x0FE143, 0xE05204, 0x0FCCC5, 0xE05266, 0x0FAE6B } } }, + { channel: 1, filter: 1, data: { coeff: { 0x102383, 0xE03A03, 0x0FA325, 0xE03A03, 0x0FC6A8 } } }, + { channel: 1, filter: 2, data: { coeff: { 0x0FF2AB, 0xE06285, 0x0FB20A, 0xE06285, 0x0FA4B5 } } }, + { channel: 1, filter: 3, data: { coeff: { 0x0F544D, 0xE35971, 0x0D8F3A, 0xE35971, 0x0CE388 } } }, + { channel: 1, filter: 4, data: { coeff: { 0x13E1D3, 0xF3ECB5, 0x042227, 0xF3ECB5, 0x0803FA } } }, + { channel: 1, filter: 5, data: { coeff: { 0x0AC119, 0x034181, 0x078AB1, 0x034181, 0x024BCA } } }, +}; + +static struct tas_eq_pref_t eqp_15_2_1 = { + sample_rate: 44100, + device_id: 0x15, + output_id: TAS_OUTPUT_EXTERNAL_SPKR, + speaker_id: 0x01, + + drce: &eqp_15_2_1_drce, + + filter_count: 12, + biquads: eqp_15_2_1_biquads +}; + +/* ======================================================================== */ + +static struct tas_drce_t eqp_15_1_0_drce={ + enable: 1, + above: { val: 3.0 * (1<<8), expand: 0 }, + below: { val: 1.0 * (1<<8), expand: 0 }, + threshold: 0.0 * (1<<8), + energy: 2.4 * (1<<12), + attack: 0.013 * (1<<12), + decay: 0.212 * (1<<12), +}; + +static struct tas_biquad_ctrl_t eqp_15_1_0_biquads[]={ + { channel: 0, filter: 0, data: { coeff: { 0x0FAD08, 0xE0A5EF, 0x0FAD08, 0xE0A79D, 0x0F5BBE } } }, + { channel: 0, filter: 1, data: { coeff: { 0x04B38D, 0x09671B, 0x04B38D, 0x000F71, 0x02BEC5 } } }, + { channel: 0, filter: 2, data: { coeff: { 0x0FDD32, 0xE0A56F, 0x0F8A69, 0xE0A56F, 0x0F679C } } }, + { channel: 0, filter: 3, data: { coeff: { 0x0FD284, 0xE135FB, 0x0F2161, 0xE135FB, 0x0EF3E5 } } }, + { channel: 0, filter: 4, data: { coeff: { 0x0E81B1, 0xE6283F, 0x0CE49D, 0xE6283F, 0x0B664F } } }, + { channel: 0, filter: 5, data: { coeff: { 0x0F2D62, 0xE98797, 0x0D1E19, 0xE98797, 0x0C4B7B } } }, + + { channel: 1, filter: 0, data: { coeff: { 0x0FAD08, 0xE0A5EF, 0x0FAD08, 0xE0A79D, 0x0F5BBE } } }, + { channel: 1, filter: 1, data: { coeff: { 0x04B38D, 0x09671B, 0x04B38D, 0x000F71, 0x02BEC5 } } }, + { channel: 1, filter: 2, data: { coeff: { 0x0FDD32, 0xE0A56F, 0x0F8A69, 0xE0A56F, 0x0F679C } } }, + { channel: 1, filter: 3, data: { coeff: { 0x0FD284, 0xE135FB, 0x0F2161, 0xE135FB, 0x0EF3E5 } } }, + { channel: 1, filter: 4, data: { coeff: { 0x0E81B1, 0xE6283F, 0x0CE49D, 0xE6283F, 0x0B664F } } }, + { channel: 1, filter: 5, data: { coeff: { 0x0F2D62, 0xE98797, 0x0D1E19, 0xE98797, 0x0C4B7B } } }, +}; + +static struct tas_eq_pref_t eqp_15_1_0 = { + sample_rate: 44100, + device_id: 0x15, + output_id: TAS_OUTPUT_INTERNAL_SPKR, + speaker_id: 0x00, + + drce: &eqp_15_1_0_drce, + + filter_count: 12, + biquads: eqp_15_1_0_biquads +}; + +/* ======================================================================== */ + +static struct tas_drce_t eqp_0f_2_1_drce={ + enable: 1, + above: { val: 3.0 * (1<<8), expand: 0 }, + below: { val: 1.0 * (1<<8), expand: 0 }, + threshold: -15.33 * (1<<8), + energy: 2.4 * (1<<12), + attack: 0.013 * (1<<12), + decay: 0.212 * (1<<12), +}; + +static struct tas_biquad_ctrl_t eqp_0f_2_1_biquads[]={ + { channel: 0, filter: 0, data: { coeff: { 0x0FE143, 0xE05204, 0x0FCCC5, 0xE05266, 0x0FAE6B } } }, + { channel: 0, filter: 1, data: { coeff: { 0x102383, 0xE03A03, 0x0FA325, 0xE03A03, 0x0FC6A8 } } }, + { channel: 0, filter: 2, data: { coeff: { 0x0FF2AB, 0xE06285, 0x0FB20A, 0xE06285, 0x0FA4B5 } } }, + { channel: 0, filter: 3, data: { coeff: { 0x0F544D, 0xE35971, 0x0D8F3A, 0xE35971, 0x0CE388 } } }, + { channel: 0, filter: 4, data: { coeff: { 0x13E1D3, 0xF3ECB5, 0x042227, 0xF3ECB5, 0x0803FA } } }, + { channel: 0, filter: 5, data: { coeff: { 0x0AC119, 0x034181, 0x078AB1, 0x034181, 0x024BCA } } }, + + { channel: 1, filter: 0, data: { coeff: { 0x0FE143, 0xE05204, 0x0FCCC5, 0xE05266, 0x0FAE6B } } }, + { channel: 1, filter: 1, data: { coeff: { 0x102383, 0xE03A03, 0x0FA325, 0xE03A03, 0x0FC6A8 } } }, + { channel: 1, filter: 2, data: { coeff: { 0x0FF2AB, 0xE06285, 0x0FB20A, 0xE06285, 0x0FA4B5 } } }, + { channel: 1, filter: 3, data: { coeff: { 0x0F544D, 0xE35971, 0x0D8F3A, 0xE35971, 0x0CE388 } } }, + { channel: 1, filter: 4, data: { coeff: { 0x13E1D3, 0xF3ECB5, 0x042227, 0xF3ECB5, 0x0803FA } } }, + { channel: 1, filter: 5, data: { coeff: { 0x0AC119, 0x034181, 0x078AB1, 0x034181, 0x024BCA } } }, +}; + +static struct tas_eq_pref_t eqp_0f_2_1 = { + sample_rate: 44100, + device_id: 0x0f, + output_id: TAS_OUTPUT_EXTERNAL_SPKR, + speaker_id: 0x01, + + drce: &eqp_0f_2_1_drce, + + filter_count: 12, + biquads: eqp_0f_2_1_biquads +}; + +/* ======================================================================== */ + +static struct tas_drce_t eqp_0f_1_0_drce={ + enable: 1, + above: { val: 3.0 * (1<<8), expand: 0 }, + below: { val: 1.0 * (1<<8), expand: 0 }, + threshold: -15.33 * (1<<8), + energy: 2.4 * (1<<12), + attack: 0.013 * (1<<12), + decay: 0.212 * (1<<12), +}; + +static struct tas_biquad_ctrl_t eqp_0f_1_0_biquads[]={ + { channel: 0, filter: 0, data: { coeff: { 0x0FCAD3, 0xE06A58, 0x0FCAD3, 0xE06B09, 0x0F9657 } } }, + { channel: 0, filter: 1, data: { coeff: { 0x041731, 0x082E63, 0x041731, 0xFD8D08, 0x02CFBD } } }, + { channel: 0, filter: 2, data: { coeff: { 0x0FFDC7, 0xE0524C, 0x0FBFAA, 0xE0524C, 0x0FBD72 } } }, + { channel: 0, filter: 3, data: { coeff: { 0x0F3D35, 0xE228CA, 0x0EC7B2, 0xE228CA, 0x0E04E8 } } }, + { channel: 0, filter: 4, data: { coeff: { 0x0FCEBF, 0xE181C2, 0x0F2656, 0xE181C2, 0x0EF516 } } }, + { channel: 0, filter: 5, data: { coeff: { 0x0EC417, 0x073E22, 0x0B0633, 0x073E22, 0x09CA4A } } }, + + { channel: 1, filter: 0, data: { coeff: { 0x0FCAD3, 0xE06A58, 0x0FCAD3, 0xE06B09, 0x0F9657 } } }, + { channel: 1, filter: 1, data: { coeff: { 0x041731, 0x082E63, 0x041731, 0xFD8D08, 0x02CFBD } } }, + { channel: 1, filter: 2, data: { coeff: { 0x0FFDC7, 0xE0524C, 0x0FBFAA, 0xE0524C, 0x0FBD72 } } }, + { channel: 1, filter: 3, data: { coeff: { 0x0F3D35, 0xE228CA, 0x0EC7B2, 0xE228CA, 0x0E04E8 } } }, + { channel: 1, filter: 4, data: { coeff: { 0x0FCEBF, 0xE181C2, 0x0F2656, 0xE181C2, 0x0EF516 } } }, + { channel: 1, filter: 5, data: { coeff: { 0x0EC417, 0x073E22, 0x0B0633, 0x073E22, 0x09CA4A } } }, +}; + +static struct tas_eq_pref_t eqp_0f_1_0 = { + sample_rate: 44100, + device_id: 0x0f, + output_id: TAS_OUTPUT_INTERNAL_SPKR, + speaker_id: 0x00, + + drce: &eqp_0f_1_0_drce, + + filter_count: 12, + biquads: eqp_0f_1_0_biquads +}; + +/* ======================================================================== */ + +static uint tas3001c_master_tab[]={ + 0x0, 0x75, 0x9c, 0xbb, + 0xdb, 0xfb, 0x11e, 0x143, + 0x16b, 0x196, 0x1c3, 0x1f5, + 0x229, 0x263, 0x29f, 0x2e1, + 0x328, 0x373, 0x3c5, 0x41b, + 0x478, 0x4dc, 0x547, 0x5b8, + 0x633, 0x6b5, 0x740, 0x7d5, + 0x873, 0x91c, 0x9d2, 0xa92, + 0xb5e, 0xc39, 0xd22, 0xe19, + 0xf20, 0x1037, 0x1161, 0x129e, + 0x13ed, 0x1551, 0x16ca, 0x185d, + 0x1a08, 0x1bcc, 0x1dac, 0x1fa7, + 0x21c1, 0x23fa, 0x2655, 0x28d6, + 0x2b7c, 0x2e4a, 0x3141, 0x3464, + 0x37b4, 0x3b35, 0x3ee9, 0x42d3, + 0x46f6, 0x4b53, 0x4ff0, 0x54ce, + 0x59f2, 0x5f5f, 0x6519, 0x6b24, + 0x7183, 0x783c, 0x7f53, 0x86cc, + 0x8ead, 0x96fa, 0x9fba, 0xa8f2, + 0xb2a7, 0xbce1, 0xc7a5, 0xd2fa, + 0xdee8, 0xeb75, 0xf8aa, 0x1068e, + 0x1152a, 0x12487, 0x134ad, 0x145a5, + 0x1577b, 0x16a37, 0x17df5, 0x192bd, + 0x1a890, 0x1bf7b, 0x1d78d, 0x1f0d1, + 0x20b55, 0x22727, 0x24456, 0x262f2, + 0x2830b +}; + +static uint tas3001c_mixer_tab[]={ + 0x0, 0x748, 0x9be, 0xbaf, + 0xda4, 0xfb1, 0x11de, 0x1431, + 0x16ad, 0x1959, 0x1c37, 0x1f4b, + 0x2298, 0x2628, 0x29fb, 0x2e12, + 0x327d, 0x3734, 0x3c47, 0x41b4, + 0x4787, 0x4dbe, 0x546d, 0x5b86, + 0x632e, 0x6b52, 0x7400, 0x7d54, + 0x873b, 0x91c6, 0x9d1a, 0xa920, + 0xb5e5, 0xc38c, 0xd21b, 0xe18f, + 0xf1f5, 0x1036a, 0x1160f, 0x129d6, + 0x13ed0, 0x1550c, 0x16ca0, 0x185c9, + 0x1a07b, 0x1bcc3, 0x1dab9, 0x1fa75, + 0x21c0f, 0x23fa3, 0x26552, 0x28d64, + 0x2b7c9, 0x2e4a2, 0x31411, 0x3463b, + 0x37b44, 0x3b353, 0x3ee94, 0x42d30, + 0x46f55, 0x4b533, 0x4fefc, 0x54ce5, + 0x59f25, 0x5f5f6, 0x65193, 0x6b23c, + 0x71835, 0x783c3, 0x7f52c, 0x86cc0, + 0x8eacc, 0x96fa5, 0x9fba0, 0xa8f1a, + 0xb2a71, 0xbce0a, 0xc7a4a, 0xd2fa0, + 0xdee7b, 0xeb752, 0xf8a9f, 0x1068e4, + 0x1152a3, 0x12486a, 0x134ac8, 0x145a55, + 0x1577ac, 0x16a370, 0x17df51, 0x192bc2, + 0x1a88f8, 0x1bf7b7, 0x1d78c9, 0x1f0d04, + 0x20b542, 0x227268, 0x244564, 0x262f26, + 0x2830af +}; + +static uint tas3001c_treble_tab[]={ + 0x96, 0x95, 0x95, 0x94, + 0x93, 0x92, 0x92, 0x91, + 0x90, 0x90, 0x8f, 0x8e, + 0x8d, 0x8d, 0x8c, 0x8b, + 0x8a, 0x8a, 0x89, 0x88, + 0x88, 0x87, 0x86, 0x85, + 0x85, 0x84, 0x83, 0x83, + 0x82, 0x81, 0x80, 0x80, + 0x7f, 0x7e, 0x7e, 0x7d, + 0x7c, 0x7b, 0x7b, 0x7a, + 0x79, 0x78, 0x78, 0x77, + 0x76, 0x76, 0x75, 0x74, + 0x73, 0x73, 0x72, 0x71, + 0x71, 0x70, 0x6e, 0x6d, + 0x6d, 0x6c, 0x6b, 0x6a, + 0x69, 0x68, 0x67, 0x66, + 0x65, 0x63, 0x62, 0x62, + 0x60, 0x5f, 0x5d, 0x5c, + 0x5a, 0x58, 0x56, 0x55, + 0x53, 0x51, 0x4f, 0x4c, + 0x4a, 0x48, 0x45, 0x43, + 0x40, 0x3d, 0x3a, 0x37, + 0x35, 0x32, 0x2e, 0x2a, + 0x27, 0x22, 0x1e, 0x1a, + 0x15, 0x11, 0xc, 0x7, + 0x1 +}; + +static uint tas3001c_bass_tab[]={ + 0x86, 0x83, 0x81, 0x7f, + 0x7d, 0x7b, 0x79, 0x78, + 0x76, 0x75, 0x74, 0x72, + 0x71, 0x6f, 0x6e, 0x6d, + 0x6c, 0x6b, 0x69, 0x67, + 0x65, 0x64, 0x61, 0x60, + 0x5e, 0x5d, 0x5c, 0x5b, + 0x5a, 0x59, 0x58, 0x57, + 0x56, 0x55, 0x55, 0x54, + 0x53, 0x52, 0x50, 0x4f, + 0x4d, 0x4c, 0x4b, 0x49, + 0x47, 0x45, 0x44, 0x42, + 0x41, 0x3f, 0x3e, 0x3d, + 0x3c, 0x3b, 0x39, 0x38, + 0x37, 0x36, 0x35, 0x34, + 0x33, 0x31, 0x30, 0x2f, + 0x2e, 0x2c, 0x2b, 0x2b, + 0x29, 0x28, 0x27, 0x26, + 0x25, 0x24, 0x22, 0x21, + 0x20, 0x1e, 0x1c, 0x19, + 0x18, 0x18, 0x17, 0x16, + 0x15, 0x14, 0x13, 0x12, + 0x11, 0x10, 0xf, 0xe, + 0xd, 0xb, 0xa, 0x9, + 0x8, 0x6, 0x4, 0x2, + 0x1 +}; + +struct tas_gain_t tas3001c_gain = { + master: tas3001c_master_tab, + treble: tas3001c_treble_tab, + bass: tas3001c_bass_tab, + mixer: tas3001c_mixer_tab +}; + +struct tas_eq_pref_t *tas3001c_eq_prefs[]={ + &eqp_0e_2_1, + &eqp_10_1_0, + &eqp_15_2_1, + &eqp_15_1_0, + &eqp_0f_2_1, + &eqp_0f_1_0, + NULL +}; diff -Nru a/sound/oss/dmasound/tas3004.c b/sound/oss/dmasound/tas3004.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/sound/oss/dmasound/tas3004.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,1124 @@ +/* + * Driver for the i2c/i2s based TA3004 sound chip used + * on some Apple hardware. Also known as "snapper". + * + * Tobias Sargeant + * Based upon tas3001c.c by Christopher C. Chimelis : + * + * TODO: + * ----- + * * Enable control over input line 2 (is this connected?) + * * Implement sleep support (at least mute everything and + * * set gains to minimum during sleep) + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "dmasound.h" +#include "tas_common.h" +#include "tas3004.h" + +#include "tas_ioctl.h" + +/* #define DEBUG_DRCE */ + +#define TAS3004_BIQUAD_FILTER_COUNT 7 +#define TAS3004_BIQUAD_CHANNEL_COUNT 2 + +#define VOL_DEFAULT (100 * 4 / 5) +#define INPUT_DEFAULT (100 * 4 / 5) +#define BASS_DEFAULT (100 / 2) +#define TREBLE_DEFAULT (100 / 2) + +struct tas3004_data_t { + struct tas_data_t super; + int device_id; + int output_id; + int speaker_id; + struct tas_drce_t drce_state; +}; + +#define MAKE_TIME(sec,usec) (((sec)<<12) + (50000+(usec/10)*(1<<12))/100000) + +#define MAKE_RATIO(i,f) (((i)<<8) + ((500+(f)*(1<<8))/1000)) + + +static const union tas_biquad_t tas3004_eq_unity = { + .buf = { 0x100000, 0x000000, 0x000000, 0x000000, 0x000000 }, +}; + + +static const struct tas_drce_t tas3004_drce_min = { + .enable = 1, + .above = { .val = MAKE_RATIO(16,0), .expand = 0 }, + .below = { .val = MAKE_RATIO(2,0), .expand = 0 }, + .threshold = -0x59a0, + .energy = MAKE_TIME(0, 1700), + .attack = MAKE_TIME(0, 1700), + .decay = MAKE_TIME(0, 1700), +}; + + +static const struct tas_drce_t tas3004_drce_max = { + .enable = 1, + .above = { .val = MAKE_RATIO(1,500), .expand = 1 }, + .below = { .val = MAKE_RATIO(2,0), .expand = 1 }, + .threshold = -0x0, + .energy = MAKE_TIME(2,400000), + .attack = MAKE_TIME(2,400000), + .decay = MAKE_TIME(2,400000), +}; + + +static const unsigned short time_constants[]={ + MAKE_TIME(0, 1700), + MAKE_TIME(0, 3500), + MAKE_TIME(0, 6700), + MAKE_TIME(0, 13000), + MAKE_TIME(0, 26000), + MAKE_TIME(0, 53000), + MAKE_TIME(0,106000), + MAKE_TIME(0,212000), + MAKE_TIME(0,425000), + MAKE_TIME(0,850000), + MAKE_TIME(1,700000), + MAKE_TIME(2,400000), +}; + +static const unsigned short above_threshold_compression_ratio[]={ + MAKE_RATIO( 1, 70), + MAKE_RATIO( 1,140), + MAKE_RATIO( 1,230), + MAKE_RATIO( 1,330), + MAKE_RATIO( 1,450), + MAKE_RATIO( 1,600), + MAKE_RATIO( 1,780), + MAKE_RATIO( 2, 0), + MAKE_RATIO( 2,290), + MAKE_RATIO( 2,670), + MAKE_RATIO( 3,200), + MAKE_RATIO( 4, 0), + MAKE_RATIO( 5,330), + MAKE_RATIO( 8, 0), + MAKE_RATIO(16, 0), +}; + +static const unsigned short above_threshold_expansion_ratio[]={ + MAKE_RATIO(1, 60), + MAKE_RATIO(1,130), + MAKE_RATIO(1,190), + MAKE_RATIO(1,250), + MAKE_RATIO(1,310), + MAKE_RATIO(1,380), + MAKE_RATIO(1,440), + MAKE_RATIO(1,500) +}; + +static const unsigned short below_threshold_compression_ratio[]={ + MAKE_RATIO(1, 70), + MAKE_RATIO(1,140), + MAKE_RATIO(1,230), + MAKE_RATIO(1,330), + MAKE_RATIO(1,450), + MAKE_RATIO(1,600), + MAKE_RATIO(1,780), + MAKE_RATIO(2, 0) +}; + +static const unsigned short below_threshold_expansion_ratio[]={ + MAKE_RATIO(1, 60), + MAKE_RATIO(1,130), + MAKE_RATIO(1,190), + MAKE_RATIO(1,250), + MAKE_RATIO(1,310), + MAKE_RATIO(1,380), + MAKE_RATIO(1,440), + MAKE_RATIO(1,500), + MAKE_RATIO(1,560), + MAKE_RATIO(1,630), + MAKE_RATIO(1,690), + MAKE_RATIO(1,750), + MAKE_RATIO(1,810), + MAKE_RATIO(1,880), + MAKE_RATIO(1,940), + MAKE_RATIO(2, 0) +}; + +static inline int +search( unsigned short val, + const unsigned short *arr, + const int arrsize) { + /* + * This could be a binary search, but for small tables, + * a linear search is likely to be faster + */ + + int i; + + for (i=0; i < arrsize; i++) + if (arr[i] >= val) + goto _1; + return arrsize-1; + _1: + if (i == 0) + return 0; + return (arr[i]-val < val-arr[i-1]) ? i : i-1; +} + +#define SEARCH(a, b) search(a, b, ARRAY_SIZE(b)) + +static inline int +time_index(unsigned short time) +{ + return SEARCH(time, time_constants); +} + + +static inline int +above_threshold_compression_index(unsigned short ratio) +{ + return SEARCH(ratio, above_threshold_compression_ratio); +} + + +static inline int +above_threshold_expansion_index(unsigned short ratio) +{ + return SEARCH(ratio, above_threshold_expansion_ratio); +} + + +static inline int +below_threshold_compression_index(unsigned short ratio) +{ + return SEARCH(ratio, below_threshold_compression_ratio); +} + + +static inline int +below_threshold_expansion_index(unsigned short ratio) +{ + return SEARCH(ratio, below_threshold_expansion_ratio); +} + +static inline unsigned char db_to_regval(short db) { + int r=0; + + r=(db+0x59a0) / 0x60; + + if (r < 0x91) return 0x91; + if (r > 0xef) return 0xef; + return r; +} + +static inline short quantize_db(short db) +{ + return db_to_regval(db) * 0x60 - 0x59a0; +} + +static inline int +register_width(enum tas3004_reg_t r) +{ + switch(r) { + case TAS3004_REG_MCR: + case TAS3004_REG_TREBLE: + case TAS3004_REG_BASS: + case TAS3004_REG_ANALOG_CTRL: + case TAS3004_REG_TEST1: + case TAS3004_REG_TEST2: + case TAS3004_REG_MCR2: + return 1; + + case TAS3004_REG_LEFT_LOUD_BIQUAD_GAIN: + case TAS3004_REG_RIGHT_LOUD_BIQUAD_GAIN: + return 3; + + case TAS3004_REG_DRC: + case TAS3004_REG_VOLUME: + return 6; + + case TAS3004_REG_LEFT_MIXER: + case TAS3004_REG_RIGHT_MIXER: + return 9; + + case TAS3004_REG_TEST: + return 10; + + case TAS3004_REG_LEFT_BIQUAD0: + case TAS3004_REG_LEFT_BIQUAD1: + case TAS3004_REG_LEFT_BIQUAD2: + case TAS3004_REG_LEFT_BIQUAD3: + case TAS3004_REG_LEFT_BIQUAD4: + case TAS3004_REG_LEFT_BIQUAD5: + case TAS3004_REG_LEFT_BIQUAD6: + + case TAS3004_REG_RIGHT_BIQUAD0: + case TAS3004_REG_RIGHT_BIQUAD1: + case TAS3004_REG_RIGHT_BIQUAD2: + case TAS3004_REG_RIGHT_BIQUAD3: + case TAS3004_REG_RIGHT_BIQUAD4: + case TAS3004_REG_RIGHT_BIQUAD5: + case TAS3004_REG_RIGHT_BIQUAD6: + + case TAS3004_REG_LEFT_LOUD_BIQUAD: + case TAS3004_REG_RIGHT_LOUD_BIQUAD: + return 15; + + default: + return 0; + } +} + +static int +tas3004_write_register( struct tas3004_data_t *self, + enum tas3004_reg_t reg_num, + char *data, + uint write_mode) +{ + if (reg_num==TAS3004_REG_MCR || + reg_num==TAS3004_REG_BASS || + reg_num==TAS3004_REG_TREBLE) { + return tas_write_byte_register(&self->super, + (uint)reg_num, + *data, + write_mode); + } else { + return tas_write_register(&self->super, + (uint)reg_num, + register_width(reg_num), + data, + write_mode); + } +} + +static int +tas3004_sync_register( struct tas3004_data_t *self, + enum tas3004_reg_t reg_num) +{ + if (reg_num==TAS3004_REG_MCR || + reg_num==TAS3004_REG_BASS || + reg_num==TAS3004_REG_TREBLE) { + return tas_sync_byte_register(&self->super, + (uint)reg_num, + register_width(reg_num)); + } else { + return tas_sync_register(&self->super, + (uint)reg_num, + register_width(reg_num)); + } +} + +static int +tas3004_read_register( struct tas3004_data_t *self, + enum tas3004_reg_t reg_num, + char *data, + uint write_mode) +{ + return tas_read_register(&self->super, + (uint)reg_num, + register_width(reg_num), + data); +} + +static inline int +tas3004_fast_load(struct tas3004_data_t *self, int fast) +{ + if (fast) + self->super.shadow[TAS3004_REG_MCR][0] |= 0x80; + else + self->super.shadow[TAS3004_REG_MCR][0] &= 0x7f; + return tas3004_sync_register(self,TAS3004_REG_MCR); +} + +static uint +tas3004_supported_mixers(struct tas3004_data_t *self) +{ + return SOUND_MASK_VOLUME | + SOUND_MASK_PCM | + SOUND_MASK_ALTPCM | + SOUND_MASK_IMIX | + SOUND_MASK_TREBLE | + SOUND_MASK_BASS; +} + +static int +tas3004_mixer_is_stereo(struct tas3004_data_t *self, int mixer) +{ + switch(mixer) { + case SOUND_MIXER_VOLUME: + case SOUND_MIXER_PCM: + case SOUND_MIXER_ALTPCM: + case SOUND_MIXER_IMIX: + return 1; + default: + return 0; + } +} + +static uint +tas3004_stereo_mixers(struct tas3004_data_t *self) +{ + uint r = tas3004_supported_mixers(self); + uint i; + + for (i=1; isuper.mixer[mixer]; + + return 0; +} + +static int +tas3004_set_mixer_level(struct tas3004_data_t *self, int mixer, uint level) +{ + int rc; + tas_shadow_t *shadow; + uint temp; + uint offset=0; + + if (!self) + return -1; + + shadow = self->super.shadow; + + if (!tas3004_mixer_is_stereo(self,mixer)) + level = tas_mono_to_stereo(level); + switch(mixer) { + case SOUND_MIXER_VOLUME: + temp = tas3004_gain.master[level&0xff]; + SET_4_20(shadow[TAS3004_REG_VOLUME], 0, temp); + temp = tas3004_gain.master[(level>>8)&0xff]; + SET_4_20(shadow[TAS3004_REG_VOLUME], 3, temp); + rc = tas3004_sync_register(self,TAS3004_REG_VOLUME); + break; + case SOUND_MIXER_IMIX: + offset += 3; + case SOUND_MIXER_ALTPCM: + offset += 3; + case SOUND_MIXER_PCM: + /* + * Don't load these in fast mode. The documentation + * says it can be done in either mode, but testing it + * shows that fast mode produces ugly clicking. + */ + /* tas3004_fast_load(self,1); */ + temp = tas3004_gain.mixer[level&0xff]; + SET_4_20(shadow[TAS3004_REG_LEFT_MIXER], offset, temp); + temp = tas3004_gain.mixer[(level>>8)&0xff]; + SET_4_20(shadow[TAS3004_REG_RIGHT_MIXER], offset, temp); + rc = tas3004_sync_register(self,TAS3004_REG_LEFT_MIXER); + if (rc == 0) + rc=tas3004_sync_register(self,TAS3004_REG_RIGHT_MIXER); + /* tas3004_fast_load(self,0); */ + break; + case SOUND_MIXER_TREBLE: + temp = tas3004_gain.treble[level&0xff]; + shadow[TAS3004_REG_TREBLE][0]=temp&0xff; + rc = tas3004_sync_register(self,TAS3004_REG_TREBLE); + break; + case SOUND_MIXER_BASS: + temp = tas3004_gain.bass[level&0xff]; + shadow[TAS3004_REG_BASS][0]=temp&0xff; + rc = tas3004_sync_register(self,TAS3004_REG_BASS); + break; + default: + rc = -1; + break; + } + if (rc < 0) + return rc; + self->super.mixer[mixer] = level; + + return 0; +} + +static int +tas3004_leave_sleep(struct tas3004_data_t *self) +{ + unsigned char mcr = (1<<6)+(2<<4)+(2<<2); + + if (!self) + return -1; + + /* Make sure something answers on the i2c bus */ + if (tas3004_write_register(self, TAS3004_REG_MCR, &mcr, + WRITE_NORMAL | FORCE_WRITE) < 0) + return -1; + + tas3004_fast_load(self, 1); + + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD0); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD1); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD2); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD3); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD4); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD5); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD6); + + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD0); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD1); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD2); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD3); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD4); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD5); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD6); + + tas3004_fast_load(self, 0); + + (void)tas3004_sync_register(self,TAS3004_REG_VOLUME); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_MIXER); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_MIXER); + (void)tas3004_sync_register(self,TAS3004_REG_TREBLE); + (void)tas3004_sync_register(self,TAS3004_REG_BASS); + + return 0; +} + +static int +tas3004_enter_sleep(struct tas3004_data_t *self) +{ + if (!self) + return -1; + return 0; +} + +static int +tas3004_sync_biquad( struct tas3004_data_t *self, + u_int channel, + u_int filter) +{ + enum tas3004_reg_t reg; + + if (channel >= TAS3004_BIQUAD_CHANNEL_COUNT || + filter >= TAS3004_BIQUAD_FILTER_COUNT) return -EINVAL; + + reg=( channel ? TAS3004_REG_RIGHT_BIQUAD0 : TAS3004_REG_LEFT_BIQUAD0 ) + filter; + + return tas3004_sync_register(self,reg); +} + +static int +tas3004_write_biquad_shadow( struct tas3004_data_t *self, + u_int channel, + u_int filter, + const union tas_biquad_t *biquad) +{ + tas_shadow_t *shadow=self->super.shadow; + enum tas3004_reg_t reg; + + if (channel >= TAS3004_BIQUAD_CHANNEL_COUNT || + filter >= TAS3004_BIQUAD_FILTER_COUNT) return -EINVAL; + + reg=( channel ? TAS3004_REG_RIGHT_BIQUAD0 : TAS3004_REG_LEFT_BIQUAD0 ) + filter; + + SET_4_20(shadow[reg], 0,biquad->coeff.b0); + SET_4_20(shadow[reg], 3,biquad->coeff.b1); + SET_4_20(shadow[reg], 6,biquad->coeff.b2); + SET_4_20(shadow[reg], 9,biquad->coeff.a1); + SET_4_20(shadow[reg],12,biquad->coeff.a2); + + return 0; +} + +static int +tas3004_write_biquad( struct tas3004_data_t *self, + u_int channel, + u_int filter, + const union tas_biquad_t *biquad) +{ + int rc; + + rc=tas3004_write_biquad_shadow(self, channel, filter, biquad); + if (rc < 0) return rc; + + return tas3004_sync_biquad(self, channel, filter); +} + +static int +tas3004_write_biquad_list( struct tas3004_data_t *self, + u_int filter_count, + u_int flags, + struct tas_biquad_ctrl_t *biquads) +{ + int i; + int rc; + + if (flags & TAS_BIQUAD_FAST_LOAD) tas3004_fast_load(self,1); + + for (i=0; isuper.shadow; + enum tas3004_reg_t reg; + + if (channel >= TAS3004_BIQUAD_CHANNEL_COUNT || + filter >= TAS3004_BIQUAD_FILTER_COUNT) return -EINVAL; + + reg=( channel ? TAS3004_REG_RIGHT_BIQUAD0 : TAS3004_REG_LEFT_BIQUAD0 ) + filter; + + biquad->coeff.b0=GET_4_20(shadow[reg], 0); + biquad->coeff.b1=GET_4_20(shadow[reg], 3); + biquad->coeff.b2=GET_4_20(shadow[reg], 6); + biquad->coeff.a1=GET_4_20(shadow[reg], 9); + biquad->coeff.a2=GET_4_20(shadow[reg],12); + + return 0; +} + +static int +tas3004_eq_rw( struct tas3004_data_t *self, + u_int cmd, + u_long arg) +{ + int rc; + struct tas_biquad_ctrl_t biquad; + + if (copy_from_user((void *)&biquad, (const void *)arg, sizeof(struct tas_biquad_ctrl_t))) { + return -EFAULT; + } + + if (cmd & SIOC_IN) { + rc=tas3004_write_biquad(self, biquad.channel, biquad.filter, &biquad.data); + if (rc != 0) return rc; + } + + if (cmd & SIOC_OUT) { + rc=tas3004_read_biquad(self, biquad.channel, biquad.filter, &biquad.data); + if (rc != 0) return rc; + + if (copy_to_user((void *)arg, (const void *)&biquad, sizeof(struct tas_biquad_ctrl_t))) { + return -EFAULT; + } + + } + return 0; +} + +static int +tas3004_eq_list_rw( struct tas3004_data_t *self, + u_int cmd, + u_long arg) +{ + int rc = 0; + int filter_count; + int flags; + int i,j; + char sync_required[TAS3004_BIQUAD_CHANNEL_COUNT][TAS3004_BIQUAD_FILTER_COUNT]; + struct tas_biquad_ctrl_t biquad; + + memset(sync_required,0,sizeof(sync_required)); + + if (copy_from_user((void *)&filter_count, + (const void *)arg + offsetof(struct tas_biquad_ctrl_list_t,filter_count), + sizeof(int))) { + return -EFAULT; + } + + if (copy_from_user((void *)&flags, + (const void *)arg + offsetof(struct tas_biquad_ctrl_list_t,flags), + sizeof(int))) { + return -EFAULT; + } + + if (cmd & SIOC_IN) { + } + + for (i=0; i < filter_count; i++) { + if (copy_from_user((void *)&biquad, + (const void *)arg + offsetof(struct tas_biquad_ctrl_list_t, biquads[i]), + sizeof(struct tas_biquad_ctrl_t))) { + return -EFAULT; + } + + if (cmd & SIOC_IN) { + sync_required[biquad.channel][biquad.filter]=1; + rc=tas3004_write_biquad_shadow(self, biquad.channel, biquad.filter, &biquad.data); + if (rc != 0) return rc; + } + + if (cmd & SIOC_OUT) { + rc=tas3004_read_biquad(self, biquad.channel, biquad.filter, &biquad.data); + if (rc != 0) return rc; + + if (copy_to_user((void *)arg + offsetof(struct tas_biquad_ctrl_list_t, biquads[i]), + (const void *)&biquad, + sizeof(struct tas_biquad_ctrl_t))) { + return -EFAULT; + } + } + } + + if (cmd & SIOC_IN) { + /* + * This is OK for the tas3004. For the + * tas3001c, going into fast load mode causes + * the treble and bass to be reset to 0dB, and + * volume controls to be muted. + */ + if (flags & TAS_BIQUAD_FAST_LOAD) tas3004_fast_load(self,1); + for (i=0; isuper.shadow; + + if (flags & TAS_DRCE_ABOVE_RATIO) { + self->drce_state.above.expand = drce->above.expand; + if (drce->above.val == (1<<8)) { + self->drce_state.above.val = 1<<8; + shadow[TAS3004_REG_DRC][0] = 0x02; + + } else if (drce->above.expand) { + i=above_threshold_expansion_index(drce->above.val); + self->drce_state.above.val=above_threshold_expansion_ratio[i]; + shadow[TAS3004_REG_DRC][0] = 0x0a + (i<<3); + } else { + i=above_threshold_compression_index(drce->above.val); + self->drce_state.above.val=above_threshold_compression_ratio[i]; + shadow[TAS3004_REG_DRC][0] = 0x08 + (i<<3); + } + } + + if (flags & TAS_DRCE_BELOW_RATIO) { + self->drce_state.below.expand = drce->below.expand; + if (drce->below.val == (1<<8)) { + self->drce_state.below.val = 1<<8; + shadow[TAS3004_REG_DRC][1] = 0x02; + + } else if (drce->below.expand) { + i=below_threshold_expansion_index(drce->below.val); + self->drce_state.below.val=below_threshold_expansion_ratio[i]; + shadow[TAS3004_REG_DRC][1] = 0x08 + (i<<3); + } else { + i=below_threshold_compression_index(drce->below.val); + self->drce_state.below.val=below_threshold_compression_ratio[i]; + shadow[TAS3004_REG_DRC][1] = 0x0a + (i<<3); + } + } + + if (flags & TAS_DRCE_THRESHOLD) { + self->drce_state.threshold=quantize_db(drce->threshold); + shadow[TAS3004_REG_DRC][2] = db_to_regval(self->drce_state.threshold); + } + + if (flags & TAS_DRCE_ENERGY) { + i=time_index(drce->energy); + self->drce_state.energy=time_constants[i]; + shadow[TAS3004_REG_DRC][3] = 0x40 + (i<<4); + } + + if (flags & TAS_DRCE_ATTACK) { + i=time_index(drce->attack); + self->drce_state.attack=time_constants[i]; + shadow[TAS3004_REG_DRC][4] = 0x40 + (i<<4); + } + + if (flags & TAS_DRCE_DECAY) { + i=time_index(drce->decay); + self->drce_state.decay=time_constants[i]; + shadow[TAS3004_REG_DRC][5] = 0x40 + (i<<4); + } + + if (flags & TAS_DRCE_ENABLE) { + self->drce_state.enable = drce->enable; + } + + if (!self->drce_state.enable) { + shadow[TAS3004_REG_DRC][0] |= 0x01; + } + +#ifdef DEBUG_DRCE + printk("DRCE: set [ ENABLE:%x ABOVE:%x/%x BELOW:%x/%x THRESH:%x ENERGY:%x ATTACK:%x DECAY:%x\n", + self->drce_state.enable, + self->drce_state.above.expand,self->drce_state.above.val, + self->drce_state.below.expand,self->drce_state.below.val, + self->drce_state.threshold, + self->drce_state.energy, + self->drce_state.attack, + self->drce_state.decay); + + printk("DRCE: reg [ %02x %02x %02x %02x %02x %02x ]\n", + (unsigned char)shadow[TAS3004_REG_DRC][0], + (unsigned char)shadow[TAS3004_REG_DRC][1], + (unsigned char)shadow[TAS3004_REG_DRC][2], + (unsigned char)shadow[TAS3004_REG_DRC][3], + (unsigned char)shadow[TAS3004_REG_DRC][4], + (unsigned char)shadow[TAS3004_REG_DRC][5]); +#endif + + return tas3004_sync_register(self, TAS3004_REG_DRC); +} + +static int +tas3004_drce_rw( struct tas3004_data_t *self, + u_int cmd, + u_long arg) +{ + int rc; + struct tas_drce_ctrl_t drce_ctrl; + + if (copy_from_user((void *)&drce_ctrl, + (const void *)arg, + sizeof(struct tas_drce_ctrl_t))) { + return -EFAULT; + } + +#ifdef DEBUG_DRCE + printk("DRCE: input [ FLAGS:%x ENABLE:%x ABOVE:%x/%x BELOW:%x/%x THRESH:%x ENERGY:%x ATTACK:%x DECAY:%x\n", + drce_ctrl.flags, + drce_ctrl.data.enable, + drce_ctrl.data.above.expand,drce_ctrl.data.above.val, + drce_ctrl.data.below.expand,drce_ctrl.data.below.val, + drce_ctrl.data.threshold, + drce_ctrl.data.energy, + drce_ctrl.data.attack, + drce_ctrl.data.decay); +#endif + + if (cmd & SIOC_IN) { + rc = tas3004_update_drce(self, drce_ctrl.flags, &drce_ctrl.data); + if (rc < 0) return rc; + } + + if (cmd & SIOC_OUT) { + if (drce_ctrl.flags & TAS_DRCE_ENABLE) + drce_ctrl.data.enable = self->drce_state.enable; + if (drce_ctrl.flags & TAS_DRCE_ABOVE_RATIO) + drce_ctrl.data.above = self->drce_state.above; + if (drce_ctrl.flags & TAS_DRCE_BELOW_RATIO) + drce_ctrl.data.below = self->drce_state.below; + if (drce_ctrl.flags & TAS_DRCE_THRESHOLD) + drce_ctrl.data.threshold = self->drce_state.threshold; + if (drce_ctrl.flags & TAS_DRCE_ENERGY) + drce_ctrl.data.energy = self->drce_state.energy; + if (drce_ctrl.flags & TAS_DRCE_ATTACK) + drce_ctrl.data.attack = self->drce_state.attack; + if (drce_ctrl.flags & TAS_DRCE_DECAY) + drce_ctrl.data.decay = self->drce_state.decay; + + if (copy_to_user((void *)arg, + (const void *)&drce_ctrl, + sizeof(struct tas_drce_ctrl_t))) { + return -EFAULT; + } + } + + return 0; +} + +static void +tas3004_update_device_parameters(struct tas3004_data_t *self) +{ + char data; + int i; + + if (!self) return; + + if (self->output_id == TAS_OUTPUT_HEADPHONES) { + /* turn on allPass when headphones are plugged in */ + data = 0x02; + } else { + data = 0x00; + } + + tas3004_write_register(self, TAS3004_REG_MCR2, &data, WRITE_NORMAL | FORCE_WRITE); + + for (i=0; tas3004_eq_prefs[i]; i++) { + struct tas_eq_pref_t *eq = tas3004_eq_prefs[i]; + + if (eq->device_id == self->device_id && + (eq->output_id == 0 || eq->output_id == self->output_id) && + (eq->speaker_id == 0 || eq->speaker_id == self->speaker_id)) { + + tas3004_update_drce(self, TAS_DRCE_ALL, eq->drce); + tas3004_write_biquad_list(self, eq->filter_count, TAS_BIQUAD_FAST_LOAD, eq->biquads); + + break; + } + } +} + +static void +tas3004_device_change_handler(void *self) +{ + if (!self) return; + + tas3004_update_device_parameters((struct tas3004_data_t *)self); +} + +static struct work_struct device_change; + +static int +tas3004_output_device_change( struct tas3004_data_t *self, + int device_id, + int output_id, + int speaker_id) +{ + self->device_id=device_id; + self->output_id=output_id; + self->speaker_id=speaker_id; + + schedule_work(&device_change); + + return 0; +} + +static int +tas3004_device_ioctl( struct tas3004_data_t *self, + u_int cmd, + u_long arg) +{ + switch (cmd) { + case TAS_READ_EQ: + case TAS_WRITE_EQ: + return tas3004_eq_rw(self, cmd, arg); + + case TAS_READ_EQ_LIST: + case TAS_WRITE_EQ_LIST: + return tas3004_eq_list_rw(self, cmd, arg); + + case TAS_READ_EQ_FILTER_COUNT: + put_user(TAS3004_BIQUAD_FILTER_COUNT, (uint *)(arg)); + return 0; + + case TAS_READ_EQ_CHANNEL_COUNT: + put_user(TAS3004_BIQUAD_CHANNEL_COUNT, (uint *)(arg)); + return 0; + + case TAS_READ_DRCE: + case TAS_WRITE_DRCE: + return tas3004_drce_rw(self, cmd, arg); + + case TAS_READ_DRCE_CAPS: + put_user(TAS_DRCE_ENABLE | + TAS_DRCE_ABOVE_RATIO | + TAS_DRCE_BELOW_RATIO | + TAS_DRCE_THRESHOLD | + TAS_DRCE_ENERGY | + TAS_DRCE_ATTACK | + TAS_DRCE_DECAY, + (uint *)(arg)); + return 0; + + case TAS_READ_DRCE_MIN: + case TAS_READ_DRCE_MAX: { + struct tas_drce_ctrl_t drce_ctrl; + const struct tas_drce_t *drce_copy; + + if (copy_from_user((void *)&drce_ctrl, + (const void *)arg, + sizeof(struct tas_drce_ctrl_t))) { + return -EFAULT; + } + + if (cmd == TAS_READ_DRCE_MIN) { + drce_copy=&tas3004_drce_min; + } else { + drce_copy=&tas3004_drce_max; + } + + if (drce_ctrl.flags & TAS_DRCE_ABOVE_RATIO) { + drce_ctrl.data.above=drce_copy->above; + } + if (drce_ctrl.flags & TAS_DRCE_BELOW_RATIO) { + drce_ctrl.data.below=drce_copy->below; + } + if (drce_ctrl.flags & TAS_DRCE_THRESHOLD) { + drce_ctrl.data.threshold=drce_copy->threshold; + } + if (drce_ctrl.flags & TAS_DRCE_ENERGY) { + drce_ctrl.data.energy=drce_copy->energy; + } + if (drce_ctrl.flags & TAS_DRCE_ATTACK) { + drce_ctrl.data.attack=drce_copy->attack; + } + if (drce_ctrl.flags & TAS_DRCE_DECAY) { + drce_ctrl.data.decay=drce_copy->decay; + } + + if (copy_to_user((void *)arg, + (const void *)&drce_ctrl, + sizeof(struct tas_drce_ctrl_t))) { + return -EFAULT; + } + } + } + + return -EINVAL; +} + +static int +tas3004_init_mixer(struct tas3004_data_t *self) +{ + unsigned char mcr = (1<<6)+(2<<4)+(2<<2); + + /* Make sure something answers on the i2c bus */ + if (tas3004_write_register(self, TAS3004_REG_MCR, &mcr, + WRITE_NORMAL | FORCE_WRITE) < 0) + return -1; + + tas3004_fast_load(self, 1); + + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD0); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD1); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD2); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD3); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD4); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD5); + (void)tas3004_sync_register(self,TAS3004_REG_RIGHT_BIQUAD6); + + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD0); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD1); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD2); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD3); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD4); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD5); + (void)tas3004_sync_register(self,TAS3004_REG_LEFT_BIQUAD6); + + tas3004_sync_register(self, TAS3004_REG_DRC); + + tas3004_sync_register(self, TAS3004_REG_MCR2); + + tas3004_fast_load(self, 0); + + tas3004_set_mixer_level(self, SOUND_MIXER_VOLUME, VOL_DEFAULT<<8 | VOL_DEFAULT); + tas3004_set_mixer_level(self, SOUND_MIXER_PCM, INPUT_DEFAULT<<8 | INPUT_DEFAULT); + tas3004_set_mixer_level(self, SOUND_MIXER_ALTPCM, 0); + tas3004_set_mixer_level(self, SOUND_MIXER_IMIX, 0); + + tas3004_set_mixer_level(self, SOUND_MIXER_BASS, BASS_DEFAULT); + tas3004_set_mixer_level(self, SOUND_MIXER_TREBLE, TREBLE_DEFAULT); + + return 0; +} + +static int +tas3004_uninit_mixer(struct tas3004_data_t *self) +{ + tas3004_set_mixer_level(self, SOUND_MIXER_VOLUME, 0); + tas3004_set_mixer_level(self, SOUND_MIXER_PCM, 0); + tas3004_set_mixer_level(self, SOUND_MIXER_ALTPCM, 0); + tas3004_set_mixer_level(self, SOUND_MIXER_IMIX, 0); + + tas3004_set_mixer_level(self, SOUND_MIXER_BASS, 0); + tas3004_set_mixer_level(self, SOUND_MIXER_TREBLE, 0); + + return 0; +} + +static int +tas3004_init(struct i2c_client *client) +{ + struct tas3004_data_t *self; + size_t sz = sizeof(*self) + (TAS3004_REG_MAX*sizeof(tas_shadow_t)); + char drce_init[] = { 0x69, 0x22, 0x9f, 0xb0, 0x60, 0xa0 }; + char mcr2 = 0; + int i, j; + + self = kmalloc(sz, GFP_KERNEL); + if (!self) + return -ENOMEM; + memset(self, 0, sz); + + self->super.client = client; + self->super.shadow = (tas_shadow_t *)(self+1); + self->output_id = TAS_OUTPUT_HEADPHONES; + + dev_set_drvdata(&client->dev, self); + + for (i = 0; i < TAS3004_BIQUAD_CHANNEL_COUNT; i++) + for (j = 0; j + */ + +#ifndef _TAS3004_H_ +#define _TAS3004_H_ + +#include + +#include "tas_common.h" +#include "tas_eq_prefs.h" + +/* + * Macros that correspond to the registers that we write to + * when setting the various values. + */ + +#define TAS3004_VERSION "0.3" +#define TAS3004_DATE "20011214" + +#define I2C_DRIVERNAME_TAS3004 "TAS3004 driver V " TAS3004_VERSION +#define I2C_DRIVERID_TAS3004 (I2C_DRIVERID_TAS_BASE+1) + +extern struct tas_driver_hooks_t tas3004_hooks; +extern struct tas_gain_t tas3004_gain; +extern struct tas_eq_pref_t *tas3004_eq_prefs[]; + +enum tas3004_reg_t { + TAS3004_REG_MCR = 0x01, + TAS3004_REG_DRC = 0x02, + + TAS3004_REG_VOLUME = 0x04, + TAS3004_REG_TREBLE = 0x05, + TAS3004_REG_BASS = 0x06, + TAS3004_REG_LEFT_MIXER = 0x07, + TAS3004_REG_RIGHT_MIXER = 0x08, + + TAS3004_REG_LEFT_BIQUAD0 = 0x0a, + TAS3004_REG_LEFT_BIQUAD1 = 0x0b, + TAS3004_REG_LEFT_BIQUAD2 = 0x0c, + TAS3004_REG_LEFT_BIQUAD3 = 0x0d, + TAS3004_REG_LEFT_BIQUAD4 = 0x0e, + TAS3004_REG_LEFT_BIQUAD5 = 0x0f, + TAS3004_REG_LEFT_BIQUAD6 = 0x10, + + TAS3004_REG_RIGHT_BIQUAD0 = 0x13, + TAS3004_REG_RIGHT_BIQUAD1 = 0x14, + TAS3004_REG_RIGHT_BIQUAD2 = 0x15, + TAS3004_REG_RIGHT_BIQUAD3 = 0x16, + TAS3004_REG_RIGHT_BIQUAD4 = 0x17, + TAS3004_REG_RIGHT_BIQUAD5 = 0x18, + TAS3004_REG_RIGHT_BIQUAD6 = 0x19, + + TAS3004_REG_LEFT_LOUD_BIQUAD = 0x21, + TAS3004_REG_RIGHT_LOUD_BIQUAD = 0x22, + + TAS3004_REG_LEFT_LOUD_BIQUAD_GAIN = 0x23, + TAS3004_REG_RIGHT_LOUD_BIQUAD_GAIN = 0x24, + + TAS3004_REG_TEST = 0x29, + + TAS3004_REG_ANALOG_CTRL = 0x40, + TAS3004_REG_TEST1 = 0x41, + TAS3004_REG_TEST2 = 0x42, + TAS3004_REG_MCR2 = 0x43, + + TAS3004_REG_MAX = 0x44 +}; + +#endif /* _TAS3004_H_ */ diff -Nru a/sound/oss/dmasound/tas3004_tables.c b/sound/oss/dmasound/tas3004_tables.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/sound/oss/dmasound/tas3004_tables.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,301 @@ +#include "tas3004.h" +#include "tas_eq_prefs.h" + +static struct tas_drce_t eqp_17_1_0_drce={ + enable: 1, + above: { val: 3.0 * (1<<8), expand: 0 }, + below: { val: 1.0 * (1<<8), expand: 0 }, + threshold: -19.12 * (1<<8), + energy: 2.4 * (1<<12), + attack: 0.013 * (1<<12), + decay: 0.212 * (1<<12), +}; + +static struct tas_biquad_ctrl_t eqp_17_1_0_biquads[]={ + { channel: 0, filter: 0, data: { coeff: { 0x0fd0d4, 0xe05e56, 0x0fd0d4, 0xe05ee1, 0x0fa234 } } }, + { channel: 0, filter: 1, data: { coeff: { 0x0910d7, 0x088e1a, 0x030651, 0x01dcb1, 0x02c892 } } }, + { channel: 0, filter: 2, data: { coeff: { 0x0ff895, 0xe0970b, 0x0f7f00, 0xe0970b, 0x0f7795 } } }, + { channel: 0, filter: 3, data: { coeff: { 0x0fd1c4, 0xe1ac22, 0x0ec8cf, 0xe1ac22, 0x0e9a94 } } }, + { channel: 0, filter: 4, data: { coeff: { 0x0f7c1c, 0xe3cc03, 0x0df786, 0xe3cc03, 0x0d73a2 } } }, + { channel: 0, filter: 5, data: { coeff: { 0x11fb92, 0xf5a1a0, 0x073cd2, 0xf5a1a0, 0x093865 } } }, + { channel: 0, filter: 6, data: { coeff: { 0x0e17a9, 0x068b6c, 0x08a0e5, 0x068b6c, 0x06b88e } } }, + + { channel: 1, filter: 0, data: { coeff: { 0x0fd0d4, 0xe05e56, 0x0fd0d4, 0xe05ee1, 0x0fa234 } } }, + { channel: 1, filter: 1, data: { coeff: { 0x0910d7, 0x088e1a, 0x030651, 0x01dcb1, 0x02c892 } } }, + { channel: 1, filter: 2, data: { coeff: { 0x0ff895, 0xe0970b, 0x0f7f00, 0xe0970b, 0x0f7795 } } }, + { channel: 1, filter: 3, data: { coeff: { 0x0fd1c4, 0xe1ac22, 0x0ec8cf, 0xe1ac22, 0x0e9a94 } } }, + { channel: 1, filter: 4, data: { coeff: { 0x0f7c1c, 0xe3cc03, 0x0df786, 0xe3cc03, 0x0d73a2 } } }, + { channel: 1, filter: 5, data: { coeff: { 0x11fb92, 0xf5a1a0, 0x073cd2, 0xf5a1a0, 0x093865 } } }, + { channel: 1, filter: 6, data: { coeff: { 0x0e17a9, 0x068b6c, 0x08a0e5, 0x068b6c, 0x06b88e } } } +}; + +static struct tas_eq_pref_t eqp_17_1_0 = { + sample_rate: 44100, + device_id: 0x17, + output_id: TAS_OUTPUT_INTERNAL_SPKR, + speaker_id: 0x00, + + drce: &eqp_17_1_0_drce, + + filter_count: 14, + biquads: eqp_17_1_0_biquads +}; + +/* ======================================================================== */ + +static struct tas_drce_t eqp_18_1_0_drce={ + enable: 1, + above: { val: 3.0 * (1<<8), expand: 0 }, + below: { val: 1.0 * (1<<8), expand: 0 }, + threshold: -13.14 * (1<<8), + energy: 2.4 * (1<<12), + attack: 0.013 * (1<<12), + decay: 0.212 * (1<<12), +}; + +static struct tas_biquad_ctrl_t eqp_18_1_0_biquads[]={ + { channel: 0, filter: 0, data: { coeff: { 0x0f5514, 0xe155d7, 0x0f5514, 0xe15cfa, 0x0eb14b } } }, + { channel: 0, filter: 1, data: { coeff: { 0x06ec33, 0x02abe3, 0x015eef, 0xf764d9, 0x03922d } } }, + { channel: 0, filter: 2, data: { coeff: { 0x0ef5f2, 0xe67d1f, 0x0bcf37, 0xe67d1f, 0x0ac529 } } }, + { channel: 0, filter: 3, data: { coeff: { 0x0db050, 0xe5be4d, 0x0d0c78, 0xe5be4d, 0x0abcc8 } } }, + { channel: 0, filter: 4, data: { coeff: { 0x0f1298, 0xe64ec6, 0x0cc03e, 0xe64ec6, 0x0bd2d7 } } }, + { channel: 0, filter: 5, data: { coeff: { 0x0c641a, 0x06537a, 0x08d155, 0x06537a, 0x053570 } } }, + { channel: 0, filter: 6, data: { coeff: { 0x100000, 0x000000, 0x000000, 0x000000, 0x000000 } } }, + + { channel: 1, filter: 0, data: { coeff: { 0x0f5514, 0xe155d7, 0x0f5514, 0xe15cfa, 0x0eb14b } } }, + { channel: 1, filter: 1, data: { coeff: { 0x06ec33, 0x02abe3, 0x015eef, 0xf764d9, 0x03922d } } }, + { channel: 1, filter: 2, data: { coeff: { 0x0ef5f2, 0xe67d1f, 0x0bcf37, 0xe67d1f, 0x0ac529 } } }, + { channel: 1, filter: 3, data: { coeff: { 0x0db050, 0xe5be4d, 0x0d0c78, 0xe5be4d, 0x0abcc8 } } }, + { channel: 1, filter: 4, data: { coeff: { 0x0f1298, 0xe64ec6, 0x0cc03e, 0xe64ec6, 0x0bd2d7 } } }, + { channel: 1, filter: 5, data: { coeff: { 0x0c641a, 0x06537a, 0x08d155, 0x06537a, 0x053570 } } }, + { channel: 1, filter: 6, data: { coeff: { 0x100000, 0x000000, 0x000000, 0x000000, 0x000000 } } } +}; + +static struct tas_eq_pref_t eqp_18_1_0 = { + sample_rate: 44100, + device_id: 0x18, + output_id: TAS_OUTPUT_INTERNAL_SPKR, + speaker_id: 0x00, + + drce: &eqp_18_1_0_drce, + + filter_count: 14, + biquads: eqp_18_1_0_biquads +}; + +/* ======================================================================== */ + +static struct tas_drce_t eqp_1a_1_0_drce={ + enable: 1, + above: { val: 3.0 * (1<<8), expand: 0 }, + below: { val: 1.0 * (1<<8), expand: 0 }, + threshold: -10.75 * (1<<8), + energy: 2.4 * (1<<12), + attack: 0.013 * (1<<12), + decay: 0.212 * (1<<12), +}; + +static struct tas_biquad_ctrl_t eqp_1a_1_0_biquads[]={ + { channel: 0, filter: 0, data: { coeff: { 0x0fb8fd, 0xe08e04, 0x0fb8fd, 0xe08f40, 0x0f7336 } } }, + { channel: 0, filter: 1, data: { coeff: { 0x06371d, 0x0c6e3a, 0x06371d, 0x05bfd3, 0x031ca2 } } }, + { channel: 0, filter: 2, data: { coeff: { 0x0fa1c0, 0xe18692, 0x0f030e, 0xe18692, 0x0ea4ce } } }, + { channel: 0, filter: 3, data: { coeff: { 0x0fe495, 0xe17eff, 0x0f0452, 0xe17eff, 0x0ee8e7 } } }, + { channel: 0, filter: 4, data: { coeff: { 0x100857, 0xe7e71c, 0x0e9599, 0xe7e71c, 0x0e9df1 } } }, + { channel: 0, filter: 5, data: { coeff: { 0x0fb26e, 0x06a82c, 0x0db2b4, 0x06a82c, 0x0d6522 } } }, + { channel: 0, filter: 6, data: { coeff: { 0x11419d, 0xf06cbf, 0x0a4f6e, 0xf06cbf, 0x0b910c } } }, + + { channel: 1, filter: 0, data: { coeff: { 0x0fb8fd, 0xe08e04, 0x0fb8fd, 0xe08f40, 0x0f7336 } } }, + { channel: 1, filter: 1, data: { coeff: { 0x06371d, 0x0c6e3a, 0x06371d, 0x05bfd3, 0x031ca2 } } }, + { channel: 1, filter: 2, data: { coeff: { 0x0fa1c0, 0xe18692, 0x0f030e, 0xe18692, 0x0ea4ce } } }, + { channel: 1, filter: 3, data: { coeff: { 0x0fe495, 0xe17eff, 0x0f0452, 0xe17eff, 0x0ee8e7 } } }, + { channel: 1, filter: 4, data: { coeff: { 0x100857, 0xe7e71c, 0x0e9599, 0xe7e71c, 0x0e9df1 } } }, + { channel: 1, filter: 5, data: { coeff: { 0x0fb26e, 0x06a82c, 0x0db2b4, 0x06a82c, 0x0d6522 } } }, + { channel: 1, filter: 6, data: { coeff: { 0x11419d, 0xf06cbf, 0x0a4f6e, 0xf06cbf, 0x0b910c } } } +}; + +static struct tas_eq_pref_t eqp_1a_1_0 = { + sample_rate: 44100, + device_id: 0x1a, + output_id: TAS_OUTPUT_INTERNAL_SPKR, + speaker_id: 0x00, + + drce: &eqp_1a_1_0_drce, + + filter_count: 14, + biquads: eqp_1a_1_0_biquads +}; + +/* ======================================================================== */ + +static struct tas_drce_t eqp_1c_1_0_drce={ + enable: 1, + above: { val: 3.0 * (1<<8), expand: 0 }, + below: { val: 1.0 * (1<<8), expand: 0 }, + threshold: -14.34 * (1<<8), + energy: 2.4 * (1<<12), + attack: 0.013 * (1<<12), + decay: 0.212 * (1<<12), +}; + +static struct tas_biquad_ctrl_t eqp_1c_1_0_biquads[]={ + { channel: 0, filter: 0, data: { coeff: { 0x0f4f95, 0xe160d4, 0x0f4f95, 0xe1686e, 0x0ea6c5 } } }, + { channel: 0, filter: 1, data: { coeff: { 0x066b92, 0x0290d4, 0x0148a0, 0xf6853f, 0x03bfc7 } } }, + { channel: 0, filter: 2, data: { coeff: { 0x0f57dc, 0xe51c91, 0x0dd1cb, 0xe51c91, 0x0d29a8 } } }, + { channel: 0, filter: 3, data: { coeff: { 0x0df1cb, 0xe4fa84, 0x0d7cdc, 0xe4fa84, 0x0b6ea7 } } }, + { channel: 0, filter: 4, data: { coeff: { 0x0eba36, 0xe6aa48, 0x0b9f52, 0xe6aa48, 0x0a5989 } } }, + { channel: 0, filter: 5, data: { coeff: { 0x0caf02, 0x05ef9d, 0x084beb, 0x05ef9d, 0x04faee } } }, + { channel: 0, filter: 6, data: { coeff: { 0x0fc686, 0xe22947, 0x0e4b5d, 0xe22947, 0x0e11e4 } } }, + + { channel: 1, filter: 0, data: { coeff: { 0x0f4f95, 0xe160d4, 0x0f4f95, 0xe1686e, 0x0ea6c5 } } }, + { channel: 1, filter: 1, data: { coeff: { 0x066b92, 0x0290d4, 0x0148a0, 0xf6853f, 0x03bfc7 } } }, + { channel: 1, filter: 2, data: { coeff: { 0x0f57dc, 0xe51c91, 0x0dd1cb, 0xe51c91, 0x0d29a8 } } }, + { channel: 1, filter: 3, data: { coeff: { 0x0df1cb, 0xe4fa84, 0x0d7cdc, 0xe4fa84, 0x0b6ea7 } } }, + { channel: 1, filter: 4, data: { coeff: { 0x0eba36, 0xe6aa48, 0x0b9f52, 0xe6aa48, 0x0a5989 } } }, + { channel: 1, filter: 5, data: { coeff: { 0x0caf02, 0x05ef9d, 0x084beb, 0x05ef9d, 0x04faee } } }, + { channel: 1, filter: 6, data: { coeff: { 0x0fc686, 0xe22947, 0x0e4b5d, 0xe22947, 0x0e11e4 } } } +}; + +static struct tas_eq_pref_t eqp_1c_1_0 = { + sample_rate: 44100, + device_id: 0x1c, + output_id: TAS_OUTPUT_INTERNAL_SPKR, + speaker_id: 0x00, + + drce: &eqp_1c_1_0_drce, + + filter_count: 14, + biquads: eqp_1c_1_0_biquads +}; + +/* ======================================================================== */ + +static uint tas3004_master_tab[]={ + 0x0, 0x75, 0x9c, 0xbb, + 0xdb, 0xfb, 0x11e, 0x143, + 0x16b, 0x196, 0x1c3, 0x1f5, + 0x229, 0x263, 0x29f, 0x2e1, + 0x328, 0x373, 0x3c5, 0x41b, + 0x478, 0x4dc, 0x547, 0x5b8, + 0x633, 0x6b5, 0x740, 0x7d5, + 0x873, 0x91c, 0x9d2, 0xa92, + 0xb5e, 0xc39, 0xd22, 0xe19, + 0xf20, 0x1037, 0x1161, 0x129e, + 0x13ed, 0x1551, 0x16ca, 0x185d, + 0x1a08, 0x1bcc, 0x1dac, 0x1fa7, + 0x21c1, 0x23fa, 0x2655, 0x28d6, + 0x2b7c, 0x2e4a, 0x3141, 0x3464, + 0x37b4, 0x3b35, 0x3ee9, 0x42d3, + 0x46f6, 0x4b53, 0x4ff0, 0x54ce, + 0x59f2, 0x5f5f, 0x6519, 0x6b24, + 0x7183, 0x783c, 0x7f53, 0x86cc, + 0x8ead, 0x96fa, 0x9fba, 0xa8f2, + 0xb2a7, 0xbce1, 0xc7a5, 0xd2fa, + 0xdee8, 0xeb75, 0xf8aa, 0x1068e, + 0x1152a, 0x12487, 0x134ad, 0x145a5, + 0x1577b, 0x16a37, 0x17df5, 0x192bd, + 0x1a890, 0x1bf7b, 0x1d78d, 0x1f0d1, + 0x20b55, 0x22727, 0x24456, 0x262f2, + 0x2830b +}; + +static uint tas3004_mixer_tab[]={ + 0x0, 0x748, 0x9be, 0xbaf, + 0xda4, 0xfb1, 0x11de, 0x1431, + 0x16ad, 0x1959, 0x1c37, 0x1f4b, + 0x2298, 0x2628, 0x29fb, 0x2e12, + 0x327d, 0x3734, 0x3c47, 0x41b4, + 0x4787, 0x4dbe, 0x546d, 0x5b86, + 0x632e, 0x6b52, 0x7400, 0x7d54, + 0x873b, 0x91c6, 0x9d1a, 0xa920, + 0xb5e5, 0xc38c, 0xd21b, 0xe18f, + 0xf1f5, 0x1036a, 0x1160f, 0x129d6, + 0x13ed0, 0x1550c, 0x16ca0, 0x185c9, + 0x1a07b, 0x1bcc3, 0x1dab9, 0x1fa75, + 0x21c0f, 0x23fa3, 0x26552, 0x28d64, + 0x2b7c9, 0x2e4a2, 0x31411, 0x3463b, + 0x37b44, 0x3b353, 0x3ee94, 0x42d30, + 0x46f55, 0x4b533, 0x4fefc, 0x54ce5, + 0x59f25, 0x5f5f6, 0x65193, 0x6b23c, + 0x71835, 0x783c3, 0x7f52c, 0x86cc0, + 0x8eacc, 0x96fa5, 0x9fba0, 0xa8f1a, + 0xb2a71, 0xbce0a, 0xc7a4a, 0xd2fa0, + 0xdee7b, 0xeb752, 0xf8a9f, 0x1068e4, + 0x1152a3, 0x12486a, 0x134ac8, 0x145a55, + 0x1577ac, 0x16a370, 0x17df51, 0x192bc2, + 0x1a88f8, 0x1bf7b7, 0x1d78c9, 0x1f0d04, + 0x20b542, 0x227268, 0x244564, 0x262f26, + 0x2830af +}; + +static uint tas3004_treble_tab[]={ + 0x96, 0x95, 0x95, 0x94, + 0x93, 0x92, 0x92, 0x91, + 0x90, 0x90, 0x8f, 0x8e, + 0x8d, 0x8d, 0x8c, 0x8b, + 0x8a, 0x8a, 0x89, 0x88, + 0x88, 0x87, 0x86, 0x85, + 0x85, 0x84, 0x83, 0x83, + 0x82, 0x81, 0x80, 0x80, + 0x7f, 0x7e, 0x7e, 0x7d, + 0x7c, 0x7b, 0x7b, 0x7a, + 0x79, 0x78, 0x78, 0x77, + 0x76, 0x76, 0x75, 0x74, + 0x73, 0x73, 0x72, 0x71, + 0x71, 0x68, 0x45, 0x5b, + 0x6d, 0x6c, 0x6b, 0x6a, + 0x69, 0x68, 0x67, 0x66, + 0x65, 0x63, 0x62, 0x62, + 0x60, 0x5e, 0x5c, 0x5b, + 0x59, 0x57, 0x55, 0x53, + 0x52, 0x4f, 0x4d, 0x4a, + 0x48, 0x46, 0x43, 0x40, + 0x3d, 0x3a, 0x36, 0x33, + 0x2f, 0x2c, 0x27, 0x23, + 0x1f, 0x1a, 0x15, 0xf, + 0x8, 0x5, 0x2, 0x1, + 0x1 +}; + +static uint tas3004_bass_tab[]={ + 0x96, 0x95, 0x95, 0x94, + 0x93, 0x92, 0x92, 0x91, + 0x90, 0x90, 0x8f, 0x8e, + 0x8d, 0x8d, 0x8c, 0x8b, + 0x8a, 0x8a, 0x89, 0x88, + 0x88, 0x87, 0x86, 0x85, + 0x85, 0x84, 0x83, 0x83, + 0x82, 0x81, 0x80, 0x80, + 0x7f, 0x7e, 0x7e, 0x7d, + 0x7c, 0x7b, 0x7b, 0x7a, + 0x79, 0x78, 0x78, 0x77, + 0x76, 0x76, 0x75, 0x74, + 0x73, 0x73, 0x72, 0x71, + 0x70, 0x6f, 0x6e, 0x6d, + 0x6c, 0x6b, 0x6a, 0x6a, + 0x69, 0x67, 0x66, 0x66, + 0x65, 0x63, 0x62, 0x62, + 0x61, 0x60, 0x5e, 0x5d, + 0x5b, 0x59, 0x57, 0x55, + 0x53, 0x51, 0x4f, 0x4c, + 0x4a, 0x48, 0x46, 0x44, + 0x41, 0x3e, 0x3b, 0x38, + 0x36, 0x33, 0x2f, 0x2b, + 0x28, 0x24, 0x20, 0x1c, + 0x17, 0x12, 0xd, 0x7, + 0x1 +}; + +struct tas_gain_t tas3004_gain={ + master: tas3004_master_tab, + treble: tas3004_treble_tab, + bass: tas3004_bass_tab, + mixer: tas3004_mixer_tab +}; + +struct tas_eq_pref_t *tas3004_eq_prefs[]={ + &eqp_17_1_0, + &eqp_18_1_0, + &eqp_1a_1_0, + &eqp_1c_1_0, + NULL +}; diff -Nru a/sound/oss/dmasound/tas_common.c b/sound/oss/dmasound/tas_common.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/sound/oss/dmasound/tas_common.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,212 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "tas_common.h" + +#define CALL0(proc) \ + do { \ + struct tas_data_t *self; \ + if (!tas_client || driver_hooks == NULL) \ + return -1; \ + self = dev_get_drvdata(&tas_client->dev); \ + if (driver_hooks->proc) \ + return driver_hooks->proc(self); \ + else \ + return -EINVAL; \ + } while (0) + +#define CALL(proc,arg...) \ + do { \ + struct tas_data_t *self; \ + if (!tas_client || driver_hooks == NULL) \ + return -1; \ + self = dev_get_drvdata(&tas_client->dev); \ + if (driver_hooks->proc) \ + return driver_hooks->proc(self, ## arg); \ + else \ + return -EINVAL; \ + } while (0) + + +static u8 tas_i2c_address = 0x34; +static struct i2c_client *tas_client; +static struct device_node* tas_node; + +static int tas_attach_adapter(struct i2c_adapter *); +static int tas_detach_client(struct i2c_client *); + +struct i2c_driver tas_driver = { + .owner = THIS_MODULE, + .name = "tas", + .flags = I2C_DF_NOTIFY, + .attach_adapter = tas_attach_adapter, + .detach_client = tas_detach_client, +}; + +struct tas_driver_hooks_t *driver_hooks; + +int +tas_register_driver(struct tas_driver_hooks_t *hooks) +{ + driver_hooks = hooks; + return 0; +} + +int +tas_get_mixer_level(int mixer, uint *level) +{ + CALL(get_mixer_level,mixer,level); +} + +int +tas_set_mixer_level(int mixer,uint level) +{ + CALL(set_mixer_level,mixer,level); +} + +int +tas_enter_sleep(void) +{ + CALL0(enter_sleep); +} + +int +tas_leave_sleep(void) +{ + CALL0(leave_sleep); +} + +int +tas_supported_mixers(void) +{ + CALL0(supported_mixers); +} + +int +tas_mixer_is_stereo(int mixer) +{ + CALL(mixer_is_stereo,mixer); +} + +int +tas_stereo_mixers(void) +{ + CALL0(stereo_mixers); +} + +int +tas_output_device_change(int device_id,int layout_id,int speaker_id) +{ + CALL(output_device_change,device_id,layout_id,speaker_id); +} + +int +tas_device_ioctl(u_int cmd, u_long arg) +{ + CALL(device_ioctl,cmd,arg); +} + +int +tas_post_init(void) +{ + CALL0(post_init); +} + +static int +tas_detect_client(struct i2c_adapter *adapter, int address) +{ + static const char *client_name = "tas Digital Equalizer"; + struct i2c_client *new_client; + int rc = -ENODEV; + + if (!driver_hooks) { + printk(KERN_ERR "tas_detect_client called with no hooks !\n"); + return -ENODEV; + } + + new_client = kmalloc(sizeof(*new_client), GFP_KERNEL); + if (!new_client) + return -ENOMEM; + memset(new_client, 0, sizeof(*new_client)); + + new_client->addr = address; + new_client->adapter = adapter; + new_client->driver = &tas_driver; + strlcpy(new_client->name, client_name, DEVICE_NAME_SIZE); + + if (driver_hooks->init(new_client)) + goto bail; + + /* Tell the i2c layer a new client has arrived */ + if (i2c_attach_client(new_client)) { + driver_hooks->uninit(dev_get_drvdata(&new_client->dev)); + goto bail; + } + + tas_client = new_client; + return 0; + bail: + tas_client = NULL; + kfree(new_client); + return rc; +} + +static int +tas_attach_adapter(struct i2c_adapter *adapter) +{ + if (!strncmp(adapter->name, "mac-io", 6)) + return tas_detect_client(adapter, tas_i2c_address); + return 0; +} + +static int +tas_detach_client(struct i2c_client *client) +{ + if (client == tas_client) { + driver_hooks->uninit(dev_get_drvdata(&client->dev)); + + i2c_detach_client(client); + kfree(client); + } + return 0; +} + +void +tas_cleanup(void) +{ + i2c_del_driver(&tas_driver); +} + +int __init +tas_init(int driver_id, const char *driver_name) +{ + u32* paddr; + + printk(KERN_INFO "tas driver [%s])\n", driver_name); + + tas_node = find_devices("deq"); + if (tas_node == NULL) + return -ENODEV; + paddr = (u32 *)get_property(tas_node, "i2c-address", NULL); + if (paddr) { + tas_i2c_address = (*paddr) >> 1; + printk(KERN_INFO "using i2c address: 0x%x from device-tree\n", + tas_i2c_address); + } else + printk(KERN_INFO "using i2c address: 0x%x (default)\n", + tas_i2c_address); + + return i2c_add_driver(&tas_driver); +} diff -Nru a/sound/oss/dmasound/tas_common.h b/sound/oss/dmasound/tas_common.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/sound/oss/dmasound/tas_common.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,284 @@ +#ifndef _TAS_COMMON_H_ +#define _TAS_COMMON_H_ + +#include +#include +#include + +#define I2C_DRIVERID_TAS_BASE (0xFEBA) + +#define SET_4_20(shadow, offset, val) \ + do { \ + (shadow)[(offset)+0] = ((val) >> 16) & 0xff; \ + (shadow)[(offset)+1] = ((val) >> 8) & 0xff; \ + (shadow)[(offset)+2] = ((val) >> 0) & 0xff; \ + } while (0) + +#define GET_4_20(shadow, offset) \ + (((u_int)((shadow)[(offset)+0]) << 16) | \ + ((u_int)((shadow)[(offset)+1]) << 8) | \ + ((u_int)((shadow)[(offset)+2]) << 0)) + + +#define TAS_BIQUAD_FAST_LOAD 0x01 + +#define TAS_DRCE_ENABLE 0x01 +#define TAS_DRCE_ABOVE_RATIO 0x02 +#define TAS_DRCE_BELOW_RATIO 0x04 +#define TAS_DRCE_THRESHOLD 0x08 +#define TAS_DRCE_ENERGY 0x10 +#define TAS_DRCE_ATTACK 0x20 +#define TAS_DRCE_DECAY 0x40 + +#define TAS_DRCE_ALL 0x7f + + +#define TAS_OUTPUT_HEADPHONES 0x00 +#define TAS_OUTPUT_INTERNAL_SPKR 0x01 +#define TAS_OUTPUT_EXTERNAL_SPKR 0x02 + + +union tas_biquad_t { + struct { + int b0,b1,b2,a1,a2; + } coeff; + int buf[5]; +}; + +struct tas_biquad_ctrl_t { + u_int channel:4; + u_int filter:4; + + union tas_biquad_t data; +}; + +struct tas_biquad_ctrl_list_t { + int flags; + int filter_count; + struct tas_biquad_ctrl_t biquads[0]; +}; + +struct tas_ratio_t { + unsigned short val; /* 8.8 */ + unsigned short expand; /* 0 = compress, !0 = expand. */ +}; + +struct tas_drce_t { + unsigned short enable; + struct tas_ratio_t above; + struct tas_ratio_t below; + short threshold; /* dB, 8.8 signed */ + unsigned short energy; /* seconds, 4.12 unsigned */ + unsigned short attack; /* seconds, 4.12 unsigned */ + unsigned short decay; /* seconds, 4.12 unsigned */ +}; + +struct tas_drce_ctrl_t { + uint flags; + + struct tas_drce_t data; +}; + +struct tas_gain_t +{ + unsigned int *master; + unsigned int *treble; + unsigned int *bass; + unsigned int *mixer; +}; + +typedef char tas_shadow_t[16]; + +struct tas_data_t +{ + struct i2c_client *client; + tas_shadow_t *shadow; + uint mixer[SOUND_MIXER_NRDEVICES]; +}; + +typedef int (*tas_hook_init_t)(struct i2c_client *); +typedef int (*tas_hook_post_init_t)(struct tas_data_t *); +typedef void (*tas_hook_uninit_t)(struct tas_data_t *); + +typedef int (*tas_hook_get_mixer_level_t)(struct tas_data_t *,int,uint *); +typedef int (*tas_hook_set_mixer_level_t)(struct tas_data_t *,int,uint); + +typedef int (*tas_hook_enter_sleep_t)(struct tas_data_t *); +typedef int (*tas_hook_leave_sleep_t)(struct tas_data_t *); + +typedef int (*tas_hook_supported_mixers_t)(struct tas_data_t *); +typedef int (*tas_hook_mixer_is_stereo_t)(struct tas_data_t *,int); +typedef int (*tas_hook_stereo_mixers_t)(struct tas_data_t *); + +typedef int (*tas_hook_output_device_change_t)(struct tas_data_t *,int,int,int); +typedef int (*tas_hook_device_ioctl_t)(struct tas_data_t *,u_int,u_long); + +struct tas_driver_hooks_t { + /* + * All hardware initialisation must be performed in + * post_init(), as tas_dmasound_init() does a hardware reset. + * + * init() is called before tas_dmasound_init() so that + * ouput_device_change() is always called after i2c driver + * initialisation. The implication is that + * output_device_change() must cope with the fact that it + * may be called before post_init(). + */ + + tas_hook_init_t init; + tas_hook_post_init_t post_init; + tas_hook_uninit_t uninit; + + tas_hook_get_mixer_level_t get_mixer_level; + tas_hook_set_mixer_level_t set_mixer_level; + + tas_hook_enter_sleep_t enter_sleep; + tas_hook_leave_sleep_t leave_sleep; + + tas_hook_supported_mixers_t supported_mixers; + tas_hook_mixer_is_stereo_t mixer_is_stereo; + tas_hook_stereo_mixers_t stereo_mixers; + + tas_hook_output_device_change_t output_device_change; + tas_hook_device_ioctl_t device_ioctl; +}; + +enum tas_write_mode_t { + WRITE_HW = 0x01, + WRITE_SHADOW = 0x02, + WRITE_NORMAL = 0x03, + FORCE_WRITE = 0x04 +}; + +static inline uint +tas_mono_to_stereo(uint mono) +{ + mono &=0xff; + return mono | (mono<<8); +} + +/* + * Todo: make these functions a bit more efficient ! + */ +static inline int +tas_write_register( struct tas_data_t *self, + uint reg_num, + uint reg_width, + char *data, + uint write_mode) +{ + int rc; + + if (reg_width==0 || data==NULL || self==NULL) + return -EINVAL; + if (!(write_mode & FORCE_WRITE) && + !memcmp(data,self->shadow[reg_num],reg_width)) + return 0; + + if (write_mode & WRITE_SHADOW) + memcpy(self->shadow[reg_num],data,reg_width); + if (write_mode & WRITE_HW) { + rc=i2c_smbus_write_block_data(self->client, + reg_num, + reg_width, + data); + if (rc < 0) { + printk("tas: I2C block write failed \n"); + return rc; + } + } + return 0; +} + +static inline int +tas_sync_register( struct tas_data_t *self, + uint reg_num, + uint reg_width) +{ + int rc; + + if (reg_width==0 || self==NULL) + return -EINVAL; + rc=i2c_smbus_write_block_data(self->client, + reg_num, + reg_width, + self->shadow[reg_num]); + if (rc < 0) { + printk("tas: I2C block write failed \n"); + return rc; + } + return 0; +} + +static inline int +tas_write_byte_register( struct tas_data_t *self, + uint reg_num, + char data, + uint write_mode) +{ + if (self==NULL) + return -1; + if (!(write_mode & FORCE_WRITE) && data != self->shadow[reg_num][0]) + return 0; + if (write_mode & WRITE_SHADOW) + self->shadow[reg_num][0]=data; + if (write_mode & WRITE_HW) { + if (i2c_smbus_write_byte_data(self->client, reg_num, data) < 0) { + printk("tas: I2C byte write failed \n"); + return -1; + } + } + return 0; +} + +static inline int +tas_sync_byte_register( struct tas_data_t *self, + uint reg_num, + uint reg_width) +{ + if (reg_width==0 || self==NULL) + return -1; + if (i2c_smbus_write_byte_data( + self->client, reg_num, self->shadow[reg_num][0]) < 0) { + printk("tas: I2C byte write failed \n"); + return -1; + } + return 0; +} + +static inline int +tas_read_register( struct tas_data_t *self, + uint reg_num, + uint reg_width, + char *data) +{ + if (reg_width==0 || data==NULL || self==NULL) + return -1; + memcpy(data,self->shadow[reg_num],reg_width); + return 0; +} + +extern int tas_register_driver(struct tas_driver_hooks_t *hooks); + +extern int tas_get_mixer_level(int mixer,uint *level); +extern int tas_set_mixer_level(int mixer,uint level); +extern int tas_enter_sleep(void); +extern int tas_leave_sleep(void); +extern int tas_supported_mixers(void); +extern int tas_mixer_is_stereo(int mixer); +extern int tas_stereo_mixers(void); +extern int tas_output_device_change(int,int,int); +extern int tas_device_ioctl(u_int, u_long); + +extern void tas_cleanup(void); +extern int tas_init(int driver_id,const char *driver_name); +extern int tas_post_init(void); + +#endif /* _TAS_COMMON_H_ */ +/* + * Local Variables: + * tab-width: 8 + * indent-tabs-mode: t + * c-basic-offset: 8 + * End: + */ diff -Nru a/sound/oss/dmasound/tas_eq_prefs.h b/sound/oss/dmasound/tas_eq_prefs.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/sound/oss/dmasound/tas_eq_prefs.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,24 @@ +#ifndef _TAS_EQ_PREFS_H_ +#define _TAS_EQ_PREFS_H_ + +struct tas_eq_pref_t { + u_int sample_rate; + u_int device_id; + u_int output_id; + u_int speaker_id; + + struct tas_drce_t *drce; + + u_int filter_count; + struct tas_biquad_ctrl_t *biquads; +}; + +#endif /* _TAS_EQ_PREFS_H_ */ + +/* + * Local Variables: + * tab-width: 8 + * indent-tabs-mode: t + * c-basic-offset: 8 + * End: + */ diff -Nru a/sound/oss/dmasound/tas_ioctl.h b/sound/oss/dmasound/tas_ioctl.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/sound/oss/dmasound/tas_ioctl.h Mon Sep 22 00:30:25 2003 @@ -0,0 +1,24 @@ +#ifndef _TAS_IOCTL_H_ +#define _TAS_IOCTL_H_ + +#include +#include + + +#define TAS_READ_EQ _SIOR('t',0,struct tas_biquad_ctrl_t) +#define TAS_WRITE_EQ _SIOW('t',0,struct tas_biquad_ctrl_t) + +#define TAS_READ_EQ_LIST _SIOR('t',1,struct tas_biquad_ctrl_t) +#define TAS_WRITE_EQ_LIST _SIOW('t',1,struct tas_biquad_ctrl_t) + +#define TAS_READ_EQ_FILTER_COUNT _SIOR('t',2,int) +#define TAS_READ_EQ_CHANNEL_COUNT _SIOR('t',3,int) + +#define TAS_READ_DRCE _SIOR('t',4,struct tas_drce_ctrl_t) +#define TAS_WRITE_DRCE _SIOW('t',4,struct tas_drce_ctrl_t) + +#define TAS_READ_DRCE_CAPS _SIOR('t',5,int) +#define TAS_READ_DRCE_MIN _SIOR('t',6,int) +#define TAS_READ_DRCE_MAX _SIOR('t',7,int) + +#endif diff -Nru a/sound/oss/dmasound/trans_16.c b/sound/oss/dmasound/trans_16.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/sound/oss/dmasound/trans_16.c Mon Sep 22 00:30:25 2003 @@ -0,0 +1,679 @@ +/* + * linux/drivers/sound/dmasound/trans_16.c + * + * 16 bit translation routines. Only used by Power mac at present. + * + * See linux/drivers/sound/dmasound/dmasound_core.c for copyright and + * history prior to 08/02/2001. + * + * 08/02/2001 Iain Sandoe + * split from dmasound_awacs.c + */ + +#include +#include +#include "dmasound.h" + +static short dmasound_alaw2dma16[] ; +static short dmasound_ulaw2dma16[] ; + +static ssize_t pmac_ct_law(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft); +static ssize_t pmac_ct_s8(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft); +static ssize_t pmac_ct_u8(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft); +static ssize_t pmac_ct_s16(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft); +static ssize_t pmac_ct_u16(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft); + +static ssize_t pmac_ctx_law(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft); +static ssize_t pmac_ctx_s8(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft); +static ssize_t pmac_ctx_u8(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft); +static ssize_t pmac_ctx_s16(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft); +static ssize_t pmac_ctx_u16(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft); + +static ssize_t pmac_ct_s16_read(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft); +static ssize_t pmac_ct_u16_read(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft); + +/*** Translations ************************************************************/ + +extern int expand_bal; /* Balance factor for expanding (not volume!) */ +static int expand_data; /* Data for expanding */ + +static ssize_t pmac_ct_law(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + short *table = dmasound.soft.format == AFMT_MU_LAW + ? dmasound_ulaw2dma16 : dmasound_alaw2dma16; + ssize_t count, used; + short *p = (short *) &frame[*frameUsed]; + int val, stereo = dmasound.soft.stereo; + + frameLeft >>= 2; + if (stereo) + userCount >>= 1; + used = count = min_t(unsigned long, userCount, frameLeft); + while (count > 0) { + u_char data; + if (get_user(data, userPtr++)) + return -EFAULT; + val = table[data]; + *p++ = val; + if (stereo) { + if (get_user(data, userPtr++)) + return -EFAULT; + val = table[data]; + } + *p++ = val; + count--; + } + *frameUsed += used * 4; + return stereo? used * 2: used; +} + + +static ssize_t pmac_ct_s8(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + ssize_t count, used; + short *p = (short *) &frame[*frameUsed]; + int val, stereo = dmasound.soft.stereo; + + frameLeft >>= 2; + if (stereo) + userCount >>= 1; + used = count = min_t(unsigned long, userCount, frameLeft); + while (count > 0) { + u_char data; + if (get_user(data, userPtr++)) + return -EFAULT; + val = data << 8; + *p++ = val; + if (stereo) { + if (get_user(data, userPtr++)) + return -EFAULT; + val = data << 8; + } + *p++ = val; + count--; + } + *frameUsed += used * 4; + return stereo? used * 2: used; +} + + +static ssize_t pmac_ct_u8(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + ssize_t count, used; + short *p = (short *) &frame[*frameUsed]; + int val, stereo = dmasound.soft.stereo; + + frameLeft >>= 2; + if (stereo) + userCount >>= 1; + used = count = min_t(unsigned long, userCount, frameLeft); + while (count > 0) { + u_char data; + if (get_user(data, userPtr++)) + return -EFAULT; + val = (data ^ 0x80) << 8; + *p++ = val; + if (stereo) { + if (get_user(data, userPtr++)) + return -EFAULT; + val = (data ^ 0x80) << 8; + } + *p++ = val; + count--; + } + *frameUsed += used * 4; + return stereo? used * 2: used; +} + + +static ssize_t pmac_ct_s16(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + ssize_t count, used; + int stereo = dmasound.soft.stereo; + short *fp = (short *) &frame[*frameUsed]; + + frameLeft >>= 2; + userCount >>= (stereo? 2: 1); + used = count = min_t(unsigned long, userCount, frameLeft); + if (!stereo) { + short *up = (short *) userPtr; + while (count > 0) { + short data; + if (get_user(data, up++)) + return -EFAULT; + *fp++ = data; + *fp++ = data; + count--; + } + } else { + if (copy_from_user(fp, userPtr, count * 4)) + return -EFAULT; + } + *frameUsed += used * 4; + return stereo? used * 4: used * 2; +} + +static ssize_t pmac_ct_u16(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + ssize_t count, used; + int mask = (dmasound.soft.format == AFMT_U16_LE? 0x0080: 0x8000); + int stereo = dmasound.soft.stereo; + short *fp = (short *) &frame[*frameUsed]; + short *up = (short *) userPtr; + + frameLeft >>= 2; + userCount >>= (stereo? 2: 1); + used = count = min_t(unsigned long, userCount, frameLeft); + while (count > 0) { + short data; + if (get_user(data, up++)) + return -EFAULT; + data ^= mask; + *fp++ = data; + if (stereo) { + if (get_user(data, up++)) + return -EFAULT; + data ^= mask; + } + *fp++ = data; + count--; + } + *frameUsed += used * 4; + return stereo? used * 4: used * 2; +} + + +static ssize_t pmac_ctx_law(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + unsigned short *table = (unsigned short *) + (dmasound.soft.format == AFMT_MU_LAW + ? dmasound_ulaw2dma16 : dmasound_alaw2dma16); + unsigned int data = expand_data; + unsigned int *p = (unsigned int *) &frame[*frameUsed]; + int bal = expand_bal; + int hSpeed = dmasound.hard.speed, sSpeed = dmasound.soft.speed; + int utotal, ftotal; + int stereo = dmasound.soft.stereo; + + frameLeft >>= 2; + if (stereo) + userCount >>= 1; + ftotal = frameLeft; + utotal = userCount; + while (frameLeft) { + u_char c; + if (bal < 0) { + if (userCount == 0) + break; + if (get_user(c, userPtr++)) + return -EFAULT; + data = table[c]; + if (stereo) { + if (get_user(c, userPtr++)) + return -EFAULT; + data = (data << 16) + table[c]; + } else + data = (data << 16) + data; + userCount--; + bal += hSpeed; + } + *p++ = data; + frameLeft--; + bal -= sSpeed; + } + expand_bal = bal; + expand_data = data; + *frameUsed += (ftotal - frameLeft) * 4; + utotal -= userCount; + return stereo? utotal * 2: utotal; +} + +static ssize_t pmac_ctx_s8(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + unsigned int *p = (unsigned int *) &frame[*frameUsed]; + unsigned int data = expand_data; + int bal = expand_bal; + int hSpeed = dmasound.hard.speed, sSpeed = dmasound.soft.speed; + int stereo = dmasound.soft.stereo; + int utotal, ftotal; + + frameLeft >>= 2; + if (stereo) + userCount >>= 1; + ftotal = frameLeft; + utotal = userCount; + while (frameLeft) { + u_char c; + if (bal < 0) { + if (userCount == 0) + break; + if (get_user(c, userPtr++)) + return -EFAULT; + data = c << 8; + if (stereo) { + if (get_user(c, userPtr++)) + return -EFAULT; + data = (data << 16) + (c << 8); + } else + data = (data << 16) + data; + userCount--; + bal += hSpeed; + } + *p++ = data; + frameLeft--; + bal -= sSpeed; + } + expand_bal = bal; + expand_data = data; + *frameUsed += (ftotal - frameLeft) * 4; + utotal -= userCount; + return stereo? utotal * 2: utotal; +} + + +static ssize_t pmac_ctx_u8(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + unsigned int *p = (unsigned int *) &frame[*frameUsed]; + unsigned int data = expand_data; + int bal = expand_bal; + int hSpeed = dmasound.hard.speed, sSpeed = dmasound.soft.speed; + int stereo = dmasound.soft.stereo; + int utotal, ftotal; + + frameLeft >>= 2; + if (stereo) + userCount >>= 1; + ftotal = frameLeft; + utotal = userCount; + while (frameLeft) { + u_char c; + if (bal < 0) { + if (userCount == 0) + break; + if (get_user(c, userPtr++)) + return -EFAULT; + data = (c ^ 0x80) << 8; + if (stereo) { + if (get_user(c, userPtr++)) + return -EFAULT; + data = (data << 16) + ((c ^ 0x80) << 8); + } else + data = (data << 16) + data; + userCount--; + bal += hSpeed; + } + *p++ = data; + frameLeft--; + bal -= sSpeed; + } + expand_bal = bal; + expand_data = data; + *frameUsed += (ftotal - frameLeft) * 4; + utotal -= userCount; + return stereo? utotal * 2: utotal; +} + + +static ssize_t pmac_ctx_s16(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + unsigned int *p = (unsigned int *) &frame[*frameUsed]; + unsigned int data = expand_data; + unsigned short *up = (unsigned short *) userPtr; + int bal = expand_bal; + int hSpeed = dmasound.hard.speed, sSpeed = dmasound.soft.speed; + int stereo = dmasound.soft.stereo; + int utotal, ftotal; + + frameLeft >>= 2; + userCount >>= (stereo? 2: 1); + ftotal = frameLeft; + utotal = userCount; + while (frameLeft) { + unsigned short c; + if (bal < 0) { + if (userCount == 0) + break; + if (get_user(data, up++)) + return -EFAULT; + if (stereo) { + if (get_user(c, up++)) + return -EFAULT; + data = (data << 16) + c; + } else + data = (data << 16) + data; + userCount--; + bal += hSpeed; + } + *p++ = data; + frameLeft--; + bal -= sSpeed; + } + expand_bal = bal; + expand_data = data; + *frameUsed += (ftotal - frameLeft) * 4; + utotal -= userCount; + return stereo? utotal * 4: utotal * 2; +} + + +static ssize_t pmac_ctx_u16(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + int mask = (dmasound.soft.format == AFMT_U16_LE? 0x0080: 0x8000); + unsigned int *p = (unsigned int *) &frame[*frameUsed]; + unsigned int data = expand_data; + unsigned short *up = (unsigned short *) userPtr; + int bal = expand_bal; + int hSpeed = dmasound.hard.speed, sSpeed = dmasound.soft.speed; + int stereo = dmasound.soft.stereo; + int utotal, ftotal; + + frameLeft >>= 2; + userCount >>= (stereo? 2: 1); + ftotal = frameLeft; + utotal = userCount; + while (frameLeft) { + unsigned short c; + if (bal < 0) { + if (userCount == 0) + break; + if (get_user(data, up++)) + return -EFAULT; + data ^= mask; + if (stereo) { + if (get_user(c, up++)) + return -EFAULT; + data = (data << 16) + (c ^ mask); + } else + data = (data << 16) + data; + userCount--; + bal += hSpeed; + } + *p++ = data; + frameLeft--; + bal -= sSpeed; + } + expand_bal = bal; + expand_data = data; + *frameUsed += (ftotal - frameLeft) * 4; + utotal -= userCount; + return stereo? utotal * 4: utotal * 2; +} + +/* data in routines... */ + +static ssize_t pmac_ct_s8_read(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + ssize_t count, used; + short *p = (short *) &frame[*frameUsed]; + int val, stereo = dmasound.soft.stereo; + + frameLeft >>= 2; + if (stereo) + userCount >>= 1; + used = count = min_t(unsigned long, userCount, frameLeft); + while (count > 0) { + u_char data; + + val = *p++; + data = val >> 8; + if (put_user(data, (u_char *)userPtr++)) + return -EFAULT; + if (stereo) { + val = *p; + data = val >> 8; + if (put_user(data, (u_char *)userPtr++)) + return -EFAULT; + } + p++; + count--; + } + *frameUsed += used * 4; + return stereo? used * 2: used; +} + + +static ssize_t pmac_ct_u8_read(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + ssize_t count, used; + short *p = (short *) &frame[*frameUsed]; + int val, stereo = dmasound.soft.stereo; + + frameLeft >>= 2; + if (stereo) + userCount >>= 1; + used = count = min_t(unsigned long, userCount, frameLeft); + while (count > 0) { + u_char data; + + val = *p++; + data = (val >> 8) ^ 0x80; + if (put_user(data, (u_char *)userPtr++)) + return -EFAULT; + if (stereo) { + val = *p; + data = (val >> 8) ^ 0x80; + if (put_user(data, (u_char *)userPtr++)) + return -EFAULT; + } + p++; + count--; + } + *frameUsed += used * 4; + return stereo? used * 2: used; +} + +static ssize_t pmac_ct_s16_read(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + ssize_t count, used; + int stereo = dmasound.soft.stereo; + short *fp = (short *) &frame[*frameUsed]; + + frameLeft >>= 2; + userCount >>= (stereo? 2: 1); + used = count = min_t(unsigned long, userCount, frameLeft); + if (!stereo) { + short *up = (short *) userPtr; + while (count > 0) { + short data; + data = *fp; + if (put_user(data, up++)) + return -EFAULT; + fp+=2; + count--; + } + } else { + if (copy_to_user((u_char *)userPtr, fp, count * 4)) + return -EFAULT; + } + *frameUsed += used * 4; + return stereo? used * 4: used * 2; +} + +static ssize_t pmac_ct_u16_read(const u_char *userPtr, size_t userCount, + u_char frame[], ssize_t *frameUsed, + ssize_t frameLeft) +{ + ssize_t count, used; + int mask = (dmasound.soft.format == AFMT_U16_LE? 0x0080: 0x8000); + int stereo = dmasound.soft.stereo; + short *fp = (short *) &frame[*frameUsed]; + short *up = (short *) userPtr; + + frameLeft >>= 2; + userCount >>= (stereo? 2: 1); + used = count = min_t(unsigned long, userCount, frameLeft); + while (count > 0) { + int data; + + data = *fp++; + data ^= mask; + if (put_user(data, up++)) + return -EFAULT; + if (stereo) { + data = *fp; + data ^= mask; + if (put_user(data, up++)) + return -EFAULT; + } + fp++; + count--; + } + *frameUsed += used * 4; + return stereo? used * 4: used * 2; +} + +TRANS transAwacsNormal = { + ct_ulaw: pmac_ct_law, + ct_alaw: pmac_ct_law, + ct_s8: pmac_ct_s8, + ct_u8: pmac_ct_u8, + ct_s16be: pmac_ct_s16, + ct_u16be: pmac_ct_u16, + ct_s16le: pmac_ct_s16, + ct_u16le: pmac_ct_u16, +}; + +TRANS transAwacsExpand = { + ct_ulaw: pmac_ctx_law, + ct_alaw: pmac_ctx_law, + ct_s8: pmac_ctx_s8, + ct_u8: pmac_ctx_u8, + ct_s16be: pmac_ctx_s16, + ct_u16be: pmac_ctx_u16, + ct_s16le: pmac_ctx_s16, + ct_u16le: pmac_ctx_u16, +}; + +TRANS transAwacsNormalRead = { + ct_s8: pmac_ct_s8_read, + ct_u8: pmac_ct_u8_read, + ct_s16be: pmac_ct_s16_read, + ct_u16be: pmac_ct_u16_read, + ct_s16le: pmac_ct_s16_read, + ct_u16le: pmac_ct_u16_read, +}; + +/* translation tables */ +/* 16 bit mu-law */ + +static short dmasound_ulaw2dma16[] = { + -32124, -31100, -30076, -29052, -28028, -27004, -25980, -24956, + -23932, -22908, -21884, -20860, -19836, -18812, -17788, -16764, + -15996, -15484, -14972, -14460, -13948, -13436, -12924, -12412, + -11900, -11388, -10876, -10364, -9852, -9340, -8828, -8316, + -7932, -7676, -7420, -7164, -6908, -6652, -6396, -6140, + -5884, -5628, -5372, -5116, -4860, -4604, -4348, -4092, + -3900, -3772, -3644, -3516, -3388, -3260, -3132, -3004, + -2876, -2748, -2620, -2492, -2364, -2236, -2108, -1980, + -1884, -1820, -1756, -1692, -1628, -1564, -1500, -1436, + -1372, -1308, -1244, -1180, -1116, -1052, -988, -924, + -876, -844, -812, -780, -748, -716, -684, -652, + -620, -588, -556, -524, -492, -460, -428, -396, + -372, -356, -340, -324, -308, -292, -276, -260, + -244, -228, -212, -196, -180, -164, -148, -132, + -120, -112, -104, -96, -88, -80, -72, -64, + -56, -48, -40, -32, -24, -16, -8, 0, + 32124, 31100, 30076, 29052, 28028, 27004, 25980, 24956, + 23932, 22908, 21884, 20860, 19836, 18812, 17788, 16764, + 15996, 15484, 14972, 14460, 13948, 13436, 12924, 12412, + 11900, 11388, 10876, 10364, 9852, 9340, 8828, 8316, + 7932, 7676, 7420, 7164, 6908, 6652, 6396, 6140, + 5884, 5628, 5372, 5116, 4860, 4604, 4348, 4092, + 3900, 3772, 3644, 3516, 3388, 3260, 3132, 3004, + 2876, 2748, 2620, 2492, 2364, 2236, 2108, 1980, + 1884, 1820, 1756, 1692, 1628, 1564, 1500, 1436, + 1372, 1308, 1244, 1180, 1116, 1052, 988, 924, + 876, 844, 812, 780, 748, 716, 684, 652, + 620, 588, 556, 524, 492, 460, 428, 396, + 372, 356, 340, 324, 308, 292, 276, 260, + 244, 228, 212, 196, 180, 164, 148, 132, + 120, 112, 104, 96, 88, 80, 72, 64, + 56, 48, 40, 32, 24, 16, 8, 0, +}; + +/* 16 bit A-law */ + +static short dmasound_alaw2dma16[] = { + -5504, -5248, -6016, -5760, -4480, -4224, -4992, -4736, + -7552, -7296, -8064, -7808, -6528, -6272, -7040, -6784, + -2752, -2624, -3008, -2880, -2240, -2112, -2496, -2368, + -3776, -3648, -4032, -3904, -3264, -3136, -3520, -3392, + -22016, -20992, -24064, -23040, -17920, -16896, -19968, -18944, + -30208, -29184, -32256, -31232, -26112, -25088, -28160, -27136, + -11008, -10496, -12032, -11520, -8960, -8448, -9984, -9472, + -15104, -14592, -16128, -15616, -13056, -12544, -14080, -13568, + -344, -328, -376, -360, -280, -264, -312, -296, + -472, -456, -504, -488, -408, -392, -440, -424, + -88, -72, -120, -104, -24, -8, -56, -40, + -216, -200, -248, -232, -152, -136, -184, -168, + -1376, -1312, -1504, -1440, -1120, -1056, -1248, -1184, + -1888, -1824, -2016, -1952, -1632, -1568, -1760, -1696, + -688, -656, -752, -720, -560, -528, -624, -592, + -944, -912, -1008, -976, -816, -784, -880, -848, + 5504, 5248, 6016, 5760, 4480, 4224, 4992, 4736, + 7552, 7296, 8064, 7808, 6528, 6272, 7040, 6784, + 2752, 2624, 3008, 2880, 2240, 2112, 2496, 2368, + 3776, 3648, 4032, 3904, 3264, 3136, 3520, 3392, + 22016, 20992, 24064, 23040, 17920, 16896, 19968, 18944, + 30208, 29184, 32256, 31232, 26112, 25088, 28160, 27136, + 11008, 10496, 12032, 11520, 8960, 8448, 9984, 9472, + 15104, 14592, 16128, 15616, 13056, 12544, 14080, 13568, + 344, 328, 376, 360, 280, 264, 312, 296, + 472, 456, 504, 488, 408, 392, 440, 424, + 88, 72, 120, 104, 24, 8, 56, 40, + 216, 200, 248, 232, 152, 136, 184, 168, + 1376, 1312, 1504, 1440, 1120, 1056, 1248, 1184, + 1888, 1824, 2016, 1952, 1632, 1568, 1760, 1696, + 688, 656, 752, 720, 560, 528, 624, 592, + 944, 912, 1008, 976, 816, 784, 880, 848, +}; diff -Nru a/sound/oss/forte.c b/sound/oss/forte.c --- a/sound/oss/forte.c Mon Sep 22 00:30:20 2003 +++ b/sound/oss/forte.c Mon Sep 22 00:30:20 2003 @@ -37,7 +37,6 @@ #include #include -#include #include #include diff -Nru a/sound/oss/i810_audio.c b/sound/oss/i810_audio.c --- a/sound/oss/i810_audio.c Mon Sep 22 00:30:23 2003 +++ b/sound/oss/i810_audio.c Mon Sep 22 00:30:23 2003 @@ -2728,7 +2728,7 @@ i810_ac97_get(codec, AC97_POWER_CONTROL) & ~0x7f00); /* wait for analog ready */ - for (i=10; i && ((i810_ac97_get(codec, AC97_POWER_CONTROL) & 0xf) != 0xf); i--) + for (i=100; i && ((i810_ac97_get(codec, AC97_POWER_CONTROL) & 0xf) != 0xf); i--) { set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout(HZ/20); @@ -3091,8 +3091,15 @@ return -EIO; if (pci_set_dma_mask(pci_dev, I810_DMA_MASK)) { - printk(KERN_ERR "intel810: architecture does not support" + printk(KERN_ERR "i810_audio: architecture does not support" " 32bit PCI busmaster DMA\n"); + return -ENODEV; + } + + if( pci_resource_start(pci_dev, 1) == 0) + { + /* MMIO only ICH5 .. here be dragons .. */ + printk(KERN_ERR "i810_audio: Pure MMIO interfaces not yet supported.\n"); return -ENODEV; } diff -Nru a/sound/oss/nec_vrc5477.c b/sound/oss/nec_vrc5477.c --- a/sound/oss/nec_vrc5477.c Mon Sep 22 00:30:23 2003 +++ b/sound/oss/nec_vrc5477.c Mon Sep 22 00:30:23 2003 @@ -96,7 +96,6 @@ #endif #if defined(VRC5477_AC97_DEBUG) -#include #define ASSERT(x) if (!(x)) { \ panic("assertion failed at %s:%d: %s\n", __FILE__, __LINE__, #x); } #else diff -Nru a/sound/oss/rme96xx.c b/sound/oss/rme96xx.c --- a/sound/oss/rme96xx.c Mon Sep 22 00:30:20 2003 +++ b/sound/oss/rme96xx.c Mon Sep 22 00:30:20 2003 @@ -54,7 +54,6 @@ #include #include #include -#include #include #include #include diff -Nru a/sound/oss/vwsnd.c b/sound/oss/vwsnd.c --- a/sound/oss/vwsnd.c Mon Sep 22 00:30:22 2003 +++ b/sound/oss/vwsnd.c Mon Sep 22 00:30:22 2003 @@ -158,8 +158,6 @@ #ifdef VWSND_DEBUG -#include /* for in_interrupt() */ - static int shut_up = 1; /* diff -Nru a/sound/pci/ens1370.c b/sound/pci/ens1370.c --- a/sound/pci/ens1370.c Mon Sep 22 00:30:24 2003 +++ b/sound/pci/ens1370.c Mon Sep 22 00:30:24 2003 @@ -47,6 +47,13 @@ #define CHIP1370 #endif +#ifdef CHIP1370 +#define DRIVER_NAME "ENS1370" +#else +#define DRIVER_NAME "ENS1371" +#endif + + MODULE_AUTHOR("Jaroslav Kysela , Thomas Sailer "); MODULE_LICENSE("GPL"); MODULE_CLASSES("{sound}"); @@ -2324,12 +2331,8 @@ snd_card_free(card); return err; } -#ifdef CHIP1370 - strcpy(card->driver, "ENS1370"); -#endif -#ifdef CHIP1371 - strcpy(card->driver, "ENS1371"); -#endif + strcpy(card->driver, DRIVER_NAME); + strcpy(card->shortname, "Ensoniq AudioPCI"); sprintf(card->longname, "%s %s at 0x%lx, irq %i", card->shortname, @@ -2354,7 +2357,7 @@ } static struct pci_driver driver = { - .name = "Ensoniq AudioPCI", + .name = DRIVER_NAME, .id_table = snd_audiopci_ids, .probe = snd_audiopci_probe, .remove = __devexit_p(snd_audiopci_remove), diff -Nru a/usr/gen_init_cpio.c b/usr/gen_init_cpio.c --- a/usr/gen_init_cpio.c Mon Sep 22 00:30:22 2003 +++ b/usr/gen_init_cpio.c Mon Sep 22 00:30:22 2003 @@ -212,7 +212,7 @@ int main (int argc, char *argv[]) { - cpio_mkdir("/dev", 0700, 0, 0); + cpio_mkdir("/dev", 0755, 0, 0); cpio_mknod("/dev/console", 0600, 0, 0, 'c', 5, 1); cpio_mkdir("/root", 0700, 0, 0); cpio_trailer();