Merge rsync://oss.sgi.com/git/xfs-2.6
authorLinus Torvalds <torvalds@ppc970.osdl.org>
Wed, 22 Jun 2005 02:51:18 +0000 (19:51 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Wed, 22 Jun 2005 02:51:18 +0000 (19:51 -0700)
733 files changed:
CREDITS
Documentation/DocBook/kernel-api.tmpl
Documentation/driver-model/device.txt
Documentation/driver-model/driver.txt
Documentation/fb/intelfb.txt [new file with mode: 0644]
Documentation/filesystems/isofs.txt
Documentation/filesystems/sysfs.txt
Documentation/filesystems/tmpfs.txt
Documentation/s390/CommonIO
Documentation/sgi-ioc4.txt [new file with mode: 0644]
MAINTAINERS
arch/arm/common/amba.c
arch/arm/kernel/ecard.c
arch/arm/mm/mmap.c
arch/arm26/kernel/ecard.c
arch/frv/mm/init.c
arch/i386/boot/Makefile
arch/i386/kernel/cpuid.c
arch/i386/kernel/msr.c
arch/i386/kernel/syscall_table.S
arch/i386/kernel/traps.c
arch/i386/lib/delay.c
arch/i386/mm/hugetlbpage.c
arch/i386/mm/init.c
arch/ia64/Kconfig
arch/ia64/configs/sn2_defconfig
arch/ia64/defconfig
arch/ia64/kernel/Makefile
arch/ia64/kernel/efi.c
arch/ia64/kernel/entry.S
arch/ia64/kernel/uncached.c [new file with mode: 0644]
arch/ia64/mm/hugetlbpage.c
arch/ia64/sn/kernel/tiocx.c
arch/ia64/sn/kernel/xpc_partition.c
arch/m32r/Kconfig
arch/m32r/boot/compressed/m32r_sio.c
arch/m32r/defconfig
arch/m32r/kernel/Makefile
arch/m32r/kernel/io_m32700ut.c
arch/m32r/kernel/io_mappi.c
arch/m32r/kernel/io_mappi2.c
arch/m32r/kernel/io_mappi3.c [new file with mode: 0644]
arch/m32r/kernel/io_oaks32r.c
arch/m32r/kernel/io_opsput.c
arch/m32r/kernel/io_usrv.c
arch/m32r/kernel/setup.c
arch/m32r/kernel/setup_m32700ut.c
arch/m32r/kernel/setup_mappi.c
arch/m32r/kernel/setup_mappi2.c
arch/m32r/kernel/setup_mappi3.c [new file with mode: 0644]
arch/m32r/kernel/setup_oaks32r.c
arch/m32r/kernel/setup_opsput.c
arch/m32r/kernel/setup_usrv.c
arch/m32r/m32700ut/defconfig.m32700ut.smp
arch/m32r/m32700ut/defconfig.m32700ut.up
arch/m32r/mappi/defconfig.nommu
arch/m32r/mappi/defconfig.smp
arch/m32r/mappi/defconfig.up
arch/m32r/mappi2/defconfig.vdec2
arch/m32r/mappi3/defconfig.smp [new file with mode: 0644]
arch/m32r/mappi3/dot.gdbinit [new file with mode: 0644]
arch/m32r/mm/extable.c
arch/m32r/oaks32r/defconfig.nommu
arch/m32r/opsput/defconfig.opsput
arch/mips/mm/init.c
arch/parisc/kernel/drivers.c
arch/ppc/Kconfig
arch/ppc/boot/ld.script
arch/ppc/boot/openfirmware/Makefile
arch/ppc/boot/openfirmware/common.c
arch/ppc/boot/simple/Makefile
arch/ppc/boot/utils/addSystemMap.c [deleted file]
arch/ppc/configs/mpc8548_cds_defconfig [new file with mode: 0644]
arch/ppc/kernel/cputable.c
arch/ppc/kernel/entry.S
arch/ppc/kernel/head_4xx.S
arch/ppc/kernel/head_booke.h
arch/ppc/kernel/pci.c
arch/ppc/kernel/setup.c
arch/ppc/kernel/traps.c
arch/ppc/lib/locks.c
arch/ppc/mm/fsl_booke_mmu.c
arch/ppc/mm/init.c
arch/ppc/mm/mmu_decl.h
arch/ppc/mm/pgtable.c
arch/ppc/platforms/83xx/mpc834x_sys.c
arch/ppc/platforms/85xx/Kconfig
arch/ppc/platforms/85xx/Makefile
arch/ppc/platforms/85xx/mpc8540_ads.c
arch/ppc/platforms/85xx/mpc8560_ads.c
arch/ppc/platforms/85xx/mpc85xx_ads_common.c
arch/ppc/platforms/85xx/mpc85xx_cds_common.c
arch/ppc/platforms/85xx/sbc8560.c
arch/ppc/platforms/85xx/sbc85xx.c
arch/ppc/platforms/85xx/stx_gp3.c
arch/ppc/platforms/sandpoint.c
arch/ppc/syslib/Makefile
arch/ppc/syslib/mpc10x_common.c
arch/ppc/syslib/mpc85xx_devices.c
arch/ppc/syslib/mpc85xx_sys.c
arch/ppc/syslib/ocp.c
arch/ppc/syslib/of_device.c
arch/ppc/syslib/open_pic.c
arch/ppc/syslib/open_pic2.c
arch/ppc/syslib/ppc4xx_kgdb.c [deleted file]
arch/ppc/syslib/ppc83xx_setup.c
arch/ppc/syslib/ppc85xx_setup.c
arch/ppc/xmon/xmon.c
arch/ppc64/Kconfig
arch/ppc64/Makefile
arch/ppc64/kernel/HvLpEvent.c
arch/ppc64/kernel/ItLpQueue.c
arch/ppc64/kernel/Makefile
arch/ppc64/kernel/XmPciLpEvent.c [deleted file]
arch/ppc64/kernel/asm-offsets.c
arch/ppc64/kernel/dma.c
arch/ppc64/kernel/eeh.c
arch/ppc64/kernel/head.S
arch/ppc64/kernel/iSeries_VpdInfo.c
arch/ppc64/kernel/iSeries_iommu.c
arch/ppc64/kernel/iSeries_irq.c
arch/ppc64/kernel/iSeries_pci.c
arch/ppc64/kernel/iSeries_pci_reset.c [deleted file]
arch/ppc64/kernel/iSeries_proc.c
arch/ppc64/kernel/iSeries_setup.c
arch/ppc64/kernel/iSeries_smp.c
arch/ppc64/kernel/idle.c
arch/ppc64/kernel/irq.c
arch/ppc64/kernel/lparcfg.c
arch/ppc64/kernel/mf.c
arch/ppc64/kernel/of_device.c
arch/ppc64/kernel/pci.c
arch/ppc64/kernel/process.c
arch/ppc64/kernel/prom.c
arch/ppc64/kernel/ras.c
arch/ppc64/kernel/rtc.c
arch/ppc64/kernel/setup.c
arch/ppc64/kernel/sys_ppc32.c
arch/ppc64/kernel/vio.c
arch/ppc64/kernel/viopath.c
arch/ppc64/lib/Makefile
arch/ppc64/mm/hash_utils.c
arch/ppc64/mm/hugetlbpage.c
arch/ppc64/mm/imalloc.c
arch/ppc64/mm/init.c
arch/ppc64/xmon/xmon.c
arch/s390/kernel/compat_ioctl.c
arch/s390/kernel/head.S
arch/s390/kernel/head64.S
arch/s390/kernel/traps.c
arch/s390/mm/cmm.c
arch/sh/kernel/sys_sh.c
arch/sh/lib/delay.c
arch/sh/mm/hugetlbpage.c
arch/sh64/mm/hugetlbpage.c
arch/sparc/mm/init.c
arch/sparc64/kernel/sys_sparc.c
arch/sparc64/lib/delay.c
arch/sparc64/mm/hugetlbpage.c
arch/sparc64/solaris/socket.c
arch/um/Kconfig
arch/um/Makefile
arch/um/drivers/line.c
arch/um/drivers/net_kern.c
arch/um/drivers/port_kern.c
arch/um/drivers/xterm_kern.c
arch/um/kernel/irq.c
arch/um/kernel/irq_user.c
arch/um/kernel/mem.c
arch/um/kernel/tt/Makefile
arch/um/kernel/tt/unmap.c [deleted file]
arch/um/kernel/uml.lds.S
arch/um/scripts/Makefile.rules
arch/um/scripts/Makefile.unmap [new file with mode: 0644]
arch/um/sys-i386/Makefile
arch/um/sys-i386/unmap.c [new file with mode: 0644]
arch/um/sys-x86_64/Makefile
arch/um/sys-x86_64/unmap.c [new file with mode: 0644]
arch/x86_64/ia32/ia32_aout.c
arch/x86_64/ia32/ia32_binfmt.c
arch/x86_64/kernel/process.c
arch/x86_64/kernel/ptrace.c
arch/x86_64/kernel/sys_x86_64.c
arch/x86_64/lib/delay.c
arch/x86_64/mm/fault.c
drivers/Kconfig
drivers/Makefile
drivers/acpi/processor_idle.c
drivers/acpi/scan.c
drivers/base/Makefile
drivers/base/base.h
drivers/base/bus.c
drivers/base/class.c
drivers/base/class_simple.c [deleted file]
drivers/base/core.c
drivers/base/dd.c [new file with mode: 0644]
drivers/base/dmapool.c
drivers/base/driver.c
drivers/base/node.c
drivers/base/power/resume.c
drivers/base/power/suspend.c
drivers/base/power/sysfs.c
drivers/base/sys.c
drivers/block/aoe/aoechr.c
drivers/block/as-iosched.c
drivers/block/cfq-iosched.c
drivers/block/deadline-iosched.c
drivers/block/genhd.c
drivers/block/ll_rw_blk.c
drivers/block/paride/pg.c
drivers/block/paride/pt.c
drivers/block/ub.c
drivers/char/Kconfig
drivers/char/Makefile
drivers/char/dsp56k.c
drivers/char/ftape/zftape/zftape-init.c
drivers/char/hvcs.c
drivers/char/ip2main.c
drivers/char/ipmi/ipmi_devintf.c
drivers/char/ipmi/ipmi_msghandler.c
drivers/char/istallion.c
drivers/char/lp.c
drivers/char/mbcs.c
drivers/char/mem.c
drivers/char/misc.c
drivers/char/mwave/mwavedd.c
drivers/char/ppdev.c
drivers/char/raw.c
drivers/char/snsc.c
drivers/char/stallion.c
drivers/char/tipar.c
drivers/char/tpm/tpm.c
drivers/char/tty_io.c
drivers/char/vc_screen.c
drivers/char/viotape.c
drivers/char/vr41xx_giu.c [new file with mode: 0644]
drivers/cpufreq/cpufreq.c
drivers/dio/dio-sysfs.c
drivers/eisa/eisa-bus.c
drivers/firmware/edd.c
drivers/firmware/efivars.c
drivers/i2c/chips/adm1021.c
drivers/i2c/chips/adm1025.c
drivers/i2c/chips/adm1026.c
drivers/i2c/chips/adm1031.c
drivers/i2c/chips/asb100.c
drivers/i2c/chips/ds1621.c
drivers/i2c/chips/fscher.c
drivers/i2c/chips/fscpos.c
drivers/i2c/chips/gl518sm.c
drivers/i2c/chips/gl520sm.c
drivers/i2c/chips/it87.c
drivers/i2c/chips/lm63.c
drivers/i2c/chips/lm75.c
drivers/i2c/chips/lm77.c
drivers/i2c/chips/lm78.c
drivers/i2c/chips/lm80.c
drivers/i2c/chips/lm83.c
drivers/i2c/chips/lm85.c
drivers/i2c/chips/lm87.c
drivers/i2c/chips/lm90.c
drivers/i2c/chips/lm92.c
drivers/i2c/chips/max1619.c
drivers/i2c/chips/pc87360.c
drivers/i2c/chips/pcf8574.c
drivers/i2c/chips/pcf8591.c
drivers/i2c/chips/sis5595.c
drivers/i2c/chips/smsc47b397.c
drivers/i2c/chips/smsc47m1.c
drivers/i2c/chips/via686a.c
drivers/i2c/chips/w83627hf.c
drivers/i2c/chips/w83781d.c
drivers/i2c/chips/w83l785ts.c
drivers/i2c/i2c-core.c
drivers/ide/Kconfig
drivers/ide/pci/sgiioc4.c
drivers/ieee1394/dv1394.c
drivers/ieee1394/ieee1394_core.c
drivers/ieee1394/ieee1394_core.h
drivers/ieee1394/nodemgr.c
drivers/ieee1394/raw1394.c
drivers/ieee1394/sbp2.c
drivers/ieee1394/video1394.c
drivers/infiniband/core/sysfs.c
drivers/input/evdev.c
drivers/input/gameport/gameport.c
drivers/input/input.c
drivers/input/joydev.c
drivers/input/keyboard/atkbd.c
drivers/input/mouse/psmouse.h
drivers/input/mousedev.c
drivers/input/serio/serio.c
drivers/input/tsdev.c
drivers/isdn/capi/capi.c
drivers/macintosh/adb.c
drivers/macintosh/therm_adt746x.c
drivers/macintosh/therm_pm72.c
drivers/macintosh/therm_windtunnel.c
drivers/mca/mca-bus.c
drivers/md/Makefile
drivers/md/bitmap.c [new file with mode: 0644]
drivers/md/dm-crypt.c
drivers/md/linear.c
drivers/md/md.c
drivers/md/multipath.c
drivers/md/raid0.c
drivers/md/raid1.c
drivers/md/raid10.c
drivers/md/raid5.c
drivers/md/raid6main.c
drivers/media/dvb/dvb-core/dvbdev.c
drivers/message/fusion/mptscsih.c
drivers/message/fusion/mptscsih.h
drivers/misc/ibmasm/command.c
drivers/misc/ibmasm/dot_command.c
drivers/misc/ibmasm/event.c
drivers/misc/ibmasm/heartbeat.c
drivers/misc/ibmasm/ibmasm.h
drivers/misc/ibmasm/ibmasmfs.c
drivers/misc/ibmasm/lowlevel.c
drivers/misc/ibmasm/module.c
drivers/misc/ibmasm/r_heartbeat.c
drivers/misc/ibmasm/remote.c
drivers/misc/ibmasm/remote.h
drivers/mmc/mmc_sysfs.c
drivers/net/3c59x.c
drivers/net/8390.c
drivers/net/ppp_generic.c
drivers/net/wan/cosa.c
drivers/oprofile/buffer_sync.c
drivers/pci/hotplug/cpqphp_sysfs.c
drivers/pci/hotplug/pci_hotplug_core.c
drivers/pci/hotplug/rpadlpar_sysfs.c
drivers/pci/hotplug/shpchp_sysfs.c
drivers/pci/pci-driver.c
drivers/pci/pci-sysfs.c
drivers/pci/pcie/portdrv_core.c
drivers/pcmcia/Kconfig
drivers/pcmcia/ds.c
drivers/pcmcia/m32r_cfc.c
drivers/pcmcia/m32r_cfc.h
drivers/pnp/card.c
drivers/pnp/driver.c
drivers/pnp/interface.c
drivers/s390/block/dasd_devmap.c
drivers/s390/block/dcssblk.c
drivers/s390/char/raw3270.c
drivers/s390/char/tape_class.c
drivers/s390/char/tape_core.c
drivers/s390/char/vmlogrdr.c
drivers/s390/cio/blacklist.c
drivers/s390/cio/ccwgroup.c
drivers/s390/cio/chsc.c
drivers/s390/cio/cmf.c
drivers/s390/cio/device.c
drivers/s390/net/claw.c
drivers/s390/net/ctcmain.c
drivers/s390/net/lcs.c
drivers/s390/net/netiucv.c
drivers/s390/net/qeth_sys.c
drivers/s390/scsi/zfcp_scsi.c
drivers/s390/scsi/zfcp_sysfs_adapter.c
drivers/s390/scsi/zfcp_sysfs_port.c
drivers/s390/scsi/zfcp_sysfs_unit.c
drivers/scsi/53c700.c
drivers/scsi/arm/eesox.c
drivers/scsi/arm/powertec.c
drivers/scsi/ipr.c
drivers/scsi/megaraid.c
drivers/scsi/megaraid/megaraid_mbox.c
drivers/scsi/osst.c
drivers/scsi/scsi_sysfs.c
drivers/scsi/scsi_transport_spi.c
drivers/scsi/sg.c
drivers/scsi/st.c
drivers/serial/Kconfig
drivers/serial/Makefile
drivers/serial/cpm_uart/cpm_uart_cpm2.c
drivers/serial/ioc4_serial.c
drivers/sh/superhyway/superhyway-sysfs.c
drivers/sn/Kconfig [new file with mode: 0644]
drivers/sn/Makefile
drivers/sn/ioc4.c
drivers/usb/core/devices.c
drivers/usb/core/file.c
drivers/usb/core/hcd.c
drivers/usb/core/sysfs.c
drivers/usb/core/usb.c
drivers/usb/gadget/dummy_hcd.c
drivers/usb/gadget/file_storage.c
drivers/usb/gadget/net2280.c
drivers/usb/gadget/pxa2xx_udc.c
drivers/usb/host/ehci-dbg.c
drivers/usb/host/ohci-dbg.c
drivers/usb/input/aiptek.c
drivers/usb/misc/cytherm.c
drivers/usb/misc/phidgetkit.c
drivers/usb/misc/phidgetservo.c
drivers/usb/misc/usbled.c
drivers/usb/serial/ftdi_sio.c
drivers/usb/storage/scsiglue.c
drivers/video/Kconfig
drivers/video/Makefile
drivers/video/arcfb.c [new file with mode: 0644]
drivers/video/chipsfb.c
drivers/video/console/Kconfig
drivers/video/console/Makefile
drivers/video/console/bitblit.c
drivers/video/console/font_10x18.c [new file with mode: 0644]
drivers/video/console/font_7x14.c [new file with mode: 0644]
drivers/video/console/font_sun12x22.c
drivers/video/console/fonts.c
drivers/video/console/vgacon.c
drivers/video/fbmem.c
drivers/video/gbefb.c
drivers/video/i810/i810_main.c
drivers/video/intelfb/intelfbdrv.c
drivers/video/nvidia/nvidia.c
drivers/video/pm3fb.c
drivers/video/riva/fbdev.c
drivers/video/s1d13xxxfb.c
drivers/video/savage/savagefb_driver.c
drivers/video/softcursor.c
drivers/video/vesafb.c
drivers/video/w100fb.c
drivers/w1/w1.c
drivers/w1/w1_family.h
drivers/w1/w1_smem.c
drivers/w1/w1_therm.c
drivers/zorro/zorro-sysfs.c
fs/Kconfig
fs/autofs4/autofs_i.h
fs/autofs4/expire.c
fs/autofs4/root.c
fs/autofs4/waitq.c
fs/binfmt_aout.c
fs/binfmt_elf.c
fs/buffer.c
fs/coda/psdev.c
fs/debugfs/file.c
fs/hugetlbfs/inode.c
fs/isofs/dir.c
fs/isofs/inode.c
fs/isofs/isofs.h
fs/isofs/namei.c
fs/isofs/rock.c
fs/isofs/rock.h
fs/jfs/acl.c
fs/jfs/file.c
fs/jfs/inode.c
fs/jfs/jfs_debug.c
fs/jfs/jfs_debug.h
fs/jfs/jfs_dmap.c
fs/jfs/jfs_dtree.c
fs/jfs/jfs_extent.c
fs/jfs/jfs_imap.c
fs/jfs/jfs_inode.c
fs/jfs/jfs_inode.h
fs/jfs/jfs_logmgr.c
fs/jfs/jfs_logmgr.h
fs/jfs/jfs_metapage.c
fs/jfs/jfs_metapage.h
fs/jfs/jfs_superblock.h
fs/jfs/jfs_txnmgr.c
fs/jfs/jfs_txnmgr.h
fs/jfs/namei.c
fs/jfs/super.c
fs/jfs/symlink.c
fs/jfs/xattr.c
fs/libfs.c
fs/proc/proc_misc.c
fs/super.c
fs/sysfs/bin.c
fs/sysfs/dir.c
fs/sysfs/file.c
fs/sysfs/inode.c
fs/sysfs/mount.c
fs/sysfs/symlink.c
fs/sysfs/sysfs.h
fs/xfs/linux-2.6/xfs_linux.h
include/asm-alpha/smp.h
include/asm-arm/smp.h
include/asm-arm/system.h
include/asm-generic/pgtable.h
include/asm-i386/page.h
include/asm-i386/pgtable.h
include/asm-i386/smp.h
include/asm-i386/unistd.h
include/asm-ia64/mmzone.h
include/asm-ia64/pgtable.h
include/asm-ia64/smp.h
include/asm-ia64/sn/mspec.h [new file with mode: 0644]
include/asm-ia64/uncached.h [new file with mode: 0644]
include/asm-ia64/unistd.h
include/asm-m32r/div64.h
include/asm-m32r/ide.h
include/asm-m32r/m32102.h
include/asm-m32r/m32102peri.h [deleted file]
include/asm-m32r/m32r.h
include/asm-m32r/mappi3/mappi3_pld.h [new file with mode: 0644]
include/asm-m32r/smp.h
include/asm-mips/smp.h
include/asm-mips/vr41xx/giu.h [new file with mode: 0644]
include/asm-mips/vr41xx/vr41xx.h
include/asm-parisc/smp.h
include/asm-ppc/irq.h
include/asm-ppc/mpc10x.h
include/asm-ppc/mpc85xx.h
include/asm-ppc/ocp.h
include/asm-ppc/pgtable.h
include/asm-ppc/ppc_sys.h
include/asm-ppc/smp.h
include/asm-ppc64/dma.h
include/asm-ppc64/iSeries/HvCall.h
include/asm-ppc64/iSeries/HvCallCfg.h [deleted file]
include/asm-ppc64/iSeries/HvCallEvent.h
include/asm-ppc64/iSeries/HvCallHpt.h
include/asm-ppc64/iSeries/HvCallPci.h
include/asm-ppc64/iSeries/HvCallSc.h
include/asm-ppc64/iSeries/HvCallSm.h
include/asm-ppc64/iSeries/HvCallXm.h
include/asm-ppc64/iSeries/HvLpConfig.h
include/asm-ppc64/iSeries/HvLpEvent.h
include/asm-ppc64/iSeries/HvReleaseData.h
include/asm-ppc64/iSeries/HvTypes.h
include/asm-ppc64/iSeries/IoHriMainStore.h
include/asm-ppc64/iSeries/IoHriProcessorVpd.h
include/asm-ppc64/iSeries/ItExtVpdPanel.h
include/asm-ppc64/iSeries/ItIplParmsReal.h
include/asm-ppc64/iSeries/ItLpNaca.h
include/asm-ppc64/iSeries/ItLpQueue.h
include/asm-ppc64/iSeries/ItLpRegSave.h
include/asm-ppc64/iSeries/ItSpCommArea.h
include/asm-ppc64/iSeries/ItVpdAreas.h
include/asm-ppc64/iSeries/LparData.h [deleted file]
include/asm-ppc64/iSeries/LparMap.h
include/asm-ppc64/iSeries/XmPciLpEvent.h [deleted file]
include/asm-ppc64/iSeries/iSeries_io.h
include/asm-ppc64/iSeries/iSeries_irq.h
include/asm-ppc64/iSeries/iSeries_pci.h
include/asm-ppc64/iSeries/iSeries_proc.h [deleted file]
include/asm-ppc64/iSeries/mf.h
include/asm-ppc64/iSeries/vio.h
include/asm-ppc64/imalloc.h
include/asm-ppc64/iommu.h
include/asm-ppc64/paca.h
include/asm-ppc64/page.h
include/asm-ppc64/pgtable.h
include/asm-ppc64/processor.h
include/asm-ppc64/smp.h
include/asm-s390/smp.h
include/asm-sh/page.h
include/asm-sh/pgtable.h
include/asm-sh/smp.h
include/asm-sh64/page.h
include/asm-sh64/pgtable.h
include/asm-sparc/smp.h
include/asm-sparc64/page.h
include/asm-sparc64/pgtable.h
include/asm-sparc64/processor.h
include/asm-sparc64/smp.h
include/asm-um/smp.h
include/asm-x86_64/a.out.h
include/asm-x86_64/page.h
include/asm-x86_64/pgtable.h
include/asm-x86_64/processor.h
include/asm-x86_64/smp.h
include/linux/arcfb.h [new file with mode: 0644]
include/linux/atalk.h
include/linux/auto_fs4.h
include/linux/device.h
include/linux/fb.h
include/linux/font.h
include/linux/fs.h
include/linux/fsl_devices.h
include/linux/genalloc.h [new file with mode: 0644]
include/linux/gfp.h
include/linux/hugetlb.h
include/linux/i2c-sysfs.h [new file with mode: 0644]
include/linux/input.h
include/linux/ioc4.h [new file with mode: 0644]
include/linux/ioc4_common.h [deleted file]
include/linux/irq.h
include/linux/klist.h [new file with mode: 0644]
include/linux/kobject.h
include/linux/mm.h
include/linux/mmzone.h
include/linux/netfilter_ipv4.h
include/linux/netfilter_ipv4/ip_conntrack_core.h
include/linux/netfilter_ipv4/ip_nat.h
include/linux/netfilter_ipv4/listhelp.h
include/linux/netfilter_ipv4/lockhelp.h [deleted file]
include/linux/netlink.h
include/linux/node.h
include/linux/page-flags.h
include/linux/pagemap.h
include/linux/pci_ids.h
include/linux/pfkeyv2.h
include/linux/raid/bitmap.h [new file with mode: 0644]
include/linux/raid/md.h
include/linux/raid/md_k.h
include/linux/raid/md_p.h
include/linux/raid/md_u.h
include/linux/raid/raid1.h
include/linux/sched.h
include/linux/skbuff.h
include/linux/smp.h
include/linux/swap.h
include/linux/sysfs.h
include/linux/usb.h
include/linux/xfrm.h
include/net/ax25.h
include/net/ip6_fib.h
include/net/ip6_route.h
include/net/ip_fib.h
include/net/route.h
include/net/sctp/command.h
include/net/sctp/constants.h
include/net/sctp/sctp.h
include/net/sctp/sm.h
include/net/sctp/structs.h
include/net/sctp/user.h
include/net/snmp.h
include/net/xfrm.h
init/main.c
kernel/fork.c
kernel/irq/manage.c
kernel/module.c
kernel/params.c
kernel/power/smp.c
kernel/sched.c
kernel/stop_machine.c
kernel/sys_ni.c
lib/Kconfig
lib/Makefile
lib/genalloc.c [new file with mode: 0644]
lib/idr.c
lib/kernel_lock.c
lib/klist.c [new file with mode: 0644]
lib/kobject.c
lib/kobject_uevent.c
lib/smp_processor_id.c [new file with mode: 0644]
mm/hugetlb.c
mm/madvise.c
mm/memory.c
mm/mempolicy.c
mm/mmap.c
mm/msync.c
mm/nommu.c
mm/oom_kill.c
mm/page_alloc.c
mm/rmap.c
mm/shmem.c
mm/slab.c
mm/swapfile.c
mm/vmscan.c
net/appletalk/aarp.c
net/appletalk/ddp.c
net/bridge/br_forward.c
net/bridge/br_input.c
net/bridge/br_netfilter.c
net/core/netfilter.c
net/core/skbuff.c
net/ipv4/Kconfig
net/ipv4/Makefile
net/ipv4/af_inet.c
net/ipv4/ah4.c
net/ipv4/esp4.c
net/ipv4/fib_frontend.c
net/ipv4/fib_trie.c [new file with mode: 0644]
net/ipv4/ip_input.c
net/ipv4/ip_output.c
net/ipv4/ipcomp.c
net/ipv4/ipmr.c
net/ipv4/ipvs/ip_vs_xmit.c
net/ipv4/netfilter/arp_tables.c
net/ipv4/netfilter/ip_conntrack_amanda.c
net/ipv4/netfilter/ip_conntrack_core.c
net/ipv4/netfilter/ip_conntrack_ftp.c
net/ipv4/netfilter/ip_conntrack_irc.c
net/ipv4/netfilter/ip_conntrack_proto_sctp.c
net/ipv4/netfilter/ip_conntrack_proto_tcp.c
net/ipv4/netfilter/ip_conntrack_proto_udp.c
net/ipv4/netfilter/ip_conntrack_standalone.c
net/ipv4/netfilter/ip_nat_core.c
net/ipv4/netfilter/ip_nat_helper.c
net/ipv4/netfilter/ip_nat_rule.c
net/ipv4/netfilter/ip_nat_standalone.c
net/ipv4/netfilter/ip_tables.c
net/ipv4/netfilter/ipt_CLUSTERIP.c
net/ipv4/netfilter/ipt_MASQUERADE.c
net/ipv4/netfilter/ipt_REJECT.c
net/ipv4/netfilter/ipt_ULOG.c
net/ipv4/netfilter/ipt_hashlimit.c
net/ipv4/netfilter/ipt_helper.c
net/ipv4/xfrm4_output.c
net/ipv4/xfrm4_state.c
net/ipv4/xfrm4_tunnel.c
net/ipv6/addrconf.c
net/ipv6/ah6.c
net/ipv6/anycast.c
net/ipv6/esp6.c
net/ipv6/ip6_fib.c
net/ipv6/ip6_output.c
net/ipv6/ipcomp6.c
net/ipv6/ipv6_sockglue.c
net/ipv6/mcast.c
net/ipv6/ndisc.c
net/ipv6/netfilter/ip6_tables.c
net/ipv6/netfilter/ip6t_LOG.c
net/ipv6/netfilter/ip6table_raw.c
net/ipv6/route.c
net/ipv6/xfrm6_tunnel.c
net/key/af_key.c
net/sctp/associola.c
net/sctp/endpointola.c
net/sctp/input.c
net/sctp/outqueue.c
net/sctp/sm_make_chunk.c
net/sctp/sm_sideeffect.c
net/sctp/sm_statefuns.c
net/sctp/sm_statetable.c
net/sctp/socket.c
net/sctp/transport.c
net/xfrm/xfrm_policy.c
net/xfrm/xfrm_state.c
net/xfrm/xfrm_user.c
security/seclvl.c
security/selinux/hooks.c
sound/core/sound.c
sound/oss/rme96xx.c
sound/oss/soundcard.c
sound/sound_core.c

diff --git a/CREDITS b/CREDITS
index d65ffe5a4d0803c59159592b258f0dfc049ec8d3..2993348ce6ce425cd8c9a48d266d4a8b80977a3b 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -1880,6 +1880,13 @@ S: Schlehenweg 9
 S: D-91080 Uttenreuth
 S: Germany
 
+N: Jaya Kumar
+E: jayalk@intworks.biz
+W: http://www.intworks.biz
+D: Arc monochrome LCD framebuffer driver, x86 reboot fixups
+S: Gurgaon, India
+S: Kuala Lumpur, Malaysia
+
 N: Gabor Kuti
 M: seasons@falcon.sch.bme.hu
 M: seasons@makosteszta.sote.hu
index 757cef8f84918165b68a8ee67a763fb21fd342b3..bb6a0106be1100951a7b99696f9e8176bd862e7e 100644 (file)
@@ -338,7 +338,6 @@ X!Earch/i386/kernel/mca.c
 X!Iinclude/linux/device.h
 -->
 !Edrivers/base/driver.c
-!Edrivers/base/class_simple.c
 !Edrivers/base/core.c
 !Edrivers/base/firmware_class.c
 !Edrivers/base/transport_class.c
index 58cc5dc8fd3eac2f8851674db7909d0f56c32f79..a05ec50f8004dd65f29c87579612389f93660187 100644 (file)
@@ -76,6 +76,14 @@ driver_data:   Driver-specific data.
 
 platform_data: Platform data specific to the device.
 
+              Example:  for devices on custom boards, as typical of embedded
+              and SOC based hardware, Linux often uses platform_data to point
+              to board-specific structures describing devices and how they
+              are wired.  That can include what ports are available, chip
+              variants, which GPIO pins act in what additional roles, and so
+              on.  This shrinks the "Board Support Packages" (BSPs) and
+              minimizes board-specific #ifdefs in drivers.
+
 current_state: Current power state of the device.
 
 saved_state:   Pointer to saved state of the device. This is usable by
index 6031a68dd3f5c249ea5daf391948d058fda44fef..fabaca1ab1b0b0f56980a4802b81b7a11e1aa241 100644 (file)
@@ -5,21 +5,17 @@ struct device_driver {
         char                    * name;
         struct bus_type         * bus;
 
-        rwlock_t                lock;
-        atomic_t                refcount;
-
-        list_t                  bus_list;
+        struct completion      unloaded;
+        struct kobject         kobj;
         list_t                  devices;
 
-        struct driver_dir_entry dir;
+        struct module          *owner;
 
         int     (*probe)        (struct device * dev);
         int     (*remove)       (struct device * dev);
 
         int     (*suspend)      (struct device * dev, pm_message_t state, u32 level);
         int     (*resume)       (struct device * dev, u32 level);
-
-        void    (*release)      (struct device_driver * drv);
 };
 
 
@@ -51,7 +47,6 @@ being converted completely to the new model.
 static struct device_driver eepro100_driver = {
        .name           = "eepro100",
        .bus            = &pci_bus_type,
-       .devclass       = &ethernet_devclass,   /* when it's implemented */
        
        .probe          = eepro100_probe,
        .remove         = eepro100_remove,
@@ -85,7 +80,6 @@ static struct pci_driver eepro100_driver = {
        .driver        = {
                .name           = "eepro100",
                .bus            = &pci_bus_type,
-               .devclass       = &ethernet_devclass,   /* when it's implemented */
                .probe          = eepro100_probe,
                .remove         = eepro100_remove,
                .suspend        = eepro100_suspend,
@@ -166,27 +160,32 @@ Callbacks
 
        int     (*probe)        (struct device * dev);
 
-probe is called to verify the existence of a certain type of
-hardware. This is called during the driver binding process, after the
-bus has verified that the device ID of a device matches one of the
-device IDs supported by the driver. 
-
-This callback only verifies that there actually is supported hardware
-present. It may allocate a driver-specific structure, but it should
-not do any initialization of the hardware itself. The device-specific
-structure may be stored in the device's driver_data field. 
-
-       int     (*init)         (struct device * dev);
-
-init is called during the binding stage. It is called after probe has
-successfully returned and the device has been registered with its
-class. It is responsible for initializing the hardware.
+The probe() entry is called in task context, with the bus's rwsem locked
+and the driver partially bound to the device.  Drivers commonly use
+container_of() to convert "dev" to a bus-specific type, both in probe()
+and other routines.  That type often provides device resource data, such
+as pci_dev.resource[] or platform_device.resources, which is used in
+addition to dev->platform_data to initialize the driver.
+
+This callback holds the driver-specific logic to bind the driver to a
+given device.  That includes verifying that the device is present, that
+it's a version the driver can handle, that driver data structures can
+be allocated and initialized, and that any hardware can be initialized.
+Drivers often store a pointer to their state with dev_set_drvdata().
+When the driver has successfully bound itself to that device, then probe()
+returns zero and the driver model code will finish its part of binding
+the driver to that device.
+
+A driver's probe() may return a negative errno value to indicate that
+the driver did not bind to this device, in which case it should have
+released all reasources it allocated.
 
        int     (*remove)       (struct device * dev);
 
-remove is called to dissociate a driver with a device. This may be
+remove is called to unbind a driver from a device. This may be
 called if a device is physically removed from the system, if the
-driver module is being unloaded, or during a reboot sequence. 
+driver module is being unloaded, during a reboot sequence, or
+in other cases.
 
 It is up to the driver to determine if the device is present or
 not. It should free any resources allocated specifically for the
diff --git a/Documentation/fb/intelfb.txt b/Documentation/fb/intelfb.txt
new file mode 100644 (file)
index 0000000..c12d39a
--- /dev/null
@@ -0,0 +1,135 @@
+Intel 830M/845G/852GM/855GM/865G/915G Framebuffer driver
+================================================================
+
+A. Introduction
+       This is a framebuffer driver for various Intel 810/815 compatible
+graphics devices.  These would include:
+
+       Intel 830M
+       Intel 810E845G
+       Intel 852GM
+       Intel 855GM
+       Intel 865G
+       Intel 915G
+
+B.  List of available options
+
+   a. "video=intelfb"
+       enables the intelfb driver
+
+       Recommendation: required
+
+   b. "mode=<xres>x<yres>[-<bpp>][@<refresh>]"
+       select mode
+
+       Recommendation: user preference
+       (default = 1024x768-32@70)
+
+   c. "vram=<value>"
+       select amount of system RAM in MB to allocate for the video memory
+       if not enough RAM was already allocated by the BIOS.
+
+       Recommendation: 1 - 4 MB.
+       (default = 4 MB)
+
+   d. "voffset=<value>"
+        select at what offset in MB of the logical memory to allocate the
+       framebuffer memory.  The intent is to avoid the memory blocks
+       used by standard graphics applications (XFree86). Depending on your
+        usage, adjust the value up or down, (0 for maximum usage, 63/127 MB
+        for the least amount).  Note, an arbitrary setting may conflict
+        with XFree86.
+
+       Recommendation: do not set
+       (default = 48 MB)
+
+   e. "accel"
+       enable text acceleration.  This can be enabled/reenabled anytime
+       by using 'fbset -accel true/false'.
+
+       Recommendation: enable
+       (default = set)
+
+   f. "hwcursor"
+       enable cursor acceleration.
+
+       Recommendation: enable
+       (default = set)
+
+   g. "mtrr"
+       enable MTRR.  This allows data transfers to the framebuffer memory
+       to occur in bursts which can significantly increase performance.
+       Not very helpful with the intel chips because of 'shared memory'.
+
+       Recommendation: set
+       (default = set)
+
+   h. "fixed"
+       disable mode switching.
+
+       Recommendation: do not set
+       (default = not set)
+
+   The binary parameters can be unset with a "no" prefix, example "noaccel".
+   The default parameter (not named) is the mode.
+
+C. Kernel booting
+
+Separate each option/option-pair by commas (,) and the option from its value
+with an equals sign (=) as in the following:
+
+video=i810fb:option1,option2=value2
+
+Sample Usage
+------------
+
+In /etc/lilo.conf, add the line:
+
+append="video=intelfb:800x600-32@75,accel,hwcursor,vram=8"
+
+This will initialize the framebuffer to 800x600 at 32bpp and 75Hz. The
+framebuffer will use 8 MB of System RAM. hw acceleration of text and cursor
+will be enabled.
+
+D.  Module options
+
+       The module parameters are essentially similar to the kernel
+parameters. The main difference is that you need to include a Boolean value
+(1 for TRUE, and 0 for FALSE) for those options which don't need a value.
+
+Example, to enable MTRR, include "mtrr=1".
+
+Sample Usage
+------------
+
+Using the same setup as described above, load the module like this:
+
+       modprobe intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1
+
+Or just add the following to /etc/modprobe.conf
+
+       options intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1
+
+and just do a
+
+       modprobe intelfb
+
+
+E.  Acknowledgment:
+
+       1.  Geert Uytterhoeven - his excellent howto and the virtual
+                                 framebuffer driver code made this possible.
+
+       2.  Jeff Hartmann for his agpgart code.
+
+       3.  David Dawes for his original kernel 2.4 code.
+
+       4.  The X developers.  Insights were provided just by reading the
+           XFree86 source code.
+
+       5.  Antonino A. Daplas for his inspiring i810fb driver.
+
+       6.  Andrew Morton for his kernel patches maintenance.
+
+###########################
+Sylvain
index f64a10506689124943a5bdd9d1b43271d62b387c..424585ff6ea1c18daf7b9f47da97edd72b72dba1 100644 (file)
@@ -26,7 +26,11 @@ Mount options unique to the isofs filesystem.
   mode=xxx      Sets the permissions on files to xxx
   nojoliet      Ignore Joliet extensions if they are present.
   norock        Ignore Rock Ridge extensions if they are present.
-  unhide        Show hidden files.
+  hide         Completely strip hidden files from the file system.
+  showassoc    Show files marked with the 'associated' bit
+  unhide       Deprecated; showing hidden files is now default;
+               If given, it is a synonym for 'showassoc' which will
+               recreate previous unhide behavior
   session=x     Select number of session on multisession CD
   sbsector=xxx  Session begins from sector xxx
 
index 60f6c2c4d477968e2966eb152183fe1c71bc689b..dc276598a65a3784c4dd7d41470c41f288db9529 100644 (file)
@@ -214,7 +214,7 @@ Other notes:
 
 A very simple (and naive) implementation of a device attribute is:
 
-static ssize_t show_name(struct device * dev, char * buf)
+static ssize_t show_name(struct device *dev, struct device_attribute *attr, char *buf)
 {
         return sprintf(buf,"%s\n",dev->name);
 }
index 417e3095fe39a65f054ece975d01e68d99d0c018..0d783c504eade32e666e7a19b6fa89f85bfb9416 100644 (file)
@@ -71,8 +71,8 @@ can be changed on remount.  The size parameter also accepts a suffix %
 to limit this tmpfs instance to that percentage of your physical RAM:
 the default, when neither size nor nr_blocks is specified, is size=50%
 
-If both nr_blocks (or size) and nr_inodes are set to 0, neither blocks
-nor inodes will be limited in that instance.  It is generally unwise to
+If nr_blocks=0 (or size=0), blocks will not be limited in that instance;
+if nr_inodes=0, inodes will not be limited.  It is generally unwise to
 mount with such options, since it allows any user with write access to
 use up all the memory on the machine; but enhances the scalability of
 that instance in a system with many cpus making intensive use of it.
@@ -97,4 +97,4 @@ RAM/SWAP in 10240 inodes and it is only accessible by root.
 Author:
    Christoph Rohland <cr@sap.com>, 1.12.01
 Updated:
-   Hugh Dickins <hugh@veritas.com>, 01 September 2004
+   Hugh Dickins <hugh@veritas.com>, 13 March 2005
index a831d9ae5a5ef0ce6272fe08fe0d8e63e7c46ada..59d1166d41eeebc095528a84a24fa584ea0c953d 100644 (file)
@@ -30,7 +30,7 @@ Command line parameters
   device numbers (0xabcd or abcd, for 2.4 backward compatibility).
   You can use the 'all' keyword to ignore all devices.
   The '!' operator will cause the I/O-layer to _not_ ignore a device.
-  The order on the command line is not important.
+  The command line is parsed from left to right.
 
   For example, 
        cio_ignore=0.0.0023-0.0.0042,0.0.4711
@@ -72,13 +72,14 @@ Command line parameters
   /proc/cio_ignore; "add <device range>, <device range>, ..." will ignore the
   specified devices.
 
-  Note: Already known devices cannot be ignored.
+  Note: While already known devices can be added to the list of devices to be
+        ignored, there will be no effect on then. However, if such a device
+        disappears and then reappeares, it will then be ignored.
 
-  For example, if device 0.0.abcd is already known and all other devices
-  0.0.a000-0.0.afff are not known,
+  For example,
        "echo add 0.0.a000-0.0.accc, 0.0.af00-0.0.afff > /proc/cio_ignore"
-  will add 0.0.a000-0.0.abcc, 0.0.abce-0.0.accc and 0.0.af00-0.0.afff to the
-  list of ignored devices and skip 0.0.abcd.
+  will add 0.0.a000-0.0.accc and 0.0.af00-0.0.afff to the list of ignored
+  devices.
 
   The devices can be specified either by bus id (0.0.abcd) or, for 2.4 backward
   compatibilty, by the device number in hexadecimal (0xabcd or abcd).
@@ -98,7 +99,8 @@ Command line parameters
 
   - /proc/s390dbf/cio_trace/hex_ascii
     Logs the calling of functions in the common I/O-layer and, if applicable, 
-    which subchannel they were called for.
+    which subchannel they were called for, as well as dumps of some data
+    structures (like irb in an error case).
 
   The level of logging can be changed to be more or less verbose by piping to 
   /proc/s390dbf/cio_*/level a number between 0 and 6; see the documentation on
diff --git a/Documentation/sgi-ioc4.txt b/Documentation/sgi-ioc4.txt
new file mode 100644 (file)
index 0000000..876c96a
--- /dev/null
@@ -0,0 +1,45 @@
+The SGI IOC4 PCI device is a bit of a strange beast, so some notes on
+it are in order.
+
+First, even though the IOC4 performs multiple functions, such as an
+IDE controller, a serial controller, a PS/2 keyboard/mouse controller,
+and an external interrupt mechanism, it's not implemented as a
+multifunction device.  The consequence of this from a software
+standpoint is that all these functions share a single IRQ, and
+they can't all register to own the same PCI device ID.  To make
+matters a bit worse, some of the register blocks (and even registers
+themselves) present in IOC4 are mixed-purpose between these several
+functions, meaning that there's no clear "owning" device driver.
+
+The solution is to organize the IOC4 driver into several independent
+drivers, "ioc4", "sgiioc4", and "ioc4_serial".  Note that there is no
+PS/2 controller driver as this functionality has never been wired up
+on a shipping IO card.
+
+ioc4
+====
+This is the core (or shim) driver for IOC4.  It is responsible for
+initializing the basic functionality of the chip, and allocating
+the PCI resources that are shared between the IOC4 functions.
+
+This driver also provides registration functions that the other
+IOC4 drivers can call to make their presence known.  Each driver
+needs to provide a probe and remove function, which are invoked
+by the core driver at appropriate times.  The interface of these
+IOC4 function probe and remove operations isn't precisely the same
+as PCI device probe and remove operations, but is logically the
+same operation.
+
+sgiioc4
+=======
+This is the IDE driver for IOC4.  Its name isn't very descriptive
+simply for historical reasons (it used to be the only IOC4 driver
+component).  There's not much to say about it other than it hooks
+up to the ioc4 driver via the appropriate registration, probe, and
+remove functions.
+
+ioc4_serial
+===========
+This is the serial driver for IOC4.  There's not much to say about it
+other than it hooks up to the ioc4 driver via the appropriate registration,
+probe, and remove functions.
index e3f0f3f157c9f664fe7ca27f6c9d9788abe4f6bd..0f88a70a15d80c52c42237ebc858cc11daac3aa5 100644 (file)
@@ -265,6 +265,11 @@ P: Arnaldo Carvalho de Melo
 M:     acme@conectiva.com.br
 S:     Maintained
 
+ARC FRAMEBUFFER DRIVER
+P:     Jaya Kumar
+M:     jayalk@intworks.biz
+S:     Maintained
+
 ARM26 ARCHITECTURE
 P:     Ian Molton
 M:     spyro@f2s.com
index a0507f8c33fe815838a825a6abf069e035eeaef1..c6beb751f2a93b4057a49df188d8522e1809dcdc 100644 (file)
@@ -169,7 +169,7 @@ static void amba_device_release(struct device *dev)
 }
 
 #define amba_attr(name,fmt,arg...)                             \
-static ssize_t show_##name(struct device *_dev, char *buf)     \
+static ssize_t show_##name(struct device *_dev, struct device_attribute *attr, char *buf)      \
 {                                                              \
        struct amba_device *dev = to_amba_device(_dev);         \
        return sprintf(buf, fmt, arg);                          \
index 3dc15b131f532e4494e0dffa5ba4ed99fa703688..6540db6913381f4474d12594c6a84376d53724dd 100644 (file)
@@ -866,19 +866,19 @@ static struct expansion_card *__init ecard_alloc_card(int type, int slot)
        return ec;
 }
 
-static ssize_t ecard_show_irq(struct device *dev, char *buf)
+static ssize_t ecard_show_irq(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct expansion_card *ec = ECARD_DEV(dev);
        return sprintf(buf, "%u\n", ec->irq);
 }
 
-static ssize_t ecard_show_dma(struct device *dev, char *buf)
+static ssize_t ecard_show_dma(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct expansion_card *ec = ECARD_DEV(dev);
        return sprintf(buf, "%u\n", ec->dma);
 }
 
-static ssize_t ecard_show_resources(struct device *dev, char *buf)
+static ssize_t ecard_show_resources(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct expansion_card *ec = ECARD_DEV(dev);
        char *str = buf;
@@ -893,19 +893,19 @@ static ssize_t ecard_show_resources(struct device *dev, char *buf)
        return str - buf;
 }
 
-static ssize_t ecard_show_vendor(struct device *dev, char *buf)
+static ssize_t ecard_show_vendor(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct expansion_card *ec = ECARD_DEV(dev);
        return sprintf(buf, "%u\n", ec->cid.manufacturer);
 }
 
-static ssize_t ecard_show_device(struct device *dev, char *buf)
+static ssize_t ecard_show_device(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct expansion_card *ec = ECARD_DEV(dev);
        return sprintf(buf, "%u\n", ec->cid.product);
 }
 
-static ssize_t ecard_show_type(struct device *dev, char *buf)
+static ssize_t ecard_show_type(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct expansion_card *ec = ECARD_DEV(dev);
        return sprintf(buf, "%s\n", ec->type == ECARD_EASI ? "EASI" : "IOC");
index 32c4b0e35b37768f7d75fa01194f1f9c3d0baac8..3de7f84b53c25e3cdd5f8d44da252336fb55645a 100644 (file)
@@ -73,7 +73,12 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
                    (!vma || addr + len <= vma->vm_start))
                        return addr;
        }
-       start_addr = addr = mm->free_area_cache;
+       if (len > mm->cached_hole_size) {
+               start_addr = addr = mm->free_area_cache;
+       } else {
+               start_addr = addr = TASK_UNMAPPED_BASE;
+               mm->cached_hole_size = 0;
+       }
 
 full_search:
        if (do_align)
@@ -90,6 +95,7 @@ full_search:
                         */
                        if (start_addr != TASK_UNMAPPED_BASE) {
                                start_addr = addr = TASK_UNMAPPED_BASE;
+                               mm->cached_hole_size = 0;
                                goto full_search;
                        }
                        return -ENOMEM;
@@ -101,6 +107,8 @@ full_search:
                        mm->free_area_cache = addr + len;
                        return addr;
                }
+               if (addr + mm->cached_hole_size < vma->vm_start)
+                       mm->cached_hole_size = vma->vm_start - addr;
                addr = vma->vm_end;
                if (do_align)
                        addr = COLOUR_ALIGN(addr, pgoff);
index 824c6b571ad933614ab04a41ad4ad3bac446307a..f2278aadac8a28638312039ff3f6cd05cd4db640 100644 (file)
@@ -562,31 +562,31 @@ static void __init ecard_init_resources(struct expansion_card *ec)
        }
 }
 
-static ssize_t ecard_show_irq(struct device *dev, char *buf)
+static ssize_t ecard_show_irq(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct expansion_card *ec = ECARD_DEV(dev);
        return sprintf(buf, "%u\n", ec->irq);
 }
 
-static ssize_t ecard_show_vendor(struct device *dev, char *buf)
+static ssize_t ecard_show_vendor(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct expansion_card *ec = ECARD_DEV(dev);
        return sprintf(buf, "%u\n", ec->cid.manufacturer);
 }
 
-static ssize_t ecard_show_device(struct device *dev, char *buf)
+static ssize_t ecard_show_device(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct expansion_card *ec = ECARD_DEV(dev);
        return sprintf(buf, "%u\n", ec->cid.product);
 }
 
-static ssize_t ecard_show_dma(struct device *dev, char *buf)
+static ssize_t ecard_show_dma(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct expansion_card *ec = ECARD_DEV(dev);
        return sprintf(buf, "%u\n", ec->dma);
 }
 
-static ssize_t ecard_show_resources(struct device *dev, char *buf)
+static ssize_t ecard_show_resources(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct expansion_card *ec = ECARD_DEV(dev);
        char *str = buf;
index 41958f57c83864c4a8f62becaac334ea1173833e..79433159b5f05a7bbb3022c5a89b6555247f3090 100644 (file)
@@ -169,7 +169,6 @@ void __init mem_init(void)
                struct page *page = &mem_map[pfn];
 
                ClearPageReserved(page);
-               set_bit(PG_highmem, &page->flags);
                set_page_count(page, 1);
                __free_page(page);
                totalram_pages++;
index aa7064a75ee64d9c7b4feeb13514a224156cf3a3..43cd6220ee4905c2375cfb1cece6767c0d8fa28f 100644 (file)
@@ -48,7 +48,7 @@ cmd_image = $(obj)/tools/build $(BUILDFLAGS) $(obj)/bootsect $(obj)/setup \
 $(obj)/zImage $(obj)/bzImage: $(obj)/bootsect $(obj)/setup \
                              $(obj)/vmlinux.bin $(obj)/tools/build FORCE
        $(call if_changed,image)
-       @echo 'Kernel: $@ is ready'
+       @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
 
 $(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE
        $(call if_changed,objcopy)
index 2e2756345bb23964f763ff747e284c7e89050678..4647db4ad6de9a8bd7bc9ab9bb32a4f3d594dd5c 100644 (file)
@@ -45,7 +45,7 @@
 #include <asm/uaccess.h>
 #include <asm/system.h>
 
-static struct class_simple *cpuid_class;
+static struct class *cpuid_class;
 
 #ifdef CONFIG_SMP
 
@@ -158,12 +158,12 @@ static struct file_operations cpuid_fops = {
        .open = cpuid_open,
 };
 
-static int cpuid_class_simple_device_add(int i) 
+static int cpuid_class_device_create(int i)
 {
        int err = 0;
        struct class_device *class_err;
 
-       class_err = class_simple_device_add(cpuid_class, MKDEV(CPUID_MAJOR, i), NULL, "cpu%d",i);
+       class_err = class_device_create(cpuid_class, MKDEV(CPUID_MAJOR, i), NULL, "cpu%d",i);
        if (IS_ERR(class_err))
                err = PTR_ERR(class_err);
        return err;
@@ -175,10 +175,10 @@ static int __devinit cpuid_class_cpu_callback(struct notifier_block *nfb, unsign
 
        switch (action) {
        case CPU_ONLINE:
-               cpuid_class_simple_device_add(cpu);
+               cpuid_class_device_create(cpu);
                break;
        case CPU_DEAD:
-               class_simple_device_remove(MKDEV(CPUID_MAJOR, cpu));
+               class_device_destroy(cpuid_class, MKDEV(CPUID_MAJOR, cpu));
                break;
        }
        return NOTIFY_OK;
@@ -200,13 +200,13 @@ static int __init cpuid_init(void)
                err = -EBUSY;
                goto out;
        }
-       cpuid_class = class_simple_create(THIS_MODULE, "cpuid");
+       cpuid_class = class_create(THIS_MODULE, "cpuid");
        if (IS_ERR(cpuid_class)) {
                err = PTR_ERR(cpuid_class);
                goto out_chrdev;
        }
        for_each_online_cpu(i) {
-               err = cpuid_class_simple_device_add(i);
+               err = cpuid_class_device_create(i);
                if (err != 0) 
                        goto out_class;
        }
@@ -218,9 +218,9 @@ static int __init cpuid_init(void)
 out_class:
        i = 0;
        for_each_online_cpu(i) {
-               class_simple_device_remove(MKDEV(CPUID_MAJOR, i));
+               class_device_destroy(cpuid_class, MKDEV(CPUID_MAJOR, i));
        }
-       class_simple_destroy(cpuid_class);
+       class_destroy(cpuid_class);
 out_chrdev:
        unregister_chrdev(CPUID_MAJOR, "cpu/cpuid");    
 out:
@@ -232,8 +232,8 @@ static void __exit cpuid_exit(void)
        int cpu = 0;
 
        for_each_online_cpu(cpu)
-               class_simple_device_remove(MKDEV(CPUID_MAJOR, cpu));
-       class_simple_destroy(cpuid_class);
+               class_device_destroy(cpuid_class, MKDEV(CPUID_MAJOR, cpu));
+       class_destroy(cpuid_class);
        unregister_chrdev(CPUID_MAJOR, "cpu/cpuid");
        unregister_cpu_notifier(&cpuid_class_cpu_notifier);
 }
index 05d9f8f363a695dc330f69d5550de0f43e774fff..b2f03c39a6fed5eebcd381776ae0948e3f280d4a 100644 (file)
@@ -44,7 +44,7 @@
 #include <asm/uaccess.h>
 #include <asm/system.h>
 
-static struct class_simple *msr_class;
+static struct class *msr_class;
 
 /* Note: "err" is handled in a funny way below.  Otherwise one version
    of gcc or another breaks. */
@@ -260,12 +260,12 @@ static struct file_operations msr_fops = {
        .open = msr_open,
 };
 
-static int msr_class_simple_device_add(int i)
+static int msr_class_device_create(int i)
 {
        int err = 0;
        struct class_device *class_err;
 
-       class_err = class_simple_device_add(msr_class, MKDEV(MSR_MAJOR, i), NULL, "msr%d",i);
+       class_err = class_device_create(msr_class, MKDEV(MSR_MAJOR, i), NULL, "msr%d",i);
        if (IS_ERR(class_err)) 
                err = PTR_ERR(class_err);
        return err;
@@ -277,10 +277,10 @@ static int __devinit msr_class_cpu_callback(struct notifier_block *nfb, unsigned
 
        switch (action) {
        case CPU_ONLINE:
-               msr_class_simple_device_add(cpu);
+               msr_class_device_create(cpu);
                break;
        case CPU_DEAD:
-               class_simple_device_remove(MKDEV(MSR_MAJOR, cpu));      
+               class_device_destroy(msr_class, MKDEV(MSR_MAJOR, cpu));
                break;
        }
        return NOTIFY_OK;
@@ -302,13 +302,13 @@ static int __init msr_init(void)
                err = -EBUSY;
                goto out;
        }
-       msr_class = class_simple_create(THIS_MODULE, "msr");
+       msr_class = class_create(THIS_MODULE, "msr");
        if (IS_ERR(msr_class)) {
                err = PTR_ERR(msr_class);
                goto out_chrdev;
        }
        for_each_online_cpu(i) {
-               err = msr_class_simple_device_add(i);
+               err = msr_class_device_create(i);
                if (err != 0)
                        goto out_class;
        }
@@ -320,8 +320,8 @@ static int __init msr_init(void)
 out_class:
        i = 0;
        for_each_online_cpu(i)
-               class_simple_device_remove(MKDEV(MSR_MAJOR, i));
-       class_simple_destroy(msr_class);
+               class_device_destroy(msr_class, MKDEV(MSR_MAJOR, i));
+       class_destroy(msr_class);
 out_chrdev:
        unregister_chrdev(MSR_MAJOR, "cpu/msr");
 out:
@@ -332,8 +332,8 @@ static void __exit msr_exit(void)
 {
        int cpu = 0;
        for_each_online_cpu(cpu)
-               class_simple_device_remove(MKDEV(MSR_MAJOR, cpu));
-       class_simple_destroy(msr_class);
+               class_device_destroy(msr_class, MKDEV(MSR_MAJOR, cpu));
+       class_destroy(msr_class);
        unregister_chrdev(MSR_MAJOR, "cpu/msr");
        unregister_cpu_notifier(&msr_class_cpu_notifier);
 }
index 6cd1ed311f02b87aeccce917954624f7e28dd675..d408afaf6495918b3591bbcda5dbcd5a95a34a36 100644 (file)
@@ -251,7 +251,7 @@ ENTRY(sys_call_table)
        .long sys_io_submit
        .long sys_io_cancel
        .long sys_fadvise64     /* 250 */
-       .long sys_ni_syscall
+       .long sys_set_zone_reclaim
        .long sys_exit_group
        .long sys_lookup_dcookie
        .long sys_epoll_create
index 00c63419c06f80f0af9ce17f4b7f78e18dd25df2..83c579e82a8137f24a6952efc461b4e434eb6158 100644 (file)
@@ -306,7 +306,7 @@ void die(const char * str, struct pt_regs * regs, long err)
        };
        static int die_counter;
 
-       if (die.lock_owner != _smp_processor_id()) {
+       if (die.lock_owner != raw_smp_processor_id()) {
                console_verbose();
                spin_lock_irq(&die.lock);
                die.lock_owner = smp_processor_id();
index 080639f262b1364479476e5f88065080388c2fa2..eb0cdfe9280fe11414239a640f9557279cfa2b23 100644 (file)
@@ -34,7 +34,7 @@ inline void __const_udelay(unsigned long xloops)
        xloops *= 4;
        __asm__("mull %0"
                :"=d" (xloops), "=&a" (d0)
-               :"1" (xloops),"0" (cpu_data[_smp_processor_id()].loops_per_jiffy * (HZ/4)));
+               :"1" (xloops),"0" (cpu_data[raw_smp_processor_id()].loops_per_jiffy * (HZ/4)));
         __delay(++xloops);
 }
 
index 171fc925e1e4e7c699c6222b229914b320c987c3..3b099f32b9487a054db420509ad25591ea0d06eb 100644 (file)
@@ -18,7 +18,7 @@
 #include <asm/tlb.h>
 #include <asm/tlbflush.h>
 
-static pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
+pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
 {
        pgd_t *pgd;
        pud_t *pud;
@@ -30,7 +30,7 @@ static pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
        return (pte_t *) pmd;
 }
 
-static pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
+pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
 {
        pgd_t *pgd;
        pud_t *pud;
@@ -42,21 +42,6 @@ static pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
        return (pte_t *) pmd;
 }
 
-static void set_huge_pte(struct mm_struct *mm, struct vm_area_struct *vma, struct page *page, pte_t * page_table, int write_access)
-{
-       pte_t entry;
-
-       add_mm_counter(mm, rss, HPAGE_SIZE / PAGE_SIZE);
-       if (write_access) {
-               entry =
-                   pte_mkwrite(pte_mkdirty(mk_pte(page, vma->vm_page_prot)));
-       } else
-               entry = pte_wrprotect(mk_pte(page, vma->vm_page_prot));
-       entry = pte_mkyoung(entry);
-       mk_pte_huge(entry);
-       set_pte(page_table, entry);
-}
-
 /*
  * This function checks for proper alignment of input addr and len parameters.
  */
@@ -69,77 +54,6 @@ int is_aligned_hugepage_range(unsigned long addr, unsigned long len)
        return 0;
 }
 
-int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
-                       struct vm_area_struct *vma)
-{
-       pte_t *src_pte, *dst_pte, entry;
-       struct page *ptepage;
-       unsigned long addr = vma->vm_start;
-       unsigned long end = vma->vm_end;
-
-       while (addr < end) {
-               dst_pte = huge_pte_alloc(dst, addr);
-               if (!dst_pte)
-                       goto nomem;
-               src_pte = huge_pte_offset(src, addr);
-               entry = *src_pte;
-               ptepage = pte_page(entry);
-               get_page(ptepage);
-               set_pte(dst_pte, entry);
-               add_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE);
-               addr += HPAGE_SIZE;
-       }
-       return 0;
-
-nomem:
-       return -ENOMEM;
-}
-
-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) {
-
-               if (pages) {
-                       pte_t *pte;
-                       struct page *page;
-
-                       pte = huge_pte_offset(mm, vaddr);
-
-                       /* hugetlb should be locked, and hence, prefaulted */
-                       WARN_ON(!pte || pte_none(*pte));
-
-                       page = &pte_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;
-}
-
 #if 0  /* This is just for testing */
 struct page *
 follow_huge_addr(struct mm_struct *mm, unsigned long address, int write)
@@ -204,83 +118,15 @@ follow_huge_pmd(struct mm_struct *mm, unsigned long address,
 }
 #endif
 
-void unmap_hugepage_range(struct vm_area_struct *vma,
-               unsigned long start, unsigned long end)
+void hugetlb_clean_stale_pgtable(pte_t *pte)
 {
-       struct mm_struct *mm = vma->vm_mm;
-       unsigned long address;
-       pte_t pte, *ptep;
+       pmd_t *pmd = (pmd_t *) pte;
        struct page *page;
 
-       BUG_ON(start & (HPAGE_SIZE - 1));
-       BUG_ON(end & (HPAGE_SIZE - 1));
-
-       for (address = start; address < end; address += HPAGE_SIZE) {
-               ptep = huge_pte_offset(mm, address);
-               if (!ptep)
-                       continue;
-               pte = ptep_get_and_clear(mm, address, ptep);
-               if (pte_none(pte))
-                       continue;
-               page = pte_page(pte);
-               put_page(page);
-       }
-       add_mm_counter(mm ,rss, -((end - start) >> PAGE_SHIFT));
-       flush_tlb_range(vma, start, end);
-}
-
-int hugetlb_prefault(struct address_space *mapping, struct vm_area_struct *vma)
-{
-       struct mm_struct *mm = current->mm;
-       unsigned long addr;
-       int ret = 0;
-
-       BUG_ON(vma->vm_start & ~HPAGE_MASK);
-       BUG_ON(vma->vm_end & ~HPAGE_MASK);
-
-       spin_lock(&mm->page_table_lock);
-       for (addr = vma->vm_start; addr < vma->vm_end; addr += HPAGE_SIZE) {
-               unsigned long idx;
-               pte_t *pte = huge_pte_alloc(mm, addr);
-               struct page *page;
-
-               if (!pte) {
-                       ret = -ENOMEM;
-                       goto out;
-               }
-
-               if (!pte_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) {
-                       /* charge the fs quota first */
-                       if (hugetlb_get_quota(mapping)) {
-                               ret = -ENOMEM;
-                               goto out;
-                       }
-                       page = alloc_huge_page();
-                       if (!page) {
-                               hugetlb_put_quota(mapping);
-                               ret = -ENOMEM;
-                               goto out;
-                       }
-                       ret = add_to_page_cache(page, mapping, idx, GFP_ATOMIC);
-                       if (! ret) {
-                               unlock_page(page);
-                       } else {
-                               hugetlb_put_quota(mapping);
-                               free_huge_page(page);
-                               goto out;
-                       }
-               }
-               set_huge_pte(mm, vma, page, pte, vma->vm_flags & VM_WRITE);
-       }
-out:
-       spin_unlock(&mm->page_table_lock);
-       return ret;
+       page = pmd_page(*pmd);
+       pmd_clear(pmd);
+       dec_page_state(nr_page_table_pages);
+       page_cache_release(page);
 }
 
 /* x86_64 also uses this file */
@@ -294,7 +140,12 @@ static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *file,
        struct vm_area_struct *vma;
        unsigned long start_addr;
 
-       start_addr = mm->free_area_cache;
+       if (len > mm->cached_hole_size) {
+               start_addr = mm->free_area_cache;
+       } else {
+               start_addr = TASK_UNMAPPED_BASE;
+               mm->cached_hole_size = 0;
+       }
 
 full_search:
        addr = ALIGN(start_addr, HPAGE_SIZE);
@@ -308,6 +159,7 @@ full_search:
                         */
                        if (start_addr != TASK_UNMAPPED_BASE) {
                                start_addr = TASK_UNMAPPED_BASE;
+                               mm->cached_hole_size = 0;
                                goto full_search;
                        }
                        return -ENOMEM;
@@ -316,6 +168,8 @@ full_search:
                        mm->free_area_cache = addr + len;
                        return addr;
                }
+               if (addr + mm->cached_hole_size < vma->vm_start)
+                       mm->cached_hole_size = vma->vm_start - addr;
                addr = ALIGN(vma->vm_end, HPAGE_SIZE);
        }
 }
@@ -327,12 +181,17 @@ static unsigned long hugetlb_get_unmapped_area_topdown(struct file *file,
        struct mm_struct *mm = current->mm;
        struct vm_area_struct *vma, *prev_vma;
        unsigned long base = mm->mmap_base, addr = addr0;
+       unsigned long largest_hole = mm->cached_hole_size;
        int first_time = 1;
 
        /* don't allow allocations above current base */
        if (mm->free_area_cache > base)
                mm->free_area_cache = base;
 
+       if (len <= largest_hole) {
+               largest_hole = 0;
+               mm->free_area_cache  = base;
+       }
 try_again:
        /* make sure it can fit in the remaining address space */
        if (mm->free_area_cache < len)
@@ -353,13 +212,21 @@ try_again:
                 * vma->vm_start, use it:
                 */
                if (addr + len <= vma->vm_start &&
-                               (!prev_vma || (addr >= prev_vma->vm_end)))
+                           (!prev_vma || (addr >= prev_vma->vm_end))) {
                        /* remember the address as a hint for next time */
-                       return (mm->free_area_cache = addr);
-               else
+                       mm->cached_hole_size = largest_hole;
+                       return (mm->free_area_cache = addr);
+               } else {
                        /* pull free_area_cache down to the first hole */
-                       if (mm->free_area_cache == vma->vm_end)
+                       if (mm->free_area_cache == vma->vm_end) {
                                mm->free_area_cache = vma->vm_start;
+                               mm->cached_hole_size = largest_hole;
+                       }
+               }
+
+               /* remember the largest hole we saw so far */
+               if (addr + largest_hole < vma->vm_start)
+                       largest_hole = vma->vm_start - addr;
 
                /* try just below the current vma->vm_start */
                addr = (vma->vm_start - len) & HPAGE_MASK;
@@ -372,6 +239,7 @@ fail:
         */
        if (first_time) {
                mm->free_area_cache = base;
+               largest_hole = 0;
                first_time = 0;
                goto try_again;
        }
@@ -382,6 +250,7 @@ fail:
         * allocations.
         */
        mm->free_area_cache = TASK_UNMAPPED_BASE;
+       mm->cached_hole_size = ~0UL;
        addr = hugetlb_get_unmapped_area_bottomup(file, addr0,
                        len, pgoff, flags);
 
@@ -389,6 +258,7 @@ fail:
         * Restore the topdown base:
         */
        mm->free_area_cache = base;
+       mm->cached_hole_size = ~0UL;
 
        return addr;
 }
index 7a7ea3737265284eceafdcdc82000f3c87d06690..8766c771bb45371ab1f67e94112616ba86521a9e 100644 (file)
@@ -269,7 +269,6 @@ void __init one_highpage_init(struct page *page, int pfn, int bad_ppro)
 {
        if (page_is_ram(pfn) && !(bad_ppro && page_kills_ppro(pfn))) {
                ClearPageReserved(page);
-               set_bit(PG_highmem, &page->flags);
                set_page_count(page, 1);
                __free_page(page);
                totalhigh_pages++;
index 3ad2c4af099cf67fa5bff6016347021913d76aee..34e603cc17161a141cd3f0047b333c708bc002be 100644 (file)
@@ -50,6 +50,10 @@ config SCHED_NO_NO_OMIT_FRAME_POINTER
        bool
        default y
 
+config IA64_UNCACHED_ALLOCATOR
+       bool
+       select GENERIC_ALLOCATOR
+
 choice
        prompt "System type"
        default IA64_GENERIC
@@ -223,7 +227,7 @@ config IA64_SGI_SN_SIM
 
 config IA64_SGI_SN_XP
        tristate "Support communication between SGI SSIs"
-       depends on MSPEC
+       select IA64_UNCACHED_ALLOCATOR
        help
          An SGI machine can be divided into multiple Single System
          Images which act independently of each other and have
index 6ff7107fee4d6ecca4d5f32ae3cf9018abb5057b..a01bb02d074df7cd4ac60efea1985990d739747a 100644 (file)
@@ -588,6 +588,7 @@ CONFIG_SGI_MBCS=m
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_SERIAL_SGI_L1_CONSOLE=y
+CONFIG_SERIAL_SGI_IOC4=y
 CONFIG_UNIX98_PTYS=y
 CONFIG_LEGACY_PTYS=y
 CONFIG_LEGACY_PTY_COUNT=256
@@ -787,6 +788,11 @@ CONFIG_INFINIBAND_MTHCA=m
 CONFIG_INFINIBAND_IPOIB=m
 # CONFIG_INFINIBAND_IPOIB_DEBUG is not set
 
+#
+# SN Devices
+#
+CONFIG_SGI_IOC4=y
+
 #
 # File systems
 #
index 7539e83bf054c7350d2af710ada1b2ce95e9a19b..9997ef45ab237b19a09238fee673ba17b4388950 100644 (file)
@@ -638,6 +638,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_SERIAL_SGI_L1_CONSOLE=y
+CONFIG_SERIAL_SGI_IOC4=y
 CONFIG_UNIX98_PTYS=y
 CONFIG_LEGACY_PTYS=y
 CONFIG_LEGACY_PTY_COUNT=256
@@ -942,6 +943,11 @@ CONFIG_INFINIBAND_MTHCA=m
 CONFIG_INFINIBAND_IPOIB=m
 # CONFIG_INFINIBAND_IPOIB_DEBUG is not set
 
+#
+# SN Devices
+#
+CONFIG_SGI_IOC4=y
+
 #
 # File systems
 #
index c1a02bbc252c7b0409d339460b2c25ea34dfcaee..4c73d8ba2e3df14b91db0eab8806c57408d4b4de 100644 (file)
@@ -20,6 +20,7 @@ obj-$(CONFIG_SMP)             += smp.o smpboot.o domain.o
 obj-$(CONFIG_PERFMON)          += perfmon_default_smpl.o
 obj-$(CONFIG_IA64_CYCLONE)     += cyclone.o
 obj-$(CONFIG_IA64_MCA_RECOVERY)        += mca_recovery.o
+obj-$(CONFIG_IA64_UNCACHED_ALLOCATOR)  += uncached.o
 mca_recovery-y                 += mca_drv.o mca_drv_asm.o
 
 # The gate DSO image is built using a special linker script.
index 4a3b1aac43e737e4082d36eb5eee0846628fc73a..179f230816edf52dd57a990a188465455d1f73fa 100644 (file)
@@ -409,6 +409,38 @@ efi_memmap_walk (efi_freemem_callback_t callback, void *arg)
        }
 }
 
+/*
+ * Walk the EFI memory map to pull out leftover pages in the lower
+ * memory regions which do not end up in the regular memory map and
+ * stick them into the uncached allocator
+ *
+ * The regular walk function is significantly more complex than the
+ * uncached walk which means it really doesn't make sense to try and
+ * marge the two.
+ */
+void __init
+efi_memmap_walk_uc (efi_freemem_callback_t callback)
+{
+       void *efi_map_start, *efi_map_end, *p;
+       efi_memory_desc_t *md;
+       u64 efi_desc_size, start, end;
+
+       efi_map_start = __va(ia64_boot_param->efi_memmap);
+       efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size;
+       efi_desc_size = ia64_boot_param->efi_memdesc_size;
+
+       for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) {
+               md = p;
+               if (md->attribute == EFI_MEMORY_UC) {
+                       start = PAGE_ALIGN(md->phys_addr);
+                       end = PAGE_ALIGN((md->phys_addr+(md->num_pages << EFI_PAGE_SHIFT)) & PAGE_MASK);
+                       if ((*callback)(start, end, NULL) < 0)
+                               return;
+               }
+       }
+}
+
+
 /*
  * Look for the PAL_CODE region reported by EFI and maps it using an
  * ITR to enable safe PAL calls in virtual mode.  See IA-64 Processor
index d99316c9be28977f4a814970d42f629c958cd54b..b1d5d3d5276c8424a41f96f2c1009f7d0d31cfab 100644 (file)
@@ -1579,7 +1579,7 @@ sys_call_table:
        data8 sys_keyctl
        data8 sys_ni_syscall
        data8 sys_ni_syscall                    // 1275
-       data8 sys_ni_syscall
+       data8 sys_set_zone_reclaim
        data8 sys_ni_syscall
        data8 sys_ni_syscall
        data8 sys_ni_syscall
diff --git a/arch/ia64/kernel/uncached.c b/arch/ia64/kernel/uncached.c
new file mode 100644 (file)
index 0000000..490dfc9
--- /dev/null
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2001-2005 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.
+ *
+ * A simple uncached page allocator using the generic allocator. This
+ * allocator first utilizes the spare (spill) pages found in the EFI
+ * memmap and will then start converting cached pages to uncached ones
+ * at a granule at a time. Node awareness is implemented by having a
+ * pool of pages per node.
+ */
+
+#include <linux/types.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/errno.h>
+#include <linux/string.h>
+#include <linux/slab.h>
+#include <linux/efi.h>
+#include <linux/genalloc.h>
+#include <asm/page.h>
+#include <asm/pal.h>
+#include <asm/system.h>
+#include <asm/pgtable.h>
+#include <asm/atomic.h>
+#include <asm/tlbflush.h>
+#include <asm/sn/arch.h>
+
+#define DEBUG  0
+
+#if DEBUG
+#define dprintk                        printk
+#else
+#define dprintk(x...)          do { } while (0)
+#endif
+
+void __init efi_memmap_walk_uc (efi_freemem_callback_t callback);
+
+#define MAX_UNCACHED_GRANULES  5
+static int allocated_granules;
+
+struct gen_pool *uncached_pool[MAX_NUMNODES];
+
+
+static void uncached_ipi_visibility(void *data)
+{
+       int status;
+
+       status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL);
+       if ((status != PAL_VISIBILITY_OK) &&
+           (status != PAL_VISIBILITY_OK_REMOTE_NEEDED))
+               printk(KERN_DEBUG "pal_prefetch_visibility() returns %i on "
+                      "CPU %i\n", status, get_cpu());
+}
+
+
+static void uncached_ipi_mc_drain(void *data)
+{
+       int status;
+       status = ia64_pal_mc_drain();
+       if (status)
+               printk(KERN_WARNING "ia64_pal_mc_drain() failed with %i on "
+                      "CPU %i\n", status, get_cpu());
+}
+
+
+static unsigned long
+uncached_get_new_chunk(struct gen_pool *poolp)
+{
+       struct page *page;
+       void *tmp;
+       int status, i;
+       unsigned long addr, node;
+
+       if (allocated_granules >= MAX_UNCACHED_GRANULES)
+               return 0;
+
+       node = poolp->private;
+       page = alloc_pages_node(node, GFP_KERNEL | __GFP_ZERO,
+                               IA64_GRANULE_SHIFT-PAGE_SHIFT);
+
+       dprintk(KERN_INFO "get_new_chunk page %p, addr %lx\n",
+               page, (unsigned long)(page-vmem_map) << PAGE_SHIFT);
+
+       /*
+        * Do magic if no mem on local node! XXX
+        */
+       if (!page)
+               return 0;
+       tmp = page_address(page);
+
+       /*
+        * There's a small race here where it's possible for someone to
+        * access the page through /dev/mem halfway through the conversion
+        * to uncached - not sure it's really worth bothering about
+        */
+       for (i = 0; i < (IA64_GRANULE_SIZE / PAGE_SIZE); i++)
+               SetPageUncached(&page[i]);
+
+       flush_tlb_kernel_range(tmp, tmp + IA64_GRANULE_SIZE);
+
+       status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL);
+
+       dprintk(KERN_INFO "pal_prefetch_visibility() returns %i on cpu %i\n",
+               status, get_cpu());
+
+       if (!status) {
+               status = smp_call_function(uncached_ipi_visibility, NULL, 0, 1);
+               if (status)
+                       printk(KERN_WARNING "smp_call_function failed for "
+                              "uncached_ipi_visibility! (%i)\n", status);
+       }
+
+       if (ia64_platform_is("sn2"))
+               sn_flush_all_caches((unsigned long)tmp, IA64_GRANULE_SIZE);
+       else
+               flush_icache_range((unsigned long)tmp,
+                                  (unsigned long)tmp+IA64_GRANULE_SIZE);
+
+       ia64_pal_mc_drain();
+       status = smp_call_function(uncached_ipi_mc_drain, NULL, 0, 1);
+       if (status)
+               printk(KERN_WARNING "smp_call_function failed for "
+                      "uncached_ipi_mc_drain! (%i)\n", status);
+
+       addr = (unsigned long)tmp - PAGE_OFFSET + __IA64_UNCACHED_OFFSET;
+
+       allocated_granules++;
+       return addr;
+}
+
+
+/*
+ * uncached_alloc_page
+ *
+ * Allocate 1 uncached page. Allocates on the requested node. If no
+ * uncached pages are available on the requested node, roundrobin starting
+ * with higher nodes.
+ */
+unsigned long
+uncached_alloc_page(int nid)
+{
+       unsigned long maddr;
+
+       maddr = gen_pool_alloc(uncached_pool[nid], PAGE_SIZE);
+
+       dprintk(KERN_DEBUG "uncached_alloc_page returns %lx on node %i\n",
+               maddr, nid);
+
+       /*
+        * If no memory is availble on our local node, try the
+        * remaining nodes in the system.
+        */
+       if (!maddr) {
+               int i;
+
+               for (i = MAX_NUMNODES - 1; i >= 0; i--) {
+                       if (i == nid || !node_online(i))
+                               continue;
+                       maddr = gen_pool_alloc(uncached_pool[i], PAGE_SIZE);
+                       dprintk(KERN_DEBUG "uncached_alloc_page alternate search "
+                               "returns %lx on node %i\n", maddr, i);
+                       if (maddr) {
+                               break;
+                       }
+               }
+       }
+
+       return maddr;
+}
+EXPORT_SYMBOL(uncached_alloc_page);
+
+
+/*
+ * uncached_free_page
+ *
+ * Free a single uncached page.
+ */
+void
+uncached_free_page(unsigned long maddr)
+{
+       int node;
+
+       node = nasid_to_cnodeid(NASID_GET(maddr));
+
+       dprintk(KERN_DEBUG "uncached_free_page(%lx) on node %i\n", maddr, node);
+
+       if ((maddr & (0XFUL << 60)) != __IA64_UNCACHED_OFFSET)
+               panic("uncached_free_page invalid address %lx\n", maddr);
+
+       gen_pool_free(uncached_pool[node], maddr, PAGE_SIZE);
+}
+EXPORT_SYMBOL(uncached_free_page);
+
+
+/*
+ * uncached_build_memmap,
+ *
+ * Called at boot time to build a map of pages that can be used for
+ * memory special operations.
+ */
+static int __init
+uncached_build_memmap(unsigned long start, unsigned long end, void *arg)
+{
+       long length;
+       unsigned long vstart, vend;
+       int node;
+
+       length = end - start;
+       vstart = start + __IA64_UNCACHED_OFFSET;
+       vend = end + __IA64_UNCACHED_OFFSET;
+
+       dprintk(KERN_ERR "uncached_build_memmap(%lx %lx)\n", start, end);
+
+       memset((char *)vstart, 0, length);
+
+       node = nasid_to_cnodeid(NASID_GET(start));
+
+       for (; vstart < vend ; vstart += PAGE_SIZE) {
+               dprintk(KERN_INFO "sticking %lx into the pool!\n", vstart);
+               gen_pool_free(uncached_pool[node], vstart, PAGE_SIZE);
+       }
+
+       return 0;
+}
+
+
+static int __init uncached_init(void) {
+       int i;
+
+       for (i = 0; i < MAX_NUMNODES; i++) {
+               if (!node_online(i))
+                       continue;
+               uncached_pool[i] = gen_pool_create(0, IA64_GRANULE_SHIFT,
+                                                  &uncached_get_new_chunk, i);
+       }
+
+       efi_memmap_walk_uc(uncached_build_memmap);
+
+       return 0;
+}
+
+__initcall(uncached_init);
index df08ae7634b61d2efadf065e246c4bfb7f342b2c..e0a776a3044c89f5614de6e2284c6a338cda6170 100644 (file)
@@ -24,7 +24,7 @@
 
 unsigned int hpage_shift=HPAGE_SHIFT_DEFAULT;
 
-static pte_t *
+pte_t *
 huge_pte_alloc (struct mm_struct *mm, unsigned long addr)
 {
        unsigned long taddr = htlbpage_to_page(addr);
@@ -43,7 +43,7 @@ huge_pte_alloc (struct mm_struct *mm, unsigned long addr)
        return pte;
 }
 
-static pte_t *
+pte_t *
 huge_pte_offset (struct mm_struct *mm, unsigned long addr)
 {
        unsigned long taddr = htlbpage_to_page(addr);
@@ -67,23 +67,6 @@ huge_pte_offset (struct mm_struct *mm, unsigned long addr)
 
 #define mk_pte_huge(entry) { pte_val(entry) |= _PAGE_P; }
 
-static void
-set_huge_pte (struct mm_struct *mm, struct vm_area_struct *vma,
-             struct page *page, pte_t * page_table, int write_access)
-{
-       pte_t entry;
-
-       add_mm_counter(mm, rss, HPAGE_SIZE / PAGE_SIZE);
-       if (write_access) {
-               entry =
-                   pte_mkwrite(pte_mkdirty(mk_pte(page, vma->vm_page_prot)));
-       } else
-               entry = pte_wrprotect(mk_pte(page, vma->vm_page_prot));
-       entry = pte_mkyoung(entry);
-       mk_pte_huge(entry);
-       set_pte(page_table, entry);
-       return;
-}
 /*
  * This function checks for proper alignment of input addr and len parameters.
  */
@@ -99,68 +82,6 @@ int is_aligned_hugepage_range(unsigned long addr, unsigned long len)
        return 0;
 }
 
-int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
-                       struct vm_area_struct *vma)
-{
-       pte_t *src_pte, *dst_pte, entry;
-       struct page *ptepage;
-       unsigned long addr = vma->vm_start;
-       unsigned long end = vma->vm_end;
-
-       while (addr < end) {
-               dst_pte = huge_pte_alloc(dst, addr);
-               if (!dst_pte)
-                       goto nomem;
-               src_pte = huge_pte_offset(src, addr);
-               entry = *src_pte;
-               ptepage = pte_page(entry);
-               get_page(ptepage);
-               set_pte(dst_pte, entry);
-               add_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE);
-               addr += HPAGE_SIZE;
-       }
-       return 0;
-nomem:
-       return -ENOMEM;
-}
-
-int
-follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,
-                   struct page **pages, struct vm_area_struct **vmas,
-                   unsigned long *st, int *length, int i)
-{
-       pte_t *ptep, pte;
-       unsigned long start = *st;
-       unsigned long pstart;
-       int len = *length;
-       struct page *page;
-
-       do {
-               pstart = start & HPAGE_MASK;
-               ptep = huge_pte_offset(mm, start);
-               pte = *ptep;
-
-back1:
-               page = pte_page(pte);
-               if (pages) {
-                       page += ((start & ~HPAGE_MASK) >> PAGE_SHIFT);
-                       get_page(page);
-                       pages[i] = page;
-               }
-               if (vmas)
-                       vmas[i] = vma;
-               i++;
-               len--;
-               start += PAGE_SIZE;
-               if (((start & HPAGE_MASK) == pstart) && len &&
-                               (start < vma->vm_end))
-                       goto back1;
-       } while (len && start < vma->vm_end);
-       *length = len;
-       *st = start;
-       return i;
-}
-
 struct page *follow_huge_addr(struct mm_struct *mm, unsigned long addr, int write)
 {
        struct page *page;
@@ -212,81 +133,6 @@ void hugetlb_free_pgd_range(struct mmu_gather **tlb,
        free_pgd_range(tlb, addr, end, floor, ceiling);
 }
 
-void unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
-{
-       struct mm_struct *mm = vma->vm_mm;
-       unsigned long address;
-       pte_t *pte;
-       struct page *page;
-
-       BUG_ON(start & (HPAGE_SIZE - 1));
-       BUG_ON(end & (HPAGE_SIZE - 1));
-
-       for (address = start; address < end; address += HPAGE_SIZE) {
-               pte = huge_pte_offset(mm, address);
-               if (pte_none(*pte))
-                       continue;
-               page = pte_page(*pte);
-               put_page(page);
-               pte_clear(mm, address, pte);
-       }
-       add_mm_counter(mm, rss, - ((end - start) >> PAGE_SHIFT));
-       flush_tlb_range(vma, start, end);
-}
-
-int hugetlb_prefault(struct address_space *mapping, struct vm_area_struct *vma)
-{
-       struct mm_struct *mm = current->mm;
-       unsigned long addr;
-       int ret = 0;
-
-       BUG_ON(vma->vm_start & ~HPAGE_MASK);
-       BUG_ON(vma->vm_end & ~HPAGE_MASK);
-
-       spin_lock(&mm->page_table_lock);
-       for (addr = vma->vm_start; addr < vma->vm_end; addr += HPAGE_SIZE) {
-               unsigned long idx;
-               pte_t *pte = huge_pte_alloc(mm, addr);
-               struct page *page;
-
-               if (!pte) {
-                       ret = -ENOMEM;
-                       goto out;
-               }
-               if (!pte_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) {
-                       /* charge the fs quota first */
-                       if (hugetlb_get_quota(mapping)) {
-                               ret = -ENOMEM;
-                               goto out;
-                       }
-                       page = alloc_huge_page();
-                       if (!page) {
-                               hugetlb_put_quota(mapping);
-                               ret = -ENOMEM;
-                               goto out;
-                       }
-                       ret = add_to_page_cache(page, mapping, idx, GFP_ATOMIC);
-                       if (! ret) {
-                               unlock_page(page);
-                       } else {
-                               hugetlb_put_quota(mapping);
-                               page_cache_release(page);
-                               goto out;
-                       }
-               }
-               set_huge_pte(mm, vma, page, pte, vma->vm_flags & VM_WRITE);
-       }
-out:
-       spin_unlock(&mm->page_table_lock);
-       return ret;
-}
-
 unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
                unsigned long pgoff, unsigned long flags)
 {
index ab9b5f35c2a72ba9bf6a398029e888dbeed3d129..a087b274847e52a265f94f473d707baa6d26fc89 100644 (file)
@@ -432,7 +432,7 @@ static int tiocx_reload(struct cx_dev *cx_dev)
        return cx_device_reload(cx_dev);
 }
 
-static ssize_t show_cxdev_control(struct device *dev, char *buf)
+static ssize_t show_cxdev_control(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct cx_dev *cx_dev = to_cx_dev(dev);
 
@@ -442,7 +442,7 @@ static ssize_t show_cxdev_control(struct device *dev, char *buf)
                       tiocx_btchar_get(cx_dev->cx_id.nasid));
 }
 
-static ssize_t store_cxdev_control(struct device *dev, const char *buf,
+static ssize_t store_cxdev_control(struct device *dev, struct device_attribute *attr, const char *buf,
                                   size_t count)
 {
        int n;
@@ -518,25 +518,22 @@ static int __init tiocx_init(void)
        return 0;
 }
 
-static void __exit tiocx_exit(void)
+static int cx_remove_device(struct device * dev, void * data)
 {
-       struct device *dev;
-       struct device *tdev;
+       struct cx_dev *cx_dev = to_cx_dev(dev);
+       device_remove_file(dev, &dev_attr_cxdev_control);
+       cx_device_unregister(cx_dev);
+       return 0;
+}
 
+static void __exit tiocx_exit(void)
+{
        DBG("tiocx_exit\n");
 
        /*
         * Unregister devices.
         */
-       list_for_each_entry_safe(dev, tdev, &tiocx_bus_type.devices.list,
-                                bus_list) {
-               if (dev) {
-                       struct cx_dev *cx_dev = to_cx_dev(dev);
-                       device_remove_file(dev, &dev_attr_cxdev_control);
-                       cx_device_unregister(cx_dev);
-               }
-       }
-
+       bus_for_each_dev(&tiocx_bus_type, NULL, NULL, cx_remove_device);
        bus_unregister(&tiocx_bus_type);
 }
 
index 2c3c4a8af553d181e5e772242e6df9442842f53a..cd7ed73f0e7ab73a87b37ea4d567810b511ecee9 100644 (file)
@@ -22,6 +22,7 @@
 #include <linux/cache.h>
 #include <linux/mmzone.h>
 #include <linux/nodemask.h>
+#include <asm/uncached.h>
 #include <asm/sn/bte.h>
 #include <asm/sn/intr.h>
 #include <asm/sn/sn_sal.h>
@@ -183,7 +184,7 @@ xpc_rsvd_page_init(void)
         * memory protections are never restricted.
         */
        if ((amos_page = xpc_vars->amos_page) == NULL) {
-               amos_page = (AMO_t *) mspec_kalloc_page(0);
+               amos_page = (AMO_t *) TO_AMO(uncached_alloc_page(0));
                if (amos_page == NULL) {
                        dev_err(xpc_part, "can't allocate page of AMOs\n");
                        return NULL;
@@ -200,7 +201,8 @@ xpc_rsvd_page_init(void)
                        if (ret != 0) {
                                dev_err(xpc_part, "can't change memory "
                                        "protections\n");
-                               mspec_kfree_page((unsigned long) amos_page);
+                               uncached_free_page(__IA64_UNCACHED_OFFSET |
+                                                  TO_PHYS((u64) amos_page));
                                return NULL;
                        }
                }
index 0d90ea58a0cb91223b611096ba99cfd444241511..64c133344afef7e90d6aefbdf6856f18c0760e36 100644 (file)
@@ -78,6 +78,9 @@ config PLAT_OAKS32R
 config PLAT_MAPPI2
        bool "Mappi-II(M3A-ZA36/M3A-ZA52)"
 
+config PLAT_MAPPI3
+       bool "Mappi-III(M3A-2170)"
+
 endchoice
 
 choice
@@ -134,6 +137,7 @@ config BUS_CLOCK
        int "Bus Clock [Hz] (integer)"
        default "70000000" if PLAT_MAPPI
        default "25000000" if PLAT_USRV
+       default "50000000" if PLAT_MAPPI3
        default "50000000" if PLAT_M32700UT
        default "50000000" if PLAT_OPSPUT
        default "33333333" if PLAT_OAKS32R
@@ -149,7 +153,7 @@ config CPU_LITTLE_ENDIAN
 
 config MEMORY_START
        hex "Physical memory start address (hex)"
-       default "08000000" if PLAT_MAPPI || PLAT_MAPPI2
+       default "08000000" if PLAT_MAPPI || PLAT_MAPPI2 || PLAT_MAPPI3
        default "08000000" if PLAT_USRV
        default "08000000" if PLAT_M32700UT
        default "08000000" if PLAT_OPSPUT
@@ -157,6 +161,7 @@ config MEMORY_START
 
 config MEMORY_SIZE
        hex "Physical memory size (hex)"
+       default "08000000" if PLAT_MAPPI3
        default "04000000" if PLAT_MAPPI || PLAT_MAPPI2
        default "02000000" if PLAT_USRV
        default "01000000" if PLAT_M32700UT
index bad5475eff90c17320b27aaad83f17dd3389ff81..8f9a57271f8345cfd61e43ec5968bdd086f6600a 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include <linux/config.h>
+#include <asm/processor.h>
 
 static void putc(char c);
 
@@ -38,16 +39,17 @@ static int puts(const char *s)
 
 static void putc(char c)
 {
-
-       while ((*BOOT_SIO0STS & 0x3) != 0x3) ;
+       while ((*BOOT_SIO0STS & 0x3) != 0x3)
+               cpu_relax();
        if (c == '\n') {
                *BOOT_SIO0TXB = '\r';
-               while ((*BOOT_SIO0STS & 0x3) != 0x3) ;
+               while ((*BOOT_SIO0STS & 0x3) != 0x3)
+                       cpu_relax();
        }
        *BOOT_SIO0TXB = c;
 }
-#else /* defined(CONFIG_PLAT_M32700UT_Alpha) || defined(CONFIG_PLAT_M32700UT) */
-#ifdef CONFIG_MMU
+#else /* !(CONFIG_PLAT_M32700UT_Alpha) && !(CONFIG_PLAT_M32700UT) */
+#if defined(CONFIG_PLAT_MAPPI2)
 #define SIO0STS        (volatile unsigned short *)(0xa0efd000 + 14)
 #define SIO0TXB        (volatile unsigned short *)(0xa0efd000 + 30)
 #else
@@ -57,11 +59,12 @@ static void putc(char c)
 
 static void putc(char c)
 {
-
-       while ((*SIO0STS & 0x1) == 0) ;
+       while ((*SIO0STS & 0x1) == 0)
+               cpu_relax();
        if (c == '\n') {
                *SIO0TXB = '\r';
-               while ((*SIO0STS & 0x1) == 0) ;
+               while ((*SIO0STS & 0x1) == 0)
+                       cpu_relax();
        }
        *SIO0TXB = c;
 }
index 417c95ba87e96dd91c9393ed03afd1279d765564..853093093168e40bede4a8df4baa86dc0931af2f 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.11-rc4
-# Wed Feb 16 21:10:44 2005
+# Linux kernel version: 2.6.12-rc5
+# Fri Jun  3 16:20:11 2005
 #
 CONFIG_M32R=y
 # CONFIG_UID16 is not set
@@ -16,6 +16,7 @@ CONFIG_EXPERIMENTAL=y
 CONFIG_CLEAN_COMPILE=y
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
 
 #
 # General setup
@@ -28,13 +29,15 @@ CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
 CONFIG_SYSCTL=y
 # CONFIG_AUDIT is not set
-CONFIG_LOG_BUF_SHIFT=14
 CONFIG_HOTPLUG=y
 CONFIG_KOBJECT_UEVENT=y
 CONFIG_IKCONFIG=y
 # CONFIG_IKCONFIG_PROC is not set
 CONFIG_EMBEDDED=y
 # CONFIG_KALLSYMS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
 # CONFIG_FUTEX is not set
 # CONFIG_EPOLL is not set
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -44,6 +47,7 @@ CONFIG_CC_ALIGN_LABELS=0
 CONFIG_CC_ALIGN_LOOPS=0
 CONFIG_CC_ALIGN_JUMPS=0
 # CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
 
 #
 # Loadable module support
@@ -65,6 +69,7 @@ CONFIG_PLAT_M32700UT=y
 # CONFIG_PLAT_OPSPUT is not set
 # CONFIG_PLAT_OAKS32R is not set
 # CONFIG_PLAT_MAPPI2 is not set
+# CONFIG_PLAT_MAPPI3 is not set
 CONFIG_CHIP_M32700=y
 # CONFIG_CHIP_M32102 is not set
 # CONFIG_CHIP_VDEC2 is not set
@@ -268,7 +273,6 @@ CONFIG_NET=y
 #
 CONFIG_PACKET=y
 # CONFIG_PACKET_MMAP is not set
-# CONFIG_NETLINK_DEV is not set
 CONFIG_UNIX=y
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
@@ -392,18 +396,6 @@ CONFIG_INPUT=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=y
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_LIBPS2 is not set
-# CONFIG_SERIO_RAW is not set
-
 #
 # Input Device Drivers
 #
@@ -413,6 +405,17 @@ CONFIG_SERIO_SERPORT=y
 # CONFIG_INPUT_TOUCHSCREEN is not set
 # CONFIG_INPUT_MISC is not set
 
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_I8042 is not set
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_LIBPS2 is not set
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+CONFIG_SOUND_GAMEPORT=y
+
 #
 # Character devices
 #
@@ -464,6 +467,10 @@ CONFIG_DS1302=y
 # CONFIG_SYNCLINK_CS is not set
 # CONFIG_RAW_DRIVER is not set
 
+#
+# TPM devices
+#
+
 #
 # I2C support
 #
@@ -508,8 +515,14 @@ CONFIG_VIDEO_M32R_AR_M64278=y
 # Graphics support
 #
 CONFIG_FB=y
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+# CONFIG_FB_SOFT_CURSOR is not set
+# CONFIG_FB_MACMODES is not set
 # CONFIG_FB_MODE_HELPERS is not set
 # CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
 # CONFIG_FB_VIRTUAL is not set
 
 #
@@ -542,10 +555,6 @@ CONFIG_LOGO_LINUX_CLUT224=y
 # CONFIG_USB_ARCH_HAS_HCD is not set
 # CONFIG_USB_ARCH_HAS_OHCI is not set
 
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
-#
-
 #
 # USB Gadget Support
 #
@@ -719,8 +728,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
 #
 # Kernel hacking
 #
+# CONFIG_PRINTK_TIME is not set
 # CONFIG_DEBUG_KERNEL is not set
-CONFIG_DEBUG_PREEMPT=y
+CONFIG_LOG_BUF_SHIFT=14
 # CONFIG_DEBUG_BUGVERBOSE is not set
 # CONFIG_FRAME_POINTER is not set
 
index cfd690bf6d8abc25b24b5acae048d07540339463..6c6b6c37663816f3e59ac520be02527252f731a3 100644 (file)
@@ -10,6 +10,7 @@ obj-y := process.o entry.o traps.o align.o irq.o setup.o time.o \
 obj-$(CONFIG_SMP)              += smp.o smpboot.o
 obj-$(CONFIG_PLAT_MAPPI)       += setup_mappi.o io_mappi.o
 obj-$(CONFIG_PLAT_MAPPI2)      += setup_mappi2.o io_mappi2.o
+obj-$(CONFIG_PLAT_MAPPI3)      += setup_mappi3.o io_mappi3.o
 obj-$(CONFIG_PLAT_USRV)                += setup_usrv.o io_usrv.o
 obj-$(CONFIG_PLAT_M32700UT)    += setup_m32700ut.o io_m32700ut.o
 obj-$(CONFIG_PLAT_OPSPUT)      += setup_opsput.o io_opsput.o
@@ -17,4 +18,3 @@ obj-$(CONFIG_MODULES)         += module.o
 obj-$(CONFIG_PLAT_OAKS32R)     += setup_oaks32r.o io_oaks32r.o
 
 EXTRA_AFLAGS   := -traditional
-
index 371ba904e96860a5f62099020459e639c8ca4c6e..e545b065f7e98e1f80f2a8f876b751aedd999ccb 100644 (file)
@@ -3,8 +3,8 @@
  *
  *  Typical I/O routines for M32700UT board.
  *
- *  Copyright (c) 2001, 2002  Hiroyuki Kondo, Hirokazu Takata,
- *                            Hitoshi Yamamoto, Takeo Takahashi
+ *  Copyright (c) 2001-2005  Hiroyuki Kondo, Hirokazu Takata,
+ *                           Hitoshi Yamamoto, Takeo Takahashi
  *
  *  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
@@ -172,64 +172,21 @@ unsigned long _inl(unsigned long port)
 
 unsigned char _inb_p(unsigned long port)
 {
-       unsigned char  v;
-
-       if (port >= LAN_IOSTART && port < LAN_IOEND)
-               v = _ne_inb(PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
-       if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
-               return *(volatile unsigned char *)__port2addr_ata(port);
-       } else
-#endif
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               unsigned char b;
-               pcc_ioread_byte(0, port, &b, sizeof(b), 1, 0);
-               return b;
-       } else
-#endif
-               v = *(volatile unsigned char *)PORT2ADDR(port);
-
+       unsigned char v = _inb(port);
        delay();
        return (v);
 }
 
 unsigned short _inw_p(unsigned long port)
 {
-       unsigned short  v;
-
-       if (port >= LAN_IOSTART && port < LAN_IOEND)
-               v = _ne_inw(PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
-       if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
-               return *(volatile unsigned short *)__port2addr_ata(port);
-       } else
-#endif
-#if defined(CONFIG_USB)
-       if(port >= 0x340 && port < 0x3a0)
-               return *(volatile unsigned short *)PORT2ADDR_USB(port);
-       else
-#endif
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               unsigned short w;
-               pcc_ioread_word(0, port, &w, sizeof(w), 1, 0);
-               return w;
-       } else
-#endif
-               v = *(volatile unsigned short *)PORT2ADDR(port);
-
+       unsigned short v = _inw(port);
        delay();
        return (v);
 }
 
 unsigned long _inl_p(unsigned long port)
 {
-       unsigned long  v;
-
-       v = *(volatile unsigned long *)PORT2ADDR(port);
+       unsigned long v = _inl(port);
        delay();
        return (v);
 }
@@ -287,52 +244,19 @@ void _outl(unsigned long l, unsigned long port)
 
 void _outb_p(unsigned char b, unsigned long port)
 {
-       if (port >= LAN_IOSTART && port < LAN_IOEND)
-               _ne_outb(b, PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
-       if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
-               *(volatile unsigned char *)__port2addr_ata(port) = b;
-       } else
-#endif
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               pcc_iowrite_byte(0, port, &b, sizeof(b), 1, 0);
-       } else
-#endif
-               *(volatile unsigned char *)PORT2ADDR(port) = b;
-
+       _outb(b, port);
        delay();
 }
 
 void _outw_p(unsigned short w, unsigned long port)
 {
-       if (port >= LAN_IOSTART && port < LAN_IOEND)
-               _ne_outw(w, PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
-       if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
-               *(volatile unsigned short *)__port2addr_ata(port) = w;
-       } else
-#endif
-#if defined(CONFIG_USB)
-       if(port >= 0x340 && port < 0x3a0)
-               *(volatile unsigned short *)PORT2ADDR_USB(port) = w;
-       else
-#endif
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               pcc_iowrite_word(0, port, &w, sizeof(w), 1, 0);
-       } else
-#endif
-               *(volatile unsigned short *)PORT2ADDR(port) = w;
-
+       _outw(w, port);
        delay();
 }
 
 void _outl_p(unsigned long l, unsigned long port)
 {
-       *(volatile unsigned long *)PORT2ADDR(port) = l;
+       _outl(l, port);
        delay();
 }
 
index 85688ffb52f93cd632041419c3634babc33e0b77..78033165fb5c7ecb489bb35a442654f8ce415ccc 100644 (file)
@@ -3,8 +3,8 @@
  *
  *  Typical I/O routines for Mappi board.
  *
- *  Copyright (c) 2001, 2002  Hiroyuki Kondo, Hirokazu Takata,
- *                            Hitoshi Yamamoto
+ *  Copyright (c) 2001-2005  Hiroyuki Kondo, Hirokazu Takata,
+ *                           Hitoshi Yamamoto
  */
 
 #include <linux/config.h>
@@ -130,57 +130,21 @@ unsigned long _inl(unsigned long port)
 
 unsigned char _inb_p(unsigned long port)
 {
-       unsigned char  v;
-
-       if (port >= 0x300 && port < 0x320)
-               v = _ne_inb(PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_PCC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               unsigned char b;
-               pcc_ioread(0, port, &b, sizeof(b), 1, 0);
-               return b;
-       } else  if (port >= M32R_PCC_IOSTART1 && port <= M32R_PCC_IOEND1) {
-               unsigned char b;
-               pcc_ioread(1, port, &b, sizeof(b), 1, 0);
-               return b;
-       } else
-#endif
-               v = *(volatile unsigned char *)PORT2ADDR(port);
-
+       unsigned char v = _inb(port);
        delay();
        return (v);
 }
 
 unsigned short _inw_p(unsigned long port)
 {
-       unsigned short  v;
-
-       if (port >= 0x300 && port < 0x320)
-               v = _ne_inw(PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_PCC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               unsigned short w;
-               pcc_ioread(0, port, &w, sizeof(w), 1, 0);
-               return w;
-       } else  if (port >= M32R_PCC_IOSTART1 && port <= M32R_PCC_IOEND1) {
-               unsigned short w;
-               pcc_ioread(1, port, &w, sizeof(w), 1, 0);
-               return w;
-       } else
-#endif
-               v = *(volatile unsigned short *)PORT2ADDR(port);
-
+       unsigned short v = _inw(port);
        delay();
        return (v);
 }
 
 unsigned long _inl_p(unsigned long port)
 {
-       unsigned long  v;
-
-       v = *(volatile unsigned long *)PORT2ADDR(port);
+       unsigned long v = _inl(port);
        delay();
        return (v);
 }
@@ -229,41 +193,19 @@ void _outl(unsigned long l, unsigned long port)
 
 void _outb_p(unsigned char b, unsigned long port)
 {
-       if (port >= 0x300 && port < 0x320)
-               _ne_outb(b, PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_PCC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               pcc_iowrite(0, port, &b, sizeof(b), 1, 0);
-       } else  if (port >= M32R_PCC_IOSTART1 && port <= M32R_PCC_IOEND1) {
-               pcc_iowrite(1, port, &b, sizeof(b), 1, 0);
-       } else
-#endif
-               *(volatile unsigned char *)PORT2ADDR(port) = b;
-
+       _outb(b, port);
        delay();
 }
 
 void _outw_p(unsigned short w, unsigned long port)
 {
-       if (port >= 0x300 && port < 0x320)
-               _ne_outw(w, PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_PCC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               pcc_iowrite(0, port, &w, sizeof(w), 1, 0);
-       } else  if (port >= M32R_PCC_IOSTART1 && port <= M32R_PCC_IOEND1) {
-               pcc_iowrite(1, port, &w, sizeof(w), 1, 0);
-       } else
-#endif
-               *(volatile unsigned short *)PORT2ADDR(port) = w;
-
+       _outw(w, port);
        delay();
 }
 
 void _outl_p(unsigned long l, unsigned long port)
 {
-       *(volatile unsigned long *)PORT2ADDR(port) = l;
+       _outl(l, port);
        delay();
 }
 
index 4182cd4f97c8a77a60ca636de368677059cbf792..5c03504bf65375646880da8f8eadd973fabbbf24 100644 (file)
@@ -3,7 +3,7 @@
  *
  *  Typical I/O routines for Mappi2 board.
  *
- *  Copyright (c) 2001-2003  Hiroyuki Kondo, Hirokazu Takata,
+ *  Copyright (c) 2001-2005  Hiroyuki Kondo, Hirokazu Takata,
  *                           Hitoshi Yamamoto, Mamoru Sakugawa
  */
 
@@ -25,7 +25,7 @@ extern void pcc_ioread_byte(int, unsigned long, void *, size_t, size_t, int);
 extern void pcc_ioread_word(int, unsigned long, void *, size_t, size_t, int);
 extern void pcc_iowrite_byte(int, unsigned long, void *, size_t, size_t, int);
 extern void pcc_iowrite_word(int, unsigned long, void *, size_t, size_t, int);
-#endif /* CONFIG_PCMCIA && CONFIG_MAPPI2_CFC */
+#endif /* CONFIG_PCMCIA && CONFIG_M32R_CFC */
 
 #define PORT2ADDR(port)      _port2addr(port)
 #define PORT2ADDR_NE(port)   _port2addr_ne(port)
@@ -169,64 +169,21 @@ unsigned long _inl(unsigned long port)
 
 unsigned char _inb_p(unsigned long port)
 {
-       unsigned char  v;
-
-       if (port >= LAN_IOSTART && port < LAN_IOEND)
-               v = _ne_inb(PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
-       if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
-               return *(volatile unsigned char *)__port2addr_ata(port);
-       } else
-#endif
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               unsigned char b;
-               pcc_ioread_byte(0, port, &b, sizeof(b), 1, 0);
-               return b;
-       } else
-#endif
-               v = *(volatile unsigned char *)PORT2ADDR(port);
-
+       unsigned char v = _inb(port);
        delay();
        return (v);
 }
 
 unsigned short _inw_p(unsigned long port)
 {
-       unsigned short  v;
-
-       if (port >= LAN_IOSTART && port < LAN_IOEND)
-               v = _ne_inw(PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
-       if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
-               return *(volatile unsigned short *)__port2addr_ata(port);
-       } else
-#endif
-#if defined(CONFIG_USB)
-       if (port >= 0x340 && port < 0x3a0)
-               v = *(volatile unsigned short *)PORT2ADDR_USB(port);
-       else
-#endif
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               unsigned short w;
-               pcc_ioread_word(0, port, &w, sizeof(w), 1, 0);
-               return w;
-       } else
-#endif
-               v = *(volatile unsigned short *)PORT2ADDR(port);
-
+       unsigned short v = _inw(port);
        delay();
        return (v);
 }
 
 unsigned long _inl_p(unsigned long port)
 {
-       unsigned long  v;
-
-       v = *(volatile unsigned long *)PORT2ADDR(port);
+       unsigned long v = _inl(port);
        delay();
        return (v);
 }
@@ -284,52 +241,19 @@ void _outl(unsigned long l, unsigned long port)
 
 void _outb_p(unsigned char b, unsigned long port)
 {
-       if (port >= LAN_IOSTART && port < LAN_IOEND)
-               _ne_outb(b, PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
-       if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
-               *(volatile unsigned char *)__port2addr_ata(port) = b;
-       } else
-#endif
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               pcc_iowrite_byte(0, port, &b, sizeof(b), 1, 0);
-       } else
-#endif
-               *(volatile unsigned char *)PORT2ADDR(port) = b;
-
+       _outb(b, port);
        delay();
 }
 
 void _outw_p(unsigned short w, unsigned long port)
 {
-       if (port >= LAN_IOSTART && port < LAN_IOEND)
-               _ne_outw(w, PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
-       if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
-               *(volatile unsigned short *)__port2addr_ata(port) = w;
-       } else
-#endif
-#if defined(CONFIG_USB)
-         if (port >= 0x340 && port < 0x3a0)
-               *(volatile unsigned short *)PORT2ADDR_USB(port) = w;
-       else
-#endif
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               pcc_iowrite_word(0, port, &w, sizeof(w), 1, 0);
-       } else
-#endif
-               *(volatile unsigned short *)PORT2ADDR(port) = w;
-
+       _outw(w, port);
        delay();
 }
 
 void _outl_p(unsigned long l, unsigned long port)
 {
-       *(volatile unsigned long *)PORT2ADDR(port) = l;
+       _outl(l, port);
        delay();
 }
 
diff --git a/arch/m32r/kernel/io_mappi3.c b/arch/m32r/kernel/io_mappi3.c
new file mode 100644 (file)
index 0000000..c80bde6
--- /dev/null
@@ -0,0 +1,378 @@
+/*
+ *  linux/arch/m32r/kernel/io_mappi3.c
+ *
+ *  Typical I/O routines for Mappi3 board.
+ *
+ *  Copyright (c) 2001-2005  Hiroyuki Kondo, Hirokazu Takata,
+ *                           Hitoshi Yamamoto, Mamoru Sakugawa
+ */
+
+#include <linux/config.h>
+#include <asm/m32r.h>
+#include <asm/page.h>
+#include <asm/io.h>
+#include <asm/byteorder.h>
+
+#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
+#include <linux/types.h>
+
+#define M32R_PCC_IOMAP_SIZE 0x1000
+
+#define M32R_PCC_IOSTART0 0x1000
+#define M32R_PCC_IOEND0   (M32R_PCC_IOSTART0 + M32R_PCC_IOMAP_SIZE - 1)
+
+extern void pcc_ioread_byte(int, unsigned long, void *, size_t, size_t, int);
+extern void pcc_ioread_word(int, unsigned long, void *, size_t, size_t, int);
+extern void pcc_iowrite_byte(int, unsigned long, void *, size_t, size_t, int);
+extern void pcc_iowrite_word(int, unsigned long, void *, size_t, size_t, int);
+#endif /* CONFIG_PCMCIA && CONFIG_M32R_CFC */
+
+#define PORT2ADDR(port)      _port2addr(port)
+#define PORT2ADDR_NE(port)   _port2addr_ne(port)
+#define PORT2ADDR_USB(port)  _port2addr_usb(port)
+
+static inline void *_port2addr(unsigned long port)
+{
+       return (void *)(port + NONCACHE_OFFSET);
+}
+
+#define LAN_IOSTART    0x300
+#define LAN_IOEND      0x320
+
+#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
+static inline void *__port2addr_ata(unsigned long port)
+{
+       static int      dummy_reg;
+
+       switch (port) {
+       case 0x1f0:     return (void *)0xb4002000;
+       case 0x1f1:     return (void *)0xb4012800;
+       case 0x1f2:     return (void *)0xb4012002;
+       case 0x1f3:     return (void *)0xb4012802;
+       case 0x1f4:     return (void *)0xb4012004;
+       case 0x1f5:     return (void *)0xb4012804;
+       case 0x1f6:     return (void *)0xb4012006;
+       case 0x1f7:     return (void *)0xb4012806;
+       case 0x3f6:     return (void *)0xb401200e;
+       default:        return (void *)&dummy_reg;
+       }
+}
+#endif
+
+static inline void *_port2addr_ne(unsigned long port)
+{
+       return (void *)(port + NONCACHE_OFFSET + 0x10000000);
+}
+
+static inline void *_port2addr_usb(unsigned long port)
+{
+       return (void *)(port + NONCACHE_OFFSET + 0x12000000);
+}
+static inline void delay(void)
+{
+       __asm__ __volatile__ ("push r0; \n\t pop r0;" : : :"memory");
+}
+
+/*
+ * NIC I/O function
+ */
+
+static inline unsigned char _ne_inb(void *portp)
+{
+       return (unsigned char) *(volatile unsigned char *)portp;
+}
+
+static inline unsigned short _ne_inw(void *portp)
+{
+       return (unsigned short)le16_to_cpu(*(volatile unsigned short *)portp);
+}
+
+static inline void _ne_insb(void *portp, void * addr, unsigned long count)
+{
+       unsigned char *buf = addr;
+
+       while (count--)
+               *buf++ = *(volatile unsigned char *)portp;
+}
+
+static inline void _ne_outb(unsigned char b, void *portp)
+{
+       *(volatile unsigned char *)portp = (unsigned char)b;
+}
+
+static inline void _ne_outw(unsigned short w, void *portp)
+{
+       *(volatile unsigned short *)portp = cpu_to_le16(w);
+}
+
+unsigned char _inb(unsigned long port)
+{
+       if (port >= LAN_IOSTART && port < LAN_IOEND)
+               return _ne_inb(PORT2ADDR_NE(port));
+#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
+       else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
+               return *(volatile unsigned char *)__port2addr_ata(port);
+       }
+#endif
+#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
+       else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
+               unsigned char b;
+               pcc_ioread_byte(0, port, &b, sizeof(b), 1, 0);
+               return b;
+       } else
+#endif
+       return *(volatile unsigned char *)PORT2ADDR(port);
+}
+
+unsigned short _inw(unsigned long port)
+{
+       if (port >= LAN_IOSTART && port < LAN_IOEND)
+               return _ne_inw(PORT2ADDR_NE(port));
+#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
+       else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
+               return *(volatile unsigned short *)__port2addr_ata(port);
+       }
+#endif
+#if defined(CONFIG_USB)
+       else if (port >= 0x340 && port < 0x3a0)
+               return *(volatile unsigned short *)PORT2ADDR_USB(port);
+#endif
+
+#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
+       else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
+               unsigned short w;
+               pcc_ioread_word(0, port, &w, sizeof(w), 1, 0);
+               return w;
+       } else
+#endif
+       return *(volatile unsigned short *)PORT2ADDR(port);
+}
+
+unsigned long _inl(unsigned long port)
+{
+#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
+       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
+               unsigned long l;
+               pcc_ioread_word(0, port, &l, sizeof(l), 1, 0);
+               return l;
+       } else
+#endif
+       return *(volatile unsigned long *)PORT2ADDR(port);
+}
+
+unsigned char _inb_p(unsigned long port)
+{
+       unsigned char v = _inb(port);
+       delay();
+       return (v);
+}
+
+unsigned short _inw_p(unsigned long port)
+{
+       unsigned short v = _inw(port);
+       delay();
+       return (v);
+}
+
+unsigned long _inl_p(unsigned long port)
+{
+       unsigned long v = _inl(port);
+       delay();
+       return (v);
+}
+
+void _outb(unsigned char b, unsigned long port)
+{
+       if (port >= LAN_IOSTART && port < LAN_IOEND)
+               _ne_outb(b, PORT2ADDR_NE(port));
+       else
+#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
+       if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
+               *(volatile unsigned char *)__port2addr_ata(port) = b;
+       } else
+#endif
+#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
+       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
+               pcc_iowrite_byte(0, port, &b, sizeof(b), 1, 0);
+       } else
+#endif
+               *(volatile unsigned char *)PORT2ADDR(port) = b;
+}
+
+void _outw(unsigned short w, unsigned long port)
+{
+       if (port >= LAN_IOSTART && port < LAN_IOEND)
+               _ne_outw(w, PORT2ADDR_NE(port));
+       else
+#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
+       if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
+               *(volatile unsigned short *)__port2addr_ata(port) = w;
+       } else
+#endif
+#if defined(CONFIG_USB)
+       if (port >= 0x340 && port < 0x3a0)
+               *(volatile unsigned short *)PORT2ADDR_USB(port) = w;
+       else
+#endif
+#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
+       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
+               pcc_iowrite_word(0, port, &w, sizeof(w), 1, 0);
+       } else
+#endif
+               *(volatile unsigned short *)PORT2ADDR(port) = w;
+}
+
+void _outl(unsigned long l, unsigned long port)
+{
+#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
+       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
+               pcc_iowrite_word(0, port, &l, sizeof(l), 1, 0);
+       } else
+#endif
+       *(volatile unsigned long *)PORT2ADDR(port) = l;
+}
+
+void _outb_p(unsigned char b, unsigned long port)
+{
+       _outb(b, port);
+       delay();
+}
+
+void _outw_p(unsigned short w, unsigned long port)
+{
+       _outw(w, port);
+       delay();
+}
+
+void _outl_p(unsigned long l, unsigned long port)
+{
+       _outl(l, port);
+       delay();
+}
+
+void _insb(unsigned int port, void * addr, unsigned long count)
+{
+       if (port >= LAN_IOSTART && port < LAN_IOEND)
+               _ne_insb(PORT2ADDR_NE(port), addr, count);
+#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
+       else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
+               unsigned char *buf = addr;
+               unsigned char *portp = __port2addr_ata(port);
+               while (count--)
+                       *buf++ = *(volatile unsigned char *)portp;
+       }
+#endif
+#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
+       else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
+               pcc_ioread_byte(0, port, (void *)addr, sizeof(unsigned char),
+                               count, 1);
+       }
+#endif
+       else {
+               unsigned char *buf = addr;
+               unsigned char *portp = PORT2ADDR(port);
+               while (count--)
+                       *buf++ = *(volatile unsigned char *)portp;
+       }
+}
+
+void _insw(unsigned int port, void * addr, unsigned long count)
+{
+       unsigned short *buf = addr;
+       unsigned short *portp;
+
+       if (port >= LAN_IOSTART && port < LAN_IOEND) {
+               portp = PORT2ADDR_NE(port);
+               while (count--)
+                       *buf++ = *(volatile unsigned short *)portp;
+#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
+       } else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
+               pcc_ioread_word(9, port, (void *)addr, sizeof(unsigned short),
+                               count, 1);
+#endif
+#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
+       } else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
+               portp = __port2addr_ata(port);
+               while (count--)
+                       *buf++ = *(volatile unsigned short *)portp;
+#endif
+       } else {
+               portp = PORT2ADDR(port);
+               while (count--)
+                       *buf++ = *(volatile unsigned short *)portp;
+       }
+}
+
+void _insl(unsigned int port, void * addr, unsigned long count)
+{
+       unsigned long *buf = addr;
+       unsigned long *portp;
+
+       portp = PORT2ADDR(port);
+       while (count--)
+               *buf++ = *(volatile unsigned long *)portp;
+}
+
+void _outsb(unsigned int port, const void * addr, unsigned long count)
+{
+       const unsigned char *buf = addr;
+       unsigned char *portp;
+
+       if (port >= LAN_IOSTART && port < LAN_IOEND) {
+               portp = PORT2ADDR_NE(port);
+               while (count--)
+                       _ne_outb(*buf++, portp);
+#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
+       } else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
+               portp = __port2addr_ata(port);
+               while (count--)
+                       *(volatile unsigned char *)portp = *buf++;
+#endif
+#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
+       } else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
+               pcc_iowrite_byte(0, port, (void *)addr, sizeof(unsigned char),
+                                count, 1);
+#endif
+       } else {
+               portp = PORT2ADDR(port);
+               while (count--)
+                       *(volatile unsigned char *)portp = *buf++;
+       }
+}
+
+void _outsw(unsigned int port, const void * addr, unsigned long count)
+{
+       const unsigned short *buf = addr;
+       unsigned short *portp;
+
+       if (port >= LAN_IOSTART && port < LAN_IOEND) {
+               portp = PORT2ADDR_NE(port);
+               while (count--)
+                       *(volatile unsigned short *)portp = *buf++;
+#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
+       } else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
+               portp = __port2addr_ata(port);
+               while (count--)
+                       *(volatile unsigned short *)portp = *buf++;
+#endif
+#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
+       } else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
+               pcc_iowrite_word(9, port, (void *)addr, sizeof(unsigned short),
+                                count, 1);
+#endif
+       } else {
+               portp = PORT2ADDR(port);
+               while (count--)
+                       *(volatile unsigned short *)portp = *buf++;
+       }
+}
+
+void _outsl(unsigned int port, const void * addr, unsigned long count)
+{
+       const unsigned long *buf = addr;
+       unsigned char *portp;
+
+       portp = PORT2ADDR(port);
+       while (count--)
+               *(volatile unsigned long *)portp = *buf++;
+}
index 286964794d5158bc58e666c0cbf8664a92781db4..9997dddd24d7ea8584bc5e66ae579b5249aca3e8 100644 (file)
@@ -3,7 +3,7 @@
  *
  *  Typical I/O routines for OAKS32R board.
  *
- *  Copyright (c) 2001-2004  Hiroyuki Kondo, Hirokazu Takata,
+ *  Copyright (c) 2001-2005  Hiroyuki Kondo, Hirokazu Takata,
  *                           Hitoshi Yamamoto, Mamoru Sakugawa
  */
 
@@ -90,35 +90,21 @@ unsigned long _inl(unsigned long port)
 
 unsigned char _inb_p(unsigned long port)
 {
-       unsigned char  v;
-
-       if (port >= 0x300 && port < 0x320)
-               v = _ne_inb(PORT2ADDR_NE(port));
-       else
-               v = *(volatile unsigned char *)PORT2ADDR(port);
-
+       unsigned char v = _inb(port);
        delay();
        return (v);
 }
 
 unsigned short _inw_p(unsigned long port)
 {
-       unsigned short  v;
-
-       if (port >= 0x300 && port < 0x320)
-               v = _ne_inw(PORT2ADDR_NE(port));
-       else
-               v = *(volatile unsigned short *)PORT2ADDR(port);
-
+       unsigned short v = _inw(port);
        delay();
        return (v);
 }
 
 unsigned long _inl_p(unsigned long port)
 {
-       unsigned long  v;
-
-       v = *(volatile unsigned long *)PORT2ADDR(port);
+       unsigned long v = _inl(port);
        delay();
        return (v);
 }
@@ -146,27 +132,19 @@ void _outl(unsigned long l, unsigned long port)
 
 void _outb_p(unsigned char b, unsigned long port)
 {
-       if (port >= 0x300 && port < 0x320)
-               _ne_outb(b, PORT2ADDR_NE(port));
-       else
-               *(volatile unsigned char *)PORT2ADDR(port) = b;
-
+       _outb(b, port);
        delay();
 }
 
 void _outw_p(unsigned short w, unsigned long port)
 {
-       if (port >= 0x300 && port < 0x320)
-               _ne_outw(w, PORT2ADDR_NE(port));
-       else
-               *(volatile unsigned short *)PORT2ADDR(port) = w;
-
+       _outw(w, port);
        delay();
 }
 
 void _outl_p(unsigned long l, unsigned long port)
 {
-       *(volatile unsigned long *)PORT2ADDR(port) = l;
+       _outl(l, port);
        delay();
 }
 
index aaf42f9f76dab13ce73e37c0e3d23de9482fa54e..e34951e8156fe227e431fcad50289edf638653df 100644 (file)
@@ -1,10 +1,10 @@
 /*
- *  linux/arch/m32r/kernel/io_mappi.c
+ *  linux/arch/m32r/kernel/io_opsput.c
  *
  *  Typical I/O routines for OPSPUT board.
  *
- *  Copyright (c) 2001, 2002  Hiroyuki Kondo, Hirokazu Takata,
- *                            Hitoshi Yamamoto, Takeo Takahashi
+ *  Copyright (c) 2001-2005  Hiroyuki Kondo, Hirokazu Takata,
+ *                           Hitoshi Yamamoto, Takeo Takahashi
  *
  *  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
@@ -98,7 +98,6 @@ unsigned char _inb(unsigned long port)
 {
        if (port >= LAN_IOSTART && port < LAN_IOEND)
                return _ne_inb(PORT2ADDR_NE(port));
-
 #if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
        else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
                unsigned char b;
@@ -118,7 +117,6 @@ unsigned short _inw(unsigned long port)
        else if(port >= 0x340 && port < 0x3a0)
                return *(volatile unsigned short *)PORT2ADDR_USB(port);
 #endif
-
 #if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
        else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
                unsigned short w;
@@ -143,55 +141,21 @@ unsigned long _inl(unsigned long port)
 
 unsigned char _inb_p(unsigned long port)
 {
-       unsigned char  v;
-
-       if (port >= LAN_IOSTART && port < LAN_IOEND)
-               v = _ne_inb(PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               unsigned char b;
-               pcc_ioread_byte(0, port, &b, sizeof(b), 1, 0);
-               return b;
-       } else
-#endif
-               v = *(volatile unsigned char *)PORT2ADDR(port);
-
+       unsigned char v = _inb(port);
        delay();
        return (v);
 }
 
 unsigned short _inw_p(unsigned long port)
 {
-       unsigned short  v;
-
-       if (port >= LAN_IOSTART && port < LAN_IOEND)
-               v = _ne_inw(PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_USB)
-       if(port >= 0x340 && port < 0x3a0)
-               return *(volatile unsigned short *)PORT2ADDR_USB(port);
-       else
-#endif
-
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               unsigned short w;
-               pcc_ioread_word(0, port, &w, sizeof(w), 1, 0);
-               return w;
-       } else
-#endif
-               v = *(volatile unsigned short *)PORT2ADDR(port);
-
+       unsigned short v = _inw(port);
        delay();
        return (v);
 }
 
 unsigned long _inl_p(unsigned long port)
 {
-       unsigned long  v;
-
-       v = *(volatile unsigned long *)PORT2ADDR(port);
+       unsigned long v = _inl(port);
        delay();
        return (v);
 }
@@ -219,7 +183,6 @@ void _outw(unsigned short w, unsigned long port)
                *(volatile unsigned short *)PORT2ADDR_USB(port) = w;
        else
 #endif
-
 #if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
        if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
                pcc_iowrite_word(0, port, &w, sizeof(w), 1, 0);
@@ -240,43 +203,19 @@ void _outl(unsigned long l, unsigned long port)
 
 void _outb_p(unsigned char b, unsigned long port)
 {
-       if (port >= LAN_IOSTART && port < LAN_IOEND)
-               _ne_outb(b, PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               pcc_iowrite_byte(0, port, &b, sizeof(b), 1, 0);
-       } else
-#endif
-               *(volatile unsigned char *)PORT2ADDR(port) = b;
-
+       _outb(b, port);
        delay();
 }
 
 void _outw_p(unsigned short w, unsigned long port)
 {
-       if (port >= LAN_IOSTART && port < LAN_IOEND)
-               _ne_outw(w, PORT2ADDR_NE(port));
-       else
-#if defined(CONFIG_USB)
-       if(port >= 0x340 && port < 0x3a0)
-               *(volatile unsigned short *)PORT2ADDR_USB(port) = w;
-       else
-#endif
-
-#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
-       if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
-               pcc_iowrite_word(0, port, &w, sizeof(w), 1, 0);
-       } else
-#endif
-               *(volatile unsigned short *)PORT2ADDR(port) = w;
-
+       _outw(w, port);
        delay();
 }
 
 void _outl_p(unsigned long l, unsigned long port)
 {
-       *(volatile unsigned long *)PORT2ADDR(port) = l;
+       _outl(l, port);
        delay();
 }
 
index 27928a0b99edf875450bf196e39d7e5435c5ce18..9eb161dcc1042ea86a0154a7ec2bc324773578cc 100644 (file)
@@ -3,8 +3,8 @@
  *
  *  Typical I/O routines for uServer board.
  *
- *  Copyright (c) 2001 - 2003  Hiroyuki Kondo, Hirokazu Takata,
- *                             Hitoshi Yamamoto, Takeo Takahashi
+ *  Copyright (c) 2001-2005  Hiroyuki Kondo, Hirokazu Takata,
+ *                           Hitoshi Yamamoto, Takeo Takahashi
  *
  *  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
@@ -39,7 +39,7 @@ extern void pcc_iowrite_word(int, unsigned long, void *, size_t, size_t, int);
 
 #define PORT2ADDR(port)        _port2addr(port)
 
-static __inline__ void *_port2addr(unsigned long port)
+static inline void *_port2addr(unsigned long port)
 {
 #if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE)
        if (port >= UART0_IOSTART && port <= UART0_IOEND)
@@ -50,7 +50,7 @@ static __inline__ void *_port2addr(unsigned long port)
        return (void *)(port + NONCACHE_OFFSET);
 }
 
-static __inline__ void delay(void)
+static inline void delay(void)
 {
        __asm__ __volatile__ ("push r0; \n\t pop r0;" : : :"memory");
 }
@@ -87,39 +87,22 @@ unsigned long _inl(unsigned long port)
 
 unsigned char _inb_p(unsigned long port)
 {
-       unsigned char b;
-
-       if (port >= CFC_IOSTART && port <= CFC_IOEND) {
-               pcc_ioread_byte(0, port, &b, sizeof(b), 1, 0);
-               return b;
-       } else {
-               b = *(volatile unsigned char *)PORT2ADDR(port);
-               delay();
-               return b;
-       }
+       unsigned char v = _inb(port);
+       delay();
+       return v;
 }
 
 unsigned short _inw_p(unsigned long port)
 {
-       unsigned short w;
-
-       if (port >= CFC_IOSTART && port <= CFC_IOEND) {
-               pcc_ioread_word(0, port, &w, sizeof(w), 1, 0);
-               return w;
-       } else {
-               w = *(volatile unsigned short *)PORT2ADDR(port);
-               delay();
-               return w;
-       }
+       unsigned short v = _inw(port);
+       delay();
+       return v;
 }
 
 unsigned long _inl_p(unsigned long port)
 {
-       unsigned long v;
-
-       v = *(volatile unsigned long *)PORT2ADDR(port);
+       unsigned long v = _inl(port);
        delay();
-
        return v;
 }
 
@@ -149,25 +132,19 @@ void _outl(unsigned long l, unsigned long port)
 
 void _outb_p(unsigned char b, unsigned long port)
 {
-       if (port >= CFC_IOSTART && port <= CFC_IOEND)
-               pcc_iowrite_byte(0, port, &b, sizeof(b), 1, 0);
-       else
-               *(volatile unsigned char *)PORT2ADDR(port) = b;
+       _outb(b, port);
        delay();
 }
 
 void _outw_p(unsigned short w, unsigned long port)
 {
-       if (port >= CFC_IOSTART && port <= CFC_IOEND)
-               pcc_iowrite_word(0, port, &w, sizeof(w), 1, 0);
-       else
-               *(volatile unsigned short *)PORT2ADDR(port) = w;
+       _outw(w, port);
        delay();
 }
 
 void _outl_p(unsigned long l, unsigned long port)
 {
-       *(volatile unsigned long *)PORT2ADDR(port) = l;
+       _outl(l, port);
        delay();
 }
 
index 4826cd6e40e8eef3bcdee95245fbec18db7868a5..ec5674727e7f148c0b42fc4224143223a726d9a6 100644 (file)
@@ -330,6 +330,8 @@ static int show_cpuinfo(struct seq_file *m, void *v)
        seq_printf(m, "Machine\t\t: Mappi Evaluation board\n");
 #elif CONFIG_PLAT_MAPPI2
        seq_printf(m, "Machine\t\t: Mappi-II Evaluation board\n");
+#elif CONFIG_PLAT_MAPPI3
+       seq_printf(m, "Machine\t\t: Mappi-III Evaluation board\n");
 #elif  CONFIG_PLAT_M32700UT
        seq_printf(m, "Machine\t\t: M32700UT Evaluation board\n");
 #elif  CONFIG_PLAT_OPSPUT
index 488aa87bab7666eeae74c6297ebcb73e0315ce4a..b014e2c1e524973a58f8adf7ecff122966446787 100644 (file)
@@ -78,13 +78,13 @@ static void shutdown_m32700ut_irq(unsigned int irq)
 
 static struct hw_interrupt_type m32700ut_irq_type =
 {
-       "M32700UT-IRQ",
-       startup_m32700ut_irq,
-       shutdown_m32700ut_irq,
-       enable_m32700ut_irq,
-       disable_m32700ut_irq,
-       mask_and_ack_m32700ut,
-       end_m32700ut_irq
+       .typename = "M32700UT-IRQ",
+       .startup = startup_m32700ut_irq,
+       .shutdown = shutdown_m32700ut_irq,
+       .enable = enable_m32700ut_irq,
+       .disable = disable_m32700ut_irq,
+       .ack = mask_and_ack_m32700ut,
+       .end = end_m32700ut_irq
 };
 
 /*
@@ -155,13 +155,13 @@ static void shutdown_m32700ut_pld_irq(unsigned int irq)
 
 static struct hw_interrupt_type m32700ut_pld_irq_type =
 {
-       "M32700UT-PLD-IRQ",
-       startup_m32700ut_pld_irq,
-       shutdown_m32700ut_pld_irq,
-       enable_m32700ut_pld_irq,
-       disable_m32700ut_pld_irq,
-       mask_and_ack_m32700ut_pld,
-       end_m32700ut_pld_irq
+       .typename = "M32700UT-PLD-IRQ",
+       .startup = startup_m32700ut_pld_irq,
+       .shutdown = shutdown_m32700ut_pld_irq,
+       .enable = enable_m32700ut_pld_irq,
+       .disable = disable_m32700ut_pld_irq,
+       .ack = mask_and_ack_m32700ut_pld,
+       .end = end_m32700ut_pld_irq
 };
 
 /*
@@ -224,13 +224,13 @@ static void shutdown_m32700ut_lanpld_irq(unsigned int irq)
 
 static struct hw_interrupt_type m32700ut_lanpld_irq_type =
 {
-       "M32700UT-PLD-LAN-IRQ",
-       startup_m32700ut_lanpld_irq,
-       shutdown_m32700ut_lanpld_irq,
-       enable_m32700ut_lanpld_irq,
-       disable_m32700ut_lanpld_irq,
-       mask_and_ack_m32700ut_lanpld,
-       end_m32700ut_lanpld_irq
+       .typename = "M32700UT-PLD-LAN-IRQ",
+       .startup = startup_m32700ut_lanpld_irq,
+       .shutdown = shutdown_m32700ut_lanpld_irq,
+       .enable = enable_m32700ut_lanpld_irq,
+       .disable = disable_m32700ut_lanpld_irq,
+       .ack = mask_and_ack_m32700ut_lanpld,
+       .end = end_m32700ut_lanpld_irq
 };
 
 /*
@@ -293,13 +293,13 @@ static void shutdown_m32700ut_lcdpld_irq(unsigned int irq)
 
 static struct hw_interrupt_type m32700ut_lcdpld_irq_type =
 {
-       "M32700UT-PLD-LCD-IRQ",
-       startup_m32700ut_lcdpld_irq,
-       shutdown_m32700ut_lcdpld_irq,
-       enable_m32700ut_lcdpld_irq,
-       disable_m32700ut_lcdpld_irq,
-       mask_and_ack_m32700ut_lcdpld,
-       end_m32700ut_lcdpld_irq
+       .typename = "M32700UT-PLD-LCD-IRQ",
+       .startup = startup_m32700ut_lcdpld_irq,
+       .shutdown = shutdown_m32700ut_lcdpld_irq,
+       .enable = enable_m32700ut_lcdpld_irq,
+       .disable = disable_m32700ut_lcdpld_irq,
+       .ack = mask_and_ack_m32700ut_lcdpld,
+       .end = end_m32700ut_lcdpld_irq
 };
 
 void __init init_IRQ(void)
index 1e74110f0670a19008d8632482f353c815b4f98d..aaf8e569b930267a45b4603fc351d58daae9f11e 100644 (file)
@@ -70,13 +70,13 @@ static void shutdown_mappi_irq(unsigned int irq)
 
 static struct hw_interrupt_type mappi_irq_type =
 {
-       "MAPPI-IRQ",
-       startup_mappi_irq,
-       shutdown_mappi_irq,
-       enable_mappi_irq,
-       disable_mappi_irq,
-       mask_and_ack_mappi,
-       end_mappi_irq
+       .typename = "MAPPI-IRQ",
+       .startup = startup_mappi_irq,
+       .shutdown = shutdown_mappi_irq,
+       .enable = enable_mappi_irq,
+       .disable = disable_mappi_irq,
+       .ack = mask_and_ack_mappi,
+       .end = end_mappi_irq
 };
 
 void __init init_IRQ(void)
index 1904d465a507cae133c8d9a919082422d4b9e83c..38d5e9a4142782ac201748ea4c3a0b52fae2865d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  linux/arch/m32r/kernel/setup_mappi.c
+ *  linux/arch/m32r/kernel/setup_mappi2.c
  *
  *  Setup routines for Renesas MAPPI-II(M3A-ZA36) Board
  *
@@ -79,13 +79,13 @@ static void shutdown_mappi2_irq(unsigned int irq)
 
 static struct hw_interrupt_type mappi2_irq_type =
 {
-       "MAPPI2-IRQ",
-       startup_mappi2_irq,
-       shutdown_mappi2_irq,
-       enable_mappi2_irq,
-       disable_mappi2_irq,
-       mask_and_ack_mappi2,
-       end_mappi2_irq
+       .typename = "MAPPI2-IRQ",
+       .startup = startup_mappi2_irq,
+       .shutdown = shutdown_mappi2_irq,
+       .enable = enable_mappi2_irq,
+       .disable = disable_mappi2_irq,
+       .ack = mask_and_ack_mappi2,
+       .end = end_mappi2_irq
 };
 
 void __init init_IRQ(void)
@@ -156,7 +156,6 @@ void __init init_IRQ(void)
        irq_desc[PLD_IRQ_CFIREQ].handler = &mappi2_irq_type;
        irq_desc[PLD_IRQ_CFIREQ].action = 0;
        irq_desc[PLD_IRQ_CFIREQ].depth = 1;     /* disable nested irq */
-//     icu_data[PLD_IRQ_CFIREQ].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD00;
        icu_data[PLD_IRQ_CFIREQ].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD01;
        disable_mappi2_irq(PLD_IRQ_CFIREQ);
 
@@ -167,7 +166,6 @@ void __init init_IRQ(void)
        irq_desc[PLD_IRQ_CFC_INSERT].action = 0;
        irq_desc[PLD_IRQ_CFC_INSERT].depth = 1; /* disable nested irq */
        icu_data[PLD_IRQ_CFC_INSERT].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD00;
-//     icu_data[PLD_IRQ_CFC_INSERT].icucr = 0;
        disable_mappi2_irq(PLD_IRQ_CFC_INSERT);
 
        /* ICUCR42: CFC Eject */
@@ -176,9 +174,7 @@ void __init init_IRQ(void)
        irq_desc[PLD_IRQ_CFC_EJECT].action = 0;
        irq_desc[PLD_IRQ_CFC_EJECT].depth = 1;  /* disable nested irq */
        icu_data[PLD_IRQ_CFC_EJECT].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD10;
-//     icu_data[PLD_IRQ_CFC_EJECT].icucr = 0;
        disable_mappi2_irq(PLD_IRQ_CFC_EJECT);
-
 #endif /* CONFIG_MAPPI2_CFC */
 }
 
diff --git a/arch/m32r/kernel/setup_mappi3.c b/arch/m32r/kernel/setup_mappi3.c
new file mode 100644 (file)
index 0000000..3d60a85
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ *  linux/arch/m32r/kernel/setup_mappi3.c
+ *
+ *  Setup routines for Renesas MAPPI-III(M3A-2170) Board
+ *
+ *  Copyright (c) 2001-2005   Hiroyuki Kondo, Hirokazu Takata,
+ *                            Hitoshi Yamamoto, Mamoru Sakugawa
+ */
+
+#include <linux/config.h>
+#include <linux/irq.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/device.h>
+
+#include <asm/system.h>
+#include <asm/m32r.h>
+#include <asm/io.h>
+
+#define irq2port(x) (M32R_ICU_CR1_PORTL + ((x - 1) * sizeof(unsigned long)))
+
+#ifndef CONFIG_SMP
+typedef struct {
+       unsigned long icucr;  /* ICU Control Register */
+} icu_data_t;
+#endif /* CONFIG_SMP */
+
+icu_data_t icu_data[NR_IRQS];
+
+static void disable_mappi3_irq(unsigned int irq)
+{
+       unsigned long port, data;
+
+       if ((irq == 0) ||(irq >= NR_IRQS))  {
+               printk("bad irq 0x%08x\n", irq);
+               return;
+       }
+       port = irq2port(irq);
+       data = icu_data[irq].icucr|M32R_ICUCR_ILEVEL7;
+       outl(data, port);
+}
+
+static void enable_mappi3_irq(unsigned int irq)
+{
+       unsigned long port, data;
+
+       if ((irq == 0) ||(irq >= NR_IRQS))  {
+               printk("bad irq 0x%08x\n", irq);
+               return;
+       }
+       port = irq2port(irq);
+       data = icu_data[irq].icucr|M32R_ICUCR_IEN|M32R_ICUCR_ILEVEL6;
+       outl(data, port);
+}
+
+static void mask_and_ack_mappi3(unsigned int irq)
+{
+       disable_mappi3_irq(irq);
+}
+
+static void end_mappi3_irq(unsigned int irq)
+{
+       enable_mappi3_irq(irq);
+}
+
+static unsigned int startup_mappi3_irq(unsigned int irq)
+{
+       enable_mappi3_irq(irq);
+       return (0);
+}
+
+static void shutdown_mappi3_irq(unsigned int irq)
+{
+       unsigned long port;
+
+       port = irq2port(irq);
+       outl(M32R_ICUCR_ILEVEL7, port);
+}
+
+static struct hw_interrupt_type mappi3_irq_type =
+{
+       .typename = "MAPPI3-IRQ",
+       .startup = startup_mappi3_irq,
+       .shutdown = shutdown_mappi3_irq,
+       .enable = enable_mappi3_irq,
+       .disable = disable_mappi3_irq,
+       .ack = mask_and_ack_mappi3,
+       .end = end_mappi3_irq
+};
+
+void __init init_IRQ(void)
+{
+#if defined(CONFIG_SMC91X)
+       /* INT0 : LAN controller (SMC91111) */
+       irq_desc[M32R_IRQ_INT0].status = IRQ_DISABLED;
+       irq_desc[M32R_IRQ_INT0].handler = &mappi3_irq_type;
+       irq_desc[M32R_IRQ_INT0].action = 0;
+       irq_desc[M32R_IRQ_INT0].depth = 1;
+       icu_data[M32R_IRQ_INT0].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD10;
+       disable_mappi3_irq(M32R_IRQ_INT0);
+#endif  /* CONFIG_SMC91X */
+
+       /* MFT2 : system timer */
+       irq_desc[M32R_IRQ_MFT2].status = IRQ_DISABLED;
+       irq_desc[M32R_IRQ_MFT2].handler = &mappi3_irq_type;
+       irq_desc[M32R_IRQ_MFT2].action = 0;
+       irq_desc[M32R_IRQ_MFT2].depth = 1;
+       icu_data[M32R_IRQ_MFT2].icucr = M32R_ICUCR_IEN;
+       disable_mappi3_irq(M32R_IRQ_MFT2);
+
+#ifdef CONFIG_SERIAL_M32R_SIO
+       /* SIO0_R : uart receive data */
+       irq_desc[M32R_IRQ_SIO0_R].status = IRQ_DISABLED;
+       irq_desc[M32R_IRQ_SIO0_R].handler = &mappi3_irq_type;
+       irq_desc[M32R_IRQ_SIO0_R].action = 0;
+       irq_desc[M32R_IRQ_SIO0_R].depth = 1;
+       icu_data[M32R_IRQ_SIO0_R].icucr = 0;
+       disable_mappi3_irq(M32R_IRQ_SIO0_R);
+
+       /* SIO0_S : uart send data */
+       irq_desc[M32R_IRQ_SIO0_S].status = IRQ_DISABLED;
+       irq_desc[M32R_IRQ_SIO0_S].handler = &mappi3_irq_type;
+       irq_desc[M32R_IRQ_SIO0_S].action = 0;
+       irq_desc[M32R_IRQ_SIO0_S].depth = 1;
+       icu_data[M32R_IRQ_SIO0_S].icucr = 0;
+       disable_mappi3_irq(M32R_IRQ_SIO0_S);
+       /* SIO1_R : uart receive data */
+       irq_desc[M32R_IRQ_SIO1_R].status = IRQ_DISABLED;
+       irq_desc[M32R_IRQ_SIO1_R].handler = &mappi3_irq_type;
+       irq_desc[M32R_IRQ_SIO1_R].action = 0;
+       irq_desc[M32R_IRQ_SIO1_R].depth = 1;
+       icu_data[M32R_IRQ_SIO1_R].icucr = 0;
+       disable_mappi3_irq(M32R_IRQ_SIO1_R);
+
+       /* SIO1_S : uart send data */
+       irq_desc[M32R_IRQ_SIO1_S].status = IRQ_DISABLED;
+       irq_desc[M32R_IRQ_SIO1_S].handler = &mappi3_irq_type;
+       irq_desc[M32R_IRQ_SIO1_S].action = 0;
+       irq_desc[M32R_IRQ_SIO1_S].depth = 1;
+       icu_data[M32R_IRQ_SIO1_S].icucr = 0;
+       disable_mappi3_irq(M32R_IRQ_SIO1_S);
+#endif  /* CONFIG_M32R_USE_DBG_CONSOLE */
+
+#if defined(CONFIG_USB)
+       /* INT1 : USB Host controller interrupt */
+       irq_desc[M32R_IRQ_INT1].status = IRQ_DISABLED;
+       irq_desc[M32R_IRQ_INT1].handler = &mappi3_irq_type;
+       irq_desc[M32R_IRQ_INT1].action = 0;
+       irq_desc[M32R_IRQ_INT1].depth = 1;
+       icu_data[M32R_IRQ_INT1].icucr = M32R_ICUCR_ISMOD01;
+       disable_mappi3_irq(M32R_IRQ_INT1);
+#endif /* CONFIG_USB */
+
+       /* ICUCR40: CFC IREQ */
+       irq_desc[PLD_IRQ_CFIREQ].status = IRQ_DISABLED;
+       irq_desc[PLD_IRQ_CFIREQ].handler = &mappi3_irq_type;
+       irq_desc[PLD_IRQ_CFIREQ].action = 0;
+       irq_desc[PLD_IRQ_CFIREQ].depth = 1;     /* disable nested irq */
+       icu_data[PLD_IRQ_CFIREQ].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD01;
+       disable_mappi3_irq(PLD_IRQ_CFIREQ);
+
+#if defined(CONFIG_M32R_CFC)
+       /* ICUCR41: CFC Insert */
+       irq_desc[PLD_IRQ_CFC_INSERT].status = IRQ_DISABLED;
+       irq_desc[PLD_IRQ_CFC_INSERT].handler = &mappi3_irq_type;
+       irq_desc[PLD_IRQ_CFC_INSERT].action = 0;
+       irq_desc[PLD_IRQ_CFC_INSERT].depth = 1; /* disable nested irq */
+       icu_data[PLD_IRQ_CFC_INSERT].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD00;
+       disable_mappi3_irq(PLD_IRQ_CFC_INSERT);
+
+       /* ICUCR42: CFC Eject */
+       irq_desc[PLD_IRQ_CFC_EJECT].status = IRQ_DISABLED;
+       irq_desc[PLD_IRQ_CFC_EJECT].handler = &mappi3_irq_type;
+       irq_desc[PLD_IRQ_CFC_EJECT].action = 0;
+       irq_desc[PLD_IRQ_CFC_EJECT].depth = 1;  /* disable nested irq */
+       icu_data[PLD_IRQ_CFC_EJECT].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD10;
+       disable_mappi3_irq(PLD_IRQ_CFC_EJECT);
+#endif /* CONFIG_M32R_CFC */
+}
+
+#define LAN_IOSTART     0x300
+#define LAN_IOEND       0x320
+static struct resource smc91x_resources[] = {
+       [0] = {
+               .start  = (LAN_IOSTART),
+               .end    = (LAN_IOEND),
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = M32R_IRQ_INT0,
+               .end    = M32R_IRQ_INT0,
+               .flags  = IORESOURCE_IRQ,
+       }
+};
+
+static struct platform_device smc91x_device = {
+       .name           = "smc91x",
+       .id             = 0,
+       .num_resources  = ARRAY_SIZE(smc91x_resources),
+       .resource       = smc91x_resources,
+};
+
+static int __init platform_init(void)
+{
+       platform_device_register(&smc91x_device);
+       return 0;
+}
+arch_initcall(platform_init);
index b04834526c9a8a6311ace7897b13bc90487360d7..d656640badc98f091bedb9b29004903fb445cb9d 100644 (file)
@@ -70,13 +70,13 @@ static void shutdown_oaks32r_irq(unsigned int irq)
 
 static struct hw_interrupt_type oaks32r_irq_type =
 {
-       "OAKS32R-IRQ",
-       startup_oaks32r_irq,
-       shutdown_oaks32r_irq,
-       enable_oaks32r_irq,
-       disable_oaks32r_irq,
-       mask_and_ack_mappi,
-       end_oaks32r_irq
+       .typename = "OAKS32R-IRQ",
+       .startup = startup_oaks32r_irq,
+       .shutdown = shutdown_oaks32r_irq,
+       .enable = enable_oaks32r_irq,
+       .disable = disable_oaks32r_irq,
+       .ack = mask_and_ack_mappi,
+       .end = end_oaks32r_irq
 };
 
 void __init init_IRQ(void)
index 84315e344c58007e6e2e1ec155b06b0b5256f35e..86f4cf2a86c3ba6b4eb25c81aad7983aea924e0f 100644 (file)
@@ -79,13 +79,13 @@ static void shutdown_opsput_irq(unsigned int irq)
 
 static struct hw_interrupt_type opsput_irq_type =
 {
-       "OPSPUT-IRQ",
-       startup_opsput_irq,
-       shutdown_opsput_irq,
-       enable_opsput_irq,
-       disable_opsput_irq,
-       mask_and_ack_opsput,
-       end_opsput_irq
+       .typename = "OPSPUT-IRQ",
+       .startup = startup_opsput_irq,
+       .shutdown = shutdown_opsput_irq,
+       .enable = enable_opsput_irq,
+       .disable = disable_opsput_irq,
+       .ack = mask_and_ack_opsput,
+       .end = end_opsput_irq
 };
 
 /*
@@ -156,13 +156,13 @@ static void shutdown_opsput_pld_irq(unsigned int irq)
 
 static struct hw_interrupt_type opsput_pld_irq_type =
 {
-       "OPSPUT-PLD-IRQ",
-       startup_opsput_pld_irq,
-       shutdown_opsput_pld_irq,
-       enable_opsput_pld_irq,
-       disable_opsput_pld_irq,
-       mask_and_ack_opsput_pld,
-       end_opsput_pld_irq
+       .typename = "OPSPUT-PLD-IRQ",
+       .startup = startup_opsput_pld_irq,
+       .shutdown = shutdown_opsput_pld_irq,
+       .enable = enable_opsput_pld_irq,
+       .disable = disable_opsput_pld_irq,
+       .ack = mask_and_ack_opsput_pld,
+       .end = end_opsput_pld_irq
 };
 
 /*
index fe417be5e3e95c5e4ec8c9958761e3847282b3ac..634741bf9d355c736463b4cb0df4ab4245449485 100644 (file)
@@ -70,13 +70,13 @@ static void shutdown_mappi_irq(unsigned int irq)
 
 static struct hw_interrupt_type mappi_irq_type =
 {
-       "M32700-IRQ",
-       startup_mappi_irq,
-       shutdown_mappi_irq,
-       enable_mappi_irq,
-       disable_mappi_irq,
-       mask_and_ack_mappi,
-       end_mappi_irq
+       .typename = "M32700-IRQ",
+       .startup = startup_mappi_irq,
+       .shutdown = shutdown_mappi_irq,
+       .enable = enable_mappi_irq,
+       .disable = disable_mappi_irq,
+       .ack = mask_and_ack_mappi,
+       .end = end_mappi_irq
 };
 
 /*
@@ -143,13 +143,13 @@ static void shutdown_m32700ut_pld_irq(unsigned int irq)
 
 static struct hw_interrupt_type m32700ut_pld_irq_type =
 {
-       "USRV-PLD-IRQ",
-       startup_m32700ut_pld_irq,
-       shutdown_m32700ut_pld_irq,
-       enable_m32700ut_pld_irq,
-       disable_m32700ut_pld_irq,
-       mask_and_ack_m32700ut_pld,
-       end_m32700ut_pld_irq
+       .typename = "USRV-PLD-IRQ",
+       .startup = startup_m32700ut_pld_irq,
+       .shutdown = shutdown_m32700ut_pld_irq,
+       .enable = enable_m32700ut_pld_irq,
+       .disable = disable_m32700ut_pld_irq,
+       .ack = mask_and_ack_m32700ut_pld,
+       .end = end_m32700ut_pld_irq
 };
 
 void __init init_IRQ(void)
index 1c002181df7ffb245267c499240b08120cafc3c5..3e607d90b5f45b71af6cd34a907ecece49c5ecc1 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.11-rc4
-# Wed Feb 16 21:10:50 2005
+# Linux kernel version: 2.6.12-rc5
+# Fri Jun  3 16:20:58 2005
 #
 CONFIG_M32R=y
 # CONFIG_UID16 is not set
@@ -15,6 +15,7 @@ CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_EXPERIMENTAL=y
 CONFIG_CLEAN_COMPILE=y
 CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
 
 #
 # General setup
@@ -27,13 +28,16 @@ CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
 CONFIG_SYSCTL=y
 # CONFIG_AUDIT is not set
-CONFIG_LOG_BUF_SHIFT=15
 CONFIG_HOTPLUG=y
 CONFIG_KOBJECT_UEVENT=y
 CONFIG_IKCONFIG=y
 # CONFIG_IKCONFIG_PROC is not set
+# CONFIG_CPUSETS is not set
 CONFIG_EMBEDDED=y
 # CONFIG_KALLSYMS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
 # CONFIG_FUTEX is not set
 # CONFIG_EPOLL is not set
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -43,6 +47,7 @@ CONFIG_CC_ALIGN_LABELS=0
 CONFIG_CC_ALIGN_LOOPS=0
 CONFIG_CC_ALIGN_JUMPS=0
 # CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
 
 #
 # Loadable module support
@@ -65,6 +70,7 @@ CONFIG_PLAT_M32700UT=y
 # CONFIG_PLAT_OPSPUT is not set
 # CONFIG_PLAT_OAKS32R is not set
 # CONFIG_PLAT_MAPPI2 is not set
+# CONFIG_PLAT_MAPPI3 is not set
 CONFIG_CHIP_M32700=y
 # CONFIG_CHIP_M32102 is not set
 # CONFIG_CHIP_VDEC2 is not set
@@ -271,7 +277,6 @@ CONFIG_NET=y
 #
 CONFIG_PACKET=y
 # CONFIG_PACKET_MMAP is not set
-# CONFIG_NETLINK_DEV is not set
 CONFIG_UNIX=y
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
@@ -395,18 +400,6 @@ CONFIG_INPUT=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=y
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_LIBPS2 is not set
-# CONFIG_SERIO_RAW is not set
-
 #
 # Input Device Drivers
 #
@@ -416,6 +409,17 @@ CONFIG_SERIO_SERPORT=y
 # CONFIG_INPUT_TOUCHSCREEN is not set
 # CONFIG_INPUT_MISC is not set
 
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_I8042 is not set
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_LIBPS2 is not set
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+CONFIG_SOUND_GAMEPORT=y
+
 #
 # Character devices
 #
@@ -467,6 +471,10 @@ CONFIG_DS1302=y
 # CONFIG_SYNCLINK_CS is not set
 # CONFIG_RAW_DRIVER is not set
 
+#
+# TPM devices
+#
+
 #
 # I2C support
 #
@@ -511,8 +519,14 @@ CONFIG_VIDEO_M32R_AR_M64278=y
 # Graphics support
 #
 CONFIG_FB=y
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+# CONFIG_FB_SOFT_CURSOR is not set
+# CONFIG_FB_MACMODES is not set
 # CONFIG_FB_MODE_HELPERS is not set
 # CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
 # CONFIG_FB_VIRTUAL is not set
 
 #
@@ -545,10 +559,6 @@ CONFIG_LOGO_LINUX_CLUT224=y
 # CONFIG_USB_ARCH_HAS_HCD is not set
 # CONFIG_USB_ARCH_HAS_OHCI is not set
 
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
-#
-
 #
 # USB Gadget Support
 #
@@ -722,8 +732,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
 #
 # Kernel hacking
 #
+# CONFIG_PRINTK_TIME is not set
 # CONFIG_DEBUG_KERNEL is not set
-CONFIG_DEBUG_PREEMPT=y
+CONFIG_LOG_BUF_SHIFT=15
 # CONFIG_DEBUG_BUGVERBOSE is not set
 # CONFIG_FRAME_POINTER is not set
 
index 805357f7bda1661dce5c7810e8d2d5ea52a08a7c..2d3e7cda8f461e5f8a35a51e61f6ada8a006268e 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.11-rc4
-# Wed Feb 16 21:10:54 2005
+# Linux kernel version: 2.6.12-rc5
+# Fri Jun  3 16:21:34 2005
 #
 CONFIG_M32R=y
 # CONFIG_UID16 is not set
@@ -16,6 +16,7 @@ CONFIG_EXPERIMENTAL=y
 CONFIG_CLEAN_COMPILE=y
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
 
 #
 # General setup
@@ -28,13 +29,15 @@ CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
 CONFIG_SYSCTL=y
 # CONFIG_AUDIT is not set
-CONFIG_LOG_BUF_SHIFT=14
 CONFIG_HOTPLUG=y
 CONFIG_KOBJECT_UEVENT=y
 CONFIG_IKCONFIG=y
 # CONFIG_IKCONFIG_PROC is not set
 CONFIG_EMBEDDED=y
 # CONFIG_KALLSYMS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
 # CONFIG_FUTEX is not set
 # CONFIG_EPOLL is not set
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -44,6 +47,7 @@ CONFIG_CC_ALIGN_LABELS=0
 CONFIG_CC_ALIGN_LOOPS=0
 CONFIG_CC_ALIGN_JUMPS=0
 # CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
 
 #
 # Loadable module support
@@ -65,6 +69,7 @@ CONFIG_PLAT_M32700UT=y
 # CONFIG_PLAT_OPSPUT is not set
 # CONFIG_PLAT_OAKS32R is not set
 # CONFIG_PLAT_MAPPI2 is not set
+# CONFIG_PLAT_MAPPI3 is not set
 CONFIG_CHIP_M32700=y
 # CONFIG_CHIP_M32102 is not set
 # CONFIG_CHIP_VDEC2 is not set
@@ -268,7 +273,6 @@ CONFIG_NET=y
 #
 CONFIG_PACKET=y
 # CONFIG_PACKET_MMAP is not set
-# CONFIG_NETLINK_DEV is not set
 CONFIG_UNIX=y
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
@@ -392,18 +396,6 @@ CONFIG_INPUT=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=y
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_LIBPS2 is not set
-# CONFIG_SERIO_RAW is not set
-
 #
 # Input Device Drivers
 #
@@ -413,6 +405,17 @@ CONFIG_SERIO_SERPORT=y
 # CONFIG_INPUT_TOUCHSCREEN is not set
 # CONFIG_INPUT_MISC is not set
 
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_I8042 is not set
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_LIBPS2 is not set
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+CONFIG_SOUND_GAMEPORT=y
+
 #
 # Character devices
 #
@@ -464,6 +467,10 @@ CONFIG_DS1302=y
 # CONFIG_SYNCLINK_CS is not set
 # CONFIG_RAW_DRIVER is not set
 
+#
+# TPM devices
+#