From 415b85847839cbbb56024573bd89c6451ec5932d Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Wed, 25 May 2011 17:00:17 -0700 Subject: [PATCH] --- yaml --- r: 251663 b: refs/heads/master c: 3f5785ec31adcb7cafa9135087297a38d9698cf8 h: refs/heads/master i: 251661: 9cc6d170a4a2f1ada13e2ef5c1139824d063397b 251659: e1891d84b734e725928e8284e12144777414043f 251655: 16b8c0b64e8c9f617ac29f2f363172fdb36f8b49 251647: 810ff7812b9c683cf4597d22234ce801675a5395 v: v3 --- [refs] | 2 +- trunk/.gitignore | 1 + trunk/.mailmap | 1 + trunk/CREDITS | 8 + trunk/Documentation/ABI/testing/sysfs-block | 64 + trunk/Documentation/ABI/testing/sysfs-bus-pci | 9 + trunk/Documentation/ABI/testing/sysfs-ptp | 98 + trunk/Documentation/DocBook/.gitignore | 1 + trunk/Documentation/DocBook/Makefile | 2 +- trunk/Documentation/DocBook/dvb/dvbapi.xml | 8 + .../Documentation/DocBook/dvb/dvbproperty.xml | 405 +- .../Documentation/DocBook/dvb/frontend.h.xml | 20 +- .../Documentation/DocBook/media-entities.tmpl | 2 + .../Documentation/DocBook/v4l/pixfmt-m420.xml | 147 + .../Documentation/DocBook/v4l/pixfmt-y10b.xml | 43 + trunk/Documentation/DocBook/v4l/pixfmt.xml | 2 + .../DocBook/v4l/subdev-formats.xml | 46 + .../Documentation/DocBook/v4l/videodev2.h.xml | 4 + trunk/Documentation/HOWTO | 2 +- trunk/Documentation/IRQ-affinity.txt | 17 +- trunk/Documentation/SubmittingPatches | 9 +- trunk/Documentation/blockdev/cciss.txt | 15 + trunk/Documentation/cachetlb.txt | 2 +- .../devicetree/bindings/net/fsl-tsec-phy.txt | 54 + trunk/Documentation/dontdiff | 58 +- .../feature-removal-schedule.txt | 23 + trunk/Documentation/filesystems/9p.txt | 29 +- trunk/Documentation/filesystems/proc.txt | 11 +- trunk/Documentation/filesystems/ubifs.txt | 26 +- trunk/Documentation/hwmon/emc6w201 | 42 + trunk/Documentation/hwmon/f71882fg | 4 + trunk/Documentation/hwmon/fam15h_power | 37 + trunk/Documentation/hwmon/k10temp | 3 +- trunk/Documentation/hwmon/max6650 | 21 +- trunk/Documentation/i2c/busses/i2c-i801 | 1 + trunk/Documentation/i2c/writing-clients | 2 +- trunk/Documentation/input/elantech.txt | 123 +- trunk/Documentation/input/rotary-encoder.txt | 13 + trunk/Documentation/ioctl/ioctl-number.txt | 3 +- trunk/Documentation/kbuild/kbuild.txt | 13 + .../Documentation/kbuild/kconfig-language.txt | 32 +- trunk/Documentation/kbuild/kconfig.txt | 5 - trunk/Documentation/kbuild/makefiles.txt | 53 + trunk/Documentation/kernel-parameters.txt | 7 +- trunk/Documentation/lockstat.txt | 2 +- trunk/Documentation/mmc/00-INDEX | 2 + trunk/Documentation/mmc/mmc-dev-attrs.txt | 10 + trunk/Documentation/mmc/mmc-dev-parts.txt | 27 + trunk/Documentation/pti/pti_intel_mid.txt | 99 + trunk/Documentation/ptp/ptp.txt | 89 + trunk/Documentation/ptp/testptp.c | 381 + trunk/Documentation/ptp/testptp.mk | 33 + trunk/Documentation/sysctl/fs.txt | 7 - trunk/Documentation/usb/callbacks.txt | 8 +- trunk/Documentation/usb/linux-cdc-acm.inf | 4 +- trunk/Documentation/usb/linux.inf | 6 +- trunk/Documentation/vgaarbiter.txt | 20 +- .../Documentation/video4linux/CARDLIST.em28xx | 2 +- trunk/Documentation/video4linux/Zoran | 1 - trunk/Documentation/video4linux/gspca.txt | 1 + trunk/Documentation/video4linux/uvcvideo.txt | 239 + .../virtual/uml/UserModeLinux-HOWTO.txt | 10 + trunk/Documentation/vm/locking | 2 +- trunk/MAINTAINERS | 53 +- trunk/Makefile | 67 +- trunk/arch/Kconfig | 3 + trunk/arch/alpha/Kconfig | 4 + trunk/arch/alpha/include/asm/gpio.h | 55 + trunk/arch/alpha/include/asm/smp.h | 2 - trunk/arch/alpha/kernel/process.c | 2 +- trunk/arch/alpha/kernel/setup.c | 2 +- trunk/arch/alpha/kernel/smp.c | 7 +- trunk/arch/alpha/kernel/sys_dp264.c | 2 +- trunk/arch/alpha/kernel/sys_titan.c | 13 +- trunk/arch/alpha/kernel/vmlinux.lds.S | 2 +- trunk/arch/alpha/mm/init.c | 2 - trunk/arch/alpha/mm/numa.c | 1 + trunk/arch/arm/Kconfig | 89 +- trunk/arch/arm/Kconfig.debug | 7 - trunk/arch/arm/Makefile | 7 +- trunk/arch/arm/boot/compressed/Makefile | 17 +- trunk/arch/arm/boot/compressed/decompress.c | 4 +- trunk/arch/arm/boot/compressed/head.S | 46 +- trunk/arch/arm/boot/compressed/misc.c | 24 +- trunk/arch/arm/common/gic.c | 84 +- trunk/arch/arm/common/sa1111.c | 8 - trunk/arch/arm/common/timer-sp.c | 82 +- trunk/arch/arm/configs/dove_defconfig | 12 +- trunk/arch/arm/configs/mx1_defconfig | 1 + trunk/arch/arm/configs/mx51_defconfig | 2 +- trunk/arch/arm/configs/mxs_defconfig | 129 + trunk/arch/arm/configs/ns9xxx_defconfig | 56 - trunk/arch/arm/configs/realview-smp_defconfig | 2 +- trunk/arch/arm/configs/realview_defconfig | 2 +- trunk/arch/arm/configs/spear310_defconfig | 52 - trunk/arch/arm/configs/spear320_defconfig | 52 - ...{spear300_defconfig => spear3xx_defconfig} | 4 +- ...{spear600_defconfig => spear6xx_defconfig} | 2 +- trunk/arch/arm/configs/stmp378x_defconfig | 128 - trunk/arch/arm/configs/stmp37xx_defconfig | 108 - trunk/arch/arm/configs/versatile_defconfig | 2 +- trunk/arch/arm/include/asm/dma.h | 4 +- trunk/arch/arm/include/asm/elf.h | 1 + trunk/arch/arm/include/asm/futex.h | 137 +- .../arch/arm/include/asm/hardware/timer-sp.h | 4 +- trunk/arch/arm/include/asm/memory.h | 10 +- trunk/arch/arm/include/asm/ptrace.h | 6 + trunk/arch/arm/include/asm/sizes.h | 42 +- trunk/arch/arm/include/asm/smp.h | 12 +- trunk/arch/arm/include/asm/spinlock.h | 2 + trunk/arch/arm/include/asm/tlb.h | 53 +- trunk/arch/arm/kernel/perf_event.c | 5 - trunk/arch/arm/kernel/ptrace.c | 348 +- trunk/arch/arm/kernel/setup.c | 13 +- trunk/arch/arm/kernel/smp.c | 7 + trunk/arch/arm/kernel/vmlinux.lds.S | 2 +- trunk/arch/arm/mach-bcmring/arch.c | 1 + trunk/arch/arm/mach-bcmring/core.c | 227 +- trunk/arch/arm/mach-bcmring/core.h | 1 + .../arm/mach-davinci/include/mach/memory.h | 18 +- .../mach-davinci/include/mach/uncompress.h | 5 +- trunk/arch/arm/mach-davinci/irq.c | 93 +- trunk/arch/arm/mach-dove/common.c | 616 +- trunk/arch/arm/mach-dove/mpp.c | 134 +- trunk/arch/arm/mach-dove/mpp.h | 362 +- trunk/arch/arm/mach-ep93xx/gpio.c | 24 - trunk/arch/arm/mach-exynos4/Kconfig | 1 + trunk/arch/arm/mach-exynos4/Makefile | 2 + trunk/arch/arm/mach-exynos4/cpu.c | 7 +- .../arch/arm/mach-exynos4/include/mach/map.h | 4 + .../arm/mach-exynos4/include/mach/regs-pmu.h | 3 + .../mach-exynos4/include/mach/regs-usb-phy.h | 64 + .../arch/arm/mach-exynos4/include/mach/smp.h | 19 - trunk/arch/arm/mach-exynos4/irq-combiner.c | 6 +- trunk/arch/arm/mach-exynos4/mach-nuri.c | 16 + trunk/arch/arm/mach-exynos4/platsmp.c | 5 +- trunk/arch/arm/mach-exynos4/usb-phy.c | 136 + .../arm/mach-gemini/include/mach/uncompress.h | 2 +- .../arch/arm/mach-h720x/include/mach/memory.h | 3 +- trunk/arch/arm/mach-imx/Kconfig | 286 + trunk/arch/arm/mach-imx/Makefile | 38 +- trunk/arch/arm/mach-imx/Makefile.boot | 4 + trunk/arch/arm/mach-imx/cache-l2x0.c | 56 + .../arm/{mach-mx3 => mach-imx}/clock-imx31.c | 3 +- .../arm/{mach-mx3 => mach-imx}/clock-imx35.c | 1 - .../{mach-mx3/cpu.c => mach-imx/cpu-imx31.c} | 38 +- trunk/arch/arm/mach-imx/cpu-imx35.c | 44 + .../crm_regs.h => mach-imx/crmregs-imx31.h} | 0 trunk/arch/arm/mach-imx/devices-imx1.h | 8 +- trunk/arch/arm/mach-imx/devices-imx21.h | 22 +- trunk/arch/arm/mach-imx/devices-imx25.h | 35 +- trunk/arch/arm/mach-imx/devices-imx27.h | 30 +- .../{mach-mx3 => mach-imx}/devices-imx31.h | 36 +- .../{mach-mx3 => mach-imx}/devices-imx35.h | 37 +- .../arm/{mach-mx3 => mach-imx}/ehci-imx31.c | 1 - .../arm/{mach-mx3 => mach-imx}/ehci-imx35.c | 1 - .../arm/mach-imx/eukrea_mbimx27-baseboard.c | 1 - .../arm/mach-imx/eukrea_mbimxsd25-baseboard.c | 17 +- .../eukrea_mbimxsd35-baseboard.c} | 29 +- .../arm/{mach-mx3 => mach-imx}/iomux-imx31.c | 0 trunk/arch/arm/mach-imx/mach-apf9328.c | 144 + .../mach-armadillo5x0.c | 29 +- .../arm/{mach-mx3 => mach-imx}/mach-bug.c | 1 - trunk/arch/arm/mach-imx/mach-cpuimx27.c | 1 - .../{mach-mx3 => mach-imx}/mach-cpuimx35.c | 2 - .../arch/arm/mach-imx/mach-eukrea_cpuimx25.c | 2 - .../arm/mach-imx/mach-imx27_visstrim_m10.c | 14 +- .../mach-kzm_arm11_01.c | 1 - trunk/arch/arm/mach-imx/mach-mx1ads.c | 1 - trunk/arch/arm/mach-imx/mach-mx21ads.c | 1 - trunk/arch/arm/mach-imx/mach-mx25_3ds.c | 13 +- trunk/arch/arm/mach-imx/mach-mx27ads.c | 1 - .../{mach-mx3 => mach-imx}/mach-mx31_3ds.c | 50 +- .../arm/{mach-mx3 => mach-imx}/mach-mx31ads.c | 1 - .../{mach-mx3 => mach-imx}/mach-mx31lilly.c | 1 - .../{mach-mx3 => mach-imx}/mach-mx31lite.c | 1 - .../{mach-mx3 => mach-imx}/mach-mx31moboard.c | 75 +- .../{mach-mx3 => mach-imx}/mach-mx35_3ds.c | 1 - trunk/arch/arm/mach-imx/mach-mxt_td60.c | 1 - trunk/arch/arm/mach-imx/mach-pca100.c | 1 - .../arm/{mach-mx3 => mach-imx}/mach-pcm037.c | 65 +- .../{mach-mx3 => mach-imx}/mach-pcm037_eet.c | 17 +- trunk/arch/arm/mach-imx/mach-pcm038.c | 1 - .../arm/{mach-mx3 => mach-imx}/mach-pcm043.c | 17 +- .../arm/{mach-mx3 => mach-imx}/mach-qong.c | 15 +- .../arm/{mach-mx3 => mach-imx}/mach-vpr200.c | 25 +- trunk/arch/arm/mach-imx/mm-imx31.c | 66 + trunk/arch/arm/mach-imx/mm-imx35.c | 63 + .../arm/{mach-mx3 => mach-imx}/mx31lilly-db.c | 13 +- .../arm/{mach-mx3 => mach-imx}/mx31lite-db.c | 3 +- .../mx31moboard-devboard.c | 1 - .../mx31moboard-marxbot.c | 2 - .../mx31moboard-smartbot.c | 1 - .../arch/arm/{mach-mx3 => mach-imx}/pcm037.h | 0 trunk/arch/arm/mach-integrator/Kconfig | 1 + .../arch/arm/mach-integrator/integrator_ap.c | 34 +- .../arch/arm/mach-integrator/integrator_cp.c | 24 +- .../arm/mach-iop32x/include/mach/uncompress.h | 2 +- .../arm/mach-iop33x/include/mach/uncompress.h | 2 +- trunk/arch/arm/mach-ixp4xx/common-pci.c | 23 - trunk/arch/arm/mach-ixp4xx/common.c | 16 +- .../arm/mach-ixp4xx/include/mach/ixp46x_ts.h | 78 + .../arm/mach-ixp4xx/include/mach/memory.h | 12 +- .../arm/mach-ixp4xx/include/mach/uncompress.h | 2 +- trunk/arch/arm/mach-kirkwood/common.c | 601 +- .../arm/mach-kirkwood/include/mach/irqs.h | 1 + trunk/arch/arm/mach-kirkwood/mpp.c | 58 +- trunk/arch/arm/mach-kirkwood/mpp.h | 6 - trunk/arch/arm/mach-loki/common.c | 190 +- trunk/arch/arm/mach-lpc32xx/timer.c | 17 +- .../arm/mach-mmp/include/mach/uncompress.h | 2 +- trunk/arch/arm/mach-msm/gpio-v2.c | 10 +- trunk/arch/arm/mach-msm/include/mach/smp.h | 23 - trunk/arch/arm/mach-msm/platsmp.c | 4 +- trunk/arch/arm/mach-mv78xx0/common.c | 570 +- trunk/arch/arm/mach-mv78xx0/mpp.c | 58 +- trunk/arch/arm/mach-mv78xx0/mpp.h | 6 - trunk/arch/arm/mach-mx3/Kconfig | 257 - trunk/arch/arm/mach-mx3/Makefile | 26 - trunk/arch/arm/mach-mx3/Makefile.boot | 3 - trunk/arch/arm/mach-mx3/devices.c | 115 - trunk/arch/arm/mach-mx3/devices.h | 4 - trunk/arch/arm/mach-mx3/mm.c | 141 - trunk/arch/arm/mach-mx5/Kconfig | 58 +- trunk/arch/arm/mach-mx5/board-cpuimx51.c | 2 - trunk/arch/arm/mach-mx5/board-cpuimx51sd.c | 2 - trunk/arch/arm/mach-mx5/board-mx50_rdp.c | 1 - trunk/arch/arm/mach-mx5/board-mx51_babbage.c | 18 +- trunk/arch/arm/mach-mx5/board-mx51_efikamx.c | 5 +- trunk/arch/arm/mach-mx5/board-mx51_efikasb.c | 5 +- trunk/arch/arm/mach-mx5/board-mx53_evk.c | 2 - trunk/arch/arm/mach-mx5/board-mx53_loco.c | 2 - trunk/arch/arm/mach-mx5/board-mx53_smd.c | 30 +- trunk/arch/arm/mach-mx5/clock-mx51-mx53.c | 1 + trunk/arch/arm/mach-mx5/cpu.c | 23 + trunk/arch/arm/mach-mx5/devices-imx50.h | 6 +- trunk/arch/arm/mach-mx5/devices-imx51.h | 25 +- trunk/arch/arm/mach-mx5/devices-imx53.h | 13 +- .../arm/mach-mx5/eukrea_mbimx51-baseboard.c | 2 - .../arm/mach-mx5/eukrea_mbimxsd-baseboard.c | 16 +- trunk/arch/arm/mach-mx5/mx51_efika.c | 3 - trunk/arch/arm/mach-mxc91231/Kconfig | 11 - trunk/arch/arm/mach-mxc91231/Makefile | 2 - trunk/arch/arm/mach-mxc91231/Makefile.boot | 3 - trunk/arch/arm/mach-mxc91231/clock.c | 640 - trunk/arch/arm/mach-mxc91231/crm_regs.h | 394 - trunk/arch/arm/mach-mxc91231/devices.c | 251 - trunk/arch/arm/mach-mxc91231/devices.h | 13 - trunk/arch/arm/mach-mxc91231/iomux.c | 177 - trunk/arch/arm/mach-mxc91231/magx-zn5.c | 62 - trunk/arch/arm/mach-mxc91231/mm.c | 62 - trunk/arch/arm/mach-mxc91231/system.c | 51 - trunk/arch/arm/mach-mxs/Kconfig | 12 +- trunk/arch/arm/mach-mxs/Makefile | 1 + trunk/arch/arm/mach-mxs/clock-mx23.c | 2 + trunk/arch/arm/mach-mxs/devices-mx28.h | 2 +- .../arm/mach-mxs/devices/platform-mxs-i2c.c | 5 +- .../mach-mxs/include/mach/devices-common.h | 5 +- trunk/arch/arm/mach-mxs/include/mach/mx23.h | 2 +- .../arm/mach-mxs/include/mach/uncompress.h | 2 +- trunk/arch/arm/mach-mxs/mach-mx23evk.c | 2 +- trunk/arch/arm/mach-mxs/mach-mx28evk.c | 4 +- trunk/arch/arm/mach-mxs/mach-stmp378x_devb.c | 120 + trunk/arch/arm/mach-mxs/timer.c | 20 +- trunk/arch/arm/mach-netx/time.c | 16 +- trunk/arch/arm/mach-ns9xxx/Kconfig | 40 - trunk/arch/arm/mach-ns9xxx/Makefile | 12 - trunk/arch/arm/mach-ns9xxx/Makefile.boot | 2 - trunk/arch/arm/mach-ns9xxx/board-a9m9750dev.c | 156 - trunk/arch/arm/mach-ns9xxx/board-a9m9750dev.h | 15 - trunk/arch/arm/mach-ns9xxx/board-jscc9p9360.c | 17 - trunk/arch/arm/mach-ns9xxx/board-jscc9p9360.h | 13 - trunk/arch/arm/mach-ns9xxx/clock.c | 215 - trunk/arch/arm/mach-ns9xxx/clock.h | 35 - trunk/arch/arm/mach-ns9xxx/generic.c | 19 - trunk/arch/arm/mach-ns9xxx/generic.h | 16 - trunk/arch/arm/mach-ns9xxx/gpio-ns9360.c | 118 - trunk/arch/arm/mach-ns9xxx/gpio-ns9360.h | 13 - trunk/arch/arm/mach-ns9xxx/gpio.c | 147 - .../arch/arm/mach-ns9xxx/include/mach/board.h | 40 - .../mach-ns9xxx/include/mach/debug-macro.S | 21 - .../mach-ns9xxx/include/mach/entry-macro.S | 28 - .../arch/arm/mach-ns9xxx/include/mach/gpio.h | 47 - .../arm/mach-ns9xxx/include/mach/hardware.h | 77 - trunk/arch/arm/mach-ns9xxx/include/mach/io.h | 20 - .../arch/arm/mach-ns9xxx/include/mach/irqs.h | 86 - .../arm/mach-ns9xxx/include/mach/memory.h | 24 - .../arm/mach-ns9xxx/include/mach/module.h | 55 - .../include/mach/processor-ns9360.h | 32 - .../arm/mach-ns9xxx/include/mach/processor.h | 42 - .../arm/mach-ns9xxx/include/mach/regs-bbu.h | 45 - .../include/mach/regs-board-a9m9750dev.h | 24 - .../arm/mach-ns9xxx/include/mach/regs-mem.h | 135 - .../include/mach/regs-sys-common.h | 31 - .../include/mach/regs-sys-ns9360.h | 148 - .../arm/mach-ns9xxx/include/mach/system.h | 35 - .../arch/arm/mach-ns9xxx/include/mach/timex.h | 20 - .../arm/mach-ns9xxx/include/mach/uncompress.h | 164 - .../arm/mach-ns9xxx/include/mach/vmalloc.h | 16 - trunk/arch/arm/mach-ns9xxx/irq.c | 74 - trunk/arch/arm/mach-ns9xxx/mach-cc9p9360dev.c | 43 - trunk/arch/arm/mach-ns9xxx/mach-cc9p9360js.c | 31 - trunk/arch/arm/mach-ns9xxx/plat-serial8250.c | 70 - trunk/arch/arm/mach-ns9xxx/processor-ns9360.c | 53 - trunk/arch/arm/mach-ns9xxx/time-ns9360.c | 181 - .../arm/mach-nuc93x/include/mach/uncompress.h | 2 +- trunk/arch/arm/mach-omap1/flash.c | 2 +- trunk/arch/arm/mach-omap1/time.c | 69 +- trunk/arch/arm/mach-omap2/board-3430sdp.c | 4 +- trunk/arch/arm/mach-omap2/board-4430sdp.c | 11 +- trunk/arch/arm/mach-omap2/board-am3517evm.c | 4 +- trunk/arch/arm/mach-omap2/board-cm-t35.c | 4 +- trunk/arch/arm/mach-omap2/board-devkit8000.c | 4 +- trunk/arch/arm/mach-omap2/board-igep0020.c | 4 +- trunk/arch/arm/mach-omap2/board-omap3beagle.c | 4 +- trunk/arch/arm/mach-omap2/board-omap3evm.c | 4 +- .../arch/arm/mach-omap2/board-omap3pandora.c | 2 +- .../arch/arm/mach-omap2/board-omap3stalker.c | 4 +- trunk/arch/arm/mach-omap2/board-omap4panda.c | 4 +- trunk/arch/arm/mach-omap2/board-overo.c | 4 +- trunk/arch/arm/mach-omap2/board-rx51-video.c | 2 +- .../arch/arm/mach-omap2/board-zoom-display.c | 2 +- trunk/arch/arm/mach-omap2/display.c | 77 +- .../arm/mach-omap2/include/mach/board-zoom.h | 2 +- .../mach-omap2/include/mach/omap4-common.h | 7 + trunk/arch/arm/mach-omap2/irq.c | 97 +- trunk/arch/arm/mach-omap2/omap-smp.c | 5 +- trunk/arch/arm/mach-orion5x/common.c | 478 +- trunk/arch/arm/mach-orion5x/d2net-setup.c | 44 +- trunk/arch/arm/mach-orion5x/db88f5281-setup.c | 44 +- trunk/arch/arm/mach-orion5x/dns323-setup.c | 132 +- trunk/arch/arm/mach-orion5x/edmini_v2-setup.c | 44 +- .../arch/arm/mach-orion5x/kurobox_pro-setup.c | 44 +- trunk/arch/arm/mach-orion5x/ls-chl-setup.c | 44 +- trunk/arch/arm/mach-orion5x/ls_hgl-setup.c | 44 +- trunk/arch/arm/mach-orion5x/lsmini-setup.c | 44 +- trunk/arch/arm/mach-orion5x/mpp.c | 150 +- trunk/arch/arm/mach-orion5x/mpp.h | 191 +- trunk/arch/arm/mach-orion5x/mss2-setup.c | 44 +- trunk/arch/arm/mach-orion5x/mv2120-setup.c | 44 +- trunk/arch/arm/mach-orion5x/net2big-setup.c | 44 +- .../arm/mach-orion5x/rd88f5181l-fxo-setup.c | 44 +- .../arm/mach-orion5x/rd88f5181l-ge-setup.c | 44 +- trunk/arch/arm/mach-orion5x/rd88f5182-setup.c | 44 +- .../arm/mach-orion5x/rd88f6183ap-ge-setup.c | 1 - .../arm/mach-orion5x/terastation_pro2-setup.c | 44 +- trunk/arch/arm/mach-orion5x/ts209-setup.c | 44 +- trunk/arch/arm/mach-orion5x/ts409-setup.c | 44 +- trunk/arch/arm/mach-orion5x/ts78xx-setup.c | 44 +- trunk/arch/arm/mach-orion5x/wnr854t-setup.c | 44 +- .../arch/arm/mach-orion5x/wrt350n-v2-setup.c | 44 +- trunk/arch/arm/mach-pxa/cm-x2xx-pci.c | 27 - trunk/arch/arm/mach-pxa/hx4700.c | 2 +- trunk/arch/arm/mach-pxa/include/mach/memory.h | 10 +- .../arm/mach-pxa/include/mach/uncompress.h | 6 +- trunk/arch/arm/mach-pxa/magician.c | 2 +- trunk/arch/arm/mach-pxa/time.c | 17 +- trunk/arch/arm/mach-realview/core.c | 63 +- .../arm/mach-realview/include/mach/memory.h | 9 +- .../arch/arm/mach-realview/include/mach/smp.h | 14 - trunk/arch/arm/mach-realview/platsmp.c | 3 + .../arm/mach-rpc/include/mach/uncompress.h | 12 +- .../arch/arm/mach-s3c2410/include/mach/map.h | 4 + .../include/mach/regs-s3c2443-clock.h | 25 + trunk/arch/arm/mach-s3c2410/nor-simtec.c | 2 +- trunk/arch/arm/mach-s3c2416/mach-smdk2416.c | 27 + trunk/arch/arm/mach-s3c64xx/irq.c | 7 +- .../mach-s5p64x0/include/mach/uncompress.h | 6 +- .../arm/mach-sa1100/include/mach/memory.h | 12 +- trunk/arch/arm/mach-sa1100/time.c | 24 +- .../arch/arm/mach-shark/include/mach/memory.h | 20 +- trunk/arch/arm/mach-shmobile/Makefile | 5 + trunk/arch/arm/mach-shmobile/board-ag5evm.c | 118 + trunk/arch/arm/mach-shmobile/board-ap4evb.c | 30 +- trunk/arch/arm/mach-shmobile/board-g4evm.c | 2 +- trunk/arch/arm/mach-shmobile/board-mackerel.c | 272 +- trunk/arch/arm/mach-shmobile/clock-sh7372.c | 21 +- trunk/arch/arm/mach-shmobile/clock-sh73a0.c | 19 +- trunk/arch/arm/mach-shmobile/cpuidle.c | 92 + trunk/arch/arm/mach-shmobile/headsmp.S | 2 +- .../arm/mach-shmobile/include/mach/common.h | 7 + .../include/mach/head-ap4evb.txt | 3 +- .../include/mach/head-mackerel.txt | 3 +- .../arm/mach-shmobile/include/mach/sh7372.h | 1 + .../arm/mach-shmobile/include/mach/sh73a0.h | 30 + .../arch/arm/mach-shmobile/include/mach/smp.h | 16 - trunk/arch/arm/mach-shmobile/intc-sh7372.c | 46 +- trunk/arch/arm/mach-shmobile/platsmp.c | 3 + trunk/arch/arm/mach-shmobile/pm-sh7372.c | 108 + trunk/arch/arm/mach-shmobile/setup-sh7367.c | 223 + trunk/arch/arm/mach-shmobile/setup-sh7372.c | 217 + trunk/arch/arm/mach-shmobile/setup-sh7377.c | 239 +- trunk/arch/arm/mach-shmobile/setup-sh73a0.c | 244 + trunk/arch/arm/mach-shmobile/sleep-sh7372.S | 260 + trunk/arch/arm/mach-shmobile/smp-sh73a0.c | 9 +- trunk/arch/arm/mach-shmobile/suspend.c | 47 + trunk/arch/arm/mach-spear3xx/Kconfig | 30 +- trunk/arch/arm/mach-spear3xx/Kconfig300 | 17 - trunk/arch/arm/mach-spear3xx/Kconfig310 | 17 - trunk/arch/arm/mach-spear3xx/Kconfig320 | 17 - trunk/arch/arm/mach-spear3xx/clock.c | 74 +- .../arm/mach-spear3xx/include/mach/generic.h | 205 +- .../arm/mach-spear3xx/include/mach/irqs.h | 206 +- .../arm/mach-spear3xx/include/mach/spear300.h | 26 +- .../arm/mach-spear3xx/include/mach/spear310.h | 44 +- .../arm/mach-spear3xx/include/mach/spear320.h | 48 +- trunk/arch/arm/mach-spear3xx/spear300.c | 163 +- trunk/arch/arm/mach-spear3xx/spear300_evb.c | 32 +- trunk/arch/arm/mach-spear3xx/spear310.c | 149 +- trunk/arch/arm/mach-spear3xx/spear310_evb.c | 45 +- trunk/arch/arm/mach-spear3xx/spear320.c | 251 +- trunk/arch/arm/mach-spear3xx/spear320_evb.c | 40 +- trunk/arch/arm/mach-spear3xx/spear3xx.c | 132 +- trunk/arch/arm/mach-spear6xx/Kconfig | 15 +- trunk/arch/arm/mach-spear6xx/Kconfig600 | 17 - trunk/arch/arm/mach-spear6xx/clock.c | 4 +- .../arm/mach-spear6xx/include/mach/generic.h | 2 +- trunk/arch/arm/mach-spear6xx/spear6xx.c | 2 +- trunk/arch/arm/mach-stmp378x/Makefile | 2 - trunk/arch/arm/mach-stmp378x/Makefile.boot | 3 - .../mach-stmp378x/include/mach/entry-macro.S | 35 - .../arm/mach-stmp378x/include/mach/irqs.h | 95 - .../arm/mach-stmp378x/include/mach/pins.h | 151 - .../mach-stmp378x/include/mach/regs-apbh.h | 101 - .../mach-stmp378x/include/mach/regs-apbx.h | 119 - .../mach-stmp378x/include/mach/regs-audioin.h | 63 - .../include/mach/regs-audioout.h | 104 - .../arm/mach-stmp378x/include/mach/regs-bch.h | 56 - .../mach-stmp378x/include/mach/regs-clkctrl.h | 88 - .../arm/mach-stmp378x/include/mach/regs-dcp.h | 87 - .../mach-stmp378x/include/mach/regs-digctl.h | 38 - .../mach-stmp378x/include/mach/regs-dram.h | 27 - .../arm/mach-stmp378x/include/mach/regs-dri.h | 45 - .../mach-stmp378x/include/mach/regs-ecc8.h | 39 - .../arm/mach-stmp378x/include/mach/regs-emi.h | 25 - .../mach-stmp378x/include/mach/regs-gpmi.h | 78 - .../arm/mach-stmp378x/include/mach/regs-i2c.h | 55 - .../mach-stmp378x/include/mach/regs-icoll.h | 45 - .../arm/mach-stmp378x/include/mach/regs-ir.h | 23 - .../mach-stmp378x/include/mach/regs-lcdif.h | 195 - .../mach-stmp378x/include/mach/regs-lradc.h | 99 - .../mach-stmp378x/include/mach/regs-ocotp.h | 40 - .../mach-stmp378x/include/mach/regs-pinctrl.h | 90 - .../mach-stmp378x/include/mach/regs-power.h | 63 - .../arm/mach-stmp378x/include/mach/regs-pwm.h | 53 - .../arm/mach-stmp378x/include/mach/regs-pxp.h | 140 - .../arm/mach-stmp378x/include/mach/regs-rtc.h | 59 - .../mach-stmp378x/include/mach/regs-saif.h | 21 - .../mach-stmp378x/include/mach/regs-spdif.h | 49 - .../arm/mach-stmp378x/include/mach/regs-ssp.h | 102 - .../mach-stmp378x/include/mach/regs-sydma.h | 23 - .../mach-stmp378x/include/mach/regs-timrot.h | 68 - .../mach-stmp378x/include/mach/regs-tvenc.h | 67 - .../mach-stmp378x/include/mach/regs-uartapp.h | 87 - .../mach-stmp378x/include/mach/regs-uartdbg.h | 268 - .../mach-stmp378x/include/mach/regs-usbctrl.h | 40 - .../mach-stmp378x/include/mach/regs-usbphy.h | 37 - trunk/arch/arm/mach-stmp378x/stmp378x.c | 299 - trunk/arch/arm/mach-stmp378x/stmp378x.h | 25 - trunk/arch/arm/mach-stmp378x/stmp378x_devb.c | 332 - trunk/arch/arm/mach-stmp37xx/Makefile | 2 - trunk/arch/arm/mach-stmp37xx/Makefile.boot | 3 - .../mach-stmp37xx/include/mach/entry-macro.S | 37 - .../arm/mach-stmp37xx/include/mach/irqs.h | 99 - .../arm/mach-stmp37xx/include/mach/pins.h | 147 - .../mach-stmp37xx/include/mach/regs-apbh.h | 97 - .../mach-stmp37xx/include/mach/regs-apbx.h | 113 - .../mach-stmp37xx/include/mach/regs-audioin.h | 61 - .../include/mach/regs-audioout.h | 111 - .../mach-stmp37xx/include/mach/regs-clkctrl.h | 72 - .../mach-stmp37xx/include/mach/regs-digctl.h | 24 - .../mach-stmp37xx/include/mach/regs-ecc8.h | 37 - .../mach-stmp37xx/include/mach/regs-gpmi.h | 63 - .../arm/mach-stmp37xx/include/mach/regs-i2c.h | 55 - .../mach-stmp37xx/include/mach/regs-icoll.h | 43 - .../mach-stmp37xx/include/mach/regs-lcdif.h | 89 - .../mach-stmp37xx/include/mach/regs-lradc.h | 97 - .../mach-stmp37xx/include/mach/regs-pinctrl.h | 88 - .../mach-stmp37xx/include/mach/regs-power.h | 56 - .../arm/mach-stmp37xx/include/mach/regs-pwm.h | 51 - .../arm/mach-stmp37xx/include/mach/regs-rtc.h | 57 - .../arm/mach-stmp37xx/include/mach/regs-ssp.h | 101 - .../mach-stmp37xx/include/mach/regs-timrot.h | 49 - .../mach-stmp37xx/include/mach/regs-uartapp.h | 85 - .../mach-stmp37xx/include/mach/regs-uartdbg.h | 268 - .../mach-stmp37xx/include/mach/regs-usbctl.h | 22 - .../mach-stmp37xx/include/mach/regs-usbctrl.h | 22 - .../mach-stmp37xx/include/mach/regs-usbphy.h | 37 - trunk/arch/arm/mach-stmp37xx/stmp37xx.c | 219 - trunk/arch/arm/mach-stmp37xx/stmp37xx.h | 24 - trunk/arch/arm/mach-stmp37xx/stmp37xx_devb.c | 99 - trunk/arch/arm/mach-tcc8k/time.c | 16 +- trunk/arch/arm/mach-tegra/Makefile | 2 +- trunk/arch/arm/mach-tegra/gpio.c | 9 +- trunk/arch/arm/mach-tegra/include/mach/kbc.h | 4 +- .../arm/mach-tegra/include/mach/legacy_irq.h | 35 - .../arch/arm/mach-tegra/include/mach/sdhci.h | 1 + trunk/arch/arm/mach-tegra/include/mach/smp.h | 14 - trunk/arch/arm/mach-tegra/irq.c | 174 +- trunk/arch/arm/mach-tegra/legacy_irq.c | 215 - trunk/arch/arm/mach-tegra/platsmp.c | 3 + trunk/arch/arm/mach-tegra/timer.c | 16 +- trunk/arch/arm/mach-u300/timer.c | 18 +- trunk/arch/arm/mach-ux500/Kconfig | 3 + trunk/arch/arm/mach-ux500/Makefile | 4 +- trunk/arch/arm/mach-ux500/board-mop500.c | 14 +- trunk/arch/arm/mach-ux500/cpu-db5500.c | 2 + trunk/arch/arm/mach-ux500/cpu-db8500.c | 7 + trunk/arch/arm/mach-ux500/cpu.c | 7 +- trunk/arch/arm/mach-ux500/cpufreq.c | 211 - .../arm/mach-ux500/include/mach/db5500-regs.h | 20 +- .../arm/mach-ux500/include/mach/db8500-regs.h | 37 +- .../arm/mach-ux500/include/mach/hardware.h | 1 + trunk/arch/arm/mach-ux500/include/mach/id.h | 20 + .../include/mach/irqs-board-mop500.h | 5 + .../include/mach/irqs-board-u5500.h | 21 + .../arm/mach-ux500/include/mach/irqs-db5500.h | 27 + .../arm/mach-ux500/include/mach/irqs-db8500.h | 54 + trunk/arch/arm/mach-ux500/include/mach/irqs.h | 46 +- .../arm/mach-ux500/include/mach/prcmu-defs.h | 30 - .../arch/arm/mach-ux500/include/mach/prcmu.h | 28 - trunk/arch/arm/mach-ux500/include/mach/smp.h | 24 - .../arm/mach-ux500/include/mach/uncompress.h | 2 +- trunk/arch/arm/mach-ux500/platsmp.c | 8 +- trunk/arch/arm/mach-ux500/prcmu.c | 394 - trunk/arch/arm/mach-versatile/core.c | 44 +- trunk/arch/arm/mach-vexpress/ct-ca9x4.c | 19 +- .../arch/arm/mach-vexpress/include/mach/smp.h | 13 - trunk/arch/arm/mach-vexpress/v2m.c | 39 +- .../mach-w90x900/include/mach/uncompress.h | 2 +- trunk/arch/arm/mach-w90x900/time.c | 17 +- trunk/arch/arm/mm/flush.c | 7 +- trunk/arch/arm/mm/init.c | 25 +- trunk/arch/arm/mm/mmu.c | 2 - trunk/arch/arm/mm/proc-v6.S | 34 - trunk/arch/arm/plat-mxc/Kconfig | 28 +- trunk/arch/arm/plat-mxc/devices/Kconfig | 7 +- trunk/arch/arm/plat-mxc/devices/Makefile | 2 + .../arm/plat-mxc/devices/platform-ipu-core.c | 129 + .../arm/plat-mxc/devices/platform-mxc_rtc.c | 40 + .../arm/plat-mxc/devices/platform-spi_imx.c | 2 +- trunk/arch/arm/plat-mxc/epit.c | 18 +- trunk/arch/arm/plat-mxc/include/mach/common.h | 8 +- .../arm/plat-mxc/include/mach/debug-macro.S | 7 - .../plat-mxc/include/mach/devices-common.h | 27 + .../arch/arm/plat-mxc/include/mach/hardware.h | 17 +- trunk/arch/arm/plat-mxc/include/mach/io.h | 23 +- .../arm/plat-mxc/include/mach/iomux-mx25.h | 3 + .../plat-mxc/include/mach/iomux-mxc91231.h | 283 - trunk/arch/arm/plat-mxc/include/mach/irqs.h | 2 - trunk/arch/arm/plat-mxc/include/mach/memory.h | 3 - trunk/arch/arm/plat-mxc/include/mach/mx27.h | 4 +- trunk/arch/arm/plat-mxc/include/mach/mx53.h | 13 - trunk/arch/arm/plat-mxc/include/mach/mxc.h | 22 +- .../arch/arm/plat-mxc/include/mach/mxc91231.h | 256 - trunk/arch/arm/plat-mxc/include/mach/system.h | 6 - trunk/arch/arm/plat-mxc/include/mach/timex.h | 2 - .../arm/plat-mxc/include/mach/uncompress.h | 2 +- trunk/arch/arm/plat-mxc/system.c | 6 - trunk/arch/arm/plat-mxc/time.c | 40 +- trunk/arch/arm/plat-nomadik/Kconfig | 1 + trunk/arch/arm/plat-nomadik/gpio.c | 12 +- .../arch/arm/plat-nomadik/include/plat/i2c.h | 8 +- trunk/arch/arm/plat-nomadik/timer.c | 31 +- trunk/arch/arm/plat-omap/Kconfig | 2 + trunk/arch/arm/plat-omap/gpio.c | 7 +- trunk/arch/arm/plat-omap/include/plat/flash.h | 2 +- trunk/arch/arm/plat-omap/include/plat/smp.h | 36 - .../arm/plat-omap/include/plat/uncompress.h | 4 +- trunk/arch/arm/plat-orion/Makefile | 2 +- trunk/arch/arm/plat-orion/common.c | 957 ++ trunk/arch/arm/plat-orion/gpio.c | 112 +- .../arch/arm/plat-orion/include/plat/common.h | 117 + trunk/arch/arm/plat-orion/include/plat/gpio.h | 1 - trunk/arch/arm/plat-orion/include/plat/mpp.h | 34 + trunk/arch/arm/plat-orion/irq.c | 49 +- trunk/arch/arm/plat-orion/mpp.c | 78 + trunk/arch/arm/plat-orion/time.c | 21 +- trunk/arch/arm/plat-s3c24xx/devs.c | 41 + .../arch/arm/plat-s3c24xx/include/plat/udc.h | 17 + trunk/arch/arm/plat-s5p/Kconfig | 5 + trunk/arch/arm/plat-s5p/Makefile | 1 + trunk/arch/arm/plat-s5p/dev-ehci.c | 57 + trunk/arch/arm/plat-s5p/include/plat/ehci.h | 21 + .../arch/arm/plat-s5p/include/plat/map-s5p.h | 2 +- .../arch/arm/plat-s5p/include/plat/usb-phy.h | 22 + trunk/arch/arm/plat-s5p/irq-gpioint.c | 116 +- trunk/arch/arm/plat-s5p/irq.c | 6 +- trunk/arch/arm/plat-s5p/s5p-time.c | 58 +- trunk/arch/arm/plat-samsung/Kconfig | 1 + .../arch/arm/plat-samsung/include/plat/devs.h | 3 + .../plat-samsung/include/plat/irq-vic-timer.h | 2 +- .../plat-samsung/include/plat/uncompress.h | 4 +- trunk/arch/arm/plat-samsung/irq-uart.c | 83 +- trunk/arch/arm/plat-samsung/irq-vic-timer.c | 69 +- trunk/arch/arm/plat-spear/clock.c | 5 + .../arch/arm/plat-spear/include/plat/clock.h | 1 + trunk/arch/arm/plat-spear/time.c | 16 +- trunk/arch/arm/plat-stmp3xxx/Kconfig | 37 - trunk/arch/arm/plat-stmp3xxx/Makefile | 5 - trunk/arch/arm/plat-stmp3xxx/clock.c | 1134 -- trunk/arch/arm/plat-stmp3xxx/clock.h | 61 - trunk/arch/arm/plat-stmp3xxx/core.c | 128 - trunk/arch/arm/plat-stmp3xxx/devices.c | 389 - trunk/arch/arm/plat-stmp3xxx/dma.c | 464 - .../arm/plat-stmp3xxx/include/mach/clkdev.h | 18 - .../arm/plat-stmp3xxx/include/mach/cputype.h | 33 - .../plat-stmp3xxx/include/mach/debug-macro.S | 39 - .../arch/arm/plat-stmp3xxx/include/mach/dma.h | 153 - .../arm/plat-stmp3xxx/include/mach/gpio.h | 28 - .../arm/plat-stmp3xxx/include/mach/gpmi.h | 12 - .../arm/plat-stmp3xxx/include/mach/hardware.h | 32 - .../arch/arm/plat-stmp3xxx/include/mach/io.h | 25 - .../arm/plat-stmp3xxx/include/mach/memory.h | 22 - .../arch/arm/plat-stmp3xxx/include/mach/mmc.h | 14 - .../arm/plat-stmp3xxx/include/mach/pinmux.h | 157 - .../arm/plat-stmp3xxx/include/mach/pins.h | 30 - .../arm/plat-stmp3xxx/include/mach/platform.h | 68 - .../arm/plat-stmp3xxx/include/mach/stmp3xxx.h | 54 - .../arm/plat-stmp3xxx/include/mach/system.h | 49 - .../arm/plat-stmp3xxx/include/mach/timex.h | 20 - .../plat-stmp3xxx/include/mach/uncompress.h | 53 - .../arm/plat-stmp3xxx/include/mach/vmalloc.h | 12 - trunk/arch/arm/plat-stmp3xxx/irq.c | 50 - trunk/arch/arm/plat-stmp3xxx/pinmux.c | 550 - trunk/arch/arm/plat-stmp3xxx/timer.c | 186 - trunk/arch/arm/plat-versatile/platsmp.c | 3 +- trunk/arch/arm/tools/mach-types | 142 +- trunk/arch/avr32/mm/init.c | 2 - trunk/arch/blackfin/Kconfig | 2 + trunk/arch/blackfin/Kconfig.debug | 11 +- .../blackfin/configs/BF527-EZKIT-V2_defconfig | 12 +- .../blackfin/configs/BF527-EZKIT_defconfig | 14 +- .../blackfin/configs/BF533-STAMP_defconfig | 2 - .../blackfin/configs/BF537-STAMP_defconfig | 2 - trunk/arch/blackfin/include/asm/bfin-global.h | 10 - trunk/arch/blackfin/include/asm/bfin_pfmon.h | 44 + trunk/arch/blackfin/include/asm/bfin_sport.h | 4 + trunk/arch/blackfin/include/asm/cacheflush.h | 23 +- trunk/arch/blackfin/include/asm/cpu.h | 3 - .../blackfin/include/asm/def_LPBlackfin.h | 12 +- trunk/arch/blackfin/include/asm/irq_handler.h | 25 + trunk/arch/blackfin/include/asm/kgdb.h | 6 +- trunk/arch/blackfin/include/asm/perf_event.h | 1 + trunk/arch/blackfin/include/asm/ptrace.h | 2 - trunk/arch/blackfin/include/mach-common/irq.h | 57 + trunk/arch/blackfin/kernel/Makefile | 3 + trunk/arch/blackfin/kernel/bfin_dma_5xx.c | 5 + trunk/arch/blackfin/kernel/bfin_gpio.c | 34 +- trunk/arch/blackfin/kernel/bfin_ksyms.c | 1 + trunk/arch/blackfin/kernel/debug-mmrs.c | 1860 +++ trunk/arch/blackfin/kernel/ipipe.c | 1 + trunk/arch/blackfin/kernel/irqchip.c | 1 + trunk/arch/blackfin/kernel/nmi.c | 8 +- trunk/arch/blackfin/kernel/perf_event.c | 498 + trunk/arch/blackfin/kernel/process.c | 6 +- trunk/arch/blackfin/kernel/reboot.c | 65 +- trunk/arch/blackfin/kernel/setup.c | 54 +- trunk/arch/blackfin/kernel/vmlinux.lds.S | 10 +- .../mach-bf518/include/mach/anomaly.h | 4 +- .../mach-bf518/include/mach/cdefBF512.h | 16 +- .../mach-bf518/include/mach/defBF512.h | 8 +- .../blackfin/mach-bf518/include/mach/irq.h | 262 +- trunk/arch/blackfin/mach-bf527/boards/ezkit.c | 74 +- .../mach-bf527/include/mach/anomaly.h | 8 +- .../mach-bf527/include/mach/cdefBF522.h | 16 +- .../mach-bf527/include/mach/defBF522.h | 8 +- .../blackfin/mach-bf527/include/mach/irq.h | 266 +- .../mach-bf533/include/mach/anomaly.h | 11 +- .../blackfin/mach-bf533/include/mach/irq.h | 168 +- trunk/arch/blackfin/mach-bf537/boards/stamp.c | 106 +- .../mach-bf537/include/mach/anomaly.h | 10 +- .../blackfin/mach-bf537/include/mach/irq.h | 365 +- .../arch/blackfin/mach-bf537/ints-priority.c | 163 + .../mach-bf538/include/mach/anomaly.h | 9 +- .../blackfin/mach-bf538/include/mach/irq.h | 89 +- trunk/arch/blackfin/mach-bf548/boards/ezkit.c | 116 +- .../mach-bf548/include/mach/anomaly.h | 8 +- .../blackfin/mach-bf548/include/mach/irq.h | 89 +- trunk/arch/blackfin/mach-bf561/boards/ezkit.c | 10 +- .../mach-bf561/include/mach/anomaly.h | 15 +- .../blackfin/mach-bf561/include/mach/irq.h | 505 +- trunk/arch/blackfin/mach-bf561/smp.c | 17 +- trunk/arch/blackfin/mach-common/dpmc.c | 7 +- .../arch/blackfin/mach-common/ints-priority.c | 476 +- trunk/arch/blackfin/mach-common/smp.c | 28 +- trunk/arch/blackfin/mm/sram-alloc.c | 43 +- trunk/arch/cris/arch-v32/kernel/irq.c | 4 +- trunk/arch/cris/arch-v32/kernel/smp.c | 33 +- trunk/arch/cris/kernel/vmlinux.lds.S | 2 +- trunk/arch/cris/mm/init.c | 2 - trunk/arch/frv/kernel/vmlinux.lds.S | 2 +- trunk/arch/frv/mm/init.c | 2 - trunk/arch/ia64/include/asm/tlb.h | 66 +- trunk/arch/ia64/mm/contig.c | 10 +- trunk/arch/ia64/mm/discontig.c | 10 +- trunk/arch/ia64/mm/init.c | 2 - trunk/arch/m32r/Kconfig.debug | 9 - trunk/arch/m32r/include/asm/smp.h | 2 - trunk/arch/m32r/kernel/vmlinux.lds.S | 2 +- trunk/arch/m32r/mm/discontig.c | 1 + trunk/arch/m32r/mm/init.c | 2 - trunk/arch/m68k/Kconfig | 1 + trunk/arch/m68k/include/asm/bitops_no.h | 18 +- trunk/arch/m68k/include/asm/io_no.h | 8 +- trunk/arch/m68k/kernel/asm-offsets.c | 106 +- trunk/arch/m68k/kernel/asm-offsets_mm.c | 100 - trunk/arch/m68k/kernel/asm-offsets_no.c | 76 - trunk/arch/m68k/kernel/entry_no.S | 1 - trunk/arch/m68k/kernel/irq.c | 28 - trunk/arch/m68k/kernel/m68k_ksyms.c | 36 +- trunk/arch/m68k/kernel/m68k_ksyms_mm.c | 16 - trunk/arch/m68k/kernel/m68k_ksyms_no.c | 78 - trunk/arch/m68k/kernel/process_no.c | 2 + trunk/arch/m68k/kernel/sys_m68k.c | 581 +- trunk/arch/m68k/kernel/sys_m68k_mm.c | 546 - trunk/arch/m68k/kernel/sys_m68k_no.c | 94 - trunk/arch/m68k/kernel/syscalltable.S | 1 - trunk/arch/m68k/lib/Makefile | 13 +- trunk/arch/m68k/lib/Makefile_mm | 6 - trunk/arch/m68k/lib/Makefile_no | 7 - trunk/arch/m68k/lib/checksum.c | 5 - trunk/arch/m68k/lib/checksum_no.c | 3 + trunk/arch/m68k/lib/memcpy.c | 128 +- trunk/arch/m68k/lib/memmove.c | 2 - trunk/arch/m68k/lib/memset.c | 114 +- trunk/arch/m68k/lib/muldi3.c | 99 +- trunk/arch/m68k/lib/muldi3_mm.c | 63 - trunk/arch/m68k/lib/muldi3_no.c | 86 - trunk/arch/m68k/lib/string.c | 223 - trunk/arch/m68k/mm/Makefile | 14 +- trunk/arch/m68k/mm/Makefile_mm | 8 - trunk/arch/m68k/mm/Makefile_no | 5 - trunk/arch/m68k/mm/init_mm.c | 2 - trunk/arch/m68k/mm/init_no.c | 51 +- trunk/arch/m68k/mm/kmap.c | 368 +- trunk/arch/m68k/mm/kmap_mm.c | 367 - trunk/arch/m68k/mm/kmap_no.c | 45 - trunk/arch/m68k/platform/68328/entry.S | 7 +- trunk/arch/m68k/platform/68360/entry.S | 7 +- trunk/arch/m68k/platform/coldfire/dma.c | 3 + trunk/arch/m68k/platform/coldfire/entry.S | 11 +- trunk/arch/m68k/platform/coldfire/head.S | 1 - trunk/arch/microblaze/mm/init.c | 2 - trunk/arch/mips/Kconfig.debug | 9 - trunk/arch/mips/ath79/Kconfig | 5 + trunk/arch/mips/kernel/vmlinux.lds.S | 2 +- trunk/arch/mips/mm/init.c | 2 - trunk/arch/mn10300/kernel/irq.c | 16 +- trunk/arch/mn10300/kernel/smp.c | 75 +- trunk/arch/mn10300/kernel/vmlinux.lds.S | 2 +- trunk/arch/mn10300/mm/cache-smp.c | 8 +- trunk/arch/mn10300/mm/init.c | 2 - trunk/arch/mn10300/mm/tlb-smp.c | 32 +- trunk/arch/parisc/include/asm/smp.h | 9 - trunk/arch/parisc/kernel/vmlinux.lds.S | 2 +- trunk/arch/parisc/mm/init.c | 4 +- trunk/arch/powerpc/Kconfig | 1 + trunk/arch/powerpc/Kconfig.debug | 21 - trunk/arch/powerpc/boot/dts/mpc8313erdb.dts | 13 + trunk/arch/powerpc/boot/dts/mpc8572ds.dts | 13 + trunk/arch/powerpc/boot/dts/p2020ds.dts | 13 + trunk/arch/powerpc/boot/dts/p2020rdb.dts | 13 + trunk/arch/powerpc/include/asm/pgalloc.h | 21 +- trunk/arch/powerpc/include/asm/thread_info.h | 2 + trunk/arch/powerpc/kernel/process.c | 23 +- trunk/arch/powerpc/kernel/vmlinux.lds.S | 2 +- trunk/arch/powerpc/mm/pgtable.c | 104 - trunk/arch/powerpc/mm/tlb_hash32.c | 3 - trunk/arch/powerpc/mm/tlb_hash64.c | 5 +- trunk/arch/powerpc/mm/tlb_nohash.c | 3 - trunk/arch/s390/Kconfig | 11 - trunk/arch/s390/appldata/appldata_base.c | 2 - trunk/arch/s390/include/asm/cmpxchg.h | 1 - trunk/arch/s390/include/asm/elf.h | 12 - trunk/arch/s390/include/asm/hugetlb.h | 17 +- trunk/arch/s390/include/asm/irq.h | 1 + trunk/arch/s390/include/asm/lowcore.h | 4 +- trunk/arch/s390/include/asm/mmu.h | 9 +- trunk/arch/s390/include/asm/mmu_context.h | 6 +- trunk/arch/s390/include/asm/page.h | 60 +- trunk/arch/s390/include/asm/percpu.h | 68 + trunk/arch/s390/include/asm/pgalloc.h | 57 +- trunk/arch/s390/include/asm/pgtable.h | 607 +- trunk/arch/s390/include/asm/processor.h | 1 + trunk/arch/s390/include/asm/tlb.h | 62 +- trunk/arch/s390/include/asm/tlbflush.h | 13 +- trunk/arch/s390/include/asm/unistd.h | 1 + trunk/arch/s390/kernel/asm-offsets.c | 4 +- trunk/arch/s390/kernel/entry.S | 1 + trunk/arch/s390/kernel/entry64.S | 1 + trunk/arch/s390/kernel/irq.c | 1 + trunk/arch/s390/kernel/process.c | 19 +- trunk/arch/s390/kernel/setup.c | 31 +- trunk/arch/s390/kernel/smp.c | 30 +- trunk/arch/s390/kernel/time.c | 4 +- trunk/arch/s390/kernel/topology.c | 16 +- trunk/arch/s390/kernel/vdso32/Makefile | 3 + trunk/arch/s390/kernel/vdso64/Makefile | 3 + trunk/arch/s390/kernel/vmlinux.lds.S | 2 +- trunk/arch/s390/mm/extmem.c | 6 +- trunk/arch/s390/mm/fault.c | 187 +- trunk/arch/s390/mm/hugetlbpage.c | 10 - trunk/arch/s390/mm/init.c | 3 +- trunk/arch/s390/mm/pageattr.c | 2 +- trunk/arch/s390/mm/pgtable.c | 69 +- trunk/arch/s390/mm/vmem.c | 14 +- trunk/arch/s390/oprofile/hwsampler.c | 21 +- trunk/arch/score/Kconfig.debug | 9 - trunk/arch/score/mm/init.c | 2 - trunk/arch/sh/Kconfig | 1 + trunk/arch/sh/Kconfig.debug | 9 - trunk/arch/sh/boards/mach-ecovec24/setup.c | 18 +- trunk/arch/sh/configs/ecovec24_defconfig | 2 +- trunk/arch/sh/configs/sh7757lcr_defconfig | 2 +- trunk/arch/sh/drivers/pci/fixups-se7751.c | 2 +- trunk/arch/sh/include/asm/stacktrace.h | 3 - trunk/arch/sh/include/asm/tlb.h | 28 +- trunk/arch/sh/include/asm/unistd_32.h | 3 +- trunk/arch/sh/include/asm/unistd_64.h | 3 +- trunk/arch/sh/kernel/cpu/Makefile | 4 +- .../arch/sh/kernel/cpu/shmobile/pm_runtime.c | 6 +- trunk/arch/sh/kernel/dumpstack.c | 15 - trunk/arch/sh/kernel/module.c | 2 + trunk/arch/sh/kernel/perf_callchain.c | 12 - trunk/arch/sh/kernel/stacktrace.c | 13 - trunk/arch/sh/kernel/syscalls_32.S | 1 + trunk/arch/sh/kernel/syscalls_64.S | 1 + trunk/arch/sh/kernel/vmlinux.lds.S | 2 +- trunk/arch/sh/mm/init.c | 1 - trunk/arch/sh/oprofile/backtrace.c | 13 - trunk/arch/sparc/Kconfig.debug | 9 - trunk/arch/sparc/include/asm/pgalloc_64.h | 3 + trunk/arch/sparc/include/asm/pgtable_64.h | 15 +- trunk/arch/sparc/include/asm/tlb_64.h | 91 +- trunk/arch/sparc/include/asm/tlbflush_64.h | 12 +- trunk/arch/sparc/kernel/setup_32.c | 2 +- trunk/arch/sparc/kernel/vmlinux.lds.S | 2 +- trunk/arch/sparc/mm/init_32.c | 4 +- trunk/arch/sparc/mm/tlb.c | 43 +- trunk/arch/sparc/mm/tsb.c | 15 +- trunk/arch/tile/Kconfig | 8 + trunk/arch/tile/Kconfig.debug | 9 - trunk/arch/tile/configs/tile_defconfig | 71 - trunk/arch/tile/configs/tilegx_defconfig | 1833 +++ trunk/arch/tile/configs/tilepro_defconfig | 1163 ++ trunk/arch/tile/include/arch/chip_tilegx.h | 258 + trunk/arch/tile/include/arch/icache.h | 11 +- trunk/arch/tile/include/arch/interrupts_64.h | 276 + trunk/arch/tile/include/arch/spr_def.h | 13 +- trunk/arch/tile/include/arch/spr_def_64.h | 173 + trunk/arch/tile/include/asm/atomic.h | 49 +- trunk/arch/tile/include/asm/atomic_32.h | 10 - trunk/arch/tile/include/asm/atomic_64.h | 156 + trunk/arch/tile/include/asm/backtrace.h | 82 +- trunk/arch/tile/include/asm/bitops.h | 1 + trunk/arch/tile/include/asm/bitops_32.h | 1 - trunk/arch/tile/include/asm/bitops_64.h | 105 + trunk/arch/tile/include/asm/cacheflush.h | 18 +- trunk/arch/tile/include/asm/compat.h | 4 +- trunk/arch/tile/include/asm/dma-mapping.h | 3 +- trunk/arch/tile/include/asm/fb.h | 1 + trunk/arch/tile/include/asm/io.h | 18 + trunk/arch/tile/include/asm/irq.h | 2 + trunk/arch/tile/include/asm/mmu_context.h | 4 +- trunk/arch/tile/include/asm/opcode-tile_32.h | 7 + trunk/arch/tile/include/asm/opcode-tile_64.h | 1500 +- .../tile/include/asm/opcode_constants_64.h | 1043 +- trunk/arch/tile/include/asm/page.h | 18 +- trunk/arch/tile/include/asm/parport.h | 1 + trunk/arch/tile/include/asm/pci.h | 3 +- trunk/arch/tile/include/asm/pgtable_64.h | 175 + trunk/arch/tile/include/asm/processor.h | 9 +- trunk/arch/tile/include/asm/serial.h | 1 + trunk/arch/tile/include/asm/signal.h | 4 + trunk/arch/tile/include/asm/spinlock_64.h | 161 + trunk/arch/tile/include/asm/stat.h | 2 +- trunk/arch/tile/include/asm/swab.h | 6 - trunk/arch/tile/include/asm/thread_info.h | 5 +- trunk/arch/tile/include/asm/topology.h | 75 +- trunk/arch/tile/include/asm/traps.h | 4 + trunk/arch/tile/include/asm/unistd.h | 2 +- .../tile/include/{hv/pagesize.h => asm/vga.h} | 35 +- trunk/arch/tile/include/hv/hypervisor.h | 12 +- trunk/arch/tile/kernel/backtrace.c | 103 +- trunk/arch/tile/kernel/compat.c | 13 +- trunk/arch/tile/kernel/compat_signal.c | 4 +- trunk/arch/tile/kernel/futex_64.S | 55 + trunk/arch/tile/kernel/hardwall.c | 6 +- trunk/arch/tile/kernel/head_64.S | 269 + trunk/arch/tile/kernel/intvec_32.S | 175 +- trunk/arch/tile/kernel/intvec_64.S | 1231 ++ trunk/arch/tile/kernel/module.c | 8 +- trunk/arch/tile/kernel/pci-dma.c | 2 +- trunk/arch/tile/kernel/pci.c | 206 +- trunk/arch/tile/kernel/process.c | 52 +- trunk/arch/tile/kernel/regs_64.S | 145 + trunk/arch/tile/kernel/setup.c | 6 + trunk/arch/tile/kernel/signal.c | 128 +- trunk/arch/tile/kernel/single_step.c | 12 + trunk/arch/tile/kernel/stack.c | 14 +- trunk/arch/tile/kernel/sys.c | 9 - trunk/arch/tile/kernel/tile-desc_32.c | 11 +- trunk/arch/tile/kernel/tile-desc_64.c | 2200 +++ trunk/arch/tile/kernel/time.c | 2 + trunk/arch/tile/kernel/tlb.c | 12 +- trunk/arch/tile/kernel/traps.c | 1 + trunk/arch/tile/kernel/vmlinux.lds.S | 2 +- trunk/arch/tile/lib/atomic_asm_32.S | 2 +- trunk/arch/tile/lib/cacheflush.c | 18 + trunk/arch/tile/lib/memchr_64.c | 71 + trunk/arch/tile/lib/memcpy_64.c | 220 + trunk/arch/tile/lib/memcpy_user_64.c | 86 + trunk/arch/tile/lib/memset_64.c | 145 + trunk/arch/tile/lib/spinlock_64.c | 104 + trunk/arch/tile/lib/strchr_64.c | 67 + trunk/arch/tile/lib/strlen_64.c | 38 + trunk/arch/tile/lib/usercopy_64.S | 196 + trunk/arch/tile/mm/fault.c | 30 +- trunk/arch/tile/mm/init.c | 2 - trunk/arch/tile/mm/migrate_64.S | 187 + trunk/arch/um/Kconfig.debug | 16 +- trunk/arch/um/Kconfig.x86 | 4 +- trunk/arch/um/drivers/Makefile | 4 +- trunk/arch/um/drivers/mcast.h | 24 - trunk/arch/um/drivers/mcast_kern.c | 120 - trunk/arch/um/drivers/mcast_user.c | 165 - trunk/arch/um/drivers/umcast.h | 27 + trunk/arch/um/drivers/umcast_kern.c | 188 + trunk/arch/um/drivers/umcast_user.c | 186 + trunk/arch/um/drivers/xterm.c | 2 +- trunk/arch/um/include/asm/common.lds.S | 2 +- trunk/arch/um/include/asm/processor-generic.h | 2 + trunk/arch/um/include/asm/smp.h | 1 - trunk/arch/um/include/asm/tlb.h | 29 +- trunk/arch/um/include/shared/os.h | 7 + trunk/arch/um/kernel/Makefile | 1 + trunk/arch/um/kernel/early_printk.c | 33 + trunk/arch/um/kernel/smp.c | 3 - trunk/arch/um/kernel/trap.c | 24 + trunk/arch/um/os-Linux/main.c | 3 +- trunk/arch/um/os-Linux/process.c | 1 + trunk/arch/um/os-Linux/util.c | 5 + trunk/arch/unicore32/Kconfig.debug | 7 - trunk/arch/unicore32/mm/init.c | 2 +- trunk/arch/unicore32/mm/mmu.c | 2 - trunk/arch/x86/Kconfig | 3 +- trunk/arch/x86/Kconfig.debug | 20 - trunk/arch/x86/include/asm/apic.h | 29 +- trunk/arch/x86/include/asm/io.h | 24 +- trunk/arch/x86/include/asm/io_apic.h | 28 +- trunk/arch/x86/include/asm/linkage.h | 5 - trunk/arch/x86/include/asm/pci.h | 2 - trunk/arch/x86/include/asm/percpu.h | 7 +- trunk/arch/x86/include/asm/x2apic.h | 62 + trunk/arch/x86/kernel/acpi/boot.c | 8 +- trunk/arch/x86/kernel/apic/Makefile | 17 +- trunk/arch/x86/kernel/apic/apic.c | 48 +- trunk/arch/x86/kernel/apic/apic_flat_64.c | 26 +- trunk/arch/x86/kernel/apic/bigsmp_32.c | 12 +- trunk/arch/x86/kernel/apic/es7000_32.c | 10 +- trunk/arch/x86/kernel/apic/io_apic.c | 309 +- trunk/arch/x86/kernel/apic/numaq_32.c | 6 +- trunk/arch/x86/kernel/apic/probe_32.c | 117 +- trunk/arch/x86/kernel/apic/probe_64.c | 61 +- trunk/arch/x86/kernel/apic/summit_32.c | 4 +- trunk/arch/x86/kernel/apic/x2apic_cluster.c | 222 +- trunk/arch/x86/kernel/apic/x2apic_phys.c | 115 +- trunk/arch/x86/kernel/apic/x2apic_uv_x.c | 13 +- trunk/arch/x86/kernel/devicetree.c | 6 +- trunk/arch/x86/kernel/mpparse.c | 2 +- trunk/arch/x86/kernel/pci-dma.c | 64 - trunk/arch/x86/kernel/ptrace.c | 4 +- trunk/arch/x86/kernel/setup.c | 3 +- trunk/arch/x86/kernel/tboot.c | 1 - trunk/arch/x86/kernel/vmlinux.lds.S | 9 +- trunk/arch/x86/kvm/mmu.c | 3 +- trunk/arch/x86/mm/fault.c | 12 +- trunk/arch/x86/mm/hugetlbpage.c | 4 +- trunk/arch/x86/mm/init.c | 2 - trunk/arch/x86/pci/direct.c | 17 +- trunk/arch/x86/pci/irq.c | 4 +- trunk/arch/x86/pci/mmconfig-shared.c | 10 + trunk/arch/xtensa/include/asm/page.h | 4 - trunk/arch/xtensa/kernel/vmlinux.lds.S | 2 +- trunk/arch/xtensa/mm/mmu.c | 2 - trunk/arch/xtensa/mm/pgtable.c | 72 - trunk/block/blk-cgroup.c | 200 +- trunk/block/blk-cgroup.h | 40 +- trunk/block/blk-core.c | 32 +- trunk/block/blk-exec.c | 2 +- trunk/block/blk-flush.c | 16 +- trunk/block/blk-ioc.c | 3 + trunk/block/blk-lib.c | 82 +- trunk/block/blk-settings.c | 9 +- trunk/block/blk-sysfs.c | 3 +- trunk/block/blk-throttle.c | 313 +- trunk/block/blk.h | 23 +- trunk/block/cfq-iosched.c | 232 +- trunk/block/elevator.c | 11 +- trunk/drivers/Kconfig | 2 + trunk/drivers/Makefile | 8 +- trunk/drivers/acpi/Kconfig | 11 - trunk/drivers/acpi/Makefile | 1 - trunk/drivers/acpi/apei/einj.c | 8 + trunk/drivers/acpi/atomicio.c | 4 + trunk/drivers/acpi/pci_root.c | 14 +- trunk/drivers/ata/libata-scsi.c | 13 +- trunk/drivers/ata/pata_pcmcia.c | 2 +- trunk/drivers/base/node.c | 14 +- trunk/drivers/block/Kconfig | 21 + trunk/drivers/block/Makefile | 1 + trunk/drivers/block/cciss.c | 571 +- trunk/drivers/block/cciss.h | 11 +- trunk/drivers/block/cciss_cmd.h | 11 + trunk/drivers/block/cciss_scsi.c | 41 +- trunk/drivers/block/cciss_scsi.h | 4 - trunk/drivers/block/drbd/drbd_actlog.c | 2 +- trunk/drivers/block/drbd/drbd_bitmap.c | 6 +- trunk/drivers/block/drbd/drbd_int.h | 19 +- trunk/drivers/block/drbd/drbd_main.c | 37 +- trunk/drivers/block/drbd/drbd_nl.c | 127 +- trunk/drivers/block/drbd/drbd_receiver.c | 68 +- trunk/drivers/block/drbd/drbd_req.c | 20 +- trunk/drivers/block/drbd/drbd_req.h | 5 +- trunk/drivers/block/drbd/drbd_worker.c | 98 +- trunk/drivers/block/loop.c | 11 +- trunk/drivers/block/paride/pcd.c | 2 + trunk/drivers/block/rbd.c | 27 +- trunk/drivers/block/xen-blkback/Makefile | 3 + trunk/drivers/block/xen-blkback/blkback.c | 824 + trunk/drivers/block/xen-blkback/common.h | 233 + trunk/drivers/block/xen-blkback/xenbus.c | 768 + trunk/drivers/block/xen-blkfront.c | 51 +- trunk/drivers/bluetooth/bluecard_cs.c | 2 +- trunk/drivers/bluetooth/bt3c_cs.c | 2 +- trunk/drivers/bluetooth/btuart_cs.c | 2 +- trunk/drivers/bluetooth/dtl1_cs.c | 2 +- trunk/drivers/bluetooth/hci_ldisc.c | 19 +- trunk/drivers/cdrom/viocd.c | 4 +- trunk/drivers/char/agp/intel-agp.c | 3 + trunk/drivers/char/agp/intel-agp.h | 8 + trunk/drivers/char/agp/intel-gtt.c | 10 + trunk/drivers/char/agp/uninorth-agp.c | 2 +- trunk/drivers/char/i8k.c | 166 +- trunk/drivers/char/pcmcia/cm4000_cs.c | 2 +- trunk/drivers/char/pcmcia/cm4040_cs.c | 2 +- trunk/drivers/char/pcmcia/synclink_cs.c | 2 +- trunk/drivers/clocksource/Kconfig | 3 + trunk/drivers/clocksource/Makefile | 1 + trunk/drivers/clocksource/mmio.c | 73 + trunk/drivers/clocksource/sh_cmt.c | 31 +- trunk/drivers/clocksource/sh_tmu.c | 31 +- trunk/drivers/cpufreq/Makefile | 2 + trunk/drivers/cpufreq/db8500-cpufreq.c | 169 + trunk/drivers/crypto/Kconfig | 2 + trunk/drivers/dma/shdma.c | 230 +- trunk/drivers/dma/shdma.h | 3 +- trunk/drivers/edac/i3200_edac.c | 13 + trunk/drivers/gpio/ml_ioh_gpio.c | 3 + trunk/drivers/gpio/vx855_gpio.c | 1 + trunk/drivers/gpu/drm/drm_edid.c | 61 +- trunk/drivers/gpu/drm/drm_fb_helper.c | 207 +- trunk/drivers/gpu/drm/drm_irq.c | 9 +- trunk/drivers/gpu/drm/drm_modes.c | 156 + trunk/drivers/gpu/drm/drm_stub.c | 21 + trunk/drivers/gpu/drm/i915/i915_debugfs.c | 131 +- trunk/drivers/gpu/drm/i915/i915_dma.c | 60 +- trunk/drivers/gpu/drm/i915/i915_drv.c | 68 +- trunk/drivers/gpu/drm/i915/i915_drv.h | 113 +- trunk/drivers/gpu/drm/i915/i915_gem.c | 45 +- trunk/drivers/gpu/drm/i915/i915_gem_gtt.c | 35 +- trunk/drivers/gpu/drm/i915/i915_gem_tiling.c | 2 +- trunk/drivers/gpu/drm/i915/i915_irq.c | 311 +- trunk/drivers/gpu/drm/i915/i915_reg.h | 35 +- trunk/drivers/gpu/drm/i915/i915_suspend.c | 3 +- trunk/drivers/gpu/drm/i915/intel_bios.c | 6 +- trunk/drivers/gpu/drm/i915/intel_crt.c | 24 +- trunk/drivers/gpu/drm/i915/intel_display.c | 2377 +-- trunk/drivers/gpu/drm/i915/intel_drv.h | 19 +- trunk/drivers/gpu/drm/i915/intel_ringbuffer.c | 88 +- trunk/drivers/gpu/drm/i915/intel_ringbuffer.h | 35 +- trunk/drivers/gpu/drm/i915/intel_sdvo.c | 10 +- trunk/drivers/gpu/drm/i915/intel_tv.c | 13 +- trunk/drivers/gpu/drm/nouveau/Kconfig | 2 + trunk/drivers/gpu/drm/nouveau/Makefile | 2 + trunk/drivers/gpu/drm/nouveau/nouveau_acpi.c | 108 +- trunk/drivers/gpu/drm/nouveau/nouveau_bios.c | 7 +- trunk/drivers/gpu/drm/nouveau/nouveau_bios.h | 1 + .../drivers/gpu/drm/nouveau/nouveau_channel.c | 20 +- .../gpu/drm/nouveau/nouveau_connector.c | 8 +- .../drivers/gpu/drm/nouveau/nouveau_display.c | 2 +- trunk/drivers/gpu/drm/nouveau/nouveau_drv.c | 25 +- trunk/drivers/gpu/drm/nouveau/nouveau_drv.h | 208 +- trunk/drivers/gpu/drm/nouveau/nouveau_grctx.h | 10 +- trunk/drivers/gpu/drm/nouveau/nouveau_mem.c | 66 +- .../drivers/gpu/drm/nouveau/nouveau_object.c | 118 +- trunk/drivers/gpu/drm/nouveau/nouveau_perf.c | 92 +- trunk/drivers/gpu/drm/nouveau/nouveau_pm.c | 21 +- trunk/drivers/gpu/drm/nouveau/nouveau_reg.h | 14 +- trunk/drivers/gpu/drm/nouveau/nouveau_state.c | 212 +- trunk/drivers/gpu/drm/nouveau/nouveau_vm.h | 3 +- trunk/drivers/gpu/drm/nouveau/nouveau_volt.c | 10 +- trunk/drivers/gpu/drm/nouveau/nv04_crtc.c | 9 +- trunk/drivers/gpu/drm/nouveau/nv04_graph.c | 383 +- trunk/drivers/gpu/drm/nouveau/nv04_instmem.c | 3 + trunk/drivers/gpu/drm/nouveau/nv10_graph.c | 212 +- trunk/drivers/gpu/drm/nouveau/nv20_graph.c | 510 +- trunk/drivers/gpu/drm/nouveau/nv40_fifo.c | 2 + trunk/drivers/gpu/drm/nouveau/nv40_graph.c | 323 +- trunk/drivers/gpu/drm/nouveau/nv40_mpeg.c | 311 + trunk/drivers/gpu/drm/nouveau/nv50_calc.c | 68 +- trunk/drivers/gpu/drm/nouveau/nv50_crtc.c | 13 +- trunk/drivers/gpu/drm/nouveau/nv50_display.c | 18 +- trunk/drivers/gpu/drm/nouveau/nv50_graph.c | 442 +- trunk/drivers/gpu/drm/nouveau/nv50_grctx.c | 10 +- trunk/drivers/gpu/drm/nouveau/nv50_mpeg.c | 256 + trunk/drivers/gpu/drm/nouveau/nv50_pm.c | 15 + trunk/drivers/gpu/drm/nouveau/nv50_vm.c | 12 +- trunk/drivers/gpu/drm/nouveau/nv84_crypt.c | 135 +- trunk/drivers/gpu/drm/nouveau/nva3_copy.c | 226 + trunk/drivers/gpu/drm/nouveau/nva3_copy.fuc | 870 + trunk/drivers/gpu/drm/nouveau/nva3_copy.fuc.h | 534 + trunk/drivers/gpu/drm/nouveau/nva3_pm.c | 169 +- trunk/drivers/gpu/drm/nouveau/nvc0_copy.c | 243 + trunk/drivers/gpu/drm/nouveau/nvc0_copy.fuc.h | 527 + trunk/drivers/gpu/drm/nouveau/nvc0_fifo.c | 142 +- trunk/drivers/gpu/drm/nouveau/nvc0_graph.c | 600 +- trunk/drivers/gpu/drm/nouveau/nvc0_graph.h | 29 +- trunk/drivers/gpu/drm/nouveau/nvc0_grctx.c | 20 +- trunk/drivers/gpu/drm/radeon/atom.c | 4 +- trunk/drivers/gpu/drm/radeon/atombios.h | 22 +- trunk/drivers/gpu/drm/radeon/atombios_crtc.c | 132 +- trunk/drivers/gpu/drm/radeon/atombios_dp.c | 1046 +- trunk/drivers/gpu/drm/radeon/evergreen.c | 14 +- trunk/drivers/gpu/drm/radeon/evergreend.h | 2 + trunk/drivers/gpu/drm/radeon/ni.c | 8 +- trunk/drivers/gpu/drm/radeon/nid.h | 4 +- trunk/drivers/gpu/drm/radeon/radeon_asic.c | 4 + trunk/drivers/gpu/drm/radeon/radeon_combios.c | 117 +- .../gpu/drm/radeon/radeon_connectors.c | 607 +- trunk/drivers/gpu/drm/radeon/radeon_device.c | 3 + trunk/drivers/gpu/drm/radeon/radeon_display.c | 10 +- trunk/drivers/gpu/drm/radeon/radeon_drv.c | 3 +- .../drivers/gpu/drm/radeon/radeon_encoders.c | 252 +- trunk/drivers/gpu/drm/radeon/radeon_i2c.c | 2 + trunk/drivers/gpu/drm/radeon/radeon_mode.h | 19 +- trunk/drivers/gpu/drm/ttm/ttm_page_alloc.c | 4 +- trunk/drivers/gpu/vga/vga_switcheroo.c | 6 - trunk/drivers/gpu/vga/vgaarb.c | 113 +- trunk/drivers/hid/hid-core.c | 20 +- trunk/drivers/hid/hid-ids.h | 21 +- trunk/drivers/hwmon/Kconfig | 42 +- trunk/drivers/hwmon/Makefile | 3 + trunk/drivers/hwmon/abituguru.c | 3 - trunk/drivers/hwmon/abituguru3.c | 13 - .../acpi_power_meter.c} | 0 trunk/drivers/hwmon/adcxx.c | 16 +- trunk/drivers/hwmon/coretemp.c | 24 +- trunk/drivers/hwmon/emc6w201.c | 539 + trunk/drivers/hwmon/f71882fg.c | 115 +- trunk/drivers/hwmon/fam15h_power.c | 229 + trunk/drivers/hwmon/ibmaem.c | 10 +- trunk/drivers/hwmon/it87.c | 31 +- trunk/drivers/hwmon/jc42.c | 2 +- trunk/drivers/hwmon/k10temp.c | 11 +- trunk/drivers/hwmon/k8temp.c | 8 +- trunk/drivers/hwmon/lm70.c | 10 +- trunk/drivers/hwmon/max6650.c | 78 +- trunk/drivers/hwmon/sch5627.c | 46 +- trunk/drivers/hwmon/ultra45_env.c | 4 +- trunk/drivers/i2c/busses/Kconfig | 12 +- trunk/drivers/i2c/busses/i2c-eg20t.c | 2 + trunk/drivers/i2c/busses/i2c-i801.c | 60 +- trunk/drivers/i2c/busses/i2c-nomadik.c | 276 +- trunk/drivers/i2c/busses/i2c-parport-light.c | 10 +- trunk/drivers/i2c/busses/i2c-parport.c | 30 +- trunk/drivers/i2c/busses/i2c-parport.h | 74 +- trunk/drivers/i2c/busses/i2c-sh_mobile.c | 20 +- trunk/drivers/i2c/busses/i2c-tegra.c | 39 +- trunk/drivers/ide/ide-cd.c | 3 +- trunk/drivers/ide/ide-cs.c | 2 +- trunk/drivers/input/evdev.c | 19 +- trunk/drivers/input/input-compat.h | 2 +- trunk/drivers/input/input-polldev.c | 56 +- trunk/drivers/input/input.c | 1 - trunk/drivers/input/joydev.c | 1 - trunk/drivers/input/keyboard/Kconfig | 22 + trunk/drivers/input/keyboard/Makefile | 2 + trunk/drivers/input/keyboard/adp5589-keys.c | 771 + trunk/drivers/input/keyboard/gpio_keys.c | 11 +- .../drivers/input/keyboard/mpr121_touchkey.c | 339 + trunk/drivers/input/keyboard/omap-keypad.c | 6 +- trunk/drivers/input/keyboard/qt1070.c | 1 + trunk/drivers/input/keyboard/sh_keysc.c | 53 +- trunk/drivers/input/keyboard/tegra-kbc.c | 60 +- trunk/drivers/input/misc/ad714x.c | 129 +- trunk/drivers/input/misc/ati_remote2.c | 9 +- trunk/drivers/input/misc/rotary_encoder.c | 119 +- trunk/drivers/input/misc/twl4030-pwrbutton.c | 2 +- trunk/drivers/input/mouse/elantech.c | 72 +- trunk/drivers/input/mouse/elantech.h | 6 + trunk/drivers/input/mousedev.c | 1 - trunk/drivers/input/serio/serport.c | 10 +- trunk/drivers/input/touchscreen/Kconfig | 12 + trunk/drivers/input/touchscreen/Makefile | 1 + trunk/drivers/input/touchscreen/ads7846.c | 26 +- .../drivers/input/touchscreen/atmel_mxt_ts.c | 92 +- .../drivers/input/touchscreen/atmel_tsadcc.c | 2 +- .../input/touchscreen/h3600_ts_input.c | 8 +- trunk/drivers/input/touchscreen/max11801_ts.c | 272 + trunk/drivers/input/touchscreen/tsc2007.c | 26 +- trunk/drivers/isdn/gigaset/ser-gigaset.c | 8 +- trunk/drivers/isdn/hardware/avm/avm_cs.c | 2 +- trunk/drivers/isdn/hisax/avma1_cs.c | 2 +- trunk/drivers/isdn/hisax/elsa_cs.c | 2 +- trunk/drivers/isdn/hisax/sedlbauer_cs.c | 2 +- trunk/drivers/isdn/hisax/teles_cs.c | 2 +- trunk/drivers/leds/Kconfig | 24 +- trunk/drivers/leds/Makefile | 2 +- trunk/drivers/leds/led-class.c | 3 +- trunk/drivers/leds/leds-gpio-register.c | 42 + trunk/drivers/leds/leds-h1940.c | 170 - trunk/drivers/leds/leds-lm3530.c | 73 +- trunk/drivers/leds/leds-pca9532.c | 191 +- trunk/drivers/leds/leds.h | 7 + trunk/drivers/leds/ledtrig-timer.c | 3 + trunk/drivers/media/common/saa7146_core.c | 7 +- trunk/drivers/media/common/tuners/Kconfig | 8 + trunk/drivers/media/common/tuners/Makefile | 1 + trunk/drivers/media/common/tuners/mxl5005s.c | 2 + trunk/drivers/media/common/tuners/tda18212.c | 265 + trunk/drivers/media/common/tuners/tda18212.h | 48 + .../media/common/tuners/tda18212_priv.h | 44 + .../drivers/media/common/tuners/tda18271-fe.c | 4 + trunk/drivers/media/common/tuners/xc5000.c | 32 +- trunk/drivers/media/dvb/b2c2/flexcop-pci.c | 4 +- trunk/drivers/media/dvb/bt8xx/bt878.c | 2 +- trunk/drivers/media/dvb/dvb-core/dvb_demux.c | 117 +- .../drivers/media/dvb/dvb-core/dvb_frontend.c | 365 +- .../drivers/media/dvb/dvb-core/dvb_frontend.h | 3 + trunk/drivers/media/dvb/dvb-usb/Kconfig | 5 + trunk/drivers/media/dvb/dvb-usb/a800.c | 17 +- trunk/drivers/media/dvb/dvb-usb/anysee.c | 620 +- trunk/drivers/media/dvb/dvb-usb/anysee.h | 23 +- trunk/drivers/media/dvb/dvb-usb/au6610.c | 22 +- trunk/drivers/media/dvb/dvb-usb/ce6230.c | 11 +- trunk/drivers/media/dvb/dvb-usb/dib0700.h | 5 +- .../drivers/media/dvb/dvb-usb/dib0700_core.c | 220 +- .../media/dvb/dvb-usb/dib0700_devices.c | 8 +- .../drivers/media/dvb/dvb-usb/dibusb-common.c | 2 +- trunk/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c | 31 +- trunk/drivers/media/dvb/dvb-usb/dvb-usb-ids.h | 1 + trunk/drivers/media/dvb/dvb-usb/dw2102.c | 10 +- trunk/drivers/media/dvb/dvb-usb/ec168.c | 18 +- trunk/drivers/media/dvb/dvb-usb/friio.c | 23 +- trunk/drivers/media/dvb/dvb-usb/lmedm04.c | 165 +- trunk/drivers/media/dvb/dvb-usb/lmedm04.h | 5 +- trunk/drivers/media/dvb/dvb-usb/m920x.c | 49 +- trunk/drivers/media/dvb/dvb-usb/nova-t-usb2.c | 2 +- trunk/drivers/media/dvb/dvb-usb/opera1.c | 33 +- trunk/drivers/media/dvb/dvb-usb/vp702x-fe.c | 80 +- trunk/drivers/media/dvb/dvb-usb/vp702x.c | 213 +- trunk/drivers/media/dvb/dvb-usb/vp702x.h | 7 + trunk/drivers/media/dvb/dvb-usb/vp7045.c | 47 +- trunk/drivers/media/dvb/frontends/Kconfig | 19 +- trunk/drivers/media/dvb/frontends/Makefile | 6 +- .../drivers/media/dvb/frontends/bsbe1-d01a.h | 146 + trunk/drivers/media/dvb/frontends/bsru6.h | 2 +- trunk/drivers/media/dvb/frontends/cx24116.c | 21 +- trunk/drivers/media/dvb/frontends/cx24116.h | 3 + trunk/drivers/media/dvb/frontends/cxd2820r.h | 118 + .../drivers/media/dvb/frontends/cxd2820r_c.c | 338 + .../media/dvb/frontends/cxd2820r_core.c | 915 ++ .../media/dvb/frontends/cxd2820r_priv.h | 166 + .../drivers/media/dvb/frontends/cxd2820r_t.c | 449 + .../drivers/media/dvb/frontends/cxd2820r_t2.c | 423 + trunk/drivers/media/dvb/frontends/dib0070.c | 40 +- trunk/drivers/media/dvb/frontends/dib0090.c | 71 +- trunk/drivers/media/dvb/frontends/dib7000m.c | 49 +- trunk/drivers/media/dvb/frontends/dib7000p.c | 72 +- trunk/drivers/media/dvb/frontends/dib8000.c | 126 +- trunk/drivers/media/dvb/frontends/dib9000.c | 176 +- .../media/dvb/frontends/dibx000_common.c | 109 +- .../media/dvb/frontends/dibx000_common.h | 5 + trunk/drivers/media/dvb/frontends/drx397xD.c | 1511 -- trunk/drivers/media/dvb/frontends/drx397xD.h | 130 - .../drivers/media/dvb/frontends/drx397xD_fw.h | 40 - trunk/drivers/media/dvb/frontends/drxd.h | 61 + trunk/drivers/media/dvb/frontends/drxd_firm.c | 929 ++ trunk/drivers/media/dvb/frontends/drxd_firm.h | 115 + trunk/drivers/media/dvb/frontends/drxd_hard.c | 3001 ++++ .../media/dvb/frontends/drxd_map_firm.h | 1013 ++ trunk/drivers/media/dvb/frontends/eds1547.h | 2 +- trunk/drivers/media/dvb/frontends/ix2505v.c | 10 +- trunk/drivers/media/dvb/frontends/stv0288.c | 2 +- trunk/drivers/media/dvb/frontends/stv0299.c | 10 +- trunk/drivers/media/dvb/frontends/z0194a.h | 2 +- trunk/drivers/media/dvb/mantis/hopper_cards.c | 2 +- trunk/drivers/media/dvb/mantis/mantis_cards.c | 2 +- trunk/drivers/media/dvb/mantis/mantis_pci.c | 5 +- .../drivers/media/dvb/mantis/mantis_vp1033.c | 2 +- trunk/drivers/media/dvb/pt1/pt1.c | 5 +- trunk/drivers/media/dvb/siano/smsusb.c | 3 +- trunk/drivers/media/dvb/ttpci/Kconfig | 2 + trunk/drivers/media/dvb/ttpci/budget-ci.c | 21 + .../media/dvb/ttusb-budget/dvb-ttusb-budget.c | 60 +- .../media/radio/si470x/radio-si470x-common.c | 60 +- .../media/radio/si470x/radio-si470x-i2c.c | 63 +- .../drivers/media/radio/si470x/radio-si470x.h | 4 +- trunk/drivers/media/radio/wl128x/fmdrv.h | 2 - trunk/drivers/media/rc/Kconfig | 11 + trunk/drivers/media/rc/Makefile | 1 + trunk/drivers/media/rc/imon.c | 36 +- trunk/drivers/media/rc/ite-cir.c | 60 +- trunk/drivers/media/rc/keymaps/Makefile | 1 + .../media/rc/keymaps/rc-avermedia-cardbus.c | 2 +- trunk/drivers/media/rc/keymaps/rc-imon-mce.c | 2 +- trunk/drivers/media/rc/keymaps/rc-imon-pad.c | 6 +- .../rc/keymaps/rc-kworld-plus-tv-analog.c | 2 +- trunk/drivers/media/rc/keymaps/rc-rc6-mce.c | 4 +- trunk/drivers/media/rc/keymaps/rc-tivo.c | 98 + trunk/drivers/media/rc/keymaps/rc-winfast.c | 4 +- trunk/drivers/media/rc/mceusb.c | 34 +- trunk/drivers/media/rc/nuvoton-cir.c | 75 +- trunk/drivers/media/rc/nuvoton-cir.h | 17 +- trunk/drivers/media/rc/rc-loopback.c | 6 + trunk/drivers/media/rc/rc-main.c | 54 +- trunk/drivers/media/rc/redrat3.c | 1344 ++ trunk/drivers/media/rc/winbond-cir.c | 447 +- trunk/drivers/media/video/Kconfig | 149 +- trunk/drivers/media/video/Makefile | 2 + trunk/drivers/media/video/bt8xx/bttv-driver.c | 2 +- trunk/drivers/media/video/cpia2/cpia2_v4l.c | 2 +- trunk/drivers/media/video/cx18/Kconfig | 4 + trunk/drivers/media/video/cx18/cx18-cards.c | 18 +- trunk/drivers/media/video/cx18/cx18-cards.h | 2 +- trunk/drivers/media/video/cx18/cx18-driver.c | 27 +- trunk/drivers/media/video/cx18/cx18-driver.h | 25 + trunk/drivers/media/video/cx18/cx18-fileops.c | 70 + trunk/drivers/media/video/cx18/cx18-fileops.h | 2 + trunk/drivers/media/video/cx18/cx18-ioctl.c | 144 +- trunk/drivers/media/video/cx18/cx18-mailbox.c | 58 + trunk/drivers/media/video/cx18/cx18-streams.c | 177 +- trunk/drivers/media/video/cx18/cx18-version.h | 2 +- trunk/drivers/media/video/cx18/cx23418.h | 6 + .../media/video/cx231xx/cx231xx-cards.c | 67 + .../drivers/media/video/cx231xx/cx231xx-dvb.c | 1 + trunk/drivers/media/video/cx231xx/cx231xx.h | 2 + .../media/video/cx23885/cx23885-cards.c | 1 + .../media/video/cx23885/cx23885-core.c | 2 +- .../drivers/media/video/cx88/cx88-blackbird.c | 41 +- trunk/drivers/media/video/cx88/cx88-dvb.c | 2 + trunk/drivers/media/video/cx88/cx88-mpeg.c | 42 +- trunk/drivers/media/video/cx88/cx88-video.c | 7 +- trunk/drivers/media/video/cx88/cx88.h | 11 +- trunk/drivers/media/video/em28xx/Kconfig | 2 + .../drivers/media/video/em28xx/em28xx-cards.c | 49 +- .../drivers/media/video/em28xx/em28xx-core.c | 9 +- trunk/drivers/media/video/em28xx/em28xx-dvb.c | 160 +- trunk/drivers/media/video/em28xx/em28xx-i2c.c | 2 +- trunk/drivers/media/video/em28xx/em28xx-reg.h | 1 + trunk/drivers/media/video/em28xx/em28xx.h | 3 +- trunk/drivers/media/video/fsl-viu.c | 56 +- trunk/drivers/media/video/gspca/Kconfig | 9 + trunk/drivers/media/video/gspca/Makefile | 2 + trunk/drivers/media/video/gspca/cpia1.c | 6 +- trunk/drivers/media/video/gspca/gl860/gl860.c | 15 +- trunk/drivers/media/video/gspca/gspca.c | 4 +- trunk/drivers/media/video/gspca/gspca.h | 6 +- trunk/drivers/media/video/gspca/jeilinj.c | 581 +- trunk/drivers/media/video/gspca/kinect.c | 429 + trunk/drivers/media/video/gspca/spca508.c | 5 +- trunk/drivers/media/video/gspca/stk014.c | 15 +- .../video/gspca/stv06xx/stv06xx_pb0100.c | 2 + trunk/drivers/media/video/gspca/sunplus.c | 99 +- trunk/drivers/media/video/gspca/t613.c | 17 +- trunk/drivers/media/video/gspca/zc3xx.c | 47 +- trunk/drivers/media/video/ivtv/ivtv-driver.c | 4 +- trunk/drivers/media/video/mt9m111.c | 14 +- trunk/drivers/media/video/mt9v022.c | 2 +- trunk/drivers/media/video/mt9v032.c | 773 + trunk/drivers/media/video/mx3_camera.c | 60 +- trunk/drivers/media/video/omap/omap_vout.c | 2 +- trunk/drivers/media/video/omap/omap_voutdef.h | 2 +- trunk/drivers/media/video/omap1_camera.c | 43 +- .../drivers/media/video/pvrusb2/pvrusb2-std.c | 10 +- trunk/drivers/media/video/pwc/pwc-if.c | 2 +- trunk/drivers/media/video/pwc/pwc-v4l.c | 23 +- trunk/drivers/media/video/pxa_camera.c | 8 +- trunk/drivers/media/video/s2255drv.c | 27 +- trunk/drivers/media/video/s5p-fimc/Makefile | 6 +- .../drivers/media/video/s5p-fimc/mipi-csis.c | 724 + .../drivers/media/video/s5p-fimc/mipi-csis.h | 22 + .../media/video/saa7134/saa7134-cards.c | 125 + .../media/video/saa7134/saa7134-core.c | 2 +- .../drivers/media/video/saa7134/saa7134-dvb.c | 34 + .../media/video/saa7134/saa7134-input.c | 8 + trunk/drivers/media/video/saa7134/saa7134.h | 3 + .../media/video/saa7164/saa7164-core.c | 2 +- .../media/video/sh_mobile_ceu_camera.c | 148 +- trunk/drivers/media/video/soc_camera.c | 29 +- trunk/drivers/media/video/soc_mediabus.c | 265 +- trunk/drivers/media/video/tveeprom.c | 32 +- .../media/video/usbvision/usbvision-cards.c | 33 +- .../media/video/usbvision/usbvision-cards.h | 2 + .../media/video/usbvision/usbvision-core.c | 165 +- .../media/video/usbvision/usbvision-i2c.c | 2 +- .../media/video/usbvision/usbvision-video.c | 3 +- .../drivers/media/video/usbvision/usbvision.h | 6 + trunk/drivers/media/video/uvc/uvc_ctrl.c | 367 +- trunk/drivers/media/video/uvc/uvc_driver.c | 28 + trunk/drivers/media/video/uvc/uvc_queue.c | 34 +- trunk/drivers/media/video/uvc/uvc_v4l2.c | 68 +- trunk/drivers/media/video/uvc/uvcvideo.h | 64 +- trunk/drivers/media/video/v4l2-dev.c | 18 + trunk/drivers/media/video/via-camera.c | 1 + trunk/drivers/media/video/zoran/zoran_card.c | 10 +- trunk/drivers/mfd/Kconfig | 22 +- trunk/drivers/mfd/Makefile | 5 +- trunk/drivers/mfd/ab8500-i2c.c | 3 +- .../mfd/db5500-prcmu-regs.h} | 27 +- trunk/drivers/mfd/db5500-prcmu.c | 448 + trunk/drivers/mfd/db8500-prcmu-regs.h | 166 + trunk/drivers/mfd/db8500-prcmu.c | 2069 +++ trunk/drivers/misc/Kconfig | 25 +- trunk/drivers/misc/Makefile | 1 + trunk/drivers/misc/pch_phub.c | 153 +- trunk/drivers/misc/pti.c | 980 ++ trunk/drivers/misc/ti-st/st_core.c | 6 +- trunk/drivers/mmc/card/block.c | 712 +- trunk/drivers/mmc/card/mmc_test.c | 116 +- trunk/drivers/mmc/card/queue.c | 8 - trunk/drivers/mmc/core/bus.c | 11 +- trunk/drivers/mmc/core/core.c | 111 +- trunk/drivers/mmc/core/core.h | 7 +- trunk/drivers/mmc/core/host.c | 4 +- trunk/drivers/mmc/core/mmc.c | 186 +- trunk/drivers/mmc/core/mmc_ops.c | 80 +- trunk/drivers/mmc/core/mmc_ops.h | 1 - trunk/drivers/mmc/core/quirks.c | 89 +- trunk/drivers/mmc/core/sd.c | 405 +- trunk/drivers/mmc/core/sd.h | 2 +- trunk/drivers/mmc/core/sd_ops.c | 51 +- trunk/drivers/mmc/core/sdio.c | 24 +- trunk/drivers/mmc/core/sdio_irq.c | 33 +- trunk/drivers/mmc/core/sdio_ops.c | 18 +- trunk/drivers/mmc/host/Kconfig | 33 +- trunk/drivers/mmc/host/Makefile | 1 + trunk/drivers/mmc/host/dw_mmc.c | 6 +- trunk/drivers/mmc/host/mmci.c | 6 +- trunk/drivers/mmc/host/mmci.h | 41 +- trunk/drivers/mmc/host/sdhci-pci.c | 49 +- trunk/drivers/mmc/host/sdhci-pxa.c | 48 +- trunk/drivers/mmc/host/sdhci-tegra.c | 2 + trunk/drivers/mmc/host/sdhci.c | 854 +- trunk/drivers/mmc/host/sdhci.h | 59 +- trunk/drivers/mmc/host/sdricoh_cs.c | 2 +- trunk/drivers/mmc/host/sh_mmcif.c | 126 +- trunk/drivers/mmc/host/sh_mobile_sdhi.c | 50 +- trunk/drivers/mmc/host/tmio_mmc.c | 32 +- trunk/drivers/mmc/host/tmio_mmc.h | 16 +- trunk/drivers/mmc/host/tmio_mmc_dma.c | 21 +- trunk/drivers/mmc/host/tmio_mmc_pio.c | 184 +- trunk/drivers/mmc/host/vub300.c | 2506 +++ trunk/drivers/mtd/Kconfig | 3 +- trunk/drivers/mtd/maps/Makefile | 1 - trunk/drivers/mtd/maps/integrator-flash.c | 309 - trunk/drivers/mtd/maps/pcmciamtd.c | 2 +- trunk/drivers/mtd/maps/physmap.c | 28 +- trunk/drivers/mtd/maps/pismo.c | 40 +- trunk/drivers/mtd/ubi/cdev.c | 14 +- trunk/drivers/mtd/ubi/debug.c | 21 +- trunk/drivers/mtd/ubi/debug.h | 161 +- trunk/drivers/mtd/ubi/io.c | 6 +- trunk/drivers/mtd/ubi/scan.c | 2 +- trunk/drivers/mtd/ubi/ubi-media.h | 6 +- trunk/drivers/mtd/ubi/ubi.h | 4 +- trunk/drivers/mtd/ubi/wl.c | 3 +- trunk/drivers/net/Makefile | 1 + trunk/drivers/net/arm/ixp4xx_eth.c | 195 +- trunk/drivers/net/caif/caif_serial.c | 6 +- trunk/drivers/net/can/slcan.c | 9 +- trunk/drivers/net/can/softing/softing_cs.c | 2 +- trunk/drivers/net/e1000e/netdev.c | 2 +- trunk/drivers/net/gianfar_ptp.c | 588 + trunk/drivers/net/hamradio/6pack.c | 8 +- trunk/drivers/net/hamradio/mkiss.c | 11 +- trunk/drivers/net/ioc3-eth.c | 2 +- trunk/drivers/net/irda/irtty-sir.c | 16 +- trunk/drivers/net/pcmcia/3c574_cs.c | 2 +- trunk/drivers/net/pcmcia/3c589_cs.c | 2 +- trunk/drivers/net/pcmcia/axnet_cs.c | 2 +- trunk/drivers/net/pcmcia/com20020_cs.c | 2 +- trunk/drivers/net/pcmcia/fmvj18x_cs.c | 2 +- trunk/drivers/net/pcmcia/ibmtr_cs.c | 2 +- trunk/drivers/net/pcmcia/nmclan_cs.c | 2 +- trunk/drivers/net/pcmcia/pcnet_cs.c | 2 +- trunk/drivers/net/pcmcia/smc91c92_cs.c | 2 +- trunk/drivers/net/pcmcia/xirc2ps_cs.c | 2 +- trunk/drivers/net/phy/Makefile | 1 + trunk/drivers/net/phy/dp83640.c | 1100 ++ trunk/drivers/net/phy/dp83640_reg.h | 267 + trunk/drivers/net/ppp_async.c | 6 +- trunk/drivers/net/ppp_synctty.c | 6 +- trunk/drivers/net/slip.c | 11 +- trunk/drivers/net/tile/tilepro.c | 8 +- trunk/drivers/net/wan/x25_asy.c | 7 +- trunk/drivers/net/wireless/airo_cs.c | 2 +- trunk/drivers/net/wireless/atmel_cs.c | 4 +- trunk/drivers/net/wireless/b43/pcmcia.c | 2 +- trunk/drivers/net/wireless/hostap/hostap_cs.c | 2 +- trunk/drivers/net/wireless/libertas/if_cs.c | 2 +- .../drivers/net/wireless/orinoco/orinoco_cs.c | 2 +- .../net/wireless/orinoco/spectrum_cs.c | 2 +- trunk/drivers/net/wireless/ray_cs.c | 2 +- trunk/drivers/net/wireless/wl3501_cs.c | 2 +- trunk/drivers/parport/parport_cs.c | 2 +- trunk/drivers/parport/parport_pc.c | 2 +- trunk/drivers/pci/access.c | 18 +- trunk/drivers/pci/bus.c | 6 - trunk/drivers/pci/hotplug/acpiphp_glue.c | 7 + trunk/drivers/pci/hotplug/pcihp_slot.c | 45 + trunk/drivers/pci/pci-sysfs.c | 62 + trunk/drivers/pci/pci.c | 444 +- trunk/drivers/pci/pci.h | 3 +- trunk/drivers/pci/pcie/aer/aer_inject.c | 2 +- trunk/drivers/pci/pcie/aer/aerdrv.h | 9 - trunk/drivers/pci/pcie/aspm.c | 21 +- trunk/drivers/pci/probe.c | 43 +- trunk/drivers/pci/quirks.c | 21 +- trunk/drivers/pci/remove.c | 2 - trunk/drivers/pci/setup-bus.c | 125 +- trunk/drivers/pcmcia/ds.c | 6 +- trunk/drivers/pcmcia/sa1100_generic.c | 2 +- trunk/drivers/platform/x86/Kconfig | 7 + trunk/drivers/platform/x86/Makefile | 1 + trunk/drivers/platform/x86/ibm_rtl.c | 13 + trunk/drivers/platform/x86/intel_ips.c | 13 + trunk/drivers/platform/x86/mxm-wmi.c | 111 + trunk/drivers/ptp/Kconfig | 75 + trunk/drivers/ptp/Makefile | 7 + trunk/drivers/ptp/ptp_chardev.c | 159 + trunk/drivers/ptp/ptp_clock.c | 343 + trunk/drivers/ptp/ptp_ixp46x.c | 332 + trunk/drivers/ptp/ptp_private.h | 92 + trunk/drivers/ptp/ptp_sysfs.c | 230 + trunk/drivers/regulator/Kconfig | 7 + trunk/drivers/regulator/Makefile | 1 + trunk/drivers/regulator/db8500-prcmu.c | 558 + trunk/drivers/rtc/Kconfig | 7 + trunk/drivers/rtc/Makefile | 1 + trunk/drivers/rtc/rtc-tile.c | 162 + trunk/drivers/s390/block/dasd_alias.c | 4 - trunk/drivers/s390/block/dasd_eckd.c | 11 +- trunk/drivers/s390/char/Kconfig | 12 - trunk/drivers/s390/char/Makefile | 3 +- trunk/drivers/s390/char/monwriter.c | 4 +- trunk/drivers/s390/char/raw3270.c | 2 - trunk/drivers/s390/char/sclp.h | 24 + trunk/drivers/s390/char/sclp_config.c | 14 +- trunk/drivers/s390/char/sclp_ocf.c | 145 + trunk/drivers/s390/char/sclp_sdias.c | 3 - trunk/drivers/s390/char/sclp_tty.c | 122 +- trunk/drivers/s390/char/tape_3590.c | 11 +- trunk/drivers/s390/char/tape_block.c | 444 - trunk/drivers/s390/char/tape_std.c | 3 +- trunk/drivers/s390/cio/chsc.c | 35 +- trunk/drivers/s390/cio/device_fsm.c | 8 +- trunk/drivers/s390/cio/device_ops.c | 3 - trunk/drivers/s390/cio/qdio_main.c | 2 +- trunk/drivers/s390/crypto/ap_bus.c | 8 +- trunk/drivers/scsi/pcmcia/aha152x_stub.c | 2 +- trunk/drivers/scsi/pcmcia/fdomain_stub.c | 2 +- trunk/drivers/scsi/pcmcia/nsp_cs.c | 2 +- trunk/drivers/scsi/pcmcia/qlogic_stub.c | 2 +- trunk/drivers/scsi/pcmcia/sym53c500_cs.c | 2 +- trunk/drivers/scsi/qla4xxx/ql4_nx.c | 21 + trunk/drivers/scsi/sr.c | 2 +- trunk/drivers/sh/clk/cpg.c | 2 +- trunk/drivers/sh/intc/virq.c | 5 + trunk/drivers/spi/coldfire_qspi.c | 1 + trunk/drivers/staging/Kconfig | 8 +- trunk/drivers/staging/Makefile | 9 +- trunk/drivers/staging/ath6kl/Kconfig | 6 - trunk/drivers/staging/ath6kl/Makefile | 39 +- .../staging/ath6kl/bmi/include/bmi_internal.h | 3 +- trunk/drivers/staging/ath6kl/bmi/src/bmi.c | 8 +- .../sdio/linux_sdio/include/hif_internal.h | 1 - .../ath6kl/hif/sdio/linux_sdio/src/hif.c | 382 +- .../hif/sdio/linux_sdio/src/hif_scatter.c | 10 +- .../drivers/staging/ath6kl/htc2/AR6000/ar6k.c | 5 +- .../drivers/staging/ath6kl/htc2/AR6000/ar6k.h | 3 - .../staging/ath6kl/htc2/AR6000/ar6k_events.c | 3 +- .../staging/ath6kl/htc2/AR6000/ar6k_gmbox.c | 1 - .../ath6kl/htc2/AR6000/ar6k_gmbox_hciuart.c | 3 +- trunk/drivers/staging/ath6kl/htc2/htc.c | 10 +- .../staging/ath6kl/htc2/htc_internal.h | 9 - trunk/drivers/staging/ath6kl/htc2/htc_recv.c | 6 - trunk/drivers/staging/ath6kl/htc2/htc_send.c | 5 - .../drivers/staging/ath6kl/include/a_config.h | 22 - .../drivers/staging/ath6kl/include/a_debug.h | 29 - trunk/drivers/staging/ath6kl/include/a_drv.h | 22 - .../staging/ath6kl/include/a_drv_api.h | 28 - .../drivers/staging/ath6kl/include/a_osapi.h | 29 - .../drivers/staging/ath6kl/include/a_types.h | 58 - .../staging/ath6kl/include/ar6000_api.h | 22 - .../staging/ath6kl/include/athendpack.h | 52 - .../staging/ath6kl/include/athstartpack.h | 55 - trunk/drivers/staging/ath6kl/include/bmi.h | 1 - .../include/common/AR6002/AR6002_regdump.h | 60 - .../common/AR6002/hw2.0/hw/analog_intf_reg.h | 64 - .../common/AR6002/hw2.0/hw/analog_reg.h | 1932 --- .../include/common/AR6002/hw2.0/hw/apb_map.h | 13 - .../include/common/AR6002/hw2.0/hw/gpio_reg.h | 977 -- .../common/AR6002/hw2.0/hw/mbox_host_reg.h | 386 - .../include/common/AR6002/hw2.0/hw/mbox_reg.h | 481 - .../include/common/AR6002/hw2.0/hw/rtc_reg.h | 1163 -- .../include/common/AR6002/hw2.0/hw/si_reg.h | 186 - .../include/common/AR6002/hw2.0/hw/uart_reg.h | 327 - .../include/common/AR6002/hw2.0/hw/vmc_reg.h | 76 - .../AR6002/hw4.0/hw/analog_intf_ares_reg.h | 3291 ---- .../hw4.0/hw/analog_intf_athr_wlan_reg.h | 3674 ----- .../common/AR6002/hw4.0/hw/analog_intf_reg.h | 37 - .../include/common/AR6002/hw4.0/hw/apb_map.h | 8 - .../common/AR6002/hw4.0/hw/bb_lc_reg.h | 7076 --------- .../common/AR6002/hw4.0/hw/efuse_reg.h | 108 - .../AR6002/hw4.0/hw/gpio_athr_wlan_reg.h | 1253 -- .../include/common/AR6002/hw4.0/hw/gpio_reg.h | 1094 -- .../common/AR6002/hw4.0/hw/mac_dma_reg.h | 605 - .../common/AR6002/hw4.0/hw/mac_pcu_reg.h | 3065 ---- .../common/AR6002/hw4.0/hw/mbox_host_reg.h | 13 - .../include/common/AR6002/hw4.0/hw/mbox_reg.h | 8 - .../AR6002/hw4.0/hw/mbox_wlan_host_reg.h | 51 - .../common/AR6002/hw4.0/hw/mbox_wlan_reg.h | 49 - .../include/common/AR6002/hw4.0/hw/rdma_reg.h | 564 - .../include/common/AR6002/hw4.0/hw/rtc_reg.h | 788 - .../common/AR6002/hw4.0/hw/rtc_wlan_reg.h | 1903 --- .../include/common/AR6002/hw4.0/hw/si_reg.h | 209 - .../include/common/AR6002/hw4.0/hw/uart_reg.h | 220 - .../common/AR6002/hw4.0/hw/umbox_reg.h | 37 - .../common/AR6002/hw4.0/hw/umbox_wlan_reg.h | 322 - .../include/common/AR6002/hw4.0/hw/vmc_reg.h | 167 - .../common/AR6002/hw4.0/hw/vmc_wlan_reg.h | 195 - .../staging/ath6kl/include/common/a_hci.h | 682 - .../staging/ath6kl/include/common/bmi_msg.h | 8 - .../ath6kl/include/common/btcoexGpio.h | 86 - .../staging/ath6kl/include/common/dbglog.h | 8 - .../ath6kl/include/common/dset_internal.h | 63 - .../staging/ath6kl/include/common/dsetid.h | 134 - .../ath6kl/include/common/epping_test.h | 9 - .../staging/ath6kl/include/common/gmboxif.h | 8 - .../staging/ath6kl/include/common/gpio.h | 45 - .../staging/ath6kl/include/common/gpio_reg.h | 9 + .../staging/ath6kl/include/common/htc.h | 9 - .../staging/ath6kl/include/common/ini_dset.h | 82 - .../staging/ath6kl/include/common/regDb.h | 29 - .../staging/ath6kl/include/common/regdump.h | 59 - .../include/common/regulatory/reg_dbschema.h | 237 - .../include/common/regulatory/reg_dbvalues.h | 504 - .../staging/ath6kl/include/common/targaddrs.h | 234 +- .../staging/ath6kl/include/common/wlan_dset.h | 33 - .../staging/ath6kl/include/common/wmi.h | 135 +- .../staging/ath6kl/include/common/wmi_thin.h | 347 - .../staging/ath6kl/include/common/wmix.h | 8 - .../staging/ath6kl/include/common_drv.h | 4 - .../drivers/staging/ath6kl/include/gpio_api.h | 59 - trunk/drivers/staging/ath6kl/include/hif.h | 3 +- .../staging/ath6kl/include/target_reg_table.h | 244 - .../staging/ath6kl/miscdrv/ar3kconfig.c | 23 +- .../ath6kl/miscdrv/ar3kps/ar3kpsconfig.c | 22 +- .../ath6kl/miscdrv/ar3kps/ar3kpsparser.c | 28 +- .../ath6kl/miscdrv/ar3kps/ar3kpsparser.h | 6 - .../staging/ath6kl/miscdrv/common_drv.c | 126 +- .../staging/ath6kl/miscdrv/credit_dist.c | 1 - .../staging/ath6kl/os/linux/ar6000_android.c | 388 - .../staging/ath6kl/os/linux/ar6000_drv.c | 793 +- .../staging/ath6kl/os/linux/ar6000_pm.c | 77 - .../staging/ath6kl/os/linux/ar6k_pal.c | 479 - .../staging/ath6kl/os/linux/cfg80211.c | 340 +- .../drivers/staging/ath6kl/os/linux/eeprom.c | 574 - .../ath6kl/os/linux/export_hci_transport.c | 1 - .../staging/ath6kl/os/linux/hci_bridge.c | 5 +- .../ath6kl/os/linux/include/ar6000_drv.h | 152 +- .../ath6kl/os/linux/include/ar6xapi_linux.h | 8 - .../ath6kl/os/linux/include/athdrv_linux.h | 4 +- .../ath6kl/os/linux/include/athtypes_linux.h | 51 - .../ath6kl/os/linux/include/config_linux.h | 7 - .../ath6kl/os/linux/include/osapi_linux.h | 49 +- .../ath6kl/os/linux/include/wlan_config.h | 10 - .../os/linux/include/wmi_filter_linux.h | 2 +- trunk/drivers/staging/ath6kl/os/linux/ioctl.c | 4767 ------ .../drivers/staging/ath6kl/os/linux/netbuf.c | 1 - .../staging/ath6kl/os/linux/wireless_ext.c | 2723 ---- .../drivers/staging/ath6kl/reorder/rcv_aggr.c | 15 +- .../staging/ath6kl/wlan/include/ieee80211.h | 4 - .../staging/ath6kl/wlan/src/wlan_node.c | 11 +- .../ath6kl/wlan/src/wlan_recv_beacon.c | 1 - .../staging/ath6kl/wlan/src/wlan_utils.c | 1 - trunk/drivers/staging/ath6kl/wmi/wmi.c | 248 +- trunk/drivers/staging/brcm80211/Kconfig | 21 +- trunk/drivers/staging/brcm80211/Makefile | 1 + trunk/drivers/staging/brcm80211/README | 102 +- trunk/drivers/staging/brcm80211/TODO | 56 +- .../staging/brcm80211/brcmfmac/Makefile | 13 +- .../drivers/staging/brcm80211/brcmfmac/README | 35 - .../siutils_priv.h => brcmfmac/bcmchip.h} | 33 +- .../staging/brcm80211/brcmfmac/bcmsdh.c | 38 +- .../staging/brcm80211/brcmfmac/bcmsdh_linux.c | 10 +- .../staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c | 55 +- .../brcm80211/brcmfmac/bcmsdh_sdmmc_linux.c | 7 +- .../staging/brcm80211/brcmfmac/bcmutils.c | 1 - .../staging/brcm80211/brcmfmac/bcmwifi.c | 1 - .../drivers/staging/brcm80211/brcmfmac/dhd.h | 32 +- .../staging/brcm80211/brcmfmac/dhd_cdc.c | 16 +- .../staging/brcm80211/brcmfmac/dhd_common.c | 50 +- .../staging/brcm80211/brcmfmac/dhd_linux.c | 121 +- .../staging/brcm80211/brcmfmac/dhd_sdio.c | 1132 +- .../staging/brcm80211/brcmfmac/hndpmu.c | 1 - .../staging/brcm80211/brcmfmac/sbutils.c | 1 - .../staging/brcm80211/brcmfmac/siutils.c | 1 - .../staging/brcm80211/brcmfmac/wl_cfg80211.c | 1624 +- .../staging/brcm80211/brcmfmac/wl_cfg80211.h | 75 +- .../staging/brcm80211/brcmfmac/wl_iw.c | 161 +- .../staging/brcm80211/brcmsmac/Makefile | 22 +- .../{util/siutils.c => brcmsmac/aiutils.c} | 1646 +- .../staging/brcm80211/brcmsmac/aiutils.h | 546 + .../brcm80211/{util => brcmsmac}/bcmotp.c | 127 +- .../staging/brcm80211/brcmsmac/bcmsrom.c | 714 + .../{util => brcmsmac}/bcmsrom_tbl.h | 70 - .../drivers/staging/brcm80211/brcmsmac/d11.h | 2 + .../brcm80211/{util => brcmsmac}/hnddma.c | 110 +- .../brcm80211/{util => brcmsmac}/nicpci.c | 77 +- .../nvram/nvram_ro.c => brcmsmac/nvram.c} | 94 +- .../brcm80211/brcmsmac/phy/wlc_phy_cmn.c | 182 +- .../brcm80211/brcmsmac/phy/wlc_phy_hal.h | 5 +- .../brcm80211/brcmsmac/phy/wlc_phy_int.h | 4 +- .../brcm80211/brcmsmac/phy/wlc_phy_lcn.c | 51 +- .../brcm80211/brcmsmac/phy/wlc_phy_n.c | 173 +- .../brcm80211/brcmsmac/phy/wlc_phy_qmath.c | 296 + .../qmath.h => brcmsmac/phy/wlc_phy_qmath.h} | 38 - .../staging/brcm80211/brcmsmac/wl_dbg.h | 24 +- .../staging/brcm80211/brcmsmac/wl_export.h | 1 + .../staging/brcm80211/brcmsmac/wl_mac80211.c | 469 +- .../staging/brcm80211/brcmsmac/wl_mac80211.h | 5 +- .../staging/brcm80211/brcmsmac/wlc_alloc.c | 74 +- .../staging/brcm80211/brcmsmac/wlc_alloc.h | 2 - .../staging/brcm80211/brcmsmac/wlc_ampdu.c | 362 +- .../staging/brcm80211/brcmsmac/wlc_ampdu.h | 3 - .../staging/brcm80211/brcmsmac/wlc_antsel.c | 15 +- .../staging/brcm80211/brcmsmac/wlc_bmac.c | 692 +- .../staging/brcm80211/brcmsmac/wlc_bmac.h | 6 - .../staging/brcm80211/brcmsmac/wlc_bsscfg.h | 3 - .../staging/brcm80211/brcmsmac/wlc_channel.c | 73 +- .../staging/brcm80211/brcmsmac/wlc_key.h | 10 +- .../staging/brcm80211/brcmsmac/wlc_main.c | 1869 +-- .../staging/brcm80211/brcmsmac/wlc_main.h | 41 +- .../staging/brcm80211/brcmsmac/wlc_phy_shim.c | 9 +- .../{util/hndpmu.c => brcmsmac/wlc_pmu.c} | 3192 ++-- .../{include/hndpmu.h => brcmsmac/wlc_pmu.h} | 54 +- .../staging/brcm80211/brcmsmac/wlc_pub.h | 52 +- .../staging/brcm80211/brcmsmac/wlc_rate.c | 20 +- .../staging/brcm80211/brcmsmac/wlc_rate.h | 15 +- .../staging/brcm80211/brcmsmac/wlc_scb.h | 2 - .../staging/brcm80211/brcmsmac/wlc_stf.c | 62 +- .../drivers/staging/brcm80211/include/aidmp.h | 6 +- .../staging/brcm80211/include/bcmdefs.h | 12 - .../staging/brcm80211/include/bcmdevs.h | 72 +- .../staging/brcm80211/include/bcmnvram.h | 29 +- .../staging/brcm80211/include/bcmsdpcm.h | 3 +- .../staging/brcm80211/include/bcmsrom_fmt.h | 2 +- .../staging/brcm80211/include/bcmutils.h | 189 +- .../staging/brcm80211/include/bcmwifi.h | 6 +- .../staging/brcm80211/include/hnddma.h | 19 + .../brcm80211/{util => include}/pci_core.h | 0 .../staging/brcm80211/include/pcicfg.h | 510 +- .../staging/brcm80211/include/sbchipc.h | 6 +- .../staging/brcm80211/include/siutils.h | 361 - .../staging/brcm80211/include/wlioctl.h | 349 +- trunk/drivers/staging/brcm80211/util/Makefile | 29 + .../drivers/staging/brcm80211/util/aiutils.c | 705 - .../drivers/staging/brcm80211/util/bcmsrom.c | 2088 --- .../drivers/staging/brcm80211/util/bcmutils.c | 484 +- .../drivers/staging/brcm80211/util/bcmwifi.c | 13 +- trunk/drivers/staging/brcm80211/util/qmath.c | 681 - .../drivers/staging/brcm80211/util/sbpcmcia.h | 217 - .../drivers/staging/brcm80211/util/sbsocram.h | 175 - .../drivers/staging/brcm80211/util/sbutils.c | 476 - .../comedi/drivers/addi-data/APCI1710_Ssi.c | 16 +- .../comedi/drivers/addi-data/addi_common.c | 61 +- .../comedi/drivers/addi-data/addi_common.h | 17 +- .../comedi/drivers/addi-data/addi_eeprom.c | 36 +- .../comedi/drivers/addi-data/hwdrv_apci16xx.c | 10 +- .../comedi/drivers/addi-data/hwdrv_apci3120.c | 27 +- .../comedi/drivers/addi-data/hwdrv_apci3xxx.c | 24 +- .../staging/comedi/drivers/adl_pci9118.c | 4 +- .../staging/comedi/drivers/adv_pci_dio.c | 3 +- .../staging/comedi/drivers/cb_das16_cs.c | 2 +- .../staging/comedi/drivers/cb_pcidda.c | 2 +- .../staging/comedi/drivers/cb_pcimdas.c | 2 +- .../drivers/staging/comedi/drivers/das08_cs.c | 2 +- .../drivers/staging/comedi/drivers/jr3_pci.c | 27 +- .../drivers/staging/comedi/drivers/ni_660x.c | 2 +- .../staging/comedi/drivers/ni_daq_700.c | 2 +- .../staging/comedi/drivers/ni_daq_dio24.c | 2 +- .../staging/comedi/drivers/ni_labpc_cs.c | 2 +- .../staging/comedi/drivers/ni_mio_common.c | 6 +- .../staging/comedi/drivers/ni_mio_cs.c | 2 +- trunk/drivers/staging/comedi/drivers/ni_tio.c | 6 +- trunk/drivers/staging/comedi/drivers/pcl724.c | 2 +- trunk/drivers/staging/comedi/drivers/pcl818.c | 2 +- .../drivers/staging/comedi/drivers/pcm3724.c | 2 +- .../staging/comedi/drivers/quatech_daqp_cs.c | 2 +- trunk/drivers/staging/comedi/drivers/usbdux.c | 2 +- .../drivers/staging/comedi/drivers/vmk80xx.c | 343 +- .../staging/cptm1217/clearpad_tm1217.c | 5 +- .../drivers/staging/crystalhd/bc_dts_types.h | 1 - .../staging/crystalhd/crystalhd_misc.c | 4 +- trunk/drivers/staging/cx25821/cx25821-video.c | 3 +- trunk/drivers/staging/easycap/easycap_main.c | 479 +- trunk/drivers/staging/echo/echo.c | 26 +- .../staging/ft1000/ft1000-pcmcia/ft1000_cs.c | 2 +- .../staging/ft1000/ft1000-usb/ft1000_hw.c | 158 +- .../staging/ft1000/ft1000-usb/ft1000_usb.h | 19 - trunk/drivers/staging/gma500/Makefile | 15 +- trunk/drivers/staging/gma500/mrst.h | 217 + trunk/drivers/staging/gma500/mrst_crtc.c | 619 + trunk/drivers/staging/gma500/mrst_lvds.c | 371 + trunk/drivers/staging/gma500/psb_2d.c | 9 +- trunk/drivers/staging/gma500/psb_bl.c | 118 +- trunk/drivers/staging/gma500/psb_buffer.c | 450 - trunk/drivers/staging/gma500/psb_drm.h | 122 - trunk/drivers/staging/gma500/psb_drv.c | 765 +- trunk/drivers/staging/gma500/psb_drv.h | 462 +- trunk/drivers/staging/gma500/psb_fb.c | 365 +- trunk/drivers/staging/gma500/psb_fb.h | 16 +- trunk/drivers/staging/gma500/psb_fence.c | 122 - trunk/drivers/staging/gma500/psb_gem.c | 320 + trunk/drivers/staging/gma500/psb_gtt.c | 1263 +- trunk/drivers/staging/gma500/psb_gtt.h | 84 +- .../staging/gma500/psb_intel_display.c | 147 +- trunk/drivers/staging/gma500/psb_intel_drv.h | 13 +- trunk/drivers/staging/gma500/psb_intel_lvds.c | 50 +- trunk/drivers/staging/gma500/psb_intel_sdvo.c | 4 +- trunk/drivers/staging/gma500/psb_irq.c | 178 +- .../staging/gma500/{psb_reset.c => psb_lid.c} | 0 trunk/drivers/staging/gma500/psb_mmu.c | 61 - trunk/drivers/staging/gma500/psb_powermgmt.c | 755 +- trunk/drivers/staging/gma500/psb_powermgmt.h | 55 +- trunk/drivers/staging/gma500/psb_pvr_glue.c | 73 - trunk/drivers/staging/gma500/psb_pvr_glue.h | 25 - trunk/drivers/staging/gma500/psb_sgx.c | 238 - trunk/drivers/staging/gma500/psb_sgx.h | 32 - trunk/drivers/staging/gma500/psb_ttm_fence.c | 605 - .../staging/gma500/psb_ttm_fence_api.h | 272 - .../staging/gma500/psb_ttm_fence_driver.h | 302 - .../staging/gma500/psb_ttm_fence_user.c | 237 - .../staging/gma500/psb_ttm_fence_user.h | 140 - trunk/drivers/staging/gma500/psb_ttm_glue.c | 349 - .../staging/gma500/psb_ttm_placement_user.c | 628 - .../staging/gma500/psb_ttm_placement_user.h | 252 - .../staging/gma500/psb_ttm_userobj_api.h | 85 - trunk/drivers/staging/hv/Kconfig | 4 +- trunk/drivers/staging/hv/Makefile | 2 +- trunk/drivers/staging/hv/blkvsc.c | 102 - trunk/drivers/staging/hv/blkvsc_drv.c | 1477 +- trunk/drivers/staging/hv/channel.c | 230 +- trunk/drivers/staging/hv/channel.h | 112 - trunk/drivers/staging/hv/channel_mgmt.c | 201 +- trunk/drivers/staging/hv/channel_mgmt.h | 320 - trunk/drivers/staging/hv/connection.c | 108 +- trunk/drivers/staging/hv/hv.c | 111 +- trunk/drivers/staging/hv/hv.h | 140 - trunk/drivers/staging/hv/hv_api.h | 910 -- trunk/drivers/staging/hv/hv_kvp.c | 20 +- trunk/drivers/staging/hv/hv_mouse.c | 502 +- trunk/drivers/staging/hv/hv_timesource.c | 3 +- trunk/drivers/staging/hv/hv_util.c | 81 +- trunk/drivers/staging/hv/hyperv.h | 944 ++ .../staging/hv/{rndis.h => hyperv_net.h} | 422 +- .../hv/{vstorage.h => hyperv_storage.h} | 144 +- trunk/drivers/staging/hv/hyperv_vmbus.h | 631 + trunk/drivers/staging/hv/logging.h | 98 - trunk/drivers/staging/hv/netvsc.c | 987 +- trunk/drivers/staging/hv/netvsc.h | 332 - trunk/drivers/staging/hv/netvsc_api.h | 116 - trunk/drivers/staging/hv/netvsc_drv.c | 190 +- trunk/drivers/staging/hv/ring_buffer.c | 526 +- trunk/drivers/staging/hv/ring_buffer.h | 102 - trunk/drivers/staging/hv/rndis_filter.c | 187 +- trunk/drivers/staging/hv/rndis_filter.h | 55 - trunk/drivers/staging/hv/storvsc.c | 547 +- trunk/drivers/staging/hv/storvsc_api.h | 110 - trunk/drivers/staging/hv/storvsc_drv.c | 1015 +- trunk/drivers/staging/hv/utils.h | 120 - trunk/drivers/staging/hv/version_info.h | 48 - trunk/drivers/staging/hv/vmbus.h | 51 - trunk/drivers/staging/hv/vmbus_api.h | 139 - .../staging/hv/vmbus_channel_interface.h | 89 - trunk/drivers/staging/hv/vmbus_drv.c | 1098 +- .../drivers/staging/hv/vmbus_packet_format.h | 161 - trunk/drivers/staging/hv/vmbus_private.h | 134 - .../staging/iio/Documentation/device.txt | 78 +- .../iio/Documentation/generic_buffer.c | 95 +- .../staging/iio/Documentation/iio_utils.h | 20 +- .../staging/iio/Documentation/overview.txt | 19 +- .../staging/iio/Documentation/ring.txt | 44 +- .../staging/iio/Documentation/sysfs-bus-iio | 13 + .../iio/Documentation/sysfs-bus-iio-light | 13 + .../Documentation/sysfs-bus-iio-light-tsl2583 | 20 + .../staging/iio/Documentation/trigger.txt | 16 +- .../staging/iio/Documentation/userspace.txt | 12 - trunk/drivers/staging/iio/Kconfig | 15 +- trunk/drivers/staging/iio/accel/adis16201.h | 9 +- .../staging/iio/accel/adis16201_core.c | 489 +- .../staging/iio/accel/adis16201_ring.c | 146 +- .../staging/iio/accel/adis16201_trigger.c | 82 +- trunk/drivers/staging/iio/accel/adis16203.h | 18 +- .../staging/iio/accel/adis16203_core.c | 411 +- .../staging/iio/accel/adis16203_ring.c | 123 +- .../staging/iio/accel/adis16203_trigger.c | 83 +- trunk/drivers/staging/iio/accel/adis16204.h | 18 +- .../staging/iio/accel/adis16204_core.c | 434 +- .../staging/iio/accel/adis16204_ring.c | 126 +- .../staging/iio/accel/adis16204_trigger.c | 83 +- trunk/drivers/staging/iio/accel/adis16209.h | 6 +- .../staging/iio/accel/adis16209_core.c | 468 +- .../staging/iio/accel/adis16209_ring.c | 143 +- .../staging/iio/accel/adis16209_trigger.c | 77 +- .../staging/iio/accel/adis16220_core.c | 13 +- trunk/drivers/staging/iio/accel/adis16240.h | 7 +- .../staging/iio/accel/adis16240_core.c | 390 +- .../staging/iio/accel/adis16240_ring.c | 131 +- .../staging/iio/accel/adis16240_trigger.c | 78 +- trunk/drivers/staging/iio/accel/kxsd9.c | 14 +- trunk/drivers/staging/iio/accel/lis3l02dq.h | 46 +- .../staging/iio/accel/lis3l02dq_core.c | 844 +- .../staging/iio/accel/lis3l02dq_ring.c | 504 +- trunk/drivers/staging/iio/accel/sca3000.h | 76 +- .../drivers/staging/iio/accel/sca3000_core.c | 955 +- .../drivers/staging/iio/accel/sca3000_ring.c | 269 +- trunk/drivers/staging/iio/adc/Kconfig | 60 +- trunk/drivers/staging/iio/adc/Makefile | 1 + trunk/drivers/staging/iio/adc/ad7150.c | 178 +- trunk/drivers/staging/iio/adc/ad7152.c | 33 +- trunk/drivers/staging/iio/adc/ad7291.c | 502 +- trunk/drivers/staging/iio/adc/ad7298.h | 12 +- trunk/drivers/staging/iio/adc/ad7298_core.c | 242 +- trunk/drivers/staging/iio/adc/ad7298_ring.c | 134 +- trunk/drivers/staging/iio/adc/ad7314.c | 35 +- trunk/drivers/staging/iio/adc/ad7476.h | 7 +- trunk/drivers/staging/iio/adc/ad7476_core.c | 173 +- trunk/drivers/staging/iio/adc/ad7476_ring.c | 127 +- trunk/drivers/staging/iio/adc/ad7606.h | 20 +- trunk/drivers/staging/iio/adc/ad7606_core.c | 300 +- trunk/drivers/staging/iio/adc/ad7606_par.c | 30 +- trunk/drivers/staging/iio/adc/ad7606_ring.c | 152 +- trunk/drivers/staging/iio/adc/ad7606_spi.c | 24 +- trunk/drivers/staging/iio/adc/ad7745.c | 121 +- trunk/drivers/staging/iio/adc/ad7780.c | 301 + trunk/drivers/staging/iio/adc/ad7780.h | 30 + trunk/drivers/staging/iio/adc/ad7816.c | 111 +- trunk/drivers/staging/iio/adc/ad7887.h | 17 +- trunk/drivers/staging/iio/adc/ad7887_core.c | 200 +- trunk/drivers/staging/iio/adc/ad7887_ring.c | 156 +- trunk/drivers/staging/iio/adc/ad799x.h | 33 +- trunk/drivers/staging/iio/adc/ad799x_core.c | 859 +- trunk/drivers/staging/iio/adc/ad799x_ring.c | 93 +- trunk/drivers/staging/iio/adc/adt7310.c | 206 +- trunk/drivers/staging/iio/adc/adt7410.c | 201 +- trunk/drivers/staging/iio/adc/adt75.c | 180 +- trunk/drivers/staging/iio/adc/max1363.h | 93 +- trunk/drivers/staging/iio/adc/max1363_core.c | 1945 +-- trunk/drivers/staging/iio/adc/max1363_ring.c | 109 +- trunk/drivers/staging/iio/addac/adt7316.c | 502 +- trunk/drivers/staging/iio/chrdev.h | 44 +- trunk/drivers/staging/iio/dac/Kconfig | 21 + trunk/drivers/staging/iio/dac/Makefile | 2 + trunk/drivers/staging/iio/dac/ad5446.c | 30 +- trunk/drivers/staging/iio/dac/ad5446.h | 1 + trunk/drivers/staging/iio/dac/ad5504.c | 404 + trunk/drivers/staging/iio/dac/ad5504.h | 70 + trunk/drivers/staging/iio/dac/ad5624r_spi.c | 23 +- trunk/drivers/staging/iio/dac/ad5791.c | 444 + trunk/drivers/staging/iio/dac/ad5791.h | 116 + trunk/drivers/staging/iio/dac/max517.c | 17 +- trunk/drivers/staging/iio/dds/Kconfig | 4 +- trunk/drivers/staging/iio/dds/ad5930.c | 14 +- trunk/drivers/staging/iio/dds/ad9832.c | 23 +- trunk/drivers/staging/iio/dds/ad9834.c | 54 +- trunk/drivers/staging/iio/dds/ad9834.h | 8 +- trunk/drivers/staging/iio/dds/ad9850.c | 12 +- trunk/drivers/staging/iio/dds/ad9852.c | 12 +- trunk/drivers/staging/iio/dds/ad9910.c | 12 +- trunk/drivers/staging/iio/dds/ad9951.c | 12 +- trunk/drivers/staging/iio/gyro/Kconfig | 10 + trunk/drivers/staging/iio/gyro/Makefile | 3 + .../drivers/staging/iio/gyro/adis16060_core.c | 10 +- .../drivers/staging/iio/gyro/adis16080_core.c | 13 +- .../drivers/staging/iio/gyro/adis16130_core.c | 14 +- trunk/drivers/staging/iio/gyro/adis16260.h | 7 +- .../drivers/staging/iio/gyro/adis16260_core.c | 477 +- .../drivers/staging/iio/gyro/adis16260_ring.c | 124 +- .../staging/iio/gyro/adis16260_trigger.c | 85 +- trunk/drivers/staging/iio/gyro/adxrs450.h | 58 + .../drivers/staging/iio/gyro/adxrs450_core.c | 455 + trunk/drivers/staging/iio/gyro/gyro.h | 3 + trunk/drivers/staging/iio/iio.h | 356 +- trunk/drivers/staging/iio/imu/Kconfig | 26 +- trunk/drivers/staging/iio/imu/Makefile | 8 - trunk/drivers/staging/iio/imu/adis16300.h | 184 - .../drivers/staging/iio/imu/adis16300_core.c | 756 - .../drivers/staging/iio/imu/adis16300_ring.c | 238 - .../staging/iio/imu/adis16300_trigger.c | 125 - trunk/drivers/staging/iio/imu/adis16350.h | 177 - .../drivers/staging/iio/imu/adis16350_core.c | 757 - .../drivers/staging/iio/imu/adis16350_ring.c | 236 - .../staging/iio/imu/adis16350_trigger.c | 125 - trunk/drivers/staging/iio/imu/adis16400.h | 38 +- .../drivers/staging/iio/imu/adis16400_core.c | 731 +- .../drivers/staging/iio/imu/adis16400_ring.c | 235 +- .../staging/iio/imu/adis16400_trigger.c | 100 +- trunk/drivers/staging/iio/industrialio-core.c | 943 +- trunk/drivers/staging/iio/industrialio-ring.c | 587 +- .../staging/iio/industrialio-trigger.c | 299 +- trunk/drivers/staging/iio/kfifo_buf.c | 63 +- trunk/drivers/staging/iio/kfifo_buf.h | 40 +- trunk/drivers/staging/iio/light/Kconfig | 28 +- trunk/drivers/staging/iio/light/Makefile | 1 + trunk/drivers/staging/iio/light/isl29018.c | 23 +- trunk/drivers/staging/iio/light/tsl2563.c | 427 +- trunk/drivers/staging/iio/light/tsl2583.c | 964 ++ .../drivers/staging/iio/magnetometer/ak8975.c | 130 +- .../staging/iio/magnetometer/hmc5843.c | 10 +- trunk/drivers/staging/iio/meter/ade7753.c | 14 +- trunk/drivers/staging/iio/meter/ade7754.c | 14 +- trunk/drivers/staging/iio/meter/ade7758.h | 71 +- .../drivers/staging/iio/meter/ade7758_core.c | 366 +- .../drivers/staging/iio/meter/ade7758_ring.c | 281 +- .../staging/iio/meter/ade7758_trigger.c | 95 +- trunk/drivers/staging/iio/meter/ade7759.c | 15 +- trunk/drivers/staging/iio/meter/ade7854.c | 10 +- trunk/drivers/staging/iio/resolver/ad2s120x.c | 13 +- trunk/drivers/staging/iio/resolver/ad2s1210.c | 12 +- trunk/drivers/staging/iio/resolver/ad2s90.c | 12 +- trunk/drivers/staging/iio/ring_generic.h | 293 +- trunk/drivers/staging/iio/ring_sw.c | 205 +- trunk/drivers/staging/iio/ring_sw.h | 196 +- trunk/drivers/staging/iio/sysfs.h | 184 +- trunk/drivers/staging/iio/trigger.h | 116 +- trunk/drivers/staging/iio/trigger/Kconfig | 1 + .../staging/iio/trigger/iio-trig-bfin-timer.c | 22 +- .../staging/iio/trigger/iio-trig-gpio.c | 25 +- .../iio/trigger/iio-trig-periodic-rtc.c | 24 +- .../staging/iio/trigger/iio-trig-sysfs.c | 169 +- trunk/drivers/staging/intel_sst/intel_sst.c | 129 +- trunk/drivers/staging/intel_sst/intel_sst.h | 33 +- .../intel_sst/intel_sst_app_interface.c | 45 +- .../staging/intel_sst/intel_sst_common.h | 9 +- .../intel_sst/intel_sst_drv_interface.c | 24 +- .../drivers/staging/intel_sst/intel_sst_dsp.c | 14 +- .../staging/intel_sst/intel_sst_fw_ipc.h | 7 + .../staging/intel_sst/intel_sst_ioctl.h | 8 + .../drivers/staging/intel_sst/intel_sst_ipc.c | 74 +- .../drivers/staging/intel_sst/intel_sst_pvt.c | 2 +- .../staging/intel_sst/intel_sst_stream.c | 15 +- .../intel_sst/intel_sst_stream_encoded.c | 8 +- trunk/drivers/staging/intel_sst/intelmid.c | 473 +- trunk/drivers/staging/intel_sst/intelmid.h | 38 +- .../staging/intel_sst/intelmid_adc_control.h | 193 + .../drivers/staging/intel_sst/intelmid_ctrl.c | 304 +- .../staging/intel_sst/intelmid_msic_control.c | 833 +- .../drivers/staging/intel_sst/intelmid_pvt.c | 1 - .../staging/intel_sst/intelmid_snd_control.h | 9 + .../staging/intel_sst/intelmid_v0_control.c | 109 +- .../staging/intel_sst/intelmid_v1_control.c | 141 +- .../staging/intel_sst/intelmid_v2_control.c | 219 +- trunk/drivers/staging/intel_sst/jack.h | 10 - trunk/drivers/staging/keucr/common.h | 2 + trunk/drivers/staging/keucr/init.c | 3 - trunk/drivers/staging/keucr/init.h | 10 +- trunk/drivers/staging/keucr/ms.c | 698 +- trunk/drivers/staging/keucr/ms.h | 338 +- trunk/drivers/staging/keucr/msscsi.c | 250 +- trunk/drivers/staging/keucr/scsiglue.c | 192 +- trunk/drivers/staging/keucr/smcommon.h | 2 +- trunk/drivers/staging/keucr/smil.h | 309 +- trunk/drivers/staging/keucr/smilecc.c | 314 +- trunk/drivers/staging/keucr/smilmain.c | 144 +- trunk/drivers/staging/keucr/smilsub.c | 66 +- trunk/drivers/staging/keucr/smscsi.c | 2 - trunk/drivers/staging/keucr/transport.c | 531 +- trunk/drivers/staging/keucr/transport.h | 84 +- trunk/drivers/staging/keucr/usb.c | 95 +- trunk/drivers/staging/line6/driver.c | 2 - trunk/drivers/staging/lirc/lirc_parallel.c | 27 +- trunk/drivers/staging/lirc/lirc_sasem.c | 13 +- trunk/drivers/staging/lirc/lirc_serial.c | 2 +- trunk/drivers/staging/lirc/lirc_sir.c | 30 +- trunk/drivers/staging/mei/Kconfig | 28 + trunk/drivers/staging/mei/Makefile | 11 + trunk/drivers/staging/mei/TODO | 17 + trunk/drivers/staging/mei/hw.h | 333 + trunk/drivers/staging/mei/init.c | 770 + trunk/drivers/staging/mei/interface.c | 447 + trunk/drivers/staging/mei/interface.h | 62 + trunk/drivers/staging/mei/interrupt.c | 1624 ++ trunk/drivers/staging/mei/iorw.c | 604 + trunk/drivers/staging/mei/main.c | 1349 ++ trunk/drivers/staging/mei/mei.h | 105 + trunk/drivers/staging/mei/mei.txt | 189 + trunk/drivers/staging/mei/mei_dev.h | 422 + trunk/drivers/staging/mei/mei_version.h | 31 + trunk/drivers/staging/mei/wd.c | 183 + trunk/drivers/staging/nvec/Kconfig | 27 + trunk/drivers/staging/nvec/Makefile | 4 + trunk/drivers/staging/nvec/README | 14 + trunk/drivers/staging/nvec/TODO | 8 + trunk/drivers/staging/nvec/nvec-keytable.h | 266 + trunk/drivers/staging/nvec/nvec.c | 468 + trunk/drivers/staging/nvec/nvec.h | 110 + trunk/drivers/staging/nvec/nvec_kbd.c | 122 + trunk/drivers/staging/nvec/nvec_power.c | 418 + trunk/drivers/staging/nvec/nvec_ps2.c | 103 + trunk/drivers/staging/octeon/ethernet-mdio.c | 2 - .../staging/olpc_dcon/olpc_dcon_xo_1.c | 2 +- .../staging/olpc_dcon/olpc_dcon_xo_1_5.c | 22 +- trunk/drivers/staging/rt2860/Kconfig | 10 - trunk/drivers/staging/rt2860/Makefile | 52 - trunk/drivers/staging/rt2860/TODO | 16 - trunk/drivers/staging/rt2860/ap.h | 68 - trunk/drivers/staging/rt2860/chip/mac_pci.h | 355 - trunk/drivers/staging/rt2860/chip/mac_usb.h | 345 - trunk/drivers/staging/rt2860/chip/rt2860.h | 54 - trunk/drivers/staging/rt2860/chip/rt2870.h | 46 - trunk/drivers/staging/rt2860/chip/rt3070.h | 67 - trunk/drivers/staging/rt2860/chip/rt3090.h | 72 - trunk/drivers/staging/rt2860/chip/rt30xx.h | 47 - trunk/drivers/staging/rt2860/chip/rtmp_mac.h | 1308 -- trunk/drivers/staging/rt2860/chip/rtmp_phy.h | 516 - trunk/drivers/staging/rt2860/chips/rt3070.c | 169 - trunk/drivers/staging/rt2860/chips/rt3090.c | 121 - trunk/drivers/staging/rt2860/chips/rt30xx.c | 516 - trunk/drivers/staging/rt2860/chlist.h | 113 - trunk/drivers/staging/rt2860/common/action.c | 606 - trunk/drivers/staging/rt2860/common/action.h | 56 - .../drivers/staging/rt2860/common/ba_action.c | 1650 -- trunk/drivers/staging/rt2860/common/cmm_aes.c | 1311 -- .../drivers/staging/rt2860/common/cmm_asic.c | 2565 --- trunk/drivers/staging/rt2860/common/cmm_cfg.c | 258 - .../drivers/staging/rt2860/common/cmm_data.c | 2361 --- .../staging/rt2860/common/cmm_data_pci.c | 1096 -- .../staging/rt2860/common/cmm_data_usb.c | 951 -- .../drivers/staging/rt2860/common/cmm_info.c | 955 -- .../staging/rt2860/common/cmm_mac_pci.c | 1661 -- .../staging/rt2860/common/cmm_mac_usb.c | 1162 -- .../staging/rt2860/common/cmm_sanity.c | 1205 -- .../drivers/staging/rt2860/common/cmm_sync.c | 718 - .../drivers/staging/rt2860/common/cmm_tkip.c | 833 - trunk/drivers/staging/rt2860/common/cmm_wep.c | 473 - trunk/drivers/staging/rt2860/common/cmm_wpa.c | 3010 ---- .../staging/rt2860/common/crypt_hmac.c | 187 - .../drivers/staging/rt2860/common/crypt_md5.c | 339 - .../staging/rt2860/common/crypt_sha2.c | 269 - trunk/drivers/staging/rt2860/common/dfs.c | 68 - .../drivers/staging/rt2860/common/ee_efuse.c | 351 - trunk/drivers/staging/rt2860/common/ee_prom.c | 197 - trunk/drivers/staging/rt2860/common/eeprom.c | 91 - trunk/drivers/staging/rt2860/common/mlme.c | 6068 ------- .../staging/rt2860/common/rt_channel.c | 1705 -- trunk/drivers/staging/rt2860/common/rt_rf.c | 187 - .../drivers/staging/rt2860/common/rtmp_init.c | 3536 ----- .../drivers/staging/rt2860/common/rtmp_mcu.c | 336 - .../staging/rt2860/common/rtmp_timer.c | 302 - .../drivers/staging/rt2860/common/spectrum.c | 2205 --- trunk/drivers/staging/rt2860/crypt_hmac.h | 65 - trunk/drivers/staging/rt2860/crypt_md5.h | 73 - trunk/drivers/staging/rt2860/crypt_sha2.h | 73 - trunk/drivers/staging/rt2860/dfs.h | 39 - trunk/drivers/staging/rt2860/eeprom.h | 67 - trunk/drivers/staging/rt2860/iface/rtmp_pci.h | 80 - trunk/drivers/staging/rt2860/iface/rtmp_usb.h | 196 - trunk/drivers/staging/rt2860/mlme.h | 1050 -- trunk/drivers/staging/rt2860/oid.h | 779 - trunk/drivers/staging/rt2860/pci_main_dev.c | 1192 -- trunk/drivers/staging/rt2860/rt_config.h | 71 - trunk/drivers/staging/rt2860/rt_linux.c | 1367 -- trunk/drivers/staging/rt2860/rt_linux.h | 835 - trunk/drivers/staging/rt2860/rt_main_dev.c | 736 - trunk/drivers/staging/rt2860/rt_pci_rbus.c | 837 - trunk/drivers/staging/rt2860/rt_usb.c | 794 - trunk/drivers/staging/rt2860/rtmp.h | 4332 ----- trunk/drivers/staging/rt2860/rtmp_chip.h | 258 - trunk/drivers/staging/rt2860/rtmp_ckipmic.h | 63 - trunk/drivers/staging/rt2860/rtmp_def.h | 1427 -- trunk/drivers/staging/rt2860/rtmp_dot11.h | 100 - trunk/drivers/staging/rt2860/rtmp_iface.h | 75 - trunk/drivers/staging/rt2860/rtmp_mcu.h | 49 - trunk/drivers/staging/rt2860/rtmp_os.h | 90 - trunk/drivers/staging/rt2860/rtmp_timer.h | 148 - trunk/drivers/staging/rt2860/rtmp_type.h | 89 - trunk/drivers/staging/rt2860/rtusb_io.h | 185 - trunk/drivers/staging/rt2860/spectrum.h | 189 - trunk/drivers/staging/rt2860/spectrum_def.h | 202 - trunk/drivers/staging/rt2860/sta/assoc.c | 1602 -- trunk/drivers/staging/rt2860/sta/auth.c | 517 - trunk/drivers/staging/rt2860/sta/auth_rsp.c | 142 - trunk/drivers/staging/rt2860/sta/connect.c | 2613 --- trunk/drivers/staging/rt2860/sta/rtmp_data.c | 2552 --- trunk/drivers/staging/rt2860/sta/sanity.c | 362 - trunk/drivers/staging/rt2860/sta/sync.c | 1968 --- trunk/drivers/staging/rt2860/sta/wpa.c | 374 - trunk/drivers/staging/rt2860/sta_ioctl.c | 2912 ---- trunk/drivers/staging/rt2860/usb_main_dev.c | 927 -- trunk/drivers/staging/rt2860/wpa.h | 390 - trunk/drivers/staging/rt2870/Kconfig | 9 - trunk/drivers/staging/rt2870/Makefile | 55 - trunk/drivers/staging/rt2870/TODO | 17 - trunk/drivers/staging/rt2870/aironet.h | 1 - trunk/drivers/staging/rt2870/ap.h | 1 - trunk/drivers/staging/rt2870/chips/rt3070.c | 1 - trunk/drivers/staging/rt2870/chips/rt30xx.c | 1 - trunk/drivers/staging/rt2870/chlist.h | 1 - trunk/drivers/staging/rt2870/common/acction.c | 1 - trunk/drivers/staging/rt2870/common/action.c | 1 - trunk/drivers/staging/rt2870/common/action.h | 1 - .../drivers/staging/rt2870/common/ba_action.c | 1 - trunk/drivers/staging/rt2870/common/cmm_aes.c | 1 - .../drivers/staging/rt2870/common/cmm_asic.c | 1 - trunk/drivers/staging/rt2870/common/cmm_cfg.c | 1 - .../drivers/staging/rt2870/common/cmm_data.c | 1 - .../staging/rt2870/common/cmm_data_usb.c | 1 - .../drivers/staging/rt2870/common/cmm_info.c | 1 - .../staging/rt2870/common/cmm_mac_usb.c | 1 - .../staging/rt2870/common/cmm_profile.c | 1 - .../staging/rt2870/common/cmm_sanity.c | 1 - .../drivers/staging/rt2870/common/cmm_sync.c | 1 - .../drivers/staging/rt2870/common/cmm_tkip.c | 1 - trunk/drivers/staging/rt2870/common/cmm_wep.c | 1 - trunk/drivers/staging/rt2870/common/cmm_wpa.c | 1 - .../staging/rt2870/common/crypt_hmac.c | 1 - .../drivers/staging/rt2870/common/crypt_md5.c | 1 - .../staging/rt2870/common/crypt_sha2.c | 1 - trunk/drivers/staging/rt2870/common/dfs.c | 1 - .../drivers/staging/rt2870/common/ee_efuse.c | 1 - trunk/drivers/staging/rt2870/common/eeprom.c | 1 - trunk/drivers/staging/rt2870/common/md5.c | 1 - trunk/drivers/staging/rt2870/common/mlme.c | 1 - .../staging/rt2870/common/rt_channel.c | 1 - trunk/drivers/staging/rt2870/common/rt_rf.c | 1 - .../drivers/staging/rt2870/common/rtmp_init.c | 1 - .../drivers/staging/rt2870/common/rtmp_mcu.c | 1 - .../staging/rt2870/common/rtmp_timer.c | 1 - .../drivers/staging/rt2870/common/rtmp_tkip.c | 1 - .../drivers/staging/rt2870/common/rtmp_wep.c | 1 - .../staging/rt2870/common/rtusb_bulk.c | 1232 -- .../staging/rt2870/common/rtusb_data.c | 262 - .../drivers/staging/rt2870/common/rtusb_io.c | 2104 --- .../drivers/staging/rt2870/common/spectrum.c | 1 - trunk/drivers/staging/rt2870/dfs.h | 1 - trunk/drivers/staging/rt2870/md5.h | 1 - trunk/drivers/staging/rt2870/mlme.h | 1 - trunk/drivers/staging/rt2870/oid.h | 1 - trunk/drivers/staging/rt2870/rt28xx.h | 1 - trunk/drivers/staging/rt2870/rt_config.h | 1 - trunk/drivers/staging/rt2870/rt_linux.c | 1 - trunk/drivers/staging/rt2870/rt_linux.h | 1 - trunk/drivers/staging/rt2870/rt_main_dev.c | 1 - trunk/drivers/staging/rt2870/rt_profile.c | 1 - trunk/drivers/staging/rt2870/rt_usb.c | 1 - trunk/drivers/staging/rt2870/rtmp.h | 1 - trunk/drivers/staging/rt2870/rtmp_ckipmic.h | 1 - trunk/drivers/staging/rt2870/rtmp_def.h | 1 - trunk/drivers/staging/rt2870/rtmp_type.h | 1 - trunk/drivers/staging/rt2870/spectrum.h | 1 - trunk/drivers/staging/rt2870/spectrum_def.h | 1 - trunk/drivers/staging/rt2870/sta/aironet.c | 1 - trunk/drivers/staging/rt2870/sta/assoc.c | 1 - trunk/drivers/staging/rt2870/sta/auth.c | 1 - trunk/drivers/staging/rt2870/sta/auth_rsp.c | 1 - trunk/drivers/staging/rt2870/sta/connect.c | 1 - trunk/drivers/staging/rt2870/sta/rtmp_data.c | 1 - trunk/drivers/staging/rt2870/sta/sanity.c | 1 - trunk/drivers/staging/rt2870/sta/sync.c | 1 - trunk/drivers/staging/rt2870/sta/wpa.c | 1 - trunk/drivers/staging/rt2870/sta_ioctl.c | 1 - trunk/drivers/staging/rt2870/usb_main_dev.c | 1 - trunk/drivers/staging/rt2870/wpa.h | 1 - trunk/drivers/staging/rtl8712/ieee80211.h | 26 +- trunk/drivers/staging/rtl8712/if_ether.h | 4 +- trunk/drivers/staging/rtl8712/ip.h | 34 +- trunk/drivers/staging/rtl8712/mlme_osdep.h | 4 +- trunk/drivers/staging/rtl8712/osdep_service.h | 3 +- trunk/drivers/staging/rtl8712/recv_osdep.h | 4 +- trunk/drivers/staging/rtl8712/rtl8712_event.h | 25 +- trunk/drivers/staging/rtl8712/rtl8712_hal.h | 100 +- trunk/drivers/staging/rtl8712/rtl8712_led.c | 2 +- trunk/drivers/staging/rtl8712/rtl8712_recv.c | 2 +- trunk/drivers/staging/rtl8712/rtl8712_recv.h | 2 +- trunk/drivers/staging/rtl8712/rtl8712_xmit.h | 11 +- trunk/drivers/staging/rtl8712/rtl871x_cmd.c | 7 +- trunk/drivers/staging/rtl8712/rtl871x_cmd.h | 26 +- trunk/drivers/staging/rtl8712/rtl871x_event.h | 12 +- trunk/drivers/staging/rtl8712/rtl871x_io.c | 6 +- .../staging/rtl8712/rtl871x_ioctl_linux.c | 9 +- .../staging/rtl8712/rtl871x_ioctl_rtl.c | 2 +- .../staging/rtl8712/rtl871x_ioctl_set.c | 5 +- .../staging/rtl8712/rtl871x_ioctl_set.h | 16 +- trunk/drivers/staging/rtl8712/rtl871x_mp.c | 8 +- .../staging/rtl8712/rtl871x_mp_ioctl.h | 10 +- trunk/drivers/staging/rtl8712/rtl871x_recv.c | 16 +- trunk/drivers/staging/rtl8712/rtl871x_recv.h | 4 +- trunk/drivers/staging/rtl8712/rtl871x_rf.h | 2 +- .../staging/rtl8712/rtl871x_security.h | 51 +- trunk/drivers/staging/rtl8712/rtl871x_xmit.c | 3 +- trunk/drivers/staging/rtl8712/rtl871x_xmit.h | 3 +- trunk/drivers/staging/rtl8712/wifi.h | 63 +- trunk/drivers/staging/rtl8712/wlan_bssdef.h | 212 +- trunk/drivers/staging/rts_pstor/ms.c | 52 +- trunk/drivers/staging/rts_pstor/rtsx.c | 4 +- trunk/drivers/staging/rts_pstor/rtsx.h | 3 - trunk/drivers/staging/rts_pstor/sd.c | 1 + trunk/drivers/staging/rts_pstor/spi.c | 34 +- trunk/drivers/staging/rts_pstor/xd.c | 4 +- trunk/drivers/staging/sbe-2t3e3/dc.c | 33 +- trunk/drivers/staging/sep/sep_driver.c | 9 +- trunk/drivers/staging/sm7xx/TODO | 2 - trunk/drivers/staging/sm7xx/smtcfb.c | 215 +- trunk/drivers/staging/sm7xx/smtcfb.h | 7 +- trunk/drivers/staging/tm6000/CARDLIST | 16 + trunk/drivers/staging/tm6000/tm6000-alsa.c | 3 - trunk/drivers/staging/tm6000/tm6000-cards.c | 381 +- trunk/drivers/staging/tm6000/tm6000-core.c | 109 +- trunk/drivers/staging/tm6000/tm6000-i2c.c | 33 +- trunk/drivers/staging/tm6000/tm6000-stds.c | 923 +- .../drivers/staging/tm6000/tm6000-usb-isoc.h | 2 +- trunk/drivers/staging/tm6000/tm6000-video.c | 212 +- trunk/drivers/staging/tm6000/tm6000.h | 46 +- trunk/drivers/staging/tty/istallion.c | 2 +- trunk/drivers/staging/usbip/Kconfig | 52 +- trunk/drivers/staging/usbip/Makefile | 15 +- trunk/drivers/staging/usbip/stub.h | 33 +- trunk/drivers/staging/usbip/stub_dev.c | 97 +- trunk/drivers/staging/usbip/stub_main.c | 51 +- trunk/drivers/staging/usbip/stub_rx.c | 68 +- trunk/drivers/staging/usbip/stub_tx.c | 81 +- trunk/drivers/staging/usbip/usbip_common.c | 333 +- trunk/drivers/staging/usbip/usbip_common.h | 139 +- trunk/drivers/staging/usbip/usbip_event.c | 20 +- trunk/drivers/staging/usbip/userspace/AUTHORS | 2 + trunk/drivers/staging/usbip/userspace/COPYING | 340 + trunk/drivers/staging/usbip/userspace/INSTALL | 237 + .../staging/usbip/userspace/Makefile.am | 11 + trunk/drivers/staging/usbip/userspace/README | 215 + .../staging/usbip/userspace/autogen.sh | 9 + .../staging/usbip/userspace/cleanup.sh | 10 + .../staging/usbip/userspace/configure.ac | 114 + .../staging/usbip/userspace/doc/usbip.8 | 71 + .../usbip/userspace/doc/usbip_bind_driver.8 | 42 + .../staging/usbip/userspace/doc/usbipd.8 | 62 + .../usbip/userspace/libsrc/Makefile.am | 7 + .../staging/usbip/userspace/libsrc/names.c | 793 + .../staging/usbip/userspace/libsrc/names.h | 57 + .../usbip/userspace/libsrc/stub_driver.c | 391 + .../usbip/userspace/libsrc/stub_driver.h | 36 + .../staging/usbip/userspace/libsrc/usbip.h | 19 + .../usbip/userspace/libsrc/usbip_common.c | 282 + .../usbip/userspace/libsrc/usbip_common.h | 149 + .../usbip/userspace/libsrc/vhci_driver.c | 506 + .../usbip/userspace/libsrc/vhci_driver.h | 61 + .../staging/usbip/userspace/src/Makefile.am | 10 + .../staging/usbip/userspace/src/bind-driver.c | 643 + .../staging/usbip/userspace/src/usbip.c | 723 + .../usbip/userspace/src/usbip_network.c | 251 + .../usbip/userspace/src/usbip_network.h | 198 + .../staging/usbip/userspace/src/usbipd.c | 570 + .../staging/usbip/userspace/src/utils.c | 255 + .../staging/usbip/userspace/src/utils.h | 38 + trunk/drivers/staging/usbip/userspace/usb.ids | 13209 ++++++++++++++++ trunk/drivers/staging/usbip/vhci.h | 38 +- trunk/drivers/staging/usbip/vhci_hcd.c | 284 +- trunk/drivers/staging/usbip/vhci_rx.c | 74 +- trunk/drivers/staging/usbip/vhci_sysfs.c | 33 +- trunk/drivers/staging/usbip/vhci_tx.c | 44 +- trunk/drivers/staging/vt6655/bssdb.c | 8 +- trunk/drivers/staging/vt6655/device.h | 2 +- trunk/drivers/staging/vt6655/device_main.c | 14 +- trunk/drivers/staging/vt6655/dpc.c | 10 +- trunk/drivers/staging/vt6655/ioctl.c | 44 +- trunk/drivers/staging/vt6655/power.c | 2 +- trunk/drivers/staging/vt6655/rxtx.c | 4 +- trunk/drivers/staging/vt6655/wcmd.c | 14 +- trunk/drivers/staging/vt6655/wmgr.c | 46 +- trunk/drivers/staging/vt6655/wpactl.c | 10 +- trunk/drivers/staging/vt6656/bssdb.c | 8 +- trunk/drivers/staging/vt6656/dpc.c | 10 +- trunk/drivers/staging/vt6656/ioctl.c | 44 +- trunk/drivers/staging/vt6656/main_usb.c | 7 +- trunk/drivers/staging/vt6656/rxtx.c | 4 +- trunk/drivers/staging/vt6656/wcmd.c | 8 +- trunk/drivers/staging/vt6656/wmgr.c | 48 +- trunk/drivers/staging/vt6656/wpactl.c | 10 +- .../arch/arm/mach-omap2/cyashalomap_kernel.c | 2 +- .../astoria/block/cyasblkdev_block.c | 2 +- trunk/drivers/staging/winbond/mto.c | 10 - .../drivers/staging/winbond/phy_calibration.c | 8 +- trunk/drivers/staging/winbond/wb35tx.c | 3 +- trunk/drivers/staging/wlags49_h2/wl_cs.c | 2 +- trunk/drivers/staging/xgifb/XGI_main.h | 792 +- trunk/drivers/staging/xgifb/XGI_main_26.c | 1259 +- trunk/drivers/staging/xgifb/XGIfb.h | 142 +- trunk/drivers/staging/xgifb/vb_def.h | 1269 +- trunk/drivers/staging/xgifb/vb_ext.c | 138 +- trunk/drivers/staging/xgifb/vb_ext.h | 25 +- trunk/drivers/staging/xgifb/vb_init.c | 527 +- trunk/drivers/staging/xgifb/vb_init.h | 7 +- trunk/drivers/staging/xgifb/vb_setmode.c | 1885 ++- trunk/drivers/staging/xgifb/vb_setmode.h | 97 +- trunk/drivers/staging/xgifb/vb_struct.h | 823 +- trunk/drivers/staging/xgifb/vb_table.h | 8147 +++++----- trunk/drivers/staging/xgifb/vb_util.c | 2 +- trunk/drivers/staging/xgifb/vgatypes.h | 113 +- trunk/drivers/staging/zcache/zcache.c | 5 +- trunk/drivers/telephony/ixj_pcmcia.c | 2 +- trunk/drivers/tty/Kconfig | 31 + trunk/drivers/tty/Makefile | 2 + trunk/drivers/tty/amiserial.c | 2 - trunk/drivers/tty/cyclades.c | 5 +- trunk/drivers/tty/ipwireless/Makefile | 2 - trunk/drivers/tty/ipwireless/main.c | 2 +- trunk/drivers/tty/moxa.c | 18 +- trunk/drivers/tty/n_gsm.c | 41 +- trunk/drivers/tty/n_hdlc.c | 18 +- trunk/drivers/tty/n_r3964.c | 10 +- trunk/drivers/tty/n_tracerouter.c | 243 + trunk/drivers/tty/n_tracesink.c | 238 + trunk/drivers/tty/n_tracesink.h | 36 + trunk/drivers/tty/n_tty.c | 61 +- trunk/drivers/tty/nozomi.c | 29 +- trunk/drivers/tty/pty.c | 35 +- trunk/drivers/tty/rocket.c | 47 - trunk/drivers/tty/serial/21285.c | 2 - trunk/drivers/tty/serial/68328serial.c | 2 +- trunk/drivers/tty/serial/8250.c | 44 +- trunk/drivers/tty/serial/8250.h | 3 +- trunk/drivers/tty/serial/8250_accent.c | 2 - trunk/drivers/tty/serial/8250_boca.c | 2 - trunk/drivers/tty/serial/8250_exar_st16c554.c | 2 - trunk/drivers/tty/serial/8250_fourport.c | 2 - trunk/drivers/tty/serial/8250_hub6.c | 2 - trunk/drivers/tty/serial/8250_mca.c | 2 - trunk/drivers/tty/serial/8250_pci.c | 53 +- trunk/drivers/tty/serial/8250_pnp.c | 2 - trunk/drivers/tty/serial/Kconfig | 27 +- trunk/drivers/tty/serial/Makefile | 1 + trunk/drivers/tty/serial/altera_uart.c | 26 +- trunk/drivers/tty/serial/amba-pl010.c | 2 - trunk/drivers/tty/serial/amba-pl011.c | 2 - trunk/drivers/tty/serial/atmel_serial.c | 2 - trunk/drivers/tty/serial/clps711x.c | 2 - trunk/drivers/tty/serial/cpm_uart/cpm_uart.h | 2 - .../tty/serial/cpm_uart/cpm_uart_core.c | 2 - .../tty/serial/cpm_uart/cpm_uart_cpm1.c | 2 - .../tty/serial/cpm_uart/cpm_uart_cpm1.h | 2 - .../tty/serial/cpm_uart/cpm_uart_cpm2.c | 2 - .../tty/serial/cpm_uart/cpm_uart_cpm2.h | 2 - trunk/drivers/tty/serial/ifx6x60.c | 2 - trunk/drivers/tty/serial/imx.c | 2 - trunk/drivers/tty/serial/msm_serial.c | 2 +- trunk/drivers/tty/serial/msm_serial.h | 2 - trunk/drivers/tty/serial/msm_smd_tty.c | 3 +- trunk/drivers/tty/serial/netx-serial.c | 2 - trunk/drivers/tty/serial/pch_uart.c | 9 + trunk/drivers/tty/serial/pmac_zilog.c | 2 - trunk/drivers/tty/serial/pxa.c | 2 - trunk/drivers/tty/serial/s3c2400.c | 3 +- trunk/drivers/tty/serial/s3c2410.c | 3 +- trunk/drivers/tty/serial/s3c2412.c | 3 +- trunk/drivers/tty/serial/s3c2440.c | 3 +- trunk/drivers/tty/serial/s3c24a0.c | 3 +- trunk/drivers/tty/serial/s3c6400.c | 3 +- trunk/drivers/tty/serial/s5pv210.c | 3 +- trunk/drivers/tty/serial/sa1100.c | 2 - trunk/drivers/tty/serial/samsung.c | 3 +- trunk/drivers/tty/serial/samsung.h | 3 +- trunk/drivers/tty/serial/sb1250-duart.c | 2 - trunk/drivers/tty/serial/serial_core.c | 90 +- trunk/drivers/tty/serial/serial_cs.c | 2 +- trunk/drivers/tty/serial/serial_ks8695.c | 2 - trunk/drivers/tty/serial/serial_txx9.c | 2 - trunk/drivers/tty/serial/sh-sci.c | 18 +- trunk/drivers/tty/serial/sh-sci.h | 16 +- trunk/drivers/tty/serial/vt8500_serial.c | 2 - trunk/drivers/tty/serial/xilinx_uartps.c | 1113 ++ trunk/drivers/tty/synclink.c | 2 - trunk/drivers/tty/tty_buffer.c | 15 +- trunk/drivers/tty/tty_io.c | 53 +- trunk/drivers/tty/tty_ioctl.c | 2 - trunk/drivers/tty/tty_ldisc.c | 13 + trunk/drivers/tty/tty_mutex.c | 3 - trunk/drivers/tty/vt/keyboard.c | 2 - trunk/drivers/tty/vt/selection.c | 5 +- trunk/drivers/tty/vt/vc_screen.c | 2 - trunk/drivers/tty/vt/vt.c | 13 +- trunk/drivers/tty/vt/vt_ioctl.c | 25 +- trunk/drivers/usb/Kconfig | 4 + trunk/drivers/usb/Makefile | 6 + trunk/drivers/usb/class/cdc-acm.c | 479 +- trunk/drivers/usb/class/cdc-acm.h | 24 +- trunk/drivers/usb/class/cdc-wdm.c | 14 + trunk/drivers/usb/core/config.c | 2 +- trunk/drivers/usb/core/devices.c | 22 +- trunk/drivers/usb/core/file.c | 8 - trunk/drivers/usb/core/hcd.c | 6 +- trunk/drivers/usb/core/hub.c | 131 +- trunk/drivers/usb/core/sysfs.c | 13 +- trunk/drivers/usb/core/usb.c | 3 +- trunk/drivers/usb/core/usb.h | 2 +- trunk/drivers/usb/early/ehci-dbgp.c | 5 +- trunk/drivers/usb/gadget/Kconfig | 35 + trunk/drivers/usb/gadget/Makefile | 1 + trunk/drivers/usb/gadget/at91_udc.c | 2 +- trunk/drivers/usb/gadget/ci13xxx_udc.c | 75 +- trunk/drivers/usb/gadget/composite.c | 62 +- trunk/drivers/usb/gadget/dbgp.c | 14 +- trunk/drivers/usb/gadget/dummy_hcd.c | 21 +- trunk/drivers/usb/gadget/f_audio.c | 2 +- trunk/drivers/usb/gadget/f_mass_storage.c | 68 +- trunk/drivers/usb/gadget/f_rndis.c | 3 +- trunk/drivers/usb/gadget/file_storage.c | 55 +- trunk/drivers/usb/gadget/fsl_qe_udc.h | 2 +- trunk/drivers/usb/gadget/fsl_udc_core.c | 438 +- trunk/drivers/usb/gadget/fsl_usb2_udc.h | 6 + trunk/drivers/usb/gadget/gadget_chips.h | 17 + trunk/drivers/usb/gadget/printer.c | 2 + trunk/drivers/usb/gadget/s3c-hsotg.c | 235 +- trunk/drivers/usb/gadget/s3c-hsudc.c | 1349 ++ trunk/drivers/usb/gadget/storage_common.c | 18 +- trunk/drivers/usb/host/Kconfig | 57 +- trunk/drivers/usb/host/ehci-ath79.c | 202 + trunk/drivers/usb/host/ehci-atmel.c | 2 +- trunk/drivers/usb/host/ehci-au1xxx.c | 12 +- trunk/drivers/usb/host/ehci-cns3xxx.c | 2 +- trunk/drivers/usb/host/ehci-dbg.c | 2 +- trunk/drivers/usb/host/ehci-fsl.c | 221 +- trunk/drivers/usb/host/ehci-fsl.h | 4 + trunk/drivers/usb/host/ehci-grlib.c | 242 + trunk/drivers/usb/host/ehci-hcd.c | 21 +- trunk/drivers/usb/host/ehci-hub.c | 10 +- trunk/drivers/usb/host/ehci-ixp4xx.c | 2 +- trunk/drivers/usb/host/ehci-msm.c | 2 +- trunk/drivers/usb/host/ehci-mxc.c | 2 +- trunk/drivers/usb/host/ehci-octeon.c | 2 +- trunk/drivers/usb/host/ehci-omap.c | 2 +- trunk/drivers/usb/host/ehci-orion.c | 2 +- trunk/drivers/usb/host/ehci-pci.c | 2 +- trunk/drivers/usb/host/ehci-pmcmsp.c | 2 +- trunk/drivers/usb/host/ehci-ppc-of.c | 2 +- trunk/drivers/usb/host/ehci-ps3.c | 2 +- trunk/drivers/usb/host/ehci-q.c | 5 + trunk/drivers/usb/host/ehci-s5p.c | 202 + trunk/drivers/usb/host/ehci-sched.c | 22 +- trunk/drivers/usb/host/ehci-sh.c | 2 +- trunk/drivers/usb/host/ehci-spear.c | 2 +- trunk/drivers/usb/host/ehci-tegra.c | 74 +- trunk/drivers/usb/host/ehci-vt8500.c | 3 +- trunk/drivers/usb/host/ehci-w90x900.c | 2 +- trunk/drivers/usb/host/ehci-xilinx-of.c | 2 +- trunk/drivers/usb/host/ehci.h | 13 + trunk/drivers/usb/host/isp116x-hcd.c | 1 + trunk/drivers/usb/host/isp1760-hcd.c | 1638 +- trunk/drivers/usb/host/isp1760-hcd.h | 78 +- trunk/drivers/usb/host/octeon2-common.c | 45 +- trunk/drivers/usb/host/ohci-ath79.c | 151 + trunk/drivers/usb/host/ohci-hcd.c | 9 +- trunk/drivers/usb/host/ohci-pci.c | 12 +- trunk/drivers/usb/host/ohci-s3c2410.c | 58 +- trunk/drivers/usb/host/oxu210hp-hcd.c | 6 +- trunk/drivers/usb/host/pci-quirks.c | 151 +- trunk/drivers/usb/host/sl811-hcd.c | 8 +- trunk/drivers/usb/host/sl811_cs.c | 2 +- trunk/drivers/usb/host/u132-hcd.c | 3 +- trunk/drivers/usb/host/uhci-debug.c | 88 +- trunk/drivers/usb/host/uhci-grlib.c | 208 + trunk/drivers/usb/host/uhci-hcd.c | 458 +- trunk/drivers/usb/host/uhci-hcd.h | 248 +- trunk/drivers/usb/host/uhci-hub.c | 41 +- trunk/drivers/usb/host/uhci-pci.c | 301 + trunk/drivers/usb/host/uhci-q.c | 131 +- trunk/drivers/usb/host/xhci-dbg.c | 51 +- trunk/drivers/usb/host/xhci-hub.c | 231 +- trunk/drivers/usb/host/xhci-mem.c | 144 +- trunk/drivers/usb/host/xhci-pci.c | 1 + trunk/drivers/usb/host/xhci-ring.c | 509 +- trunk/drivers/usb/host/xhci.c | 145 +- trunk/drivers/usb/host/xhci.h | 145 +- trunk/drivers/usb/misc/ftdi-elan.c | 3 +- trunk/drivers/usb/misc/ldusb.c | 52 +- trunk/drivers/usb/misc/usbtest.c | 131 +- trunk/drivers/usb/musb/Kconfig | 35 +- trunk/drivers/usb/musb/Makefile | 7 +- trunk/drivers/usb/musb/am35x.c | 17 +- trunk/drivers/usb/musb/blackfin.c | 16 +- trunk/drivers/usb/musb/cppi_dma.c | 34 +- trunk/drivers/usb/musb/da8xx.c | 21 +- trunk/drivers/usb/musb/davinci.c | 13 +- trunk/drivers/usb/musb/musb_core.c | 151 +- trunk/drivers/usb/musb/musb_debug.h | 14 - trunk/drivers/usb/musb/musb_gadget.c | 178 +- trunk/drivers/usb/musb/musb_gadget_ep0.c | 22 +- trunk/drivers/usb/musb/musb_host.c | 157 +- trunk/drivers/usb/musb/musb_virthub.c | 25 +- trunk/drivers/usb/musb/musbhsdma.c | 11 +- trunk/drivers/usb/musb/omap2430.c | 25 +- trunk/drivers/usb/musb/tusb6010.c | 62 +- trunk/drivers/usb/musb/tusb6010_omap.c | 32 +- trunk/drivers/usb/musb/ux500_dma.c | 422 + trunk/drivers/usb/otg/Kconfig | 8 + trunk/drivers/usb/otg/Makefile | 2 + trunk/drivers/usb/otg/fsl_otg.c | 1169 ++ trunk/drivers/usb/otg/fsl_otg.h | 406 + trunk/drivers/usb/otg/gpio_vbus.c | 14 +- trunk/drivers/usb/otg/isp1301_omap.c | 26 +- trunk/drivers/usb/otg/langwell_otg.c | 40 +- trunk/drivers/usb/otg/msm_otg.c | 671 +- trunk/drivers/usb/otg/otg.c | 35 + trunk/drivers/usb/otg/otg_fsm.c | 349 + trunk/drivers/usb/otg/otg_fsm.h | 154 + trunk/drivers/usb/otg/twl4030-usb.c | 9 +- trunk/drivers/usb/otg/twl6030-usb.c | 17 +- trunk/drivers/usb/renesas_usbhs/Kconfig | 16 + trunk/drivers/usb/renesas_usbhs/Makefile | 9 + trunk/drivers/usb/renesas_usbhs/common.c | 437 + trunk/drivers/usb/renesas_usbhs/common.h | 230 + trunk/drivers/usb/renesas_usbhs/mod.c | 328 + trunk/drivers/usb/renesas_usbhs/mod.h | 137 + trunk/drivers/usb/renesas_usbhs/mod_gadget.c | 1384 ++ trunk/drivers/usb/renesas_usbhs/pipe.c | 874 + trunk/drivers/usb/renesas_usbhs/pipe.h | 104 + trunk/drivers/usb/serial/Kconfig | 9 - trunk/drivers/usb/serial/Makefile | 1 - trunk/drivers/usb/serial/cp210x.c | 6 +- trunk/drivers/usb/serial/ftdi_sio.c | 1 + trunk/drivers/usb/serial/ftdi_sio_ids.h | 5 + trunk/drivers/usb/serial/garmin_gps.c | 20 +- trunk/drivers/usb/serial/moto_modem.c | 1 + trunk/drivers/usb/serial/opticon.c | 7 +- trunk/drivers/usb/serial/option.c | 10 +- trunk/drivers/usb/serial/sam-ba.c | 206 - trunk/drivers/usb/storage/unusual_realtek.h | 10 +- trunk/drivers/usb/storage/usb.c | 9 +- trunk/drivers/video/Kconfig | 47 +- trunk/drivers/video/Makefile | 1 + trunk/drivers/video/amifb.c | 27 +- trunk/drivers/video/backlight/adp5520_bl.c | 6 +- trunk/drivers/video/da8xx-fb.c | 4 +- trunk/drivers/video/efifb.c | 4 +- trunk/drivers/video/imxfb.c | 28 +- trunk/drivers/video/mb862xx/Makefile | 5 +- trunk/drivers/video/mb862xx/mb862xx-i2c.c | 177 + trunk/drivers/video/mb862xx/mb862xx_reg.h | 58 +- trunk/drivers/video/mb862xx/mb862xxfb.h | 36 + .../mb862xx/{mb862xxfb.c => mb862xxfbdrv.c} | 152 +- trunk/drivers/video/omap/dispc.c | 4 +- trunk/drivers/video/omap/omapfb_main.c | 2 +- trunk/drivers/video/omap/rfbi.c | 2 +- trunk/drivers/video/omap2/Makefile | 4 +- trunk/drivers/video/omap2/displays/Kconfig | 9 +- .../video/omap2/displays/panel-acx565akm.c | 2 +- .../video/omap2/displays/panel-generic-dpi.c | 57 +- .../omap2/displays/panel-lgphilips-lb035q02.c | 2 +- .../omap2/displays/panel-nec-nl8048hl11-01b.c | 2 +- .../omap2/displays/panel-sharp-ls037v7dw01.c | 6 +- .../drivers/video/omap2/displays/panel-taal.c | 536 +- .../omap2/displays/panel-tpo-td043mtea1.c | 10 +- trunk/drivers/video/omap2/dss/Kconfig | 33 +- trunk/drivers/video/omap2/dss/core.c | 15 +- trunk/drivers/video/omap2/dss/dispc.c | 1552 +- trunk/drivers/video/omap2/dss/dispc.h | 691 + trunk/drivers/video/omap2/dss/display.c | 46 +- trunk/drivers/video/omap2/dss/dpi.c | 113 +- trunk/drivers/video/omap2/dss/dsi.c | 2367 ++- trunk/drivers/video/omap2/dss/dss.c | 118 +- trunk/drivers/video/omap2/dss/dss.h | 98 +- trunk/drivers/video/omap2/dss/dss_features.c | 105 +- trunk/drivers/video/omap2/dss/dss_features.h | 39 +- trunk/drivers/video/omap2/dss/hdmi.c | 461 +- trunk/drivers/video/omap2/dss/hdmi.h | 222 +- .../video/omap2/dss/hdmi_omap4_panel.c | 2 +- trunk/drivers/video/omap2/dss/manager.c | 14 +- trunk/drivers/video/omap2/dss/overlay.c | 43 +- trunk/drivers/video/omap2/dss/rfbi.c | 176 +- trunk/drivers/video/omap2/dss/sdi.c | 2 +- trunk/drivers/video/omap2/dss/venc.c | 23 +- .../drivers/video/omap2/omapfb/omapfb-ioctl.c | 14 +- .../drivers/video/omap2/omapfb/omapfb-main.c | 231 +- .../drivers/video/omap2/omapfb/omapfb-sysfs.c | 23 +- trunk/drivers/video/omap2/omapfb/omapfb.h | 8 +- trunk/drivers/video/s3c-fb.c | 121 +- trunk/drivers/video/s3c2410fb.c | 8 +- trunk/drivers/video/s3fb.c | 209 +- trunk/drivers/video/savage/savagefb-i2c.c | 2 + trunk/drivers/video/savage/savagefb.h | 8 +- trunk/drivers/video/savage/savagefb_driver.c | 15 +- trunk/drivers/video/sh7760fb.c | 6 +- trunk/drivers/video/sh_mobile_hdmi.c | 10 +- trunk/drivers/video/sh_mobile_lcdcfb.c | 126 +- trunk/drivers/video/sh_mobile_lcdcfb.h | 1 + trunk/drivers/video/sh_mobile_meram.c | 567 + trunk/drivers/video/sh_mobile_meram.h | 41 + trunk/drivers/video/sm501fb.c | 24 +- trunk/drivers/video/udlfb.c | 20 +- trunk/fs/9p/Kconfig | 5 +- trunk/fs/9p/vfs_inode_dotl.c | 11 +- trunk/fs/Kconfig | 18 +- trunk/fs/binfmt_flat.c | 8 + trunk/fs/block_dev.c | 17 +- trunk/fs/ceph/addr.c | 5 +- trunk/fs/ceph/caps.c | 61 +- trunk/fs/ceph/dir.c | 7 +- trunk/fs/ceph/export.c | 25 +- trunk/fs/ceph/mds_client.c | 7 +- trunk/fs/ceph/mds_client.h | 1 + trunk/fs/dcache.c | 8 +- trunk/fs/dlm/config.c | 9 +- trunk/fs/dlm/config.h | 1 + trunk/fs/dlm/dlm_internal.h | 3 + trunk/fs/dlm/lock.c | 182 +- trunk/fs/dlm/lock.h | 1 + trunk/fs/dlm/lockspace.c | 6 +- trunk/fs/dlm/plock.c | 65 +- trunk/fs/dlm/user.c | 1 - trunk/fs/drop_caches.c | 5 +- trunk/fs/exec.c | 13 +- trunk/fs/ext2/super.c | 3 +- trunk/fs/ext3/namei.c | 80 +- trunk/fs/fat/cache.c | 7 + trunk/fs/fat/dir.c | 32 +- trunk/fs/fat/fat.h | 15 +- trunk/fs/fat/fatent.c | 4 +- trunk/fs/fat/inode.c | 74 +- trunk/fs/fat/misc.c | 44 +- trunk/fs/fat/namei_msdos.c | 4 +- trunk/fs/fat/namei_vfat.c | 4 +- trunk/fs/fscache/operation.c | 10 - trunk/fs/fscache/page.c | 13 - trunk/fs/gfs2/glock.c | 5 +- trunk/fs/gfs2/quota.c | 12 +- trunk/fs/gfs2/quota.h | 4 +- trunk/fs/hugetlbfs/inode.c | 4 +- trunk/fs/inode.c | 9 +- trunk/fs/jbd/commit.c | 15 +- trunk/fs/jbd/journal.c | 16 +- trunk/fs/jbd/transaction.c | 3 +- trunk/fs/jbd2/commit.c | 6 - trunk/fs/mbcache.c | 10 +- trunk/fs/ncpfs/inode.c | 4 +- trunk/fs/nfs/dir.c | 5 +- trunk/fs/nfs/internal.h | 2 +- trunk/fs/partitions/check.c | 8 +- trunk/fs/proc/internal.h | 8 + trunk/fs/proc/task_mmu.c | 204 +- trunk/fs/quota/dquot.c | 5 +- trunk/fs/splice.c | 33 +- trunk/fs/timerfd.c | 102 +- trunk/fs/ubifs/budget.c | 104 +- trunk/fs/ubifs/commit.c | 2 +- trunk/fs/ubifs/debug.c | 167 +- trunk/fs/ubifs/debug.h | 178 +- trunk/fs/ubifs/dir.c | 4 +- trunk/fs/ubifs/file.c | 28 +- trunk/fs/ubifs/find.c | 10 +- trunk/fs/ubifs/gc.c | 71 +- trunk/fs/ubifs/io.c | 33 +- trunk/fs/ubifs/journal.c | 29 +- trunk/fs/ubifs/log.c | 28 +- trunk/fs/ubifs/lprops.c | 115 +- trunk/fs/ubifs/lpt_commit.c | 55 +- trunk/fs/ubifs/master.c | 8 +- trunk/fs/ubifs/misc.h | 17 + trunk/fs/ubifs/orphan.c | 3 +- trunk/fs/ubifs/recovery.c | 354 +- trunk/fs/ubifs/replay.c | 468 +- trunk/fs/ubifs/sb.c | 153 +- trunk/fs/ubifs/super.c | 46 +- trunk/fs/ubifs/tnc.c | 10 +- trunk/fs/ubifs/tnc_commit.c | 18 +- trunk/fs/ubifs/ubifs-media.h | 30 +- trunk/fs/ubifs/ubifs.h | 86 +- trunk/fs/ubifs/xattr.c | 8 +- trunk/fs/xfs/linux-2.6/xfs_buf.c | 26 +- trunk/fs/xfs/linux-2.6/xfs_buf.h | 1 + trunk/fs/xfs/linux-2.6/xfs_ioctl32.c | 3 +- trunk/fs/xfs/linux-2.6/xfs_ioctl32.h | 1 + trunk/fs/xfs/linux-2.6/xfs_linux.h | 1 + trunk/fs/xfs/linux-2.6/xfs_message.c | 20 +- trunk/fs/xfs/linux-2.6/xfs_message.h | 7 +- trunk/fs/xfs/linux-2.6/xfs_super.c | 4 - trunk/fs/xfs/linux-2.6/xfs_sync.c | 15 +- trunk/fs/xfs/linux-2.6/xfs_trace.h | 76 +- trunk/fs/xfs/quota/xfs_qm.c | 6 +- trunk/fs/xfs/xfs_ag.h | 1 - trunk/fs/xfs/xfs_alloc.c | 844 +- trunk/fs/xfs/xfs_alloc.h | 15 +- trunk/fs/xfs/xfs_alloc_btree.c | 13 +- trunk/fs/xfs/xfs_dfrag.c | 6 +- trunk/fs/xfs/xfs_inode.c | 2 +- trunk/fs/xfs/xfs_inode_item.c | 1 - trunk/fs/xfs/xfs_log.c | 15 +- trunk/fs/xfs/xfs_log.h | 2 - trunk/fs/xfs/xfs_log_cil.c | 5 +- trunk/fs/xfs/xfs_log_priv.h | 2 + trunk/fs/xfs/xfs_log_recover.c | 75 +- trunk/fs/xfs/xfs_mount.c | 4 +- trunk/fs/xfs/xfs_trans.c | 6 +- trunk/fs/xfs/xfs_types.h | 2 - trunk/include/asm-generic/audit_change_attr.h | 4 + trunk/include/asm-generic/audit_dir_write.h | 14 + trunk/include/asm-generic/audit_read.h | 5 + trunk/include/asm-generic/audit_write.h | 2 + trunk/include/asm-generic/cacheflush.h | 5 +- trunk/include/asm-generic/pgtable.h | 12 +- trunk/include/asm-generic/resource.h | 2 +- trunk/include/asm-generic/tlb.h | 156 +- trunk/include/asm-generic/unistd.h | 221 +- trunk/include/asm-generic/vmlinux.lds.h | 61 +- trunk/include/drm/drmP.h | 49 +- trunk/include/drm/drm_crtc.h | 6 +- trunk/include/drm/drm_dp_helper.h | 5 + trunk/include/drm/drm_edid.h | 25 +- trunk/include/drm/drm_fb_helper.h | 16 +- trunk/include/linux/Kbuild | 3 + trunk/include/linux/bitmap.h | 5 +- trunk/include/linux/blk_types.h | 2 - trunk/include/linux/blkdev.h | 15 +- trunk/include/linux/bootmem.h | 25 +- trunk/include/linux/c2port.h | 3 - trunk/include/linux/capability.h | 5 - trunk/include/linux/ceph/ceph_fs.h | 1 + trunk/include/linux/clocksource.h | 8 + trunk/include/linux/compat.h | 236 +- trunk/include/linux/compiler-gcc.h | 4 + trunk/include/linux/compiler-gcc4.h | 2 +- trunk/include/linux/cpumask.h | 15 + trunk/include/linux/dlm_plock.h | 6 +- trunk/include/linux/drbd.h | 10 +- trunk/include/linux/drbd_tag_magic.h | 2 +- trunk/include/linux/dvb/frontend.h | 20 +- trunk/include/linux/dvb/version.h | 2 +- trunk/include/linux/elf.h | 1 + trunk/include/linux/fs.h | 7 +- trunk/include/linux/fscache-cache.h | 12 - trunk/include/linux/fsl_devices.h | 16 + trunk/include/linux/genalloc.h | 25 +- trunk/include/linux/genhd.h | 2 +- trunk/include/linux/gfp.h | 9 +- trunk/include/linux/gpio_keys.h | 8 +- trunk/include/linux/hrtimer.h | 33 +- trunk/include/linux/huge_mm.h | 8 +- trunk/include/linux/i2c.h | 2 +- trunk/include/linux/i2c/i2c-sh_mobile.h | 10 + trunk/include/linux/i2c/mpr121_touchkey.h | 20 + trunk/include/linux/i2c/tsc2007.h | 7 + trunk/include/linux/init_task.h | 7 - trunk/include/linux/input/ad714x.h | 3 +- trunk/include/linux/input/adp5589.h | 213 + trunk/include/linux/kernel.h | 39 + trunk/include/linux/key.h | 13 + trunk/include/linux/kmod.h | 3 + trunk/include/linux/kvm_host.h | 1 + trunk/include/linux/leds-pca9532.h | 3 +- trunk/include/linux/leds.h | 2 + trunk/include/linux/linkage.h | 4 - trunk/include/linux/lockdep.h | 3 + trunk/include/linux/lru_cache.h | 12 +- trunk/include/linux/lsm_audit.h | 11 +- trunk/include/linux/memblock.h | 9 +- trunk/include/linux/mempolicy.h | 7 +- trunk/include/linux/mfd/db5500-prcmu.h | 45 + trunk/include/linux/mfd/db8500-prcmu.h | 978 ++ trunk/include/linux/mfd/tmio.h | 17 + trunk/include/linux/mm.h | 121 +- trunk/include/linux/mm_types.h | 19 +- trunk/include/linux/mmc/Kbuild | 1 + trunk/include/linux/mmc/card.h | 189 +- trunk/include/linux/mmc/core.h | 5 +- trunk/include/linux/mmc/host.h | 49 +- trunk/include/linux/mmc/ioctl.h | 54 + trunk/include/linux/mmc/mmc.h | 18 + trunk/include/linux/mmc/sd.h | 9 +- trunk/include/linux/mmc/sdhci.h | 15 + trunk/include/linux/mmc/sh_mobile_sdhi.h | 4 + trunk/include/linux/mmu_notifier.h | 2 +- trunk/include/linux/mmzone.h | 9 +- trunk/include/linux/mtd/physmap.h | 4 +- trunk/include/linux/mtd/ubi.h | 4 +- trunk/include/linux/mutex.h | 9 + trunk/include/linux/mxm-wmi.h | 33 + trunk/include/linux/oom.h | 2 + trunk/include/linux/page-flags.h | 2 +- trunk/include/linux/pagemap.h | 15 + trunk/include/linux/pci-aspm.h | 1 + trunk/include/linux/pci.h | 56 +- trunk/include/linux/pci_ids.h | 2 + trunk/include/linux/pci_regs.h | 17 + trunk/include/linux/percpu_counter.h | 6 +- trunk/include/linux/posix-timers.h | 1 + trunk/include/linux/printk.h | 7 + trunk/include/linux/proc_fs.h | 8 - trunk/include/linux/pti.h | 42 + trunk/include/linux/ptp_classify.h | 7 + trunk/include/linux/ptp_clock.h | 84 + trunk/include/linux/ptp_clock_kernel.h | 139 + trunk/include/linux/regulator/db8500-prcmu.h | 45 + trunk/include/linux/rmap.h | 29 +- trunk/include/linux/rotary_encoder.h | 1 + trunk/include/linux/sched.h | 36 +- trunk/include/linux/serial_core.h | 6 +- trunk/include/linux/serial_reg.h | 2 + trunk/include/linux/shmem_fs.h | 8 +- trunk/include/linux/spi/ads7846.h | 3 +- trunk/include/linux/thread_info.h | 2 +- trunk/include/linux/timerfd.h | 3 +- trunk/include/linux/tty.h | 4 + trunk/include/linux/tty_ldisc.h | 9 +- trunk/include/linux/usb.h | 6 +- trunk/include/linux/usb/ch9.h | 2 +- trunk/include/linux/usb/composite.h | 16 +- trunk/include/linux/usb/ehci_def.h | 15 +- trunk/include/linux/usb/gadget.h | 4 +- trunk/include/linux/usb/msm_hsusb.h | 79 +- trunk/include/linux/usb/msm_hsusb_hw.h | 2 + trunk/include/linux/usb/otg.h | 6 + trunk/include/linux/usb/renesas_usbhs.h | 156 + trunk/include/linux/uvcvideo.h | 69 + trunk/include/linux/v4l2-mediabus.h | 3 + trunk/include/linux/videodev2.h | 4 + trunk/include/linux/vmstat.h | 7 +- trunk/include/linux/xattr.h | 8 +- trunk/include/media/mt9v032.h | 12 + trunk/include/media/rc-core.h | 7 +- trunk/include/media/rc-map.h | 1 + trunk/include/media/soc_camera.h | 15 +- trunk/include/media/soc_camera_platform.h | 50 + trunk/include/media/soc_mediabus.h | 25 +- trunk/include/media/v4l2-dev.h | 2 + trunk/include/mtd/ubi-user.h | 40 +- trunk/include/net/9p/9p.h | 13 +- trunk/include/net/9p/client.h | 2 +- trunk/include/net/9p/transport.h | 3 +- trunk/include/pcmcia/ds.h | 2 +- .../video/omap-panel-generic-dpi.h} | 8 +- .../video/omap-panel-nokia-dsi.h} | 14 +- .../display.h => include/video/omapdss.h} | 114 +- trunk/include/video/sh_mobile_lcdc.h | 3 + trunk/include/video/sh_mobile_meram.h | 68 + trunk/include/xen/interface/io/blkif.h | 13 + trunk/init/Kconfig | 30 +- trunk/init/calibrate.c | 75 +- trunk/init/main.c | 3 + trunk/kernel/capability.c | 4 - trunk/kernel/compat.c | 8 + trunk/kernel/cred.c | 6 +- trunk/kernel/fork.c | 42 +- trunk/kernel/hrtimer.c | 162 +- trunk/kernel/irq/proc.c | 54 +- trunk/kernel/kmod.c | 100 + trunk/kernel/module.c | 4 +- trunk/kernel/mutex.c | 25 +- trunk/kernel/posix-cpu-timers.c | 4 +- trunk/kernel/posix-timers.c | 27 +- trunk/kernel/printk.c | 87 +- trunk/kernel/profile.c | 6 +- trunk/kernel/ptrace.c | 2 +- trunk/kernel/sched.c | 39 +- trunk/kernel/sched_fair.c | 52 +- trunk/kernel/signal.c | 6 +- trunk/kernel/sysctl.c | 8 +- trunk/kernel/time/alarmtimer.c | 16 +- trunk/kernel/time/tick-broadcast.c | 16 +- trunk/kernel/time/timekeeping.c | 17 +- trunk/kernel/watchdog.c | 2 +- trunk/kernel/workqueue.c | 4 +- trunk/lib/Kconfig.debug | 20 + trunk/lib/audit.c | 2 + trunk/lib/bitmap.c | 109 +- trunk/lib/flex_array.c | 26 +- trunk/lib/genalloc.c | 45 +- trunk/lib/kstrtox.c | 26 + trunk/lib/lru_cache.c | 2 +- trunk/lib/show_mem.c | 2 +- trunk/lib/vsprintf.c | 2 +- trunk/mm/backing-dev.c | 4 +- trunk/mm/filemap.c | 71 +- trunk/mm/filemap_xip.c | 4 +- trunk/mm/fremap.c | 4 +- trunk/mm/huge_memory.c | 25 +- trunk/mm/hugetlb.c | 14 +- trunk/mm/init-mm.c | 1 - trunk/mm/internal.h | 4 + trunk/mm/ksm.c | 7 +- trunk/mm/memcontrol.c | 13 +- trunk/mm/memory-failure.c | 21 +- trunk/mm/memory.c | 440 +- trunk/mm/memory_hotplug.c | 21 +- trunk/mm/mempolicy.c | 164 +- trunk/mm/migrate.c | 17 +- trunk/mm/mmap.c | 121 +- trunk/mm/mremap.c | 5 +- trunk/mm/nobootmem.c | 23 - trunk/mm/nommu.c | 108 +- trunk/mm/oom_kill.c | 36 +- trunk/mm/page_alloc.c | 121 +- trunk/mm/percpu.c | 6 +- trunk/mm/readahead.c | 2 +- trunk/mm/rmap.c | 183 +- trunk/mm/shmem.c | 320 +- trunk/mm/slub.c | 3 +- trunk/mm/swap.c | 52 +- trunk/mm/swapfile.c | 6 +- trunk/mm/util.c | 24 + trunk/mm/vmalloc.c | 15 +- trunk/mm/vmscan.c | 80 +- trunk/mm/vmstat.c | 264 +- trunk/net/9p/Kconfig | 8 +- trunk/net/9p/client.c | 30 +- trunk/net/9p/mod.c | 4 +- trunk/net/9p/trans_fd.c | 7 +- trunk/net/9p/util.c | 2 +- trunk/net/ceph/messenger.c | 82 +- trunk/net/ceph/osd_client.c | 19 +- trunk/net/ceph/osdmap.c | 13 +- trunk/net/dns_resolver/dns_key.c | 10 +- trunk/net/sunrpc/auth.c | 4 +- trunk/scripts/.gitignore | 1 + trunk/scripts/Kbuild.include | 12 + trunk/scripts/Makefile | 7 +- trunk/scripts/Makefile.asm-generic | 23 + trunk/scripts/Makefile.build | 74 +- trunk/scripts/Makefile.headersinst | 10 +- trunk/scripts/Makefile.lib | 2 +- trunk/scripts/basic/.gitignore | 2 - trunk/scripts/basic/Makefile | 3 +- trunk/scripts/checkpatch.pl | 13 +- trunk/scripts/checkversion.pl | 1 + trunk/scripts/{basic => }/docproc.c | 0 trunk/scripts/export_report.pl | 26 +- trunk/scripts/gen_initramfs_list.sh | 27 +- trunk/scripts/kallsyms.c | 2 + trunk/scripts/kconfig/Makefile | 38 +- trunk/scripts/kconfig/confdata.c | 20 +- trunk/scripts/kconfig/expr.h | 4 - trunk/scripts/kconfig/gconf.c | 12 +- trunk/scripts/kconfig/lex.zconf.c_shipped | 33 +- trunk/scripts/kconfig/nconf.c | 14 +- trunk/scripts/kconfig/qconf.cc | 5 +- trunk/scripts/kconfig/zconf.l | 33 +- trunk/scripts/mkcompile_h | 30 +- trunk/scripts/package/Makefile | 4 +- trunk/scripts/package/mkspec | 19 +- trunk/scripts/patch-kernel | 2 +- trunk/security/Kconfig | 1 + trunk/security/commoncap.c | 13 +- trunk/security/keys/internal.h | 4 +- trunk/security/keys/keyctl.c | 6 + trunk/security/keys/keyring.c | 37 +- trunk/security/keys/proc.c | 2 +- trunk/security/keys/process_keys.c | 12 +- trunk/security/keys/request_key.c | 3 +- trunk/security/keys/request_key_auth.c | 3 +- trunk/security/keys/user_defined.c | 4 +- trunk/security/lsm_audit.c | 59 +- trunk/security/selinux/avc.c | 2 +- trunk/security/selinux/hooks.c | 92 +- trunk/security/selinux/include/security.h | 9 +- trunk/security/selinux/netnode.c | 1 + trunk/security/selinux/selinuxfs.c | 28 +- trunk/security/selinux/ss/policydb.c | 244 +- trunk/security/selinux/ss/policydb.h | 12 +- trunk/security/selinux/ss/services.c | 72 +- trunk/security/smack/smack.h | 11 +- trunk/security/smack/smack_lsm.c | 48 +- trunk/security/tomoyo/common.c | 17 +- trunk/security/tomoyo/file.c | 1 - trunk/security/tomoyo/memory.c | 1 + trunk/security/tomoyo/mount.c | 1 + trunk/security/tomoyo/util.c | 2 +- trunk/sound/pcmcia/pdaudiocf/pdaudiocf.c | 2 +- trunk/sound/pcmcia/vx/vxpocket.c | 2 +- trunk/sound/soc/codecs/cx20442.c | 8 +- trunk/tools/perf/util/event.c | 2 +- trunk/usr/gen_init_cpio.c | 53 +- trunk/virt/kvm/assigned-dev.c | 18 +- 3093 files changed, 179260 insertions(+), 225642 deletions(-) create mode 100644 trunk/Documentation/ABI/testing/sysfs-ptp create mode 100644 trunk/Documentation/DocBook/v4l/pixfmt-m420.xml create mode 100644 trunk/Documentation/DocBook/v4l/pixfmt-y10b.xml create mode 100644 trunk/Documentation/hwmon/emc6w201 create mode 100644 trunk/Documentation/hwmon/fam15h_power create mode 100644 trunk/Documentation/mmc/mmc-dev-parts.txt create mode 100644 trunk/Documentation/pti/pti_intel_mid.txt create mode 100644 trunk/Documentation/ptp/ptp.txt create mode 100644 trunk/Documentation/ptp/testptp.c create mode 100644 trunk/Documentation/ptp/testptp.mk create mode 100644 trunk/Documentation/video4linux/uvcvideo.txt create mode 100644 trunk/arch/alpha/include/asm/gpio.h create mode 100644 trunk/arch/arm/configs/mxs_defconfig delete mode 100644 trunk/arch/arm/configs/ns9xxx_defconfig delete mode 100644 trunk/arch/arm/configs/spear310_defconfig delete mode 100644 trunk/arch/arm/configs/spear320_defconfig rename trunk/arch/arm/configs/{spear300_defconfig => spear3xx_defconfig} (93%) rename trunk/arch/arm/configs/{spear600_defconfig => spear6xx_defconfig} (97%) delete mode 100644 trunk/arch/arm/configs/stmp378x_defconfig delete mode 100644 trunk/arch/arm/configs/stmp37xx_defconfig create mode 100644 trunk/arch/arm/mach-exynos4/include/mach/regs-usb-phy.h delete mode 100644 trunk/arch/arm/mach-exynos4/include/mach/smp.h create mode 100644 trunk/arch/arm/mach-exynos4/usb-phy.c create mode 100644 trunk/arch/arm/mach-imx/cache-l2x0.c rename trunk/arch/arm/{mach-mx3 => mach-imx}/clock-imx31.c (99%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/clock-imx35.c (99%) rename trunk/arch/arm/{mach-mx3/cpu.c => mach-imx/cpu-imx31.c} (72%) create mode 100644 trunk/arch/arm/mach-imx/cpu-imx35.c rename trunk/arch/arm/{mach-mx3/crm_regs.h => mach-imx/crmregs-imx31.h} (100%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/devices-imx31.h (67%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/devices-imx35.h (69%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/ehci-imx31.c (99%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/ehci-imx35.c (99%) rename trunk/arch/arm/{mach-mx3/eukrea_mbimxsd-baseboard.c => mach-imx/eukrea_mbimxsd35-baseboard.c} (92%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/iomux-imx31.c (100%) create mode 100644 trunk/arch/arm/mach-imx/mach-apf9328.c rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-armadillo5x0.c (95%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-bug.c (98%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-cpuimx35.c (99%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-kzm_arm11_01.c (99%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-mx31_3ds.c (96%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-mx31ads.c (99%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-mx31lilly.c (99%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-mx31lite.c (99%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-mx31moboard.c (92%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-mx35_3ds.c (99%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-pcm037.c (94%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-pcm037_eet.c (92%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-pcm043.c (97%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-qong.c (95%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mach-vpr200.c (94%) create mode 100644 trunk/arch/arm/mach-imx/mm-imx31.c create mode 100644 trunk/arch/arm/mach-imx/mm-imx35.c rename trunk/arch/arm/{mach-mx3 => mach-imx}/mx31lilly-db.c (95%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mx31lite-db.c (98%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mx31moboard-devboard.c (99%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mx31moboard-marxbot.c (99%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/mx31moboard-smartbot.c (99%) rename trunk/arch/arm/{mach-mx3 => mach-imx}/pcm037.h (100%) create mode 100644 trunk/arch/arm/mach-ixp4xx/include/mach/ixp46x_ts.h delete mode 100644 trunk/arch/arm/mach-msm/include/mach/smp.h delete mode 100644 trunk/arch/arm/mach-mx3/Kconfig delete mode 100644 trunk/arch/arm/mach-mx3/Makefile delete mode 100644 trunk/arch/arm/mach-mx3/Makefile.boot delete mode 100644 trunk/arch/arm/mach-mx3/devices.c delete mode 100644 trunk/arch/arm/mach-mx3/devices.h delete mode 100644 trunk/arch/arm/mach-mx3/mm.c delete mode 100644 trunk/arch/arm/mach-mxc91231/Kconfig delete mode 100644 trunk/arch/arm/mach-mxc91231/Makefile delete mode 100644 trunk/arch/arm/mach-mxc91231/Makefile.boot delete mode 100644 trunk/arch/arm/mach-mxc91231/clock.c delete mode 100644 trunk/arch/arm/mach-mxc91231/crm_regs.h delete mode 100644 trunk/arch/arm/mach-mxc91231/devices.c delete mode 100644 trunk/arch/arm/mach-mxc91231/devices.h delete mode 100644 trunk/arch/arm/mach-mxc91231/iomux.c delete mode 100644 trunk/arch/arm/mach-mxc91231/magx-zn5.c delete mode 100644 trunk/arch/arm/mach-mxc91231/mm.c delete mode 100644 trunk/arch/arm/mach-mxc91231/system.c create mode 100644 trunk/arch/arm/mach-mxs/mach-stmp378x_devb.c delete mode 100644 trunk/arch/arm/mach-ns9xxx/Kconfig delete mode 100644 trunk/arch/arm/mach-ns9xxx/Makefile delete mode 100644 trunk/arch/arm/mach-ns9xxx/Makefile.boot delete mode 100644 trunk/arch/arm/mach-ns9xxx/board-a9m9750dev.c delete mode 100644 trunk/arch/arm/mach-ns9xxx/board-a9m9750dev.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/board-jscc9p9360.c delete mode 100644 trunk/arch/arm/mach-ns9xxx/board-jscc9p9360.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/clock.c delete mode 100644 trunk/arch/arm/mach-ns9xxx/clock.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/generic.c delete mode 100644 trunk/arch/arm/mach-ns9xxx/generic.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/gpio-ns9360.c delete mode 100644 trunk/arch/arm/mach-ns9xxx/gpio-ns9360.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/gpio.c delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/board.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/debug-macro.S delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/entry-macro.S delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/gpio.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/hardware.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/io.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/irqs.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/memory.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/module.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/processor-ns9360.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/processor.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/regs-bbu.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/regs-board-a9m9750dev.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/regs-mem.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/regs-sys-common.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/regs-sys-ns9360.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/system.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/timex.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/uncompress.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/include/mach/vmalloc.h delete mode 100644 trunk/arch/arm/mach-ns9xxx/irq.c delete mode 100644 trunk/arch/arm/mach-ns9xxx/mach-cc9p9360dev.c delete mode 100644 trunk/arch/arm/mach-ns9xxx/mach-cc9p9360js.c delete mode 100644 trunk/arch/arm/mach-ns9xxx/plat-serial8250.c delete mode 100644 trunk/arch/arm/mach-ns9xxx/processor-ns9360.c delete mode 100644 trunk/arch/arm/mach-ns9xxx/time-ns9360.c delete mode 100644 trunk/arch/arm/mach-realview/include/mach/smp.h create mode 100644 trunk/arch/arm/mach-shmobile/cpuidle.c delete mode 100644 trunk/arch/arm/mach-shmobile/include/mach/smp.h create mode 100644 trunk/arch/arm/mach-shmobile/pm-sh7372.c create mode 100644 trunk/arch/arm/mach-shmobile/sleep-sh7372.S create mode 100644 trunk/arch/arm/mach-shmobile/suspend.c delete mode 100644 trunk/arch/arm/mach-spear3xx/Kconfig300 delete mode 100644 trunk/arch/arm/mach-spear3xx/Kconfig310 delete mode 100644 trunk/arch/arm/mach-spear3xx/Kconfig320 delete mode 100644 trunk/arch/arm/mach-spear6xx/Kconfig600 delete mode 100644 trunk/arch/arm/mach-stmp378x/Makefile delete mode 100644 trunk/arch/arm/mach-stmp378x/Makefile.boot delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/entry-macro.S delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/irqs.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/pins.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-apbh.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-apbx.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-audioin.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-audioout.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-bch.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-clkctrl.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-dcp.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-digctl.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-dram.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-dri.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-ecc8.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-emi.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-gpmi.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-i2c.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-icoll.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-ir.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-lcdif.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-lradc.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-ocotp.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-pinctrl.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-power.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-pwm.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-pxp.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-rtc.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-saif.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-spdif.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-ssp.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-sydma.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-timrot.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-tvenc.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-uartapp.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-uartdbg.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-usbctrl.h delete mode 100644 trunk/arch/arm/mach-stmp378x/include/mach/regs-usbphy.h delete mode 100644 trunk/arch/arm/mach-stmp378x/stmp378x.c delete mode 100644 trunk/arch/arm/mach-stmp378x/stmp378x.h delete mode 100644 trunk/arch/arm/mach-stmp378x/stmp378x_devb.c delete mode 100644 trunk/arch/arm/mach-stmp37xx/Makefile delete mode 100644 trunk/arch/arm/mach-stmp37xx/Makefile.boot delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/entry-macro.S delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/irqs.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/pins.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-apbh.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-apbx.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-audioin.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-audioout.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-clkctrl.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-digctl.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-ecc8.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-gpmi.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-i2c.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-icoll.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-lcdif.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-lradc.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-pinctrl.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-power.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-pwm.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-rtc.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-ssp.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-timrot.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-uartapp.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-uartdbg.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-usbctl.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-usbctrl.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/include/mach/regs-usbphy.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/stmp37xx.c delete mode 100644 trunk/arch/arm/mach-stmp37xx/stmp37xx.h delete mode 100644 trunk/arch/arm/mach-stmp37xx/stmp37xx_devb.c delete mode 100644 trunk/arch/arm/mach-tegra/include/mach/legacy_irq.h delete mode 100644 trunk/arch/arm/mach-tegra/include/mach/smp.h delete mode 100644 trunk/arch/arm/mach-tegra/legacy_irq.c delete mode 100644 trunk/arch/arm/mach-ux500/cpufreq.c create mode 100644 trunk/arch/arm/mach-ux500/include/mach/irqs-board-u5500.h delete mode 100644 trunk/arch/arm/mach-ux500/include/mach/prcmu-defs.h delete mode 100644 trunk/arch/arm/mach-ux500/include/mach/prcmu.h delete mode 100644 trunk/arch/arm/mach-ux500/include/mach/smp.h delete mode 100644 trunk/arch/arm/mach-ux500/prcmu.c delete mode 100644 trunk/arch/arm/mach-vexpress/include/mach/smp.h create mode 100644 trunk/arch/arm/plat-mxc/devices/platform-ipu-core.c create mode 100644 trunk/arch/arm/plat-mxc/devices/platform-mxc_rtc.c delete mode 100644 trunk/arch/arm/plat-mxc/include/mach/iomux-mxc91231.h delete mode 100644 trunk/arch/arm/plat-mxc/include/mach/mxc91231.h delete mode 100644 trunk/arch/arm/plat-omap/include/plat/smp.h create mode 100644 trunk/arch/arm/plat-orion/common.c create mode 100644 trunk/arch/arm/plat-orion/include/plat/common.h create mode 100644 trunk/arch/arm/plat-orion/include/plat/mpp.h create mode 100644 trunk/arch/arm/plat-orion/mpp.c create mode 100644 trunk/arch/arm/plat-s5p/dev-ehci.c create mode 100644 trunk/arch/arm/plat-s5p/include/plat/ehci.h create mode 100644 trunk/arch/arm/plat-s5p/include/plat/usb-phy.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/Kconfig delete mode 100644 trunk/arch/arm/plat-stmp3xxx/Makefile delete mode 100644 trunk/arch/arm/plat-stmp3xxx/clock.c delete mode 100644 trunk/arch/arm/plat-stmp3xxx/clock.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/core.c delete mode 100644 trunk/arch/arm/plat-stmp3xxx/devices.c delete mode 100644 trunk/arch/arm/plat-stmp3xxx/dma.c delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/clkdev.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/cputype.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/debug-macro.S delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/dma.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/gpio.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/gpmi.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/hardware.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/io.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/memory.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/mmc.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/pinmux.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/pins.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/platform.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/stmp3xxx.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/system.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/timex.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/uncompress.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/include/mach/vmalloc.h delete mode 100644 trunk/arch/arm/plat-stmp3xxx/irq.c delete mode 100644 trunk/arch/arm/plat-stmp3xxx/pinmux.c delete mode 100644 trunk/arch/arm/plat-stmp3xxx/timer.c create mode 100644 trunk/arch/blackfin/include/asm/bfin_pfmon.h create mode 100644 trunk/arch/blackfin/include/asm/perf_event.h create mode 100644 trunk/arch/blackfin/include/mach-common/irq.h create mode 100644 trunk/arch/blackfin/kernel/debug-mmrs.c create mode 100644 trunk/arch/blackfin/kernel/perf_event.c delete mode 100644 trunk/arch/m68k/kernel/asm-offsets_mm.c delete mode 100644 trunk/arch/m68k/kernel/asm-offsets_no.c delete mode 100644 trunk/arch/m68k/kernel/m68k_ksyms_mm.c delete mode 100644 trunk/arch/m68k/kernel/m68k_ksyms_no.c delete mode 100644 trunk/arch/m68k/kernel/sys_m68k_mm.c delete mode 100644 trunk/arch/m68k/kernel/sys_m68k_no.c delete mode 100644 trunk/arch/m68k/lib/Makefile_mm delete mode 100644 trunk/arch/m68k/lib/Makefile_no delete mode 100644 trunk/arch/m68k/lib/checksum.c delete mode 100644 trunk/arch/m68k/lib/muldi3_mm.c delete mode 100644 trunk/arch/m68k/lib/muldi3_no.c delete mode 100644 trunk/arch/m68k/mm/Makefile_mm delete mode 100644 trunk/arch/m68k/mm/Makefile_no delete mode 100644 trunk/arch/m68k/mm/kmap_mm.c delete mode 100644 trunk/arch/m68k/mm/kmap_no.c delete mode 100644 trunk/arch/tile/configs/tile_defconfig create mode 100644 trunk/arch/tile/configs/tilegx_defconfig create mode 100644 trunk/arch/tile/configs/tilepro_defconfig create mode 100644 trunk/arch/tile/include/arch/chip_tilegx.h create mode 100644 trunk/arch/tile/include/arch/interrupts_64.h create mode 100644 trunk/arch/tile/include/arch/spr_def_64.h create mode 100644 trunk/arch/tile/include/asm/atomic_64.h create mode 100644 trunk/arch/tile/include/asm/bitops_64.h create mode 100644 trunk/arch/tile/include/asm/fb.h create mode 100644 trunk/arch/tile/include/asm/parport.h create mode 100644 trunk/arch/tile/include/asm/pgtable_64.h create mode 100644 trunk/arch/tile/include/asm/serial.h create mode 100644 trunk/arch/tile/include/asm/spinlock_64.h rename trunk/arch/tile/include/{hv/pagesize.h => asm/vga.h} (52%) create mode 100644 trunk/arch/tile/kernel/futex_64.S create mode 100644 trunk/arch/tile/kernel/head_64.S create mode 100644 trunk/arch/tile/kernel/intvec_64.S create mode 100644 trunk/arch/tile/kernel/regs_64.S create mode 100644 trunk/arch/tile/kernel/tile-desc_64.c create mode 100644 trunk/arch/tile/lib/memchr_64.c create mode 100644 trunk/arch/tile/lib/memcpy_64.c create mode 100644 trunk/arch/tile/lib/memcpy_user_64.c create mode 100644 trunk/arch/tile/lib/memset_64.c create mode 100644 trunk/arch/tile/lib/spinlock_64.c create mode 100644 trunk/arch/tile/lib/strchr_64.c create mode 100644 trunk/arch/tile/lib/strlen_64.c create mode 100644 trunk/arch/tile/lib/usercopy_64.S create mode 100644 trunk/arch/tile/mm/migrate_64.S delete mode 100644 trunk/arch/um/drivers/mcast.h delete mode 100644 trunk/arch/um/drivers/mcast_kern.c delete mode 100644 trunk/arch/um/drivers/mcast_user.c create mode 100644 trunk/arch/um/drivers/umcast.h create mode 100644 trunk/arch/um/drivers/umcast_kern.c create mode 100644 trunk/arch/um/drivers/umcast_user.c create mode 100644 trunk/arch/um/kernel/early_printk.c create mode 100644 trunk/arch/x86/include/asm/x2apic.h delete mode 100644 trunk/arch/xtensa/mm/pgtable.c create mode 100644 trunk/drivers/block/xen-blkback/Makefile create mode 100644 trunk/drivers/block/xen-blkback/blkback.c create mode 100644 trunk/drivers/block/xen-blkback/common.h create mode 100644 trunk/drivers/block/xen-blkback/xenbus.c create mode 100644 trunk/drivers/clocksource/mmio.c create mode 100644 trunk/drivers/cpufreq/db8500-cpufreq.c create mode 100644 trunk/drivers/gpu/drm/nouveau/nv40_mpeg.c create mode 100644 trunk/drivers/gpu/drm/nouveau/nv50_mpeg.c create mode 100644 trunk/drivers/gpu/drm/nouveau/nva3_copy.c create mode 100644 trunk/drivers/gpu/drm/nouveau/nva3_copy.fuc create mode 100644 trunk/drivers/gpu/drm/nouveau/nva3_copy.fuc.h create mode 100644 trunk/drivers/gpu/drm/nouveau/nvc0_copy.c create mode 100644 trunk/drivers/gpu/drm/nouveau/nvc0_copy.fuc.h rename trunk/drivers/{acpi/power_meter.c => hwmon/acpi_power_meter.c} (100%) create mode 100644 trunk/drivers/hwmon/emc6w201.c create mode 100644 trunk/drivers/hwmon/fam15h_power.c create mode 100644 trunk/drivers/input/keyboard/adp5589-keys.c create mode 100644 trunk/drivers/input/keyboard/mpr121_touchkey.c create mode 100644 trunk/drivers/input/touchscreen/max11801_ts.c create mode 100644 trunk/drivers/leds/leds-gpio-register.c delete mode 100644 trunk/drivers/leds/leds-h1940.c create mode 100644 trunk/drivers/media/common/tuners/tda18212.c create mode 100644 trunk/drivers/media/common/tuners/tda18212.h create mode 100644 trunk/drivers/media/common/tuners/tda18212_priv.h create mode 100644 trunk/drivers/media/dvb/frontends/bsbe1-d01a.h create mode 100644 trunk/drivers/media/dvb/frontends/cxd2820r.h create mode 100644 trunk/drivers/media/dvb/frontends/cxd2820r_c.c create mode 100644 trunk/drivers/media/dvb/frontends/cxd2820r_core.c create mode 100644 trunk/drivers/media/dvb/frontends/cxd2820r_priv.h create mode 100644 trunk/drivers/media/dvb/frontends/cxd2820r_t.c create mode 100644 trunk/drivers/media/dvb/frontends/cxd2820r_t2.c delete mode 100644 trunk/drivers/media/dvb/frontends/drx397xD.c delete mode 100644 trunk/drivers/media/dvb/frontends/drx397xD.h delete mode 100644 trunk/drivers/media/dvb/frontends/drx397xD_fw.h create mode 100644 trunk/drivers/media/dvb/frontends/drxd.h create mode 100644 trunk/drivers/media/dvb/frontends/drxd_firm.c create mode 100644 trunk/drivers/media/dvb/frontends/drxd_firm.h create mode 100644 trunk/drivers/media/dvb/frontends/drxd_hard.c create mode 100644 trunk/drivers/media/dvb/frontends/drxd_map_firm.h create mode 100644 trunk/drivers/media/rc/keymaps/rc-tivo.c create mode 100644 trunk/drivers/media/rc/redrat3.c create mode 100644 trunk/drivers/media/video/gspca/kinect.c create mode 100644 trunk/drivers/media/video/mt9v032.c create mode 100644 trunk/drivers/media/video/s5p-fimc/mipi-csis.c create mode 100644 trunk/drivers/media/video/s5p-fimc/mipi-csis.h rename trunk/{arch/arm/mach-ux500/include/mach/prcmu-regs.h => drivers/mfd/db5500-prcmu-regs.h} (80%) create mode 100644 trunk/drivers/mfd/db5500-prcmu.c create mode 100644 trunk/drivers/mfd/db8500-prcmu-regs.h create mode 100644 trunk/drivers/mfd/db8500-prcmu.c create mode 100644 trunk/drivers/misc/pti.c create mode 100644 trunk/drivers/mmc/host/vub300.c delete mode 100644 trunk/drivers/mtd/maps/integrator-flash.c create mode 100644 trunk/drivers/net/gianfar_ptp.c create mode 100644 trunk/drivers/net/phy/dp83640.c create mode 100644 trunk/drivers/net/phy/dp83640_reg.h create mode 100644 trunk/drivers/platform/x86/mxm-wmi.c create mode 100644 trunk/drivers/ptp/Kconfig create mode 100644 trunk/drivers/ptp/Makefile create mode 100644 trunk/drivers/ptp/ptp_chardev.c create mode 100644 trunk/drivers/ptp/ptp_clock.c create mode 100644 trunk/drivers/ptp/ptp_ixp46x.c create mode 100644 trunk/drivers/ptp/ptp_private.h create mode 100644 trunk/drivers/ptp/ptp_sysfs.c create mode 100644 trunk/drivers/regulator/db8500-prcmu.c create mode 100644 trunk/drivers/rtc/rtc-tile.c create mode 100644 trunk/drivers/s390/char/sclp_ocf.c delete mode 100644 trunk/drivers/s390/char/tape_block.c delete mode 100644 trunk/drivers/staging/ath6kl/include/a_types.h delete mode 100644 trunk/drivers/staging/ath6kl/include/athendpack.h delete mode 100644 trunk/drivers/staging/ath6kl/include/athstartpack.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/AR6002_regdump.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw2.0/hw/analog_intf_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw2.0/hw/analog_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw2.0/hw/apb_map.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw2.0/hw/gpio_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw2.0/hw/mbox_host_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw2.0/hw/mbox_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw2.0/hw/rtc_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw2.0/hw/si_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw2.0/hw/uart_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw2.0/hw/vmc_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/analog_intf_ares_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/analog_intf_athr_wlan_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/analog_intf_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/bb_lc_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/efuse_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/gpio_athr_wlan_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/gpio_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/mac_dma_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/mac_pcu_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/rdma_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/si_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/umbox_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/umbox_wlan_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/vmc_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/AR6002/hw4.0/hw/vmc_wlan_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/a_hci.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/btcoexGpio.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/dset_internal.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/dsetid.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/gpio.h create mode 100644 trunk/drivers/staging/ath6kl/include/common/gpio_reg.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/ini_dset.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/regDb.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/regdump.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/regulatory/reg_dbschema.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/regulatory/reg_dbvalues.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/wlan_dset.h delete mode 100644 trunk/drivers/staging/ath6kl/include/common/wmi_thin.h delete mode 100644 trunk/drivers/staging/ath6kl/include/gpio_api.h delete mode 100644 trunk/drivers/staging/ath6kl/include/target_reg_table.h delete mode 100644 trunk/drivers/staging/ath6kl/os/linux/ar6000_android.c delete mode 100644 trunk/drivers/staging/ath6kl/os/linux/ar6k_pal.c delete mode 100644 trunk/drivers/staging/ath6kl/os/linux/eeprom.c delete mode 100644 trunk/drivers/staging/ath6kl/os/linux/include/athtypes_linux.h delete mode 100644 trunk/drivers/staging/ath6kl/os/linux/ioctl.c delete mode 100644 trunk/drivers/staging/ath6kl/os/linux/wireless_ext.c rename trunk/drivers/staging/brcm80211/{util/siutils_priv.h => brcmfmac/bcmchip.h} (52%) delete mode 100644 trunk/drivers/staging/brcm80211/brcmfmac/bcmutils.c delete mode 100644 trunk/drivers/staging/brcm80211/brcmfmac/bcmwifi.c delete mode 100644 trunk/drivers/staging/brcm80211/brcmfmac/hndpmu.c delete mode 100644 trunk/drivers/staging/brcm80211/brcmfmac/sbutils.c delete mode 100644 trunk/drivers/staging/brcm80211/brcmfmac/siutils.c rename trunk/drivers/staging/brcm80211/{util/siutils.c => brcmsmac/aiutils.c} (55%) create mode 100644 trunk/drivers/staging/brcm80211/brcmsmac/aiutils.h rename trunk/drivers/staging/brcm80211/{util => brcmsmac}/bcmotp.c (90%) create mode 100644 trunk/drivers/staging/brcm80211/brcmsmac/bcmsrom.c rename trunk/drivers/staging/brcm80211/{util => brcmsmac}/bcmsrom_tbl.h (89%) rename trunk/drivers/staging/brcm80211/{util => brcmsmac}/hnddma.c (94%) rename trunk/drivers/staging/brcm80211/{util => brcmsmac}/nicpci.c (92%) rename trunk/drivers/staging/brcm80211/{util/nvram/nvram_ro.c => brcmsmac/nvram.c} (76%) create mode 100644 trunk/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_qmath.c rename trunk/drivers/staging/brcm80211/{include/qmath.h => brcmsmac/phy/wlc_phy_qmath.h} (63%) rename trunk/drivers/staging/brcm80211/{util/hndpmu.c => brcmsmac/wlc_pmu.c} (67%) rename trunk/drivers/staging/brcm80211/{include/hndpmu.h => brcmsmac/wlc_pmu.h} (77%) rename trunk/drivers/staging/brcm80211/{util => include}/pci_core.h (100%) delete mode 100644 trunk/drivers/staging/brcm80211/include/siutils.h create mode 100644 trunk/drivers/staging/brcm80211/util/Makefile delete mode 100644 trunk/drivers/staging/brcm80211/util/aiutils.c delete mode 100644 trunk/drivers/staging/brcm80211/util/bcmsrom.c delete mode 100644 trunk/drivers/staging/brcm80211/util/qmath.c delete mode 100644 trunk/drivers/staging/brcm80211/util/sbpcmcia.h delete mode 100644 trunk/drivers/staging/brcm80211/util/sbsocram.h delete mode 100644 trunk/drivers/staging/brcm80211/util/sbutils.c create mode 100644 trunk/drivers/staging/gma500/mrst.h create mode 100644 trunk/drivers/staging/gma500/mrst_crtc.c create mode 100644 trunk/drivers/staging/gma500/mrst_lvds.c delete mode 100644 trunk/drivers/staging/gma500/psb_buffer.c delete mode 100644 trunk/drivers/staging/gma500/psb_fence.c create mode 100644 trunk/drivers/staging/gma500/psb_gem.c rename trunk/drivers/staging/gma500/{psb_reset.c => psb_lid.c} (100%) delete mode 100644 trunk/drivers/staging/gma500/psb_pvr_glue.c delete mode 100644 trunk/drivers/staging/gma500/psb_pvr_glue.h delete mode 100644 trunk/drivers/staging/gma500/psb_sgx.c delete mode 100644 trunk/drivers/staging/gma500/psb_sgx.h delete mode 100644 trunk/drivers/staging/gma500/psb_ttm_fence.c delete mode 100644 trunk/drivers/staging/gma500/psb_ttm_fence_api.h delete mode 100644 trunk/drivers/staging/gma500/psb_ttm_fence_driver.h delete mode 100644 trunk/drivers/staging/gma500/psb_ttm_fence_user.c delete mode 100644 trunk/drivers/staging/gma500/psb_ttm_fence_user.h delete mode 100644 trunk/drivers/staging/gma500/psb_ttm_glue.c delete mode 100644 trunk/drivers/staging/gma500/psb_ttm_placement_user.c delete mode 100644 trunk/drivers/staging/gma500/psb_ttm_placement_user.h delete mode 100644 trunk/drivers/staging/gma500/psb_ttm_userobj_api.h delete mode 100644 trunk/drivers/staging/hv/blkvsc.c delete mode 100644 trunk/drivers/staging/hv/channel.h delete mode 100644 trunk/drivers/staging/hv/channel_mgmt.h delete mode 100644 trunk/drivers/staging/hv/hv.h delete mode 100644 trunk/drivers/staging/hv/hv_api.h create mode 100644 trunk/drivers/staging/hv/hyperv.h rename trunk/drivers/staging/hv/{rndis.h => hyperv_net.h} (65%) rename trunk/drivers/staging/hv/{vstorage.h => hyperv_storage.h} (63%) create mode 100644 trunk/drivers/staging/hv/hyperv_vmbus.h delete mode 100644 trunk/drivers/staging/hv/logging.h delete mode 100644 trunk/drivers/staging/hv/netvsc.h delete mode 100644 trunk/drivers/staging/hv/netvsc_api.h delete mode 100644 trunk/drivers/staging/hv/ring_buffer.h delete mode 100644 trunk/drivers/staging/hv/rndis_filter.h delete mode 100644 trunk/drivers/staging/hv/storvsc_api.h delete mode 100644 trunk/drivers/staging/hv/utils.h delete mode 100644 trunk/drivers/staging/hv/version_info.h delete mode 100644 trunk/drivers/staging/hv/vmbus.h delete mode 100644 trunk/drivers/staging/hv/vmbus_api.h delete mode 100644 trunk/drivers/staging/hv/vmbus_channel_interface.h delete mode 100644 trunk/drivers/staging/hv/vmbus_packet_format.h delete mode 100644 trunk/drivers/staging/hv/vmbus_private.h create mode 100644 trunk/drivers/staging/iio/Documentation/sysfs-bus-iio-light-tsl2583 delete mode 100644 trunk/drivers/staging/iio/Documentation/userspace.txt create mode 100644 trunk/drivers/staging/iio/adc/ad7780.c create mode 100644 trunk/drivers/staging/iio/adc/ad7780.h create mode 100644 trunk/drivers/staging/iio/dac/ad5504.c create mode 100644 trunk/drivers/staging/iio/dac/ad5504.h create mode 100644 trunk/drivers/staging/iio/dac/ad5791.c create mode 100644 trunk/drivers/staging/iio/dac/ad5791.h create mode 100644 trunk/drivers/staging/iio/gyro/adxrs450.h create mode 100644 trunk/drivers/staging/iio/gyro/adxrs450_core.c delete mode 100644 trunk/drivers/staging/iio/imu/adis16300.h delete mode 100644 trunk/drivers/staging/iio/imu/adis16300_core.c delete mode 100644 trunk/drivers/staging/iio/imu/adis16300_ring.c delete mode 100644 trunk/drivers/staging/iio/imu/adis16300_trigger.c delete mode 100644 trunk/drivers/staging/iio/imu/adis16350.h delete mode 100644 trunk/drivers/staging/iio/imu/adis16350_core.c delete mode 100644 trunk/drivers/staging/iio/imu/adis16350_ring.c delete mode 100644 trunk/drivers/staging/iio/imu/adis16350_trigger.c create mode 100644 trunk/drivers/staging/iio/light/tsl2583.c create mode 100644 trunk/drivers/staging/intel_sst/intelmid_adc_control.h delete mode 100644 trunk/drivers/staging/intel_sst/jack.h create mode 100644 trunk/drivers/staging/mei/Kconfig create mode 100644 trunk/drivers/staging/mei/Makefile create mode 100644 trunk/drivers/staging/mei/TODO create mode 100644 trunk/drivers/staging/mei/hw.h create mode 100644 trunk/drivers/staging/mei/init.c create mode 100644 trunk/drivers/staging/mei/interface.c create mode 100644 trunk/drivers/staging/mei/interface.h create mode 100644 trunk/drivers/staging/mei/interrupt.c create mode 100644 trunk/drivers/staging/mei/iorw.c create mode 100644 trunk/drivers/staging/mei/main.c create mode 100644 trunk/drivers/staging/mei/mei.h create mode 100644 trunk/drivers/staging/mei/mei.txt create mode 100644 trunk/drivers/staging/mei/mei_dev.h create mode 100644 trunk/drivers/staging/mei/mei_version.h create mode 100644 trunk/drivers/staging/mei/wd.c create mode 100644 trunk/drivers/staging/nvec/Kconfig create mode 100644 trunk/drivers/staging/nvec/Makefile create mode 100644 trunk/drivers/staging/nvec/README create mode 100644 trunk/drivers/staging/nvec/TODO create mode 100644 trunk/drivers/staging/nvec/nvec-keytable.h create mode 100644 trunk/drivers/staging/nvec/nvec.c create mode 100644 trunk/drivers/staging/nvec/nvec.h create mode 100644 trunk/drivers/staging/nvec/nvec_kbd.c create mode 100644 trunk/drivers/staging/nvec/nvec_power.c create mode 100644 trunk/drivers/staging/nvec/nvec_ps2.c delete mode 100644 trunk/drivers/staging/rt2860/Kconfig delete mode 100644 trunk/drivers/staging/rt2860/Makefile delete mode 100644 trunk/drivers/staging/rt2860/TODO delete mode 100644 trunk/drivers/staging/rt2860/ap.h delete mode 100644 trunk/drivers/staging/rt2860/chip/mac_pci.h delete mode 100644 trunk/drivers/staging/rt2860/chip/mac_usb.h delete mode 100644 trunk/drivers/staging/rt2860/chip/rt2860.h delete mode 100644 trunk/drivers/staging/rt2860/chip/rt2870.h delete mode 100644 trunk/drivers/staging/rt2860/chip/rt3070.h delete mode 100644 trunk/drivers/staging/rt2860/chip/rt3090.h delete mode 100644 trunk/drivers/staging/rt2860/chip/rt30xx.h delete mode 100644 trunk/drivers/staging/rt2860/chip/rtmp_mac.h delete mode 100644 trunk/drivers/staging/rt2860/chip/rtmp_phy.h delete mode 100644 trunk/drivers/staging/rt2860/chips/rt3070.c delete mode 100644 trunk/drivers/staging/rt2860/chips/rt3090.c delete mode 100644 trunk/drivers/staging/rt2860/chips/rt30xx.c delete mode 100644 trunk/drivers/staging/rt2860/chlist.h delete mode 100644 trunk/drivers/staging/rt2860/common/action.c delete mode 100644 trunk/drivers/staging/rt2860/common/action.h delete mode 100644 trunk/drivers/staging/rt2860/common/ba_action.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_aes.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_asic.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_cfg.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_data.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_data_pci.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_data_usb.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_info.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_mac_pci.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_mac_usb.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_sanity.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_sync.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_tkip.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_wep.c delete mode 100644 trunk/drivers/staging/rt2860/common/cmm_wpa.c delete mode 100644 trunk/drivers/staging/rt2860/common/crypt_hmac.c delete mode 100644 trunk/drivers/staging/rt2860/common/crypt_md5.c delete mode 100644 trunk/drivers/staging/rt2860/common/crypt_sha2.c delete mode 100644 trunk/drivers/staging/rt2860/common/dfs.c delete mode 100644 trunk/drivers/staging/rt2860/common/ee_efuse.c delete mode 100644 trunk/drivers/staging/rt2860/common/ee_prom.c delete mode 100644 trunk/drivers/staging/rt2860/common/eeprom.c delete mode 100644 trunk/drivers/staging/rt2860/common/mlme.c delete mode 100644 trunk/drivers/staging/rt2860/common/rt_channel.c delete mode 100644 trunk/drivers/staging/rt2860/common/rt_rf.c delete mode 100644 trunk/drivers/staging/rt2860/common/rtmp_init.c delete mode 100644 trunk/drivers/staging/rt2860/common/rtmp_mcu.c delete mode 100644 trunk/drivers/staging/rt2860/common/rtmp_timer.c delete mode 100644 trunk/drivers/staging/rt2860/common/spectrum.c delete mode 100644 trunk/drivers/staging/rt2860/crypt_hmac.h delete mode 100644 trunk/drivers/staging/rt2860/crypt_md5.h delete mode 100644 trunk/drivers/staging/rt2860/crypt_sha2.h delete mode 100644 trunk/drivers/staging/rt2860/dfs.h delete mode 100644 trunk/drivers/staging/rt2860/eeprom.h delete mode 100644 trunk/drivers/staging/rt2860/iface/rtmp_pci.h delete mode 100644 trunk/drivers/staging/rt2860/iface/rtmp_usb.h delete mode 100644 trunk/drivers/staging/rt2860/mlme.h delete mode 100644 trunk/drivers/staging/rt2860/oid.h delete mode 100644 trunk/drivers/staging/rt2860/pci_main_dev.c delete mode 100644 trunk/drivers/staging/rt2860/rt_config.h delete mode 100644 trunk/drivers/staging/rt2860/rt_linux.c delete mode 100644 trunk/drivers/staging/rt2860/rt_linux.h delete mode 100644 trunk/drivers/staging/rt2860/rt_main_dev.c delete mode 100644 trunk/drivers/staging/rt2860/rt_pci_rbus.c delete mode 100644 trunk/drivers/staging/rt2860/rt_usb.c delete mode 100644 trunk/drivers/staging/rt2860/rtmp.h delete mode 100644 trunk/drivers/staging/rt2860/rtmp_chip.h delete mode 100644 trunk/drivers/staging/rt2860/rtmp_ckipmic.h delete mode 100644 trunk/drivers/staging/rt2860/rtmp_def.h delete mode 100644 trunk/drivers/staging/rt2860/rtmp_dot11.h delete mode 100644 trunk/drivers/staging/rt2860/rtmp_iface.h delete mode 100644 trunk/drivers/staging/rt2860/rtmp_mcu.h delete mode 100644 trunk/drivers/staging/rt2860/rtmp_os.h delete mode 100644 trunk/drivers/staging/rt2860/rtmp_timer.h delete mode 100644 trunk/drivers/staging/rt2860/rtmp_type.h delete mode 100644 trunk/drivers/staging/rt2860/rtusb_io.h delete mode 100644 trunk/drivers/staging/rt2860/spectrum.h delete mode 100644 trunk/drivers/staging/rt2860/spectrum_def.h delete mode 100644 trunk/drivers/staging/rt2860/sta/assoc.c delete mode 100644 trunk/drivers/staging/rt2860/sta/auth.c delete mode 100644 trunk/drivers/staging/rt2860/sta/auth_rsp.c delete mode 100644 trunk/drivers/staging/rt2860/sta/connect.c delete mode 100644 trunk/drivers/staging/rt2860/sta/rtmp_data.c delete mode 100644 trunk/drivers/staging/rt2860/sta/sanity.c delete mode 100644 trunk/drivers/staging/rt2860/sta/sync.c delete mode 100644 trunk/drivers/staging/rt2860/sta/wpa.c delete mode 100644 trunk/drivers/staging/rt2860/sta_ioctl.c delete mode 100644 trunk/drivers/staging/rt2860/usb_main_dev.c delete mode 100644 trunk/drivers/staging/rt2860/wpa.h delete mode 100644 trunk/drivers/staging/rt2870/Kconfig delete mode 100644 trunk/drivers/staging/rt2870/Makefile delete mode 100644 trunk/drivers/staging/rt2870/TODO delete mode 100644 trunk/drivers/staging/rt2870/aironet.h delete mode 100644 trunk/drivers/staging/rt2870/ap.h delete mode 100644 trunk/drivers/staging/rt2870/chips/rt3070.c delete mode 100644 trunk/drivers/staging/rt2870/chips/rt30xx.c delete mode 100644 trunk/drivers/staging/rt2870/chlist.h delete mode 100644 trunk/drivers/staging/rt2870/common/acction.c delete mode 100644 trunk/drivers/staging/rt2870/common/action.c delete mode 100644 trunk/drivers/staging/rt2870/common/action.h delete mode 100644 trunk/drivers/staging/rt2870/common/ba_action.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_aes.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_asic.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_cfg.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_data.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_data_usb.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_info.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_mac_usb.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_profile.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_sanity.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_sync.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_tkip.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_wep.c delete mode 100644 trunk/drivers/staging/rt2870/common/cmm_wpa.c delete mode 100644 trunk/drivers/staging/rt2870/common/crypt_hmac.c delete mode 100644 trunk/drivers/staging/rt2870/common/crypt_md5.c delete mode 100644 trunk/drivers/staging/rt2870/common/crypt_sha2.c delete mode 100644 trunk/drivers/staging/rt2870/common/dfs.c delete mode 100644 trunk/drivers/staging/rt2870/common/ee_efuse.c delete mode 100644 trunk/drivers/staging/rt2870/common/eeprom.c delete mode 100644 trunk/drivers/staging/rt2870/common/md5.c delete mode 100644 trunk/drivers/staging/rt2870/common/mlme.c delete mode 100644 trunk/drivers/staging/rt2870/common/rt_channel.c delete mode 100644 trunk/drivers/staging/rt2870/common/rt_rf.c delete mode 100644 trunk/drivers/staging/rt2870/common/rtmp_init.c delete mode 100644 trunk/drivers/staging/rt2870/common/rtmp_mcu.c delete mode 100644 trunk/drivers/staging/rt2870/common/rtmp_timer.c delete mode 100644 trunk/drivers/staging/rt2870/common/rtmp_tkip.c delete mode 100644 trunk/drivers/staging/rt2870/common/rtmp_wep.c delete mode 100644 trunk/drivers/staging/rt2870/common/rtusb_bulk.c delete mode 100644 trunk/drivers/staging/rt2870/common/rtusb_data.c delete mode 100644 trunk/drivers/staging/rt2870/common/rtusb_io.c delete mode 100644 trunk/drivers/staging/rt2870/common/spectrum.c delete mode 100644 trunk/drivers/staging/rt2870/dfs.h delete mode 100644 trunk/drivers/staging/rt2870/md5.h delete mode 100644 trunk/drivers/staging/rt2870/mlme.h delete mode 100644 trunk/drivers/staging/rt2870/oid.h delete mode 100644 trunk/drivers/staging/rt2870/rt28xx.h delete mode 100644 trunk/drivers/staging/rt2870/rt_config.h delete mode 100644 trunk/drivers/staging/rt2870/rt_linux.c delete mode 100644 trunk/drivers/staging/rt2870/rt_linux.h delete mode 100644 trunk/drivers/staging/rt2870/rt_main_dev.c delete mode 100644 trunk/drivers/staging/rt2870/rt_profile.c delete mode 100644 trunk/drivers/staging/rt2870/rt_usb.c delete mode 100644 trunk/drivers/staging/rt2870/rtmp.h delete mode 100644 trunk/drivers/staging/rt2870/rtmp_ckipmic.h delete mode 100644 trunk/drivers/staging/rt2870/rtmp_def.h delete mode 100644 trunk/drivers/staging/rt2870/rtmp_type.h delete mode 100644 trunk/drivers/staging/rt2870/spectrum.h delete mode 100644 trunk/drivers/staging/rt2870/spectrum_def.h delete mode 100644 trunk/drivers/staging/rt2870/sta/aironet.c delete mode 100644 trunk/drivers/staging/rt2870/sta/assoc.c delete mode 100644 trunk/drivers/staging/rt2870/sta/auth.c delete mode 100644 trunk/drivers/staging/rt2870/sta/auth_rsp.c delete mode 100644 trunk/drivers/staging/rt2870/sta/connect.c delete mode 100644 trunk/drivers/staging/rt2870/sta/rtmp_data.c delete mode 100644 trunk/drivers/staging/rt2870/sta/sanity.c delete mode 100644 trunk/drivers/staging/rt2870/sta/sync.c delete mode 100644 trunk/drivers/staging/rt2870/sta/wpa.c delete mode 100644 trunk/drivers/staging/rt2870/sta_ioctl.c delete mode 100644 trunk/drivers/staging/rt2870/usb_main_dev.c delete mode 100644 trunk/drivers/staging/rt2870/wpa.h create mode 100644 trunk/drivers/staging/tm6000/CARDLIST create mode 100644 trunk/drivers/staging/usbip/userspace/AUTHORS create mode 100644 trunk/drivers/staging/usbip/userspace/COPYING create mode 100644 trunk/drivers/staging/usbip/userspace/INSTALL create mode 100644 trunk/drivers/staging/usbip/userspace/Makefile.am create mode 100644 trunk/drivers/staging/usbip/userspace/README create mode 100755 trunk/drivers/staging/usbip/userspace/autogen.sh create mode 100755 trunk/drivers/staging/usbip/userspace/cleanup.sh create mode 100644 trunk/drivers/staging/usbip/userspace/configure.ac create mode 100644 trunk/drivers/staging/usbip/userspace/doc/usbip.8 create mode 100644 trunk/drivers/staging/usbip/userspace/doc/usbip_bind_driver.8 create mode 100644 trunk/drivers/staging/usbip/userspace/doc/usbipd.8 create mode 100644 trunk/drivers/staging/usbip/userspace/libsrc/Makefile.am create mode 100644 trunk/drivers/staging/usbip/userspace/libsrc/names.c create mode 100644 trunk/drivers/staging/usbip/userspace/libsrc/names.h create mode 100644 trunk/drivers/staging/usbip/userspace/libsrc/stub_driver.c create mode 100644 trunk/drivers/staging/usbip/userspace/libsrc/stub_driver.h create mode 100644 trunk/drivers/staging/usbip/userspace/libsrc/usbip.h create mode 100644 trunk/drivers/staging/usbip/userspace/libsrc/usbip_common.c create mode 100644 trunk/drivers/staging/usbip/userspace/libsrc/usbip_common.h create mode 100644 trunk/drivers/staging/usbip/userspace/libsrc/vhci_driver.c create mode 100644 trunk/drivers/staging/usbip/userspace/libsrc/vhci_driver.h create mode 100644 trunk/drivers/staging/usbip/userspace/src/Makefile.am create mode 100644 trunk/drivers/staging/usbip/userspace/src/bind-driver.c create mode 100644 trunk/drivers/staging/usbip/userspace/src/usbip.c create mode 100644 trunk/drivers/staging/usbip/userspace/src/usbip_network.c create mode 100644 trunk/drivers/staging/usbip/userspace/src/usbip_network.h create mode 100644 trunk/drivers/staging/usbip/userspace/src/usbipd.c create mode 100644 trunk/drivers/staging/usbip/userspace/src/utils.c create mode 100644 trunk/drivers/staging/usbip/userspace/src/utils.h create mode 100644 trunk/drivers/staging/usbip/userspace/usb.ids create mode 100644 trunk/drivers/tty/n_tracerouter.c create mode 100644 trunk/drivers/tty/n_tracesink.c create mode 100644 trunk/drivers/tty/n_tracesink.h create mode 100644 trunk/drivers/tty/serial/xilinx_uartps.c create mode 100644 trunk/drivers/usb/gadget/s3c-hsudc.c create mode 100644 trunk/drivers/usb/host/ehci-ath79.c create mode 100644 trunk/drivers/usb/host/ehci-grlib.c create mode 100644 trunk/drivers/usb/host/ehci-s5p.c create mode 100644 trunk/drivers/usb/host/ohci-ath79.c create mode 100644 trunk/drivers/usb/host/uhci-grlib.c create mode 100644 trunk/drivers/usb/host/uhci-pci.c create mode 100644 trunk/drivers/usb/musb/ux500_dma.c create mode 100644 trunk/drivers/usb/otg/fsl_otg.c create mode 100644 trunk/drivers/usb/otg/fsl_otg.h create mode 100644 trunk/drivers/usb/otg/otg_fsm.c create mode 100644 trunk/drivers/usb/otg/otg_fsm.h create mode 100644 trunk/drivers/usb/renesas_usbhs/Kconfig create mode 100644 trunk/drivers/usb/renesas_usbhs/Makefile create mode 100644 trunk/drivers/usb/renesas_usbhs/common.c create mode 100644 trunk/drivers/usb/renesas_usbhs/common.h create mode 100644 trunk/drivers/usb/renesas_usbhs/mod.c create mode 100644 trunk/drivers/usb/renesas_usbhs/mod.h create mode 100644 trunk/drivers/usb/renesas_usbhs/mod_gadget.c create mode 100644 trunk/drivers/usb/renesas_usbhs/pipe.c create mode 100644 trunk/drivers/usb/renesas_usbhs/pipe.h delete mode 100644 trunk/drivers/usb/serial/sam-ba.c create mode 100644 trunk/drivers/video/mb862xx/mb862xx-i2c.c rename trunk/drivers/video/mb862xx/{mb862xxfb.c => mb862xxfbdrv.c} (86%) create mode 100644 trunk/drivers/video/omap2/dss/dispc.h create mode 100644 trunk/drivers/video/sh_mobile_meram.c create mode 100644 trunk/drivers/video/sh_mobile_meram.h create mode 100644 trunk/include/linux/i2c/i2c-sh_mobile.h create mode 100644 trunk/include/linux/i2c/mpr121_touchkey.h create mode 100644 trunk/include/linux/input/adp5589.h create mode 100644 trunk/include/linux/mfd/db5500-prcmu.h create mode 100644 trunk/include/linux/mfd/db8500-prcmu.h create mode 100644 trunk/include/linux/mmc/Kbuild create mode 100644 trunk/include/linux/mmc/ioctl.h create mode 100644 trunk/include/linux/mxm-wmi.h create mode 100644 trunk/include/linux/pti.h create mode 100644 trunk/include/linux/ptp_clock.h create mode 100644 trunk/include/linux/ptp_clock_kernel.h create mode 100644 trunk/include/linux/regulator/db8500-prcmu.h create mode 100644 trunk/include/linux/usb/renesas_usbhs.h create mode 100644 trunk/include/linux/uvcvideo.h create mode 100644 trunk/include/media/mt9v032.h rename trunk/{arch/arm/plat-omap/include/plat/panel-generic-dpi.h => include/video/omap-panel-generic-dpi.h} (86%) rename trunk/{arch/arm/plat-omap/include/plat/nokia-dsi-panel.h => include/video/omap-panel-nokia-dsi.h} (65%) rename trunk/{arch/arm/plat-omap/include/plat/display.h => include/video/omapdss.h} (85%) create mode 100644 trunk/include/video/sh_mobile_meram.h create mode 100644 trunk/scripts/Makefile.asm-generic rename trunk/scripts/{basic => }/docproc.c (100%) diff --git a/[refs] b/[refs] index 364006bc3fdd..43c15ba6543c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 94265cf5f731c7df29fdfde262ca3e6d51e6828c +refs/heads/master: 3f5785ec31adcb7cafa9135087297a38d9698cf8 diff --git a/trunk/.gitignore b/trunk/.gitignore index 5d56a3fd0de6..9dacde0a4b2d 100644 --- a/trunk/.gitignore +++ b/trunk/.gitignore @@ -57,6 +57,7 @@ modules.builtin include/config include/linux/version.h include/generated +arch/*/include/generated # stgit generated dirs patches-* diff --git a/trunk/.mailmap b/trunk/.mailmap index 5a6dd592eedc..353ad5607156 100644 --- a/trunk/.mailmap +++ b/trunk/.mailmap @@ -32,6 +32,7 @@ Brian Avery Brian King Christoph Hellwig Corey Minyard +Damian Hobson-Garcia David Brownell David Woodhouse Dmitry Eremin-Solenikov diff --git a/trunk/CREDITS b/trunk/CREDITS index 95c469c610bc..a7ea8e343836 100644 --- a/trunk/CREDITS +++ b/trunk/CREDITS @@ -2943,6 +2943,10 @@ S: Kasarmikatu 11 A4 S: 70110 Kuopio S: Finland +N: Tobias Ringström +E: tori@unhappy.mine.nu +D: Davicom DM9102(A)/DM9132/DM9801 fast ethernet driver + N: Luca Risolia E: luca.risolia@studio.unibo.it P: 1024D/FCE635A4 88E8 F32F 7244 68BA 3958 5D40 99DA 5D2A FCE6 35A4 @@ -3913,6 +3917,10 @@ S: Flandernstrasse 101 S: D-73732 Esslingen S: Germany +N: Roman Zippel +E: zippel@linux-m68k.org +D: AFFS and HFS filesystems, m68k maintainer, new kernel configuration in 2.5 + N: Leonard N. Zubkoff W: http://www.dandelion.com/Linux/ D: BusLogic SCSI driver diff --git a/trunk/Documentation/ABI/testing/sysfs-block b/trunk/Documentation/ABI/testing/sysfs-block index 4873c759d535..c1eb41cb9876 100644 --- a/trunk/Documentation/ABI/testing/sysfs-block +++ b/trunk/Documentation/ABI/testing/sysfs-block @@ -142,3 +142,67 @@ Description: with the previous I/O request are enabled. When set to 2, all merge tries are disabled. The default value is 0 - which enables all types of merge tries. + +What: /sys/block//discard_alignment +Date: May 2011 +Contact: Martin K. Petersen +Description: + Devices that support discard functionality may + internally allocate space in units that are bigger than + the exported logical block size. The discard_alignment + parameter indicates how many bytes the beginning of the + device is offset from the internal allocation unit's + natural alignment. + +What: /sys/block///discard_alignment +Date: May 2011 +Contact: Martin K. Petersen +Description: + Devices that support discard functionality may + internally allocate space in units that are bigger than + the exported logical block size. The discard_alignment + parameter indicates how many bytes the beginning of the + partition is offset from the internal allocation unit's + natural alignment. + +What: /sys/block//queue/discard_granularity +Date: May 2011 +Contact: Martin K. Petersen +Description: + Devices that support discard functionality may + internally allocate space using units that are bigger + than the logical block size. The discard_granularity + parameter indicates the size of the internal allocation + unit in bytes if reported by the device. Otherwise the + discard_granularity will be set to match the device's + physical block size. A discard_granularity of 0 means + that the device does not support discard functionality. + +What: /sys/block//queue/discard_max_bytes +Date: May 2011 +Contact: Martin K. Petersen +Description: + Devices that support discard functionality may have + internal limits on the number of bytes that can be + trimmed or unmapped in a single operation. Some storage + protocols also have inherent limits on the number of + blocks that can be described in a single command. The + discard_max_bytes parameter is set by the device driver + to the maximum number of bytes that can be discarded in + a single operation. Discard requests issued to the + device must not exceed this limit. A discard_max_bytes + value of 0 means that the device does not support + discard functionality. + +What: /sys/block//queue/discard_zeroes_data +Date: May 2011 +Contact: Martin K. Petersen +Description: + Devices that support discard functionality may return + stale or random data when a previously discarded block + is read back. This can cause problems if the filesystem + expects discarded blocks to be explicitly cleared. If a + device reports that it deterministically returns zeroes + when a discarded area is read the discard_zeroes_data + parameter will be set to one. Otherwise it will be 0 and + the result of reading a discarded area is undefined. diff --git a/trunk/Documentation/ABI/testing/sysfs-bus-pci b/trunk/Documentation/ABI/testing/sysfs-bus-pci index 36bf454ba855..349ecf26ce10 100644 --- a/trunk/Documentation/ABI/testing/sysfs-bus-pci +++ b/trunk/Documentation/ABI/testing/sysfs-bus-pci @@ -74,6 +74,15 @@ Description: hot-remove the PCI device and any of its children. Depends on CONFIG_HOTPLUG. +What: /sys/bus/pci/devices/.../pci_bus/.../rescan +Date: May 2011 +Contact: Linux PCI developers +Description: + Writing a non-zero value to this attribute will + force a rescan of the bus and all child buses, + and re-discover devices removed earlier from this + part of the device tree. Depends on CONFIG_HOTPLUG. + What: /sys/bus/pci/devices/.../rescan Date: January 2009 Contact: Linux PCI developers diff --git a/trunk/Documentation/ABI/testing/sysfs-ptp b/trunk/Documentation/ABI/testing/sysfs-ptp new file mode 100644 index 000000000000..d40d2b550502 --- /dev/null +++ b/trunk/Documentation/ABI/testing/sysfs-ptp @@ -0,0 +1,98 @@ +What: /sys/class/ptp/ +Date: September 2010 +Contact: Richard Cochran +Description: + This directory contains files and directories + providing a standardized interface to the ancillary + features of PTP hardware clocks. + +What: /sys/class/ptp/ptpN/ +Date: September 2010 +Contact: Richard Cochran +Description: + This directory contains the attributes of the Nth PTP + hardware clock registered into the PTP class driver + subsystem. + +What: /sys/class/ptp/ptpN/clock_name +Date: September 2010 +Contact: Richard Cochran +Description: + This file contains the name of the PTP hardware clock + as a human readable string. + +What: /sys/class/ptp/ptpN/max_adjustment +Date: September 2010 +Contact: Richard Cochran +Description: + This file contains the PTP hardware clock's maximum + frequency adjustment value (a positive integer) in + parts per billion. + +What: /sys/class/ptp/ptpN/n_alarms +Date: September 2010 +Contact: Richard Cochran +Description: + This file contains the number of periodic or one shot + alarms offer by the PTP hardware clock. + +What: /sys/class/ptp/ptpN/n_external_timestamps +Date: September 2010 +Contact: Richard Cochran +Description: + This file contains the number of external timestamp + channels offered by the PTP hardware clock. + +What: /sys/class/ptp/ptpN/n_periodic_outputs +Date: September 2010 +Contact: Richard Cochran +Description: + This file contains the number of programmable periodic + output channels offered by the PTP hardware clock. + +What: /sys/class/ptp/ptpN/pps_avaiable +Date: September 2010 +Contact: Richard Cochran +Description: + This file indicates whether the PTP hardware clock + supports a Pulse Per Second to the host CPU. Reading + "1" means that the PPS is supported, while "0" means + not supported. + +What: /sys/class/ptp/ptpN/extts_enable +Date: September 2010 +Contact: Richard Cochran +Description: + This write-only file enables or disables external + timestamps. To enable external timestamps, write the + channel index followed by a "1" into the file. + To disable external timestamps, write the channel + index followed by a "0" into the file. + +What: /sys/class/ptp/ptpN/fifo +Date: September 2010 +Contact: Richard Cochran +Description: + This file provides timestamps on external events, in + the form of three integers: channel index, seconds, + and nanoseconds. + +What: /sys/class/ptp/ptpN/period +Date: September 2010 +Contact: Richard Cochran +Description: + This write-only file enables or disables periodic + outputs. To enable a periodic output, write five + integers into the file: channel index, start time + seconds, start time nanoseconds, period seconds, and + period nanoseconds. To disable a periodic output, set + all the seconds and nanoseconds values to zero. + +What: /sys/class/ptp/ptpN/pps_enable +Date: September 2010 +Contact: Richard Cochran +Description: + This write-only file enables or disables delivery of + PPS events to the Linux PPS subsystem. To enable PPS + events, write a "1" into the file. To disable events, + write a "0" into the file. diff --git a/trunk/Documentation/DocBook/.gitignore b/trunk/Documentation/DocBook/.gitignore index c6def352fe39..679034cbd686 100644 --- a/trunk/Documentation/DocBook/.gitignore +++ b/trunk/Documentation/DocBook/.gitignore @@ -8,3 +8,4 @@ *.dvi *.log *.out +media/ diff --git a/trunk/Documentation/DocBook/Makefile b/trunk/Documentation/DocBook/Makefile index 8436b018c289..3cebfa0d1611 100644 --- a/trunk/Documentation/DocBook/Makefile +++ b/trunk/Documentation/DocBook/Makefile @@ -73,7 +73,7 @@ installmandocs: mandocs ### #External programs used KERNELDOC = $(srctree)/scripts/kernel-doc -DOCPROC = $(objtree)/scripts/basic/docproc +DOCPROC = $(objtree)/scripts/docproc XMLTOFLAGS = -m $(srctree)/Documentation/DocBook/stylesheet.xsl XMLTOFLAGS += --skip-validation diff --git a/trunk/Documentation/DocBook/dvb/dvbapi.xml b/trunk/Documentation/DocBook/dvb/dvbapi.xml index ad8678d48916..9fad86ce7f5e 100644 --- a/trunk/Documentation/DocBook/dvb/dvbapi.xml +++ b/trunk/Documentation/DocBook/dvb/dvbapi.xml @@ -34,6 +34,14 @@ + + 2.0.4 + 2011-05-06 + mcc + + Add more information about DVB APIv5, better describing the frontend GET/SET props ioctl's. + + 2.0.3 2010-07-03 diff --git a/trunk/Documentation/DocBook/dvb/dvbproperty.xml b/trunk/Documentation/DocBook/dvb/dvbproperty.xml index 97f397e2fb3a..52d5e3c7cf6c 100644 --- a/trunk/Documentation/DocBook/dvb/dvbproperty.xml +++ b/trunk/Documentation/DocBook/dvb/dvbproperty.xml @@ -1,6 +1,327 @@ -
+
FE_GET_PROPERTY/FE_SET_PROPERTY + +/* Reserved fields should be set to 0 */ +struct dtv_property { + __u32 cmd; + union { + __u32 data; + struct { + __u8 data[32]; + __u32 len; + __u32 reserved1[3]; + void *reserved2; + } buffer; + } u; + int result; +} __attribute__ ((packed)); + +/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */ +#define DTV_IOCTL_MAX_MSGS 64 + +struct dtv_properties { + __u32 num; + struct dtv_property *props; +}; + + +
+FE_GET_PROPERTY +DESCRIPTION + + +This ioctl call returns one or more frontend properties. This call only + requires read-only access to the device. + + +SYNOPSIS + + +int ioctl(int fd, int request = FE_GET_PROPERTY, + dtv_properties ⋆props); + + +PARAMETERS + + +int fd + +File descriptor returned by a previous call to open(). + + +int num + +Equals FE_GET_PROPERTY for this command. + + +struct dtv_property *props + +Points to the location where the front-end property commands are stored. + + +ERRORS + + EINVAL + Invalid parameter(s) received or number of parameters out of the range. + + ENOMEM + Out of memory. + + EFAULT + Failure while copying data from/to userspace. + + EOPNOTSUPP + Property type not supported. + +
+ +
+FE_SET_PROPERTY +DESCRIPTION + + +This ioctl call sets one or more frontend properties. This call only + requires read-only access to the device. + + +SYNOPSIS + + +int ioctl(int fd, int request = FE_SET_PROPERTY, + dtv_properties ⋆props); + + +PARAMETERS + + +int fd + +File descriptor returned by a previous call to open(). + + +int num + +Equals FE_SET_PROPERTY for this command. + + +struct dtv_property *props + +Points to the location where the front-end property commands are stored. + + +ERRORS + + + EINVAL + Invalid parameter(s) received or number of parameters out of the range. + + ENOMEM + Out of memory. + + EFAULT + Failure while copying data from/to userspace. + + EOPNOTSUPP + Property type not supported. + +
+ + +On FE_GET_PROPERTY/FE_SET_PROPERTY, +the actual action is determined by the dtv_property cmd/data pairs. With one single ioctl, is possible to +get/set up to 64 properties. The actual meaning of each property is described on the next sections. + + +The Available frontend property types are: + +#define DTV_UNDEFINED 0 +#define DTV_TUNE 1 +#define DTV_CLEAR 2 +#define DTV_FREQUENCY 3 +#define DTV_MODULATION 4 +#define DTV_BANDWIDTH_HZ 5 +#define DTV_INVERSION 6 +#define DTV_DISEQC_MASTER 7 +#define DTV_SYMBOL_RATE 8 +#define DTV_INNER_FEC 9 +#define DTV_VOLTAGE 10 +#define DTV_TONE 11 +#define DTV_PILOT 12 +#define DTV_ROLLOFF 13 +#define DTV_DISEQC_SLAVE_REPLY 14 +#define DTV_FE_CAPABILITY_COUNT 15 +#define DTV_FE_CAPABILITY 16 +#define DTV_DELIVERY_SYSTEM 17 +#define DTV_ISDBT_PARTIAL_RECEPTION 18 +#define DTV_ISDBT_SOUND_BROADCASTING 19 +#define DTV_ISDBT_SB_SUBCHANNEL_ID 20 +#define DTV_ISDBT_SB_SEGMENT_IDX 21 +#define DTV_ISDBT_SB_SEGMENT_COUNT 22 +#define DTV_ISDBT_LAYERA_FEC 23 +#define DTV_ISDBT_LAYERA_MODULATION 24 +#define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25 +#define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26 +#define DTV_ISDBT_LAYERB_FEC 27 +#define DTV_ISDBT_LAYERB_MODULATION 28 +#define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29 +#define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30 +#define DTV_ISDBT_LAYERC_FEC 31 +#define DTV_ISDBT_LAYERC_MODULATION 32 +#define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33 +#define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34 +#define DTV_API_VERSION 35 +#define DTV_CODE_RATE_HP 36 +#define DTV_CODE_RATE_LP 37 +#define DTV_GUARD_INTERVAL 38 +#define DTV_TRANSMISSION_MODE 39 +#define DTV_HIERARCHY 40 +#define DTV_ISDBT_LAYER_ENABLED 41 +#define DTV_ISDBS_TS_ID 42 + + +
+ Parameters that are common to all Digital TV standards +
+ <constant>DTV_FREQUENCY</constant> + + Central frequency of the channel, in HZ. + + Notes: + 1)For ISDB-T, the channels are usually transmitted with an offset of 143kHz. + E.g. a valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of + the channel which is 6MHz. + + 2)As in ISDB-Tsb the channel consists of only one or three segments the + frequency step is 429kHz, 3*429 respectively. As for ISDB-T the + central frequency of the channel is expected. +
+ +
+ <constant>DTV_BANDWIDTH_HZ</constant> + + Bandwidth for the channel, in HZ. + + Possible values: + 1712000, + 5000000, + 6000000, + 7000000, + 8000000, + 10000000. + + + Notes: + + 1) For ISDB-T it should be always 6000000Hz (6MHz) + 2) For ISDB-Tsb it can vary depending on the number of connected segments + 3) Bandwidth doesn't apply for DVB-C transmissions, as the bandwidth + for DVB-C depends on the symbol rate + 4) Bandwidth in ISDB-T is fixed (6MHz) or can be easily derived from + other parameters (DTV_ISDBT_SB_SEGMENT_IDX, + DTV_ISDBT_SB_SEGMENT_COUNT). + 5) DVB-T supports 6, 7 and 8MHz. + 6) In addition, DVB-T2 supports 1.172, 5 and 10MHz. +
+ +
+ <constant>DTV_DELIVERY_SYSTEM</constant> + + Specifies the type of Delivery system + + Possible values: + +typedef enum fe_delivery_system { + SYS_UNDEFINED, + SYS_DVBC_ANNEX_AC, + SYS_DVBC_ANNEX_B, + SYS_DVBT, + SYS_DSS, + SYS_DVBS, + SYS_DVBS2, + SYS_DVBH, + SYS_ISDBT, + SYS_ISDBS, + SYS_ISDBC, + SYS_ATSC, + SYS_ATSCMH, + SYS_DMBTH, + SYS_CMMB, + SYS_DAB, + SYS_DVBT2, +} fe_delivery_system_t; + + +
+ +
+ <constant>DTV_TRANSMISSION_MODE</constant> + + Specifies the number of carriers used by the standard + + Possible values are: + +typedef enum fe_transmit_mode { + TRANSMISSION_MODE_2K, + TRANSMISSION_MODE_8K, + TRANSMISSION_MODE_AUTO, + TRANSMISSION_MODE_4K, + TRANSMISSION_MODE_1K, + TRANSMISSION_MODE_16K, + TRANSMISSION_MODE_32K, +} fe_transmit_mode_t; + + + Notes: + 1) ISDB-T supports three carrier/symbol-size: 8K, 4K, 2K. It is called + 'mode' in the standard: Mode 1 is 2K, mode 2 is 4K, mode 3 is 8K + + 2) If DTV_TRANSMISSION_MODE is set the TRANSMISSION_MODE_AUTO the + hardware will try to find the correct FFT-size (if capable) and will + use TMCC to fill in the missing parameters. + 3) DVB-T specifies 2K and 8K as valid sizes. + 4) DVB-T2 specifies 1K, 2K, 4K, 8K, 16K and 32K. +
+ +
+ <constant>DTV_GUARD_INTERVAL</constant> + + Possible values are: + +typedef enum fe_guard_interval { + GUARD_INTERVAL_1_32, + GUARD_INTERVAL_1_16, + GUARD_INTERVAL_1_8, + GUARD_INTERVAL_1_4, + GUARD_INTERVAL_AUTO, + GUARD_INTERVAL_1_128, + GUARD_INTERVAL_19_128, + GUARD_INTERVAL_19_256, +} fe_guard_interval_t; + + + Notes: + 1) If DTV_GUARD_INTERVAL is set the GUARD_INTERVAL_AUTO the hardware will + try to find the correct guard interval (if capable) and will use TMCC to fill + in the missing parameters. + 2) Intervals 1/128, 19/128 and 19/256 are used only for DVB-T2 at present +
+
+
ISDB-T frontend This section describes shortly what are the possible parameters in the Linux @@ -32,73 +353,6 @@ Parameters used by ISDB-T and ISDB-Tsb. -
- Parameters that are common with DVB-T and ATSC - -
- <constant>DTV_FREQUENCY</constant> - - Central frequency of the channel. - - For ISDB-T the channels are usually transmitted with an offset of 143kHz. E.g. a - valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of - the channel which is 6MHz. - - As in ISDB-Tsb the channel consists of only one or three segments the - frequency step is 429kHz, 3*429 respectively. As for ISDB-T the - central frequency of the channel is expected. -
- -
- <constant>DTV_BANDWIDTH_HZ</constant> (optional) - - Possible values: - - For ISDB-T it should be always 6000000Hz (6MHz) - For ISDB-Tsb it can vary depending on the number of connected segments - - Note: Hardware specific values might be given here, but standard - applications should not bother to set a value to this field as - standard demods are ignoring it anyway. - - Bandwidth in ISDB-T is fixed (6MHz) or can be easily derived from - other parameters (DTV_ISDBT_SB_SEGMENT_IDX, - DTV_ISDBT_SB_SEGMENT_COUNT). -
- -
- <constant>DTV_DELIVERY_SYSTEM</constant> - - Possible values: SYS_ISDBT -
- -
- <constant>DTV_TRANSMISSION_MODE</constant> - - ISDB-T supports three carrier/symbol-size: 8K, 4K, 2K. It is called - 'mode' in the standard: Mode 1 is 2K, mode 2 is 4K, mode 3 is 8K - - Possible values: TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K, - TRANSMISSION_MODE_AUTO, TRANSMISSION_MODE_4K - - If DTV_TRANSMISSION_MODE is set the TRANSMISSION_MODE_AUTO the - hardware will try to find the correct FFT-size (if capable) and will - use TMCC to fill in the missing parameters. - - TRANSMISSION_MODE_4K is added at the same time as the other new parameters. -
- -
- <constant>DTV_GUARD_INTERVAL</constant> - - Possible values: GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, - GUARD_INTERVAL_1_4, GUARD_INTERVAL_AUTO - - If DTV_GUARD_INTERVAL is set the GUARD_INTERVAL_AUTO the hardware will - try to find the correct guard interval (if capable) and will use TMCC to fill - in the missing parameters. -
-
ISDB-T only parameters @@ -314,5 +568,20 @@
+
+ DVB-T2 parameters + + This section covers parameters that apply only to the DVB-T2 delivery method. DVB-T2 + support is currently in the early stages development so expect this section to grow + and become more detailed with time. + +
+ <constant>DTV_DVBT2_PLP_ID</constant> + + DVB-T2 supports Physical Layer Pipes (PLP) to allow transmission of + many data types via a single multiplex. The API will soon support this + at which point this section will be expanded. +
+
diff --git a/trunk/Documentation/DocBook/dvb/frontend.h.xml b/trunk/Documentation/DocBook/dvb/frontend.h.xml index d08e0d401418..d792f789ad3b 100644 --- a/trunk/Documentation/DocBook/dvb/frontend.h.xml +++ b/trunk/Documentation/DocBook/dvb/frontend.h.xml @@ -176,14 +176,20 @@ typedef enum fe_transmit_mode { TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K, TRANSMISSION_MODE_AUTO, - TRANSMISSION_MODE_4K + TRANSMISSION_MODE_4K, + TRANSMISSION_MODE_1K, + TRANSMISSION_MODE_16K, + TRANSMISSION_MODE_32K, } fe_transmit_mode_t; typedef enum fe_bandwidth { BANDWIDTH_8_MHZ, BANDWIDTH_7_MHZ, BANDWIDTH_6_MHZ, - BANDWIDTH_AUTO + BANDWIDTH_AUTO, + BANDWIDTH_5_MHZ, + BANDWIDTH_10_MHZ, + BANDWIDTH_1_712_MHZ, } fe_bandwidth_t; @@ -192,7 +198,10 @@ typedef enum fe_guard_interval { GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_4, - GUARD_INTERVAL_AUTO + GUARD_INTERVAL_AUTO, + GUARD_INTERVAL_1_128, + GUARD_INTERVAL_19_128, + GUARD_INTERVAL_19_256, } fe_guard_interval_t; @@ -306,7 +315,9 @@ struct dvb_frontend_event { #define DTV_ISDBS_TS_ID 42 -#define DTV_MAX_COMMAND DTV_ISDBS_TS_ID +#define DTV_DVBT2_PLP_ID 43 + +#define DTV_MAX_COMMAND DTV_DVBT2_PLP_ID typedef enum fe_pilot { PILOT_ON, @@ -338,6 +349,7 @@ typedef enum fe_delivery_system { SYS_DMBTH, SYS_CMMB, SYS_DAB, + SYS_DVBT2, } fe_delivery_system_t; struct dtv_cmds_h { diff --git a/trunk/Documentation/DocBook/media-entities.tmpl b/trunk/Documentation/DocBook/media-entities.tmpl index fea63b45471a..c8abb23ef1e7 100644 --- a/trunk/Documentation/DocBook/media-entities.tmpl +++ b/trunk/Documentation/DocBook/media-entities.tmpl @@ -270,6 +270,7 @@ + @@ -295,6 +296,7 @@ + diff --git a/trunk/Documentation/DocBook/v4l/pixfmt-m420.xml b/trunk/Documentation/DocBook/v4l/pixfmt-m420.xml new file mode 100644 index 000000000000..ce4bc019e5c0 --- /dev/null +++ b/trunk/Documentation/DocBook/v4l/pixfmt-m420.xml @@ -0,0 +1,147 @@ + + + V4L2_PIX_FMT_M420 ('M420') + &manvol; + + + V4L2_PIX_FMT_M420 + Format with ½ horizontal and vertical chroma + resolution, also known as YUV 4:2:0. Hybrid plane line-interleaved + layout. + + + Description + + M420 is a YUV format with ½ horizontal and vertical chroma + subsampling (YUV 4:2:0). Pixels are organized as interleaved luma and + chroma planes. Two lines of luma data are followed by one line of chroma + data. + The luma plane has one byte per pixel. The chroma plane contains + interleaved CbCr pixels subsampled by ½ in the horizontal and + vertical directions. Each CbCr pair belongs to four pixels. For example, +Cb0/Cr0 belongs to +Y'00, Y'01, +Y'10, Y'11. + + All line lengths are identical: if the Y lines include pad bytes + so do the CbCr lines. + + + <constant>V4L2_PIX_FMT_M420</constant> 4 × 4 +pixel image + + + Byte Order. + Each cell is one byte. + + + + + + start + 0: + Y'00 + Y'01 + Y'02 + Y'03 + + + start + 4: + Y'10 + Y'11 + Y'12 + Y'13 + + + start + 8: + Cb00 + Cr00 + Cb01 + Cr01 + + + start + 16: + Y'20 + Y'21 + Y'22 + Y'23 + + + start + 20: + Y'30 + Y'31 + Y'32 + Y'33 + + + start + 24: + Cb10 + Cr10 + Cb11 + Cr11 + + + + + + + + + Color Sample Location. + + + + + + + 01 + 23 + + + 0 + YY + YY + + + + C + C + + + 1 + YY + YY + + + + + + 2 + YY + YY + + + + C + C + + + 3 + YY + YY + + + + + + + + + + + diff --git a/trunk/Documentation/DocBook/v4l/pixfmt-y10b.xml b/trunk/Documentation/DocBook/v4l/pixfmt-y10b.xml new file mode 100644 index 000000000000..adb0ad808c93 --- /dev/null +++ b/trunk/Documentation/DocBook/v4l/pixfmt-y10b.xml @@ -0,0 +1,43 @@ + + + V4L2_PIX_FMT_Y10BPACK ('Y10B') + &manvol; + + + V4L2_PIX_FMT_Y10BPACK + Grey-scale image as a bit-packed array + + + Description + + This is a packed grey-scale image format with a depth of 10 bits per + pixel. Pixels are stored in a bit-packed array of 10bit bits per pixel, + with no padding between them and with the most significant bits coming + first from the left. + + + <constant>V4L2_PIX_FMT_Y10BPACK</constant> 4 pixel data stream taking 5 bytes + + + Bit-packed representation + pixels cross the byte boundary and have a ratio of 5 bytes for each 4 + pixels. + + + + + + Y'00[9:2] + Y'00[1:0]Y'01[9:4] + Y'01[3:0]Y'02[9:6] + Y'02[5:0]Y'03[9:8] + Y'03[7:0] + + + + + + + + + diff --git a/trunk/Documentation/DocBook/v4l/pixfmt.xml b/trunk/Documentation/DocBook/v4l/pixfmt.xml index 40af4beb48b9..dbfe3b08435f 100644 --- a/trunk/Documentation/DocBook/v4l/pixfmt.xml +++ b/trunk/Documentation/DocBook/v4l/pixfmt.xml @@ -697,6 +697,7 @@ information. &sub-grey; &sub-y10; &sub-y12; + &sub-y10b; &sub-y16; &sub-yuyv; &sub-uyvy; @@ -712,6 +713,7 @@ information. &sub-nv12m; &sub-nv12mt; &sub-nv16; + &sub-m420;
diff --git a/trunk/Documentation/DocBook/v4l/subdev-formats.xml b/trunk/Documentation/DocBook/v4l/subdev-formats.xml index d7ccd25edcc1..a26b10c07857 100644 --- a/trunk/Documentation/DocBook/v4l/subdev-formats.xml +++ b/trunk/Documentation/DocBook/v4l/subdev-formats.xml @@ -2522,5 +2522,51 @@
+ +
+ JPEG Compressed Formats + + Those data formats consist of an ordered sequence of 8-bit bytes + obtained from JPEG compression process. Additionally to the + _JPEG prefix the format code is made of + the following information. + + The number of bus samples per entropy encoded byte. + The bus width. + + + For instance, for a JPEG baseline process and an 8-bit bus width + the format will be named V4L2_MBUS_FMT_JPEG_1X8. + + + + The following table lists existing JPEG compressed formats. + + + JPEG Formats + + + + + + + Identifier + Code + Remarks + + + + + V4L2_MBUS_FMT_JPEG_1X8 + 0x4001 + Besides of its usage for the parallel bus this format is + recommended for transmission of JPEG data over MIPI CSI bus + using the User Defined 8-bit Data types. + + + + +
+
diff --git a/trunk/Documentation/DocBook/v4l/videodev2.h.xml b/trunk/Documentation/DocBook/v4l/videodev2.h.xml index 2b796a2ee98a..c50536a4f596 100644 --- a/trunk/Documentation/DocBook/v4l/videodev2.h.xml +++ b/trunk/Documentation/DocBook/v4l/videodev2.h.xml @@ -311,6 +311,9 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ +/* Grey bit-packed formats */ +#define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */ + /* Palette formats */ #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ @@ -333,6 +336,7 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ +#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */ /* two planes -- one Y, one Cr + Cb interleaved */ #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ diff --git a/trunk/Documentation/HOWTO b/trunk/Documentation/HOWTO index 365bda9a0d94..81bc1a9ab9d8 100644 --- a/trunk/Documentation/HOWTO +++ b/trunk/Documentation/HOWTO @@ -209,7 +209,7 @@ tools. One such tool that is particularly recommended is the Linux Cross-Reference project, which is able to present source code in a self-referential, indexed webpage format. An excellent up-to-date repository of the kernel code may be found at: - http://users.sosdg.org/~qiyong/lxr/ + http://lxr.linux.no/+trees The development process diff --git a/trunk/Documentation/IRQ-affinity.txt b/trunk/Documentation/IRQ-affinity.txt index b4a615b78403..7890fae18529 100644 --- a/trunk/Documentation/IRQ-affinity.txt +++ b/trunk/Documentation/IRQ-affinity.txt @@ -4,10 +4,11 @@ ChangeLog: SMP IRQ affinity -/proc/irq/IRQ#/smp_affinity specifies which target CPUs are permitted -for a given IRQ source. It's a bitmask of allowed CPUs. It's not allowed -to turn off all CPUs, and if an IRQ controller does not support IRQ -affinity then the value will not change from the default 0xffffffff. +/proc/irq/IRQ#/smp_affinity and /proc/irq/IRQ#/smp_affinity_list specify +which target CPUs are permitted for a given IRQ source. It's a bitmask +(smp_affinity) or cpu list (smp_affinity_list) of allowed CPUs. It's not +allowed to turn off all CPUs, and if an IRQ controller does not support +IRQ affinity then the value will not change from the default of all cpus. /proc/irq/default_smp_affinity specifies default affinity mask that applies to all non-active IRQs. Once IRQ is allocated/activated its affinity bitmask @@ -54,3 +55,11 @@ round-trip min/avg/max = 0.1/0.5/585.4 ms This time around IRQ44 was delivered only to the last four processors. i.e counters for the CPU0-3 did not change. +Here is an example of limiting that same irq (44) to cpus 1024 to 1031: + +[root@moon 44]# echo 1024-1031 > smp_affinity +[root@moon 44]# cat smp_affinity +1024-1031 + +Note that to do this with a bitmask would require 32 bitmasks of zero +to follow the pertinent one. diff --git a/trunk/Documentation/SubmittingPatches b/trunk/Documentation/SubmittingPatches index e439cd0d3375..569f3532e138 100644 --- a/trunk/Documentation/SubmittingPatches +++ b/trunk/Documentation/SubmittingPatches @@ -714,10 +714,11 @@ Jeff Garzik, "Linux kernel patch submission format". Greg Kroah-Hartman, "How to piss off a kernel subsystem maintainer". - - - - + + + + + NO!!!! No more huge patch bombs to linux-kernel@vger.kernel.org people! diff --git a/trunk/Documentation/blockdev/cciss.txt b/trunk/Documentation/blockdev/cciss.txt index 89698e8df7d4..c00c6a5ab21f 100644 --- a/trunk/Documentation/blockdev/cciss.txt +++ b/trunk/Documentation/blockdev/cciss.txt @@ -169,3 +169,18 @@ is issued which positions the tape to a known position. Typically you must rewind the tape (by issuing "mt -f /dev/st0 rewind" for example) before i/o can proceed again to a tape drive which was reset. +There is a cciss_tape_cmds module parameter which can be used to make cciss +allocate more commands for use by tape drives. Ordinarily only a few commands +(6) are allocated for tape drives because tape drives are slow and +infrequently used and the primary purpose of Smart Array controllers is to +act as a RAID controller for disk drives, so the vast majority of commands +are allocated for disk devices. However, if you have more than a few tape +drives attached to a smart array, the default number of commands may not be +enought (for example, if you have 8 tape drives, you could only rewind 6 +at one time with the default number of commands.) The cciss_tape_cmds module +parameter allows more commands (up to 16 more) to be allocated for use by +tape drives. For example: + + insmod cciss.ko cciss_tape_cmds=16 + +Or, as a kernel boot parameter passed in via grub: cciss.cciss_tape_cmds=8 diff --git a/trunk/Documentation/cachetlb.txt b/trunk/Documentation/cachetlb.txt index 9164ae3b83bc..9b728dc17535 100644 --- a/trunk/Documentation/cachetlb.txt +++ b/trunk/Documentation/cachetlb.txt @@ -16,7 +16,7 @@ on all processors in the system. Don't let this scare you into thinking SMP cache/tlb flushing must be so inefficient, this is in fact an area where many optimizations are possible. For example, if it can be proven that a user address space has never executed -on a cpu (see vma->cpu_vm_mask), one need not perform a flush +on a cpu (see mm_cpumask()), one need not perform a flush for this address space on that cpu. First, the TLB flushing interfaces, since they are the simplest. The diff --git a/trunk/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt b/trunk/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt index edb7ae19e868..2c6be0377f55 100644 --- a/trunk/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt +++ b/trunk/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt @@ -74,3 +74,57 @@ Example: interrupt-parent = <&mpic>; phy-handle = <&phy0> }; + +* Gianfar PTP clock nodes + +General Properties: + + - compatible Should be "fsl,etsec-ptp" + - reg Offset and length of the register set for the device + - interrupts There should be at least two interrupts. Some devices + have as many as four PTP related interrupts. + +Clock Properties: + + - fsl,tclk-period Timer reference clock period in nanoseconds. + - fsl,tmr-prsc Prescaler, divides the output clock. + - fsl,tmr-add Frequency compensation value. + - fsl,tmr-fiper1 Fixed interval period pulse generator. + - fsl,tmr-fiper2 Fixed interval period pulse generator. + - fsl,max-adj Maximum frequency adjustment in parts per billion. + + These properties set the operational parameters for the PTP + clock. You must choose these carefully for the clock to work right. + Here is how to figure good values: + + TimerOsc = system clock MHz + tclk_period = desired clock period nanoseconds + NominalFreq = 1000 / tclk_period MHz + FreqDivRatio = TimerOsc / NominalFreq (must be greater that 1.0) + tmr_add = ceil(2^32 / FreqDivRatio) + OutputClock = NominalFreq / tmr_prsc MHz + PulseWidth = 1 / OutputClock microseconds + FiperFreq1 = desired frequency in Hz + FiperDiv1 = 1000000 * OutputClock / FiperFreq1 + tmr_fiper1 = tmr_prsc * tclk_period * FiperDiv1 - tclk_period + max_adj = 1000000000 * (FreqDivRatio - 1.0) - 1 + + The calculation for tmr_fiper2 is the same as for tmr_fiper1. The + driver expects that tmr_fiper1 will be correctly set to produce a 1 + Pulse Per Second (PPS) signal, since this will be offered to the PPS + subsystem to synchronize the Linux clock. + +Example: + + ptp_clock@24E00 { + compatible = "fsl,etsec-ptp"; + reg = <0x24E00 0xB0>; + interrupts = <12 0x8 13 0x8>; + interrupt-parent = < &ipic >; + fsl,tclk-period = <10>; + fsl,tmr-prsc = <100>; + fsl,tmr-add = <0x999999A4>; + fsl,tmr-fiper1 = <0x3B9AC9F6>; + fsl,tmr-fiper2 = <0x00018696>; + fsl,max-adj = <659999998>; + }; diff --git a/trunk/Documentation/dontdiff b/trunk/Documentation/dontdiff index 470d3dba1a69..dfa6fc6e4b28 100644 --- a/trunk/Documentation/dontdiff +++ b/trunk/Documentation/dontdiff @@ -1,6 +1,8 @@ *.a *.aux *.bin +*.bz2 +*.cis *.cpio *.csp *.dsp @@ -8,6 +10,8 @@ *.elf *.eps *.fw +*.gcno +*.gcov *.gen.S *.gif *.grep @@ -19,14 +23,20 @@ *.ko *.log *.lst +*.lzma +*.lzo +*.mo *.moc *.mod.c *.o *.o.* +*.order *.orig *.out +*.patch *.pdf *.png +*.pot *.ps *.rej *.s @@ -39,16 +49,22 @@ *.tex *.ver *.xml +*.xz *_MODULES *_vga16.c *~ +\#*# *.9 -*.9.gz .* +.*.d .mm 53c700_d.h CVS ChangeSet +GPATH +GRTAGS +GSYMS +GTAGS Image Kerntypes Module.markers @@ -57,15 +73,14 @@ PENDING SCCS System.map* TAGS +aconf +af_names.h aic7*reg.h* aic7*reg_print.c* aic7*seq.h* aicasm aicdb.h* -altivec1.c -altivec2.c -altivec4.c -altivec8.c +altivec*.c asm-offsets.h asm_offsets.h autoconf.h* @@ -80,6 +95,7 @@ btfixupprep build bvmlinux bzImage* +capability_names.h capflags.c classlist.h* comp*.log @@ -88,7 +104,8 @@ conf config config-* config_data.h* -config_data.gz* +config.mak +config.mak.autogen conmakehash consolemap_deftbl.c* cpustr.h @@ -96,7 +113,9 @@ crc32table.h* cscope.* defkeymap.c devlist.h* +dnotify_test docproc +dslm elf2ecoff elfconfig.h* evergreen_reg_safe.h @@ -105,6 +124,7 @@ flask.h fore200e_mkfirm fore200e_pca_fw.c* gconf +gconf.glade.h gen-devlist gen_crc32table gen_init_cpio @@ -112,11 +132,12 @@ generated genheaders genksyms *_gray256.c +hpet_example +hugepage-mmap +hugepage-shm ihex2fw ikconfig.h* inat-tables.c -initramfs_data.cpio -initramfs_data.cpio.gz initramfs_list int16.c int1.c @@ -133,15 +154,19 @@ kxgettext lkc_defs.h lex.c lex.*.c +linux logo_*.c logo_*_clut224.c logo_*_mono.c lxdialog +mach mach-types mach-types.h machtypes.h map +map_hugetlb maui_boot.h +media mconf miboot* mk_elfconfig @@ -150,23 +175,29 @@ mkbugboot mkcpustr mkdep mkprep +mkregtable mktables mktree modpost modules.builtin modules.order modversions.h* +nconf ncscope.* offset.h offsets.h oui.c* +page-types parse.c parse.h patches* pca200e.bin pca200e_ecd.bin2 -piggy.gz +perf.data +perf.data.old +perf-archive piggyback +piggy.gzip piggy.S pnmtologo ppc_defs.h* @@ -177,10 +208,9 @@ r200_reg_safe.h r300_reg_safe.h r420_reg_safe.h r600_reg_safe.h -raid6altivec*.c -raid6int*.c -raid6tables.c +recordmcount relocs +rlim_names.h rn50_reg_safe.h rs600_reg_safe.h rv515_reg_safe.h @@ -194,6 +224,7 @@ split-include syscalltab.h tables.c tags +test_get_len tftpboot.img timeconst.h times.h* @@ -210,10 +241,13 @@ vdso32.so.dbg vdso64.lds vdso64.so.dbg version.h* +vmImage vmlinux vmlinux-* vmlinux.aout +vmlinux.bin.all vmlinux.lds +vmlinuz voffset.h vsyscall.lds vsyscall_32.lds diff --git a/trunk/Documentation/feature-removal-schedule.txt b/trunk/Documentation/feature-removal-schedule.txt index 19132cadc18d..95788ad2506c 100644 --- a/trunk/Documentation/feature-removal-schedule.txt +++ b/trunk/Documentation/feature-removal-schedule.txt @@ -551,3 +551,26 @@ Why: These legacy callbacks should no longer be used as i2c-core offers Who: Jean Delvare ---------------------------- + +What: Support for UVCIOC_CTRL_ADD in the uvcvideo driver +When: 2.6.42 +Why: The information passed to the driver by this ioctl is now queried + dynamically from the device. +Who: Laurent Pinchart + +---------------------------- + +What: Support for UVCIOC_CTRL_MAP_OLD in the uvcvideo driver +When: 2.6.42 +Why: Used only by applications compiled against older driver versions. + Superseded by UVCIOC_CTRL_MAP which supports V4L2 menu controls. +Who: Laurent Pinchart + +---------------------------- + +What: Support for UVCIOC_CTRL_GET and UVCIOC_CTRL_SET in the uvcvideo driver +When: 2.6.42 +Why: Superseded by the UVCIOC_CTRL_QUERY ioctl. +Who: Laurent Pinchart + +---------------------------- diff --git a/trunk/Documentation/filesystems/9p.txt b/trunk/Documentation/filesystems/9p.txt index b22abba78fed..13de64c7f0ab 100644 --- a/trunk/Documentation/filesystems/9p.txt +++ b/trunk/Documentation/filesystems/9p.txt @@ -25,6 +25,8 @@ Other applications are described in the following papers: http://xcpu.org/papers/cellfs-talk.pdf * PROSE I/O: Using 9p to enable Application Partitions http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf + * VirtFS: A Virtualization Aware File System pass-through + http://goo.gl/3WPDg USAGE ===== @@ -130,31 +132,20 @@ OPTIONS RESOURCES ========= -Our current recommendation is to use Inferno (http://www.vitanuova.com/nferno/index.html) -as the 9p server. You can start a 9p server under Inferno by issuing the -following command: - ; styxlisten -A tcp!*!564 export '#U*' +Protocol specifications are maintained on github: +http://ericvh.github.com/9p-rfc/ -The -A specifies an unauthenticated export. The 564 is the port # (you may -have to choose a higher port number if running as a normal user). The '#U*' -specifies exporting the root of the Linux name space. You may specify a -subset of the namespace by extending the path: '#U*'/tmp would just export -/tmp. For more information, see the Inferno manual pages covering styxlisten -and export. +9p client and server implementations are listed on +http://9p.cat-v.org/implementations -A Linux version of the 9p server is now maintained under the npfs project -on sourceforge (http://sourceforge.net/projects/npfs). The currently -maintained version is the single-threaded version of the server (named spfs) -available from the same SVN repository. +A 9p2000.L server is being developed by LLNL and can be found +at http://code.google.com/p/diod/ There are user and developer mailing lists available through the v9fs project on sourceforge (http://sourceforge.net/projects/v9fs). -A stand-alone version of the module (which should build for any 2.6 kernel) -is available via (http://github.com/ericvh/9p-sac/tree/master) - -News and other information is maintained on SWiK (http://swik.net/v9fs) -and the Wiki (http://sf.net/apps/mediawiki/v9fs/index.php). +News and other information is maintained on a Wiki. +(http://sf.net/apps/mediawiki/v9fs/index.php). Bug reports may be issued through the kernel.org bugzilla (http://bugzilla.kernel.org) diff --git a/trunk/Documentation/filesystems/proc.txt b/trunk/Documentation/filesystems/proc.txt index 60740e8ecb37..f48178024067 100644 --- a/trunk/Documentation/filesystems/proc.txt +++ b/trunk/Documentation/filesystems/proc.txt @@ -574,6 +574,12 @@ The contents of each smp_affinity file is the same by default: > cat /proc/irq/0/smp_affinity ffffffff +There is an alternate interface, smp_affinity_list which allows specifying +a cpu range instead of a bitmask: + + > cat /proc/irq/0/smp_affinity_list + 1024-1031 + The default_smp_affinity mask applies to all non-active IRQs, which are the IRQs which have not yet been allocated/activated, and hence which lack a /proc/irq/[0-9]* directory. @@ -583,12 +589,13 @@ reports itself as being attached. This hardware locality information does not include information about any possible driver locality preference. prof_cpu_mask specifies which CPUs are to be profiled by the system wide -profiler. Default value is ffffffff (all cpus). +profiler. Default value is ffffffff (all cpus if there are only 32 of them). The way IRQs are routed is handled by the IO-APIC, and it's Round Robin between all the CPUs which are allowed to handle it. As usual the kernel has more info than you and does a better job than you, so the defaults are the -best choice for almost everyone. +best choice for almost everyone. [Note this applies only to those IO-APIC's +that support "Round Robin" interrupt distribution.] There are three more important subdirectories in /proc: net, scsi, and sys. The general rule is that the contents, or even the existence of these diff --git a/trunk/Documentation/filesystems/ubifs.txt b/trunk/Documentation/filesystems/ubifs.txt index d7b13b01e980..8e4fab639d9c 100644 --- a/trunk/Documentation/filesystems/ubifs.txt +++ b/trunk/Documentation/filesystems/ubifs.txt @@ -115,28 +115,8 @@ ubi.mtd=0 root=ubi0:rootfs rootfstype=ubifs Module Parameters for Debugging =============================== -When UBIFS has been compiled with debugging enabled, there are 3 module +When UBIFS has been compiled with debugging enabled, there are 2 module parameters that are available to control aspects of testing and debugging. -The parameters are unsigned integers where each bit controls an option. -The parameters are: - -debug_msgs Selects which debug messages to display, as follows: - - Message Type Flag value - - General messages 1 - Journal messages 2 - Mount messages 4 - Commit messages 8 - LEB search messages 16 - Budgeting messages 32 - Garbage collection messages 64 - Tree Node Cache (TNC) messages 128 - LEB properties (lprops) messages 256 - Input/output messages 512 - Log messages 1024 - Scan messages 2048 - Recovery messages 4096 debug_chks Selects extra checks that UBIFS can do while running: @@ -154,11 +134,9 @@ debug_tsts Selects a mode of testing, as follows: Test mode Flag value - Force in-the-gaps method 2 Failure mode for recovery testing 4 -For example, set debug_msgs to 5 to display General messages and Mount -messages. +For example, set debug_chks to 3 to enable general and TNC checks. References diff --git a/trunk/Documentation/hwmon/emc6w201 b/trunk/Documentation/hwmon/emc6w201 new file mode 100644 index 000000000000..32f355aaf56b --- /dev/null +++ b/trunk/Documentation/hwmon/emc6w201 @@ -0,0 +1,42 @@ +Kernel driver emc6w201 +====================== + +Supported chips: + * SMSC EMC6W201 + Prefix: 'emc6w201' + Addresses scanned: I2C 0x2c, 0x2d, 0x2e + Datasheet: Not public + +Author: Jean Delvare + + +Description +----------- + +From the datasheet: + +"The EMC6W201 is an environmental monitoring device with automatic fan +control capability and enhanced system acoustics for noise suppression. +This ACPI compliant device provides hardware monitoring for up to six +voltages (including its own VCC) and five external thermal sensors, +measures the speed of up to five fans, and controls the speed of +multiple DC fans using three Pulse Width Modulator (PWM) outputs. Note +that it is possible to control more than three fans by connecting two +fans to one PWM output. The EMC6W201 will be available in a 36-pin +QFN package." + +The device is functionally close to the EMC6D100 series, but is +register-incompatible. + +The driver currently only supports the monitoring of the voltages, +temperatures and fan speeds. Limits can be changed. Alarms are not +supported, and neither is fan speed control. + + +Known Systems With EMC6W201 +--------------------------- + +The EMC6W201 is a rare device, only found on a few systems, made in +2005 and 2006. Known systems with this device: +* Dell Precision 670 workstation +* Gigabyte 2CEWH mainboard diff --git a/trunk/Documentation/hwmon/f71882fg b/trunk/Documentation/hwmon/f71882fg index df02245d1419..84d2623810f3 100644 --- a/trunk/Documentation/hwmon/f71882fg +++ b/trunk/Documentation/hwmon/f71882fg @@ -6,6 +6,10 @@ Supported chips: Prefix: 'f71808e' Addresses scanned: none, address read from Super I/O config space Datasheet: Not public + * Fintek F71808A + Prefix: 'f71808a' + Addresses scanned: none, address read from Super I/O config space + Datasheet: Not public * Fintek F71858FG Prefix: 'f71858fg' Addresses scanned: none, address read from Super I/O config space diff --git a/trunk/Documentation/hwmon/fam15h_power b/trunk/Documentation/hwmon/fam15h_power new file mode 100644 index 000000000000..a92918e0bd69 --- /dev/null +++ b/trunk/Documentation/hwmon/fam15h_power @@ -0,0 +1,37 @@ +Kernel driver fam15h_power +========================== + +Supported chips: +* AMD Family 15h Processors + + Prefix: 'fam15h_power' + Addresses scanned: PCI space + Datasheets: + BIOS and Kernel Developer's Guide (BKDG) For AMD Family 15h Processors + (not yet published) + +Author: Andreas Herrmann + +Description +----------- + +This driver permits reading of registers providing power information +of AMD Family 15h processors. + +For AMD Family 15h processors the following power values can be +calculated using different processor northbridge function registers: + +* BasePwrWatts: Specifies in watts the maximum amount of power + consumed by the processor for NB and logic external to the core. +* ProcessorPwrWatts: Specifies in watts the maximum amount of power + the processor can support. +* CurrPwrWatts: Specifies in watts the current amount of power being + consumed by the processor. + +This driver provides ProcessorPwrWatts and CurrPwrWatts: +* power1_crit (ProcessorPwrWatts) +* power1_input (CurrPwrWatts) + +On multi-node processors the calculated value is for the entire +package and not for a single node. Thus the driver creates sysfs +attributes only for internal node0 of a multi-node processor. diff --git a/trunk/Documentation/hwmon/k10temp b/trunk/Documentation/hwmon/k10temp index d2b56a4fd1f5..0393c89277c0 100644 --- a/trunk/Documentation/hwmon/k10temp +++ b/trunk/Documentation/hwmon/k10temp @@ -11,6 +11,7 @@ Supported chips: Socket S1G2: Athlon (X2), Sempron (X2), Turion X2 (Ultra) * AMD Family 12h processors: "Llano" * AMD Family 14h processors: "Brazos" (C/E/G-Series) +* AMD Family 15h processors: "Bulldozer" Prefix: 'k10temp' Addresses scanned: PCI space @@ -40,7 +41,7 @@ Description ----------- This driver permits reading of the internal temperature sensor of AMD -Family 10h/11h/12h/14h processors. +Family 10h/11h/12h/14h/15h processors. All these processors have a sensor, but on those for Socket F or AM2+, the sensor may return inconsistent values (erratum 319). The driver diff --git a/trunk/Documentation/hwmon/max6650 b/trunk/Documentation/hwmon/max6650 index c565650fcfc6..58d9644a2bde 100644 --- a/trunk/Documentation/hwmon/max6650 +++ b/trunk/Documentation/hwmon/max6650 @@ -2,9 +2,13 @@ Kernel driver max6650 ===================== Supported chips: - * Maxim 6650 / 6651 + * Maxim MAX6650 Prefix: 'max6650' - Addresses scanned: I2C 0x1b, 0x1f, 0x48, 0x4b + Addresses scanned: none + Datasheet: http://pdfserv.maxim-ic.com/en/ds/MAX6650-MAX6651.pdf + * Maxim MAX6651 + Prefix: 'max6651' + Addresses scanned: none Datasheet: http://pdfserv.maxim-ic.com/en/ds/MAX6650-MAX6651.pdf Authors: @@ -15,10 +19,10 @@ Authors: Description ----------- -This driver implements support for the Maxim 6650/6651 +This driver implements support for the Maxim MAX6650 and MAX6651. -The 2 devices are very similar, but the Maxim 6550 has a reduced feature -set, e.g. only one fan-input, instead of 4 for the 6651. +The 2 devices are very similar, but the MAX6550 has a reduced feature +set, e.g. only one fan-input, instead of 4 for the MAX6651. The driver is not able to distinguish between the 2 devices. @@ -36,6 +40,13 @@ fan1_div rw sets the speed range the inputs can handle. Legal values are 1, 2, 4, and 8. Use lower values for faster fans. +Usage notes +----------- + +This driver does not auto-detect devices. You will have to instantiate the +devices explicitly. Please see Documentation/i2c/instantiating-devices for +details. + Module parameters ----------------- diff --git a/trunk/Documentation/i2c/busses/i2c-i801 b/trunk/Documentation/i2c/busses/i2c-i801 index 6df69765ccb7..2871fd500349 100644 --- a/trunk/Documentation/i2c/busses/i2c-i801 +++ b/trunk/Documentation/i2c/busses/i2c-i801 @@ -19,6 +19,7 @@ Supported adapters: * Intel 6 Series (PCH) * Intel Patsburg (PCH) * Intel DH89xxCC (PCH) + * Intel Panther Point (PCH) Datasheets: Publicly available at the Intel website On Intel Patsburg and later chipsets, both the normal host SMBus controller diff --git a/trunk/Documentation/i2c/writing-clients b/trunk/Documentation/i2c/writing-clients index 5ebf5af1d716..5aa53374ea2a 100644 --- a/trunk/Documentation/i2c/writing-clients +++ b/trunk/Documentation/i2c/writing-clients @@ -38,7 +38,7 @@ static struct i2c_driver foo_driver = { .name = "foo", }, - .id_table = foo_ids, + .id_table = foo_idtable, .probe = foo_probe, .remove = foo_remove, /* if device autodetection is needed: */ diff --git a/trunk/Documentation/input/elantech.txt b/trunk/Documentation/input/elantech.txt index 56941ae1f5db..db798af5ef98 100644 --- a/trunk/Documentation/input/elantech.txt +++ b/trunk/Documentation/input/elantech.txt @@ -34,7 +34,8 @@ Contents Currently the Linux Elantech touchpad driver is aware of two different hardware versions unimaginatively called version 1 and version 2. Version 1 is found in "older" laptops and uses 4 bytes per packet. Version 2 seems to -be introduced with the EeePC and uses 6 bytes per packet. +be introduced with the EeePC and uses 6 bytes per packet, and provides +additional features such as position of two fingers, and width of the touch. The driver tries to support both hardware versions and should be compatible with the Xorg Synaptics touchpad driver and its graphical configuration @@ -94,18 +95,44 @@ Currently the Linux Elantech touchpad driver provides two extra knobs under can check these bits and reject any packet that appears corrupted. Using this knob you can bypass that check. - It is not known yet whether hardware version 2 provides the same parity - bits. Hence checking is disabled by default. Currently even turning it on - will do nothing. - + Hardware version 2 does not provide the same parity bits. Only some basic + data consistency checking can be done. For now checking is disabled by + default. Currently even turning it on will do nothing. ///////////////////////////////////////////////////////////////////////////// +3. Differentiating hardware versions + ================================= + +To detect the hardware version, read the version number as param[0].param[1].param[2] + + 4 bytes version: (after the arrow is the name given in the Dell-provided driver) + 02.00.22 => EF013 + 02.06.00 => EF019 +In the wild, there appear to be more versions, such as 00.01.64, 01.00.21, +02.00.00, 02.00.04, 02.00.06. + + 6 bytes: + 02.00.30 => EF113 + 02.08.00 => EF023 + 02.08.XX => EF123 + 02.0B.00 => EF215 + 04.01.XX => Scroll_EF051 + 04.02.XX => EF051 +In the wild, there appear to be more versions, such as 04.03.01, 04.04.11. There +appears to be almost no difference, except for EF113, which does not report +pressure/width and has different data consistency checks. + +Probably all the versions with param[0] <= 01 can be considered as +4 bytes/firmware 1. The versions < 02.08.00, with the exception of 02.00.30, as +4 bytes/firmware 2. Everything >= 02.08.00 can be considered as 6 bytes. + +///////////////////////////////////////////////////////////////////////////// -3. Hardware version 1 +4. Hardware version 1 ================== -3.1 Registers +4.1 Registers ~~~~~~~~~ By echoing a hexadecimal value to a register it contents can be altered. @@ -168,7 +195,7 @@ For example: smart edge activation area width? -3.2 Native relative mode 4 byte packet format +4.2 Native relative mode 4 byte packet format ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ byte 0: @@ -226,9 +253,13 @@ byte 3: positive = down -3.3 Native absolute mode 4 byte packet format +4.3 Native absolute mode 4 byte packet format ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +EF013 and EF019 have a special behaviour (due to a bug in the firmware?), and +when 1 finger is touching, the first 2 position reports must be discarded. +This counting is reset whenever a different number of fingers is reported. + byte 0: firmware version 1.x: @@ -279,11 +310,11 @@ byte 3: ///////////////////////////////////////////////////////////////////////////// -4. Hardware version 2 +5. Hardware version 2 ================== -4.1 Registers +5.1 Registers ~~~~~~~~~ By echoing a hexadecimal value to a register it contents can be altered. @@ -316,16 +347,41 @@ For example: 0x7f = never i.e. tap again to release) -4.2 Native absolute mode 6 byte packet format +5.2 Native absolute mode 6 byte packet format ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -4.2.1 One finger touch +5.2.1 Parity checking and packet re-synchronization +There is no parity checking, however some consistency checks can be performed. + +For instance for EF113: + SA1= packet[0]; + A1 = packet[1]; + B1 = packet[2]; + SB1= packet[3]; + C1 = packet[4]; + D1 = packet[5]; + if( (((SA1 & 0x3C) != 0x3C) && ((SA1 & 0xC0) != 0x80)) || // check Byte 1 + (((SA1 & 0x0C) != 0x0C) && ((SA1 & 0xC0) == 0x80)) || // check Byte 1 (one finger pressed) + (((SA1 & 0xC0) != 0x80) && (( A1 & 0xF0) != 0x00)) || // check Byte 2 + (((SB1 & 0x3E) != 0x38) && ((SA1 & 0xC0) != 0x80)) || // check Byte 4 + (((SB1 & 0x0E) != 0x08) && ((SA1 & 0xC0) == 0x80)) || // check Byte 4 (one finger pressed) + (((SA1 & 0xC0) != 0x80) && (( C1 & 0xF0) != 0x00)) ) // check Byte 5 + // error detected + +For all the other ones, there are just a few constant bits: + if( ((packet[0] & 0x0C) != 0x04) || + ((packet[3] & 0x0f) != 0x02) ) + // error detected + + +In case an error is detected, all the packets are shifted by one (and packet[0] is discarded). + +5.2.1 One/Three finger touch ~~~~~~~~~~~~~~~~ byte 0: bit 7 6 5 4 3 2 1 0 - n1 n0 . . . . R L + n1 n0 w3 w2 . . R L L, R = 1 when Left, Right mouse button pressed n1..n0 = numbers of fingers on touchpad @@ -333,24 +389,40 @@ byte 0: byte 1: bit 7 6 5 4 3 2 1 0 - . . . . . x10 x9 x8 + p7 p6 p5 p4 . x10 x9 x8 byte 2: bit 7 6 5 4 3 2 1 0 - x7 x6 x5 x4 x4 x2 x1 x0 + x7 x6 x5 x4 x3 x2 x1 x0 x10..x0 = absolute x value (horizontal) byte 3: bit 7 6 5 4 3 2 1 0 - . . . . . . . . + n4 vf w1 w0 . . . b2 + + n4 = set if more than 3 fingers (only in 3 fingers mode) + vf = a kind of flag ? (only on EF123, 0 when finger is over one + of the buttons, 1 otherwise) + w3..w0 = width of the finger touch (not EF113) + b2 (on EF113 only, 0 otherwise), b2.R.L indicates one button pressed: + 0 = none + 1 = Left + 2 = Right + 3 = Middle (Left and Right) + 4 = Forward + 5 = Back + 6 = Another one + 7 = Another one byte 4: bit 7 6 5 4 3 2 1 0 - . . . . . . y9 y8 + p3 p1 p2 p0 . . y9 y8 + + p7..p0 = pressure (not EF113) byte 5: @@ -363,6 +435,11 @@ byte 5: 4.2.2 Two finger touch ~~~~~~~~~~~~~~~~ +Note that the two pairs of coordinates are not exactly the coordinates of the +two fingers, but only the pair of the lower-left and upper-right coordinates. +So the actual fingers might be situated on the other diagonal of the square +defined by these two points. + byte 0: bit 7 6 5 4 3 2 1 0 @@ -376,14 +453,14 @@ byte 1: bit 7 6 5 4 3 2 1 0 ax7 ax6 ax5 ax4 ax3 ax2 ax1 ax0 - ax8..ax0 = first finger absolute x value + ax8..ax0 = lower-left finger absolute x value byte 2: bit 7 6 5 4 3 2 1 0 ay7 ay6 ay5 ay4 ay3 ay2 ay1 ay0 - ay8..ay0 = first finger absolute y value + ay8..ay0 = lower-left finger absolute y value byte 3: @@ -395,11 +472,11 @@ byte 4: bit 7 6 5 4 3 2 1 0 bx7 bx6 bx5 bx4 bx3 bx2 bx1 bx0 - bx8..bx0 = second finger absolute x value + bx8..bx0 = upper-right finger absolute x value byte 5: bit 7 6 5 4 3 2 1 0 by7 by8 by5 by4 by3 by2 by1 by0 - by8..by0 = second finger absolute y value + by8..by0 = upper-right finger absolute y value diff --git a/trunk/Documentation/input/rotary-encoder.txt b/trunk/Documentation/input/rotary-encoder.txt index 943e8f6f2b15..92e68bce13a4 100644 --- a/trunk/Documentation/input/rotary-encoder.txt +++ b/trunk/Documentation/input/rotary-encoder.txt @@ -9,6 +9,9 @@ peripherals with two wires. The outputs are phase-shifted by 90 degrees and by triggering on falling and rising edges, the turn direction can be determined. +Some encoders have both outputs low in stable states, whereas others also have +a stable state with both outputs high (half-period mode). + The phase diagram of these two outputs look like this: _____ _____ _____ @@ -26,6 +29,8 @@ The phase diagram of these two outputs look like this: |<-------->| one step + |<-->| + one step (half-period mode) For more information, please see http://en.wikipedia.org/wiki/Rotary_encoder @@ -34,6 +39,13 @@ For more information, please see 1. Events / state machine ------------------------- +In half-period mode, state a) and c) above are used to determine the +rotational direction based on the last stable state. Events are reported in +states b) and d) given that the new stable state is different from the last +(i.e. the rotation was not reversed half-way). + +Otherwise, the following apply: + a) Rising edge on channel A, channel B in low state This state is used to recognize a clockwise turn @@ -96,6 +108,7 @@ static struct rotary_encoder_platform_data my_rotary_encoder_info = { .gpio_b = GPIO_ROTARY_B, .inverted_a = 0, .inverted_b = 0, + .half_period = false, }; static struct platform_device rotary_encoder_device = { diff --git a/trunk/Documentation/ioctl/ioctl-number.txt b/trunk/Documentation/ioctl/ioctl-number.txt index a0a5d82b6b0b..3a46e360496d 100644 --- a/trunk/Documentation/ioctl/ioctl-number.txt +++ b/trunk/Documentation/ioctl/ioctl-number.txt @@ -166,7 +166,6 @@ Code Seq#(hex) Include File Comments 'T' all arch/x86/include/asm/ioctls.h conflict! 'T' C0-DF linux/if_tun.h conflict! 'U' all sound/asound.h conflict! -'U' 00-0F drivers/media/video/uvc/uvcvideo.h conflict! 'U' 00-CF linux/uinput.h conflict! 'U' 00-EF linux/usbdevice_fs.h 'U' C0-CF drivers/bluetooth/hci_uart.h @@ -259,6 +258,7 @@ Code Seq#(hex) Include File Comments 't' 80-8F linux/isdn_ppp.h 't' 90 linux/toshiba.h 'u' 00-1F linux/smb_fs.h gone +'u' 20-3F linux/uvcvideo.h USB video class host driver 'v' 00-1F linux/ext2_fs.h conflict! 'v' 00-1F linux/fs.h conflict! 'v' 00-0F linux/sonypi.h conflict! @@ -304,6 +304,7 @@ Code Seq#(hex) Include File Comments 0xB0 all RATIO devices in development: 0xB1 00-1F PPPoX +0xB3 00 linux/mmc/ioctl.h 0xC0 00-0F linux/usb/iowarrior.h 0xCB 00-1F CBM serial IEC bus in development: diff --git a/trunk/Documentation/kbuild/kbuild.txt b/trunk/Documentation/kbuild/kbuild.txt index 7c2a89ba674c..68e32bb6bd80 100644 --- a/trunk/Documentation/kbuild/kbuild.txt +++ b/trunk/Documentation/kbuild/kbuild.txt @@ -201,3 +201,16 @@ KBUILD_ENABLE_EXTRA_GCC_CHECKS -------------------------------------------------- If enabled over the make command line with "W=1", it turns on additional gcc -W... options for more extensive build-time checking. + +KBUILD_BUILD_TIMESTAMP +-------------------------------------------------- +Setting this to a date string overrides the timestamp used in the +UTS_VERSION definition (uname -v in the running kernel). The value has to +be a string that can be passed to date -d. The default value +is the output of the date command at one point during build. + +KBUILD_BUILD_USER, KBUILD_BUILD_HOST +-------------------------------------------------- +These two variables allow to override the user@host string displayed during +boot and in /proc/version. The default value is the output of the commands +whoami and host, respectively. diff --git a/trunk/Documentation/kbuild/kconfig-language.txt b/trunk/Documentation/kbuild/kconfig-language.txt index b507d61fd41c..44e2649fbb29 100644 --- a/trunk/Documentation/kbuild/kconfig-language.txt +++ b/trunk/Documentation/kbuild/kconfig-language.txt @@ -113,6 +113,13 @@ applicable everywhere (see syntax). That will limit the usefulness but on the other hand avoid the illegal configurations all over. +- limiting menu display: "visible if" + This attribute is only applicable to menu blocks, if the condition is + false, the menu block is not displayed to the user (the symbols + contained there can still be selected by other symbols, though). It is + similar to a conditional "prompt" attribude for individual menu + entries. Default value of "visible" is true. + - numerical ranges: "range" ["if" ] This allows to limit the range of possible input values for int and hex symbols. The user can only input a value which is larger than @@ -303,7 +310,8 @@ menu: "endmenu" This defines a menu block, see "Menu structure" above for more -information. The only possible options are dependencies. +information. The only possible options are dependencies and "visible" +attributes. if: @@ -381,3 +389,25 @@ config FOO limits FOO to module (=m) or disabled (=n). +Kconfig symbol existence +~~~~~~~~~~~~~~~~~~~~~~~~ +The following two methods produce the same kconfig symbol dependencies +but differ greatly in kconfig symbol existence (production) in the +generated config file. + +case 1: + +config FOO + tristate "about foo" + depends on BAR + +vs. case 2: + +if BAR +config FOO + tristate "about foo" +endif + +In case 1, the symbol FOO will always exist in the config file (given +no other dependencies). In case 2, the symbol FOO will only exist in +the config file if BAR is enabled. diff --git a/trunk/Documentation/kbuild/kconfig.txt b/trunk/Documentation/kbuild/kconfig.txt index cca46b1a0f6c..c313d71324b4 100644 --- a/trunk/Documentation/kbuild/kconfig.txt +++ b/trunk/Documentation/kbuild/kconfig.txt @@ -48,11 +48,6 @@ KCONFIG_OVERWRITECONFIG If you set KCONFIG_OVERWRITECONFIG in the environment, Kconfig will not break symlinks when .config is a symlink to somewhere else. -KCONFIG_NOTIMESTAMP --------------------------------------------------- -If this environment variable exists and is non-null, the timestamp line -in generated .config files is omitted. - ______________________________________________________________________ Environment variables for '{allyes/allmod/allno/rand}config' diff --git a/trunk/Documentation/kbuild/makefiles.txt b/trunk/Documentation/kbuild/makefiles.txt index 5d145bb443c0..47435e56c5da 100644 --- a/trunk/Documentation/kbuild/makefiles.txt +++ b/trunk/Documentation/kbuild/makefiles.txt @@ -40,11 +40,13 @@ This document describes the Linux kernel Makefiles. --- 6.6 Commands useful for building a boot image --- 6.7 Custom kbuild commands --- 6.8 Preprocessing linker scripts + --- 6.9 Generic header files === 7 Kbuild syntax for exported headers --- 7.1 header-y --- 7.2 objhdr-y --- 7.3 destination-y + --- 7.4 generic-y === 8 Kbuild Variables === 9 Makefile language @@ -499,6 +501,18 @@ more details, with real examples. gcc >= 3.00. For gcc < 3.00, -malign-functions=4 is used. Note: cc-option-align uses KBUILD_CFLAGS for $(CC) options + cc-disable-warning + cc-disable-warning checks if gcc supports a given warning and returns + the commandline switch to disable it. This special function is needed, + because gcc 4.4 and later accept any unknown -Wno-* option and only + warn about it if there is another warning in the source file. + + Example: + KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable) + + In the above example, -Wno-unused-but-set-variable will be added to + KBUILD_CFLAGS only if gcc really accepts it. + cc-version cc-version returns a numerical version of the $(CC) compiler version. The format is where both are two digits. So for example @@ -955,6 +969,11 @@ When kbuild executes, the following steps are followed (roughly): used when linking modules. This is often a linker script. From commandline LDFLAGS_MODULE shall be used (see kbuild.txt). + KBUILD_ARFLAGS Options for $(AR) when creating archives + + $(KBUILD_ARFLAGS) set by the top level Makefile to "D" (deterministic + mode) if this option is supported by $(AR). + --- 6.2 Add prerequisites to archprepare: The archprepare: rule is used to list prerequisites that need to be @@ -1209,6 +1228,14 @@ When kbuild executes, the following steps are followed (roughly): The kbuild infrastructure for *lds file are used in several architecture-specific files. +--- 6.9 Generic header files + + The directory include/asm-generic contains the header files + that may be shared between individual architectures. + The recommended approach how to use a generic header file is + to list the file in the Kbuild file. + See "7.4 generic-y" for further info on syntax etc. + === 7 Kbuild syntax for exported headers The kernel include a set of headers that is exported to userspace. @@ -1265,6 +1292,32 @@ See subsequent chapter for the syntax of the Kbuild file. In the example above all exported headers in the Kbuild file will be located in the directory "include/linux" when exported. + --- 7.4 generic-y + + If an architecture uses a verbatim copy of a header from + include/asm-generic then this is listed in the file + arch/$(ARCH)/include/asm/Kbuild like this: + + Example: + #arch/x86/include/asm/Kbuild + generic-y += termios.h + generic-y += rtc.h + + During the prepare phase of the build a wrapper include + file is generated in the directory: + + arch/$(ARCH)/include/generated/asm + + When a header is exported where the architecture uses + the generic header a similar wrapper is generated as part + of the set of exported headers in the directory: + + usr/include/asm + + The generated wrapper will in both cases look like the following: + + Example: termios.h + #include === 8 Kbuild Variables diff --git a/trunk/Documentation/kernel-parameters.txt b/trunk/Documentation/kernel-parameters.txt index c603ef7b0568..5438a2d7907f 100644 --- a/trunk/Documentation/kernel-parameters.txt +++ b/trunk/Documentation/kernel-parameters.txt @@ -1777,9 +1777,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted. nosoftlockup [KNL] Disable the soft-lockup detector. - noswapaccount [KNL] Disable accounting of swap in memory resource - controller. (See Documentation/cgroups/memory.txt) - nosync [HW,M68K] Disables sync negotiation for all devices. notsc [BUGS=X86-32] Disable Time Stamp Counter @@ -2585,6 +2582,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. bytes of sense data); c = FIX_CAPACITY (decrease the reported device capacity by one sector); + d = NO_READ_DISC_INFO (don't use + READ_DISC_INFO command); + e = NO_READ_CAPACITY_16 (don't use + READ_CAPACITY_16 command); h = CAPACITY_HEURISTICS (decrease the reported device capacity by one sector if the number is odd); diff --git a/trunk/Documentation/lockstat.txt b/trunk/Documentation/lockstat.txt index 65f4c795015d..9c0a80d17a23 100644 --- a/trunk/Documentation/lockstat.txt +++ b/trunk/Documentation/lockstat.txt @@ -136,7 +136,7 @@ View the top contending locks: dcache_lock: 1037 1161 0.38 45.32 774.51 6611 243371 0.15 306.48 77387.24 &inode->i_mutex: 161 286 18446744073709 62882.54 1244614.55 3653 20598 18446744073709 62318.60 1693822.74 &zone->lru_lock: 94 94 0.53 7.33 92.10 4366 32690 0.29 59.81 16350.06 - &inode->i_data.i_mmap_lock: 79 79 0.40 3.77 53.03 11779 87755 0.28 116.93 29898.44 + &inode->i_data.i_mmap_mutex: 79 79 0.40 3.77 53.03 11779 87755 0.28 116.93 29898.44 &q->__queue_lock: 48 50 0.52 31.62 86.31 774 13131 0.17 113.08 12277.52 &rq->rq_lock_key: 43 47 0.74 68.50 170.63 3706 33929 0.22 107.99 17460.62 &rq->rq_lock_key#2: 39 46 0.75 6.68 49.03 2979 32292 0.17 125.17 17137.63 diff --git a/trunk/Documentation/mmc/00-INDEX b/trunk/Documentation/mmc/00-INDEX index fca586f5b853..93dd7a714075 100644 --- a/trunk/Documentation/mmc/00-INDEX +++ b/trunk/Documentation/mmc/00-INDEX @@ -2,3 +2,5 @@ - this file mmc-dev-attrs.txt - info on SD and MMC device attributes +mmc-dev-parts.txt + - info on SD and MMC device partitions diff --git a/trunk/Documentation/mmc/mmc-dev-attrs.txt b/trunk/Documentation/mmc/mmc-dev-attrs.txt index ff2bd685bced..8898a95b41e5 100644 --- a/trunk/Documentation/mmc/mmc-dev-attrs.txt +++ b/trunk/Documentation/mmc/mmc-dev-attrs.txt @@ -1,3 +1,13 @@ +SD and MMC Block Device Attributes +================================== + +These attributes are defined for the block devices associated with the +SD or MMC device. + +The following attributes are read/write. + + force_ro Enforce read-only access even if write protect switch is off. + SD and MMC Device Attributes ============================ diff --git a/trunk/Documentation/mmc/mmc-dev-parts.txt b/trunk/Documentation/mmc/mmc-dev-parts.txt new file mode 100644 index 000000000000..2db28b8e662f --- /dev/null +++ b/trunk/Documentation/mmc/mmc-dev-parts.txt @@ -0,0 +1,27 @@ +SD and MMC Device Partitions +============================ + +Device partitions are additional logical block devices present on the +SD/MMC device. + +As of this writing, MMC boot partitions as supported and exposed as +/dev/mmcblkXboot0 and /dev/mmcblkXboot1, where X is the index of the +parent /dev/mmcblkX. + +MMC Boot Partitions +=================== + +Read and write access is provided to the two MMC boot partitions. Due to +the sensitive nature of the boot partition contents, which often store +a bootloader or bootloader configuration tables crucial to booting the +platform, write access is disabled by default to reduce the chance of +accidental bricking. + +To enable write access to /dev/mmcblkXbootY, disable the forced read-only +access with: + +echo 0 > /sys/block/mmcblkXbootY/force_ro + +To re-enable read-only access: + +echo 1 > /sys/block/mmcblkXbootY/force_ro diff --git a/trunk/Documentation/pti/pti_intel_mid.txt b/trunk/Documentation/pti/pti_intel_mid.txt new file mode 100644 index 000000000000..e7a5b6d1f7a9 --- /dev/null +++ b/trunk/Documentation/pti/pti_intel_mid.txt @@ -0,0 +1,99 @@ +The Intel MID PTI project is HW implemented in Intel Atom +system-on-a-chip designs based on the Parallel Trace +Interface for MIPI P1149.7 cJTAG standard. The kernel solution +for this platform involves the following files: + +./include/linux/pti.h +./drivers/.../n_tracesink.h +./drivers/.../n_tracerouter.c +./drivers/.../n_tracesink.c +./drivers/.../pti.c + +pti.c is the driver that enables various debugging features +popular on platforms from certain mobile manufacturers. +n_tracerouter.c and n_tracesink.c allow extra system information to +be collected and routed to the pti driver, such as trace +debugging data from a modem. Although n_tracerouter +and n_tracesink are a part of the complete PTI solution, +these two line disciplines can work separately from +pti.c and route any data stream from one /dev/tty node +to another /dev/tty node via kernel-space. This provides +a stable, reliable connection that will not break unless +the user-space application shuts down (plus avoids +kernel->user->kernel context switch overheads of routing +data). + +An example debugging usage for this driver system: + *Hook /dev/ttyPTI0 to syslogd. Opening this port will also start + a console device to further capture debugging messages to PTI. + *Hook /dev/ttyPTI1 to modem debugging data to write to PTI HW. + This is where n_tracerouter and n_tracesink are used. + *Hook /dev/pti to a user-level debugging application for writing + to PTI HW. + *Use mipi_* Kernel Driver API in other device drivers for + debugging to PTI by first requesting a PTI write address via + mipi_request_masterchannel(1). + +Below is example pseudo-code on how a 'privileged' application +can hook up n_tracerouter and n_tracesink to any tty on +a system. 'Privileged' means the application has enough +privileges to successfully manipulate the ldisc drivers +but is not just blindly executing as 'root'. Keep in mind +the use of ioctl(,TIOCSETD,) is not specific to the n_tracerouter +and n_tracesink line discpline drivers but is a generic +operation for a program to use a line discpline driver +on a tty port other than the default n_tty. + +/////////// To hook up n_tracerouter and n_tracesink ///////// + +// Note that n_tracerouter depends on n_tracesink. +#include +#define ONE_TTY "/dev/ttyOne" +#define TWO_TTY "/dev/ttyTwo" + +// needed global to hand onto ldisc connection +static int g_fd_source = -1; +static int g_fd_sink = -1; + +// these two vars used to grab LDISC values from loaded ldisc drivers +// in OS. Look at /proc/tty/ldiscs to get the right numbers from +// the ldiscs loaded in the system. +int source_ldisc_num, sink_ldisc_num = -1; +int retval; + +g_fd_source = open(ONE_TTY, O_RDWR); // must be R/W +g_fd_sink = open(TWO_TTY, O_RDWR); // must be R/W + +if (g_fd_source <= 0) || (g_fd_sink <= 0) { + // doubt you'll want to use these exact error lines of code + printf("Error on open(). errno: %d\n",errno); + return errno; +} + +retval = ioctl(g_fd_sink, TIOCSETD, &sink_ldisc_num); +if (retval < 0) { + printf("Error on ioctl(). errno: %d\n", errno); + return errno; +} + +retval = ioctl(g_fd_source, TIOCSETD, &source_ldisc_num); +if (retval < 0) { + printf("Error on ioctl(). errno: %d\n", errno); + return errno; +} + +/////////// To disconnect n_tracerouter and n_tracesink //////// + +// First make sure data through the ldiscs has stopped. + +// Second, disconnect ldiscs. This provides a +// little cleaner shutdown on tty stack. +sink_ldisc_num = 0; +source_ldisc_num = 0; +ioctl(g_fd_uart, TIOCSETD, &sink_ldisc_num); +ioctl(g_fd_gadget, TIOCSETD, &source_ldisc_num); + +// Three, program closes connection, and cleanup: +close(g_fd_uart); +close(g_fd_gadget); +g_fd_uart = g_fd_gadget = NULL; diff --git a/trunk/Documentation/ptp/ptp.txt b/trunk/Documentation/ptp/ptp.txt new file mode 100644 index 000000000000..ae8fef86b832 --- /dev/null +++ b/trunk/Documentation/ptp/ptp.txt @@ -0,0 +1,89 @@ + +* PTP hardware clock infrastructure for Linux + + This patch set introduces support for IEEE 1588 PTP clocks in + Linux. Together with the SO_TIMESTAMPING socket options, this + presents a standardized method for developing PTP user space + programs, synchronizing Linux with external clocks, and using the + ancillary features of PTP hardware clocks. + + A new class driver exports a kernel interface for specific clock + drivers and a user space interface. The infrastructure supports a + complete set of PTP hardware clock functionality. + + + Basic clock operations + - Set time + - Get time + - Shift the clock by a given offset atomically + - Adjust clock frequency + + + Ancillary clock features + - One short or periodic alarms, with signal delivery to user program + - Time stamp external events + - Period output signals configurable from user space + - Synchronization of the Linux system time via the PPS subsystem + +** PTP hardware clock kernel API + + A PTP clock driver registers itself with the class driver. The + class driver handles all of the dealings with user space. The + author of a clock driver need only implement the details of + programming the clock hardware. The clock driver notifies the class + driver of asynchronous events (alarms and external time stamps) via + a simple message passing interface. + + The class driver supports multiple PTP clock drivers. In normal use + cases, only one PTP clock is needed. However, for testing and + development, it can be useful to have more than one clock in a + single system, in order to allow performance comparisons. + +** PTP hardware clock user space API + + The class driver also creates a character device for each + registered clock. User space can use an open file descriptor from + the character device as a POSIX clock id and may call + clock_gettime, clock_settime, and clock_adjtime. These calls + implement the basic clock operations. + + User space programs may control the clock using standardized + ioctls. A program may query, enable, configure, and disable the + ancillary clock features. User space can receive time stamped + events via blocking read() and poll(). One shot and periodic + signals may be configured via the POSIX timer_settime() system + call. + +** Writing clock drivers + + Clock drivers include include/linux/ptp_clock_kernel.h and register + themselves by presenting a 'struct ptp_clock_info' to the + registration method. Clock drivers must implement all of the + functions in the interface. If a clock does not offer a particular + ancillary feature, then the driver should just return -EOPNOTSUPP + from those functions. + + Drivers must ensure that all of the methods in interface are + reentrant. Since most hardware implementations treat the time value + as a 64 bit integer accessed as two 32 bit registers, drivers + should use spin_lock_irqsave/spin_unlock_irqrestore to protect + against concurrent access. This locking cannot be accomplished in + class driver, since the lock may also be needed by the clock + driver's interrupt service routine. + +** Supported hardware + + + Freescale eTSEC gianfar + - 2 Time stamp external triggers, programmable polarity (opt. interrupt) + - 2 Alarm registers (optional interrupt) + - 3 Periodic signals (optional interrupt) + + + National DP83640 + - 6 GPIOs programmable as inputs or outputs + - 6 GPIOs with dedicated functions (LED/JTAG/clock) can also be + used as general inputs or outputs + - GPIO inputs can time stamp external triggers + - GPIO outputs can produce periodic signals + - 1 interrupt pin + + + Intel IXP465 + - Auxiliary Slave/Master Mode Snapshot (optional interrupt) + - Target Time (optional interrupt) diff --git a/trunk/Documentation/ptp/testptp.c b/trunk/Documentation/ptp/testptp.c new file mode 100644 index 000000000000..f59ded066108 --- /dev/null +++ b/trunk/Documentation/ptp/testptp.c @@ -0,0 +1,381 @@ +/* + * PTP 1588 clock support - User space test program + * + * Copyright (C) 2010 OMICRON electronics GmbH + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define DEVICE "/dev/ptp0" + +#ifndef ADJ_SETOFFSET +#define ADJ_SETOFFSET 0x0100 +#endif + +#ifndef CLOCK_INVALID +#define CLOCK_INVALID -1 +#endif + +/* When glibc offers the syscall, this will go away. */ +#include +static int clock_adjtime(clockid_t id, struct timex *tx) +{ + return syscall(__NR_clock_adjtime, id, tx); +} + +static clockid_t get_clockid(int fd) +{ +#define CLOCKFD 3 +#define FD_TO_CLOCKID(fd) ((~(clockid_t) (fd) << 3) | CLOCKFD) + + return FD_TO_CLOCKID(fd); +} + +static void handle_alarm(int s) +{ + printf("received signal %d\n", s); +} + +static int install_handler(int signum, void (*handler)(int)) +{ + struct sigaction action; + sigset_t mask; + + /* Unblock the signal. */ + sigemptyset(&mask); + sigaddset(&mask, signum); + sigprocmask(SIG_UNBLOCK, &mask, NULL); + + /* Install the signal handler. */ + action.sa_handler = handler; + action.sa_flags = 0; + sigemptyset(&action.sa_mask); + sigaction(signum, &action, NULL); + + return 0; +} + +static long ppb_to_scaled_ppm(int ppb) +{ + /* + * The 'freq' field in the 'struct timex' is in parts per + * million, but with a 16 bit binary fractional field. + * Instead of calculating either one of + * + * scaled_ppm = (ppb / 1000) << 16 [1] + * scaled_ppm = (ppb << 16) / 1000 [2] + * + * we simply use double precision math, in order to avoid the + * truncation in [1] and the possible overflow in [2]. + */ + return (long) (ppb * 65.536); +} + +static void usage(char *progname) +{ + fprintf(stderr, + "usage: %s [options]\n" + " -a val request a one-shot alarm after 'val' seconds\n" + " -A val request a periodic alarm every 'val' seconds\n" + " -c query the ptp clock's capabilities\n" + " -d name device to open\n" + " -e val read 'val' external time stamp events\n" + " -f val adjust the ptp clock frequency by 'val' ppb\n" + " -g get the ptp clock time\n" + " -h prints this message\n" + " -p val enable output with a period of 'val' nanoseconds\n" + " -P val enable or disable (val=1|0) the system clock PPS\n" + " -s set the ptp clock time from the system time\n" + " -S set the system time from the ptp clock time\n" + " -t val shift the ptp clock time by 'val' seconds\n", + progname); +} + +int main(int argc, char *argv[]) +{ + struct ptp_clock_caps caps; + struct ptp_extts_event event; + struct ptp_extts_request extts_request; + struct ptp_perout_request perout_request; + struct timespec ts; + struct timex tx; + + static timer_t timerid; + struct itimerspec timeout; + struct sigevent sigevent; + + char *progname; + int c, cnt, fd; + + char *device = DEVICE; + clockid_t clkid; + int adjfreq = 0x7fffffff; + int adjtime = 0; + int capabilities = 0; + int extts = 0; + int gettime = 0; + int oneshot = 0; + int periodic = 0; + int perout = -1; + int pps = -1; + int settime = 0; + + progname = strrchr(argv[0], '/'); + progname = progname ? 1+progname : argv[0]; + while (EOF != (c = getopt(argc, argv, "a:A:cd:e:f:ghp:P:sSt:v"))) { + switch (c) { + case 'a': + oneshot = atoi(optarg); + break; + case 'A': + periodic = atoi(optarg); + break; + case 'c': + capabilities = 1; + break; + case 'd': + device = optarg; + break; + case 'e': + extts = atoi(optarg); + break; + case 'f': + adjfreq = atoi(optarg); + break; + case 'g': + gettime = 1; + break; + case 'p': + perout = atoi(optarg); + break; + case 'P': + pps = atoi(optarg); + break; + case 's': + settime = 1; + break; + case 'S': + settime = 2; + break; + case 't': + adjtime = atoi(optarg); + break; + case 'h': + usage(progname); + return 0; + case '?': + default: + usage(progname); + return -1; + } + } + + fd = open(device, O_RDWR); + if (fd < 0) { + fprintf(stderr, "opening %s: %s\n", device, strerror(errno)); + return -1; + } + + clkid = get_clockid(fd); + if (CLOCK_INVALID == clkid) { + fprintf(stderr, "failed to read clock id\n"); + return -1; + } + + if (capabilities) { + if (ioctl(fd, PTP_CLOCK_GETCAPS, &caps)) { + perror("PTP_CLOCK_GETCAPS"); + } else { + printf("capabilities:\n" + " %d maximum frequency adjustment (ppb)\n" + " %d programmable alarms\n" + " %d external time stamp channels\n" + " %d programmable periodic signals\n" + " %d pulse per second\n", + caps.max_adj, + caps.n_alarm, + caps.n_ext_ts, + caps.n_per_out, + caps.pps); + } + } + + if (0x7fffffff != adjfreq) { + memset(&tx, 0, sizeof(tx)); + tx.modes = ADJ_FREQUENCY; + tx.freq = ppb_to_scaled_ppm(adjfreq); + if (clock_adjtime(clkid, &tx)) { + perror("clock_adjtime"); + } else { + puts("frequency adjustment okay"); + } + } + + if (adjtime) { + memset(&tx, 0, sizeof(tx)); + tx.modes = ADJ_SETOFFSET; + tx.time.tv_sec = adjtime; + tx.time.tv_usec = 0; + if (clock_adjtime(clkid, &tx) < 0) { + perror("clock_adjtime"); + } else { + puts("time shift okay"); + } + } + + if (gettime) { + if (clock_gettime(clkid, &ts)) { + perror("clock_gettime"); + } else { + printf("clock time: %ld.%09ld or %s", + ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec)); + } + } + + if (settime == 1) { + clock_gettime(CLOCK_REALTIME, &ts); + if (clock_settime(clkid, &ts)) { + perror("clock_settime"); + } else { + puts("set time okay"); + } + } + + if (settime == 2) { + clock_gettime(clkid, &ts); + if (clock_settime(CLOCK_REALTIME, &ts)) { + perror("clock_settime"); + } else { + puts("set time okay"); + } + } + + if (extts) { + memset(&extts_request, 0, sizeof(extts_request)); + extts_request.index = 0; + extts_request.flags = PTP_ENABLE_FEATURE; + if (ioctl(fd, PTP_EXTTS_REQUEST, &extts_request)) { + perror("PTP_EXTTS_REQUEST"); + extts = 0; + } else { + puts("external time stamp request okay"); + } + for (; extts; extts--) { + cnt = read(fd, &event, sizeof(event)); + if (cnt != sizeof(event)) { + perror("read"); + break; + } + printf("event index %u at %lld.%09u\n", event.index, + event.t.sec, event.t.nsec); + fflush(stdout); + } + /* Disable the feature again. */ + extts_request.flags = 0; + if (ioctl(fd, PTP_EXTTS_REQUEST, &extts_request)) { + perror("PTP_EXTTS_REQUEST"); + } + } + + if (oneshot) { + install_handler(SIGALRM, handle_alarm); + /* Create a timer. */ + sigevent.sigev_notify = SIGEV_SIGNAL; + sigevent.sigev_signo = SIGALRM; + if (timer_create(clkid, &sigevent, &timerid)) { + perror("timer_create"); + return -1; + } + /* Start the timer. */ + memset(&timeout, 0, sizeof(timeout)); + timeout.it_value.tv_sec = oneshot; + if (timer_settime(timerid, 0, &timeout, NULL)) { + perror("timer_settime"); + return -1; + } + pause(); + timer_delete(timerid); + } + + if (periodic) { + install_handler(SIGALRM, handle_alarm); + /* Create a timer. */ + sigevent.sigev_notify = SIGEV_SIGNAL; + sigevent.sigev_signo = SIGALRM; + if (timer_create(clkid, &sigevent, &timerid)) { + perror("timer_create"); + return -1; + } + /* Start the timer. */ + memset(&timeout, 0, sizeof(timeout)); + timeout.it_interval.tv_sec = periodic; + timeout.it_value.tv_sec = periodic; + if (timer_settime(timerid, 0, &timeout, NULL)) { + perror("timer_settime"); + return -1; + } + while (1) { + pause(); + } + timer_delete(timerid); + } + + if (perout >= 0) { + if (clock_gettime(clkid, &ts)) { + perror("clock_gettime"); + return -1; + } + memset(&perout_request, 0, sizeof(perout_request)); + perout_request.index = 0; + perout_request.start.sec = ts.tv_sec + 2; + perout_request.start.nsec = 0; + perout_request.period.sec = 0; + perout_request.period.nsec = perout; + if (ioctl(fd, PTP_PEROUT_REQUEST, &perout_request)) { + perror("PTP_PEROUT_REQUEST"); + } else { + puts("periodic output request okay"); + } + } + + if (pps != -1) { + int enable = pps ? 1 : 0; + if (ioctl(fd, PTP_ENABLE_PPS, enable)) { + perror("PTP_ENABLE_PPS"); + } else { + puts("pps for system time request okay"); + } + } + + close(fd); + return 0; +} diff --git a/trunk/Documentation/ptp/testptp.mk b/trunk/Documentation/ptp/testptp.mk new file mode 100644 index 000000000000..4ef2d9755421 --- /dev/null +++ b/trunk/Documentation/ptp/testptp.mk @@ -0,0 +1,33 @@ +# PTP 1588 clock support - User space test program +# +# Copyright (C) 2010 OMICRON electronics GmbH +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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., 675 Mass Ave, Cambridge, MA 02139, USA. + +CC = $(CROSS_COMPILE)gcc +INC = -I$(KBUILD_OUTPUT)/usr/include +CFLAGS = -Wall $(INC) +LDLIBS = -lrt +PROGS = testptp + +all: $(PROGS) + +testptp: testptp.o + +clean: + rm -f testptp.o + +distclean: clean + rm -f $(PROGS) diff --git a/trunk/Documentation/sysctl/fs.txt b/trunk/Documentation/sysctl/fs.txt index 4af0614147ef..88fd7f5c8dcd 100644 --- a/trunk/Documentation/sysctl/fs.txt +++ b/trunk/Documentation/sysctl/fs.txt @@ -231,13 +231,6 @@ its creation). This directory contains configuration options for the epoll(7) interface. -max_user_instances ------------------- - -This is the maximum number of epoll file descriptors that a single user can -have open at a given time. The default value is 128, and should be enough -for normal users. - max_user_watches ---------------- diff --git a/trunk/Documentation/usb/callbacks.txt b/trunk/Documentation/usb/callbacks.txt index bfb36b34b79e..9e85846bdb98 100644 --- a/trunk/Documentation/usb/callbacks.txt +++ b/trunk/Documentation/usb/callbacks.txt @@ -95,9 +95,11 @@ pre_reset int (*pre_reset)(struct usb_interface *intf); -Another driver or user space is triggering a reset on the device which -contains the interface passed as an argument. Cease IO and save any -device state you need to restore. +A driver or user space is triggering a reset on the device which +contains the interface passed as an argument. Cease IO, wait for all +outstanding URBs to complete, and save any device state you need to +restore. No more URBs may be submitted until the post_reset method +is called. If you need to allocate memory here, use GFP_NOIO or GFP_ATOMIC, if you are in atomic context. diff --git a/trunk/Documentation/usb/linux-cdc-acm.inf b/trunk/Documentation/usb/linux-cdc-acm.inf index 612e7220fb29..37a02ce54841 100644 --- a/trunk/Documentation/usb/linux-cdc-acm.inf +++ b/trunk/Documentation/usb/linux-cdc-acm.inf @@ -90,10 +90,10 @@ ServiceBinary=%12%\USBSER.sys [SourceDisksFiles] [SourceDisksNames] [DeviceList] -%DESCRIPTION%=DriverInstall, USB\VID_0525&PID_A4A7, USB\VID_0525&PID_A4AB&MI_02 +%DESCRIPTION%=DriverInstall, USB\VID_0525&PID_A4A7, USB\VID_1D6B&PID_0104&MI_02 [DeviceList.NTamd64] -%DESCRIPTION%=DriverInstall, USB\VID_0525&PID_A4A7, USB\VID_0525&PID_A4AB&MI_02 +%DESCRIPTION%=DriverInstall, USB\VID_0525&PID_A4A7, USB\VID_1D6B&PID_0104&MI_02 ;------------------------------------------------------------------------------ diff --git a/trunk/Documentation/usb/linux.inf b/trunk/Documentation/usb/linux.inf index 4dee95851224..4ffa715b0ae8 100644 --- a/trunk/Documentation/usb/linux.inf +++ b/trunk/Documentation/usb/linux.inf @@ -18,15 +18,15 @@ DriverVer = 06/21/2006,6.0.6000.16384 ; Decoration for x86 architecture [LinuxDevices.NTx86] -%LinuxDevice% = RNDIS.NT.5.1, USB\VID_0525&PID_a4a2, USB\VID_0525&PID_a4ab&MI_00 +%LinuxDevice% = RNDIS.NT.5.1, USB\VID_0525&PID_a4a2, USB\VID_1d6b&PID_0104&MI_00 ; Decoration for x64 architecture [LinuxDevices.NTamd64] -%LinuxDevice% = RNDIS.NT.5.1, USB\VID_0525&PID_a4a2, USB\VID_0525&PID_a4ab&MI_00 +%LinuxDevice% = RNDIS.NT.5.1, USB\VID_0525&PID_a4a2, USB\VID_1d6b&PID_0104&MI_00 ; Decoration for ia64 architecture [LinuxDevices.NTia64] -%LinuxDevice% = RNDIS.NT.5.1, USB\VID_0525&PID_a4a2, USB\VID_0525&PID_a4ab&MI_00 +%LinuxDevice% = RNDIS.NT.5.1, USB\VID_0525&PID_a4a2, USB\VID_1d6b&PID_0104&MI_00 ;@@@ This is the common setting for setup [ControlFlags] diff --git a/trunk/Documentation/vgaarbiter.txt b/trunk/Documentation/vgaarbiter.txt index 43a9b0694fdd..b7d401e0eae9 100644 --- a/trunk/Documentation/vgaarbiter.txt +++ b/trunk/Documentation/vgaarbiter.txt @@ -14,11 +14,10 @@ the legacy VGA arbitration task (besides other bus management tasks) when more than one legacy device co-exists on the same machine. But the problem happens when these devices are trying to be accessed by different userspace clients (e.g. two server in parallel). Their address assignments conflict. Moreover, -ideally, being an userspace application, it is not the role of the the X -server to control bus resources. Therefore an arbitration scheme outside of -the X server is needed to control the sharing of these resources. This -document introduces the operation of the VGA arbiter implemented for Linux -kernel. +ideally, being a userspace application, it is not the role of the X server to +control bus resources. Therefore an arbitration scheme outside of the X server +is needed to control the sharing of these resources. This document introduces +the operation of the VGA arbiter implemented for the Linux kernel. ---------------------------------------------------------------------------- @@ -39,7 +38,7 @@ I.1 vgaarb The vgaarb is a module of the Linux Kernel. When it is initially loaded, it scans all PCI devices and adds the VGA ones inside the arbitration. The arbiter then enables/disables the decoding on different devices of the VGA -legacy instructions. Device which do not want/need to use the arbiter may +legacy instructions. Devices which do not want/need to use the arbiter may explicitly tell it by calling vga_set_legacy_decoding(). The kernel exports a char device interface (/dev/vga_arbiter) to the clients, @@ -95,8 +94,8 @@ In the case of devices hot-{un,}plugged, there is a hook - pci_notify() - to notify them being added/removed in the system and automatically added/removed in the arbiter. -There's also a in-kernel API of the arbiter in the case of DRM, vgacon and -others which may use the arbiter. +There is also an in-kernel API of the arbiter in case DRM, vgacon, or other +drivers want to use it. I.2 libpciaccess @@ -117,9 +116,8 @@ Besides it, in pci_system were added: struct pci_device *vga_default_dev; -The vga_count is usually need to keep informed how many cards are being -arbitrated, so for instance if there's only one then it can totally escape the -scheme. +The vga_count is used to track how many cards are being arbitrated, so for +instance, if there is only one card, then it can completely escape arbitration. These functions below acquire VGA resources for the given card and mark those diff --git a/trunk/Documentation/video4linux/CARDLIST.em28xx b/trunk/Documentation/video4linux/CARDLIST.em28xx index 31b485723bc5..9aae449440dc 100644 --- a/trunk/Documentation/video4linux/CARDLIST.em28xx +++ b/trunk/Documentation/video4linux/CARDLIST.em28xx @@ -54,7 +54,7 @@ 53 -> Pinnacle Hybrid Pro (em2881) 54 -> Kworld VS-DVB-T 323UR (em2882) [eb1a:e323] 55 -> Terratec Cinnergy Hybrid T USB XS (em2882) (em2882) [0ccd:005e,0ccd:0042] - 56 -> Pinnacle Hybrid Pro (2) (em2882) [2304:0226] + 56 -> Pinnacle Hybrid Pro (330e) (em2882) [2304:0226] 57 -> Kworld PlusTV HD Hybrid 330 (em2883) [eb1a:a316] 58 -> Compro VideoMate ForYou/Stereo (em2820/em2840) [185b:2041] 60 -> Hauppauge WinTV HVR 850 (em2883) [2040:651f] diff --git a/trunk/Documentation/video4linux/Zoran b/trunk/Documentation/video4linux/Zoran index c40e3bab08fa..9ed629d4874b 100644 --- a/trunk/Documentation/video4linux/Zoran +++ b/trunk/Documentation/video4linux/Zoran @@ -130,7 +130,6 @@ Card number: 4 Note: No module for the mse3000 is available yet Note: No module for the vpx3224 is available yet -Note: use encoder=X or decoder=X for non-default i2c chips =========================== diff --git a/trunk/Documentation/video4linux/gspca.txt b/trunk/Documentation/video4linux/gspca.txt index 5c542e60f51d..5bfa9a777d26 100644 --- a/trunk/Documentation/video4linux/gspca.txt +++ b/trunk/Documentation/video4linux/gspca.txt @@ -275,6 +275,7 @@ pac7302 093a:2629 Genious iSlim 300 pac7302 093a:262a Webcam 300k pac7302 093a:262c Philips SPC 230 NC jeilinj 0979:0280 Sakar 57379 +jeilinj 0979:0280 Sportscam DV15 zc3xx 0ac8:0302 Z-star Vimicro zc0302 vc032x 0ac8:0321 Vimicro generic vc0321 vc032x 0ac8:0323 Vimicro Vc0323 diff --git a/trunk/Documentation/video4linux/uvcvideo.txt b/trunk/Documentation/video4linux/uvcvideo.txt new file mode 100644 index 000000000000..848d620dcc5c --- /dev/null +++ b/trunk/Documentation/video4linux/uvcvideo.txt @@ -0,0 +1,239 @@ +Linux USB Video Class (UVC) driver +================================== + +This file documents some driver-specific aspects of the UVC driver, such as +driver-specific ioctls and implementation notes. + +Questions and remarks can be sent to the Linux UVC development mailing list at +linux-uvc-devel@lists.berlios.de. + + +Extension Unit (XU) support +--------------------------- + +1. Introduction + +The UVC specification allows for vendor-specific extensions through extension +units (XUs). The Linux UVC driver supports extension unit controls (XU controls) +through two separate mechanisms: + + - through mappings of XU controls to V4L2 controls + - through a driver-specific ioctl interface + +The first one allows generic V4L2 applications to use XU controls by mapping +certain XU controls onto V4L2 controls, which then show up during ordinary +control enumeration. + +The second mechanism requires uvcvideo-specific knowledge for the application to +access XU controls but exposes the entire UVC XU concept to user space for +maximum flexibility. + +Both mechanisms complement each other and are described in more detail below. + + +2. Control mappings + +The UVC driver provides an API for user space applications to define so-called +control mappings at runtime. These allow for individual XU controls or byte +ranges thereof to be mapped to new V4L2 controls. Such controls appear and +function exactly like normal V4L2 controls (i.e. the stock controls, such as +brightness, contrast, etc.). However, reading or writing of such a V4L2 controls +triggers a read or write of the associated XU control. + +The ioctl used to create these control mappings is called UVCIOC_CTRL_MAP. +Previous driver versions (before 0.2.0) required another ioctl to be used +beforehand (UVCIOC_CTRL_ADD) to pass XU control information to the UVC driver. +This is no longer necessary as newer uvcvideo versions query the information +directly from the device. + +For details on the UVCIOC_CTRL_MAP ioctl please refer to the section titled +"IOCTL reference" below. + + +3. Driver specific XU control interface + +For applications that need to access XU controls directly, e.g. for testing +purposes, firmware upload, or accessing binary controls, a second mechanism to +access XU controls is provided in the form of a driver-specific ioctl, namely +UVCIOC_CTRL_QUERY. + +A call to this ioctl allows applications to send queries to the UVC driver that +directly map to the low-level UVC control requests. + +In order to make such a request the UVC unit ID of the control's extension unit +and the control selector need to be known. This information either needs to be +hardcoded in the application or queried using other ways such as by parsing the +UVC descriptor or, if available, using the media controller API to enumerate a +device's entities. + +Unless the control size is already known it is necessary to first make a +UVC_GET_LEN requests in order to be able to allocate a sufficiently large buffer +and set the buffer size to the correct value. Similarly, to find out whether +UVC_GET_CUR or UVC_SET_CUR are valid requests for a given control, a +UVC_GET_INFO request should be made. The bits 0 (GET supported) and 1 (SET +supported) of the resulting byte indicate which requests are valid. + +With the addition of the UVCIOC_CTRL_QUERY ioctl the UVCIOC_CTRL_GET and +UVCIOC_CTRL_SET ioctls have become obsolete since their functionality is a +subset of the former ioctl. For the time being they are still supported but +application developers are encouraged to use UVCIOC_CTRL_QUERY instead. + +For details on the UVCIOC_CTRL_QUERY ioctl please refer to the section titled +"IOCTL reference" below. + + +4. Security + +The API doesn't currently provide a fine-grained access control facility. The +UVCIOC_CTRL_ADD and UVCIOC_CTRL_MAP ioctls require super user permissions. + +Suggestions on how to improve this are welcome. + + +5. Debugging + +In order to debug problems related to XU controls or controls in general it is +recommended to enable the UVC_TRACE_CONTROL bit in the module parameter 'trace'. +This causes extra output to be written into the system log. + + +6. IOCTL reference + +---- UVCIOC_CTRL_MAP - Map a UVC control to a V4L2 control ---- + +Argument: struct uvc_xu_control_mapping + +Description: + This ioctl creates a mapping between a UVC control or part of a UVC + control and a V4L2 control. Once mappings are defined, userspace + applications can access vendor-defined UVC control through the V4L2 + control API. + + To create a mapping, applications fill the uvc_xu_control_mapping + structure with information about an existing UVC control defined with + UVCIOC_CTRL_ADD and a new V4L2 control. + + A UVC control can be mapped to several V4L2 controls. For instance, + a UVC pan/tilt control could be mapped to separate pan and tilt V4L2 + controls. The UVC control is divided into non overlapping fields using + the 'size' and 'offset' fields and are then independantly mapped to + V4L2 control. + + For signed integer V4L2 controls the data_type field should be set to + UVC_CTRL_DATA_TYPE_SIGNED. Other values are currently ignored. + +Return value: + On success 0 is returned. On error -1 is returned and errno is set + appropriately. + + ENOMEM + Not enough memory to perform the operation. + EPERM + Insufficient privileges (super user privileges are required). + EINVAL + No such UVC control. + EOVERFLOW + The requested offset and size would overflow the UVC control. + EEXIST + Mapping already exists. + +Data types: + * struct uvc_xu_control_mapping + + __u32 id V4L2 control identifier + __u8 name[32] V4L2 control name + __u8 entity[16] UVC extension unit GUID + __u8 selector UVC control selector + __u8 size V4L2 control size (in bits) + __u8 offset V4L2 control offset (in bits) + enum v4l2_ctrl_type + v4l2_type V4L2 control type + enum uvc_control_data_type + data_type UVC control data type + struct uvc_menu_info + *menu_info Array of menu entries (for menu controls only) + __u32 menu_count Number of menu entries (for menu controls only) + + * struct uvc_menu_info + + __u32 value Menu entry value used by the device + __u8 name[32] Menu entry name + + + * enum uvc_control_data_type + + UVC_CTRL_DATA_TYPE_RAW Raw control (byte array) + UVC_CTRL_DATA_TYPE_SIGNED Signed integer + UVC_CTRL_DATA_TYPE_UNSIGNED Unsigned integer + UVC_CTRL_DATA_TYPE_BOOLEAN Boolean + UVC_CTRL_DATA_TYPE_ENUM Enumeration + UVC_CTRL_DATA_TYPE_BITMASK Bitmask + + +---- UVCIOC_CTRL_QUERY - Query a UVC XU control ---- + +Argument: struct uvc_xu_control_query + +Description: + This ioctl queries a UVC XU control identified by its extension unit ID + and control selector. + + There are a number of different queries available that closely + correspond to the low-level control requests described in the UVC + specification. These requests are: + + UVC_GET_CUR + Obtain the current value of the control. + UVC_GET_MIN + Obtain the minimum value of the control. + UVC_GET_MAX + Obtain the maximum value of the control. + UVC_GET_DEF + Obtain the default value of the control. + UVC_GET_RES + Query the resolution of the control, i.e. the step size of the + allowed control values. + UVC_GET_LEN + Query the size of the control in bytes. + UVC_GET_INFO + Query the control information bitmap, which indicates whether + get/set requests are supported. + UVC_SET_CUR + Update the value of the control. + + Applications must set the 'size' field to the correct length for the + control. Exceptions are the UVC_GET_LEN and UVC_GET_INFO queries, for + which the size must be set to 2 and 1, respectively. The 'data' field + must point to a valid writable buffer big enough to hold the indicated + number of data bytes. + + Data is copied directly from the device without any driver-side + processing. Applications are responsible for data buffer formatting, + including little-endian/big-endian conversion. This is particularly + important for the result of the UVC_GET_LEN requests, which is always + returned as a little-endian 16-bit integer by the device. + +Return value: + On success 0 is returned. On error -1 is returned and errno is set + appropriately. + + ENOENT + The device does not support the given control or the specified + extension unit could not be found. + ENOBUFS + The specified buffer size is incorrect (too big or too small). + EINVAL + An invalid request code was passed. + EBADRQC + The given request is not supported by the given control. + EFAULT + The data pointer references an inaccessible memory area. + +Data types: + * struct uvc_xu_control_query + + __u8 unit Extension unit ID + __u8 selector Control selector + __u8 query Request code to send to the device + __u16 size Control data size (in bytes) + __u8 *data Control value diff --git a/trunk/Documentation/virtual/uml/UserModeLinux-HOWTO.txt b/trunk/Documentation/virtual/uml/UserModeLinux-HOWTO.txt index 9b7e1904db1c..5d0fc8bfcdb9 100644 --- a/trunk/Documentation/virtual/uml/UserModeLinux-HOWTO.txt +++ b/trunk/Documentation/virtual/uml/UserModeLinux-HOWTO.txt @@ -1182,6 +1182,16 @@ forge.net/> and explains these in detail, as well as some other issues. + There is also a related point-to-point only "ucast" transport. + This is useful when your network does not support multicast, and + all network connections are simple point to point links. + + The full set of command line options for this transport are + + + ethn=ucast,ethernet address,remote address,listen port,remote port + + 66..66.. TTUUNN//TTAAPP wwiitthh tthhee uummll__nneett hheellppeerr diff --git a/trunk/Documentation/vm/locking b/trunk/Documentation/vm/locking index 25fadb448760..f61228bd6395 100644 --- a/trunk/Documentation/vm/locking +++ b/trunk/Documentation/vm/locking @@ -66,7 +66,7 @@ in some cases it is not really needed. Eg, vm_start is modified by expand_stack(), it is hard to come up with a destructive scenario without having the vmlist protection in this case. -The page_table_lock nests with the inode i_mmap_lock and the kmem cache +The page_table_lock nests with the inode i_mmap_mutex and the kmem cache c_spinlock spinlocks. This is okay, since the kmem code asks for pages after dropping c_spinlock. The page_table_lock also nests with pagecache_lock and pagemap_lru_lock spinlocks, and no code asks for memory with these locks diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index a301ffa78eab..1ab17de642e5 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -287,35 +287,35 @@ F: sound/pci/ad1889.* AD525X ANALOG DEVICES DIGITAL POTENTIOMETERS DRIVER M: Michael Hennerich -L: device-driver-devel@blackfin.uclinux.org +L: device-drivers-devel@blackfin.uclinux.org W: http://wiki.analog.com/AD5254 S: Supported F: drivers/misc/ad525x_dpot.c AD5398 CURRENT REGULATOR DRIVER (AD5398/AD5821) M: Michael Hennerich -L: device-driver-devel@blackfin.uclinux.org +L: device-drivers-devel@blackfin.uclinux.org W: http://wiki.analog.com/AD5398 S: Supported F: drivers/regulator/ad5398.c AD714X CAPACITANCE TOUCH SENSOR DRIVER (AD7142/3/7/8/7A) M: Michael Hennerich -L: device-driver-devel@blackfin.uclinux.org +L: device-drivers-devel@blackfin.uclinux.org W: http://wiki.analog.com/AD7142 S: Supported F: drivers/input/misc/ad714x.c AD7877 TOUCHSCREEN DRIVER M: Michael Hennerich -L: device-driver-devel@blackfin.uclinux.org +L: device-drivers-devel@blackfin.uclinux.org W: http://wiki.analog.com/AD7877 S: Supported F: drivers/input/touchscreen/ad7877.c AD7879 TOUCHSCREEN DRIVER (AD7879/AD7889) M: Michael Hennerich -L: device-driver-devel@blackfin.uclinux.org +L: device-drivers-devel@blackfin.uclinux.org W: http://wiki.analog.com/AD7879 S: Supported F: drivers/input/touchscreen/ad7879.c @@ -341,7 +341,7 @@ F: drivers/net/wireless/adm8211.* ADP5520 BACKLIGHT DRIVER WITH IO EXPANDER (ADP5520/ADP5501) M: Michael Hennerich -L: device-driver-devel@blackfin.uclinux.org +L: device-drivers-devel@blackfin.uclinux.org W: http://wiki.analog.com/ADP5520 S: Supported F: drivers/mfd/adp5520.c @@ -352,7 +352,7 @@ F: drivers/input/keyboard/adp5520-keys.c ADP5588 QWERTY KEYPAD AND IO EXPANDER DRIVER (ADP5588/ADP5587) M: Michael Hennerich -L: device-driver-devel@blackfin.uclinux.org +L: device-drivers-devel@blackfin.uclinux.org W: http://wiki.analog.com/ADP5588 S: Supported F: drivers/input/keyboard/adp5588-keys.c @@ -360,7 +360,7 @@ F: drivers/gpio/adp5588-gpio.c ADP8860 BACKLIGHT DRIVER (ADP8860/ADP8861/ADP8863) M: Michael Hennerich -L: device-driver-devel@blackfin.uclinux.org +L: device-drivers-devel@blackfin.uclinux.org W: http://wiki.analog.com/ADP8860 S: Supported F: drivers/video/backlight/adp8860_bl.c @@ -387,7 +387,7 @@ F: drivers/hwmon/adt7475.c ADXL34X THREE-AXIS DIGITAL ACCELEROMETER DRIVER (ADXL345/ADXL346) M: Michael Hennerich -L: device-driver-devel@blackfin.uclinux.org +L: device-drivers-devel@blackfin.uclinux.org W: http://wiki.analog.com/ADXL345 S: Supported F: drivers/input/misc/adxl34x.c @@ -483,6 +483,13 @@ F: drivers/tty/serial/altera_jtaguart.c F: include/linux/altera_uart.h F: include/linux/altera_jtaguart.h +AMD FAM15H PROCESSOR POWER MONITORING DRIVER +M: Andreas Herrmann +L: lm-sensors@lm-sensors.org +S: Maintained +F: Documentation/hwmon/fam15h_power +F: drivers/hwmon/fam15h_power.c + AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER M: Thomas Dahlmann L: linux-geode@lists.infradead.org (moderated for non-subscribers) @@ -526,7 +533,7 @@ S: Maintained F: drivers/infiniband/hw/amso1100/ ANALOG DEVICES INC ASOC CODEC DRIVERS -L: device-driver-devel@blackfin.uclinux.org +L: device-drivers-devel@blackfin.uclinux.org L: alsa-devel@alsa-project.org (moderated for non-subscribers) W: http://wiki.analog.com/ S: Supported @@ -2034,9 +2041,8 @@ F: net/ax25/ax25_timer.c F: net/ax25/sysctl_net_ax25.c DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER -M: Tobias Ringstrom L: netdev@vger.kernel.org -S: Maintained +S: Orphan F: Documentation/networking/dmfe.txt F: drivers/net/tulip/dmfe.c @@ -2245,10 +2251,10 @@ F: drivers/gpu/drm/ F: include/drm/ INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets) -M: Chris Wilson +M: Keith Packard L: intel-gfx@lists.freedesktop.org (subscribers-only) L: dri-devel@lists.freedesktop.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ickle/drm-intel.git +T: git git://git.kernel.org/pub/scm/linux/kernel/git/keithp/linux-2.6.git S: Supported F: drivers/gpu/drm/i915 F: include/drm/i915* @@ -3591,10 +3597,9 @@ F: Documentation/hwmon/k8temp F: drivers/hwmon/k8temp.c KCONFIG -M: Roman Zippel +M: Michal Marek L: linux-kbuild@vger.kernel.org -Q: http://patchwork.kernel.org/project/linux-kbuild/list/ -S: Maintained +S: Odd Fixes F: Documentation/kbuild/kconfig-language.txt F: scripts/kconfig/ @@ -3898,7 +3903,6 @@ F: drivers/*/*/*pasemi* LINUX SECURITY MODULE (LSM) FRAMEWORK M: Chris Wright L: linux-security-module@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/chrisw/lsm-2.6.git S: Supported LIS3LV02D ACCELEROMETER DRIVER @@ -4253,7 +4257,7 @@ F: include/linux/isicom.h MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER M: Felipe Balbi L: linux-usb@vger.kernel.org -T: git git://gitorious.org/usb/usb.git +T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git S: Maintained F: drivers/usb/musb/ @@ -4588,6 +4592,7 @@ M: Felipe Balbi M: David Brownell L: linux-usb@vger.kernel.org L: linux-omap@vger.kernel.org +T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git S: Maintained F: drivers/usb/*/*omap* F: arch/arm/*omap*/usb* @@ -5591,10 +5596,11 @@ M: James Morris M: Eric Paris L: selinux@tycho.nsa.gov (subscribers-only, general discussion) W: http://selinuxproject.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git +T: git git://git.infradead.org/users/eparis/selinux.git S: Supported F: include/linux/selinux* F: security/selinux/ +F: scripts/selinux/ APPARMOR SECURITY MODULE M: John Johansen @@ -6794,6 +6800,13 @@ L: lm-sensors@lm-sensors.org S: Maintained F: drivers/hwmon/vt8231.c +VUB300 USB to SDIO/SD/MMC bridge chip +M: Tony Olech +L: linux-mmc@vger.kernel.org +L: linux-usb@vger.kernel.org +S: Supported +F: drivers/mmc/host/vub300.c + W1 DALLAS'S 1-WIRE BUS M: Evgeniy Polyakov S: Maintained diff --git a/trunk/Makefile b/trunk/Makefile index a0344a81a893..529d93fa2430 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -103,7 +103,7 @@ ifeq ("$(origin O)", "command line") endif ifeq ("$(origin W)", "command line") - export KBUILD_ENABLE_EXTRA_GCC_CHECKS := 1 + export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W) endif # That's our default target when none is given on the command line @@ -220,6 +220,14 @@ ifeq ($(ARCH),sh64) SRCARCH := sh endif +# Additional ARCH settings for tile +ifeq ($(ARCH),tilepro) + SRCARCH := tile +endif +ifeq ($(ARCH),tilegx) + SRCARCH := tile +endif + # Where to locate arch specific headers hdr-arch := $(SRCARCH) @@ -349,7 +357,8 @@ CFLAGS_GCOV = -fprofile-arcs -ftest-coverage # Use LINUXINCLUDE when you must reference the include/ directory. # Needed to be compatible with the O= option -LINUXINCLUDE := -I$(srctree)/arch/$(hdr-arch)/include -Iinclude \ +LINUXINCLUDE := -I$(srctree)/arch/$(hdr-arch)/include \ + -Iarch/$(hdr-arch)/include/generated -Iinclude \ $(if $(KBUILD_SRC), -I$(srctree)/include) \ -include include/generated/autoconf.h @@ -382,6 +391,7 @@ export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL +export KBUILD_ARFLAGS # When compiling out-of-tree modules, put MODVERDIR in the module # tree rather than in the kernel tree. The kernel tree might @@ -416,6 +426,12 @@ ifneq ($(KBUILD_SRC),) $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL) endif +# Support for using generic headers in asm-generic +PHONY += asm-generic +asm-generic: + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.asm-generic \ + obj=arch/$(SRCARCH)/include/generated/asm + # To make sure we do not include .config for any of the *config targets # catch them early, and hand them over to scripts/kconfig/Makefile # It is allowed to specify more targets when calling make, including @@ -559,6 +575,10 @@ ifndef CONFIG_CC_STACKPROTECTOR KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) endif +# This warning generated too much noise in a regular build. +# Use make W=1 to enable this warning (see scripts/Makefile.build) +KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable) + ifdef CONFIG_FRAME_POINTER KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls else @@ -604,7 +624,7 @@ CHECKFLAGS += $(NOSTDINC_FLAGS) KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,) # disable pointer signed / unsigned warnings in gcc 4.0 -KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,) +KBUILD_CFLAGS += $(call cc-disable-warning, pointer-sign) # disable invalid "can't wrap" optimizations for signed / pointers KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow) @@ -612,6 +632,9 @@ KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow) # conserve stack if available KBUILD_CFLAGS += $(call cc-option,-fconserve-stack) +# use the deterministic mode of AR if available +KBUILD_ARFLAGS := $(call ar-option,D) + # check for 'asm goto' ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y) KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO @@ -797,15 +820,17 @@ ifdef CONFIG_KALLSYMS # o The correct .tmp_kallsyms2.o is linked into the final vmlinux. # o Verify that the System.map from vmlinux matches the map from # .tmp_vmlinux2, just in case we did not generate kallsyms correctly. -# o If CONFIG_KALLSYMS_EXTRA_PASS is set, do an extra pass using +# o If 'make KALLSYMS_EXTRA_PASS=1" was used, do an extra pass using # .tmp_vmlinux3 and .tmp_kallsyms3.o. This is only meant as a # temporary bypass to allow the kernel to be built while the # maintainers work out what went wrong with kallsyms. -ifdef CONFIG_KALLSYMS_EXTRA_PASS -last_kallsyms := 3 -else last_kallsyms := 2 + +ifdef KALLSYMS_EXTRA_PASS +ifneq ($(KALLSYMS_EXTRA_PASS),0) +last_kallsyms := 3 +endif endif kallsyms.o := .tmp_kallsyms$(last_kallsyms).o @@ -816,7 +841,8 @@ define verify_kallsyms $(cmd_sysmap) .tmp_vmlinux$(last_kallsyms) .tmp_System.map $(Q)cmp -s System.map .tmp_System.map || \ (echo Inconsistent kallsyms data; \ - echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; \ + echo This is a bug - please report about it; \ + echo Try "make KALLSYMS_EXTRA_PASS=1" as a workaround; \ rm .tmp_kallsyms* ; /bin/false ) endef @@ -947,7 +973,7 @@ ifneq ($(KBUILD_SRC),) endif # prepare2 creates a makefile if using a separate output directory -prepare2: prepare3 outputmakefile +prepare2: prepare3 outputmakefile asm-generic prepare1: prepare2 include/linux/version.h include/generated/utsrelease.h \ include/config/auto.conf @@ -991,7 +1017,8 @@ include/generated/utsrelease.h: include/config/kernel.release FORCE PHONY += headerdep headerdep: - $(Q)find include/ -name '*.h' | xargs --max-args 1 scripts/headerdep.pl + $(Q)find $(srctree)/include/ -name '*.h' | xargs --max-args 1 \ + $(srctree)/scripts/headerdep.pl -I$(srctree)/include # --------------------------------------------------------------------------- @@ -1021,7 +1048,7 @@ hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm) PHONY += __headers -__headers: include/linux/version.h scripts_basic FORCE +__headers: include/linux/version.h scripts_basic asm-generic FORCE $(Q)$(MAKE) $(build)=scripts build_unifdef PHONY += headers_install_all @@ -1136,7 +1163,8 @@ CLEAN_FILES += vmlinux System.map \ .tmp_kallsyms* .tmp_version .tmp_vmlinux* .tmp_System.map # Directories & files removed with 'make mrproper' -MRPROPER_DIRS += include/config usr/include include/generated +MRPROPER_DIRS += include/config usr/include include/generated \ + arch/*/include/generated MRPROPER_FILES += .config .config.old .version .old_version \ include/linux/version.h \ Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS @@ -1267,7 +1295,11 @@ help: @echo ' make O=dir [targets] Locate all output files in "dir", including .config' @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' @echo ' make C=2 [targets] Force check of all c source with $$CHECK' - @echo ' make W=1 [targets] Enable extra gcc checks' + @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where' + @echo ' 1: warnings which may be relevant and do not occur too often' + @echo ' 2: warnings which occur quite often but may still be relevant' + @echo ' 3: more obscure warnings, can most likely be ignored' + @echo ' Multiple levels can be combined with W=12 or W=123' @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections' @echo '' @echo 'Execute "make" or "make all" to build all targets marked with [*] ' @@ -1291,6 +1323,7 @@ $(help-board-dirs): help-%: # Documentation targets # --------------------------------------------------------------------------- %docs: scripts_basic FORCE + $(Q)$(MAKE) $(build)=scripts build_docproc $(Q)$(MAKE) $(build)=Documentation/DocBook $@ else # KBUILD_EXTMOD @@ -1375,7 +1408,7 @@ endif # KBUILD_EXTMOD clean: $(clean-dirs) $(call cmd,rmdirs) $(call cmd,rmfiles) - @find $(or $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ + @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ -o -name '*.symtypes' -o -name 'modules.order' \ @@ -1393,13 +1426,15 @@ tags TAGS cscope gtags: FORCE # Scripts to check various things for consistency # --------------------------------------------------------------------------- +PHONY += includecheck versioncheck coccicheck namespacecheck export_report + includecheck: - find * $(RCS_FIND_IGNORE) \ + find $(srctree)/* $(RCS_FIND_IGNORE) \ -name '*.[hcS]' -type f -print | sort \ | xargs $(PERL) -w $(srctree)/scripts/checkincludes.pl versioncheck: - find * $(RCS_FIND_IGNORE) \ + find $(srctree)/* $(RCS_FIND_IGNORE) \ -name '*.[hcS]' -type f -print | sort \ | xargs $(PERL) -w $(srctree)/scripts/checkversion.pl diff --git a/trunk/arch/Kconfig b/trunk/arch/Kconfig index 8d24bacaa61e..26b0e2397a57 100644 --- a/trunk/arch/Kconfig +++ b/trunk/arch/Kconfig @@ -175,4 +175,7 @@ config HAVE_ARCH_JUMP_LABEL config HAVE_ARCH_MUTEX_CPU_RELAX bool +config HAVE_RCU_TABLE_FREE + bool + source "kernel/gcov/Kconfig" diff --git a/trunk/arch/alpha/Kconfig b/trunk/arch/alpha/Kconfig index 9808998cc073..e3a82775f9da 100644 --- a/trunk/arch/alpha/Kconfig +++ b/trunk/arch/alpha/Kconfig @@ -12,6 +12,7 @@ config ALPHA select GENERIC_IRQ_PROBE select AUTO_IRQ_AFFINITY if SMP select GENERIC_IRQ_SHOW + select ARCH_WANT_OPTIONAL_GPIOLIB help The Alpha is a 64-bit general-purpose processor designed and marketed by the Digital Equipment Corporation of blessed memory, @@ -51,6 +52,9 @@ config GENERIC_CALIBRATE_DELAY config GENERIC_CMOS_UPDATE def_bool y +config GENERIC_GPIO + def_bool y + config ZONE_DMA bool default y diff --git a/trunk/arch/alpha/include/asm/gpio.h b/trunk/arch/alpha/include/asm/gpio.h new file mode 100644 index 000000000000..7dc6a6343c06 --- /dev/null +++ b/trunk/arch/alpha/include/asm/gpio.h @@ -0,0 +1,55 @@ +/* + * Generic GPIO API implementation for Alpha. + * + * A stright copy of that for PowerPC which was: + * + * Copyright (c) 2007-2008 MontaVista Software, Inc. + * + * Author: Anton Vorontsov + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#ifndef _ASM_ALPHA_GPIO_H +#define _ASM_ALPHA_GPIO_H + +#include +#include + +#ifdef CONFIG_GPIOLIB + +/* + * We don't (yet) implement inlined/rapid versions for on-chip gpios. + * Just call gpiolib. + */ +static inline int gpio_get_value(unsigned int gpio) +{ + return __gpio_get_value(gpio); +} + +static inline void gpio_set_value(unsigned int gpio, int value) +{ + __gpio_set_value(gpio, value); +} + +static inline int gpio_cansleep(unsigned int gpio) +{ + return __gpio_cansleep(gpio); +} + +static inline int gpio_to_irq(unsigned int gpio) +{ + return __gpio_to_irq(gpio); +} + +static inline int irq_to_gpio(unsigned int irq) +{ + return -EINVAL; +} + +#endif /* CONFIG_GPIOLIB */ + +#endif /* _ASM_ALPHA_GPIO_H */ diff --git a/trunk/arch/alpha/include/asm/smp.h b/trunk/arch/alpha/include/asm/smp.h index 3f390e8cc0b3..c46e714aa3e0 100644 --- a/trunk/arch/alpha/include/asm/smp.h +++ b/trunk/arch/alpha/include/asm/smp.h @@ -39,8 +39,6 @@ struct cpuinfo_alpha { extern struct cpuinfo_alpha cpu_data[NR_CPUS]; -#define PROC_CHANGE_PENALTY 20 - #define hard_smp_processor_id() __hard_smp_processor_id() #define raw_smp_processor_id() (current_thread_info()->cpu) diff --git a/trunk/arch/alpha/kernel/process.c b/trunk/arch/alpha/kernel/process.c index 3ec35066f1dc..838eac128409 100644 --- a/trunk/arch/alpha/kernel/process.c +++ b/trunk/arch/alpha/kernel/process.c @@ -121,7 +121,7 @@ common_shutdown_1(void *generic_ptr) /* Wait for the secondaries to halt. */ set_cpu_present(boot_cpuid, false); set_cpu_possible(boot_cpuid, false); - while (cpus_weight(cpu_present_map)) + while (cpumask_weight(cpu_present_mask)) barrier(); #endif diff --git a/trunk/arch/alpha/kernel/setup.c b/trunk/arch/alpha/kernel/setup.c index edbddcbd5bc6..cc0fd862cf26 100644 --- a/trunk/arch/alpha/kernel/setup.c +++ b/trunk/arch/alpha/kernel/setup.c @@ -1257,7 +1257,7 @@ show_cpuinfo(struct seq_file *f, void *slot) #ifdef CONFIG_SMP seq_printf(f, "cpus active\t\t: %u\n" "cpu active mask\t\t: %016lx\n", - num_online_cpus(), cpus_addr(cpu_possible_map)[0]); + num_online_cpus(), cpumask_bits(cpu_possible_mask)[0]); #endif show_cache_size (f, "L1 Icache", alpha_l1i_cacheshape); diff --git a/trunk/arch/alpha/kernel/smp.c b/trunk/arch/alpha/kernel/smp.c index 5a621c6d22ab..d739703608fc 100644 --- a/trunk/arch/alpha/kernel/smp.c +++ b/trunk/arch/alpha/kernel/smp.c @@ -451,7 +451,7 @@ setup_smp(void) } printk(KERN_INFO "SMP: %d CPUs probed -- cpu_present_map = %lx\n", - smp_num_probed, cpu_present_map.bits[0]); + smp_num_probed, cpumask_bits(cpu_present_mask)[0]); } /* @@ -629,8 +629,9 @@ smp_send_reschedule(int cpu) void smp_send_stop(void) { - cpumask_t to_whom = cpu_possible_map; - cpu_clear(smp_processor_id(), to_whom); + cpumask_t to_whom; + cpumask_copy(&to_whom, cpu_possible_mask); + cpumask_clear_cpu(smp_processor_id(), &to_whom); #ifdef DEBUG_IPI_MSG if (hard_smp_processor_id() != boot_cpu_id) printk(KERN_WARNING "smp_send_stop: Not on boot cpu.\n"); diff --git a/trunk/arch/alpha/kernel/sys_dp264.c b/trunk/arch/alpha/kernel/sys_dp264.c index 5ac00fd4cd0c..f8856829c22a 100644 --- a/trunk/arch/alpha/kernel/sys_dp264.c +++ b/trunk/arch/alpha/kernel/sys_dp264.c @@ -140,7 +140,7 @@ cpu_set_irq_affinity(unsigned int irq, cpumask_t affinity) for (cpu = 0; cpu < 4; cpu++) { unsigned long aff = cpu_irq_affinity[cpu]; - if (cpu_isset(cpu, affinity)) + if (cpumask_test_cpu(cpu, &affinity)) aff |= 1UL << irq; else aff &= ~(1UL << irq); diff --git a/trunk/arch/alpha/kernel/sys_titan.c b/trunk/arch/alpha/kernel/sys_titan.c index fea0e4620994..6994407e242a 100644 --- a/trunk/arch/alpha/kernel/sys_titan.c +++ b/trunk/arch/alpha/kernel/sys_titan.c @@ -65,10 +65,11 @@ titan_update_irq_hw(unsigned long mask) register int bcpu = boot_cpuid; #ifdef CONFIG_SMP - cpumask_t cpm = cpu_present_map; + cpumask_t cpm; volatile unsigned long *dim0, *dim1, *dim2, *dim3; unsigned long mask0, mask1, mask2, mask3, dummy; + cpumask_copy(&cpm, cpu_present_mask); mask &= ~isa_enable; mask0 = mask & titan_cpu_irq_affinity[0]; mask1 = mask & titan_cpu_irq_affinity[1]; @@ -84,10 +85,10 @@ titan_update_irq_hw(unsigned long mask) dim1 = &cchip->dim1.csr; dim2 = &cchip->dim2.csr; dim3 = &cchip->dim3.csr; - if (!cpu_isset(0, cpm)) dim0 = &dummy; - if (!cpu_isset(1, cpm)) dim1 = &dummy; - if (!cpu_isset(2, cpm)) dim2 = &dummy; - if (!cpu_isset(3, cpm)) dim3 = &dummy; + if (!cpumask_test_cpu(0, &cpm)) dim0 = &dummy; + if (!cpumask_test_cpu(1, &cpm)) dim1 = &dummy; + if (!cpumask_test_cpu(2, &cpm)) dim2 = &dummy; + if (!cpumask_test_cpu(3, &cpm)) dim3 = &dummy; *dim0 = mask0; *dim1 = mask1; @@ -137,7 +138,7 @@ titan_cpu_set_irq_affinity(unsigned int irq, cpumask_t affinity) int cpu; for (cpu = 0; cpu < 4; cpu++) { - if (cpu_isset(cpu, affinity)) + if (cpumask_test_cpu(cpu, &affinity)) titan_cpu_irq_affinity[cpu] |= 1UL << irq; else titan_cpu_irq_affinity[cpu] &= ~(1UL << irq); diff --git a/trunk/arch/alpha/kernel/vmlinux.lds.S b/trunk/arch/alpha/kernel/vmlinux.lds.S index 3d890a98a08b..f937ad123852 100644 --- a/trunk/arch/alpha/kernel/vmlinux.lds.S +++ b/trunk/arch/alpha/kernel/vmlinux.lds.S @@ -39,7 +39,7 @@ SECTIONS __init_begin = ALIGN(PAGE_SIZE); INIT_TEXT_SECTION(PAGE_SIZE) INIT_DATA_SECTION(16) - PERCPU(L1_CACHE_BYTES, PAGE_SIZE) + PERCPU_SECTION(L1_CACHE_BYTES) /* Align to THREAD_SIZE rather than PAGE_SIZE here so any padding page needed for the THREAD_SIZE aligned init_task gets freed after init */ . = ALIGN(THREAD_SIZE); diff --git a/trunk/arch/alpha/mm/init.c b/trunk/arch/alpha/mm/init.c index 86425ab53bf5..69d0c5761e2f 100644 --- a/trunk/arch/alpha/mm/init.c +++ b/trunk/arch/alpha/mm/init.c @@ -32,8 +32,6 @@ #include #include -DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); - extern void die_if_kernel(char *,struct pt_regs *,long); static struct pcb_struct original_pcb; diff --git a/trunk/arch/alpha/mm/numa.c b/trunk/arch/alpha/mm/numa.c index 7b2c56d8f930..3973ae395772 100644 --- a/trunk/arch/alpha/mm/numa.c +++ b/trunk/arch/alpha/mm/numa.c @@ -313,6 +313,7 @@ void __init paging_init(void) zones_size[ZONE_DMA] = dma_local_pfn; zones_size[ZONE_NORMAL] = (end_pfn - start_pfn) - dma_local_pfn; } + node_set_state(nid, N_NORMAL_MEMORY); free_area_init_node(nid, zones_size, start_pfn, NULL); } diff --git a/trunk/arch/arm/Kconfig b/trunk/arch/arm/Kconfig index 377a7a595b08..7275009686e6 100644 --- a/trunk/arch/arm/Kconfig +++ b/trunk/arch/arm/Kconfig @@ -197,15 +197,21 @@ config ARM_PATCH_PHYS_VIRT depends on !XIP_KERNEL && MMU depends on !ARCH_REALVIEW || !SPARSEMEM help - Patch phys-to-virt translation functions at runtime according to - the position of the kernel in system memory. + Patch phys-to-virt and virt-to-phys translation functions at + boot and module load time according to the position of the + kernel in system memory. - This can only be used with non-XIP with MMU kernels where - the base of physical memory is at a 16MB boundary. + This can only be used with non-XIP MMU kernels where the base + of physical memory is at a 16MB boundary, or theoretically 64K + for the MSM machine class. config ARM_PATCH_PHYS_VIRT_16BIT def_bool y depends on ARM_PATCH_PHYS_VIRT && ARCH_MSM + help + This option extends the physical to virtual translation patching + to allow physical memory down to a theoretical minimum of 64K + boundaries. source "init/Kconfig" @@ -297,6 +303,7 @@ config ARCH_BCMRING depends on MMU select CPU_V6 select ARM_AMBA + select ARM_TIMER_SP804 select CLKDEV_LOOKUP select GENERIC_CLOCKEVENTS select ARCH_WANT_OPTIONAL_GPIOLIB @@ -366,6 +373,7 @@ config ARCH_MXC select GENERIC_CLOCKEVENTS select ARCH_REQUIRE_GPIOLIB select CLKDEV_LOOKUP + select CLKSRC_MMIO select HAVE_SCHED_CLOCK help Support for Freescale MXC/iMX-based family of processors @@ -375,21 +383,13 @@ config ARCH_MXS select GENERIC_CLOCKEVENTS select ARCH_REQUIRE_GPIOLIB select CLKDEV_LOOKUP + select CLKSRC_MMIO help Support for Freescale MXS-based family of processors -config ARCH_STMP3XXX - bool "Freescale STMP3xxx" - select CPU_ARM926T - select CLKDEV_LOOKUP - select ARCH_REQUIRE_GPIOLIB - select GENERIC_CLOCKEVENTS - select USB_ARCH_HAS_EHCI - help - Support for systems based on the Freescale 3xxx CPUs. - config ARCH_NETX bool "Hilscher NetX based" + select CLKSRC_MMIO select CPU_ARM926T select ARM_VIC select GENERIC_CLOCKEVENTS @@ -457,6 +457,7 @@ config ARCH_IXP2000 config ARCH_IXP4XX bool "IXP4xx-based" depends on MMU + select CLKSRC_MMIO select CPU_XSCALE select GENERIC_GPIO select GENERIC_CLOCKEVENTS @@ -468,7 +469,7 @@ config ARCH_IXP4XX config ARCH_DOVE bool "Marvell Dove" - select CPU_V6K + select CPU_V7 select PCI select ARCH_REQUIRE_GPIOLIB select GENERIC_CLOCKEVENTS @@ -497,6 +498,7 @@ config ARCH_LOKI config ARCH_LPC32XX bool "NXP LPC32XX" + select CLKSRC_MMIO select CPU_ARM926T select ARCH_REQUIRE_GPIOLIB select HAVE_IDE @@ -554,23 +556,12 @@ config ARCH_KS8695 Support for Micrel/Kendin KS8695 "Centaur" (ARM922T) based System-on-Chip devices. -config ARCH_NS9XXX - bool "NetSilicon NS9xxx" - select CPU_ARM926T - select GENERIC_GPIO - select GENERIC_CLOCKEVENTS - select HAVE_CLK - help - Say Y here if you intend to run this kernel on a NetSilicon NS9xxx - System. - - - config ARCH_W90X900 bool "Nuvoton W90X900 CPU" select CPU_ARM926T select ARCH_REQUIRE_GPIOLIB select CLKDEV_LOOKUP + select CLKSRC_MMIO select GENERIC_CLOCKEVENTS help Support for Nuvoton (Winbond logic dept.) ARM9 processor, @@ -592,6 +583,7 @@ config ARCH_NUC93X config ARCH_TEGRA bool "NVIDIA Tegra" select CLKDEV_LOOKUP + select CLKSRC_MMIO select GENERIC_TIME select GENERIC_CLOCKEVENTS select GENERIC_GPIO @@ -617,6 +609,7 @@ config ARCH_PXA select ARCH_MTD_XIP select ARCH_HAS_CPUFREQ select CLKDEV_LOOKUP + select CLKSRC_MMIO select ARCH_REQUIRE_GPIOLIB select GENERIC_CLOCKEVENTS select HAVE_SCHED_CLOCK @@ -667,6 +660,7 @@ config ARCH_RPC config ARCH_SA1100 bool "SA1100-based" + select CLKSRC_MMIO select CPU_SA1100 select ISA select ARCH_SPARSEMEM_ENABLE @@ -803,6 +797,7 @@ config ARCH_SHARK config ARCH_TCC_926 bool "Telechips TCC ARM926-based systems" + select CLKSRC_MMIO select CPU_ARM926T select HAVE_CLK select CLKDEV_LOOKUP @@ -813,6 +808,7 @@ config ARCH_TCC_926 config ARCH_U300 bool "ST-Ericsson U300 Series" depends on MMU + select CLKSRC_MMIO select CPU_ARM926T select HAVE_SCHED_CLOCK select HAVE_TCM @@ -854,6 +850,7 @@ config ARCH_DAVINCI select HAVE_IDE select CLKDEV_LOOKUP select GENERIC_ALLOCATOR + select GENERIC_IRQ_CHIP select ARCH_HAS_HOLES_MEMORYMODEL help Support for TI's DaVinci platform. @@ -874,6 +871,7 @@ config PLAT_SPEAR select ARM_AMBA select ARCH_REQUIRE_GPIOLIB select CLKDEV_LOOKUP + select CLKSRC_MMIO select GENERIC_CLOCKEVENTS select HAVE_CLK help @@ -951,8 +949,6 @@ source "arch/arm/mach-netx/Kconfig" source "arch/arm/mach-nomadik/Kconfig" source "arch/arm/plat-nomadik/Kconfig" -source "arch/arm/mach-ns9xxx/Kconfig" - source "arch/arm/mach-nuc93x/Kconfig" source "arch/arm/plat-omap/Kconfig" @@ -1005,8 +1001,6 @@ source "arch/arm/mach-exynos4/Kconfig" source "arch/arm/mach-shmobile/Kconfig" -source "arch/arm/plat-stmp3xxx/Kconfig" - source "arch/arm/mach-tegra/Kconfig" source "arch/arm/mach-u300/Kconfig" @@ -1033,6 +1027,8 @@ config PLAT_IOP config PLAT_ORION bool + select CLKSRC_MMIO + select GENERIC_IRQ_CHIP select HAVE_SCHED_CLOCK config PLAT_PXA @@ -1043,6 +1039,7 @@ config PLAT_VERSATILE config ARM_TIMER_SP804 bool + select CLKSRC_MMIO source arch/arm/mm/Kconfig @@ -1318,8 +1315,7 @@ menu "Kernel Features" source "kernel/time/Kconfig" config SMP - bool "Symmetric Multi-Processing (EXPERIMENTAL)" - depends on EXPERIMENTAL + bool "Symmetric Multi-Processing" depends on CPU_V6K || CPU_V7 depends on GENERIC_CLOCKEVENTS depends on REALVIEW_EB_ARM11MP || REALVIEW_EB_A9MP || \ @@ -1521,8 +1517,8 @@ config ARCH_SELECT_MEMORY_MODEL def_bool ARCH_SPARSEMEM_ENABLE config HIGHMEM - bool "High Memory Support (EXPERIMENTAL)" - depends on MMU && EXPERIMENTAL + bool "High Memory Support" + depends on MMU help The address space of ARM processors is only 4 Gigabytes large and it has to accommodate user address space, kernel address @@ -1742,16 +1738,31 @@ config CMDLINE time by entering them here. As a minimum, you should specify the memory size and the root device (e.g., mem=64M root=/dev/nfs). +choice + prompt "Kernel command line type" if CMDLINE != "" + default CMDLINE_FROM_BOOTLOADER + +config CMDLINE_FROM_BOOTLOADER + bool "Use bootloader kernel arguments if available" + help + Uses the command-line options passed by the boot loader. If + the boot loader doesn't provide any, the default kernel command + string provided in CMDLINE will be used. + +config CMDLINE_EXTEND + bool "Extend bootloader kernel arguments" + help + The command-line arguments provided by the boot loader will be + appended to the default kernel command string. + config CMDLINE_FORCE bool "Always use the default kernel command string" - depends on CMDLINE != "" help Always use the default kernel command string, even if the boot loader passes other arguments to the kernel. This is useful if you cannot or don't want to change the command-line options your boot loader passes to the kernel. - - If unsure, say N. +endchoice config XIP_KERNEL bool "Kernel Execute-In-Place from ROM" @@ -2010,7 +2021,7 @@ menu "Power management options" source "kernel/power/Kconfig" config ARCH_SUSPEND_POSSIBLE - depends on !ARCH_S5P64X0 && !ARCH_S5P6442 + depends on !ARCH_S5P64X0 && !ARCH_S5P6442 && !ARCH_S5PC100 depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \ CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE def_bool y diff --git a/trunk/arch/arm/Kconfig.debug b/trunk/arch/arm/Kconfig.debug index 03d01d783e3b..81cbe40c159c 100644 --- a/trunk/arch/arm/Kconfig.debug +++ b/trunk/arch/arm/Kconfig.debug @@ -63,13 +63,6 @@ config DEBUG_USER 8 - SIGSEGV faults 16 - SIGBUS faults -config DEBUG_STACK_USAGE - bool "Enable stack utilization instrumentation" - depends on DEBUG_KERNEL - help - Enables the display of the minimum amount of free stack which each - task has ever had available in the sysrq-T output. - # These options are only for real kernel hackers who want to get their hands dirty. config DEBUG_LL bool "Kernel low-level debugging functions" diff --git a/trunk/arch/arm/Makefile b/trunk/arch/arm/Makefile index c7d321a3d95d..25750bcb3397 100644 --- a/trunk/arch/arm/Makefile +++ b/trunk/arch/arm/Makefile @@ -158,13 +158,11 @@ machine-$(CONFIG_ARCH_MV78XX0) := mv78xx0 machine-$(CONFIG_ARCH_MX1) := imx machine-$(CONFIG_ARCH_MX2) := imx machine-$(CONFIG_ARCH_MX25) := imx -machine-$(CONFIG_ARCH_MX3) := mx3 +machine-$(CONFIG_ARCH_MX3) := imx machine-$(CONFIG_ARCH_MX5) := mx5 -machine-$(CONFIG_ARCH_MXC91231) := mxc91231 machine-$(CONFIG_ARCH_MXS) := mxs machine-$(CONFIG_ARCH_NETX) := netx machine-$(CONFIG_ARCH_NOMADIK) := nomadik -machine-$(CONFIG_ARCH_NS9XXX) := ns9xxx machine-$(CONFIG_ARCH_OMAP1) := omap1 machine-$(CONFIG_ARCH_OMAP2) := omap2 machine-$(CONFIG_ARCH_OMAP3) := omap2 @@ -185,8 +183,6 @@ machine-$(CONFIG_ARCH_EXYNOS4) := exynos4 machine-$(CONFIG_ARCH_SA1100) := sa1100 machine-$(CONFIG_ARCH_SHARK) := shark machine-$(CONFIG_ARCH_SHMOBILE) := shmobile -machine-$(CONFIG_ARCH_STMP378X) := stmp378x -machine-$(CONFIG_ARCH_STMP37XX) := stmp37xx machine-$(CONFIG_ARCH_TCC8K) := tcc8k machine-$(CONFIG_ARCH_TEGRA) := tegra machine-$(CONFIG_ARCH_U300) := u300 @@ -207,7 +203,6 @@ machine-$(CONFIG_MACH_SPEAR600) := spear6xx plat-$(CONFIG_ARCH_MXC) := mxc plat-$(CONFIG_ARCH_OMAP) := omap plat-$(CONFIG_ARCH_S3C64XX) := samsung -plat-$(CONFIG_ARCH_STMP3XXX) := stmp3xxx plat-$(CONFIG_ARCH_TCC_926) := tcc plat-$(CONFIG_PLAT_IOP) := iop plat-$(CONFIG_PLAT_NOMADIK) := nomadik diff --git a/trunk/arch/arm/boot/compressed/Makefile b/trunk/arch/arm/boot/compressed/Makefile index 0c6852d93506..23aad0722303 100644 --- a/trunk/arch/arm/boot/compressed/Makefile +++ b/trunk/arch/arm/boot/compressed/Makefile @@ -98,8 +98,6 @@ endif ccflags-y := -fpic -fno-builtin asflags-y := -Wa,-march=all -# Provide size of uncompressed kernel to the decompressor via a linker symbol. -LDFLAGS_vmlinux = --defsym _image_size=$(shell stat -c "%s" $(obj)/../Image) # Supply ZRELADDR to the decompressor via a linker symbol. ifneq ($(CONFIG_AUTO_ZRELADDR),y) LDFLAGS_vmlinux += --defsym zreladdr=$(ZRELADDR) @@ -122,10 +120,23 @@ lib1funcs = $(obj)/lib1funcs.o $(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S FORCE $(call cmd,shipped) +# We need to prevent any GOTOFF relocs being used with references +# to symbols in the .bss section since we cannot relocate them +# independently from the rest at run time. This can be achieved by +# ensuring that no private .bss symbols exist, as global symbols +# always have a GOT entry which is what we need. +# The .data section is already discarded by the linker script so no need +# to bother about it here. +check_for_bad_syms = \ +bad_syms=$$($(CROSS_COMPILE)nm $@ | sed -n 's/^.\{8\} [bc] \(.*\)/\1/p') && \ +[ -z "$$bad_syms" ] || \ + ( echo "following symbols must have non local/private scope:" >&2; \ + echo "$$bad_syms" >&2; rm -f $@; false ) + $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \ $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) FORCE $(call if_changed,ld) - @: + @$(check_for_bad_syms) $(obj)/piggy.$(suffix_y): $(obj)/../Image FORCE $(call if_changed,$(suffix_y)) diff --git a/trunk/arch/arm/boot/compressed/decompress.c b/trunk/arch/arm/boot/compressed/decompress.c index 4c72a97bc3e1..07be5a2f8302 100644 --- a/trunk/arch/arm/boot/compressed/decompress.c +++ b/trunk/arch/arm/boot/compressed/decompress.c @@ -44,7 +44,7 @@ extern void error(char *); #include "../../../../lib/decompress_unlzma.c" #endif -void do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x)) +int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x)) { - decompress(input, len, NULL, NULL, output, NULL, error); + return decompress(input, len, NULL, NULL, output, NULL, error); } diff --git a/trunk/arch/arm/boot/compressed/head.S b/trunk/arch/arm/boot/compressed/head.S index 49f5b2eaaa87..f9da41921c52 100644 --- a/trunk/arch/arm/boot/compressed/head.S +++ b/trunk/arch/arm/boot/compressed/head.S @@ -179,7 +179,7 @@ not_angel: bl cache_on restart: adr r0, LC0 - ldmia r0, {r1, r2, r3, r6, r9, r11, r12} + ldmia r0, {r1, r2, r3, r6, r10, r11, r12} ldr sp, [r0, #28] /* @@ -188,6 +188,20 @@ restart: adr r0, LC0 */ sub r0, r0, r1 @ calculate the delta offset add r6, r6, r0 @ _edata + add r10, r10, r0 @ inflated kernel size location + + /* + * The kernel build system appends the size of the + * decompressed kernel at the end of the compressed data + * in little-endian form. + */ + ldrb r9, [r10, #0] + ldrb lr, [r10, #1] + orr r9, r9, lr, lsl #8 + ldrb lr, [r10, #2] + ldrb r10, [r10, #3] + orr r9, r9, lr, lsl #16 + orr r9, r9, r10, lsl #24 #ifndef CONFIG_ZBOOT_ROM /* malloc space is above the relocated stack (64k max) */ @@ -347,10 +361,10 @@ LC0: .word LC0 @ r1 .word __bss_start @ r2 .word _end @ r3 .word _edata @ r6 - .word _image_size @ r9 + .word input_data_end - 4 @ r10 (inflated size location) .word _got_start @ r11 .word _got_end @ ip - .word user_stack_end @ sp + .word .L_user_stack_end @ sp .size LC0, . - LC0 #ifdef CONFIG_ARCH_RPC @@ -459,7 +473,11 @@ __setup_mmu: sub r3, r4, #16384 @ Page directory size orr r1, r1, #3 << 10 add r2, r3, #16384 1: cmp r1, r9 @ if virt > start of RAM +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + orrhs r1, r1, #0x08 @ set cacheable +#else orrhs r1, r1, #0x0c @ set cacheable, bufferable +#endif cmp r1, r10 @ if virt > end of RAM bichs r1, r1, #0x0c @ clear cacheable, bufferable str r1, [r0], #4 @ 1:1 mapping @@ -484,6 +502,12 @@ __setup_mmu: sub r3, r4, #16384 @ Page directory size mov pc, lr ENDPROC(__setup_mmu) +__arm926ejs_mmu_cache_on: +#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH + mov r0, #4 @ put dcache in WT mode + mcr p15, 7, r0, c15, c0, 0 +#endif + __armv4_mmu_cache_on: mov r12, lr #ifdef CONFIG_MMU @@ -665,6 +689,12 @@ proc_types: W(b) __armv4_mpu_cache_off W(b) __armv4_mpu_cache_flush + .word 0x41069260 @ ARM926EJ-S (v5TEJ) + .word 0xff0ffff0 + b __arm926ejs_mmu_cache_on + b __armv4_mmu_cache_off + b __armv5tej_mmu_cache_flush + .word 0x00007000 @ ARM7 IDs .word 0x0000f000 mov pc, lr @@ -747,12 +777,6 @@ proc_types: W(b) __armv4_mmu_cache_off W(b) __armv6_mmu_cache_flush - .word 0x560f5810 @ Marvell PJ4 ARMv6 - .word 0xff0ffff0 - W(b) __armv4_mmu_cache_on - W(b) __armv4_mmu_cache_off - W(b) __armv6_mmu_cache_flush - .word 0x000f0000 @ new CPU Id .word 0x000f0000 W(b) __armv7_mmu_cache_on @@ -1078,5 +1102,5 @@ reloc_code_end: .align .section ".stack", "aw", %nobits -user_stack: .space 4096 -user_stack_end: +.L_user_stack: .space 4096 +.L_user_stack_end: diff --git a/trunk/arch/arm/boot/compressed/misc.c b/trunk/arch/arm/boot/compressed/misc.c index 2df38263124c..832d37236c59 100644 --- a/trunk/arch/arm/boot/compressed/misc.c +++ b/trunk/arch/arm/boot/compressed/misc.c @@ -26,8 +26,6 @@ unsigned int __machine_arch_type; #include #include -#include - static void putstr(const char *ptr); extern void error(char *x); @@ -139,13 +137,12 @@ void *memcpy(void *__dest, __const void *__src, size_t __n) } /* - * gzip delarations + * gzip declarations */ extern char input_data[]; extern char input_data_end[]; unsigned char *output_data; -unsigned long output_ptr; unsigned long free_mem_ptr; unsigned long free_mem_end_ptr; @@ -170,15 +167,15 @@ asmlinkage void __div0(void) error("Attempting division by 0!"); } -extern void do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x)); +extern int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x)); -unsigned long +void decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p, unsigned long free_mem_ptr_end_p, int arch_id) { - unsigned char *tmp; + int ret; output_data = (unsigned char *)output_start; free_mem_ptr = free_mem_ptr_p; @@ -187,12 +184,11 @@ decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p, arch_decomp_setup(); - tmp = (unsigned char *) (((unsigned long)input_data_end) - 4); - output_ptr = get_unaligned_le32(tmp); - putstr("Uncompressing Linux..."); - do_decompress(input_data, input_data_end - input_data, - output_data, error); - putstr(" done, booting the kernel.\n"); - return output_ptr; + ret = do_decompress(input_data, input_data_end - input_data, + output_data, error); + if (ret) + error("decompressor returned an error"); + else + putstr(" done, booting the kernel.\n"); } diff --git a/trunk/arch/arm/common/gic.c b/trunk/arch/arm/common/gic.c index f70ec7dadebb..4ddd0a6ac7ff 100644 --- a/trunk/arch/arm/common/gic.c +++ b/trunk/arch/arm/common/gic.c @@ -49,7 +49,7 @@ struct gic_chip_data { * Default make them NULL. */ struct irq_chip gic_arch_extn = { - .irq_ack = NULL, + .irq_eoi = NULL, .irq_mask = NULL, .irq_unmask = NULL, .irq_retrigger = NULL, @@ -84,21 +84,12 @@ static inline unsigned int gic_irq(struct irq_data *d) /* * Routines to acknowledge, disable and enable interrupts */ -static void gic_ack_irq(struct irq_data *d) -{ - spin_lock(&irq_controller_lock); - if (gic_arch_extn.irq_ack) - gic_arch_extn.irq_ack(d); - writel(gic_irq(d), gic_cpu_base(d) + GIC_CPU_EOI); - spin_unlock(&irq_controller_lock); -} - static void gic_mask_irq(struct irq_data *d) { u32 mask = 1 << (d->irq % 32); spin_lock(&irq_controller_lock); - writel(mask, gic_dist_base(d) + GIC_DIST_ENABLE_CLEAR + (gic_irq(d) / 32) * 4); + writel_relaxed(mask, gic_dist_base(d) + GIC_DIST_ENABLE_CLEAR + (gic_irq(d) / 32) * 4); if (gic_arch_extn.irq_mask) gic_arch_extn.irq_mask(d); spin_unlock(&irq_controller_lock); @@ -111,10 +102,21 @@ static void gic_unmask_irq(struct irq_data *d) spin_lock(&irq_controller_lock); if (gic_arch_extn.irq_unmask) gic_arch_extn.irq_unmask(d); - writel(mask, gic_dist_base(d) + GIC_DIST_ENABLE_SET + (gic_irq(d) / 32) * 4); + writel_relaxed(mask, gic_dist_base(d) + GIC_DIST_ENABLE_SET + (gic_irq(d) / 32) * 4); spin_unlock(&irq_controller_lock); } +static void gic_eoi_irq(struct irq_data *d) +{ + if (gic_arch_extn.irq_eoi) { + spin_lock(&irq_controller_lock); + gic_arch_extn.irq_eoi(d); + spin_unlock(&irq_controller_lock); + } + + writel_relaxed(gic_irq(d), gic_cpu_base(d) + GIC_CPU_EOI); +} + static int gic_set_type(struct irq_data *d, unsigned int type) { void __iomem *base = gic_dist_base(d); @@ -138,7 +140,7 @@ static int gic_set_type(struct irq_data *d, unsigned int type) if (gic_arch_extn.irq_set_type) gic_arch_extn.irq_set_type(d, type); - val = readl(base + GIC_DIST_CONFIG + confoff); + val = readl_relaxed(base + GIC_DIST_CONFIG + confoff); if (type == IRQ_TYPE_LEVEL_HIGH) val &= ~confmask; else if (type == IRQ_TYPE_EDGE_RISING) @@ -148,15 +150,15 @@ static int gic_set_type(struct irq_data *d, unsigned int type) * As recommended by the spec, disable the interrupt before changing * the configuration */ - if (readl(base + GIC_DIST_ENABLE_SET + enableoff) & enablemask) { - writel(enablemask, base + GIC_DIST_ENABLE_CLEAR + enableoff); + if (readl_relaxed(base + GIC_DIST_ENABLE_SET + enableoff) & enablemask) { + writel_relaxed(enablemask, base + GIC_DIST_ENABLE_CLEAR + enableoff); enabled = true; } - writel(val, base + GIC_DIST_CONFIG + confoff); + writel_relaxed(val, base + GIC_DIST_CONFIG + confoff); if (enabled) - writel(enablemask, base + GIC_DIST_ENABLE_SET + enableoff); + writel_relaxed(enablemask, base + GIC_DIST_ENABLE_SET + enableoff); spin_unlock(&irq_controller_lock); @@ -188,8 +190,8 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val, spin_lock(&irq_controller_lock); d->node = cpu; - val = readl(reg) & ~mask; - writel(val | bit, reg); + val = readl_relaxed(reg) & ~mask; + writel_relaxed(val | bit, reg); spin_unlock(&irq_controller_lock); return 0; @@ -218,11 +220,10 @@ static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc) unsigned int cascade_irq, gic_irq; unsigned long status; - /* primary controller ack'ing */ - chip->irq_ack(&desc->irq_data); + chained_irq_enter(chip, desc); spin_lock(&irq_controller_lock); - status = readl(chip_data->cpu_base + GIC_CPU_INTACK); + status = readl_relaxed(chip_data->cpu_base + GIC_CPU_INTACK); spin_unlock(&irq_controller_lock); gic_irq = (status & 0x3ff); @@ -236,15 +237,14 @@ static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc) generic_handle_irq(cascade_irq); out: - /* primary controller unmasking */ - chip->irq_unmask(&desc->irq_data); + chained_irq_exit(chip, desc); } static struct irq_chip gic_chip = { .name = "GIC", - .irq_ack = gic_ack_irq, .irq_mask = gic_mask_irq, .irq_unmask = gic_unmask_irq, + .irq_eoi = gic_eoi_irq, .irq_set_type = gic_set_type, .irq_retrigger = gic_retrigger, #ifdef CONFIG_SMP @@ -272,13 +272,13 @@ static void __init gic_dist_init(struct gic_chip_data *gic, cpumask |= cpumask << 8; cpumask |= cpumask << 16; - writel(0, base + GIC_DIST_CTRL); + writel_relaxed(0, base + GIC_DIST_CTRL); /* * Find out how many interrupts are supported. * The GIC only supports up to 1020 interrupt sources. */ - gic_irqs = readl(base + GIC_DIST_CTR) & 0x1f; + gic_irqs = readl_relaxed(base + GIC_DIST_CTR) & 0x1f; gic_irqs = (gic_irqs + 1) * 32; if (gic_irqs > 1020) gic_irqs = 1020; @@ -287,26 +287,26 @@ static void __init gic_dist_init(struct gic_chip_data *gic, * Set all global interrupts to be level triggered, active low. */ for (i = 32; i < gic_irqs; i += 16) - writel(0, base + GIC_DIST_CONFIG + i * 4 / 16); + writel_relaxed(0, base + GIC_DIST_CONFIG + i * 4 / 16); /* * Set all global interrupts to this CPU only. */ for (i = 32; i < gic_irqs; i += 4) - writel(cpumask, base + GIC_DIST_TARGET + i * 4 / 4); + writel_relaxed(cpumask, base + GIC_DIST_TARGET + i * 4 / 4); /* * Set priority on all global interrupts. */ for (i = 32; i < gic_irqs; i += 4) - writel(0xa0a0a0a0, base + GIC_DIST_PRI + i * 4 / 4); + writel_relaxed(0xa0a0a0a0, base + GIC_DIST_PRI + i * 4 / 4); /* * Disable all interrupts. Leave the PPI and SGIs alone * as these enables are banked registers. */ for (i = 32; i < gic_irqs; i += 32) - writel(0xffffffff, base + GIC_DIST_ENABLE_CLEAR + i * 4 / 32); + writel_relaxed(0xffffffff, base + GIC_DIST_ENABLE_CLEAR + i * 4 / 32); /* * Limit number of interrupts registered to the platform maximum @@ -319,12 +319,12 @@ static void __init gic_dist_init(struct gic_chip_data *gic, * Setup the Linux IRQ subsystem. */ for (i = irq_start; i < irq_limit; i++) { - irq_set_chip_and_handler(i, &gic_chip, handle_level_irq); + irq_set_chip_and_handler(i, &gic_chip, handle_fasteoi_irq); irq_set_chip_data(i, gic); set_irq_flags(i, IRQF_VALID | IRQF_PROBE); } - writel(1, base + GIC_DIST_CTRL); + writel_relaxed(1, base + GIC_DIST_CTRL); } static void __cpuinit gic_cpu_init(struct gic_chip_data *gic) @@ -337,17 +337,17 @@ static void __cpuinit gic_cpu_init(struct gic_chip_data *gic) * Deal with the banked PPI and SGI interrupts - disable all * PPI interrupts, ensure all SGI interrupts are enabled. */ - writel(0xffff0000, dist_base + GIC_DIST_ENABLE_CLEAR); - writel(0x0000ffff, dist_base + GIC_DIST_ENABLE_SET); + writel_relaxed(0xffff0000, dist_base + GIC_DIST_ENABLE_CLEAR); + writel_relaxed(0x0000ffff, dist_base + GIC_DIST_ENABLE_SET); /* * Set priority on PPI and SGI interrupts */ for (i = 0; i < 32; i += 4) - writel(0xa0a0a0a0, dist_base + GIC_DIST_PRI + i * 4 / 4); + writel_relaxed(0xa0a0a0a0, dist_base + GIC_DIST_PRI + i * 4 / 4); - writel(0xf0, base + GIC_CPU_PRIMASK); - writel(1, base + GIC_CPU_CTRL); + writel_relaxed(0xf0, base + GIC_CPU_PRIMASK); + writel_relaxed(1, base + GIC_CPU_CTRL); } void __init gic_init(unsigned int gic_nr, unsigned int irq_start, @@ -391,7 +391,13 @@ void gic_raise_softirq(const struct cpumask *mask, unsigned int irq) { unsigned long map = *cpus_addr(*mask); + /* + * Ensure that stores to Normal memory are visible to the + * other CPUs before issuing the IPI. + */ + dsb(); + /* this always happens on GIC0 */ - writel(map << 16 | irq, gic_data[0].dist_base + GIC_DIST_SOFTINT); + writel_relaxed(map << 16 | irq, gic_data[0].dist_base + GIC_DIST_SOFTINT); } #endif diff --git a/trunk/arch/arm/common/sa1111.c b/trunk/arch/arm/common/sa1111.c index a12b33c0dc42..9c49a46a2b7a 100644 --- a/trunk/arch/arm/common/sa1111.c +++ b/trunk/arch/arm/common/sa1111.c @@ -185,14 +185,6 @@ static struct sa1111_dev_info sa1111_devices[] = { }, }; -void __init sa1111_adjust_zones(unsigned long *size, unsigned long *holes) -{ - unsigned int sz = SZ_1M >> PAGE_SHIFT; - - size[1] = size[0] - sz; - size[0] = sz; -} - /* * SA1111 interrupt support. Since clearing an IRQ while there are * active IRQs causes the interrupt output to pulse, the upper levels diff --git a/trunk/arch/arm/common/timer-sp.c b/trunk/arch/arm/common/timer-sp.c index 6ef3342153b9..41df47875122 100644 --- a/trunk/arch/arm/common/timer-sp.c +++ b/trunk/arch/arm/common/timer-sp.c @@ -18,53 +18,67 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include +#include #include #include #include #include -/* - * These timers are currently always setup to be clocked at 1MHz. - */ -#define TIMER_FREQ_KHZ (1000) -#define TIMER_RELOAD (TIMER_FREQ_KHZ * 1000 / HZ) +static long __init sp804_get_clock_rate(const char *name) +{ + struct clk *clk; + long rate; + int err; + + clk = clk_get_sys("sp804", name); + if (IS_ERR(clk)) { + pr_err("sp804: %s clock not found: %d\n", name, + (int)PTR_ERR(clk)); + return PTR_ERR(clk); + } -static void __iomem *clksrc_base; + err = clk_enable(clk); + if (err) { + pr_err("sp804: %s clock failed to enable: %d\n", name, err); + clk_put(clk); + return err; + } -static cycle_t sp804_read(struct clocksource *cs) -{ - return ~readl(clksrc_base + TIMER_VALUE); -} + rate = clk_get_rate(clk); + if (rate < 0) { + pr_err("sp804: %s clock failed to get rate: %ld\n", name, rate); + clk_disable(clk); + clk_put(clk); + } -static struct clocksource clocksource_sp804 = { - .name = "timer3", - .rating = 200, - .read = sp804_read, - .mask = CLOCKSOURCE_MASK(32), - .flags = CLOCK_SOURCE_IS_CONTINUOUS, -}; + return rate; +} -void __init sp804_clocksource_init(void __iomem *base) +void __init sp804_clocksource_init(void __iomem *base, const char *name) { - struct clocksource *cs = &clocksource_sp804; + long rate = sp804_get_clock_rate(name); - clksrc_base = base; + if (rate < 0) + return; /* setup timer 0 as free-running clocksource */ - writel(0, clksrc_base + TIMER_CTRL); - writel(0xffffffff, clksrc_base + TIMER_LOAD); - writel(0xffffffff, clksrc_base + TIMER_VALUE); + writel(0, base + TIMER_CTRL); + writel(0xffffffff, base + TIMER_LOAD); + writel(0xffffffff, base + TIMER_VALUE); writel(TIMER_CTRL_32BIT | TIMER_CTRL_ENABLE | TIMER_CTRL_PERIODIC, - clksrc_base + TIMER_CTRL); + base + TIMER_CTRL); - clocksource_register_khz(cs, TIMER_FREQ_KHZ); + clocksource_mmio_init(base + TIMER_VALUE, name, + rate, 200, 32, clocksource_mmio_readl_down); } static void __iomem *clkevt_base; +static unsigned long clkevt_reload; /* * IRQ handler for the timer @@ -90,7 +104,7 @@ static void sp804_set_mode(enum clock_event_mode mode, switch (mode) { case CLOCK_EVT_MODE_PERIODIC: - writel(TIMER_RELOAD, clkevt_base + TIMER_LOAD); + writel(clkevt_reload, clkevt_base + TIMER_LOAD); ctrl |= TIMER_CTRL_PERIODIC | TIMER_CTRL_ENABLE; break; @@ -120,7 +134,6 @@ static int sp804_set_next_event(unsigned long next, } static struct clock_event_device sp804_clockevent = { - .name = "timer0", .shift = 32, .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, .set_mode = sp804_set_mode, @@ -136,17 +149,24 @@ static struct irqaction sp804_timer_irq = { .dev_id = &sp804_clockevent, }; -void __init sp804_clockevents_init(void __iomem *base, unsigned int timer_irq) +void __init sp804_clockevents_init(void __iomem *base, unsigned int irq, + const char *name) { struct clock_event_device *evt = &sp804_clockevent; + long rate = sp804_get_clock_rate(name); + + if (rate < 0) + return; clkevt_base = base; + clkevt_reload = DIV_ROUND_CLOSEST(rate, HZ); - evt->irq = timer_irq; - evt->mult = div_sc(TIMER_FREQ_KHZ, NSEC_PER_MSEC, evt->shift); + evt->name = name; + evt->irq = irq; + evt->mult = div_sc(rate, NSEC_PER_SEC, evt->shift); evt->max_delta_ns = clockevent_delta2ns(0xffffffff, evt); evt->min_delta_ns = clockevent_delta2ns(0xf, evt); - setup_irq(timer_irq, &sp804_timer_irq); + setup_irq(irq, &sp804_timer_irq); clockevents_register_device(evt); } diff --git a/trunk/arch/arm/configs/dove_defconfig b/trunk/arch/arm/configs/dove_defconfig index 54bf5eec8016..40db34cf2771 100644 --- a/trunk/arch/arm/configs/dove_defconfig +++ b/trunk/arch/arm/configs/dove_defconfig @@ -8,8 +8,6 @@ CONFIG_MODULE_UNLOAD=y # CONFIG_BLK_DEV_BSG is not set CONFIG_ARCH_DOVE=y CONFIG_MACH_DOVE_DB=y -CONFIG_CPU_V6=y -CONFIG_CPU_32v6K=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_AEABI=y @@ -44,7 +42,6 @@ CONFIG_MTD_UBI=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=1 -# CONFIG_MISC_DEVICES is not set # CONFIG_SCSI_PROC_FS is not set CONFIG_BLK_DEV_SD=y # CONFIG_SCSI_LOWLEVEL is not set @@ -59,12 +56,12 @@ CONFIG_INPUT_EVDEV=y # CONFIG_KEYBOARD_ATKBD is not set # CONFIG_MOUSE_PS2 is not set # CONFIG_SERIO is not set +CONFIG_LEGACY_PTY_COUNT=16 # CONFIG_DEVKMEM is not set CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y # CONFIG_SERIAL_8250_PCI is not set CONFIG_SERIAL_8250_RUNTIME_UARTS=2 -CONFIG_LEGACY_PTY_COUNT=16 # CONFIG_HW_RANDOM is not set CONFIG_I2C=y CONFIG_I2C_CHARDEV=y @@ -72,12 +69,10 @@ CONFIG_I2C_MV64XXX=y CONFIG_SPI=y CONFIG_SPI_ORION=y # CONFIG_HWMON is not set -# CONFIG_VGA_CONSOLE is not set CONFIG_USB=y CONFIG_USB_DEVICEFS=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y -CONFIG_USB_EHCI_TT_NEWSCHED=y CONFIG_USB_STORAGE=y CONFIG_RTC_CLASS=y CONFIG_RTC_DRV_MV=y @@ -86,7 +81,6 @@ CONFIG_MV_XOR=y CONFIG_EXT2_FS=y CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set -CONFIG_INOTIFY=y CONFIG_ISO9660_FS=y CONFIG_JOLIET=y CONFIG_UDF_FS=m @@ -110,23 +104,19 @@ CONFIG_DEBUG_KERNEL=y CONFIG_TIMER_STATS=y # CONFIG_DEBUG_BUGVERBOSE is not set CONFIG_DEBUG_INFO=y -# CONFIG_RCU_CPU_STALL_DETECTOR is not set CONFIG_SYSCTL_SYSCALL_CHECK=y CONFIG_DEBUG_USER=y CONFIG_DEBUG_ERRORS=y CONFIG_CRYPTO_NULL=y -CONFIG_CRYPTO_CBC=y CONFIG_CRYPTO_ECB=m CONFIG_CRYPTO_PCBC=m CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_MD4=y -CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_AES=y CONFIG_CRYPTO_BLOWFISH=y -CONFIG_CRYPTO_DES=y CONFIG_CRYPTO_TEA=y CONFIG_CRYPTO_TWOFISH=y CONFIG_CRYPTO_DEFLATE=y diff --git a/trunk/arch/arm/configs/mx1_defconfig b/trunk/arch/arm/configs/mx1_defconfig index b39b5ced8a10..c9436d0bf593 100644 --- a/trunk/arch/arm/configs/mx1_defconfig +++ b/trunk/arch/arm/configs/mx1_defconfig @@ -15,6 +15,7 @@ CONFIG_ARCH_MXC=y CONFIG_ARCH_MX1=y CONFIG_ARCH_MX1ADS=y CONFIG_MACH_SCB9328=y +CONFIG_MACH_APF9328=y CONFIG_MXC_IRQ_PRIOR=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y diff --git a/trunk/arch/arm/configs/mx51_defconfig b/trunk/arch/arm/configs/mx51_defconfig index e3c903281f70..0ace16cba9b5 100644 --- a/trunk/arch/arm/configs/mx51_defconfig +++ b/trunk/arch/arm/configs/mx51_defconfig @@ -13,7 +13,7 @@ CONFIG_MODULE_SRCVERSION_ALL=y # CONFIG_LBDAF is not set # CONFIG_BLK_DEV_BSG is not set CONFIG_ARCH_MXC=y -CONFIG_ARCH_MX5=y +CONFIG_ARCH_MX51=y CONFIG_MACH_MX51_BABBAGE=y CONFIG_MACH_MX51_3DS=y CONFIG_MACH_EUKREA_CPUIMX51=y diff --git a/trunk/arch/arm/configs/mxs_defconfig b/trunk/arch/arm/configs/mxs_defconfig new file mode 100644 index 000000000000..2bf224310fb4 --- /dev/null +++ b/trunk/arch/arm/configs/mxs_defconfig @@ -0,0 +1,129 @@ +CONFIG_EXPERIMENTAL=y +CONFIG_SYSVIPC=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=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_NET_NS is not set +CONFIG_PERF_EVENTS=y +# CONFIG_COMPAT_BRK is not set +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_BLK_DEV_INTEGRITY=y +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_MXS=y +CONFIG_MACH_STMP378X_DEVB=y +CONFIG_MACH_TX28=y +# CONFIG_ARM_THUMB is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_AEABI=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_AUTO_ZRELADDR=y +CONFIG_FPE_NWFPE=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_SYN_COOKIES=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_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m +CONFIG_CAN_DEV=m +CONFIG_CAN_FLEXCAN=m +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +# CONFIG_FIRMWARE_IN_KERNEL is not set +# CONFIG_BLK_DEV is not set +CONFIG_NETDEVICES=y +CONFIG_NET_ETHERNET=y +CONFIG_ENC28J60=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_EVDEV=m +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_TSC2007=m +# CONFIG_SERIO is not set +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=m +# CONFIG_I2C_COMPAT is not set +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_MXS=m +CONFIG_SPI=y +CONFIG_SPI_GPIO=m +CONFIG_DEBUG_GPIO=y +CONFIG_GPIO_SYSFS=y +# CONFIG_HWMON is not set +# CONFIG_MFD_SUPPORT is not set +CONFIG_DISPLAY_SUPPORT=m +# CONFIG_HID_SUPPORT is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_MMC=y +CONFIG_MMC_MXS=y +CONFIG_RTC_CLASS=m +CONFIG_RTC_DRV_DS1307=m +CONFIG_DMADEVICES=y +CONFIG_MXS_DMA=y +CONFIG_EXT3_FS=y +# CONFIG_DNOTIFY is not set +CONFIG_FSCACHE=m +CONFIG_FSCACHE_STATS=y +CONFIG_CACHEFILES=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=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_ROOT_NFS=y +CONFIG_PRINTK_TIME=y +CONFIG_FRAME_WARN=2048 +CONFIG_MAGIC_SYSRQ=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_DEBUG_KERNEL=y +CONFIG_LOCKUP_DETECTOR=y +CONFIG_DETECT_HUNG_TASK=y +CONFIG_TIMER_STATS=y +CONFIG_PROVE_LOCKING=y +CONFIG_DEBUG_SPINLOCK_SLEEP=y +CONFIG_DEBUG_INFO=y +CONFIG_SYSCTL_SYSCALL_CHECK=y +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_STRICT_DEVMEM=y +CONFIG_DEBUG_USER=y +CONFIG_CRYPTO=y +CONFIG_CRYPTO_CRC32C=m +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_HW is not set +CONFIG_CRC_ITU_T=m +CONFIG_CRC7=m diff --git a/trunk/arch/arm/configs/ns9xxx_defconfig b/trunk/arch/arm/configs/ns9xxx_defconfig deleted file mode 100644 index 1f528a002983..000000000000 --- a/trunk/arch/arm/configs/ns9xxx_defconfig +++ /dev/null @@ -1,56 +0,0 @@ -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -# CONFIG_IOSCHED_DEADLINE is not set -# CONFIG_IOSCHED_CFQ is not set -CONFIG_ARCH_NS9XXX=y -CONFIG_MACH_CC9P9360DEV=y -CONFIG_MACH_CC9P9360JS=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_FPE_NWFPE=y -CONFIG_NET=y -CONFIG_PACKET=m -CONFIG_INET=y -CONFIG_IP_PNP=y -CONFIG_SYN_COOKIES=y -CONFIG_MTD=m -CONFIG_MTD_CONCAT=m -CONFIG_MTD_CHAR=m -CONFIG_MTD_BLOCK=m -CONFIG_MTD_CFI=m -CONFIG_MTD_JEDECPROBE=m -CONFIG_MTD_CFI_AMDSTD=m -CONFIG_MTD_PHYSMAP=m -CONFIG_BLK_DEV_LOOP=m -CONFIG_NETDEVICES=y -CONFIG_NET_ETHERNET=y -# CONFIG_SERIO_SERPORT is not set -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -# CONFIG_LEGACY_PTYS is not set -# CONFIG_HW_RANDOM is not set -CONFIG_I2C=m -CONFIG_I2C_GPIO=m -# CONFIG_HWMON is not set -# CONFIG_VGA_CONSOLE is not set -# CONFIG_USB_SUPPORT is not set -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=m -CONFIG_LEDS_GPIO=m -CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_TIMER=m -CONFIG_LEDS_TRIGGER_HEARTBEAT=m -CONFIG_RTC_CLASS=m -CONFIG_EXT2_FS=m -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=m -CONFIG_NFS_FS=y -CONFIG_ROOT_NFS=y -# CONFIG_ENABLE_MUST_CHECK is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_INFO=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_ERRORS=y diff --git a/trunk/arch/arm/configs/realview-smp_defconfig b/trunk/arch/arm/configs/realview-smp_defconfig index 5ca7a61f7c01..abe61bf379d2 100644 --- a/trunk/arch/arm/configs/realview-smp_defconfig +++ b/trunk/arch/arm/configs/realview-smp_defconfig @@ -38,7 +38,7 @@ CONFIG_MTD_BLOCK=y CONFIG_MTD_CFI=y CONFIG_MTD_CFI_INTELEXT=y CONFIG_MTD_CFI_AMDSTD=y -CONFIG_MTD_ARM_INTEGRATOR=y +CONFIG_MTD_PHYSMAP=y CONFIG_ARM_CHARLCD=y CONFIG_NETDEVICES=y CONFIG_SMSC_PHY=y diff --git a/trunk/arch/arm/configs/realview_defconfig b/trunk/arch/arm/configs/realview_defconfig index fcaa60328051..7079cbe898a8 100644 --- a/trunk/arch/arm/configs/realview_defconfig +++ b/trunk/arch/arm/configs/realview_defconfig @@ -37,7 +37,7 @@ CONFIG_MTD_BLOCK=y CONFIG_MTD_CFI=y CONFIG_MTD_CFI_INTELEXT=y CONFIG_MTD_CFI_AMDSTD=y -CONFIG_MTD_ARM_INTEGRATOR=y +CONFIG_MTD_PHYSMAP=y CONFIG_ARM_CHARLCD=y CONFIG_NETDEVICES=y CONFIG_SMSC_PHY=y diff --git a/trunk/arch/arm/configs/spear310_defconfig b/trunk/arch/arm/configs/spear310_defconfig deleted file mode 100644 index 824e44418b18..000000000000 --- a/trunk/arch/arm/configs/spear310_defconfig +++ /dev/null @@ -1,52 +0,0 @@ -CONFIG_EXPERIMENTAL=y -CONFIG_SYSVIPC=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_KALLSYMS_EXTRA_PASS=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_PLAT_SPEAR=y -CONFIG_MACH_SPEAR310=y -CONFIG_BINFMT_MISC=y -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=16384 -CONFIG_INPUT_FF_MEMLESS=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE is not set -CONFIG_SERIAL_AMBA_PL011=y -CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -# CONFIG_LEGACY_PTYS is not set -# CONFIG_HW_RANDOM is not set -CONFIG_RAW_DRIVER=y -CONFIG_MAX_RAW_DEVS=8192 -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_PL061=y -# CONFIG_HWMON is not set -# CONFIG_VGA_CONSOLE 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_SECURITY=y -CONFIG_EXT3_FS=y -CONFIG_EXT3_FS_SECURITY=y -CONFIG_AUTOFS4_FS=m -CONFIG_MSDOS_FS=m -CONFIG_VFAT_FS=m -CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -CONFIG_TMPFS=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ASCII=m -CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_FS=y -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_SPINLOCK=y -CONFIG_DEBUG_SPINLOCK_SLEEP=y -CONFIG_DEBUG_INFO=y -# CONFIG_CRC32 is not set diff --git a/trunk/arch/arm/configs/spear320_defconfig b/trunk/arch/arm/configs/spear320_defconfig deleted file mode 100644 index 842f7f3c512a..000000000000 --- a/trunk/arch/arm/configs/spear320_defconfig +++ /dev/null @@ -1,52 +0,0 @@ -CONFIG_EXPERIMENTAL=y -CONFIG_SYSVIPC=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_KALLSYMS_EXTRA_PASS=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_PLAT_SPEAR=y -CONFIG_MACH_SPEAR320=y -CONFIG_BINFMT_MISC=y -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=16384 -CONFIG_INPUT_FF_MEMLESS=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE is not set -CONFIG_SERIAL_AMBA_PL011=y -CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -# CONFIG_LEGACY_PTYS is not set -# CONFIG_HW_RANDOM is not set -CONFIG_RAW_DRIVER=y -CONFIG_MAX_RAW_DEVS=8192 -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_PL061=y -# CONFIG_HWMON is not set -# CONFIG_VGA_CONSOLE 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_SECURITY=y -CONFIG_EXT3_FS=y -CONFIG_EXT3_FS_SECURITY=y -CONFIG_AUTOFS4_FS=m -CONFIG_MSDOS_FS=m -CONFIG_VFAT_FS=m -CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -CONFIG_TMPFS=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ASCII=m -CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_FS=y -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_SPINLOCK=y -CONFIG_DEBUG_SPINLOCK_SLEEP=y -CONFIG_DEBUG_INFO=y -# CONFIG_CRC32 is not set diff --git a/trunk/arch/arm/configs/spear300_defconfig b/trunk/arch/arm/configs/spear3xx_defconfig similarity index 93% rename from trunk/arch/arm/configs/spear300_defconfig rename to trunk/arch/arm/configs/spear3xx_defconfig index cf29f3e56922..fea7e1f026a3 100644 --- a/trunk/arch/arm/configs/spear300_defconfig +++ b/trunk/arch/arm/configs/spear3xx_defconfig @@ -7,6 +7,9 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_PLAT_SPEAR=y +CONFIG_BOARD_SPEAR300_EVB=y +CONFIG_BOARD_SPEAR310_EVB=y +CONFIG_BOARD_SPEAR320_EVB=y CONFIG_BINFMT_MISC=y CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_BLK_DEV_RAM=y @@ -24,7 +27,6 @@ CONFIG_MAX_RAW_DEVS=8192 CONFIG_GPIO_SYSFS=y CONFIG_GPIO_PL061=y # CONFIG_HWMON is not set -# CONFIG_VGA_CONSOLE is not set # CONFIG_HID_SUPPORT is not set # CONFIG_USB_SUPPORT is not set CONFIG_EXT2_FS=y diff --git a/trunk/arch/arm/configs/spear600_defconfig b/trunk/arch/arm/configs/spear6xx_defconfig similarity index 97% rename from trunk/arch/arm/configs/spear600_defconfig rename to trunk/arch/arm/configs/spear6xx_defconfig index 6777c11f63e7..cef2e836afd2 100644 --- a/trunk/arch/arm/configs/spear600_defconfig +++ b/trunk/arch/arm/configs/spear6xx_defconfig @@ -8,6 +8,7 @@ CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_PLAT_SPEAR=y CONFIG_ARCH_SPEAR6XX=y +CONFIG_BOARD_SPEAR600_EVB=y CONFIG_BINFMT_MISC=y CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_BLK_DEV_RAM=y @@ -22,7 +23,6 @@ CONFIG_MAX_RAW_DEVS=8192 CONFIG_GPIO_SYSFS=y CONFIG_GPIO_PL061=y # CONFIG_HWMON is not set -# CONFIG_VGA_CONSOLE is not set # CONFIG_HID_SUPPORT is not set # CONFIG_USB_SUPPORT is not set CONFIG_EXT2_FS=y diff --git a/trunk/arch/arm/configs/stmp378x_defconfig b/trunk/arch/arm/configs/stmp378x_defconfig deleted file mode 100644 index 1079c2b6eb3a..000000000000 --- a/trunk/arch/arm/configs/stmp378x_defconfig +++ /dev/null @@ -1,128 +0,0 @@ -CONFIG_EXPERIMENTAL=y -CONFIG_LOCALVERSION="-default" -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_SYSFS_DEPRECATED_V2=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_EXPERT=y -CONFIG_SLAB=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_MODULE_SRCVERSION_ALL=y -# CONFIG_BLK_DEV_BSG is not set -CONFIG_ARCH_STMP3XXX=y -CONFIG_ARCH_STMP378X=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_PREEMPT=y -CONFIG_AEABI=y -CONFIG_HIGHMEM=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="console=ttySDBG0,115200 mem=32M" -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_SYN_COOKIES=y -# CONFIG_INET_LRO is not set -# CONFIG_IPV6 is not set -CONFIG_NET_SCHED=y -# CONFIG_WIRELESS is not set -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -# CONFIG_STANDALONE is not set -CONFIG_MTD=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_NAND=y -CONFIG_MTD_UBI=y -CONFIG_MTD_UBI_GLUEBI=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_CRYPTOLOOP=y -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=4 -CONFIG_BLK_DEV_RAM_SIZE=6144 -# CONFIG_MISC_DEVICES is not set -CONFIG_SCSI=y -CONFIG_BLK_DEV_SD=y -CONFIG_CHR_DEV_SG=y -# CONFIG_SCSI_LOWLEVEL is not set -CONFIG_INPUT_POLLDEV=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=320 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 -CONFIG_INPUT_EVDEV=y -# CONFIG_KEYBOARD_ATKBD is not set -# CONFIG_INPUT_MOUSE is not set -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_INPUT_MISC=y -# CONFIG_SERIO_SERPORT is not set -CONFIG_VT_HW_CONSOLE_BINDING=y -# CONFIG_LEGACY_PTYS is not set -CONFIG_HW_RANDOM=y -CONFIG_DEBUG_GPIO=y -CONFIG_GPIO_SYSFS=y -# CONFIG_HWMON is not set -CONFIG_FB=y -CONFIG_BACKLIGHT_LCD_SUPPORT=y -CONFIG_LCD_CLASS_DEVICE=y -CONFIG_BACKLIGHT_CLASS_DEVICE=y -# CONFIG_VGA_CONSOLE is not set -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_LOGO=y -# CONFIG_HID_SUPPORT is not set -# CONFIG_USB_SUPPORT is not set -# CONFIG_DNOTIFY is not set -CONFIG_TMPFS=y -CONFIG_CONFIGFS_FS=m -# CONFIG_MISC_FILESYSTEMS is not set -# CONFIG_NETWORK_FILESYSTEMS is not set -# CONFIG_ENABLE_MUST_CHECK is not set -CONFIG_STRIP_ASM_SYMS=y -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_SHIRQ=y -# CONFIG_SCHED_DEBUG is not set -CONFIG_DEBUG_OBJECTS=y -CONFIG_DEBUG_OBJECTS_SELFTEST=y -CONFIG_DEBUG_OBJECTS_FREE=y -CONFIG_DEBUG_OBJECTS_TIMERS=y -CONFIG_DEBUG_SLAB=y -CONFIG_DEBUG_SLAB_LEAK=y -CONFIG_DEBUG_RT_MUTEXES=y -CONFIG_PROVE_LOCKING=y -CONFIG_DEBUG_SPINLOCK_SLEEP=y -CONFIG_DEBUG_KOBJECT=y -# CONFIG_DEBUG_BUGVERBOSE is not set -CONFIG_DEBUG_INFO=y -# CONFIG_RCU_CPU_STALL_DETECTOR is not set -CONFIG_SYSCTL_SYSCALL_CHECK=y -CONFIG_BOOT_TRACER=y -CONFIG_STACK_TRACER=y -CONFIG_BLK_DEV_IO_TRACE=y -CONFIG_KEYS=y -CONFIG_KEYS_DEBUG_PROC_KEYS=y -CONFIG_SECURITY=y -CONFIG_CRYPTO_TEST=m -CONFIG_CRYPTO_ECB=y -CONFIG_CRYPTO_HMAC=y -CONFIG_CRYPTO_MD5=y -CONFIG_CRYPTO_SHA1=m -CONFIG_CRYPTO_AES=m -CONFIG_CRYPTO_DES=y -CONFIG_CRYPTO_DEFLATE=y -CONFIG_CRYPTO_LZO=y -# CONFIG_CRYPTO_ANSI_CPRNG is not set -CONFIG_CRC_CCITT=m -CONFIG_CRC16=y diff --git a/trunk/arch/arm/configs/stmp37xx_defconfig b/trunk/arch/arm/configs/stmp37xx_defconfig deleted file mode 100644 index 564a5cc44085..000000000000 --- a/trunk/arch/arm/configs/stmp37xx_defconfig +++ /dev/null @@ -1,108 +0,0 @@ -CONFIG_EXPERIMENTAL=y -CONFIG_LOCALVERSION="-default" -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_SYSFS_DEPRECATED_V2=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_EXPERT=y -CONFIG_SLAB=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_MODULE_SRCVERSION_ALL=y -# CONFIG_BLK_DEV_BSG is not set -CONFIG_ARCH_STMP3XXX=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_PREEMPT=y -CONFIG_AEABI=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="console=ttySDBG0,115200 mem=32M lcd_panel=lms350 rdinit=/bin/sh ignore_loglevel" -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_SYN_COOKIES=y -# CONFIG_INET_LRO is not set -# CONFIG_IPV6 is not set -CONFIG_NET_SCHED=y -# CONFIG_WIRELESS is not set -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -# CONFIG_STANDALONE is not set -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_CRYPTOLOOP=y -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=4 -CONFIG_BLK_DEV_RAM_SIZE=6144 -# CONFIG_MISC_DEVICES is not set -CONFIG_SCSI=y -CONFIG_BLK_DEV_SD=y -CONFIG_CHR_DEV_SG=y -# CONFIG_SCSI_LOWLEVEL is not set -CONFIG_INPUT_POLLDEV=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=320 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 -CONFIG_INPUT_EVDEV=y -# CONFIG_KEYBOARD_ATKBD is not set -# CONFIG_INPUT_MOUSE is not set -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_INPUT_MISC=y -# CONFIG_SERIO_SERPORT is not set -CONFIG_VT_HW_CONSOLE_BINDING=y -# CONFIG_LEGACY_PTYS is not set -CONFIG_HW_RANDOM=y -CONFIG_DEBUG_GPIO=y -CONFIG_GPIO_SYSFS=y -# CONFIG_HWMON is not set -CONFIG_FB=y -CONFIG_BACKLIGHT_LCD_SUPPORT=y -CONFIG_LCD_CLASS_DEVICE=y -CONFIG_BACKLIGHT_CLASS_DEVICE=y -# CONFIG_VGA_CONSOLE is not set -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_LOGO=y -# CONFIG_HID_SUPPORT is not set -# CONFIG_USB_SUPPORT is not set -# CONFIG_DNOTIFY is not set -CONFIG_TMPFS=y -CONFIG_CONFIGFS_FS=m -# CONFIG_MISC_FILESYSTEMS is not set -# CONFIG_NETWORK_FILESYSTEMS is not set -# CONFIG_ENABLE_MUST_CHECK is not set -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_BUGVERBOSE is not set -# CONFIG_RCU_CPU_STALL_DETECTOR is not set -CONFIG_SYSCTL_SYSCALL_CHECK=y -CONFIG_BOOT_TRACER=y -CONFIG_STACK_TRACER=y -CONFIG_BLK_DEV_IO_TRACE=y -CONFIG_DEBUG_LL=y -CONFIG_KEYS=y -CONFIG_KEYS_DEBUG_PROC_KEYS=y -CONFIG_SECURITY=y -CONFIG_CRYPTO_TEST=m -CONFIG_CRYPTO_ECB=y -CONFIG_CRYPTO_HMAC=y -CONFIG_CRYPTO_MD5=y -CONFIG_CRYPTO_SHA1=m -CONFIG_CRYPTO_AES=m -CONFIG_CRYPTO_DES=y -CONFIG_CRYPTO_DEFLATE=y -CONFIG_CRYPTO_LZO=y -# CONFIG_CRYPTO_ANSI_CPRNG is not set -CONFIG_CRC_CCITT=m -CONFIG_CRC16=y diff --git a/trunk/arch/arm/configs/versatile_defconfig b/trunk/arch/arm/configs/versatile_defconfig index 0ce710f47500..cdd4d2bd3962 100644 --- a/trunk/arch/arm/configs/versatile_defconfig +++ b/trunk/arch/arm/configs/versatile_defconfig @@ -32,7 +32,7 @@ CONFIG_MTD_BLOCK=y CONFIG_MTD_CFI=y CONFIG_MTD_CFI_ADV_OPTIONS=y CONFIG_MTD_CFI_INTELEXT=y -CONFIG_MTD_ARM_INTEGRATOR=y +CONFIG_MTD_PHYSMAP=y CONFIG_BLK_DEV_RAM=y CONFIG_EEPROM_LEGACY=m CONFIG_NETDEVICES=y diff --git a/trunk/arch/arm/include/asm/dma.h b/trunk/arch/arm/include/asm/dma.h index ca51143f97f1..42005542932b 100644 --- a/trunk/arch/arm/include/asm/dma.h +++ b/trunk/arch/arm/include/asm/dma.h @@ -6,8 +6,10 @@ /* * This is the maximum virtual address which can be DMA'd from. */ -#ifndef MAX_DMA_ADDRESS +#ifndef ARM_DMA_ZONE_SIZE #define MAX_DMA_ADDRESS 0xffffffff +#else +#define MAX_DMA_ADDRESS (PAGE_OFFSET + ARM_DMA_ZONE_SIZE) #endif #ifdef CONFIG_ISA_DMA_API diff --git a/trunk/arch/arm/include/asm/elf.h b/trunk/arch/arm/include/asm/elf.h index c3cd8755e648..0e9ce8d9686e 100644 --- a/trunk/arch/arm/include/asm/elf.h +++ b/trunk/arch/arm/include/asm/elf.h @@ -108,6 +108,7 @@ struct task_struct; int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs); #define ELF_CORE_COPY_TASK_REGS dump_task_regs +#define CORE_DUMP_USE_REGSET #define ELF_EXEC_PAGESIZE 4096 /* This is the location that an ET_DYN program is loaded if exec'ed. Typical diff --git a/trunk/arch/arm/include/asm/futex.h b/trunk/arch/arm/include/asm/futex.h index 199a6b6de7f4..8c73900da9ed 100644 --- a/trunk/arch/arm/include/asm/futex.h +++ b/trunk/arch/arm/include/asm/futex.h @@ -3,16 +3,74 @@ #ifdef __KERNEL__ +#if defined(CONFIG_CPU_USE_DOMAINS) && defined(CONFIG_SMP) +/* ARM doesn't provide unprivileged exclusive memory accessors */ +#include +#else + +#include +#include +#include + +#define __futex_atomic_ex_table(err_reg) \ + "3:\n" \ + " .pushsection __ex_table,\"a\"\n" \ + " .align 3\n" \ + " .long 1b, 4f, 2b, 4f\n" \ + " .popsection\n" \ + " .pushsection .fixup,\"ax\"\n" \ + "4: mov %0, " err_reg "\n" \ + " b 3b\n" \ + " .popsection" + #ifdef CONFIG_SMP -#include +#define __futex_atomic_op(insn, ret, oldval, uaddr, oparg) \ + smp_mb(); \ + __asm__ __volatile__( \ + "1: ldrex %1, [%2]\n" \ + " " insn "\n" \ + "2: strex %1, %0, [%2]\n" \ + " teq %1, #0\n" \ + " bne 1b\n" \ + " mov %0, #0\n" \ + __futex_atomic_ex_table("%4") \ + : "=&r" (ret), "=&r" (oldval) \ + : "r" (uaddr), "r" (oparg), "Ir" (-EFAULT) \ + : "cc", "memory") + +static inline int +futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, + u32 oldval, u32 newval) +{ + int ret; + u32 val; + + if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32))) + return -EFAULT; + + smp_mb(); + __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n" + "1: ldrex %1, [%4]\n" + " teq %1, %2\n" + " ite eq @ explicit IT needed for the 2b label\n" + "2: strexeq %0, %3, [%4]\n" + " movne %0, #0\n" + " teq %0, #0\n" + " bne 1b\n" + __futex_atomic_ex_table("%5") + : "=&r" (ret), "=&r" (val) + : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT) + : "cc", "memory"); + smp_mb(); + + *uval = val; + return ret; +} #else /* !SMP, we can work around lack of atomic ops by disabling preemption */ -#include #include -#include -#include #include #define __futex_atomic_op(insn, ret, oldval, uaddr, oparg) \ @@ -21,19 +79,37 @@ " " insn "\n" \ "2: " T(str) " %0, [%2]\n" \ " mov %0, #0\n" \ - "3:\n" \ - " .pushsection __ex_table,\"a\"\n" \ - " .align 3\n" \ - " .long 1b, 4f, 2b, 4f\n" \ - " .popsection\n" \ - " .pushsection .fixup,\"ax\"\n" \ - "4: mov %0, %4\n" \ - " b 3b\n" \ - " .popsection" \ + __futex_atomic_ex_table("%4") \ : "=&r" (ret), "=&r" (oldval) \ : "r" (uaddr), "r" (oparg), "Ir" (-EFAULT) \ : "cc", "memory") +static inline int +futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, + u32 oldval, u32 newval) +{ + int ret = 0; + u32 val; + + if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32))) + return -EFAULT; + + __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n" + "1: " T(ldr) " %1, [%4]\n" + " teq %1, %2\n" + " it eq @ explicit IT needed for the 2b label\n" + "2: " T(streq) " %3, [%4]\n" + __futex_atomic_ex_table("%5") + : "+r" (ret), "=&r" (val) + : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT) + : "cc", "memory"); + + *uval = val; + return ret; +} + +#endif /* !SMP */ + static inline int futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr) { @@ -87,39 +163,6 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr) return ret; } -static inline int -futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, - u32 oldval, u32 newval) -{ - int ret = 0; - u32 val; - - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32))) - return -EFAULT; - - __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n" - "1: " T(ldr) " %1, [%4]\n" - " teq %1, %2\n" - " it eq @ explicit IT needed for the 2b label\n" - "2: " T(streq) " %3, [%4]\n" - "3:\n" - " .pushsection __ex_table,\"a\"\n" - " .align 3\n" - " .long 1b, 4f, 2b, 4f\n" - " .popsection\n" - " .pushsection .fixup,\"ax\"\n" - "4: mov %0, %5\n" - " b 3b\n" - " .popsection" - : "+r" (ret), "=&r" (val) - : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT) - : "cc", "memory"); - - *uval = val; - return ret; -} - -#endif /* !SMP */ - +#endif /* !(CPU_USE_DOMAINS && SMP) */ #endif /* __KERNEL__ */ #endif /* _ASM_ARM_FUTEX_H */ diff --git a/trunk/arch/arm/include/asm/hardware/timer-sp.h b/trunk/arch/arm/include/asm/hardware/timer-sp.h index 21e75e30d497..4384d81eee79 100644 --- a/trunk/arch/arm/include/asm/hardware/timer-sp.h +++ b/trunk/arch/arm/include/asm/hardware/timer-sp.h @@ -1,2 +1,2 @@ -void sp804_clocksource_init(void __iomem *); -void sp804_clockevents_init(void __iomem *, unsigned int); +void sp804_clocksource_init(void __iomem *, const char *); +void sp804_clockevents_init(void __iomem *, unsigned int, const char *); diff --git a/trunk/arch/arm/include/asm/memory.h b/trunk/arch/arm/include/asm/memory.h index 431077c5a867..af44a8fb3480 100644 --- a/trunk/arch/arm/include/asm/memory.h +++ b/trunk/arch/arm/include/asm/memory.h @@ -209,14 +209,10 @@ static inline unsigned long __phys_to_virt(unsigned long x) * allocations. This must be the smallest DMA mask in the system, * so a successful GFP_DMA allocation will always satisfy this. */ -#ifndef ISA_DMA_THRESHOLD +#ifndef ARM_DMA_ZONE_SIZE #define ISA_DMA_THRESHOLD (0xffffffffULL) -#endif - -#ifndef arch_adjust_zones -#define arch_adjust_zones(size,holes) do { } while (0) -#elif !defined(CONFIG_ZONE_DMA) -#error "custom arch_adjust_zones() requires CONFIG_ZONE_DMA" +#else +#define ISA_DMA_THRESHOLD (PHYS_OFFSET + ARM_DMA_ZONE_SIZE - 1) #endif /* diff --git a/trunk/arch/arm/include/asm/ptrace.h b/trunk/arch/arm/include/asm/ptrace.h index a8ff22b2a391..312d10877bd7 100644 --- a/trunk/arch/arm/include/asm/ptrace.h +++ b/trunk/arch/arm/include/asm/ptrace.h @@ -128,6 +128,12 @@ struct pt_regs { #define ARM_r0 uregs[0] #define ARM_ORIG_r0 uregs[17] +/* + * The size of the user-visible VFP state as seen by PTRACE_GET/SETVFPREGS + * and core dumps. + */ +#define ARM_VFPREGS_SIZE ( 32 * 8 /*fpregs*/ + 4 /*fpscr*/ ) + #ifdef __KERNEL__ #define user_mode(regs) \ diff --git a/trunk/arch/arm/include/asm/sizes.h b/trunk/arch/arm/include/asm/sizes.h index 316bb2b2be3d..154b89b81d3e 100644 --- a/trunk/arch/arm/include/asm/sizes.h +++ b/trunk/arch/arm/include/asm/sizes.h @@ -16,44 +16,6 @@ /* Size definitions * Copyright (C) ARM Limited 1998. All rights reserved. */ +#include -#ifndef __sizes_h -#define __sizes_h 1 - -/* handy sizes */ -#define SZ_16 0x00000010 -#define SZ_32 0x00000020 -#define SZ_64 0x00000040 -#define SZ_128 0x00000080 -#define SZ_256 0x00000100 -#define SZ_512 0x00000200 - -#define SZ_1K 0x00000400 -#define SZ_2K 0x00000800 -#define SZ_4K 0x00001000 -#define SZ_8K 0x00002000 -#define SZ_16K 0x00004000 -#define SZ_32K 0x00008000 -#define SZ_64K 0x00010000 -#define SZ_128K 0x00020000 -#define SZ_256K 0x00040000 -#define SZ_512K 0x00080000 - -#define SZ_1M 0x00100000 -#define SZ_2M 0x00200000 -#define SZ_4M 0x00400000 -#define SZ_8M 0x00800000 -#define SZ_16M 0x01000000 -#define SZ_32M 0x02000000 -#define SZ_48M 0x03000000 -#define SZ_64M 0x04000000 -#define SZ_128M 0x08000000 -#define SZ_256M 0x10000000 -#define SZ_512M 0x20000000 - -#define SZ_1G 0x40000000 -#define SZ_2G 0x80000000 - -#endif - -/* END */ +#define SZ_48M (SZ_32M + SZ_16M) diff --git a/trunk/arch/arm/include/asm/smp.h b/trunk/arch/arm/include/asm/smp.h index 96ed521f2408..d2b514fd76f4 100644 --- a/trunk/arch/arm/include/asm/smp.h +++ b/trunk/arch/arm/include/asm/smp.h @@ -14,20 +14,12 @@ #include #include -#include - #ifndef CONFIG_SMP # error " included in non-SMP build" #endif #define raw_smp_processor_id() (current_thread_info()->cpu) -/* - * at the moment, there's not a big penalty for changing CPUs - * (the >big< penalty is running SMP in the first place) - */ -#define PROC_CHANGE_PENALTY 15 - struct seq_file; /* @@ -47,9 +39,9 @@ extern void smp_init_cpus(void); /* - * Raise an IPI cross call on CPUs in callmap. + * Provide a function to raise an IPI cross call on CPUs in callmap. */ -extern void smp_cross_call(const struct cpumask *mask, int ipi); +extern void set_smp_cross_call(void (*)(const struct cpumask *, unsigned int)); /* * Boot a secondary CPU, and assign it the specified idle task. diff --git a/trunk/arch/arm/include/asm/spinlock.h b/trunk/arch/arm/include/asm/spinlock.h index fdd3820edff8..65fa3c88095c 100644 --- a/trunk/arch/arm/include/asm/spinlock.h +++ b/trunk/arch/arm/include/asm/spinlock.h @@ -5,6 +5,8 @@ #error SMP not supported on pre-ARMv6 CPUs #endif +#include + /* * sev and wfe are ARMv6K extensions. Uniprocessor ARMv6 may not have the K * extensions, so when running on UP, we have to patch these instructions away. diff --git a/trunk/arch/arm/include/asm/tlb.h b/trunk/arch/arm/include/asm/tlb.h index 82dfe5d0c41e..265f908c4a6e 100644 --- a/trunk/arch/arm/include/asm/tlb.h +++ b/trunk/arch/arm/include/asm/tlb.h @@ -41,12 +41,12 @@ */ #if defined(CONFIG_SMP) || defined(CONFIG_CPU_32v7) #define tlb_fast_mode(tlb) 0 -#define FREE_PTE_NR 500 #else #define tlb_fast_mode(tlb) 1 -#define FREE_PTE_NR 0 #endif +#define MMU_GATHER_BUNDLE 8 + /* * TLB handling. This allows us to remove pages from the page * tables, and efficiently handle the TLB issues. @@ -58,7 +58,9 @@ struct mmu_gather { unsigned long range_start; unsigned long range_end; unsigned int nr; - struct page *pages[FREE_PTE_NR]; + unsigned int max; + struct page **pages; + struct page *local[MMU_GATHER_BUNDLE]; }; DECLARE_PER_CPU(struct mmu_gather, mmu_gathers); @@ -97,26 +99,37 @@ static inline void tlb_add_flush(struct mmu_gather *tlb, unsigned long addr) } } +static inline void __tlb_alloc_page(struct mmu_gather *tlb) +{ + unsigned long addr = __get_free_pages(GFP_NOWAIT | __GFP_NOWARN, 0); + + if (addr) { + tlb->pages = (void *)addr; + tlb->max = PAGE_SIZE / sizeof(struct page *); + } +} + static inline void tlb_flush_mmu(struct mmu_gather *tlb) { tlb_flush(tlb); if (!tlb_fast_mode(tlb)) { free_pages_and_swap_cache(tlb->pages, tlb->nr); tlb->nr = 0; + if (tlb->pages == tlb->local) + __tlb_alloc_page(tlb); } } -static inline struct mmu_gather * -tlb_gather_mmu(struct mm_struct *mm, unsigned int full_mm_flush) +static inline void +tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned int fullmm) { - struct mmu_gather *tlb = &get_cpu_var(mmu_gathers); - tlb->mm = mm; - tlb->fullmm = full_mm_flush; + tlb->fullmm = fullmm; tlb->vma = NULL; + tlb->max = ARRAY_SIZE(tlb->local); + tlb->pages = tlb->local; tlb->nr = 0; - - return tlb; + __tlb_alloc_page(tlb); } static inline void @@ -127,7 +140,8 @@ tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) /* keep the page table cache within bounds */ check_pgt_cache(); - put_cpu_var(mmu_gathers); + if (tlb->pages != tlb->local) + free_pages((unsigned long)tlb->pages, 0); } /* @@ -162,15 +176,22 @@ tlb_end_vma(struct mmu_gather *tlb, struct vm_area_struct *vma) tlb_flush(tlb); } -static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page) +static inline int __tlb_remove_page(struct mmu_gather *tlb, struct page *page) { if (tlb_fast_mode(tlb)) { free_page_and_swap_cache(page); - } else { - tlb->pages[tlb->nr++] = page; - if (tlb->nr >= FREE_PTE_NR) - tlb_flush_mmu(tlb); + return 1; /* avoid calling tlb_flush_mmu */ } + + tlb->pages[tlb->nr++] = page; + VM_BUG_ON(tlb->nr > tlb->max); + return tlb->max - tlb->nr; +} + +static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page) +{ + if (!__tlb_remove_page(tlb, page)) + tlb_flush_mmu(tlb); } static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, diff --git a/trunk/arch/arm/kernel/perf_event.c b/trunk/arch/arm/kernel/perf_event.c index 139e3c827369..d53c0abc4dd3 100644 --- a/trunk/arch/arm/kernel/perf_event.c +++ b/trunk/arch/arm/kernel/perf_event.c @@ -560,11 +560,6 @@ static int armpmu_event_init(struct perf_event *event) event->destroy = hw_perf_event_destroy; if (!atomic_inc_not_zero(&active_events)) { - if (atomic_read(&active_events) > armpmu->num_events) { - atomic_dec(&active_events); - return -ENOSPC; - } - mutex_lock(&pmu_reserve_mutex); if (atomic_read(&active_events) == 0) { err = armpmu_reserve_hardware(); diff --git a/trunk/arch/arm/kernel/ptrace.c b/trunk/arch/arm/kernel/ptrace.c index 8182f45ca493..97260060bf26 100644 --- a/trunk/arch/arm/kernel/ptrace.c +++ b/trunk/arch/arm/kernel/ptrace.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -308,58 +309,6 @@ static int ptrace_write_user(struct task_struct *tsk, unsigned long off, return put_user_reg(tsk, off >> 2, val); } -/* - * Get all user integer registers. - */ -static int ptrace_getregs(struct task_struct *tsk, void __user *uregs) -{ - struct pt_regs *regs = task_pt_regs(tsk); - - return copy_to_user(uregs, regs, sizeof(struct pt_regs)) ? -EFAULT : 0; -} - -/* - * Set all user integer registers. - */ -static int ptrace_setregs(struct task_struct *tsk, void __user *uregs) -{ - struct pt_regs newregs; - int ret; - - ret = -EFAULT; - if (copy_from_user(&newregs, uregs, sizeof(struct pt_regs)) == 0) { - struct pt_regs *regs = task_pt_regs(tsk); - - ret = -EINVAL; - if (valid_user_regs(&newregs)) { - *regs = newregs; - ret = 0; - } - } - - return ret; -} - -/* - * Get the child FPU state. - */ -static int ptrace_getfpregs(struct task_struct *tsk, void __user *ufp) -{ - return copy_to_user(ufp, &task_thread_info(tsk)->fpstate, - sizeof(struct user_fp)) ? -EFAULT : 0; -} - -/* - * Set the child FPU state. - */ -static int ptrace_setfpregs(struct task_struct *tsk, void __user *ufp) -{ - struct thread_info *thread = task_thread_info(tsk); - thread->used_cp[1] = thread->used_cp[2] = 1; - return copy_from_user(&thread->fpstate, ufp, - sizeof(struct user_fp)) ? -EFAULT : 0; -} - #ifdef CONFIG_IWMMXT /* @@ -418,56 +367,6 @@ static int ptrace_setcrunchregs(struct task_struct *tsk, void __user *ufp) } #endif -#ifdef CONFIG_VFP -/* - * Get the child VFP state. - */ -static int ptrace_getvfpregs(struct task_struct *tsk, void __user *data) -{ - struct thread_info *thread = task_thread_info(tsk); - union vfp_state *vfp = &thread->vfpstate; - struct user_vfp __user *ufp = data; - - vfp_sync_hwstate(thread); - - /* copy the floating point registers */ - if (copy_to_user(&ufp->fpregs, &vfp->hard.fpregs, - sizeof(vfp->hard.fpregs))) - return -EFAULT; - - /* copy the status and control register */ - if (put_user(vfp->hard.fpscr, &ufp->fpscr)) - return -EFAULT; - - return 0; -} - -/* - * Set the child VFP state. - */ -static int ptrace_setvfpregs(struct task_struct *tsk, void __user *data) -{ - struct thread_info *thread = task_thread_info(tsk); - union vfp_state *vfp = &thread->vfpstate; - struct user_vfp __user *ufp = data; - - vfp_sync_hwstate(thread); - - /* copy the floating point registers */ - if (copy_from_user(&vfp->hard.fpregs, &ufp->fpregs, - sizeof(vfp->hard.fpregs))) - return -EFAULT; - - /* copy the status and control register */ - if (get_user(vfp->hard.fpscr, &ufp->fpscr)) - return -EFAULT; - - vfp_flush_hwstate(thread); - - return 0; -} -#endif - #ifdef CONFIG_HAVE_HW_BREAKPOINT /* * Convert a virtual register number into an index for a thread_info @@ -694,6 +593,219 @@ static int ptrace_sethbpregs(struct task_struct *tsk, long num, } #endif +/* regset get/set implementations */ + +static int gpr_get(struct task_struct *target, + const struct user_regset *regset, + unsigned int pos, unsigned int count, + void *kbuf, void __user *ubuf) +{ + struct pt_regs *regs = task_pt_regs(target); + + return user_regset_copyout(&pos, &count, &kbuf, &ubuf, + regs, + 0, sizeof(*regs)); +} + +static int gpr_set(struct task_struct *target, + const struct user_regset *regset, + unsigned int pos, unsigned int count, + const void *kbuf, const void __user *ubuf) +{ + int ret; + struct pt_regs newregs; + + ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, + &newregs, + 0, sizeof(newregs)); + if (ret) + return ret; + + if (!valid_user_regs(&newregs)) + return -EINVAL; + + *task_pt_regs(target) = newregs; + return 0; +} + +static int fpa_get(struct task_struct *target, + const struct user_regset *regset, + unsigned int pos, unsigned int count, + void *kbuf, void __user *ubuf) +{ + return user_regset_copyout(&pos, &count, &kbuf, &ubuf, + &task_thread_info(target)->fpstate, + 0, sizeof(struct user_fp)); +} + +static int fpa_set(struct task_struct *target, + const struct user_regset *regset, + unsigned int pos, unsigned int count, + const void *kbuf, const void __user *ubuf) +{ + struct thread_info *thread = task_thread_info(target); + + thread->used_cp[1] = thread->used_cp[2] = 1; + + return user_regset_copyin(&pos, &count, &kbuf, &ubuf, + &thread->fpstate, + 0, sizeof(struct user_fp)); +} + +#ifdef CONFIG_VFP +/* + * VFP register get/set implementations. + * + * With respect to the kernel, struct user_fp is divided into three chunks: + * 16 or 32 real VFP registers (d0-d15 or d0-31) + * These are transferred to/from the real registers in the task's + * vfp_hard_struct. The number of registers depends on the kernel + * configuration. + * + * 16 or 0 fake VFP registers (d16-d31 or empty) + * i.e., the user_vfp structure has space for 32 registers even if + * the kernel doesn't have them all. + * + * vfp_get() reads this chunk as zero where applicable + * vfp_set() ignores this chunk + * + * 1 word for the FPSCR + * + * The bounds-checking logic built into user_regset_copyout and friends + * means that we can make a simple sequence of calls to map the relevant data + * to/from the specified slice of the user regset structure. + */ +static int vfp_get(struct task_struct *target, + const struct user_regset *regset, + unsigned int pos, unsigned int count, + void *kbuf, void __user *ubuf) +{ + int ret; + struct thread_info *thread = task_thread_info(target); + struct vfp_hard_struct const *vfp = &thread->vfpstate.hard; + const size_t user_fpregs_offset = offsetof(struct user_vfp, fpregs); + const size_t user_fpscr_offset = offsetof(struct user_vfp, fpscr); + + vfp_sync_hwstate(thread); + + ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, + &vfp->fpregs, + user_fpregs_offset, + user_fpregs_offset + sizeof(vfp->fpregs)); + if (ret) + return ret; + + ret = user_regset_copyout_zero(&pos, &count, &kbuf, &ubuf, + user_fpregs_offset + sizeof(vfp->fpregs), + user_fpscr_offset); + if (ret) + return ret; + + return user_regset_copyout(&pos, &count, &kbuf, &ubuf, + &vfp->fpscr, + user_fpscr_offset, + user_fpscr_offset + sizeof(vfp->fpscr)); +} + +/* + * For vfp_set() a read-modify-write is done on the VFP registers, + * in order to avoid writing back a half-modified set of registers on + * failure. + */ +static int vfp_set(struct task_struct *target, + const struct user_regset *regset, + unsigned int pos, unsigned int count, + const void *kbuf, const void __user *ubuf) +{ + int ret; + struct thread_info *thread = task_thread_info(target); + struct vfp_hard_struct new_vfp = thread->vfpstate.hard; + const size_t user_fpregs_offset = offsetof(struct user_vfp, fpregs); + const size_t user_fpscr_offset = offsetof(struct user_vfp, fpscr); + + ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, + &new_vfp.fpregs, + user_fpregs_offset, + user_fpregs_offset + sizeof(new_vfp.fpregs)); + if (ret) + return ret; + + ret = user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf, + user_fpregs_offset + sizeof(new_vfp.fpregs), + user_fpscr_offset); + if (ret) + return ret; + + ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, + &new_vfp.fpscr, + user_fpscr_offset, + user_fpscr_offset + sizeof(new_vfp.fpscr)); + if (ret) + return ret; + + vfp_sync_hwstate(thread); + thread->vfpstate.hard = new_vfp; + vfp_flush_hwstate(thread); + + return 0; +} +#endif /* CONFIG_VFP */ + +enum arm_regset { + REGSET_GPR, + REGSET_FPR, +#ifdef CONFIG_VFP + REGSET_VFP, +#endif +}; + +static const struct user_regset arm_regsets[] = { + [REGSET_GPR] = { + .core_note_type = NT_PRSTATUS, + .n = ELF_NGREG, + .size = sizeof(u32), + .align = sizeof(u32), + .get = gpr_get, + .set = gpr_set + }, + [REGSET_FPR] = { + /* + * For the FPA regs in fpstate, the real fields are a mixture + * of sizes, so pretend that the registers are word-sized: + */ + .core_note_type = NT_PRFPREG, + .n = sizeof(struct user_fp) / sizeof(u32), + .size = sizeof(u32), + .align = sizeof(u32), + .get = fpa_get, + .set = fpa_set + }, +#ifdef CONFIG_VFP + [REGSET_VFP] = { + /* + * Pretend that the VFP regs are word-sized, since the FPSCR is + * a single word dangling at the end of struct user_vfp: + */ + .core_note_type = NT_ARM_VFP, + .n = ARM_VFPREGS_SIZE / sizeof(u32), + .size = sizeof(u32), + .align = sizeof(u32), + .get = vfp_get, + .set = vfp_set + }, +#endif /* CONFIG_VFP */ +}; + +static const struct user_regset_view user_arm_view = { + .name = "arm", .e_machine = ELF_ARCH, .ei_osabi = ELF_OSABI, + .regsets = arm_regsets, .n = ARRAY_SIZE(arm_regsets) +}; + +const struct user_regset_view *task_user_regset_view(struct task_struct *task) +{ + return &user_arm_view; +} + long arch_ptrace(struct task_struct *child, long request, unsigned long addr, unsigned long data) { @@ -710,19 +822,31 @@ long arch_ptrace(struct task_struct *child, long request, break; case PTRACE_GETREGS: - ret = ptrace_getregs(child, datap); + ret = copy_regset_to_user(child, + &user_arm_view, REGSET_GPR, + 0, sizeof(struct pt_regs), + datap); break; case PTRACE_SETREGS: - ret = ptrace_setregs(child, datap); + ret = copy_regset_from_user(child, + &user_arm_view, REGSET_GPR, + 0, sizeof(struct pt_regs), + datap); break; case PTRACE_GETFPREGS: - ret = ptrace_getfpregs(child, datap); + ret = copy_regset_to_user(child, + &user_arm_view, REGSET_FPR, + 0, sizeof(union fp_state), + datap); break; - + case PTRACE_SETFPREGS: - ret = ptrace_setfpregs(child, datap); + ret = copy_regset_from_user(child, + &user_arm_view, REGSET_FPR, + 0, sizeof(union fp_state), + datap); break; #ifdef CONFIG_IWMMXT @@ -757,11 +881,17 @@ long arch_ptrace(struct task_struct *child, long request, #ifdef CONFIG_VFP case PTRACE_GETVFPREGS: - ret = ptrace_getvfpregs(child, datap); + ret = copy_regset_to_user(child, + &user_arm_view, REGSET_VFP, + 0, ARM_VFPREGS_SIZE, + datap); break; case PTRACE_SETVFPREGS: - ret = ptrace_setvfpregs(child, datap); + ret = copy_regset_from_user(child, + &user_arm_view, REGSET_VFP, + 0, ARM_VFPREGS_SIZE, + datap); break; #endif diff --git a/trunk/arch/arm/kernel/setup.c b/trunk/arch/arm/kernel/setup.c index 006c1e884eaf..6dce209a623b 100644 --- a/trunk/arch/arm/kernel/setup.c +++ b/trunk/arch/arm/kernel/setup.c @@ -672,11 +672,16 @@ __tagtable(ATAG_REVISION, parse_tag_revision); static int __init parse_tag_cmdline(const struct tag *tag) { -#ifndef CONFIG_CMDLINE_FORCE - strlcpy(default_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE); -#else +#if defined(CONFIG_CMDLINE_EXTEND) + strlcat(default_command_line, " ", COMMAND_LINE_SIZE); + strlcat(default_command_line, tag->u.cmdline.cmdline, + COMMAND_LINE_SIZE); +#elif defined(CONFIG_CMDLINE_FORCE) pr_warning("Ignoring tag cmdline (using the default kernel command line)\n"); -#endif /* CONFIG_CMDLINE_FORCE */ +#else + strlcpy(default_command_line, tag->u.cmdline.cmdline, + COMMAND_LINE_SIZE); +#endif return 0; } diff --git a/trunk/arch/arm/kernel/smp.c b/trunk/arch/arm/kernel/smp.c index 007a0a950e75..d439a8f4c078 100644 --- a/trunk/arch/arm/kernel/smp.c +++ b/trunk/arch/arm/kernel/smp.c @@ -376,6 +376,13 @@ void __init smp_prepare_cpus(unsigned int max_cpus) } } +static void (*smp_cross_call)(const struct cpumask *, unsigned int); + +void __init set_smp_cross_call(void (*fn)(const struct cpumask *, unsigned int)) +{ + smp_cross_call = fn; +} + void arch_send_call_function_ipi_mask(const struct cpumask *mask) { smp_cross_call(mask, IPI_CALL_FUNC); diff --git a/trunk/arch/arm/kernel/vmlinux.lds.S b/trunk/arch/arm/kernel/vmlinux.lds.S index b4348e62ef06..e5287f21badc 100644 --- a/trunk/arch/arm/kernel/vmlinux.lds.S +++ b/trunk/arch/arm/kernel/vmlinux.lds.S @@ -82,7 +82,7 @@ SECTIONS #endif } - PERCPU(32, PAGE_SIZE) + PERCPU_SECTION(32) #ifndef CONFIG_XIP_KERNEL . = ALIGN(PAGE_SIZE); diff --git a/trunk/arch/arm/mach-bcmring/arch.c b/trunk/arch/arm/mach-bcmring/arch.c index 73eb066d2329..a604b9ebb501 100644 --- a/trunk/arch/arm/mach-bcmring/arch.c +++ b/trunk/arch/arm/mach-bcmring/arch.c @@ -169,6 +169,7 @@ MACHINE_START(BCMRING, "BCMRING") /* Maintainer: Broadcom Corporation */ .fixup = bcmring_fixup, .map_io = bcmring_map_io, + .init_early = bcmring_init_early, .init_irq = bcmring_init_irq, .timer = &bcmring_timer, .init_machine = bcmring_init_machine diff --git a/trunk/arch/arm/mach-bcmring/core.c b/trunk/arch/arm/mach-bcmring/core.c index 8fc2035759fb..43eadbcc29ed 100644 --- a/trunk/arch/arm/mach-bcmring/core.c +++ b/trunk/arch/arm/mach-bcmring/core.c @@ -28,8 +28,6 @@ #include #include #include -#include -#include #include #include @@ -37,6 +35,7 @@ #include #include #include +#include #include #include @@ -97,6 +96,35 @@ static struct clk dummy_apb_pclk = { .mode = CLK_MODE_XTAL, }; +/* Timer 0 - 25 MHz, Timer3 at bus clock rate, typically 150-166 MHz */ +#if defined(CONFIG_ARCH_FPGA11107) +/* fpga cpu/bus are currently 30 times slower so scale frequency as well to */ +/* slow down Linux's sense of time */ +#define TIMER0_FREQUENCY_MHZ (tmrHw_LOW_FREQUENCY_MHZ * 30) +#define TIMER1_FREQUENCY_MHZ (tmrHw_LOW_FREQUENCY_MHZ * 30) +#define TIMER3_FREQUENCY_MHZ (tmrHw_HIGH_FREQUENCY_MHZ * 30) +#define TIMER3_FREQUENCY_KHZ (tmrHw_HIGH_FREQUENCY_HZ / 1000 * 30) +#else +#define TIMER0_FREQUENCY_MHZ tmrHw_LOW_FREQUENCY_MHZ +#define TIMER1_FREQUENCY_MHZ tmrHw_LOW_FREQUENCY_MHZ +#define TIMER3_FREQUENCY_MHZ tmrHw_HIGH_FREQUENCY_MHZ +#define TIMER3_FREQUENCY_KHZ (tmrHw_HIGH_FREQUENCY_HZ / 1000) +#endif + +static struct clk sp804_timer012_clk = { + .name = "sp804-timer-0,1,2", + .type = CLK_TYPE_PRIMARY, + .mode = CLK_MODE_XTAL, + .rate_hz = TIMER1_FREQUENCY_MHZ * 1000000, +}; + +static struct clk sp804_timer3_clk = { + .name = "sp804-timer-3", + .type = CLK_TYPE_PRIMARY, + .mode = CLK_MODE_XTAL, + .rate_hz = TIMER3_FREQUENCY_KHZ * 1000, +}; + static struct clk_lookup lookups[] = { { /* Bus clock */ .con_id = "apb_pclk", @@ -107,6 +135,18 @@ static struct clk_lookup lookups[] = { }, { /* UART1 */ .dev_id = "uartb", .clk = &uart_clk, + }, { /* SP804 timer 0 */ + .dev_id = "sp804", + .con_id = "timer0", + .clk = &sp804_timer012_clk, + }, { /* SP804 timer 1 */ + .dev_id = "sp804", + .con_id = "timer1", + .clk = &sp804_timer012_clk, + }, { /* SP804 timer 3 */ + .dev_id = "sp804", + .con_id = "timer3", + .clk = &sp804_timer3_clk, } }; @@ -151,8 +191,6 @@ void __init bcmring_amba_init(void) chipcHw_busInterfaceClockEnable(bus_clock); - clkdev_add_table(lookups, ARRAY_SIZE(lookups)); - for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { struct amba_device *d = amba_devs[i]; amba_device_register(d, &iomem_resource); @@ -162,170 +200,18 @@ void __init bcmring_amba_init(void) /* * Where is the timer (VA)? */ -#define TIMER0_VA_BASE MM_IO_BASE_TMR -#define TIMER1_VA_BASE (MM_IO_BASE_TMR + 0x20) -#define TIMER2_VA_BASE (MM_IO_BASE_TMR + 0x40) -#define TIMER3_VA_BASE (MM_IO_BASE_TMR + 0x60) - -/* Timer 0 - 25 MHz, Timer3 at bus clock rate, typically 150-166 MHz */ -#if defined(CONFIG_ARCH_FPGA11107) -/* fpga cpu/bus are currently 30 times slower so scale frequency as well to */ -/* slow down Linux's sense of time */ -#define TIMER0_FREQUENCY_MHZ (tmrHw_LOW_FREQUENCY_MHZ * 30) -#define TIMER1_FREQUENCY_MHZ (tmrHw_LOW_FREQUENCY_MHZ * 30) -#define TIMER3_FREQUENCY_MHZ (tmrHw_HIGH_FREQUENCY_MHZ * 30) -#define TIMER3_FREQUENCY_KHZ (tmrHw_HIGH_FREQUENCY_HZ / 1000 * 30) -#else -#define TIMER0_FREQUENCY_MHZ tmrHw_LOW_FREQUENCY_MHZ -#define TIMER1_FREQUENCY_MHZ tmrHw_LOW_FREQUENCY_MHZ -#define TIMER3_FREQUENCY_MHZ tmrHw_HIGH_FREQUENCY_MHZ -#define TIMER3_FREQUENCY_KHZ (tmrHw_HIGH_FREQUENCY_HZ / 1000) -#endif - -#define TICKS_PER_uSEC TIMER0_FREQUENCY_MHZ - -/* - * These are useconds NOT ticks. - * - */ -#define mSEC_1 1000 -#define mSEC_5 (mSEC_1 * 5) -#define mSEC_10 (mSEC_1 * 10) -#define mSEC_25 (mSEC_1 * 25) -#define SEC_1 (mSEC_1 * 1000) - -/* - * How long is the timer interval? - */ -#define TIMER_INTERVAL (TICKS_PER_uSEC * mSEC_10) -#if TIMER_INTERVAL >= 0x100000 -#define TIMER_RELOAD (TIMER_INTERVAL >> 8) -#define TIMER_DIVISOR (TIMER_CTRL_DIV256) -#define TICKS2USECS(x) (256 * (x) / TICKS_PER_uSEC) -#elif TIMER_INTERVAL >= 0x10000 -#define TIMER_RELOAD (TIMER_INTERVAL >> 4) /* Divide by 16 */ -#define TIMER_DIVISOR (TIMER_CTRL_DIV16) -#define TICKS2USECS(x) (16 * (x) / TICKS_PER_uSEC) -#else -#define TIMER_RELOAD (TIMER_INTERVAL) -#define TIMER_DIVISOR (TIMER_CTRL_DIV1) -#define TICKS2USECS(x) ((x) / TICKS_PER_uSEC) -#endif - -static void timer_set_mode(enum clock_event_mode mode, - struct clock_event_device *clk) -{ - unsigned long ctrl; - - switch (mode) { - case CLOCK_EVT_MODE_PERIODIC: - writel(TIMER_RELOAD, TIMER0_VA_BASE + TIMER_LOAD); - - ctrl = TIMER_CTRL_PERIODIC; - ctrl |= - TIMER_DIVISOR | TIMER_CTRL_32BIT | TIMER_CTRL_IE | - TIMER_CTRL_ENABLE; - break; - case CLOCK_EVT_MODE_ONESHOT: - /* period set, and timer enabled in 'next_event' hook */ - ctrl = TIMER_CTRL_ONESHOT; - ctrl |= TIMER_DIVISOR | TIMER_CTRL_32BIT | TIMER_CTRL_IE; - break; - case CLOCK_EVT_MODE_UNUSED: - case CLOCK_EVT_MODE_SHUTDOWN: - default: - ctrl = 0; - } - - writel(ctrl, TIMER0_VA_BASE + TIMER_CTRL); -} - -static int timer_set_next_event(unsigned long evt, - struct clock_event_device *unused) -{ - unsigned long ctrl = readl(TIMER0_VA_BASE + TIMER_CTRL); - - writel(evt, TIMER0_VA_BASE + TIMER_LOAD); - writel(ctrl | TIMER_CTRL_ENABLE, TIMER0_VA_BASE + TIMER_CTRL); - - return 0; -} - -static struct clock_event_device timer0_clockevent = { - .name = "timer0", - .shift = 32, - .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, - .set_mode = timer_set_mode, - .set_next_event = timer_set_next_event, -}; - -/* - * IRQ handler for the timer - */ -static irqreturn_t bcmring_timer_interrupt(int irq, void *dev_id) -{ - struct clock_event_device *evt = &timer0_clockevent; - - writel(1, TIMER0_VA_BASE + TIMER_INTCLR); - - evt->event_handler(evt); - - return IRQ_HANDLED; -} - -static struct irqaction bcmring_timer_irq = { - .name = "bcmring Timer Tick", - .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL, - .handler = bcmring_timer_interrupt, -}; - -static cycle_t bcmring_get_cycles_timer1(struct clocksource *cs) -{ - return ~readl(TIMER1_VA_BASE + TIMER_VALUE); -} - -static cycle_t bcmring_get_cycles_timer3(struct clocksource *cs) -{ - return ~readl(TIMER3_VA_BASE + TIMER_VALUE); -} - -static struct clocksource clocksource_bcmring_timer1 = { - .name = "timer1", - .rating = 200, - .read = bcmring_get_cycles_timer1, - .mask = CLOCKSOURCE_MASK(32), - .flags = CLOCK_SOURCE_IS_CONTINUOUS, -}; - -static struct clocksource clocksource_bcmring_timer3 = { - .name = "timer3", - .rating = 100, - .read = bcmring_get_cycles_timer3, - .mask = CLOCKSOURCE_MASK(32), - .flags = CLOCK_SOURCE_IS_CONTINUOUS, -}; +#define TIMER0_VA_BASE ((void __iomem *)MM_IO_BASE_TMR) +#define TIMER1_VA_BASE ((void __iomem *)(MM_IO_BASE_TMR + 0x20)) +#define TIMER2_VA_BASE ((void __iomem *)(MM_IO_BASE_TMR + 0x40)) +#define TIMER3_VA_BASE ((void __iomem *)(MM_IO_BASE_TMR + 0x60)) static int __init bcmring_clocksource_init(void) { /* setup timer1 as free-running clocksource */ - writel(0, TIMER1_VA_BASE + TIMER_CTRL); - writel(0xffffffff, TIMER1_VA_BASE + TIMER_LOAD); - writel(0xffffffff, TIMER1_VA_BASE + TIMER_VALUE); - writel(TIMER_CTRL_32BIT | TIMER_CTRL_ENABLE | TIMER_CTRL_PERIODIC, - TIMER1_VA_BASE + TIMER_CTRL); - - clocksource_register_khz(&clocksource_bcmring_timer1, - TIMER1_FREQUENCY_MHZ * 1000); + sp804_clocksource_init(TIMER1_VA_BASE, "timer1"); /* setup timer3 as free-running clocksource */ - writel(0, TIMER3_VA_BASE + TIMER_CTRL); - writel(0xffffffff, TIMER3_VA_BASE + TIMER_LOAD); - writel(0xffffffff, TIMER3_VA_BASE + TIMER_VALUE); - writel(TIMER_CTRL_32BIT | TIMER_CTRL_ENABLE | TIMER_CTRL_PERIODIC, - TIMER3_VA_BASE + TIMER_CTRL); - - clocksource_register_khz(&clocksource_bcmring_timer3, - TIMER3_FREQUENCY_KHZ); + sp804_clocksource_init(TIMER3_VA_BASE, "timer3"); return 0; } @@ -347,21 +233,16 @@ void __init bcmring_init_timer(void) /* * Make irqs happen for the system timer */ - setup_irq(IRQ_TIMER0, &bcmring_timer_irq); - bcmring_clocksource_init(); - timer0_clockevent.mult = - div_sc(1000000, NSEC_PER_SEC, timer0_clockevent.shift); - timer0_clockevent.max_delta_ns = - clockevent_delta2ns(0xffffffff, &timer0_clockevent); - timer0_clockevent.min_delta_ns = - clockevent_delta2ns(0xf, &timer0_clockevent); - - timer0_clockevent.cpumask = cpumask_of(0); - clockevents_register_device(&timer0_clockevent); + sp804_clockevents_register(TIMER0_VA_BASE, IRQ_TIMER0, "timer0"); } struct sys_timer bcmring_timer = { .init = bcmring_init_timer, }; + +void __init bcmring_init_early(void) +{ + clkdev_add_table(lookups, ARRAY_SIZE(lookups)); +} diff --git a/trunk/arch/arm/mach-bcmring/core.h b/trunk/arch/arm/mach-bcmring/core.h index b197ba48e36e..e0e02c48f9b1 100644 --- a/trunk/arch/arm/mach-bcmring/core.h +++ b/trunk/arch/arm/mach-bcmring/core.h @@ -25,6 +25,7 @@ void __init bcmring_amba_init(void); void __init bcmring_map_io(void); void __init bcmring_init_irq(void); +void __init bcmring_init_early(void); extern struct sys_timer bcmring_timer; #endif diff --git a/trunk/arch/arm/mach-davinci/include/mach/memory.h b/trunk/arch/arm/mach-davinci/include/mach/memory.h index 78822723f382..491249ef209c 100644 --- a/trunk/arch/arm/mach-davinci/include/mach/memory.h +++ b/trunk/arch/arm/mach-davinci/include/mach/memory.h @@ -41,27 +41,11 @@ */ #define CONSISTENT_DMA_SIZE (14<<20) -#ifndef __ASSEMBLY__ /* * Restrict DMA-able region to workaround silicon bug. The bug * restricts buffers available for DMA to video hardware to be * below 128M */ -static inline void -__arch_adjust_zones(unsigned long *size, unsigned long *holes) -{ - unsigned int sz = (128<<20) >> PAGE_SHIFT; - - size[1] = size[0] - sz; - size[0] = sz; -} - -#define arch_adjust_zones(zone_size, holes) \ - if ((meminfo.bank[0].size >> 20) > 128) __arch_adjust_zones(zone_size, holes) - -#define ISA_DMA_THRESHOLD (PHYS_OFFSET + (128<<20) - 1) -#define MAX_DMA_ADDRESS (PAGE_OFFSET + (128<<20)) - -#endif +#define ARM_DMA_ZONE_SIZE SZ_128M #endif /* __ASM_ARCH_MEMORY_H */ diff --git a/trunk/arch/arm/mach-davinci/include/mach/uncompress.h b/trunk/arch/arm/mach-davinci/include/mach/uncompress.h index 47723e8d75a4..78d80683cdc2 100644 --- a/trunk/arch/arm/mach-davinci/include/mach/uncompress.h +++ b/trunk/arch/arm/mach-davinci/include/mach/uncompress.h @@ -25,8 +25,7 @@ #include -static u32 *uart; -static u32 *uart_info = (u32 *)(DAVINCI_UART_INFO); +u32 *uart; /* PORT_16C550A, in polled non-fifo mode */ static void putc(char c) @@ -44,6 +43,8 @@ static inline void flush(void) static inline void set_uart_info(u32 phys, void * __iomem virt) { + u32 *uart_info = (u32 *)(DAVINCI_UART_INFO); + uart = (u32 *)phys; uart_info[0] = phys; uart_info[1] = (u32)virt; diff --git a/trunk/arch/arm/mach-davinci/irq.c b/trunk/arch/arm/mach-davinci/irq.c index e6269a6e0014..bfe68ec4e1a6 100644 --- a/trunk/arch/arm/mach-davinci/irq.c +++ b/trunk/arch/arm/mach-davinci/irq.c @@ -29,8 +29,6 @@ #include #include -#define IRQ_BIT(irq) ((irq) & 0x1f) - #define FIQ_REG0_OFFSET 0x0000 #define FIQ_REG1_OFFSET 0x0004 #define IRQ_REG0_OFFSET 0x0008 @@ -42,78 +40,33 @@ #define IRQ_INTPRI0_REG_OFFSET 0x0030 #define IRQ_INTPRI7_REG_OFFSET 0x004C -static inline unsigned int davinci_irq_readl(int offset) -{ - return __raw_readl(davinci_intc_base + offset); -} - static inline void davinci_irq_writel(unsigned long value, int offset) { __raw_writel(value, davinci_intc_base + offset); } -/* Disable interrupt */ -static void davinci_mask_irq(struct irq_data *d) +static __init void +davinci_alloc_gc(void __iomem *base, unsigned int irq_start, unsigned int num) { - unsigned int mask; - u32 l; - - mask = 1 << IRQ_BIT(d->irq); - - if (d->irq > 31) { - l = davinci_irq_readl(IRQ_ENT_REG1_OFFSET); - l &= ~mask; - davinci_irq_writel(l, IRQ_ENT_REG1_OFFSET); - } else { - l = davinci_irq_readl(IRQ_ENT_REG0_OFFSET); - l &= ~mask; - davinci_irq_writel(l, IRQ_ENT_REG0_OFFSET); - } -} - -/* Enable interrupt */ -static void davinci_unmask_irq(struct irq_data *d) -{ - unsigned int mask; - u32 l; - - mask = 1 << IRQ_BIT(d->irq); - - if (d->irq > 31) { - l = davinci_irq_readl(IRQ_ENT_REG1_OFFSET); - l |= mask; - davinci_irq_writel(l, IRQ_ENT_REG1_OFFSET); - } else { - l = davinci_irq_readl(IRQ_ENT_REG0_OFFSET); - l |= mask; - davinci_irq_writel(l, IRQ_ENT_REG0_OFFSET); - } + struct irq_chip_generic *gc; + struct irq_chip_type *ct; + + gc = irq_alloc_generic_chip("AINTC", 1, irq_start, base, handle_edge_irq); + ct = gc->chip_types; + ct->chip.irq_ack = irq_gc_ack; + ct->chip.irq_mask = irq_gc_mask_clr_bit; + ct->chip.irq_unmask = irq_gc_mask_set_bit; + + ct->regs.ack = IRQ_REG0_OFFSET; + ct->regs.mask = IRQ_ENT_REG0_OFFSET; + irq_setup_generic_chip(gc, IRQ_MSK(num), IRQ_GC_INIT_MASK_CACHE, + IRQ_NOREQUEST | IRQ_NOPROBE, 0); } -/* EOI interrupt */ -static void davinci_ack_irq(struct irq_data *d) -{ - unsigned int mask; - - mask = 1 << IRQ_BIT(d->irq); - - if (d->irq > 31) - davinci_irq_writel(mask, IRQ_REG1_OFFSET); - else - davinci_irq_writel(mask, IRQ_REG0_OFFSET); -} - -static struct irq_chip davinci_irq_chip_0 = { - .name = "AINTC", - .irq_ack = davinci_ack_irq, - .irq_mask = davinci_mask_irq, - .irq_unmask = davinci_unmask_irq, -}; - /* ARM Interrupt Controller Initialization */ void __init davinci_irq_init(void) { - unsigned i; + unsigned i, j; const u8 *davinci_def_priorities = davinci_soc_info.intc_irq_prios; davinci_intc_type = DAVINCI_INTC_TYPE_AINTC; @@ -144,7 +97,6 @@ void __init davinci_irq_init(void) davinci_irq_writel(~0x0, IRQ_REG1_OFFSET); for (i = IRQ_INTPRI0_REG_OFFSET; i <= IRQ_INTPRI7_REG_OFFSET; i += 4) { - unsigned j; u32 pri; for (j = 0, pri = 0; j < 32; j += 4, davinci_def_priorities++) @@ -152,13 +104,8 @@ void __init davinci_irq_init(void) davinci_irq_writel(pri, i); } - /* set up genirq dispatch for ARM INTC */ - for (i = 0; i < davinci_soc_info.intc_irq_num; i++) { - irq_set_chip(i, &davinci_irq_chip_0); - set_irq_flags(i, IRQF_VALID | IRQF_PROBE); - if (i != IRQ_TINT1_TINT34) - irq_set_handler(i, handle_edge_irq); - else - irq_set_handler(i, handle_level_irq); - } + for (i = 0, j = 0; i < davinci_soc_info.intc_irq_num; i += 32, j += 0x04) + davinci_alloc_gc(davinci_intc_base + j, i, 32); + + irq_set_handler(IRQ_TINT1_TINT34, handle_level_irq); } diff --git a/trunk/arch/arm/mach-dove/common.c b/trunk/arch/arm/mach-dove/common.c index e06a88f1f81d..5ed51b84c1b2 100644 --- a/trunk/arch/arm/mach-dove/common.c +++ b/trunk/arch/arm/mach-dove/common.c @@ -16,10 +16,8 @@ #include #include #include -#include -#include #include -#include +#include #include #include #include @@ -32,11 +30,12 @@ #include #include #include -#include -#include #include +#include #include "common.h" +static int get_tclk(void); + /***************************************************************************** * I/O Address Mapping ****************************************************************************/ @@ -69,464 +68,107 @@ void __init dove_map_io(void) iotable_init(dove_io_desc, ARRAY_SIZE(dove_io_desc)); } -/***************************************************************************** - * EHCI - ****************************************************************************/ -static struct orion_ehci_data dove_ehci_data = { - .dram = &dove_mbus_dram_info, - .phy_version = EHCI_PHY_NA, -}; - -static u64 ehci_dmamask = DMA_BIT_MASK(32); - /***************************************************************************** * EHCI0 ****************************************************************************/ -static struct resource dove_ehci0_resources[] = { - { - .start = DOVE_USB0_PHYS_BASE, - .end = DOVE_USB0_PHYS_BASE + SZ_4K - 1, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_DOVE_USB0, - .end = IRQ_DOVE_USB0, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device dove_ehci0 = { - .name = "orion-ehci", - .id = 0, - .dev = { - .dma_mask = &ehci_dmamask, - .coherent_dma_mask = DMA_BIT_MASK(32), - .platform_data = &dove_ehci_data, - }, - .resource = dove_ehci0_resources, - .num_resources = ARRAY_SIZE(dove_ehci0_resources), -}; - void __init dove_ehci0_init(void) { - platform_device_register(&dove_ehci0); + orion_ehci_init(&dove_mbus_dram_info, + DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0); } /***************************************************************************** * EHCI1 ****************************************************************************/ -static struct resource dove_ehci1_resources[] = { - { - .start = DOVE_USB1_PHYS_BASE, - .end = DOVE_USB1_PHYS_BASE + SZ_4K - 1, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_DOVE_USB1, - .end = IRQ_DOVE_USB1, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device dove_ehci1 = { - .name = "orion-ehci", - .id = 1, - .dev = { - .dma_mask = &ehci_dmamask, - .coherent_dma_mask = DMA_BIT_MASK(32), - .platform_data = &dove_ehci_data, - }, - .resource = dove_ehci1_resources, - .num_resources = ARRAY_SIZE(dove_ehci1_resources), -}; - void __init dove_ehci1_init(void) { - platform_device_register(&dove_ehci1); + orion_ehci_1_init(&dove_mbus_dram_info, + DOVE_USB1_PHYS_BASE, IRQ_DOVE_USB1); } /***************************************************************************** * GE00 ****************************************************************************/ -struct mv643xx_eth_shared_platform_data dove_ge00_shared_data = { - .t_clk = 0, - .dram = &dove_mbus_dram_info, -}; - -static struct resource dove_ge00_shared_resources[] = { - { - .name = "ge00 base", - .start = DOVE_GE00_PHYS_BASE + 0x2000, - .end = DOVE_GE00_PHYS_BASE + SZ_16K - 1, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device dove_ge00_shared = { - .name = MV643XX_ETH_SHARED_NAME, - .id = 0, - .dev = { - .platform_data = &dove_ge00_shared_data, - }, - .num_resources = 1, - .resource = dove_ge00_shared_resources, -}; - -static struct resource dove_ge00_resources[] = { - { - .name = "ge00 irq", - .start = IRQ_DOVE_GE00_SUM, - .end = IRQ_DOVE_GE00_SUM, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device dove_ge00 = { - .name = MV643XX_ETH_NAME, - .id = 0, - .num_resources = 1, - .resource = dove_ge00_resources, - .dev = { - .coherent_dma_mask = 0xffffffff, - }, -}; - void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data) { - eth_data->shared = &dove_ge00_shared; - dove_ge00.dev.platform_data = eth_data; - - platform_device_register(&dove_ge00_shared); - platform_device_register(&dove_ge00); + orion_ge00_init(eth_data, &dove_mbus_dram_info, + DOVE_GE00_PHYS_BASE, IRQ_DOVE_GE00_SUM, + 0, get_tclk()); } /***************************************************************************** * SoC RTC ****************************************************************************/ -static struct resource dove_rtc_resource[] = { - { - .start = DOVE_RTC_PHYS_BASE, - .end = DOVE_RTC_PHYS_BASE + 32 - 1, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_DOVE_RTC, - .flags = IORESOURCE_IRQ, - } -}; - void __init dove_rtc_init(void) { - platform_device_register_simple("rtc-mv", -1, dove_rtc_resource, 2); + orion_rtc_init(DOVE_RTC_PHYS_BASE, IRQ_DOVE_RTC); } /***************************************************************************** * SATA ****************************************************************************/ -static struct resource dove_sata_resources[] = { - { - .name = "sata base", - .start = DOVE_SATA_PHYS_BASE, - .end = DOVE_SATA_PHYS_BASE + 0x5000 - 1, - .flags = IORESOURCE_MEM, - }, { - .name = "sata irq", - .start = IRQ_DOVE_SATA, - .end = IRQ_DOVE_SATA, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device dove_sata = { - .name = "sata_mv", - .id = 0, - .dev = { - .coherent_dma_mask = DMA_BIT_MASK(32), - }, - .num_resources = ARRAY_SIZE(dove_sata_resources), - .resource = dove_sata_resources, -}; - void __init dove_sata_init(struct mv_sata_platform_data *sata_data) { - sata_data->dram = &dove_mbus_dram_info; - dove_sata.dev.platform_data = sata_data; - platform_device_register(&dove_sata); + orion_sata_init(sata_data, &dove_mbus_dram_info, + DOVE_SATA_PHYS_BASE, IRQ_DOVE_SATA); + } /***************************************************************************** * UART0 ****************************************************************************/ -static struct plat_serial8250_port dove_uart0_data[] = { - { - .mapbase = DOVE_UART0_PHYS_BASE, - .membase = (char *)DOVE_UART0_VIRT_BASE, - .irq = IRQ_DOVE_UART_0, - .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, - .iotype = UPIO_MEM, - .regshift = 2, - .uartclk = 0, - }, { - }, -}; - -static struct resource dove_uart0_resources[] = { - { - .start = DOVE_UART0_PHYS_BASE, - .end = DOVE_UART0_PHYS_BASE + SZ_256 - 1, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_DOVE_UART_0, - .end = IRQ_DOVE_UART_0, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device dove_uart0 = { - .name = "serial8250", - .id = 0, - .dev = { - .platform_data = dove_uart0_data, - }, - .resource = dove_uart0_resources, - .num_resources = ARRAY_SIZE(dove_uart0_resources), -}; - void __init dove_uart0_init(void) { - platform_device_register(&dove_uart0); + orion_uart0_init(DOVE_UART0_VIRT_BASE, DOVE_UART0_PHYS_BASE, + IRQ_DOVE_UART_0, get_tclk()); } /***************************************************************************** * UART1 ****************************************************************************/ -static struct plat_serial8250_port dove_uart1_data[] = { - { - .mapbase = DOVE_UART1_PHYS_BASE, - .membase = (char *)DOVE_UART1_VIRT_BASE, - .irq = IRQ_DOVE_UART_1, - .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, - .iotype = UPIO_MEM, - .regshift = 2, - .uartclk = 0, - }, { - }, -}; - -static struct resource dove_uart1_resources[] = { - { - .start = DOVE_UART1_PHYS_BASE, - .end = DOVE_UART1_PHYS_BASE + SZ_256 - 1, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_DOVE_UART_1, - .end = IRQ_DOVE_UART_1, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device dove_uart1 = { - .name = "serial8250", - .id = 1, - .dev = { - .platform_data = dove_uart1_data, - }, - .resource = dove_uart1_resources, - .num_resources = ARRAY_SIZE(dove_uart1_resources), -}; - void __init dove_uart1_init(void) { - platform_device_register(&dove_uart1); + orion_uart1_init(DOVE_UART1_VIRT_BASE, DOVE_UART1_PHYS_BASE, + IRQ_DOVE_UART_1, get_tclk()); } /***************************************************************************** * UART2 ****************************************************************************/ -static struct plat_serial8250_port dove_uart2_data[] = { - { - .mapbase = DOVE_UART2_PHYS_BASE, - .membase = (char *)DOVE_UART2_VIRT_BASE, - .irq = IRQ_DOVE_UART_2, - .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, - .iotype = UPIO_MEM, - .regshift = 2, - .uartclk = 0, - }, { - }, -}; - -static struct resource dove_uart2_resources[] = { - { - .start = DOVE_UART2_PHYS_BASE, - .end = DOVE_UART2_PHYS_BASE + SZ_256 - 1, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_DOVE_UART_2, - .end = IRQ_DOVE_UART_2, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device dove_uart2 = { - .name = "serial8250", - .id = 2, - .dev = { - .platform_data = dove_uart2_data, - }, - .resource = dove_uart2_resources, - .num_resources = ARRAY_SIZE(dove_uart2_resources), -}; - void __init dove_uart2_init(void) { - platform_device_register(&dove_uart2); + orion_uart2_init(DOVE_UART2_VIRT_BASE, DOVE_UART2_PHYS_BASE, + IRQ_DOVE_UART_2, get_tclk()); } /***************************************************************************** * UART3 ****************************************************************************/ -static struct plat_serial8250_port dove_uart3_data[] = { - { - .mapbase = DOVE_UART3_PHYS_BASE, - .membase = (char *)DOVE_UART3_VIRT_BASE, - .irq = IRQ_DOVE_UART_3, - .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, - .iotype = UPIO_MEM, - .regshift = 2, - .uartclk = 0, - }, { - }, -}; - -static struct resource dove_uart3_resources[] = { - { - .start = DOVE_UART3_PHYS_BASE, - .end = DOVE_UART3_PHYS_BASE + SZ_256 - 1, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_DOVE_UART_3, - .end = IRQ_DOVE_UART_3, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device dove_uart3 = { - .name = "serial8250", - .id = 3, - .dev = { - .platform_data = dove_uart3_data, - }, - .resource = dove_uart3_resources, - .num_resources = ARRAY_SIZE(dove_uart3_resources), -}; - void __init dove_uart3_init(void) { - platform_device_register(&dove_uart3); + orion_uart3_init(DOVE_UART3_VIRT_BASE, DOVE_UART3_PHYS_BASE, + IRQ_DOVE_UART_3, get_tclk()); } /***************************************************************************** - * SPI0 + * SPI ****************************************************************************/ -static struct orion_spi_info dove_spi0_data = { - .tclk = 0, -}; - -static struct resource dove_spi0_resources[] = { - { - .start = DOVE_SPI0_PHYS_BASE, - .end = DOVE_SPI0_PHYS_BASE + SZ_512 - 1, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_DOVE_SPI0, - .end = IRQ_DOVE_SPI0, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device dove_spi0 = { - .name = "orion_spi", - .id = 0, - .resource = dove_spi0_resources, - .dev = { - .platform_data = &dove_spi0_data, - }, - .num_resources = ARRAY_SIZE(dove_spi0_resources), -}; - void __init dove_spi0_init(void) { - platform_device_register(&dove_spi0); + orion_spi_init(DOVE_SPI0_PHYS_BASE, get_tclk()); } -/***************************************************************************** - * SPI1 - ****************************************************************************/ -static struct orion_spi_info dove_spi1_data = { - .tclk = 0, -}; - -static struct resource dove_spi1_resources[] = { - { - .start = DOVE_SPI1_PHYS_BASE, - .end = DOVE_SPI1_PHYS_BASE + SZ_512 - 1, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_DOVE_SPI1, - .end = IRQ_DOVE_SPI1, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device dove_spi1 = { - .name = "orion_spi", - .id = 1, - .resource = dove_spi1_resources, - .dev = { - .platform_data = &dove_spi1_data, - }, - .num_resources = ARRAY_SIZE(dove_spi1_resources), -}; - void __init dove_spi1_init(void) { - platform_device_register(&dove_spi1); + orion_spi_init(DOVE_SPI1_PHYS_BASE, get_tclk()); } /***************************************************************************** * I2C ****************************************************************************/ -static struct mv64xxx_i2c_pdata dove_i2c_data = { - .freq_m = 10, /* assumes 166 MHz TCLK gets 94.3kHz */ - .freq_n = 3, - .timeout = 1000, /* Default timeout of 1 second */ -}; - -static struct resource dove_i2c_resources[] = { - { - .name = "i2c base", - .start = DOVE_I2C_PHYS_BASE, - .end = DOVE_I2C_PHYS_BASE + 0x20 - 1, - .flags = IORESOURCE_MEM, - }, { - .name = "i2c irq", - .start = IRQ_DOVE_I2C, - .end = IRQ_DOVE_I2C, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device dove_i2c = { - .name = MV64XXX_I2C_CTLR_NAME, - .id = 0, - .num_resources = ARRAY_SIZE(dove_i2c_resources), - .resource = dove_i2c_resources, - .dev = { - .platform_data = &dove_i2c_data, - }, -}; - void __init dove_i2c_init(void) { - platform_device_register(&dove_i2c); + orion_i2c_init(DOVE_I2C_PHYS_BASE, IRQ_DOVE_I2C, 10); } /***************************************************************************** @@ -553,209 +195,23 @@ struct sys_timer dove_timer = { .init = dove_timer_init, }; -/***************************************************************************** - * XOR - ****************************************************************************/ -static struct mv_xor_platform_shared_data dove_xor_shared_data = { - .dram = &dove_mbus_dram_info, -}; - /***************************************************************************** * XOR 0 ****************************************************************************/ -static u64 dove_xor0_dmamask = DMA_BIT_MASK(32); - -static struct resource dove_xor0_shared_resources[] = { - { - .name = "xor 0 low", - .start = DOVE_XOR0_PHYS_BASE, - .end = DOVE_XOR0_PHYS_BASE + 0xff, - .flags = IORESOURCE_MEM, - }, { - .name = "xor 0 high", - .start = DOVE_XOR0_HIGH_PHYS_BASE, - .end = DOVE_XOR0_HIGH_PHYS_BASE + 0xff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device dove_xor0_shared = { - .name = MV_XOR_SHARED_NAME, - .id = 0, - .dev = { - .platform_data = &dove_xor_shared_data, - }, - .num_resources = ARRAY_SIZE(dove_xor0_shared_resources), - .resource = dove_xor0_shared_resources, -}; - -static struct resource dove_xor00_resources[] = { - [0] = { - .start = IRQ_DOVE_XOR_00, - .end = IRQ_DOVE_XOR_00, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct mv_xor_platform_data dove_xor00_data = { - .shared = &dove_xor0_shared, - .hw_id = 0, - .pool_size = PAGE_SIZE, -}; - -static struct platform_device dove_xor00_channel = { - .name = MV_XOR_NAME, - .id = 0, - .num_resources = ARRAY_SIZE(dove_xor00_resources), - .resource = dove_xor00_resources, - .dev = { - .dma_mask = &dove_xor0_dmamask, - .coherent_dma_mask = DMA_BIT_MASK(64), - .platform_data = &dove_xor00_data, - }, -}; - -static struct resource dove_xor01_resources[] = { - [0] = { - .start = IRQ_DOVE_XOR_01, - .end = IRQ_DOVE_XOR_01, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct mv_xor_platform_data dove_xor01_data = { - .shared = &dove_xor0_shared, - .hw_id = 1, - .pool_size = PAGE_SIZE, -}; - -static struct platform_device dove_xor01_channel = { - .name = MV_XOR_NAME, - .id = 1, - .num_resources = ARRAY_SIZE(dove_xor01_resources), - .resource = dove_xor01_resources, - .dev = { - .dma_mask = &dove_xor0_dmamask, - .coherent_dma_mask = DMA_BIT_MASK(64), - .platform_data = &dove_xor01_data, - }, -}; - void __init dove_xor0_init(void) { - platform_device_register(&dove_xor0_shared); - - /* - * two engines can't do memset simultaneously, this limitation - * satisfied by removing memset support from one of the engines. - */ - dma_cap_set(DMA_MEMCPY, dove_xor00_data.cap_mask); - dma_cap_set(DMA_XOR, dove_xor00_data.cap_mask); - platform_device_register(&dove_xor00_channel); - - dma_cap_set(DMA_MEMCPY, dove_xor01_data.cap_mask); - dma_cap_set(DMA_MEMSET, dove_xor01_data.cap_mask); - dma_cap_set(DMA_XOR, dove_xor01_data.cap_mask); - platform_device_register(&dove_xor01_channel); + orion_xor0_init(&dove_mbus_dram_info, + DOVE_XOR0_PHYS_BASE, DOVE_XOR0_HIGH_PHYS_BASE, + IRQ_DOVE_XOR_00, IRQ_DOVE_XOR_01); } /***************************************************************************** * XOR 1 ****************************************************************************/ -static u64 dove_xor1_dmamask = DMA_BIT_MASK(32); - -static struct resource dove_xor1_shared_resources[] = { - { - .name = "xor 0 low", - .start = DOVE_XOR1_PHYS_BASE, - .end = DOVE_XOR1_PHYS_BASE + 0xff, - .flags = IORESOURCE_MEM, - }, { - .name = "xor 0 high", - .start = DOVE_XOR1_HIGH_PHYS_BASE, - .end = DOVE_XOR1_HIGH_PHYS_BASE + 0xff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device dove_xor1_shared = { - .name = MV_XOR_SHARED_NAME, - .id = 1, - .dev = { - .platform_data = &dove_xor_shared_data, - }, - .num_resources = ARRAY_SIZE(dove_xor1_shared_resources), - .resource = dove_xor1_shared_resources, -}; - -static struct resource dove_xor10_resources[] = { - [0] = { - .start = IRQ_DOVE_XOR_10, - .end = IRQ_DOVE_XOR_10, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct mv_xor_platform_data dove_xor10_data = { - .shared = &dove_xor1_shared, - .hw_id = 0, - .pool_size = PAGE_SIZE, -}; - -static struct platform_device dove_xor10_channel = { - .name = MV_XOR_NAME, - .id = 2, - .num_resources = ARRAY_SIZE(dove_xor10_resources), - .resource = dove_xor10_resources, - .dev = { - .dma_mask = &dove_xor1_dmamask, - .coherent_dma_mask = DMA_BIT_MASK(64), - .platform_data = &dove_xor10_data, - }, -}; - -static struct resource dove_xor11_resources[] = { - [0] = { - .start = IRQ_DOVE_XOR_11, - .end = IRQ_DOVE_XOR_11, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct mv_xor_platform_data dove_xor11_data = { - .shared = &dove_xor1_shared, - .hw_id = 1, - .pool_size = PAGE_SIZE, -}; - -static struct platform_device dove_xor11_channel = { - .name = MV_XOR_NAME, - .id = 3, - .num_resources = ARRAY_SIZE(dove_xor11_resources), - .resource = dove_xor11_resources, - .dev = { - .dma_mask = &dove_xor1_dmamask, - .coherent_dma_mask = DMA_BIT_MASK(64), - .platform_data = &dove_xor11_data, - }, -}; - void __init dove_xor1_init(void) { - platform_device_register(&dove_xor1_shared); - - /* - * two engines can't do memset simultaneously, this limitation - * satisfied by removing memset support from one of the engines. - */ - dma_cap_set(DMA_MEMCPY, dove_xor10_data.cap_mask); - dma_cap_set(DMA_XOR, dove_xor10_data.cap_mask); - platform_device_register(&dove_xor10_channel); - - dma_cap_set(DMA_MEMCPY, dove_xor11_data.cap_mask); - dma_cap_set(DMA_MEMSET, dove_xor11_data.cap_mask); - dma_cap_set(DMA_XOR, dove_xor11_data.cap_mask); - platform_device_register(&dove_xor11_channel); + orion_xor1_init(DOVE_XOR1_PHYS_BASE, DOVE_XOR1_HIGH_PHYS_BASE, + IRQ_DOVE_XOR_10, IRQ_DOVE_XOR_11); } /***************************************************************************** @@ -833,14 +289,6 @@ void __init dove_init(void) #endif dove_setup_cpu_mbus(); - dove_ge00_shared_data.t_clk = tclk; - dove_uart0_data[0].uartclk = tclk; - dove_uart1_data[0].uartclk = tclk; - dove_uart2_data[0].uartclk = tclk; - dove_uart3_data[0].uartclk = tclk; - dove_spi0_data.tclk = tclk; - dove_spi1_data.tclk = tclk; - /* internal devices that every board has */ dove_rtc_init(); dove_xor0_init(); diff --git a/trunk/arch/arm/mach-dove/mpp.c b/trunk/arch/arm/mach-dove/mpp.c index c66c76346904..51e0e411c9cb 100644 --- a/trunk/arch/arm/mach-dove/mpp.c +++ b/trunk/arch/arm/mach-dove/mpp.c @@ -11,24 +11,17 @@ #include #include #include - +#include #include - #include "mpp.h" -#define MPP_NR_REGS 4 -#define MPP_CTRL(i) ((i) == 3 ? \ - DOVE_MPP_CTRL4_VIRT_BASE : \ - DOVE_MPP_VIRT_BASE + (i) * 4) -#define PMU_SIG_REGS 2 -#define PMU_SIG_CTRL(i) (DOVE_PMU_SIG_CTRL + (i) * 4) - struct dove_mpp_grp { int start; int end; }; -static struct dove_mpp_grp dove_mpp_grp[] = { +/* Map a group to a range of GPIO pins in that group */ +static const struct dove_mpp_grp dove_mpp_grp[] = { [MPP_24_39] = { .start = 24, .end = 39, @@ -38,8 +31,8 @@ static struct dove_mpp_grp dove_mpp_grp[] = { .end = 45, }, [MPP_46_51] = { - .start = 40, - .end = 45, + .start = 46, + .end = 51, }, [MPP_58_61] = { .start = 58, @@ -51,6 +44,8 @@ static struct dove_mpp_grp dove_mpp_grp[] = { }, }; +/* Enable gpio for a range of pins. mode should be a combination of + GPIO_OUTPUT_OK | GPIO_INPUT_OK */ static void dove_mpp_gpio_mode(int start, int end, int gpio_mode) { int i; @@ -59,24 +54,17 @@ static void dove_mpp_gpio_mode(int start, int end, int gpio_mode) orion_gpio_set_valid(i, gpio_mode); } +/* Dump all the extra MPP registers. The platform code will dump the + registers for pins 0-23. */ static void dove_mpp_dump_regs(void) { -#ifdef DEBUG - int i; + pr_debug("PMU_CTRL4_CTRL: %08x\n", + readl(DOVE_MPP_CTRL4_VIRT_BASE)); - pr_debug("MPP_CTRL regs:"); - for (i = 0; i < MPP_NR_REGS; i++) - printk(" %08x", readl(MPP_CTRL(i))); - printk("\n"); + pr_debug("PMU_MPP_GENERAL_CTRL: %08x\n", + readl(DOVE_PMU_MPP_GENERAL_CTRL)); - pr_debug("PMU_SIG_CTRL regs:"); - for (i = 0; i < PMU_SIG_REGS; i++) - printk(" %08x", readl(PMU_SIG_CTRL(i))); - printk("\n"); - - pr_debug("PMU_MPP_GENERAL_CTRL: %08x\n", readl(DOVE_PMU_MPP_GENERAL_CTRL)); pr_debug("MPP_GENERAL: %08x\n", readl(DOVE_MPP_GENERAL_VIRT_BASE)); -#endif } static void dove_mpp_cfg_nfc(int sel) @@ -92,7 +80,7 @@ static void dove_mpp_cfg_nfc(int sel) static void dove_mpp_cfg_au1(int sel) { - u32 mpp_ctrl4 = readl(DOVE_MPP_CTRL4_VIRT_BASE); + u32 mpp_ctrl4 = readl(DOVE_MPP_CTRL4_VIRT_BASE); u32 ssp_ctrl1 = readl(DOVE_SSP_CTRL_STATUS_1); u32 mpp_gen_ctrl = readl(DOVE_MPP_GENERAL_VIRT_BASE); u32 global_cfg_2 = readl(DOVE_GLOBAL_CONFIG_2); @@ -128,82 +116,46 @@ static void dove_mpp_cfg_au1(int sel) writel(global_cfg_2, DOVE_GLOBAL_CONFIG_2); } -static void dove_mpp_conf_grp(int num, int sel, u32 *mpp_ctrl) -{ - int start = dove_mpp_grp[num].start; - int end = dove_mpp_grp[num].end; - int gpio_mode = sel ? GPIO_OUTPUT_OK | GPIO_INPUT_OK : 0; - - *mpp_ctrl &= ~(0x1 << num); - *mpp_ctrl |= sel << num; - - dove_mpp_gpio_mode(start, end, gpio_mode); -} - -void __init dove_mpp_conf(unsigned int *mpp_list) +/* Configure the group registers, enabling GPIO if sel indicates the + pin is to be used for GPIO */ +static void dove_mpp_conf_grp(unsigned int *mpp_grp_list) { - u32 mpp_ctrl[MPP_NR_REGS]; - u32 pmu_mpp_ctrl = 0; - u32 pmu_sig_ctrl[PMU_SIG_REGS]; - int i; - - for (i = 0; i < MPP_NR_REGS; i++) - mpp_ctrl[i] = readl(MPP_CTRL(i)); - - for (i = 0; i < PMU_SIG_REGS; i++) - pmu_sig_ctrl[i] = readl(PMU_SIG_CTRL(i)); - - pmu_mpp_ctrl = readl(DOVE_PMU_MPP_GENERAL_CTRL); + u32 mpp_ctrl4 = readl(DOVE_MPP_CTRL4_VIRT_BASE); + int gpio_mode; - dove_mpp_dump_regs(); - - for ( ; *mpp_list != MPP_END; mpp_list++) { - unsigned int num = MPP_NUM(*mpp_list); - unsigned int sel = MPP_SEL(*mpp_list); - int shift, gpio_mode; - - if (num > MPP_MAX) { - pr_err("dove: invalid MPP number (%u)\n", num); - continue; - } - - if (*mpp_list & MPP_NFC_MASK) { - dove_mpp_cfg_nfc(sel); - continue; - } + for ( ; *mpp_grp_list; mpp_grp_list++) { + unsigned int num = MPP_NUM(*mpp_grp_list); + unsigned int sel = MPP_SEL(*mpp_grp_list); - if (*mpp_list & MPP_AU1_MASK) { - dove_mpp_cfg_au1(sel); + if (num > MPP_GRP_MAX) { + pr_err("dove: invalid MPP GRP number (%u)\n", num); continue; } - if (*mpp_list & MPP_GRP_MASK) { - dove_mpp_conf_grp(num, sel, &mpp_ctrl[3]); - continue; - } - - shift = (num & 7) << 2; - if (*mpp_list & MPP_PMU_MASK) { - pmu_mpp_ctrl |= (0x1 << num); - pmu_sig_ctrl[num / 8] &= ~(0xf << shift); - pmu_sig_ctrl[num / 8] |= 0xf << shift; - gpio_mode = 0; - } else { - mpp_ctrl[num / 8] &= ~(0xf << shift); - mpp_ctrl[num / 8] |= sel << shift; - gpio_mode = GPIO_OUTPUT_OK | GPIO_INPUT_OK; - } + mpp_ctrl4 &= ~(0x1 << num); + mpp_ctrl4 |= sel << num; - orion_gpio_set_valid(num, gpio_mode); + gpio_mode = sel ? GPIO_OUTPUT_OK | GPIO_INPUT_OK : 0; + dove_mpp_gpio_mode(dove_mpp_grp[num].start, + dove_mpp_grp[num].end, gpio_mode); } + writel(mpp_ctrl4, DOVE_MPP_CTRL4_VIRT_BASE); +} - for (i = 0; i < MPP_NR_REGS; i++) - writel(mpp_ctrl[i], MPP_CTRL(i)); +/* Configure the various MPP pins on Dove */ +void __init dove_mpp_conf(unsigned int *mpp_list, + unsigned int *mpp_grp_list, + unsigned int grp_au1_52_57, + unsigned int grp_nfc_64_71) +{ + dove_mpp_dump_regs(); - for (i = 0; i < PMU_SIG_REGS; i++) - writel(pmu_sig_ctrl[i], PMU_SIG_CTRL(i)); + /* Use platform code for pins 0-23 */ + orion_mpp_conf(mpp_list, 0, MPP_MAX, DOVE_MPP_VIRT_BASE); - writel(pmu_mpp_ctrl, DOVE_PMU_MPP_GENERAL_CTRL); + dove_mpp_conf_grp(mpp_grp_list); + dove_mpp_cfg_au1(grp_au1_52_57); + dove_mpp_cfg_nfc(grp_nfc_64_71); dove_mpp_dump_regs(); } diff --git a/trunk/arch/arm/mach-dove/mpp.h b/trunk/arch/arm/mach-dove/mpp.h index 2a43ce413b15..fbec7c52bfac 100644 --- a/trunk/arch/arm/mach-dove/mpp.h +++ b/trunk/arch/arm/mach-dove/mpp.h @@ -1,178 +1,150 @@ #ifndef __ARCH_DOVE_MPP_CODED_H #define __ARCH_DOVE_MPP_CODED_H -#define MPP(_num, _mode, _pmu, _grp, _au1, _nfc) ( \ -/* MPP/group number */ ((_num) & 0xff) | \ -/* MPP select value */ (((_mode) & 0xf) << 8) | \ -/* MPP PMU */ ((!!(_pmu)) << 12) | \ -/* group flag */ ((!!(_grp)) << 13) | \ -/* AU1 flag */ ((!!(_au1)) << 14) | \ -/* NFCE flag */ ((!!(_nfc)) << 15)) - -#define MPP_MAX 71 - -#define MPP_NUM(x) ((x) & 0xff) -#define MPP_SEL(x) (((x) >> 8) & 0xf) - -#define MPP_PMU_MASK MPP(0, 0x0, 1, 0, 0, 0) -#define MPP_GRP_MASK MPP(0, 0x0, 0, 1, 0, 0) -#define MPP_AU1_MASK MPP(0, 0x0, 0, 0, 1, 0) -#define MPP_NFC_MASK MPP(0, 0x0, 0, 0, 0, 1) - -#define MPP_END MPP(0xff, 0xf, 1, 1, 1, 1) - -#define MPP_PMU_DRIVE_0 0x1 -#define MPP_PMU_DRIVE_1 0x2 -#define MPP_PMU_SDI 0x3 -#define MPP_PMU_CPU_PWRDWN 0x4 -#define MPP_PMU_STBY_PWRDWN 0x5 -#define MPP_PMU_CORE_PWR_GOOD 0x8 -#define MPP_PMU_BAT_FAULT 0xa -#define MPP_PMU_EXT0_WU 0xb -#define MPP_PMU_EXT1_WU 0xc -#define MPP_PMU_EXT2_WU 0xd -#define MPP_PMU_BLINK 0xe -#define MPP_PMU(_num, _mode) MPP((_num), MPP_PMU_##_mode, 1, 0, 0, 0) - -#define MPP_PIN(_num, _mode) MPP((_num), (_mode), 0, 0, 0, 0) -#define MPP_GRP(_grp, _mode) MPP((_grp), (_mode), 0, 1, 0, 0) -#define MPP_GRP_AU1(_mode) MPP(0, (_mode), 0, 0, 1, 0) -#define MPP_GRP_NFC(_mode) MPP(0, (_mode), 0, 0, 0, 1) - -#define MPP0_GPIO0 MPP_PIN(0, 0x0) -#define MPP0_UA2_RTSn MPP_PIN(0, 0x2) -#define MPP0_SDIO0_CD MPP_PIN(0, 0x3) -#define MPP0_LCD0_PWM MPP_PIN(0, 0xf) - -#define MPP1_GPIO1 MPP_PIN(1, 0x0) -#define MPP1_UA2_CTSn MPP_PIN(1, 0x2) -#define MPP1_SDIO0_WP MPP_PIN(1, 0x3) -#define MPP1_LCD1_PWM MPP_PIN(1, 0xf) - -#define MPP2_GPIO2 MPP_PIN(2, 0x0) -#define MPP2_SATA_PRESENT MPP_PIN(2, 0x1) -#define MPP2_UA2_TXD MPP_PIN(2, 0x2) -#define MPP2_SDIO0_BUS_POWER MPP_PIN(2, 0x3) -#define MPP2_UA_RTSn1 MPP_PIN(2, 0x4) - -#define MPP3_GPIO3 MPP_PIN(3, 0x0) -#define MPP3_SATA_ACT MPP_PIN(3, 0x1) -#define MPP3_UA2_RXD MPP_PIN(3, 0x2) -#define MPP3_SDIO0_LED_CTRL MPP_PIN(3, 0x3) -#define MPP3_UA_CTSn1 MPP_PIN(3, 0x4) -#define MPP3_SPI_LCD_CS1 MPP_PIN(3, 0xf) - -#define MPP4_GPIO4 MPP_PIN(4, 0x0) -#define MPP4_UA3_RTSn MPP_PIN(4, 0x2) -#define MPP4_SDIO1_CD MPP_PIN(4, 0x3) -#define MPP4_SPI_1_MISO MPP_PIN(4, 0x4) - -#define MPP5_GPIO5 MPP_PIN(5, 0x0) -#define MPP5_UA3_CTSn MPP_PIN(5, 0x2) -#define MPP5_SDIO1_WP MPP_PIN(5, 0x3) -#define MPP5_SPI_1_CS MPP_PIN(5, 0x4) - -#define MPP6_GPIO6 MPP_PIN(6, 0x0) -#define MPP6_UA3_TXD MPP_PIN(6, 0x2) -#define MPP6_SDIO1_BUS_POWER MPP_PIN(6, 0x3) -#define MPP6_SPI_1_MOSI MPP_PIN(6, 0x4) - -#define MPP7_GPIO7 MPP_PIN(7, 0x0) -#define MPP7_UA3_RXD MPP_PIN(7, 0x2) -#define MPP7_SDIO1_LED_CTRL MPP_PIN(7, 0x3) -#define MPP7_SPI_1_SCK MPP_PIN(7, 0x4) - -#define MPP8_GPIO8 MPP_PIN(8, 0x0) -#define MPP8_WD_RST_OUT MPP_PIN(8, 0x1) - -#define MPP9_GPIO9 MPP_PIN(9, 0x0) -#define MPP9_PEX1_CLKREQn MPP_PIN(9, 0x5) - -#define MPP10_GPIO10 MPP_PIN(10, 0x0) -#define MPP10_SSP_SCLK MPP_PIN(10, 0x5) - -#define MPP11_GPIO11 MPP_PIN(11, 0x0) -#define MPP11_SATA_PRESENT MPP_PIN(11, 0x1) -#define MPP11_SATA_ACT MPP_PIN(11, 0x2) -#define MPP11_SDIO0_LED_CTRL MPP_PIN(11, 0x3) -#define MPP11_SDIO1_LED_CTRL MPP_PIN(11, 0x4) -#define MPP11_PEX0_CLKREQn MPP_PIN(11, 0x5) - -#define MPP12_GPIO12 MPP_PIN(12, 0x0) -#define MPP12_SATA_ACT MPP_PIN(12, 0x1) -#define MPP12_UA2_RTSn MPP_PIN(12, 0x2) -#define MPP12_AD0_I2S_EXT_MCLK MPP_PIN(12, 0x3) -#define MPP12_SDIO1_CD MPP_PIN(12, 0x4) - -#define MPP13_GPIO13 MPP_PIN(13, 0x0) -#define MPP13_UA2_CTSn MPP_PIN(13, 0x2) -#define MPP13_AD1_I2S_EXT_MCLK MPP_PIN(13, 0x3) -#define MPP13_SDIO1WP MPP_PIN(13, 0x4) -#define MPP13_SSP_EXTCLK MPP_PIN(13, 0x5) - -#define MPP14_GPIO14 MPP_PIN(14, 0x0) -#define MPP14_UA2_TXD MPP_PIN(14, 0x2) -#define MPP14_SDIO1_BUS_POWER MPP_PIN(14, 0x4) -#define MPP14_SSP_RXD MPP_PIN(14, 0x5) - -#define MPP15_GPIO15 MPP_PIN(15, 0x0) -#define MPP15_UA2_RXD MPP_PIN(15, 0x2) -#define MPP15_SDIO1_LED_CTRL MPP_PIN(15, 0x4) -#define MPP15_SSP_SFRM MPP_PIN(15, 0x5) - -#define MPP16_GPIO16 MPP_PIN(16, 0x0) -#define MPP16_UA3_RTSn MPP_PIN(16, 0x2) -#define MPP16_SDIO0_CD MPP_PIN(16, 0x3) -#define MPP16_SPI_LCD_CS1 MPP_PIN(16, 0x4) -#define MPP16_AC97_SDATA_IN1 MPP_PIN(16, 0x5) - -#define MPP17_GPIO17 MPP_PIN(17, 0x0) -#define MPP17_AC97_SYSCLK_OUT MPP_PIN(17, 0x1) -#define MPP17_UA3_CTSn MPP_PIN(17, 0x2) -#define MPP17_SDIO0_WP MPP_PIN(17, 0x3) -#define MPP17_TW_SDA2 MPP_PIN(17, 0x4) -#define MPP17_AC97_SDATA_IN2 MPP_PIN(17, 0x5) - -#define MPP18_GPIO18 MPP_PIN(18, 0x0) -#define MPP18_UA3_TXD MPP_PIN(18, 0x2) -#define MPP18_SDIO0_BUS_POWER MPP_PIN(18, 0x3) -#define MPP18_LCD0_PWM MPP_PIN(18, 0x4) -#define MPP18_AC_SDATA_IN3 MPP_PIN(18, 0x5) - -#define MPP19_GPIO19 MPP_PIN(19, 0x0) -#define MPP19_UA3_RXD MPP_PIN(19, 0x2) -#define MPP19_SDIO0_LED_CTRL MPP_PIN(19, 0x3) -#define MPP19_TW_SCK2 MPP_PIN(19, 0x4) - -#define MPP20_GPIO20 MPP_PIN(20, 0x0) -#define MPP20_AC97_SYSCLK_OUT MPP_PIN(20, 0x1) -#define MPP20_SPI_LCD_MISO MPP_PIN(20, 0x2) -#define MPP20_SDIO1_CD MPP_PIN(20, 0x3) -#define MPP20_SDIO0_CD MPP_PIN(20, 0x5) -#define MPP20_SPI_1_MISO MPP_PIN(20, 0x6) - -#define MPP21_GPIO21 MPP_PIN(21, 0x0) -#define MPP21_UA1_RTSn MPP_PIN(21, 0x1) -#define MPP21_SPI_LCD_CS0 MPP_PIN(21, 0x2) -#define MPP21_SDIO1_WP MPP_PIN(21, 0x3) -#define MPP21_SSP_SFRM MPP_PIN(21, 0x4) -#define MPP21_SDIO0_WP MPP_PIN(21, 0x5) -#define MPP21_SPI_1_CS MPP_PIN(21, 0x6) - -#define MPP22_GPIO22 MPP_PIN(22, 0x0) -#define MPP22_UA1_CTSn MPP_PIN(22, 0x1) -#define MPP22_SPI_LCD_MOSI MPP_PIN(22, 0x2) -#define MPP22_SDIO1_BUS_POWER MPP_PIN(22, 0x3) -#define MPP22_SSP_TXD MPP_PIN(22, 0x4) -#define MPP22_SDIO0_BUS_POWER MPP_PIN(22, 0x5) -#define MPP22_SPI_1_MOSI MPP_PIN(22, 0x6) - -#define MPP23_GPIO23 MPP_PIN(23, 0x0) -#define MPP23_SPI_LCD_SCK MPP_PIN(23, 0x2) -#define MPP23_SDIO1_LED_CTRL MPP_PIN(23, 0x3) -#define MPP23_SSP_SCLK MPP_PIN(23, 0x4) -#define MPP23_SDIO0_LED_CTRL MPP_PIN(23, 0x5) -#define MPP23_SPI_1_SCK MPP_PIN(23, 0x6) +#define MPP(_num, _sel, _in, _out) ( \ + /* MPP number */ ((_num) & 0xff) | \ + /* MPP select value */ (((_sel) & 0xf) << 8) | \ + /* may be input signal */ ((!!(_in)) << 12) | \ + /* may be output signal */ ((!!(_out)) << 13)) + +#define MPP0_GPIO0 MPP(0, 0x0, 1, 1) +#define MPP0_UA2_RTSn MPP(0, 0x2, 0, 0) +#define MPP0_SDIO0_CD MPP(0, 0x3, 0, 0) +#define MPP0_LCD0_PWM MPP(0, 0xf, 0, 0) + +#define MPP1_GPIO1 MPP(1, 0x0, 1, 1) +#define MPP1_UA2_CTSn MPP(1, 0x2, 0, 0) +#define MPP1_SDIO0_WP MPP(1, 0x3, 0, 0) +#define MPP1_LCD1_PWM MPP(1, 0xf, 0, 0) + +#define MPP2_GPIO2 MPP(2, 0x0, 1, 1) +#define MPP2_SATA_PRESENT MPP(2, 0x1, 0, 0) +#define MPP2_UA2_TXD MPP(2, 0x2, 0, 0) +#define MPP2_SDIO0_BUS_POWER MPP(2, 0x3, 0, 0) +#define MPP2_UA_RTSn1 MPP(2, 0x4, 0, 0) + +#define MPP3_GPIO3 MPP(3, 0x0, 1, 1) +#define MPP3_SATA_ACT MPP(3, 0x1, 0, 0) +#define MPP3_UA2_RXD MPP(3, 0x2, 0, 0) +#define MPP3_SDIO0_LED_CTRL MPP(3, 0x3, 0, 0) +#define MPP3_UA_CTSn1 MPP(3, 0x4, 0, 0) +#define MPP3_SPI_LCD_CS1 MPP(3, 0xf, 0, 0) + +#define MPP4_GPIO4 MPP(4, 0x0, 1, 1) +#define MPP4_UA3_RTSn MPP(4, 0x2, 0, 0) +#define MPP4_SDIO1_CD MPP(4, 0x3, 0, 0) +#define MPP4_SPI_1_MISO MPP(4, 0x4, 0, 0) + +#define MPP5_GPIO5 MPP(5, 0x0, 1, 1) +#define MPP5_UA3_CTSn MPP(5, 0x2, 0, 0) +#define MPP5_SDIO1_WP MPP(5, 0x3, 0, 0) +#define MPP5_SPI_1_CS MPP(5, 0x4, 0, 0) + +#define MPP6_GPIO6 MPP(6, 0x0, 1, 1) +#define MPP6_UA3_TXD MPP(6, 0x2, 0, 0) +#define MPP6_SDIO1_BUS_POWER MPP(6, 0x3, 0, 0) +#define MPP6_SPI_1_MOSI MPP(6, 0x4, 0, 0) + +#define MPP7_GPIO7 MPP(7, 0x0, 1, 1) +#define MPP7_UA3_RXD MPP(7, 0x2, 0, 0) +#define MPP7_SDIO1_LED_CTRL MPP(7, 0x3, 0, 0) +#define MPP7_SPI_1_SCK MPP(7, 0x4, 0, 0) + +#define MPP8_GPIO8 MPP(8, 0x0, 1, 1) +#define MPP8_WD_RST_OUT MPP(8, 0x1, 0, 0) + +#define MPP9_GPIO9 MPP(9, 0x0, 1, 1) +#define MPP9_PEX1_CLKREQn MPP(9, 0x5, 0, 0) + +#define MPP10_GPIO10 MPP(10, 0x0, 1, 1) +#define MPP10_SSP_SCLK MPP(10, 0x5, 0, 0) + +#define MPP11_GPIO11 MPP(11, 0x0, 1, 1) +#define MPP11_SATA_PRESENT MPP(11, 0x1, 0, 0) +#define MPP11_SATA_ACT MPP(11, 0x2, 0, 0) +#define MPP11_SDIO0_LED_CTRL MPP(11, 0x3, 0, 0) +#define MPP11_SDIO1_LED_CTRL MPP(11, 0x4, 0, 0) +#define MPP11_PEX0_CLKREQn MPP(11, 0x5, 0, 0) + +#define MPP12_GPIO12 MPP(12, 0x0, 1, 1) +#define MPP12_SATA_ACT MPP(12, 0x1, 0, 0) +#define MPP12_UA2_RTSn MPP(12, 0x2, 0, 0) +#define MPP12_AD0_I2S_EXT_MCLK MPP(12, 0x3, 0, 0) +#define MPP12_SDIO1_CD MPP(12, 0x4, 0, 0) + +#define MPP13_GPIO13 MPP(13, 0x0, 1, 1) +#define MPP13_UA2_CTSn MPP(13, 0x2, 0, 0) +#define MPP13_AD1_I2S_EXT_MCLK MPP(13, 0x3, 0, 0) +#define MPP13_SDIO1WP MPP(13, 0x4, 0, 0) +#define MPP13_SSP_EXTCLK MPP(13, 0x5, 0, 0) + +#define MPP14_GPIO14 MPP(14, 0x0, 1, 1) +#define MPP14_UA2_TXD MPP(14, 0x2, 0, 0) +#define MPP14_SDIO1_BUS_POWER MPP(14, 0x4, 0, 0) +#define MPP14_SSP_RXD MPP(14, 0x5, 0, 0) + +#define MPP15_GPIO15 MPP(15, 0x0, 1, 1) +#define MPP15_UA2_RXD MPP(15, 0x2, 0, 0) +#define MPP15_SDIO1_LED_CTRL MPP(15, 0x4, 0, 0) +#define MPP15_SSP_SFRM MPP(15, 0x5, 0, 0) + +#define MPP16_GPIO16 MPP(16, 0x0, 1, 1) +#define MPP16_UA3_RTSn MPP(16, 0x2, 0, 0) +#define MPP16_SDIO0_CD MPP(16, 0x3, 0, 0) +#define MPP16_SPI_LCD_CS1 MPP(16, 0x4, 0, 0) +#define MPP16_AC97_SDATA_IN1 MPP(16, 0x5, 0, 0) + +#define MPP17_GPIO17 MPP(17, 0x0, 1, 1) +#define MPP17_AC97_SYSCLK_OUT MPP(17, 0x1, 0, 0) +#define MPP17_UA3_CTSn MPP(17, 0x2, 0, 0) +#define MPP17_SDIO0_WP MPP(17, 0x3, 0, 0) +#define MPP17_TW_SDA2 MPP(17, 0x4, 0, 0) +#define MPP17_AC97_SDATA_IN2 MPP(17, 0x5, 0, 0) + +#define MPP18_GPIO18 MPP(18, 0x0, 1, 1) +#define MPP18_UA3_TXD MPP(18, 0x2, 0, 0) +#define MPP18_SDIO0_BUS_POWER MPP(18, 0x3, 0, 0) +#define MPP18_LCD0_PWM MPP(18, 0x4, 0, 0) +#define MPP18_AC_SDATA_IN3 MPP(18, 0x5, 0, 0) + +#define MPP19_GPIO19 MPP(19, 0x0, 1, 1) +#define MPP19_UA3_RXD MPP(19, 0x2, 0, 0) +#define MPP19_SDIO0_LED_CTRL MPP(19, 0x3, 0, 0) +#define MPP19_TW_SCK2 MPP(19, 0x4, 0, 0) + +#define MPP20_GPIO20 MPP(20, 0x0, 1, 1) +#define MPP20_AC97_SYSCLK_OUT MPP(20, 0x1, 0, 0) +#define MPP20_SPI_LCD_MISO MPP(20, 0x2, 0, 0) +#define MPP20_SDIO1_CD MPP(20, 0x3, 0, 0) +#define MPP20_SDIO0_CD MPP(20, 0x5, 0, 0) +#define MPP20_SPI_1_MISO MPP(20, 0x6, 0, 0) + +#define MPP21_GPIO21 MPP(21, 0x0, 1, 1) +#define MPP21_UA1_RTSn MPP(21, 0x1, 0, 0) +#define MPP21_SPI_LCD_CS0 MPP(21, 0x2, 0, 0) +#define MPP21_SDIO1_WP MPP(21, 0x3, 0, 0) +#define MPP21_SSP_SFRM MPP(21, 0x4, 0, 0) +#define MPP21_SDIO0_WP MPP(21, 0x5, 0, 0) +#define MPP21_SPI_1_CS MPP(21, 0x6, 0, 0) + +#define MPP22_GPIO22 MPP(22, 0x0, 1, 1) +#define MPP22_UA1_CTSn MPP(22, 0x1, 0, 0) +#define MPP22_SPI_LCD_MOSI MPP(22, 0x2, 0, 0) +#define MPP22_SDIO1_BUS_POWER MPP(22, 0x3, 0, 0) +#define MPP22_SSP_TXD MPP(22, 0x4, 0, 0) +#define MPP22_SDIO0_BUS_POWER MPP(22, 0x5, 0, 0) +#define MPP22_SPI_1_MOSI MPP(22, 0x6, 0, 0) + +#define MPP23_GPIO23 MPP(23, 0x0, 1, 1) +#define MPP23_SPI_LCD_SCK MPP(23, 0x2, 0, 0) +#define MPP23_SDIO1_LED_CTRL MPP(23, 0x3, 0, 0) +#define MPP23_SSP_SCLK MPP(23, 0x4, 0, 0) +#define MPP23_SDIO0_LED_CTRL MPP(23, 0x5, 0, 0) +#define MPP23_SPI_1_SCK MPP(23, 0x6, 0, 0) + +#define MPP_MAX 23 + +#define MPP_GRP(_grp, _mode) MPP((_grp), (_mode), 0, 0) /* for MPP groups _num is a group index */ enum dove_mpp_grp_idx { @@ -181,40 +153,44 @@ enum dove_mpp_grp_idx { MPP_46_51 = 1, MPP_58_61 = 5, MPP_62_63 = 4, + MPP_GRP_MAX = 5, }; -#define MPP24_39_GPIO MPP_GRP(MPP_24_39, 0x1) -#define MPP24_39_CAM MPP_GRP(MPP_24_39, 0x0) +#define MPP_GRP_24_39_GPIO MPP_GRP(MPP_24_39, 0x1) +#define MPP_GRP_24_39_CAM MPP_GRP(MPP_24_39, 0x0) -#define MPP40_45_GPIO MPP_GRP(MPP_40_45, 0x1) -#define MPP40_45_SD0 MPP_GRP(MPP_40_45, 0x0) +#define MPP_GRP_40_45_GPIO MPP_GRP(MPP_40_45, 0x1) +#define MPP_GRP_40_45_SD0 MPP_GRP(MPP_40_45, 0x0) -#define MPP46_51_GPIO MPP_GRP(MPP_46_51, 0x1) -#define MPP46_51_SD1 MPP_GRP(MPP_46_51, 0x0) +#define MPP_GRP_46_51_GPIO MPP_GRP(MPP_46_51, 0x1) +#define MPP_GRP_46_51_SD1 MPP_GRP(MPP_46_51, 0x0) -#define MPP58_61_GPIO MPP_GRP(MPP_58_61, 0x1) -#define MPP58_61_SPI MPP_GRP(MPP_58_61, 0x0) +#define MPP_GRP_58_61_GPIO MPP_GRP(MPP_58_61, 0x1) +#define MPP_GRP_58_61_SPI MPP_GRP(MPP_58_61, 0x0) -#define MPP62_63_GPIO MPP_GRP(MPP_62_63, 0x1) -#define MPP62_63_UA1 MPP_GRP(MPP_62_63, 0x0) +#define MPP_GRP_62_63_GPIO MPP_GRP(MPP_62_63, 0x1) +#define MPP_GRP_62_63_UA1 MPP_GRP(MPP_62_63, 0x0) /* The MPP[64:71] control differs from other groups */ -#define MPP64_71_GPO MPP_GRP_NFC(0x1) -#define MPP64_71_NFC MPP_GRP_NFC(0x0) +#define MPP_GRP_NFC_64_71_GPO 0x1 +#define MPP_GRP_NFC_64_71_NFC 0x0 /* * The MPP[52:57] functionality is encoded by 4 bits in different * registers. The _num field in this case encodes those bits in * correspodence with Table 135 of 88AP510 Functional specification */ -#define MPP52_57_AU1 MPP_GRP_AU1(0x0) -#define MPP52_57_AU1_GPIO57 MPP_GRP_AU1(0x2) -#define MPP52_57_GPIO MPP_GRP_AU1(0xa) -#define MPP52_57_TW_GPIO MPP_GRP_AU1(0xb) -#define MPP52_57_AU1_SSP MPP_GRP_AU1(0xc) -#define MPP52_57_SSP_GPIO MPP_GRP_AU1(0xe) -#define MPP52_57_SSP_TW MPP_GRP_AU1(0xf) - -void dove_mpp_conf(unsigned int *mpp_list); +#define MPP_GRP_AU1_52_57_AU1 0x0 +#define MPP_GRP_AU1_52_57_AU1_GPIO57 0x2 +#define MPP_GRP_AU1_52_57_GPIO 0xa +#define MPP_GRP_AU1_52_57_TW_GPIO 0xb +#define MPP_GRP_AU1_52_57_AU1_SSP 0xc +#define MPP_GRP_AU1_52_57_SSP_GPIO 0xe +#define MPP_GRP_AU1_52_57_SSP_TW 0xf + +void dove_mpp_conf(unsigned int *mpp_list, + unsigned int *mpp_grp_list, + unsigned int grp_au1_52_57, + unsigned int grp_nfc_64_71); #endif /* __ARCH_DOVE_MPP_CODED_H */ diff --git a/trunk/arch/arm/mach-ep93xx/gpio.c b/trunk/arch/arm/mach-ep93xx/gpio.c index a5a9ff70b198..415dce37b88c 100644 --- a/trunk/arch/arm/mach-ep93xx/gpio.c +++ b/trunk/arch/arm/mach-ep93xx/gpio.c @@ -356,29 +356,6 @@ static int ep93xx_gpio_set_debounce(struct gpio_chip *chip, return 0; } -static void ep93xx_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip) -{ - struct ep93xx_gpio_chip *ep93xx_chip = to_ep93xx_gpio_chip(chip); - u8 data_reg, data_dir_reg; - int gpio, i; - - data_reg = __raw_readb(ep93xx_chip->data_reg); - data_dir_reg = __raw_readb(ep93xx_chip->data_dir_reg); - - gpio = ep93xx_chip->chip.base; - for (i = 0; i < chip->ngpio; i++, gpio++) { - int is_out = data_dir_reg & (1 << i); - int irq = gpio_to_irq(gpio); - - seq_printf(s, " %s%d gpio-%-3d (%-12s) %s %s %s\n", - chip->label, i, gpio, - gpiochip_is_requested(chip, i) ? : "", - is_out ? "out" : "in ", - (data_reg & (1<< i)) ? "hi" : "lo", - (!is_out && irq>= 0) ? "(interrupt)" : ""); - } -} - #define EP93XX_GPIO_BANK(name, dr, ddr, base_gpio) \ { \ .chip = { \ @@ -387,7 +364,6 @@ static void ep93xx_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip) .direction_output = ep93xx_gpio_direction_output, \ .get = ep93xx_gpio_get, \ .set = ep93xx_gpio_set, \ - .dbg_show = ep93xx_gpio_dbg_show, \ .base = base_gpio, \ .ngpio = 8, \ }, \ diff --git a/trunk/arch/arm/mach-exynos4/Kconfig b/trunk/arch/arm/mach-exynos4/Kconfig index e849f67be47d..805196207ce8 100644 --- a/trunk/arch/arm/mach-exynos4/Kconfig +++ b/trunk/arch/arm/mach-exynos4/Kconfig @@ -170,6 +170,7 @@ config MACH_NURI select S3C_DEV_HSMMC3 select S3C_DEV_I2C1 select S3C_DEV_I2C5 + select S5P_DEV_USB_EHCI select EXYNOS4_SETUP_I2C1 select EXYNOS4_SETUP_I2C5 select EXYNOS4_SETUP_SDHCI diff --git a/trunk/arch/arm/mach-exynos4/Makefile b/trunk/arch/arm/mach-exynos4/Makefile index 9be104f63c0b..777897551e42 100644 --- a/trunk/arch/arm/mach-exynos4/Makefile +++ b/trunk/arch/arm/mach-exynos4/Makefile @@ -54,3 +54,5 @@ obj-$(CONFIG_EXYNOS4_SETUP_I2C7) += setup-i2c7.o obj-$(CONFIG_EXYNOS4_SETUP_KEYPAD) += setup-keypad.o obj-$(CONFIG_EXYNOS4_SETUP_SDHCI) += setup-sdhci.o obj-$(CONFIG_EXYNOS4_SETUP_SDHCI_GPIO) += setup-sdhci-gpio.o + +obj-$(CONFIG_USB_SUPPORT) += usb-phy.o diff --git a/trunk/arch/arm/mach-exynos4/cpu.c b/trunk/arch/arm/mach-exynos4/cpu.c index 793011391943..08813a6f66b1 100644 --- a/trunk/arch/arm/mach-exynos4/cpu.c +++ b/trunk/arch/arm/mach-exynos4/cpu.c @@ -97,7 +97,12 @@ static struct map_desc exynos4_iodesc[] __initdata = { .pfn = __phys_to_pfn(EXYNOS4_PA_SROMC), .length = SZ_4K, .type = MT_DEVICE, - }, + }, { + .virtual = (unsigned long)S5P_VA_USB_HSPHY, + .pfn = __phys_to_pfn(EXYNOS4_PA_HSPHY), + .length = SZ_4K, + .type = MT_DEVICE, + } }; static void exynos4_idle(void) diff --git a/trunk/arch/arm/mach-exynos4/include/mach/map.h b/trunk/arch/arm/mach-exynos4/include/mach/map.h index 6330b73b9ea7..0009e77a05fc 100644 --- a/trunk/arch/arm/mach-exynos4/include/mach/map.h +++ b/trunk/arch/arm/mach-exynos4/include/mach/map.h @@ -101,6 +101,9 @@ #define EXYNOS4_PA_SROMC 0x12570000 +#define EXYNOS4_PA_EHCI 0x12580000 +#define EXYNOS4_PA_HSPHY 0x125B0000 + #define EXYNOS4_PA_UART 0x13800000 #define EXYNOS4_PA_IIC(x) (0x13860000 + ((x) * 0x10000)) @@ -143,6 +146,7 @@ #define S5P_PA_SROMC EXYNOS4_PA_SROMC #define S5P_PA_SYSCON EXYNOS4_PA_SYSCON #define S5P_PA_TIMER EXYNOS4_PA_TIMER +#define S5P_PA_EHCI EXYNOS4_PA_EHCI #define SAMSUNG_PA_KEYPAD EXYNOS4_PA_KEYPAD diff --git a/trunk/arch/arm/mach-exynos4/include/mach/regs-pmu.h b/trunk/arch/arm/mach-exynos4/include/mach/regs-pmu.h index 62b0014d05e0..a9643371f8e7 100644 --- a/trunk/arch/arm/mach-exynos4/include/mach/regs-pmu.h +++ b/trunk/arch/arm/mach-exynos4/include/mach/regs-pmu.h @@ -33,6 +33,9 @@ #define S5P_EINT_WAKEUP_MASK S5P_PMUREG(0x0604) #define S5P_WAKEUP_MASK S5P_PMUREG(0x0608) +#define S5P_USBHOST_PHY_CONTROL S5P_PMUREG(0x0708) +#define S5P_USBHOST_PHY_ENABLE (1 << 0) + #define S5P_MIPI_DPHY_CONTROL(n) S5P_PMUREG(0x0710 + (n) * 4) #define S5P_MIPI_DPHY_ENABLE (1 << 0) #define S5P_MIPI_DPHY_SRESETN (1 << 1) diff --git a/trunk/arch/arm/mach-exynos4/include/mach/regs-usb-phy.h b/trunk/arch/arm/mach-exynos4/include/mach/regs-usb-phy.h new file mode 100644 index 000000000000..703118d5173c --- /dev/null +++ b/trunk/arch/arm/mach-exynos4/include/mach/regs-usb-phy.h @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2011 Samsung Electronics Co.Ltd + * Author: Joonyoung Shim + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#ifndef __PLAT_S5P_REGS_USB_PHY_H +#define __PLAT_S5P_REGS_USB_PHY_H + +#define EXYNOS4_HSOTG_PHYREG(x) ((x) + S5P_VA_USB_HSPHY) + +#define EXYNOS4_PHYPWR EXYNOS4_HSOTG_PHYREG(0x00) +#define PHY1_HSIC_NORMAL_MASK (0xf << 9) +#define PHY1_HSIC1_SLEEP (1 << 12) +#define PHY1_HSIC1_FORCE_SUSPEND (1 << 11) +#define PHY1_HSIC0_SLEEP (1 << 10) +#define PHY1_HSIC0_FORCE_SUSPEND (1 << 9) + +#define PHY1_STD_NORMAL_MASK (0x7 << 6) +#define PHY1_STD_SLEEP (1 << 8) +#define PHY1_STD_ANALOG_POWERDOWN (1 << 7) +#define PHY1_STD_FORCE_SUSPEND (1 << 6) + +#define PHY0_NORMAL_MASK (0x39 << 0) +#define PHY0_SLEEP (1 << 5) +#define PHY0_OTG_DISABLE (1 << 4) +#define PHY0_ANALOG_POWERDOWN (1 << 3) +#define PHY0_FORCE_SUSPEND (1 << 0) + +#define EXYNOS4_PHYCLK EXYNOS4_HSOTG_PHYREG(0x04) +#define PHY1_COMMON_ON_N (1 << 7) +#define PHY0_COMMON_ON_N (1 << 4) +#define PHY0_ID_PULLUP (1 << 2) +#define CLKSEL_MASK (0x3 << 0) +#define CLKSEL_SHIFT (0) +#define CLKSEL_48M (0x0 << 0) +#define CLKSEL_12M (0x2 << 0) +#define CLKSEL_24M (0x3 << 0) + +#define EXYNOS4_RSTCON EXYNOS4_HSOTG_PHYREG(0x08) +#define HOST_LINK_PORT_SWRST_MASK (0xf << 6) +#define HOST_LINK_PORT2_SWRST (1 << 9) +#define HOST_LINK_PORT1_SWRST (1 << 8) +#define HOST_LINK_PORT0_SWRST (1 << 7) +#define HOST_LINK_ALL_SWRST (1 << 6) + +#define PHY1_SWRST_MASK (0x7 << 3) +#define PHY1_HSIC_SWRST (1 << 5) +#define PHY1_STD_SWRST (1 << 4) +#define PHY1_ALL_SWRST (1 << 3) + +#define PHY0_SWRST_MASK (0x7 << 0) +#define PHY0_PHYLINK_SWRST (1 << 2) +#define PHY0_HLINK_SWRST (1 << 1) +#define PHY0_SWRST (1 << 0) + +#define EXYNOS4_PHY1CON EXYNOS4_HSOTG_PHYREG(0x34) +#define FPENABLEN (1 << 0) + +#endif /* __PLAT_S5P_REGS_USB_PHY_H */ diff --git a/trunk/arch/arm/mach-exynos4/include/mach/smp.h b/trunk/arch/arm/mach-exynos4/include/mach/smp.h deleted file mode 100644 index a463dcebcfd3..000000000000 --- a/trunk/arch/arm/mach-exynos4/include/mach/smp.h +++ /dev/null @@ -1,19 +0,0 @@ -/* linux/arch/arm/mach-exynos4/include/mach/smp.h - * - * Cloned from arch/arm/mach-realview/include/mach/smp.h -*/ - -#ifndef ASM_ARCH_SMP_H -#define ASM_ARCH_SMP_H __FILE__ - -#include - -/* - * We use IRQ1 as the IPI - */ -static inline void smp_cross_call(const struct cpumask *mask, int ipi) -{ - gic_raise_softirq(mask, ipi); -} - -#endif diff --git a/trunk/arch/arm/mach-exynos4/irq-combiner.c b/trunk/arch/arm/mach-exynos4/irq-combiner.c index f488b66d6806..5a2758ab055e 100644 --- a/trunk/arch/arm/mach-exynos4/irq-combiner.c +++ b/trunk/arch/arm/mach-exynos4/irq-combiner.c @@ -59,8 +59,7 @@ static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc) unsigned int cascade_irq, combiner_irq; unsigned long status; - /* primary controller ack'ing */ - chip->irq_ack(&desc->irq_data); + chained_irq_enter(chip, desc); spin_lock(&irq_controller_lock); status = __raw_readl(chip_data->base + COMBINER_INT_STATUS); @@ -79,8 +78,7 @@ static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc) generic_handle_irq(cascade_irq); out: - /* primary controller unmasking */ - chip->irq_unmask(&desc->irq_data); + chained_irq_exit(chip, desc); } static struct irq_chip combiner_chip = { diff --git a/trunk/arch/arm/mach-exynos4/mach-nuri.c b/trunk/arch/arm/mach-exynos4/mach-nuri.c index b79ad010d194..bb5d12f43af8 100644 --- a/trunk/arch/arm/mach-exynos4/mach-nuri.c +++ b/trunk/arch/arm/mach-exynos4/mach-nuri.c @@ -30,6 +30,8 @@ #include #include #include +#include +#include #include @@ -262,6 +264,16 @@ static struct i2c_board_info i2c5_devs[] __initdata = { /* max8997, To be updated */ }; +/* USB EHCI */ +static struct s5p_ehci_platdata nuri_ehci_pdata; + +static void __init nuri_ehci_init(void) +{ + struct s5p_ehci_platdata *pdata = &nuri_ehci_pdata; + + s5p_ehci_set_platdata(pdata); +} + static struct platform_device *nuri_devices[] __initdata = { /* Samsung Platform Devices */ &emmc_fixed_voltage, @@ -270,6 +282,7 @@ static struct platform_device *nuri_devices[] __initdata = { &s3c_device_hsmmc3, &s3c_device_wdt, &s3c_device_timer[0], + &s5p_device_ehci, /* NURI Devices */ &nuri_gpio_keys, @@ -291,6 +304,9 @@ static void __init nuri_machine_init(void) i2c_register_board_info(1, i2c1_devs, ARRAY_SIZE(i2c1_devs)); i2c_register_board_info(5, i2c5_devs, ARRAY_SIZE(i2c5_devs)); + nuri_ehci_init(); + clk_xusbxti.rate = 24000000; + /* Last */ platform_add_devices(nuri_devices, ARRAY_SIZE(nuri_devices)); } diff --git a/trunk/arch/arm/mach-exynos4/platsmp.c b/trunk/arch/arm/mach-exynos4/platsmp.c index 6d35878ec1aa..c5e65a02be8d 100644 --- a/trunk/arch/arm/mach-exynos4/platsmp.c +++ b/trunk/arch/arm/mach-exynos4/platsmp.c @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -104,7 +105,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) * the boot monitor to read the system wide flags register, * and branch to the address found there. */ - smp_cross_call(cpumask_of(cpu), 1); + gic_raise_softirq(cpumask_of(cpu), 1); timeout = jiffies + (1 * HZ); while (time_before(jiffies, timeout)) { @@ -147,6 +148,8 @@ void __init smp_init_cpus(void) for (i = 0; i < ncores; i++) set_cpu_possible(i, true); + + set_smp_cross_call(gic_raise_softirq); } void __init platform_smp_prepare_cpus(unsigned int max_cpus) diff --git a/trunk/arch/arm/mach-exynos4/usb-phy.c b/trunk/arch/arm/mach-exynos4/usb-phy.c new file mode 100644 index 000000000000..0883c1b824b9 --- /dev/null +++ b/trunk/arch/arm/mach-exynos4/usb-phy.c @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2011 Samsung Electronics Co.Ltd + * Author: Joonyoung Shim + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static int exynos4_usb_phy1_init(struct platform_device *pdev) +{ + struct clk *otg_clk; + struct clk *xusbxti_clk; + u32 phyclk; + u32 rstcon; + int err; + + otg_clk = clk_get(&pdev->dev, "otg"); + if (IS_ERR(otg_clk)) { + dev_err(&pdev->dev, "Failed to get otg clock\n"); + return PTR_ERR(otg_clk); + } + + err = clk_enable(otg_clk); + if (err) { + clk_put(otg_clk); + return err; + } + + writel(readl(S5P_USBHOST_PHY_CONTROL) | S5P_USBHOST_PHY_ENABLE, + S5P_USBHOST_PHY_CONTROL); + + /* set clock frequency for PLL */ + phyclk = readl(EXYNOS4_PHYCLK) & ~CLKSEL_MASK; + + xusbxti_clk = clk_get(&pdev->dev, "xusbxti"); + if (xusbxti_clk && !IS_ERR(xusbxti_clk)) { + switch (clk_get_rate(xusbxti_clk)) { + case 12 * MHZ: + phyclk |= CLKSEL_12M; + break; + case 24 * MHZ: + phyclk |= CLKSEL_24M; + break; + default: + case 48 * MHZ: + /* default reference clock */ + break; + } + clk_put(xusbxti_clk); + } + + writel(phyclk, EXYNOS4_PHYCLK); + + /* floating prevention logic: disable */ + writel((readl(EXYNOS4_PHY1CON) | FPENABLEN), EXYNOS4_PHY1CON); + + /* set to normal HSIC 0 and 1 of PHY1 */ + writel((readl(EXYNOS4_PHYPWR) & ~PHY1_HSIC_NORMAL_MASK), + EXYNOS4_PHYPWR); + + /* set to normal standard USB of PHY1 */ + writel((readl(EXYNOS4_PHYPWR) & ~PHY1_STD_NORMAL_MASK), EXYNOS4_PHYPWR); + + /* reset all ports of both PHY and Link */ + rstcon = readl(EXYNOS4_RSTCON) | HOST_LINK_PORT_SWRST_MASK | + PHY1_SWRST_MASK; + writel(rstcon, EXYNOS4_RSTCON); + udelay(10); + + rstcon &= ~(HOST_LINK_PORT_SWRST_MASK | PHY1_SWRST_MASK); + writel(rstcon, EXYNOS4_RSTCON); + udelay(50); + + clk_disable(otg_clk); + clk_put(otg_clk); + + return 0; +} + +static int exynos4_usb_phy1_exit(struct platform_device *pdev) +{ + struct clk *otg_clk; + int err; + + otg_clk = clk_get(&pdev->dev, "otg"); + if (IS_ERR(otg_clk)) { + dev_err(&pdev->dev, "Failed to get otg clock\n"); + return PTR_ERR(otg_clk); + } + + err = clk_enable(otg_clk); + if (err) { + clk_put(otg_clk); + return err; + } + + writel((readl(EXYNOS4_PHYPWR) | PHY1_STD_ANALOG_POWERDOWN), + EXYNOS4_PHYPWR); + + writel(readl(S5P_USBHOST_PHY_CONTROL) & ~S5P_USBHOST_PHY_ENABLE, + S5P_USBHOST_PHY_CONTROL); + + clk_disable(otg_clk); + clk_put(otg_clk); + + return 0; +} + +int s5p_usb_phy_init(struct platform_device *pdev, int type) +{ + if (type == S5P_USB_PHY_HOST) + return exynos4_usb_phy1_init(pdev); + + return -EINVAL; +} + +int s5p_usb_phy_exit(struct platform_device *pdev, int type) +{ + if (type == S5P_USB_PHY_HOST) + return exynos4_usb_phy1_exit(pdev); + + return -EINVAL; +} diff --git a/trunk/arch/arm/mach-gemini/include/mach/uncompress.h b/trunk/arch/arm/mach-gemini/include/mach/uncompress.h index 5483f61a8061..0efa26247235 100644 --- a/trunk/arch/arm/mach-gemini/include/mach/uncompress.h +++ b/trunk/arch/arm/mach-gemini/include/mach/uncompress.h @@ -16,7 +16,7 @@ #include #include -static volatile unsigned long *UART = (unsigned long *)GEMINI_UART_BASE; +static volatile unsigned long * const UART = (unsigned long *)GEMINI_UART_BASE; /* * The following code assumes the serial port has already been diff --git a/trunk/arch/arm/mach-h720x/include/mach/memory.h b/trunk/arch/arm/mach-h720x/include/mach/memory.h index 9d3687651462..b0b3baec9acf 100644 --- a/trunk/arch/arm/mach-h720x/include/mach/memory.h +++ b/trunk/arch/arm/mach-h720x/include/mach/memory.h @@ -13,7 +13,6 @@ * There should not be more than (0xd0000000 - 0xc0000000) * bytes of RAM. */ -#define ISA_DMA_THRESHOLD (PHYS_OFFSET + SZ_256M - 1) -#define MAX_DMA_ADDRESS (PAGE_OFFSET + SZ_256M) +#define ARM_DMA_ZONE_SIZE SZ_256M #endif diff --git a/trunk/arch/arm/mach-imx/Kconfig b/trunk/arch/arm/mach-imx/Kconfig index 56b930a13443..59c97a331136 100644 --- a/trunk/arch/arm/mach-imx/Kconfig +++ b/trunk/arch/arm/mach-imx/Kconfig @@ -1,5 +1,15 @@ config IMX_HAVE_DMA_V1 bool +# +# ARCH_MX31 and ARCH_MX35 are left for compatibility +# Some usages assume that having one of them implies not having (e.g.) ARCH_MX2. +# To easily distinguish good and reviewed from unreviewed usages new (and IMHO +# more sensible) names are used: SOC_IMX31 and SOC_IMX35 +config ARCH_MX31 + bool + +config ARCH_MX35 + bool config SOC_IMX1 bool @@ -31,6 +41,24 @@ config SOC_IMX27 select IMX_HAVE_IOMUX_V1 select MXC_AVIC +config SOC_IMX31 + bool + select CPU_V6 + select IMX_HAVE_PLATFORM_MXC_RNGA + select ARCH_MXC_AUDMUX_V2 + select ARCH_MX31 + select MXC_AVIC + +config SOC_IMX35 + bool + select CPU_V6 + select ARCH_MXC_IOMUX_V3 + select ARCH_MXC_AUDMUX_V2 + select HAVE_EPIT + select ARCH_MX35 + select MXC_AVIC + + if ARCH_MX1 comment "MX1 platforms:" @@ -40,6 +68,7 @@ config MACH_MXLADS config ARCH_MX1ADS bool "MX1ADS platform" select MACH_MXLADS + select SOC_IMX1 select IMX_HAVE_PLATFORM_IMX_I2C select IMX_HAVE_PLATFORM_IMX_UART help @@ -51,6 +80,13 @@ config MACH_SCB9328 help Say Y here if you are using a Synertronixx scb9328 board +config MACH_APF9328 + bool "APF9328" + select SOC_IMX1 + select IMX_HAVE_PLATFORM_IMX_UART + help + Say Yes here if you are using the Armadeus APF9328 development board + endif if ARCH_MX2 @@ -129,6 +165,7 @@ choice config MACH_EUKREA_MBIMXSD25_BASEBOARD bool "Eukrea MBIMXSD development board" + select IMX_HAVE_PLATFORM_GPIO_KEYS select IMX_HAVE_PLATFORM_IMX_SSI help This adds board specific devices that can be found on Eukrea's @@ -254,6 +291,7 @@ config MACH_MX27_3DS config MACH_IMX27_VISSTRIM_M10 bool "Vista Silicon i.MX27 Visstrim_m10" select SOC_IMX27 + select IMX_HAVE_PLATFORM_GPIO_KEYS select IMX_HAVE_PLATFORM_IMX_I2C select IMX_HAVE_PLATFORM_IMX_SSI select IMX_HAVE_PLATFORM_IMX_UART @@ -314,3 +352,251 @@ config MACH_IMX27IPCAM configurations for the board and its peripherals. endif + +if ARCH_MX3 + +comment "MX31 platforms:" + +config MACH_MX31ADS + bool "Support MX31ADS platforms" + select SOC_IMX31 + select IMX_HAVE_PLATFORM_IMX_I2C + select IMX_HAVE_PLATFORM_IMX_SSI + select IMX_HAVE_PLATFORM_IMX_UART + default y + help + Include support for MX31ADS platform. This includes specific + configurations for the board and its peripherals. + +config MACH_MX31ADS_WM1133_EV1 + bool "Support Wolfson Microelectronics 1133-EV1 module" + depends on MACH_MX31ADS + depends on MFD_WM8350_I2C + depends on REGULATOR_WM8350 + select MFD_WM8350_CONFIG_MODE_0 + select MFD_WM8352_CONFIG_MODE_0 + help + Include support for the Wolfson Microelectronics 1133-EV1 PMU + and audio module for the MX31ADS platform. + +config MACH_MX31LILLY + bool "Support MX31 LILLY-1131 platforms (INCO startec)" + select SOC_IMX31 + select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_IPU_CORE + select IMX_HAVE_PLATFORM_MXC_EHCI + select IMX_HAVE_PLATFORM_MXC_MMC + select IMX_HAVE_PLATFORM_SPI_IMX + select MXC_ULPI if USB_ULPI + help + Include support for mx31 based LILLY1131 modules. This includes + specific configurations for the board and its peripherals. + +config MACH_MX31LITE + bool "Support MX31 LITEKIT (LogicPD)" + select SOC_IMX31 + select MXC_ULPI if USB_ULPI + select IMX_HAVE_PLATFORM_IMX2_WDT + select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_MXC_EHCI + select IMX_HAVE_PLATFORM_MXC_MMC + select IMX_HAVE_PLATFORM_MXC_NAND + select IMX_HAVE_PLATFORM_MXC_RTC + select IMX_HAVE_PLATFORM_SPI_IMX + help + Include support for MX31 LITEKIT platform. This includes specific + configurations for the board and its peripherals. + +config MACH_PCM037 + bool "Support Phytec pcm037 (i.MX31) platforms" + select SOC_IMX31 + select IMX_HAVE_PLATFORM_FSL_USB2_UDC + select IMX_HAVE_PLATFORM_IMX2_WDT + select IMX_HAVE_PLATFORM_IMX_I2C + select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_IPU_CORE + select IMX_HAVE_PLATFORM_MXC_EHCI + select IMX_HAVE_PLATFORM_MXC_MMC + select IMX_HAVE_PLATFORM_MXC_NAND + select IMX_HAVE_PLATFORM_MXC_W1 + select MXC_ULPI if USB_ULPI + help + Include support for Phytec pcm037 platform. This includes + specific configurations for the board and its peripherals. + +config MACH_PCM037_EET + bool "Support pcm037 EET board extensions" + depends on MACH_PCM037 + select IMX_HAVE_PLATFORM_GPIO_KEYS + select IMX_HAVE_PLATFORM_SPI_IMX + help + Add support for PCM037 EET baseboard extensions. If you are using the + OLED display with EET, use "video=mx3fb:CMEL-OLED" kernel + command-line parameter. + +config MACH_MX31_3DS + bool "Support MX31PDK (3DS)" + select SOC_IMX31 + select MXC_DEBUG_BOARD + select IMX_HAVE_PLATFORM_FSL_USB2_UDC + select IMX_HAVE_PLATFORM_IMX2_WDT + select IMX_HAVE_PLATFORM_IMX_I2C + select IMX_HAVE_PLATFORM_IMX_KEYPAD + select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_IPU_CORE + select IMX_HAVE_PLATFORM_MXC_EHCI + select IMX_HAVE_PLATFORM_MXC_NAND + select IMX_HAVE_PLATFORM_SPI_IMX + select MXC_ULPI if USB_ULPI + help + Include support for MX31PDK (3DS) platform. This includes specific + configurations for the board and its peripherals. + +config MACH_MX31_3DS_MXC_NAND_USE_BBT + bool "Make the MXC NAND driver use the in flash Bad Block Table" + depends on MACH_MX31_3DS + depends on MTD_NAND_MXC + help + Enable this if you want that the MXC NAND driver uses the in flash + Bad Block Table to know what blocks are bad instead of scanning the + entire flash looking for bad block markers. + +config MACH_MX31MOBOARD + bool "Support mx31moboard platforms (EPFL Mobots group)" + select SOC_IMX31 + select IMX_HAVE_PLATFORM_FSL_USB2_UDC + select IMX_HAVE_PLATFORM_IMX_I2C + select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_IPU_CORE + select IMX_HAVE_PLATFORM_MXC_EHCI + select IMX_HAVE_PLATFORM_MXC_MMC + select IMX_HAVE_PLATFORM_SPI_IMX + select MXC_ULPI if USB_ULPI + help + Include support for mx31moboard platform. This includes specific + configurations for the board and its peripherals. + +config MACH_QONG + bool "Support Dave/DENX QongEVB-LITE platform" + select SOC_IMX31 + select IMX_HAVE_PLATFORM_IMX_UART + help + Include support for Dave/DENX QongEVB-LITE platform. This includes + specific configurations for the board and its peripherals. + +config MACH_ARMADILLO5X0 + bool "Support Atmark Armadillo-500 Development Base Board" + select SOC_IMX31 + select IMX_HAVE_PLATFORM_GPIO_KEYS + select IMX_HAVE_PLATFORM_IMX_I2C + select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_IPU_CORE + select IMX_HAVE_PLATFORM_MXC_EHCI + select IMX_HAVE_PLATFORM_MXC_MMC + select IMX_HAVE_PLATFORM_MXC_NAND + select MXC_ULPI if USB_ULPI + help + Include support for Atmark Armadillo-500 platform. This includes + specific configurations for the board and its peripherals. + +config MACH_KZM_ARM11_01 + bool "Support KZM-ARM11-01(Kyoto Microcomputer)" + select SOC_IMX31 + select IMX_HAVE_PLATFORM_IMX_UART + help + Include support for KZM-ARM11-01. This includes specific + configurations for the board and its peripherals. + +config MACH_BUG + bool "Support Buglabs BUGBase platform" + select SOC_IMX31 + select IMX_HAVE_PLATFORM_IMX_UART + default y + help + Include support for BUGBase 1.3 platform. This includes specific + configurations for the board and its peripherals. + +comment "MX35 platforms:" + +config MACH_PCM043 + bool "Support Phytec pcm043 (i.MX35) platforms" + select SOC_IMX35 + select IMX_HAVE_PLATFORM_FLEXCAN + select IMX_HAVE_PLATFORM_FSL_USB2_UDC + select IMX_HAVE_PLATFORM_IMX2_WDT + select IMX_HAVE_PLATFORM_IMX_I2C + select IMX_HAVE_PLATFORM_IMX_SSI + select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_IPU_CORE + select IMX_HAVE_PLATFORM_MXC_EHCI + select IMX_HAVE_PLATFORM_MXC_NAND + select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX + select MXC_ULPI if USB_ULPI + help + Include support for Phytec pcm043 platform. This includes + specific configurations for the board and its peripherals. + +config MACH_MX35_3DS + bool "Support MX35PDK platform" + select SOC_IMX35 + select MXC_DEBUG_BOARD + select IMX_HAVE_PLATFORM_FSL_USB2_UDC + select IMX_HAVE_PLATFORM_IMX2_WDT + select IMX_HAVE_PLATFORM_IMX_I2C + select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_MXC_EHCI + select IMX_HAVE_PLATFORM_MXC_NAND + select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX + help + Include support for MX35PDK platform. This includes specific + configurations for the board and its peripherals. + +config MACH_EUKREA_CPUIMX35 + bool "Support Eukrea CPUIMX35 Platform" + select SOC_IMX35 + select IMX_HAVE_PLATFORM_FLEXCAN + select IMX_HAVE_PLATFORM_FSL_USB2_UDC + select IMX_HAVE_PLATFORM_IMX2_WDT + select IMX_HAVE_PLATFORM_IMX_I2C + select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_MXC_EHCI + select IMX_HAVE_PLATFORM_MXC_NAND + select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX + select MXC_ULPI if USB_ULPI + help + Include support for Eukrea CPUIMX35 platform. This includes + specific configurations for the board and its peripherals. + +choice + prompt "Baseboard" + depends on MACH_EUKREA_CPUIMX35 + default MACH_EUKREA_MBIMXSD35_BASEBOARD + +config MACH_EUKREA_MBIMXSD35_BASEBOARD + bool "Eukrea MBIMXSD development board" + select IMX_HAVE_PLATFORM_GPIO_KEYS + select IMX_HAVE_PLATFORM_IMX_SSI + select IMX_HAVE_PLATFORM_IPU_CORE + help + This adds board specific devices that can be found on Eukrea's + MBIMXSD evaluation board. + +endchoice + +config MACH_VPR200 + bool "Support VPR200 platform" + select SOC_IMX35 + select IMX_HAVE_PLATFORM_FSL_USB2_UDC + select IMX_HAVE_PLATFORM_GPIO_KEYS + select IMX_HAVE_PLATFORM_IMX2_WDT + select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_IMX_I2C + select IMX_HAVE_PLATFORM_IPU_CORE + select IMX_HAVE_PLATFORM_MXC_EHCI + select IMX_HAVE_PLATFORM_MXC_NAND + select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX + help + Include support for VPR200 platform. This includes specific + configurations for the board and its peripherals. + +endif diff --git a/trunk/arch/arm/mach-imx/Makefile b/trunk/arch/arm/mach-imx/Makefile index b85794d27991..e9eb36dad888 100644 --- a/trunk/arch/arm/mach-imx/Makefile +++ b/trunk/arch/arm/mach-imx/Makefile @@ -1,9 +1,3 @@ -# -# Makefile for the linux kernel. -# - -# Object file lists. - obj-$(CONFIG_IMX_HAVE_DMA_V1) += dma-v1.o obj-$(CONFIG_ARCH_MX1) += clock-imx1.o mm-imx1.o @@ -14,18 +8,27 @@ obj-$(CONFIG_ARCH_MX25) += clock-imx25.o mm-imx25.o ehci-imx25.o obj-$(CONFIG_MACH_MX27) += cpu-imx27.o pm-imx27.o obj-$(CONFIG_MACH_MX27) += clock-imx27.o mm-imx27.o ehci-imx27.o +obj-$(CONFIG_SOC_IMX31) += mm-imx31.o cpu-imx31.o clock-imx31.o iomux-imx31.o ehci-imx31.o +obj-$(CONFIG_SOC_IMX35) += mm-imx35.o cpu-imx35.o clock-imx35.o ehci-imx35.o +obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o + # Support for CMOS sensor interface -obj-$(CONFIG_MX1_VIDEO) += mx1-camera-fiq.o mx1-camera-fiq-ksym.o +obj-$(CONFIG_MX1_VIDEO) += mx1-camera-fiq.o mx1-camera-fiq-ksym.o +# i.MX1 based machines obj-$(CONFIG_ARCH_MX1ADS) += mach-mx1ads.o obj-$(CONFIG_MACH_SCB9328) += mach-scb9328.o +obj-$(CONFIG_MACH_APF9328) += mach-apf9328.o +# i.MX21 based machines obj-$(CONFIG_MACH_MX21ADS) += mach-mx21ads.o +# i.MX25 based machines obj-$(CONFIG_MACH_MX25_3DS) += mach-mx25_3ds.o obj-$(CONFIG_MACH_EUKREA_CPUIMX25) += mach-eukrea_cpuimx25.o obj-$(CONFIG_MACH_EUKREA_MBIMXSD25_BASEBOARD) += eukrea_mbimxsd25-baseboard.o +# i.MX27 based machines obj-$(CONFIG_MACH_MX27ADS) += mach-mx27ads.o obj-$(CONFIG_MACH_PCM038) += mach-pcm038.o obj-$(CONFIG_MACH_PCM970_BASEBOARD) += pcm970-baseboard.o @@ -37,3 +40,24 @@ obj-$(CONFIG_MACH_EUKREA_MBIMX27_BASEBOARD) += eukrea_mbimx27-baseboard.o obj-$(CONFIG_MACH_PCA100) += mach-pca100.o obj-$(CONFIG_MACH_MXT_TD60) += mach-mxt_td60.o obj-$(CONFIG_MACH_IMX27IPCAM) += mach-imx27ipcam.o + +# i.MX31 based machines +obj-$(CONFIG_MACH_MX31ADS) += mach-mx31ads.o +obj-$(CONFIG_MACH_MX31LILLY) += mach-mx31lilly.o mx31lilly-db.o +obj-$(CONFIG_MACH_MX31LITE) += mach-mx31lite.o mx31lite-db.o +obj-$(CONFIG_MACH_PCM037) += mach-pcm037.o +obj-$(CONFIG_MACH_PCM037_EET) += mach-pcm037_eet.o +obj-$(CONFIG_MACH_MX31_3DS) += mach-mx31_3ds.o +obj-$(CONFIG_MACH_MX31MOBOARD) += mach-mx31moboard.o mx31moboard-devboard.o \ + mx31moboard-marxbot.o mx31moboard-smartbot.o +obj-$(CONFIG_MACH_QONG) += mach-qong.o +obj-$(CONFIG_MACH_ARMADILLO5X0) += mach-armadillo5x0.o +obj-$(CONFIG_MACH_KZM_ARM11_01) += mach-kzm_arm11_01.o +obj-$(CONFIG_MACH_BUG) += mach-bug.o + +# i.MX35 based machines +obj-$(CONFIG_MACH_PCM043) += mach-pcm043.o +obj-$(CONFIG_MACH_MX35_3DS) += mach-mx35_3ds.o +obj-$(CONFIG_MACH_EUKREA_CPUIMX35) += mach-cpuimx35.o +obj-$(CONFIG_MACH_EUKREA_MBIMXSD35_BASEBOARD) += eukrea_mbimxsd35-baseboard.o +obj-$(CONFIG_MACH_VPR200) += mach-vpr200.o diff --git a/trunk/arch/arm/mach-imx/Makefile.boot b/trunk/arch/arm/mach-imx/Makefile.boot index 3953d60bff0b..ebee18b3884c 100644 --- a/trunk/arch/arm/mach-imx/Makefile.boot +++ b/trunk/arch/arm/mach-imx/Makefile.boot @@ -13,3 +13,7 @@ initrd_phys-$(CONFIG_ARCH_MX25) := 0x80800000 zreladdr-$(CONFIG_MACH_MX27) := 0xA0008000 params_phys-$(CONFIG_MACH_MX27) := 0xA0000100 initrd_phys-$(CONFIG_MACH_MX27) := 0xA0800000 + +zreladdr-$(CONFIG_ARCH_MX3) := 0x80008000 +params_phys-$(CONFIG_ARCH_MX3) := 0x80000100 +initrd_phys-$(CONFIG_ARCH_MX3) := 0x80800000 diff --git a/trunk/arch/arm/mach-imx/cache-l2x0.c b/trunk/arch/arm/mach-imx/cache-l2x0.c new file mode 100644 index 000000000000..69d1322add3c --- /dev/null +++ b/trunk/arch/arm/mach-imx/cache-l2x0.c @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2009-2010 Pengutronix + * Sascha Hauer + * Juergen Beisert + * + * 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 + +static int mxc_init_l2x0(void) +{ + void __iomem *l2x0_base; + void __iomem *clkctl_base; + + if (!cpu_is_mx31() && !cpu_is_mx35()) + return 0; + +/* + * First of all, we must repair broken chip settings. There are some + * i.MX35 CPUs in the wild, comming with bogus L2 cache settings. These + * misconfigured CPUs will run amok immediately when the L2 cache gets enabled. + * Workaraound is to setup the correct register setting prior enabling the + * L2 cache. This should not hurt already working CPUs, as they are using the + * same value. + */ +#define L2_MEM_VAL 0x10 + + clkctl_base = ioremap(MX35_CLKCTL_BASE_ADDR, 4096); + if (clkctl_base != NULL) { + writel(0x00000515, clkctl_base + L2_MEM_VAL); + iounmap(clkctl_base); + } else { + pr_err("L2 cache: Cannot fix timing. Trying to continue without\n"); + } + + l2x0_base = ioremap(MX3x_L2CC_BASE_ADDR, 4096); + if (IS_ERR(l2x0_base)) { + printk(KERN_ERR "remapping L2 cache area failed with %ld\n", + PTR_ERR(l2x0_base)); + return 0; + } + + l2x0_init(l2x0_base, 0x00030024, 0x00000000); + + return 0; +} +arch_initcall(mxc_init_l2x0); diff --git a/trunk/arch/arm/mach-mx3/clock-imx31.c b/trunk/arch/arm/mach-imx/clock-imx31.c similarity index 99% rename from trunk/arch/arm/mach-mx3/clock-imx31.c rename to trunk/arch/arm/mach-imx/clock-imx31.c index d423cac8cab7..25f343fca2b9 100644 --- a/trunk/arch/arm/mach-mx3/clock-imx31.c +++ b/trunk/arch/arm/mach-imx/clock-imx31.c @@ -32,7 +32,7 @@ #include #include -#include "crm_regs.h" +#include "crmregs-imx31.h" #define PRE_DIV_MIN_FREQ 10000000 /* Minimum Frequency after Predivider */ @@ -627,4 +627,3 @@ int __init mx31_clocks_init(unsigned long fref) return 0; } - diff --git a/trunk/arch/arm/mach-mx3/clock-imx35.c b/trunk/arch/arm/mach-imx/clock-imx35.c similarity index 99% rename from trunk/arch/arm/mach-mx3/clock-imx35.c rename to trunk/arch/arm/mach-imx/clock-imx35.c index 448a038cd1ec..5a4cc1ea405b 100644 --- a/trunk/arch/arm/mach-mx3/clock-imx35.c +++ b/trunk/arch/arm/mach-imx/clock-imx35.c @@ -547,4 +547,3 @@ int __init mx35_clocks_init() return 0; } - diff --git a/trunk/arch/arm/mach-mx3/cpu.c b/trunk/arch/arm/mach-imx/cpu-imx31.c similarity index 72% rename from trunk/arch/arm/mach-mx3/cpu.c rename to trunk/arch/arm/mach-imx/cpu-imx31.c index d1d339576fdf..a3780700a882 100644 --- a/trunk/arch/arm/mach-mx3/cpu.c +++ b/trunk/arch/arm/mach-imx/cpu-imx31.c @@ -1,5 +1,5 @@ /* - * MX3 CPU type detection + * MX31 CPU type detection * * Copyright (c) 2009 Daniel Mack * @@ -17,14 +17,12 @@ unsigned int mx31_cpu_rev; EXPORT_SYMBOL(mx31_cpu_rev); -struct mx3_cpu_type { +static struct { u8 srev; const char *name; const char *v; unsigned int rev; -}; - -static struct mx3_cpu_type mx31_cpu_type[] __initdata = { +} mx31_cpu_type[] __initdata = { { .srev = 0x00, .name = "i.MX31(L)", .v = "1.0", .rev = IMX_CHIP_REVISION_1_0 }, { .srev = 0x10, .name = "i.MX31", .v = "1.1", .rev = IMX_CHIP_REVISION_1_1 }, { .srev = 0x11, .name = "i.MX31L", .v = "1.1", .rev = IMX_CHIP_REVISION_1_1 }, @@ -57,33 +55,3 @@ void __init mx31_read_cpu_rev(void) printk(KERN_WARNING "Unknown CPU identifier. srev = %02x\n", srev); } - -unsigned int mx35_cpu_rev; -EXPORT_SYMBOL(mx35_cpu_rev); - -void __init mx35_read_cpu_rev(void) -{ - u32 rev; - char *srev; - - rev = __raw_readl(MX35_IO_ADDRESS(MX35_IIM_BASE_ADDR + MXC_IIMSREV)); - switch (rev) { - case 0x00: - mx35_cpu_rev = IMX_CHIP_REVISION_1_0; - srev = "1.0"; - break; - case 0x10: - mx35_cpu_rev = IMX_CHIP_REVISION_2_0; - srev = "2.0"; - break; - case 0x11: - mx35_cpu_rev = IMX_CHIP_REVISION_2_1; - srev = "2.1"; - break; - default: - mx35_cpu_rev = IMX_CHIP_REVISION_UNKNOWN; - srev = "unknown"; - } - - printk(KERN_INFO "CPU identified as i.MX35, silicon rev %s\n", srev); -} diff --git a/trunk/arch/arm/mach-imx/cpu-imx35.c b/trunk/arch/arm/mach-imx/cpu-imx35.c new file mode 100644 index 000000000000..6637cd819ecb --- /dev/null +++ b/trunk/arch/arm/mach-imx/cpu-imx35.c @@ -0,0 +1,44 @@ +/* + * MX35 CPU type detection + * + * Copyright (c) 2009 Daniel Mack + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ +#include +#include +#include +#include + +unsigned int mx35_cpu_rev; +EXPORT_SYMBOL(mx35_cpu_rev); + +void __init mx35_read_cpu_rev(void) +{ + u32 rev; + char *srev; + + rev = __raw_readl(MX35_IO_ADDRESS(MX35_IIM_BASE_ADDR + MXC_IIMSREV)); + switch (rev) { + case 0x00: + mx35_cpu_rev = IMX_CHIP_REVISION_1_0; + srev = "1.0"; + break; + case 0x10: + mx35_cpu_rev = IMX_CHIP_REVISION_2_0; + srev = "2.0"; + break; + case 0x11: + mx35_cpu_rev = IMX_CHIP_REVISION_2_1; + srev = "2.1"; + break; + default: + mx35_cpu_rev = IMX_CHIP_REVISION_UNKNOWN; + srev = "unknown"; + } + + printk(KERN_INFO "CPU identified as i.MX35, silicon rev %s\n", srev); +} diff --git a/trunk/arch/arm/mach-mx3/crm_regs.h b/trunk/arch/arm/mach-imx/crmregs-imx31.h similarity index 100% rename from trunk/arch/arm/mach-mx3/crm_regs.h rename to trunk/arch/arm/mach-imx/crmregs-imx31.h diff --git a/trunk/arch/arm/mach-imx/devices-imx1.h b/trunk/arch/arm/mach-imx/devices-imx1.h index da593657ff3f..3aad1e70de96 100644 --- a/trunk/arch/arm/mach-imx/devices-imx1.h +++ b/trunk/arch/arm/mach-imx/devices-imx1.h @@ -9,21 +9,21 @@ #include #include -extern const struct imx_imx_fb_data imx1_imx_fb_data __initconst; +extern const struct imx_imx_fb_data imx1_imx_fb_data; #define imx1_add_imx_fb(pdata) \ imx_add_imx_fb(&imx1_imx_fb_data, pdata) -extern const struct imx_imx_i2c_data imx1_imx_i2c_data __initconst; +extern const struct imx_imx_i2c_data imx1_imx_i2c_data; #define imx1_add_imx_i2c(pdata) \ imx_add_imx_i2c(&imx1_imx_i2c_data, pdata) -extern const struct imx_imx_uart_3irq_data imx1_imx_uart_data[] __initconst; +extern const struct imx_imx_uart_3irq_data imx1_imx_uart_data[]; #define imx1_add_imx_uart(id, pdata) \ imx_add_imx_uart_3irq(&imx1_imx_uart_data[id], pdata) #define imx1_add_imx_uart0(pdata) imx1_add_imx_uart(0, pdata) #define imx1_add_imx_uart1(pdata) imx1_add_imx_uart(1, pdata) -extern const struct imx_spi_imx_data imx1_cspi_data[] __initconst; +extern const struct imx_spi_imx_data imx1_cspi_data[]; #define imx1_add_cspi(id, pdata) \ imx_add_spi_imx(&imx1_cspi_data[id], pdata) diff --git a/trunk/arch/arm/mach-imx/devices-imx21.h b/trunk/arch/arm/mach-imx/devices-imx21.h index 16744d2d9b81..2628e0c474dc 100644 --- a/trunk/arch/arm/mach-imx/devices-imx21.h +++ b/trunk/arch/arm/mach-imx/devices-imx21.h @@ -9,31 +9,31 @@ #include #include -extern const struct imx_imx21_hcd_data imx21_imx21_hcd_data __initconst; +extern const struct imx_imx21_hcd_data imx21_imx21_hcd_data; #define imx21_add_imx21_hcd(pdata) \ imx_add_imx21_hcd(&imx21_imx21_hcd_data, pdata) -extern const struct imx_imx2_wdt_data imx21_imx2_wdt_data __initconst; +extern const struct imx_imx2_wdt_data imx21_imx2_wdt_data; #define imx21_add_imx2_wdt(pdata) \ imx_add_imx2_wdt(&imx21_imx2_wdt_data) -extern const struct imx_imx_fb_data imx21_imx_fb_data __initconst; +extern const struct imx_imx_fb_data imx21_imx_fb_data; #define imx21_add_imx_fb(pdata) \ imx_add_imx_fb(&imx21_imx_fb_data, pdata) -extern const struct imx_imx_i2c_data imx21_imx_i2c_data __initconst; +extern const struct imx_imx_i2c_data imx21_imx_i2c_data; #define imx21_add_imx_i2c(pdata) \ imx_add_imx_i2c(&imx21_imx_i2c_data, pdata) -extern const struct imx_imx_keypad_data imx21_imx_keypad_data __initconst; +extern const struct imx_imx_keypad_data imx21_imx_keypad_data; #define imx21_add_imx_keypad(pdata) \ imx_add_imx_keypad(&imx21_imx_keypad_data, pdata) -extern const struct imx_imx_ssi_data imx21_imx_ssi_data[] __initconst; +extern const struct imx_imx_ssi_data imx21_imx_ssi_data[]; #define imx21_add_imx_ssi(id, pdata) \ imx_add_imx_ssi(&imx21_imx_ssi_data[id], pdata) -extern const struct imx_imx_uart_1irq_data imx21_imx_uart_data[] __initconst; +extern const struct imx_imx_uart_1irq_data imx21_imx_uart_data[]; #define imx21_add_imx_uart(id, pdata) \ imx_add_imx_uart_1irq(&imx21_imx_uart_data[id], pdata) #define imx21_add_imx_uart0(pdata) imx21_add_imx_uart(0, pdata) @@ -41,19 +41,19 @@ extern const struct imx_imx_uart_1irq_data imx21_imx_uart_data[] __initconst; #define imx21_add_imx_uart2(pdata) imx21_add_imx_uart(2, pdata) #define imx21_add_imx_uart3(pdata) imx21_add_imx_uart(3, pdata) -extern const struct imx_mxc_mmc_data imx21_mxc_mmc_data[] __initconst; +extern const struct imx_mxc_mmc_data imx21_mxc_mmc_data[]; #define imx21_add_mxc_mmc(id, pdata) \ imx_add_mxc_mmc(&imx21_mxc_mmc_data[id], pdata) -extern const struct imx_mxc_nand_data imx21_mxc_nand_data __initconst; +extern const struct imx_mxc_nand_data imx21_mxc_nand_data; #define imx21_add_mxc_nand(pdata) \ imx_add_mxc_nand(&imx21_mxc_nand_data, pdata) -extern const struct imx_mxc_w1_data imx21_mxc_w1_data __initconst; +extern const struct imx_mxc_w1_data imx21_mxc_w1_data; #define imx21_add_mxc_w1(pdata) \ imx_add_mxc_w1(&imx21_mxc_w1_data) -extern const struct imx_spi_imx_data imx21_cspi_data[] __initconst; +extern const struct imx_spi_imx_data imx21_cspi_data[]; #define imx21_add_cspi(id, pdata) \ imx_add_spi_imx(&imx21_cspi_data[id], pdata) #define imx21_add_spi_imx0(pdata) imx21_add_cspi(0, pdata) diff --git a/trunk/arch/arm/mach-imx/devices-imx25.h b/trunk/arch/arm/mach-imx/devices-imx25.h index b591d72f6037..efa0761c508d 100644 --- a/trunk/arch/arm/mach-imx/devices-imx25.h +++ b/trunk/arch/arm/mach-imx/devices-imx25.h @@ -9,48 +9,48 @@ #include #include -extern const struct imx_fec_data imx25_fec_data __initconst; +extern const struct imx_fec_data imx25_fec_data; #define imx25_add_fec(pdata) \ imx_add_fec(&imx25_fec_data, pdata) -extern const struct imx_flexcan_data imx25_flexcan_data[] __initconst; +extern const struct imx_flexcan_data imx25_flexcan_data[]; #define imx25_add_flexcan(id, pdata) \ imx_add_flexcan(&imx25_flexcan_data[id], pdata) #define imx25_add_flexcan0(pdata) imx25_add_flexcan(0, pdata) #define imx25_add_flexcan1(pdata) imx25_add_flexcan(1, pdata) -extern const struct imx_fsl_usb2_udc_data imx25_fsl_usb2_udc_data __initconst; +extern const struct imx_fsl_usb2_udc_data imx25_fsl_usb2_udc_data; #define imx25_add_fsl_usb2_udc(pdata) \ imx_add_fsl_usb2_udc(&imx25_fsl_usb2_udc_data, pdata) -extern struct imx_imxdi_rtc_data imx25_imxdi_rtc_data __initconst; +extern struct imx_imxdi_rtc_data imx25_imxdi_rtc_data; #define imx25_add_imxdi_rtc(pdata) \ imx_add_imxdi_rtc(&imx25_imxdi_rtc_data) -extern const struct imx_imx2_wdt_data imx25_imx2_wdt_data __initconst; +extern const struct imx_imx2_wdt_data imx25_imx2_wdt_data; #define imx25_add_imx2_wdt(pdata) \ imx_add_imx2_wdt(&imx25_imx2_wdt_data) -extern const struct imx_imx_fb_data imx25_imx_fb_data __initconst; +extern const struct imx_imx_fb_data imx25_imx_fb_data; #define imx25_add_imx_fb(pdata) \ imx_add_imx_fb(&imx25_imx_fb_data, pdata) -extern const struct imx_imx_i2c_data imx25_imx_i2c_data[] __initconst; +extern const struct imx_imx_i2c_data imx25_imx_i2c_data[]; #define imx25_add_imx_i2c(id, pdata) \ imx_add_imx_i2c(&imx25_imx_i2c_data[id], pdata) #define imx25_add_imx_i2c0(pdata) imx25_add_imx_i2c(0, pdata) #define imx25_add_imx_i2c1(pdata) imx25_add_imx_i2c(1, pdata) #define imx25_add_imx_i2c2(pdata) imx25_add_imx_i2c(2, pdata) -extern const struct imx_imx_keypad_data imx25_imx_keypad_data __initconst; +extern const struct imx_imx_keypad_data imx25_imx_keypad_data; #define imx25_add_imx_keypad(pdata) \ imx_add_imx_keypad(&imx25_imx_keypad_data, pdata) -extern const struct imx_imx_ssi_data imx25_imx_ssi_data[] __initconst; +extern const struct imx_imx_ssi_data imx25_imx_ssi_data[]; #define imx25_add_imx_ssi(id, pdata) \ imx_add_imx_ssi(&imx25_imx_ssi_data[id], pdata) -extern const struct imx_imx_uart_1irq_data imx25_imx_uart_data[] __initconst; +extern const struct imx_imx_uart_1irq_data imx25_imx_uart_data[]; #define imx25_add_imx_uart(id, pdata) \ imx_add_imx_uart_1irq(&imx25_imx_uart_data[id], pdata) #define imx25_add_imx_uart0(pdata) imx25_add_imx_uart(0, pdata) @@ -59,33 +59,32 @@ extern const struct imx_imx_uart_1irq_data imx25_imx_uart_data[] __initconst; #define imx25_add_imx_uart3(pdata) imx25_add_imx_uart(3, pdata) #define imx25_add_imx_uart4(pdata) imx25_add_imx_uart(4, pdata) -extern const struct imx_mx2_camera_data imx25_mx2_camera_data __initconst; +extern const struct imx_mx2_camera_data imx25_mx2_camera_data; #define imx25_add_mx2_camera(pdata) \ imx_add_mx2_camera(&imx25_mx2_camera_data, pdata) -extern const struct imx_mxc_ehci_data imx25_mxc_ehci_otg_data __initconst; +extern const struct imx_mxc_ehci_data imx25_mxc_ehci_otg_data; #define imx25_add_mxc_ehci_otg(pdata) \ imx_add_mxc_ehci(&imx25_mxc_ehci_otg_data, pdata) -extern const struct imx_mxc_ehci_data imx25_mxc_ehci_hs_data __initconst; +extern const struct imx_mxc_ehci_data imx25_mxc_ehci_hs_data; #define imx25_add_mxc_ehci_hs(pdata) \ imx_add_mxc_ehci(&imx25_mxc_ehci_hs_data, pdata) -extern const struct imx_mxc_nand_data imx25_mxc_nand_data __initconst; +extern const struct imx_mxc_nand_data imx25_mxc_nand_data; #define imx25_add_mxc_nand(pdata) \ imx_add_mxc_nand(&imx25_mxc_nand_data, pdata) -extern const struct imx_sdhci_esdhc_imx_data -imx25_sdhci_esdhc_imx_data[] __initconst; +extern const struct imx_sdhci_esdhc_imx_data imx25_sdhci_esdhc_imx_data[]; #define imx25_add_sdhci_esdhc_imx(id, pdata) \ imx_add_sdhci_esdhc_imx(&imx25_sdhci_esdhc_imx_data[id], pdata) -extern const struct imx_spi_imx_data imx25_cspi_data[] __initconst; +extern const struct imx_spi_imx_data imx25_cspi_data[]; #define imx25_add_spi_imx(id, pdata) \ imx_add_spi_imx(&imx25_cspi_data[id], pdata) #define imx25_add_spi_imx0(pdata) imx25_add_spi_imx(0, pdata) #define imx25_add_spi_imx1(pdata) imx25_add_spi_imx(1, pdata) #define imx25_add_spi_imx2(pdata) imx25_add_spi_imx(2, pdata) -extern struct imx_mxc_pwm_data imx25_mxc_pwm_data[] __initconst; +extern struct imx_mxc_pwm_data imx25_mxc_pwm_data[]; #define imx25_add_mxc_pwm(id) \ imx_add_mxc_pwm(&imx25_mxc_pwm_data[id]) diff --git a/trunk/arch/arm/mach-imx/devices-imx27.h b/trunk/arch/arm/mach-imx/devices-imx27.h index f1272d4b5a33..7f97a3cdd41d 100644 --- a/trunk/arch/arm/mach-imx/devices-imx27.h +++ b/trunk/arch/arm/mach-imx/devices-imx27.h @@ -9,35 +9,35 @@ #include #include -extern const struct imx_fec_data imx27_fec_data __initconst; +extern const struct imx_fec_data imx27_fec_data; #define imx27_add_fec(pdata) \ imx_add_fec(&imx27_fec_data, pdata) -extern const struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data __initconst; +extern const struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data; #define imx27_add_fsl_usb2_udc(pdata) \ imx_add_fsl_usb2_udc(&imx27_fsl_usb2_udc_data, pdata) -extern const struct imx_imx2_wdt_data imx27_imx2_wdt_data __initconst; +extern const struct imx_imx2_wdt_data imx27_imx2_wdt_data; #define imx27_add_imx2_wdt(pdata) \ imx_add_imx2_wdt(&imx27_imx2_wdt_data) -extern const struct imx_imx_fb_data imx27_imx_fb_data __initconst; +extern const struct imx_imx_fb_data imx27_imx_fb_data; #define imx27_add_imx_fb(pdata) \ imx_add_imx_fb(&imx27_imx_fb_data, pdata) -extern const struct imx_imx_i2c_data imx27_imx_i2c_data[] __initconst; +extern const struct imx_imx_i2c_data imx27_imx_i2c_data[]; #define imx27_add_imx_i2c(id, pdata) \ imx_add_imx_i2c(&imx27_imx_i2c_data[id], pdata) -extern const struct imx_imx_keypad_data imx27_imx_keypad_data __initconst; +extern const struct imx_imx_keypad_data imx27_imx_keypad_data; #define imx27_add_imx_keypad(pdata) \ imx_add_imx_keypad(&imx27_imx_keypad_data, pdata) -extern const struct imx_imx_ssi_data imx27_imx_ssi_data[] __initconst; +extern const struct imx_imx_ssi_data imx27_imx_ssi_data[]; #define imx27_add_imx_ssi(id, pdata) \ imx_add_imx_ssi(&imx27_imx_ssi_data[id], pdata) -extern const struct imx_imx_uart_1irq_data imx27_imx_uart_data[] __initconst; +extern const struct imx_imx_uart_1irq_data imx27_imx_uart_data[]; #define imx27_add_imx_uart(id, pdata) \ imx_add_imx_uart_1irq(&imx27_imx_uart_data[id], pdata) #define imx27_add_imx_uart0(pdata) imx27_add_imx_uart(0, pdata) @@ -47,30 +47,30 @@ extern const struct imx_imx_uart_1irq_data imx27_imx_uart_data[] __initconst; #define imx27_add_imx_uart4(pdata) imx27_add_imx_uart(4, pdata) #define imx27_add_imx_uart5(pdata) imx27_add_imx_uart(5, pdata) -extern const struct imx_mx2_camera_data imx27_mx2_camera_data __initconst; +extern const struct imx_mx2_camera_data imx27_mx2_camera_data; #define imx27_add_mx2_camera(pdata) \ imx_add_mx2_camera(&imx27_mx2_camera_data, pdata) -extern const struct imx_mxc_ehci_data imx27_mxc_ehci_otg_data __initconst; +extern const struct imx_mxc_ehci_data imx27_mxc_ehci_otg_data; #define imx27_add_mxc_ehci_otg(pdata) \ imx_add_mxc_ehci(&imx27_mxc_ehci_otg_data, pdata) -extern const struct imx_mxc_ehci_data imx27_mxc_ehci_hs_data[] __initconst; +extern const struct imx_mxc_ehci_data imx27_mxc_ehci_hs_data[]; #define imx27_add_mxc_ehci_hs(id, pdata) \ imx_add_mxc_ehci(&imx27_mxc_ehci_hs_data[id - 1], pdata) -extern const struct imx_mxc_mmc_data imx27_mxc_mmc_data[] __initconst; +extern const struct imx_mxc_mmc_data imx27_mxc_mmc_data[]; #define imx27_add_mxc_mmc(id, pdata) \ imx_add_mxc_mmc(&imx27_mxc_mmc_data[id], pdata) -extern const struct imx_mxc_nand_data imx27_mxc_nand_data __initconst; +extern const struct imx_mxc_nand_data imx27_mxc_nand_data; #define imx27_add_mxc_nand(pdata) \ imx_add_mxc_nand(&imx27_mxc_nand_data, pdata) -extern const struct imx_mxc_w1_data imx27_mxc_w1_data __initconst; +extern const struct imx_mxc_w1_data imx27_mxc_w1_data; #define imx27_add_mxc_w1(pdata) \ imx_add_mxc_w1(&imx27_mxc_w1_data) -extern const struct imx_spi_imx_data imx27_cspi_data[] __initconst; +extern const struct imx_spi_imx_data imx27_cspi_data[]; #define imx27_add_cspi(id, pdata) \ imx_add_spi_imx(&imx27_cspi_data[id], pdata) #define imx27_add_spi_imx0(pdata) imx27_add_cspi(0, pdata) diff --git a/trunk/arch/arm/mach-mx3/devices-imx31.h b/trunk/arch/arm/mach-imx/devices-imx31.h similarity index 67% rename from trunk/arch/arm/mach-mx3/devices-imx31.h rename to trunk/arch/arm/mach-imx/devices-imx31.h index 40f4e848a671..dbe940d9c53a 100644 --- a/trunk/arch/arm/mach-mx3/devices-imx31.h +++ b/trunk/arch/arm/mach-imx/devices-imx31.h @@ -9,30 +9,30 @@ #include #include -extern const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data __initconst; +extern const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data; #define imx31_add_fsl_usb2_udc(pdata) \ imx_add_fsl_usb2_udc(&imx31_fsl_usb2_udc_data, pdata) -extern const struct imx_imx2_wdt_data imx31_imx2_wdt_data __initconst; +extern const struct imx_imx2_wdt_data imx31_imx2_wdt_data; #define imx31_add_imx2_wdt(pdata) \ imx_add_imx2_wdt(&imx31_imx2_wdt_data) -extern const struct imx_imx_i2c_data imx31_imx_i2c_data[] __initconst; +extern const struct imx_imx_i2c_data imx31_imx_i2c_data[]; #define imx31_add_imx_i2c(id, pdata) \ imx_add_imx_i2c(&imx31_imx_i2c_data[id], pdata) #define imx31_add_imx_i2c0(pdata) imx31_add_imx_i2c(0, pdata) #define imx31_add_imx_i2c1(pdata) imx31_add_imx_i2c(1, pdata) #define imx31_add_imx_i2c2(pdata) imx31_add_imx_i2c(2, pdata) -extern const struct imx_imx_keypad_data imx31_imx_keypad_data __initconst; +extern const struct imx_imx_keypad_data imx31_imx_keypad_data; #define imx31_add_imx_keypad(pdata) \ imx_add_imx_keypad(&imx31_imx_keypad_data, pdata) -extern const struct imx_imx_ssi_data imx31_imx_ssi_data[] __initconst; +extern const struct imx_imx_ssi_data imx31_imx_ssi_data[]; #define imx31_add_imx_ssi(id, pdata) \ imx_add_imx_ssi(&imx31_imx_ssi_data[id], pdata) -extern const struct imx_imx_uart_1irq_data imx31_imx_uart_data[] __initconst; +extern const struct imx_imx_uart_1irq_data imx31_imx_uart_data[]; #define imx31_add_imx_uart(id, pdata) \ imx_add_imx_uart_1irq(&imx31_imx_uart_data[id], pdata) #define imx31_add_imx_uart0(pdata) imx31_add_imx_uart(0, pdata) @@ -41,26 +41,38 @@ extern const struct imx_imx_uart_1irq_data imx31_imx_uart_data[] __initconst; #define imx31_add_imx_uart3(pdata) imx31_add_imx_uart(3, pdata) #define imx31_add_imx_uart4(pdata) imx31_add_imx_uart(4, pdata) -extern const struct imx_mxc_ehci_data imx31_mxc_ehci_otg_data __initconst; +extern const struct imx_ipu_core_data imx31_ipu_core_data; +#define imx31_add_ipu_core(pdata) \ + imx_add_ipu_core(&imx31_ipu_core_data, pdata) +#define imx31_alloc_mx3_camera(pdata) \ + imx_alloc_mx3_camera(&imx31_ipu_core_data, pdata) +#define imx31_add_mx3_sdc_fb(pdata) \ + imx_add_mx3_sdc_fb(&imx31_ipu_core_data, pdata) + +extern const struct imx_mxc_ehci_data imx31_mxc_ehci_otg_data; #define imx31_add_mxc_ehci_otg(pdata) \ imx_add_mxc_ehci(&imx31_mxc_ehci_otg_data, pdata) -extern const struct imx_mxc_ehci_data imx31_mxc_ehci_hs_data[] __initconst; +extern const struct imx_mxc_ehci_data imx31_mxc_ehci_hs_data[]; #define imx31_add_mxc_ehci_hs(id, pdata) \ imx_add_mxc_ehci(&imx31_mxc_ehci_hs_data[id - 1], pdata) -extern const struct imx_mxc_mmc_data imx31_mxc_mmc_data[] __initconst; +extern const struct imx_mxc_mmc_data imx31_mxc_mmc_data[]; #define imx31_add_mxc_mmc(id, pdata) \ imx_add_mxc_mmc(&imx31_mxc_mmc_data[id], pdata) -extern const struct imx_mxc_nand_data imx31_mxc_nand_data __initconst; +extern const struct imx_mxc_nand_data imx31_mxc_nand_data; #define imx31_add_mxc_nand(pdata) \ imx_add_mxc_nand(&imx31_mxc_nand_data, pdata) -extern const struct imx_mxc_w1_data imx31_mxc_w1_data __initconst; +extern const struct imx_mxc_rtc_data imx31_mxc_rtc_data; +#define imx31_add_mxc_rtc(pdata) \ + imx_add_mxc_rtc(&imx31_mxc_rtc_data) + +extern const struct imx_mxc_w1_data imx31_mxc_w1_data; #define imx31_add_mxc_w1(pdata) \ imx_add_mxc_w1(&imx31_mxc_w1_data) -extern const struct imx_spi_imx_data imx31_cspi_data[] __initconst; +extern const struct imx_spi_imx_data imx31_cspi_data[]; #define imx31_add_cspi(id, pdata) \ imx_add_spi_imx(&imx31_cspi_data[id], pdata) #define imx31_add_spi_imx0(pdata) imx31_add_cspi(0, pdata) diff --git a/trunk/arch/arm/mach-mx3/devices-imx35.h b/trunk/arch/arm/mach-imx/devices-imx35.h similarity index 69% rename from trunk/arch/arm/mach-mx3/devices-imx35.h rename to trunk/arch/arm/mach-imx/devices-imx35.h index d545d86cc202..234cbd3c18af 100644 --- a/trunk/arch/arm/mach-mx3/devices-imx35.h +++ b/trunk/arch/arm/mach-imx/devices-imx35.h @@ -9,67 +9,74 @@ #include #include -extern const struct imx_fec_data imx35_fec_data __initconst; +extern const struct imx_fec_data imx35_fec_data; #define imx35_add_fec(pdata) \ imx_add_fec(&imx35_fec_data, pdata) -extern const struct imx_fsl_usb2_udc_data imx35_fsl_usb2_udc_data __initconst; +extern const struct imx_fsl_usb2_udc_data imx35_fsl_usb2_udc_data; #define imx35_add_fsl_usb2_udc(pdata) \ imx_add_fsl_usb2_udc(&imx35_fsl_usb2_udc_data, pdata) -extern const struct imx_flexcan_data imx35_flexcan_data[] __initconst; +extern const struct imx_flexcan_data imx35_flexcan_data[]; #define imx35_add_flexcan(id, pdata) \ imx_add_flexcan(&imx35_flexcan_data[id], pdata) #define imx35_add_flexcan0(pdata) imx35_add_flexcan(0, pdata) #define imx35_add_flexcan1(pdata) imx35_add_flexcan(1, pdata) -extern const struct imx_imx2_wdt_data imx35_imx2_wdt_data __initconst; +extern const struct imx_imx2_wdt_data imx35_imx2_wdt_data; #define imx35_add_imx2_wdt(pdata) \ imx_add_imx2_wdt(&imx35_imx2_wdt_data) -extern const struct imx_imx_i2c_data imx35_imx_i2c_data[] __initconst; +extern const struct imx_imx_i2c_data imx35_imx_i2c_data[]; #define imx35_add_imx_i2c(id, pdata) \ imx_add_imx_i2c(&imx35_imx_i2c_data[id], pdata) #define imx35_add_imx_i2c0(pdata) imx35_add_imx_i2c(0, pdata) #define imx35_add_imx_i2c1(pdata) imx35_add_imx_i2c(1, pdata) #define imx35_add_imx_i2c2(pdata) imx35_add_imx_i2c(2, pdata) -extern const struct imx_imx_keypad_data imx35_imx_keypad_data __initconst; +extern const struct imx_imx_keypad_data imx35_imx_keypad_data; #define imx35_add_imx_keypad(pdata) \ imx_add_imx_keypad(&imx35_imx_keypad_data, pdata) -extern const struct imx_imx_ssi_data imx35_imx_ssi_data[] __initconst; +extern const struct imx_imx_ssi_data imx35_imx_ssi_data[]; #define imx35_add_imx_ssi(id, pdata) \ imx_add_imx_ssi(&imx35_imx_ssi_data[id], pdata) -extern const struct imx_imx_uart_1irq_data imx35_imx_uart_data[] __initconst; +extern const struct imx_imx_uart_1irq_data imx35_imx_uart_data[]; #define imx35_add_imx_uart(id, pdata) \ imx_add_imx_uart_1irq(&imx35_imx_uart_data[id], pdata) #define imx35_add_imx_uart0(pdata) imx35_add_imx_uart(0, pdata) #define imx35_add_imx_uart1(pdata) imx35_add_imx_uart(1, pdata) #define imx35_add_imx_uart2(pdata) imx35_add_imx_uart(2, pdata) -extern const struct imx_mxc_ehci_data imx35_mxc_ehci_otg_data __initconst; +extern const struct imx_ipu_core_data imx35_ipu_core_data; +#define imx35_add_ipu_core(pdata) \ + imx_add_ipu_core(&imx35_ipu_core_data, pdata) +#define imx35_alloc_mx3_camera(pdata) \ + imx_alloc_mx3_camera(&imx35_ipu_core_data, pdata) +#define imx35_add_mx3_sdc_fb(pdata) \ + imx_add_mx3_sdc_fb(&imx35_ipu_core_data, pdata) + +extern const struct imx_mxc_ehci_data imx35_mxc_ehci_otg_data; #define imx35_add_mxc_ehci_otg(pdata) \ imx_add_mxc_ehci(&imx35_mxc_ehci_otg_data, pdata) -extern const struct imx_mxc_ehci_data imx35_mxc_ehci_hs_data __initconst; +extern const struct imx_mxc_ehci_data imx35_mxc_ehci_hs_data; #define imx35_add_mxc_ehci_hs(pdata) \ imx_add_mxc_ehci(&imx35_mxc_ehci_hs_data, pdata) -extern const struct imx_mxc_nand_data imx35_mxc_nand_data __initconst; +extern const struct imx_mxc_nand_data imx35_mxc_nand_data; #define imx35_add_mxc_nand(pdata) \ imx_add_mxc_nand(&imx35_mxc_nand_data, pdata) -extern const struct imx_mxc_w1_data imx35_mxc_w1_data __initconst; +extern const struct imx_mxc_w1_data imx35_mxc_w1_data; #define imx35_add_mxc_w1(pdata) \ imx_add_mxc_w1(&imx35_mxc_w1_data) -extern const struct imx_sdhci_esdhc_imx_data -imx35_sdhci_esdhc_imx_data[] __initconst; +extern const struct imx_sdhci_esdhc_imx_data imx35_sdhci_esdhc_imx_data[]; #define imx35_add_sdhci_esdhc_imx(id, pdata) \ imx_add_sdhci_esdhc_imx(&imx35_sdhci_esdhc_imx_data[id], pdata) -extern const struct imx_spi_imx_data imx35_cspi_data[] __initconst; +extern const struct imx_spi_imx_data imx35_cspi_data[]; #define imx35_add_cspi(id, pdata) \ imx_add_spi_imx(&imx35_cspi_data[id], pdata) #define imx35_add_spi_imx0(pdata) imx35_add_cspi(0, pdata) diff --git a/trunk/arch/arm/mach-mx3/ehci-imx31.c b/trunk/arch/arm/mach-imx/ehci-imx31.c similarity index 99% rename from trunk/arch/arm/mach-mx3/ehci-imx31.c rename to trunk/arch/arm/mach-imx/ehci-imx31.c index 314a983ac614..faad0f15ac7f 100644 --- a/trunk/arch/arm/mach-mx3/ehci-imx31.c +++ b/trunk/arch/arm/mach-imx/ehci-imx31.c @@ -80,4 +80,3 @@ int mx31_initialize_usb_hw(int port, unsigned int flags) return 0; } - diff --git a/trunk/arch/arm/mach-mx3/ehci-imx35.c b/trunk/arch/arm/mach-imx/ehci-imx35.c similarity index 99% rename from trunk/arch/arm/mach-mx3/ehci-imx35.c rename to trunk/arch/arm/mach-imx/ehci-imx35.c index 33983a478c6b..001ec3971f5d 100644 --- a/trunk/arch/arm/mach-mx3/ehci-imx35.c +++ b/trunk/arch/arm/mach-imx/ehci-imx35.c @@ -77,4 +77,3 @@ int mx35_initialize_usb_hw(int port, unsigned int flags) return 0; } - diff --git a/trunk/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c b/trunk/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c index fa5288018ba7..5911281da5f5 100644 --- a/trunk/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c +++ b/trunk/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include "devices-imx27.h" diff --git a/trunk/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c b/trunk/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c index 6269053505f7..f9ef04acdab1 100644 --- a/trunk/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c +++ b/trunk/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include