From d6b26a27dc83f4a46bf1150c352128246936df11 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Mon, 10 Jan 2011 15:39:48 -0800 Subject: [PATCH] --- yaml --- r: 227889 b: refs/heads/master c: 443e6221e465efa8efb752a8405a759ef1161af9 h: refs/heads/master i: 227887: a163edfa5a28d9457ba044a8b4b812f1d33998f6 v: v3 --- [refs] | 2 +- trunk/.mailmap | 1 + .../ABI/testing/sysfs-driver-hid-roccat-kone | 16 +- .../testing/sysfs-driver-hid-roccat-koneplus | 108 + .../ABI/testing/sysfs-driver-hid-roccat-pyra | 18 +- trunk/Documentation/ABI/testing/sysfs-tty | 19 + .../Documentation/DocBook/device-drivers.tmpl | 4 + trunk/Documentation/coccinelle.txt | 4 + .../feature-removal-schedule.txt | 10 + trunk/Documentation/filesystems/proc.txt | 24 + trunk/Documentation/hwmon/ds620 | 34 + trunk/Documentation/hwmon/sht21 | 49 + trunk/Documentation/hwmon/sysfs-interface | 49 +- trunk/Documentation/input/cma3000_d0x.txt | 115 + .../input/multi-touch-protocol.txt | 53 +- trunk/Documentation/kbuild/kbuild.txt | 8 + .../Documentation/kbuild/kconfig-language.txt | 7 +- trunk/Documentation/kbuild/makefiles.txt | 15 + .../Documentation/keys-trusted-encrypted.txt | 145 + trunk/Documentation/make/headers_install.txt | 5 +- trunk/Documentation/power/drivers-testing.txt | 8 +- trunk/Documentation/power/runtime_pm.txt | 31 + .../powerpc/dts-bindings/eeprom.txt | 28 + trunk/Documentation/serial/00-INDEX | 2 + trunk/Documentation/serial/serial-rs485.txt | 120 + trunk/Documentation/spi/pxa2xx | 4 +- trunk/Documentation/sysctl/kernel.txt | 2 +- trunk/Documentation/vm/Makefile | 2 +- trunk/MAINTAINERS | 16 +- trunk/Makefile | 1 + trunk/arch/alpha/include/asm/ioctls.h | 1 + trunk/arch/arm/Kconfig | 12 +- trunk/arch/arm/configs/ag5evm_defconfig | 83 + trunk/arch/arm/configs/mackerel_defconfig | 138 + trunk/arch/arm/configs/u8500_defconfig | 4 + trunk/arch/arm/mach-davinci/dm355.c | 7 +- trunk/arch/arm/mach-davinci/dm365.c | 6 - .../arch/arm/mach-davinci/include/mach/spi.h | 52 +- trunk/arch/arm/mach-msm/Kconfig | 5 + trunk/arch/arm/mach-msm/Makefile | 4 + trunk/arch/arm/mach-msm/headsmp.S | 40 + trunk/arch/arm/mach-msm/hotplug.c | 91 + .../mach-msm/include/mach/msm_iomap-8x60.h | 6 +- trunk/arch/arm/mach-msm/io.c | 1 + trunk/arch/arm/mach-msm/platsmp.c | 166 + trunk/arch/arm/mach-msm/scm-boot.c | 39 + trunk/arch/arm/mach-msm/scm-boot.h | 38 + trunk/arch/arm/mach-msm/scm.c | 287 ++ trunk/arch/arm/mach-msm/scm.h | 41 + trunk/arch/arm/mach-msm/timer.c | 125 +- trunk/arch/arm/mach-pxa/cm-x255.c | 2 +- trunk/arch/arm/mach-pxa/cm-x270.c | 2 +- trunk/arch/arm/mach-pxa/corgi.c | 2 +- trunk/arch/arm/mach-pxa/devices.c | 2 +- trunk/arch/arm/mach-pxa/em-x270.c | 2 +- trunk/arch/arm/mach-pxa/hx4700.c | 2 +- trunk/arch/arm/mach-pxa/icontrol.c | 2 +- .../arm/mach-pxa/include/mach/pxa2xx_spi.h | 47 - trunk/arch/arm/mach-pxa/littleton.c | 2 +- trunk/arch/arm/mach-pxa/lubbock.c | 2 +- trunk/arch/arm/mach-pxa/pcm027.c | 2 +- trunk/arch/arm/mach-pxa/poodle.c | 2 +- trunk/arch/arm/mach-pxa/sharpsl_pm.c | 3 +- trunk/arch/arm/mach-pxa/spitz.c | 3 +- trunk/arch/arm/mach-pxa/stargate2.c | 2 +- trunk/arch/arm/mach-pxa/tosa.c | 2 +- trunk/arch/arm/mach-pxa/trizeps4.c | 1 - trunk/arch/arm/mach-pxa/z2.c | 2 +- trunk/arch/arm/mach-pxa/zeus.c | 2 +- trunk/arch/arm/mach-shmobile/Kconfig | 35 +- trunk/arch/arm/mach-shmobile/Makefile | 28 +- trunk/arch/arm/mach-shmobile/board-ag5evm.c | 315 ++ trunk/arch/arm/mach-shmobile/board-ap4evb.c | 24 +- trunk/arch/arm/mach-shmobile/board-g3evm.c | 1 + trunk/arch/arm/mach-shmobile/board-g4evm.c | 1 + trunk/arch/arm/mach-shmobile/board-mackerel.c | 1200 +++++++ trunk/arch/arm/mach-shmobile/clock-sh73a0.c | 356 +++ trunk/arch/arm/mach-shmobile/entry-gic.S | 18 + trunk/arch/arm/mach-shmobile/entry-intc.S | 57 + trunk/arch/arm/mach-shmobile/headsmp.S | 27 + trunk/arch/arm/mach-shmobile/hotplug.c | 41 + .../arm/mach-shmobile/include/mach/common.h | 16 + .../mach-shmobile/include/mach/entry-macro.S | 41 +- .../arm/mach-shmobile/include/mach/hardware.h | 3 - .../include/mach/head-mackerel.txt | 87 + .../arm/mach-shmobile/include/mach/irqs.h | 5 +- .../arm/mach-shmobile/include/mach/sh7372.h | 2 + .../arm/mach-shmobile/include/mach/sh73a0.h | 467 +++ .../arch/arm/mach-shmobile/include/mach/smp.h | 16 + .../arm/mach-shmobile/include/mach/zboot.h | 3 + trunk/arch/arm/mach-shmobile/intc-sh73a0.c | 267 ++ trunk/arch/arm/mach-shmobile/localtimer.c | 25 + trunk/arch/arm/mach-shmobile/pfc-sh73a0.c | 2746 +++++++++++++++++ trunk/arch/arm/mach-shmobile/platsmp.c | 70 + trunk/arch/arm/mach-shmobile/setup-sh7372.c | 10 + trunk/arch/arm/mach-shmobile/setup-sh73a0.c | 412 +++ trunk/arch/arm/mach-shmobile/smp-sh73a0.c | 97 + trunk/arch/arm/mach-ux500/Kconfig | 26 +- trunk/arch/arm/mach-ux500/Makefile | 5 +- trunk/arch/arm/mach-ux500/clock.c | 14 +- trunk/arch/arm/mach-ux500/cpu-db5500.c | 18 + trunk/arch/arm/mach-ux500/cpu-db8500.c | 105 +- trunk/arch/arm/mach-ux500/cpu.c | 78 +- trunk/arch/arm/mach-ux500/id.c | 107 + .../arm/mach-ux500/include/mach/debug-macro.S | 19 +- .../arm/mach-ux500/include/mach/entry-macro.S | 5 - .../arm/mach-ux500/include/mach/hardware.h | 108 +- trunk/arch/arm/mach-ux500/include/mach/id.h | 80 + trunk/arch/arm/mach-ux500/include/mach/irqs.h | 2 +- .../arch/arm/mach-ux500/include/mach/setup.h | 2 +- trunk/arch/arm/mach-ux500/modem-irq-db5500.c | 5 + trunk/arch/arm/mach-ux500/platsmp.c | 37 +- trunk/arch/arm/mm/Kconfig | 2 +- trunk/arch/arm/plat-pxa/ssp.c | 2 +- trunk/arch/arm/plat-s3c24xx/cpu-freq.c | 1 - .../arm/plat-spear/include/plat/keyboard.h | 141 + trunk/arch/ia64/kernel/acpi.c | 6 + trunk/arch/ia64/kernel/irq_ia64.c | 2 +- trunk/arch/ia64/kernel/perfmon.c | 3 +- trunk/arch/ia64/kernel/smp.c | 13 +- trunk/arch/ia64/kernel/time.c | 2 +- trunk/arch/m68k/include/asm/sun3_pgtable.h | 5 +- trunk/arch/m68k/include/asm/thread_info.h | 1 + trunk/arch/m68k/include/asm/unistd.h | 1 + trunk/arch/m68k/kernel/entry.S | 30 +- trunk/arch/m68k/kernel/signal.c | 314 +- trunk/arch/m68knommu/kernel/entry.S | 16 - trunk/arch/m68knommu/kernel/signal.c | 188 +- trunk/arch/m68knommu/platform/68328/entry.S | 7 +- trunk/arch/m68knommu/platform/68360/entry.S | 7 +- .../arch/m68knommu/platform/coldfire/entry.S | 5 +- trunk/arch/microblaze/Kconfig | 2 +- trunk/arch/microblaze/boot/Makefile | 12 +- trunk/arch/microblaze/include/asm/prom.h | 3 - trunk/arch/microblaze/kernel/prom_parse.c | 38 - trunk/arch/mips/Kconfig | 2 +- trunk/arch/mips/include/asm/ioctls.h | 1 + trunk/arch/parisc/include/asm/ioctls.h | 1 + trunk/arch/parisc/kernel/pdc_cons.c | 8 +- trunk/arch/powerpc/Kconfig | 2 +- trunk/arch/powerpc/boot/Makefile | 8 +- trunk/arch/powerpc/boot/dts/bluestone.dts | 8 +- trunk/arch/powerpc/boot/dts/cm5200.dts | 194 +- trunk/arch/powerpc/boot/dts/digsy_mtc.dts | 177 +- trunk/arch/powerpc/boot/dts/hotfoot.dts | 2 + trunk/arch/powerpc/boot/dts/lite5200b.dts | 220 +- trunk/arch/powerpc/boot/dts/media5200.dts | 214 +- trunk/arch/powerpc/boot/dts/motionpro.dts | 194 +- trunk/arch/powerpc/boot/dts/mpc5200b.dtsi | 275 ++ trunk/arch/powerpc/boot/dts/mucmc52.dts | 174 +- trunk/arch/powerpc/boot/dts/pcm030.dts | 196 +- trunk/arch/powerpc/boot/dts/pcm032.dts | 242 +- trunk/arch/powerpc/boot/dts/uc101.dts | 160 +- trunk/arch/powerpc/include/asm/ioctls.h | 1 + trunk/arch/powerpc/include/asm/prom.h | 5 +- trunk/arch/powerpc/kernel/prom_parse.c | 38 - .../powerpc/platforms/40x/ppc40x_simple.c | 13 +- .../powerpc/platforms/512x/mpc5121_generic.c | 13 +- trunk/arch/powerpc/platforms/52xx/lite5200.c | 16 +- trunk/arch/powerpc/platforms/52xx/media5200.c | 13 +- .../powerpc/platforms/52xx/mpc5200_simple.c | 13 +- .../arch/powerpc/platforms/83xx/mpc830x_rdb.c | 13 +- .../arch/powerpc/platforms/83xx/mpc831x_rdb.c | 11 +- .../arch/powerpc/platforms/83xx/mpc837x_rdb.c | 15 +- trunk/arch/powerpc/platforms/85xx/tqm85xx.c | 20 +- .../powerpc/platforms/pseries/eeh_sysfs.c | 1 - trunk/arch/powerpc/sysdev/mv64x60_dev.c | 1 + trunk/arch/powerpc/sysdev/tsi108_dev.c | 1 + trunk/arch/s390/Kconfig | 130 +- trunk/arch/s390/Kconfig.debug | 6 +- trunk/arch/s390/defconfig | 152 +- trunk/arch/s390/hypfs/Makefile | 2 +- trunk/arch/s390/hypfs/hypfs.h | 33 +- trunk/arch/s390/hypfs/hypfs_dbfs.c | 116 + trunk/arch/s390/hypfs/hypfs_diag.c | 82 +- trunk/arch/s390/hypfs/hypfs_vm.c | 62 +- trunk/arch/s390/hypfs/inode.c | 18 +- trunk/arch/s390/include/asm/ccwdev.h | 2 + trunk/arch/s390/include/asm/cputime.h | 2 +- trunk/arch/s390/include/asm/dasd.h | 3 + trunk/arch/s390/include/asm/ftrace.h | 11 +- trunk/arch/s390/include/asm/hardirq.h | 16 - trunk/arch/s390/include/asm/irq.h | 34 +- trunk/arch/s390/include/asm/kprobes.h | 20 +- trunk/arch/s390/include/asm/processor.h | 4 +- trunk/arch/s390/include/asm/ptrace.h | 52 +- trunk/arch/s390/include/asm/qdio.h | 1 + trunk/arch/s390/include/asm/s390_ext.h | 29 +- trunk/arch/s390/include/asm/smp.h | 3 +- trunk/arch/s390/include/asm/system.h | 4 +- trunk/arch/s390/include/asm/thread_info.h | 10 +- trunk/arch/s390/include/asm/timex.h | 20 + trunk/arch/s390/kernel/asm-offsets.c | 14 +- trunk/arch/s390/kernel/compat_ptrace.h | 53 +- trunk/arch/s390/kernel/entry.S | 274 +- trunk/arch/s390/kernel/entry.h | 2 +- trunk/arch/s390/kernel/entry64.S | 73 +- trunk/arch/s390/kernel/ftrace.c | 238 +- trunk/arch/s390/kernel/irq.c | 41 +- trunk/arch/s390/kernel/kprobes.c | 470 ++- trunk/arch/s390/kernel/mcount.S | 32 +- trunk/arch/s390/kernel/mcount64.S | 29 +- trunk/arch/s390/kernel/nmi.c | 3 +- trunk/arch/s390/kernel/process.c | 21 +- trunk/arch/s390/kernel/processor.c | 20 +- trunk/arch/s390/kernel/ptrace.c | 306 +- trunk/arch/s390/kernel/s390_ext.c | 125 +- trunk/arch/s390/kernel/signal.c | 2 +- trunk/arch/s390/kernel/smp.c | 47 +- trunk/arch/s390/kernel/time.c | 6 +- trunk/arch/s390/kernel/traps.c | 15 +- trunk/arch/s390/kernel/vtime.c | 6 +- trunk/arch/s390/kvm/Kconfig | 7 +- trunk/arch/s390/lib/delay.c | 2 - trunk/arch/s390/mm/fault.c | 35 +- trunk/arch/sh/drivers/push-switch.c | 2 +- trunk/arch/sh/include/asm/ioctls.h | 1 + .../sh/include/mach-common/mach/romimage.h | 2 +- .../sh/include/mach-ecovec24/mach/romimage.h | 2 +- .../sh/include/mach-kfr2r09/mach/romimage.h | 2 +- trunk/arch/sparc/include/asm/ioctls.h | 1 + trunk/arch/sparc/kernel/auxio_32.c | 2 +- trunk/arch/sparc/kernel/starfire.c | 2 +- trunk/arch/sparc/prom/init_32.c | 2 +- trunk/arch/sparc/prom/init_64.c | 4 +- trunk/arch/sparc/prom/tree_32.c | 17 +- trunk/arch/sparc/prom/tree_64.c | 18 +- trunk/arch/x86/Kconfig.cpu | 3 + trunk/arch/x86/include/asm/apic.h | 2 +- trunk/arch/x86/include/asm/debugreg.h | 2 +- trunk/arch/x86/include/asm/hypervisor.h | 12 + trunk/arch/x86/include/asm/io_apic.h | 3 + trunk/arch/x86/include/asm/percpu.h | 158 +- trunk/arch/x86/include/asm/processor.h | 3 +- trunk/arch/x86/include/asm/xen/hypervisor.h | 35 + trunk/arch/x86/kernel/acpi/boot.c | 48 +- trunk/arch/x86/kernel/apic/apic.c | 71 +- trunk/arch/x86/kernel/apic/io_apic.c | 32 +- trunk/arch/x86/kernel/apic/x2apic_uv_x.c | 8 +- trunk/arch/x86/kernel/cpu/amd.c | 2 +- .../arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 4 +- trunk/arch/x86/kernel/cpu/intel_cacheinfo.c | 4 +- trunk/arch/x86/kernel/cpu/mcheck/mce.c | 20 +- trunk/arch/x86/kernel/cpu/mcheck/mce_intel.c | 2 +- trunk/arch/x86/kernel/cpu/perf_event.c | 27 +- trunk/arch/x86/kernel/cpu/perf_event_intel.c | 4 +- trunk/arch/x86/kernel/ftrace.c | 6 +- trunk/arch/x86/kernel/hw_breakpoint.c | 12 +- trunk/arch/x86/kernel/irq.c | 6 +- trunk/arch/x86/kernel/irq_32.c | 4 +- trunk/arch/x86/kernel/kprobes.c | 14 +- trunk/arch/x86/kernel/mpparse.c | 114 +- trunk/arch/x86/kernel/process.c | 4 +- trunk/arch/x86/kernel/smpboot.c | 14 +- trunk/arch/x86/kernel/tsc.c | 2 +- trunk/arch/x86/kvm/x86.c | 8 +- trunk/arch/x86/lib/delay.c | 2 +- trunk/arch/x86/mm/amdtopology_64.c | 1 - trunk/arch/x86/oprofile/nmi_int.c | 2 +- trunk/arch/x86/oprofile/op_model_ppro.c | 8 +- trunk/arch/x86/platform/mrst/mrst.c | 30 +- trunk/arch/x86/platform/sfi/sfi.c | 13 +- trunk/arch/x86/xen/enlighten.c | 44 +- trunk/arch/x86/xen/multicalls.h | 2 +- trunk/arch/x86/xen/spinlock.c | 8 +- trunk/arch/x86/xen/time.c | 8 +- trunk/arch/xtensa/include/asm/ioctls.h | 1 + trunk/drivers/acpi/processor_idle.c | 6 +- trunk/drivers/ata/Kconfig | 28 +- trunk/drivers/ata/Makefile | 1 + trunk/drivers/ata/acard-ahci.c | 528 ++++ trunk/drivers/ata/ahci.h | 3 + trunk/drivers/ata/libahci.c | 11 +- trunk/drivers/ata/libata-core.c | 2 +- trunk/drivers/ata/libata-scsi.c | 60 +- trunk/drivers/ata/libata-sff.c | 2 +- trunk/drivers/ata/pata_hpt366.c | 51 +- trunk/drivers/ata/pata_hpt37x.c | 236 +- trunk/drivers/ata/pata_hpt3x2n.c | 150 +- trunk/drivers/base/core.c | 41 +- trunk/drivers/base/power/generic_ops.c | 6 +- trunk/drivers/base/power/main.c | 174 +- trunk/drivers/base/power/runtime.c | 47 +- trunk/drivers/base/power/wakeup.c | 20 +- trunk/drivers/block/floppy.c | 4 +- trunk/drivers/block/xen-blkfront.c | 4 +- trunk/drivers/cdrom/gdrom.c | 2 +- trunk/drivers/char/Kconfig | 9 + trunk/drivers/char/Makefile | 1 + trunk/drivers/char/hvc_dcc.c | 133 + trunk/drivers/char/hvsi.c | 4 +- trunk/drivers/char/ip2/ip2main.c | 2 +- trunk/drivers/char/ipmi/ipmi_si_intf.c | 10 +- .../drivers/char/pcmcia/ipwireless/hardware.c | 2 +- .../drivers/char/pcmcia/ipwireless/network.c | 3 +- trunk/drivers/char/pcmcia/ipwireless/tty.c | 2 +- trunk/drivers/char/random.c | 2 +- trunk/drivers/char/rocket.c | 2 +- trunk/drivers/char/snsc.h | 1 - trunk/drivers/char/sonypi.c | 2 +- trunk/drivers/char/specialix.c | 2 +- trunk/drivers/char/tpm/tpm.c | 24 +- trunk/drivers/char/tpm/tpm.h | 5 + trunk/drivers/connector/cn_proc.c | 5 +- trunk/drivers/cpuidle/cpuidle.c | 2 +- trunk/drivers/dma/shdma.c | 16 +- trunk/drivers/edac/Kconfig | 8 +- trunk/drivers/edac/amd64_edac.c | 827 ++--- trunk/drivers/edac/amd64_edac.h | 86 +- trunk/drivers/edac/amd64_edac_inj.c | 25 +- trunk/drivers/edac/cpc925_edac.c | 9 +- trunk/drivers/edac/e752x_edac.c | 8 +- trunk/drivers/edac/edac_core.h | 5 +- trunk/drivers/edac/edac_mc.c | 4 +- trunk/drivers/edac/edac_mc_sysfs.c | 57 +- trunk/drivers/edac/i5100_edac.c | 9 +- trunk/drivers/edac/mce_amd.c | 450 ++- trunk/drivers/edac/mce_amd.h | 14 +- trunk/drivers/edac/mce_amd_inj.c | 9 +- trunk/drivers/firewire/Kconfig | 2 +- trunk/drivers/firewire/core-cdev.c | 7 +- trunk/drivers/firewire/core-transaction.c | 58 +- trunk/drivers/firewire/core.h | 4 +- trunk/drivers/firewire/net.c | 47 +- trunk/drivers/firewire/nosy.c | 3 +- trunk/drivers/firewire/ohci.c | 672 ++-- trunk/drivers/gpu/drm/ttm/ttm_bo.c | 3 +- trunk/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c | 2 +- trunk/drivers/hid/Kconfig | 20 +- trunk/drivers/hid/Makefile | 14 +- trunk/drivers/hid/hid-3m-pct.c | 38 +- trunk/drivers/hid/hid-a4tech.c | 6 +- trunk/drivers/hid/hid-apple.c | 63 +- trunk/drivers/hid/hid-axff.c | 14 +- trunk/drivers/hid/hid-belkin.c | 4 +- trunk/drivers/hid/hid-cando.c | 2 +- trunk/drivers/hid/hid-cherry.c | 3 +- trunk/drivers/hid/hid-core.c | 122 +- trunk/drivers/hid/hid-cypress.c | 4 +- trunk/drivers/hid/hid-debug.c | 4 +- trunk/drivers/hid/hid-drff.c | 14 +- trunk/drivers/hid/hid-egalax.c | 133 +- trunk/drivers/hid/hid-elecom.c | 3 +- trunk/drivers/hid/hid-emsff.c | 161 + trunk/drivers/hid/hid-gaff.c | 13 +- trunk/drivers/hid/hid-ids.h | 14 + trunk/drivers/hid/hid-input.c | 18 +- trunk/drivers/hid/hid-kye.c | 4 +- trunk/drivers/hid/hid-lg.c | 15 +- trunk/drivers/hid/hid-lg2ff.c | 9 +- trunk/drivers/hid/hid-lg3ff.c | 9 +- trunk/drivers/hid/hid-lg4ff.c | 9 +- trunk/drivers/hid/hid-lgff.c | 8 +- trunk/drivers/hid/hid-magicmouse.c | 20 +- trunk/drivers/hid/hid-microsoft.c | 7 +- trunk/drivers/hid/hid-monterey.c | 3 +- trunk/drivers/hid/hid-mosart.c | 22 +- trunk/drivers/hid/hid-ntrig.c | 9 +- trunk/drivers/hid/hid-ortek.c | 3 +- trunk/drivers/hid/hid-petalynx.c | 7 +- trunk/drivers/hid/hid-picolcd.c | 58 +- trunk/drivers/hid/hid-pl.c | 16 +- trunk/drivers/hid/hid-prodikeys.c | 27 +- trunk/drivers/hid/hid-quanta.c | 2 +- trunk/drivers/hid/hid-roccat-kone.c | 404 +-- trunk/drivers/hid/hid-roccat-kone.h | 19 +- trunk/drivers/hid/hid-roccat-koneplus.c | 837 +++++ trunk/drivers/hid/hid-roccat-koneplus.h | 224 ++ trunk/drivers/hid/hid-roccat-pyra.c | 411 +-- trunk/drivers/hid/hid-roccat-pyra.h | 23 +- trunk/drivers/hid/hid-roccat.c | 53 +- trunk/drivers/hid/hid-roccat.h | 5 +- trunk/drivers/hid/hid-samsung.c | 8 +- trunk/drivers/hid/hid-sjoy.c | 16 +- trunk/drivers/hid/hid-sony.c | 11 +- trunk/drivers/hid/hid-stantum.c | 2 +- trunk/drivers/hid/hid-sunplus.c | 3 +- trunk/drivers/hid/hid-tmff.c | 27 +- trunk/drivers/hid/hid-topseed.c | 1 + trunk/drivers/hid/hid-wacom.c | 28 +- trunk/drivers/hid/hid-zpff.c | 11 +- trunk/drivers/hid/hid-zydacron.c | 11 +- trunk/drivers/hid/hidraw.c | 36 +- trunk/drivers/hid/usbhid/Makefile | 6 +- trunk/drivers/hid/usbhid/hid-core.c | 105 +- trunk/drivers/hid/usbhid/hid-pidff.c | 164 +- trunk/drivers/hid/usbhid/hid-quirks.c | 2 +- trunk/drivers/hid/usbhid/hiddev.c | 241 +- trunk/drivers/hid/usbhid/usbhid.h | 1 - trunk/drivers/hid/usbhid/usbkbd.c | 24 +- trunk/drivers/hwmon/Kconfig | 20 + trunk/drivers/hwmon/Makefile | 2 + trunk/drivers/hwmon/abituguru.c | 36 +- trunk/drivers/hwmon/abituguru3.c | 45 +- trunk/drivers/hwmon/adt7470.c | 4 +- trunk/drivers/hwmon/applesmc.c | 1632 ++++------ trunk/drivers/hwmon/asb100.c | 9 +- trunk/drivers/hwmon/asus_atk0110.c | 7 +- trunk/drivers/hwmon/coretemp.c | 11 +- trunk/drivers/hwmon/dme1737.c | 12 +- trunk/drivers/hwmon/ds620.c | 337 ++ trunk/drivers/hwmon/f71805f.c | 29 +- trunk/drivers/hwmon/f71882fg.c | 23 +- trunk/drivers/hwmon/hp_accel.c | 13 +- trunk/drivers/hwmon/hwmon-vid.c | 11 +- trunk/drivers/hwmon/hwmon.c | 4 +- trunk/drivers/hwmon/ibmaem.c | 4 +- trunk/drivers/hwmon/lis3lv02d.c | 23 +- trunk/drivers/hwmon/lm70.c | 5 +- trunk/drivers/hwmon/lm95241.c | 495 ++- trunk/drivers/hwmon/pcf8591.c | 5 +- trunk/drivers/hwmon/pkgtemp.c | 7 +- trunk/drivers/hwmon/sht21.c | 307 ++ trunk/drivers/hwmon/sis5595.c | 10 +- trunk/drivers/hwmon/smsc47b397.c | 13 +- trunk/drivers/hwmon/smsc47m1.c | 31 +- trunk/drivers/hwmon/via-cputemp.c | 35 +- trunk/drivers/hwmon/via686a.c | 10 +- trunk/drivers/hwmon/vt1211.c | 30 +- trunk/drivers/hwmon/vt8231.c | 10 +- trunk/drivers/hwmon/w83627ehf.c | 23 +- trunk/drivers/hwmon/w83627hf.c | 17 +- trunk/drivers/input/Makefile | 2 +- trunk/drivers/input/apm-power.c | 14 +- trunk/drivers/input/evbug.c | 18 +- trunk/drivers/input/evdev.c | 19 +- trunk/drivers/input/ff-core.c | 11 +- trunk/drivers/input/ff-memless.c | 31 +- trunk/drivers/input/gameport/gameport.c | 154 +- trunk/drivers/input/input-mt.c | 170 + trunk/drivers/input/input-polldev.c | 5 +- trunk/drivers/input/input.c | 91 +- trunk/drivers/input/joydev.c | 4 +- trunk/drivers/input/joystick/iforce/Makefile | 15 +- trunk/drivers/input/joystick/xpad.c | 123 +- trunk/drivers/input/keyboard/Kconfig | 19 +- trunk/drivers/input/keyboard/Makefile | 1 + trunk/drivers/input/keyboard/spear-keyboard.c | 344 +++ trunk/drivers/input/keyboard/tca6416-keypad.c | 13 +- trunk/drivers/input/misc/Kconfig | 24 + trunk/drivers/input/misc/Makefile | 2 + trunk/drivers/input/misc/cma3000_d0x.c | 398 +++ trunk/drivers/input/misc/cma3000_d0x.h | 42 + trunk/drivers/input/misc/cma3000_d0x_i2c.c | 143 + trunk/drivers/input/misc/pcf8574_keypad.c | 19 +- trunk/drivers/input/misc/uinput.c | 8 +- trunk/drivers/input/mouse/bcm5974.c | 40 + trunk/drivers/input/mouse/hgpk.c | 695 ++++- trunk/drivers/input/mouse/hgpk.h | 31 +- trunk/drivers/input/mouse/psmouse-base.c | 1 + trunk/drivers/input/mouse/synaptics.c | 129 +- trunk/drivers/input/mouse/synaptics.h | 3 + trunk/drivers/input/mousedev.c | 10 +- trunk/drivers/input/serio/ams_delta_serio.c | 1 - trunk/drivers/input/serio/ct82c710.c | 8 +- trunk/drivers/input/serio/hil_mlc.c | 5 + trunk/drivers/input/serio/hp_sdc_mlc.c | 18 +- trunk/drivers/input/serio/i8042-x86ia64io.h | 37 +- trunk/drivers/input/serio/i8042.c | 92 +- trunk/drivers/input/serio/i8042.h | 14 +- trunk/drivers/input/serio/ps2mult.c | 2 +- trunk/drivers/input/serio/serio.c | 155 +- trunk/drivers/input/tablet/wacom.h | 1 + trunk/drivers/input/tablet/wacom_wac.c | 33 +- trunk/drivers/input/tablet/wacom_wac.h | 4 - trunk/drivers/input/touchscreen/Kconfig | 22 +- trunk/drivers/input/touchscreen/Makefile | 1 + trunk/drivers/input/touchscreen/bu21013_ts.c | 2 +- trunk/drivers/input/touchscreen/qt602240_ts.c | 21 +- trunk/drivers/input/touchscreen/st1232.c | 274 ++ trunk/drivers/input/touchscreen/wacom_w8001.c | 71 +- trunk/drivers/input/xen-kbdfront.c | 10 +- trunk/drivers/isdn/capi/capidrv.c | 1 + trunk/drivers/isdn/capi/kcapi.c | 26 +- trunk/drivers/isdn/mISDN/hwchannel.c | 4 +- trunk/drivers/isdn/mISDN/l1oip_core.c | 2 + trunk/drivers/leds/leds-wm8350.c | 2 +- trunk/drivers/macintosh/ams/ams-core.c | 2 +- trunk/drivers/macintosh/mac_hid.c | 8 + trunk/drivers/macintosh/rack-meter.c | 4 +- trunk/drivers/media/dvb/dvb-core/dvb_net.c | 3 +- .../media/dvb/dvb-usb/dvb-usb-remote.c | 3 +- trunk/drivers/media/dvb/mantis/mantis_evm.c | 2 +- trunk/drivers/media/dvb/mantis/mantis_uart.c | 1 + trunk/drivers/media/video/bt8xx/bttv-driver.c | 9 + trunk/drivers/media/video/bt8xx/bttv-input.c | 5 +- trunk/drivers/media/video/cx18/cx18-driver.c | 8 + .../media/video/cx231xx/cx231xx-cards.c | 8 + .../media/video/cx23885/cx23885-input.c | 2 - trunk/drivers/media/video/cx88/cx88-mpeg.c | 8 + .../drivers/media/video/em28xx/em28xx-cards.c | 8 + .../drivers/media/video/em28xx/em28xx-input.c | 2 +- trunk/drivers/media/video/omap24xxcam.c | 6 +- .../media/video/saa7134/saa7134-core.c | 11 +- .../media/video/saa7134/saa7134-empress.c | 2 +- trunk/drivers/mfd/menelaus.c | 3 +- trunk/drivers/mfd/tps65010.c | 13 +- trunk/drivers/misc/eeprom/at24.c | 43 +- trunk/drivers/misc/ioc4.c | 29 +- trunk/drivers/mmc/core/core.c | 2 +- trunk/drivers/mmc/host/Kconfig | 4 +- trunk/drivers/mmc/host/omap.c | 24 +- trunk/drivers/mmc/host/omap_hsmmc.c | 2 +- trunk/drivers/mmc/host/sdhci-of-core.c | 4 +- trunk/drivers/mmc/host/sh_mmcif.c | 429 ++- trunk/drivers/mtd/Kconfig | 2 +- trunk/drivers/mtd/maps/Kconfig | 2 +- trunk/drivers/net/bonding/bonding.h | 1 - trunk/drivers/net/chelsio/my3126.c | 2 +- trunk/drivers/net/fs_enet/fs_enet-main.c | 1 + trunk/drivers/net/gianfar.c | 1 + trunk/drivers/net/ibm_newemac/core.c | 4 +- trunk/drivers/net/ucc_geth.c | 1 + trunk/drivers/net/wireless/zd1211rw/zd_mac.c | 3 +- trunk/drivers/net/xilinx_emaclite.c | 1 + trunk/drivers/of/Kconfig | 8 + trunk/drivers/of/Makefile | 1 + trunk/drivers/of/address.c | 54 +- trunk/drivers/of/fdt.c | 430 ++- trunk/drivers/of/of_mdio.c | 26 +- trunk/drivers/of/of_net.c | 48 + trunk/drivers/of/platform.c | 22 +- trunk/drivers/pci/hotplug/acpiphp.h | 1 - trunk/drivers/pci/hotplug/rpaphp_slot.c | 1 - trunk/drivers/power/ds2760_battery.c | 6 +- trunk/drivers/power/intel_mid_battery.c | 6 +- trunk/drivers/rtc/rtc-dev.c | 2 +- trunk/drivers/rtc/rtc-ds1305.c | 2 +- trunk/drivers/rtc/rtc-ds1374.c | 2 +- trunk/drivers/rtc/rtc-ds3232.c | 2 +- trunk/drivers/rtc/rtc-rx8025.c | 2 +- trunk/drivers/s390/block/Kconfig | 24 +- trunk/drivers/s390/block/dasd.c | 314 +- trunk/drivers/s390/block/dasd_3990_erp.c | 16 +- trunk/drivers/s390/block/dasd_devmap.c | 155 +- trunk/drivers/s390/block/dasd_diag.c | 3 + trunk/drivers/s390/block/dasd_eckd.c | 664 +++- trunk/drivers/s390/block/dasd_eckd.h | 17 +- trunk/drivers/s390/block/dasd_eer.c | 1 + trunk/drivers/s390/block/dasd_erp.c | 3 +- trunk/drivers/s390/block/dasd_fba.c | 21 +- trunk/drivers/s390/block/dasd_int.h | 35 +- trunk/drivers/s390/char/Kconfig | 69 +- trunk/drivers/s390/char/con3215.c | 2 + trunk/drivers/s390/char/raw3270.c | 2 + trunk/drivers/s390/char/sclp.c | 18 +- trunk/drivers/s390/char/sclp_config.c | 1 + trunk/drivers/s390/char/tape_3590.c | 18 +- trunk/drivers/s390/char/tape_block.c | 2 +- trunk/drivers/s390/char/tape_class.h | 1 - trunk/drivers/s390/char/tape_core.c | 2 + trunk/drivers/s390/char/vmur.c | 2 + trunk/drivers/s390/cio/ccwgroup.c | 78 +- trunk/drivers/s390/cio/chsc.c | 19 + trunk/drivers/s390/cio/chsc.h | 18 + trunk/drivers/s390/cio/cio.c | 2 +- trunk/drivers/s390/cio/css.c | 8 + trunk/drivers/s390/cio/device_ops.c | 40 + trunk/drivers/s390/cio/itcw.c | 62 +- trunk/drivers/s390/cio/qdio.h | 31 +- trunk/drivers/s390/cio/qdio_debug.c | 1 + trunk/drivers/s390/cio/qdio_main.c | 177 +- trunk/drivers/s390/cio/qdio_setup.c | 20 +- trunk/drivers/s390/cio/qdio_thinint.c | 56 +- trunk/drivers/s390/crypto/ap_bus.c | 67 +- trunk/drivers/s390/crypto/ap_bus.h | 2 + trunk/drivers/s390/crypto/zcrypt_api.c | 12 +- trunk/drivers/s390/crypto/zcrypt_api.h | 1 + trunk/drivers/s390/crypto/zcrypt_cex2a.c | 82 +- trunk/drivers/s390/crypto/zcrypt_cex2a.h | 25 + trunk/drivers/s390/crypto/zcrypt_pcica.c | 1 + trunk/drivers/s390/crypto/zcrypt_pcicc.c | 1 + trunk/drivers/s390/crypto/zcrypt_pcixcc.c | 17 +- trunk/drivers/s390/kvm/kvm_virtio.c | 3 + trunk/drivers/s390/net/Kconfig | 51 +- trunk/drivers/s390/net/claw.c | 2 + trunk/drivers/s390/net/ctcm_main.c | 2 + trunk/drivers/s390/net/lcs.c | 2 + trunk/drivers/s390/net/qeth_core_main.c | 2 + trunk/drivers/s390/scsi/zfcp_qdio.c | 2 + trunk/drivers/sbus/char/jsflash.c | 2 +- trunk/drivers/scsi/ipr.c | 2 +- trunk/drivers/scsi/libsas/sas_scsi_host.c | 3 +- trunk/drivers/serial/8250.c | 109 +- trunk/drivers/serial/8250_pci.c | 36 + trunk/drivers/serial/Kconfig | 27 +- trunk/drivers/serial/Makefile | 5 +- trunk/drivers/serial/apbuart.c | 57 +- trunk/drivers/serial/cpm_uart/cpm_uart.h | 6 - trunk/drivers/serial/cpm_uart/cpm_uart_core.c | 19 + trunk/drivers/serial/ifx6x60.c | 1406 +++++++++ trunk/drivers/serial/ifx6x60.h | 129 + trunk/drivers/serial/mpc52xx_uart.c | 6 +- trunk/drivers/serial/of_serial.c | 1 + trunk/drivers/serial/omap-serial.c | 38 +- trunk/drivers/serial/pch_uart.c | 1451 +++++++++ trunk/drivers/serial/serial_core.c | 10 +- trunk/drivers/serial/sh-sci.h | 7 + trunk/drivers/serial/vt8500_serial.c | 648 ++++ trunk/drivers/sh/clk/core.c | 1 - trunk/drivers/spi/Kconfig | 38 +- trunk/drivers/spi/Makefile | 6 +- trunk/drivers/spi/amba-pl022.c | 56 +- trunk/drivers/spi/davinci_spi.c | 1314 ++++---- trunk/drivers/spi/dw_spi.c | 52 +- trunk/drivers/spi/dw_spi_mid.c | 223 ++ trunk/drivers/spi/dw_spi_pci.c | 20 +- trunk/drivers/spi/mpc52xx_psc_spi.c | 35 +- trunk/drivers/spi/omap2_mcspi.c | 11 +- trunk/drivers/spi/pxa2xx_spi.c | 190 +- trunk/drivers/spi/pxa2xx_spi_pci.c | 201 ++ trunk/drivers/spi/spi.c | 92 +- trunk/drivers/spi/spi_imx.c | 32 +- trunk/drivers/spi/spi_nuc900.c | 2 +- trunk/drivers/spi/spi_topcliff_pch.c | 12 +- trunk/drivers/spi/xilinx_spi.c | 133 +- trunk/drivers/spi/xilinx_spi.h | 32 - trunk/drivers/spi/xilinx_spi_of.c | 133 - trunk/drivers/spi/xilinx_spi_pltfm.c | 102 - trunk/drivers/staging/lirc/lirc_serial.c | 4 +- trunk/drivers/staging/pohmelfs/inode.c | 4 +- trunk/drivers/staging/speakup/fakekey.c | 11 +- trunk/drivers/tty/n_gsm.c | 213 +- trunk/drivers/tty/tty_io.c | 52 +- trunk/drivers/tty/vt/vt.c | 23 +- trunk/drivers/usb/atm/cxacru.c | 2 +- trunk/drivers/usb/atm/speedtch.c | 28 +- trunk/drivers/usb/core/driver.c | 7 +- trunk/drivers/usb/gadget/u_ether.c | 4 +- trunk/drivers/usb/host/ohci-hcd.c | 3 +- trunk/drivers/usb/musb/musb_debugfs.c | 1 - trunk/drivers/usb/otg/isp1301_omap.c | 2 +- trunk/drivers/usb/serial/oti6858.c | 5 +- trunk/drivers/video/fb_defio.c | 2 +- trunk/drivers/video/omap/lcd_mipid.c | 2 +- trunk/drivers/video/xen-fbfront.c | 21 +- trunk/drivers/xen/events.c | 31 +- trunk/fs/buffer.c | 37 +- trunk/fs/cifs/cache.c | 16 +- trunk/fs/cifs/cifs_debug.c | 22 +- trunk/fs/cifs/cifs_spnego.c | 10 +- trunk/fs/cifs/cifsencrypt.c | 6 +- trunk/fs/cifs/cifsfs.c | 17 +- trunk/fs/cifs/cifsglob.h | 9 +- trunk/fs/cifs/cifssmb.c | 5 +- trunk/fs/cifs/connect.c | 462 ++- trunk/fs/cifs/dir.c | 6 +- trunk/fs/cifs/file.c | 233 +- trunk/fs/cifs/inode.c | 6 + trunk/fs/cifs/readdir.c | 1 + trunk/fs/cifs/sess.c | 135 +- trunk/fs/cifs/transport.c | 2 +- trunk/fs/compat_ioctl.c | 1 + trunk/fs/dlm/lowcomms.c | 63 +- trunk/fs/fuse/dev.c | 156 +- trunk/fs/fuse/dir.c | 53 +- trunk/fs/fuse/file.c | 66 +- trunk/fs/fuse/fuse_i.h | 27 +- trunk/fs/fuse/inode.c | 30 +- trunk/fs/gfs2/incore.h | 1 + trunk/fs/hfsplus/bfind.c | 6 +- trunk/fs/hfsplus/bitmap.c | 3 +- trunk/fs/hfsplus/bnode.c | 70 +- trunk/fs/hfsplus/brec.c | 28 +- trunk/fs/hfsplus/btree.c | 33 +- trunk/fs/hfsplus/catalog.c | 85 +- trunk/fs/hfsplus/dir.c | 37 +- trunk/fs/hfsplus/extents.c | 96 +- trunk/fs/hfsplus/hfsplus_fs.h | 126 +- trunk/fs/hfsplus/hfsplus_raw.h | 3 +- trunk/fs/hfsplus/inode.c | 89 +- trunk/fs/hfsplus/ioctl.c | 6 +- trunk/fs/hfsplus/options.c | 44 +- trunk/fs/hfsplus/part_tbl.c | 129 +- trunk/fs/hfsplus/super.c | 130 +- trunk/fs/hfsplus/unicode.c | 38 +- trunk/fs/hfsplus/wrapper.c | 178 +- trunk/fs/namei.c | 8 +- trunk/fs/ncpfs/inode.c | 7 +- trunk/fs/nfsd/nfs4state.c | 2 +- trunk/fs/nilfs2/bmap.c | 47 +- trunk/fs/nilfs2/btnode.c | 3 +- trunk/fs/nilfs2/dir.c | 3 +- trunk/fs/nilfs2/file.c | 1 + trunk/fs/nilfs2/ifile.c | 11 +- trunk/fs/nilfs2/inode.c | 180 +- trunk/fs/nilfs2/ioctl.c | 12 +- trunk/fs/nilfs2/mdt.c | 32 +- trunk/fs/nilfs2/namei.c | 1 + trunk/fs/nilfs2/nilfs.h | 13 +- trunk/fs/nilfs2/page.c | 86 +- trunk/fs/nilfs2/page.h | 3 + trunk/fs/nilfs2/recovery.c | 2 +- trunk/fs/nilfs2/sb.h | 8 - trunk/fs/nilfs2/segment.c | 43 +- trunk/fs/nilfs2/super.c | 30 +- trunk/fs/nilfs2/the_nilfs.c | 6 +- trunk/fs/nilfs2/the_nilfs.h | 3 - trunk/fs/ocfs2/cluster/heartbeat.c | 3 +- trunk/fs/ocfs2/cluster/quorum.c | 4 +- trunk/fs/proc/Makefile | 1 + trunk/fs/proc/proc_console.c | 114 + trunk/fs/sysfs/inode.c | 1 + trunk/fs/sysfs/sysfs.h | 1 + trunk/fs/xfs/xfs_mru_cache.c | 2 +- trunk/include/asm-generic/ioctls.h | 1 + trunk/include/asm-generic/irq_regs.h | 8 +- trunk/include/asm-generic/vmlinux.lds.h | 13 +- trunk/include/keys/encrypted-type.h | 29 + trunk/include/keys/trusted-type.h | 31 + trunk/include/linux/Kbuild | 9 +- trunk/include/linux/audit.h | 1 + trunk/include/linux/capability.h | 7 +- trunk/include/linux/console.h | 8 +- trunk/include/linux/dcache.h | 2 +- trunk/include/linux/dcookies.h | 2 +- trunk/include/linux/device.h | 5 +- trunk/include/linux/elevator.h | 12 +- trunk/include/linux/firewire.h | 2 +- trunk/include/linux/firmware-map.h | 1 - trunk/include/linux/flex_array.h | 2 +- trunk/include/linux/fs.h | 2 +- trunk/include/linux/fuse.h | 26 +- trunk/include/linux/hid.h | 75 +- trunk/include/linux/highmem.h | 13 +- trunk/include/linux/hrtimer.h | 1 - trunk/include/linux/i2c/ds620.h | 21 + trunk/include/linux/input.h | 38 +- trunk/include/linux/input/cma3000.h | 59 + trunk/include/linux/input/mt.h | 57 + trunk/include/linux/kernel.h | 3 + trunk/include/linux/kernel_stat.h | 2 +- trunk/include/linux/kprobes.h | 4 +- trunk/include/linux/libata.h | 6 +- trunk/include/linux/mmc/sh_mmcif.h | 60 +- trunk/include/linux/of_address.h | 6 +- trunk/include/linux/of_fdt.h | 18 + trunk/include/linux/of_net.h | 15 + trunk/include/linux/percpu.h | 205 +- trunk/include/linux/pipe_fs_i.h | 1 + trunk/include/linux/pm.h | 51 +- trunk/include/linux/pm_runtime.h | 13 + .../plat/ssp.h => include/linux/pxa2xx_ssp.h} | 39 +- trunk/include/linux/sched.h | 4 +- trunk/include/linux/security.h | 3 +- trunk/include/linux/serial_core.h | 7 +- trunk/include/linux/slab_def.h | 33 +- trunk/include/linux/slub_def.h | 55 +- trunk/include/linux/spi/dw_spi.h | 24 +- trunk/include/linux/spi/ifx_modem.h | 14 + trunk/include/linux/spi/pxa2xx_spi.h | 152 + trunk/include/linux/sunrpc/cache.h | 1 + trunk/include/linux/suspend.h | 4 +- trunk/include/linux/tpm.h | 4 + trunk/include/linux/tpm_command.h | 28 + trunk/include/linux/tty_driver.h | 9 +- trunk/include/linux/uinput.h | 1 + trunk/include/linux/workqueue.h | 4 +- trunk/include/linux/xattr.h | 4 + trunk/init/main.c | 3 - trunk/kernel/Makefile | 2 +- trunk/kernel/exit.c | 2 +- trunk/kernel/fork.c | 9 +- trunk/kernel/freezer.c | 9 +- trunk/kernel/hrtimer.c | 2 +- trunk/kernel/irq/manage.c | 2 +- trunk/kernel/irq_work.c | 18 +- trunk/kernel/kprobes.c | 8 +- trunk/kernel/kthread.c | 2 +- trunk/kernel/power/Makefile | 5 +- trunk/kernel/power/hibernate.c | 7 +- trunk/kernel/power/process.c | 8 +- trunk/kernel/power/suspend.c | 2 +- trunk/kernel/printk.c | 22 +- trunk/kernel/rcutree.c | 4 +- trunk/kernel/sched.c | 45 +- trunk/kernel/sched_autogroup.c | 8 +- trunk/kernel/softirq.c | 44 +- trunk/kernel/taskstats.c | 5 +- trunk/kernel/time/tick-common.c | 2 +- trunk/kernel/time/tick-oneshot.c | 4 +- trunk/kernel/trace/trace_selftest.c | 2 +- trunk/kernel/watchdog.c | 36 +- trunk/kernel/workqueue.c | 60 +- trunk/lib/hexdump.c | 16 + trunk/lib/percpu_counter.c | 8 +- trunk/mm/percpu.c | 8 +- trunk/mm/slab.c | 46 +- trunk/mm/slub.c | 30 +- trunk/mm/vmstat.c | 151 +- trunk/net/atm/lec.c | 2 +- trunk/net/core/netpoll.c | 2 +- trunk/net/dsa/dsa.c | 2 +- trunk/net/iucv/iucv.c | 2 + trunk/net/netfilter/ipvs/ip_vs_ctl.c | 2 +- trunk/net/sunrpc/xprtsock.c | 2 +- trunk/scripts/.gitignore | 1 + trunk/scripts/Makefile.lib | 23 + trunk/scripts/basic/fixdep.c | 119 +- trunk/scripts/checksyscalls.sh | 4 +- .../scripts/coccinelle/misc/doubleinit.cocci | 6 +- .../scripts/coccinelle/null/deref_null.cocci | 39 +- trunk/scripts/config | 13 +- trunk/scripts/dtc/Makefile | 3 +- trunk/scripts/dtc/checks.c | 105 +- trunk/scripts/dtc/dtc-lexer.l | 175 +- trunk/scripts/dtc/dtc-lexer.lex.c_shipped | 551 ++-- trunk/scripts/dtc/dtc-parser.tab.c_shipped | 892 +++--- trunk/scripts/dtc/dtc-parser.tab.h_shipped | 82 +- trunk/scripts/dtc/dtc-parser.y | 160 +- trunk/scripts/dtc/dtc.c | 57 +- trunk/scripts/dtc/dtc.h | 77 +- trunk/scripts/dtc/flattree.c | 192 +- trunk/scripts/dtc/fstree.c | 12 +- trunk/scripts/dtc/livetree.c | 345 ++- trunk/scripts/dtc/srcpos.c | 258 +- trunk/scripts/dtc/srcpos.h | 99 +- trunk/scripts/dtc/treesource.c | 48 +- trunk/scripts/dtc/util.c | 59 + trunk/scripts/dtc/util.h | 56 + trunk/scripts/dtc/version_gen.h | 2 +- trunk/scripts/genksyms/parse.c_shipped | 2 +- trunk/scripts/genksyms/parse.y | 2 +- trunk/scripts/headers.sh | 2 +- trunk/scripts/headers_check.pl | 6 +- trunk/scripts/headers_install.pl | 7 + trunk/scripts/kconfig/conf.c | 2 - trunk/scripts/kconfig/confdata.c | 27 +- trunk/scripts/kconfig/expr.c | 44 +- trunk/scripts/kconfig/expr.h | 3 +- trunk/scripts/kconfig/lkc.h | 7 +- trunk/scripts/kconfig/menu.c | 15 +- trunk/scripts/kconfig/nconf.c | 10 +- trunk/scripts/kconfig/symbol.c | 8 +- trunk/scripts/mkuboot.sh | 2 +- trunk/scripts/mod/modpost.c | 3 +- trunk/scripts/package/builddeb | 93 +- trunk/scripts/tags.sh | 2 +- trunk/security/Kconfig | 31 + trunk/security/apparmor/include/file.h | 3 +- trunk/security/apparmor/include/match.h | 1 + trunk/security/keys/Makefile | 2 + trunk/security/keys/encrypted_defined.c | 903 ++++++ trunk/security/keys/encrypted_defined.h | 54 + trunk/security/keys/trusted_defined.c | 1175 +++++++ trunk/security/keys/trusted_defined.h | 134 + trunk/security/selinux/hooks.c | 5 +- trunk/security/selinux/include/avc.h | 1 - trunk/security/selinux/include/classmap.h | 2 +- trunk/security/selinux/nlmsgtab.c | 2 + trunk/security/selinux/selinuxfs.c | 649 ++-- trunk/security/selinux/ss/conditional.c | 6 +- trunk/security/selinux/ss/mls.c | 25 +- trunk/security/selinux/ss/policydb.c | 701 ++--- trunk/security/selinux/ss/policydb.h | 19 +- trunk/security/selinux/ss/services.c | 425 ++- trunk/security/selinux/ss/sidtab.c | 39 +- trunk/security/selinux/ss/sidtab.h | 2 + trunk/security/smack/smack.h | 45 + trunk/security/smack/smack_access.c | 58 +- trunk/security/smack/smack_lsm.c | 354 ++- trunk/security/smack/smackfs.c | 41 +- trunk/sound/soc/pxa/pxa-ssp.c | 2 +- trunk/tools/perf/arch/s390/Makefile | 4 + trunk/tools/perf/arch/s390/util/dwarf-regs.c | 22 + .../vm => tools/slub}/slabinfo.c | 6 +- trunk/usr/gen_init_cpio.c | 20 +- 867 files changed, 37661 insertions(+), 15707 deletions(-) create mode 100644 trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus create mode 100644 trunk/Documentation/ABI/testing/sysfs-tty create mode 100644 trunk/Documentation/hwmon/ds620 create mode 100644 trunk/Documentation/hwmon/sht21 create mode 100644 trunk/Documentation/input/cma3000_d0x.txt create mode 100644 trunk/Documentation/keys-trusted-encrypted.txt create mode 100644 trunk/Documentation/powerpc/dts-bindings/eeprom.txt create mode 100644 trunk/Documentation/serial/serial-rs485.txt create mode 100644 trunk/arch/arm/configs/ag5evm_defconfig create mode 100644 trunk/arch/arm/configs/mackerel_defconfig create mode 100644 trunk/arch/arm/mach-msm/headsmp.S create mode 100644 trunk/arch/arm/mach-msm/hotplug.c create mode 100644 trunk/arch/arm/mach-msm/platsmp.c create mode 100644 trunk/arch/arm/mach-msm/scm-boot.c create mode 100644 trunk/arch/arm/mach-msm/scm-boot.h create mode 100644 trunk/arch/arm/mach-msm/scm.c create mode 100644 trunk/arch/arm/mach-msm/scm.h delete mode 100644 trunk/arch/arm/mach-pxa/include/mach/pxa2xx_spi.h create mode 100644 trunk/arch/arm/mach-shmobile/board-ag5evm.c create mode 100644 trunk/arch/arm/mach-shmobile/board-mackerel.c create mode 100644 trunk/arch/arm/mach-shmobile/clock-sh73a0.c create mode 100644 trunk/arch/arm/mach-shmobile/entry-gic.S create mode 100644 trunk/arch/arm/mach-shmobile/entry-intc.S create mode 100644 trunk/arch/arm/mach-shmobile/headsmp.S create mode 100644 trunk/arch/arm/mach-shmobile/hotplug.c create mode 100644 trunk/arch/arm/mach-shmobile/include/mach/head-mackerel.txt create mode 100644 trunk/arch/arm/mach-shmobile/include/mach/sh73a0.h create mode 100644 trunk/arch/arm/mach-shmobile/include/mach/smp.h create mode 100644 trunk/arch/arm/mach-shmobile/intc-sh73a0.c create mode 100644 trunk/arch/arm/mach-shmobile/localtimer.c create mode 100644 trunk/arch/arm/mach-shmobile/pfc-sh73a0.c create mode 100644 trunk/arch/arm/mach-shmobile/platsmp.c create mode 100644 trunk/arch/arm/mach-shmobile/setup-sh73a0.c create mode 100644 trunk/arch/arm/mach-shmobile/smp-sh73a0.c create mode 100644 trunk/arch/arm/mach-ux500/id.c create mode 100644 trunk/arch/arm/mach-ux500/include/mach/id.h create mode 100644 trunk/arch/arm/plat-spear/include/plat/keyboard.h create mode 100644 trunk/arch/powerpc/boot/dts/mpc5200b.dtsi create mode 100644 trunk/arch/s390/hypfs/hypfs_dbfs.c create mode 100644 trunk/drivers/ata/acard-ahci.c create mode 100644 trunk/drivers/char/hvc_dcc.c create mode 100644 trunk/drivers/hid/hid-emsff.c create mode 100644 trunk/drivers/hid/hid-roccat-koneplus.c create mode 100644 trunk/drivers/hid/hid-roccat-koneplus.h create mode 100644 trunk/drivers/hwmon/ds620.c create mode 100644 trunk/drivers/hwmon/sht21.c create mode 100644 trunk/drivers/input/input-mt.c create mode 100644 trunk/drivers/input/keyboard/spear-keyboard.c create mode 100644 trunk/drivers/input/misc/cma3000_d0x.c create mode 100644 trunk/drivers/input/misc/cma3000_d0x.h create mode 100644 trunk/drivers/input/misc/cma3000_d0x_i2c.c create mode 100644 trunk/drivers/input/touchscreen/st1232.c create mode 100644 trunk/drivers/of/of_net.c create mode 100644 trunk/drivers/serial/ifx6x60.c create mode 100644 trunk/drivers/serial/ifx6x60.h create mode 100644 trunk/drivers/serial/pch_uart.c create mode 100644 trunk/drivers/serial/vt8500_serial.c create mode 100644 trunk/drivers/spi/dw_spi_mid.c create mode 100644 trunk/drivers/spi/pxa2xx_spi_pci.c delete mode 100644 trunk/drivers/spi/xilinx_spi.h delete mode 100644 trunk/drivers/spi/xilinx_spi_of.c delete mode 100644 trunk/drivers/spi/xilinx_spi_pltfm.c create mode 100644 trunk/fs/proc/proc_console.c create mode 100644 trunk/include/keys/encrypted-type.h create mode 100644 trunk/include/keys/trusted-type.h create mode 100644 trunk/include/linux/i2c/ds620.h create mode 100644 trunk/include/linux/input/cma3000.h create mode 100644 trunk/include/linux/input/mt.h create mode 100644 trunk/include/linux/of_net.h rename trunk/{arch/arm/plat-pxa/include/plat/ssp.h => include/linux/pxa2xx_ssp.h} (90%) create mode 100644 trunk/include/linux/spi/ifx_modem.h create mode 100644 trunk/include/linux/spi/pxa2xx_spi.h create mode 100644 trunk/include/linux/tpm_command.h create mode 100644 trunk/scripts/dtc/util.c create mode 100644 trunk/scripts/dtc/util.h create mode 100644 trunk/security/keys/encrypted_defined.c create mode 100644 trunk/security/keys/encrypted_defined.h create mode 100644 trunk/security/keys/trusted_defined.c create mode 100644 trunk/security/keys/trusted_defined.h create mode 100644 trunk/tools/perf/arch/s390/Makefile create mode 100644 trunk/tools/perf/arch/s390/util/dwarf-regs.c rename trunk/{Documentation/vm => tools/slub}/slabinfo.c (99%) diff --git a/[refs] b/[refs] index 5a07c9c86744..92a625c9bbb8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1a7d946993aaf2a79e9c65abbe169a108e351bcb +refs/heads/master: 443e6221e465efa8efb752a8405a759ef1161af9 diff --git a/trunk/.mailmap b/trunk/.mailmap index a62e6a84fd1e..581fd39193a2 100644 --- a/trunk/.mailmap +++ b/trunk/.mailmap @@ -105,3 +105,4 @@ Uwe Kleine-König Uwe Kleine-König Uwe Kleine-König Valdis Kletnieks +Takashi YOSHII diff --git a/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-kone b/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-kone index 063bda7fe707..698b8081c473 100644 --- a/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-kone +++ b/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-kone @@ -1,4 +1,4 @@ -What: /sys/bus/usb/devices/-:./actual_dpi +What: /sys/bus/usb/devices/-:./::./kone/roccatkone/actual_dpi Date: March 2010 Contact: Stefan Achatz Description: It is possible to switch the dpi setting of the mouse with the @@ -17,13 +17,13 @@ Description: It is possible to switch the dpi setting of the mouse with the This file is readonly. -What: /sys/bus/usb/devices/-:./actual_profile +What: /sys/bus/usb/devices/-:./::./kone/roccatkone/actual_profile Date: March 2010 Contact: Stefan Achatz Description: When read, this file returns the number of the actual profile. This file is readonly. -What: /sys/bus/usb/devices/-:./firmware_version +What: /sys/bus/usb/devices/-:./::./kone/roccatkone/firmware_version Date: March 2010 Contact: Stefan Achatz Description: When read, this file returns the raw integer version number of the @@ -33,7 +33,7 @@ Description: When read, this file returns the raw integer version number of the left. E.g. a returned value of 138 means 1.38 This file is readonly. -What: /sys/bus/usb/devices/-:./profile[1-5] +What: /sys/bus/usb/devices/-:./::./kone/roccatkone/profile[1-5] Date: March 2010 Contact: Stefan Achatz Description: The mouse can store 5 profiles which can be switched by the @@ -48,7 +48,7 @@ Description: The mouse can store 5 profiles which can be switched by the stored in the profile doesn't need to fit the number of the store. -What: /sys/bus/usb/devices/-:./settings +What: /sys/bus/usb/devices/-:./::./kone/roccatkone/settings Date: March 2010 Contact: Stefan Achatz Description: When read, this file returns the settings stored in the mouse. @@ -58,7 +58,7 @@ Description: When read, this file returns the settings stored in the mouse. The data has to be 36 bytes long. The mouse will reject invalid data. -What: /sys/bus/usb/devices/-:./startup_profile +What: /sys/bus/usb/devices/-:./::./kone/roccatkone/startup_profile Date: March 2010 Contact: Stefan Achatz Description: The integer value of this attribute ranges from 1 to 5. @@ -67,7 +67,7 @@ Description: The integer value of this attribute ranges from 1 to 5. When written, this file sets the number of the startup profile and the mouse activates this profile immediately. -What: /sys/bus/usb/devices/-:./tcu +What: /sys/bus/usb/devices/-:./::./kone/roccatkone/tcu Date: March 2010 Contact: Stefan Achatz Description: The mouse has a "Tracking Control Unit" which lets the user @@ -78,7 +78,7 @@ Description: The mouse has a "Tracking Control Unit" which lets the user Writing 1 in this file will start the calibration which takes around 6 seconds to complete and activates the TCU. -What: /sys/bus/usb/devices/-:./weight +What: /sys/bus/usb/devices/-:./::./kone/roccatkone/weight Date: March 2010 Contact: Stefan Achatz Description: The mouse can be equipped with one of four supplied weights diff --git a/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus b/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus new file mode 100644 index 000000000000..0f9f30eb1742 --- /dev/null +++ b/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus @@ -0,0 +1,108 @@ +What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/actual_profile +Date: October 2010 +Contact: Stefan Achatz +Description: When read, this file returns the number of the actual profile in + range 0-4. + This file is readonly. + +What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/firmware_version +Date: October 2010 +Contact: Stefan Achatz +Description: When read, this file returns the raw integer version number of the + firmware reported by the mouse. Using the integer value eases + further usage in other programs. To receive the real version + number the decimal point has to be shifted 2 positions to the + left. E.g. a returned value of 121 means 1.21 + This file is readonly. + +What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/macro +Date: October 2010 +Contact: Stefan Achatz +Description: The mouse can store a macro with max 500 key/button strokes + internally. + When written, this file lets one set the sequence for a specific + button for a specific profile. Button and profile numbers are + included in written data. The data has to be 2082 bytes long. + This file is writeonly. + +What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/profile_buttons +Date: August 2010 +Contact: Stefan Achatz +Description: The mouse can store 5 profiles which can be switched by the + press of a button. A profile is split in settings and buttons. + profile_buttons holds informations about button layout. + When written, this file lets one write the respective profile + buttons back to the mouse. The data has to be 77 bytes long. + The mouse will reject invalid data. + Which profile to write is determined by the profile number + contained in the data. + This file is writeonly. + +What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/profile[1-5]_buttons +Date: August 2010 +Contact: Stefan Achatz +Description: The mouse can store 5 profiles which can be switched by the + press of a button. A profile is split in settings and buttons. + profile_buttons holds informations about button layout. + When read, these files return the respective profile buttons. + The returned data is 77 bytes in size. + This file is readonly. + +What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/profile_settings +Date: October 2010 +Contact: Stefan Achatz +Description: The mouse can store 5 profiles which can be switched by the + press of a button. A profile is split in settings and buttons. + profile_settings holds informations like resolution, sensitivity + and light effects. + When written, this file lets one write the respective profile + settings back to the mouse. The data has to be 43 bytes long. + The mouse will reject invalid data. + Which profile to write is determined by the profile number + contained in the data. + This file is writeonly. + +What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/profile[1-5]_settings +Date: August 2010 +Contact: Stefan Achatz +Description: The mouse can store 5 profiles which can be switched by the + press of a button. A profile is split in settings and buttons. + profile_settings holds informations like resolution, sensitivity + and light effects. + When read, these files return the respective profile settings. + The returned data is 43 bytes in size. + This file is readonly. + +What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/sensor +Date: October 2010 +Contact: Stefan Achatz +Description: The mouse has a tracking- and a distance-control-unit. These + can be activated/deactivated and the lift-off distance can be + set. The data has to be 6 bytes long. + This file is writeonly. + +What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/startup_profile +Date: October 2010 +Contact: Stefan Achatz +Description: The integer value of this attribute ranges from 0-4. + When read, this attribute returns the number of the profile + that's active when the mouse is powered on. + When written, this file sets the number of the startup profile + and the mouse activates this profile immediately. + +What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/tcu +Date: October 2010 +Contact: Stefan Achatz +Description: When written a calibration process for the tracking control unit + can be initiated/cancelled. + The data has to be 3 bytes long. + This file is writeonly. + +What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/tcu_image +Date: October 2010 +Contact: Stefan Achatz +Description: When read the mouse returns a 30x30 pixel image of the + sampled underground. This works only in the course of a + calibration process initiated with tcu. + The returned data is 1028 bytes in size. + This file is readonly. diff --git a/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra b/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra index ad1125b02ff4..1c37b823f142 100644 --- a/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra +++ b/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra @@ -1,4 +1,4 @@ -What: /sys/bus/usb/devices/-:./actual_cpi +What: /sys/bus/usb/devices/-:./::./pyra/roccatpyra/actual_cpi Date: August 2010 Contact: Stefan Achatz Description: It is possible to switch the cpi setting of the mouse with the @@ -14,14 +14,14 @@ Description: It is possible to switch the cpi setting of the mouse with the This file is readonly. -What: /sys/bus/usb/devices/-:./actual_profile +What: /sys/bus/usb/devices/-:./::./pyra/roccatpyra/actual_profile Date: August 2010 Contact: Stefan Achatz Description: When read, this file returns the number of the actual profile in range 0-4. This file is readonly. -What: /sys/bus/usb/devices/-:./firmware_version +What: /sys/bus/usb/devices/-:./::./pyra/roccatpyra/firmware_version Date: August 2010 Contact: Stefan Achatz Description: When read, this file returns the raw integer version number of the @@ -31,7 +31,7 @@ Description: When read, this file returns the raw integer version number of the left. E.g. a returned value of 138 means 1.38 This file is readonly. -What: /sys/bus/usb/devices/-:./profile_settings +What: /sys/bus/usb/devices/-:./::./pyra/roccatpyra/profile_settings Date: August 2010 Contact: Stefan Achatz Description: The mouse can store 5 profiles which can be switched by the @@ -45,7 +45,7 @@ Description: The mouse can store 5 profiles which can be switched by the contained in the data. This file is writeonly. -What: /sys/bus/usb/devices/-:./profile[1-5]_settings +What: /sys/bus/usb/devices/-:./::./pyra/roccatpyra/profile[1-5]_settings Date: August 2010 Contact: Stefan Achatz Description: The mouse can store 5 profiles which can be switched by the @@ -56,7 +56,7 @@ Description: The mouse can store 5 profiles which can be switched by the The returned data is 13 bytes in size. This file is readonly. -What: /sys/bus/usb/devices/-:./profile_buttons +What: /sys/bus/usb/devices/-:./::./pyra/roccatpyra/profile_buttons Date: August 2010 Contact: Stefan Achatz Description: The mouse can store 5 profiles which can be switched by the @@ -69,7 +69,7 @@ Description: The mouse can store 5 profiles which can be switched by the contained in the data. This file is writeonly. -What: /sys/bus/usb/devices/-:./profile[1-5]_buttons +What: /sys/bus/usb/devices/-:./::./pyra/roccatpyra/profile[1-5]_buttons Date: August 2010 Contact: Stefan Achatz Description: The mouse can store 5 profiles which can be switched by the @@ -79,7 +79,7 @@ Description: The mouse can store 5 profiles which can be switched by the The returned data is 19 bytes in size. This file is readonly. -What: /sys/bus/usb/devices/-:./startup_profile +What: /sys/bus/usb/devices/-:./::./pyra/roccatpyra/startup_profile Date: August 2010 Contact: Stefan Achatz Description: The integer value of this attribute ranges from 0-4. @@ -87,7 +87,7 @@ Description: The integer value of this attribute ranges from 0-4. that's active when the mouse is powered on. This file is readonly. -What: /sys/bus/usb/devices/-:./settings +What: /sys/bus/usb/devices/-:./::./pyra/roccatpyra/settings Date: August 2010 Contact: Stefan Achatz Description: When read, this file returns the settings stored in the mouse. diff --git a/trunk/Documentation/ABI/testing/sysfs-tty b/trunk/Documentation/ABI/testing/sysfs-tty new file mode 100644 index 000000000000..b138b663bf54 --- /dev/null +++ b/trunk/Documentation/ABI/testing/sysfs-tty @@ -0,0 +1,19 @@ +What: /sys/class/tty/console/active +Date: Nov 2010 +Contact: Kay Sievers +Description: + Shows the list of currently configured + console devices, like 'tty1 ttyS0'. + The last entry in the file is the active + device connected to /dev/console. + The file supports poll() to detect virtual + console switches. + +What: /sys/class/tty/tty0/active +Date: Nov 2010 +Contact: Kay Sievers +Description: + Shows the currently active virtual console + device, like 'tty1'. + The file supports poll() to detect virtual + console switches. diff --git a/trunk/Documentation/DocBook/device-drivers.tmpl b/trunk/Documentation/DocBook/device-drivers.tmpl index 22edcbb9ddaf..35447e081736 100644 --- a/trunk/Documentation/DocBook/device-drivers.tmpl +++ b/trunk/Documentation/DocBook/device-drivers.tmpl @@ -303,6 +303,10 @@ X!Idrivers/video/console/fonts.c !Edrivers/input/input.c !Edrivers/input/ff-core.c !Edrivers/input/ff-memless.c + + Multitouch Library +!Iinclude/linux/input/mt.h +!Edrivers/input/input-mt.c Polled input devices !Iinclude/linux/input-polldev.h diff --git a/trunk/Documentation/coccinelle.txt b/trunk/Documentation/coccinelle.txt index 4a276ea7001c..96b690348ba1 100644 --- a/trunk/Documentation/coccinelle.txt +++ b/trunk/Documentation/coccinelle.txt @@ -36,6 +36,10 @@ as a regular user, and install it with sudo make install +The semantic patches in the kernel will work best with Coccinelle version +0.2.4 or later. Using earlier versions may incur some parse errors in the +semantic patch code, but any results that are obtained should still be +correct. Using Coccinelle on the Linux kernel ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/trunk/Documentation/feature-removal-schedule.txt b/trunk/Documentation/feature-removal-schedule.txt index f2742e115b09..22f10818c2b3 100644 --- a/trunk/Documentation/feature-removal-schedule.txt +++ b/trunk/Documentation/feature-removal-schedule.txt @@ -566,3 +566,13 @@ Why: This field is deprecated. I2C device drivers shouldn't change their Who: Jean Delvare ---------------------------- + +What: cancel_rearming_delayed_work[queue]() +When: 2.6.39 + +Why: The functions have been superceded by cancel_delayed_work_sync() + quite some time ago. The conversion is trivial and there is no + in-kernel user left. +Who: Tejun Heo + +---------------------------- diff --git a/trunk/Documentation/filesystems/proc.txt b/trunk/Documentation/filesystems/proc.txt index e73df2722ff3..9471225212c4 100644 --- a/trunk/Documentation/filesystems/proc.txt +++ b/trunk/Documentation/filesystems/proc.txt @@ -1181,6 +1181,30 @@ Table 1-12: Files in /proc/fs/ext4/ mb_groups details of multiblock allocator buddy cache of free blocks .............................................................................. +2.0 /proc/consoles +------------------ +Shows registered system console lines. + +To see which character device lines are currently used for the system console +/dev/console, you may simply look into the file /proc/consoles: + + > cat /proc/consoles + tty0 -WU (ECp) 4:7 + ttyS0 -W- (Ep) 4:64 + +The columns are: + + device name of the device + operations R = can do read operations + W = can do write operations + U = can do unblank + flags E = it is enabled + C = it is prefered console + B = it is primary boot console + p = it is used for printk buffer + b = it is not a TTY but a Braille device + a = it is safe to use when cpu is offline + major:minor major and minor number of the device separated by a colon ------------------------------------------------------------------------------ Summary diff --git a/trunk/Documentation/hwmon/ds620 b/trunk/Documentation/hwmon/ds620 new file mode 100644 index 000000000000..1fbe3cd916cc --- /dev/null +++ b/trunk/Documentation/hwmon/ds620 @@ -0,0 +1,34 @@ +Kernel driver ds620 +=================== + +Supported chips: + * Dallas Semiconductor DS620 + Prefix: 'ds620' + Datasheet: Publicly available at the Dallas Semiconductor website + http://www.dalsemi.com/ + +Authors: + Roland Stigge + based on ds1621.c by + Christian W. Zuckschwerdt + +Description +----------- + +The DS620 is a (one instance) digital thermometer and thermostat. It has both +high and low temperature limits which can be user defined (i.e. programmed +into non-volatile on-chip registers). Temperature range is -55 degree Celsius +to +125. Between 0 and 70 degree Celsius, accuracy is 0.5 Kelvin. The value +returned via sysfs displays post decimal positions. + +The thermostat function works as follows: When configured via platform_data +(struct ds620_platform_data) .pomode == 0 (default), the thermostat output pin +PO is always low. If .pomode == 1, the thermostat is in PO_LOW mode. I.e., the +output pin PO becomes active when the temperature falls below temp1_min and +stays active until the temperature goes above temp1_max. + +Likewise, with .pomode == 2, the thermostat is in PO_HIGH mode. I.e., the PO +output pin becomes active when the temperature goes above temp1_max and stays +active until the temperature falls below temp1_min. + +The PO output pin of the DS620 operates active-low. diff --git a/trunk/Documentation/hwmon/sht21 b/trunk/Documentation/hwmon/sht21 new file mode 100644 index 000000000000..db17fda45c3e --- /dev/null +++ b/trunk/Documentation/hwmon/sht21 @@ -0,0 +1,49 @@ +Kernel driver sht21 +=================== + +Supported chips: + * Sensirion SHT21 + Prefix: 'sht21' + Addresses scanned: none + Datasheet: Publicly available at the Sensirion website + http://www.sensirion.com/en/pdf/product_information/Datasheet-humidity-sensor-SHT21.pdf + + * Sensirion SHT25 + Prefix: 'sht21' + Addresses scanned: none + Datasheet: Publicly available at the Sensirion website + http://www.sensirion.com/en/pdf/product_information/Datasheet-humidity-sensor-SHT25.pdf + +Author: + Urs Fleisch + +Description +----------- + +The SHT21 and SHT25 are humidity and temperature sensors in a DFN package of +only 3 x 3 mm footprint and 1.1 mm height. The difference between the two +devices is the higher level of precision of the SHT25 (1.8% relative humidity, +0.2 degree Celsius) compared with the SHT21 (2.0% relative humidity, +0.3 degree Celsius). + +The devices communicate with the I2C protocol. All sensors are set to the same +I2C address 0x40, so an entry with I2C_BOARD_INFO("sht21", 0x40) can be used +in the board setup code. + +sysfs-Interface +--------------- + +temp1_input - temperature input +humidity1_input - humidity input + +Notes +----- + +The driver uses the default resolution settings of 12 bit for humidity and 14 +bit for temperature, which results in typical measurement times of 22 ms for +humidity and 66 ms for temperature. To keep self heating below 0.1 degree +Celsius, the device should not be active for more than 10% of the time, +e.g. maximum two measurements per second at the given resolution. + +Different resolutions, the on-chip heater, using the CRC checksum and reading +the serial number are not supported yet. diff --git a/trunk/Documentation/hwmon/sysfs-interface b/trunk/Documentation/hwmon/sysfs-interface index 645699010551..c6559f153589 100644 --- a/trunk/Documentation/hwmon/sysfs-interface +++ b/trunk/Documentation/hwmon/sysfs-interface @@ -384,10 +384,20 @@ curr[1-*]_min Current min value. Unit: milliampere RW +curr[1-*]_lcrit Current critical low value + Unit: milliampere + RW + +curr[1-*]_crit Current critical high value. + Unit: milliampere + RW + curr[1-*]_input Current input value Unit: milliampere RO +Also see the Alarms section for status flags associated with currents. + ********* * Power * ********* @@ -450,13 +460,6 @@ power[1-*]_accuracy Accuracy of the power meter. Unit: Percent RO -power[1-*]_alarm 1 if the system is drawing more power than the - cap allows; 0 otherwise. A poll notification is - sent to this file when the power use exceeds the - cap. This file only appears if the cap is known - to be enforced by hardware. - RO - power[1-*]_cap If power use rises above this limit, the system should take action to reduce power use. A poll notification is sent to this file if the @@ -479,6 +482,20 @@ power[1-*]_cap_min Minimum cap that can be set. Unit: microWatt RO +power[1-*]_max Maximum power. + Unit: microWatt + RW + +power[1-*]_crit Critical maximum power. + If power rises to or above this limit, the + system is expected take drastic action to reduce + power consumption, such as a system shutdown or + a forced powerdown of some devices. + Unit: microWatt + RW + +Also see the Alarms section for status flags associated with power readings. + ********** * Energy * ********** @@ -488,6 +505,15 @@ energy[1-*]_input Cumulative energy use RO +************ +* Humidity * +************ + +humidity[1-*]_input Humidity + Unit: milli-percent (per cent mille, pcm) + RO + + ********** * Alarms * ********** @@ -501,6 +527,7 @@ implementation. in[0-*]_alarm curr[1-*]_alarm +power[1-*]_alarm fan[1-*]_alarm temp[1-*]_alarm Channel alarm @@ -512,12 +539,20 @@ OR in[0-*]_min_alarm in[0-*]_max_alarm +in[0-*]_lcrit_alarm +in[0-*]_crit_alarm curr[1-*]_min_alarm curr[1-*]_max_alarm +curr[1-*]_lcrit_alarm +curr[1-*]_crit_alarm +power[1-*]_cap_alarm +power[1-*]_max_alarm +power[1-*]_crit_alarm fan[1-*]_min_alarm fan[1-*]_max_alarm temp[1-*]_min_alarm temp[1-*]_max_alarm +temp[1-*]_lcrit_alarm temp[1-*]_crit_alarm temp[1-*]_emergency_alarm Limit alarm diff --git a/trunk/Documentation/input/cma3000_d0x.txt b/trunk/Documentation/input/cma3000_d0x.txt new file mode 100644 index 000000000000..29d088db4afd --- /dev/null +++ b/trunk/Documentation/input/cma3000_d0x.txt @@ -0,0 +1,115 @@ +Kernel driver for CMA3000-D0x +============================ + +Supported chips: +* VTI CMA3000-D0x +Datasheet: + CMA3000-D0X Product Family Specification 8281000A.02.pdf + + +Author: Hemanth V + + +Description +----------- +CMA3000 Tri-axis accelerometer supports Motion detect, Measurement and +Free fall modes. + +Motion Detect Mode: Its the low power mode where interrupts are generated only +when motion exceeds the defined thresholds. + +Measurement Mode: This mode is used to read the acceleration data on X,Y,Z +axis and supports 400, 100, 40 Hz sample frequency. + +Free fall Mode: This mode is intended to save system resources. + +Threshold values: Chip supports defining threshold values for above modes +which includes time and g value. Refer product specifications for more details. + +CMA3000 chip supports mutually exclusive I2C and SPI interfaces for +communication, currently the driver supports I2C based communication only. +Initial configuration for bus mode is set in non volatile memory and can later +be modified through bus interface command. + +Driver reports acceleration data through input subsystem. It generates ABS_MISC +event with value 1 when free fall is detected. + +Platform data need to be configured for initial default values. + +Platform Data +------------- +fuzz_x: Noise on X Axis + +fuzz_y: Noise on Y Axis + +fuzz_z: Noise on Z Axis + +g_range: G range in milli g i.e 2000 or 8000 + +mode: Default Operating mode + +mdthr: Motion detect g range threshold value + +mdfftmr: Motion detect and free fall time threshold value + +ffthr: Free fall g range threshold value + +Input Interface +-------------- +Input driver version is 1.0.0 +Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0 +Input device name: "cma3000-accelerometer" +Supported events: + Event type 0 (Sync) + Event type 3 (Absolute) + Event code 0 (X) + Value 47 + Min -8000 + Max 8000 + Fuzz 200 + Event code 1 (Y) + Value -28 + Min -8000 + Max 8000 + Fuzz 200 + Event code 2 (Z) + Value 905 + Min -8000 + Max 8000 + Fuzz 200 + Event code 40 (Misc) + Value 0 + Min 0 + Max 1 + Event type 4 (Misc) + + +Register/Platform parameters Description +---------------------------------------- + +mode: + 0: power down mode + 1: 100 Hz Measurement mode + 2: 400 Hz Measurement mode + 3: 40 Hz Measurement mode + 4: Motion Detect mode (default) + 5: 100 Hz Free fall mode + 6: 40 Hz Free fall mode + 7: Power off mode + +grange: + 2000: 2000 mg or 2G Range + 8000: 8000 mg or 8G Range + +mdthr: + X: X * 71mg (8G Range) + X: X * 18mg (2G Range) + +mdfftmr: + X: (X & 0x70) * 100 ms (MDTMR) + (X & 0x0F) * 2.5 ms (FFTMR 400 Hz) + (X & 0x0F) * 10 ms (FFTMR 100 Hz) + +ffthr: + X: (X >> 2) * 18mg (2G Range) + X: (X & 0x0F) * 71 mg (8G Range) diff --git a/trunk/Documentation/input/multi-touch-protocol.txt b/trunk/Documentation/input/multi-touch-protocol.txt index bdcba154b83e..71536e78406f 100644 --- a/trunk/Documentation/input/multi-touch-protocol.txt +++ b/trunk/Documentation/input/multi-touch-protocol.txt @@ -1,6 +1,6 @@ Multi-touch (MT) Protocol ------------------------- - Copyright (C) 2009 Henrik Rydberg + Copyright (C) 2009-2010 Henrik Rydberg Introduction @@ -161,19 +161,24 @@ against the glass. The inner region will increase, and in general, the ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR, which is always smaller than unity, is related to the contact pressure. For pressure-based devices, ABS_MT_PRESSURE may be used to provide the pressure on the contact area -instead. +instead. Devices capable of contact hovering can use ABS_MT_DISTANCE to +indicate the distance between the contact and the surface. In addition to the MAJOR parameters, the oval shape of the contact can be described by adding the MINOR parameters, such that MAJOR and MINOR are the major and minor axis of an ellipse. Finally, the orientation of the oval shape can be describe with the ORIENTATION parameter. +For type A devices, further specification of the touch shape is possible +via ABS_MT_BLOB_ID. + The ABS_MT_TOOL_TYPE may be used to specify whether the touching tool is a -contact or a pen or something else. Devices with more granular information -may specify general shapes as blobs, i.e., as a sequence of rectangular -shapes grouped together by an ABS_MT_BLOB_ID. Finally, for the few devices -that currently support it, the ABS_MT_TRACKING_ID event may be used to -report contact tracking from hardware [5]. +finger or a pen or something else. Finally, the ABS_MT_TRACKING_ID event +may be used to track identified contacts over time [5]. + +In the type B protocol, ABS_MT_TOOL_TYPE and ABS_MT_TRACKING_ID are +implicitly handled by input core; drivers should instead call +input_mt_report_slot_state(). Event Semantics @@ -213,6 +218,12 @@ The pressure, in arbitrary units, on the contact area. May be used instead of TOUCH and WIDTH for pressure-based devices or any device with a spatial signal intensity distribution. +ABS_MT_DISTANCE + +The distance, in surface units, between the contact and the surface. Zero +distance means the contact is touching the surface. A positive number means +the contact is hovering above the surface. + ABS_MT_ORIENTATION The orientation of the ellipse. The value should describe a signed quarter @@ -240,21 +251,24 @@ ABS_MT_TOOL_TYPE The type of approaching tool. A lot of kernel drivers cannot distinguish between different tool types, such as a finger or a pen. In such cases, the event should be omitted. The protocol currently supports MT_TOOL_FINGER and -MT_TOOL_PEN [2]. +MT_TOOL_PEN [2]. For type B devices, this event is handled by input core; +drivers should instead use input_mt_report_slot_state(). ABS_MT_BLOB_ID The BLOB_ID groups several packets together into one arbitrarily shaped -contact. This is a low-level anonymous grouping for type A devices, and +contact. The sequence of points forms a polygon which defines the shape of +the contact. This is a low-level anonymous grouping for type A devices, and should not be confused with the high-level trackingID [5]. Most type A devices do not have blob capability, so drivers can safely omit this event. ABS_MT_TRACKING_ID The TRACKING_ID identifies an initiated contact throughout its life cycle -[5]. This event is mandatory for type B devices. The value range of the -TRACKING_ID should be large enough to ensure unique identification of a -contact maintained over an extended period of time. +[5]. The value range of the TRACKING_ID should be large enough to ensure +unique identification of a contact maintained over an extended period of +time. For type B devices, this event is handled by input core; drivers +should instead use input_mt_report_slot_state(). Event Computation @@ -301,18 +315,19 @@ and with ORIENTATION, one can detect twisting of fingers. Notes ----- -In order to stay compatible with existing applications, the data -reported in a finger packet must not be recognized as single-touch -events. In addition, all finger data must bypass input filtering, -since subsequent events of the same type refer to different fingers. +In order to stay compatible with existing applications, the data reported +in a finger packet must not be recognized as single-touch events. + +For type A devices, all finger data bypasses input filtering, since +subsequent events of the same type refer to different fingers. -The first kernel driver to utilize the MT protocol is the bcm5974 driver, -where examples can be found. +For example usage of the type A protocol, see the bcm5974 driver. For +example usage of the type B protocol, see the hid-egalax driver. [1] With the extension ABS_MT_APPROACH_X and ABS_MT_APPROACH_Y, the difference between the contact position and the approaching tool position could be used to derive tilt. [2] The list can of course be extended. -[3] Multitouch X driver project: http://bitmath.org/code/multitouch/. +[3] The mtdev project: http://bitmath.org/code/mtdev/. [4] See the section on event computation. [5] See the section on finger tracking. diff --git a/trunk/Documentation/kbuild/kbuild.txt b/trunk/Documentation/kbuild/kbuild.txt index 1e5165aa9e4e..4a990317b84a 100644 --- a/trunk/Documentation/kbuild/kbuild.txt +++ b/trunk/Documentation/kbuild/kbuild.txt @@ -73,6 +73,14 @@ Specify the output directory when building the kernel. The output directory can also be specified using "O=...". Setting "O=..." takes precedence over KBUILD_OUTPUT. +KBUILD_DEBARCH +-------------------------------------------------- +For the deb-pkg target, allows overriding the normal heuristics deployed by +deb-pkg. Normally deb-pkg attempts to guess the right architecture based on +the UTS_MACHINE variable, and on some architectures also the kernel config. +The value of KBUILD_DEBARCH is assumed (not checked) to be a valid Debian +architecture. + ARCH -------------------------------------------------- Set ARCH to the architecture to be built. diff --git a/trunk/Documentation/kbuild/kconfig-language.txt b/trunk/Documentation/kbuild/kconfig-language.txt index 2fe93ca7c77c..b507d61fd41c 100644 --- a/trunk/Documentation/kbuild/kconfig-language.txt +++ b/trunk/Documentation/kbuild/kconfig-language.txt @@ -112,7 +112,6 @@ applicable everywhere (see syntax). (no prompts anywhere) and for symbols with no dependencies. That will limit the usefulness but on the other hand avoid the illegal configurations all over. - kconfig should one day warn about such things. - numerical ranges: "range" ["if" ] This allows to limit the range of possible input values for int @@ -268,7 +267,7 @@ separate list of options. choices: - "choice" + "choice" [symbol] "endchoice" @@ -282,6 +281,10 @@ single driver can be compiled/loaded into the kernel, but all drivers can be compiled as modules. A choice accepts another option "optional", which allows to set the choice to 'n' and no entry needs to be selected. +If no [symbol] is associated with a choice, then you can not have multiple +definitions of that choice. If a [symbol] is associated to the choice, +then you may define the same choice (ie. with the same entries) in another +place. comment: diff --git a/trunk/Documentation/kbuild/makefiles.txt b/trunk/Documentation/kbuild/makefiles.txt index 0ef00bd6e54d..86e3cd0d26a0 100644 --- a/trunk/Documentation/kbuild/makefiles.txt +++ b/trunk/Documentation/kbuild/makefiles.txt @@ -1136,6 +1136,21 @@ When kbuild executes, the following steps are followed (roughly): resulting in the target file being recompiled for no obvious reason. + dtc + Create flattend device tree blob object suitable for linking + into vmlinux. Device tree blobs linked into vmlinux are placed + in an init section in the image. Platform code *must* copy the + blob to non-init memory prior to calling unflatten_device_tree(). + + Example: + #arch/x86/platform/ce4100/Makefile + clean-files := *dtb.S + + DTC_FLAGS := -p 1024 + obj-y += foo.dtb.o + + $(obj)/%.dtb: $(src)/%.dts + $(call cmd,dtc) --- 6.7 Custom kbuild commands diff --git a/trunk/Documentation/keys-trusted-encrypted.txt b/trunk/Documentation/keys-trusted-encrypted.txt new file mode 100644 index 000000000000..8fb79bc1ac4b --- /dev/null +++ b/trunk/Documentation/keys-trusted-encrypted.txt @@ -0,0 +1,145 @@ + Trusted and Encrypted Keys + +Trusted and Encrypted Keys are two new key types added to the existing kernel +key ring service. Both of these new types are variable length symmetic keys, +and in both cases all keys are created in the kernel, and user space sees, +stores, and loads only encrypted blobs. Trusted Keys require the availability +of a Trusted Platform Module (TPM) chip for greater security, while Encrypted +Keys can be used on any system. All user level blobs, are displayed and loaded +in hex ascii for convenience, and are integrity verified. + +Trusted Keys use a TPM both to generate and to seal the keys. Keys are sealed +under a 2048 bit RSA key in the TPM, and optionally sealed to specified PCR +(integrity measurement) values, and only unsealed by the TPM, if PCRs and blob +integrity verifications match. A loaded Trusted Key can be updated with new +(future) PCR values, so keys are easily migrated to new pcr values, such as +when the kernel and initramfs are updated. The same key can have many saved +blobs under different PCR values, so multiple boots are easily supported. + +By default, trusted keys are sealed under the SRK, which has the default +authorization value (20 zeros). This can be set at takeownership time with the +trouser's utility: "tpm_takeownership -u -z". + +Usage: + keyctl add trusted name "new keylen [options]" ring + keyctl add trusted name "load hex_blob [pcrlock=pcrnum]" ring + keyctl update key "update [options]" + keyctl print keyid + + options: + keyhandle= ascii hex value of sealing key default 0x40000000 (SRK) + keyauth= ascii hex auth for sealing key default 0x00...i + (40 ascii zeros) + blobauth= ascii hex auth for sealed data default 0x00... + (40 ascii zeros) + blobauth= ascii hex auth for sealed data default 0x00... + (40 ascii zeros) + pcrinfo= ascii hex of PCR_INFO or PCR_INFO_LONG (no default) + pcrlock= pcr number to be extended to "lock" blob + migratable= 0|1 indicating permission to reseal to new PCR values, + default 1 (resealing allowed) + +"keyctl print" returns an ascii hex copy of the sealed key, which is in standard +TPM_STORED_DATA format. The key length for new keys are always in bytes. +Trusted Keys can be 32 - 128 bytes (256 - 1024 bits), the upper limit is to fit +within the 2048 bit SRK (RSA) keylength, with all necessary structure/padding. + +Encrypted keys do not depend on a TPM, and are faster, as they use AES for +encryption/decryption. New keys are created from kernel generated random +numbers, and are encrypted/decrypted using a specified 'master' key. The +'master' key can either be a trusted-key or user-key type. The main +disadvantage of encrypted keys is that if they are not rooted in a trusted key, +they are only as secure as the user key encrypting them. The master user key +should therefore be loaded in as secure a way as possible, preferably early in +boot. + +Usage: + keyctl add encrypted name "new key-type:master-key-name keylen" ring + keyctl add encrypted name "load hex_blob" ring + keyctl update keyid "update key-type:master-key-name" + +where 'key-type' is either 'trusted' or 'user'. + +Examples of trusted and encrypted key usage: + +Create and save a trusted key named "kmk" of length 32 bytes: + + $ keyctl add trusted kmk "new 32" @u + 440502848 + + $ keyctl show + Session Keyring + -3 --alswrv 500 500 keyring: _ses + 97833714 --alswrv 500 -1 \_ keyring: _uid.500 + 440502848 --alswrv 500 500 \_ trusted: kmk + + $ keyctl print 440502848 + 0101000000000000000001005d01b7e3f4a6be5709930f3b70a743cbb42e0cc95e18e915 + 3f60da455bbf1144ad12e4f92b452f966929f6105fd29ca28e4d4d5a031d068478bacb0b + 27351119f822911b0a11ba3d3498ba6a32e50dac7f32894dd890eb9ad578e4e292c83722 + a52e56a097e6a68b3f56f7a52ece0cdccba1eb62cad7d817f6dc58898b3ac15f36026fec + d568bd4a706cb60bb37be6d8f1240661199d640b66fb0fe3b079f97f450b9ef9c22c6d5d + dd379f0facd1cd020281dfa3c70ba21a3fa6fc2471dc6d13ecf8298b946f65345faa5ef0 + f1f8fff03ad0acb083725535636addb08d73dedb9832da198081e5deae84bfaf0409c22b + e4a8aea2b607ec96931e6f4d4fe563ba + + $ keyctl pipe 440502848 > kmk.blob + +Load a trusted key from the saved blob: + + $ keyctl add trusted kmk "load `cat kmk.blob`" @u + 268728824 + + $ keyctl print 268728824 + 0101000000000000000001005d01b7e3f4a6be5709930f3b70a743cbb42e0cc95e18e915 + 3f60da455bbf1144ad12e4f92b452f966929f6105fd29ca28e4d4d5a031d068478bacb0b + 27351119f822911b0a11ba3d3498ba6a32e50dac7f32894dd890eb9ad578e4e292c83722 + a52e56a097e6a68b3f56f7a52ece0cdccba1eb62cad7d817f6dc58898b3ac15f36026fec + d568bd4a706cb60bb37be6d8f1240661199d640b66fb0fe3b079f97f450b9ef9c22c6d5d + dd379f0facd1cd020281dfa3c70ba21a3fa6fc2471dc6d13ecf8298b946f65345faa5ef0 + f1f8fff03ad0acb083725535636addb08d73dedb9832da198081e5deae84bfaf0409c22b + e4a8aea2b607ec96931e6f4d4fe563ba + +Reseal a trusted key under new pcr values: + + $ keyctl update 268728824 "update pcrinfo=`cat pcr.blob`" + $ keyctl print 268728824 + 010100000000002c0002800093c35a09b70fff26e7a98ae786c641e678ec6ffb6b46d805 + 77c8a6377aed9d3219c6dfec4b23ffe3000001005d37d472ac8a44023fbb3d18583a4f73 + d3a076c0858f6f1dcaa39ea0f119911ff03f5406df4f7f27f41da8d7194f45c9f4e00f2e + df449f266253aa3f52e55c53de147773e00f0f9aca86c64d94c95382265968c354c5eab4 + 9638c5ae99c89de1e0997242edfb0b501744e11ff9762dfd951cffd93227cc513384e7e6 + e782c29435c7ec2edafaa2f4c1fe6e7a781b59549ff5296371b42133777dcc5b8b971610 + 94bc67ede19e43ddb9dc2baacad374a36feaf0314d700af0a65c164b7082401740e489c9 + 7ef6a24defe4846104209bf0c3eced7fa1a672ed5b125fc9d8cd88b476a658a4434644ef + df8ae9a178e9f83ba9f08d10fa47e4226b98b0702f06b3b8 + +Create and save an encrypted key "evm" using the above trusted key "kmk": + + $ keyctl add encrypted evm "new trusted:kmk 32" @u + 159771175 + + $ keyctl print 159771175 + trusted:kmk 32 2375725ad57798846a9bbd240de8906f006e66c03af53b1b382dbbc55 + be2a44616e4959430436dc4f2a7a9659aa60bb4652aeb2120f149ed197c564e024717c64 + 5972dcb82ab2dde83376d82b2e3c09ffc + + $ keyctl pipe 159771175 > evm.blob + +Load an encrypted key "evm" from saved blob: + + $ keyctl add encrypted evm "load `cat evm.blob`" @u + 831684262 + + $ keyctl print 831684262 + trusted:kmk 32 2375725ad57798846a9bbd240de8906f006e66c03af53b1b382dbbc55 + be2a44616e4959430436dc4f2a7a9659aa60bb4652aeb2120f149ed197c564e024717c64 + 5972dcb82ab2dde83376d82b2e3c09ffc + + +The initial consumer of trusted keys is EVM, which at boot time needs a high +quality symmetric key for HMAC protection of file metadata. The use of a +trusted key provides strong guarantees that the EVM key has not been +compromised by a user level problem, and when sealed to specific boot PCR +values, protects against boot and offline attacks. Other uses for trusted and +encrypted keys, such as for disk and file encryption are anticipated. diff --git a/trunk/Documentation/make/headers_install.txt b/trunk/Documentation/make/headers_install.txt index f2481cabffcb..951eb9f1e040 100644 --- a/trunk/Documentation/make/headers_install.txt +++ b/trunk/Documentation/make/headers_install.txt @@ -39,8 +39,9 @@ INSTALL_HDR_PATH indicates where to install the headers. It defaults to The command "make headers_install_all" exports headers for all architectures simultaneously. (This is mostly of interest to distribution maintainers, who create an architecture-independent tarball from the resulting include -directory.) Remember to provide the appropriate linux/asm directory via "mv" -or "ln -s" before building a C library with headers exported this way. +directory.) You also can use HDR_ARCH_LIST to specify list of architectures. +Remember to provide the appropriate linux/asm directory via "mv" or "ln -s" +before building a C library with headers exported this way. The kernel header export infrastructure is maintained by David Woodhouse . diff --git a/trunk/Documentation/power/drivers-testing.txt b/trunk/Documentation/power/drivers-testing.txt index 7f7a737f7f9f..638afdf4d6b8 100644 --- a/trunk/Documentation/power/drivers-testing.txt +++ b/trunk/Documentation/power/drivers-testing.txt @@ -23,10 +23,10 @@ Once you have resolved the suspend/resume-related problems with your test system without the new driver, you are ready to test it: a) Build the driver as a module, load it and try the test modes of hibernation - (see: Documents/power/basic-pm-debugging.txt, 1). + (see: Documentation/power/basic-pm-debugging.txt, 1). b) Load the driver and attempt to hibernate in the "reboot", "shutdown" and - "platform" modes (see: Documents/power/basic-pm-debugging.txt, 1). + "platform" modes (see: Documentation/power/basic-pm-debugging.txt, 1). c) Compile the driver directly into the kernel and try the test modes of hibernation. @@ -34,12 +34,12 @@ c) Compile the driver directly into the kernel and try the test modes of d) Attempt to hibernate with the driver compiled directly into the kernel in the "reboot", "shutdown" and "platform" modes. -e) Try the test modes of suspend (see: Documents/power/basic-pm-debugging.txt, +e) Try the test modes of suspend (see: Documentation/power/basic-pm-debugging.txt, 2). [As far as the STR tests are concerned, it should not matter whether or not the driver is built as a module.] f) Attempt to suspend to RAM using the s2ram tool with the driver loaded - (see: Documents/power/basic-pm-debugging.txt, 2). + (see: Documentation/power/basic-pm-debugging.txt, 2). Each of the above tests should be repeated several times and the STD tests should be mixed with the STR tests. If any of them fails, the driver cannot be diff --git a/trunk/Documentation/power/runtime_pm.txt b/trunk/Documentation/power/runtime_pm.txt index 41cc7b30d7dd..ffe55ffa540a 100644 --- a/trunk/Documentation/power/runtime_pm.txt +++ b/trunk/Documentation/power/runtime_pm.txt @@ -50,6 +50,15 @@ type's callbacks are not defined) of given device. The bus type, device type and device class callbacks are referred to as subsystem-level callbacks in what follows. +By default, the callbacks are always invoked in process context with interrupts +enabled. However, subsystems can use the pm_runtime_irq_safe() helper function +to tell the PM core that a device's ->runtime_suspend() and ->runtime_resume() +callbacks should be invoked in atomic context with interrupts disabled +(->runtime_idle() is still invoked the default way). This implies that these +callback routines must not block or sleep, but it also means that the +synchronous helper functions listed at the end of Section 4 can be used within +an interrupt handler or in an atomic context. + The subsystem-level suspend callback is _entirely_ _responsible_ for handling the suspend of the device as appropriate, which may, but need not include executing the device driver's own ->runtime_suspend() callback (from the @@ -237,6 +246,10 @@ defined in include/linux/pm.h: Section 8); it may be modified only by the pm_runtime_no_callbacks() helper function + unsigned int irq_safe; + - indicates that the ->runtime_suspend() and ->runtime_resume() callbacks + will be invoked with the spinlock held and interrupts disabled + unsigned int use_autosuspend; - indicates that the device's driver supports delayed autosuspend (see Section 9); it may be modified only by the @@ -344,6 +357,10 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h: - decrement the device's usage counter; if the result is 0 then run pm_runtime_idle(dev) and return its result + int pm_runtime_put_sync_suspend(struct device *dev); + - decrement the device's usage counter; if the result is 0 then run + pm_runtime_suspend(dev) and return its result + int pm_runtime_put_sync_autosuspend(struct device *dev); - decrement the device's usage counter; if the result is 0 then run pm_runtime_autosuspend(dev) and return its result @@ -397,6 +414,11 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h: PM attributes from /sys/devices/.../power (or prevent them from being added when the device is registered) + void pm_runtime_irq_safe(struct device *dev); + - set the power.irq_safe flag for the device, causing the runtime-PM + suspend and resume callbacks (but not the idle callback) to be invoked + with interrupts disabled + void pm_runtime_mark_last_busy(struct device *dev); - set the power.last_busy field to the current time @@ -438,6 +460,15 @@ pm_runtime_suspended() pm_runtime_mark_last_busy() pm_runtime_autosuspend_expiration() +If pm_runtime_irq_safe() has been called for a device then the following helper +functions may also be used in interrupt context: + +pm_runtime_suspend() +pm_runtime_autosuspend() +pm_runtime_resume() +pm_runtime_get_sync() +pm_runtime_put_sync_suspend() + 5. Run-time PM Initialization, Device Probing and Removal Initially, the run-time PM is disabled for all devices, which means that the diff --git a/trunk/Documentation/powerpc/dts-bindings/eeprom.txt b/trunk/Documentation/powerpc/dts-bindings/eeprom.txt new file mode 100644 index 000000000000..4342c10de1bf --- /dev/null +++ b/trunk/Documentation/powerpc/dts-bindings/eeprom.txt @@ -0,0 +1,28 @@ +EEPROMs (I2C) + +Required properties: + + - compatible : should be "," + If there is no specific driver for , a generic + driver based on is selected. Possible types are: + 24c00, 24c01, 24c02, 24c04, 24c08, 24c16, 24c32, 24c64, + 24c128, 24c256, 24c512, 24c1024, spd + + - reg : the I2C address of the EEPROM + +Optional properties: + + - pagesize : the length of the pagesize for writing. Please consult the + manual of your device, that value varies a lot. A wrong value + may result in data loss! If not specified, a safety value of + '1' is used which will be very slow. + + - read-only: this parameterless property disables writes to the eeprom + +Example: + +eeprom@52 { + compatible = "atmel,24c32"; + reg = <0x52>; + pagesize = <32>; +}; diff --git a/trunk/Documentation/serial/00-INDEX b/trunk/Documentation/serial/00-INDEX index 07dcdb0d2a36..e09468ad3cb1 100644 --- a/trunk/Documentation/serial/00-INDEX +++ b/trunk/Documentation/serial/00-INDEX @@ -14,6 +14,8 @@ riscom8.txt - notes on using the RISCom/8 multi-port serial driver. rocket.txt - info on the Comtrol RocketPort multiport serial driver. +serial-rs485.txt + - info about RS485 structures and support in the kernel. specialix.txt - info on hardware/driver for specialix IO8+ multiport serial card. stallion.txt diff --git a/trunk/Documentation/serial/serial-rs485.txt b/trunk/Documentation/serial/serial-rs485.txt new file mode 100644 index 000000000000..a4932387bbfb --- /dev/null +++ b/trunk/Documentation/serial/serial-rs485.txt @@ -0,0 +1,120 @@ + RS485 SERIAL COMMUNICATIONS + +1. INTRODUCTION + + EIA-485, also known as TIA/EIA-485 or RS-485, is a standard defining the + electrical characteristics of drivers and receivers for use in balanced + digital multipoint systems. + This standard is widely used for communications in industrial automation + because it can be used effectively over long distances and in electrically + noisy environments. + +2. HARDWARE-RELATED CONSIDERATIONS + + Some CPUs/UARTs (e.g., Atmel AT91 or 16C950 UART) contain a built-in + half-duplex mode capable of automatically controlling line direction by + toggling RTS or DTR signals. That can be used to control external + half-duplex hardware like an RS485 transceiver or any RS232-connected + half-duplex devices like some modems. + + For these microcontrollers, the Linux driver should be made capable of + working in both modes, and proper ioctls (see later) should be made + available at user-level to allow switching from one mode to the other, and + vice versa. + +3. DATA STRUCTURES ALREADY AVAILABLE IN THE KERNEL + + The Linux kernel provides the serial_rs485 structure (see [1]) to handle + RS485 communications. This data structure is used to set and configure RS485 + parameters in the platform data and in ioctls. + + Any driver for devices capable of working both as RS232 and RS485 should + provide at least the following ioctls: + + - TIOCSRS485 (typically associated with number 0x542F). This ioctl is used + to enable/disable RS485 mode from user-space + + - TIOCGRS485 (typically associated with number 0x542E). This ioctl is used + to get RS485 mode from kernel-space (i.e., driver) to user-space. + + In other words, the serial driver should contain a code similar to the next + one: + + static struct uart_ops atmel_pops = { + /* ... */ + .ioctl = handle_ioctl, + }; + + static int handle_ioctl(struct uart_port *port, + unsigned int cmd, + unsigned long arg) + { + struct serial_rs485 rs485conf; + + switch (cmd) { + case TIOCSRS485: + if (copy_from_user(&rs485conf, + (struct serial_rs485 *) arg, + sizeof(rs485conf))) + return -EFAULT; + + /* ... */ + break; + + case TIOCGRS485: + if (copy_to_user((struct serial_rs485 *) arg, + ..., + sizeof(rs485conf))) + return -EFAULT; + /* ... */ + break; + + /* ... */ + } + } + + +4. USAGE FROM USER-LEVEL + + From user-level, RS485 configuration can be get/set using the previous + ioctls. For instance, to set RS485 you can use the following code: + + #include + + /* Driver-specific ioctls: */ + #define TIOCGRS485 0x542E + #define TIOCSRS485 0x542F + + /* Open your specific device (e.g., /dev/mydevice): */ + int fd = open ("/dev/mydevice", O_RDWR); + if (fd < 0) { + /* Error handling. See errno. */ + } + + struct serial_rs485 rs485conf; + + /* Set RS485 mode: */ + rs485conf.flags |= SER_RS485_ENABLED; + + /* Set rts delay before send, if needed: */ + rs485conf.flags |= SER_RS485_RTS_BEFORE_SEND; + rs485conf.delay_rts_before_send = ...; + + /* Set rts delay after send, if needed: */ + rs485conf.flags |= SER_RS485_RTS_AFTER_SEND; + rs485conf.delay_rts_after_send = ...; + + if (ioctl (fd, TIOCSRS485, &rs485conf) < 0) { + /* Error handling. See errno. */ + } + + /* Use read() and write() syscalls here... */ + + /* Close the device when finished: */ + if (close (fd) < 0) { + /* Error handling. See errno. */ + } + +5. REFERENCES + + [1] include/linux/serial.h diff --git a/trunk/Documentation/spi/pxa2xx b/trunk/Documentation/spi/pxa2xx index 6bb916d57c95..68a4fe3818a1 100644 --- a/trunk/Documentation/spi/pxa2xx +++ b/trunk/Documentation/spi/pxa2xx @@ -19,7 +19,7 @@ Declaring PXA2xx Master Controllers ----------------------------------- Typically a SPI master is defined in the arch/.../mach-*/board-*.c as a "platform device". The master configuration is passed to the driver via a table -found in arch/arm/mach-pxa/include/mach/pxa2xx_spi.h: +found in include/linux/spi/pxa2xx_spi.h: struct pxa2xx_spi_master { enum pxa_ssp_type ssp_type; @@ -94,7 +94,7 @@ using the "spi_board_info" structure found in "linux/spi/spi.h". See Each slave device attached to the PXA must provide slave specific configuration information via the structure "pxa2xx_spi_chip" found in -"arch/arm/mach-pxa/include/mach/pxa2xx_spi.h". The pxa2xx_spi master controller driver +"include/linux/spi/pxa2xx_spi.h". The pxa2xx_spi master controller driver will uses the configuration whenever the driver communicates with the slave device. All fields are optional. diff --git a/trunk/Documentation/sysctl/kernel.txt b/trunk/Documentation/sysctl/kernel.txt index 209e1584c3dc..574067194f38 100644 --- a/trunk/Documentation/sysctl/kernel.txt +++ b/trunk/Documentation/sysctl/kernel.txt @@ -219,7 +219,7 @@ dmesg_restrict: This toggle indicates whether unprivileged users are prevented from using dmesg(8) to view messages from the kernel's log buffer. When dmesg_restrict is set to (0) there are no restrictions. When -dmesg_restrict is set set to (1), users must have CAP_SYS_ADMIN to use +dmesg_restrict is set set to (1), users must have CAP_SYSLOG to use dmesg(8). The kernel config option CONFIG_SECURITY_DMESG_RESTRICT sets the default diff --git a/trunk/Documentation/vm/Makefile b/trunk/Documentation/vm/Makefile index 9dcff328b964..3fa4d0668864 100644 --- a/trunk/Documentation/vm/Makefile +++ b/trunk/Documentation/vm/Makefile @@ -2,7 +2,7 @@ obj- := dummy.o # List of programs to build -hostprogs-y := slabinfo page-types hugepage-mmap hugepage-shm map_hugetlb +hostprogs-y := page-types hugepage-mmap hugepage-shm map_hugetlb # Tell kbuild to always build the programs always := $(hostprogs-y) diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index 9a7817591876..5181828012ce 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -3073,8 +3073,10 @@ F: drivers/input/ INPUT MULTITOUCH (MT) PROTOCOL M: Henrik Rydberg L: linux-input@vger.kernel.org +T: git git://git.kernel.org/pub/scm/linux/kernel/git/rydberg/input-mt.git S: Maintained F: Documentation/input/multi-touch-protocol.txt +F: drivers/input/input-mt.c K: \b(ABS|SYN)_MT_ INTEL IDLE DRIVER @@ -4274,6 +4276,7 @@ NILFS2 FILESYSTEM M: KONISHI Ryusuke L: linux-nilfs@vger.kernel.org W: http://www.nilfs.org/en/ +T: git git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2.git S: Supported F: Documentation/filesystems/nilfs2.txt F: fs/nilfs2/ @@ -4659,6 +4662,16 @@ S: Maintained F: crypto/pcrypt.c F: include/crypto/pcrypt.h +PER-CPU MEMORY ALLOCATOR +M: Tejun Heo +M: Christoph Lameter +L: linux-kernel@vger.kernel.org +T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git +S: Maintained +F: include/linux/percpu*.h +F: mm/percpu*.c +F: arch/*/include/asm/percpu.h + PER-TASK DELAY ACCOUNTING M: Balbir Singh S: Maintained @@ -5925,7 +5938,8 @@ F: drivers/net/tlan.* TOMOYO SECURITY MODULE M: Kentaro Takeda M: Tetsuo Handa -L: tomoyo-users-en@lists.sourceforge.jp (subscribers-only, for developers and users in English) +L: tomoyo-dev-en@lists.sourceforge.jp (subscribers-only, for developers in English) +L: tomoyo-users-en@lists.sourceforge.jp (subscribers-only, for users in English) L: tomoyo-dev@lists.sourceforge.jp (subscribers-only, for developers in Japanese) L: tomoyo-users@lists.sourceforge.jp (subscribers-only, for users in Japanese) W: http://tomoyo.sourceforge.jp/ diff --git a/trunk/Makefile b/trunk/Makefile index 74b25559f831..6a457690d10b 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -224,6 +224,7 @@ ifeq ($(ARCH),m68knommu) endif KCONFIG_CONFIG ?= .config +export KCONFIG_CONFIG # SHELL used by kbuild CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ diff --git a/trunk/arch/alpha/include/asm/ioctls.h b/trunk/arch/alpha/include/asm/ioctls.h index 59617c3c2be6..034b6cf5d9f3 100644 --- a/trunk/arch/alpha/include/asm/ioctls.h +++ b/trunk/arch/alpha/include/asm/ioctls.h @@ -92,6 +92,7 @@ #define TIOCGSID 0x5429 /* Return the session ID of FD */ #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */ #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ #define TIOCSERCONFIG 0x5453 diff --git a/trunk/arch/arm/Kconfig b/trunk/arch/arm/Kconfig index a3fb23be87f3..e2f801167593 100644 --- a/trunk/arch/arm/Kconfig +++ b/trunk/arch/arm/Kconfig @@ -632,9 +632,15 @@ config ARCH_MSM (clock and power control, etc). config ARCH_SHMOBILE - bool "Renesas SH-Mobile" + bool "Renesas SH-Mobile / R-Mobile" + select HAVE_CLK + select CLKDEV_LOOKUP + select GENERIC_CLOCKEVENTS + select NO_IOPORT + select SPARSE_IRQ + select MULTI_IRQ_HANDLER help - Support for Renesas's SH-Mobile ARM platforms + Support for Renesas's SH-Mobile and R-Mobile ARM platforms. config ARCH_RPC bool "RiscPC" @@ -1252,7 +1258,7 @@ config SMP depends on REALVIEW_EB_ARM11MP || REALVIEW_EB_A9MP || \ MACH_REALVIEW_PB11MP || MACH_REALVIEW_PBX || ARCH_OMAP4 || \ ARCH_S5PV310 || ARCH_TEGRA || ARCH_U8500 || ARCH_VEXPRESS_CA9X4 || \ - ARCH_MSM_SCORPIONMP + ARCH_MSM_SCORPIONMP || ARCH_SHMOBILE select USE_GENERIC_SMP_HELPERS select HAVE_ARM_SCU if !ARCH_MSM_SCORPIONMP help diff --git a/trunk/arch/arm/configs/ag5evm_defconfig b/trunk/arch/arm/configs/ag5evm_defconfig new file mode 100644 index 000000000000..2b9cf56db363 --- /dev/null +++ b/trunk/arch/arm/configs/ag5evm_defconfig @@ -0,0 +1,83 @@ +CONFIG_EXPERIMENTAL=y +CONFIG_SYSVIPC=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=16 +CONFIG_NAMESPACES=y +# CONFIG_UTS_NS is not set +# CONFIG_IPC_NS is not set +# CONFIG_USER_NS is not set +# CONFIG_PID_NS is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_EMBEDDED=y +CONFIG_SLAB=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_SHMOBILE=y +CONFIG_ARCH_SH73A0=y +CONFIG_MACH_AG5EVM=y +CONFIG_MEMORY_SIZE=0x10000000 +CONFIG_CPU_BPREDICT_DISABLE=y +CONFIG_ARM_ERRATA_430973=y +CONFIG_ARM_ERRATA_458693=y +CONFIG_NO_HZ=y +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +CONFIG_HIGHMEM=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=tty0 console=ttySC2,115200 earlyprintk=sh-sci.2,115200 ignore_loglevel" +CONFIG_CMDLINE_FORCE=y +CONFIG_KEXEC=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_PM=y +# CONFIG_SUSPEND is not set +CONFIG_PM_RUNTIME=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_INET_DIAG is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +# CONFIG_BLK_DEV is not set +CONFIG_NETDEVICES=y +CONFIG_NET_ETHERNET=y +CONFIG_SMSC911X=y +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set +# CONFIG_WLAN is not set +CONFIG_INPUT_SPARSEKMAP=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_NR_UARTS=9 +CONFIG_SERIAL_SH_SCI_CONSOLE=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +CONFIG_I2C_SH_MOBILE=y +# CONFIG_HWMON is not set +# CONFIG_MFD_SUPPORT is not set +CONFIG_FB=y +CONFIG_FB_SH_MOBILE_LCDC=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_HID_SUPPORT is not set +# CONFIG_USB_SUPPORT is not set +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +CONFIG_TMPFS=y +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_KERNEL=y +# CONFIG_FTRACE is not set diff --git a/trunk/arch/arm/configs/mackerel_defconfig b/trunk/arch/arm/configs/mackerel_defconfig new file mode 100644 index 000000000000..306a2e2d3622 --- /dev/null +++ b/trunk/arch/arm/configs/mackerel_defconfig @@ -0,0 +1,138 @@ +CONFIG_EXPERIMENTAL=y +CONFIG_SYSVIPC=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=16 +# CONFIG_UTS_NS is not set +# CONFIG_IPC_NS is not set +# CONFIG_USER_NS is not set +# CONFIG_PID_NS is not set +# CONFIG_NET_NS is not set +CONFIG_SLAB=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_SHMOBILE=y +CONFIG_ARCH_SH7372=y +CONFIG_MACH_MACKEREL=y +CONFIG_MEMORY_SIZE=0x10000000 +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +CONFIG_FORCE_MAX_ZONEORDER=15 +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=tty0, console=ttySC0,115200 earlyprintk=sh-sci.0,115200 root=/dev/nfs nfsroot=,tcp,v3 ip=dhcp memchunk.vpu=64m memchunk.veu0=8m memchunk.spu0=2m mem=240m" +CONFIG_KEXEC=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_PM=y +CONFIG_PM_RUNTIME=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +# CONFIG_FIRMWARE_IN_KERNEL is not set +CONFIG_MTD=y +CONFIG_MTD_CONCAT=y +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_ARM_INTEGRATOR=y +CONFIG_MTD_BLOCK2MTD=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +# CONFIG_SCSI_LOWLEVEL is not set +CONFIG_NETDEVICES=y +CONFIG_NET_ETHERNET=y +CONFIG_SMSC911X=y +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set +# CONFIG_WLAN is not set +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_NR_UARTS=8 +CONFIG_SERIAL_SH_SCI_CONSOLE=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_HWMON is not set +# CONFIG_MFD_SUPPORT is not set +CONFIG_FB=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_SH_MOBILE_LCDC=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_CLUT224 is not set +# CONFIG_HID_SUPPORT is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XIP=y +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_V4_1=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_737=y +CONFIG_NLS_CODEPAGE_775=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_CODEPAGE_852=y +CONFIG_NLS_CODEPAGE_855=y +CONFIG_NLS_CODEPAGE_857=y +CONFIG_NLS_CODEPAGE_860=y +CONFIG_NLS_CODEPAGE_861=y +CONFIG_NLS_CODEPAGE_862=y +CONFIG_NLS_CODEPAGE_863=y +CONFIG_NLS_CODEPAGE_864=y +CONFIG_NLS_CODEPAGE_865=y +CONFIG_NLS_CODEPAGE_866=y +CONFIG_NLS_CODEPAGE_869=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_2=y +CONFIG_NLS_ISO8859_3=y +CONFIG_NLS_ISO8859_4=y +CONFIG_NLS_ISO8859_5=y +CONFIG_NLS_ISO8859_6=y +CONFIG_NLS_ISO8859_7=y +CONFIG_NLS_ISO8859_9=y +CONFIG_NLS_ISO8859_13=y +CONFIG_NLS_ISO8859_14=y +CONFIG_NLS_ISO8859_15=y +CONFIG_NLS_KOI8_R=y +CONFIG_NLS_KOI8_U=y +CONFIG_NLS_UTF8=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ARM_UNWIND is not set +CONFIG_CRYPTO=y +CONFIG_CRYPTO_ANSI_CPRNG=y diff --git a/trunk/arch/arm/configs/u8500_defconfig b/trunk/arch/arm/configs/u8500_defconfig index be80f037f85a..52d86c4485bf 100644 --- a/trunk/arch/arm/configs/u8500_defconfig +++ b/trunk/arch/arm/configs/u8500_defconfig @@ -9,6 +9,10 @@ CONFIG_MODULE_UNLOAD=y # CONFIG_LBDAF is not set # CONFIG_BLK_DEV_BSG is not set CONFIG_ARCH_U8500=y +CONFIG_UX500_SOC_DB5500=y +CONFIG_UX500_SOC_DB8500=y +CONFIG_MACH_U8500=y +CONFIG_MACH_U5500=y CONFIG_SMP=y CONFIG_NR_CPUS=2 CONFIG_PREEMPT=y diff --git a/trunk/arch/arm/mach-davinci/dm355.c b/trunk/arch/arm/mach-davinci/dm355.c index 2652af124acd..a5f8a80c1f28 100644 --- a/trunk/arch/arm/mach-davinci/dm355.c +++ b/trunk/arch/arm/mach-davinci/dm355.c @@ -412,12 +412,7 @@ static struct resource dm355_spi0_resources[] = { static struct davinci_spi_platform_data dm355_spi0_pdata = { .version = SPI_VERSION_1, .num_chipselect = 2, - .clk_internal = 1, - .cs_hold = 1, - .intr_level = 0, - .poll_mode = 1, /* 0 -> interrupt mode 1-> polling mode */ - .c2tdelay = 0, - .t2cdelay = 0, + .cshold_bug = true, }; static struct platform_device dm355_spi0_device = { .name = "spi_davinci", diff --git a/trunk/arch/arm/mach-davinci/dm365.c b/trunk/arch/arm/mach-davinci/dm365.c index c466d710d3c1..02d2cc380df7 100644 --- a/trunk/arch/arm/mach-davinci/dm365.c +++ b/trunk/arch/arm/mach-davinci/dm365.c @@ -625,12 +625,6 @@ static u64 dm365_spi0_dma_mask = DMA_BIT_MASK(32); static struct davinci_spi_platform_data dm365_spi0_pdata = { .version = SPI_VERSION_1, .num_chipselect = 2, - .clk_internal = 1, - .cs_hold = 1, - .intr_level = 0, - .poll_mode = 1, /* 0 -> interrupt mode 1-> polling mode */ - .c2tdelay = 0, - .t2cdelay = 0, }; static struct resource dm365_spi0_resources[] = { diff --git a/trunk/arch/arm/mach-davinci/include/mach/spi.h b/trunk/arch/arm/mach-davinci/include/mach/spi.h index 910efbf099c0..38f4da5ca135 100644 --- a/trunk/arch/arm/mach-davinci/include/mach/spi.h +++ b/trunk/arch/arm/mach-davinci/include/mach/spi.h @@ -19,26 +19,66 @@ #ifndef __ARCH_ARM_DAVINCI_SPI_H #define __ARCH_ARM_DAVINCI_SPI_H +#define SPI_INTERN_CS 0xFF + enum { SPI_VERSION_1, /* For DM355/DM365/DM6467 */ SPI_VERSION_2, /* For DA8xx */ }; +/** + * davinci_spi_platform_data - Platform data for SPI master device on DaVinci + * + * @version: version of the SPI IP. Different DaVinci devices have slightly + * varying versions of the same IP. + * @num_chipselect: number of chipselects supported by this SPI master + * @intr_line: interrupt line used to connect the SPI IP to the ARM interrupt + * controller withn the SoC. Possible values are 0 and 1. + * @chip_sel: list of GPIOs which can act as chip-selects for the SPI. + * SPI_INTERN_CS denotes internal SPI chip-select. Not necessary + * to populate if all chip-selects are internal. + * @cshold_bug: set this to true if the SPI controller on your chip requires + * a write to CSHOLD bit in between transfers (like in DM355). + */ struct davinci_spi_platform_data { u8 version; u8 num_chipselect; + u8 intr_line; + u8 *chip_sel; + bool cshold_bug; +}; + +/** + * davinci_spi_config - Per-chip-select configuration for SPI slave devices + * + * @wdelay: amount of delay between transmissions. Measured in number of + * SPI module clocks. + * @odd_parity: polarity of parity flag at the end of transmit data stream. + * 0 - odd parity, 1 - even parity. + * @parity_enable: enable transmission of parity at end of each transmit + * data stream. + * @io_type: type of IO transfer. Choose between polled, interrupt and DMA. + * @timer_disable: disable chip-select timers (setup and hold) + * @c2tdelay: chip-select setup time. Measured in number of SPI module clocks. + * @t2cdelay: chip-select hold time. Measured in number of SPI module clocks. + * @t2edelay: transmit data finished to SPI ENAn pin inactive time. Measured + * in number of SPI clocks. + * @c2edelay: chip-select active to SPI ENAn signal active time. Measured in + * number of SPI clocks. + */ +struct davinci_spi_config { u8 wdelay; u8 odd_parity; u8 parity_enable; - u8 wait_enable; +#define SPI_IO_TYPE_INTR 0 +#define SPI_IO_TYPE_POLL 1 +#define SPI_IO_TYPE_DMA 2 + u8 io_type; u8 timer_disable; - u8 clk_internal; - u8 cs_hold; - u8 intr_level; - u8 poll_mode; - u8 use_dma; u8 c2tdelay; u8 t2cdelay; + u8 t2edelay; + u8 c2edelay; }; #endif /* __ARCH_ARM_DAVINCI_SPI_H */ diff --git a/trunk/arch/arm/mach-msm/Kconfig b/trunk/arch/arm/mach-msm/Kconfig index fae931ac2e56..5d3d9ade12fb 100644 --- a/trunk/arch/arm/mach-msm/Kconfig +++ b/trunk/arch/arm/mach-msm/Kconfig @@ -40,11 +40,13 @@ config ARCH_MSM8X60 bool "MSM8X60" select MACH_MSM8X60_SURF if (!MACH_MSM8X60_RUMI3 && !MACH_MSM8X60_SIM \ && !MACH_MSM8X60_FFA) + select ARCH_MSM_SCORPIONMP select ARM_GIC select CPU_V7 select MSM_V2_TLMM select MSM_GPIOMUX select IOMMU_API + select MSM_SCM if SMP endchoice @@ -172,4 +174,7 @@ config MSM_V2_TLMM config IOMMU_API bool + +config MSM_SCM + bool endif diff --git a/trunk/arch/arm/mach-msm/Makefile b/trunk/arch/arm/mach-msm/Makefile index 59646bbd6195..94195c190e13 100644 --- a/trunk/arch/arm/mach-msm/Makefile +++ b/trunk/arch/arm/mach-msm/Makefile @@ -18,6 +18,10 @@ obj-$(CONFIG_MSM_PROC_COMM) += clock.o obj-$(CONFIG_ARCH_QSD8X50) += sirc.o obj-$(CONFIG_MSM_SMD) += smd.o smd_debug.o obj-$(CONFIG_MSM_SMD) += last_radio_log.o +obj-$(CONFIG_MSM_SCM) += scm.o scm-boot.o + +obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o +obj-$(CONFIG_SMP) += headsmp.o platsmp.o obj-$(CONFIG_MACH_TROUT) += board-trout.o board-trout-gpio.o board-trout-mmc.o devices-msm7x00.o obj-$(CONFIG_MACH_TROUT) += board-trout.o board-trout-gpio.o board-trout-mmc.o board-trout-panel.o devices-msm7x00.o diff --git a/trunk/arch/arm/mach-msm/headsmp.S b/trunk/arch/arm/mach-msm/headsmp.S new file mode 100644 index 000000000000..d0c214338df9 --- /dev/null +++ b/trunk/arch/arm/mach-msm/headsmp.S @@ -0,0 +1,40 @@ +/* + * linux/arch/arm/mach-realview/headsmp.S + * + * Copyright (c) 2003 ARM Limited + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ +#include +#include + + __INIT + +/* + * MSM specific entry point for secondary CPUs. This provides + * a "holding pen" into which all secondary cores are held until we're + * ready for them to initialise. + */ +ENTRY(msm_secondary_startup) + mrc p15, 0, r0, c0, c0, 5 + and r0, r0, #15 + adr r4, 1f + ldmia r4, {r5, r6} + sub r4, r4, r5 + add r6, r6, r4 +pen: ldr r7, [r6] + cmp r7, r0 + bne pen + + /* + * we've been released from the holding pen: secondary_stack + * should now contain the SVC stack for this core + */ + b secondary_startup + + .align +1: .long . + .long pen_release diff --git a/trunk/arch/arm/mach-msm/hotplug.c b/trunk/arch/arm/mach-msm/hotplug.c new file mode 100644 index 000000000000..5a31f70dfb8e --- /dev/null +++ b/trunk/arch/arm/mach-msm/hotplug.c @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2002 ARM Ltd. + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ +#include +#include +#include + +#include + +extern volatile int pen_release; + +static inline void cpu_enter_lowpower(void) +{ + /* Just flush the cache. Changing the coherency is not yet + * available on msm. */ + flush_cache_all(); +} + +static inline void cpu_leave_lowpower(void) +{ +} + +static inline void platform_do_lowpower(unsigned int cpu) +{ + /* Just enter wfi for now. TODO: Properly shut off the cpu. */ + for (;;) { + /* + * here's the WFI + */ + asm("wfi" + : + : + : "memory", "cc"); + + if (pen_release == cpu) { + /* + * OK, proper wakeup, we're done + */ + break; + } + + /* + * getting here, means that we have come out of WFI without + * having been woken up - this shouldn't happen + * + * The trouble is, letting people know about this is not really + * possible, since we are currently running incoherently, and + * therefore cannot safely call printk() or anything else + */ + pr_debug("CPU%u: spurious wakeup call\n", cpu); + } +} + +int platform_cpu_kill(unsigned int cpu) +{ + return 1; +} + +/* + * platform-specific code to shutdown a CPU + * + * Called with IRQs disabled + */ +void platform_cpu_die(unsigned int cpu) +{ + /* + * we're ready for shutdown now, so do it + */ + cpu_enter_lowpower(); + platform_do_lowpower(cpu); + + /* + * bring this CPU back into the world of cache + * coherency, and then restore interrupts + */ + cpu_leave_lowpower(); +} + +int platform_cpu_disable(unsigned int cpu) +{ + /* + * we don't allow CPU 0 to be shutdown (it is still too special + * e.g. clock tick interrupts) + */ + return cpu == 0 ? -EPERM : 0; +} diff --git a/trunk/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h b/trunk/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h index 7c43a9bff1a9..a54e33b0882e 100644 --- a/trunk/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h +++ b/trunk/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h @@ -60,7 +60,11 @@ #define MSM_TMR_BASE IOMEM(0xF0200000) #define MSM_TMR_PHYS 0x02000000 -#define MSM_TMR_SIZE (SZ_1M) +#define MSM_TMR_SIZE SZ_4K + +#define MSM_TMR0_BASE IOMEM(0xF0201000) +#define MSM_TMR0_PHYS 0x02040000 +#define MSM_TMR0_SIZE SZ_4K #define MSM_GPT_BASE (MSM_TMR_BASE + 0x4) #define MSM_DGT_BASE (MSM_TMR_BASE + 0x24) diff --git a/trunk/arch/arm/mach-msm/io.c b/trunk/arch/arm/mach-msm/io.c index f912d7bf1889..800f327a7ecc 100644 --- a/trunk/arch/arm/mach-msm/io.c +++ b/trunk/arch/arm/mach-msm/io.c @@ -105,6 +105,7 @@ static struct map_desc msm8x60_io_desc[] __initdata = { MSM_DEVICE(QGIC_DIST), MSM_DEVICE(QGIC_CPU), MSM_DEVICE(TMR), + MSM_DEVICE(TMR0), MSM_DEVICE(ACC), MSM_DEVICE(GCC), }; diff --git a/trunk/arch/arm/mach-msm/platsmp.c b/trunk/arch/arm/mach-msm/platsmp.c new file mode 100644 index 000000000000..0f427bc94447 --- /dev/null +++ b/trunk/arch/arm/mach-msm/platsmp.c @@ -0,0 +1,166 @@ +/* + * Copyright (C) 2002 ARM Ltd. + * All Rights Reserved + * Copyright (c) 2010, Code Aurora Forum. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include "scm-boot.h" + +#define VDD_SC1_ARRAY_CLAMP_GFS_CTL 0x15A0 +#define SCSS_CPU1CORE_RESET 0xD80 +#define SCSS_DBG_STATUS_CORE_PWRDUP 0xE64 + +/* Mask for edge trigger PPIs except AVS_SVICINT and AVS_SVICINTSWDONE */ +#define GIC_PPI_EDGE_MASK 0xFFFFD7FF + +extern void msm_secondary_startup(void); +/* + * control for which core is the next to come out of the secondary + * boot "holding pen". + */ +volatile int pen_release = -1; + +static DEFINE_SPINLOCK(boot_lock); + +void __cpuinit platform_secondary_init(unsigned int cpu) +{ + /* Configure edge-triggered PPIs */ + writel(GIC_PPI_EDGE_MASK, MSM_QGIC_DIST_BASE + GIC_DIST_CONFIG + 4); + + /* + * if any interrupts are already enabled for the primary + * core (e.g. timer irq), then they will not have been enabled + * for us: do so + */ + gic_secondary_init(0); + + /* + * let the primary processor know we're out of the + * pen, then head off into the C entry point + */ + pen_release = -1; + smp_wmb(); + + /* + * Synchronise with the boot thread. + */ + spin_lock(&boot_lock); + spin_unlock(&boot_lock); +} + +static __cpuinit void prepare_cold_cpu(unsigned int cpu) +{ + int ret; + ret = scm_set_boot_addr(virt_to_phys(msm_secondary_startup), + SCM_FLAG_COLDBOOT_CPU1); + if (ret == 0) { + void *sc1_base_ptr; + sc1_base_ptr = ioremap_nocache(0x00902000, SZ_4K*2); + if (sc1_base_ptr) { + writel(0, sc1_base_ptr + VDD_SC1_ARRAY_CLAMP_GFS_CTL); + writel(0, sc1_base_ptr + SCSS_CPU1CORE_RESET); + writel(3, sc1_base_ptr + SCSS_DBG_STATUS_CORE_PWRDUP); + iounmap(sc1_base_ptr); + } + } else + printk(KERN_DEBUG "Failed to set secondary core boot " + "address\n"); +} + +int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) +{ + unsigned long timeout; + static int cold_boot_done; + + /* Only need to bring cpu out of reset this way once */ + if (cold_boot_done == false) { + prepare_cold_cpu(cpu); + cold_boot_done = true; + } + + /* + * set synchronisation state between this boot processor + * and the secondary one + */ + spin_lock(&boot_lock); + + /* + * The secondary processor is waiting to be released from + * the holding pen - release it, then wait for it to flag + * that it has been released by resetting pen_release. + * + * Note that "pen_release" is the hardware CPU ID, whereas + * "cpu" is Linux's internal ID. + */ + pen_release = cpu; + __cpuc_flush_dcache_area((void *)&pen_release, sizeof(pen_release)); + outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1)); + + /* + * Send the secondary CPU a soft interrupt, thereby causing + * the boot monitor to read the system wide flags register, + * and branch to the address found there. + */ + smp_cross_call(cpumask_of(cpu), 1); + + timeout = jiffies + (1 * HZ); + while (time_before(jiffies, timeout)) { + smp_rmb(); + if (pen_release == -1) + break; + + udelay(10); + } + + /* + * now the secondary core is starting up let it run its + * calibrations, then wait for it to finish + */ + spin_unlock(&boot_lock); + + return pen_release != -1 ? -ENOSYS : 0; +} + +/* + * Initialise the CPU possible map early - this describes the CPUs + * which may be present or become present in the system. The msm8x60 + * does not support the ARM SCU, so just set the possible cpu mask to + * NR_CPUS. + */ +void __init smp_init_cpus(void) +{ + unsigned int i; + + for (i = 0; i < NR_CPUS; i++) + set_cpu_possible(i, true); +} + +void __init platform_smp_prepare_cpus(unsigned int max_cpus) +{ + int i; + + /* + * Initialise the present map, which describes the set of CPUs + * actually populated at the present time. + */ + for (i = 0; i < max_cpus; i++) + set_cpu_present(i, true); +} diff --git a/trunk/arch/arm/mach-msm/scm-boot.c b/trunk/arch/arm/mach-msm/scm-boot.c new file mode 100644 index 000000000000..45cee3e469a5 --- /dev/null +++ b/trunk/arch/arm/mach-msm/scm-boot.c @@ -0,0 +1,39 @@ +/* Copyright (c) 2010, Code Aurora Forum. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include + +#include "scm.h" +#include "scm-boot.h" + +/* + * Set the cold/warm boot address for one of the CPU cores. + */ +int scm_set_boot_addr(phys_addr_t addr, int flags) +{ + struct { + unsigned int flags; + phys_addr_t addr; + } cmd; + + cmd.addr = addr; + cmd.flags = flags; + return scm_call(SCM_SVC_BOOT, SCM_BOOT_ADDR, + &cmd, sizeof(cmd), NULL, 0); +} +EXPORT_SYMBOL(scm_set_boot_addr); diff --git a/trunk/arch/arm/mach-msm/scm-boot.h b/trunk/arch/arm/mach-msm/scm-boot.h new file mode 100644 index 000000000000..68f9b6153d74 --- /dev/null +++ b/trunk/arch/arm/mach-msm/scm-boot.h @@ -0,0 +1,38 @@ +/* Copyright (c) 2010, Code Aurora Forum. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Code Aurora Forum, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __MACH_SCM_BOOT_H +#define __MACH_SCM_BOOT_H + +#define SCM_BOOT_ADDR 0x1 +#define SCM_FLAG_COLDBOOT_CPU1 0x1 +#define SCM_FLAG_WARMBOOT_CPU1 0x2 +#define SCM_FLAG_WARMBOOT_CPU0 0x4 + +int scm_set_boot_addr(phys_addr_t addr, int flags); + +#endif diff --git a/trunk/arch/arm/mach-msm/scm.c b/trunk/arch/arm/mach-msm/scm.c new file mode 100644 index 000000000000..f4b9bc90d6a7 --- /dev/null +++ b/trunk/arch/arm/mach-msm/scm.c @@ -0,0 +1,287 @@ +/* Copyright (c) 2010, Code Aurora Forum. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include "scm.h" + +/* Cache line size for msm8x60 */ +#define CACHELINESIZE 32 + +#define SCM_ENOMEM -5 +#define SCM_EOPNOTSUPP -4 +#define SCM_EINVAL_ADDR -3 +#define SCM_EINVAL_ARG -2 +#define SCM_ERROR -1 +#define SCM_INTERRUPTED 1 + +static DEFINE_MUTEX(scm_lock); + +/** + * struct scm_command - one SCM command buffer + * @len: total available memory for command and response + * @buf_offset: start of command buffer + * @resp_hdr_offset: start of response buffer + * @id: command to be executed + * @buf: buffer returned from scm_get_command_buffer() + * + * An SCM command is layed out in memory as follows: + * + * ------------------- <--- struct scm_command + * | command header | + * ------------------- <--- scm_get_command_buffer() + * | command buffer | + * ------------------- <--- struct scm_response and + * | response header | scm_command_to_response() + * ------------------- <--- scm_get_response_buffer() + * | response buffer | + * ------------------- + * + * There can be arbitrary padding between the headers and buffers so + * you should always use the appropriate scm_get_*_buffer() routines + * to access the buffers in a safe manner. + */ +struct scm_command { + u32 len; + u32 buf_offset; + u32 resp_hdr_offset; + u32 id; + u32 buf[0]; +}; + +/** + * struct scm_response - one SCM response buffer + * @len: total available memory for response + * @buf_offset: start of response data relative to start of scm_response + * @is_complete: indicates if the command has finished processing + */ +struct scm_response { + u32 len; + u32 buf_offset; + u32 is_complete; +}; + +/** + * alloc_scm_command() - Allocate an SCM command + * @cmd_size: size of the command buffer + * @resp_size: size of the response buffer + * + * Allocate an SCM command, including enough room for the command + * and response headers as well as the command and response buffers. + * + * Returns a valid &scm_command on success or %NULL if the allocation fails. + */ +static struct scm_command *alloc_scm_command(size_t cmd_size, size_t resp_size) +{ + struct scm_command *cmd; + size_t len = sizeof(*cmd) + sizeof(struct scm_response) + cmd_size + + resp_size; + + cmd = kzalloc(PAGE_ALIGN(len), GFP_KERNEL); + if (cmd) { + cmd->len = len; + cmd->buf_offset = offsetof(struct scm_command, buf); + cmd->resp_hdr_offset = cmd->buf_offset + cmd_size; + } + return cmd; +} + +/** + * free_scm_command() - Free an SCM command + * @cmd: command to free + * + * Free an SCM command. + */ +static inline void free_scm_command(struct scm_command *cmd) +{ + kfree(cmd); +} + +/** + * scm_command_to_response() - Get a pointer to a scm_response + * @cmd: command + * + * Returns a pointer to a response for a command. + */ +static inline struct scm_response *scm_command_to_response( + const struct scm_command *cmd) +{ + return (void *)cmd + cmd->resp_hdr_offset; +} + +/** + * scm_get_command_buffer() - Get a pointer to a command buffer + * @cmd: command + * + * Returns a pointer to the command buffer of a command. + */ +static inline void *scm_get_command_buffer(const struct scm_command *cmd) +{ + return (void *)cmd->buf; +} + +/** + * scm_get_response_buffer() - Get a pointer to a response buffer + * @rsp: response + * + * Returns a pointer to a response buffer of a response. + */ +static inline void *scm_get_response_buffer(const struct scm_response *rsp) +{ + return (void *)rsp + rsp->buf_offset; +} + +static int scm_remap_error(int err) +{ + switch (err) { + case SCM_ERROR: + return -EIO; + case SCM_EINVAL_ADDR: + case SCM_EINVAL_ARG: + return -EINVAL; + case SCM_EOPNOTSUPP: + return -EOPNOTSUPP; + case SCM_ENOMEM: + return -ENOMEM; + } + return -EINVAL; +} + +static u32 smc(u32 cmd_addr) +{ + int context_id; + register u32 r0 asm("r0") = 1; + register u32 r1 asm("r1") = (u32)&context_id; + register u32 r2 asm("r2") = cmd_addr; + asm( + __asmeq("%0", "r0") + __asmeq("%1", "r0") + __asmeq("%2", "r1") + __asmeq("%3", "r2") + "smc #0 @ switch to secure world\n" + : "=r" (r0) + : "r" (r0), "r" (r1), "r" (r2) + : "r3"); + return r0; +} + +static int __scm_call(const struct scm_command *cmd) +{ + int ret; + u32 cmd_addr = virt_to_phys(cmd); + + /* + * Flush the entire cache here so callers don't have to remember + * to flush the cache when passing physical addresses to the secure + * side in the buffer. + */ + flush_cache_all(); + do { + ret = smc(cmd_addr); + if (ret < 0) { + ret = scm_remap_error(ret); + break; + } + } while (ret == SCM_INTERRUPTED); + + return ret; +} + +/** + * scm_call() - Send an SCM command + * @svc_id: service identifier + * @cmd_id: command identifier + * @cmd_buf: command buffer + * @cmd_len: length of the command buffer + * @resp_buf: response buffer + * @resp_len: length of the response buffer + * + * Sends a command to the SCM and waits for the command to finish processing. + */ +int scm_call(u32 svc_id, u32 cmd_id, const void *cmd_buf, size_t cmd_len, + void *resp_buf, size_t resp_len) +{ + int ret; + struct scm_command *cmd; + struct scm_response *rsp; + + cmd = alloc_scm_command(cmd_len, resp_len); + if (!cmd) + return -ENOMEM; + + cmd->id = (svc_id << 10) | cmd_id; + if (cmd_buf) + memcpy(scm_get_command_buffer(cmd), cmd_buf, cmd_len); + + mutex_lock(&scm_lock); + ret = __scm_call(cmd); + mutex_unlock(&scm_lock); + if (ret) + goto out; + + rsp = scm_command_to_response(cmd); + do { + u32 start = (u32)rsp; + u32 end = (u32)scm_get_response_buffer(rsp) + resp_len; + start &= ~(CACHELINESIZE - 1); + while (start < end) { + asm ("mcr p15, 0, %0, c7, c6, 1" : : "r" (start) + : "memory"); + start += CACHELINESIZE; + } + } while (!rsp->is_complete); + + if (resp_buf) + memcpy(resp_buf, scm_get_response_buffer(rsp), resp_len); +out: + free_scm_command(cmd); + return ret; +} +EXPORT_SYMBOL(scm_call); + +u32 scm_get_version(void) +{ + int context_id; + static u32 version = -1; + register u32 r0 asm("r0") = 0x1 << 8; + register u32 r1 asm("r1") = (u32)&context_id; + + if (version != -1) + return version; + + mutex_lock(&scm_lock); + asm( + __asmeq("%0", "r1") + __asmeq("%1", "r0") + __asmeq("%2", "r1") + "smc #0 @ switch to secure world\n" + : "=r" (r1) + : "r" (r0), "r" (r1) + : "r2", "r3"); + version = r1; + mutex_unlock(&scm_lock); + + return version; +} +EXPORT_SYMBOL(scm_get_version); diff --git a/trunk/arch/arm/mach-msm/scm.h b/trunk/arch/arm/mach-msm/scm.h new file mode 100644 index 000000000000..261786be11c5 --- /dev/null +++ b/trunk/arch/arm/mach-msm/scm.h @@ -0,0 +1,41 @@ +/* Copyright (c) 2010, Code Aurora Forum. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Code Aurora Forum, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __MACH_SCM_H +#define __MACH_SCM_H + +#define SCM_SVC_BOOT 0x1 +#define SCM_SVC_PIL 0x2 + +extern int scm_call(u32 svc_id, u32 cmd_id, const void *cmd_buf, size_t cmd_len, + void *resp_buf, size_t resp_len); + +#define SCM_VERSION(major, minor) (((major) << 16) | ((minor) & 0xFF)) + +extern u32 scm_get_version(void); + +#endif diff --git a/trunk/arch/arm/mach-msm/timer.c b/trunk/arch/arm/mach-msm/timer.c index 595be7fea31a..c105d28b53e3 100644 --- a/trunk/arch/arm/mach-msm/timer.c +++ b/trunk/arch/arm/mach-msm/timer.c @@ -47,6 +47,19 @@ enum { #define GPT_HZ 32768 +enum timer_location { + LOCAL_TIMER = 0, + GLOBAL_TIMER = 1, +}; + +#ifdef MSM_TMR0_BASE +#define MSM_TMR_GLOBAL (MSM_TMR0_BASE - MSM_TMR_BASE) +#else +#define MSM_TMR_GLOBAL 0 +#endif + +#define MSM_GLOBAL_TIMER MSM_CLOCK_DGT + #if defined(CONFIG_ARCH_QSD8X50) #define DGT_HZ (19200000 / 4) /* 19.2 MHz / 4 by default */ #define MSM_DGT_SHIFT (0) @@ -65,49 +78,67 @@ struct msm_clock { void __iomem *regbase; uint32_t freq; uint32_t shift; + void __iomem *global_counter; + void __iomem *local_counter; +}; + +enum { + MSM_CLOCK_GPT, + MSM_CLOCK_DGT, + NR_TIMERS, }; + +static struct msm_clock msm_clocks[]; +static struct clock_event_device *local_clock_event; + static irqreturn_t msm_timer_interrupt(int irq, void *dev_id) { struct clock_event_device *evt = dev_id; + if (smp_processor_id() != 0) + evt = local_clock_event; + if (evt->event_handler == NULL) + return IRQ_HANDLED; evt->event_handler(evt); return IRQ_HANDLED; } -static cycle_t msm_gpt_read(struct clocksource *cs) +static cycle_t msm_read_timer_count(struct clocksource *cs) { - return readl(MSM_GPT_BASE + TIMER_COUNT_VAL); + struct msm_clock *clk = container_of(cs, struct msm_clock, clocksource); + + return readl(clk->global_counter); } -static cycle_t msm_dgt_read(struct clocksource *cs) +static struct msm_clock *clockevent_to_clock(struct clock_event_device *evt) { - return readl(MSM_DGT_BASE + TIMER_COUNT_VAL) >> MSM_DGT_SHIFT; +#ifdef CONFIG_SMP + int i; + for (i = 0; i < NR_TIMERS; i++) + if (evt == &(msm_clocks[i].clockevent)) + return &msm_clocks[i]; + return &msm_clocks[MSM_GLOBAL_TIMER]; +#else + return container_of(evt, struct msm_clock, clockevent); +#endif } static int msm_timer_set_next_event(unsigned long cycles, struct clock_event_device *evt) { - struct msm_clock *clock = container_of(evt, struct msm_clock, clockevent); - uint32_t now = readl(clock->regbase + TIMER_COUNT_VAL); + struct msm_clock *clock = clockevent_to_clock(evt); + uint32_t now = readl(clock->local_counter); uint32_t alarm = now + (cycles << clock->shift); - int late; writel(alarm, clock->regbase + TIMER_MATCH_VAL); - now = readl(clock->regbase + TIMER_COUNT_VAL); - late = now - alarm; - if (late >= (-2 << clock->shift) && late < DGT_HZ*5) { - printk(KERN_NOTICE "msm_timer_set_next_event(%lu) clock %s, " - "alarm already expired, now %x, alarm %x, late %d\n", - cycles, clock->clockevent.name, now, alarm, late); - return -ETIME; - } return 0; } static void msm_timer_set_mode(enum clock_event_mode mode, struct clock_event_device *evt) { - struct msm_clock *clock = container_of(evt, struct msm_clock, clockevent); + struct msm_clock *clock = clockevent_to_clock(evt); + switch (mode) { case CLOCK_EVT_MODE_RESUME: case CLOCK_EVT_MODE_PERIODIC: @@ -123,7 +154,7 @@ static void msm_timer_set_mode(enum clock_event_mode mode, } static struct msm_clock msm_clocks[] = { - { + [MSM_CLOCK_GPT] = { .clockevent = { .name = "gp_timer", .features = CLOCK_EVT_FEAT_ONESHOT, @@ -135,7 +166,7 @@ static struct msm_clock msm_clocks[] = { .clocksource = { .name = "gp_timer", .rating = 200, - .read = msm_gpt_read, + .read = msm_read_timer_count, .mask = CLOCKSOURCE_MASK(32), .flags = CLOCK_SOURCE_IS_CONTINUOUS, }, @@ -147,9 +178,12 @@ static struct msm_clock msm_clocks[] = { .irq = INT_GP_TIMER_EXP }, .regbase = MSM_GPT_BASE, - .freq = GPT_HZ + .freq = GPT_HZ, + .local_counter = MSM_GPT_BASE + TIMER_COUNT_VAL, + .global_counter = MSM_GPT_BASE + TIMER_COUNT_VAL + + MSM_TMR_GLOBAL, }, - { + [MSM_CLOCK_DGT] = { .clockevent = { .name = "dg_timer", .features = CLOCK_EVT_FEAT_ONESHOT, @@ -161,7 +195,7 @@ static struct msm_clock msm_clocks[] = { .clocksource = { .name = "dg_timer", .rating = 300, - .read = msm_dgt_read, + .read = msm_read_timer_count, .mask = CLOCKSOURCE_MASK((32 - MSM_DGT_SHIFT)), .flags = CLOCK_SOURCE_IS_CONTINUOUS, }, @@ -174,7 +208,10 @@ static struct msm_clock msm_clocks[] = { }, .regbase = MSM_DGT_BASE, .freq = DGT_HZ >> MSM_DGT_SHIFT, - .shift = MSM_DGT_SHIFT + .shift = MSM_DGT_SHIFT, + .local_counter = MSM_DGT_BASE + TIMER_COUNT_VAL, + .global_counter = MSM_DGT_BASE + TIMER_COUNT_VAL + + MSM_TMR_GLOBAL, } }; @@ -183,7 +220,7 @@ static void __init msm_timer_init(void) int i; int res; -#ifdef CONFIG_ARCH_MSM8X60 +#ifdef CONFIG_ARCH_MSM_SCORPIONMP writel(DGT_CLK_CTL_DIV_4, MSM_TMR_BASE + DGT_CLK_CTL); #endif @@ -217,6 +254,48 @@ static void __init msm_timer_init(void) } } +#ifdef CONFIG_SMP +void __cpuinit local_timer_setup(struct clock_event_device *evt) +{ + struct msm_clock *clock = &msm_clocks[MSM_GLOBAL_TIMER]; + + /* Use existing clock_event for cpu 0 */ + if (!smp_processor_id()) + return; + + writel(DGT_CLK_CTL_DIV_4, MSM_TMR_BASE + DGT_CLK_CTL); + + if (!local_clock_event) { + writel(0, clock->regbase + TIMER_ENABLE); + writel(0, clock->regbase + TIMER_CLEAR); + writel(~0, clock->regbase + TIMER_MATCH_VAL); + } + evt->irq = clock->irq.irq; + evt->name = "local_timer"; + evt->features = CLOCK_EVT_FEAT_ONESHOT; + evt->rating = clock->clockevent.rating; + evt->set_mode = msm_timer_set_mode; + evt->set_next_event = msm_timer_set_next_event; + evt->shift = clock->clockevent.shift; + evt->mult = div_sc(clock->freq, NSEC_PER_SEC, evt->shift); + evt->max_delta_ns = + clockevent_delta2ns(0xf0000000 >> clock->shift, evt); + evt->min_delta_ns = clockevent_delta2ns(4, evt); + + local_clock_event = evt; + + gic_enable_ppi(clock->irq.irq); + + clockevents_register_device(evt); +} + +inline int local_timer_ack(void) +{ + return 1; +} + +#endif + struct sys_timer msm_timer = { .init = msm_timer_init }; diff --git a/trunk/arch/arm/mach-pxa/cm-x255.c b/trunk/arch/arm/mach-pxa/cm-x255.c index f1a7703d771b..93f59f877fc6 100644 --- a/trunk/arch/arm/mach-pxa/cm-x255.c +++ b/trunk/arch/arm/mach-pxa/cm-x255.c @@ -17,13 +17,13 @@ #include #include +#include #include #include #include #include -#include #include "generic.h" diff --git a/trunk/arch/arm/mach-pxa/cm-x270.c b/trunk/arch/arm/mach-pxa/cm-x270.c index a9926bb75922..b88d601a8090 100644 --- a/trunk/arch/arm/mach-pxa/cm-x270.c +++ b/trunk/arch/arm/mach-pxa/cm-x270.c @@ -19,12 +19,12 @@ #include