]> pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 28 Jul 2008 15:35:40 +0000 (08:35 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 28 Jul 2008 15:35:40 +0000 (08:35 -0700)
* git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb: (98 commits)
  V4L/DVB (8549): mxl5007: Fix an error at include file
  V4L/DVB (8548): pwc: Fix compilation
  V4L/DVB (8546): add tuner-3036 and dpc7146 drivers to feature-removal-schedule.txt
  V4L/DVB (8546): saa7146: fix read from uninitialized memory
  V4L/DVB (8544): gspca: probe/open race.
  V4L/DVB (8543): em28xx: Rename #define for Compro VideoMate ForYou/Stereo
  V4L/DVB (8542): em28xx: AMD ATI TV Wonder HD 600 entry at cards struct is duplicated
  V4L/DVB (8541): em28xx: HVR-950 entry is duplicated.
  V4L/DVB (8540): em28xx-cards: Add Compro VideoMate ForYou/Stereo model
  V4L/DVB (8539): em28xx-cards: New supported IDs for analog models
  V4L/DVB (8538): em28xx-cards: Add GrabBeeX+ USB2800 model
  V4L/DVB (8534): remove select's of FW_LOADER
  V4L/DVB (8522): videodev2: Fix merge conflict
  V4L/DVB (8532): mxl5007t: remove excessive locks
  V4L/DVB (8531): mxl5007t: move i2c gate handling outside of mutex protected code blocks
  V4L/DVB (8530): au0828: add support for new revision of HVR950Q
  V4L/DVB (8529): mxl5007t: enable _init and _sleep power management functionality
  V4L/DVB (8528): add support for MaxLinear MxL5007T silicon tuner
  V4L/DVB (8526): saa7146: fix VIDIOC_ENUM_FMT
  V4L/DVB (8525): fix a few assorted spelling mistakes.
  ...

529 files changed:
Documentation/SubmittingPatches
Documentation/i2c/upgrading-clients [new file with mode: 0644]
Makefile
arch/sparc/Kconfig
arch/sparc/include/asm/Kbuild [new file with mode: 0644]
arch/sparc/include/asm/agp.h [moved from include/asm-sparc/agp.h with 100% similarity]
arch/sparc/include/asm/apb.h [moved from include/asm-sparc/apb.h with 100% similarity]
arch/sparc/include/asm/apc.h [moved from include/asm-sparc/apc.h with 100% similarity]
arch/sparc/include/asm/asi.h [moved from include/asm-sparc/asi.h with 100% similarity]
arch/sparc/include/asm/asmmacro.h [moved from include/asm-sparc/asmmacro.h with 100% similarity]
arch/sparc/include/asm/atomic.h [moved from include/asm-sparc/atomic.h with 65% similarity]
arch/sparc/include/asm/atomic_32.h [moved from include/asm-sparc/atomic_32.h with 100% similarity]
arch/sparc/include/asm/atomic_64.h [moved from include/asm-sparc/atomic_64.h with 100% similarity]
arch/sparc/include/asm/auxio.h [moved from include/asm-sparc/auxio.h with 65% similarity]
arch/sparc/include/asm/auxio_32.h [moved from include/asm-sparc/auxio_32.h with 97% similarity]
arch/sparc/include/asm/auxio_64.h [moved from include/asm-sparc/auxio_64.h with 100% similarity]
arch/sparc/include/asm/auxvec.h [moved from include/asm-sparc/auxvec.h with 100% similarity]
arch/sparc/include/asm/backoff.h [moved from include/asm-sparc/backoff.h with 100% similarity]
arch/sparc/include/asm/bbc.h [moved from include/asm-sparc/bbc.h with 100% similarity]
arch/sparc/include/asm/bitext.h [moved from include/asm-sparc/bitext.h with 100% similarity]
arch/sparc/include/asm/bitops.h [moved from include/asm-sparc/bitops.h with 65% similarity]
arch/sparc/include/asm/bitops_32.h [moved from include/asm-sparc/bitops_32.h with 100% similarity]
arch/sparc/include/asm/bitops_64.h [moved from include/asm-sparc/bitops_64.h with 100% similarity]
arch/sparc/include/asm/bpp.h [moved from include/asm-sparc/bpp.h with 100% similarity]
arch/sparc/include/asm/btfixup.h [moved from include/asm-sparc/btfixup.h with 99% similarity]
arch/sparc/include/asm/bug.h [moved from include/asm-sparc/bug.h with 100% similarity]
arch/sparc/include/asm/bugs.h [moved from include/asm-sparc/bugs.h with 87% similarity]
arch/sparc/include/asm/byteorder.h [moved from include/asm-sparc/byteorder.h with 100% similarity]
arch/sparc/include/asm/cache.h [moved from include/asm-sparc/cache.h with 100% similarity]
arch/sparc/include/asm/cacheflush.h [moved from include/asm-sparc/cacheflush.h with 64% similarity]
arch/sparc/include/asm/cacheflush_32.h [moved from include/asm-sparc/cacheflush_32.h with 100% similarity]
arch/sparc/include/asm/cacheflush_64.h [moved from include/asm-sparc/cacheflush_64.h with 100% similarity]
arch/sparc/include/asm/chafsr.h [moved from include/asm-sparc/chafsr.h with 100% similarity]
arch/sparc/include/asm/checksum.h [moved from include/asm-sparc/checksum.h with 65% similarity]
arch/sparc/include/asm/checksum_32.h [moved from include/asm-sparc/checksum_32.h with 100% similarity]
arch/sparc/include/asm/checksum_64.h [moved from include/asm-sparc/checksum_64.h with 100% similarity]
arch/sparc/include/asm/chmctrl.h [moved from include/asm-sparc/chmctrl.h with 100% similarity]
arch/sparc/include/asm/clock.h [moved from include/asm-sparc/clock.h with 100% similarity]
arch/sparc/include/asm/cmt.h [moved from include/asm-sparc/cmt.h with 100% similarity]
arch/sparc/include/asm/compat.h [moved from include/asm-sparc/compat.h with 100% similarity]
arch/sparc/include/asm/compat_signal.h [moved from include/asm-sparc/compat_signal.h with 100% similarity]
arch/sparc/include/asm/contregs.h [moved from include/asm-sparc/contregs.h with 100% similarity]
arch/sparc/include/asm/cpudata.h [moved from include/asm-sparc/cpudata.h with 65% similarity]
arch/sparc/include/asm/cpudata_32.h [moved from include/asm-sparc/cpudata_32.h with 89% similarity]
arch/sparc/include/asm/cpudata_64.h [moved from include/asm-sparc/cpudata_64.h with 100% similarity]
arch/sparc/include/asm/cputime.h [moved from include/asm-sparc/cputime.h with 100% similarity]
arch/sparc/include/asm/current.h [moved from include/asm-sparc/current.h with 96% similarity]
arch/sparc/include/asm/cypress.h [moved from include/asm-sparc/cypress.h with 100% similarity]
arch/sparc/include/asm/dcr.h [moved from include/asm-sparc/dcr.h with 100% similarity]
arch/sparc/include/asm/dcu.h [moved from include/asm-sparc/dcu.h with 100% similarity]
arch/sparc/include/asm/delay.h [moved from include/asm-sparc/delay.h with 65% similarity]
arch/sparc/include/asm/delay_32.h [moved from include/asm-sparc/delay_32.h with 100% similarity]
arch/sparc/include/asm/delay_64.h [moved from include/asm-sparc/delay_64.h with 100% similarity]
arch/sparc/include/asm/device.h [moved from include/asm-sparc/device.h with 100% similarity]
arch/sparc/include/asm/display7seg.h [moved from include/asm-sparc/display7seg.h with 100% similarity]
arch/sparc/include/asm/div64.h [moved from include/asm-sparc/div64.h with 100% similarity]
arch/sparc/include/asm/dma-mapping.h [moved from include/asm-sparc/dma-mapping.h with 64% similarity]
arch/sparc/include/asm/dma-mapping_32.h [moved from include/asm-sparc/dma-mapping_32.h with 100% similarity]
arch/sparc/include/asm/dma-mapping_64.h [moved from include/asm-sparc/dma-mapping_64.h with 100% similarity]
arch/sparc/include/asm/dma.h [moved from include/asm-sparc/dma.h with 66% similarity]
arch/sparc/include/asm/dma_32.h [moved from include/asm-sparc/dma_32.h with 99% similarity]
arch/sparc/include/asm/dma_64.h [moved from include/asm-sparc/dma_64.h with 99% similarity]
arch/sparc/include/asm/ebus.h [moved from include/asm-sparc/ebus.h with 66% similarity]
arch/sparc/include/asm/ebus_32.h [moved from include/asm-sparc/ebus_32.h with 100% similarity]
arch/sparc/include/asm/ebus_64.h [moved from include/asm-sparc/ebus_64.h with 100% similarity]
arch/sparc/include/asm/ecc.h [moved from include/asm-sparc/ecc.h with 100% similarity]
arch/sparc/include/asm/eeprom.h [moved from include/asm-sparc/eeprom.h with 100% similarity]
arch/sparc/include/asm/elf.h [moved from include/asm-sparc/elf.h with 66% similarity]
arch/sparc/include/asm/elf_32.h [moved from include/asm-sparc/elf_32.h with 100% similarity]
arch/sparc/include/asm/elf_64.h [moved from include/asm-sparc/elf_64.h with 100% similarity]
arch/sparc/include/asm/emergency-restart.h [moved from include/asm-sparc/emergency-restart.h with 100% similarity]
arch/sparc/include/asm/envctrl.h [moved from include/asm-sparc/envctrl.h with 100% similarity]
arch/sparc/include/asm/errno.h [moved from include/asm-sparc/errno.h with 100% similarity]
arch/sparc/include/asm/estate.h [moved from include/asm-sparc/estate.h with 100% similarity]
arch/sparc/include/asm/fb.h [moved from include/asm-sparc/fb.h with 100% similarity]
arch/sparc/include/asm/fbio.h [moved from include/asm-sparc/fbio.h with 100% similarity]
arch/sparc/include/asm/fcntl.h [moved from include/asm-sparc/fcntl.h with 100% similarity]
arch/sparc/include/asm/fhc.h [moved from include/asm-sparc/fhc.h with 100% similarity]
arch/sparc/include/asm/fixmap.h [moved from include/asm-sparc/fixmap.h with 100% similarity]
arch/sparc/include/asm/floppy.h [moved from include/asm-sparc/floppy.h with 65% similarity]
arch/sparc/include/asm/floppy_32.h [moved from include/asm-sparc/floppy_32.h with 99% similarity]
arch/sparc/include/asm/floppy_64.h [moved from include/asm-sparc/floppy_64.h with 100% similarity]
arch/sparc/include/asm/fpumacro.h [moved from include/asm-sparc/fpumacro.h with 100% similarity]
arch/sparc/include/asm/ftrace.h [moved from include/asm-sparc64/ftrace.h with 100% similarity]
arch/sparc/include/asm/futex.h [moved from include/asm-sparc/futex.h with 65% similarity]
arch/sparc/include/asm/futex_32.h [moved from include/asm-sparc/futex_32.h with 100% similarity]
arch/sparc/include/asm/futex_64.h [moved from include/asm-sparc/futex_64.h with 100% similarity]
arch/sparc/include/asm/hardirq.h [moved from include/asm-sparc/hardirq.h with 65% similarity]
arch/sparc/include/asm/hardirq_32.h [moved from include/asm-sparc/hardirq_32.h with 100% similarity]
arch/sparc/include/asm/hardirq_64.h [moved from include/asm-sparc/hardirq_64.h with 100% similarity]
arch/sparc/include/asm/head.h [moved from include/asm-sparc/head.h with 66% similarity]
arch/sparc/include/asm/head_32.h [moved from include/asm-sparc/head_32.h with 100% similarity]
arch/sparc/include/asm/head_64.h [moved from include/asm-sparc/head_64.h with 100% similarity]
arch/sparc/include/asm/highmem.h [moved from include/asm-sparc/highmem.h with 100% similarity]
arch/sparc/include/asm/hugetlb.h [moved from include/asm-sparc/hugetlb.h with 100% similarity]
arch/sparc/include/asm/hvtramp.h [moved from include/asm-sparc/hvtramp.h with 100% similarity]
arch/sparc/include/asm/hw_irq.h [moved from include/asm-sparc/hw_irq.h with 100% similarity]
arch/sparc/include/asm/hypervisor.h [moved from include/asm-sparc/hypervisor.h with 100% similarity]
arch/sparc/include/asm/ide.h [moved from include/asm-sparc/ide.h with 100% similarity]
arch/sparc/include/asm/idprom.h [moved from include/asm-sparc/idprom.h with 100% similarity]
arch/sparc/include/asm/intr_queue.h [moved from include/asm-sparc/intr_queue.h with 100% similarity]
arch/sparc/include/asm/io-unit.h [moved from include/asm-sparc/io-unit.h with 100% similarity]
arch/sparc/include/asm/io.h [moved from include/asm-sparc/io.h with 67% similarity]
arch/sparc/include/asm/io_32.h [moved from include/asm-sparc/io_32.h with 100% similarity]
arch/sparc/include/asm/io_64.h [moved from include/asm-sparc/io_64.h with 100% similarity]
arch/sparc/include/asm/ioctl.h [moved from include/asm-sparc/ioctl.h with 100% similarity]
arch/sparc/include/asm/ioctls.h [moved from include/asm-sparc/ioctls.h with 100% similarity]
arch/sparc/include/asm/iommu.h [moved from include/asm-sparc/iommu.h with 65% similarity]
arch/sparc/include/asm/iommu_32.h [moved from include/asm-sparc/iommu_32.h with 100% similarity]
arch/sparc/include/asm/iommu_64.h [moved from include/asm-sparc/iommu_64.h with 100% similarity]
arch/sparc/include/asm/ipcbuf.h [moved from include/asm-sparc/ipcbuf.h with 65% similarity]
arch/sparc/include/asm/ipcbuf_32.h [moved from include/asm-sparc/ipcbuf_32.h with 100% similarity]
arch/sparc/include/asm/ipcbuf_64.h [moved from include/asm-sparc/ipcbuf_64.h with 100% similarity]
arch/sparc/include/asm/irq.h [moved from include/asm-sparc/irq.h with 66% similarity]
arch/sparc/include/asm/irq_32.h [moved from include/asm-sparc/irq_32.h with 100% similarity]
arch/sparc/include/asm/irq_64.h [moved from include/asm-sparc/irq_64.h with 100% similarity]
arch/sparc/include/asm/irq_regs.h [moved from include/asm-sparc/irq_regs.h with 100% similarity]
arch/sparc/include/asm/irqflags.h [moved from include/asm-sparc/irqflags.h with 65% similarity]
arch/sparc/include/asm/irqflags_32.h [moved from include/asm-sparc/irqflags_32.h with 96% similarity]
arch/sparc/include/asm/irqflags_64.h [moved from include/asm-sparc/irqflags_64.h with 97% similarity]
arch/sparc/include/asm/jsflash.h [moved from include/asm-sparc/jsflash.h with 100% similarity]
arch/sparc/include/asm/kdebug.h [moved from include/asm-sparc/kdebug.h with 65% similarity]
arch/sparc/include/asm/kdebug_32.h [moved from include/asm-sparc/kdebug_32.h with 100% similarity]
arch/sparc/include/asm/kdebug_64.h [moved from include/asm-sparc/kdebug_64.h with 100% similarity]
arch/sparc/include/asm/kgdb.h [moved from include/asm-sparc/kgdb.h with 100% similarity]
arch/sparc/include/asm/kmap_types.h [moved from include/asm-sparc/kmap_types.h with 100% similarity]
arch/sparc/include/asm/kprobes.h [moved from include/asm-sparc/kprobes.h with 100% similarity]
arch/sparc/include/asm/ldc.h [moved from include/asm-sparc/ldc.h with 100% similarity]
arch/sparc/include/asm/linkage.h [moved from include/asm-sparc/linkage.h with 100% similarity]
arch/sparc/include/asm/lmb.h [moved from include/asm-sparc/lmb.h with 100% similarity]
arch/sparc/include/asm/local.h [moved from include/asm-sparc/local.h with 100% similarity]
arch/sparc/include/asm/lsu.h [moved from include/asm-sparc/lsu.h with 100% similarity]
arch/sparc/include/asm/machines.h [moved from include/asm-sparc/machines.h with 100% similarity]
arch/sparc/include/asm/mbus.h [moved from include/asm-sparc/mbus.h with 100% similarity]
arch/sparc/include/asm/mc146818rtc.h [moved from include/asm-sparc/mc146818rtc.h with 64% similarity]
arch/sparc/include/asm/mc146818rtc_32.h [moved from include/asm-sparc/mc146818rtc_32.h with 100% similarity]
arch/sparc/include/asm/mc146818rtc_64.h [moved from include/asm-sparc/mc146818rtc_64.h with 100% similarity]
arch/sparc/include/asm/mdesc.h [moved from include/asm-sparc/mdesc.h with 100% similarity]
arch/sparc/include/asm/memreg.h [moved from include/asm-sparc/memreg.h with 100% similarity]
arch/sparc/include/asm/mman.h [moved from include/asm-sparc/mman.h with 100% similarity]
arch/sparc/include/asm/mmu.h [moved from include/asm-sparc/mmu.h with 66% similarity]
arch/sparc/include/asm/mmu_32.h [moved from include/asm-sparc/mmu_32.h with 100% similarity]
arch/sparc/include/asm/mmu_64.h [moved from include/asm-sparc/mmu_64.h with 100% similarity]
arch/sparc/include/asm/mmu_context.h [moved from include/asm-sparc/mmu_context.h with 64% similarity]
arch/sparc/include/asm/mmu_context_32.h [moved from include/asm-sparc/mmu_context_32.h with 100% similarity]
arch/sparc/include/asm/mmu_context_64.h [moved from include/asm-sparc/mmu_context_64.h with 100% similarity]
arch/sparc/include/asm/mmzone.h [moved from include/asm-sparc/mmzone.h with 100% similarity]
arch/sparc/include/asm/module.h [moved from include/asm-sparc/module.h with 65% similarity]
arch/sparc/include/asm/module_32.h [moved from include/asm-sparc/module_32.h with 100% similarity]
arch/sparc/include/asm/module_64.h [moved from include/asm-sparc/module_64.h with 100% similarity]
arch/sparc/include/asm/mostek.h [moved from include/asm-sparc/mostek.h with 65% similarity]
arch/sparc/include/asm/mostek_32.h [moved from include/asm-sparc/mostek_32.h with 100% similarity]
arch/sparc/include/asm/mostek_64.h [moved from include/asm-sparc/mostek_64.h with 100% similarity]
arch/sparc/include/asm/mpmbox.h [moved from include/asm-sparc/mpmbox.h with 100% similarity]
arch/sparc/include/asm/msgbuf.h [moved from include/asm-sparc/msgbuf.h with 100% similarity]
arch/sparc/include/asm/msi.h [moved from include/asm-sparc/msi.h with 100% similarity]
arch/sparc/include/asm/mutex.h [moved from include/asm-sparc/mutex.h with 100% similarity]
arch/sparc/include/asm/mxcc.h [moved from include/asm-sparc/mxcc.h with 100% similarity]
arch/sparc/include/asm/ns87303.h [moved from include/asm-sparc/ns87303.h with 100% similarity]
arch/sparc/include/asm/obio.h [moved from include/asm-sparc/obio.h with 100% similarity]
arch/sparc/include/asm/of_device.h [moved from include/asm-sparc/of_device.h with 100% similarity]
arch/sparc/include/asm/of_platform.h [moved from include/asm-sparc/of_platform.h with 64% similarity]
arch/sparc/include/asm/of_platform_32.h [moved from include/asm-sparc/of_platform_32.h with 91% similarity]
arch/sparc/include/asm/of_platform_64.h [moved from include/asm-sparc/of_platform_64.h with 91% similarity]
arch/sparc/include/asm/openprom.h [moved from include/asm-sparc/openprom.h with 65% similarity]
arch/sparc/include/asm/openprom_32.h [moved from include/asm-sparc/openprom_32.h with 100% similarity]
arch/sparc/include/asm/openprom_64.h [moved from include/asm-sparc/openprom_64.h with 100% similarity]
arch/sparc/include/asm/openpromio.h [moved from include/asm-sparc/openpromio.h with 100% similarity]
arch/sparc/include/asm/oplib.h [moved from include/asm-sparc/oplib.h with 65% similarity]
arch/sparc/include/asm/oplib_32.h [moved from include/asm-sparc/oplib_32.h with 100% similarity]
arch/sparc/include/asm/oplib_64.h [moved from include/asm-sparc/oplib_64.h with 100% similarity]
arch/sparc/include/asm/page.h [moved from include/asm-sparc/page.h with 66% similarity]
arch/sparc/include/asm/page_32.h [moved from include/asm-sparc/page_32.h with 100% similarity]
arch/sparc/include/asm/page_64.h [moved from include/asm-sparc/page_64.h with 100% similarity]
arch/sparc/include/asm/param.h [moved from include/asm-sparc/param.h with 100% similarity]
arch/sparc/include/asm/parport.h [moved from include/asm-sparc/parport.h with 100% similarity]
arch/sparc/include/asm/pbm.h [moved from include/asm-sparc/pbm.h with 100% similarity]
arch/sparc/include/asm/pci.h [moved from include/asm-sparc/pci.h with 66% similarity]
arch/sparc/include/asm/pci_32.h [moved from include/asm-sparc/pci_32.h with 100% similarity]
arch/sparc/include/asm/pci_64.h [moved from include/asm-sparc/pci_64.h with 100% similarity]
arch/sparc/include/asm/pcic.h [moved from include/asm-sparc/pcic.h with 100% similarity]
arch/sparc/include/asm/percpu.h [moved from include/asm-sparc/percpu.h with 65% similarity]
arch/sparc/include/asm/percpu_32.h [moved from include/asm-sparc/percpu_32.h with 100% similarity]
arch/sparc/include/asm/percpu_64.h [moved from include/asm-sparc/percpu_64.h with 100% similarity]
arch/sparc/include/asm/perfctr.h [moved from include/asm-sparc/perfctr.h with 100% similarity]
arch/sparc/include/asm/pgalloc.h [moved from include/asm-sparc/pgalloc.h with 65% similarity]
arch/sparc/include/asm/pgalloc_32.h [moved from include/asm-sparc/pgalloc_32.h with 100% similarity]
arch/sparc/include/asm/pgalloc_64.h [moved from include/asm-sparc/pgalloc_64.h with 100% similarity]
arch/sparc/include/asm/pgtable.h [moved from include/asm-sparc/pgtable.h with 65% similarity]
arch/sparc/include/asm/pgtable_32.h [moved from include/asm-sparc/pgtable_32.h with 99% similarity]
arch/sparc/include/asm/pgtable_64.h [moved from include/asm-sparc/pgtable_64.h with 100% similarity]
arch/sparc/include/asm/pgtsrmmu.h [moved from include/asm-sparc/pgtsrmmu.h with 100% similarity]
arch/sparc/include/asm/pgtsun4.h [moved from include/asm-sparc/pgtsun4.h with 100% similarity]
arch/sparc/include/asm/pgtsun4c.h [moved from include/asm-sparc/pgtsun4c.h with 100% similarity]
arch/sparc/include/asm/pil.h [moved from include/asm-sparc/pil.h with 100% similarity]
arch/sparc/include/asm/poll.h [moved from include/asm-sparc/poll.h with 100% similarity]
arch/sparc/include/asm/posix_types.h [moved from include/asm-sparc/posix_types.h with 64% similarity]
arch/sparc/include/asm/posix_types_32.h [moved from include/asm-sparc/posix_types_32.h with 100% similarity]
arch/sparc/include/asm/posix_types_64.h [moved from include/asm-sparc/posix_types_64.h with 100% similarity]
arch/sparc/include/asm/processor.h [moved from include/asm-sparc/processor.h with 64% similarity]
arch/sparc/include/asm/processor_32.h [moved from include/asm-sparc/processor_32.h with 97% similarity]
arch/sparc/include/asm/processor_64.h [moved from include/asm-sparc/processor_64.h with 99% similarity]
arch/sparc/include/asm/prom.h [moved from include/asm-sparc/prom.h with 100% similarity]
arch/sparc/include/asm/psr.h [moved from include/asm-sparc/psr.h with 100% similarity]
arch/sparc/include/asm/psrcompat.h [moved from include/asm-sparc/psrcompat.h with 100% similarity]
arch/sparc/include/asm/pstate.h [moved from include/asm-sparc/pstate.h with 100% similarity]
arch/sparc/include/asm/ptrace.h [moved from include/asm-sparc/ptrace.h with 65% similarity]
arch/sparc/include/asm/ptrace_32.h [moved from include/asm-sparc/ptrace_32.h with 98% similarity]
arch/sparc/include/asm/ptrace_64.h [moved from include/asm-sparc/ptrace_64.h with 99% similarity]
arch/sparc/include/asm/reboot.h [moved from include/asm-sparc/reboot.h with 100% similarity]
arch/sparc/include/asm/reg.h [moved from include/asm-sparc/reg.h with 66% similarity]
arch/sparc/include/asm/reg_32.h [moved from include/asm-sparc/reg_32.h with 98% similarity]
arch/sparc/include/asm/reg_64.h [moved from include/asm-sparc/reg_64.h with 97% similarity]
arch/sparc/include/asm/resource.h [moved from include/asm-sparc/resource.h with 100% similarity]
arch/sparc/include/asm/ross.h [moved from include/asm-sparc/ross.h with 100% similarity]
arch/sparc/include/asm/rtc.h [moved from include/asm-sparc/rtc.h with 100% similarity]
arch/sparc/include/asm/rwsem-const.h [moved from include/asm-sparc/rwsem-const.h with 100% similarity]
arch/sparc/include/asm/rwsem.h [moved from include/asm-sparc/rwsem.h with 100% similarity]
arch/sparc/include/asm/sbi.h [moved from include/asm-sparc/sbi.h with 100% similarity]
arch/sparc/include/asm/sbus.h [moved from include/asm-sparc/sbus.h with 66% similarity]
arch/sparc/include/asm/sbus_32.h [moved from include/asm-sparc/sbus_32.h with 100% similarity]
arch/sparc/include/asm/sbus_64.h [moved from include/asm-sparc/sbus_64.h with 100% similarity]
arch/sparc/include/asm/scatterlist.h [moved from include/asm-sparc/scatterlist.h with 64% similarity]
arch/sparc/include/asm/scatterlist_32.h [moved from include/asm-sparc/scatterlist_32.h with 100% similarity]
arch/sparc/include/asm/scatterlist_64.h [moved from include/asm-sparc/scatterlist_64.h with 100% similarity]
arch/sparc/include/asm/scratchpad.h [moved from include/asm-sparc/scratchpad.h with 100% similarity]
arch/sparc/include/asm/seccomp.h [moved from include/asm-sparc/seccomp.h with 100% similarity]
arch/sparc/include/asm/sections.h [moved from include/asm-sparc/sections.h with 65% similarity]
arch/sparc/include/asm/sections_32.h [moved from include/asm-sparc/sections_32.h with 100% similarity]
arch/sparc/include/asm/sections_64.h [moved from include/asm-sparc/sections_64.h with 100% similarity]
arch/sparc/include/asm/sembuf.h [moved from include/asm-sparc/sembuf.h with 100% similarity]
arch/sparc/include/asm/setup.h [moved from include/asm-sparc/setup.h with 100% similarity]
arch/sparc/include/asm/sfafsr.h [moved from include/asm-sparc/sfafsr.h with 100% similarity]
arch/sparc/include/asm/sfp-machine.h [moved from include/asm-sparc/sfp-machine.h with 64% similarity]
arch/sparc/include/asm/sfp-machine_32.h [moved from include/asm-sparc/sfp-machine_32.h with 100% similarity]
arch/sparc/include/asm/sfp-machine_64.h [moved from include/asm-sparc/sfp-machine_64.h with 100% similarity]
arch/sparc/include/asm/shmbuf.h [moved from include/asm-sparc/shmbuf.h with 100% similarity]
arch/sparc/include/asm/shmparam.h [moved from include/asm-sparc/shmparam.h with 65% similarity]
arch/sparc/include/asm/shmparam_32.h [moved from include/asm-sparc/shmparam_32.h with 100% similarity]
arch/sparc/include/asm/shmparam_64.h [moved from include/asm-sparc/shmparam_64.h with 100% similarity]
arch/sparc/include/asm/sigcontext.h [moved from include/asm-sparc/sigcontext.h with 64% similarity]
arch/sparc/include/asm/sigcontext_32.h [moved from include/asm-sparc/sigcontext_32.h with 100% similarity]
arch/sparc/include/asm/sigcontext_64.h [moved from include/asm-sparc/sigcontext_64.h with 100% similarity]
arch/sparc/include/asm/siginfo.h [moved from include/asm-sparc/siginfo.h with 65% similarity]
arch/sparc/include/asm/siginfo_32.h [moved from include/asm-sparc/siginfo_32.h with 100% similarity]
arch/sparc/include/asm/siginfo_64.h [moved from include/asm-sparc/siginfo_64.h with 100% similarity]
arch/sparc/include/asm/signal.h [moved from include/asm-sparc/signal.h with 65% similarity]
arch/sparc/include/asm/signal_32.h [moved from include/asm-sparc/signal_32.h with 100% similarity]
arch/sparc/include/asm/signal_64.h [moved from include/asm-sparc/signal_64.h with 100% similarity]
arch/sparc/include/asm/smp.h [moved from include/asm-sparc/smp.h with 66% similarity]
arch/sparc/include/asm/smp_32.h [moved from include/asm-sparc/smp_32.h with 100% similarity]
arch/sparc/include/asm/smp_64.h [moved from include/asm-sparc/smp_64.h with 100% similarity]
arch/sparc/include/asm/smpprim.h [moved from include/asm-sparc/smpprim.h with 100% similarity]
arch/sparc/include/asm/socket.h [moved from include/asm-sparc/socket.h with 100% similarity]
arch/sparc/include/asm/sockios.h [moved from include/asm-sparc/sockios.h with 100% similarity]
arch/sparc/include/asm/sparsemem.h [moved from include/asm-sparc/sparsemem.h with 100% similarity]
arch/sparc/include/asm/spinlock.h [moved from include/asm-sparc/spinlock.h with 65% similarity]
arch/sparc/include/asm/spinlock_32.h [moved from include/asm-sparc/spinlock_32.h with 100% similarity]
arch/sparc/include/asm/spinlock_64.h [moved from include/asm-sparc/spinlock_64.h with 100% similarity]
arch/sparc/include/asm/spinlock_types.h [moved from include/asm-sparc/spinlock_types.h with 100% similarity]
arch/sparc/include/asm/spitfire.h [moved from include/asm-sparc/spitfire.h with 100% similarity]
arch/sparc/include/asm/sstate.h [moved from include/asm-sparc/sstate.h with 100% similarity]
arch/sparc/include/asm/stacktrace.h [moved from include/asm-sparc/stacktrace.h with 100% similarity]
arch/sparc/include/asm/starfire.h [moved from include/asm-sparc/starfire.h with 100% similarity]
arch/sparc/include/asm/stat.h [moved from include/asm-sparc/stat.h with 66% similarity]
arch/sparc/include/asm/stat_32.h [moved from include/asm-sparc/stat_32.h with 100% similarity]
arch/sparc/include/asm/stat_64.h [moved from include/asm-sparc/stat_64.h with 100% similarity]
arch/sparc/include/asm/statfs.h [moved from include/asm-sparc/statfs.h with 65% similarity]
arch/sparc/include/asm/statfs_32.h [moved from include/asm-sparc/statfs_32.h with 100% similarity]
arch/sparc/include/asm/statfs_64.h [moved from include/asm-sparc/statfs_64.h with 100% similarity]
arch/sparc/include/asm/string.h [moved from include/asm-sparc/string.h with 65% similarity]
arch/sparc/include/asm/string_32.h [moved from include/asm-sparc/string_32.h with 100% similarity]
arch/sparc/include/asm/string_64.h [moved from include/asm-sparc/string_64.h with 100% similarity]
arch/sparc/include/asm/sun4paddr.h [moved from include/asm-sparc/sun4paddr.h with 100% similarity]
arch/sparc/include/asm/sun4prom.h [moved from include/asm-sparc/sun4prom.h with 100% similarity]
arch/sparc/include/asm/sunbpp.h [moved from include/asm-sparc/sunbpp.h with 99% similarity]
arch/sparc/include/asm/swift.h [moved from include/asm-sparc/swift.h with 100% similarity]
arch/sparc/include/asm/syscall.h [new file with mode: 0644]
arch/sparc/include/asm/syscalls.h [moved from include/asm-sparc/syscalls.h with 100% similarity]
arch/sparc/include/asm/sysen.h [moved from include/asm-sparc/sysen.h with 100% similarity]
arch/sparc/include/asm/system.h [moved from include/asm-sparc/system.h with 65% similarity]
arch/sparc/include/asm/system_32.h [moved from include/asm-sparc/system_32.h with 100% similarity]
arch/sparc/include/asm/system_64.h [moved from include/asm-sparc/system_64.h with 100% similarity]
arch/sparc/include/asm/termbits.h [moved from include/asm-sparc/termbits.h with 100% similarity]
arch/sparc/include/asm/termios.h [moved from include/asm-sparc/termios.h with 100% similarity]
arch/sparc/include/asm/thread_info.h [moved from include/asm-sparc/thread_info.h with 64% similarity]
arch/sparc/include/asm/thread_info_32.h [moved from include/asm-sparc/thread_info_32.h with 95% similarity]
arch/sparc/include/asm/thread_info_64.h [moved from include/asm-sparc/thread_info_64.h with 97% similarity]
arch/sparc/include/asm/timer.h [moved from include/asm-sparc/timer.h with 65% similarity]
arch/sparc/include/asm/timer_32.h [moved from include/asm-sparc/timer_32.h with 100% similarity]
arch/sparc/include/asm/timer_64.h [moved from include/asm-sparc/timer_64.h with 100% similarity]
arch/sparc/include/asm/timex.h [moved from include/asm-sparc/timex.h with 65% similarity]
arch/sparc/include/asm/timex_32.h [moved from include/asm-sparc/timex_32.h with 89% similarity]
arch/sparc/include/asm/timex_64.h [moved from include/asm-sparc/timex_64.h with 90% similarity]
arch/sparc/include/asm/tlb.h [moved from include/asm-sparc/tlb.h with 66% similarity]
arch/sparc/include/asm/tlb_32.h [moved from include/asm-sparc/tlb_32.h with 100% similarity]
arch/sparc/include/asm/tlb_64.h [moved from include/asm-sparc/tlb_64.h with 100% similarity]
arch/sparc/include/asm/tlbflush.h [moved from include/asm-sparc/tlbflush.h with 65% similarity]
arch/sparc/include/asm/tlbflush_32.h [moved from include/asm-sparc/tlbflush_32.h with 100% similarity]
arch/sparc/include/asm/tlbflush_64.h [moved from include/asm-sparc/tlbflush_64.h with 100% similarity]
arch/sparc/include/asm/topology.h [moved from include/asm-sparc/topology.h with 65% similarity]
arch/sparc/include/asm/topology_32.h [moved from include/asm-sparc/topology_32.h with 100% similarity]
arch/sparc/include/asm/topology_64.h [moved from include/asm-sparc/topology_64.h with 100% similarity]
arch/sparc/include/asm/traps.h [moved from include/asm-sparc/traps.h with 100% similarity]
arch/sparc/include/asm/tsb.h [moved from include/asm-sparc/tsb.h with 100% similarity]
arch/sparc/include/asm/tsunami.h [moved from include/asm-sparc/tsunami.h with 100% similarity]
arch/sparc/include/asm/ttable.h [moved from include/asm-sparc/ttable.h with 100% similarity]
arch/sparc/include/asm/turbosparc.h [moved from include/asm-sparc/turbosparc.h with 100% similarity]
arch/sparc/include/asm/types.h [moved from include/asm-sparc/types.h with 100% similarity]
arch/sparc/include/asm/uaccess.h [moved from include/asm-sparc/uaccess.h with 65% similarity]
arch/sparc/include/asm/uaccess_32.h [moved from include/asm-sparc/uaccess_32.h with 100% similarity]
arch/sparc/include/asm/uaccess_64.h [moved from include/asm-sparc/uaccess_64.h with 100% similarity]
arch/sparc/include/asm/uctx.h [moved from include/asm-sparc/uctx.h with 100% similarity]
arch/sparc/include/asm/unaligned.h [moved from include/asm-sparc/unaligned.h with 100% similarity]
arch/sparc/include/asm/unistd.h [moved from include/asm-sparc/unistd.h with 65% similarity]
arch/sparc/include/asm/unistd_32.h [moved from include/asm-sparc/unistd_32.h with 100% similarity]
arch/sparc/include/asm/unistd_64.h [moved from include/asm-sparc/unistd_64.h with 100% similarity]
arch/sparc/include/asm/upa.h [moved from include/asm-sparc/upa.h with 100% similarity]
arch/sparc/include/asm/user.h [moved from include/asm-sparc/user.h with 100% similarity]
arch/sparc/include/asm/utrap.h [moved from include/asm-sparc/utrap.h with 97% similarity]
arch/sparc/include/asm/vac-ops.h [moved from include/asm-sparc/vac-ops.h with 100% similarity]
arch/sparc/include/asm/vaddrs.h [moved from include/asm-sparc/vaddrs.h with 97% similarity]
arch/sparc/include/asm/vfc_ioctls.h [moved from include/asm-sparc/vfc_ioctls.h with 100% similarity]
arch/sparc/include/asm/vga.h [moved from include/asm-sparc/vga.h with 100% similarity]
arch/sparc/include/asm/viking.h [moved from include/asm-sparc/viking.h with 100% similarity]
arch/sparc/include/asm/vio.h [moved from include/asm-sparc/vio.h with 100% similarity]
arch/sparc/include/asm/visasm.h [moved from include/asm-sparc/visasm.h with 100% similarity]
arch/sparc/include/asm/watchdog.h [moved from include/asm-sparc/watchdog.h with 100% similarity]
arch/sparc/include/asm/winmacro.h [moved from include/asm-sparc/winmacro.h with 100% similarity]
arch/sparc/include/asm/xor.h [moved from include/asm-sparc/xor.h with 66% similarity]
arch/sparc/include/asm/xor_32.h [moved from include/asm-sparc/xor_32.h with 99% similarity]
arch/sparc/include/asm/xor_64.h [moved from include/asm-sparc/xor_64.h with 98% similarity]
arch/sparc/kernel/entry.S
arch/sparc/kernel/ptrace.c
arch/sparc/kernel/rtrap.S
arch/sparc/kernel/signal.c
arch/sparc64/Kconfig
arch/sparc64/kernel/compat_audit.c
arch/sparc64/kernel/entry.h
arch/sparc64/kernel/ptrace.c
arch/sparc64/kernel/rtrap.S
arch/sparc64/kernel/signal.c
arch/sparc64/kernel/signal32.c
arch/sparc64/kernel/syscalls.S
drivers/acpi/processor_idle.c
drivers/base/memory.c
drivers/char/pcmcia/ipwireless/hardware.c
drivers/char/pcmcia/ipwireless/hardware.h
drivers/char/pcmcia/ipwireless/main.c
drivers/char/pcmcia/ipwireless/main.h
drivers/char/pcmcia/ipwireless/network.c
drivers/char/pcmcia/ipwireless/network.h
drivers/char/pcmcia/ipwireless/tty.c
drivers/cpuidle/cpuidle.c
drivers/i2c/busses/i2c-bfin-twi.c
drivers/i2c/busses/i2c-gpio.c
drivers/i2c/busses/i2c-s3c2410.c
include/asm-arm/plat-s3c/iic.h
include/asm-sparc/Kbuild [deleted file]
include/asm-sparc64/Kbuild [deleted file]
include/asm-sparc64/agp.h [deleted file]
include/asm-sparc64/apb.h [deleted file]
include/asm-sparc64/asi.h [deleted file]
include/asm-sparc64/atomic.h [deleted file]
include/asm-sparc64/auxio.h [deleted file]
include/asm-sparc64/auxvec.h [deleted file]
include/asm-sparc64/backoff.h [deleted file]
include/asm-sparc64/bbc.h [deleted file]
include/asm-sparc64/bitops.h [deleted file]
include/asm-sparc64/bpp.h [deleted file]
include/asm-sparc64/bug.h [deleted file]
include/asm-sparc64/bugs.h [deleted file]
include/asm-sparc64/byteorder.h [deleted file]
include/asm-sparc64/cache.h [deleted file]
include/asm-sparc64/cacheflush.h [deleted file]
include/asm-sparc64/chafsr.h [deleted file]
include/asm-sparc64/checksum.h [deleted file]
include/asm-sparc64/chmctrl.h [deleted file]
include/asm-sparc64/cmt.h [deleted file]
include/asm-sparc64/compat.h [deleted file]
include/asm-sparc64/compat_signal.h [deleted file]
include/asm-sparc64/cpudata.h [deleted file]
include/asm-sparc64/cputime.h [deleted file]
include/asm-sparc64/current.h [deleted file]
include/asm-sparc64/dcr.h [deleted file]
include/asm-sparc64/dcu.h [deleted file]
include/asm-sparc64/delay.h [deleted file]
include/asm-sparc64/device.h [deleted file]
include/asm-sparc64/display7seg.h [deleted file]
include/asm-sparc64/div64.h [deleted file]
include/asm-sparc64/dma-mapping.h [deleted file]
include/asm-sparc64/dma.h [deleted file]
include/asm-sparc64/ebus.h [deleted file]
include/asm-sparc64/elf.h [deleted file]
include/asm-sparc64/emergency-restart.h [deleted file]
include/asm-sparc64/envctrl.h [deleted file]
include/asm-sparc64/errno.h [deleted file]
include/asm-sparc64/estate.h [deleted file]
include/asm-sparc64/fb.h [deleted file]
include/asm-sparc64/fbio.h [deleted file]
include/asm-sparc64/fcntl.h [deleted file]
include/asm-sparc64/fhc.h [deleted file]
include/asm-sparc64/floppy.h [deleted file]
include/asm-sparc64/fpumacro.h [deleted file]
include/asm-sparc64/futex.h [deleted file]
include/asm-sparc64/hardirq.h [deleted file]
include/asm-sparc64/head.h [deleted file]
include/asm-sparc64/hugetlb.h [deleted file]
include/asm-sparc64/hvtramp.h [deleted file]
include/asm-sparc64/hw_irq.h [deleted file]
include/asm-sparc64/hypervisor.h [deleted file]
include/asm-sparc64/ide.h [deleted file]
include/asm-sparc64/idprom.h [deleted file]
include/asm-sparc64/intr_queue.h [deleted file]
include/asm-sparc64/io.h [deleted file]
include/asm-sparc64/ioctl.h [deleted file]
include/asm-sparc64/ioctls.h [deleted file]
include/asm-sparc64/iommu.h [deleted file]
include/asm-sparc64/ipcbuf.h [deleted file]
include/asm-sparc64/irq.h [deleted file]
include/asm-sparc64/irq_regs.h [deleted file]
include/asm-sparc64/irqflags.h [deleted file]
include/asm-sparc64/kdebug.h [deleted file]
include/asm-sparc64/kgdb.h [deleted file]
include/asm-sparc64/kmap_types.h [deleted file]
include/asm-sparc64/kprobes.h [deleted file]
include/asm-sparc64/ldc.h [deleted file]
include/asm-sparc64/linkage.h [deleted file]
include/asm-sparc64/lmb.h [deleted file]
include/asm-sparc64/local.h [deleted file]
include/asm-sparc64/lsu.h [deleted file]
include/asm-sparc64/mc146818rtc.h [deleted file]
include/asm-sparc64/mdesc.h [deleted file]
include/asm-sparc64/mman.h [deleted file]
include/asm-sparc64/mmu.h [deleted file]
include/asm-sparc64/mmu_context.h [deleted file]
include/asm-sparc64/mmzone.h [deleted file]
include/asm-sparc64/module.h [deleted file]
include/asm-sparc64/mostek.h [deleted file]
include/asm-sparc64/msgbuf.h [deleted file]
include/asm-sparc64/mutex.h [deleted file]
include/asm-sparc64/ns87303.h [deleted file]
include/asm-sparc64/of_device.h [deleted file]
include/asm-sparc64/of_platform.h [deleted file]
include/asm-sparc64/openprom.h [deleted file]
include/asm-sparc64/openpromio.h [deleted file]
include/asm-sparc64/oplib.h [deleted file]
include/asm-sparc64/page.h [deleted file]
include/asm-sparc64/param.h [deleted file]
include/asm-sparc64/parport.h [deleted file]
include/asm-sparc64/pci.h [deleted file]
include/asm-sparc64/percpu.h [deleted file]
include/asm-sparc64/perfctr.h [deleted file]
include/asm-sparc64/pgalloc.h [deleted file]
include/asm-sparc64/pgtable.h [deleted file]
include/asm-sparc64/pil.h [deleted file]
include/asm-sparc64/poll.h [deleted file]
include/asm-sparc64/posix_types.h [deleted file]
include/asm-sparc64/processor.h [deleted file]
include/asm-sparc64/prom.h [deleted file]
include/asm-sparc64/psrcompat.h [deleted file]
include/asm-sparc64/pstate.h [deleted file]
include/asm-sparc64/ptrace.h [deleted file]
include/asm-sparc64/reboot.h [deleted file]
include/asm-sparc64/reg.h [deleted file]
include/asm-sparc64/resource.h [deleted file]
include/asm-sparc64/rtc.h [deleted file]
include/asm-sparc64/rwsem-const.h [deleted file]
include/asm-sparc64/rwsem.h [deleted file]
include/asm-sparc64/sbus.h [deleted file]
include/asm-sparc64/scatterlist.h [deleted file]
include/asm-sparc64/scratchpad.h [deleted file]
include/asm-sparc64/seccomp.h [deleted file]
include/asm-sparc64/sections.h [deleted file]
include/asm-sparc64/sembuf.h [deleted file]
include/asm-sparc64/setup.h [deleted file]
include/asm-sparc64/sfafsr.h [deleted file]
include/asm-sparc64/sfp-machine.h [deleted file]
include/asm-sparc64/shmbuf.h [deleted file]
include/asm-sparc64/shmparam.h [deleted file]
include/asm-sparc64/sigcontext.h [deleted file]
include/asm-sparc64/siginfo.h [deleted file]
include/asm-sparc64/signal.h [deleted file]
include/asm-sparc64/smp.h [deleted file]
include/asm-sparc64/socket.h [deleted file]
include/asm-sparc64/sockios.h [deleted file]
include/asm-sparc64/sparsemem.h [deleted file]
include/asm-sparc64/spinlock.h [deleted file]
include/asm-sparc64/spinlock_types.h [deleted file]
include/asm-sparc64/spitfire.h [deleted file]
include/asm-sparc64/sstate.h [deleted file]
include/asm-sparc64/stacktrace.h [deleted file]
include/asm-sparc64/starfire.h [deleted file]
include/asm-sparc64/stat.h [deleted file]
include/asm-sparc64/statfs.h [deleted file]
include/asm-sparc64/string.h [deleted file]
include/asm-sparc64/sunbpp.h [deleted file]
include/asm-sparc64/syscalls.h [deleted file]
include/asm-sparc64/system.h [deleted file]
include/asm-sparc64/termbits.h [deleted file]
include/asm-sparc64/termios.h [deleted file]
include/asm-sparc64/thread_info.h [deleted file]
include/asm-sparc64/timer.h [deleted file]
include/asm-sparc64/timex.h [deleted file]
include/asm-sparc64/tlb.h [deleted file]
include/asm-sparc64/tlbflush.h [deleted file]
include/asm-sparc64/topology.h [deleted file]
include/asm-sparc64/tsb.h [deleted file]
include/asm-sparc64/ttable.h [deleted file]
include/asm-sparc64/types.h [deleted file]
include/asm-sparc64/uaccess.h [deleted file]
include/asm-sparc64/uctx.h [deleted file]
include/asm-sparc64/unaligned.h [deleted file]
include/asm-sparc64/unistd.h [deleted file]
include/asm-sparc64/upa.h [deleted file]
include/asm-sparc64/user.h [deleted file]
include/asm-sparc64/utrap.h [deleted file]
include/asm-sparc64/vga.h [deleted file]
include/asm-sparc64/vio.h [deleted file]
include/asm-sparc64/visasm.h [deleted file]
include/asm-sparc64/watchdog.h [deleted file]
include/asm-sparc64/xor.h [deleted file]
net/dccp/dccp.h
net/dccp/ipv4.c
net/dccp/ipv6.c
net/dccp/output.c
net/dccp/timer.c
net/ipv4/ipcomp.c
net/ipv6/ipcomp6.c

index 118ca6e9404f47ded06c7ee3a287003d00377e56..f79ad9ff6031aa4ee622d9f0be3e0c1604e2d14b 100644 (file)
@@ -528,7 +528,33 @@ See more details on the proper patch format in the following
 references.
 
 
+16) Sending "git pull" requests  (from Linus emails)
 
+Please write the git repo address and branch name alone on the same line
+so that I can't even by mistake pull from the wrong branch, and so
+that a triple-click just selects the whole thing.
+
+So the proper format is something along the lines of:
+
+       "Please pull from
+
+               git://jdelvare.pck.nerim.net/jdelvare-2.6 i2c-for-linus
+
+        to get these changes:"
+
+so that I don't have to hunt-and-peck for the address and inevitably
+get it wrong (actually, I've only gotten it wrong a few times, and
+checking against the diffstat tells me when I get it wrong, but I'm
+just a lot more comfortable when I don't have to "look for" the right
+thing to pull, and double-check that I have the right branch-name).
+
+
+Please use "git diff -M --stat --summary" to generate the diffstat:
+the -M enables rename detection, and the summary enables a summary of
+new/deleted or renamed files.
+
+With rename detection, the statistics are rather different [...]
+because git will notice that a fair number of the changes are renames.
 
 -----------------------------------
 SECTION 2 - HINTS, TIPS, AND TRICKS
diff --git a/Documentation/i2c/upgrading-clients b/Documentation/i2c/upgrading-clients
new file mode 100644 (file)
index 0000000..9a45f9b
--- /dev/null
@@ -0,0 +1,281 @@
+Upgrading I2C Drivers to the new 2.6 Driver Model
+=================================================
+
+Ben Dooks <ben-linux@fluff.org>
+
+Introduction
+------------
+
+This guide outlines how to alter existing Linux 2.6 client drivers from
+the old to the new new binding methods.
+
+
+Example old-style driver
+------------------------
+
+
+struct example_state {
+       struct i2c_client       client;
+       ....
+};
+
+static struct i2c_driver example_driver;
+
+static unsigned short ignore[] = { I2C_CLIENT_END };
+static unsigned short normal_addr[] = { OUR_ADDR, I2C_CLIENT_END };
+
+I2C_CLIENT_INSMOD;
+
+static int example_attach(struct i2c_adapter *adap, int addr, int kind)
+{
+       struct example_state *state;
+       struct device *dev = &adap->dev;  /* to use for dev_ reports */
+       int ret;
+
+       state = kzalloc(sizeof(struct example_state), GFP_KERNEL);
+       if (state == NULL) {
+               dev_err(dev, "failed to create our state\n");
+               return -ENOMEM;
+       }
+
+       example->client.addr    = addr;
+       example->client.flags   = 0;
+       example->client.adapter = adap;
+
+       i2c_set_clientdata(&state->i2c_client, state);
+       strlcpy(client->i2c_client.name, "example", I2C_NAME_SIZE);
+
+       ret = i2c_attach_client(&state->i2c_client);
+       if (ret < 0) {
+               dev_err(dev, "failed to attach client\n");
+               kfree(state);
+               return ret;
+       }
+
+       dev = &state->i2c_client.dev;
+
+       /* rest of the initialisation goes here. */
+
+       dev_info(dev, "example client created\n");
+
+       return 0;
+}
+
+static int __devexit example_detach(struct i2c_client *client)
+{
+       struct example_state *state = i2c_get_clientdata(client);
+
+       i2c_detach_client(client);
+       kfree(state);
+       return 0;
+}
+
+static int example_attach_adapter(struct i2c_adapter *adap)
+{
+       return i2c_probe(adap, &addr_data, example_attach);
+}
+
+static struct i2c_driver example_driver = {
+       .driver         = {
+               .owner          = THIS_MODULE,
+               .name           = "example",
+       },
+       .attach_adapter = example_attach_adapter,
+       .detach_client  = __devexit_p(example_detach),
+       .suspend        = example_suspend,
+       .resume         = example_resume,
+};
+
+
+Updating the client
+-------------------
+
+The new style binding model will check against a list of supported
+devices and their associated address supplied by the code registering
+the busses. This means that the driver .attach_adapter and
+.detach_adapter methods can be removed, along with the addr_data,
+as follows:
+
+- static struct i2c_driver example_driver;
+
+- static unsigned short ignore[] = { I2C_CLIENT_END };
+- static unsigned short normal_addr[] = { OUR_ADDR, I2C_CLIENT_END };
+
+- I2C_CLIENT_INSMOD;
+
+- static int example_attach_adapter(struct i2c_adapter *adap)
+- {
+-      return i2c_probe(adap, &addr_data, example_attach);
+- }
+
+ static struct i2c_driver example_driver = {
+-      .attach_adapter = example_attach_adapter,
+-      .detach_client  = __devexit_p(example_detach),
+ }
+
+Add the probe and remove methods to the i2c_driver, as so:
+
+ static struct i2c_driver example_driver = {
++      .probe          = example_probe,
++      .remove         = __devexit_p(example_remove),
+ }
+
+Change the example_attach method to accept the new parameters
+which include the i2c_client that it will be working with:
+
+- static int example_attach(struct i2c_adapter *adap, int addr, int kind)
++ static int example_probe(struct i2c_client *client,
++                         const struct i2c_device_id *id)
+
+Change the name of example_attach to example_probe to align it with the
+i2c_driver entry names. The rest of the probe routine will now need to be
+changed as the i2c_client has already been setup for use.
+
+The necessary client fields have already been setup before
+the probe function is called, so the following client setup
+can be removed:
+
+-      example->client.addr    = addr;
+-      example->client.flags   = 0;
+-      example->client.adapter = adap;
+-
+-      strlcpy(client->i2c_client.name, "example", I2C_NAME_SIZE);
+
+The i2c_set_clientdata is now:
+
+-      i2c_set_clientdata(&state->client, state);
++      i2c_set_clientdata(client, state);
+
+The call to i2c_attach_client is no longer needed, if the probe
+routine exits successfully, then the driver will be automatically
+attached by the core. Change the probe routine as so:
+
+-      ret = i2c_attach_client(&state->i2c_client);
+-      if (ret < 0) {
+-              dev_err(dev, "failed to attach client\n");
+-              kfree(state);
+-              return ret;
+-      }
+
+
+Remove the storage of 'struct i2c_client' from the 'struct example_state'
+as we are provided with the i2c_client in our example_probe. Instead we
+store a pointer to it for when it is needed.
+
+struct example_state {
+-      struct i2c_client       client;
++      struct i2c_client       *client;
+
+the new i2c client as so:
+
+-      struct device *dev = &adap->dev;  /* to use for dev_ reports */
++      struct device *dev = &i2c_client->dev;  /* to use for dev_ reports */
+
+And remove the change after our client is attached, as the driver no
+longer needs to register a new client structure with the core:
+
+-      dev = &state->i2c_client.dev;
+
+In the probe routine, ensure that the new state has the client stored
+in it:
+
+static int example_probe(struct i2c_client *i2c_client,
+                        const struct i2c_device_id *id)
+{
+       struct example_state *state;
+       struct device *dev = &i2c_client->dev;
+       int ret;
+
+       state = kzalloc(sizeof(struct example_state), GFP_KERNEL);
+       if (state == NULL) {
+               dev_err(dev, "failed to create our state\n");
+               return -ENOMEM;
+       }
+
++      state->client = i2c_client;
+
+Update the detach method, by changing the name to _remove and
+to delete the i2c_detach_client call. It is possible that you
+can also remove the ret variable as it is not not needed for
+any of the core functions.
+
+- static int __devexit example_detach(struct i2c_client *client)
++ static int __devexit example_remove(struct i2c_client *client)
+{
+       struct example_state *state = i2c_get_clientdata(client);
+
+-      i2c_detach_client(client);
+
+And finally ensure that we have the correct ID table for the i2c-core
+and other utilities:
+
++ struct i2c_device_id example_idtable[] = {
++       { "example", 0 },
++       { }
++};
++
++MODULE_DEVICE_TABLE(i2c, example_idtable);
+
+static struct i2c_driver example_driver = {
+       .driver         = {
+               .owner          = THIS_MODULE,
+               .name           = "example",
+       },
++      .id_table       = example_ids,
+
+
+Our driver should now look like this:
+
+struct example_state {
+       struct i2c_client       *client;
+       ....
+};
+
+static int example_probe(struct i2c_client *client,
+                        const struct i2c_device_id *id)
+{
+       struct example_state *state;
+       struct device *dev = &client->dev;
+
+       state = kzalloc(sizeof(struct example_state), GFP_KERNEL);
+       if (state == NULL) {
+               dev_err(dev, "failed to create our state\n");
+               return -ENOMEM;
+       }
+
+       state->client = client;
+       i2c_set_clientdata(client, state);
+
+       /* rest of the initialisation goes here. */
+
+       dev_info(dev, "example client created\n");
+
+       return 0;
+}
+
+static int __devexit example_remove(struct i2c_client *client)
+{
+       struct example_state *state = i2c_get_clientdata(client);
+
+       kfree(state);
+       return 0;
+}
+
+static struct i2c_device_id example_idtable[] = {
+       { "example", 0 },
+       { }
+};
+
+MODULE_DEVICE_TABLE(i2c, example_idtable);
+
+static struct i2c_driver example_driver = {
+       .driver         = {
+               .owner          = THIS_MODULE,
+               .name           = "example",
+       },
+       .id_table       = example_idtable,
+       .probe          = example_probe,
+       .remove         = __devexit_p(example_remove),
+       .suspend        = example_suspend,
+       .resume         = example_resume,
+};
index 40f24810116ccfcf9fe775b03c0fd58eef5fe905..baee3d414754f0b2c169ebd73d2876a8ad94d0c1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -206,7 +206,11 @@ ifeq ($(ARCH),x86_64)
 endif
 
 # Where to locate arch specific headers
-hdr-arch       := $(SRCARCH)
+ifeq ($(ARCH),sparc64)
+       hdr-arch  := sparc
+else
+       hdr-arch  := $(SRCARCH)
+endif
 
 KCONFIG_CONFIG ?= .config
 
index 375de7c6d082b09547fd285bc647441e02fec89d..a214002114ed90b0f8924c6837cbfcc622af737c 100644 (file)
@@ -68,6 +68,7 @@ config SPARC
        select HAVE_IDE
        select HAVE_OPROFILE
        select HAVE_ARCH_KGDB if !SMP
+       select HAVE_ARCH_TRACEHOOK
 
 # Identify this as a Sparc32 build
 config SPARC32
diff --git a/arch/sparc/include/asm/Kbuild b/arch/sparc/include/asm/Kbuild
new file mode 100644 (file)
index 0000000..a5f0ce7
--- /dev/null
@@ -0,0 +1,45 @@
+# User exported sparc header files
+include include/asm-generic/Kbuild.asm
+
+header-y += ipcbuf_32.h
+header-y += ipcbuf_64.h
+header-y += posix_types_32.h
+header-y += posix_types_64.h
+header-y += ptrace_32.h
+header-y += ptrace_64.h
+header-y += sigcontext_32.h
+header-y += sigcontext_64.h
+header-y += siginfo_32.h
+header-y += siginfo_64.h
+header-y += signal_32.h
+header-y += signal_64.h
+header-y += stat_32.h
+header-y += stat_64.h
+header-y += statfs_32.h
+header-y += statfs_64.h
+header-y += unistd_32.h
+header-y += unistd_64.h
+
+header-y += apc.h
+header-y += asi.h
+header-y += bpp.h
+header-y += display7seg.h
+header-y += envctrl.h
+header-y += fbio.h
+header-y += jsflash.h
+header-y += openprom.h
+header-y += openprom_32.h
+header-y += openprom_64.h
+header-y += openpromio.h
+header-y += perfctr.h
+header-y += psrcompat.h
+header-y += psr.h
+header-y += pstate.h
+header-y += reg.h
+header-y += reg_32.h
+header-y += reg_64.h
+header-y += traps.h
+header-y += uctx.h
+header-y += utrap.h
+header-y += vfc_ioctls.h
+header-y += watchdog.h
similarity index 65%
rename from include/asm-sparc/atomic.h
rename to arch/sparc/include/asm/atomic.h
index 66d8166ec1d7d768e321b7fe06414140ac7d7bf6..8ff83d8cc33fd7f4abd2f7ae2b018baa1006cdd7 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_ATOMIC_H
 #define ___ASM_SPARC_ATOMIC_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/atomic_64.h>
+#include <asm/atomic_64.h>
 #else
-#include <asm-sparc/atomic_32.h>
+#include <asm/atomic_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/auxio.h
rename to arch/sparc/include/asm/auxio.h
index 24c6f3c0f5779c5ea9d2789ae8b91017f2ab97e3..13dc67f03011eae7624c26957cf4f6a5085a4c34 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_AUXIO_H
 #define ___ASM_SPARC_AUXIO_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/auxio_64.h>
+#include <asm/auxio_64.h>
 #else
-#include <asm-sparc/auxio_32.h>
+#include <asm/auxio_32.h>
 #endif
 #endif
similarity index 97%
rename from include/asm-sparc/auxio_32.h
rename to arch/sparc/include/asm/auxio_32.h
index 4db8f23db20f1c930c96354f529657525dced95f..e03e088be95f23eb2b01a1ab2915a22e47beb7dd 100644 (file)
@@ -36,7 +36,7 @@
  * understand the hardware you are querying!
  */
 extern void set_auxio(unsigned char bits_on, unsigned char bits_off);
-extern unsigned char get_auxio(void); /* .../asm-sparc/floppy.h */
+extern unsigned char get_auxio(void); /* .../asm/floppy.h */
 
 /*
  * The following routines are provided for driver-compatibility
similarity index 65%
rename from include/asm-sparc/bitops.h
rename to arch/sparc/include/asm/bitops.h
index 1a2949d0193fa85defd4a7a2698bf4afb372b7cf..b1edd94bd64f398d6363132519ab995cc549c452 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_BITOPS_H
 #define ___ASM_SPARC_BITOPS_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/bitops_64.h>
+#include <asm/bitops_64.h>
 #else
-#include <asm-sparc/bitops_32.h>
+#include <asm/bitops_32.h>
 #endif
 #endif
similarity index 99%
rename from include/asm-sparc/btfixup.h
rename to arch/sparc/include/asm/btfixup.h
index 08277e6fb4cd51dcc5a5349c782d70ab4ba07361..797722cf69f2869943f4d347a4acb6ad9f72bb77 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  asm-sparc/btfixup.h:    Macros for boot time linking.
+ *  asm/btfixup.h:    Macros for boot time linking.
  *
  *  Copyright (C) 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
  */
similarity index 87%
rename from include/asm-sparc/bugs.h
rename to arch/sparc/include/asm/bugs.h
index 2dfc07bc8e5472ec9b319dd137a8c7a69535338e..e179bc12f64a478ff9d3eaba6bf337f1a27b1539 100644 (file)
@@ -1,4 +1,4 @@
-/* include/asm-sparc/bugs.h:  Sparc probes for various bugs.
+/* include/asm/bugs.h:  Sparc probes for various bugs.
  *
  * Copyright (C) 1996, 2007 David S. Miller (davem@davemloft.net)
  */
similarity index 64%
rename from include/asm-sparc/cacheflush.h
rename to arch/sparc/include/asm/cacheflush.h
index 2b6a37957c2da803739a7e0a71779ea264f2b5d4..049168087b198fd37e5a144bc55e7682ef1ffc6f 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_CACHEFLUSH_H
 #define ___ASM_SPARC_CACHEFLUSH_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/cacheflush_64.h>
+#include <asm/cacheflush_64.h>
 #else
-#include <asm-sparc/cacheflush_32.h>
+#include <asm/cacheflush_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/checksum.h
rename to arch/sparc/include/asm/checksum.h
index 4e3553d4f6e17a3eb6c07be765b1fe08b4542604..7ac0d7497bc593bbc6c87f69964073cbcd8d1d14 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_CHECKSUM_H
 #define ___ASM_SPARC_CHECKSUM_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/checksum_64.h>
+#include <asm/checksum_64.h>
 #else
-#include <asm-sparc/checksum_32.h>
+#include <asm/checksum_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/cpudata.h
rename to arch/sparc/include/asm/cpudata.h
index b76fac0c8d8feb549fcb7d43c9e18ebdb7449933..b5976de7cacdb32528f576eef418ce4d35685e4e 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_CPUDATA_H
 #define ___ASM_SPARC_CPUDATA_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/cpudata_64.h>
+#include <asm/cpudata_64.h>
 #else
-#include <asm-sparc/cpudata_32.h>
+#include <asm/cpudata_32.h>
 #endif
 #endif
similarity index 89%
rename from include/asm-sparc/cpudata_32.h
rename to arch/sparc/include/asm/cpudata_32.h
index a2c4d51d36c4c478f81dc0ba99a05a8809690137..31d48a0e32c7cd3cd3b4eda72325229496f00411 100644 (file)
@@ -2,7 +2,7 @@
  *
  * Copyright (C) 2004 Keith M Wesolowski (wesolows@foobazco.org)
  *
- * Based on include/asm-sparc64/cpudata.h and Linux 2.4 smp.h
+ * Based on include/asm/cpudata.h and Linux 2.4 smp.h
  * both (C) David S. Miller.
  */
 
similarity index 96%
rename from include/asm-sparc/current.h
rename to arch/sparc/include/asm/current.h
index 8a1d9d6643b059343919a615064fb0068246a2be..10a0df55a574aeb8758e57c99073ccf8cf4e2d54 100644 (file)
@@ -1,4 +1,4 @@
-/* include/asm-sparc/current.h
+/* include/asm/current.h
  *
  * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  * Copyright (C) 2002 Pete Zaitcev (zaitcev@yahoo.com)
similarity index 65%
rename from include/asm-sparc/delay.h
rename to arch/sparc/include/asm/delay.h
index 6210a3ce97517860de53a9b1823a4eaa5b56e871..467caa2a97a04199ec379aa1540a29c7fd62a49d 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_DELAY_H
 #define ___ASM_SPARC_DELAY_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/delay_64.h>
+#include <asm/delay_64.h>
 #else
-#include <asm-sparc/delay_32.h>
+#include <asm/delay_32.h>
 #endif
 #endif
similarity index 64%
rename from include/asm-sparc/dma-mapping.h
rename to arch/sparc/include/asm/dma-mapping.h
index 7483504259cef140dd187a87af7025a18d689486..0f4150e26619c3a2063f92abe4ff95ca8dece6cc 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_DMA_MAPPING_H
 #define ___ASM_SPARC_DMA_MAPPING_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/dma-mapping_64.h>
+#include <asm/dma-mapping_64.h>
 #else
-#include <asm-sparc/dma-mapping_32.h>
+#include <asm/dma-mapping_32.h>
 #endif
 #endif
similarity index 66%
rename from include/asm-sparc/dma.h
rename to arch/sparc/include/asm/dma.h
index 8cc69bfaae2ab8459433dadaf6a10ce1e20eae65..aa1d90ac04c58b2db3c907ab8e5555aa7ae90b75 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_DMA_H
 #define ___ASM_SPARC_DMA_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/dma_64.h>
+#include <asm/dma_64.h>
 #else
-#include <asm-sparc/dma_32.h>
+#include <asm/dma_32.h>
 #endif
 #endif
similarity index 99%
rename from include/asm-sparc/dma_32.h
rename to arch/sparc/include/asm/dma_32.h
index 959d6c8a71ae72365f6d33e2c1921bebbe012317..cf7189c0079b2c3b6b46c02b65e53d70caddd506 100644 (file)
@@ -1,4 +1,4 @@
-/* include/asm-sparc/dma.h
+/* include/asm/dma.h
  *
  * Copyright 1995 (C) David S. Miller (davem@davemloft.net)
  */
similarity index 99%
rename from include/asm-sparc/dma_64.h
rename to arch/sparc/include/asm/dma_64.h
index 9d4c024bd3b3874f0091c4c3e83cd4392006110f..46a8aecffc02c182b63cf794e83746ac64499674 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * include/asm-sparc64/dma.h
+ * include/asm/dma.h
  *
  * Copyright 1996 (C) David S. Miller (davem@caip.rutgers.edu)
  */
similarity index 66%
rename from include/asm-sparc/ebus.h
rename to arch/sparc/include/asm/ebus.h
index a5da2d00cd1814728af538bbca535919f2086cdd..83a6d16c22e68bd5c7f463fb13edc5a7e6af0949 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_EBUS_H
 #define ___ASM_SPARC_EBUS_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/ebus_64.h>
+#include <asm/ebus_64.h>
 #else
-#include <asm-sparc/ebus_32.h>
+#include <asm/ebus_32.h>
 #endif
 #endif
similarity index 66%
rename from include/asm-sparc/elf.h
rename to arch/sparc/include/asm/elf.h
index f035c45d7b5e3ee4f02fce36767775fd85083cb3..0a2816c50b07faa54c98a1b75798d4d192ddc2da 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_ELF_H
 #define ___ASM_SPARC_ELF_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/elf_64.h>
+#include <asm/elf_64.h>
 #else
-#include <asm-sparc/elf_32.h>
+#include <asm/elf_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/floppy.h
rename to arch/sparc/include/asm/floppy.h
index 6c628ba15a8d62ceaccb1e0124457435c478b445..faebd335b600647493ff6306f817220b23167af6 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_FLOPPY_H
 #define ___ASM_SPARC_FLOPPY_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/floppy_64.h>
+#include <asm/floppy_64.h>
 #else
-#include <asm-sparc/floppy_32.h>
+#include <asm/floppy_32.h>
 #endif
 #endif
similarity index 99%
rename from include/asm-sparc/floppy_32.h
rename to arch/sparc/include/asm/floppy_32.h
index acdd06eafe596c0c360264f44e6be4bdf379a2d9..ae3f00bf22ff91d990ab4c47aaa200729c570181 100644 (file)
@@ -1,4 +1,4 @@
-/* asm-sparc/floppy.h: Sparc specific parts of the Floppy driver.
+/* asm/floppy.h: Sparc specific parts of the Floppy driver.
  *
  * Copyright (C) 1995 David S. Miller (davem@davemloft.net)
  */
similarity index 65%
rename from include/asm-sparc/futex.h
rename to arch/sparc/include/asm/futex.h
index c6a9f038c531b22defd2ba117c975a14c660f747..736335f3671370532ce9c8ced8e0adb14e42776a 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_FUTEX_H
 #define ___ASM_SPARC_FUTEX_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/futex_64.h>
+#include <asm/futex_64.h>
 #else
-#include <asm-sparc/futex_32.h>
+#include <asm/futex_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/hardirq.h
rename to arch/sparc/include/asm/hardirq.h
index 15647877310031815fdbcfc2bada8d5de6c856f2..44d4e23451486a9c3d5f0041c42c58bbd3bb145c 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_HARDIRQ_H
 #define ___ASM_SPARC_HARDIRQ_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/hardirq_64.h>
+#include <asm/hardirq_64.h>
 #else
-#include <asm-sparc/hardirq_32.h>
+#include <asm/hardirq_32.h>
 #endif
 #endif
similarity index 66%
rename from include/asm-sparc/head.h
rename to arch/sparc/include/asm/head.h
index 14652abdea31c42cf97a6a3dc93df7bcb19804ca..be8f03f3e731d568e2260bb09bb1006708a9e2cb 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_HEAD_H
 #define ___ASM_SPARC_HEAD_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/head_64.h>
+#include <asm/head_64.h>
 #else
-#include <asm-sparc/head_32.h>
+#include <asm/head_32.h>
 #endif
 #endif
similarity index 67%
rename from include/asm-sparc/io.h
rename to arch/sparc/include/asm/io.h
index fc9024d3dfc30f5fdd7990c581abc33e19acc93b..a34b2994937ab2e4323de0308ab8a630729dcf70 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_IO_H
 #define ___ASM_SPARC_IO_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/io_64.h>
+#include <asm/io_64.h>
 #else
-#include <asm-sparc/io_32.h>
+#include <asm/io_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/iommu.h
rename to arch/sparc/include/asm/iommu.h
index 91b072b0d7a083b1dfa272b7622ecf25d9859974..e650965b4a8d18224c0e68b9abd52d9bdf996fcf 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_IOMMU_H
 #define ___ASM_SPARC_IOMMU_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/iommu_64.h>
+#include <asm/iommu_64.h>
 #else
-#include <asm-sparc/iommu_32.h>
+#include <asm/iommu_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/ipcbuf.h
rename to arch/sparc/include/asm/ipcbuf.h
index 037605d986e25f7c527468c67ee33330c2bce9a1..17d6ef7b23a480665487925d0837ccd688833a73 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_IPCBUF_H
 #define ___ASM_SPARC_IPCBUF_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/ipcbuf_64.h>
+#include <asm/ipcbuf_64.h>
 #else
-#include <asm-sparc/ipcbuf_32.h>
+#include <asm/ipcbuf_32.h>
 #endif
 #endif
similarity index 66%
rename from include/asm-sparc/irq.h
rename to arch/sparc/include/asm/irq.h
index 7af6bb4aa09c8043c68f42fb7ae1a620afc61d57..3b44a6a140747d91837a415496d4b3a065b02abe 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_IRQ_H
 #define ___ASM_SPARC_IRQ_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/irq_64.h>
+#include <asm/irq_64.h>
 #else
-#include <asm-sparc/irq_32.h>
+#include <asm/irq_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/irqflags.h
rename to arch/sparc/include/asm/irqflags.h
index c6402b187e23cca383976e3beacc6bafd8968919..1e138632bd3f03689da1583cb6e70cd377e74698 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_IRQFLAGS_H
 #define ___ASM_SPARC_IRQFLAGS_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/irqflags_64.h>
+#include <asm/irqflags_64.h>
 #else
-#include <asm-sparc/irqflags_32.h>
+#include <asm/irqflags_32.h>
 #endif
 #endif
similarity index 96%
rename from include/asm-sparc/irqflags_32.h
rename to arch/sparc/include/asm/irqflags_32.h
index db398fb328263051be401e0e0aabb97fcdf2a77f..0fca9d97d44f15bd1a3832de7e02a990e0fa6577 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * include/asm-sparc/irqflags.h
+ * include/asm/irqflags.h
  *
  * IRQ flags handling
  *
similarity index 97%
rename from include/asm-sparc/irqflags_64.h
rename to arch/sparc/include/asm/irqflags_64.h
index 024fc54d068205befa262d80582d6dc591f34fe6..bb42e59162aab85829566a369255a55ce67180aa 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * include/asm-sparc64/irqflags.h
+ * include/asm/irqflags.h
  *
  * IRQ flags handling
  *
similarity index 65%
rename from include/asm-sparc/kdebug.h
rename to arch/sparc/include/asm/kdebug.h
index fe07d00d0534424d0d295341f60ba59cd72e3510..8d12581ca38616458ee1a04a9e7454b6208caa4c 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_KDEBUG_H
 #define ___ASM_SPARC_KDEBUG_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/kdebug_64.h>
+#include <asm/kdebug_64.h>
 #else
-#include <asm-sparc/kdebug_32.h>
+#include <asm/kdebug_32.h>
 #endif
 #endif
similarity index 64%
rename from include/asm-sparc/mc146818rtc.h
rename to arch/sparc/include/asm/mc146818rtc.h
index 9ab65c21e9e43233b2c9c925438bf4c8f1cceba7..67ed9e3a02357260dacd8a065ef8840a9a34de56 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_MC146818RTC_H
 #define ___ASM_SPARC_MC146818RTC_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/mc146818rtc_64.h>
+#include <asm/mc146818rtc_64.h>
 #else
-#include <asm-sparc/mc146818rtc_32.h>
+#include <asm/mc146818rtc_32.h>
 #endif
 #endif
similarity index 66%
rename from include/asm-sparc/mmu.h
rename to arch/sparc/include/asm/mmu.h
index ee66bf6dcbd6b1deefbc8a2b90dc5f65d2385827..88fa313887dbafff2db6f62fbb5a8c1eef805a07 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_MMU_H
 #define ___ASM_SPARC_MMU_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/mmu_64.h>
+#include <asm/mmu_64.h>
 #else
-#include <asm-sparc/mmu_32.h>
+#include <asm/mmu_32.h>
 #endif
 #endif
similarity index 64%
rename from include/asm-sparc/mmu_context.h
rename to arch/sparc/include/asm/mmu_context.h
index e14efb9532ff235c4f5f6e769197a8f557584953..5531346c64f9b55d90d58b07437cc5a1b842ab49 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_MMU_CONTEXT_H
 #define ___ASM_SPARC_MMU_CONTEXT_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/mmu_context_64.h>
+#include <asm/mmu_context_64.h>
 #else
-#include <asm-sparc/mmu_context_32.h>
+#include <asm/mmu_context_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/module.h
rename to arch/sparc/include/asm/module.h
index 516138fe681a53117f673b942ba1b293a203ccee..e82cf9a3e60ee53e22ba05abdb0ef2a024e8b487 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_MODULE_H
 #define ___ASM_SPARC_MODULE_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/module_64.h>
+#include <asm/module_64.h>
 #else
-#include <asm-sparc/module_32.h>
+#include <asm/module_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/mostek.h
rename to arch/sparc/include/asm/mostek.h
index 5b9f7fec7ee74cb1b6bb2d72bb952d5268ef8b82..433be3e0a69b375d057ae4a424ab61c806703b59 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_MOSTEK_H
 #define ___ASM_SPARC_MOSTEK_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/mostek_64.h>
+#include <asm/mostek_64.h>
 #else
-#include <asm-sparc/mostek_32.h>
+#include <asm/mostek_32.h>
 #endif
 #endif
similarity index 64%
rename from include/asm-sparc/of_platform.h
rename to arch/sparc/include/asm/of_platform.h
index 851eb84d737ef61a3eb9ea9fe2c1bcc459373acf..aa699775ffba8c9dd40b56465d725f6aba224fb1 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_OF_PLATFORM_H
 #define ___ASM_SPARC_OF_PLATFORM_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/of_platform_64.h>
+#include <asm/of_platform_64.h>
 #else
-#include <asm-sparc/of_platform_32.h>
+#include <asm/of_platform_32.h>
 #endif
 #endif
similarity index 91%
rename from include/asm-sparc/of_platform_32.h
rename to arch/sparc/include/asm/of_platform_32.h
index 38334351c36b04685861015c7a997676bd224b3a..723f7c9b7411dbce7f5d995b1538a26928cdd630 100644 (file)
@@ -3,7 +3,7 @@
 /*
  *    Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
  *                      <benh@kernel.crashing.org>
- *    Modified for Sparc by merging parts of asm-sparc/of_device.h
+ *    Modified for Sparc by merging parts of asm/of_device.h
  *             by Stephen Rothwell
  *
  *  This program is free software; you can redistribute it and/or
similarity index 91%
rename from include/asm-sparc/of_platform_64.h
rename to arch/sparc/include/asm/of_platform_64.h
index 78aa032b674c42bb7a4e1f02aaa6d243d298d13f..4f66a5f6342d88dae63419b799707fbabba1c3f2 100644 (file)
@@ -3,7 +3,7 @@
 /*
  *    Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
  *                      <benh@kernel.crashing.org>
- *    Modified for Sparc by merging parts of asm-sparc/of_device.h
+ *    Modified for Sparc by merging parts of asm/of_device.h
  *             by Stephen Rothwell
  *
  *  This program is free software; you can redistribute it and/or
similarity index 65%
rename from include/asm-sparc/openprom.h
rename to arch/sparc/include/asm/openprom.h
index 8c349f0619946939cbcef609a403db678620e495..aaeae905ed3f945482a27d812a7df0b245ec22a9 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_OPENPROM_H
 #define ___ASM_SPARC_OPENPROM_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/openprom_64.h>
+#include <asm/openprom_64.h>
 #else
-#include <asm-sparc/openprom_32.h>
+#include <asm/openprom_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/oplib.h
rename to arch/sparc/include/asm/oplib.h
index e88d7c04a292279013e44b15a83843752d4dffa0..72e04e13a6b4059b1c0f5a0946c2510db51f6ce9 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_OPLIB_H
 #define ___ASM_SPARC_OPLIB_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/oplib_64.h>
+#include <asm/oplib_64.h>
 #else
-#include <asm-sparc/oplib_32.h>
+#include <asm/oplib_32.h>
 #endif
 #endif
similarity index 66%
rename from include/asm-sparc/page.h
rename to arch/sparc/include/asm/page.h
index f32f49fcf75c71f4cf37f4b0123dc833a1a19f7c..f21de034902596744ed071a80b0a53147b04460e 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_PAGE_H
 #define ___ASM_SPARC_PAGE_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/page_64.h>
+#include <asm/page_64.h>
 #else
-#include <asm-sparc/page_32.h>
+#include <asm/page_32.h>
 #endif
 #endif
similarity index 66%
rename from include/asm-sparc/pci.h
rename to arch/sparc/include/asm/pci.h
index b807d52a48091164b0010be6bd4466863508ed8c..6e14fd179335d0a24d05cc71293589b63331607f 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_PCI_H
 #define ___ASM_SPARC_PCI_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/pci_64.h>
+#include <asm/pci_64.h>
 #else
-#include <asm-sparc/pci_32.h>
+#include <asm/pci_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/percpu.h
rename to arch/sparc/include/asm/percpu.h
index d98ed6cf2e36cdc31541e80bdcb9abd8d9f44a86..bfb1d19ff1bf1ed11303f2a50895d3c692601d90 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_PERCPU_H
 #define ___ASM_SPARC_PERCPU_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/percpu_64.h>
+#include <asm/percpu_64.h>
 #else
-#include <asm-sparc/percpu_32.h>
+#include <asm/percpu_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/pgalloc.h
rename to arch/sparc/include/asm/pgalloc.h
index 7fa02b53d392cef4e9c48a82decdbc639c9b97ae..b6db1f7cdcab325d216c4549a4e3426cf73ca9b5 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_PGALLOC_H
 #define ___ASM_SPARC_PGALLOC_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/pgalloc_64.h>
+#include <asm/pgalloc_64.h>
 #else
-#include <asm-sparc/pgalloc_32.h>
+#include <asm/pgalloc_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/pgtable.h
rename to arch/sparc/include/asm/pgtable.h
index 63cdef53bc52ef78ef6521cfe19205be61001d1e..59ba6f6207322ef7533a73998f54d1b1b888fc94 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_PGTABLE_H
 #define ___ASM_SPARC_PGTABLE_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/pgtable_64.h>
+#include <asm/pgtable_64.h>
 #else
-#include <asm-sparc/pgtable_32.h>
+#include <asm/pgtable_32.h>
 #endif
 #endif
similarity index 99%
rename from include/asm-sparc/pgtable_32.h
rename to arch/sparc/include/asm/pgtable_32.h
index 781bd4694a1c1fd2ce698c84c014caecf189bf97..08237fda8874390b267a2036564f364e79eaf1a6 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef _SPARC_PGTABLE_H
 #define _SPARC_PGTABLE_H
 
-/*  asm-sparc/pgtable.h:  Defines and functions used to work
+/*  asm/pgtable.h:  Defines and functions used to work
  *                        with Sparc page tables.
  *
  *  Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
similarity index 64%
rename from include/asm-sparc/posix_types.h
rename to arch/sparc/include/asm/posix_types.h
index 58c820d75e8335db5ab20f7bf375d6f2706fe802..03a0e091a884a1909e5f2e7fb8a03e01a0079370 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_POSIX_TYPES_H
 #define ___ASM_SPARC_POSIX_TYPES_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/posix_types_64.h>
+#include <asm/posix_types_64.h>
 #else
-#include <asm-sparc/posix_types_32.h>
+#include <asm/posix_types_32.h>
 #endif
 #endif
similarity index 64%
rename from include/asm-sparc/processor.h
rename to arch/sparc/include/asm/processor.h
index 11a66bb02eaa01b1dc520e05dfef5adfd2193823..9da9646bf6c6b326ee6d6f47b1d60bd4dd970453 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_PROCESSOR_H
 #define ___ASM_SPARC_PROCESSOR_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/processor_64.h>
+#include <asm/processor_64.h>
 #else
-#include <asm-sparc/processor_32.h>
+#include <asm/processor_32.h>
 #endif
 #endif
similarity index 97%
rename from include/asm-sparc/processor_32.h
rename to arch/sparc/include/asm/processor_32.h
index 562c0d69c537adc6914dc100c1e10124a92a3c4c..2ae67a2e7f3a877c21644cbd83adac3e235ae522 100644 (file)
@@ -1,4 +1,4 @@
-/* include/asm-sparc/processor.h
+/* include/asm/processor.h
  *
  * Copyright (C) 1994 David S. Miller (davem@caip.rutgers.edu)
  */
@@ -114,6 +114,7 @@ extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
 
 extern unsigned long get_wchan(struct task_struct *);
 
+#define task_pt_regs(tsk) ((tsk)->thread.kregs)
 #define KSTK_EIP(tsk)  ((tsk)->thread.kregs->pc)
 #define KSTK_ESP(tsk)  ((tsk)->thread.kregs->u_regs[UREG_FP])
 
similarity index 99%
rename from include/asm-sparc/processor_64.h
rename to arch/sparc/include/asm/processor_64.h
index 70d42801a0d20cd08f78eb5dcc544adf49cafc19..137a6bd72fc805f9ddfd4f4a12acd3fdf7199c78 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * include/asm-sparc64/processor.h
+ * include/asm/processor.h
  *
  * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
  */
similarity index 65%
rename from include/asm-sparc/ptrace.h
rename to arch/sparc/include/asm/ptrace.h
index f36ab6c30ff30cbf19c71e39af7a33c877b4b4bb..6dcbe2eed2e201a4c8bc980dcb15b868474fbcf3 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_PTRACE_H
 #define ___ASM_SPARC_PTRACE_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/ptrace_64.h>
+#include <asm/ptrace_64.h>
 #else
-#include <asm-sparc/ptrace_32.h>
+#include <asm/ptrace_32.h>
 #endif
 #endif
similarity index 98%
rename from include/asm-sparc/ptrace_32.h
rename to arch/sparc/include/asm/ptrace_32.h
index 0401cc7ec38e9cd04f839333c5825b97d6795271..d43c88b86834d2fc08986b32e1191b4962bf0f9d 100644 (file)
@@ -74,6 +74,7 @@ struct sparc_stackf {
 
 #define user_mode(regs) (!((regs)->psr & PSR_PS))
 #define instruction_pointer(regs) ((regs)->pc)
+#define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP])
 unsigned long profile_pc(struct pt_regs *);
 extern void show_regs(struct pt_regs *);
 #endif
similarity index 99%
rename from include/asm-sparc/ptrace_64.h
rename to arch/sparc/include/asm/ptrace_64.h
index a682e66d5c4a635e09cc3941d22f74150d87e948..ec6d45c84cd0e4a0a0aa12cbc6e229b975d6f38e 100644 (file)
@@ -146,6 +146,7 @@ do {        current_thread_info()->syscall_noerror = 1; \
 } while (0)
 #define user_mode(regs) (!((regs)->tstate & TSTATE_PRIV))
 #define instruction_pointer(regs) ((regs)->tpc)
+#define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP])
 #define regs_return_value(regs) ((regs)->u_regs[UREG_I0])
 #ifdef CONFIG_SMP
 extern unsigned long profile_pc(struct pt_regs *);
similarity index 66%
rename from include/asm-sparc/reg.h
rename to arch/sparc/include/asm/reg.h
index cb34b0a49aad47375066c73ed031845d64be868d..0c16e19cae4da870e1bee3a512009bb7943ebe9b 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_REG_H
 #define ___ASM_SPARC_REG_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/reg_64.h>
+#include <asm/reg_64.h>
 #else
-#include <asm-sparc/reg_32.h>
+#include <asm/reg_32.h>
 #endif
 #endif
similarity index 98%
rename from include/asm-sparc/reg_32.h
rename to arch/sparc/include/asm/reg_32.h
index 42fecfcd97e7bc92ddc3aee27b01ddcc18e0914a..1efb056fb3d15994c96214ed77ad6348fb097fe4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * linux/include/asm-sparc/reg.h
+ * linux/include/asm/reg.h
  * Layout of the registers as expected by gdb on the Sparc
  * we should replace the user.h definitions with those in
  * this file, we don't even use the other
similarity index 97%
rename from include/asm-sparc/reg_64.h
rename to arch/sparc/include/asm/reg_64.h
index eb24a07ff4d568c9d9e53fb30368e6c0e3bc039f..6f277d7c7d88f6114d5d5f2859f78a1323997d00 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * linux/asm-sparc64/reg.h
+ * linux/asm/reg.h
  * Layout of the registers as expected by gdb on the Sparc
  * we should replace the user.h definitions with those in
  * this file, we don't even use the other
similarity index 66%
rename from include/asm-sparc/sbus.h
rename to arch/sparc/include/asm/sbus.h
index 8f29a19796658336930648cd958b6b3f4f2833cd..f82481ab44db043cd27314ffa30bf4268ef39e7e 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_SBUS_H
 #define ___ASM_SPARC_SBUS_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/sbus_64.h>
+#include <asm/sbus_64.h>
 #else
-#include <asm-sparc/sbus_32.h>
+#include <asm/sbus_32.h>
 #endif
 #endif
similarity index 64%
rename from include/asm-sparc/scatterlist.h
rename to arch/sparc/include/asm/scatterlist.h
index b1a0e316c2b6f762d9f26c3dd530a82caa967fd4..ec21a4517641b16b8414baab15f18a55a4363e27 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_SCATTERLIST_H
 #define ___ASM_SPARC_SCATTERLIST_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/scatterlist_64.h>
+#include <asm/scatterlist_64.h>
 #else
-#include <asm-sparc/scatterlist_32.h>
+#include <asm/scatterlist_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/sections.h
rename to arch/sparc/include/asm/sections.h
index cbd019162425bf90b4df4ef526b7c42370513cc1..c7c69b00967ffe4fa826dcdbece00d901c1fe270 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_SECTIONS_H
 #define ___ASM_SPARC_SECTIONS_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/sections_64.h>
+#include <asm/sections_64.h>
 #else
-#include <asm-sparc/sections_32.h>
+#include <asm/sections_32.h>
 #endif
 #endif
similarity index 64%
rename from include/asm-sparc/sfp-machine.h
rename to arch/sparc/include/asm/sfp-machine.h
index c676fcc2dd277df52fe27378f00f97f91ad32706..4ebc3823ed4fec0a5fb66ad3324bedab98fe19a2 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_SFP_MACHINE_H
 #define ___ASM_SPARC_SFP_MACHINE_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/sfp-machine_64.h>
+#include <asm/sfp-machine_64.h>
 #else
-#include <asm-sparc/sfp-machine_32.h>
+#include <asm/sfp-machine_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/shmparam.h
rename to arch/sparc/include/asm/shmparam.h
index 16fda7e9acc851c17ba99616e5c677ecceb73e46..8bf0cfe0694f8951717b8a885c415c254b77949b 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_SHMPARAM_H
 #define ___ASM_SPARC_SHMPARAM_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/shmparam_64.h>
+#include <asm/shmparam_64.h>
 #else
-#include <asm-sparc/shmparam_32.h>
+#include <asm/shmparam_32.h>
 #endif
 #endif
similarity index 64%
rename from include/asm-sparc/sigcontext.h
rename to arch/sparc/include/asm/sigcontext.h
index 82fc7d54a4fa18a55af42944c99ed6fed0d18751..e92de7e286b54dceaf41b679bef2d50a854cdadc 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_SIGCONTEXT_H
 #define ___ASM_SPARC_SIGCONTEXT_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/sigcontext_64.h>
+#include <asm/sigcontext_64.h>
 #else
-#include <asm-sparc/sigcontext_32.h>
+#include <asm/sigcontext_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/siginfo.h
rename to arch/sparc/include/asm/siginfo.h
index 2c9fccf4ce18f65bccf3becbb1e110cc79057cc3..bd81f8d7f5ce5aff8b846f61daef596a7a342ffa 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_SIGINFO_H
 #define ___ASM_SPARC_SIGINFO_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/siginfo_64.h>
+#include <asm/siginfo_64.h>
 #else
-#include <asm-sparc/siginfo_32.h>
+#include <asm/siginfo_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/signal.h
rename to arch/sparc/include/asm/signal.h
index 36f5f9e482f7240ad91f199d4468d114cadd8ac2..27ab05dc203e82bc838d7e9d999e7a2ea827a343 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_SIGNAL_H
 #define ___ASM_SPARC_SIGNAL_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/signal_64.h>
+#include <asm/signal_64.h>
 #else
-#include <asm-sparc/signal_32.h>
+#include <asm/signal_32.h>
 #endif
 #endif
similarity index 66%
rename from include/asm-sparc/smp.h
rename to arch/sparc/include/asm/smp.h
index 1f9dedfbabd816c0cbd8c2abb7d9d1f4e4c10e5c..b59672d0e19b6dd988fda29ad2871040e833168d 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_SMP_H
 #define ___ASM_SPARC_SMP_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/smp_64.h>
+#include <asm/smp_64.h>
 #else
-#include <asm-sparc/smp_32.h>
+#include <asm/smp_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/spinlock.h
rename to arch/sparc/include/asm/spinlock.h
index 3b71c50b72eb10c615dc6cd3ba481433bb5352c2..f276b0036b2c4d3d547d25a2a7ff5e9722eac7af 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_SPINLOCK_H
 #define ___ASM_SPARC_SPINLOCK_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/spinlock_64.h>
+#include <asm/spinlock_64.h>
 #else
-#include <asm-sparc/spinlock_32.h>
+#include <asm/spinlock_32.h>
 #endif
 #endif
similarity index 66%
rename from include/asm-sparc/stat.h
rename to arch/sparc/include/asm/stat.h
index 9fdcaf8c9cd30b180b81bbb1dedff0f437601ac3..d8153013df7270d134416ed0ce272db68ab80cb7 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_STAT_H
 #define ___ASM_SPARC_STAT_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/stat_64.h>
+#include <asm/stat_64.h>
 #else
-#include <asm-sparc/stat_32.h>
+#include <asm/stat_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/statfs.h
rename to arch/sparc/include/asm/statfs.h
index a70cc52e7018f6fad845c7f6d8f826924e97a7c7..5e937a73743dd85d7b830db6be254be72ed01105 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_STATFS_H
 #define ___ASM_SPARC_STATFS_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/statfs_64.h>
+#include <asm/statfs_64.h>
 #else
-#include <asm-sparc/statfs_32.h>
+#include <asm/statfs_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/string.h
rename to arch/sparc/include/asm/string.h
index 14c04c7697a5e4b61c3bc1703409a1c477d55ca1..98b72a0c8e6e624d0ea6618e4f8ace5736369309 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_STRING_H
 #define ___ASM_SPARC_STRING_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/string_64.h>
+#include <asm/string_64.h>
 #else
-#include <asm-sparc/string_32.h>
+#include <asm/string_32.h>
 #endif
 #endif
similarity index 99%
rename from include/asm-sparc/sunbpp.h
rename to arch/sparc/include/asm/sunbpp.h
index 92ee1a8ff3a2783a248c417cb1f19198f163e814..d81a02eaf78bfc392fb0431adf40fe3b82f39fd7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * include/asm-sparc/sunbpp.h
+ * include/asm/sunbpp.h
  */
 
 #ifndef _ASM_SPARC_SUNBPP_H
diff --git a/arch/sparc/include/asm/syscall.h b/arch/sparc/include/asm/syscall.h
new file mode 100644 (file)
index 0000000..7486c60
--- /dev/null
@@ -0,0 +1,120 @@
+#ifndef __ASM_SPARC_SYSCALL_H
+#define __ASM_SPARC_SYSCALL_H
+
+#include <linux/kernel.h>
+#include <linux/sched.h>
+#include <asm/ptrace.h>
+
+/* The system call number is given by the user in %g1 */
+static inline long syscall_get_nr(struct task_struct *task,
+                                 struct pt_regs *regs)
+{
+       int syscall_p = pt_regs_is_syscall(regs);
+
+       return (syscall_p ? regs->u_regs[UREG_G1] : -1L);
+}
+
+static inline void syscall_rollback(struct task_struct *task,
+                                   struct pt_regs *regs)
+{
+       /* XXX This needs some thought.  On Sparc we don't
+        * XXX save away the original %o0 value somewhere.
+        * XXX Instead we hold it in register %l5 at the top
+        * XXX level trap frame and pass this down to the signal
+        * XXX dispatch code which is the only place that value
+        * XXX ever was needed.
+        */
+}
+
+#ifdef CONFIG_SPARC32
+static inline bool syscall_has_error(struct pt_regs *regs)
+{
+       return (regs->psr & PSR_C) ? true : false;
+}
+static inline void syscall_set_error(struct pt_regs *regs)
+{
+       regs->psr |= PSR_C;
+}
+static inline void syscall_clear_error(struct pt_regs *regs)
+{
+       regs->psr &= ~PSR_C;
+}
+#else
+static inline bool syscall_has_error(struct pt_regs *regs)
+{
+       return (regs->tstate & (TSTATE_XCARRY | TSTATE_ICARRY)) ? true : false;
+}
+static inline void syscall_set_error(struct pt_regs *regs)
+{
+       regs->tstate |= (TSTATE_XCARRY | TSTATE_ICARRY);
+}
+static inline void syscall_clear_error(struct pt_regs *regs)
+{
+       regs->tstate &= ~(TSTATE_XCARRY | TSTATE_ICARRY);
+}
+#endif
+
+static inline long syscall_get_error(struct task_struct *task,
+                                    struct pt_regs *regs)
+{
+       long val = regs->u_regs[UREG_I0];
+
+       return (syscall_has_error(regs) ? -val : 0);
+}
+
+static inline long syscall_get_return_value(struct task_struct *task,
+                                           struct pt_regs *regs)
+{
+       long val = regs->u_regs[UREG_I0];
+
+       return val;
+}
+
+static inline void syscall_set_return_value(struct task_struct *task,
+                                           struct pt_regs *regs,
+                                           int error, long val)
+{
+       if (error) {
+               syscall_set_error(regs);
+               regs->u_regs[UREG_I0] = -error;
+       } else {
+               syscall_clear_error(regs);
+               regs->u_regs[UREG_I0] = val;
+       }
+}
+
+static inline void syscall_get_arguments(struct task_struct *task,
+                                        struct pt_regs *regs,
+                                        unsigned int i, unsigned int n,
+                                        unsigned long *args)
+{
+       int zero_extend = 0;
+       unsigned int j;
+
+#ifdef CONFIG_SPARC64
+       if (test_tsk_thread_flag(task, TIF_32BIT))
+               zero_extend = 1;
+#endif
+
+       for (j = 0; j < n; j++) {
+               unsigned long val = regs->u_regs[UREG_I0 + i + j];
+
+               if (zero_extend)
+                       args[j] = (u32) val;
+               else
+                       args[j] = val;
+       }
+}
+
+static inline void syscall_set_arguments(struct task_struct *task,
+                                        struct pt_regs *regs,
+                                        unsigned int i, unsigned int n,
+                                        const unsigned long *args)
+{
+       unsigned int j;
+
+       for (j = 0; j < n; j++)
+               regs->u_regs[UREG_I0 + i + j] = args[j];
+}
+
+#endif /* __ASM_SPARC_SYSCALL_H */
similarity index 65%
rename from include/asm-sparc/system.h
rename to arch/sparc/include/asm/system.h
index 15e2a3bc4f6154f95f17a8bb2a1de37214b3a381..7944a7cfc99636032c358bfa894332fb50c07c3a 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_SYSTEM_H
 #define ___ASM_SPARC_SYSTEM_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/system_64.h>
+#include <asm/system_64.h>
 #else
-#include <asm-sparc/system_32.h>
+#include <asm/system_32.h>
 #endif
 #endif
similarity index 64%
rename from include/asm-sparc/thread_info.h
rename to arch/sparc/include/asm/thread_info.h
index 64155cf89f3706130c586bb5a0eebc2eb6ef87d8..122d7acc07e6b91519b756e9676e4dbe10c69ab9 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_THREAD_INFO_H
 #define ___ASM_SPARC_THREAD_INFO_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/thread_info_64.h>
+#include <asm/thread_info_64.h>
 #else
-#include <asm-sparc/thread_info_32.h>
+#include <asm/thread_info_32.h>
 #endif
 #endif
similarity index 95%
rename from include/asm-sparc/thread_info_32.h
rename to arch/sparc/include/asm/thread_info_32.h
index 2cf9db0440556005d3b5eef8847184238e79dc97..cbb892d0dff04b033ae371af6175cb443cb2c06e 100644 (file)
@@ -130,7 +130,7 @@ BTFIXUPDEF_CALL(void, free_thread_info, struct thread_info *)
  * thread information flag bit numbers
  */
 #define TIF_SYSCALL_TRACE      0       /* syscall trace active */
-/* flag bit 1 is available */
+#define TIF_NOTIFY_RESUME      1       /* callback before returning to user */
 #define TIF_SIGPENDING         2       /* signal pending */
 #define TIF_NEED_RESCHED       3       /* rescheduling necessary */
 #define TIF_RESTORE_SIGMASK    4       /* restore signal mask in do_signal() */
@@ -142,12 +142,17 @@ BTFIXUPDEF_CALL(void, free_thread_info, struct thread_info *)
 
 /* as above, but as bit values */
 #define _TIF_SYSCALL_TRACE     (1<<TIF_SYSCALL_TRACE)
+#define _TIF_NOTIFY_RESUME     (1<<TIF_NOTIFY_RESUME)
 #define _TIF_SIGPENDING                (1<<TIF_SIGPENDING)
 #define _TIF_NEED_RESCHED      (1<<TIF_NEED_RESCHED)
 #define _TIF_RESTORE_SIGMASK   (1<<TIF_RESTORE_SIGMASK)
 #define _TIF_USEDFPU           (1<<TIF_USEDFPU)
 #define _TIF_POLLING_NRFLAG    (1<<TIF_POLLING_NRFLAG)
 
+#define _TIF_DO_NOTIFY_RESUME_MASK     (_TIF_NOTIFY_RESUME | \
+                                        _TIF_SIGPENDING | \
+                                        _TIF_RESTORE_SIGMASK)
+
 #endif /* __KERNEL__ */
 
 #endif /* _ASM_THREAD_INFO_H */
similarity index 97%
rename from include/asm-sparc/thread_info_64.h
rename to arch/sparc/include/asm/thread_info_64.h
index 960969d5ad06f46bcca53ef7b06a406713744403..c0a737d7292c4462456f0b0e27ff6aae149142a6 100644 (file)
@@ -219,7 +219,7 @@ register struct thread_info *current_thread_info_reg asm("g6");
  *      nop
  */
 #define TIF_SYSCALL_TRACE      0       /* syscall trace active */
-/* flags bit 1 is available */
+#define TIF_NOTIFY_RESUME      1       /* callback before returning to user */
 #define TIF_SIGPENDING         2       /* signal pending */
 #define TIF_NEED_RESCHED       3       /* rescheduling necessary */
 #define TIF_PERFCTR            4       /* performance counters active */
@@ -239,6 +239,7 @@ register struct thread_info *current_thread_info_reg asm("g6");
 #define TIF_POLLING_NRFLAG     14
 
 #define _TIF_SYSCALL_TRACE     (1<<TIF_SYSCALL_TRACE)
+#define _TIF_NOTIFY_RESUME     (1<<TIF_NOTIFY_RESUME)
 #define _TIF_SIGPENDING                (1<<TIF_SIGPENDING)
 #define _TIF_NEED_RESCHED      (1<<TIF_NEED_RESCHED)
 #define _TIF_PERFCTR           (1<<TIF_PERFCTR)
@@ -250,8 +251,9 @@ register struct thread_info *current_thread_info_reg asm("g6");
 #define _TIF_POLLING_NRFLAG    (1<<TIF_POLLING_NRFLAG)
 
 #define _TIF_USER_WORK_MASK    ((0xff << TI_FLAG_WSAVED_SHIFT) | \
-                                (_TIF_SIGPENDING | \
-                                 _TIF_NEED_RESCHED | _TIF_PERFCTR))
+                                _TIF_DO_NOTIFY_RESUME_MASK | \
+                                _TIF_NEED_RESCHED | _TIF_PERFCTR)
+#define _TIF_DO_NOTIFY_RESUME_MASK     (_TIF_NOTIFY_RESUME | _TIF_SIGPENDING)
 
 /*
  * Thread-synchronous status.
similarity index 65%
rename from include/asm-sparc/timer.h
rename to arch/sparc/include/asm/timer.h
index 475baa05a96eff30f0a5a71e7ac2b9b5b923b9e8..612fd2779d9eaffe78dbf590194290e14fb05a98 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_TIMER_H
 #define ___ASM_SPARC_TIMER_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/timer_64.h>
+#include <asm/timer_64.h>
 #else
-#include <asm-sparc/timer_32.h>
+#include <asm/timer_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/timex.h
rename to arch/sparc/include/asm/timex.h
index 01d9f199d45243c1025fcbf15c48c4c79d47af01..70cc37b73827bc2fe1a3a5045326a893da6c3844 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_TIMEX_H
 #define ___ASM_SPARC_TIMEX_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/timex_64.h>
+#include <asm/timex_64.h>
 #else
-#include <asm-sparc/timex_32.h>
+#include <asm/timex_32.h>
 #endif
 #endif
similarity index 89%
rename from include/asm-sparc/timex_32.h
rename to arch/sparc/include/asm/timex_32.h
index 71b45c90ccae3d5db1959b755d5ad4e7690b386e..b6ccdb0d6f7de3fb23b8691c036be8acaa62e91f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * linux/include/asm-sparc/timex.h
+ * linux/include/asm/timex.h
  *
  * sparc architecture timex specifications
  */
similarity index 90%
rename from include/asm-sparc/timex_64.h
rename to arch/sparc/include/asm/timex_64.h
index c622535c45600bd6c9faab97b40255e71685214d..18b30bc9823b4e132d381c5d3de985f7b20c38fc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * linux/include/asm-sparc64/timex.h
+ * linux/include/asm/timex.h
  *
  * sparc64 architecture timex specifications
  */
similarity index 66%
rename from include/asm-sparc/tlb.h
rename to arch/sparc/include/asm/tlb.h
index a821057327c4994d34544d87c9aab549b40971c0..92d0393bbcdc5d16b5a0ee9308171e79bc7469a2 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_TLB_H
 #define ___ASM_SPARC_TLB_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/tlb_64.h>
+#include <asm/tlb_64.h>
 #else
-#include <asm-sparc/tlb_32.h>
+#include <asm/tlb_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/tlbflush.h
rename to arch/sparc/include/asm/tlbflush.h
index 6e6bc12227b86f180108a1df5f26f01b07917aa6..2c9629fad1e2c33c6d33106ac53318e8ca98d94d 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_TLBFLUSH_H
 #define ___ASM_SPARC_TLBFLUSH_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/tlbflush_64.h>
+#include <asm/tlbflush_64.h>
 #else
-#include <asm-sparc/tlbflush_32.h>
+#include <asm/tlbflush_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/topology.h
rename to arch/sparc/include/asm/topology.h
index ed13630f32e25f68057f134b4a3083ef6c668f0f..ee4f191d394aa2789e48cdd98d8f51c2d3c8d45e 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_TOPOLOGY_H
 #define ___ASM_SPARC_TOPOLOGY_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/topology_64.h>
+#include <asm/topology_64.h>
 #else
-#include <asm-sparc/topology_32.h>
+#include <asm/topology_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/uaccess.h
rename to arch/sparc/include/asm/uaccess.h
index 424facce5238774118d29473f2a6218d8f7a5adf..e88fbe5c0457a922cd7f761d81378ac91c562703 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_UACCESS_H
 #define ___ASM_SPARC_UACCESS_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/uaccess_64.h>
+#include <asm/uaccess_64.h>
 #else
-#include <asm-sparc/uaccess_32.h>
+#include <asm/uaccess_32.h>
 #endif
 #endif
similarity index 65%
rename from include/asm-sparc/unistd.h
rename to arch/sparc/include/asm/unistd.h
index 3c2609618a099e037306190ce38ebbd56d848218..4207fb362da03e300ce2cff530ca68401560c7f7 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_UNISTD_H
 #define ___ASM_SPARC_UNISTD_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/unistd_64.h>
+#include <asm/unistd_64.h>
 #else
-#include <asm-sparc/unistd_32.h>
+#include <asm/unistd_32.h>
 #endif
 #endif
similarity index 97%
rename from include/asm-sparc/utrap.h
rename to arch/sparc/include/asm/utrap.h
index 9da37babbe5b895ca7538d0d8880bbc9e6fe9ad5..b10e527c22d967b72d1e172c3d55acef4a7ba34f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * include/asm-sparc64/utrap.h
+ * include/asm/utrap.h
  *
  * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
  */
similarity index 97%
rename from include/asm-sparc/vaddrs.h
rename to arch/sparc/include/asm/vaddrs.h
index a22fed5a3c6bef64d9b0d6eb75e9699e81754a68..541e13755cecb7159826de08cad615e4c091fbf8 100644 (file)
@@ -4,7 +4,7 @@
 #include <asm/head.h>
 
 /*
- * asm-sparc/vaddrs.h:  Here we define the virtual addresses at
+ * asm/vaddrs.h:  Here we define the virtual addresses at
  *                      which important things will be mapped.
  *
  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
similarity index 66%
rename from include/asm-sparc/xor.h
rename to arch/sparc/include/asm/xor.h
index 35089a838c3f9713a68d6273bcc71f8fb52e0f03..8ed591c7db2dc1ee7220e543759165895bcfa52c 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef ___ASM_SPARC_XOR_H
 #define ___ASM_SPARC_XOR_H
 #if defined(__sparc__) && defined(__arch64__)
-#include <asm-sparc/xor_64.h>
+#include <asm/xor_64.h>
 #else
-#include <asm-sparc/xor_32.h>
+#include <asm/xor_32.h>
 #endif
 #endif
similarity index 99%
rename from include/asm-sparc/xor_32.h
rename to arch/sparc/include/asm/xor_32.h
index f34b2cfa82069f760ae371f16f7e1060578daa12..44bfa0787f3ffeb244b63a044e189f6e88782e8d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * include/asm-sparc/xor.h
+ * include/asm/xor.h
  *
  * Optimized RAID-5 checksumming functions for 32-bit Sparc.
  *
similarity index 98%
rename from include/asm-sparc/xor_64.h
rename to arch/sparc/include/asm/xor_64.h
index a0233884fc94c6084045b7db829c849ba9a06f24..bee4bf4be3af8cb4a41df1554252381eaddf952b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * include/asm-sparc64/xor.h
+ * include/asm/xor.h
  *
  * High speed xor_block operation for RAID4/5 utilizing the
  * UltraSparc Visual Instruction Set and Niagara block-init
index 2f96256dc5153bf04e06b176bff63da240495c3f..e8cdf715a546ccb0af9b0802d249368470a5a119 100644 (file)
@@ -1196,8 +1196,9 @@ sys_rt_sigreturn:
        be      1f
         nop
 
+       add     %sp, STACKFRAME_SZ, %o0
        call    syscall_trace
-        nop
+        mov    1, %o1
 
 1:
        /* We are returning to a signal handler. */
@@ -1287,8 +1288,12 @@ linux_fast_syscall:
         mov    %i3, %o3
 
 linux_syscall_trace:
+       add     %sp, STACKFRAME_SZ, %o0
        call    syscall_trace
-        nop
+        mov    0, %o1
+       cmp     %o0, 0
+       bne     3f
+        mov    -ENOSYS, %o0
        mov     %i0, %o0
        mov     %i1, %o1
        mov     %i2, %o2
@@ -1337,6 +1342,7 @@ syscall_is_too_hard:
        call    %l7
         mov    %i5, %o5
 
+3:
        st      %o0, [%sp + STACKFRAME_SZ + PT_I0]
 
 ret_sys_call:
@@ -1374,6 +1380,8 @@ ret_sys_call:
         st     %l2, [%sp + STACKFRAME_SZ + PT_NPC]
 
 linux_syscall_trace2:
+       add     %sp, STACKFRAME_SZ, %o0
+       mov     1, %o1
        call    syscall_trace
         add    %l1, 0x4, %l2                   /* npc = npc+4 */
        st      %l1, [%sp + STACKFRAME_SZ + PT_PC]
index 81f3b929743f12c17ec44642acb58f6526d4319c..20699c701412dc85506770375e94e3ccbe79efc5 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/signal.h>
 #include <linux/regset.h>
 #include <linux/elf.h>
+#include <linux/tracehook.h>
 
 #include <asm/pgtable.h>
 #include <asm/system.h>
@@ -450,21 +451,16 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
        return ret;
 }
 
-asmlinkage void syscall_trace(void)
+asmlinkage int syscall_trace(struct pt_regs *regs, int syscall_exit_p)
 {
-       if (!test_thread_flag(TIF_SYSCALL_TRACE))
-               return;
-       if (!(current->ptrace & PT_PTRACED))
-               return;
-       ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
-                                ? 0x80 : 0));
-       /*
-        * this isn't the same as continuing with a signal, but it will do
-        * for normal use.  strace only continues with a signal if the
-        * stopping signal is not SIGTRAP.  -brl
-        */
-       if (current->exit_code) {
-               send_sig (current->exit_code, current, 1);
-               current->exit_code = 0;
+       int ret = 0;
+
+       if (test_thread_flag(TIF_SYSCALL_TRACE)) {
+               if (syscall_exit_p)
+                       tracehook_report_syscall_exit(regs, 0);
+               else
+                       ret = tracehook_report_syscall_entry(regs);
        }
+
+       return ret;
 }
index 891f460b7b96ab1e8fb47d3483ba2aadf7361826..4da2e1f6629091ea60e7bccd81fc95b495ae065d 100644 (file)
@@ -69,12 +69,13 @@ ret_trap_lockless_ipi:
 
        ld      [%curptr + TI_FLAGS], %g2
 signal_p:
-       andcc   %g2, (_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK), %g0
+       andcc   %g2, _TIF_DO_NOTIFY_RESUME_MASK, %g0
        bz,a    ret_trap_continue
         ld     [%sp + STACKFRAME_SZ + PT_PSR], %t_psr
 
+       mov     %g2, %o2
        mov     %l5, %o1
-       call    do_signal
+       call    do_notify_resume
         add    %sp, STACKFRAME_SZ, %o0 ! pt_regs ptr
 
        /* Fall through. */
index 3fd1df9f9ba7e849609f5018d443378a301fb2e4..c94f91c8b6e0996dba7f057a815d0005376925d7 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/smp.h>
 #include <linux/binfmts.h>     /* do_coredum */
 #include <linux/bitops.h>
+#include <linux/tracehook.h>
 
 #include <asm/uaccess.h>
 #include <asm/ptrace.h>
@@ -513,7 +514,7 @@ static inline void syscall_restart(unsigned long orig_i0, struct pt_regs *regs,
  * want to handle. Thus you cannot kill init even with a SIGKILL even by
  * mistake.
  */
-asmlinkage void do_signal(struct pt_regs * regs, unsigned long orig_i0)
+static void do_signal(struct pt_regs *regs, unsigned long orig_i0)
 {
        struct k_sigaction ka;
        int restart_syscall;
@@ -552,6 +553,8 @@ asmlinkage void do_signal(struct pt_regs * regs, unsigned long orig_i0)
                 */
                if (test_thread_flag(TIF_RESTORE_SIGMASK))
                        clear_thread_flag(TIF_RESTORE_SIGMASK);
+
+               tracehook_signal_handler(signr, &info, &ka, regs, 0);
                return;
        }
        if (restart_syscall &&
@@ -579,6 +582,17 @@ asmlinkage void do_signal(struct pt_regs * regs, unsigned long orig_i0)
        }
 }
 
+void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0,
+                     unsigned long thread_info_flags)
+{
+       if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK))
+               do_signal(regs, orig_i0);
+       if (thread_info_flags & _TIF_NOTIFY_RESUME) {
+               clear_thread_flag(TIF_NOTIFY_RESUME);
+               tracehook_notify_resume(regs);
+       }
+}
+
 asmlinkage int
 do_sys_sigstack(struct sigstack __user *ssptr, struct sigstack __user *ossptr,
                unsigned long sp)
index 7c88263256af216c2b6889481297eeb95434949c..923a98959fa7349930efa343a4ab1febd4d5b05f 100644 (file)
@@ -17,6 +17,7 @@ config SPARC64
        select HAVE_LMB
        select HAVE_ARCH_KGDB
        select USE_GENERIC_SMP_HELPERS if SMP
+       select HAVE_ARCH_TRACEHOOK
 
 config GENERIC_TIME
        bool
index c1979482aa929bbf85db4a97ca7138365b35bda6..c831b0a4e660b69d1221230a2d5460db62459fef 100644 (file)
@@ -1,4 +1,4 @@
-#include <asm-sparc/unistd.h>
+#include <asm/unistd_32.h>
 
 unsigned sparc32_dir_class[] = {
 #include <asm-generic/audit_dir_write.h>
index 32fbab620852063dbe525bf3e9e32720af8b2323..fc294a292899ee383906e5040e2509907776527e 100644 (file)
@@ -22,8 +22,7 @@ extern void do_notify_resume(struct pt_regs *regs,
                             unsigned long orig_i0,
                             unsigned long thread_info_flags);
 
-extern asmlinkage void syscall_trace(struct pt_regs *regs,
-                                    int syscall_exit_p);
+extern asmlinkage int syscall_trace(struct pt_regs *regs, int syscall_exit_p);
 
 extern void bad_trap_tl1(struct pt_regs *regs, long lvl);
 
index f6c9fc92921d4405693f6f23ab2817bdee3993fa..bd578cc4856d6de60ed4e3ba54cec2874b32480c 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/audit.h>
 #include <linux/signal.h>
 #include <linux/regset.h>
+#include <linux/tracehook.h>
 #include <linux/compat.h>
 #include <linux/elf.h>
 
@@ -1049,8 +1050,10 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
        return ret;
 }
 
-asmlinkage void syscall_trace(struct pt_regs *regs, int syscall_exit_p)
+asmlinkage int syscall_trace(struct pt_regs *regs, int syscall_exit_p)
 {
+       int ret = 0;
+
        /* do the secure computing check first */
        secure_computing(regs->u_regs[UREG_G1]);
 
@@ -1064,27 +1067,14 @@ asmlinkage void syscall_trace(struct pt_regs *regs, int syscall_exit_p)
                audit_syscall_exit(result, regs->u_regs[UREG_I0]);
        }
 
-       if (!(current->ptrace & PT_PTRACED))
-               goto out;
-
-       if (!test_thread_flag(TIF_SYSCALL_TRACE))
-               goto out;
-
-       ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
-                                ? 0x80 : 0));
-
-       /*
-        * this isn't the same as continuing with a signal, but it will do
-        * for normal use.  strace only continues with a signal if the
-        * stopping signal is not SIGTRAP.  -brl
-        */
-       if (current->exit_code) {
-               send_sig(current->exit_code, current, 1);
-               current->exit_code = 0;
+       if (test_thread_flag(TIF_SYSCALL_TRACE)) {
+               if (syscall_exit_p)
+                       tracehook_report_syscall_exit(regs, 0);
+               else
+                       ret = tracehook_report_syscall_entry(regs);
        }
 
-out:
-       if (unlikely(current->audit_context) && !syscall_exit_p)
+       if (unlikely(current->audit_context) && !syscall_exit_p && !ret)
                audit_syscall_entry((test_thread_flag(TIF_32BIT) ?
                                     AUDIT_ARCH_SPARC :
                                     AUDIT_ARCH_SPARC64),
@@ -1093,4 +1083,6 @@ out:
                                    regs->u_regs[UREG_I1],
                                    regs->u_regs[UREG_I2],
                                    regs->u_regs[UREG_I3]);
+
+       return ret;
 }
index c6fc695fe1fe79fb7c695a3d2f51069e031c10b5..97a993c1f7f31bd62e7b310b08077b084622adff 100644 (file)
@@ -46,7 +46,7 @@ __handle_user_windows:
                wrpr                    %g0, RTRAP_PSTATE_IRQOFF, %pstate
                ldx                     [%g6 + TI_FLAGS], %l0
 
-1:             andcc                   %l0, _TIF_SIGPENDING, %g0
+1:             andcc                   %l0, _TIF_DO_NOTIFY_RESUME_MASK, %g0
                be,pt                   %xcc, __handle_user_windows_continue
                 nop
                mov                     %l5, %o1
@@ -86,7 +86,7 @@ __handle_perfctrs:
                 wrpr                   %g0, RTRAP_PSTATE, %pstate
                wrpr                    %g0, RTRAP_PSTATE_IRQOFF, %pstate
                ldx                     [%g6 + TI_FLAGS], %l0
-1:             andcc                   %l0, _TIF_SIGPENDING, %g0
+1:             andcc                   %l0, _TIF_DO_NOTIFY_RESUME_MASK, %g0
 
                be,pt                   %xcc, __handle_perfctrs_continue
                 sethi                  %hi(TSTATE_PEF), %o0
@@ -195,7 +195,7 @@ __handle_preemption_continue:
                 andcc                  %l1, %o0, %g0
                andcc                   %l0, _TIF_NEED_RESCHED, %g0
                bne,pn                  %xcc, __handle_preemption
-                andcc                  %l0, _TIF_SIGPENDING, %g0
+                andcc                  %l0, _TIF_DO_NOTIFY_RESUME_MASK, %g0
                bne,pn                  %xcc, __handle_signal
 __handle_signal_continue:
                 ldub                   [%g6 + TI_WSAVED], %o2
index 9667e96fd5138ba3531f507d8292483e40242a80..d1b84456a9eef969d6be3013432ccf1583631971 100644 (file)
 #include <linux/errno.h>
 #include <linux/wait.h>
 #include <linux/ptrace.h>
+#include <linux/tracehook.h>
 #include <linux/unistd.h>
 #include <linux/mm.h>
 #include <linux/tty.h>
 #include <linux/binfmts.h>
 #include <linux/bitops.h>
+#include <linux/tracehook.h>
 
 #include <asm/uaccess.h>
 #include <asm/ptrace.h>
@@ -574,6 +576,8 @@ static void do_signal(struct pt_regs *regs, unsigned long orig_i0)
                 * clear the TS_RESTORE_SIGMASK flag.
                 */
                current_thread_info()->status &= ~TS_RESTORE_SIGMASK;
+
+               tracehook_signal_handler(signr, &info, &ka, regs, 0);
                return;
        }
        if (restart_syscall &&
@@ -605,4 +609,8 @@ void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, unsigned long
 {
        if (thread_info_flags & _TIF_SIGPENDING)
                do_signal(regs, orig_i0);
+       if (thread_info_flags & _TIF_NOTIFY_RESUME) {
+               clear_thread_flag(TIF_NOTIFY_RESUME);
+               tracehook_notify_resume(regs);
+       }
 }
index 97cdd1bf4a100201a60a77de7f40ab37e5fb27e8..ba5b09ad6666397a953af76945205961868edb29 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/binfmts.h>
 #include <linux/compat.h>
 #include <linux/bitops.h>
+#include <linux/tracehook.h>
 
 #include <asm/uaccess.h>
 #include <asm/ptrace.h>
@@ -794,6 +795,8 @@ void do_signal32(sigset_t *oldset, struct pt_regs * regs,
                 * clear the TS_RESTORE_SIGMASK flag.
                 */
                current_thread_info()->status &= ~TS_RESTORE_SIGMASK;
+
+               tracehook_signal_handler(signr, &info, &ka, regs, 0);
                return;
        }
        if (restart_syscall &&
index db19ed67acf67fee9df800a5f82a763b47b9635a..a2f24270ed8af9f95b95ee0f685419b621244fa2 100644 (file)
@@ -162,6 +162,8 @@ linux_syscall_trace32:
        add     %sp, PTREGS_OFF, %o0
        call    syscall_trace
         clr    %o1
+       brnz,pn %o0, 3f
+        mov    -ENOSYS, %o0
        srl     %i0, 0, %o0
        srl     %i4, 0, %o4
        srl     %i1, 0, %o1
@@ -173,6 +175,8 @@ linux_syscall_trace:
        add     %sp, PTREGS_OFF, %o0
        call    syscall_trace
         clr    %o1
+       brnz,pn %o0, 3f
+        mov    -ENOSYS, %o0
        mov     %i0, %o0
        mov     %i1, %o1
        mov     %i2, %o2
index b7f2963693a7b40fa2bc336dad5ae4cf0d9a8fbf..283c08f5f4d4390bfd12a7bfd820787a1344dbde 100644 (file)
@@ -1332,9 +1332,15 @@ int acpi_processor_cst_has_changed(struct acpi_processor *pr)
        if (!pr->flags.power_setup_done)
                return -ENODEV;
 
-       /* Fall back to the default idle loop */
-       pm_idle = pm_idle_save;
-       synchronize_sched();    /* Relies on interrupts forcing exit from idle. */
+       /*
+        * Fall back to the default idle loop, when pm_idle_save had
+        * been initialized.
+        */
+       if (pm_idle_save) {
+               pm_idle = pm_idle_save;
+               /* Relies on interrupts forcing exit from idle. */
+               synchronize_sched();
+       }
 
        pr->flags.power = 0;
        result = acpi_processor_get_power_info(pr);
@@ -1896,7 +1902,8 @@ int acpi_processor_power_exit(struct acpi_processor *pr,
 
        /* Unregister the idle handler when processor #0 is removed. */
        if (pr->id == 0) {
-               pm_idle = pm_idle_save;
+               if (pm_idle_save)
+                       pm_idle = pm_idle_save;
 
                /*
                 * We are about to unload the current idle thread pm callback
index 3ad49a00029ff91c39f00bb430de302f7ab409b7..af0d175c025dcd168c5a6de866351fd0b1f83d5a 100644 (file)
@@ -103,7 +103,8 @@ static ssize_t show_mem_phys_index(struct sys_device *dev,
 /*
  * Show whether the section of memory is likely to be hot-removable
  */
-static ssize_t show_mem_removable(struct sys_device *dev, char *buf)
+static ssize_t show_mem_removable(struct sys_device *dev,
+                       struct sysdev_attribute *attr, char *buf)
 {
        unsigned long start_pfn;
        int ret;
index 929101ecbae29c180889a1d10e8c7f0549bcd713..7d500f82195a08b22d1ab550ab95bb43e541dd7a 100644 (file)
 static void ipw_send_setup_packet(struct ipw_hardware *hw);
 static void handle_received_SETUP_packet(struct ipw_hardware *ipw,
                                         unsigned int address,
-                                        unsigned char *data, int len,
+                                        const unsigned char *data, int len,
                                         int is_last);
 static void ipwireless_setup_timer(unsigned long data);
 static void handle_received_CTRL_packet(struct ipw_hardware *hw,
-               unsigned int channel_idx, unsigned char *data, int len);
+               unsigned int channel_idx, const unsigned char *data, int len);
 
 /*#define TIMING_DIAGNOSTICS*/
 
@@ -79,8 +79,7 @@ static void report_timing(void)
                timing_stats.last_report_time = jiffies;
                if (!first)
                        printk(KERN_INFO IPWIRELESS_PCCARD_NAME
-                              ": %u us elapsed - read %lu bytes in %u us, "
-                              "wrote %lu bytes in %u us\n",
+                              ": %u us elapsed - read %lu bytes in %u us, wrote %lu bytes in %u us\n",
                               jiffies_to_usecs(since),
                               timing_stats.read_bytes,
                               jiffies_to_usecs(timing_stats.read_time),
@@ -133,29 +132,17 @@ enum {
 #define NL_FOLLOWING_PACKET_HEADER_SIZE    1
 
 struct nl_first_packet_header {
-#if defined(__BIG_ENDIAN_BITFIELD)
-       unsigned char packet_rank:2;
-       unsigned char address:3;
-       unsigned char protocol:3;
-#else
        unsigned char protocol:3;
        unsigned char address:3;
        unsigned char packet_rank:2;
-#endif
        unsigned char length_lsb;
        unsigned char length_msb;
 };
 
 struct nl_packet_header {
-#if defined(__BIG_ENDIAN_BITFIELD)
-       unsigned char packet_rank:2;
-       unsigned char address:3;
-       unsigned char protocol:3;
-#else
        unsigned char protocol:3;
        unsigned char address:3;
        unsigned char packet_rank:2;
-#endif
 };
 
 /* Value of 'packet_rank' above */
@@ -227,15 +214,12 @@ struct MEMINFREG {
        unsigned short memreg_tx_new;   /* TX2 (new) Register (R/W) */
 };
 
-#define IODMADPR 0x00          /* DMA Data Port Register (R/W) */
-
 #define CARD_PRESENT_VALUE (0xBEEFCAFEUL)
 
 #define MEMTX_TX                       0x0001
 #define MEMRX_RX                       0x0001
 #define MEMRX_RX_DONE                  0x0001
 #define MEMRX_PCINTACKK                0x0001
-#define MEMRX_MEMSPURIOUSINT           0x0001
 
 #define NL_NUM_OF_PRIORITIES       3
 #define NL_NUM_OF_PROTOCOLS        3
@@ -245,7 +229,7 @@ struct ipw_hardware {
        unsigned int base_port;
        short hw_version;
        unsigned short ll_mtu;
-       spinlock_t spinlock;
+       spinlock_t lock;
 
        int initializing;
        int init_loops;
@@ -386,26 +370,52 @@ static void dump_data_bytes(const char *type, const unsigned char *data,
                        length < DUMP_MAX_BYTES ? length : DUMP_MAX_BYTES);
 }
 
-static int do_send_fragment(struct ipw_hardware *hw, const unsigned char *data,
+static void swap_packet_bitfield_to_le(unsigned char *data)
+{
+#ifdef __BIG_ENDIAN_BITFIELD
+       unsigned char tmp = *data, ret = 0;
+
+       /*
+        * transform bits from aa.bbb.ccc to ccc.bbb.aa
+        */
+       ret |= tmp & 0xc0 >> 6;
+       ret |= tmp & 0x38 >> 1;
+       ret |= tmp & 0x07 << 5;
+       *data = ret & 0xff;
+#endif
+}
+
+static void swap_packet_bitfield_from_le(unsigned char *data)
+{
+#ifdef __BIG_ENDIAN_BITFIELD
+       unsigned char tmp = *data, ret = 0;
+
+       /*
+        * transform bits from ccc.bbb.aa to aa.bbb.ccc
+        */
+       ret |= tmp & 0xe0 >> 5;
+       ret |= tmp & 0x1c << 1;
+       ret |= tmp & 0x03 << 6;
+       *data = ret & 0xff;
+#endif
+}
+
+static void do_send_fragment(struct ipw_hardware *hw, unsigned char *data,
                            unsigned length)
 {
-       int i;
+       unsigned i;
        unsigned long flags;
 
        start_timing();
-
-       if (length == 0)
-               return 0;
-
-       if (length > hw->ll_mtu)
-               return -1;
+       BUG_ON(length > hw->ll_mtu);
 
        if (ipwireless_debug)
                dump_data_bytes("send", data, length);
 
-       spin_lock_irqsave(&hw->spinlock, flags);
+       spin_lock_irqsave(&hw->lock, flags);
 
        hw->tx_ready = 0;
+       swap_packet_bitfield_to_le(data);
 
        if (hw->hw_version == HW_VERSION_1) {
                outw((unsigned short) length, hw->base_port + IODWR);
@@ -414,7 +424,7 @@ static int do_send_fragment(struct ipw_hardware *hw, const unsigned char *data,
                        unsigned short d = data[i];
                        __le16 raw_data;
 
-                       if (likely(i + 1 < length))
+                       if (i + 1 < length)
                                d |= data[i + 1] << 8;
                        raw_data = cpu_to_le16(d);
                        outw(raw_data, hw->base_port + IODWR);
@@ -422,32 +432,30 @@ static int do_send_fragment(struct ipw_hardware *hw, const unsigned char *data,
 
                outw(DCR_TXDONE, hw->base_port + IODCR);
        } else if (hw->hw_version == HW_VERSION_2) {
-               outw((unsigned short) length, hw->base_port + IODMADPR);
+               outw((unsigned short) length, hw->base_port);
 
                for (i = 0; i < length; i += 2) {
                        unsigned short d = data[i];
                        __le16 raw_data;
 
-                       if ((i + 1 < length))
+                       if (i + 1 < length)
                                d |= data[i + 1] << 8;
                        raw_data = cpu_to_le16(d);
-                       outw(raw_data, hw->base_port + IODMADPR);
+                       outw(raw_data, hw->base_port);
                }
                while ((i & 3) != 2) {
-                       outw((unsigned short) 0xDEAD, hw->base_port + IODMADPR);
+                       outw((unsigned short) 0xDEAD, hw->base_port);
                        i += 2;
                }
                writew(MEMRX_RX, &hw->memory_info_regs->memreg_rx);
        }
 
-       spin_unlock_irqrestore(&hw->spinlock, flags);
+       spin_unlock_irqrestore(&hw->lock, flags);
 
        end_write_timing(length);
-
-       return 0;
 }
 
-static int do_send_packet(struct ipw_hardware *hw, struct ipw_tx_packet *packet)
+static void do_send_packet(struct ipw_hardware *hw, struct ipw_tx_packet *packet)
 {
        unsigned short fragment_data_len;
        unsigned short data_left = packet->length - packet->offset;
@@ -462,6 +470,10 @@ static int do_send_packet(struct ipw_hardware *hw, struct ipw_tx_packet *packet)
        if (data_left < fragment_data_len)
                fragment_data_len = data_left;
 
+       /*
+        * hdr_first is now in machine bitfield order, which will be swapped
+        * to le just before it goes to hw
+        */
        pkt.hdr_first.protocol = packet->protocol;
        pkt.hdr_first.address = packet->dest_addr;
        pkt.hdr_first.packet_rank = 0;
@@ -493,25 +505,23 @@ static int do_send_packet(struct ipw_hardware *hw, struct ipw_tx_packet *packet)
                 */
                unsigned long flags;
 
-               spin_lock_irqsave(&hw->spinlock, flags);
+               spin_lock_irqsave(&hw->lock, flags);
                list_add(&packet->queue, &hw->tx_queue[0]);
                hw->tx_queued++;
-               spin_unlock_irqrestore(&hw->spinlock, flags);
+               spin_unlock_irqrestore(&hw->lock, flags);
        } else {
                if (packet->packet_callback)
                        packet->packet_callback(packet->callback_data,
                                        packet->length);
                kfree(packet);
        }
-
-       return 0;
 }
 
 static void ipw_setup_hardware(struct ipw_hardware *hw)
 {
        unsigned long flags;
 
-       spin_lock_irqsave(&hw->spinlock, flags);
+       spin_lock_irqsave(&hw->lock, flags);
        if (hw->hw_version == HW_VERSION_1) {
                /* Reset RX FIFO */
                outw(DCR_RXRESET, hw->base_port + IODCR);
@@ -530,7 +540,7 @@ static void ipw_setup_hardware(struct ipw_hardware *hw)
                csr |= 1;
                writew(csr, &hw->memregs_CCR->reg_config_and_status);
        }
-       spin_unlock_irqrestore(&hw->spinlock, flags);
+       spin_unlock_irqrestore(&hw->lock, flags);
 }
 
 /*
@@ -549,28 +559,23 @@ static struct ipw_rx_packet *pool_allocate(struct ipw_hardware *hw,
        if (!packet) {
                unsigned long flags;
 
-               /*
-                * If this is the first fragment, then we will need to fetch a
-                * packet to put it in.
-                */
-               spin_lock_irqsave(&hw->spinlock, flags);
-               /* If we have one in our pool, then pull it out. */
+               spin_lock_irqsave(&hw->lock, flags);
                if (!list_empty(&hw->rx_pool)) {
                        packet = list_first_entry(&hw->rx_pool,
                                        struct ipw_rx_packet, queue);
-                       list_del(&packet->queue);
                        hw->rx_pool_size--;
-                       spin_unlock_irqrestore(&hw->spinlock, flags);
+                       spin_unlock_irqrestore(&hw->lock, flags);
+                       list_del(&packet->queue);
                } else {
-                       /* Otherwise allocate a new one. */
-                       static int min_capacity = 256;
+                       const int min_capacity =
+                               ipwireless_ppp_mru(hw->network + 2);
                        int new_capacity;
 
-                       spin_unlock_irqrestore(&hw->spinlock, flags);
+                       spin_unlock_irqrestore(&hw->lock, flags);
                        new_capacity =
-                           minimum_free_space > min_capacity
-                           ? minimum_free_space
-                           : min_capacity;
+                               (minimum_free_space > min_capacity
+                                ? minimum_free_space
+                                : min_capacity);
                        packet = kmalloc(sizeof(struct ipw_rx_packet)
                                        + new_capacity, GFP_ATOMIC);
                        if (!packet)
@@ -580,10 +585,6 @@ static struct ipw_rx_packet *pool_allocate(struct ipw_hardware *hw,
                packet->length = 0;
        }
 
-       /*
-        * If this packet does not have sufficient capacity for the data we
-        * want to add, then make it bigger.
-        */
        if (packet->length + minimum_free_space > packet->capacity) {
                struct ipw_rx_packet *old_packet = packet;
 
@@ -610,13 +611,15 @@ static void pool_free(struct ipw_hardware *hw, struct ipw_rx_packet *packet)
                kfree(packet);
        else {
                hw->rx_pool_size++;
-               list_add_tail(&packet->queue, &hw->rx_pool);
+               list_add(&packet->queue, &hw->rx_pool);
        }
 }
 
 static void queue_received_packet(struct ipw_hardware *hw,
-                                 unsigned int protocol, unsigned int address,
-                                 unsigned char *data, int length, int is_last)
+                                 unsigned int protocol,
+                                 unsigned int address,
+                                 const unsigned char *data, int length,
+                                 int is_last)
 {
        unsigned int channel_idx = address - 1;
        struct ipw_rx_packet *packet = NULL;
@@ -658,9 +661,9 @@ static void queue_received_packet(struct ipw_hardware *hw,
                        packet = *assem;
                        *assem = NULL;
                        /* Count queued DATA bytes only */
-                       spin_lock_irqsave(&hw->spinlock, flags);
+                       spin_lock_irqsave(&hw->lock, flags);
                        hw->rx_bytes_queued += packet->length;
-                       spin_unlock_irqrestore(&hw->spinlock, flags);
+                       spin_unlock_irqrestore(&hw->lock, flags);
                }
        } else {
                /* If it's a CTRL packet, don't assemble, just queue it. */
@@ -682,13 +685,13 @@ static void queue_received_packet(struct ipw_hardware *hw,
         * network layer.
         */
        if (packet) {
-               spin_lock_irqsave(&hw->spinlock, flags);
+               spin_lock_irqsave(&hw->lock, flags);
                list_add_tail(&packet->queue, &hw->rx_queue);
                /* Block reception of incoming packets if queue is full. */
                hw->blocking_rx =
-                       hw->rx_bytes_queued >= IPWIRELESS_RX_QUEUE_SIZE;
+                       (hw->rx_bytes_queued >= IPWIRELESS_RX_QUEUE_SIZE);
 
-               spin_unlock_irqrestore(&hw->spinlock, flags);
+               spin_unlock_irqrestore(&hw->lock, flags);
                schedule_work(&hw->work_rx);
        }
 }
@@ -702,7 +705,7 @@ static void ipw_receive_data_work(struct work_struct *work_rx)
            container_of(work_rx, struct ipw_hardware, work_rx);
        unsigned long flags;
 
-       spin_lock_irqsave(&hw->spinlock, flags);
+       spin_lock_irqsave(&hw->lock, flags);
        while (!list_empty(&hw->rx_queue)) {
                struct ipw_rx_packet *packet =
                        list_first_entry(&hw->rx_queue,
@@ -720,7 +723,7 @@ static void ipw_receive_data_work(struct work_struct *work_rx)
                if (packet->protocol == TL_PROTOCOLID_COM_DATA) {
                        if (hw->network != NULL) {
                                /* If the network hasn't been disconnected. */
-                               spin_unlock_irqrestore(&hw->spinlock, flags);
+                               spin_unlock_irqrestore(&hw->lock, flags);
                                /*
                                 * This must run unlocked due to tty processing
                                 * and mutex locking
@@ -731,7 +734,7 @@ static void ipw_receive_data_work(struct work_struct *work_rx)
                                                (unsigned char *)packet
                                                + sizeof(struct ipw_rx_packet),
                                                packet->length);
-                               spin_lock_irqsave(&hw->spinlock, flags);
+                               spin_lock_irqsave(&hw->lock, flags);
                        }
                        /* Count queued DATA bytes only */
                        hw->rx_bytes_queued -= packet->length;
@@ -755,15 +758,15 @@ static void ipw_receive_data_work(struct work_struct *work_rx)
                if (hw->shutting_down)
                        break;
        }
-       spin_unlock_irqrestore(&hw->spinlock, flags);
+       spin_unlock_irqrestore(&hw->lock, flags);
 }
 
 static void handle_received_CTRL_packet(struct ipw_hardware *hw,
                                        unsigned int channel_idx,
-                                       unsigned char *data, int len)
+                                       const unsigned char *data, int len)
 {
-       struct ipw_control_packet_body *body =
-               (struct ipw_control_packet_body *) data;
+       const struct ipw_control_packet_body *body =
+               (const struct ipw_control_packet_body *) data;
        unsigned int changed_mask;
 
        if (len != sizeof(struct ipw_control_packet_body)) {
@@ -805,13 +808,13 @@ static void handle_received_CTRL_packet(struct ipw_hardware *hw,
 }
 
 static void handle_received_packet(struct ipw_hardware *hw,
-                                  union nl_packet *packet,
+                                  const union nl_packet *packet,
                                   unsigned short len)
 {
        unsigned int protocol = packet->hdr.protocol;
        unsigned int address = packet->hdr.address;
        unsigned int header_length;
-       unsigned char *data;
+       const unsigned char *data;
        unsigned int data_len;
        int is_last = packet->hdr.packet_rank & NL_LAST_PACKET;
 
@@ -850,7 +853,7 @@ static void acknowledge_data_read(struct ipw_hardware *hw)
 static void do_receive_packet(struct ipw_hardware *hw)
 {
        unsigned len;
-       unsigned int i;
+       unsigned i;
        unsigned char pkt[LL_MTU_MAX];
 
        start_timing();
@@ -859,8 +862,7 @@ static void do_receive_packet(struct ipw_hardware *hw)
                len = inw(hw->base_port + IODRR);
                if (len > hw->ll_mtu) {
                        printk(KERN_INFO IPWIRELESS_PCCARD_NAME
-                              ": received a packet of %u bytes - "
-                              "longer than the MTU!\n", len);
+                              ": received a packet of %u bytes - longer than the MTU!\n", len);
                        outw(DCR_RXDONE | DCR_RXRESET, hw->base_port + IODCR);
                        return;
                }
@@ -873,18 +875,17 @@ static void do_receive_packet(struct ipw_hardware *hw)
                        pkt[i + 1] = (unsigned char) (data >> 8);
                }
        } else {
-               len = inw(hw->base_port + IODMADPR);
+               len = inw(hw->base_port);
                if (len > hw->ll_mtu) {
                        printk(KERN_INFO IPWIRELESS_PCCARD_NAME
-                              ": received a packet of %u bytes - "
-                              "longer than the MTU!\n", len);
+                              ": received a packet of %u bytes - longer than the MTU!\n", len);
                        writew(MEMRX_PCINTACKK,
                                &hw->memory_info_regs->memreg_pc_interrupt_ack);
                        return;
                }
 
                for (i = 0; i < len; i += 2) {
-                       __le16 raw_data = inw(hw->base_port + IODMADPR);
+                       __le16 raw_data = inw(hw->base_port);
                        unsigned short data = le16_to_cpu(raw_data);
 
                        pkt[i] = (unsigned char) data;
@@ -892,13 +893,15 @@ static void do_receive_packet(struct ipw_hardware *hw)
                }
 
                while ((i & 3) != 2) {
-                       inw(hw->base_port + IODMADPR);
+                       inw(hw->base_port);
                        i += 2;
                }
        }
 
        acknowledge_data_read(hw);
 
+       swap_packet_bitfield_from_le(pkt);
+
        if (ipwireless_debug)
                dump_data_bytes("recv", pkt, len);
 
@@ -916,8 +919,7 @@ static int get_current_packet_priority(struct ipw_hardware *hw)
         * until setup is complete.
         */
        return (hw->to_setup || hw->initializing
-                       ? PRIO_SETUP + 1 :
-                       NL_NUM_OF_PRIORITIES);
+                       ? PRIO_SETUP + 1 : NL_NUM_OF_PRIORITIES);
 }
 
 /*
@@ -928,17 +930,17 @@ static int get_packets_from_hw(struct ipw_hardware *hw)
        int received = 0;
        unsigned long flags;
 
-       spin_lock_irqsave(&hw->spinlock, flags);
+       spin_lock_irqsave(&hw->lock, flags);
        while (hw->rx_ready && !hw->blocking_rx) {
                received = 1;
                hw->rx_ready--;
-               spin_unlock_irqrestore(&hw->spinlock, flags);
+               spin_unlock_irqrestore(&hw->lock, flags);
 
                do_receive_packet(hw);
 
-               spin_lock_irqsave(&hw->spinlock, flags);
+               spin_lock_irqsave(&hw->lock, flags);
        }
-       spin_unlock_irqrestore(&hw->spinlock, flags);
+       spin_unlock_irqrestore(&hw->lock, flags);
 
        return received;
 }
@@ -954,7 +956,7 @@ static int send_pending_packet(struct ipw_hardware *hw, int priority_limit)
        int more_to_send = 0;
        unsigned long flags;
 
-       spin_lock_irqsave(&hw->spinlock, flags);
+       spin_lock_irqsave(&hw->lock, flags);
        if (hw->tx_queued && hw->tx_ready) {
                int priority;
                struct ipw_tx_packet *packet = NULL;
@@ -975,17 +977,17 @@ static int send_pending_packet(struct ipw_hardware *hw, int priority_limit)
                }
                if (!packet) {
                        hw->tx_queued = 0;
-                       spin_unlock_irqrestore(&hw->spinlock, flags);
+                       spin_unlock_irqrestore(&hw->lock, flags);
                        return 0;
                }
 
-               spin_unlock_irqrestore(&hw->spinlock, flags);
+               spin_unlock_irqrestore(&hw->lock, flags);
 
                /* Send */
                do_send_packet(hw, packet);
 
                /* Check if more to send */
-               spin_lock_irqsave(&hw->spinlock, flags);
+               spin_lock_irqsave(&hw->lock, flags);
                for (priority = 0; priority < priority_limit; priority++)
                        if (!list_empty(&hw->tx_queue[priority])) {
                                more_to_send = 1;
@@ -995,7 +997,7 @@ static int send_pending_packet(struct ipw_hardware *hw, int priority_limit)
                if (!more_to_send)
                        hw->tx_queued = 0;
        }
-       spin_unlock_irqrestore(&hw->spinlock, flags);
+       spin_unlock_irqrestore(&hw->lock, flags);
 
        return more_to_send;
 }
@@ -1008,9 +1010,9 @@ static void ipwireless_do_tasklet(unsigned long hw_)
        struct ipw_hardware *hw = (struct ipw_hardware *) hw_;
        unsigned long flags;
 
-       spin_lock_irqsave(&hw->spinlock, flags);
+       spin_lock_irqsave(&hw->lock, flags);
        if (hw->shutting_down) {
-               spin_unlock_irqrestore(&hw->spinlock, flags);
+               spin_unlock_irqrestore(&hw->lock, flags);
                return;
        }
 
@@ -1019,7 +1021,7 @@ static void ipwireless_do_tasklet(unsigned long hw_)
                 * Initial setup data sent to hardware
                 */
                hw->to_setup = 2;
-               spin_unlock_irqrestore(&hw->spinlock, flags);
+               spin_unlock_irqrestore(&hw->lock, flags);
 
                ipw_setup_hardware(hw);
                ipw_send_setup_packet(hw);
@@ -1030,7 +1032,7 @@ static void ipwireless_do_tasklet(unsigned long hw_)
                int priority_limit = get_current_packet_priority(hw);
                int again;
 
-               spin_unlock_irqrestore(&hw->spinlock, flags);
+               spin_unlock_irqrestore(&hw->lock, flags);
 
                do {
                        again = send_pending_packet(hw, priority_limit);
@@ -1068,16 +1070,16 @@ static irqreturn_t ipwireless_handle_v1_interrupt(int irq,
                /* Transmit complete. */
                if (irqn & IR_TXINTR) {
                        ack |= IR_TXINTR;
-                       spin_lock_irqsave(&hw->spinlock, flags);
+                       spin_lock_irqsave(&hw->lock, flags);
                        hw->tx_ready = 1;
-                       spin_unlock_irqrestore(&hw->spinlock, flags);
+                       spin_unlock_irqrestore(&hw->lock, flags);
                }
                /* Received data */
                if (irqn & IR_RXINTR) {
                        ack |= IR_RXINTR;
-                       spin_lock_irqsave(&hw->spinlock, flags);
+                       spin_lock_irqsave(&hw->lock, flags);
                        hw->rx_ready++;
-                       spin_unlock_irqrestore(&hw->spinlock, flags);
+                       spin_unlock_irqrestore(&hw->lock, flags);
                }
                if (ack != 0) {
                        outw(ack, hw->base_port + IOIR);
@@ -1128,9 +1130,8 @@ static irqreturn_t ipwireless_handle_v2_v3_interrupt(int irq,
                        } else {
                                return IRQ_NONE;
                        }
-               } else {
+               } else
                        return IRQ_NONE;
-               }
        }
 
        /*
@@ -1149,9 +1150,9 @@ static irqreturn_t ipwireless_handle_v2_v3_interrupt(int irq,
                if (hw->serial_number_detected) {
                        if (memtx_serial != hw->last_memtx_serial) {
                                hw->last_memtx_serial = memtx_serial;
-                               spin_lock_irqsave(&hw->spinlock, flags);
+                               spin_lock_irqsave(&hw->lock, flags);
                                hw->rx_ready++;
-                               spin_unlock_irqrestore(&hw->spinlock, flags);
+                               spin_unlock_irqrestore(&hw->lock, flags);
                                rx = 1;
                        } else
                                /* Ignore 'Timer Recovery' duplicates. */
@@ -1166,18 +1167,18 @@ static irqreturn_t ipwireless_handle_v2_v3_interrupt(int irq,
                                printk(KERN_DEBUG IPWIRELESS_PCCARD_NAME
                                        ": memreg_tx serial num detected\n");
 
-                               spin_lock_irqsave(&hw->spinlock, flags);
+                               spin_lock_irqsave(&hw->lock, flags);
                                hw->rx_ready++;
-                               spin_unlock_irqrestore(&hw->spinlock, flags);
+                               spin_unlock_irqrestore(&hw->lock, flags);
                        }
                        rx = 1;
                }
        }
        if (memrxdone & MEMRX_RX_DONE) {
                writew(0, &hw->memory_info_regs->memreg_rx_done);
-               spin_lock_irqsave(&hw->spinlock, flags);
+               spin_lock_irqsave(&hw->lock, flags);
                hw->tx_ready = 1;
-               spin_unlock_irqrestore(&hw->spinlock, flags);
+               spin_unlock_irqrestore(&hw->lock, flags);
                tx = 1;
        }
        if (tx)
@@ -1195,8 +1196,7 @@ static irqreturn_t ipwireless_handle_v2_v3_interrupt(int irq,
                                        ": spurious interrupt - new_tx mode\n");
                        else {
                                printk(KERN_WARNING IPWIRELESS_PCCARD_NAME
-                                       ": no valid memreg_tx value - "
-                                       "switching to the old memreg_tx\n");
+                                       ": no valid memreg_tx value - switching to the old memreg_tx\n");
                                hw->memreg_tx =
                                        &hw->memory_info_regs->memreg_tx_old;
                                try_mem_tx_old = 1;
@@ -1211,7 +1211,7 @@ static irqreturn_t ipwireless_handle_v2_v3_interrupt(int irq,
        return IRQ_HANDLED;
 }
 
-irqreturn_t ipwireless_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+irqreturn_t ipwireless_interrupt(int irq, void *dev_id)
 {
        struct ipw_hardware *hw = dev_id;
 
@@ -1226,9 +1226,9 @@ static void flush_packets_to_hw(struct ipw_hardware *hw)
        int priority_limit;
        unsigned long flags;
 
-       spin_lock_irqsave(&hw->spinlock, flags);
+       spin_lock_irqsave(&hw->lock, flags);
        priority_limit = get_current_packet_priority(hw);
-       spin_unlock_irqrestore(&hw->spinlock, flags);
+       spin_unlock_irqrestore(&hw->lock, flags);
 
        while (send_pending_packet(hw, priority_limit));
 }
@@ -1238,10 +1238,10 @@ static void send_packet(struct ipw_hardware *hw, int priority,
 {
        unsigned long flags;
 
-       spin_lock_irqsave(&hw->spinlock, flags);
+       spin_lock_irqsave(&hw->lock, flags);
        list_add_tail(&packet->queue, &hw->tx_queue[priority]);
        hw->tx_queued++;
-       spin_unlock_irqrestore(&hw->spinlock, flags);
+       spin_unlock_irqrestore(&hw->lock, flags);
 
        flush_packets_to_hw(hw);
 }
@@ -1291,21 +1291,20 @@ static void *alloc_ctrl_packet(int header_size,
 }
 
 int ipwireless_send_packet(struct ipw_hardware *hw, unsigned int channel_idx,
-                           unsigned char *data, unsigned int length,
+                           const unsigned char *data, unsigned int length,
                            void (*callback) (void *cb, unsigned int length),
                            void *callback_data)
 {
        struct ipw_tx_packet *packet;
 
-       packet = alloc_data_packet(length,
-                              (unsigned char) (channel_idx + 1),
-                              TL_PROTOCOLID_COM_DATA);
+       packet = alloc_data_packet(length, (channel_idx + 1),
+                       TL_PROTOCOLID_COM_DATA);
        if (!packet)
                return -ENOMEM;
        packet->packet_callback = callback;
        packet->callback_data = callback_data;
-       memcpy((unsigned char *) packet +
-                       sizeof(struct ipw_tx_packet), data, length);
+       memcpy((unsigned char *) packet + sizeof(struct ipw_tx_packet), data,
+                       length);
 
        send_packet(hw, PRIO_DATA, packet);
        return 0;
@@ -1321,12 +1320,11 @@ static int set_control_line(struct ipw_hardware *hw, int prio,
                protocolid = TL_PROTOCOLID_SETUP;
 
        packet = alloc_ctrl_packet(sizeof(struct ipw_control_packet),
-                       (unsigned char) (channel_idx + 1),
-                       protocolid, line);
+                       (channel_idx + 1), protocolid, line);
        if (!packet)
                return -ENOMEM;
        packet->header.length = sizeof(struct ipw_control_packet_body);
-       packet->body.value = (unsigned char) (state == 0 ? 0 : 1);
+       packet->body.value = (state == 0 ? 0 : 1);
        send_packet(hw, prio, &packet->header);
        return 0;
 }
@@ -1504,8 +1502,7 @@ static void handle_setup_get_version_rsp(struct ipw_hardware *hw,
        if (vers_no == TL_SETUP_VERSION)
                __handle_setup_get_version_rsp(hw);
        else
-               printk(KERN_ERR
-                               IPWIRELESS_PCCARD_NAME
+               printk(KERN_ERR IPWIRELESS_PCCARD_NAME
                                ": invalid hardware version no %u\n",
                                (unsigned int) vers_no);
 }
@@ -1528,10 +1525,10 @@ static void ipw_send_setup_packet(struct ipw_hardware *hw)
 
 static void handle_received_SETUP_packet(struct ipw_hardware *hw,
                                         unsigned int address,
-                                        unsigned char *data, int len,
+                                        const unsigned char *data, int len,
                                         int is_last)
 {
-       union ipw_setup_rx_msg *rx_msg = (union ipw_setup_rx_msg *) data;
+       const union ipw_setup_rx_msg *rx_msg = (const union ipw_setup_rx_msg *) data;
 
        if (address != ADDR_SETUP_PROT) {
                printk(KERN_INFO IPWIRELESS_PCCARD_NAME
@@ -1629,7 +1626,7 @@ struct ipw_hardware *ipwireless_hardware_create(void)
 
        INIT_LIST_HEAD(&hw->rx_queue);
        INIT_LIST_HEAD(&hw->rx_pool);
-       spin_lock_init(&hw->spinlock);
+       spin_lock_init(&hw->lock);
        tasklet_init(&hw->tasklet, ipwireless_do_tasklet, (unsigned long) hw);
        INIT_WORK(&hw->work_rx, ipw_receive_data_work);
        setup_timer(&hw->setup_timer, ipwireless_setup_timer,
@@ -1651,8 +1648,8 @@ void ipwireless_init_hardware_v1(struct ipw_hardware *hw,
                enable_irq(hw->irq);
        }
        hw->base_port = base_port;
-       hw->hw_version = is_v2_card ? HW_VERSION_2 : HW_VERSION_1;
-       hw->ll_mtu = hw->hw_version == HW_VERSION_1 ? LL_MTU_V1 : LL_MTU_V2;
+       hw->hw_version = (is_v2_card ? HW_VERSION_2 : HW_VERSION_1);
+       hw->ll_mtu = (hw->hw_version == HW_VERSION_1 ? LL_MTU_V1 : LL_MTU_V2);
        hw->memregs_CCR = (struct MEMCCR __iomem *)
                        ((unsigned short __iomem *) attr_memory + 0x200);
        hw->memory_info_regs = (struct MEMINFREG __iomem *) common_memory;
@@ -1695,10 +1692,10 @@ static void ipwireless_setup_timer(unsigned long data)
                if (is_card_present(hw)) {
                        unsigned long flags;
 
-                       spin_lock_irqsave(&hw->spinlock, flags);
+                       spin_lock_irqsave(&hw->lock, flags);
                        hw->to_setup = 1;
                        hw->tx_ready = 1;
-                       spin_unlock_irqrestore(&hw->spinlock, flags);
+                       spin_unlock_irqrestore(&hw->lock, flags);
                        tasklet_schedule(&hw->tasklet);
                }
 
index 19ce5eb266b19fcc5150c1b0d821547a493eda3d..90a8590e43b0b056ae86548b825dbdb6ad55c036 100644 (file)
@@ -34,14 +34,14 @@ struct ipw_network;
 
 struct ipw_hardware *ipwireless_hardware_create(void);
 void ipwireless_hardware_free(struct ipw_hardware *hw);
-irqreturn_t ipwireless_interrupt(int irq, void *dev_id, struct pt_regs *regs);
+irqreturn_t ipwireless_interrupt(int irq, void *dev_id);
 int ipwireless_set_DTR(struct ipw_hardware *hw, unsigned int channel_idx,
                int state);
 int ipwireless_set_RTS(struct ipw_hardware *hw, unsigned int channel_idx,
                int state);
 int ipwireless_send_packet(struct ipw_hardware *hw,
                            unsigned int channel_idx,
-                           unsigned char *data,
+                           const unsigned char *data,
                            unsigned int length,
                            void (*packet_sent_callback) (void *cb,
                                                          unsigned int length),
index cc7dcea2d2830599d05c955589456c14cf9aa37b..5eca7a99afe6c3daf1c793f4c0990e5125a72862 100644 (file)
@@ -49,7 +49,7 @@ static void ipwireless_detach(struct pcmcia_device *link);
 /* Debug mode: more verbose, print sent/recv bytes */
 int ipwireless_debug;
 int ipwireless_loopback;
-int ipwireless_out_queue = 1;
+int ipwireless_out_queue = 10;
 
 module_param_named(debug, ipwireless_debug, int, 0);
 module_param_named(loopback, ipwireless_loopback, int, 0);
@@ -57,7 +57,7 @@ module_param_named(out_queue, ipwireless_out_queue, int, 0);
 MODULE_PARM_DESC(debug, "switch on debug messages [0]");
 MODULE_PARM_DESC(loopback,
                "debug: enable ras_raw channel [0]");
-MODULE_PARM_DESC(out_queue, "debug: set size of outgoing queue [1]");
+MODULE_PARM_DESC(out_queue, "debug: set size of outgoing PPP queue [10]");
 
 /* Executes in process context. */
 static void signalled_reboot_work(struct work_struct *work_reboot)
@@ -88,8 +88,6 @@ static int config_ipwireless(struct ipw_dev *ipw)
        unsigned short buf[64];
        cisparse_t parse;
        unsigned short cor_value;
-       win_req_t request_attr_memory;
-       win_req_t request_common_memory;
        memreq_t memreq_attr_memory;
        memreq_t memreq_common_memory;
 
@@ -188,6 +186,9 @@ static int config_ipwireless(struct ipw_dev *ipw)
                goto exit0;
        }
 
+       request_region(link->io.BasePort1, link->io.NumPorts1,
+                       IPWIRELESS_PCCARD_NAME);
+
        /* memory settings */
 
        tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
@@ -214,16 +215,16 @@ static int config_ipwireless(struct ipw_dev *ipw)
        }
 
        if (parse.cftable_entry.mem.nwin > 0) {
-               request_common_memory.Attributes =
+               ipw->request_common_memory.Attributes =
                        WIN_DATA_WIDTH_16 | WIN_MEMORY_TYPE_CM | WIN_ENABLE;
-               request_common_memory.Base =
+               ipw->request_common_memory.Base =
                        parse.cftable_entry.mem.win[0].host_addr;
-               request_common_memory.Size = parse.cftable_entry.mem.win[0].len;
-               if (request_common_memory.Size < 0x1000)
-                       request_common_memory.Size = 0x1000;
-               request_common_memory.AccessSpeed = 0;
+               ipw->request_common_memory.Size = parse.cftable_entry.mem.win[0].len;
+               if (ipw->request_common_memory.Size < 0x1000)
+                       ipw->request_common_memory.Size = 0x1000;
+               ipw->request_common_memory.AccessSpeed = 0;
 
-               ret = pcmcia_request_window(&link, &request_common_memory,
+               ret = pcmcia_request_window(&link, &ipw->request_common_memory,
                                &ipw->handle_common_memory);
 
                if (ret != CS_SUCCESS) {
@@ -246,16 +247,18 @@ static int config_ipwireless(struct ipw_dev *ipw)
                ipw->is_v2_card =
                        parse.cftable_entry.mem.win[0].len == 0x100;
 
-               ipw->common_memory = ioremap(request_common_memory.Base,
-                               request_common_memory.Size);
+               ipw->common_memory = ioremap(ipw->request_common_memory.Base,
+                               ipw->request_common_memory.Size);
+               request_mem_region(ipw->request_common_memory.Base,
+                               ipw->request_common_memory.Size, IPWIRELESS_PCCARD_NAME);
 
-               request_attr_memory.Attributes =
+               ipw->request_attr_memory.Attributes =
                        WIN_DATA_WIDTH_16 | WIN_MEMORY_TYPE_AM | WIN_ENABLE;
-               request_attr_memory.Base = 0;
-               request_attr_memory.Size = 0;   /* this used to be 0x1000 */
-               request_attr_memory.AccessSpeed = 0;
+               ipw->request_attr_memory.Base = 0;
+               ipw->request_attr_memory.Size = 0;      /* this used to be 0x1000 */
+               ipw->request_attr_memory.AccessSpeed = 0;
 
-               ret = pcmcia_request_window(&link, &request_attr_memory,
+               ret = pcmcia_request_window(&link, &ipw->request_attr_memory,
                                &ipw->handle_attr_memory);
 
                if (ret != CS_SUCCESS) {
@@ -274,8 +277,10 @@ static int config_ipwireless(struct ipw_dev *ipw)
                        goto exit2;
                }
 
-               ipw->attr_memory = ioremap(request_attr_memory.Base,
-                               request_attr_memory.Size);
+               ipw->attr_memory = ioremap(ipw->request_attr_memory.Base,
+                               ipw->request_attr_memory.Size);
+               request_mem_region(ipw->request_attr_memory.Base, ipw->request_attr_memory.Size,
+                               IPWIRELESS_PCCARD_NAME);
        }
 
        INIT_WORK(&ipw->work_reboot, signalled_reboot_work);
@@ -311,14 +316,13 @@ static int config_ipwireless(struct ipw_dev *ipw)
                        (unsigned int) link->irq.AssignedIRQ);
        if (ipw->attr_memory && ipw->common_memory)
                printk(KERN_INFO IPWIRELESS_PCCARD_NAME
-                               ": attr memory 0x%08lx-0x%08lx, "
-                               "common memory 0x%08lx-0x%08lx\n",
-                               request_attr_memory.Base,
-                               request_attr_memory.Base
-                               + request_attr_memory.Size - 1,
-                               request_common_memory.Base,
-                               request_common_memory.Base
-                               + request_common_memory.Size - 1);
+                       ": attr memory 0x%08lx-0x%08lx, common memory 0x%08lx-0x%08lx\n",
+                       ipw->request_attr_memory.Base,
+                       ipw->request_attr_memory.Base
+                       + ipw->request_attr_memory.Size - 1,
+                       ipw->request_common_memory.Base,
+                       ipw->request_common_memory.Base
+                       + ipw->request_common_memory.Size - 1);
 
        ipw->network = ipwireless_network_create(ipw->hardware);
        if (!ipw->network)
@@ -350,12 +354,16 @@ exit4:
        pcmcia_disable_device(link);
 exit3:
        if (ipw->attr_memory) {
+               release_mem_region(ipw->request_attr_memory.Base,
+                               ipw->request_attr_memory.Size);
                iounmap(ipw->attr_memory);
                pcmcia_release_window(ipw->handle_attr_memory);
                pcmcia_disable_device(link);
        }
 exit2:
        if (ipw->common_memory) {
+               release_mem_region(ipw->request_common_memory.Base,
+                               ipw->request_common_memory.Size);
                iounmap(ipw->common_memory);
                pcmcia_release_window(ipw->handle_common_memory);
        }
@@ -367,19 +375,25 @@ exit0:
 
 static void release_ipwireless(struct ipw_dev *ipw)
 {
-       struct pcmcia_device *link = ipw->link;
-
-       pcmcia_disable_device(link);
+       pcmcia_disable_device(ipw->link);
 
-       if (ipw->common_memory)
+       if (ipw->common_memory) {
+               release_mem_region(ipw->request_common_memory.Base,
+                               ipw->request_common_memory.Size);
                iounmap(ipw->common_memory);
-       if (ipw->attr_memory)
+       }
+       if (ipw->attr_memory) {
+               release_mem_region(ipw->request_attr_memory.Base,
+                               ipw->request_attr_memory.Size);
                iounmap(ipw->attr_memory);
+       }
        if (ipw->common_memory)
                pcmcia_release_window(ipw->handle_common_memory);
        if (ipw->attr_memory)
                pcmcia_release_window(ipw->handle_attr_memory);
-       pcmcia_disable_device(link);
+
+       /* Break the link with Card Services */
+       pcmcia_disable_device(ipw->link);
 }
 
 /*
@@ -437,10 +451,6 @@ static void ipwireless_detach(struct pcmcia_device *link)
 
        release_ipwireless(ipw);
 
-       /* Break the link with Card Services */
-       if (link)
-               pcmcia_disable_device(link);
-
        if (ipw->tty != NULL)
                ipwireless_tty_free(ipw->tty);
        if (ipw->network != NULL)
index 1bfdcc8d47d63300398d325a00699b28d655a250..0e0363af9ab240f55ad34edc0cb1b672417d3b53 100644 (file)
@@ -45,10 +45,15 @@ struct ipw_tty;
 struct ipw_dev {
        struct pcmcia_device *link;
        int is_v2_card;
+
        window_handle_t handle_attr_memory;
        void __iomem *attr_memory;
+       win_req_t request_attr_memory;
+
        window_handle_t handle_common_memory;
        void __iomem *common_memory;
+       win_req_t request_common_memory;
+
        dev_node_t nodes[2];
        /* Reference to attribute memory, containing CIS data */
        void *attribute_memory;
index fe914d34f7f6f63e10e452c775d364b1d2ba1930..590762a7f21790d64ea2b65725ff2a88902b1946 100644 (file)
@@ -29,7 +29,6 @@
 #include "main.h"
 #include "tty.h"
 
-#define MAX_OUTGOING_PACKETS_QUEUED   ipwireless_out_queue
 #define MAX_ASSOCIATED_TTYS 2
 
 #define SC_RCV_BITS     (SC_RCV_B7_1|SC_RCV_B7_0|SC_RCV_ODDP|SC_RCV_EVNP)
@@ -46,7 +45,7 @@ struct ipw_network {
        /* Number of packets queued up in hardware module. */
        int outgoing_packets_queued;
        /* Spinlock to avoid interrupts during shutdown */
-       spinlock_t spinlock;
+       spinlock_t lock;
        struct mutex close_lock;
 
        /* PPP ioctl data, not actually used anywere */
@@ -68,20 +67,20 @@ static void notify_packet_sent(void *callback_data, unsigned int packet_length)
        struct ipw_network *network = callback_data;
        unsigned long flags;
 
-       spin_lock_irqsave(&network->spinlock, flags);
+       spin_lock_irqsave(&network->lock, flags);
        network->outgoing_packets_queued--;
        if (network->ppp_channel != NULL) {
                if (network->ppp_blocked) {
                        network->ppp_blocked = 0;
-                       spin_unlock_irqrestore(&network->spinlock, flags);
+                       spin_unlock_irqrestore(&network->lock, flags);
                        ppp_output_wakeup(network->ppp_channel);
                        if (ipwireless_debug)
-                               printk(KERN_INFO IPWIRELESS_PCCARD_NAME
+                               printk(KERN_DEBUG IPWIRELESS_PCCARD_NAME
                                       ": ppp unblocked\n");
                } else
-                       spin_unlock_irqrestore(&network->spinlock, flags);
+                       spin_unlock_irqrestore(&network->lock, flags);
        } else
-               spin_unlock_irqrestore(&network->spinlock, flags);
+               spin_unlock_irqrestore(&network->lock, flags);
 }
 
 /*
@@ -93,8 +92,8 @@ static int ipwireless_ppp_start_xmit(struct ppp_channel *ppp_channel,
        struct ipw_network *network = ppp_channel->private;
        unsigned long flags;
 
-       spin_lock_irqsave(&network->spinlock, flags);
-       if (network->outgoing_packets_queued < MAX_OUTGOING_PACKETS_QUEUED) {
+       spin_lock_irqsave(&network->lock, flags);
+       if (network->outgoing_packets_queued < ipwireless_out_queue) {
                unsigned char *buf;
                static unsigned char header[] = {
                        PPP_ALLSTATIONS, /* 0xff */
@@ -103,7 +102,7 @@ static int ipwireless_ppp_start_xmit(struct ppp_channel *ppp_channel,
                int ret;
 
                network->outgoing_packets_queued++;
-               spin_unlock_irqrestore(&network->spinlock, flags);
+               spin_unlock_irqrestore(&network->lock, flags);
 
                /*
                 * If we have the requested amount of headroom in the skb we
@@ -144,7 +143,9 @@ static int ipwireless_ppp_start_xmit(struct ppp_channel *ppp_channel,
                 * needs to be unblocked once we are ready to send.
                 */
                network->ppp_blocked = 1;
-               spin_unlock_irqrestore(&network->spinlock, flags);
+               spin_unlock_irqrestore(&network->lock, flags);
+               if (ipwireless_debug)
+                       printk(KERN_DEBUG IPWIRELESS_PCCARD_NAME ": ppp blocked\n");
                return 0;
        }
 }
@@ -249,11 +250,11 @@ static void do_go_online(struct work_struct *work_go_online)
                                work_go_online);
        unsigned long flags;
 
-       spin_lock_irqsave(&network->spinlock, flags);
+       spin_lock_irqsave(&network->lock, flags);
        if (!network->ppp_channel) {
                struct ppp_channel *channel;
 
-               spin_unlock_irqrestore(&network->spinlock, flags);
+               spin_unlock_irqrestore(&network->lock, flags);
                channel = kzalloc(sizeof(struct ppp_channel), GFP_KERNEL);
                if (!channel) {
                        printk(KERN_ERR IPWIRELESS_PCCARD_NAME
@@ -273,10 +274,10 @@ static void do_go_online(struct work_struct *work_go_online)
                network->xaccm[3] = 0x60000000U;
                network->raccm = ~0U;
                ppp_register_channel(channel);
-               spin_lock_irqsave(&network->spinlock, flags);
+               spin_lock_irqsave(&network->lock, flags);
                network->ppp_channel = channel;
        }
-       spin_unlock_irqrestore(&network->spinlock, flags);
+       spin_unlock_irqrestore(&network->lock, flags);
 }
 
 static void do_go_offline(struct work_struct *work_go_offline)
@@ -287,16 +288,16 @@ static void do_go_offline(struct work_struct *work_go_offline)
        unsigned long flags;
 
        mutex_lock(&network->close_lock);
-       spin_lock_irqsave(&network->spinlock, flags);
+       spin_lock_irqsave(&network->lock, flags);
        if (network->ppp_channel != NULL) {
                struct ppp_channel *channel = network->ppp_channel;
 
                network->ppp_channel = NULL;
-               spin_unlock_irqrestore(&network->spinlock, flags);
+               spin_unlock_irqrestore(&network->lock, flags);
                mutex_unlock(&network->close_lock);
                ppp_unregister_channel(channel);
        } else {
-               spin_unlock_irqrestore(&network->spinlock, flags);
+               spin_unlock_irqrestore(&network->lock, flags);
                mutex_unlock(&network->close_lock);
        }
 }
@@ -381,18 +382,18 @@ void ipwireless_network_packet_received(struct ipw_network *network,
                         * the PPP layer.
                         */
                        mutex_lock(&network->close_lock);
-                       spin_lock_irqsave(&network->spinlock, flags);
+                       spin_lock_irqsave(&network->lock, flags);
                        if (network->ppp_channel != NULL) {
                                struct sk_buff *skb;
 
-                               spin_unlock_irqrestore(&network->spinlock,
+                               spin_unlock_irqrestore(&network->lock,
                                                flags);
 
                                /* Send the data to the ppp_generic module. */
                                skb = ipw_packet_received_skb(data, length);
                                ppp_input(network->ppp_channel, skb);
                        } else
-                               spin_unlock_irqrestore(&network->spinlock,
+                               spin_unlock_irqrestore(&network->lock,
                                                flags);
                        mutex_unlock(&network->close_lock);
                }
@@ -410,7 +411,7 @@ struct ipw_network *ipwireless_network_create(struct ipw_hardware *hw)
        if (!network)
                return NULL;
 
-       spin_lock_init(&network->spinlock);
+       spin_lock_init(&network->lock);
        mutex_init(&network->close_lock);
 
        network->hardware = hw;
@@ -478,10 +479,10 @@ int ipwireless_ppp_channel_index(struct ipw_network *network)
        int ret = -1;
        unsigned long flags;
 
-       spin_lock_irqsave(&network->spinlock, flags);
+       spin_lock_irqsave(&network->lock, flags);
        if (network->ppp_channel != NULL)
                ret = ppp_channel_index(network->ppp_channel);
-       spin_unlock_irqrestore(&network->spinlock, flags);
+       spin_unlock_irqrestore(&network->lock, flags);
 
        return ret;
 }
@@ -491,10 +492,15 @@ int ipwireless_ppp_unit_number(struct ipw_network *network)
        int ret = -1;
        unsigned long flags;
 
-       spin_lock_irqsave(&network->spinlock, flags);
+       spin_lock_irqsave(&network->lock, flags);
        if (network->ppp_channel != NULL)
                ret = ppp_unit_number(network->ppp_channel);
-       spin_unlock_irqrestore(&network->spinlock, flags);
+       spin_unlock_irqrestore(&network->lock, flags);
 
        return ret;
 }
+
+int ipwireless_ppp_mru(const struct ipw_network *network)
+{
+       return network->mru;
+}
index ccacd26fc7efdf3c9836e80aa3a536190359a809..561f765b333419fa1aa4a48095efe734b89efd8e 100644 (file)
@@ -48,5 +48,6 @@ void ipwireless_ppp_open(struct ipw_network *net);
 void ipwireless_ppp_close(struct ipw_network *net);
 int ipwireless_ppp_channel_index(struct ipw_network *net);
 int ipwireless_ppp_unit_number(struct ipw_network *net);
+int ipwireless_ppp_mru(const struct ipw_network *net);
 
 #endif
index 42f3815c5ce3cac25437c435519c2b61d87f0d8f..b1414507997c663db2c56afbeaaa338846ede37c 100644 (file)
@@ -259,7 +259,7 @@ static int ipw_write(struct tty_struct *linux_tty,
        }
 
        ret = ipwireless_send_packet(tty->hardware, IPW_CHANNEL_RAS,
-                              (unsigned char *) buf, count,
+                              buf, count,
                               ipw_write_packet_sent_callback, tty);
        if (ret == -1) {
                mutex_unlock(&tty->ipw_tty_mutex);
index 5405769020a1c13aa727e9a70e4e2dad99d1aef8..5ce07b517c5875def9106c5041402032c3f70fc1 100644 (file)
@@ -94,7 +94,7 @@ void cpuidle_install_idle_handler(void)
  */
 void cpuidle_uninstall_idle_handler(void)
 {
-       if (enabled_devices && (pm_idle != pm_idle_old)) {
+       if (enabled_devices && pm_idle_old && (pm_idle != pm_idle_old)) {
                pm_idle = pm_idle_old;
                cpuidle_kick_cpus();
        }
index 48d084bdf7c8e1d590b18130882c39bc44e3d038..3c855ff2992f0ad513500c9820b6e0a03eaa0719 100644 (file)
@@ -49,6 +49,8 @@ struct bfin_twi_iface {
        struct i2c_msg          *pmsg;
        int                     msg_num;
        int                     cur_msg;
+       u16                     saved_clkdiv;
+       u16                     saved_control;
        void __iomem            *regs_base;
 };
 
@@ -565,32 +567,43 @@ static u32 bfin_twi_functionality(struct i2c_adapter *adap)
               I2C_FUNC_I2C;
 }
 
-
 static struct i2c_algorithm bfin_twi_algorithm = {
        .master_xfer   = bfin_twi_master_xfer,
        .smbus_xfer    = bfin_twi_smbus_xfer,
        .functionality = bfin_twi_functionality,
 };
 
-
-static int i2c_bfin_twi_suspend(struct platform_device *dev, pm_message_t state)
+static int i2c_bfin_twi_suspend(struct platform_device *pdev, pm_message_t state)
 {
-       struct bfin_twi_iface *iface = platform_get_drvdata(dev);
+       struct bfin_twi_iface *iface = platform_get_drvdata(pdev);
+
+       iface->saved_clkdiv = read_CLKDIV(iface);
+       iface->saved_control = read_CONTROL(iface);
+
+       free_irq(iface->irq, iface);
 
        /* Disable TWI */
-       write_CONTROL(iface, read_CONTROL(iface) & ~TWI_ENA);
-       SSYNC();
+       write_CONTROL(iface, iface->saved_control & ~TWI_ENA);
 
        return 0;
 }
 
-static int i2c_bfin_twi_resume(struct platform_device *dev)
+static int i2c_bfin_twi_resume(struct platform_device *pdev)
 {
-       struct bfin_twi_iface *iface = platform_get_drvdata(dev);
+       struct bfin_twi_iface *iface = platform_get_drvdata(pdev);
 
-       /* Enable TWI */
-       write_CONTROL(iface, read_CONTROL(iface) | TWI_ENA);
-       SSYNC();
+       int rc = request_irq(iface->irq, bfin_twi_interrupt_entry,
+               IRQF_DISABLED, pdev->name, iface);
+       if (rc) {
+               dev_err(&pdev->dev, "Can't get IRQ %d !\n", iface->irq);
+               return -ENODEV;
+       }
+
+       /* Resume TWI interface clock as specified */
+       write_CLKDIV(iface, iface->saved_clkdiv);
+
+       /* Resume TWI */
+       write_CONTROL(iface, iface->saved_control);
 
        return 0;
 }
index 79b455a1f090587c4c63d5b29b76d8474c81b122..32104eac8d3db3d61e12907558262f1fe4ecffed 100644 (file)
@@ -77,7 +77,7 @@ static int i2c_gpio_getscl(void *data)
        return gpio_get_value(pdata->scl_pin);
 }
 
-static int __init i2c_gpio_probe(struct platform_device *pdev)
+static int __devinit i2c_gpio_probe(struct platform_device *pdev)
 {
        struct i2c_gpio_platform_data *pdata;
        struct i2c_algo_bit_data *bit_data;
@@ -174,7 +174,7 @@ err_alloc_adap:
        return ret;
 }
 
-static int __exit i2c_gpio_remove(struct platform_device *pdev)
+static int __devexit i2c_gpio_remove(struct platform_device *pdev)
 {
        struct i2c_gpio_platform_data *pdata;
        struct i2c_adapter *adap;
@@ -196,14 +196,15 @@ static struct platform_driver i2c_gpio_driver = {
                .name   = "i2c-gpio",
                .owner  = THIS_MODULE,
        },
-       .remove         = __exit_p(i2c_gpio_remove),
+       .probe          = i2c_gpio_probe,
+       .remove         = __devexit_p(i2c_gpio_remove),
 };
 
 static int __init i2c_gpio_init(void)
 {
        int ret;
 
-       ret = platform_driver_probe(&i2c_gpio_driver, i2c_gpio_probe);
+       ret = platform_driver_register(&i2c_gpio_driver);
        if (ret)
                printk(KERN_ERR "i2c-gpio: probe failed: %d\n", ret);
 
index 007390ad9810555b0fe7f2ba6077445601ec919b..4864723c74257b6e63e2d25d6c4d3ae8676f1675 100644 (file)
@@ -33,6 +33,7 @@
 #include <linux/err.h>
 #include <linux/platform_device.h>
 #include <linux/clk.h>
+#include <linux/cpufreq.h>
 
 #include <asm/hardware.h>
 #include <asm/irq.h>
@@ -64,6 +65,7 @@ struct s3c24xx_i2c {
        unsigned int            tx_setup;
 
        enum s3c24xx_i2c_state  state;
+       unsigned long           clkrate;
 
        void __iomem            *regs;
        struct clk              *clk;
@@ -71,6 +73,10 @@ struct s3c24xx_i2c {
        struct resource         *irq;
        struct resource         *ioarea;
        struct i2c_adapter      adap;
+
+#ifdef CONFIG_CPU_FREQ
+       struct notifier_block   freq_transition;
+#endif
 };
 
 /* default platform data to use if not supplied in the platform_device
@@ -501,6 +507,9 @@ static int s3c24xx_i2c_doxfer(struct s3c24xx_i2c *i2c, struct i2c_msg *msgs, int
        unsigned long timeout;
        int ret;
 
+       if (!readl(i2c->regs + S3C2410_IICCON) & S3C2410_IICCON_IRQEN)
+               return -EIO;
+
        ret = s3c24xx_i2c_set_master(i2c);
        if (ret != 0) {
                dev_err(i2c->dev, "cannot get bus (error %d)\n", ret);
@@ -636,27 +645,28 @@ static inline int freq_acceptable(unsigned int freq, unsigned int wanted)
        return (diff >= -2 && diff <= 2);
 }
 
-/* s3c24xx_i2c_getdivisor
+/* s3c24xx_i2c_clockrate
  *
  * work out a divisor for the user requested frequency setting,
  * either by the requested frequency, or scanning the acceptable
  * range of frequencies until something is found
 */
 
-static int s3c24xx_i2c_getdivisor(struct s3c24xx_i2c *i2c,
-                                 struct s3c2410_platform_i2c *pdata,
-                                 unsigned long *iicon,
-                                 unsigned int *got)
+static int s3c24xx_i2c_clockrate(struct s3c24xx_i2c *i2c, unsigned int *got)
 {
+       struct s3c2410_platform_i2c *pdata;
        unsigned long clkin = clk_get_rate(i2c->clk);
-       
        unsigned int divs, div1;
+       u32 iiccon;
        int freq;
        int start, end;
 
+       i2c->clkrate = clkin;
+
+       pdata = s3c24xx_i2c_get_platformdata(i2c->adap.dev.parent);
        clkin /= 1000;          /* clkin now in KHz */
      
-       dev_dbg(i2c->dev,  "pdata %p, freq %lu %lu..%lu\n",
+       dev_dbg(i2c->dev, "pdata %p, freq %lu %lu..%lu\n",
                 pdata, pdata->bus_freq, pdata->min_freq, pdata->max_freq);
 
        if (pdata->bus_freq != 0) {
@@ -688,11 +698,79 @@ static int s3c24xx_i2c_getdivisor(struct s3c24xx_i2c *i2c,
 
  found:
        *got = freq;
-       *iicon |= (divs-1);
-       *iicon |= (div1 == 512) ? S3C2410_IICCON_TXDIV_512 : 0;
+
+       iiccon = readl(i2c->regs + S3C2410_IICCON);
+       iiccon &= ~(S3C2410_IICCON_SCALEMASK | S3C2410_IICCON_TXDIV_512);
+       iiccon |= (divs-1);
+
+       if (div1 == 512)
+               iiccon |= S3C2410_IICCON_TXDIV_512;
+
+       writel(iiccon, i2c->regs + S3C2410_IICCON);
+
+       return 0;
+}
+
+#ifdef CONFIG_CPU_FREQ
+
+#define freq_to_i2c(_n) container_of(_n, struct s3c24xx_i2c, freq_transition)
+
+static int s3c24xx_i2c_cpufreq_transition(struct notifier_block *nb,
+                                         unsigned long val, void *data)
+{
+       struct s3c24xx_i2c *i2c = freq_to_i2c(nb);
+       unsigned long flags;
+       unsigned int got;
+       int delta_f;
+       int ret;
+
+       delta_f = clk_get_rate(i2c->clk) - i2c->clkrate;
+
+       /* if we're post-change and the input clock has slowed down
+        * or at pre-change and the clock is about to speed up, then
+        * adjust our clock rate. <0 is slow, >0 speedup.
+        */
+
+       if ((val == CPUFREQ_POSTCHANGE && delta_f < 0) ||
+           (val == CPUFREQ_PRECHANGE && delta_f > 0)) {
+               spin_lock_irqsave(&i2c->lock, flags);
+               ret = s3c24xx_i2c_clockrate(i2c, &got);
+               spin_unlock_irqrestore(&i2c->lock, flags);
+
+               if (ret < 0)
+                       dev_err(i2c->dev, "cannot find frequency\n");
+               else
+                       dev_info(i2c->dev, "setting freq %d\n", got);
+       }
+
+       return 0;
+}
+
+static inline int s3c24xx_i2c_register_cpufreq(struct s3c24xx_i2c *i2c)
+{
+       i2c->freq_transition.notifier_call = s3c24xx_i2c_cpufreq_transition;
+
+       return cpufreq_register_notifier(&i2c->freq_transition,
+                                        CPUFREQ_TRANSITION_NOTIFIER);
+}
+
+static inline void s3c24xx_i2c_deregister_cpufreq(struct s3c24xx_i2c *i2c)
+{
+       cpufreq_unregister_notifier(&i2c->freq_transition,
+                                   CPUFREQ_TRANSITION_NOTIFIER);
+}
+
+#else
+static inline int s3c24xx_i2c_register_cpufreq(struct s3c24xx_i2c *i2c)
+{
        return 0;
 }
 
+static inline void s3c24xx_i2c_deregister_cpufreq(struct s3c24xx_i2c *i2c)
+{
+}
+#endif
+
 /* s3c24xx_i2c_init
  *
  * initialise the controller, set the IO lines and frequency 
@@ -719,9 +797,12 @@ static int s3c24xx_i2c_init(struct s3c24xx_i2c *i2c)
 
        dev_info(i2c->dev, "slave address 0x%02x\n", pdata->slave_addr);
 
+       writel(iicon, i2c->regs + S3C2410_IICCON);
+
        /* we need to work out the divisors for the clock... */
 
-       if (s3c24xx_i2c_getdivisor(i2c, pdata, &iicon, &freq) != 0) {
+       if (s3c24xx_i2c_clockrate(i2c, &freq) != 0) {
+               writel(0, i2c->regs + S3C2410_IICCON);
                dev_err(i2c->dev, "cannot meet bus frequency required\n");
                return -EINVAL;
        }
@@ -730,8 +811,6 @@ static int s3c24xx_i2c_init(struct s3c24xx_i2c *i2c)
 
        dev_info(i2c->dev, "bus frequency set to %d KHz\n", freq);
        dev_dbg(i2c->dev, "S3C2410_IICCON=0x%02lx\n", iicon);
-       
-       writel(iicon, i2c->regs + S3C2410_IICCON);
 
        /* check for s3c2440 i2c controller  */
 
@@ -752,9 +831,12 @@ static int s3c24xx_i2c_init(struct s3c24xx_i2c *i2c)
 static int s3c24xx_i2c_probe(struct platform_device *pdev)
 {
        struct s3c24xx_i2c *i2c = &s3c24xx_i2c;
+       struct s3c2410_platform_i2c *pdata;
        struct resource *res;
        int ret;
 
+       pdata = s3c24xx_i2c_get_platformdata(&pdev->dev);
+
        /* find the clock and enable it */
 
        i2c->dev = &pdev->dev;
@@ -832,17 +914,34 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
        dev_dbg(&pdev->dev, "irq resource %p (%lu)\n", res,
                (unsigned long)res->start);
 
-       ret = i2c_add_adapter(&i2c->adap);
+       ret = s3c24xx_i2c_register_cpufreq(i2c);
        if (ret < 0) {
-               dev_err(&pdev->dev, "failed to add bus to i2c core\n");
+               dev_err(&pdev->dev, "failed to register cpufreq notifier\n");
                goto err_irq;
        }
 
+       /* Note, previous versions of the driver used i2c_add_adapter()
+        * to add the bus at any number. We now pass the bus number via
+        * the platform data, so if unset it will now default to always
+        * being bus 0.
+        */
+
+       i2c->adap.nr = pdata->bus_num;
+
+       ret = i2c_add_numbered_adapter(&i2c->adap);
+       if (ret < 0) {
+               dev_err(&pdev->dev, "failed to add bus to i2c core\n");
+               goto err_cpufreq;
+       }
+
        platform_set_drvdata(pdev, i2c);
 
        dev_info(&pdev->dev, "%s: S3C I2C adapter\n", i2c->adap.dev.bus_id);
        return 0;
 
+ err_cpufreq:
+       s3c24xx_i2c_deregister_cpufreq(i2c);
+
  err_irq:
        free_irq(i2c->irq->start, i2c);
 
@@ -870,6 +969,8 @@ static int s3c24xx_i2c_remove(struct platform_device *pdev)
 {
        struct s3c24xx_i2c *i2c = platform_get_drvdata(pdev);
 
+       s3c24xx_i2c_deregister_cpufreq(i2c);
+
        i2c_del_adapter(&i2c->adap);
        free_irq(i2c->irq->start, i2c);
 
index 71211c8b5384a85d76a8b7b03ccf845ac287f0e8..d08a1f2863e472051e3e60327c13b3bfbfcf99d6 100644 (file)
@@ -21,6 +21,7 @@
 */
 
 struct s3c2410_platform_i2c {
+       int             bus_num;        /* bus number to use */
        unsigned int    flags;
        unsigned int    slave_addr;     /* slave address for controller */
        unsigned long   bus_freq;       /* standard bus frequency */
diff --git a/include/asm-sparc/Kbuild b/include/asm-sparc/Kbuild
deleted file mode 100644 (file)
index 6cdaf9d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-# dummy file to avoid breaking make headers_install
diff --git a/include/asm-sparc64/Kbuild b/include/asm-sparc64/Kbuild
deleted file mode 100644 (file)
index 6cdaf9d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-# dummy file to avoid breaking make headers_install
diff --git a/include/asm-sparc64/agp.h b/include/asm-sparc64/agp.h
deleted file mode 100644 (file)
index eb8d4b3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/agp.h>
diff --git a/include/asm-sparc64/apb.h b/include/asm-sparc64/apb.h
deleted file mode 100644 (file)
index 5e236ca..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/apb.h>
diff --git a/include/asm-sparc64/asi.h b/include/asm-sparc64/asi.h
deleted file mode 100644 (file)
index 9b7110c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/asi.h>
diff --git a/include/asm-sparc64/atomic.h b/include/asm-sparc64/atomic.h
deleted file mode 100644 (file)
index f512682..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/atomic.h>
diff --git a/include/asm-sparc64/auxio.h b/include/asm-sparc64/auxio.h
deleted file mode 100644 (file)
index 46c9042..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/auxio.h>
diff --git a/include/asm-sparc64/auxvec.h b/include/asm-sparc64/auxvec.h
deleted file mode 100644 (file)
index 1f45c67..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/auxvec.h>
diff --git a/include/asm-sparc64/backoff.h b/include/asm-sparc64/backoff.h
deleted file mode 100644 (file)
index 8ee26d9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/backoff.h>
diff --git a/include/asm-sparc64/bbc.h b/include/asm-sparc64/bbc.h
deleted file mode 100644 (file)
index 06e8b63..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/bbc.h>
diff --git a/include/asm-sparc64/bitops.h b/include/asm-sparc64/bitops.h
deleted file mode 100644 (file)
index 2044043..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/bitops.h>
diff --git a/include/asm-sparc64/bpp.h b/include/asm-sparc64/bpp.h
deleted file mode 100644 (file)
index 514eee2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/bpp.h>
diff --git a/include/asm-sparc64/bug.h b/include/asm-sparc64/bug.h
deleted file mode 100644 (file)
index 3433737..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/bug.h>
diff --git a/include/asm-sparc64/bugs.h b/include/asm-sparc64/bugs.h
deleted file mode 100644 (file)
index 04ae9e2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/bugs.h>
diff --git a/include/asm-sparc64/byteorder.h b/include/asm-sparc64/byteorder.h
deleted file mode 100644 (file)
index f672855..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/byteorder.h>
diff --git a/include/asm-sparc64/cache.h b/include/asm-sparc64/cache.h
deleted file mode 100644 (file)
index fa9de5c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/cache.h>
diff --git a/include/asm-sparc64/cacheflush.h b/include/asm-sparc64/cacheflush.h
deleted file mode 100644 (file)
index cf5b6b3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/cacheflush.h>
diff --git a/include/asm-sparc64/chafsr.h b/include/asm-sparc64/chafsr.h
deleted file mode 100644 (file)
index aaab975..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/chafsr.h>
diff --git a/include/asm-sparc64/checksum.h b/include/asm-sparc64/checksum.h
deleted file mode 100644 (file)
index c3966c5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/checksum.h>
diff --git a/include/asm-sparc64/chmctrl.h b/include/asm-sparc64/chmctrl.h
deleted file mode 100644 (file)
index eb757b4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/chmctrl.h>
diff --git a/include/asm-sparc64/cmt.h b/include/asm-sparc64/cmt.h
deleted file mode 100644 (file)
index b19b445..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/cmt.h>
diff --git a/include/asm-sparc64/compat.h b/include/asm-sparc64/compat.h
deleted file mode 100644 (file)
index 8c155d2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/compat.h>
diff --git a/include/asm-sparc64/compat_signal.h b/include/asm-sparc64/compat_signal.h
deleted file mode 100644 (file)
index 7187dcc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/compat_signal.h>
diff --git a/include/asm-sparc64/cpudata.h b/include/asm-sparc64/cpudata.h
deleted file mode 100644 (file)
index 3220e13..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/cpudata.h>
diff --git a/include/asm-sparc64/cputime.h b/include/asm-sparc64/cputime.h
deleted file mode 100644 (file)
index 435f37a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/cputime.h>
diff --git a/include/asm-sparc64/current.h b/include/asm-sparc64/current.h
deleted file mode 100644 (file)
index a7904a7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/current.h>
diff --git a/include/asm-sparc64/dcr.h b/include/asm-sparc64/dcr.h
deleted file mode 100644 (file)
index d67613b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/dcr.h>
diff --git a/include/asm-sparc64/dcu.h b/include/asm-sparc64/dcu.h
deleted file mode 100644 (file)
index 28853f4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/dcu.h>
diff --git a/include/asm-sparc64/delay.h b/include/asm-sparc64/delay.h
deleted file mode 100644 (file)
index 33dc558..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/delay.h>
diff --git a/include/asm-sparc64/device.h b/include/asm-sparc64/device.h
deleted file mode 100644 (file)
index 4145c47..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/device.h>
diff --git a/include/asm-sparc64/display7seg.h b/include/asm-sparc64/display7seg.h
deleted file mode 100644 (file)
index e74f046..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/display7seg.h>
diff --git a/include/asm-sparc64/div64.h b/include/asm-sparc64/div64.h
deleted file mode 100644 (file)
index 928c94f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/div64.h>
diff --git a/include/asm-sparc64/dma-mapping.h b/include/asm-sparc64/dma-mapping.h
deleted file mode 100644 (file)
index 380b7b6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/dma-mapping.h>
diff --git a/include/asm-sparc64/dma.h b/include/asm-sparc64/dma.h
deleted file mode 100644 (file)
index 2e36248..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/dma.h>
diff --git a/include/asm-sparc64/ebus.h b/include/asm-sparc64/ebus.h
deleted file mode 100644 (file)
index d7d4761..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/ebus.h>
diff --git a/include/asm-sparc64/elf.h b/include/asm-sparc64/elf.h
deleted file mode 100644 (file)
index f256d94..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/elf.h>
diff --git a/include/asm-sparc64/emergency-restart.h b/include/asm-sparc64/emergency-restart.h
deleted file mode 100644 (file)
index 2cac7b6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/emergency-restart.h>
diff --git a/include/asm-sparc64/envctrl.h b/include/asm-sparc64/envctrl.h
deleted file mode 100644 (file)
index a2cc0ca..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/envctrl.h>
diff --git a/include/asm-sparc64/errno.h b/include/asm-sparc64/errno.h
deleted file mode 100644 (file)
index 9701fe0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/errno.h>
diff --git a/include/asm-sparc64/estate.h b/include/asm-sparc64/estate.h
deleted file mode 100644 (file)
index bedd0ef..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/estate.h>
diff --git a/include/asm-sparc64/fb.h b/include/asm-sparc64/fb.h
deleted file mode 100644 (file)
index 1c2ac58..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/fb.h>
diff --git a/include/asm-sparc64/fbio.h b/include/asm-sparc64/fbio.h
deleted file mode 100644 (file)
index c17edf8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/fbio.h>
diff --git a/include/asm-sparc64/fcntl.h b/include/asm-sparc64/fcntl.h
deleted file mode 100644 (file)
index 8b1beae..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/fcntl.h>
diff --git a/include/asm-sparc64/fhc.h b/include/asm-sparc64/fhc.h
deleted file mode 100644 (file)
index 73eb04c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/fhc.h>
diff --git a/include/asm-sparc64/floppy.h b/include/asm-sparc64/floppy.h
deleted file mode 100644 (file)
index 2148781..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/floppy.h>
diff --git a/include/asm-sparc64/fpumacro.h b/include/asm-sparc64/fpumacro.h
deleted file mode 100644 (file)
index 30d6d0f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/fpumacro.h>
diff --git a/include/asm-sparc64/futex.h b/include/asm-sparc64/futex.h
deleted file mode 100644 (file)
index 1ceb0bb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/futex.h>
diff --git a/include/asm-sparc64/hardirq.h b/include/asm-sparc64/hardirq.h
deleted file mode 100644 (file)
index 63dca3d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/hardirq.h>
diff --git a/include/asm-sparc64/head.h b/include/asm-sparc64/head.h
deleted file mode 100644 (file)
index 2254c09..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/head.h>
diff --git a/include/asm-sparc64/hugetlb.h b/include/asm-sparc64/hugetlb.h
deleted file mode 100644 (file)
index 21d8f0a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/hugetlb.h>
diff --git a/include/asm-sparc64/hvtramp.h b/include/asm-sparc64/hvtramp.h
deleted file mode 100644 (file)
index fb46bfe..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/hvtramp.h>
diff --git a/include/asm-sparc64/hw_irq.h b/include/asm-sparc64/hw_irq.h
deleted file mode 100644 (file)
index 16920a2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/hw_irq.h>
diff --git a/include/asm-sparc64/hypervisor.h b/include/asm-sparc64/hypervisor.h
deleted file mode 100644 (file)
index fe7e51a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/hypervisor.h>
diff --git a/include/asm-sparc64/ide.h b/include/asm-sparc64/ide.h
deleted file mode 100644 (file)
index 7125317..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/ide.h>
diff --git a/include/asm-sparc64/idprom.h b/include/asm-sparc64/idprom.h
deleted file mode 100644 (file)
index c22f9c3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/idprom.h>
diff --git a/include/asm-sparc64/intr_queue.h b/include/asm-sparc64/intr_queue.h
deleted file mode 100644 (file)
index f722501..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/intr_queue.h>
diff --git a/include/asm-sparc64/io.h b/include/asm-sparc64/io.h
deleted file mode 100644 (file)
index 25ff258..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/io.h>
diff --git a/include/asm-sparc64/ioctl.h b/include/asm-sparc64/ioctl.h
deleted file mode 100644 (file)
index 18fc562..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/ioctl.h>
diff --git a/include/asm-sparc64/ioctls.h b/include/asm-sparc64/ioctls.h
deleted file mode 100644 (file)
index dcd5540..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/ioctls.h>
diff --git a/include/asm-sparc64/iommu.h b/include/asm-sparc64/iommu.h
deleted file mode 100644 (file)
index 76252bb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/iommu.h>
diff --git a/include/asm-sparc64/ipcbuf.h b/include/asm-sparc64/ipcbuf.h
deleted file mode 100644 (file)
index 41dfaf1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/ipcbuf.h>
diff --git a/include/asm-sparc64/irq.h b/include/asm-sparc64/irq.h
deleted file mode 100644 (file)
index b2102e6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/irq.h>
diff --git a/include/asm-sparc64/irq_regs.h b/include/asm-sparc64/irq_regs.h
deleted file mode 100644 (file)
index 1e2b8a1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/irq_regs.h>
diff --git a/include/asm-sparc64/irqflags.h b/include/asm-sparc64/irqflags.h
deleted file mode 100644 (file)
index 27b091f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/irqflags.h>
diff --git a/include/asm-sparc64/kdebug.h b/include/asm-sparc64/kdebug.h
deleted file mode 100644 (file)
index 78cfd5d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/kdebug.h>
diff --git a/include/asm-sparc64/kgdb.h b/include/asm-sparc64/kgdb.h
deleted file mode 100644 (file)
index aa6532f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/kgdb.h>
diff --git a/include/asm-sparc64/kmap_types.h b/include/asm-sparc64/kmap_types.h
deleted file mode 100644 (file)
index 276530c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/kmap_types.h>
diff --git a/include/asm-sparc64/kprobes.h b/include/asm-sparc64/kprobes.h
deleted file mode 100644 (file)
index c55e43e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/kprobes.h>
diff --git a/include/asm-sparc64/ldc.h b/include/asm-sparc64/ldc.h
deleted file mode 100644 (file)
index 40f3f23..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/ldc.h>
diff --git a/include/asm-sparc64/linkage.h b/include/asm-sparc64/linkage.h
deleted file mode 100644 (file)
index 3ea4fd1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/linkage.h>
diff --git a/include/asm-sparc64/lmb.h b/include/asm-sparc64/lmb.h
deleted file mode 100644 (file)
index 3d04981..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/lmb.h>
diff --git a/include/asm-sparc64/local.h b/include/asm-sparc64/local.h
deleted file mode 100644 (file)
index c11c530..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/local.h>
diff --git a/include/asm-sparc64/lsu.h b/include/asm-sparc64/lsu.h
deleted file mode 100644 (file)
index 4e3d8b1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/lsu.h>
diff --git a/include/asm-sparc64/mc146818rtc.h b/include/asm-sparc64/mc146818rtc.h
deleted file mode 100644 (file)
index 97842e6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/mc146818rtc.h>
diff --git a/include/asm-sparc64/mdesc.h b/include/asm-sparc64/mdesc.h
deleted file mode 100644 (file)
index 165a193..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/mdesc.h>
diff --git a/include/asm-sparc64/mman.h b/include/asm-sparc64/mman.h
deleted file mode 100644 (file)
index 17ddb17..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/mman.h>
diff --git a/include/asm-sparc64/mmu.h b/include/asm-sparc64/mmu.h
deleted file mode 100644 (file)
index e677a64..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/mmu.h>
diff --git a/include/asm-sparc64/mmu_context.h b/include/asm-sparc64/mmu_context.h
deleted file mode 100644 (file)
index 877fee9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/mmu_context.h>
diff --git a/include/asm-sparc64/mmzone.h b/include/asm-sparc64/mmzone.h
deleted file mode 100644 (file)
index 43a710f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/mmzone.h>
diff --git a/include/asm-sparc64/module.h b/include/asm-sparc64/module.h
deleted file mode 100644 (file)
index a9606db..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/module.h>
diff --git a/include/asm-sparc64/mostek.h b/include/asm-sparc64/mostek.h
deleted file mode 100644 (file)
index 95a752f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/mostek.h>
diff --git a/include/asm-sparc64/msgbuf.h b/include/asm-sparc64/msgbuf.h
deleted file mode 100644 (file)
index 5b33cc9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/msgbuf.h>
diff --git a/include/asm-sparc64/mutex.h b/include/asm-sparc64/mutex.h
deleted file mode 100644 (file)
index c0c0f8f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/mutex.h>
diff --git a/include/asm-sparc64/ns87303.h b/include/asm-sparc64/ns87303.h
deleted file mode 100644 (file)
index 5f369d4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/ns87303.h>
diff --git a/include/asm-sparc64/of_device.h b/include/asm-sparc64/of_device.h
deleted file mode 100644 (file)
index a769fdb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/of_device.h>
diff --git a/include/asm-sparc64/of_platform.h b/include/asm-sparc64/of_platform.h
deleted file mode 100644 (file)
index f7c427b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/of_platform.h>
diff --git a/include/asm-sparc64/openprom.h b/include/asm-sparc64/openprom.h
deleted file mode 100644 (file)
index acf4b23..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/openprom.h>
diff --git a/include/asm-sparc64/openpromio.h b/include/asm-sparc64/openpromio.h
deleted file mode 100644 (file)
index 122fabd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/openpromio.h>
diff --git a/include/asm-sparc64/oplib.h b/include/asm-sparc64/oplib.h
deleted file mode 100644 (file)
index d93e44e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/oplib.h>
diff --git a/include/asm-sparc64/page.h b/include/asm-sparc64/page.h
deleted file mode 100644 (file)
index f46c1fb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/page.h>
diff --git a/include/asm-sparc64/param.h b/include/asm-sparc64/param.h
deleted file mode 100644 (file)
index 40c6dc1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/param.h>
diff --git a/include/asm-sparc64/parport.h b/include/asm-sparc64/parport.h
deleted file mode 100644 (file)
index b4e4ca8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/parport.h>
diff --git a/include/asm-sparc64/pci.h b/include/asm-sparc64/pci.h
deleted file mode 100644 (file)
index da54c4d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/pci.h>
diff --git a/include/asm-sparc64/percpu.h b/include/asm-sparc64/percpu.h
deleted file mode 100644 (file)
index 292729b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/percpu.h>
diff --git a/include/asm-sparc64/perfctr.h b/include/asm-sparc64/perfctr.h
deleted file mode 100644 (file)
index 52073a9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/perfctr.h>
diff --git a/include/asm-sparc64/pgalloc.h b/include/asm-sparc64/pgalloc.h
deleted file mode 100644 (file)
index bec3164..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/pgalloc.h>
diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h
deleted file mode 100644 (file)
index 9decbd9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/pgtable.h>
diff --git a/include/asm-sparc64/pil.h b/include/asm-sparc64/pil.h
deleted file mode 100644 (file)
index d805f33..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/pil.h>
diff --git a/include/asm-sparc64/poll.h b/include/asm-sparc64/poll.h
deleted file mode 100644 (file)
index 8e2f31b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/poll.h>
diff --git a/include/asm-sparc64/posix_types.h b/include/asm-sparc64/posix_types.h
deleted file mode 100644 (file)
index 8cee992..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/posix_types.h>
diff --git a/include/asm-sparc64/processor.h b/include/asm-sparc64/processor.h
deleted file mode 100644 (file)
index 21de6cc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/processor.h>
diff --git a/include/asm-sparc64/prom.h b/include/asm-sparc64/prom.h
deleted file mode 100644 (file)
index 5fa166e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/prom.h>
diff --git a/include/asm-sparc64/psrcompat.h b/include/asm-sparc64/psrcompat.h
deleted file mode 100644 (file)
index 587846f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/psrcompat.h>
diff --git a/include/asm-sparc64/pstate.h b/include/asm-sparc64/pstate.h
deleted file mode 100644 (file)
index 3ccf0be..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/pstate.h>
diff --git a/include/asm-sparc64/ptrace.h b/include/asm-sparc64/ptrace.h
deleted file mode 100644 (file)
index 1a55b9f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/ptrace.h>
diff --git a/include/asm-sparc64/reboot.h b/include/asm-sparc64/reboot.h
deleted file mode 100644 (file)
index 0d72eb8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/reboot.h>
diff --git a/include/asm-sparc64/reg.h b/include/asm-sparc64/reg.h
deleted file mode 100644 (file)
index 495bab2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/reg.h>
diff --git a/include/asm-sparc64/resource.h b/include/asm-sparc64/resource.h
deleted file mode 100644 (file)
index 46e3bc0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/resource.h>
diff --git a/include/asm-sparc64/rtc.h b/include/asm-sparc64/rtc.h
deleted file mode 100644 (file)
index e49a968..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/rtc.h>
diff --git a/include/asm-sparc64/rwsem-const.h b/include/asm-sparc64/rwsem-const.h
deleted file mode 100644 (file)
index 2a1de31..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/rwsem-const.h>
diff --git a/include/asm-sparc64/rwsem.h b/include/asm-sparc64/rwsem.h
deleted file mode 100644 (file)
index 6943c56..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/rwsem.h>
diff --git a/include/asm-sparc64/sbus.h b/include/asm-sparc64/sbus.h
deleted file mode 100644 (file)
index 0cab0e8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/sbus.h>
diff --git a/include/asm-sparc64/scatterlist.h b/include/asm-sparc64/scatterlist.h
deleted file mode 100644 (file)
index b7fef95..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/scatterlist.h>
diff --git a/include/asm-sparc64/scratchpad.h b/include/asm-sparc64/scratchpad.h
deleted file mode 100644 (file)
index 23675f6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/scratchpad.h>
diff --git a/include/asm-sparc64/seccomp.h b/include/asm-sparc64/seccomp.h
deleted file mode 100644 (file)
index f22f02a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/seccomp.h>
diff --git a/include/asm-sparc64/sections.h b/include/asm-sparc64/sections.h
deleted file mode 100644 (file)
index 721496f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/sections.h>
diff --git a/include/asm-sparc64/sembuf.h b/include/asm-sparc64/sembuf.h
deleted file mode 100644 (file)
index c55b952..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/sembuf.h>
diff --git a/include/asm-sparc64/setup.h b/include/asm-sparc64/setup.h
deleted file mode 100644 (file)
index 7143d06..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/setup.h>
diff --git a/include/asm-sparc64/sfafsr.h b/include/asm-sparc64/sfafsr.h
deleted file mode 100644 (file)
index 8036fc3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/sfafsr.h>
diff --git a/include/asm-sparc64/sfp-machine.h b/include/asm-sparc64/sfp-machine.h
deleted file mode 100644 (file)
index 7bbc4fe..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/sfp-machine.h>
diff --git a/include/asm-sparc64/shmbuf.h b/include/asm-sparc64/shmbuf.h
deleted file mode 100644 (file)
index 0c54a2d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/shmbuf.h>
diff --git a/include/asm-sparc64/shmparam.h b/include/asm-sparc64/shmparam.h
deleted file mode 100644 (file)
index 5fa3a9b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/shmparam.h>
diff --git a/include/asm-sparc64/sigcontext.h b/include/asm-sparc64/sigcontext.h
deleted file mode 100644 (file)
index 5b16dcc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/sigcontext.h>
diff --git a/include/asm-sparc64/siginfo.h b/include/asm-sparc64/siginfo.h
deleted file mode 100644 (file)
index 8ffd6eb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/siginfo.h>
diff --git a/include/asm-sparc64/signal.h b/include/asm-sparc64/signal.h
deleted file mode 100644 (file)
index 79705e5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/signal.h>
diff --git a/include/asm-sparc64/smp.h b/include/asm-sparc64/smp.h
deleted file mode 100644 (file)
index 5095a2c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/smp.h>
diff --git a/include/asm-sparc64/socket.h b/include/asm-sparc64/socket.h
deleted file mode 100644 (file)
index 13e0d5d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/socket.h>
diff --git a/include/asm-sparc64/sockios.h b/include/asm-sparc64/sockios.h
deleted file mode 100644 (file)
index 2cb4b64..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/sockios.h>
diff --git a/include/asm-sparc64/sparsemem.h b/include/asm-sparc64/sparsemem.h
deleted file mode 100644 (file)
index e681f22..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/sparsemem.h>
diff --git a/include/asm-sparc64/spinlock.h b/include/asm-sparc64/spinlock.h
deleted file mode 100644 (file)
index 0115b81..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/spinlock.h>
diff --git a/include/asm-sparc64/spinlock_types.h b/include/asm-sparc64/spinlock_types.h
deleted file mode 100644 (file)
index 48d81c8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/spinlock_types.h>
diff --git a/include/asm-sparc64/spitfire.h b/include/asm-sparc64/spitfire.h
deleted file mode 100644 (file)
index 4430d2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/spitfire.h>
diff --git a/include/asm-sparc64/sstate.h b/include/asm-sparc64/sstate.h
deleted file mode 100644 (file)
index 97720ce..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/sstate.h>
diff --git a/include/asm-sparc64/stacktrace.h b/include/asm-sparc64/stacktrace.h
deleted file mode 100644 (file)
index adc9b92..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/stacktrace.h>
diff --git a/include/asm-sparc64/starfire.h b/include/asm-sparc64/starfire.h
deleted file mode 100644 (file)
index db97daa..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/starfire.h>
diff --git a/include/asm-sparc64/stat.h b/include/asm-sparc64/stat.h
deleted file mode 100644 (file)
index b108a86..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/stat.h>
diff --git a/include/asm-sparc64/statfs.h b/include/asm-sparc64/statfs.h
deleted file mode 100644 (file)
index 5503d6a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/statfs.h>
diff --git a/include/asm-sparc64/string.h b/include/asm-sparc64/string.h
deleted file mode 100644 (file)
index 5018cd8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/string.h>
diff --git a/include/asm-sparc64/sunbpp.h b/include/asm-sparc64/sunbpp.h
deleted file mode 100644 (file)
index 9632be2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/sunbpp.h>
diff --git a/include/asm-sparc64/syscalls.h b/include/asm-sparc64/syscalls.h
deleted file mode 100644 (file)
index 3477b16..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/syscalls.h>
diff --git a/include/asm-sparc64/system.h b/include/asm-sparc64/system.h
deleted file mode 100644 (file)
index be2603c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/system.h>
diff --git a/include/asm-sparc64/termbits.h b/include/asm-sparc64/termbits.h
deleted file mode 100644 (file)
index e03f975..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/termbits.h>
diff --git a/include/asm-sparc64/termios.h b/include/asm-sparc64/termios.h
deleted file mode 100644 (file)
index 940495e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/termios.h>
diff --git a/include/asm-sparc64/thread_info.h b/include/asm-sparc64/thread_info.h
deleted file mode 100644 (file)
index 92bed79..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/thread_info.h>
diff --git a/include/asm-sparc64/timer.h b/include/asm-sparc64/timer.h
deleted file mode 100644 (file)
index 88026d8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/timer.h>
diff --git a/include/asm-sparc64/timex.h b/include/asm-sparc64/timex.h
deleted file mode 100644 (file)
index 8dd59ee..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/timex.h>
diff --git a/include/asm-sparc64/tlb.h b/include/asm-sparc64/tlb.h
deleted file mode 100644 (file)
index ae92fce..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/tlb.h>
diff --git a/include/asm-sparc64/tlbflush.h b/include/asm-sparc64/tlbflush.h
deleted file mode 100644 (file)
index a43979a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/tlbflush.h>
diff --git a/include/asm-sparc64/topology.h b/include/asm-sparc64/topology.h
deleted file mode 100644 (file)
index 46999b6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/topology.h>
diff --git a/include/asm-sparc64/tsb.h b/include/asm-sparc64/tsb.h
deleted file mode 100644 (file)
index 3677a30..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/tsb.h>
diff --git a/include/asm-sparc64/ttable.h b/include/asm-sparc64/ttable.h
deleted file mode 100644 (file)
index a550f1b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/ttable.h>
diff --git a/include/asm-sparc64/types.h b/include/asm-sparc64/types.h
deleted file mode 100644 (file)
index cfbfad5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/types.h>
diff --git a/include/asm-sparc64/uaccess.h b/include/asm-sparc64/uaccess.h
deleted file mode 100644 (file)
index 2872d22..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/uaccess.h>
diff --git a/include/asm-sparc64/uctx.h b/include/asm-sparc64/uctx.h
deleted file mode 100644 (file)
index 9e1b579..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/uctx.h>
diff --git a/include/asm-sparc64/unaligned.h b/include/asm-sparc64/unaligned.h
deleted file mode 100644 (file)
index 19fbf95..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/unaligned.h>
diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h
deleted file mode 100644 (file)
index ad86e0b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/unistd.h>
diff --git a/include/asm-sparc64/upa.h b/include/asm-sparc64/upa.h
deleted file mode 100644 (file)
index aab7293..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/upa.h>
diff --git a/include/asm-sparc64/user.h b/include/asm-sparc64/user.h
deleted file mode 100644 (file)
index 29fc6e9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/user.h>
diff --git a/include/asm-sparc64/utrap.h b/include/asm-sparc64/utrap.h
deleted file mode 100644 (file)
index b030a41..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/utrap.h>
diff --git a/include/asm-sparc64/vga.h b/include/asm-sparc64/vga.h
deleted file mode 100644 (file)
index fbf4d58..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/vga.h>
diff --git a/include/asm-sparc64/vio.h b/include/asm-sparc64/vio.h
deleted file mode 100644 (file)
index 299b26a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/vio.h>
diff --git a/include/asm-sparc64/visasm.h b/include/asm-sparc64/visasm.h
deleted file mode 100644 (file)
index 837a122..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/visasm.h>
diff --git a/include/asm-sparc64/watchdog.h b/include/asm-sparc64/watchdog.h
deleted file mode 100644 (file)
index b0f2857..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/watchdog.h>
diff --git a/include/asm-sparc64/xor.h b/include/asm-sparc64/xor.h
deleted file mode 100644 (file)
index ef187cc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-sparc/xor.h>
index 743d85fcd6518d6551a88f6362da60d3895269c9..1c2e3ec2eb57331cd7d6945d543d47446fc31ac0 100644 (file)
@@ -226,7 +226,7 @@ static inline void dccp_csum_outgoing(struct sk_buff *skb)
 
 extern void dccp_v4_send_check(struct sock *sk, int len, struct sk_buff *skb);
 
-extern int  dccp_retransmit_skb(struct sock *sk, struct sk_buff *skb);
+extern int  dccp_retransmit_skb(struct sock *sk);
 
 extern void dccp_send_ack(struct sock *sk);
 extern void dccp_reqsk_send_ack(struct sk_buff *sk, struct request_sock *rsk);
index a835b88237cbb77d295ba7a036c57b17a1871f91..882c5c4de69e69ef390f73059fba96b3cad23799 100644 (file)
@@ -196,8 +196,8 @@ static inline void dccp_do_pmtu_discovery(struct sock *sk,
 static void dccp_v4_err(struct sk_buff *skb, u32 info)
 {
        const struct iphdr *iph = (struct iphdr *)skb->data;
-       const struct dccp_hdr *dh = (struct dccp_hdr *)(skb->data +
-                                                       (iph->ihl << 2));
+       const u8 offset = iph->ihl << 2;
+       const struct dccp_hdr *dh = (struct dccp_hdr *)(skb->data + offset);
        struct dccp_sock *dp;
        struct inet_sock *inet;
        const int type = icmp_hdr(skb)->type;
@@ -207,7 +207,8 @@ static void dccp_v4_err(struct sk_buff *skb, u32 info)
        int err;
        struct net *net = dev_net(skb->dev);
 
-       if (skb->len < (iph->ihl << 2) + 8) {
+       if (skb->len < offset + sizeof(*dh) ||
+           skb->len < offset + __dccp_basic_hdr_len(dh)) {
                ICMP_INC_STATS_BH(net, ICMP_MIB_INERRORS);
                return;
        }
@@ -238,7 +239,7 @@ static void dccp_v4_err(struct sk_buff *skb, u32 info)
        dp = dccp_sk(sk);
        seq = dccp_hdr_seq(dh);
        if ((1 << sk->sk_state) & ~(DCCPF_REQUESTING | DCCPF_LISTEN) &&
-           !between48(seq, dp->dccps_swl, dp->dccps_swh)) {
+           !between48(seq, dp->dccps_awl, dp->dccps_awh)) {
                NET_INC_STATS_BH(net, LINUX_MIB_OUTOFWINDOWICMPS);
                goto out;
        }
index da509127e00cbc8077eb8058f74085e3beb03627..5e1ee0da2c40cab9c7f44ffd431e4df4455e08f5 100644 (file)
@@ -89,12 +89,19 @@ static void dccp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
 {
        struct ipv6hdr *hdr = (struct ipv6hdr *)skb->data;
        const struct dccp_hdr *dh = (struct dccp_hdr *)(skb->data + offset);
+       struct dccp_sock *dp;
        struct ipv6_pinfo *np;
        struct sock *sk;
        int err;
        __u64 seq;
        struct net *net = dev_net(skb->dev);
 
+       if (skb->len < offset + sizeof(*dh) ||
+           skb->len < offset + __dccp_basic_hdr_len(dh)) {
+               ICMP6_INC_STATS_BH(__in6_dev_get(skb->dev), ICMP6_MIB_INERRORS);
+               return;
+       }
+
        sk = inet6_lookup(net, &dccp_hashinfo,
                        &hdr->daddr, dh->dccph_dport,
                        &hdr->saddr, dh->dccph_sport, inet6_iif(skb));
@@ -116,6 +123,14 @@ static void dccp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
        if (sk->sk_state == DCCP_CLOSED)
                goto out;
 
+       dp = dccp_sk(sk);
+       seq = dccp_hdr_seq(dh);
+       if ((1 << sk->sk_state) & ~(DCCPF_REQUESTING | DCCPF_LISTEN) &&
+           !between48(seq, dp->dccps_awl, dp->dccps_awh)) {
+               NET_INC_STATS_BH(net, LINUX_MIB_OUTOFWINDOWICMPS);
+               goto out;
+       }
+
        np = inet6_sk(sk);
 
        if (type == ICMPV6_PKT_TOOBIG) {
@@ -168,7 +183,6 @@ static void dccp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
 
        icmpv6_err_convert(type, code, &err);
 
-       seq = dccp_hdr_seq(dh);
        /* Might be for an request_sock */
        switch (sk->sk_state) {
                struct request_sock *req, **prev;
index fe20068c5d8e581add6c25a543d046f3fd49071d..d06945c7d3dfc3e1201a00840516a457e9773303 100644 (file)
@@ -53,8 +53,11 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
                                          dccp_packet_hdr_len(dcb->dccpd_type);
                int err, set_ack = 1;
                u64 ackno = dp->dccps_gsr;
-
-               dccp_inc_seqno(&dp->dccps_gss);
+               /*
+                * Increment GSS here already in case the option code needs it.
+                * Update GSS for real only if option processing below succeeds.
+                */
+               dcb->dccpd_seq = ADD48(dp->dccps_gss, 1);
 
                switch (dcb->dccpd_type) {
                case DCCP_PKT_DATA:
@@ -66,6 +69,9 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
 
                case DCCP_PKT_REQUEST:
                        set_ack = 0;
+                       /* Use ISS on the first (non-retransmitted) Request. */
+                       if (icsk->icsk_retransmits == 0)
+                               dcb->dccpd_seq = dp->dccps_iss;
                        /* fall through */
 
                case DCCP_PKT_SYNC:
@@ -84,8 +90,6 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
                        break;
                }
 
-               dcb->dccpd_seq = dp->dccps_gss;
-
                if (dccp_insert_options(sk, skb)) {
                        kfree_skb(skb);
                        return -EPROTO;
@@ -103,7 +107,7 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
                /* XXX For now we're using only 48 bits sequence numbers */
                dh->dccph_x     = 1;
 
-               dp->dccps_awh = dp->dccps_gss;
+               dccp_update_gss(sk, dcb->dccpd_seq);
                dccp_hdr_set_seq(dh, dp->dccps_gss);
                if (set_ack)
                        dccp_hdr_set_ack(dccp_hdr_ack_bits(skb), ackno);
@@ -112,6 +116,11 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
                case DCCP_PKT_REQUEST:
                        dccp_hdr_request(skb)->dccph_req_service =
                                                        dp->dccps_service;
+                       /*
+                        * Limit Ack window to ISS <= P.ackno <= GSS, so that
+                        * only Responses to Requests we sent are considered.
+                        */
+                       dp->dccps_awl = dp->dccps_iss;
                        break;
                case DCCP_PKT_RESET:
                        dccp_hdr_reset(skb)->dccph_reset_code =
@@ -284,14 +293,26 @@ void dccp_write_xmit(struct sock *sk, int block)
        }
 }
 
-int dccp_retransmit_skb(struct sock *sk, struct sk_buff *skb)
+/**
+ * dccp_retransmit_skb  -  Retransmit Request, Close, or CloseReq packets
+ * There are only four retransmittable packet types in DCCP:
+ * - Request  in client-REQUEST  state (sec. 8.1.1),
+ * - CloseReq in server-CLOSEREQ state (sec. 8.3),
+ * - Close    in   node-CLOSING  state (sec. 8.3),
+ * - Acks in client-PARTOPEN state (sec. 8.1.5, handled by dccp_delack_timer()).
+ * This function expects sk->sk_send_head to contain the original skb.
+ */
+int dccp_retransmit_skb(struct sock *sk)
 {
+       WARN_ON(sk->sk_send_head == NULL);
+
        if (inet_csk(sk)->icsk_af_ops->rebuild_header(sk) != 0)
                return -EHOSTUNREACH; /* Routing failure or similar. */
 
-       return dccp_transmit_skb(sk, (skb_cloned(skb) ?
-                                     pskb_copy(skb, GFP_ATOMIC):
-                                     skb_clone(skb, GFP_ATOMIC)));
+       /* this count is used to distinguish original and retransmitted skb */
+       inet_csk(sk)->icsk_retransmits++;
+
+       return dccp_transmit_skb(sk, skb_clone(sk->sk_send_head, GFP_ATOMIC));
 }
 
 struct sk_buff *dccp_make_response(struct sock *sk, struct dst_entry *dst,
@@ -437,19 +458,7 @@ static inline void dccp_connect_init(struct sock *sk)
 
        dccp_sync_mss(sk, dst_mtu(dst));
 
-       /*
-        * SWL and AWL are initially adjusted so that they are not less than
-        * the initial Sequence Numbers received and sent, respectively:
-        *      SWL := max(GSR + 1 - floor(W/4), ISR),
-        *      AWL := max(GSS - W' + 1, ISS).
-        * These adjustments MUST be applied only at the beginning of the
-        * connection.
-        */
-       dccp_update_gss(sk, dp->dccps_iss);
-       dccp_set_seqno(&dp->dccps_awl, max48(dp->dccps_awl, dp->dccps_iss));
-
-       /* S.GAR - greatest valid acknowledgement number received on a non-Sync;
-        *         initialized to S.ISS (sec. 8.5)                            */
+       /* Initialise GAR as per 8.5; AWL/AWH are set in dccp_transmit_skb() */
        dp->dccps_gar = dp->dccps_iss;
 
        icsk->icsk_retransmits = 0;
index 6a5b961b6f5c08fdec108f72e66a2352c0199c78..54b3c7e9e016737eab1614fde3b22afa67456345 100644 (file)
@@ -98,22 +98,12 @@ static void dccp_retransmit_timer(struct sock *sk)
                goto backoff;
        }
 
-       /*
-        * sk->sk_send_head has to have one skb with
-        * DCCP_SKB_CB(skb)->dccpd_type set to one of the retransmittable DCCP
-        * packet types. The only packets eligible for retransmission are:
-        *      -- Requests in client-REQUEST  state (sec. 8.1.1)
-        *      -- Acks     in client-PARTOPEN state (sec. 8.1.5)
-        *      -- CloseReq in server-CLOSEREQ state (sec. 8.3)
-        *      -- Close    in   node-CLOSING  state (sec. 8.3)                */
-       WARN_ON(sk->sk_send_head == NULL);
-
        /*
         * More than than 4MSL (8 minutes) has passed, a RESET(aborted) was
         * sent, no need to retransmit, this sock is dead.
         */
        if (dccp_write_timeout(sk))
-               goto out;
+               return;
 
        /*
         * We want to know the number of packets retransmitted, not the
@@ -122,30 +112,28 @@ static void dccp_retransmit_timer(struct sock *sk)
        if (icsk->icsk_retransmits == 0)
                DCCP_INC_STATS_BH(DCCP_MIB_TIMEOUTS);
 
-       if (dccp_retransmit_skb(sk, sk->sk_send_head) < 0) {
+       if (dccp_retransmit_skb(sk) != 0) {
                /*
                 * Retransmission failed because of local congestion,
                 * do not backoff.
                 */
-               if (icsk->icsk_retransmits == 0)
+               if (--icsk->icsk_retransmits == 0)
                        icsk->icsk_retransmits = 1;
                inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS,
                                          min(icsk->icsk_rto,
                                              TCP_RESOURCE_PROBE_INTERVAL),
                                          DCCP_RTO_MAX);
-               goto out;
+               return;
        }
 
 backoff:
        icsk->icsk_backoff++;
-       icsk->icsk_retransmits++;
 
        icsk->icsk_rto = min(icsk->icsk_rto << 1, DCCP_RTO_MAX);
        inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS, icsk->icsk_rto,
                                  DCCP_RTO_MAX);
        if (icsk->icsk_retransmits > sysctl_dccp_retries1)
                __sk_dst_reset(sk);
-out:;
 }
 
 static void dccp_write_timer(unsigned long data)
index a42b64d040c407efb0d862644fd2169e61451812..38ccb6dfb02e1c755f8ec03f6d793ec16121784f 100644 (file)
@@ -104,9 +104,7 @@ out:
 
 static int ipcomp4_init_state(struct xfrm_state *x)
 {
-       int err;
-       struct ipcomp_data *ipcd;
-       struct xfrm_algo_desc *calg_desc;
+       int err = -EINVAL;
 
        x->props.header_len = 0;
        switch (x->props.mode) {
index 0cfcea42153a1a8444dfc95f548872c4056586bc..4545e4306862b104217aa5189eac1d4b64c1b43e 100644 (file)
@@ -134,9 +134,7 @@ out:
 
 static int ipcomp6_init_state(struct xfrm_state *x)
 {
-       int err;
-       struct ipcomp_data *ipcd;
-       struct xfrm_algo_desc *calg_desc;
+       int err = -EINVAL;
 
        x->props.header_len = 0;
        switch (x->props.mode) {