Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 14 Feb 2007 00:12:23 +0000 (16:12 -0800)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 14 Feb 2007 00:12:23 +0000 (16:12 -0800)
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
  [MIPS] Fix sigset_t endianess swapping issues in 32-bit compat code.
  [MIPS] Fix uniprocessor Sibyte builds.
  [MIPS] Make entry.S a little more readable.
  [MIPS] Remove stray instruction from __get_user_asm_ll32.
  [MIPS] 32-bit: Fix warning about cast for fetching pointer from userspace.
  [MIPS] DECstation: Fix irq handling
  [MIPS] signals: make common _BLOCKABLE macro
  [MIPS] signal: Move sigframe definition for native O32/N64 into signal.c
  [MIPS] signal: Move {restore,setup}_sigcontext prototypes to their user
  [MIPS] signal: Fix warnings in o32 compat code.
  [MIPS] IP27: Enable N32 support in defconfig.
  Revert "[MIPS] Fix warning in get_user when fetching pointer object from userspace."
  [MIPS] Don't claim we support dma_declare_coherent_memory - we don't.
  [MIPS] Unify dma-{coherent,noncoherent.ip27,ip32}
  [MIPS] Improve branch prediction in ll/sc atomic operations.

1001 files changed:
Documentation/drivers/edac/edac.txt
Documentation/fb/s3fb.txt [new file with mode: 0644]
Documentation/filesystems/ufs.txt
Documentation/gpio.txt [new file with mode: 0644]
Documentation/isdn/README.gigaset
Documentation/kdump/kdump.txt
Documentation/nfsroot.txt
Documentation/spi/spi-summary
MAINTAINERS
Makefile
arch/alpha/kernel/setup.c
arch/arm/common/rtctime.c
arch/arm/kernel/setup.c
arch/arm/mach-at91rm9200/clock.c
arch/arm/mach-at91rm9200/gpio.c
arch/arm26/kernel/setup.c
arch/avr32/kernel/setup.c
arch/avr32/mm/tlb.c
arch/cris/arch-v10/drivers/ds1302.c
arch/cris/arch-v10/drivers/eeprom.c
arch/cris/arch-v10/drivers/gpio.c
arch/cris/arch-v10/drivers/i2c.c
arch/cris/arch-v10/drivers/pcf8563.c
arch/cris/arch-v32/drivers/cryptocop.c
arch/cris/arch-v32/drivers/gpio.c
arch/cris/arch-v32/drivers/i2c.c
arch/cris/arch-v32/drivers/pcf8563.c
arch/cris/arch-v32/drivers/sync_serial.c
arch/cris/kernel/profile.c
arch/cris/kernel/setup.c
arch/frv/kernel/setup.c
arch/h8300/kernel/setup.c
arch/i386/kernel/apm.c
arch/i386/kernel/cpu/mtrr/if.c
arch/i386/kernel/cpuid.c
arch/i386/kernel/head.S
arch/i386/kernel/microcode.c
arch/i386/kernel/msr.c
arch/i386/kernel/setup.c
arch/ia64/hp/common/sba_iommu.c
arch/ia64/kernel/efi.c
arch/ia64/kernel/perfmon.c
arch/ia64/kernel/sal.c
arch/ia64/kernel/salinfo.c
arch/ia64/kernel/setup.c
arch/ia64/sn/kernel/sn2/sn2_smp.c
arch/ia64/sn/kernel/sn2/sn_hwperf.c
arch/m32r/kernel/setup.c
arch/m68k/bvme6000/rtc.c
arch/m68k/kernel/setup.c
arch/m68k/mvme16x/rtc.c
arch/m68knommu/kernel/setup.c
arch/mips/kernel/rtlx.c
arch/mips/kernel/setup.c
arch/mips/kernel/vpe.c
arch/mips/sibyte/sb1250/bcm1250_tbprof.c
arch/parisc/kernel/perf.c
arch/parisc/kernel/setup.c
arch/parisc/mm/init.c
arch/powerpc/configs/ps3_defconfig
arch/powerpc/kernel/legacy_serial.c
arch/powerpc/kernel/lparcfg.c
arch/powerpc/kernel/nvram_64.c
arch/powerpc/kernel/proc_ppc64.c
arch/powerpc/kernel/prom.c
arch/powerpc/kernel/rtas-proc.c
arch/powerpc/kernel/rtas_flash.c
arch/powerpc/kernel/udbg.c
arch/powerpc/platforms/cell/spufs/file.c
arch/powerpc/platforms/cell/spufs/inode.c
arch/powerpc/platforms/cell/spufs/spufs.h
arch/powerpc/platforms/iseries/lpevents.c
arch/powerpc/platforms/iseries/mf.c
arch/powerpc/platforms/iseries/proc.c
arch/powerpc/platforms/iseries/viopath.c
arch/powerpc/platforms/powermac/setup.c
arch/powerpc/platforms/ps3/Kconfig
arch/powerpc/platforms/ps3/htab.c
arch/powerpc/platforms/ps3/setup.c
arch/powerpc/platforms/pseries/eeh.c
arch/powerpc/platforms/pseries/hvCall_inst.c
arch/powerpc/platforms/pseries/reconfig.c
arch/powerpc/platforms/pseries/rtasd.c
arch/powerpc/platforms/pseries/scanlog.c
arch/ppc/8xx_io/cs4218_tdm.c
arch/ppc/kernel/setup.c
arch/ppc/platforms/lopec.c
arch/ppc/platforms/pplus.c
arch/ppc/platforms/prep_setup.c
arch/s390/hypfs/inode.c
arch/s390/kernel/debug.c
arch/s390/kernel/setup.c
arch/s390/kernel/smp.c
arch/sh/boards/landisk/landisk_pwb.c
arch/sh/kernel/setup.c
arch/sh/mm/cache-debugfs.c
arch/sh/mm/pmb.c
arch/sh/oprofile/op_model_sh7750.c
arch/sh64/kernel/setup.c
arch/sparc/kernel/apc.c
arch/sparc/kernel/setup.c
arch/sparc/kernel/sys_sunos.c
arch/sparc64/Kconfig
arch/sparc64/defconfig
arch/sparc64/kernel/setup.c
arch/sparc64/kernel/sys_sunos32.c
arch/sparc64/kernel/time.c
arch/sparc64/mm/init.c
arch/sparc64/solaris/socksys.c
arch/um/drivers/harddog_kern.c
arch/um/drivers/line.c
arch/um/include/user_util.h
arch/um/kernel/um_arch.c
arch/v850/kernel/rte_cb_leds.c
arch/v850/kernel/setup.c
arch/x86_64/kernel/head64.c
arch/x86_64/kernel/mce.c
arch/x86_64/kernel/setup.c
arch/xtensa/kernel/setup.c
block/blktrace.c
block/genhd.c
crypto/proc.c
drivers/acorn/char/i2c.c
drivers/block/DAC960.c
drivers/block/acsi_slm.c
drivers/block/aoe/aoechr.c
drivers/block/paride/pg.c
drivers/block/paride/pt.c
drivers/block/pktcdvd.c
drivers/bluetooth/hci_vhci.c
drivers/cdrom/viocd.c
drivers/char/briq_panel.c
drivers/char/cyclades.c
drivers/char/drm/drm_drv.c
drivers/char/drm/i810_dma.c
drivers/char/drm/i830_dma.c
drivers/char/drm/via_dmablit.c
drivers/char/ds1302.c
drivers/char/dtlk.c
drivers/char/generic_nvram.c
drivers/char/hw_random/intel-rng.c
drivers/char/ip2/i2lib.c
drivers/char/ip2/ip2main.c
drivers/char/keyboard.c
drivers/char/mbcs.c
drivers/char/mspec.c
drivers/char/n_r3964.c
drivers/char/n_tty.c
drivers/char/nwbutton.c
drivers/char/pcmcia/cm4000_cs.c
drivers/char/pcmcia/cm4040_cs.c
drivers/char/pcmcia/synclink_cs.c
drivers/char/random.c
drivers/char/rio/rio_linux.c
drivers/char/rocket.c
drivers/char/rtc.c
drivers/char/specialix.c
drivers/char/synclink.c
drivers/char/synclink_gt.c
drivers/char/synclinkmp.c
drivers/char/sysrq.c
drivers/char/tpm/tpm.c
drivers/char/tpm/tpm_bios.c
drivers/char/tty_io.c
drivers/char/viotape.c
drivers/char/vt.c
drivers/char/watchdog/acquirewdt.c
drivers/char/watchdog/advantechwdt.c
drivers/char/watchdog/alim1535_wdt.c
drivers/char/watchdog/alim7101_wdt.c
drivers/char/watchdog/cpu5wdt.c
drivers/char/watchdog/eurotechwdt.c
drivers/char/watchdog/i6300esb.c
drivers/char/watchdog/i8xx_tco.c
drivers/char/watchdog/iTCO_wdt.c
drivers/char/watchdog/ib700wdt.c
drivers/char/watchdog/ibmasr.c
drivers/char/watchdog/indydog.c
drivers/char/watchdog/machzwd.c
drivers/char/watchdog/mixcomwd.c
drivers/char/watchdog/omap_wdt.c
drivers/char/watchdog/pc87413_wdt.c
drivers/char/watchdog/pcwd.c
drivers/char/watchdog/pcwd_pci.c
drivers/char/watchdog/pcwd_usb.c
drivers/char/watchdog/pnx4008_wdt.c
drivers/char/watchdog/rm9k_wdt.c
drivers/char/watchdog/s3c2410_wdt.c
drivers/char/watchdog/sbc60xxwdt.c
drivers/char/watchdog/sbc8360.c
drivers/char/watchdog/sbc_epx_c3.c
drivers/char/watchdog/sc1200wdt.c
drivers/char/watchdog/sc520_wdt.c
drivers/char/watchdog/shwdt.c
drivers/char/watchdog/smsc37b787_wdt.c
drivers/char/watchdog/softdog.c
drivers/char/watchdog/w83627hf_wdt.c
drivers/char/watchdog/w83697hf_wdt.c
drivers/char/watchdog/w83877f_wdt.c
drivers/char/watchdog/w83977f_wdt.c
drivers/char/watchdog/wafer5823wdt.c
drivers/char/watchdog/wdt.c
drivers/char/watchdog/wdt977.c
drivers/char/watchdog/wdt_pci.c
drivers/edac/e752x_edac.c
drivers/edac/edac_mc.c
drivers/edac/edac_mc.h
drivers/i2c/chips/tps65010.c
drivers/i2c/i2c-dev.c
drivers/ide/ide-proc.c
drivers/ide/ide-tape.c
drivers/ieee1394/dv1394.c
drivers/ieee1394/raw1394.c
drivers/ieee1394/video1394.c
drivers/infiniband/core/ucm.c
drivers/infiniband/core/ucma.c
drivers/infiniband/core/user_mad.c
drivers/infiniband/core/uverbs_main.c
drivers/infiniband/hw/ipath/ipath_diag.c
drivers/infiniband/hw/ipath/ipath_file_ops.c
drivers/infiniband/hw/ipath/ipath_fs.c
drivers/infiniband/hw/ipath/ipath_kernel.h
drivers/infiniband/ulp/ipoib/ipoib_fs.c
drivers/input/input.c
drivers/input/misc/hp_sdc_rtc.c
drivers/input/misc/uinput.c
drivers/input/serio/serio_raw.c
drivers/isdn/capi/capi.c
drivers/isdn/capi/capidrv.c
drivers/isdn/capi/kcapi_proc.c
drivers/isdn/divert/divert_procfs.c
drivers/isdn/gigaset/Kconfig
drivers/isdn/gigaset/Makefile
drivers/isdn/gigaset/asyncdata.c
drivers/isdn/gigaset/common.c
drivers/isdn/gigaset/ev-layer.c
drivers/isdn/gigaset/interface.c
drivers/isdn/gigaset/isocdata.c
drivers/isdn/gigaset/ser-gigaset.c [new file with mode: 0644]
drivers/isdn/hardware/avm/b1dma.c
drivers/isdn/hardware/avm/c4.c
drivers/isdn/hardware/eicon/capifunc.c
drivers/isdn/hardware/eicon/debug.c
drivers/isdn/hardware/eicon/di.c
drivers/isdn/hardware/eicon/divamnt.c
drivers/isdn/hardware/eicon/divasi.c
drivers/isdn/hardware/eicon/divasmain.c
drivers/isdn/hardware/eicon/divasproc.c
drivers/isdn/hardware/eicon/message.c
drivers/isdn/hardware/eicon/os_pri.c
drivers/isdn/hardware/eicon/platform.h
drivers/isdn/hisax/Kconfig
drivers/isdn/hisax/Makefile
drivers/isdn/hisax/config.c
drivers/isdn/hisax/elsa_ser.c
drivers/isdn/hisax/hfc4s8s_l1.c
drivers/isdn/hisax/hfc_usb.c
drivers/isdn/hisax/hfc_usb.h
drivers/isdn/hisax/hisax.h
drivers/isdn/hisax/isar.c
drivers/isdn/hisax/isdnl1.h
drivers/isdn/hisax/isdnl3.c
drivers/isdn/hisax/isdnl3.h
drivers/isdn/hysdn/hysdn_procconf.c
drivers/isdn/hysdn/hysdn_proclog.c
drivers/isdn/i4l/isdn_common.c
drivers/isdn/pcbit/drv.c
drivers/isdn/pcbit/edss1.c
drivers/isdn/pcbit/edss1.h
drivers/isdn/pcbit/layer2.c
drivers/isdn/pcbit/module.c
drivers/isdn/pcbit/pcbit.h
drivers/isdn/sc/card.h
drivers/isdn/sc/command.c
drivers/isdn/sc/event.c
drivers/isdn/sc/init.c
drivers/isdn/sc/interrupt.c
drivers/isdn/sc/ioctl.c
drivers/isdn/sc/message.c
drivers/isdn/sc/packet.c
drivers/isdn/sc/scioc.h
drivers/isdn/sc/shmem.c
drivers/isdn/sc/timer.c
drivers/kvm/kvm.h
drivers/kvm/kvm_main.c
drivers/kvm/paging_tmpl.h
drivers/kvm/svm.c
drivers/kvm/vmx.c
drivers/kvm/vmx.h
drivers/macintosh/adb.c
drivers/macintosh/ans-lcd.c
drivers/macintosh/apm_emu.c
drivers/macintosh/nvram.c
drivers/macintosh/smu.c
drivers/macintosh/via-pmu.c
drivers/macintosh/via-pmu68k.c
drivers/md/dm-ioctl.c
drivers/md/md.c
drivers/media/common/saa7146_fops.c
drivers/media/radio/dsbr100.c
drivers/media/radio/miropcm20-radio.c
drivers/media/radio/miropcm20-rds.c
drivers/media/radio/radio-aimslab.c
drivers/media/radio/radio-aztech.c
drivers/media/radio/radio-cadet.c
drivers/media/radio/radio-gemtek-pci.c
drivers/media/radio/radio-gemtek.c
drivers/media/radio/radio-maestro.c
drivers/media/radio/radio-maxiradio.c
drivers/media/radio/radio-rtrack2.c
drivers/media/radio/radio-sf16fmi.c
drivers/media/radio/radio-sf16fmr2.c
drivers/media/radio/radio-terratec.c
drivers/media/radio/radio-trust.c
drivers/media/radio/radio-typhoon.c
drivers/media/radio/radio-zoltrix.c
drivers/media/video/arv.c
drivers/media/video/bt8xx/bttv-driver.c
drivers/media/video/bw-qcam.c
drivers/media/video/c-qcam.c
drivers/media/video/cafe_ccic.c
drivers/media/video/cpia.c
drivers/media/video/cpia2/cpia2_v4l.c
drivers/media/video/cx88/cx88-blackbird.c
drivers/media/video/cx88/cx88-video.c
drivers/media/video/dabusb.c
drivers/media/video/em28xx/em28xx-video.c
drivers/media/video/et61x251/et61x251_core.c
drivers/media/video/meye.c
drivers/media/video/ov511.c
drivers/media/video/pms.c
drivers/media/video/pvrusb2/pvrusb2-v4l2.c
drivers/media/video/pwc/pwc-if.c
drivers/media/video/saa5246a.c
drivers/media/video/saa5249.c
drivers/media/video/saa7134/saa7134-empress.c
drivers/media/video/saa7134/saa7134-oss.c
drivers/media/video/saa7134/saa7134-video.c
drivers/media/video/saa7134/saa7134.h
drivers/media/video/se401.c
drivers/media/video/sn9c102/sn9c102_core.c
drivers/media/video/stradis.c
drivers/media/video/stv680.c
drivers/media/video/tvmixer.c
drivers/media/video/usbvideo/usbvideo.c
drivers/media/video/usbvideo/vicam.c
drivers/media/video/usbvision/usbvision-video.c
drivers/media/video/videodev.c
drivers/media/video/vino.c
drivers/media/video/vivi.c
drivers/media/video/w9966.c
drivers/media/video/w9968cf.c
drivers/media/video/zc0301/zc0301_core.c
drivers/media/video/zoran_driver.c
drivers/media/video/zoran_procfs.c
drivers/message/fusion/mptctl.c
drivers/message/i2o/i2o_config.c
drivers/message/i2o/i2o_proc.c
drivers/misc/hdpuftrs/hdpu_cpustate.c
drivers/misc/ibmasm/ibmasmfs.c
drivers/mtd/mtdchar.c
drivers/net/arcnet/com20020.c
drivers/net/bonding/bond_main.c
drivers/net/hamradio/bpqether.c
drivers/net/hamradio/scc.c
drivers/net/hamradio/yam.c
drivers/net/ibmveth.c
drivers/net/irda/vlsi_ir.c
drivers/net/ppp_generic.c
drivers/net/pppoe.c
drivers/net/tun.c
drivers/net/wan/cosa.c
drivers/net/wireless/airo.c
drivers/net/wireless/bcm43xx/bcm43xx_debugfs.c
drivers/net/wireless/strip.c
drivers/oprofile/event_buffer.c
drivers/oprofile/event_buffer.h
drivers/oprofile/oprofile_files.c
drivers/oprofile/oprofilefs.c
drivers/parisc/ccio-dma.c
drivers/parisc/eisa_eeprom.c
drivers/parisc/sba_iommu.c
drivers/pci/hotplug/cpqphp_sysfs.c
drivers/pci/proc.c
drivers/pcmcia/pcmcia_ioctl.c
drivers/pnp/isapnp/proc.c
drivers/ps3/Makefile
drivers/ps3/ps3av.c [new file with mode: 0644]
drivers/ps3/ps3av_cmd.c [new file with mode: 0644]
drivers/ps3/vuart.c
drivers/ps3/vuart.h
drivers/rtc/rtc-dev.c
drivers/rtc/rtc-ds1553.c
drivers/rtc/rtc-ds1742.c
drivers/rtc/rtc-proc.c
drivers/rtc/rtc-sysfs.c
drivers/s390/block/dasd_eer.c
drivers/s390/block/dasd_proc.c
drivers/s390/char/fs3270.c
drivers/s390/char/monreader.c
drivers/s390/char/monwriter.c
drivers/s390/char/tape_char.c
drivers/s390/char/tape_class.c
drivers/s390/char/tape_class.h
drivers/s390/char/tape_proc.c
drivers/s390/char/vmcp.c
drivers/s390/char/vmlogrdr.c
drivers/s390/char/vmwatchdog.c
drivers/s390/cio/blacklist.c
drivers/s390/cio/device_id.c
drivers/s390/cio/device_ops.c
drivers/s390/cio/qdio.c
drivers/s390/crypto/zcrypt_api.c
drivers/s390/net/qeth_proc.c
drivers/s390/scsi/zfcp_aux.c
drivers/sbus/char/bpp.c
drivers/sbus/char/cpwatchdog.c
drivers/sbus/char/display7seg.c
drivers/sbus/char/envctrl.c
drivers/sbus/char/flash.c
drivers/sbus/char/jsflash.c
drivers/sbus/char/openprom.c
drivers/sbus/char/riowatchdog.c
drivers/sbus/char/rtc.c
drivers/sbus/char/uctrl.c
drivers/sbus/char/vfc_dev.c
drivers/scsi/3w-9xxx.c
drivers/scsi/3w-xxxx.c
drivers/scsi/aacraid/linit.c
drivers/scsi/ch.c
drivers/scsi/dpt_i2o.c
drivers/scsi/gdth.c
drivers/scsi/megaraid.c
drivers/scsi/megaraid/megaraid_mm.c
drivers/scsi/megaraid/megaraid_sas.c
drivers/scsi/osst.c
drivers/scsi/scsi_proc.c
drivers/scsi/scsi_tgt_if.c
drivers/scsi/st.c
drivers/serial/atmel_serial.c
drivers/spi/Kconfig
drivers/spi/Makefile
drivers/spi/at25.c [new file with mode: 0644]
drivers/spi/omap_uwire.c [new file with mode: 0644]
drivers/spi/pxa2xx_spi.c
drivers/spi/spi.c
drivers/spi/spi_bitbang.c
drivers/spi/spi_imx.c [new file with mode: 0644]
drivers/telephony/ixj.c
drivers/telephony/ixj.h
drivers/telephony/phonedev.c
drivers/usb/misc/adutux.c
drivers/usb/misc/appledisplay.c
drivers/usb/misc/ftdi-elan.c
drivers/video/Kconfig
drivers/video/Makefile
drivers/video/S3triofb.c [deleted file]
drivers/video/aty/atyfb_base.c
drivers/video/au1100fb.c
drivers/video/console/fbcon.c
drivers/video/console/fbcon.h
drivers/video/controlfb.c
drivers/video/cyber2000fb.c
drivers/video/cyberfb.c [deleted file]
drivers/video/cyberfb.h [deleted file]
drivers/video/fbsysfs.c
drivers/video/geode/gx1fb_core.c
drivers/video/i810/i810.h
drivers/video/i810/i810_main.c
drivers/video/igafb.c
drivers/video/intelfb/intelfbdrv.c
drivers/video/matrox/i2c-matroxfb.c
drivers/video/matrox/matroxfb_crtc2.c
drivers/video/mbx/mbxdebugfs.c
drivers/video/modedb.c
drivers/video/neofb.c
drivers/video/nvidia/nvidia.c
drivers/video/pm3fb.c
drivers/video/ps3fb.c [new file with mode: 0644]
drivers/video/retz3fb.c [deleted file]
drivers/video/retz3fb.h [deleted file]
drivers/video/riva/fbdev.c
drivers/video/riva/rivafb.h
drivers/video/s3fb.c [new file with mode: 0644]
drivers/video/savage/savagefb_driver.c
drivers/video/sis/init.c
drivers/video/sis/init.h
drivers/video/sis/init301.c
drivers/video/sis/init301.h
drivers/video/sis/initextlfb.c
drivers/video/sis/sis.h
drivers/video/sis/sis_main.c
drivers/video/sis/sis_main.h
drivers/video/sis/vgatypes.h
drivers/video/sis/vstruct.h
drivers/video/sun3fb.c [deleted file]
drivers/video/svgalib.c [new file with mode: 0644]
drivers/video/tgafb.c
drivers/video/vga16fb.c
drivers/video/virgefb.c [deleted file]
drivers/video/virgefb.h [deleted file]
drivers/w1/slaves/w1_therm.c
drivers/zorro/proc.c
fs/9p/vfs_inode.c
fs/9p/vfs_super.c
fs/Kconfig
fs/adfs/adfs.h
fs/adfs/dir.c
fs/adfs/file.c
fs/adfs/super.c
fs/affs/affs.h
fs/affs/dir.c
fs/affs/file.c
fs/affs/inode.c
fs/affs/super.c
fs/affs/symlink.c
fs/afs/dir.c
fs/afs/file.c
fs/afs/internal.h
fs/afs/mntpt.c
fs/afs/super.c
fs/autofs/autofs_i.h
fs/autofs/inode.c
fs/autofs/root.c
fs/autofs/symlink.c
fs/autofs4/autofs_i.h
fs/autofs4/inode.c
fs/autofs4/root.c
fs/autofs4/symlink.c
fs/bad_inode.c
fs/befs/linuxvfs.c
fs/bfs/bfs.h
fs/bfs/dir.c
fs/bfs/file.c
fs/bfs/inode.c
fs/binfmt_misc.c
fs/block_dev.c
fs/buffer.c
fs/char_dev.c
fs/cifs/cifsfs.c
fs/cifs/cifsfs.h
fs/coda/cnode.c
fs/coda/dir.c
fs/coda/inode.c
fs/coda/pioctl.c
fs/configfs/configfs_internal.h
fs/configfs/dir.c
fs/configfs/inode.c
fs/configfs/mount.c
fs/configfs/symlink.c
fs/cramfs/inode.c
fs/debugfs/file.c
fs/devpts/inode.c
fs/dlm/debug_fs.c
fs/dlm/user.c
fs/dquot.c
fs/ecryptfs/Makefile
fs/ecryptfs/crypto.c
fs/ecryptfs/debug.c
fs/ecryptfs/ecryptfs_kernel.h
fs/ecryptfs/file.c
fs/ecryptfs/inode.c
fs/ecryptfs/keystore.c
fs/ecryptfs/main.c
fs/ecryptfs/messaging.c [new file with mode: 0644]
fs/ecryptfs/mmap.c
fs/ecryptfs/netlink.c [new file with mode: 0644]
fs/ecryptfs/super.c
fs/efs/dir.c
fs/efs/super.c
fs/ext2/ext2.h
fs/ext2/file.c
fs/ext2/namei.c
fs/ext2/super.c
fs/ext2/symlink.c
fs/ext3/file.c
fs/ext3/namei.c
fs/ext3/super.c
fs/ext3/symlink.c
fs/ext4/file.c
fs/ext4/namei.c
fs/ext4/super.c
fs/ext4/symlink.c
fs/fat/file.c
fs/fat/inode.c
fs/freevxfs/vxfs_extern.h
fs/freevxfs/vxfs_immed.c
fs/freevxfs/vxfs_inode.c
fs/freevxfs/vxfs_lookup.c
fs/freevxfs/vxfs_super.c
fs/fuse/control.c
fs/fuse/dir.c
fs/fuse/inode.c
fs/gfs2/locking/dlm/plock.c
fs/gfs2/ops_inode.c
fs/gfs2/ops_inode.h
fs/gfs2/ops_super.c
fs/gfs2/ops_super.h
fs/hfs/dir.c
fs/hfs/hfs_fs.h
fs/hfs/inode.c
fs/hfs/super.c
fs/hfsplus/dir.c
fs/hfsplus/inode.c
fs/hfsplus/super.c
fs/hostfs/hostfs_kern.c
fs/hpfs/file.c
fs/hpfs/hpfs_fn.h
fs/hpfs/namei.c
fs/hpfs/super.c
fs/hppfs/hppfs_kern.c
fs/hugetlbfs/inode.c
fs/inode.c
fs/inotify_user.c
fs/ioprio.c
fs/isofs/dir.c
fs/isofs/inode.c
fs/isofs/isofs.h
fs/jffs/inode-v23.c
fs/jffs2/dir.c
fs/jffs2/file.c
fs/jffs2/os-linux.h
fs/jffs2/super.c
fs/jffs2/symlink.c
fs/jfs/file.c
fs/jfs/jfs_inode.h
fs/jfs/namei.c
fs/jfs/super.c
fs/jfs/symlink.c
fs/libfs.c
fs/lockd/host.c
fs/lockd/svc.c
fs/lockd/svc4proc.c
fs/lockd/svcproc.c
fs/minix/bitmap.c
fs/minix/dir.c
fs/minix/file.c
fs/minix/inode.c
fs/minix/itree_common.c
fs/minix/itree_v1.c
fs/minix/itree_v2.c
fs/minix/minix.h
fs/minix/namei.c
fs/msdos/namei.c
fs/namei.c
fs/ncpfs/dir.c
fs/ncpfs/file.c
fs/ncpfs/inode.c
fs/nfs/callback.c
fs/nfs/callback_xdr.c
fs/nfs/client.c
fs/nfs/dir.c
fs/nfs/file.c
fs/nfs/namespace.c
fs/nfs/nfs4_fs.h
fs/nfs/nfs4proc.c
fs/nfs/super.c
fs/nfs/symlink.c
fs/nfsd/nfs4state.c
fs/nfsd/nfscache.c
fs/nfsd/nfsfh.c
fs/nfsd/nfsproc.c
fs/nfsd/nfssvc.c
fs/ntfs/attrib.c
fs/ntfs/file.c
fs/ntfs/namei.c
fs/ntfs/ntfs.h
fs/ntfs/super.c
fs/ocfs2/dlm/dlmfs.c
fs/ocfs2/file.c
fs/ocfs2/file.h
fs/ocfs2/namei.c
fs/ocfs2/namei.h
fs/ocfs2/super.c
fs/ocfs2/symlink.c
fs/ocfs2/symlink.h
fs/openpromfs/inode.c
fs/proc/array.c
fs/proc/base.c
fs/proc/generic.c
fs/proc/inode.c
fs/proc/internal.h
fs/proc/nommu.c
fs/proc/proc_misc.c
fs/proc/proc_tty.c
fs/proc/root.c
fs/proc/task_mmu.c
fs/proc/task_nommu.c
fs/qnx4/dir.c
fs/qnx4/file.c
fs/qnx4/inode.c
fs/ramfs/file-mmu.c
fs/ramfs/file-nommu.c
fs/ramfs/inode.c
fs/ramfs/internal.h
fs/read_write.c
fs/reiserfs/do_balan.c
fs/reiserfs/file.c
fs/reiserfs/namei.c
fs/reiserfs/super.c
fs/romfs/inode.c
fs/smbfs/dir.c
fs/smbfs/file.c
fs/smbfs/inode.c
fs/smbfs/proto.h
fs/smbfs/symlink.c
fs/super.c
fs/sysfs/dir.c
fs/sysfs/inode.c
fs/sysfs/mount.c
fs/sysfs/symlink.c
fs/sysfs/sysfs.h
fs/sysv/file.c
fs/sysv/inode.c
fs/sysv/namei.c
fs/sysv/symlink.c
fs/sysv/sysv.h
fs/udf/file.c
fs/udf/namei.c
fs/udf/super.c
fs/udf/udfdecl.h
fs/ufs/balloc.c
fs/ufs/ialloc.c
fs/ufs/inode.c
fs/ufs/namei.c
fs/ufs/super.c
fs/ufs/symlink.c
fs/ufs/truncate.c
fs/ufs/util.h
fs/vfat/namei.c
fs/xfs/linux-2.6/xfs_aops.c
fs/xfs/linux-2.6/xfs_iops.c
fs/xfs/linux-2.6/xfs_iops.h
fs/xfs/linux-2.6/xfs_linux.h
include/asm-arm/arch-at91rm9200/gpio.h
include/asm-arm/arch-imx/spi_imx.h [new file with mode: 0644]
include/asm-arm/arch-omap/gpio.h
include/asm-arm/arch-pxa/gpio.h [new file with mode: 0644]
include/asm-arm/arch-s3c2410/gpio.h [new file with mode: 0644]
include/asm-arm/arch-sa1100/gpio.h [new file with mode: 0644]
include/asm-arm/gpio.h [new file with mode: 0644]
include/asm-generic/gpio.h [new file with mode: 0644]
include/asm-i386/setup.h
include/asm-ia64/setup.h
include/asm-powerpc/Kbuild
include/asm-powerpc/ps3.h
include/asm-powerpc/ps3av.h [new file with mode: 0644]
include/asm-powerpc/ps3fb.h [new file with mode: 0644]
include/asm-s390/ccwdev.h
include/asm-s390/io.h
include/asm-sparc64/setup.h
include/asm-x86_64/bootsetup.h
include/asm-x86_64/setup.h
include/linux/Kbuild
include/linux/atalk.h
include/linux/buffer_head.h
include/linux/coda_linux.h
include/linux/cpu.h
include/linux/cpuset.h
include/linux/efs_fs.h
include/linux/ext3_fs.h
include/linux/ext4_fs.h
include/linux/fb.h
include/linux/fs.h
include/linux/gigaset_dev.h
include/linux/init.h
include/linux/init_task.h
include/linux/kernel.h
include/linux/kvm.h
include/linux/lockdep.h
include/linux/magic.h
include/linux/minix_fs.h
include/linux/mm.h
include/linux/msdos_fs.h
include/linux/ncp_fs.h
include/linux/netfilter.h
include/linux/netfilter_ipv4/ip_conntrack.h
include/linux/netlink.h
include/linux/nfs_fs.h
include/linux/nfs_xdr.h
include/linux/nfsd/const.h
include/linux/phonedev.h
include/linux/pid.h
include/linux/proc_fs.h
include/linux/qnx4_fs.h
include/linux/quota.h
include/linux/random.h
include/linux/reiserfs_fs.h
include/linux/sched.h
include/linux/security.h
include/linux/spi/eeprom.h [new file with mode: 0644]
include/linux/spi/spi.h
include/linux/spi/spi_bitbang.h
include/linux/sunrpc/svc.h
include/linux/sunrpc/svcsock.h
include/linux/svga.h [new file with mode: 0644]
include/linux/toshiba.h
include/linux/tty.h
include/linux/ufs_fs.h
include/linux/ufs_fs_i.h
include/linux/ufs_fs_sb.h
include/net/ax25.h
include/net/netfilter/nf_conntrack.h
include/net/netfilter/nf_conntrack_expect.h
include/net/netfilter/nf_conntrack_l3proto.h
include/net/netfilter/nf_conntrack_l4proto.h
include/net/netrom.h
include/net/rose.h
include/sound/pcm.h
include/video/neomagic.h
include/video/s3blit.h [deleted file]
init/main.c
ipc/mqueue.c
ipc/shm.c
ipc/util.c
kernel/capability.c
kernel/cpuset.c
kernel/exit.c
kernel/fork.c
kernel/irq/manage.c
kernel/sched.c
kernel/signal.c
kernel/sys.c
lib/Kconfig.debug
lib/swiotlb.c
lib/vsprintf.c
mm/memory.c
mm/mincore.c
mm/shmem.c
net/802/tr.c
net/8021q/vlanproc.c
net/appletalk/aarp.c
net/appletalk/atalk_proc.c
net/atm/br2684.c
net/atm/clip.c
net/atm/lec.c
net/atm/mpoa_proc.c
net/atm/proc.c
net/ax25/af_ax25.c
net/ax25/ax25_route.c
net/ax25/ax25_uid.c
net/bridge/netfilter/ebt_log.c
net/bridge/netfilter/ebt_ulog.c
net/core/dev.c
net/core/dev_mcast.c
net/core/neighbour.c
net/core/pktgen.c
net/core/sock.c
net/core/wireless.c
net/dccp/probe.c
net/decnet/af_decnet.c
net/decnet/dn_dev.c
net/decnet/dn_neigh.c
net/decnet/dn_route.c
net/ipv4/arp.c
net/ipv4/fib_hash.c
net/ipv4/fib_trie.c
net/ipv4/igmp.c
net/ipv4/ipconfig.c
net/ipv4/ipmr.c
net/ipv4/ipvs/ip_vs_app.c
net/ipv4/ipvs/ip_vs_conn.c
net/ipv4/ipvs/ip_vs_ctl.c
net/ipv4/netfilter/Kconfig
net/ipv4/netfilter/ip_conntrack_core.c
net/ipv4/netfilter/ip_conntrack_standalone.c
net/ipv4/netfilter/ip_nat_core.c
net/ipv4/netfilter/ipt_CLUSTERIP.c
net/ipv4/netfilter/ipt_LOG.c
net/ipv4/netfilter/ipt_ULOG.c
net/ipv4/netfilter/ipt_recent.c
net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c
net/ipv4/netfilter/nf_conntrack_proto_icmp.c
net/ipv4/netfilter/nf_nat_core.c
net/ipv4/proc.c
net/ipv4/raw.c
net/ipv4/route.c
net/ipv4/tcp_cubic.c
net/ipv4/tcp_htcp.c
net/ipv4/tcp_probe.c
net/ipv6/addrconf.c
net/ipv6/anycast.c
net/ipv6/ip6_flowlabel.c
net/ipv6/mcast.c
net/ipv6/netfilter/Kconfig
net/ipv6/netfilter/ip6t_LOG.c
net/ipv6/netfilter/ip6t_mh.c
net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
net/ipv6/proc.c
net/ipv6/raw.c
net/ipv6/route.c
net/ipx/ipx_proc.c
net/irda/discovery.c
net/irda/ircomm/ircomm_core.c
net/irda/iriap.c
net/irda/irlan/irlan_common.c
net/irda/irlap.c
net/irda/irlmp.c
net/irda/irttp.c
net/key/af_key.c
net/llc/llc_proc.c
net/netfilter/Kconfig
net/netfilter/core.c
net/netfilter/nf_conntrack_core.c
net/netfilter/nf_conntrack_expect.c
net/netfilter/nf_conntrack_ftp.c
net/netfilter/nf_conntrack_h323_main.c
net/netfilter/nf_conntrack_irc.c
net/netfilter/nf_conntrack_l3proto_generic.c
net/netfilter/nf_conntrack_netbios_ns.c
net/netfilter/nf_conntrack_netlink.c
net/netfilter/nf_conntrack_pptp.c
net/netfilter/nf_conntrack_proto.c
net/netfilter/nf_conntrack_proto_sctp.c
net/netfilter/nf_conntrack_proto_tcp.c
net/netfilter/nf_conntrack_sip.c
net/netfilter/nf_conntrack_standalone.c
net/netfilter/nf_conntrack_tftp.c
net/netfilter/nf_internals.h
net/netfilter/nf_log.c
net/netfilter/nf_queue.c
net/netfilter/nf_sockopt.c
net/netfilter/nfnetlink.c
net/netfilter/nfnetlink_log.c
net/netfilter/nfnetlink_queue.c
net/netfilter/x_tables.c
net/netfilter/xt_CLASSIFY.c
net/netfilter/xt_MARK.c
net/netfilter/xt_NFQUEUE.c
net/netfilter/xt_NOTRACK.c
net/netfilter/xt_SECMARK.c
net/netfilter/xt_conntrack.c
net/netfilter/xt_dccp.c
net/netfilter/xt_hashlimit.c
net/netfilter/xt_helper.c
net/netfilter/xt_length.c
net/netfilter/xt_limit.c
net/netfilter/xt_mac.c
net/netfilter/xt_mark.c
net/netfilter/xt_multiport.c
net/netfilter/xt_physdev.c
net/netfilter/xt_policy.c
net/netfilter/xt_quota.c
net/netfilter/xt_realm.c
net/netfilter/xt_sctp.c
net/netfilter/xt_string.c
net/netfilter/xt_tcpmss.c
net/netlink/af_netlink.c
net/netrom/af_netrom.c
net/netrom/nr_route.c
net/packet/af_packet.c
net/rose/af_rose.c
net/rose/rose_route.c
net/rxrpc/proc.c
net/sched/sch_api.c
net/sctp/proc.c
net/socket.c
net/sunrpc/cache.c
net/sunrpc/rpc_pipe.c
net/sunrpc/stats.c
net/sunrpc/svcauth_unix.c
net/sunrpc/svcsock.c
net/unix/af_unix.c
net/wanrouter/wanproc.c
net/x25/x25_proc.c
net/xfrm/xfrm_policy.c
net/xfrm/xfrm_user.c
security/inode.c
security/keys/proc.c
security/selinux/selinuxfs.c
sound/core/control.c
sound/core/hwdep.c
sound/core/info.c
sound/core/init.c
sound/core/oss/mixer_oss.c
sound/core/oss/pcm_oss.c
sound/core/pcm_native.c
sound/core/rawmidi.c
sound/core/seq/oss/seq_oss.c
sound/core/seq/seq_clientmgr.c
sound/core/sound.c
sound/core/timer.c
sound/oss/ad1889.c
sound/oss/au1550_ac97.c
sound/oss/btaudio.c
sound/oss/dmasound/dmasound_core.c
sound/oss/emu10k1/audio.c
sound/oss/emu10k1/midi.c
sound/oss/emu10k1/mixer.c
sound/oss/es1371.c
sound/oss/hal2.c
sound/oss/msnd_pinnacle.c
sound/oss/nec_vrc5477.c
sound/oss/os.h
sound/oss/sh_dac_audio.c
sound/oss/soundcard.c
sound/oss/swarm_cs4297a.c
sound/oss/via82cxxx_audio.c
sound/oss/vwsnd.c
sound/sound_core.c

index 7b3d969..3c5a9e4 100644 (file)
@@ -339,7 +339,21 @@ Device Symlink:
 
        'device'
 
-       Symlink to the memory controller device
+       Symlink to the memory controller device.
+
+Sdram memory scrubbing rate:
+
+       'sdram_scrub_rate'
+
+       Read/Write attribute file that controls memory scrubbing. The scrubbing
+       rate is set by writing a minimum bandwith in bytes/sec to the attribute
+       file. The rate will be translated to an internal value that gives at
+       least the specified rate.
+
+       Reading the file will return the actual scrubbing rate employed.
+
+       If configuration fails or memory scrubbing is not implemented, the value
+       of the attribute file will be -1.
 
 
 
diff --git a/Documentation/fb/s3fb.txt b/Documentation/fb/s3fb.txt
new file mode 100644 (file)
index 0000000..8a04c0d
--- /dev/null
@@ -0,0 +1,78 @@
+
+       s3fb - fbdev driver for S3 Trio/Virge chips
+       ===========================================
+
+
+Supported Hardware
+==================
+
+       S3 Trio32
+       S3 Trio64 (and variants V+, UV+, V2/DX, V2/GX)
+       S3 Virge  (and variants VX, DX, GX and GX2+)
+       S3 Plato/PX             (completely untested)
+       S3 Aurora64V+           (completely untested)
+
+       - only PCI bus supported
+       - only BIOS initialized VGA devices supported
+       - probably not working on big endian
+
+I tested s3fb on Trio64 (plain, V+ and V2/DX) and Virge (plain, VX, DX),
+all on i386.
+
+
+Supported Features
+==================
+
+       *  4 bpp pseudocolor modes (with 18bit palette, two variants)
+       *  8 bpp pseudocolor mode (with 18bit palette)
+       * 16 bpp truecolor modes (RGB 555 and RGB 565)
+       * 24 bpp truecolor mode (RGB 888) on (only on Virge VX)
+       * 32 bpp truecolor mode (RGB 888) on (not on Virge VX)
+       * text mode (activated by bpp = 0)
+       * interlaced mode variant (not available in text mode)
+       * doublescan mode variant (not available in text mode)
+       * panning in both directions
+       * suspend/resume support
+       * DPMS support
+
+Text mode is supported even in higher resolutions, but there is limitation
+to lower pixclocks (maximum between 50-60 MHz, depending on specific hardware).
+This limitation is not enforced by driver. Text mode supports 8bit wide fonts
+only (hardware limitation) and 16bit tall fonts (driver limitation).
+
+There are two 4 bpp modes. First mode (selected if nonstd == 0) is mode with
+packed pixels, high nibble first. Second mode (selected if nonstd == 1) is mode
+with interleaved planes (1 byte interleave), MSB first. Both modes support
+8bit wide fonts only (driver limitation).
+
+Suspend/resume works on systems that initialize video card during resume and
+if device is active (for example used by fbcon).
+
+
+Missing Features
+================
+(alias TODO list)
+
+       * secondary (not initialized by BIOS) device support
+       * big endian support
+       * Zorro bus support
+       * MMIO support
+       * 24 bpp mode support on more cards
+       * support for fontwidths != 8 in 4 bpp modes
+       * support for fontheight != 16 in text mode
+       * composite and external sync (is anyone able to test this?)
+       * hardware cursor
+       * video overlay support
+       * vsync synchronization
+       * feature connector support
+       * acceleration support (8514-like 2D, Virge 3D, busmaster transfers)
+       * better values for some magic registers (performance issues)
+
+
+Known bugs
+==========
+
+       * cursor disable in text mode doesn't work
+
+--
+Ondrej Zajicek <santiago@crfreenet.org>
index 2b5a56a..7a602ad 100644 (file)
@@ -21,7 +21,7 @@ ufstype=type_of_ufs
                supported as read-write
 
        ufs2    used in FreeBSD 5.x
-               supported as read-only
+               supported as read-write
 
        5xbsd   synonym for ufs2
 
@@ -50,12 +50,11 @@ ufstype=type_of_ufs
 POSSIBLE PROBLEMS
 =================
 
-There is still bug in reallocation of fragment, in file fs/ufs/balloc.c, 
-line 364. But it seems working on current buffer cache configuration.
+See next section, if you have any.
 
 
 BUG REPORTS
 ===========
 
-Any ufs bug report you can send to daniel.pirkl@email.cz (do not send 
-partition tables bug reports.)
+Any ufs bug report you can send to daniel.pirkl@email.cz or
+to dushistov@mail.ru (do not send partition tables bug reports).
diff --git a/Documentation/gpio.txt b/Documentation/gpio.txt
new file mode 100644 (file)
index 0000000..09dd510
--- /dev/null
@@ -0,0 +1,271 @@
+GPIO Interfaces
+
+This provides an overview of GPIO access conventions on Linux.
+
+
+What is a GPIO?
+===============
+A "General Purpose Input/Output" (GPIO) is a flexible software-controlled
+digital signal.  They are provided from many kinds of chip, and are familiar
+to Linux developers working with embedded and custom hardware.  Each GPIO
+represents a bit connected to a particular pin, or "ball" on Ball Grid Array
+(BGA) packages.  Board schematics show which external hardware connects to
+which GPIOs.  Drivers can be written generically, so that board setup code
+passes such pin configuration data to drivers.
+
+System-on-Chip (SOC) processors heavily rely on GPIOs.  In some cases, every
+non-dedicated pin can be configured as a GPIO; and most chips have at least
+several dozen of them.  Programmable logic devices (like FPGAs) can easily
+provide GPIOs; multifunction chips like power managers, and audio codecs
+often have a few such pins to help with pin scarcity on SOCs; and there are
+also "GPIO Expander" chips that connect using the I2C or SPI serial busses.
+Most PC southbridges have a few dozen GPIO-capable pins (with only the BIOS
+firmware knowing how they're used).
+
+The exact capabilities of GPIOs vary between systems.  Common options:
+
+  - Output values are writable (high=1, low=0).  Some chips also have
+    options about how that value is driven, so that for example only one
+    value might be driven ... supporting "wire-OR" and similar schemes
+    for the other value.
+
+  - Input values are likewise readable (1, 0).  Some chips support readback
+    of pins configured as "output", which is very useful in such "wire-OR"
+    cases (to support bidirectional signaling).  GPIO controllers may have
+    input de-glitch logic, sometimes with software controls.
+
+  - Inputs can often be used as IRQ signals, often edge triggered but
+    sometimes level triggered.  Such IRQs may be configurable as system
+    wakeup events, to wake the system from a low power state.
+
+  - Usually a GPIO will be configurable as either input or output, as needed
+    by different product boards; single direction ones exist too.
+
+  - Most GPIOs can be accessed while holding spinlocks, but those accessed
+    through a serial bus normally can't.  Some systems support both types.
+
+On a given board each GPIO is used for one specific purpose like monitoring
+MMC/SD card insertion/removal, detecting card writeprotect status, driving
+a LED, configuring a transceiver, bitbanging a serial bus, poking a hardware
+watchdog, sensing a switch, and so on.
+
+
+GPIO conventions
+================
+Note that this is called a "convention" because you don't need to do it this
+way, and it's no crime if you don't.  There **are** cases where portability
+is not the main issue; GPIOs are often used for the kind of board-specific
+glue logic that may even change between board revisions, and can't ever be
+used on a board that's wired differently.  Only least-common-denominator
+functionality can be very portable.  Other features are platform-specific,
+and that can be critical for glue logic.
+
+Plus, this doesn't define an implementation framework, just an interface.
+One platform might implement it as simple inline functions accessing chip
+registers; another might implement it by delegating through abstractions
+used for several very different kinds of GPIO controller.
+
+That said, if the convention is supported on their platform, drivers should
+use it when possible:
+
+       #include <asm/gpio.h>
+
+If you stick to this convention then it'll be easier for other developers to
+see what your code is doing, and help maintain it.
+
+
+Identifying GPIOs
+-----------------
+GPIOs are identified by unsigned integers in the range 0..MAX_INT.  That
+reserves "negative" numbers for other purposes like marking signals as
+"not available on this board", or indicating faults.
+
+Platforms define how they use those integers, and usually #define symbols
+for the GPIO lines so that board-specific setup code directly corresponds
+to the relevant schematics.  In contrast, drivers should only use GPIO
+numbers passed to them from that setup code, using platform_data to hold
+board-specific pin configuration data (along with other board specific
+data they need).  That avoids portability problems.
+
+So for example one platform uses numbers 32-159 for GPIOs; while another
+uses numbers 0..63 with one set of GPIO controllers, 64-79 with another
+type of GPIO controller, and on one particular board 80-95 with an FPGA.
+The numbers need not be contiguous; either of those platforms could also
+use numbers 2000-2063 to identify GPIOs in a bank of I2C GPIO expanders.
+
+Whether a platform supports multiple GPIO controllers is currently a
+platform-specific implementation issue.
+
+
+Using GPIOs
+-----------
+One of the first things to do with a GPIO, often in board setup code when
+setting up a platform_device using the GPIO, is mark its direction:
+
+       /* set as input or output, returning 0 or negative errno */
+       int gpio_direction_input(unsigned gpio);
+       int gpio_direction_output(unsigned gpio);
+
+The return value is zero for success, else a negative errno.  It should
+be checked, since the get/set calls don't have error returns and since
+misconfiguration is possible.  (These calls could sleep.)
+
+Setting the direction can fail if the GPIO number is invalid, or when
+that particular GPIO can't be used in that mode.  It's generally a bad
+idea to rely on boot firmware to have set the direction correctly, since
+it probably wasn't validated to do more than boot Linux.  (Similarly,
+that board setup code probably needs to multiplex that pin as a GPIO,
+and configure pullups/pulldowns appropriately.)
+
+
+Spinlock-Safe GPIO access
+-------------------------
+Most GPIO controllers can be accessed with memory read/write instructions.
+That doesn't need to sleep, and can safely be done from inside IRQ handlers.
+
+Use these calls to access such GPIOs:
+
+       /* GPIO INPUT:  return zero or nonzero */
+       int gpio_get_value(unsigned gpio);
+
+       /* GPIO OUTPUT */
+       void gpio_set_value(unsigned gpio, int value);
+
+The values are boolean, zero for low, nonzero for high.  When reading the
+value of an output pin, the value returned should be what's seen on the
+pin ... that won't always match the specified output value, because of
+issues including wire-OR and output latencies.
+
+The get/set calls have no error returns because "invalid GPIO" should have
+been reported earlier in gpio_set_direction().  However, note that not all
+platforms can read the value of output pins; those that can't should always
+return zero.  Also, these calls will be ignored for GPIOs that can't safely
+be accessed wihtout sleeping (see below).
+
+Platform-specific implementations are encouraged to optimise the two
+calls to access the GPIO value in cases where the GPIO number (and for
+output, value) are constant.  It's normal for them to need only a couple
+of instructions in such cases (reading or writing a hardware register),
+and not to need spinlocks.  Such optimized calls can make bitbanging
+applications a lot more efficient (in both space and time) than spending
+dozens of instructions on subroutine calls.
+
+
+GPIO access that may sleep
+--------------------------
+Some GPIO controllers must be accessed using message based busses like I2C
+or SPI.  Commands to read or write those GPIO values require waiting to
+get to the head of a queue to transmit a command and get its response.
+This requires sleeping, which can't be done from inside IRQ handlers.
+
+Platforms that support this type of GPIO distinguish them from other GPIOs
+by returning nonzero from this call:
+
+       int gpio_cansleep(unsigned gpio);
+
+To access such GPIOs, a different set of accessors is defined:
+
+       /* GPIO INPUT:  return zero or nonzero, might sleep */
+       int gpio_get_value_cansleep(unsigned gpio);
+
+       /* GPIO OUTPUT, might sleep */
+       void gpio_set_value_cansleep(unsigned gpio, int value);
+
+Other than the fact that these calls might sleep, and will not be ignored
+for GPIOs that can't be accessed from IRQ handlers, these calls act the
+same as the spinlock-safe calls.
+
+
+Claiming and Releasing GPIOs (OPTIONAL)
+---------------------------------------
+To help catch system configuration errors, two calls are defined.
+However, many platforms don't currently support this mechanism.
+
+       /* request GPIO, returning 0 or negative errno.
+        * non-null labels may be useful for diagnostics.
+        */
+       int gpio_request(unsigned gpio, const char *label);
+
+       /* release previously-claimed GPIO */
+       void gpio_free(unsigned gpio);
+
+Passing invalid GPIO numbers to gpio_request() will fail, as will requesting
+GPIOs that have already been claimed with that call.  The return value of
+gpio_request() must be checked.  (These calls could sleep.)
+
+These calls serve two basic purposes.  One is marking the signals which
+are actually in use as GPIOs, for better diagnostics; systems may have
+several hundred potential GPIOs, but often only a dozen are used on any
+given board.  Another is to catch conflicts between drivers, reporting
+errors when drivers wrongly think they have exclusive use of that signal.
+
+These two calls are optional because not not all current Linux platforms
+offer such functionality in their GPIO support; a valid implementation
+could return success for all gpio_request() calls.  Unlike the other calls,
+the state they represent doesn't normally match anything from a hardware
+register; it's just a software bitmap which clearly is not necessary for
+correct operation of hardware or (bug free) drivers.
+
+Note that requesting a GPIO does NOT cause it to be configured in any
+way; it just marks that GPIO as in use.  Separate code must handle any
+pin setup (e.g. controlling which pin the GPIO uses, pullup/pulldown).
+
+
+GPIOs mapped to IRQs
+--------------------
+GPIO numbers are unsigned integers; so are IRQ numbers.  These make up
+two logically distinct namespaces (GPIO 0 need not use IRQ 0).  You can
+map between them using calls like:
+
+       /* map GPIO numbers to IRQ numbers */
+       int gpio_to_irq(unsigned gpio);
+
+       /* map IRQ numbers to GPIO numbers */
+       int irq_to_gpio(unsigned irq);
+
+Those return either the corresponding number in the other namespace, or
+else a negative errno code if the mapping can't be done.  (For example,
+some GPIOs can't used as IRQs.)  It is an unchecked error to use a GPIO
+number that hasn't been marked as an input using gpio_set_direction(), or
+to use an IRQ number that didn't originally come from gpio_to_irq().
+
+These two mapping calls are expected to cost on the order of a single
+addition or subtraction.  They're not allowed to sleep.
+
+Non-error values returned from gpio_to_irq() can be passed to request_irq()
+or free_irq().  They will often be stored into IRQ resources for platform
+devices, by the board-specific initialization code.  Note that IRQ trigger
+options are part of the IRQ interface, e.g. IRQF_TRIGGER_FALLING, as are
+system wakeup capabilities.
+
+Non-error values returned from irq_to_gpio() would most commonly be used
+with gpio_get_value().
+
+
+
+What do these conventions omit?
+===============================
+One of the biggest things these conventions omit is pin multiplexing, since
+this is highly chip-specific and nonportable.  One platform might not need
+explicit multiplexing; another might have just two options for use of any
+given pin; another might have eight options per pin; another might be able
+to route a given GPIO to any one of several pins.  (Yes, those examples all
+come from systems that run Linux today.)
+
+Related to multiplexing is configuration and enabling of the pullups or
+pulldowns integrated on some platforms.  Not all platforms support them,
+or support them in the same way; and any given board might use external
+pullups (or pulldowns) so that the on-chip ones should not be used.
+
+There are other system-specific mechanisms that are not specified here,
+like the aforementioned options for input de-glitching and wire-OR output.
+Hardware may support reading or writing GPIOs in gangs, but that's usually
+configuration dependednt:  for GPIOs sharing the same bank.  (GPIOs are
+commonly grouped in banks of 16 or 32, with a given SOC having several such
+banks.)  Code relying on such mechanisms will necessarily be nonportable.
+
+Dynamic definition of GPIOs is not currently supported; for example, as
+a side effect of configuring an add-on board with some GPIO expanders.
+
+These calls are purely for kernel space, but a userspace API could be built
+on top of it.
index fa0d4cc..55b2852 100644 (file)
@@ -8,29 +8,33 @@ GigaSet 307x Device Driver
      This release supports the connection of the Gigaset 307x/417x family of
      ISDN DECT bases via Gigaset M101 Data, Gigaset M105 Data or direct USB
      connection. The following devices are reported to be compatible:
-     307x/417x:
-        Gigaset SX255isdn
-        Gigaset SX353isdn
-        Sinus 45 [AB] isdn (Deutsche Telekom)
-        Sinus 721X/XA
+
+     Bases:
+        Siemens Gigaset 3070/3075 isdn
+        Siemens Gigaset 4170/4175 isdn
+        Siemens Gigaset SX205/255
+        Siemens Gigaset SX353
+        T-Com Sinus 45 [AB] isdn
+        T-Com Sinus 721X[A] [SE]
         Vox Chicago 390 ISDN (KPN Telecom)
-     M101:
-        Sinus 45 Data 1 (Telekom)
-     M105:
-        Gigaset USB Adapter DECT
-        Sinus 45 Data 2 (Telekom)
-        Sinus 721 data
+
+     RS232 data boxes:
+        Siemens Gigaset M101 Data
+        T-Com Sinus 45 Data 1
+
+     USB data boxes:
+        Siemens Gigaset M105 Data
+        Siemens Gigaset USB Adapter DECT
+        T-Com Sinus 45 Data 2
+        T-Com Sinus 721 data
         Chicago 390 USB (KPN)
+
      See also http://www.erbze.info/sinus_gigaset.htm and
               http://gigaset307x.sourceforge.net/
 
      We had also reports from users of Gigaset M105 who could use the drivers
      with SX 100 and CX 100 ISDN bases (only in unimodem mode, see section 2.4.)
      If you have another device that works with our driver, please let us know.
-     For example, Gigaset SX205isdn/Sinus 721 X SE and Gigaset SX303isdn bases
-     are just versions without answering machine of models known to work, so
-     they should work just as well; but so far we are lacking positive reports
-     on these.
 
      Chances of getting an USB device to work are good if the output of
         lsusb
@@ -60,14 +64,28 @@ GigaSet 307x Device Driver
      To get the device working, you have to load the proper kernel module. You
      can do this using
          modprobe modulename
-     where modulename is usb_gigaset (M105) or bas_gigaset (direct USB
-     connection to the base).
+     where modulename is ser_gigaset (M101), usb_gigaset (M105), or
+     bas_gigaset (direct USB connection to the base).
+
+     The module ser_gigaset provides a serial line discipline N_GIGASET_M101
+     which drives the device through the regular serial line driver. To use it,
+     run the Gigaset M101 daemon "gigasetm101d" (also available from
+     http://sourceforge.net/projects/gigaset307x/) with the device file of the
+     RS232 port to the M101 as an argument, for example:
+        gigasetm101d /dev/ttyS1
+     This will open the device file, set its line discipline to N_GIGASET_M101,
+     and then sleep in the background, keeping the device open so that the
+     line discipline remains active. To deactivate it, kill the daemon, for
+     example with
+        killall gigasetm101d
+     before disconnecting the device.
 
 2.2. Device nodes for user space programs
      ------------------------------------
      The device can be accessed from user space (eg. by the user space tools
      mentioned in 1.2.) through the device nodes:
 
+     - /dev/ttyGS0 for M101 (RS232 data boxes)
      - /dev/ttyGU0 for M105 (USB data boxes)
      - /dev/ttyGB0 for the base driver (direct USB connection)
 
@@ -168,6 +186,19 @@ GigaSet 307x Device Driver
      You can also use /sys/class/tty/ttyGxy/cidmode for changing the CID mode
      setting (ttyGxy is ttyGU0 or ttyGB0).
 
+2.6. M105 Undocumented USB Requests
+     ------------------------------
+
+     The Gigaset M105 USB data box understands a couple of useful, but
+     undocumented USB commands. These requests are not used in normal
+     operation (for wireless access to the base), but are needed for access
+     to the M105's own configuration mode (registration to the base, baudrate
+     and line format settings, device status queries) via the gigacontr
+     utility. Their use is disabled in the driver by default for safety
+     reasons but can be enabled by setting the kernel configuration option
+     "Support for undocumented USB requests" (GIGASET_UNDOCREQ) to "Y" and
+     recompiling.
+
 
 3.   Troubleshooting
      ---------------
index 0733068..79775a4 100644 (file)
@@ -311,10 +311,10 @@ Following are the arch specific command line options to be used while
 loading dump-capture kernel.
 
 For i386, x86_64 and ia64:
-       "init 1 irqpoll maxcpus=1"
+       "1 irqpoll maxcpus=1"
 
 For ppc64:
-       "init 1 maxcpus=1 noirqdistrib"
+       "1 maxcpus=1 noirqdistrib"
 
 
 Notes on loading the dump-capture kernel:
@@ -332,8 +332,8 @@ Notes on loading the dump-capture kernel:
 * You must specify <root-dev> in the format corresponding to the root
   device name in the output of mount command.
 
-* "init 1" boots the dump-capture kernel into single-user mode without
-  networking. If you want networking, use "init 3."
+* Boot parameter "1" boots the dump-capture kernel into single-user
+  mode without networking. If you want networking, use "3".
 
 * We generally don' have to bring up a SMP kernel just to capture the
   dump. Hence generally it is useful either to build a UP dump-capture
index 719f9a9..16a7cae 100644 (file)
@@ -67,8 +67,8 @@ nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
   <nfs-options>        Standard NFS options. All options are separated by commas.
                The following defaults are used:
                        port            = as given by server portmap daemon
-                       rsize           = 1024
-                       wsize           = 1024
+                       rsize           = 4096
+                       wsize           = 4096
                        timeo           = 7
                        retrans         = 3
                        acregmin        = 3
index 7279579..ecc7c9e 100644 (file)
@@ -284,7 +284,6 @@ SPI protocol drivers somewhat resemble platform device drivers:
        static struct spi_driver CHIP_driver = {
                .driver = {
                        .name           = "CHIP",
-                       .bus            = &spi_bus_type,
                        .owner          = THIS_MODULE,
                },
 
@@ -312,7 +311,7 @@ might look like this unless you're creating a class_device:
                chip = kzalloc(sizeof *chip, GFP_KERNEL);
                if (!chip)
                        return -ENOMEM;
-               dev_set_drvdata(&spi->dev, chip);
+               spi_set_drvdata(spi, chip);
 
                ... etc
                return 0;
index 9ea954a..f85c603 100644 (file)
@@ -1002,14 +1002,12 @@ L:      cycsyn-devel@bazar.conectiva.com.br
 S:     Maintained
 
 CYCLADES ASYNC MUX DRIVER
-M:     async@cyclades.com
 W:     http://www.cyclades.com/
-S:     Supported
+S:     Orphan
 
 CYCLADES PC300 DRIVER
-M:     pc300@cyclades.com
 W:     http://www.cyclades.com/
-S:     Supported
+S:     Orphan
 
 DAMA SLAVE for AX.25
 P:     Joerg Reuter
index cdeda68..7e4968f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -789,7 +789,7 @@ $(vmlinux-dirs): prepare scripts
 
 pattern = ".*/localversion[^~]*"
 string  = $(shell cat /dev/null \
-          `find $(objtree) $(srctree) -maxdepth 1 -regex $(pattern) | sort`)
+          `find $(objtree) $(srctree) -maxdepth 1 -regex $(pattern) | sort -u`)
 
 localver = $(subst $(space),, $(string) \
                              $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
index 1aea7c7..d352c2b 100644 (file)
@@ -122,7 +122,7 @@ static void get_sysnames(unsigned long, unsigned long, unsigned long,
                         char **, char **);
 static void determine_cpu_caches (unsigned int);
 
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
 
 /*
  * The format of "screen_info" is strange, and due to early
@@ -547,7 +547,7 @@ setup_arch(char **cmdline_p)
        } else {
                strlcpy(command_line, COMMAND_LINE, sizeof command_line);
        }
-       strcpy(saved_command_line, command_line);
+       strcpy(boot_command_line, command_line);
        *cmdline_p = command_line;
 
        /* 
@@ -589,7 +589,7 @@ setup_arch(char **cmdline_p)
        }
 
        /* Replace the command line, now that we've killed it with strsep.  */
-       strcpy(command_line, saved_command_line);
+       strcpy(command_line, boot_command_line);
 
        /* If we want SRM console printk echoing early, do it now. */
        if (alpha_using_srm && srmcons_output) {
index 4e5445c..bf1075e 100644 (file)
@@ -329,7 +329,7 @@ static int rtc_fasync(int fd, struct file *file, int on)
        return fasync_helper(fd, file, on, &rtc_async_queue);
 }
 
-static struct file_operations rtc_fops = {
+static const struct file_operations rtc_fops = {
        .owner          = THIS_MODULE,
        .llseek         = no_llseek,
        .read           = rtc_read,
index bbab134..ed52215 100644 (file)
@@ -106,7 +106,7 @@ unsigned long phys_initrd_size __initdata = 0;
 static struct meminfo meminfo __initdata = { 0, };
 static const char *cpu_name;
 static const char *machine_name;
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
 
 static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE;
 static union { char c[4]; unsigned long l; } endian_test __initdata = { { 'l', '?', '?', 'b' } };
@@ -803,8 +803,8 @@ void __init setup_arch(char **cmdline_p)
        init_mm.end_data   = (unsigned long) &_edata;
        init_mm.brk        = (unsigned long) &_end;
 
-       memcpy(saved_command_line, from, COMMAND_LINE_SIZE);
-       saved_command_line[COMMAND_LINE_SIZE-1] = '\0';
+       memcpy(boot_command_line, from, COMMAND_LINE_SIZE);
+       boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
        parse_cmdline(cmdline_p, from);
        paging_init(&meminfo, mdesc);
        request_standard_resources(&meminfo, mdesc);
index 4dee21f..36a8e4d 100644 (file)
@@ -407,7 +407,7 @@ static int at91_clk_open(struct inode *inode, struct file *file)
        return single_open(file, at91_clk_show, NULL);
 }
 
-static struct file_operations at91_clk_operations = {
+static const struct file_operations at91_clk_operations = {
        .open           = at91_clk_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
index af22659..15eb5b6 100644 (file)
@@ -64,6 +64,24 @@ static inline unsigned pin_to_mask(unsigned pin)
  */
 
 
+/*
+ * mux the pin to the "GPIO" peripheral role.
+ */
+int __init_or_module at91_set_GPIO_periph(unsigned pin, int use_pullup)
+{
+       void __iomem    *pio = pin_to_controller(pin);
+       unsigned        mask = pin_to_mask(pin);
+
+       if (!pio)
+               return -EINVAL;
+       __raw_writel(mask, pio + PIO_IDR);
+       __raw_writel(mask, pio + (use_pullup ? PIO_PUER : PIO_PUDR));
+       __raw_writel(mask, pio + PIO_PER);
+       return 0;
+}
+EXPORT_SYMBOL(at91_set_GPIO_periph);
+
+
 /*
  * mux the pin to the "A" internal peripheral role.
  */
@@ -181,6 +199,36 @@ EXPORT_SYMBOL(at91_set_multi_drive);
 
 /*--------------------------------------------------------------------------*/
 
+/* new-style GPIO calls; these expect at91_set_GPIO_periph to have been
+ * called, and maybe at91_set_multi_drive() for putout pins.
+ */
+
+int gpio_direction_input(unsigned pin)
+{
+       void __iomem    *pio = pin_to_controller(pin);
+       unsigned        mask = pin_to_mask(pin);
+
+       if (!pio || !(__raw_readl(pio + PIO_PSR) & mask))
+               return -EINVAL;
+       __raw_writel(mask, pio + PIO_OER);
+       return 0;
+}
+EXPORT_SYMBOL(gpio_direction_input);
+
+int gpio_direction_output(unsigned pin)
+{
+       void __iomem    *pio = pin_to_controller(pin);
+       unsigned        mask = pin_to_mask(pin);
+
+       if (!pio || !(__raw_readl(pio + PIO_PSR) & mask))
+               return -EINVAL;
+       __raw_writel(mask, pio + PIO_OER);
+       return 0;
+}
+EXPORT_SYMBOL(gpio_direction_output);
+
+/*--------------------------------------------------------------------------*/
+
 /*
  * assuming the pin is muxed as a gpio output, set its value.
  */
index 466ddb5..0e006c6 100644 (file)
@@ -80,7 +80,7 @@ unsigned long phys_initrd_size __initdata = 0;
 static struct meminfo meminfo __initdata = { 0, };
 static struct proc_info_item proc_info;
 static const char *machine_name;
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
 
 static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE;
 
@@ -492,8 +492,8 @@ void __init setup_arch(char **cmdline_p)
        init_mm.end_data   = (unsigned long) &_edata;
        init_mm.brk        = (unsigned long) &_end;
 
-       memcpy(saved_command_line, from, COMMAND_LINE_SIZE);
-       saved_command_line[COMMAND_LINE_SIZE-1] = '\0';
+       memcpy(boot_command_line, from, COMMAND_LINE_SIZE);
+       boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
        parse_cmdline(&meminfo, cmdline_p, from);
        bootmem_init(&meminfo);
        paging_init(&meminfo);
index c6734ae..a1a7c3c 100644 (file)
@@ -45,7 +45,7 @@ struct avr32_cpuinfo boot_cpu_data = {
 };
 EXPORT_SYMBOL(boot_cpu_data);
 
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
 
 /*
  * Should be more than enough, but if you have a _really_ complex
@@ -202,7 +202,7 @@ __tagtable(ATAG_MEM, parse_tag_mem);
 
 static int __init parse_tag_cmdline(struct tag *tag)
 {
-       strlcpy(saved_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE);
+       strlcpy(boot_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE);
        return 0;
 }
 __tagtable(ATAG_CMDLINE, parse_tag_cmdline);
@@ -294,7 +294,7 @@ void __init setup_arch (char **cmdline_p)
        init_mm.end_data = (unsigned long) &_edata;
        init_mm.brk = (unsigned long) &_end;
 
-       strlcpy(command_line, saved_command_line, COMMAND_LINE_SIZE);
+       strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
        *cmdline_p = command_line;
        parse_early_param();
 
index 7b07305..5667201 100644 (file)
@@ -360,7 +360,7 @@ static int tlb_open(struct inode *inode, struct file *file)
        return seq_open(file, &tlb_ops);
 }
 
-static struct file_operations proc_tlb_operations = {
+static const struct file_operations proc_tlb_operations = {
        .open           = tlb_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
index 3cf4f23..88eff7f 100644 (file)
@@ -499,7 +499,7 @@ print_rtc_status(void)
 
 /* The various file operations we support. */
 
-static struct file_operations rtc_fops = {
+static const struct file_operations rtc_fops = {
        .owner =        THIS_MODULE,
        .ioctl =        rtc_ioctl,
 }; 
index 284ebfd..be35a70 100644 (file)
@@ -172,7 +172,7 @@ static const char eeprom_name[] = "eeprom";
 static struct eeprom_type eeprom;
 
 /* This is the exported file-operations structure for this device. */
-struct file_operations eeprom_fops =
+const struct file_operations eeprom_fops =
 {
   .llseek  = eeprom_lseek,
   .read    = eeprom_read,
index 9aba18b..f389ed6 100644 (file)
@@ -838,7 +838,7 @@ gpio_leds_ioctl(unsigned int cmd, unsigned long arg)
        return 0;
 }
 
-struct file_operations gpio_fops = {
+const struct file_operations gpio_fops = {
        .owner       = THIS_MODULE,
        .poll        = gpio_poll,
        .ioctl       = gpio_ioctl,
index 092c724..aca81dd 100644 (file)
@@ -692,7 +692,7 @@ i2c_ioctl(struct inode *inode, struct file *file,
        return 0;
 }
 
-static struct file_operations i2c_fops = {
+static const struct file_operations i2c_fops = {
        .owner    = THIS_MODULE,
        .ioctl    = i2c_ioctl,
        .open     = i2c_open,
index 8c830ee..107796e 100644 (file)
@@ -56,7 +56,7 @@ static const unsigned char days_in_month[] =
 
 int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
 
-static struct file_operations pcf8563_fops = {
+static const struct file_operations pcf8563_fops = {
        .owner = THIS_MODULE,
        .ioctl = pcf8563_ioctl,
 };
index 2449637..1a071f1 100644 (file)
@@ -266,7 +266,7 @@ static void print_user_dma_lists(struct cryptocop_dma_list_operation *dma_op);
 
 
 
-struct file_operations cryptocop_fops = {
+const struct file_operations cryptocop_fops = {
        owner: THIS_MODULE,
        open: cryptocop_open,
        release: cryptocop_release,
index 08d36f0..d82c5c5 100644 (file)
@@ -705,7 +705,7 @@ gpio_leds_ioctl(unsigned int cmd, unsigned long arg)
        return 0;
 }
 
-struct file_operations gpio_fops = {
+const struct file_operations gpio_fops = {
        .owner       = THIS_MODULE,
        .poll        = gpio_poll,
        .ioctl       = gpio_ioctl,
index 95f0018..5d6c527 100644 (file)
@@ -573,7 +573,7 @@ i2c_ioctl(struct inode *inode, struct file *file,
        return 0;
 }
 
-static struct file_operations i2c_fops = {
+static const struct file_operations i2c_fops = {
        owner:    THIS_MODULE,
        ioctl:    i2c_ioctl,
        open:     i2c_open,
index 2fc7d75..544ab01 100644 (file)
@@ -50,7 +50,7 @@ int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
 int pcf8563_open(struct inode *, struct file *);
 int pcf8563_release(struct inode *, struct file *);
 
-static struct file_operations pcf8563_fops = {
+static const struct file_operations pcf8563_fops = {
        owner: THIS_MODULE,
        ioctl: pcf8563_ioctl,
        open: pcf8563_open,
index 424eb0e..df89298 100644 (file)
@@ -187,7 +187,7 @@ static struct sync_port ports[]=
 
 #define NUMBER_OF_PORTS (sizeof(ports)/sizeof(sync_port))
 
-static struct file_operations sync_serial_fops = {
+static const struct file_operations sync_serial_fops = {
        .owner   = THIS_MODULE,
        .write   = sync_serial_write,
        .read    = sync_serial_read,
index f60ab78..4cfcae6 100644 (file)
@@ -50,7 +50,7 @@ write_cris_profile(struct file *file, const char __user *buf,
   memset(sample_buffer, 0, SAMPLE_BUFFER_SIZE);
 }
 
-static struct file_operations cris_proc_profile_operations = {
+static const struct file_operations cris_proc_profile_operations = {
        .read           = read_cris_profile,
        .write          = write_cris_profile,
 };
index ca8b45a..65466c4 100644 (file)
@@ -29,7 +29,7 @@ struct screen_info screen_info;
 extern int root_mountflags;
 extern char _etext, _edata, _end;
 
-char cris_command_line[COMMAND_LINE_SIZE] = { 0, };
+char __initdata cris_command_line[COMMAND_LINE_SIZE] = { 0, };
 
 extern const unsigned long text_start, edata; /* set by the linker script */
 extern unsigned long dram_start, dram_end;
@@ -153,8 +153,8 @@ setup_arch(char **cmdline_p)
 #endif
 
        /* Save command line for future references. */
-       memcpy(saved_command_line, cris_command_line, COMMAND_LINE_SIZE);
-       saved_command_line[COMMAND_LINE_SIZE - 1] = '\0';
+       memcpy(boot_command_line, cris_command_line, COMMAND_LINE_SIZE);
+       boot_command_line[COMMAND_LINE_SIZE - 1] = '\0';
 
        /* give credit for the CRIS port */
        show_etrax_copyright();
index 1a5eb6c..8ea3ca2 100644 (file)
@@ -110,7 +110,7 @@ unsigned long __initdata num_mappedpages;
 
 struct cpuinfo_frv __nongprelbss boot_cpu_data;
 
-char command_line[COMMAND_LINE_SIZE];
+char __initdata command_line[COMMAND_LINE_SIZE];
 char __initdata redboot_command_line[COMMAND_LINE_SIZE];
 
 #ifdef CONFIG_PM
@@ -762,7 +762,7 @@ void __init setup_arch(char **cmdline_p)
        printk("uClinux FR-V port done by Red Hat Inc <dhowells@redhat.com>\n");
 #endif
 
-       memcpy(saved_command_line, redboot_command_line, COMMAND_LINE_SIZE);
+       memcpy(boot_command_line, redboot_command_line, COMMAND_LINE_SIZE);
 
        determine_cpu();
        determine_clocks(1);
@@ -803,7 +803,7 @@ void __init setup_arch(char **cmdline_p)
 #endif
 
        /* deal with the command line - RedBoot may have passed one to the kernel */
-       memcpy(command_line, saved_command_line, sizeof(command_line));
+       memcpy(command_line, boot_command_line, sizeof(command_line));
        *cmdline_p = &command_line[0];
        parse_cmdline_early(command_line);
 
index 6adf8f4..313cd80 100644 (file)
@@ -54,7 +54,7 @@ unsigned long rom_length;
 unsigned long memory_start;
 unsigned long memory_end;
 
-char command_line[COMMAND_LINE_SIZE];
+char __initdata command_line[COMMAND_LINE_SIZE];
 
 extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
 extern int _ramstart, _ramend;
@@ -154,8 +154,8 @@ void __init setup_arch(char **cmdline_p)
 #endif
        /* Keep a copy of command line */
        *cmdline_p = &command_line[0];
-       memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE);
-       saved_command_line[COMMAND_LINE_SIZE-1] = 0;
+       memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
+       boot_command_line[COMMAND_LINE_SIZE-1] = 0;
 
 #ifdef DEBUG
        if (strlen(*cmdline_p)) 
index 1990169..db99a89 100644 (file)
@@ -1894,7 +1894,7 @@ static int __init apm_setup(char *str)
 __setup("apm=", apm_setup);
 #endif
 
-static struct file_operations apm_bios_fops = {
+static const struct file_operations apm_bios_fops = {
        .owner          = THIS_MODULE,
        .read           = do_read,
        .poll           = do_poll,
index 5ae1705..ee771f3 100644 (file)
@@ -339,7 +339,7 @@ static int mtrr_open(struct inode *inode, struct file *file)
        return single_open(file, mtrr_seq_show, NULL);
 }
 
-static struct file_operations mtrr_fops = {
+static const struct file_operations mtrr_fops = {
        .owner   = THIS_MODULE,
        .open    = mtrr_open, 
        .read    = seq_read,
index 51130b3..4da75fa 100644 (file)
@@ -148,7 +148,7 @@ static int cpuid_open(struct inode *inode, struct file *file)
 /*
  * File operations we support
  */
-static struct file_operations cpuid_fops = {
+static const struct file_operations cpuid_fops = {
        .owner = THIS_MODULE,
        .llseek = cpuid_seek,
        .read = cpuid_read,
index edef508..cb9abdf 100644 (file)
@@ -103,7 +103,7 @@ ENTRY(startup_32)
        movzwl OLD_CL_OFFSET,%esi
        addl $(OLD_CL_BASE_ADDR),%esi
 2:
-       movl $(saved_command_line - __PAGE_OFFSET),%edi
+       movl $(boot_command_line - __PAGE_OFFSET),%edi
        movl $(COMMAND_LINE_SIZE/4),%ecx
        rep
        movsl
index c8fa137..381252b 100644 (file)
@@ -451,7 +451,7 @@ static ssize_t microcode_write (struct file *file, const char __user *buf, size_
        return ret;
 }
 
-static struct file_operations microcode_fops = {
+static const struct file_operations microcode_fops = {
        .owner          = THIS_MODULE,
        .write          = microcode_write,
        .open           = microcode_open,
index 4a472a1..4e14264 100644 (file)
@@ -230,7 +230,7 @@ static int msr_open(struct inode *inode, struct file *file)
 /*
  * File operations we support
  */
-static struct file_operations msr_fops = {
+static const struct file_operations msr_fops = {
        .owner = THIS_MODULE,
        .llseek = msr_seek,
        .read = msr_read,
index 4b31ad7..4694ac9 100644 (file)
@@ -132,7 +132,7 @@ unsigned long saved_videomode;
 #define RAMDISK_PROMPT_FLAG            0x8000
 #define RAMDISK_LOAD_FLAG              0x4000  
 
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
 
 unsigned char __initdata boot_params[PARAM_SIZE];
 
@@ -576,7 +576,7 @@ void __init setup_arch(char **cmdline_p)
                print_memory_map("user");
        }
 
-       strlcpy(command_line, saved_command_line, COMMAND_LINE_SIZE);
+       strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
        *cmdline_p = command_line;
 
        max_low_pfn = setup_memory();
index ce49fe3..c1dca22 100644 (file)
@@ -1881,7 +1881,7 @@ ioc_open(struct inode *inode, struct file *file)
        return seq_open(file, &ioc_seq_ops);
 }
 
-static struct file_operations ioc_fops = {
+static const struct file_operations ioc_fops = {
        .open    = ioc_open,
        .read    = seq_read,
        .llseek  = seq_lseek,
index 6c03928..772ba6f 100644 (file)
@@ -413,11 +413,10 @@ efi_init (void)
        efi_char16_t *c16;
        u64 efi_desc_size;
        char *cp, vendor[100] = "unknown";
-       extern char saved_command_line[];
        int i;
 
        /* it's too early to be able to use the standard kernel command line support... */
-       for (cp = saved_command_line; *cp; ) {
+       for (cp = boot_command_line; *cp; ) {
                if (memcmp(cp, "mem=", 4) == 0) {
                        mem_limit = memparse(cp + 4, &cp);
                } else if (memcmp(cp, "max_addr=", 9) == 0) {
index 86e144f..9860794 100644 (file)
@@ -621,7 +621,7 @@ EXPORT_PER_CPU_SYMBOL_GPL(pfm_syst_info);
 
 
 /* forward declaration */
-static struct file_operations pfm_file_ops;
+static const struct file_operations pfm_file_ops;
 
 /*
  * forward declarations
@@ -2126,7 +2126,7 @@ pfm_no_open(struct inode *irrelevant, struct file *dontcare)
 
 
 
-static struct file_operations pfm_file_ops = {
+static const struct file_operations pfm_file_ops = {
        .llseek   = no_llseek,
        .read     = pfm_read,
        .write    = pfm_write,
@@ -6596,7 +6596,7 @@ found:
        return 0;
 }
 
-static struct file_operations pfm_proc_fops = {
+static const struct file_operations pfm_proc_fops = {
        .open           = pfm_proc_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
index 20bad78..37c876f 100644 (file)
@@ -194,9 +194,8 @@ static void __init
 chk_nointroute_opt(void)
 {
        char *cp;
-       extern char saved_command_line[];
 
-       for (cp = saved_command_line; *cp; ) {
+       for (cp = boot_command_line; *cp; ) {
                if (memcmp(cp, "nointroute", 10) == 0) {
                        no_int_routing = 1;
                        printk ("no_int_routing on\n");
index e375a2f..af9f875 100644 (file)
@@ -352,7 +352,7 @@ retry:
        return size;
 }
 
-static struct file_operations salinfo_event_fops = {
+static const struct file_operations salinfo_event_fops = {
        .open  = salinfo_event_open,
        .read  = salinfo_event_read,
 };
@@ -568,7 +568,7 @@ salinfo_log_write(struct file *file, const char __user *buffer, size_t count, lo
        return count;
 }
 
-static struct file_operations salinfo_data_fops = {
+static const struct file_operations salinfo_data_fops = {
        .open    = salinfo_log_open,
        .release = salinfo_log_release,
        .read    = salinfo_log_read,
index 83c2629..5fa09d1 100644 (file)
@@ -262,7 +262,7 @@ reserve_memory (void)
         * appropriate after a kernel panic.
         */
        {
-               char *from = strstr(saved_command_line, "crashkernel=");
+               char *from = strstr(boot_command_line, "crashkernel=");
                unsigned long base, size;
                if (from) {
                        size = memparse(from + 12, &from);
@@ -463,7 +463,7 @@ setup_arch (char **cmdline_p)
        ia64_patch_vtop((u64) __start___vtop_patchlist, (u64) __end___vtop_patchlist);
 
        *cmdline_p = __va(ia64_boot_param->command_line);
-       strlcpy(saved_command_line, *cmdline_p, COMMAND_LINE_SIZE);
+       strlcpy(boot_command_line, *cmdline_p, COMMAND_LINE_SIZE);
 
        efi_init();
        io_port_init();
index d9d306c..601747b 100644 (file)
@@ -455,7 +455,7 @@ static int sn2_ptc_proc_open(struct inode *inode, struct file *file)
        return seq_open(file, &sn2_ptc_seq_ops);
 }
 
-static struct file_operations proc_sn2_ptc_operations = {
+static const struct file_operations proc_sn2_ptc_operations = {
        .open = sn2_ptc_proc_open,
        .read = seq_read,
        .llseek = seq_lseek,
index 3336799..6da9854 100644 (file)
@@ -865,7 +865,7 @@ error:
        return r;
 }
 
-static struct file_operations sn_hwperf_fops = {
+static const struct file_operations sn_hwperf_fops = {
        .ioctl = sn_hwperf_ioctl,
 };
 
index 936205f..d648143 100644 (file)
@@ -64,7 +64,7 @@ struct screen_info screen_info = {
 
 extern int root_mountflags;
 
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
 
 static struct resource data_resource = {
        .name   = "Kernel data",
@@ -95,8 +95,8 @@ static __inline__ void parse_mem_cmdline(char ** cmdline_p)
        int usermem = 0;
 
        /* Save unparsed command line copy for /proc/cmdline */
-       memcpy(saved_command_line, COMMAND_LINE, COMMAND_LINE_SIZE);
-       saved_command_line[COMMAND_LINE_SIZE-1] = '\0';
+       memcpy(boot_command_line, COMMAND_LINE, COMMAND_LINE_SIZE);
+       boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
 
        memory_start = (unsigned long)CONFIG_MEMORY_START+PAGE_OFFSET;
        memory_end = memory_start+(unsigned long)CONFIG_MEMORY_SIZE;
index 15c16b6..a812d03 100644 (file)
@@ -159,7 +159,7 @@ static int rtc_release(struct inode *inode, struct file *file)
  *     The various file operations we support.
  */
 
-static struct file_operations rtc_fops = {
+static const struct file_operations rtc_fops = {
        .ioctl =        rtc_ioctl,
        .open =         rtc_open,
        .release =      rtc_release,
index 9af3ee0..42b8fd0 100644 (file)
@@ -256,7 +256,7 @@ void __init setup_arch(char **cmdline_p)
        init_mm.brk = (unsigned long) &_end;
 
        *cmdline_p = m68k_command_line;
-       memcpy(saved_command_line, *cmdline_p, CL_SIZE);
+       memcpy(boot_command_line, *cmdline_p, CL_SIZE);
 
        /* Parse the command line for arch-specific options.
         * For the m68k, this is currently only "debug=xxx" to enable printing
index b0e4c08..272d47e 100644 (file)
@@ -147,7 +147,7 @@ static int rtc_release(struct inode *inode, struct file *file)
  *     The various file operations we support.
  */
 
-static struct file_operations rtc_fops = {
+static const struct file_operations rtc_fops = {
        .ioctl =        rtc_ioctl,
        .open =         rtc_open,
        .release =      rtc_release,
index 9cf2e4d..d5c25d2 100644 (file)
@@ -44,7 +44,7 @@ unsigned long memory_end;
 EXPORT_SYMBOL(memory_start);
 EXPORT_SYMBOL(memory_end);
 
-char command_line[COMMAND_LINE_SIZE];
+char __initdata command_line[COMMAND_LINE_SIZE];
 
 /* setup some dummy routines */
 static void dummy_waitbut(void)
@@ -231,8 +231,8 @@ void setup_arch(char **cmdline_p)
 
        /* Keep a copy of command line */
        *cmdline_p = &command_line[0];
-       memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE);
-       saved_command_line[COMMAND_LINE_SIZE-1] = 0;
+       memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
+       boot_command_line[COMMAND_LINE_SIZE-1] = 0;
 
 #ifdef DEBUG
        if (strlen(*cmdline_p))
index f29e93c..d92c48e 100644 (file)
@@ -478,7 +478,7 @@ static ssize_t file_write(struct file *file, const char __user * buffer,
        return rtlx_write(minor, (void *)buffer, count, 1);
 }
 
-static struct file_operations rtlx_fops = {
+static const struct file_operations rtlx_fops = {
        .owner =   THIS_MODULE,
        .open =    file_open,
        .release = file_release,
index d2e01e7..394540f 100644 (file)
@@ -452,7 +452,7 @@ static void __init arch_mem_init(char **cmdline_p)
        print_memory_map();
 
        strlcpy(command_line, arcs_cmdline, sizeof(command_line));
-       strlcpy(saved_command_line, command_line, COMMAND_LINE_SIZE);
+       strlcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
 
        *cmdline_p = command_line;
 
index 4e832da..9aca871 100644 (file)
@@ -1208,7 +1208,7 @@ static ssize_t vpe_write(struct file *file, const char __user * buffer,
        return ret;
 }
 
-static struct file_operations vpe_fops = {
+static const struct file_operations vpe_fops = {
        .owner = THIS_MODULE,
        .open = vpe_open,
        .release = vpe_release,
index d1a906e..212547c 100644 (file)
@@ -374,7 +374,7 @@ static long sbprof_tb_ioctl(struct file *filp,
        return error;
 }
 
-static struct file_operations sbprof_tb_fops = {
+static const struct file_operations sbprof_tb_fops = {
        .owner          = THIS_MODULE,
        .open           = sbprof_tb_open,
        .release        = sbprof_tb_release,
index ac8ee20..a46bc62 100644 (file)
@@ -479,7 +479,7 @@ static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
        return error;
 }
 
-static struct file_operations perf_fops = {
+static const struct file_operations perf_fops = {
        .llseek = no_llseek,
        .read = perf_read,
        .write = perf_write,
index 3c7a3fa..74b3686 100644 (file)
@@ -45,7 +45,7 @@
 #include <asm/io.h>
 #include <asm/setup.h>
 
-char   command_line[COMMAND_LINE_SIZE] __read_mostly;
+char   __initdata command_line[COMMAND_LINE_SIZE] __read_mostly;
 
 /* Intended for ccio/sba/cpu statistics under /proc/bus/{runway|gsc} */
 struct proc_dir_entry * proc_runway_root __read_mostly = NULL;
@@ -71,9 +71,9 @@ void __init setup_cmdline(char **cmdline_p)
        /* boot_args[0] is free-mem start, boot_args[1] is ptr to command line */
        if (boot_args[0] < 64) {
                /* called from hpux boot loader */
-               saved_command_line[0] = '\0';
+               boot_command_line[0] = '\0';
        } else {
-               strcpy(saved_command_line, (char *)__va(boot_args[1]));
+               strcpy(boot_command_line, (char *)__va(boot_args[1]));
 
 #ifdef CONFIG_BLK_DEV_INITRD
                if (boot_args[2] != 0) /* did palo pass us a ramdisk? */
@@ -84,7 +84,7 @@ void __init setup_cmdline(char **cmdline_p)
 #endif
        }
 
-       strcpy(command_line, saved_command_line);
+       strcpy(command_line, boot_command_line);
        *cmdline_p = command_line;
 }
 
index 0c118e5..12117db 100644 (file)
@@ -77,12 +77,11 @@ static void __init mem_limit_func(void)
 {
        char *cp, *end;
        unsigned long limit;
-       extern char saved_command_line[];
 
        /* We need this before __setup() functions are called */
 
        limit = MAX_MEM;
-       for (cp = saved_command_line; *cp; ) {
+       for (cp = boot_command_line; *cp; ) {
                if (memcmp(cp, "mem=", 4) == 0) {
                        cp += 4;
                        limit = memparse(cp, &end);
index ec644b3..0345a2c 100644 (file)
@@ -163,6 +163,7 @@ CONFIG_PS3_HTAB_SIZE=20
 # CONFIG_PS3_DYNAMIC_DMA is not set
 CONFIG_PS3_USE_LPAR_ADDR=y
 CONFIG_PS3_VUART=y
+CONFIG_PS3_PS3AV=y
 
 #
 # Kernel options
@@ -611,14 +612,40 @@ CONFIG_GEN_RTC=y
 # Graphics support
 #
 # CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB is not set
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_OF is not set
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_S1D13XXX is not set
 # CONFIG_FB_IBM_GXT4500 is not set
+CONFIG_FB_PS3=y
+CONFIG_FB_PS3_DEFAULT_SIZE_M=18
+# CONFIG_FB_VIRTUAL is not set
 
 #
 # Console display driver support
 #
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
index 5e6ddfa..89f46f3 100644 (file)
@@ -498,7 +498,7 @@ static int __init check_legacy_serial_console(void)
        DBG(" -> check_legacy_serial_console()\n");
 
        /* The user has requested a console so this is already set up. */
-       if (strstr(saved_command_line, "console=")) {
+       if (strstr(boot_command_line, "console=")) {
                DBG(" console was specified !\n");
                return -EBUSY;
        }
index 0de5a08..89486b6 100644 (file)
@@ -571,7 +571,7 @@ static int lparcfg_open(struct inode *inode, struct file *file)
        return single_open(file, lparcfg_data, NULL);
 }
 
-struct file_operations lparcfg_fops = {
+const struct file_operations lparcfg_fops = {
        .owner          = THIS_MODULE,
        .read           = seq_read,
        .write          = lparcfg_write,
index 869cebb..f9676f5 100644 (file)
@@ -179,7 +179,7 @@ static int dev_nvram_ioctl(struct inode *inode, struct file *file,
        }
 }
 
-struct file_operations nvram_fops = {
+const struct file_operations nvram_fops = {
        .owner =        THIS_MODULE,
        .llseek =       dev_nvram_llseek,
        .read =         dev_nvram_read,
index 3d437c3..f78dfce 100644 (file)
@@ -33,7 +33,7 @@ static ssize_t page_map_read( struct file *file, char __user *buf, size_t nbytes
                              loff_t *ppos);
 static int     page_map_mmap( struct file *file, struct vm_area_struct *vma );
 
-static struct file_operations page_map_fops = {
+static const struct file_operations page_map_fops = {
        .llseek = page_map_seek,
        .read   = page_map_read,
        .mmap   = page_map_mmap
index 3be52d6..3e86e6e 100644 (file)
@@ -991,7 +991,7 @@ void __init early_init_devtree(void *params)
        of_scan_flat_dt(early_init_dt_scan_memory, NULL);
 
        /* Save command line for /proc/cmdline and then parse parameters */
-       strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE);
+       strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE);
        parse_early_param();
 
        /* Reserve LMB regions used by kernel, initrd, dt, etc... */
index 2fe82ab..6cbf2ae 100644 (file)
@@ -160,7 +160,7 @@ static int sensors_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_sensors_show, NULL);
 }
 
-struct file_operations ppc_rtas_sensors_operations = {
+const struct file_operations ppc_rtas_sensors_operations = {
        .open           = sensors_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -172,7 +172,7 @@ static int poweron_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_poweron_show, NULL);
 }
 
-struct file_operations ppc_rtas_poweron_operations = {
+const struct file_operations ppc_rtas_poweron_operations = {
        .open           = poweron_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -185,7 +185,7 @@ static int progress_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_progress_show, NULL);
 }
 
-struct file_operations ppc_rtas_progress_operations = {
+const struct file_operations ppc_rtas_progress_operations = {
        .open           = progress_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -198,7 +198,7 @@ static int clock_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_clock_show, NULL);
 }
 
-struct file_operations ppc_rtas_clock_operations = {
+const struct file_operations ppc_rtas_clock_operations = {
        .open           = clock_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -211,7 +211,7 @@ static int tone_freq_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_tone_freq_show, NULL);
 }
 
-struct file_operations ppc_rtas_tone_freq_operations = {
+const struct file_operations ppc_rtas_tone_freq_operations = {
        .open           = tone_freq_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -224,7 +224,7 @@ static int tone_volume_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_tone_volume_show, NULL);
 }
 
-struct file_operations ppc_rtas_tone_volume_operations = {
+const struct file_operations ppc_rtas_tone_volume_operations = {
        .open           = tone_volume_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -237,7 +237,7 @@ static int rmo_buf_open(struct inode *inode,