Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso...
Linus Torvalds [Tue, 10 Jan 2012 23:51:48 +0000 (15:51 -0800)]
Ext4 commits for 3.3 merge window

* tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (32 commits)
  ext4: fix undefined behavior in ext4_fill_flex_info()
  ext4: make more symbols static
  ext4: make local symbol ext4_initxattrs static
  jbd2: fix hung processes in jbd2_journal_lock_updates()
  ext4: reserve new feature flag codepoints
  ext4: Report max_batch_time option correctly
  ext4: add missing ext4_resize_end on error paths
  ext4: let ext4_group_add() use common code
  ext4: let ext4_group_extend() use common code
  ext4: add new online resize interface
  ext4: add a new function which adds a flex group to a fs
  ext4: add a new function which allocates bitmaps and inode tables
  ext4: pass verify_reserved_gdb() the number of group decriptors
  ext4: add a function which updates the super block during online resizing
  ext4: add a function which sets up a block group descriptors of a flex bg
  ext4: add a function which sets up group blocks of a flex bg
  ext4: add a structure which will be used by 64bit-resize interface
  ext4: add a function which adds a new group descriptors to a fs
  ext4: add a function which extends a group without checking parameters
  ext4: use proper little-endian bitops
  ...

976 files changed:
Documentation/ABI/stable/sysfs-bus-xen-backend [new file with mode: 0644]
Documentation/ABI/stable/sysfs-devices-system-xen_memory [new file with mode: 0644]
Documentation/ABI/testing/sysfs-bus-pci
Documentation/ABI/testing/sysfs-devices-platform-docg3 [new file with mode: 0644]
Documentation/ABI/testing/sysfs-driver-hid-multitouch [new file with mode: 0644]
Documentation/ABI/testing/sysfs-driver-hid-roccat-isku [new file with mode: 0644]
Documentation/ABI/testing/sysfs-driver-hid-wiimote
Documentation/ABI/testing/sysfs-driver-wacom
Documentation/devicetree/bindings/input/tegra-kbc.txt [new file with mode: 0644]
Documentation/devicetree/bindings/mtd/gpio-control-nand.txt [new file with mode: 0644]
Documentation/devicetree/bindings/regulator/fixed-regulator.txt [new file with mode: 0644]
Documentation/devicetree/bindings/regulator/regulator.txt [new file with mode: 0644]
Documentation/feature-removal-schedule.txt
Documentation/input/alps.txt [new file with mode: 0644]
Documentation/input/gpio-tilt.txt [new file with mode: 0644]
Documentation/input/sentelic.txt
Documentation/kernel-parameters.txt
Documentation/pinctrl.txt
Documentation/power/regulator/regulator.txt
Documentation/virtual/kvm/api.txt
Documentation/watchdog/00-INDEX
Documentation/watchdog/convert_drivers_to_kernel_api.txt
Documentation/watchdog/watchdog-kernel-api.txt
MAINTAINERS
arch/arm/mach-davinci/board-da850-evm.c
arch/arm/mach-omap2/devices.c
arch/arm/mach-tegra/include/mach/kbc.h
arch/arm/mach-u300/Kconfig
arch/arm/mach-u300/core.c
arch/arm/mach-u300/include/mach/gpio-u300.h
arch/arm/mach-u300/include/mach/irqs.h
arch/arm/mach-u300/mmc.c
arch/arm/mach-u300/u300-gpio.h [new file with mode: 0644]
arch/arm/plat-omap/include/plat/iommu.h
arch/arm/plat-omap/include/plat/iovmm.h
arch/arm/plat-samsung/include/plat/keypad.h
arch/cris/arch-v32/drivers/axisflashmap.c
arch/ia64/include/asm/iommu.h
arch/ia64/include/asm/xen/interface.h
arch/ia64/kernel/pci-dma.c
arch/ia64/kvm/kvm-ia64.c
arch/mips/bcm63xx/boards/board_bcm963xx.c
arch/mips/include/asm/mach-bcm63xx/bcm963xx_tag.h
arch/powerpc/include/asm/kvm.h
arch/powerpc/kvm/book3s.c
arch/powerpc/kvm/book3s_hv_builtin.c
arch/x86/include/asm/cpufeature.h
arch/x86/include/asm/iommu.h
arch/x86/include/asm/kvm_emulate.h
arch/x86/include/asm/kvm_host.h
arch/x86/kernel/kvm.c
arch/x86/kernel/pci-dma.c
arch/x86/kvm/Kconfig
arch/x86/kvm/Makefile
arch/x86/kvm/cpuid.c [new file with mode: 0644]
arch/x86/kvm/cpuid.h [new file with mode: 0644]
arch/x86/kvm/emulate.c
arch/x86/kvm/i8254.c
arch/x86/kvm/i8259.c
arch/x86/kvm/lapic.c
arch/x86/kvm/lapic.h
arch/x86/kvm/mmu.c
arch/x86/kvm/mmu_audit.c
arch/x86/kvm/mmutrace.h
arch/x86/kvm/paging_tmpl.h
arch/x86/kvm/pmu.c [new file with mode: 0644]
arch/x86/kvm/svm.c
arch/x86/kvm/timer.c
arch/x86/kvm/vmx.c
arch/x86/kvm/x86.c
arch/x86/kvm/x86.h
arch/x86/xen/Kconfig
arch/x86/xen/grant-table.c
arch/x86/xen/mmu.c
drivers/acpi/pci_root.c
drivers/ata/Kconfig
drivers/ata/ahci.c
drivers/ata/ahci_platform.c
drivers/ata/libahci.c
drivers/ata/libata-core.c
drivers/ata/libata-scsi.c
drivers/ata/libata-sff.c
drivers/ata/libata-transport.c
drivers/ata/libata.h
drivers/ata/pata_arasan_cf.c
drivers/ata/pata_at91.c
drivers/ata/pata_bf54x.c
drivers/ata/pata_cs5536.c
drivers/ata/pata_imx.c
drivers/ata/pata_ixp4xx_cf.c
drivers/ata/pata_mpc52xx.c
drivers/ata/pata_of_platform.c
drivers/ata/pata_palmld.c
drivers/ata/pata_platform.c
drivers/ata/pata_pxa.c
drivers/ata/pata_rb532_cf.c
drivers/ata/sata_dwc_460ex.c
drivers/ata/sata_fsl.c
drivers/block/xen-blkback/xenbus.c
drivers/block/xen-blkfront.c
drivers/char/agp/generic.c
drivers/gpio/Kconfig
drivers/gpio/Makefile
drivers/gpu/drm/Kconfig
drivers/gpu/drm/Makefile
drivers/gpu/drm/drm_context.c
drivers/gpu/drm/drm_crtc.c
drivers/gpu/drm/drm_crtc_helper.c
drivers/gpu/drm/drm_drv.c
drivers/gpu/drm/drm_edid.c
drivers/gpu/drm/drm_edid_modes.h
drivers/gpu/drm/drm_fb_helper.c
drivers/gpu/drm/drm_fops.c
drivers/gpu/drm/drm_ioctl.c
drivers/gpu/drm/drm_lock.c
drivers/gpu/drm/drm_sman.c [deleted file]
drivers/gpu/drm/exynos/Kconfig
drivers/gpu/drm/exynos/Makefile
drivers/gpu/drm/exynos/exynos_ddc.c [new file with mode: 0644]
drivers/gpu/drm/exynos/exynos_drm_buf.c
drivers/gpu/drm/exynos/exynos_drm_buf.h
drivers/gpu/drm/exynos/exynos_drm_crtc.c
drivers/gpu/drm/exynos/exynos_drm_drv.c
drivers/gpu/drm/exynos/exynos_drm_drv.h
drivers/gpu/drm/exynos/exynos_drm_encoder.c
drivers/gpu/drm/exynos/exynos_drm_encoder.h
drivers/gpu/drm/exynos/exynos_drm_fb.c
drivers/gpu/drm/exynos/exynos_drm_fb.h
drivers/gpu/drm/exynos/exynos_drm_fbdev.c
drivers/gpu/drm/exynos/exynos_drm_fimd.c
drivers/gpu/drm/exynos/exynos_drm_gem.c
drivers/gpu/drm/exynos/exynos_drm_gem.h
drivers/gpu/drm/exynos/exynos_drm_hdmi.c [new file with mode: 0644]
drivers/gpu/drm/exynos/exynos_drm_hdmi.h [new file with mode: 0644]
drivers/gpu/drm/exynos/exynos_drm_plane.c [new file with mode: 0644]
drivers/gpu/drm/exynos/exynos_drm_plane.h [new file with mode: 0644]
drivers/gpu/drm/exynos/exynos_hdmi.c [new file with mode: 0644]
drivers/gpu/drm/exynos/exynos_hdmi.h [new file with mode: 0644]
drivers/gpu/drm/exynos/exynos_hdmiphy.c [new file with mode: 0644]
drivers/gpu/drm/exynos/exynos_mixer.c [new file with mode: 0644]
drivers/gpu/drm/exynos/exynos_mixer.h [new file with mode: 0644]
drivers/gpu/drm/exynos/regs-hdmi.h [new file with mode: 0644]
drivers/gpu/drm/exynos/regs-mixer.h [new file with mode: 0644]
drivers/gpu/drm/exynos/regs-vp.h [new file with mode: 0644]
drivers/gpu/drm/gma500/Kconfig [new file with mode: 0644]
drivers/gpu/drm/gma500/Makefile [new file with mode: 0644]
drivers/gpu/drm/gma500/accel_2d.c [new file with mode: 0644]
drivers/gpu/drm/gma500/backlight.c [new file with mode: 0644]
drivers/gpu/drm/gma500/cdv_device.c [new file with mode: 0644]
drivers/gpu/drm/gma500/cdv_device.h [new file with mode: 0644]
drivers/gpu/drm/gma500/cdv_intel_crt.c [new file with mode: 0644]
drivers/gpu/drm/gma500/cdv_intel_display.c [new file with mode: 0644]
drivers/gpu/drm/gma500/cdv_intel_hdmi.c [new file with mode: 0644]
drivers/gpu/drm/gma500/cdv_intel_lvds.c [new file with mode: 0644]
drivers/gpu/drm/gma500/framebuffer.c [new file with mode: 0644]
drivers/gpu/drm/gma500/framebuffer.h [new file with mode: 0644]
drivers/gpu/drm/gma500/gem.c [new file with mode: 0644]
drivers/gpu/drm/gma500/gem_glue.c [new file with mode: 0644]
drivers/gpu/drm/gma500/gem_glue.h [new file with mode: 0644]
drivers/gpu/drm/gma500/gtt.c [new file with mode: 0644]
drivers/gpu/drm/gma500/gtt.h [new file with mode: 0644]
drivers/gpu/drm/gma500/intel_bios.c [new file with mode: 0644]
drivers/gpu/drm/gma500/intel_bios.h [new file with mode: 0644]
drivers/gpu/drm/gma500/intel_gmbus.c [new file with mode: 0644]
drivers/gpu/drm/gma500/intel_i2c.c [new file with mode: 0644]
drivers/gpu/drm/gma500/intel_opregion.c [new file with mode: 0644]
drivers/gpu/drm/gma500/mid_bios.c [new file with mode: 0644]
drivers/gpu/drm/gma500/mid_bios.h [new file with mode: 0644]
drivers/gpu/drm/gma500/mmu.c [new file with mode: 0644]
drivers/gpu/drm/gma500/oaktrail.h [new file with mode: 0644]
drivers/gpu/drm/gma500/oaktrail_crtc.c [new file with mode: 0644]
drivers/gpu/drm/gma500/oaktrail_device.c [new file with mode: 0644]
drivers/gpu/drm/gma500/oaktrail_hdmi.c [new file with mode: 0644]
drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c [new file with mode: 0644]
drivers/gpu/drm/gma500/oaktrail_lvds.c [new file with mode: 0644]
drivers/gpu/drm/gma500/power.c [new file with mode: 0644]
drivers/gpu/drm/gma500/power.h [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_device.c [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_drv.c [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_drv.h [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_intel_display.c [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_intel_display.h [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_intel_drv.h [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_intel_lvds.c [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_intel_modes.c [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_intel_reg.h [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_intel_sdvo.c [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_intel_sdvo_regs.h [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_irq.c [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_irq.h [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_lid.c [new file with mode: 0644]
drivers/gpu/drm/gma500/psb_reg.h [new file with mode: 0644]
drivers/gpu/drm/i810/i810_dma.c
drivers/gpu/drm/i810/i810_drv.c
drivers/gpu/drm/i810/i810_drv.h
drivers/gpu/drm/i915/Makefile
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_gem_execbuffer.c
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_dp.c
drivers/gpu/drm/i915/intel_drv.h
drivers/gpu/drm/i915/intel_fb.c
drivers/gpu/drm/i915/intel_hdmi.c
drivers/gpu/drm/i915/intel_ringbuffer.c
drivers/gpu/drm/i915/intel_sprite.c [new file with mode: 0644]
drivers/gpu/drm/mga/mga_drv.c
drivers/gpu/drm/nouveau/Makefile
drivers/gpu/drm/nouveau/nouveau_bios.c
drivers/gpu/drm/nouveau/nouveau_bios.h
drivers/gpu/drm/nouveau/nouveau_bo.c
drivers/gpu/drm/nouveau/nouveau_channel.c
drivers/gpu/drm/nouveau/nouveau_connector.c
drivers/gpu/drm/nouveau/nouveau_connector.h
drivers/gpu/drm/nouveau/nouveau_crtc.h
drivers/gpu/drm/nouveau/nouveau_debugfs.c
drivers/gpu/drm/nouveau/nouveau_display.c
drivers/gpu/drm/nouveau/nouveau_dma.c
drivers/gpu/drm/nouveau/nouveau_dp.c
drivers/gpu/drm/nouveau/nouveau_drv.c
drivers/gpu/drm/nouveau/nouveau_drv.h
drivers/gpu/drm/nouveau/nouveau_fb.h
drivers/gpu/drm/nouveau/nouveau_fbcon.c
drivers/gpu/drm/nouveau/nouveau_gpio.c [new file with mode: 0644]
drivers/gpu/drm/nouveau/nouveau_gpio.h [new file with mode: 0644]
drivers/gpu/drm/nouveau/nouveau_hdmi.c [new file with mode: 0644]
drivers/gpu/drm/nouveau/nouveau_hwsq.h [new file with mode: 0644]
drivers/gpu/drm/nouveau/nouveau_i2c.c
drivers/gpu/drm/nouveau/nouveau_i2c.h
drivers/gpu/drm/nouveau/nouveau_mem.c
drivers/gpu/drm/nouveau/nouveau_mxm.c [new file with mode: 0644]
drivers/gpu/drm/nouveau/nouveau_notifier.c
drivers/gpu/drm/nouveau/nouveau_object.c
drivers/gpu/drm/nouveau/nouveau_perf.c
drivers/gpu/drm/nouveau/nouveau_pm.c
drivers/gpu/drm/nouveau/nouveau_pm.h
drivers/gpu/drm/nouveau/nouveau_sgdma.c
drivers/gpu/drm/nouveau/nouveau_state.c
drivers/gpu/drm/nouveau/nouveau_temp.c
drivers/gpu/drm/nouveau/nouveau_vm.c
drivers/gpu/drm/nouveau/nouveau_vm.h
drivers/gpu/drm/nouveau/nouveau_volt.c
drivers/gpu/drm/nouveau/nv04_crtc.c
drivers/gpu/drm/nouveau/nv04_dac.c
drivers/gpu/drm/nouveau/nv04_dfp.c
drivers/gpu/drm/nouveau/nv04_display.c
drivers/gpu/drm/nouveau/nv04_pm.c
drivers/gpu/drm/nouveau/nv04_timer.c
drivers/gpu/drm/nouveau/nv10_gpio.c
drivers/gpu/drm/nouveau/nv17_tv.c
drivers/gpu/drm/nouveau/nv40_pm.c
drivers/gpu/drm/nouveau/nv50_crtc.c
drivers/gpu/drm/nouveau/nv50_dac.c
drivers/gpu/drm/nouveau/nv50_display.c
drivers/gpu/drm/nouveau/nv50_display.h
drivers/gpu/drm/nouveau/nv50_evo.c
drivers/gpu/drm/nouveau/nv50_fifo.c
drivers/gpu/drm/nouveau/nv50_gpio.c
drivers/gpu/drm/nouveau/nv50_graph.c
drivers/gpu/drm/nouveau/nv50_pm.c
drivers/gpu/drm/nouveau/nv50_sor.c
drivers/gpu/drm/nouveau/nv50_vm.c
drivers/gpu/drm/nouveau/nv84_bsp.c [new file with mode: 0644]
drivers/gpu/drm/nouveau/nv84_vp.c [new file with mode: 0644]
drivers/gpu/drm/nouveau/nv98_crypt.c [new file with mode: 0644]
drivers/gpu/drm/nouveau/nv98_ppp.c [new file with mode: 0644]
drivers/gpu/drm/nouveau/nva3_copy.fuc
drivers/gpu/drm/nouveau/nva3_copy.fuc.h
drivers/gpu/drm/nouveau/nva3_pm.c
drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
drivers/gpu/drm/nouveau/nvc0_graph.c
drivers/gpu/drm/nouveau/nvc0_graph.fuc
drivers/gpu/drm/nouveau/nvc0_graph.h
drivers/gpu/drm/nouveau/nvc0_grctx.c
drivers/gpu/drm/nouveau/nvc0_grgpc.fuc
drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
drivers/gpu/drm/nouveau/nvc0_grhub.fuc
drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
drivers/gpu/drm/nouveau/nvc0_pm.c
drivers/gpu/drm/nouveau/nvd0_display.c
drivers/gpu/drm/r128/r128_drv.c
drivers/gpu/drm/radeon/Makefile
drivers/gpu/drm/radeon/atom.c
drivers/gpu/drm/radeon/atombios_crtc.c
drivers/gpu/drm/radeon/atombios_encoders.c
drivers/gpu/drm/radeon/evergreen.c
drivers/gpu/drm/radeon/evergreen_blit_kms.c
drivers/gpu/drm/radeon/evergreen_cs.c
drivers/gpu/drm/radeon/evergreen_reg.h
drivers/gpu/drm/radeon/evergreend.h
drivers/gpu/drm/radeon/ni.c
drivers/gpu/drm/radeon/nid.h
drivers/gpu/drm/radeon/r100.c
drivers/gpu/drm/radeon/r200.c
drivers/gpu/drm/radeon/r300.c
drivers/gpu/drm/radeon/r420.c
drivers/gpu/drm/radeon/r500_reg.h
drivers/gpu/drm/radeon/r520.c
drivers/gpu/drm/radeon/r600.c
drivers/gpu/drm/radeon/r600_audio.c
drivers/gpu/drm/radeon/r600_blit_kms.c
drivers/gpu/drm/radeon/r600_cp.c
drivers/gpu/drm/radeon/r600_cs.c
drivers/gpu/drm/radeon/r600_hdmi.c
drivers/gpu/drm/radeon/r600d.h
drivers/gpu/drm/radeon/radeon.h
drivers/gpu/drm/radeon/radeon_asic.c
drivers/gpu/drm/radeon/radeon_asic.h
drivers/gpu/drm/radeon/radeon_benchmark.c
drivers/gpu/drm/radeon/radeon_cs.c
drivers/gpu/drm/radeon/radeon_device.c
drivers/gpu/drm/radeon/radeon_display.c
drivers/gpu/drm/radeon/radeon_drv.c
drivers/gpu/drm/radeon/radeon_fb.c
drivers/gpu/drm/radeon/radeon_fence.c
drivers/gpu/drm/radeon/radeon_gart.c
drivers/gpu/drm/radeon/radeon_gem.c
drivers/gpu/drm/radeon/radeon_irq_kms.c
drivers/gpu/drm/radeon/radeon_kms.c
drivers/gpu/drm/radeon/radeon_legacy_crtc.c
drivers/gpu/drm/radeon/radeon_mode.h
drivers/gpu/drm/radeon/radeon_object.c
drivers/gpu/drm/radeon/radeon_object.h
drivers/gpu/drm/radeon/radeon_pm.c
drivers/gpu/drm/radeon/radeon_ring.c
drivers/gpu/drm/radeon/radeon_sa.c [new file with mode: 0644]
drivers/gpu/drm/radeon/radeon_semaphore.c [new file with mode: 0644]
drivers/gpu/drm/radeon/radeon_test.c
drivers/gpu/drm/radeon/radeon_ttm.c
drivers/gpu/drm/radeon/rs400.c
drivers/gpu/drm/radeon/rs600.c
drivers/gpu/drm/radeon/rs690.c
drivers/gpu/drm/radeon/rv515.c
drivers/gpu/drm/radeon/rv770.c
drivers/gpu/drm/savage/savage_drv.c
drivers/gpu/drm/sis/sis_drv.c
drivers/gpu/drm/sis/sis_drv.h
drivers/gpu/drm/sis/sis_mm.c
drivers/gpu/drm/tdfx/tdfx_drv.c
drivers/gpu/drm/ttm/Makefile
drivers/gpu/drm/ttm/ttm_agp_backend.c
drivers/gpu/drm/ttm/ttm_bo.c
drivers/gpu/drm/ttm/ttm_bo_util.c
drivers/gpu/drm/ttm/ttm_bo_vm.c
drivers/gpu/drm/ttm/ttm_memory.c
drivers/gpu/drm/ttm/ttm_page_alloc.c
drivers/gpu/drm/ttm/ttm_page_alloc_dma.c [new file with mode: 0644]
drivers/gpu/drm/ttm/ttm_tt.c
drivers/gpu/drm/via/via_drv.c
drivers/gpu/drm/via/via_drv.h
drivers/gpu/drm/via/via_map.c
drivers/gpu/drm/via/via_mm.c
drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
drivers/hid/Kconfig
drivers/hid/Makefile
drivers/hid/hid-core.c
drivers/hid/hid-debug.c
drivers/hid/hid-emsff.c
drivers/hid/hid-hyperv.c [new file with mode: 0644]
drivers/hid/hid-ids.h
drivers/hid/hid-input.c
drivers/hid/hid-lg4ff.c
drivers/hid/hid-multitouch.c
drivers/hid/hid-picolcd.c
drivers/hid/hid-quanta.c [deleted file]
drivers/hid/hid-roccat-common.c
drivers/hid/hid-roccat-isku.c [new file with mode: 0644]
drivers/hid/hid-roccat-isku.h [new file with mode: 0644]
drivers/hid/hid-roccat-kone.c
drivers/hid/hid-wacom.c
drivers/hid/hid-wiimote-core.c [moved from drivers/hid/hid-wiimote.c with 89% similarity]
drivers/hid/hid-wiimote-debug.c [new file with mode: 0644]
drivers/hid/hid-wiimote-ext.c [new file with mode: 0644]
drivers/hid/hid-wiimote.h [new file with mode: 0644]
drivers/hid/usbhid/hid-core.c
drivers/hid/usbhid/hid-quirks.c
drivers/hid/usbhid/usbhid.h
drivers/hid/usbhid/usbkbd.c
drivers/input/evdev.c
drivers/input/input-polldev.c
drivers/input/keyboard/Kconfig
drivers/input/keyboard/Makefile
drivers/input/keyboard/adp5520-keys.c
drivers/input/keyboard/amikbd.c
drivers/input/keyboard/atkbd.c
drivers/input/keyboard/bf54x-keys.c
drivers/input/keyboard/davinci_keyscan.c
drivers/input/keyboard/ep93xx_keypad.c
drivers/input/keyboard/gpio_keys_polled.c
drivers/input/keyboard/imx_keypad.c
drivers/input/keyboard/jornada680_kbd.c
drivers/input/keyboard/jornada720_kbd.c
drivers/input/keyboard/lm8323.c
drivers/input/keyboard/matrix_keypad.c
drivers/input/keyboard/nomadik-ske-keypad.c
drivers/input/keyboard/omap-keypad.c
drivers/input/keyboard/omap4-keypad.c
drivers/input/keyboard/opencores-kbd.c
drivers/input/keyboard/pmic8xxx-keypad.c
drivers/input/keyboard/pxa27x_keypad.c
drivers/input/keyboard/pxa930_rotary.c
drivers/input/keyboard/samsung-keypad.c
drivers/input/keyboard/sh_keysc.c
drivers/input/keyboard/spear-keyboard.c
drivers/input/keyboard/stmpe-keypad.c
drivers/input/keyboard/tc3589x-keypad.c
drivers/input/keyboard/tca8418_keypad.c [new file with mode: 0644]
drivers/input/keyboard/tegra-kbc.c
drivers/input/keyboard/tnetv107x-keypad.c
drivers/input/keyboard/twl4030_keypad.c
drivers/input/keyboard/w90p910_keypad.c
drivers/input/misc/88pm860x_onkey.c
drivers/input/misc/Kconfig
drivers/input/misc/Makefile
drivers/input/misc/ab8500-ponkey.c
drivers/input/misc/adxl34x-spi.c
drivers/input/misc/adxl34x.c
drivers/input/misc/ati_remote2.c
drivers/input/misc/bfin_rotary.c
drivers/input/misc/cobalt_btns.c
drivers/input/misc/dm355evm_keys.c
drivers/input/misc/gp2ap002a00f.c [new file with mode: 0644]
drivers/input/misc/gpio_tilt_polled.c [new file with mode: 0644]
drivers/input/misc/ixp4xx-beeper.c
drivers/input/misc/max8925_onkey.c
drivers/input/misc/mc13783-pwrbutton.c
drivers/input/misc/mpu3050.c
drivers/input/misc/pcap_keys.c
drivers/input/misc/pcf50633-input.c
drivers/input/misc/pcspkr.c
drivers/input/misc/pm8xxx-vibrator.c
drivers/input/misc/pmic8xxx-pwrkey.c
drivers/input/misc/pwm-beeper.c
drivers/input/misc/rb532_button.c
drivers/input/misc/rotary_encoder.c
drivers/input/misc/sgi_btns.c
drivers/input/misc/twl4030-pwrbutton.c
drivers/input/misc/twl4030-vibra.c
drivers/input/misc/twl6040-vibra.c
drivers/input/misc/wm831x-on.c
drivers/input/misc/xen-kbdfront.c
drivers/input/mouse/alps.c
drivers/input/mouse/alps.h
drivers/input/mouse/amimouse.c
drivers/input/mouse/elantech.c
drivers/input/mouse/elantech.h
drivers/input/mouse/gpio_mouse.c
drivers/input/mouse/hgpk.c
drivers/input/mouse/logips2pp.c
drivers/input/mouse/psmouse-base.c
drivers/input/mouse/psmouse.h
drivers/input/mouse/pxa930_trkball.c
drivers/input/mouse/sentelic.c
drivers/input/mouse/synaptics.c
drivers/input/mouse/synaptics.h
drivers/input/mouse/trackpoint.c
drivers/input/serio/altera_ps2.c
drivers/input/serio/at32psif.c
drivers/input/serio/i8042.c
drivers/input/serio/rpckbd.c
drivers/input/serio/xilinx_ps2.c
drivers/input/tablet/aiptek.c
drivers/input/tablet/wacom_sys.c
drivers/input/tablet/wacom_wac.c
drivers/input/tablet/wacom_wac.h
drivers/input/touchscreen/88pm860x-ts.c
drivers/input/touchscreen/Kconfig
drivers/input/touchscreen/Makefile
drivers/input/touchscreen/ad7877.c
drivers/input/touchscreen/ad7879-i2c.c
drivers/input/touchscreen/ad7879-spi.c
drivers/input/touchscreen/ad7879.c
drivers/input/touchscreen/ad7879.h
drivers/input/touchscreen/ads7846.c
drivers/input/touchscreen/atmel-wm97xx.c
drivers/input/touchscreen/atmel_tsadcc.c
drivers/input/touchscreen/auo-pixcir-ts.c [new file with mode: 0644]
drivers/input/touchscreen/da9034-ts.c
drivers/input/touchscreen/egalax_ts.c [new file with mode: 0644]
drivers/input/touchscreen/htcpen.c
drivers/input/touchscreen/intel-mid-touch.c
drivers/input/touchscreen/jornada720_ts.c
drivers/input/touchscreen/lpc32xx_ts.c
drivers/input/touchscreen/mainstone-wm97xx.c
drivers/input/touchscreen/mc13783_ts.c
drivers/input/touchscreen/migor_ts.c
drivers/input/touchscreen/pcap_ts.c
drivers/input/touchscreen/pixcir_i2c_ts.c [new file with mode: 0644]
drivers/input/touchscreen/s3c2410_ts.c
drivers/input/touchscreen/stmpe-ts.c
drivers/input/touchscreen/tnetv107x-ts.c
drivers/input/touchscreen/tps6507x-ts.c
drivers/input/touchscreen/ucb1400_ts.c
drivers/input/touchscreen/usbtouchscreen.c
drivers/input/touchscreen/w90p910_ts.c
drivers/input/touchscreen/wm831x-ts.c
drivers/input/touchscreen/zylonite-wm97xx.c
drivers/iommu/Kconfig
drivers/iommu/Makefile
drivers/iommu/amd_iommu.c
drivers/iommu/amd_iommu_init.c
drivers/iommu/amd_iommu_proto.h
drivers/iommu/amd_iommu_types.h
drivers/iommu/amd_iommu_v2.c [new file with mode: 0644]
drivers/iommu/intel-iommu.c
drivers/iommu/iommu.c
drivers/iommu/msm_iommu.c
drivers/iommu/omap-iommu.c
drivers/iommu/omap-iovmm.c
drivers/media/video/omap3isp/isp.c
drivers/media/video/omap3isp/isp.h
drivers/media/video/omap3isp/ispccdc.c
drivers/media/video/omap3isp/ispstat.c
drivers/media/video/omap3isp/ispvideo.c
drivers/message/fusion/lsi/mpi_cnfg.h
drivers/message/fusion/mptbase.c
drivers/message/fusion/mptbase.h
drivers/message/fusion/mptsas.c
drivers/mtd/Kconfig
drivers/mtd/Makefile
drivers/mtd/afs.c
drivers/mtd/ar7part.c
drivers/mtd/bcm63xxpart.c [new file with mode: 0644]
drivers/mtd/chips/cfi_cmdset_0020.c
drivers/mtd/devices/Kconfig
drivers/mtd/devices/block2mtd.c
drivers/mtd/devices/doc2000.c
drivers/mtd/devices/doc2001.c
drivers/mtd/devices/doc2001plus.c
drivers/mtd/devices/docg3.c
drivers/mtd/devices/docg3.h
drivers/mtd/devices/docprobe.c
drivers/mtd/devices/m25p80.c
drivers/mtd/devices/mtd_dataflash.c
drivers/mtd/devices/sst25l.c
drivers/mtd/ftl.c
drivers/mtd/inftlcore.c
drivers/mtd/inftlmount.c
drivers/mtd/lpddr/lpddr_cmds.c
drivers/mtd/maps/Kconfig
drivers/mtd/maps/Makefile
drivers/mtd/maps/bcm963xx-flash.c [deleted file]
drivers/mtd/maps/bfin-async-flash.c
drivers/mtd/maps/gpio-addr-flash.c
drivers/mtd/maps/ixp2000.c
drivers/mtd/maps/ixp4xx.c
drivers/mtd/maps/lantiq-flash.c
drivers/mtd/maps/latch-addr-flash.c
drivers/mtd/maps/physmap.c
drivers/mtd/maps/physmap_of.c
drivers/mtd/maps/pxa2xx-flash.c
drivers/mtd/maps/rbtx4939-flash.c
drivers/mtd/maps/sa1100-flash.c
drivers/mtd/maps/scb2_flash.c
drivers/mtd/maps/sun_uflash.c
drivers/mtd/mtd_blkdevs.c
drivers/mtd/mtdblock.c
drivers/mtd/mtdblock_ro.c
drivers/mtd/mtdchar.c
drivers/mtd/mtdconcat.c
drivers/mtd/mtdcore.c
drivers/mtd/mtdoops.c
drivers/mtd/mtdpart.c
drivers/mtd/mtdswap.c
drivers/mtd/nand/Kconfig
drivers/mtd/nand/ams-delta.c
drivers/mtd/nand/bcm_umi_nand.c
drivers/mtd/nand/davinci_nand.c
drivers/mtd/nand/diskonchip.c
drivers/mtd/nand/fsl_elbc_nand.c
drivers/mtd/nand/fsl_upm.c
drivers/mtd/nand/gpio.c
drivers/mtd/nand/jz4740_nand.c
drivers/mtd/nand/mpc5121_nfc.c
drivers/mtd/nand/nand_base.c
drivers/mtd/nand/nand_bbt.c
drivers/mtd/nand/nand_ids.c
drivers/mtd/nand/nandsim.c
drivers/mtd/nand/ndfc.c
drivers/mtd/nand/nomadik_nand.c
drivers/mtd/nand/nuc900_nand.c
drivers/mtd/nand/omap2.c
drivers/mtd/nand/pasemi_nand.c
drivers/mtd/nand/plat_nand.c
drivers/mtd/nand/pxa3xx_nand.c
drivers/mtd/nand/sharpsl.c
drivers/mtd/nand/sm_common.c
drivers/mtd/nand/socrates_nand.c
drivers/mtd/nand/tmio_nand.c
drivers/mtd/nand/txx9ndfmc.c
drivers/mtd/nftlcore.c
drivers/mtd/nftlmount.c
drivers/mtd/onenand/generic.c
drivers/mtd/onenand/onenand_base.c
drivers/mtd/onenand/samsung.c
drivers/mtd/redboot.c
drivers/mtd/rfd_ftl.c
drivers/mtd/sm_ftl.c
drivers/mtd/ssfdc.c
drivers/mtd/tests/mtd_oobtest.c
drivers/mtd/tests/mtd_pagetest.c
drivers/mtd/tests/mtd_readtest.c
drivers/mtd/tests/mtd_speedtest.c
drivers/mtd/tests/mtd_stresstest.c
drivers/mtd/tests/mtd_subpagetest.c
drivers/mtd/tests/mtd_torturetest.c
drivers/mtd/ubi/build.c
drivers/mtd/ubi/debug.c
drivers/mtd/ubi/eba.c
drivers/mtd/ubi/io.c
drivers/mtd/ubi/kapi.c
drivers/mtd/ubi/ubi.h
drivers/mtd/ubi/wl.c
drivers/net/xen-netback/netback.c
drivers/net/xen-netback/xenbus.c
drivers/net/xen-netfront.c
drivers/pci/ats.c
drivers/pci/hotplug/pciehp.h
drivers/pci/hotplug/pciehp_core.c
drivers/pci/hotplug/pciehp_ctrl.c
drivers/pci/hotplug/pciehp_hpc.c
drivers/pci/msi.c
drivers/pci/pci-acpi.c
drivers/pci/pcie/aspm.c
drivers/pci/xen-pcifront.c
drivers/pinctrl/Kconfig
drivers/pinctrl/Makefile
drivers/pinctrl/core.c
drivers/pinctrl/core.h
drivers/pinctrl/pinconf.c [new file with mode: 0644]
drivers/pinctrl/pinconf.h [new file with mode: 0644]
drivers/pinctrl/pinctrl-coh901.c [moved from drivers/gpio/gpio-u300.c with 98% similarity]
drivers/pinctrl/pinctrl-sirf.c [moved from drivers/pinctrl/pinmux-sirf.c with 99% similarity]
drivers/pinctrl/pinctrl-u300.c [moved from drivers/pinctrl/pinmux-u300.c with 96% similarity]
drivers/pinctrl/pinmux.c
drivers/regulator/88pm8607.c
drivers/regulator/Kconfig
drivers/regulator/Makefile
drivers/regulator/aat2870-regulator.c
drivers/regulator/ab3100.c
drivers/regulator/ab8500.c
drivers/regulator/ad5398.c
drivers/regulator/bq24022.c
drivers/regulator/core.c
drivers/regulator/da903x.c
drivers/regulator/da9052-regulator.c [new file with mode: 0644]
drivers/regulator/db8500-prcmu.c
drivers/regulator/dummy.c
drivers/regulator/fixed.c
drivers/regulator/gpio-regulator.c
drivers/regulator/isl6271a-regulator.c
drivers/regulator/lp3971.c
drivers/regulator/lp3972.c
drivers/regulator/max1586.c
drivers/regulator/max8649.c
drivers/regulator/max8660.c
drivers/regulator/max8925-regulator.c
drivers/regulator/max8952.c
drivers/regulator/max8997.c
drivers/regulator/max8998.c
drivers/regulator/mc13783-regulator.c
drivers/regulator/mc13892-regulator.c
drivers/regulator/mc13xxx-regulator-core.c
drivers/regulator/mc13xxx.h
drivers/regulator/of_regulator.c [new file with mode: 0644]
drivers/regulator/pcap-regulator.c
drivers/regulator/pcf50633-regulator.c
drivers/regulator/tps6105x-regulator.c
drivers/regulator/tps65023-regulator.c
drivers/regulator/tps6507x-regulator.c
drivers/regulator/tps6524x-regulator.c
drivers/regulator/tps6586x-regulator.c
drivers/regulator/tps65910-regulator.c
drivers/regulator/tps65912-regulator.c
drivers/regulator/twl-regulator.c
drivers/regulator/userspace-consumer.c
drivers/regulator/virtual.c
drivers/regulator/wm831x-dcdc.c
drivers/regulator/wm831x-isink.c
drivers/regulator/wm831x-ldo.c
drivers/regulator/wm8350-regulator.c
drivers/regulator/wm8400-regulator.c
drivers/regulator/wm8994-regulator.c
drivers/scsi/be2iscsi/be_main.c
drivers/scsi/bfa/bfa_defs.h
drivers/scsi/bfa/bfa_defs_svc.h
drivers/scsi/bfa/bfa_ioc.c
drivers/scsi/bfa/bfad_debugfs.c
drivers/scsi/device_handler/scsi_dh.c
drivers/scsi/device_handler/scsi_dh_emc.c
drivers/scsi/device_handler/scsi_dh_hp_sw.c
drivers/scsi/device_handler/scsi_dh_rdac.c
drivers/scsi/hpsa.c
drivers/scsi/lpfc/lpfc.h
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_bsg.c
drivers/scsi/lpfc/lpfc_bsg.h
drivers/scsi/lpfc/lpfc_compat.h
drivers/scsi/lpfc/lpfc_crtn.h
drivers/scsi/lpfc/lpfc_debugfs.c
drivers/scsi/lpfc/lpfc_els.c
drivers/scsi/lpfc/lpfc_hbadisc.c
drivers/scsi/lpfc/lpfc_hw.h
drivers/scsi/lpfc/lpfc_hw4.h
drivers/scsi/lpfc/lpfc_init.c
drivers/scsi/lpfc/lpfc_mbox.c
drivers/scsi/lpfc/lpfc_mem.c
drivers/scsi/lpfc/lpfc_nportdisc.c
drivers/scsi/lpfc/lpfc_scsi.c
drivers/scsi/lpfc/lpfc_scsi.h
drivers/scsi/lpfc/lpfc_sli.c
drivers/scsi/lpfc/lpfc_sli4.h
drivers/scsi/lpfc/lpfc_version.h
drivers/scsi/lpfc/lpfc_vport.c
drivers/scsi/mac_scsi.c
drivers/scsi/mpt2sas/mpi/mpi2.h
drivers/scsi/mpt2sas/mpi/mpi2_cnfg.h
drivers/scsi/mpt2sas/mpi/mpi2_ioc.h
drivers/scsi/mpt2sas/mpi/mpi2_raid.h
drivers/scsi/mpt2sas/mpi/mpi2_tool.h
drivers/scsi/mpt2sas/mpt2sas_base.c
drivers/scsi/mpt2sas/mpt2sas_base.h
drivers/scsi/mpt2sas/mpt2sas_ctl.c
drivers/scsi/mpt2sas/mpt2sas_scsih.c
drivers/scsi/mpt2sas/mpt2sas_transport.c
drivers/scsi/qla2xxx/qla_attr.c
drivers/scsi/qla2xxx/qla_bsg.c
drivers/scsi/qla2xxx/qla_dbg.c
drivers/scsi/qla2xxx/qla_dbg.h
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_gbl.h
drivers/scsi/qla2xxx/qla_gs.c
drivers/scsi/qla2xxx/qla_init.c
drivers/scsi/qla2xxx/qla_iocb.c
drivers/scsi/qla2xxx/qla_isr.c
drivers/scsi/qla2xxx/qla_mbx.c
drivers/scsi/qla2xxx/qla_nx.c
drivers/scsi/qla2xxx/qla_os.c
drivers/scsi/qla2xxx/qla_sup.c
drivers/scsi/qla4xxx/ql4_dbg.c
drivers/scsi/qla4xxx/ql4_def.h
drivers/scsi/qla4xxx/ql4_isr.c
drivers/scsi/qla4xxx/ql4_nx.c
drivers/scsi/qla4xxx/ql4_os.c
drivers/scsi/qla4xxx/ql4_version.h
drivers/scsi/scsi_error.c
drivers/scsi/scsi_pm.c
drivers/scsi/scsi_priv.h
drivers/scsi/scsi_transport_iscsi.c
drivers/scsi/sd.c
drivers/staging/gma500/accel_2d.c
drivers/staging/gma500/cdv_intel_display.c
drivers/staging/gma500/framebuffer.c
drivers/staging/gma500/mdfld_intel_display.c
drivers/staging/gma500/mrst_crtc.c
drivers/staging/gma500/psb_drv.c
drivers/staging/gma500/psb_intel_display.c
drivers/usb/misc/usbled.c
drivers/video/xen-fbfront.c
drivers/watchdog/Kconfig
drivers/watchdog/Makefile
drivers/watchdog/ar7_wdt.c
drivers/watchdog/ath79_wdt.c
drivers/watchdog/bcm63xx_wdt.c
drivers/watchdog/cpu5wdt.c
drivers/watchdog/cpwd.c
drivers/watchdog/davinci_wdt.c
drivers/watchdog/dw_wdt.c
drivers/watchdog/eurotechwdt.c
drivers/watchdog/ibmasr.c
drivers/watchdog/indydog.c
drivers/watchdog/iop_wdt.c
drivers/watchdog/ixp2000_wdt.c
drivers/watchdog/ixp4xx_wdt.c
drivers/watchdog/jz4740_wdt.c
drivers/watchdog/ks8695_wdt.c
drivers/watchdog/lantiq_wdt.c
drivers/watchdog/max63xx_wdt.c
drivers/watchdog/mtx-1_wdt.c
drivers/watchdog/nuc900_wdt.c
drivers/watchdog/of_xilinx_wdt.c
drivers/watchdog/omap_wdt.c
drivers/watchdog/orion_wdt.c
drivers/watchdog/pnx4008_wdt.c
drivers/watchdog/rc32434_wdt.c
drivers/watchdog/rdc321x_wdt.c
drivers/watchdog/riowd.c
drivers/watchdog/s3c2410_wdt.c
drivers/watchdog/stmp3xxx_wdt.c
drivers/watchdog/ts72xx_wdt.c
drivers/watchdog/twl4030_wdt.c
drivers/watchdog/via_wdt.c [new file with mode: 0644]
drivers/watchdog/wm831x_wdt.c
drivers/watchdog/wm8350_wdt.c
drivers/xen/Kconfig
drivers/xen/Makefile
drivers/xen/events.c
drivers/xen/evtchn.c
drivers/xen/gntalloc.c
drivers/xen/gntdev.c
drivers/xen/grant-table.c
drivers/xen/privcmd.c [moved from drivers/xen/xenfs/privcmd.c with 92% similarity]
drivers/xen/privcmd.h [new file with mode: 0644]
drivers/xen/swiotlb-xen.c
drivers/xen/xen-pciback/pci_stub.c
drivers/xen/xen-pciback/xenbus.c
drivers/xen/xenbus/Makefile
drivers/xen/xenbus/xenbus_client.c
drivers/xen/xenbus/xenbus_comms.h
drivers/xen/xenbus/xenbus_dev_backend.c [new file with mode: 0644]
drivers/xen/xenbus/xenbus_dev_frontend.c [moved from drivers/xen/xenfs/xenbus.c with 95% similarity]
drivers/xen/xenbus/xenbus_probe.c
drivers/xen/xenbus/xenbus_probe.h
drivers/xen/xenbus/xenbus_probe_backend.c
drivers/xen/xenbus/xenbus_probe_frontend.c
drivers/xen/xenbus/xenbus_xs.c
drivers/xen/xenfs/Makefile
drivers/xen/xenfs/super.c
drivers/xen/xenfs/xenfs.h
fs/9p/cache.c
fs/9p/fid.c
fs/9p/v9fs.c
fs/9p/vfs_addr.c
fs/9p/vfs_dentry.c
fs/9p/vfs_dir.c
fs/9p/vfs_file.c
fs/9p/vfs_inode.c
fs/9p/vfs_inode_dotl.c
fs/9p/vfs_super.c
fs/9p/xattr.c
fs/dlm/config.c
fs/dlm/config.h
fs/dlm/debug_fs.c
fs/dlm/dir.c
fs/dlm/dlm_internal.h
fs/dlm/lock.c
fs/dlm/lockspace.c
fs/dlm/member.c
fs/dlm/member.h
fs/dlm/rcom.c
fs/dlm/rcom.h
fs/dlm/recover.c
fs/dlm/recoverd.c
fs/dlm/user.c
fs/gfs2/lock_dlm.c
fs/jffs2/erase.c
fs/jffs2/fs.c
fs/jffs2/readinode.c
fs/jffs2/scan.c
fs/jffs2/super.c
fs/jffs2/wbuf.c
fs/jffs2/writev.c
fs/logfs/dev_mtd.c
fs/nfs/callback_proc.c
fs/nfs/client.c
fs/nfs/file.c
fs/nfs/idmap.c
fs/nfs/inode.c
fs/nfs/internal.h
fs/nfs/nfs4_fs.h
fs/nfs/nfs4filelayout.c
fs/nfs/nfs4proc.c
fs/nfs/nfs4state.c
fs/nfs/nfs4xdr.c
fs/nfs/objlayout/objio_osd.c
fs/nfs/objlayout/objlayout.c
fs/nfs/pnfs.c
fs/nfs/pnfs.h
fs/nfs/super.c
fs/nfs/write.c
fs/nfsd/nfs4callback.c
fs/ocfs2/stack_user.c
fs/romfs/mmap-nommu.c
fs/ubifs/lpt.c
fs/ubifs/tnc.c
fs/ubifs/xattr.c
include/drm/Kbuild
include/drm/drm.h
include/drm/drmP.h
include/drm/drm_crtc.h
include/drm/drm_crtc_helper.h
include/drm/drm_fourcc.h [new file with mode: 0644]
include/drm/drm_mode.h
include/drm/drm_sman.h [deleted file]
include/drm/exynos_drm.h
include/drm/gma_drm.h [new file with mode: 0644]
include/drm/i915_drm.h
include/drm/radeon_drm.h
include/drm/sis_drm.h
include/drm/ttm/ttm_bo_api.h
include/drm/ttm/ttm_bo_driver.h
include/drm/ttm/ttm_page_alloc.h
include/drm/via_drm.h
include/linux/acpi.h
include/linux/ahci_platform.h
include/linux/amd-iommu.h
include/linux/dlm.h
include/linux/hid.h
include/linux/input/auo-pixcir-ts.h [new file with mode: 0644]
include/linux/input/gp2ap002a00f.h [new file with mode: 0644]
include/linux/input/gpio_tilt.h [new file with mode: 0644]
include/linux/input/pixcir_ts.h [new file with mode: 0644]
include/linux/input/samsung-keypad.h [new file with mode: 0644]
include/linux/input/tca8418_keypad.h [new file with mode: 0644]
include/linux/iommu.h
include/linux/kvm_host.h
include/linux/kvm_para.h
include/linux/mfd/mc13xxx.h
include/linux/mfd/tps65910.h
include/linux/msi.h
include/linux/mtd/cfi.h
include/linux/mtd/cfi_endian.h
include/linux/mtd/map.h
include/linux/mtd/mtd.h
include/linux/mtd/nand.h
include/linux/mtd/physmap.h
include/linux/nfs_fs_sb.h
include/linux/nfs_idmap.h
include/linux/nfs_xdr.h
include/linux/pci-aspm.h
include/linux/pci.h
include/linux/pci_regs.h
include/linux/pinctrl/machine.h
include/linux/pinctrl/pinconf.h [new file with mode: 0644]
include/linux/pinctrl/pinctrl.h
include/linux/pinctrl/pinmux.h
include/linux/regulator/consumer.h
include/linux/regulator/driver.h
include/linux/regulator/of_regulator.h [new file with mode: 0644]
include/linux/sunrpc/auth.h
include/linux/sunrpc/auth_gss.h
include/linux/sunrpc/xdr.h
include/linux/swiotlb.h
include/linux/ucb1400.h
include/linux/watchdog.h
include/mtd/mtd-abi.h
include/net/9p/9p.h
include/scsi/scsi_device.h
include/scsi/scsi_host.h
include/scsi/scsi_transport_iscsi.h
include/xen/events.h
include/xen/grant_table.h
include/xen/interface/grant_table.h
include/xen/interface/io/xs_wire.h
include/xen/interface/xen.h
include/xen/xenbus.h
include/xen/xenbus_dev.h [new file with mode: 0644]
init/do_mounts.c
kernel/jump_label.c
lib/swiotlb.c
net/9p/client.c
net/9p/error.c
net/9p/mod.c
net/9p/protocol.c
net/9p/trans_fd.c
net/9p/trans_rdma.c
net/9p/trans_virtio.c
net/9p/util.c
net/sunrpc/auth_generic.c
net/sunrpc/auth_gss/auth_gss.c
net/sunrpc/xdr.c
sound/soc/codecs/sgtl5000.c
virt/kvm/coalesced_mmio.c
virt/kvm/ioapic.c
virt/kvm/iommu.c
virt/kvm/kvm_main.c

diff --git a/Documentation/ABI/stable/sysfs-bus-xen-backend b/Documentation/ABI/stable/sysfs-bus-xen-backend
new file mode 100644 (file)
index 0000000..3d5951c
--- /dev/null
@@ -0,0 +1,75 @@
+What:          /sys/bus/xen-backend/devices/*/devtype
+Date:          Feb 2009
+KernelVersion: 2.6.38
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+                The type of the device.  e.g., one of: 'vbd' (block),
+                'vif' (network), or 'vfb' (framebuffer).
+
+What:          /sys/bus/xen-backend/devices/*/nodename
+Date:          Feb 2009
+KernelVersion: 2.6.38
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+                XenStore node (under /local/domain/NNN/) for this
+                backend device.
+
+What:          /sys/bus/xen-backend/devices/vbd-*/physical_device
+Date:          April 2011
+KernelVersion: 3.0
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+                The major:minor number (in hexidecimal) of the
+                physical device providing the storage for this backend
+                block device.
+
+What:          /sys/bus/xen-backend/devices/vbd-*/mode
+Date:          April 2011
+KernelVersion: 3.0
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+                Whether the block device is read-only ('r') or
+                read-write ('w').
+
+What:          /sys/bus/xen-backend/devices/vbd-*/statistics/f_req
+Date:          April 2011
+KernelVersion: 3.0
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+                Number of flush requests from the frontend.
+
+What:          /sys/bus/xen-backend/devices/vbd-*/statistics/oo_req
+Date:          April 2011
+KernelVersion: 3.0
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+                Number of requests delayed because the backend was too
+                busy processing previous requests.
+
+What:          /sys/bus/xen-backend/devices/vbd-*/statistics/rd_req
+Date:          April 2011
+KernelVersion: 3.0
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+                Number of read requests from the frontend.
+
+What:          /sys/bus/xen-backend/devices/vbd-*/statistics/rd_sect
+Date:          April 2011
+KernelVersion: 3.0
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+                Number of sectors read by the frontend.
+
+What:          /sys/bus/xen-backend/devices/vbd-*/statistics/wr_req
+Date:          April 2011
+KernelVersion: 3.0
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+                Number of write requests from the frontend.
+
+What:          /sys/bus/xen-backend/devices/vbd-*/statistics/wr_sect
+Date:          April 2011
+KernelVersion: 3.0
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+                Number of sectors written by the frontend.
diff --git a/Documentation/ABI/stable/sysfs-devices-system-xen_memory b/Documentation/ABI/stable/sysfs-devices-system-xen_memory
new file mode 100644 (file)
index 0000000..caa311d
--- /dev/null
@@ -0,0 +1,77 @@
+What:          /sys/devices/system/xen_memory/xen_memory0/max_retry_count
+Date:          May 2011
+KernelVersion: 2.6.39
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+               The maximum number of times the balloon driver will
+               attempt to increase the balloon before giving up.  See
+               also 'retry_count' below.
+               A value of zero means retry forever and is the default one.
+
+What:          /sys/devices/system/xen_memory/xen_memory0/max_schedule_delay
+Date:          May 2011
+KernelVersion: 2.6.39
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+               The limit that 'schedule_delay' (see below) will be
+               increased to. The default value is 32 seconds.
+
+What:          /sys/devices/system/xen_memory/xen_memory0/retry_count
+Date:          May 2011
+KernelVersion: 2.6.39
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+               The current number of times that the balloon driver
+               has attempted to increase the size of the balloon.
+               The default value is one. With max_retry_count being
+               zero (unlimited), this means that the driver will attempt
+               to retry with a 'schedule_delay' delay.
+
+What:          /sys/devices/system/xen_memory/xen_memory0/schedule_delay
+Date:          May 2011
+KernelVersion: 2.6.39
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+               The time (in seconds) to wait between attempts to
+               increase the balloon.  Each time the balloon cannot be
+               increased, 'schedule_delay' is increased (until
+               'max_schedule_delay' is reached at which point it
+               will use the max value).
+
+What:          /sys/devices/system/xen_memory/xen_memory0/target
+Date:          April 2008
+KernelVersion: 2.6.26
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+               The target number of pages to adjust this domain's
+               memory reservation to.
+
+What:          /sys/devices/system/xen_memory/xen_memory0/target_kb
+Date:          April 2008
+KernelVersion: 2.6.26
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+               As target above, except the value is in KiB.
+
+What:          /sys/devices/system/xen_memory/xen_memory0/info/current_kb
+Date:          April 2008
+KernelVersion: 2.6.26
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+               Current size (in KiB) of this domain's memory
+               reservation.
+
+What:          /sys/devices/system/xen_memory/xen_memory0/info/high_kb
+Date:          April 2008
+KernelVersion: 2.6.26
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+               Amount (in KiB) of high memory in the balloon.
+
+What:          /sys/devices/system/xen_memory/xen_memory0/info/low_kb
+Date:          April 2008
+KernelVersion: 2.6.26
+Contact:       Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Description:
+               Amount (in KiB) of low (or normal) memory in the
+               balloon.
index 349ecf2..34f5110 100644 (file)
@@ -66,6 +66,24 @@ Description:
                re-discover previously removed devices.
                Depends on CONFIG_HOTPLUG.
 
+What:          /sys/bus/pci/devices/.../msi_irqs/
+Date:          September, 2011
+Contact:       Neil Horman <nhorman@tuxdriver.com>
+Description:
+               The /sys/devices/.../msi_irqs directory contains a variable set
+               of sub-directories, with each sub-directory being named after a
+               corresponding msi irq vector allocated to that device.  Each
+               numbered sub-directory N contains attributes of that irq.
+               Note that this directory is not created for device drivers which
+               do not support msi irqs
+
+What:          /sys/bus/pci/devices/.../msi_irqs/<N>/mode
+Date:          September 2011
+Contact:       Neil Horman <nhorman@tuxdriver.com>
+Description:
+               This attribute indicates the mode that the irq vector named by
+               the parent directory is in (msi vs. msix)
+
 What:          /sys/bus/pci/devices/.../remove
 Date:          January 2009
 Contact:       Linux PCI developers <linux-pci@vger.kernel.org>
diff --git a/Documentation/ABI/testing/sysfs-devices-platform-docg3 b/Documentation/ABI/testing/sysfs-devices-platform-docg3
new file mode 100644 (file)
index 0000000..8aa3671
--- /dev/null
@@ -0,0 +1,34 @@
+What:          /sys/devices/platform/docg3/f[0-3]_dps[01]_is_keylocked
+Date:          November 2011
+KernelVersion: 3.3
+Contact:       Robert Jarzmik <robert.jarzmik@free.fr>
+Description:
+               Show whether the floor (0 to 4), protection area (0 or 1) is
+               keylocked. Each docg3 chip (or floor) has 2 protection areas,
+               which can cover any part of it, block aligned, called DPS.
+               The protection has information embedded whether it blocks reads,
+               writes or both.
+               The result is:
+               0 -> the DPS is not keylocked
+               1 -> the DPS is keylocked
+Users:         None identified so far.
+
+What:          /sys/devices/platform/docg3/f[0-3]_dps[01]_protection_key
+Date:          November 2011
+KernelVersion: 3.3
+Contact:       Robert Jarzmik <robert.jarzmik@free.fr>
+Description:
+               Enter the protection key for the floor (0 to 4), protection area
+               (0 or 1). Each docg3 chip (or floor) has 2 protection areas,
+               which can cover any part of it, block aligned, called DPS.
+               The protection has information embedded whether it blocks reads,
+               writes or both.
+               The protection key is a string of 8 bytes (value 0-255).
+               Entering the correct value toggle the lock, and can be observed
+               through f[0-3]_dps[01]_is_keylocked.
+               Possible values are:
+                       - 8 bytes
+               Typical values are:
+                       - "00000000"
+                       - "12345678"
+Users:         None identified so far.
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-multitouch b/Documentation/ABI/testing/sysfs-driver-hid-multitouch
new file mode 100644 (file)
index 0000000..f79839d
--- /dev/null
@@ -0,0 +1,9 @@
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/quirks
+Date:          November 2011
+Contact:       Benjamin Tissoires <benjamin.tissoires@gmail.com>
+Description:   The integer value of this attribute corresponds to the
+               quirks actually in place to handle the device's protocol.
+               When read, this attribute returns the current settings (see
+               MT_QUIRKS_* in hid-multitouch.c).
+               When written this attribute change on the fly the quirks, then
+               the protocol to handle the device.
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-isku b/Documentation/ABI/testing/sysfs-driver-hid-roccat-isku
new file mode 100644 (file)
index 0000000..189dc43
--- /dev/null
@@ -0,0 +1,135 @@
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/actual_profile
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   The integer value of this attribute ranges from 0-4.
+               When read, this attribute returns the number of the actual
+               profile. This value is persistent, so its equivalent to the
+               profile that's active when the device is powered on next time.
+               When written, this file sets the number of the startup profile
+               and the device activates this profile immediately.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/info
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When read, this file returns general data like firmware version.
+               The data is 6 bytes long.
+               This file is readonly.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/key_mask
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When written, this file lets one deactivate certain keys like
+               windows and application keys, to prevent accidental presses.
+               Profile number for which this settings occur is included in
+               written data. The data has to be 6 bytes long.
+               Before reading this file, control has to be written to select
+               which profile to read.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/keys_capslock
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When written, this file lets one set the function of the
+               capslock key for a specific profile. Profile number is included
+               in written data. The data has to be 6 bytes long.
+               Before reading this file, control has to be written to select
+               which profile to read.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/keys_easyzone
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When written, this file lets one set the function of the
+               easyzone keys for a specific profile. Profile number is included
+               in written data. The data has to be 65 bytes long.
+               Before reading this file, control has to be written to select
+               which profile to read.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/keys_function
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When written, this file lets one set the function of the
+               function keys for a specific profile. Profile number is included
+               in written data. The data has to be 41 bytes long.
+               Before reading this file, control has to be written to select
+               which profile to read.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/keys_macro
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When written, this file lets one set the function of the macro
+               keys for a specific profile. Profile number is included in
+               written data. The data has to be 35 bytes long.
+               Before reading this file, control has to be written to select
+               which profile to read.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/keys_media
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When written, this file lets one set the function of the media
+               keys for a specific profile. Profile number is included in
+               written data. The data has to be 29 bytes long.
+               Before reading this file, control has to be written to select
+               which profile to read.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/keys_thumbster
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When written, this file lets one set the function of the
+               thumbster keys for a specific profile. Profile number is included
+               in written data. The data has to be 23 bytes long.
+               Before reading this file, control has to be written to select
+               which profile to read.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/last_set
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When written, this file lets one set the time in secs since
+               epoch in which the last configuration took place.
+               The data has to be 20 bytes long.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/light
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When written, this file lets one set the backlight intensity for
+               a specific profile. Profile number is included in written data.
+               The data has to be 10 bytes long.
+               Before reading this file, control has to be written to select
+               which profile to read.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/macro
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When written, this file lets one store macros with max 500
+               keystrokes for a specific button for a specific profile.
+               Button and profile numbers are included in written data.
+               The data has to be 2083 bytes long.
+               Before reading this file, control has to be written to select
+               which profile and key to read.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/control
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When written, this file lets one select which data from which
+               profile will be read next. The data has to be 3 bytes long.
+               This file is writeonly.
+Users:         http://roccat.sourceforge.net
+
+What:          /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/talk
+Date:          June 2011
+Contact:       Stefan Achatz <erazor_de@users.sourceforge.net>
+Description:   When written, this file lets one trigger easyshift functionality
+               from the host.
+               The data has to be 16 bytes long.
+               This file is writeonly.
+Users:         http://roccat.sourceforge.net
index 5d5a16e..3d98009 100644 (file)
@@ -8,3 +8,15 @@ Contact:       David Herrmann <dh.herrmann@googlemail.com>
 Description:   Make it possible to set/get current led state. Reading from it
                returns 0 if led is off and 1 if it is on. Writing 0 to it
                disables the led, writing 1 enables it.
+
+What:          /sys/bus/hid/drivers/wiimote/<dev>/extension
+Date:          August 2011
+KernelVersion: 3.2
+Contact:       David Herrmann <dh.herrmann@googlemail.com>
+Description:   This file contains the currently connected and initialized
+               extensions. It can be one of: none, motionp, nunchuck, classic,
+               motionp+nunchuck, motionp+classic
+               motionp is the official Nintendo Motion+ extension, nunchuck is
+               the official Nintendo Nunchuck extension and classic is the
+               Nintendo Classic Controller extension. The motionp extension can
+               be combined with the other two.
index 82d4df1..0130d66 100644 (file)
@@ -15,9 +15,9 @@ Contact:      linux-input@vger.kernel.org
 Description:
                Attribute group for control of the status LEDs and the OLEDs.
                This attribute group is only available for Intuos 4 M, L,
-               and XL (with LEDs and OLEDs) and Cintiq 21UX2 (LEDs only).
-               Therefore its presence implicitly signifies the presence of
-               said LEDs and OLEDs on the tablet device.
+               and XL (with LEDs and OLEDs) and Cintiq 21UX2 and Cintiq 24HD
+               (LEDs only). Therefore its presence implicitly signifies the
+               presence of said LEDs and OLEDs on the tablet device.
 
 What:          /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status0_luminance
 Date:          August 2011
@@ -41,16 +41,17 @@ Date:               August 2011
 Contact:       linux-input@vger.kernel.org
 Description:
                Writing to this file sets which one of the four (for Intuos 4)
-               or of the right four (for Cintiq 21UX2) status LEDs is active (0..3).
-               The other three LEDs on the same side are always inactive.
+               or of the right four (for Cintiq 21UX2 and Cintiq 24HD) status
+               LEDs is active (0..3). The other three LEDs on the same side are
+               always inactive.
 
 What:          /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led1_select
 Date:          September 2011
 Contact:       linux-input@vger.kernel.org
 Description:
-               Writing to this file sets which one of the left four (for Cintiq 21UX2)
-               status LEDs is active (0..3). The other three LEDs on the left are always
-               inactive.
+               Writing to this file sets which one of the left four (for Cintiq 21UX2
+               and Cintiq 24HD) status LEDs is active (0..3). The other three LEDs on
+               the left are always inactive.
 
 What:          /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/buttons_luminance
 Date:          August 2011
diff --git a/Documentation/devicetree/bindings/input/tegra-kbc.txt b/Documentation/devicetree/bindings/input/tegra-kbc.txt
new file mode 100644 (file)
index 0000000..5ecfa99
--- /dev/null
@@ -0,0 +1,18 @@
+* Tegra keyboard controller
+
+Required properties:
+- compatible: "nvidia,tegra20-kbc"
+
+Optional properties:
+- debounce-delay: delay in milliseconds per row scan for debouncing
+- repeat-delay: delay in milliseconds before repeat starts
+- ghost-filter: enable ghost filtering for this device
+- wakeup-source: configure keyboard as a wakeup source for suspend/resume
+
+Example:
+
+keyboard: keyboard {
+       compatible = "nvidia,tegra20-kbc";
+       reg = <0x7000e200 0x100>;
+       ghost-filter;
+};
diff --git a/Documentation/devicetree/bindings/mtd/gpio-control-nand.txt b/Documentation/devicetree/bindings/mtd/gpio-control-nand.txt
new file mode 100644 (file)
index 0000000..719f4dc
--- /dev/null
@@ -0,0 +1,44 @@
+GPIO assisted NAND flash
+
+The GPIO assisted NAND flash uses a memory mapped interface to
+read/write the NAND commands and data and GPIO pins for the control
+signals.
+
+Required properties:
+- compatible : "gpio-control-nand"
+- reg : should specify localbus chip select and size used for the chip.  The
+  resource describes the data bus connected to the NAND flash and all accesses
+  are made in native endianness.
+- #address-cells, #size-cells : Must be present if the device has sub-nodes
+  representing partitions.
+- gpios : specifies the gpio pins to control the NAND device.  nwp is an
+  optional gpio and may be set to 0 if not present.
+
+Optional properties:
+- bank-width : Width (in bytes) of the device.  If not present, the width
+  defaults to 1 byte.
+- chip-delay : chip dependent delay for transferring data from array to
+  read registers (tR).  If not present then a default of 20us is used.
+- gpio-control-nand,io-sync-reg : A 64-bit physical address for a read
+  location used to guard against bus reordering with regards to accesses to
+  the GPIO's and the NAND flash data bus.  If present, then after changing
+  GPIO state and before and after command byte writes, this register will be
+  read to ensure that the GPIO accesses have completed.
+
+Examples:
+
+gpio-nand@1,0 {
+       compatible = "gpio-control-nand";
+       reg = <1 0x0000 0x2>;
+       #address-cells = <1>;
+       #size-cells = <1>;
+       gpios = <&banka 1 0     /* rdy */
+                &banka 2 0     /* nce */
+                &banka 3 0     /* ale */
+                &banka 4 0     /* cle */
+                0              /* nwp */>;
+
+       partition@0 {
+       ...
+       };
+};
diff --git a/Documentation/devicetree/bindings/regulator/fixed-regulator.txt b/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
new file mode 100644 (file)
index 0000000..9cf57fd
--- /dev/null
@@ -0,0 +1,29 @@
+Fixed Voltage regulators
+
+Required properties:
+- compatible: Must be "regulator-fixed";
+
+Optional properties:
+- gpio: gpio to use for enable control
+- startup-delay-us: startup time in microseconds
+- enable-active-high: Polarity of GPIO is Active high
+If this property is missing, the default assumed is Active low.
+
+Any property defined as part of the core regulator
+binding, defined in regulator.txt, can also be used.
+However a fixed voltage regulator is expected to have the
+regulator-min-microvolt and regulator-max-microvolt
+to be the same.
+
+Example:
+
+       abc: fixedregulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-supply";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               gpio = <&gpio1 16 0>;
+               startup-delay-us = <70000>;
+               enable-active-high;
+               regulator-boot-on
+       };
diff --git a/Documentation/devicetree/bindings/regulator/regulator.txt b/Documentation/devicetree/bindings/regulator/regulator.txt
new file mode 100644 (file)
index 0000000..5b7a408
--- /dev/null
@@ -0,0 +1,54 @@
+Voltage/Current Regulators
+
+Optional properties:
+- regulator-name: A string used as a descriptive name for regulator outputs
+- regulator-min-microvolt: smallest voltage consumers may set
+- regulator-max-microvolt: largest voltage consumers may set
+- regulator-microvolt-offset: Offset applied to voltages to compensate for voltage drops
+- regulator-min-microamp: smallest current consumers may set
+- regulator-max-microamp: largest current consumers may set
+- regulator-always-on: boolean, regulator should never be disabled
+- regulator-boot-on: bootloader/firmware enabled regulator
+- <name>-supply: phandle to the parent supply/regulator node
+
+Example:
+
+       xyzreg: regulator@0 {
+               regulator-min-microvolt = <1000000>;
+               regulator-max-microvolt = <2500000>;
+               regulator-always-on;
+               vin-supply = <&vin>;
+       };
+
+Regulator Consumers:
+Consumer nodes can reference one or more of its supplies/
+regulators using the below bindings.
+
+- <name>-supply: phandle to the regulator node
+
+These are the same bindings that a regulator in the above
+example used to reference its own supply, in which case
+its just seen as a special case of a regulator being a
+consumer itself.
+
+Example of a consumer device node (mmc) referencing two
+regulators (twl_reg1 and twl_reg2),
+
+       twl_reg1: regulator@0 {
+               ...
+               ...
+               ...
+       };
+
+       twl_reg2: regulator@1 {
+               ...
+               ...
+               ...
+       };
+
+       mmc: mmc@0x0 {
+               ...
+               ...
+               vmmc-supply = <&twl_reg1>;
+               vmmcaux-supply = <&twl_reg2>;
+       };
index 284b442..5575759 100644 (file)
@@ -350,15 +350,6 @@ Who:       anybody or Florian Mickler <florian@mickler.org>
 
 ----------------------------
 
-What:  KVM paravirt mmu host support
-When:  January 2011
-Why:   The paravirt mmu host support is slower than non-paravirt mmu, both
-       on newer and older hardware.  It is already not exposed to the guest,
-       and kept only for live migration purposes.
-Who:   Avi Kivity <avi@redhat.com>
-
-----------------------------
-
 What:  iwlwifi 50XX module parameters
 When:  3.0
 Why:   The "..50" modules parameters were used to configure 5000 series and
diff --git a/Documentation/input/alps.txt b/Documentation/input/alps.txt
new file mode 100644 (file)
index 0000000..f274c28
--- /dev/null
@@ -0,0 +1,188 @@
+ALPS Touchpad Protocol
+----------------------
+
+Introduction
+------------
+
+Currently the ALPS touchpad driver supports four protocol versions in use by
+ALPS touchpads, called versions 1, 2, 3, and 4. Information about the various
+protocol versions is contained in the following sections.
+
+Detection
+---------
+
+All ALPS touchpads should respond to the "E6 report" command sequence:
+E8-E6-E6-E6-E9. An ALPS touchpad should respond with either 00-00-0A or
+00-00-64.
+
+If the E6 report is successful, the touchpad model is identified using the "E7
+report" sequence: E8-E7-E7-E7-E9. The response is the model signature and is
+matched against known models in the alps_model_data_array.
+
+With protocol versions 3 and 4, the E7 report model signature is always
+73-02-64. To differentiate between these versions, the response from the
+"Enter Command Mode" sequence must be inspected as described below.
+
+Command Mode
+------------
+
+Protocol versions 3 and 4 have a command mode that is used to read and write
+one-byte device registers in a 16-bit address space. The command sequence
+EC-EC-EC-E9 places the device in command mode, and the device will respond
+with 88-07 followed by a third byte. This third byte can be used to determine
+whether the devices uses the version 3 or 4 protocol.
+
+To exit command mode, PSMOUSE_CMD_SETSTREAM (EA) is sent to the touchpad.
+
+While in command mode, register addresses can be set by first sending a
+specific command, either EC for v3 devices or F5 for v4 devices. Then the
+address is sent one nibble at a time, where each nibble is encoded as a
+command with optional data. This enoding differs slightly between the v3 and
+v4 protocols.
+
+Once an address has been set, the addressed register can be read by sending
+PSMOUSE_CMD_GETINFO (E9). The first two bytes of the response contains the
+address of the register being read, and the third contains the value of the
+register. Registers are written by writing the value one nibble at a time
+using the same encoding used for addresses.
+
+Packet Format
+-------------
+
+In the following tables, the following notation is used.
+
+ CAPITALS = stick, miniscules = touchpad
+
+?'s can have different meanings on different models, such as wheel rotation,
+extra buttons, stick buttons on a dualpoint, etc.
+
+PS/2 packet format
+------------------
+
+ byte 0:  0    0 YSGN XSGN    1    M    R    L
+ byte 1: X7   X6   X5   X4   X3   X2   X1   X0
+ byte 2: Y7   Y6   Y5   Y4   Y3   Y2   Y1   Y0
+
+Note that the device never signals overflow condition.
+
+ALPS Absolute Mode - Protocol Verion 1
+--------------------------------------
+
+ byte 0:  1    0    0    0    1   x9   x8   x7
+ byte 1:  0   x6   x5   x4   x3   x2   x1   x0
+ byte 2:  0    ?    ?    l    r    ?  fin  ges
+ byte 3:  0    ?    ?    ?    ?   y9   y8   y7
+ byte 4:  0   y6   y5   y4   y3   y2   y1   y0
+ byte 5:  0   z6   z5   z4   z3   z2   z1   z0
+
+ALPS Absolute Mode - Protocol Version 2
+---------------------------------------
+
+ byte 0:  1    ?    ?    ?    1    ?    ?    ?
+ byte 1:  0   x6   x5   x4   x3   x2   x1   x0
+ byte 2:  0  x10   x9   x8   x7    ?  fin  ges
+ byte 3:  0   y9   y8   y7    1    M    R    L
+ byte 4:  0   y6   y5   y4   y3   y2   y1   y0
+ byte 5:  0   z6   z5   z4   z3   z2   z1   z0
+
+Dualpoint device -- interleaved packet format
+---------------------------------------------
+
+ byte 0:    1    1    0    0    1    1    1    1
+ byte 1:    0   x6   x5   x4   x3   x2   x1   x0
+ byte 2:    0  x10   x9   x8   x7    0  fin  ges
+ byte 3:    0    0 YSGN XSGN    1    1    1    1
+ byte 4:   X7   X6   X5   X4   X3   X2   X1   X0
+ byte 5:   Y7   Y6   Y5   Y4   Y3   Y2   Y1   Y0
+ byte 6:    0   y9   y8   y7    1    m    r    l
+ byte 7:    0   y6   y5   y4   y3   y2   y1   y0
+ byte 8:    0   z6   z5   z4   z3   z2   z1   z0
+
+ALPS Absolute Mode - Protocol Version 3
+---------------------------------------
+
+ALPS protocol version 3 has three different packet formats. The first two are
+associated with touchpad events, and the third is associatd with trackstick
+events.
+
+The first type is the touchpad position packet.
+
+ byte 0:    1    ?   x1   x0    1    1    1    1
+ byte 1:    0  x10   x9   x8   x7   x6   x5   x4
+ byte 2:    0  y10   y9   y8   y7   y6   y5   y4
+ byte 3:    0    M    R    L    1    m    r    l
+ byte 4:    0   mt   x3   x2   y3   y2   y1   y0
+ byte 5:    0   z6   z5   z4   z3   z2   z1   z0
+
+Note that for some devices the trackstick buttons are reported in this packet,
+and on others it is reported in the trackstick packets.
+
+The second packet type contains bitmaps representing the x and y axes. In the
+bitmaps a given bit is set if there is a finger covering that position on the
+given axis. Thus the bitmap packet can be used for low-resolution multi-touch
+data, although finger tracking is not possible.  This packet also encodes the
+number of contacts (f1 and f0 in the table below).
+
+ byte 0:    1    1   x1   x0    1    1    1    1
+ byte 1:    0   x8   x7   x6   x5   x4   x3   x2
+ byte 2:    0   y7   y6   y5   y4   y3   y2   y1
+ byte 3:    0  y10   y9   y8    1    1    1    1
+ byte 4:    0  x14  x13  x12  x11  x10   x9   y0
+ byte 5:    0    1    ?    ?    ?    ?   f1   f0
+
+This packet only appears after a position packet with the mt bit set, and
+ususally only appears when there are two or more contacts (although
+ocassionally it's seen with only a single contact).
+
+The final v3 packet type is the trackstick packet.
+
+ byte 0:    1    1   x7   y7    1    1    1    1
+ byte 1:    0   x6   x5   x4   x3   x2   x1   x0
+ byte 2:    0   y6   y5   y4   y3   y2   y1   y0
+ byte 3:    0    1    0    0    1    0    0    0
+ byte 4:    0   z4   z3   z2   z1   z0    ?    ?
+ byte 5:    0    0    1    1    1    1    1    1
+
+ALPS Absolute Mode - Protocol Version 4
+---------------------------------------
+
+Protocol version 4 has an 8-byte packet format.
+
+ byte 0:    1    ?   x1   x0    1    1    1    1
+ byte 1:    0  x10   x9   x8   x7   x6   x5   x4
+ byte 2:    0  y10   y9   y8   y7   y6   y5   y4
+ byte 3:    0    1   x3   x2   y3   y2   y1   y0
+ byte 4:    0    ?    ?    ?    1    ?    r    l
+ byte 5:    0   z6   z5   z4   z3   z2   z1   z0
+ byte 6:    bitmap data (described below)
+ byte 7:    bitmap data (described below)
+
+The last two bytes represent a partial bitmap packet, with 3 full packets
+required to construct a complete bitmap packet.  Once assembled, the 6-byte
+bitmap packet has the following format:
+
+ byte 0:    0    1   x7   x6   x5   x4   x3   x2
+ byte 1:    0   x1   x0   y4   y3   y2   y1   y0
+ byte 2:    0    0    ?  x14  x13  x12  x11  x10
+ byte 3:    0   x9   x8   y9   y8   y7   y6   y5
+ byte 4:    0    0    0    0    0    0    0    0
+ byte 5:    0    0    0    0    0    0    0  y10
+
+There are several things worth noting here.
+
+ 1) In the bitmap data, bit 6 of byte 0 serves as a sync byte to
+    identify the first fragment of a bitmap packet.
+
+ 2) The bitmaps represent the same data as in the v3 bitmap packets, although
+    the packet layout is different.
+
+ 3) There doesn't seem to be a count of the contact points anywhere in the v4
+    protocol packets. Deriving a count of contact points must be done by
+    analyzing the bitmaps.
+
+ 4) There is a 3 to 1 ratio of position packets to bitmap packets. Therefore
+    MT position can only be updated for every third ST position update, and
+    the count of contact points can only be updated every third packet as
+    well.
+
+So far no v4 devices with tracksticks have been encountered.
diff --git a/Documentation/input/gpio-tilt.txt b/Documentation/input/gpio-tilt.txt
new file mode 100644 (file)
index 0000000..06d60c3
--- /dev/null
@@ -0,0 +1,103 @@
+Driver for tilt-switches connected via GPIOs
+============================================
+
+Generic driver to read data from tilt switches connected via gpios.
+Orientation can be provided by one or more than one tilt switches,
+i.e. each tilt switch providing one axis, and the number of axes
+is also not limited.
+
+
+Data structures:
+----------------
+
+The array of struct gpio in the gpios field is used to list the gpios
+that represent the current tilt state.
+
+The array of struct gpio_tilt_axis describes the axes that are reported
+to the input system. The values set therein are used for the
+input_set_abs_params calls needed to init the axes.
+
+The array of struct gpio_tilt_state maps gpio states to the corresponding
+values to report. The gpio state is represented as a bitfield where the
+bit-index corresponds to the index of the gpio in the struct gpio array.
+In the same manner the values stored in the axes array correspond to
+the elements of the gpio_tilt_axis-array.
+
+
+Example:
+--------
+
+Example configuration for a single TS1003 tilt switch that rotates around
+one axis in 4 steps and emitts the current tilt via two GPIOs.
+
+static int sg060_tilt_enable(struct device *dev) {
+       /* code to enable the sensors */
+};
+
+static void sg060_tilt_disable(struct device *dev) {
+       /* code to disable the sensors */
+};
+
+static struct gpio sg060_tilt_gpios[] = {
+       { SG060_TILT_GPIO_SENSOR1, GPIOF_IN, "tilt_sensor1" },
+       { SG060_TILT_GPIO_SENSOR2, GPIOF_IN, "tilt_sensor2" },
+};
+
+static struct gpio_tilt_state sg060_tilt_states[] = {
+       {
+               .gpios = (0 << 1) | (0 << 0),
+               .axes = (int[]) {
+                       0,
+               },
+       }, {
+               .gpios = (0 << 1) | (1 << 0),
+               .axes = (int[]) {
+                       1, /* 90 degrees */
+               },
+       }, {
+               .gpios = (1 << 1) | (1 << 0),
+               .axes = (int[]) {
+                       2, /* 180 degrees */
+               },
+       }, {
+               .gpios = (1 << 1) | (0 << 0),
+               .axes = (int[]) {
+                       3, /* 270 degrees */
+               },
+       },
+};
+
+static struct gpio_tilt_axis sg060_tilt_axes[] = {
+       {
+               .axis = ABS_RY,
+               .min = 0,
+               .max = 3,
+               .fuzz = 0,
+               .flat = 0,
+       },
+};
+
+static struct gpio_tilt_platform_data sg060_tilt_pdata= {
+       .gpios = sg060_tilt_gpios,
+       .nr_gpios = ARRAY_SIZE(sg060_tilt_gpios),
+
+       .axes = sg060_tilt_axes,
+       .nr_axes = ARRAY_SIZE(sg060_tilt_axes),
+
+       .states = sg060_tilt_states,
+       .nr_states = ARRAY_SIZE(sg060_tilt_states),
+
+       .debounce_interval = 100,
+
+       .poll_interval = 1000,
+       .enable = sg060_tilt_enable,
+       .disable = sg060_tilt_disable,
+};
+
+static struct platform_device sg060_device_tilt = {
+       .name = "gpio-tilt-polled",
+       .id = -1,
+       .dev = {
+               .platform_data = &sg060_tilt_pdata,
+       },
+};
index b2ef125..89251e2 100644 (file)
@@ -1,5 +1,5 @@
-Copyright (C) 2002-2010 Sentelic Corporation.
-Last update: Jan-13-2010
+Copyright (C) 2002-2011 Sentelic Corporation.
+Last update: Dec-07-2011
 
 ==============================================================================
 * Finger Sensing Pad Intellimouse Mode(scrolling wheel, 4th and 5th buttons)
@@ -140,6 +140,7 @@ BYTE  |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------
 Byte 1: Bit7~Bit6 => 00, Normal data packet
                   => 01, Absolute coordination packet
                   => 10, Notify packet
+                  => 11, Normal data packet with on-pad click
         Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up.
                 When both fingers are up, the last two reports have zero valid
                 bit.
@@ -164,6 +165,7 @@ BYTE  |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------
 Byte 1: Bit7~Bit6 => 00, Normal data packet
                   => 01, Absolute coordinates packet
                   => 10, Notify packet
+                  => 11, Normal data packet with on-pad click
         Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up.
                 When both fingers are up, the last two reports have zero valid
                 bit.
@@ -188,6 +190,7 @@ BYTE  |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------
 Byte 1: Bit7~Bit6 => 00, Normal data packet
                   => 01, Absolute coordinates packet
                   => 10, Notify packet
+                  => 11, Normal data packet with on-pad click
         Bit5 => 1
         Bit4 => when in absolute coordinates mode (valid when EN_PKT_GO is 1):
                 0: left button is generated by the on-pad command
@@ -205,7 +208,7 @@ Byte 4: Bit7 => scroll right button
         Bit6 => scroll left button
         Bit5 => scroll down button
         Bit4 => scroll up button
-            * Note that if gesture and additional buttoni (Bit4~Bit7)
+            * Note that if gesture and additional button (Bit4~Bit7)
               happen at the same time, the button information will not
               be sent.
         Bit3~Bit0 => Reserved
@@ -227,6 +230,7 @@ BYTE  |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------
 Byte 1: Bit7~Bit6 => 00, Normal data packet
                   => 01, Absolute coordinates packet
                   => 10, Notify packet
+                  => 11, Normal data packet with on-pad click
         Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up.
                 When both fingers are up, the last two reports have zero valid
                 bit.
@@ -253,6 +257,7 @@ BYTE  |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------
 Byte 1: Bit7~Bit6 => 00, Normal data packet
                   => 01, Absolute coordination packet
                   => 10, Notify packet
+                  => 11, Normal data packet with on-pad click
         Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up.
                 When both fingers are up, the last two reports have zero valid
                 bit.
@@ -279,8 +284,9 @@ BYTE  |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------
 Byte 1: Bit7~Bit6 => 00, Normal data packet
                   => 01, Absolute coordination packet
                   => 10, Notify packet
+                  => 11, Normal data packet with on-pad click
         Bit5 => 1
-        Bit4 => when in absolute coordinate mode (valid when EN_PKT_GO is 1):
+        Bit4 => when in absolute coordinates mode (valid when EN_PKT_GO is 1):
                 0: left button is generated by the on-pad command
                 1: left button is generated by the external button
         Bit3 => 1
@@ -307,6 +313,110 @@ Sample sequence of Multi-finger, Multi-coordinate mode:
        abs pkt 2, ..., notify packet (valid bit == 0)
 
 ==============================================================================
+* Absolute position for STL3888-Cx and STL3888-Dx.
+==============================================================================
+Single Finger, Absolute Coordinate Mode (SFAC)
+   Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0      7 6 5 4 3 2 1 0      7 6 5 4 3 2 1 0
+BYTE  |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
+  1   |0|1|0|P|1|M|R|L|  2  |X|X|X|X|X|X|X|X|  3 |Y|Y|Y|Y|Y|Y|Y|Y|  4 |r|l|B|F|X|X|Y|Y|
+      |---------------|     |---------------|    |---------------|    |---------------|
+
+Byte 1: Bit7~Bit6 => 00, Normal data packet
+                  => 01, Absolute coordinates packet
+                  => 10, Notify packet
+       Bit5 => Coordinate mode(always 0 in SFAC mode):
+               0: single-finger absolute coordinates (SFAC) mode
+               1: multi-finger, multiple coordinates (MFMC) mode
+       Bit4 => 0: The LEFT button is generated by on-pad command (OPC)
+               1: The LEFT button is generated by external button
+               Default is 1 even if the LEFT button is not pressed.
+       Bit3 => Always 1, as specified by PS/2 protocol.
+       Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
+       Bit1 => Right Button, 1 is pressed, 0 is not pressed.
+       Bit0 => Left Button, 1 is pressed, 0 is not pressed.
+Byte 2: X coordinate (xpos[9:2])
+Byte 3: Y coordinate (ypos[9:2])
+Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
+       Bit3~Bit2 => X coordinate (ypos[1:0])
+       Bit4 => 4th mouse button(forward one page)
+       Bit5 => 5th mouse button(backward one page)
+       Bit6 => scroll left button
+       Bit7 => scroll right button
+
+Multi Finger, Multiple Coordinates Mode (MFMC):
+   Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0      7 6 5 4 3 2 1 0      7 6 5 4 3 2 1 0
+BYTE  |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
+  1   |0|1|1|P|1|F|R|L|  2  |X|X|X|X|X|X|X|X|  3 |Y|Y|Y|Y|Y|Y|Y|Y|  4 |r|l|B|F|X|X|Y|Y|
+      |---------------|     |---------------|    |---------------|    |---------------|
+
+Byte 1: Bit7~Bit6 => 00, Normal data packet
+                  => 01, Absolute coordination packet
+                  => 10, Notify packet
+       Bit5 => Coordinate mode (always 1 in MFMC mode):
+               0: single-finger absolute coordinates (SFAC) mode
+               1: multi-finger, multiple coordinates (MFMC) mode
+       Bit4 => 0: The LEFT button is generated by on-pad command (OPC)
+               1: The LEFT button is generated by external button
+               Default is 1 even if the LEFT button is not pressed.
+       Bit3 => Always 1, as specified by PS/2 protocol.
+       Bit2 => Finger index, 0 is the first finger, 1 is the second finger.
+               If bit 1 and 0 are all 1 and bit 4 is 0, the middle external
+               button is pressed.
+       Bit1 => Right Button, 1 is pressed, 0 is not pressed.
+       Bit0 => Left Button, 1 is pressed, 0 is not pressed.
+Byte 2: X coordinate (xpos[9:2])
+Byte 3: Y coordinate (ypos[9:2])
+Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
+       Bit3~Bit2 => X coordinate (ypos[1:0])
+       Bit4 => 4th mouse button(forward one page)
+       Bit5 => 5th mouse button(backward one page)
+       Bit6 => scroll left button
+       Bit7 => scroll right button
+
+  When one of the two fingers is up, the device will output four consecutive
+MFMC#0 report packets with zero X and Y to represent 1st finger is up or
+four consecutive MFMC#1 report packets with zero X and Y to represent that
+the 2nd finger is up.  On the other hand, if both fingers are up, the device
+will output four consecutive single-finger, absolute coordinate(SFAC) packets
+with zero X and Y.
+
+Notify Packet for STL3888-Cx/Dx
+   Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0      7 6 5 4 3 2 1 0      7 6 5 4 3 2 1 0
+BYTE  |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
+  1   |1|0|0|P|1|M|R|L|  2  |C|C|C|C|C|C|C|C|  3 |0|0|F|F|0|0|0|i|  4 |r|l|u|d|0|0|0|0|
+      |---------------|     |---------------|    |---------------|    |---------------|
+
+Byte 1: Bit7~Bit6 => 00, Normal data packet
+                  => 01, Absolute coordinates packet
+                  => 10, Notify packet
+       Bit5 => Always 0
+       Bit4 => 0: The LEFT button is generated by on-pad command(OPC)
+               1: The LEFT button is generated by external button
+               Default is 1 even if the LEFT button is not pressed.
+       Bit3 => 1
+       Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
+       Bit1 => Right Button, 1 is pressed, 0 is not pressed.
+       Bit0 => Left Button, 1 is pressed, 0 is not pressed.
+Byte 2: Message type:
+       0xba => gesture information
+       0xc0 => one finger hold-rotating gesture
+Byte 3: The first parameter for the received message:
+       0xba => gesture ID (refer to the 'Gesture ID' section)
+       0xc0 => region ID
+Byte 4: The second parameter for the received message:
+       0xba => N/A
+       0xc0 => finger up/down information
+
+Sample sequence of Multi-finger, Multi-coordinates mode:
+
+       notify packet (valid bit == 1), MFMC packet 1 (byte 1, bit 2 == 0),
+       MFMC packet 2 (byte 1, bit 2 == 1), MFMC packet 1, MFMC packet 2,
+       ..., notify packet (valid bit == 0)
+
+       That is, when the device is in MFMC mode, the host will receive
+       interleaved absolute coordinate packets for each finger.
+
+==============================================================================
 * FSP Enable/Disable packet
 ==============================================================================
    Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0      7 6 5 4 3 2 1 0      7 6 5 4 3 2 1 0
@@ -348,9 +458,10 @@ http://www.computer-engineering.org/ps2mouse/
 ==============================================================================
 1. Identify FSP by reading device ID(0x00) and version(0x01) register
 
-2. Determine number of buttons by reading status2 (0x0b) register
+2a. For FSP version < STL3888 Cx, determine number of buttons by reading
+    the 'test mode status' (0x20) register:
 
-       buttons = reg[0x0b] & 0x30
+       buttons = reg[0x20] & 0x30
 
        if buttons == 0x30 or buttons == 0x20:
                # two/four buttons
@@ -365,6 +476,10 @@ http://www.computer-engineering.org/ps2mouse/
                Refer to 'Finger Sensing Pad PS/2 Mouse Intellimouse'
                section A for packet parsing detail
 
+2b. For FSP version >= STL3888 Cx:
+       Refer to 'Finger Sensing Pad PS/2 Mouse Intellimouse'
+       section A for packet parsing detail (ignore byte 4, bit ~ 7)
+
 ==============================================================================
 * Programming Sequence for Register Reading/Writing
 ==============================================================================
@@ -374,7 +489,7 @@ Register inversion requirement:
   Following values needed to be inverted(the '~' operator in C) before being
 sent to FSP:
 
-       0xe9, 0xee, 0xf2 and 0xff.
+       0xe8, 0xe9, 0xee, 0xf2, 0xf3 and 0xff.
 
 Register swapping requirement:
 
@@ -415,7 +530,18 @@ Register reading sequence:
 
        8. send 0xe9(status request) PS/2 command to FSP;
 
-       9. the response read from FSP should be the requested register value.
+       9. the 4th byte of the response read from FSP should be the
+       requested register value(?? indicates don't care byte):
+
+               host: 0xe9
+               3888: 0xfa (??) (??) (val)
+
+       * Note that since the Cx release, the hardware will return 1's
+       complement of the register value at the 3rd byte of status request
+       result:
+
+               host: 0xe9
+               3888: 0xfa (??) (~val) (val)
 
 Register writing sequence:
 
@@ -465,71 +591,194 @@ Register writing sequence:
 
        9. the register writing sequence is completed.
 
+       * Note that since the Cx release, the hardware will return 1's
+       complement of the register value at the 3rd byte of status request
+       result. Host can optionally send another 0xe9 (status request) PS/2
+       command to FSP at the end of register writing to verify that the
+       register writing operation is successful (?? indicates don't care
+       byte):
+
+               host: 0xe9
+               3888: 0xfa (??) (~val) (val)
+
+==============================================================================
+* Programming Sequence for Page Register Reading/Writing
+==============================================================================
+
+  In order to overcome the limitation of maximum number of registers
+supported, the hardware separates register into different groups called
+'pages.' Each page is able to include up to 255 registers.
+
+  The default page after power up is 0x82; therefore, if one has to get
+access to register 0x8301, one has to use following sequence to switch
+to page 0x83, then start reading/writing from/to offset 0x01 by using
+the register read/write sequence described in previous section.
+
+Page register reading sequence:
+
+       1. send 0xf3 PS/2 command to FSP;
+
+       2. send 0x66 PS/2 command to FSP;
+
+       3. send 0x88 PS/2 command to FSP;
+
+       4. send 0xf3 PS/2 command to FSP;
+
+       5. send 0x83 PS/2 command to FSP;
+
+       6. send 0x88 PS/2 command to FSP;
+
+       7. send 0xe9(status request) PS/2 command to FSP;
+
+       8. the response read from FSP should be the requested page value.
+
+Page register writing sequence:
+
+       1. send 0xf3 PS/2 command to FSP;
+
+       2. send 0x38 PS/2 command to FSP;
+
+       3. send 0x88 PS/2 command to FSP;
+
+       4. send 0xf3 PS/2 command to FSP;
+
+       5. if the page address being written is not required to be
+       inverted(refer to the 'Register inversion requirement' section),
+       goto step 6
+
+       5a. send 0x47 PS/2 command to FSP;
+
+       5b. send the inverted page address to FSP and goto step 9;
+
+       6. if the page address being written is not required to be
+       swapped(refer to the 'Register swapping requirement' section),
+       goto step 7
+
+       6a. send 0x44 PS/2 command to FSP;
+
+       6b. send the swapped page address to FSP and goto step 9;
+
+       7. send 0x33 PS/2 command to FSP;
+
+       8. send the page address to FSP;
+
+       9. the page register writing sequence is completed.
+
+==============================================================================
+* Gesture ID
+==============================================================================
+
+  Unlike other devices which sends multiple fingers' coordinates to host,
+FSP processes multiple fingers' coordinates internally and convert them
+into a 8 bits integer, namely 'Gesture ID.'  Following is a list of
+supported gesture IDs:
+
+       ID      Description
+       0x86    2 finger straight up
+       0x82    2 finger straight down
+       0x80    2 finger straight right
+       0x84    2 finger straight left
+       0x8f    2 finger zoom in
+       0x8b    2 finger zoom out
+       0xc0    2 finger curve, counter clockwise
+       0xc4    2 finger curve, clockwise
+       0x2e    3 finger straight up
+       0x2a    3 finger straight down
+       0x28    3 finger straight right
+       0x2c    3 finger straight left
+       0x38    palm
+
 ==============================================================================
 * Register Listing
 ==============================================================================
 
+  Registers are represented in 16 bits values. The higher 8 bits represent
+the page address and the lower 8 bits represent the relative offset within
+that particular page.  Refer to the 'Programming Sequence for Page Register
+Reading/Writing' section for instructions on how to change current page
+address.
+
 offset width           default r/w     name
-0x00   bit7~bit0       0x01    RO      device ID
+0x8200 bit7~bit0       0x01    RO      device ID
 
-0x01   bit7~bit0       0xc0    RW      version ID
+0x8201 bit7~bit0               RW      version ID
+                                       0xc1: STL3888 Ax
+                                       0xd0 ~ 0xd2: STL3888 Bx
+                                       0xe0 ~ 0xe1: STL3888 Cx
+                                       0xe2 ~ 0xe3: STL3888 Dx
 
-0x02   bit7~bit0       0x01    RO      vendor ID
+0x8202 bit7~bit0       0x01    RO      vendor ID
 
-0x03   bit7~bit0       0x01    RO      product ID
+0x8203 bit7~bit0       0x01    RO      product ID
 
-0x04   bit3~bit0       0x01    RW      revision ID
+0x8204 bit3~bit0       0x01    RW      revision ID
 
-0x0b                           RO      test mode status 1
-       bit3            1       RO      0: rotate 180 degree, 1: no rotation
+0x820b                                 test mode status 1
+       bit3            1       RO      0: rotate 180 degree
+                                       1: no rotation
+                                       *only supported by H/W prior to Cx
 
-       bit5~bit4               RO      number of buttons
-                       11 => 2, lbtn/rbtn
-                       10 => 4, lbtn/rbtn/scru/scrd
-                       01 => 6, lbtn/rbtn/scru/scrd/scrl/scrr
-                       00 => 6, lbtn/rbtn/scru/scrd/fbtn/bbtn
+0x820f                                 register file page control
+       bit2            0       RW      1: rotate 180 degree
+                                       0: no rotation
+                                       *supported since Cx
 
-0x0f                           RW      register file page control
        bit0            0       RW      1 to enable page 1 register files
+                                       *only supported by H/W prior to Cx
 
-0x10                           RW      system control 1
+0x8210                         RW      system control 1
        bit0            1       RW      Reserved, must be 1
        bit1            0       RW      Reserved, must be 0
-       bit4            1       RW      Reserved, must be 0
-       bit5            0       RW      register clock gating enable
+       bit4            0       RW      Reserved, must be 0
+       bit5            1       RW      register clock gating enable
                                        0: read only, 1: read/write enable
        (Note that following registers does not require clock gating being
        enabled prior to write: 05 06 07 08 09 0c 0f 10 11 12 16 17 18 23 2e
        40 41 42 43.  In addition to that, this bit must be 1 when gesture
        mode is enabled)
 
-0x31                           RW      on-pad command detection
+0x8220                                 test mode status
+       bit5~bit4               RO      number of buttons
+                                       11 => 2, lbtn/rbtn
+                                       10 => 4, lbtn/rbtn/scru/scrd
+                                       01 => 6, lbtn/rbtn/scru/scrd/scrl/scrr
+                                       00 => 6, lbtn/rbtn/scru/scrd/fbtn/bbtn
+                                       *only supported by H/W prior to Cx
+
+0x8231                         RW      on-pad command detection
        bit7            0       RW      on-pad command left button down tag
                                        enable
                                        0: disable, 1: enable
+                                       *only supported by H/W prior to Cx
 
-0x34                           RW      on-pad command control 5
+0x8234                         RW      on-pad command control 5
        bit4~bit0       0x05    RW      XLO in 0s/4/1, so 03h = 0010.1b = 2.5
        (Note that position unit is in 0.5 scanline)
+                                       *only supported by H/W prior to Cx
 
        bit7            0       RW      on-pad tap zone enable
                                        0: disable, 1: enable
+                                       *only supported by H/W prior to Cx
 
-0x35                           RW      on-pad command control 6
+0x8235                         RW      on-pad command control 6
        bit4~bit0       0x1d    RW      XHI in 0s/4/1, so 19h = 1100.1b = 12.5
        (Note that position unit is in 0.5 scanline)
+                                       *only supported by H/W prior to Cx
 
-0x36                           RW      on-pad command control 7
+0x8236                         RW      on-pad command control 7
        bit4~bit0       0x04    RW      YLO in 0s/4/1, so 03h = 0010.1b = 2.5
        (Note that position unit is in 0.5 scanline)
+                                       *only supported by H/W prior to Cx
 
-0x37                           RW      on-pad command control 8
+0x8237                         RW      on-pad command control 8
        bit4~bit0       0x13    RW      YHI in 0s/4/1, so 11h = 1000.1b = 8.5
        (Note that position unit is in 0.5 scanline)
+                                       *only supported by H/W prior to Cx
 
-0x40                           RW      system control 5
+0x8240                         RW      system control 5
        bit1            0       RW      FSP Intellimouse mode enable
                                        0: disable, 1: enable
+                                       *only supported by H/W prior to Cx
 
        bit2            0       RW      movement + abs. coordinate mode enable
                                        0: disable, 1: enable
@@ -537,6 +786,7 @@ offset      width           default r/w     name
        bit 1 is not set. However, the format is different from that of bit 1.
        In addition, when bit 1 and bit 2 are set at the same time, bit 2 will
        override bit 1.)
+                                       *only supported by H/W prior to Cx
 
        bit3            0       RW      abs. coordinate only mode enable
                                        0: disable, 1: enable
@@ -544,9 +794,11 @@ offset     width           default r/w     name
        bit 1 is not set. However, the format is different from that of bit 1.
        In addition, when bit 1, bit 2 and bit 3 are set at the same time,
        bit 3 will override bit 1 and 2.)
+                                       *only supported by H/W prior to Cx
 
        bit5            0       RW      auto switch enable
                                        0: disable, 1: enable
+                                       *only supported by H/W prior to Cx
 
        bit6            0       RW      G0 abs. + notify packet format enable
                                        0: disable, 1: enable
@@ -554,18 +806,68 @@ offset    width           default r/w     name
        bit 2 and 3.  That is, if any of those bit is 1, host will receive
        absolute coordinates; otherwise, host only receives packets with
        relative coordinate.)
+                                       *only supported by H/W prior to Cx
 
        bit7            0       RW      EN_PS2_F2: PS/2 gesture mode 2nd
                                        finger packet enable
                                        0: disable, 1: enable
+                                       *only supported by H/W prior to Cx
 
-0x43                           RW      on-pad control
+0x8243                         RW      on-pad control
        bit0            0       RW      on-pad control enable
                                        0: disable, 1: enable
        (Note that if this bit is cleared, bit 3/5 will be ineffective)
+                                       *only supported by H/W prior to Cx
 
        bit3            0       RW      on-pad fix vertical scrolling enable
                                        0: disable, 1: enable
+                                       *only supported by H/W prior to Cx
 
        bit5            0       RW      on-pad fix horizontal scrolling enable
                                        0: disable, 1: enable
+                                       *only supported by H/W prior to Cx
+
+0x8290                         RW      software control register 1
+       bit0            0       RW      absolute coordination mode
+                                       0: disable, 1: enable
+                                       *supported since Cx
+
+       bit1            0       RW      gesture ID output
+                                       0: disable, 1: enable
+                                       *supported since Cx
+
+       bit2            0       RW      two fingers' coordinates output
+                                       0: disable, 1: enable
+                                       *supported since Cx
+
+       bit3            0       RW      finger up one packet output
+                                       0: disable, 1: enable
+                                       *supported since Cx
+
+       bit4            0       RW      absolute coordination continuous mode
+                                       0: disable, 1: enable
+                                       *supported since Cx
+
+       bit6~bit5       00      RW      gesture group selection
+                                       00: basic
+                                       01: suite
+                                       10: suite pro
+                                       11: advanced
+                                       *supported since Cx
+
+       bit7            0       RW      Bx packet output compatible mode
+                                       0: disable, 1: enable                                   *supported since Cx
+                                       *supported since Cx
+
+
+0x833d                         RW      on-pad command control 1
+       bit7            1       RW      on-pad command detection enable
+                                       0: disable, 1: enable
+                                       *supported since Cx
+
+0x833e                         RW      on-pad command detection
+       bit7            0       RW      on-pad command left button down tag
+                                       enable. Works only in H/W based PS/2
+                                       data packet mode.
+                                       0: disable, 1: enable
+                                       *supported since Cx
index 7b2e5c5..73baff1 100644 (file)
@@ -329,6 +329,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                                    is a lot of faster
                        off       - do not initialize any AMD IOMMU found in
                                    the system
+                       force_isolation - Force device isolation for all
+                                         devices. The IOMMU driver is not
+                                         allowed anymore to lift isolation
+                                         requirements as needed. This option
+                                         does not override iommu=pt
 
        amijoy.map=     [HW,JOY] Amiga joystick support
                        Map of devices attached to JOY0DAT and JOY1DAT
@@ -1059,7 +1064,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                nomerge
                forcesac
                soft
-               pt      [x86, IA-64]
+               pt              [x86, IA-64]
+               group_mf        [x86, IA-64]
+
 
        io7=            [HW] IO7 for Marvel based alpha systems
                        See comment before marvel_specify_io7 in
@@ -1178,9 +1185,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
        kvm.ignore_msrs=[KVM] Ignore guest accesses to unhandled MSRs.
                        Default is 0 (don't ignore, but inject #GP)
 
-       kvm.oos_shadow= [KVM] Disable out-of-sync shadow paging.
-                       Default is 1 (enabled)
-
        kvm.mmu_audit=  [KVM] This is a R/W parameter which allows audit
                        KVM MMU at runtime.
                        Default is 0 (off)
@@ -1630,12 +1634,17 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                        The default is to return 64-bit inode numbers.
 
        nfs.nfs4_disable_idmapping=
-                       [NFSv4] When set, this option disables the NFSv4
-                       idmapper on the client, but only if the mount
-                       is using the 'sec=sys' security flavour. This may
-                       make migration from legacy NFSv2/v3 systems easier
-                       provided that the server has the appropriate support.
-                       The default is to always enable NFSv4 idmapping.
+                       [NFSv4] When set to the default of '1', this option
+                       ensures that both the RPC level authentication
+                       scheme and the NFS level operations agree to use
+                       numeric uids/gids if the mount is using the
+                       'sec=sys' security flavour. In effect it is
+                       disabling idmapping, which can make migration from
+                       legacy NFSv2/v3 systems to NFSv4 easier.
+                       Servers that do not support this mode of operation
+                       will be autodetected by the client, and it will fall
+                       back to using the idmapper.
+                       To turn off this behaviour, set the value to '0'.
 
        nmi_debug=      [KNL,AVR32,SH] Specify one or more actions to take
                        when a NMI is triggered.
index b04cb7d..6727b92 100644 (file)
@@ -7,12 +7,9 @@ This subsystem deals with:
 
 - Multiplexing of pins, pads, fingers (etc) see below for details
 
-The intention is to also deal with:
-
-- Software-controlled biasing and driving mode specific pins, such as
-  pull-up/down, open drain etc, load capacitance configuration when controlled
-  by software, etc.
-
+- Configuration of pins, pads, fingers (etc), such as software-controlled
+  biasing and driving mode specific pins, such as pull-up/down, open drain,
+  load capacitance etc.
 
 Top-level interface
 ===================
@@ -32,7 +29,7 @@ Definition of PIN:
   be sparse - i.e. there may be gaps in the space with numbers where no
   pin exists.
 
-When a PIN CONTROLLER is instatiated, it will register a descriptor to the
+When a PIN CONTROLLER is instantiated, it will register a descriptor to the
 pin control framework, and this descriptor contains an array of pin descriptors
 describing the pins handled by this specific pin controller.
 
@@ -61,14 +58,14 @@ this in our driver:
 
 #include <linux/pinctrl/pinctrl.h>
 
-const struct pinctrl_pin_desc __refdata foo_pins[] = {
-      PINCTRL_PIN(0, "A1"),
-      PINCTRL_PIN(1, "A2"),
-      PINCTRL_PIN(2, "A3"),
+const struct pinctrl_pin_desc foo_pins[] = {
+      PINCTRL_PIN(0, "A8"),
+      PINCTRL_PIN(1, "B8"),
+      PINCTRL_PIN(2, "C8"),
       ...
-      PINCTRL_PIN(61, "H6"),
-      PINCTRL_PIN(62, "H7"),
-      PINCTRL_PIN(63, "H8"),
+      PINCTRL_PIN(61, "F1"),
+      PINCTRL_PIN(62, "G1"),
+      PINCTRL_PIN(63, "H1"),
 };
 
 static struct pinctrl_desc foo_desc = {
@@ -88,11 +85,16 @@ int __init foo_probe(void)
                pr_err("could not register foo pin driver\n");
 }
 
+To enable the pinctrl subsystem and the subgroups for PINMUX and PINCONF and
+selected drivers, you need to select them from your machine's Kconfig entry,
+since these are so tightly integrated with the machines they are used on.
+See for example arch/arm/mach-u300/Kconfig for an example.
+
 Pins usually have fancier names than this. You can find these in the dataheet
 for your chip. Notice that the core pinctrl.h file provides a fancy macro
 called PINCTRL_PIN() to create the struct entries. As you can see I enumerated
-the pins from 0 in the upper left corner to 63 in the lower right corner,
-this enumeration was arbitrarily chosen, in practice you need to think
+the pins from 0 in the upper left corner to 63 in the lower right corner.
+This enumeration was arbitrarily chosen, in practice you need to think
 through your numbering system so that it matches the layout of registers
 and such things in your driver, or the code may become complicated. You must
 also consider matching of offsets to the GPIO ranges that may be handled by
@@ -133,8 +135,8 @@ struct foo_group {
        const unsigned num_pins;
 };
 
-static unsigned int spi0_pins[] = { 0, 8, 16, 24 };
-static unsigned int i2c0_pins[] = { 24, 25 };
+static const unsigned int spi0_pins[] = { 0, 8, 16, 24 };
+static const unsigned int i2c0_pins[] = { 24, 25 };
 
 static const struct foo_group foo_groups[] = {
        {
@@ -193,6 +195,88 @@ structure, for example specific register ranges associated with each group
 and so on.
 
 
+Pin configuration
+=================
+
+Pins can sometimes be software-configured in an various ways, mostly related
+to their electronic properties when used as inputs or outputs. For example you
+may be able to make an output pin high impedance, or "tristate" meaning it is
+effectively disconnected. You may be able to connect an input pin to VDD or GND
+using a certain resistor value - pull up and pull down - so that the pin has a
+stable value when nothing is driving the rail it is connected to, or when it's
+unconnected.
+
+For example, a platform may do this:
+
+ret = pin_config_set("foo-dev", "FOO_GPIO_PIN", PLATFORM_X_PULL_UP);
+
+To pull up a pin to VDD. The pin configuration driver implements callbacks for
+changing pin configuration in the pin controller ops like this:
+
+#include <linux/pinctrl/pinctrl.h>
+#include <linux/pinctrl/pinconf.h>
+#include "platform_x_pindefs.h"
+
+static int foo_pin_config_get(struct pinctrl_dev *pctldev,
+                   unsigned offset,
+                   unsigned long *config)
+{
+       struct my_conftype conf;
+
+       ... Find setting for pin @ offset ...
+
+       *config = (unsigned long) conf;
+}
+
+static int foo_pin_config_set(struct pinctrl_dev *pctldev,
+                   unsigned offset,
+                   unsigned long config)
+{
+       struct my_conftype *conf = (struct my_conftype *) config;
+
+       switch (conf) {
+               case PLATFORM_X_PULL_UP:
+               ...
+               }
+       }
+}
+
+static int foo_pin_config_group_get (struct pinctrl_dev *pctldev,
+                   unsigned selector,
+                   unsigned long *config)
+{
+       ...
+}
+
+static int foo_pin_config_group_set (struct pinctrl_dev *pctldev,
+                   unsigned selector,
+                   unsigned long config)
+{
+       ...
+}
+
+static struct pinconf_ops foo_pconf_ops = {
+       .pin_config_get = foo_pin_config_get,
+       .pin_config_set = foo_pin_config_set,
+       .pin_config_group_get = foo_pin_config_group_get,
+       .pin_config_group_set = foo_pin_config_group_set,
+};
+
+/* Pin config operations are handled by some pin controller */
+static struct pinctrl_desc foo_desc = {
+       ...
+       .confops = &foo_pconf_ops,
+};
+
+Since some controllers have special logic for handling entire groups of pins
+they can exploit the special whole-group pin control function. The
+pin_config_group_set() callback is allowed to return the error code -EAGAIN,
+for groups it does not want to handle, or if it just wants to do some
+group-level handling and then fall through to iterate over all pins, in which
+case each individual pin will be treated by separate pin_config_set() calls as
+well.
+
+
 Interaction with the GPIO subsystem
 ===================================
 
@@ -214,19 +298,20 @@ static struct pinctrl_gpio_range gpio_range_a = {
        .name = "chip a",
        .id = 0,
        .base = 32,
+       .pin_base = 32,
        .npins = 16,
        .gc = &chip_a;
 };
 
-static struct pinctrl_gpio_range gpio_range_a = {
+static struct pinctrl_gpio_range gpio_range_b = {
        .name = "chip b",
        .id = 0,
        .base = 48,
+       .pin_base = 64,
        .npins = 8,
        .gc = &chip_b;
 };
 
-
 {
        struct pinctrl_dev *pctl;
        ...
@@ -235,42 +320,39 @@ static struct pinctrl_gpio_range gpio_range_a = {
 }
 
 So this complex system has one pin controller handling two different
-GPIO chips. Chip a has 16 pins and chip b has 8 pins. They are mapped in
-the global GPIO pin space at:
+GPIO chips. "chip a" has 16 pins and "chip b" has 8 pins. The "chip a" and
+"chip b" have different .pin_base, which means a start pin number of the
+GPIO range.
+
+The GPIO range of "chip a" starts from the GPIO base of 32 and actual
+pin range also starts from 32. However "chip b" has different starting
+offset for the GPIO range and pin range. The GPIO range of "chip b" starts
+from GPIO number 48, while the pin range of "chip b" starts from 64.
+
+We can convert a gpio number to actual pin number using this "pin_base".
+They are mapped in the global GPIO pin space at:
 
-chip a: [32 .. 47]
-chip b: [48 .. 55]
+chip a:
+ - GPIO range : [32 .. 47]
+ - pin range  : [32 .. 47]
+chip b:
+ - GPIO range : [48 .. 55]
+ - pin range  : [64 .. 71]
 
 When GPIO-specific functions in the pin control subsystem are called, these
-ranges will be used to look up the apropriate pin controller by inspecting
+ranges will be used to look up the appropriate pin controller by inspecting
 and matching the pin to the pin ranges across all controllers. When a
 pin controller handling the matching range is found, GPIO-specific functions
 will be called on that specific pin controller.
 
 For all functionalities dealing with pin biasing, pin muxing etc, the pin
 controller subsystem will subtract the range's .base offset from the passed
-in gpio pin number, and pass that on to the pin control driver, so the driver
-will get an offset into its handled number range. Further it is also passed
+in gpio number, and add the ranges's .pin_base offset to retrive a pin number.
+After that, the subsystem passes it on to the pin control driver, so the driver
+will get an pin number into its handled number range. Further it is also passed
 the range ID value, so that the pin controller knows which range it should
 deal with.
 
-For example: if a user issues pinctrl_gpio_set_foo(50), the pin control
-subsystem will find that the second range on this pin controller matches,
-subtract the base 48 and call the
-pinctrl_driver_gpio_set_foo(pinctrl, range, 2) where the latter function has
-this signature:
-
-int pinctrl_driver_gpio_set_foo(struct pinctrl_dev *pctldev,
-    struct pinctrl_gpio_range *rangeid,
-    unsigned offset);
-
-Now the driver knows that we want to do some GPIO-specific operation on the
-second GPIO range handled by "chip b", at offset 2 in that specific range.
-
-(If the GPIO subsystem is ever refactored to use a local per-GPIO controller
-pin space, this mapping will need to be augmented accordingly.)
-
-
 PINMUX interfaces
 =================
 
@@ -438,7 +520,7 @@ you. Define enumerators only for the pins you can control if that makes sense.
 
 Assumptions:
 
-We assume that the number possible function maps to pin groups is limited by
+We assume that the number of possible function maps to pin groups is limited by
 the hardware. I.e. we assume that there is no system where any function can be
 mapped to any pin, like in a phone exchange. So the available pins groups for
 a certain function will be limited to a few choices (say up to eight or so),
@@ -585,7 +667,7 @@ int foo_list_funcs(struct pinctrl_dev *pctldev, unsigned selector)
 
 const char *foo_get_fname(struct pinctrl_dev *pctldev, unsigned selector)
 {
-       return myfuncs[selector].name;
+       return foo_functions[selector].name;
 }
 
 static int foo_get_groups(struct pinctrl_dev *pctldev, unsigned selector,
@@ -600,16 +682,16 @@ static int foo_get_groups(struct pinctrl_dev *pctldev, unsigned selector,
 int foo_enable(struct pinctrl_dev *pctldev, unsigned selector,
                unsigned group)
 {
-       u8 regbit = (1 << group);
+       u8 regbit = (1 << selector + group);
 
        writeb((readb(MUX)|regbit), MUX)
        return 0;
 }
 
-int foo_disable(struct pinctrl_dev *pctldev, unsigned selector,
+void foo_disable(struct pinctrl_dev *pctldev, unsigned selector,
                unsigned group)
 {
-       u8 regbit = (1 << group);
+       u8 regbit = (1 << selector + group);
 
        writeb((readb(MUX) & ~(regbit)), MUX)
        return 0;
@@ -647,6 +729,17 @@ All the above functions are mandatory to implement for a pinmux driver.
 Pinmux interaction with the GPIO subsystem
 ==========================================
 
+The public pinmux API contains two functions named pinmux_request_gpio()
+and pinmux_free_gpio(). These two functions shall *ONLY* be called from
+gpiolib-based drivers as part of their gpio_request() and
+gpio_free() semantics. Likewise the pinmux_gpio_direction_[input|output]
+shall only be called from within respective gpio_direction_[input|output]
+gpiolib implementation.
+
+NOTE that platforms and individual drivers shall *NOT* request GPIO pins to be
+muxed in. Instead, implement a proper gpiolib driver and have that driver
+request proper muxing for its pins.
+
 The function list could become long, especially if you can convert every
 individual pin into a GPIO pin independent of any other pins, and then try
 the approach to define every pin as a function.
@@ -654,19 +747,24 @@ the approach to define every pin as a function.
 In this case, the function array would become 64 entries for each GPIO
 setting and then the device functions.
 
-For this reason there is an additional function a pinmux driver can implement
-to enable only GPIO on an individual pin: .gpio_request_enable(). The same
-.free() function as for other functions is assumed to be usable also for
-GPIO pins.
+For this reason there are two functions a pinmux driver can implement
+to enable only GPIO on an individual pin: .gpio_request_enable() and
+.gpio_disable_free().
 
 This function will pass in the affected GPIO range identified by the pin
 controller core, so you know which GPIO pins are being affected by the request
 operation.
 
-Alternatively it is fully allowed to use named functions for each GPIO
-pin, the pinmux_request_gpio() will attempt to obtain the function "gpioN"
-where "N" is the global GPIO pin number if no special GPIO-handler is
-registered.
+If your driver needs to have an indication from the framework of whether the
+GPIO pin shall be used for input or output you can implement the
+.gpio_set_direction() function. As described this shall be called from the
+gpiolib driver and the affected GPIO range, pin offset and desired direction
+will be passed along to this function.
+
+Alternatively to using these special functions, it is fully allowed to use
+named functions for each GPIO pin, the pinmux_request_gpio() will attempt to
+obtain the function "gpioN" where "N" is the global GPIO pin number if no
+special GPIO-handler is registered.
 
 
 Pinmux board/machine configuration
@@ -683,19 +781,19 @@ spi on the second function mapping:
 
 #include <linux/pinctrl/machine.h>
 
-static struct pinmux_map pmx_mapping[] = {
+static const struct pinmux_map __initdata pmx_mapping[] = {
        {
-               .ctrl_dev_name = "pinctrl.0",
+               .ctrl_dev_name = "pinctrl-foo",
                .function = "spi0",
                .dev_name = "foo-spi.0",
        },
        {
-               .ctrl_dev_name = "pinctrl.0",
+               .ctrl_dev_name = "pinctrl-foo",
                .function = "i2c0",
                .dev_name = "foo-i2c.0",
        },
        {
-               .ctrl_dev_name = "pinctrl.0",
+               .ctrl_dev_name = "pinctrl-foo",
                .function = "mmc0",
                .dev_name = "foo-mmc.0",
        },
@@ -714,14 +812,14 @@ for example if they are not yet instantiated or cumbersome to obtain.
 
 You register this pinmux mapping to the pinmux subsystem by simply:
 
-       ret = pinmux_register_mappings(&pmx_mapping, ARRAY_SIZE(pmx_mapping));
+       ret = pinmux_register_mappings(pmx_mapping, ARRAY_SIZE(pmx_mapping));
 
 Since the above construct is pretty common there is a helper macro to make
-it even more compact which assumes you want to use pinctrl.0 and position
+it even more compact which assumes you want to use pinctrl-foo and position
 0 for mapping, for example:
 
-static struct pinmux_map pmx_mapping[] = {
-       PINMUX_MAP_PRIMARY("I2CMAP", "i2c0", "foo-i2c.0"),
+static struct pinmux_map __initdata pmx_mapping[] = {
+       PINMUX_MAP("I2CMAP", "pinctrl-foo", "i2c0", "foo-i2c.0"),
 };
 
 
@@ -734,14 +832,14 @@ As it is possible to map a function to different groups of pins an optional
 ...
 {
        .name = "spi0-pos-A",
-       .ctrl_dev_name = "pinctrl.0",
+       .ctrl_dev_name = "pinctrl-foo",
        .function = "spi0",
        .group = "spi0_0_grp",
        .dev_name = "foo-spi.0",
 },
 {
        .name = "spi0-pos-B",
-       .ctrl_dev_name = "pinctrl.0",
+       .ctrl_dev_name = "pinctrl-foo",
        .function = "spi0",
        .group = "spi0_1_grp",
        .dev_name = "foo-spi.0",
@@ -760,44 +858,44 @@ case), we define a mapping like this:
 ...
 {
        .name "2bit"
-       .ctrl_dev_name = "pinctrl.0",
+       .ctrl_dev_name = "pinctrl-foo",
        .function = "mmc0",
-       .group = "mmc0_0_grp",
+       .group = "mmc0_1_grp",
        .dev_name = "foo-mmc.0",
 },
 {
        .name "4bit"
-       .ctrl_dev_name = "pinctrl.0",
+       .ctrl_dev_name = "pinctrl-foo",
        .function = "mmc0",
-       .group = "mmc0_0_grp",
+       .group = "mmc0_1_grp",
        .dev_name = "foo-mmc.0",
 },
 {
        .name "4bit"
-       .ctrl_dev_name = "pinctrl.0",
+       .ctrl_dev_name = "pinctrl-foo",
        .function = "mmc0",
-       .group = "mmc0_1_grp",
+       .group = "mmc0_2_grp",
        .dev_name = "foo-mmc.0",
 },
 {
        .name "8bit"
-       .ctrl_dev_name = "pinctrl.0",
+       .ctrl_dev_name = "pinctrl-foo",
        .function = "mmc0",
-       .group = "mmc0_0_grp",
+       .group = "mmc0_1_grp",
        .dev_name = "foo-mmc.0",
 },
 {
        .name "8bit"
-       .ctrl_dev_name = "pinctrl.0",
+       .ctrl_dev_name = "pinctrl-foo",
        .function = "mmc0",
-       .group = "mmc0_1_grp",
+       .group = "mmc0_2_grp",
        .dev_name = "foo-mmc.0",
 },
 {
        .name "8bit"
-       .ctrl_dev_name = "pinctrl.0",
+       .ctrl_dev_name = "pinctrl-foo",
        .function = "mmc0",
-       .group = "mmc0_2_grp",
+       .group = "mmc0_3_grp",
        .dev_name = "foo-mmc.0",
 },
 ...
@@ -898,7 +996,7 @@ like this:
 
 {
        .name "POWERMAP"
-       .ctrl_dev_name = "pinctrl.0",
+       .ctrl_dev_name = "pinctrl-foo",
        .function = "power_func",
        .hog_on_boot = true,
 },
index 3f8b528..e272d99 100644 (file)
@@ -12,7 +12,7 @@ Drivers can register a regulator by calling :-
 
 struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
        struct device *dev, struct regulator_init_data *init_data,
-       void *driver_data);
+       void *driver_data, struct device_node *of_node);
 
 This will register the regulators capabilities and operations to the regulator
 core.
index e2a4b52..e1d94bf 100644 (file)
@@ -1466,6 +1466,31 @@ is supported; 2 if the processor requires all virtual machines to have
 an RMA, or 1 if the processor can use an RMA but doesn't require it,
 because it supports the Virtual RMA (VRMA) facility.
 
+4.64 KVM_NMI
+
+Capability: KVM_CAP_USER_NMI
+Architectures: x86
+Type: vcpu ioctl
+Parameters: none
+Returns: 0 on success, -1 on error
+
+Queues an NMI on the thread's vcpu.  Note this is well defined only
+when KVM_CREATE_IRQCHIP has not been called, since this is an interface
+between the virtual cpu core and virtual local APIC.  After KVM_CREATE_IRQCHIP
+has been called, this interface is completely emulated within the kernel.
+
+To use this to emulate the LINT1 input with KVM_CREATE_IRQCHIP, use the
+following algorithm:
+
+  - pause the vpcu
+  - read the local APIC's state (KVM_GET_LAPIC)
+  - check whether changing LINT1 will queue an NMI (see the LVT entry for LINT1)
+  - if so, issue KVM_NMI
+  - resume the vcpu
+
+Some guests configure the LINT1 NMI input to cause a panic, aiding in
+debugging.
+
 5. The kvm_run structure
 
 Application code obtains a pointer to the kvm_run structure by
index fc51128..fc9082a 100644 (file)
@@ -1,5 +1,7 @@
 00-INDEX
        - this file.
+convert_drivers_to_kernel_api.txt
+       - how-to for converting old watchdog drivers to the new kernel API.
 hpwdt.txt
        - information on the HP iLO2 NMI watchdog
 pcwd-watchdog.txt
index ae1e900..be8119b 100644 (file)
@@ -163,6 +163,25 @@ Here is a simple example for a watchdog device:
 +};
 
 
+Handle the 'nowayout' feature
+-----------------------------
+
+A few drivers use nowayout statically, i.e. there is no module parameter for it
+and only CONFIG_WATCHDOG_NOWAYOUT determines if the feature is going to be
+used. This needs to be converted by initializing the status variable of the
+watchdog_device like this:
+
+        .status = WATCHDOG_NOWAYOUT_INIT_STATUS,
+
+Most drivers, however, also allow runtime configuration of nowayout, usually
+by adding a module parameter. The conversion for this would be something like:
+
+       watchdog_set_nowayout(&s3c2410_wdd, nowayout);
+
+The module parameter itself needs to stay, everything else related to nowayout
+can go, though. This will likely be some code in open(), close() or write().
+
+
 Register the watchdog device
 ----------------------------
 
index 4f7c894..4b93c28 100644 (file)
@@ -1,6 +1,6 @@
 The Linux WatchDog Timer Driver Core kernel API.
 ===============================================
-Last reviewed: 22-Jul-2011
+Last reviewed: 29-Nov-2011
 
 Wim Van Sebroeck <wim@iguana.be>
 
@@ -142,6 +142,14 @@ bit-operations. The status bits that are defined are:
 * WDOG_NO_WAY_OUT: this bit stores the nowayout setting for the watchdog.
   If this bit is set then the watchdog timer will not be able to stop.
 
+  To set the WDOG_NO_WAY_OUT status bit (before registering your watchdog
+  timer device) you can either:
+  * set it statically in your watchdog_device struct with
+       .status = WATCHDOG_NOWAYOUT_INIT_STATUS,
+    (this will set the value the same as CONFIG_WATCHDOG_NOWAYOUT) or
+  * use the following helper function:
+  static inline void watchdog_set_nowayout(struct watchdog_device *wdd, int nowayout)
+
 Note: The WatchDog Timer Driver Core supports the magic close feature and
 the nowayout feature. To use the magic close feature you must set the
 WDIOF_MAGICCLOSE bit in the options field of the watchdog's info structure.
index 0ae41c9..a2883a2 100644 (file)
@@ -5123,7 +5123,7 @@ F:        drivers/*/*/picoxcell*
 PIN CONTROL SUBSYSTEM
 M:     Linus Walleij <linus.walleij@linaro.org>
 S:     Maintained
-F:     drivers/pinmux/
+F:     drivers/pinctrl/
 
 PKTCDVD DRIVER
 M:     Peter Osterlund <petero2@telia.com>
index f8a682f..6b22b54 100644 (file)
@@ -127,7 +127,7 @@ static void da850_evm_m25p80_notify_add(struct mtd_info *mtd)
        size_t retlen;
 
        if (!strcmp(mtd->name, "MAC-Address")) {
-               mtd->read(mtd, 0, ETH_ALEN, &retlen, mac_addr);
+               mtd_read(mtd, 0, ETH_ALEN, &retlen, mac_addr);
                if (retlen == ETH_ALEN)
                        pr_info("Read MAC addr from SPI Flash: %pM\n",
                                mac_addr);
index 35d5dff..46dfd1a 100644 (file)
@@ -28,6 +28,7 @@
 #include <plat/board.h>
 #include <plat/mcbsp.h>
 #include <plat/mmc.h>
+#include <plat/iommu.h>
 #include <plat/dma.h>
 #include <plat/omap_hwmod.h>
 #include <plat/omap_device.h>
@@ -211,9 +212,15 @@ static struct platform_device omap3isp_device = {
        .resource       = omap3isp_resources,
 };
 
+static struct omap_iommu_arch_data omap3_isp_iommu = {
+       .name = "isp",
+};
+
 int omap3_init_camera(struct isp_platform_data *pdata)
 {
        omap3isp_device.dev.platform_data = pdata;
+       omap3isp_device.dev.archdata.iommu = &omap3_isp_iommu;
+
        return platform_device_register(&omap3isp_device);
 }
 
index 4f3572a..20bb054 100644 (file)
@@ -53,6 +53,7 @@ struct tegra_kbc_platform_data {
        struct tegra_kbc_pin_cfg pin_cfg[KBC_MAX_GPIO];
        const struct matrix_keymap_data *keymap_data;
 
+       u32 wakeup_key;
        bool wakeup;
        bool use_fn_map;
        bool use_ghost_filter;
index 1cbcd4f..54d8f34 100644 (file)
@@ -7,8 +7,8 @@ comment "ST-Ericsson Mobile Platform Products"
 config MACH_U300
        bool "U300"
        select PINCTRL
-       select PINMUX_U300
-       select GPIO_U300
+       select PINCTRL_U300
+       select PINCTRL_COH901
 
 comment "ST-Ericsson U300/U330/U335/U365 Feature Selections"
 
index 6979307..b4c6926 100644 (file)
@@ -1605,15 +1605,15 @@ static struct platform_device pinmux_device = {
 };
 
 /* Pinmux settings */
-static struct pinmux_map u300_pinmux_map[] = {
+static struct pinmux_map __initdata u300_pinmux_map[] = {
        /* anonymous maps for chip power and EMIFs */
-       PINMUX_MAP_PRIMARY_SYS_HOG("POWER", "power"),
-       PINMUX_MAP_PRIMARY_SYS_HOG("EMIF0", "emif0"),
-       PINMUX_MAP_PRIMARY_SYS_HOG("EMIF1", "emif1"),
+       PINMUX_MAP_SYS_HOG("POWER", "pinmux-u300", "power"),
+       PINMUX_MAP_SYS_HOG("EMIF0", "pinmux-u300", "emif0"),
+       PINMUX_MAP_SYS_HOG("EMIF1", "pinmux-u300", "emif1"),
        /* per-device maps for MMC/SD, SPI and UART */
-       PINMUX_MAP_PRIMARY("MMCSD", "mmc0", "mmci"),
-       PINMUX_MAP_PRIMARY("SPI", "spi0", "pl022"),
-       PINMUX_MAP_PRIMARY("UART0", "uart0", "uart0"),
+       PINMUX_MAP("MMCSD", "pinmux-u300", "mmc0", "mmci"),
+       PINMUX_MAP("SPI", "pinmux-u300", "spi0", "pl022"),
+       PINMUX_MAP("UART0", "pinmux-u300", "uart0", "uart0"),
 };
 
 struct u300_mux_hog {
index 0c2b202..bf4c793 100644 (file)
@@ -9,121 +9,6 @@
 #ifndef __MACH_U300_GPIO_U300_H
 #define __MACH_U300_GPIO_U300_H
 
-/*
- * Individual pin assignments for the B26/S26. Notice that the
- * actual usage of these pins depends on the PAD MUX settings, that
- * is why the same number can potentially appear several times.
- * In the reference design each pin is only used for one purpose.
- * These were determined by inspecting the B26/S26 schematic:
- * 2/1911-ROA 128 1603
- */
-#ifdef CONFIG_MACH_U300_BS2X
-#define U300_GPIO_PIN_UART_RX          0
-#define U300_GPIO_PIN_UART_TX          1
-#define U300_GPIO_PIN_GPIO02           2  /* Unrouted */
-#define U300_GPIO_PIN_GPIO03           3  /* Unrouted */
-#define U300_GPIO_PIN_CAM_SLEEP                4
-#define U300_GPIO_PIN_CAM_REG_EN       5
-#define U300_GPIO_PIN_GPIO06           6  /* Unrouted */
-#define U300_GPIO_PIN_GPIO07           7  /* Unrouted */
-
-#define U300_GPIO_PIN_GPIO08           8  /* Service point SP2321 */
-#define U300_GPIO_PIN_GPIO09           9  /* Service point SP2322 */
-#define U300_GPIO_PIN_PHFSENSE         10 /* Headphone jack sensing */
-#define U300_GPIO_PIN_MMC_CLKRET       11 /* Clock return from MMC/SD card */
-#define U300_GPIO_PIN_MMC_CD           12 /* MMC Card insertion detection */
-#define U300_GPIO_PIN_FLIPSENSE                13 /* Mechanical flip sensing */
-#define U300_GPIO_PIN_GPIO14           14 /* DSP JTAG Port RTCK */
-#define U300_GPIO_PIN_GPIO15           15 /* Unrouted */
-
-#define U300_GPIO_PIN_GPIO16           16 /* Unrouted */
-#define U300_GPIO_PIN_GPIO17           17 /* Unrouted */
-#define U300_GPIO_PIN_GPIO18           18 /* Unrouted */
-#define U300_GPIO_PIN_GPIO19           19 /* Unrouted */
-#define U300_GPIO_PIN_GPIO20           20 /* Unrouted */
-#define U300_GPIO_PIN_GPIO21           21 /* Unrouted */
-#define U300_GPIO_PIN_GPIO22           22 /* Unrouted */
-#define U300_GPIO_PIN_GPIO23           23 /* Unrouted */
-#endif
-
-/*
- * Individual pin assignments for the B330/S330 and B365/S365.
- * Notice that the actual usage of these pins depends on the
- * PAD MUX settings, that is why the same number can potentially
- * appear several times. In the reference design each pin is only
- * used for one purpose. These were determined by inspecting the
- * S365 schematic.
- */
-#if defined(CONFIG_MACH_U300_BS330) || defined(CONFIG_MACH_U300_BS365) || \
-    defined(CONFIG_MACH_U300_BS335)
-#define U300_GPIO_PIN_UART_RX          0
-#define U300_GPIO_PIN_UART_TX          1
-#define U300_GPIO_PIN_UART_CTS         2
-#define U300_GPIO_PIN_UART_RTS         3
-#define U300_GPIO_PIN_CAM_MAIN_STANDBY 4 /* Camera MAIN standby */
-#define U300_GPIO_PIN_GPIO05           5 /* Unrouted */
-#define U300_GPIO_PIN_MS_CD            6 /* Memory Stick Card insertion */
-#define U300_GPIO_PIN_GPIO07           7 /* Test point TP2430 */
-
-#define U300_GPIO_PIN_GPIO08           8 /* Test point TP2437 */
-#define U300_GPIO_PIN_GPIO09           9 /* Test point TP2431 */
-#define U300_GPIO_PIN_GPIO10           10 /* Test point TP2432 */
-#define U300_GPIO_PIN_MMC_CLKRET       11 /* Clock return from MMC/SD card */
-#define U300_GPIO_PIN_MMC_CD           12 /* MMC Card insertion detection */
-#define U300_GPIO_PIN_CAM_SUB_STANDBY  13 /* Camera SUB standby */
-#define U300_GPIO_PIN_GPIO14           14 /* Test point TP2436 */
-#define U300_GPIO_PIN_GPIO15           15 /* Unrouted */
-
-#define U300_GPIO_PIN_GPIO16           16 /* Test point TP2438 */
-#define U300_GPIO_PIN_PHFSENSE         17 /* Headphone jack sensing */
-#define U300_GPIO_PIN_GPIO18           18 /* Test point TP2439 */
-#define U300_GPIO_PIN_GPIO19           19 /* Routed somewhere */
-#define U300_GPIO_PIN_GPIO20           20 /* Unrouted */
-#define U300_GPIO_PIN_GPIO21           21 /* Unrouted */
-#define U300_GPIO_PIN_GPIO22           22 /* Unrouted */
-#define U300_GPIO_PIN_GPIO23           23 /* Unrouted */
-
-#define U300_GPIO_PIN_GPIO24           24 /* Unrouted */
-#define U300_GPIO_PIN_GPIO25           25 /* Unrouted */
-#define U300_GPIO_PIN_GPIO26           26 /* Unrouted */
-#define U300_GPIO_PIN_GPIO27           27 /* Unrouted */
-#define U300_GPIO_PIN_GPIO28           28 /* Unrouted */
-#define U300_GPIO_PIN_GPIO29           29 /* Unrouted */
-#define U300_GPIO_PIN_GPIO30           30 /* Unrouted */
-#define U300_GPIO_PIN_GPIO31           31 /* Unrouted */
-
-#define U300_GPIO_PIN_GPIO32           32 /* Unrouted */
-#define U300_GPIO_PIN_GPIO33           33 /* Unrouted */
-#define U300_GPIO_PIN_GPIO34           34 /* Unrouted */
-#define U300_GPIO_PIN_GPIO35           35 /* Unrouted */
-#define U300_GPIO_PIN_GPIO36           36 /* Unrouted */
-#define U300_GPIO_PIN_GPIO37           37 /* Unrouted */
-#define U300_GPIO_PIN_GPIO38           38 /* Unrouted */
-#define U300_GPIO_PIN_GPIO39           39 /* Unrouted */
-
-#ifdef CONFIG_MACH_U300_BS335
-
-#define U300_GPIO_PIN_GPIO40           40 /* Unrouted */
-#define U300_GPIO_PIN_GPIO41           41 /* Unrouted */
-#define U300_GPIO_PIN_GPIO42           42 /* Unrouted */
-#define U300_GPIO_PIN_GPIO43           43 /* Unrouted */
-#define U300_GPIO_PIN_GPIO44           44 /* Unrouted */
-#define U300_GPIO_PIN_GPIO45           45 /* Unrouted */
-#define U300_GPIO_PIN_GPIO46           46 /* Unrouted */
-#define U300_GPIO_PIN_GPIO47           47 /* Unrouted */
-
-#define U300_GPIO_PIN_GPIO48           48 /* Unrouted */
-#define U300_GPIO_PIN_GPIO49           49 /* Unrouted */
-#define U300_GPIO_PIN_GPIO50           50 /* Unrouted */
-#define U300_GPIO_PIN_GPIO51           51 /* Unrouted */
-#define U300_GPIO_PIN_GPIO52           52 /* Unrouted */
-#define U300_GPIO_PIN_GPIO53           53 /* Unrouted */
-#define U300_GPIO_PIN_GPIO54           54 /* Unrouted */
-#define U300_GPIO_PIN_GPIO55           55 /* Unrouted */
-#endif
-
-#endif
-
 /**
  * enum u300_gpio_variant - the type of U300 GPIO employed
  */
index db3fbfa..ee78a26 100644 (file)
 #endif
 
 /* Maximum 8*7 GPIO lines */
-#ifdef CONFIG_GPIO_U300
+#ifdef CONFIG_PINCTRL_COH901
 #define IRQ_U300_GPIO_BASE             (U300_VIC_IRQS_END)
 #define IRQ_U300_GPIO_END              (IRQ_U300_GPIO_BASE + 56)
 #else
index 4d482aa..05abd6a 100644 (file)
@@ -18,8 +18,8 @@
 #include <linux/slab.h>
 #include <mach/coh901318.h>
 #include <mach/dma_channels.h>
-#include <mach/gpio-u300.h>
 
+#include "u300-gpio.h"
 #include "mmc.h"
 
 static struct mmci_platform_data mmc0_plat_data = {
diff --git a/arch/arm/mach-u300/u300-gpio.h b/arch/arm/mach-u300/u300-gpio.h
new file mode 100644 (file)
index 0000000..847dc25
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * Individual pin assignments for the B26/S26. Notice that the
+ * actual usage of these pins depends on the PAD MUX settings, that
+ * is why the same number can potentially appear several times.
+ * In the reference design each pin is only used for one purpose.
+ * These were determined by inspecting the B26/S26 schematic:
+ * 2/1911-ROA 128 1603
+ */
+#ifdef CONFIG_MACH_U300_BS2X
+#define U300_GPIO_PIN_UART_RX          0
+#define U300_GPIO_PIN_UART_TX          1
+#define U300_GPIO_PIN_GPIO02           2  /* Unrouted */
+#define U300_GPIO_PIN_GPIO03           3  /* Unrouted */
+#define U300_GPIO_PIN_CAM_SLEEP                4
+#define U300_GPIO_PIN_CAM_REG_EN       5
+#define U300_GPIO_PIN_GPIO06           6  /* Unrouted */
+#define U300_GPIO_PIN_GPIO07           7  /* Unrouted */
+
+#define U300_GPIO_PIN_GPIO08           8  /* Service point SP2321 */
+#define U300_GPIO_PIN_GPIO09           9  /* Service point SP2322 */
+#define U300_GPIO_PIN_PHFSENSE         10 /* Headphone jack sensing */
+#define U300_GPIO_PIN_MMC_CLKRET       11 /* Clock return from MMC/SD card */
+#define U300_GPIO_PIN_MMC_CD           12 /* MMC Card insertion detection */
+#define U300_GPIO_PIN_FLIPSENSE                13 /* Mechanical flip sensing */
+#define U300_GPIO_PIN_GPIO14           14 /* DSP JTAG Port RTCK */
+#define U300_GPIO_PIN_GPIO15           15 /* Unrouted */
+
+#define U300_GPIO_PIN_GPIO16           16 /* Unrouted */
+#define U300_GPIO_PIN_GPIO17           17 /* Unrouted */
+#define U300_GPIO_PIN_GPIO18           18 /* Unrouted */
+#define U300_GPIO_PIN_GPIO19           19 /* Unrouted */
+#define U300_GPIO_PIN_GPIO20           20 /* Unrouted */
+#define U300_GPIO_PIN_GPIO21           21 /* Unrouted */
+#define U300_GPIO_PIN_GPIO22           22 /* Unrouted */
+#define U300_GPIO_PIN_GPIO23           23 /* Unrouted */
+#endif
+
+/*
+ * Individual pin assignments for the B330/S330 and B365/S365.
+ * Notice that the actual usage of these pins depends on the
+ * PAD MUX settings, that is why the same number can potentially
+ * appear several times. In the reference design each pin is only
+ * used for one purpose. These were determined by inspecting the
+ * S365 schematic.
+ */
+#if defined(CONFIG_MACH_U300_BS330) || defined(CONFIG_MACH_U300_BS365) || \
+    defined(CONFIG_MACH_U300_BS335)
+#define U300_GPIO_PIN_UART_RX          0
+#define U300_GPIO_PIN_UART_TX          1
+#define U300_GPIO_PIN_UART_CTS         2
+#define U300_GPIO_PIN_UART_RTS         3
+#define U300_GPIO_PIN_CAM_MAIN_STANDBY 4 /* Camera MAIN standby */
+#define U300_GPIO_PIN_GPIO05           5 /* Unrouted */
+#define U300_GPIO_PIN_MS_CD            6 /* Memory Stick Card insertion */
+#define U300_GPIO_PIN_GPIO07           7 /* Test point TP2430 */
+
+#define U300_GPIO_PIN_GPIO08           8 /* Test point TP2437 */
+#define U300_GPIO_PIN_GPIO09           9 /* Test point TP2431 */
+#define U300_GPIO_PIN_GPIO10           10 /* Test point TP2432 */
+#define U300_GPIO_PIN_MMC_CLKRET       11 /* Clock return from MMC/SD card */
+#define U300_GPIO_PIN_MMC_CD           12 /* MMC Card insertion detection */
+#define U300_GPIO_PIN_CAM_SUB_STANDBY  13 /* Camera SUB standby */
+#define U300_GPIO_PIN_GPIO14           14 /* Test point TP2436 */
+#define U300_GPIO_PIN_GPIO15           15 /* Unrouted */
+
+#define U300_GPIO_PIN_GPIO16           16 /* Test point TP2438 */
+#define U300_GPIO_PIN_PHFSENSE         17 /* Headphone jack sensing */
+#define U300_GPIO_PIN_GPIO18           18 /* Test point TP2439 */
+#define U300_GPIO_PIN_GPIO19           19 /* Routed somewhere */
+#define U300_GPIO_PIN_GPIO20           20 /* Unrouted */
+#define U300_GPIO_PIN_GPIO21           21 /* Unrouted */
+#define U300_GPIO_PIN_GPIO22           22 /* Unrouted */
+#define U300_GPIO_PIN_GPIO23           23 /* Unrouted */
+
+#define U300_GPIO_PIN_GPIO24           24 /* Unrouted */
+#define U300_GPIO_PIN_GPIO25           25 /* Unrouted */
+#define U300_GPIO_PIN_GPIO26           26 /* Unrouted */
+#define U300_GPIO_PIN_GPIO27           27 /* Unrouted */
+#define U300_GPIO_PIN_GPIO28           28 /* Unrouted */
+#define U300_GPIO_PIN_GPIO29           29 /* Unrouted */
+#define U300_GPIO_PIN_GPIO30           30 /* Unrouted */
+#define U300_GPIO_PIN_GPIO31           31 /* Unrouted */
+
+#define U300_GPIO_PIN_GPIO32           32 /* Unrouted */
+#define U300_GPIO_PIN_GPIO33           33 /* Unrouted */
+#define U300_GPIO_PIN_GPIO34           34 /* Unrouted */
+#define U300_GPIO_PIN_GPIO35           35 /* Unrouted */
+#define U300_GPIO_PIN_GPIO36           36 /* Unrouted */
+#define U300_GPIO_PIN_GPIO37           37 /* Unrouted */
+#define U300_GPIO_PIN_GPIO38           38 /* Unrouted */
+#define U300_GPIO_PIN_GPIO39           39 /* Unrouted */
+
+#ifdef CONFIG_MACH_U300_BS335
+
+#define U300_GPIO_PIN_GPIO40           40 /* Unrouted */
+#define U300_GPIO_PIN_GPIO41           41 /* Unrouted */
+#define U300_GPIO_PIN_GPIO42           42 /* Unrouted */
+#define U300_GPIO_PIN_GPIO43           43 /* Unrouted */
+#define U300_GPIO_PIN_GPIO44           44 /* Unrouted */
+#define U300_GPIO_PIN_GPIO45           45 /* Unrouted */
+#define U300_GPIO_PIN_GPIO46           46 /* Unrouted */
+#define U300_GPIO_PIN_GPIO47           47 /* Unrouted */
+
+#define U300_GPIO_PIN_GPIO48           48 /* Unrouted */
+#define U300_GPIO_PIN_GPIO49           49 /* Unrouted */
+#define U300_GPIO_PIN_GPIO50           50 /* Unrouted */
+#define U300_GPIO_PIN_GPIO51           51 /* Unrouted */
+#define U300_GPIO_PIN_GPIO52           52 /* Unrouted */
+#define U300_GPIO_PIN_GPIO53           53 /* Unrouted */
+#define U300_GPIO_PIN_GPIO54           54 /* Unrouted */
+#define U300_GPIO_PIN_GPIO55           55 /* Unrouted */
+#endif
+
+#endif
index a1d79ee..88be3e6 100644 (file)
@@ -111,6 +111,32 @@ struct iommu_platform_data {
        u32 da_end;
 };
 
+/**
+ * struct iommu_arch_data - omap iommu private data
+ * @name: name of the iommu device
+ * @iommu_dev: handle of the iommu device
+ *
+ * This is an omap iommu private data object, which binds an iommu user
+ * to its iommu device. This object should be placed at the iommu user's
+ * dev_archdata so generic IOMMU API can be used without having to
+ * utilize omap-specific plumbing anymore.
+ */
+struct omap_iommu_arch_data {
+       const char *name;
+       struct omap_iommu *iommu_dev;
+};
+
+/**
+ * dev_to_omap_iommu() - retrieves an omap iommu object from a user device
+ * @dev: iommu client device
+ */
+static inline struct omap_iommu *dev_to_omap_iommu(struct device *dev)
+{
+       struct omap_iommu_arch_data *arch_data = dev->archdata.iommu;
+
+       return arch_data->iommu_dev;
+}
+
 /* IOMMU errors */
 #define OMAP_IOMMU_ERR_TLB_MISS                (1 << 0)
 #define OMAP_IOMMU_ERR_TRANS_FAULT     (1 << 1)
@@ -163,8 +189,8 @@ extern int omap_iommu_set_isr(const char *name,
                                    void *priv),
                         void *isr_priv);
 
-extern void omap_iommu_save_ctx(struct omap_iommu *obj);
-extern void omap_iommu_restore_ctx(struct omap_iommu *obj);
+extern void omap_iommu_save_ctx(struct device *dev);
+extern void omap_iommu_restore_ctx(struct device *dev);
 
 extern int omap_install_iommu_arch(const struct iommu_functions *ops);
 extern void omap_uninstall_iommu_arch(const struct iommu_functions *ops);
@@ -176,6 +202,5 @@ extern ssize_t
 omap_iommu_dump_ctx(struct omap_iommu *obj, char *buf, ssize_t len);
 extern size_t
 omap_dump_tlb_entries(struct omap_iommu *obj, char *buf, ssize_t len);
-struct device *omap_find_iommu_device(const char *name);
 
 #endif /* __MACH_IOMMU_H */
index 6af1a91..498e57c 100644 (file)
@@ -72,18 +72,18 @@ struct iovm_struct {
 #define IOVMF_DA_FIXED         (1 << (4 + IOVMF_SW_SHIFT))
 
 
-extern struct iovm_struct *omap_find_iovm_area(struct omap_iommu *obj, u32 da);
+extern struct iovm_struct *omap_find_iovm_area(struct device *dev, u32 da);
 extern u32
-omap_iommu_vmap(struct iommu_domain *domain, struct omap_iommu *obj, u32 da,
+omap_iommu_vmap(struct iommu_domain *domain, struct device *dev, u32 da,
                        const struct sg_table *sgt, u32 flags);
 extern struct sg_table *omap_iommu_vunmap(struct iommu_domain *domain,
-                               struct omap_iommu *obj, u32 da);
+                               struct device *dev, u32 da);
 extern u32
-omap_iommu_vmalloc(struct iommu_domain *domain, struct omap_iommu *obj,
+omap_iommu_vmalloc(struct iommu_domain *domain, struct device *dev,
                                u32 da, size_t bytes, u32 flags);
 extern void
-omap_iommu_vfree(struct iommu_domain *domain, struct omap_iommu *obj,
+omap_iommu_vfree(struct iommu_domain *domain, struct device *dev,
                                const u32 da);
-extern void *omap_da_to_va(struct omap_iommu *obj, u32 da);
+extern void *omap_da_to_va(struct device *dev, u32 da);
 
 #endif /* __IOMMU_MMAP_H */
index b59a648..c81ace3 100644 (file)
 #ifndef __PLAT_SAMSUNG_KEYPAD_H
 #define __PLAT_SAMSUNG_KEYPAD_H
 
-#include <linux/input/matrix_keypad.h>
-
-#define SAMSUNG_MAX_ROWS       8
-#define SAMSUNG_MAX_COLS       8
-
-/**
- * struct samsung_keypad_platdata - Platform device data for Samsung Keypad.
- * @keymap_data: pointer to &matrix_keymap_data.
- * @rows: number of keypad row supported.
- * @cols: number of keypad col supported.
- * @no_autorepeat: disable key autorepeat.
- * @wakeup: controls whether the device should be set up as wakeup source.
- * @cfg_gpio: configure the GPIO.
- *
- * Initialisation data specific to either the machine or the platform
- * for the device driver to use or call-back when configuring gpio.
- */
-struct samsung_keypad_platdata {
-       const struct matrix_keymap_data *keymap_data;
-       unsigned int rows;
-       unsigned int cols;
-       bool no_autorepeat;
-       bool wakeup;
-
-       void (*cfg_gpio)(unsigned int rows, unsigned int cols);
-};
+#include <linux/input/samsung-keypad.h>
 
 /**
  * samsung_keypad_set_platdata - Set platform data for Samsung Keypad device.
index a2bde37..b34438e 100644 (file)
@@ -404,8 +404,7 @@ static int __init init_axis_flash(void)
                 */
                int blockstat;
                do {
-                       blockstat = main_mtd->block_isbad(main_mtd,
-                               ptable_sector);
+                       blockstat = mtd_block_isbad(main_mtd, ptable_sector);
                        if (blockstat < 0)
                                ptable_sector = 0; /* read error */
                        else if (blockstat)
@@ -413,8 +412,8 @@ static int __init init_axis_flash(void)
                } while (blockstat && ptable_sector);
 #endif
                if (ptable_sector) {
-                       main_mtd->read(main_mtd, ptable_sector, PAGESIZE,
-                               &len, page);
+                       mtd_read(main_mtd, ptable_sector, PAGESIZE, &len,
+                                page);
                        ptable_head = &((struct partitiontable *) page)->head;
                }
 
index 105c93b..b6a809f 100644 (file)
@@ -11,10 +11,12 @@ extern void no_iommu_init(void);
 extern int force_iommu, no_iommu;
 extern int iommu_pass_through;
 extern int iommu_detected;
+extern int iommu_group_mf;
 #else
 #define iommu_pass_through     (0)
 #define no_iommu               (1)
 #define iommu_detected         (0)
+#define iommu_group_mf         (0)
 #endif
 extern void iommu_dma_init(void);
 extern void machvec_init(const char *name);
index 1d2427d..fbb5198 100644 (file)
@@ -71,7 +71,7 @@
 __DEFINE_GUEST_HANDLE(uchar, unsigned char);
 __DEFINE_GUEST_HANDLE(uint, unsigned int);
 __DEFINE_GUEST_HANDLE(ulong, unsigned long);
-__DEFINE_GUEST_HANDLE(u64, unsigned long);
+
 DEFINE_GUEST_HANDLE(char);
 DEFINE_GUEST_HANDLE(int);
 DEFINE_GUEST_HANDLE(long);
index c16162c..eb11757 100644 (file)
@@ -33,6 +33,7 @@ int force_iommu __read_mostly;
 #endif
 
 int iommu_pass_through;
+int iommu_group_mf;
 
 /* Dummy device used for NULL arguments (normally ISA). Better would
    be probably a smaller DMA mask, but this is bug-to-bug compatible
index 43f4c92..4050520 100644 (file)
@@ -774,13 +774,13 @@ struct kvm *kvm_arch_alloc_vm(void)
        return kvm;
 }
 
-struct kvm_io_range {
+struct kvm_ia64_io_range {
        unsigned long start;
        unsigned long size;
        unsigned long type;
 };
 
-static const struct kvm_io_range io_ranges[] = {
+static const struct kvm_ia64_io_range io_ranges[] = {
        {VGA_IO_START, VGA_IO_SIZE, GPFN_FRAME_BUFFER},
        {MMIO_START, MMIO_SIZE, GPFN_LOW_MMIO},
        {LEGACY_IO_START, LEGACY_IO_SIZE, GPFN_LEGACY_IO},
@@ -1366,14 +1366,12 @@ static void kvm_release_vm_pages(struct kvm *kvm)
 {
        struct kvm_memslots *slots;
        struct kvm_memory_slot *memslot;
-       int i, j;
+       int j;
        unsigned long base_gfn;
 
        slots = kvm_memslots(kvm);
-       for (i = 0; i < slots->nmemslots; i++) {
-               memslot = &slots->memslots[i];
+       kvm_for_each_memslot(memslot, slots) {
                base_gfn = memslot->base_gfn;
-
                for (j = 0; j < memslot->npages; j++) {
                        if (memslot->rmap[j])
                                put_page((struct page *)memslot->rmap[j]);
@@ -1820,7 +1818,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
        if (log->slot >= KVM_MEMORY_SLOTS)
                goto out;
 
-       memslot = &kvm->memslots->memslots[log->slot];
+       memslot = id_to_memslot(kvm->memslots, log->slot);
        r = -ENOENT;
        if (!memslot->dirty_bitmap)
                goto out;
index 40b223b..c223854 100644 (file)
@@ -834,10 +834,13 @@ static struct mtd_partition mtd_partitions[] = {
        }
 };
 
+static const char *bcm63xx_part_types[] = { "bcm63xxpart", NULL };
+
 static struct physmap_flash_data flash_data = {
        .width                  = 2,
        .nr_parts               = ARRAY_SIZE(mtd_partitions),
        .parts                  = mtd_partitions,
+       .part_probe_types       = bcm63xx_part_types,
 };
 
 static struct resource mtd_resources[] = {
index ed72e6a..1e6b587 100644 (file)
@@ -16,7 +16,6 @@
 #define TAGINFO1_LEN           30      /* Length of vendor information field1 in tag */
 #define FLASHLAYOUTVER_LEN     4       /* Length of Flash Layout Version String tag */
 #define TAGINFO2_LEN           16      /* Length of vendor information field2 in tag */
-#define CRC_LEN                        4       /* Length of CRC in bytes */
 #define ALTTAGINFO_LEN         54      /* Alternate length for vendor information; Pirelli */
 
 #define NUM_PIRELLI            2
@@ -77,19 +76,19 @@ struct bcm_tag {
        /* 192-195: Version flash layout */
        char flash_layout_ver[FLASHLAYOUTVER_LEN];
        /* 196-199: kernel+rootfs CRC32 */
-       char fskernel_crc[CRC_LEN];
+       __u32 fskernel_crc;
        /* 200-215: Unused except on Alice Gate where is is information */
        char information2[TAGINFO2_LEN];
        /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-       char image_crc[CRC_LEN];
+       __u32 image_crc;
        /* 220-223: CRC32 of rootfs partition */
-       char rootfs_crc[CRC_LEN];
+       __u32 rootfs_crc;
        /* 224-227: CRC32 of kernel partition */
-       char kernel_crc[CRC_LEN];
+       __u32 kernel_crc;
        /* 228-235: Unused at present */
        char reserved1[8];
        /* 236-239: CRC32 of header excluding last 20 bytes */
-       char header_crc[CRC_LEN];
+       __u32 header_crc;
        /* 240-255: Unused at present */
        char reserved2[16];
 };
index 0ad432b..f7727d9 100644 (file)
@@ -170,8 +170,8 @@ struct kvm_sregs {
                        } ppc64;
                        struct {
                                __u32 sr[16];
-                               __u64 ibat[8]; 
-                               __u64 dbat[8]; 
+                               __u64 ibat[8];
+                               __u64 dbat[8];
                        } ppc32;
                } s;
                struct {
index a459479..e41ac6f 100644 (file)
@@ -498,7 +498,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
 
        /* If nothing is dirty, don't bother messing with page tables. */
        if (is_dirty) {
-               memslot = &kvm->memslots->memslots[log->slot];
+               memslot = id_to_memslot(kvm->memslots, log->slot);
 
                ga = memslot->base_gfn << PAGE_SHIFT;
                ga_end = ga + (memslot->npages << PAGE_SHIFT);
index 286f13d..a795a13 100644 (file)
@@ -86,7 +86,7 @@ static inline int lpcr_rmls(unsigned long rma_size)
  * to allocate contiguous physical memory for the real memory
  * areas for guests.
  */
-void kvm_rma_init(void)
+void __init kvm_rma_init(void)
 {
        unsigned long i;
        unsigned long j, npages;
index f3444f7..17c5d4b 100644 (file)
 
 /* Intel-defined CPU features, CPUID level 0x00000007:0 (ebx), word 9 */
 #define X86_FEATURE_FSGSBASE   (9*32+ 0) /* {RD/WR}{FS/GS}BASE instructions*/
+#define X86_FEATURE_BMI1       (9*32+ 3) /* 1st group bit manipulation extensions */
+#define X86_FEATURE_AVX2       (9*32+ 5) /* AVX2 instructions */
 #define X86_FEATURE_SMEP       (9*32+ 7) /* Supervisor Mode Execution Protection */
+#define X86_FEATURE_BMI2       (9*32+ 8) /* 2nd group bit manipulation extensions */
 #define X86_FEATURE_ERMS       (9*32+ 9) /* Enhanced REP MOVSB/STOSB */
 
 #if defined(__KERNEL__) && !defined(__ASSEMBLY__)
index 345c99c..dffc38e 100644 (file)
@@ -5,6 +5,7 @@ extern struct dma_map_ops nommu_dma_ops;
 extern int force_iommu, no_iommu;
 extern int iommu_detected;
 extern int iommu_pass_through;
+extern int iommu_group_mf;
 
 /* 10 seconds */
 #define DMAR_OPERATION_TIMEOUT ((cycles_t) tsc_khz*10*1000)