From e57c1a5fd0c038ee758faf1bc34703e47bd9fe58 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Mon, 9 Jan 2012 14:46:52 -0800 Subject: [PATCH] --- yaml --- r: 281974 b: refs/heads/master c: 38e5781bbf8e82c1635ea845e0d07b2228a5ac7a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/Documentation/ABI/testing/sysfs-bus-usb | 25 + .../testing/sysfs-driver-hid-logitech-lg4ff | 2 +- trunk/Documentation/HOWTO | 4 +- trunk/Documentation/cgroups/cgroups.txt | 51 +- trunk/Documentation/cpu-freq/governors.txt | 4 +- .../development-process/5.Posting | 8 +- trunk/Documentation/devices.txt | 2 +- .../devicetree/bindings/arm/fsl.txt | 8 +- .../bindings/arm/insignal-boards.txt | 8 + .../bindings/arm/samsung-boards.txt | 8 + .../devicetree/bindings/arm/tegra.txt | 14 + .../devicetree/bindings/dma/arm-pl330.txt | 30 + .../devicetree/bindings/gpio/gpio-samsung.txt | 40 + .../bindings/i2c/i2c-designware.txt | 22 + .../bindings/i2c/trivial-devices.txt | 58 + .../bindings/input/samsung-keypad.txt | 88 + .../devicetree/bindings/net/macb.txt | 25 + .../devicetree/bindings/nvec/nvec_nvidia.txt | 9 + .../devicetree/bindings/rtc/s3c-rtc.txt | 20 + .../bindings/serial/omap_serial.txt | 10 + .../bindings/serial/samsung_uart.txt | 14 + .../devicetree/bindings/usb/tegra-usb.txt | 13 + .../devicetree/bindings/vendor-prefixes.txt | 3 + trunk/Documentation/dma-buf-sharing.txt | 224 + trunk/Documentation/dontdiff | 1 - trunk/Documentation/driver-model/devres.txt | 1 + .../feature-removal-schedule.txt | 25 +- trunk/Documentation/filesystems/Locking | 8 +- .../filesystems/configfs/configfs.txt | 2 +- trunk/Documentation/filesystems/debugfs.txt | 56 +- trunk/Documentation/filesystems/sysfs.txt | 2 +- trunk/Documentation/filesystems/vfs.txt | 8 +- trunk/Documentation/hwmon/pmbus | 5 +- trunk/Documentation/hwmon/zl6100 | 15 + trunk/Documentation/kdump/kdump.txt | 35 +- trunk/Documentation/kernel-parameters.txt | 4 + trunk/Documentation/md.txt | 22 +- trunk/Documentation/power/devices.txt | 37 +- .../Documentation/power/freezing-of-tasks.txt | 39 +- trunk/Documentation/power/runtime_pm.txt | 130 +- trunk/Documentation/s390/Debugging390.txt | 34 - trunk/Documentation/scsi/53c700.txt | 21 +- trunk/Documentation/serial/driver | 2 +- trunk/Documentation/usb/usbmon.txt | 14 +- trunk/Documentation/vgaarbiter.txt | 2 +- trunk/MAINTAINERS | 92 +- trunk/arch/alpha/include/asm/ipcbuf.h | 29 +- trunk/arch/alpha/include/asm/thread_info.h | 2 - trunk/arch/alpha/include/asm/types.h | 5 - trunk/arch/arm/Kconfig | 10 +- trunk/arch/arm/Kconfig.debug | 45 + trunk/arch/arm/boot/dts/at91sam9g20.dtsi | 7 + trunk/arch/arm/boot/dts/at91sam9g45.dtsi | 7 + trunk/arch/arm/boot/dts/at91sam9m10g45ek.dts | 5 + trunk/arch/arm/boot/dts/exynos4210-origen.dts | 137 + .../arch/arm/boot/dts/exynos4210-smdkv310.dts | 182 + trunk/arch/arm/boot/dts/exynos4210.dtsi | 397 ++ trunk/arch/arm/boot/dts/highbank.dts | 12 + trunk/arch/arm/boot/dts/imx51-babbage.dts | 17 +- trunk/arch/arm/boot/dts/imx51.dtsi | 20 +- trunk/arch/arm/boot/dts/imx53-ard.dts | 18 +- trunk/arch/arm/boot/dts/imx53-evk.dts | 17 +- trunk/arch/arm/boot/dts/imx53-qsb.dts | 18 +- trunk/arch/arm/boot/dts/imx53-smd.dts | 19 +- trunk/arch/arm/boot/dts/imx53.dtsi | 34 +- .../{imx6q-sabreauto.dts => imx6q-arm2.dts} | 12 +- trunk/arch/arm/boot/dts/imx6q-sabrelite.dts | 49 + trunk/arch/arm/boot/dts/imx6q.dtsi | 34 +- trunk/arch/arm/boot/dts/omap2.dtsi | 67 + trunk/arch/arm/boot/dts/omap3.dtsi | 31 + trunk/arch/arm/boot/dts/omap4.dtsi | 28 + trunk/arch/arm/boot/dts/tegra-cardhu.dts | 36 + trunk/arch/arm/boot/dts/tegra-harmony.dts | 29 +- trunk/arch/arm/boot/dts/tegra-paz00.dts | 77 + trunk/arch/arm/boot/dts/tegra-seaboard.dts | 74 +- trunk/arch/arm/boot/dts/tegra-trimslice.dts | 65 + trunk/arch/arm/boot/dts/tegra-ventana.dts | 45 +- trunk/arch/arm/boot/dts/tegra20.dtsi | 71 +- trunk/arch/arm/boot/dts/tegra30.dtsi | 127 + .../arm/boot/dts/testcases/tests-phandle.dtsi | 37 + trunk/arch/arm/boot/dts/testcases/tests.dtsi | 1 + trunk/arch/arm/boot/dts/usb_a9g20.dts | 5 + trunk/arch/arm/boot/dts/versatile-pb.dts | 2 + trunk/arch/arm/configs/imx_v4_v5_defconfig | 1 - trunk/arch/arm/configs/omap1_defconfig | 1 - trunk/arch/arm/configs/pcontrol_g20_defconfig | 175 - trunk/arch/arm/configs/tegra_defconfig | 9 +- trunk/arch/arm/include/asm/ipcbuf.h | 30 +- trunk/arch/arm/include/asm/mach/arch.h | 2 +- trunk/arch/arm/include/asm/mach/time.h | 2 - trunk/arch/arm/include/asm/prom.h | 1 - trunk/arch/arm/include/asm/thread_info.h | 2 - trunk/arch/arm/include/asm/types.h | 6 - trunk/arch/arm/kernel/leds.c | 21 +- trunk/arch/arm/mach-at91/Kconfig | 24 +- trunk/arch/arm/mach-at91/at91cap9.c | 40 +- trunk/arch/arm/mach-at91/at91cap9_devices.c | 49 +- trunk/arch/arm/mach-at91/at91rm9200.c | 24 +- trunk/arch/arm/mach-at91/at91rm9200_devices.c | 48 +- trunk/arch/arm/mach-at91/at91rm9200_time.c | 8 +- trunk/arch/arm/mach-at91/at91sam9260.c | 36 +- .../arch/arm/mach-at91/at91sam9260_devices.c | 55 +- trunk/arch/arm/mach-at91/at91sam9261.c | 32 +- .../arch/arm/mach-at91/at91sam9261_devices.c | 33 +- trunk/arch/arm/mach-at91/at91sam9263.c | 45 +- .../arch/arm/mach-at91/at91sam9263_devices.c | 59 +- trunk/arch/arm/mach-at91/at91sam926x_time.c | 38 +- trunk/arch/arm/mach-at91/at91sam9g45.c | 44 +- .../arch/arm/mach-at91/at91sam9g45_devices.c | 69 +- trunk/arch/arm/mach-at91/at91sam9rl.c | 36 +- trunk/arch/arm/mach-at91/at91sam9rl_devices.c | 43 +- trunk/arch/arm/mach-at91/board-1arm.c | 4 +- trunk/arch/arm/mach-at91/board-afeb-9260v1.c | 10 +- trunk/arch/arm/mach-at91/board-cam60.c | 8 +- trunk/arch/arm/mach-at91/board-cap9adk.c | 21 +- trunk/arch/arm/mach-at91/board-carmeva.c | 9 +- trunk/arch/arm/mach-at91/board-cpu9krea.c | 14 +- trunk/arch/arm/mach-at91/board-cpuat91.c | 7 +- trunk/arch/arm/mach-at91/board-csb337.c | 7 +- trunk/arch/arm/mach-at91/board-csb637.c | 4 +- trunk/arch/arm/mach-at91/board-dt.c | 3 +- trunk/arch/arm/mach-at91/board-eb9200.c | 11 +- trunk/arch/arm/mach-at91/board-ecbat91.c | 7 +- trunk/arch/arm/mach-at91/board-eco920.c | 7 +- trunk/arch/arm/mach-at91/board-flexibity.c | 5 +- trunk/arch/arm/mach-at91/board-foxg20.c | 9 +- trunk/arch/arm/mach-at91/board-gsia18s.c | 7 +- trunk/arch/arm/mach-at91/board-kafa.c | 4 +- trunk/arch/arm/mach-at91/board-kb9202.c | 8 +- trunk/arch/arm/mach-at91/board-neocore926.c | 9 +- trunk/arch/arm/mach-at91/board-pcontrol-g20.c | 8 +- trunk/arch/arm/mach-at91/board-picotux200.c | 5 +- trunk/arch/arm/mach-at91/board-qil-a9260.c | 18 +- trunk/arch/arm/mach-at91/board-rm9200dk.c | 13 +- trunk/arch/arm/mach-at91/board-rm9200ek.c | 5 +- trunk/arch/arm/mach-at91/board-rsi-ews.c | 4 +- trunk/arch/arm/mach-at91/board-sam9-l9260.c | 12 +- trunk/arch/arm/mach-at91/board-sam9260ek.c | 16 +- trunk/arch/arm/mach-at91/board-sam9261ek.c | 13 +- trunk/arch/arm/mach-at91/board-sam9263ek.c | 12 +- trunk/arch/arm/mach-at91/board-sam9g20ek.c | 13 +- trunk/arch/arm/mach-at91/board-sam9m10g45ek.c | 8 +- trunk/arch/arm/mach-at91/board-sam9rlek.c | 9 +- trunk/arch/arm/mach-at91/board-snapper9260.c | 10 +- trunk/arch/arm/mach-at91/board-stamp9g20.c | 16 +- trunk/arch/arm/mach-at91/board-usb-a926x.c | 14 +- trunk/arch/arm/mach-at91/board-yl-9200.c | 9 +- trunk/arch/arm/mach-at91/generic.h | 7 +- trunk/arch/arm/mach-at91/gpio.c | 85 +- .../arm/mach-at91/include/mach/at91_aic.h | 48 +- .../arm/mach-at91/include/mach/at91_dbgu.h | 2 +- .../arm/mach-at91/include/mach/at91_pit.h | 8 +- .../arm/mach-at91/include/mach/at91_rtc.h | 24 +- .../arm/mach-at91/include/mach/at91_shdwc.h | 16 +- .../arm/mach-at91/include/mach/at91cap9.h | 27 +- .../arm/mach-at91/include/mach/at91rm9200.h | 14 +- .../arm/mach-at91/include/mach/at91sam9260.h | 23 +- .../arm/mach-at91/include/mach/at91sam9261.h | 20 +- .../arm/mach-at91/include/mach/at91sam9263.h | 33 +- .../arm/mach-at91/include/mach/at91sam9_smc.h | 17 +- .../arm/mach-at91/include/mach/at91sam9g45.h | 30 +- .../arm/mach-at91/include/mach/at91sam9rl.h | 29 +- .../arch/arm/mach-at91/include/mach/at91x40.h | 1 - trunk/arch/arm/mach-at91/include/mach/board.h | 42 +- .../arm/mach-at91/include/mach/debug-macro.S | 10 +- .../arm/mach-at91/include/mach/entry-macro.S | 11 +- trunk/arch/arm/mach-at91/include/mach/gpio.h | 336 +- .../arm/mach-at91/include/mach/hardware.h | 12 + trunk/arch/arm/mach-at91/include/mach/irqs.h | 2 +- trunk/arch/arm/mach-at91/include/mach/timex.h | 65 +- .../arm/mach-at91/include/mach/uncompress.h | 6 +- trunk/arch/arm/mach-at91/irq.c | 38 +- trunk/arch/arm/mach-at91/pm.c | 11 +- trunk/arch/arm/mach-at91/sam9_smc.c | 62 +- trunk/arch/arm/mach-at91/sam9_smc.h | 3 +- trunk/arch/arm/mach-at91/setup.c | 26 +- trunk/arch/arm/mach-at91/soc.h | 1 + trunk/arch/arm/mach-bcmring/core.c | 1 - trunk/arch/arm/mach-davinci/clock.c | 13 +- trunk/arch/arm/mach-davinci/clock.h | 10 +- trunk/arch/arm/mach-davinci/dm644x.c | 4 +- .../arm/mach-davinci/include/mach/dm646x.h | 53 +- trunk/arch/arm/mach-dove/addr-map.c | 121 +- trunk/arch/arm/mach-dove/common.c | 16 +- trunk/arch/arm/mach-dove/common.h | 1 - trunk/arch/arm/mach-dove/pcie.c | 4 +- trunk/arch/arm/mach-exynos/Kconfig | 36 + trunk/arch/arm/mach-exynos/Makefile | 8 +- trunk/arch/arm/mach-exynos/clock.c | 302 +- trunk/arch/arm/mach-exynos/common.c | 68 +- trunk/arch/arm/mach-exynos/dev-ohci.c | 52 + trunk/arch/arm/mach-exynos/dma.c | 229 +- .../arch/arm/mach-exynos/include/mach/irqs.h | 11 +- trunk/arch/arm/mach-exynos/include/mach/map.h | 8 + .../arch/arm/mach-exynos/include/mach/ohci.h | 21 + .../arm/mach-exynos/include/mach/spi-clocks.h | 16 + trunk/arch/arm/mach-exynos/mach-exynos4-dt.c | 85 + trunk/arch/arm/mach-exynos/mach-nuri.c | 9 +- trunk/arch/arm/mach-exynos/mach-origen.c | 13 + trunk/arch/arm/mach-exynos/mach-smdkv310.c | 17 +- .../arm/mach-exynos/mach-universal_c210.c | 10 +- trunk/arch/arm/mach-exynos/pm.c | 34 +- trunk/arch/arm/mach-exynos/setup-sdhci.c | 22 - trunk/arch/arm/mach-exynos/setup-spi.c | 72 + trunk/arch/arm/mach-exynos/setup-usb-phy.c | 15 + trunk/arch/arm/mach-imx/Kconfig | 2 + trunk/arch/arm/mach-imx/Makefile | 6 +- trunk/arch/arm/mach-imx/Makefile.boot | 3 + trunk/arch/arm/mach-imx/head-v7.S | 17 +- trunk/arch/arm/mach-imx/mach-apf9328.c | 10 + trunk/arch/arm/mach-imx/mach-imx6q.c | 24 +- trunk/arch/arm/mach-imx/mach-mx31_3ds.c | 2 +- trunk/arch/arm/mach-imx/pm-imx6q.c | 2 + .../arch/arm/mach-integrator/integrator_cp.c | 2 +- trunk/arch/arm/mach-kirkwood/addr-map.c | 137 +- trunk/arch/arm/mach-kirkwood/common.c | 19 +- trunk/arch/arm/mach-kirkwood/common.h | 1 - .../arm/mach-kirkwood/include/mach/kirkwood.h | 1 + trunk/arch/arm/mach-kirkwood/mpp.c | 1 - trunk/arch/arm/mach-kirkwood/mpp.h | 1 + trunk/arch/arm/mach-kirkwood/pcie.c | 4 +- trunk/arch/arm/mach-ks8695/irq.c | 2 +- trunk/arch/arm/mach-lpc32xx/phy3250.c | 2 +- trunk/arch/arm/mach-mmp/aspenite.c | 5 +- trunk/arch/arm/mach-mmp/avengers_lite.c | 1 + trunk/arch/arm/mach-mmp/brownstone.c | 1 + trunk/arch/arm/mach-mmp/flint.c | 5 +- trunk/arch/arm/mach-mmp/gplugd.c | 1 + .../arch/arm/mach-mmp/include/mach/gpio-pxa.h | 3 +- trunk/arch/arm/mach-mmp/include/mach/gpio.h | 7 +- trunk/arch/arm/mach-mmp/include/mach/irqs.h | 6 +- trunk/arch/arm/mach-mmp/include/mach/mmp2.h | 2 + trunk/arch/arm/mach-mmp/include/mach/pxa168.h | 2 + trunk/arch/arm/mach-mmp/include/mach/pxa910.h | 2 + trunk/arch/arm/mach-mmp/mmp2.c | 39 +- trunk/arch/arm/mach-mmp/pxa168.c | 40 +- trunk/arch/arm/mach-mmp/pxa910.c | 40 +- trunk/arch/arm/mach-mmp/tavorevb.c | 6 +- trunk/arch/arm/mach-mmp/teton_bga.c | 3 +- trunk/arch/arm/mach-mmp/ttc_dkb.c | 8 +- trunk/arch/arm/mach-msm/Kconfig | 35 +- trunk/arch/arm/mach-msm/board-sapphire.c | 2 +- .../arm/mach-msm/include/mach/debug-macro.S | 51 +- .../mach-msm/include/mach/msm_iomap-7x00.h | 12 - .../mach-msm/include/mach/msm_iomap-7x30.h | 12 - .../mach-msm/include/mach/msm_iomap-8960.h | 5 + .../mach-msm/include/mach/msm_iomap-8x50.h | 12 - .../mach-msm/include/mach/msm_iomap-8x60.h | 5 + .../arm/mach-msm/include/mach/msm_iomap.h | 12 + .../arm/mach-msm/include/mach/uncompress.h | 39 +- trunk/arch/arm/mach-msm/io.c | 15 +- trunk/arch/arm/mach-msm/platsmp.c | 2 +- trunk/arch/arm/mach-msm/smd_debug.c | 2 +- trunk/arch/arm/mach-msm/timer.c | 347 +- trunk/arch/arm/mach-mv78xx0/addr-map.c | 102 +- trunk/arch/arm/mach-mv78xx0/common.c | 22 +- trunk/arch/arm/mach-mv78xx0/common.h | 1 - trunk/arch/arm/mach-mv78xx0/mpp.c | 1 - trunk/arch/arm/mach-mv78xx0/pcie.c | 4 +- trunk/arch/arm/mach-mx5/mm.c | 19 +- trunk/arch/arm/mach-mx5/system.c | 3 - trunk/arch/arm/mach-mxs/clock-mx23.c | 10 +- trunk/arch/arm/mach-mxs/clock-mx28.c | 48 +- trunk/arch/arm/mach-mxs/clock.c | 33 +- trunk/arch/arm/mach-mxs/devices-mx28.h | 3 +- .../arm/mach-mxs/devices/platform-mxs-saif.c | 5 +- trunk/arch/arm/mach-mxs/include/mach/common.h | 1 + .../mach-mxs/include/mach/devices-common.h | 4 +- trunk/arch/arm/mach-mxs/include/mach/digctl.h | 21 + trunk/arch/arm/mach-mxs/mach-mx28evk.c | 20 +- trunk/arch/arm/mach-mxs/system.c | 2 +- trunk/arch/arm/mach-mxs/timer.c | 2 +- trunk/arch/arm/mach-omap1/Kconfig | 64 - trunk/arch/arm/mach-omap1/clock.c | 14 +- trunk/arch/arm/mach-omap1/clock.h | 3 + trunk/arch/arm/mach-omap1/clock_data.c | 19 +- trunk/arch/arm/mach-omap1/opp.h | 1 + trunk/arch/arm/mach-omap1/opp_data.c | 63 +- trunk/arch/arm/mach-omap2/Kconfig | 37 +- trunk/arch/arm/mach-omap2/Makefile | 20 +- trunk/arch/arm/mach-omap2/board-3430sdp.c | 100 +- trunk/arch/arm/mach-omap2/board-4430sdp.c | 75 +- trunk/arch/arm/mach-omap2/board-am3517evm.c | 22 + trunk/arch/arm/mach-omap2/board-cm-t35.c | 82 +- trunk/arch/arm/mach-omap2/board-generic.c | 1 - trunk/arch/arm/mach-omap2/board-n8x0.c | 8 +- trunk/arch/arm/mach-omap2/board-omap4panda.c | 68 +- .../arm/mach-omap2/board-rx51-peripherals.c | 46 +- trunk/arch/arm/mach-omap2/board-ti8168evm.c | 43 +- trunk/arch/arm/mach-omap2/clock.c | 2 +- trunk/arch/arm/mach-omap2/clock.h | 2 +- trunk/arch/arm/mach-omap2/clock3xxx_data.c | 43 +- trunk/arch/arm/mach-omap2/clock44xx_data.c | 19 +- trunk/arch/arm/mach-omap2/common.c | 48 +- trunk/arch/arm/mach-omap2/common.h | 87 +- trunk/arch/arm/mach-omap2/control.h | 8 +- trunk/arch/arm/mach-omap2/cpuidle34xx.c | 21 +- trunk/arch/arm/mach-omap2/cpuidle44xx.c | 245 + trunk/arch/arm/mach-omap2/devices.c | 22 + trunk/arch/arm/mach-omap2/hsmmc.c | 59 +- trunk/arch/arm/mach-omap2/hsmmc.h | 1 + trunk/arch/arm/mach-omap2/id.c | 52 +- .../arm/mach-omap2/include/mach/barriers.h | 31 + .../arm/mach-omap2/include/mach/debug-macro.S | 12 +- .../arm/mach-omap2/include/mach/omap-secure.h | 57 + .../mach-omap2/include/mach/omap-wakeupgen.h | 39 + trunk/arch/arm/mach-omap2/io.c | 47 +- trunk/arch/arm/mach-omap2/irq.c | 2 +- trunk/arch/arm/mach-omap2/mux.c | 89 +- trunk/arch/arm/mach-omap2/omap-headsmp.S | 5 - trunk/arch/arm/mach-omap2/omap-hotplug.c | 14 +- .../arch/arm/mach-omap2/omap-mpuss-lowpower.c | 398 ++ trunk/arch/arm/mach-omap2/omap-secure.c | 81 + .../mach-omap2/{omap44xx-smc.S => omap-smc.S} | 23 + trunk/arch/arm/mach-omap2/omap-smp.c | 45 + trunk/arch/arm/mach-omap2/omap-wakeupgen.c | 389 ++ trunk/arch/arm/mach-omap2/omap4-common.c | 94 +- trunk/arch/arm/mach-omap2/omap4-sar-layout.h | 50 + trunk/arch/arm/mach-omap2/omap_hwmod.c | 223 +- .../arm/mach-omap2/omap_hwmod_3xxx_data.c | 388 +- .../arm/mach-omap2/omap_hwmod_44xx_data.c | 217 +- trunk/arch/arm/mach-omap2/omap_phy_internal.c | 35 + trunk/arch/arm/mach-omap2/opp2xxx.h | 2 +- trunk/arch/arm/mach-omap2/pm.h | 1 + trunk/arch/arm/mach-omap2/pm24xx.c | 20 - trunk/arch/arm/mach-omap2/pm34xx.c | 158 +- trunk/arch/arm/mach-omap2/pm44xx.c | 153 +- trunk/arch/arm/mach-omap2/prcm-common.h | 77 +- trunk/arch/arm/mach-omap2/prm2xxx_3xxx.c | 97 +- trunk/arch/arm/mach-omap2/prm2xxx_3xxx.h | 9 +- trunk/arch/arm/mach-omap2/prm44xx.c | 116 + trunk/arch/arm/mach-omap2/prm44xx.h | 8 +- trunk/arch/arm/mach-omap2/prm_common.c | 320 ++ trunk/arch/arm/mach-omap2/sdram-nokia.c | 25 +- trunk/arch/arm/mach-omap2/serial.c | 907 +--- trunk/arch/arm/mach-omap2/sleep44xx.S | 379 ++ trunk/arch/arm/mach-omap2/usb-host.c | 100 +- trunk/arch/arm/mach-omap2/usb-musb.c | 3 + .../arm/mach-omap2/voltagedomains3xxx_data.c | 40 +- trunk/arch/arm/mach-orion5x/addr-map.c | 146 +- trunk/arch/arm/mach-orion5x/common.c | 23 +- trunk/arch/arm/mach-orion5x/common.h | 3 +- .../arm/mach-orion5x/include/mach/orion5x.h | 2 +- trunk/arch/arm/mach-orion5x/mpp.c | 1 - trunk/arch/arm/mach-orion5x/pci.c | 5 +- trunk/arch/arm/mach-picoxcell/Makefile | 1 - trunk/arch/arm/mach-picoxcell/common.c | 52 +- trunk/arch/arm/mach-picoxcell/common.h | 1 - .../arm/mach-picoxcell/include/mach/irqs.h | 9 +- .../arm/mach-picoxcell/include/mach/memory.h | 1 - trunk/arch/arm/mach-picoxcell/io.c | 32 - trunk/arch/arm/mach-pxa/am200epd.c | 4 +- trunk/arch/arm/mach-pxa/am300epd.c | 4 +- trunk/arch/arm/mach-pxa/balloon3.c | 3 +- trunk/arch/arm/mach-pxa/capc7117.c | 12 +- trunk/arch/arm/mach-pxa/cm-x270.c | 4 +- trunk/arch/arm/mach-pxa/cm-x2xx.c | 4 +- trunk/arch/arm/mach-pxa/cm-x300.c | 6 +- .../arch/arm/mach-pxa/colibri-pxa270-income.c | 2 +- trunk/arch/arm/mach-pxa/colibri-pxa270.c | 6 +- trunk/arch/arm/mach-pxa/colibri-pxa300.c | 4 +- trunk/arch/arm/mach-pxa/colibri-pxa320.c | 4 +- trunk/arch/arm/mach-pxa/corgi.c | 2 +- trunk/arch/arm/mach-pxa/corgi_pm.c | 21 +- trunk/arch/arm/mach-pxa/devices.c | 50 + trunk/arch/arm/mach-pxa/devices.h | 1 + trunk/arch/arm/mach-pxa/em-x270.c | 6 +- trunk/arch/arm/mach-pxa/eseries.c | 4 +- trunk/arch/arm/mach-pxa/hx4700.c | 18 +- trunk/arch/arm/mach-pxa/icontrol.c | 8 +- trunk/arch/arm/mach-pxa/idp.c | 4 +- .../arch/arm/mach-pxa/include/mach/balloon3.h | 6 +- trunk/arch/arm/mach-pxa/include/mach/corgi.h | 26 +- trunk/arch/arm/mach-pxa/include/mach/csb726.h | 4 +- .../arch/arm/mach-pxa/include/mach/gpio-pxa.h | 133 - trunk/arch/arm/mach-pxa/include/mach/gpio.h | 20 +- .../arch/arm/mach-pxa/include/mach/gumstix.h | 20 +- trunk/arch/arm/mach-pxa/include/mach/hx4700.h | 2 +- trunk/arch/arm/mach-pxa/include/mach/idp.h | 16 +- trunk/arch/arm/mach-pxa/include/mach/irqs.h | 8 +- .../arm/mach-pxa/include/mach/littleton.h | 4 +- .../arch/arm/mach-pxa/include/mach/magician.h | 2 +- trunk/arch/arm/mach-pxa/include/mach/palmld.h | 8 +- trunk/arch/arm/mach-pxa/include/mach/palmt5.h | 8 +- trunk/arch/arm/mach-pxa/include/mach/palmtc.h | 4 +- trunk/arch/arm/mach-pxa/include/mach/palmtx.h | 8 +- trunk/arch/arm/mach-pxa/include/mach/pcm027.h | 8 +- .../mach-pxa/include/mach/pcm990_baseboard.h | 14 +- trunk/arch/arm/mach-pxa/include/mach/poodle.h | 26 +- trunk/arch/arm/mach-pxa/include/mach/spitz.h | 40 +- trunk/arch/arm/mach-pxa/include/mach/tosa.h | 54 +- .../arch/arm/mach-pxa/include/mach/trizeps4.h | 16 +- trunk/arch/arm/mach-pxa/irq.c | 61 +- trunk/arch/arm/mach-pxa/littleton.c | 6 +- trunk/arch/arm/mach-pxa/lpd270.c | 4 +- trunk/arch/arm/mach-pxa/lubbock.c | 4 +- trunk/arch/arm/mach-pxa/magician.c | 8 +- trunk/arch/arm/mach-pxa/mainstone.c | 4 +- trunk/arch/arm/mach-pxa/mfp-pxa2xx.c | 6 +- trunk/arch/arm/mach-pxa/mioa701.c | 37 +- trunk/arch/arm/mach-pxa/mxm8x10.c | 4 +- trunk/arch/arm/mach-pxa/pcm990-baseboard.c | 6 +- trunk/arch/arm/mach-pxa/poodle.c | 6 +- trunk/arch/arm/mach-pxa/pxa25x.c | 7 +- trunk/arch/arm/mach-pxa/pxa27x.c | 7 +- trunk/arch/arm/mach-pxa/pxa300.c | 1 + trunk/arch/arm/mach-pxa/pxa320.c | 1 + trunk/arch/arm/mach-pxa/pxa3xx.c | 9 +- trunk/arch/arm/mach-pxa/pxa95x.c | 6 +- trunk/arch/arm/mach-pxa/raumfeld.c | 8 +- trunk/arch/arm/mach-pxa/saar.c | 6 +- trunk/arch/arm/mach-pxa/saarb.c | 2 +- trunk/arch/arm/mach-pxa/sharpsl_pm.c | 24 +- trunk/arch/arm/mach-pxa/spitz.c | 2 +- trunk/arch/arm/mach-pxa/spitz_pm.c | 11 +- trunk/arch/arm/mach-pxa/stargate2.c | 26 +- trunk/arch/arm/mach-pxa/tavorevb.c | 4 +- trunk/arch/arm/mach-pxa/tavorevb3.c | 2 +- trunk/arch/arm/mach-pxa/tosa.c | 4 +- trunk/arch/arm/mach-pxa/viper.c | 12 +- trunk/arch/arm/mach-pxa/vpac270.c | 10 +- trunk/arch/arm/mach-pxa/z2.c | 2 +- trunk/arch/arm/mach-pxa/zeus.c | 20 +- trunk/arch/arm/mach-pxa/zylonite.c | 4 +- trunk/arch/arm/mach-pxa/zylonite_pxa300.c | 4 +- trunk/arch/arm/mach-realview/core.c | 2 +- trunk/arch/arm/mach-realview/realview_eb.c | 2 +- .../arch/arm/mach-realview/realview_pb1176.c | 2 +- .../arch/arm/mach-realview/realview_pb11mp.c | 2 +- trunk/arch/arm/mach-realview/realview_pba8.c | 2 +- trunk/arch/arm/mach-realview/realview_pbx.c | 2 +- trunk/arch/arm/mach-s3c2410/bast-irq.c | 2 +- trunk/arch/arm/mach-s3c2410/cpu-freq.c | 26 +- trunk/arch/arm/mach-s3c2410/dma.c | 28 +- .../arch/arm/mach-s3c2410/include/mach/dma.h | 4 +- trunk/arch/arm/mach-s3c2410/mach-bast.c | 22 - trunk/arch/arm/mach-s3c2410/mach-h1940.c | 2 +- trunk/arch/arm/mach-s3c2410/mach-qt2410.c | 2 +- trunk/arch/arm/mach-s3c2410/mach-vr1000.c | 24 - trunk/arch/arm/mach-s3c2410/pll.c | 20 +- trunk/arch/arm/mach-s3c2410/pm.c | 36 +- trunk/arch/arm/mach-s3c2410/s3c2410.c | 30 +- trunk/arch/arm/mach-s3c2412/clock.c | 9 +- trunk/arch/arm/mach-s3c2412/cpu-freq.c | 13 +- trunk/arch/arm/mach-s3c2412/dma.c | 12 +- trunk/arch/arm/mach-s3c2412/irq.c | 12 +- trunk/arch/arm/mach-s3c2412/pm.c | 12 +- trunk/arch/arm/mach-s3c2412/s3c2412.c | 15 +- trunk/arch/arm/mach-s3c2416/Makefile | 1 - trunk/arch/arm/mach-s3c2416/clock.c | 68 +- trunk/arch/arm/mach-s3c2416/irq.c | 12 +- trunk/arch/arm/mach-s3c2416/mach-smdk2416.c | 1 + trunk/arch/arm/mach-s3c2416/pm.c | 12 +- trunk/arch/arm/mach-s3c2416/s3c2416.c | 15 +- trunk/arch/arm/mach-s3c2416/setup-sdhci.c | 24 - trunk/arch/arm/mach-s3c2440/clock.c | 59 +- trunk/arch/arm/mach-s3c2440/dma.c | 12 +- trunk/arch/arm/mach-s3c2440/irq.c | 12 +- trunk/arch/arm/mach-s3c2440/mach-anubis.c | 22 +- trunk/arch/arm/mach-s3c2440/mach-at2440evb.c | 22 +- trunk/arch/arm/mach-s3c2440/mach-mini2440.c | 18 + trunk/arch/arm/mach-s3c2440/mach-osiris.c | 24 +- trunk/arch/arm/mach-s3c2440/mach-rx1950.c | 20 +- trunk/arch/arm/mach-s3c2440/mach-rx3715.c | 21 +- trunk/arch/arm/mach-s3c2440/s3c2440-cpufreq.c | 22 +- .../arm/mach-s3c2440/s3c2440-pll-12000000.c | 20 +- .../arm/mach-s3c2440/s3c2440-pll-16934400.c | 24 +- trunk/arch/arm/mach-s3c2440/s3c2440.c | 8 +- trunk/arch/arm/mach-s3c2440/s3c2442.c | 17 +- trunk/arch/arm/mach-s3c2440/s3c244x-clock.c | 19 +- trunk/arch/arm/mach-s3c2440/s3c244x-irq.c | 20 +- trunk/arch/arm/mach-s3c2440/s3c244x.c | 16 +- trunk/arch/arm/mach-s3c2443/clock.c | 2 +- trunk/arch/arm/mach-s3c2443/dma.c | 12 +- trunk/arch/arm/mach-s3c2443/irq.c | 12 +- trunk/arch/arm/mach-s3c2443/s3c2443.c | 15 +- trunk/arch/arm/mach-s3c64xx/Kconfig | 15 +- trunk/arch/arm/mach-s3c64xx/Makefile | 2 +- trunk/arch/arm/mach-s3c64xx/clock.c | 243 +- trunk/arch/arm/mach-s3c64xx/common.c | 18 +- trunk/arch/arm/mach-s3c64xx/common.h | 1 - trunk/arch/arm/mach-s3c64xx/dev-spi.c | 180 - trunk/arch/arm/mach-s3c64xx/dma.c | 23 +- .../arm/mach-s3c64xx/include/mach/crag6410.h | 6 +- .../arch/arm/mach-s3c64xx/include/mach/gpio.h | 2 +- .../arch/arm/mach-s3c64xx/include/mach/irqs.h | 2 +- .../arch/arm/mach-s3c64xx/include/mach/map.h | 2 + .../arm/mach-s3c64xx/mach-crag6410-module.c | 56 +- trunk/arch/arm/mach-s3c64xx/mach-crag6410.c | 41 +- trunk/arch/arm/mach-s3c64xx/pm.c | 189 +- trunk/arch/arm/mach-s3c64xx/s3c6400.c | 15 +- trunk/arch/arm/mach-s3c64xx/s3c6410.c | 15 +- trunk/arch/arm/mach-s3c64xx/setup-sdhci.c | 24 - trunk/arch/arm/mach-s3c64xx/setup-spi.c | 45 + trunk/arch/arm/mach-s5p64x0/Kconfig | 31 +- trunk/arch/arm/mach-s5p64x0/Makefile | 3 +- trunk/arch/arm/mach-s5p64x0/clock-s5p6440.c | 167 +- trunk/arch/arm/mach-s5p64x0/clock-s5p6450.c | 155 +- trunk/arch/arm/mach-s5p64x0/clock.c | 2 +- trunk/arch/arm/mach-s5p64x0/common.c | 55 +- trunk/arch/arm/mach-s5p64x0/dev-spi.c | 224 - trunk/arch/arm/mach-s5p64x0/dma.c | 227 +- .../arch/arm/mach-s5p64x0/include/mach/irqs.h | 2 + .../arch/arm/mach-s5p64x0/include/mach/map.h | 2 + trunk/arch/arm/mach-s5p64x0/mach-smdk6440.c | 25 + trunk/arch/arm/mach-s5p64x0/mach-smdk6450.c | 26 +- trunk/arch/arm/mach-s5p64x0/pm.c | 10 +- .../arch/arm/mach-s5p64x0/setup-sdhci-gpio.c | 104 + trunk/arch/arm/mach-s5p64x0/setup-spi.c | 55 + trunk/arch/arm/mach-s5pc100/Kconfig | 5 + trunk/arch/arm/mach-s5pc100/Makefile | 3 +- trunk/arch/arm/mach-s5pc100/clock.c | 287 +- trunk/arch/arm/mach-s5pc100/common.c | 15 +- trunk/arch/arm/mach-s5pc100/dev-spi.c | 227 - trunk/arch/arm/mach-s5pc100/dma.c | 247 +- .../arch/arm/mach-s5pc100/include/mach/irqs.h | 2 + .../arch/arm/mach-s5pc100/include/mach/map.h | 3 + trunk/arch/arm/mach-s5pc100/setup-sdhci.c | 23 - trunk/arch/arm/mach-s5pc100/setup-spi.c | 65 + trunk/arch/arm/mach-s5pv210/Kconfig | 5 + trunk/arch/arm/mach-s5pv210/Makefile | 3 +- trunk/arch/arm/mach-s5pv210/clock.c | 326 +- trunk/arch/arm/mach-s5pv210/common.c | 34 +- trunk/arch/arm/mach-s5pv210/dev-spi.c | 175 - trunk/arch/arm/mach-s5pv210/dma.c | 241 +- .../arch/arm/mach-s5pv210/include/mach/irqs.h | 2 + .../arch/arm/mach-s5pv210/include/mach/map.h | 2 + trunk/arch/arm/mach-s5pv210/mach-aquila.c | 3 +- trunk/arch/arm/mach-s5pv210/mach-goni.c | 6 +- trunk/arch/arm/mach-s5pv210/mach-smdkc110.c | 2 +- trunk/arch/arm/mach-s5pv210/mach-smdkv210.c | 12 +- trunk/arch/arm/mach-s5pv210/pm.c | 10 +- trunk/arch/arm/mach-s5pv210/setup-sdhci.c | 22 - trunk/arch/arm/mach-s5pv210/setup-spi.c | 51 + trunk/arch/arm/mach-sa1100/clock.c | 91 +- trunk/arch/arm/mach-sa1100/generic.c | 20 + .../arm/mach-shmobile/include/mach/common.h | 4 +- .../arm/mach-shmobile/include/mach/sh7372.h | 6 +- trunk/arch/arm/mach-shmobile/intc-sh7372.c | 50 + trunk/arch/arm/mach-shmobile/pm-sh7372.c | 196 +- trunk/arch/arm/mach-shmobile/setup-sh7372.c | 6 +- trunk/arch/arm/mach-shmobile/sleep-sh7372.S | 21 +- trunk/arch/arm/mach-tegra/Kconfig | 31 +- trunk/arch/arm/mach-tegra/Makefile | 36 +- trunk/arch/arm/mach-tegra/Makefile.boot | 3 + .../{board-dt.c => board-dt-tegra20.c} | 62 +- trunk/arch/arm/mach-tegra/board-dt-tegra30.c | 63 + .../arch/arm/mach-tegra/board-harmony-pcie.c | 9 - .../arm/mach-tegra/board-harmony-pinmux.c | 23 +- trunk/arch/arm/mach-tegra/board-harmony.c | 2 +- .../arch/arm/mach-tegra/board-paz00-pinmux.c | 25 +- trunk/arch/arm/mach-tegra/board-paz00.c | 29 +- trunk/arch/arm/mach-tegra/board-paz00.h | 3 + trunk/arch/arm/mach-tegra/board-pinmux.c | 104 + trunk/arch/arm/mach-tegra/board-pinmux.h | 38 + .../arm/mach-tegra/board-seaboard-pinmux.c | 122 +- trunk/arch/arm/mach-tegra/board-seaboard.c | 6 +- .../arm/mach-tegra/board-trimslice-pinmux.c | 27 +- trunk/arch/arm/mach-tegra/board-trimslice.c | 2 +- trunk/arch/arm/mach-tegra/board.h | 5 +- trunk/arch/arm/mach-tegra/clock.c | 25 +- trunk/arch/arm/mach-tegra/clock.h | 4 - trunk/arch/arm/mach-tegra/common.c | 55 +- trunk/arch/arm/mach-tegra/include/mach/clk.h | 2 +- .../arm/mach-tegra/include/mach/entry-macro.S | 18 - trunk/arch/arm/mach-tegra/include/mach/irqs.h | 2 - .../mach/{pinmux-t2.h => pinmux-tegra20.h} | 6 +- .../mach-tegra/include/mach/pinmux-tegra30.h | 320 ++ .../arch/arm/mach-tegra/include/mach/pinmux.h | 88 +- trunk/arch/arm/mach-tegra/irq.c | 14 +- trunk/arch/arm/mach-tegra/pcie.c | 1 - ...ux-t2-tables.c => pinmux-tegra20-tables.c} | 24 +- .../arm/mach-tegra/pinmux-tegra30-tables.c | 376 ++ trunk/arch/arm/mach-tegra/pinmux.c | 153 +- trunk/arch/arm/mach-tegra/tegra2_clocks.c | 19 +- trunk/arch/arm/mach-tegra/timer.c | 18 +- .../arch/arm/mach-u300/include/mach/memory.h | 19 - trunk/arch/arm/mach-u300/u300.c | 2 +- trunk/arch/arm/mach-ux500/board-mop500-sdi.c | 88 +- trunk/arch/arm/mach-ux500/board-mop500.c | 2 +- trunk/arch/arm/mach-ux500/board-mop500.h | 63 +- trunk/arch/arm/mach-ux500/clock.c | 207 +- trunk/arch/arm/mach-ux500/cpu-db5500.c | 41 +- trunk/arch/arm/mach-ux500/cpu-db8500.c | 30 +- trunk/arch/arm/mach-ux500/devices-db8500.c | 10 - trunk/arch/arm/mach-ux500/id.c | 6 +- .../arm/mach-ux500/include/mach/db5500-regs.h | 4 + .../arm/mach-ux500/include/mach/db8500-regs.h | 20 +- .../arm/mach-ux500/include/mach/devices.h | 2 - .../arm/mach-ux500/include/mach/hardware.h | 10 +- trunk/arch/arm/mach-ux500/include/mach/id.h | 24 + trunk/arch/arm/mach-versatile/core.c | 1 - trunk/arch/arm/mach-versatile/versatile_ab.c | 1 - trunk/arch/arm/mach-versatile/versatile_pb.c | 1 - trunk/arch/arm/mach-vexpress/v2m.c | 2 +- trunk/arch/arm/mach-w90x900/irq.c | 2 +- trunk/arch/arm/plat-mxc/include/mach/common.h | 8 +- .../arm/plat-mxc/include/mach/iomux-mx25.h | 4 + trunk/arch/arm/plat-mxc/include/mach/mxc.h | 2 +- trunk/arch/arm/plat-mxc/tzic.c | 40 +- trunk/arch/arm/plat-omap/Makefile | 1 - trunk/arch/arm/plat-omap/common.c | 3 + trunk/arch/arm/plat-omap/dma.c | 22 +- .../arch/arm/plat-omap/include/plat/am33xx.h | 25 + .../arm/plat-omap/include/plat/clkdev_omap.h | 1 + trunk/arch/arm/plat-omap/include/plat/clock.h | 4 +- trunk/arch/arm/plat-omap/include/plat/cpu.h | 56 + .../arm/plat-omap/include/plat/hardware.h | 3 +- trunk/arch/arm/plat-omap/include/plat/io.h | 12 + trunk/arch/arm/plat-omap/include/plat/irqs.h | 2 +- trunk/arch/arm/plat-omap/include/plat/mmc.h | 1 + .../arm/plat-omap/include/plat/omap-secure.h | 13 + .../arm/plat-omap/include/plat/omap-serial.h | 37 +- .../arm/plat-omap/include/plat/omap34xx.h | 2 + .../arm/plat-omap/include/plat/omap44xx.h | 1 + .../arm/plat-omap/include/plat/omap_hwmod.h | 6 + .../arch/arm/plat-omap/include/plat/serial.h | 27 +- trunk/arch/arm/plat-omap/include/plat/sram.h | 6 +- .../include/plat/{ti816x.h => ti81xx.h} | 18 +- .../arm/plat-omap/include/plat/uncompress.h | 11 +- trunk/arch/arm/plat-omap/include/plat/usb.h | 35 +- trunk/arch/arm/plat-omap/sram.c | 17 +- trunk/arch/arm/plat-orion/Makefile | 2 +- trunk/arch/arm/plat-orion/addr-map.c | 174 + trunk/arch/arm/plat-orion/common.c | 43 +- .../arm/plat-orion/include/plat/addr-map.h | 53 + .../arch/arm/plat-orion/include/plat/audio.h | 3 - .../arch/arm/plat-orion/include/plat/common.h | 17 +- .../arm/plat-orion/include/plat/ehci-orion.h | 1 - .../arch/arm/plat-orion/include/plat/mv_xor.h | 6 - .../arch/arm/plat-orion/include/plat/mvsdio.h | 1 - trunk/arch/arm/plat-orion/include/plat/pcie.h | 3 +- trunk/arch/arm/plat-orion/pcie.c | 6 +- .../arch/arm/plat-pxa/include/plat/gpio-pxa.h | 44 - trunk/arch/arm/plat-pxa/include/plat/gpio.h | 30 - trunk/arch/arm/plat-s3c24xx/common-smdk.c | 2 +- trunk/arch/arm/plat-s3c24xx/cpu-freq.c | 2 +- trunk/arch/arm/plat-s3c24xx/dma.c | 3 +- trunk/arch/arm/plat-s3c24xx/irq.c | 2 +- trunk/arch/arm/plat-s3c24xx/pm-simtec.c | 1 - trunk/arch/arm/plat-s3c24xx/s3c2410-clock.c | 2 +- .../arch/arm/plat-s3c24xx/s3c2412-iotiming.c | 2 +- trunk/arch/arm/plat-s3c24xx/s3c2443-clock.c | 39 +- trunk/arch/arm/plat-s5p/clock.c | 2 +- trunk/arch/arm/plat-s5p/irq-eint.c | 2 +- trunk/arch/arm/plat-samsung/Kconfig | 24 +- trunk/arch/arm/plat-samsung/clock-clksrc.c | 2 +- trunk/arch/arm/plat-samsung/clock.c | 2 +- trunk/arch/arm/plat-samsung/devs.c | 128 + trunk/arch/arm/plat-samsung/dma-ops.c | 15 +- .../arch/arm/plat-samsung/include/plat/cpu.h | 26 +- .../arch/arm/plat-samsung/include/plat/devs.h | 9 +- .../arm/plat-samsung/include/plat/dma-ops.h | 1 + .../arm/plat-samsung/include/plat/dma-pl330.h | 3 +- .../plat-samsung/include/plat/dma-s3c24xx.h | 2 +- .../arch/arm/plat-samsung/include/plat/irqs.h | 3 +- trunk/arch/arm/plat-samsung/include/plat/pm.h | 8 +- .../plat-samsung/include/plat/regs-serial.h | 45 +- .../plat-samsung/include/plat/s3c64xx-spi.h | 24 +- .../arm/plat-samsung/include/plat/sdhci.h | 75 +- .../arch/arm/plat-samsung/include/plat/udc.h | 15 +- trunk/arch/arm/plat-samsung/pm-gpio.c | 2 +- trunk/arch/arm/plat-samsung/wakeup-mask.c | 2 +- trunk/arch/avr32/boards/atngw100/setup.c | 2 +- trunk/arch/avr32/boards/atstk1000/atstk1002.c | 2 +- trunk/arch/avr32/boards/favr-32/setup.c | 2 +- trunk/arch/avr32/boards/hammerhead/setup.c | 2 +- trunk/arch/avr32/boards/merisc/merisc_sysfs.c | 1 - trunk/arch/avr32/boards/merisc/setup.c | 2 +- trunk/arch/avr32/boards/mimc200/setup.c | 2 +- trunk/arch/avr32/include/asm/ipcbuf.h | 30 +- trunk/arch/avr32/include/asm/thread_info.h | 2 - trunk/arch/avr32/include/asm/types.h | 6 - trunk/arch/avr32/kernel/cpu.c | 74 +- trunk/arch/avr32/kernel/irq.c | 2 +- trunk/arch/avr32/mach-at32ap/at32ap700x.c | 8 +- .../avr32/mach-at32ap/include/mach/board.h | 7 +- trunk/arch/blackfin/include/asm/thread_info.h | 2 - trunk/arch/cris/Kconfig.debug | 1 - trunk/arch/cris/include/asm/ipcbuf.h | 30 +- trunk/arch/cris/include/asm/thread_info.h | 2 - trunk/arch/cris/include/asm/types.h | 6 - trunk/arch/frv/Kconfig | 10 - trunk/arch/frv/include/asm/ipcbuf.h | 31 +- trunk/arch/frv/include/asm/thread_info.h | 2 - trunk/arch/frv/include/asm/types.h | 6 - trunk/arch/h8300/include/asm/ipcbuf.h | 30 +- trunk/arch/h8300/include/asm/thread_info.h | 2 - trunk/arch/h8300/include/asm/types.h | 17 - trunk/arch/ia64/include/asm/ipcbuf.h | 29 +- trunk/arch/ia64/include/asm/thread_info.h | 2 - trunk/arch/ia64/include/asm/types.h | 2 - trunk/arch/ia64/kernel/err_inject.c | 52 +- trunk/arch/ia64/kernel/perfmon.c | 2 +- trunk/arch/ia64/kernel/topology.c | 10 +- trunk/arch/m32r/include/asm/ipcbuf.h | 30 +- trunk/arch/m32r/include/asm/thread_info.h | 2 - trunk/arch/m32r/include/asm/types.h | 6 - trunk/arch/m68k/include/asm/ipcbuf.h | 30 +- trunk/arch/m68k/include/asm/thread_info.h | 1 - trunk/arch/m68k/include/asm/types.h | 6 - trunk/arch/m68k/platform/coldfire/gpio.c | 9 +- .../arch/microblaze/include/asm/thread_info.h | 2 - trunk/arch/microblaze/kernel/reset.c | 43 +- trunk/arch/mips/Kconfig | 5 - trunk/arch/mips/include/asm/ipcbuf.h | 29 +- trunk/arch/mips/include/asm/thread_info.h | 2 - trunk/arch/mips/include/asm/types.h | 6 - trunk/arch/mips/sgi-ip27/Kconfig | 6 - trunk/arch/mips/sibyte/Kconfig | 1 - trunk/arch/mips/txx9/generic/7segled.c | 44 +- trunk/arch/mips/txx9/generic/setup.c | 34 +- trunk/arch/mips/txx9/generic/setup_tx4939.c | 2 +- trunk/arch/mn10300/include/asm/ipcbuf.h | 30 +- trunk/arch/mn10300/include/asm/thread_info.h | 2 - trunk/arch/mn10300/include/asm/types.h | 6 - trunk/arch/parisc/hpux/sys_hpux.c | 9 +- trunk/arch/parisc/include/asm/thread_info.h | 2 - trunk/arch/parisc/include/asm/types.h | 6 - trunk/arch/powerpc/include/asm/io.h | 2 +- trunk/arch/powerpc/include/asm/keylargo.h | 2 +- trunk/arch/powerpc/include/asm/spu.h | 14 +- trunk/arch/powerpc/include/asm/thread_info.h | 2 - trunk/arch/powerpc/include/asm/topology.h | 10 +- trunk/arch/powerpc/include/asm/types.h | 6 - trunk/arch/powerpc/kernel/cacheinfo.c | 10 +- trunk/arch/powerpc/kernel/legacy_serial.c | 3 + trunk/arch/powerpc/kernel/lparcfg.c | 2 +- trunk/arch/powerpc/kernel/smp.c | 2 +- trunk/arch/powerpc/kernel/sysfs.c | 267 +- trunk/arch/powerpc/kernel/vio.c | 1 - trunk/arch/powerpc/mm/numa.c | 10 +- trunk/arch/powerpc/platforms/40x/Kconfig | 40 - trunk/arch/powerpc/platforms/44x/Kconfig | 18 +- trunk/arch/powerpc/platforms/512x/Kconfig | 1 - .../arch/powerpc/platforms/cell/cbe_thermal.c | 144 +- trunk/arch/powerpc/platforms/cell/smp.c | 2 +- trunk/arch/powerpc/platforms/cell/spu_base.c | 61 +- .../powerpc/platforms/cell/spu_syscalls.c | 4 +- .../arch/powerpc/platforms/cell/spufs/inode.c | 17 +- .../arch/powerpc/platforms/cell/spufs/spufs.h | 4 +- .../powerpc/platforms/cell/spufs/syscalls.c | 2 +- trunk/arch/powerpc/platforms/iseries/smp.c | 2 +- .../powerpc/platforms/powermac/cpufreq_32.c | 2 +- trunk/arch/powerpc/platforms/pseries/cmm.c | 67 +- .../platforms/pseries/pseries_energy.c | 71 +- trunk/arch/powerpc/platforms/pseries/smp.c | 2 +- .../arch/powerpc/platforms/pseries/suspend.c | 33 +- trunk/arch/powerpc/sysdev/axonram.c | 1 - trunk/arch/powerpc/sysdev/ppc4xx_cpm.c | 6 +- trunk/arch/powerpc/sysdev/qe_lib/gpio.c | 42 +- trunk/arch/powerpc/sysdev/qe_lib/qe_ic.c | 12 +- trunk/arch/powerpc/sysdev/uic.c | 1 - trunk/arch/s390/Kbuild | 13 +- trunk/arch/s390/Kconfig | 12 +- trunk/arch/s390/Makefile | 1 - trunk/arch/s390/boot/Makefile | 2 +- trunk/arch/s390/hypfs/inode.c | 14 +- trunk/arch/s390/include/asm/debug.h | 4 +- trunk/arch/s390/include/asm/kdebug.h | 2 +- trunk/arch/s390/include/asm/lowcore.h | 142 +- trunk/arch/s390/include/asm/percpu.h | 44 +- trunk/arch/s390/include/asm/pgtable.h | 23 +- trunk/arch/s390/include/asm/processor.h | 2 - trunk/arch/s390/include/asm/ptrace.h | 3 +- trunk/arch/s390/include/asm/qdio.h | 5 +- trunk/arch/s390/include/asm/sigp.h | 1 + trunk/arch/s390/include/asm/smp.h | 1 - trunk/arch/s390/include/asm/sparsemem.h | 4 +- trunk/arch/s390/include/asm/syscall.h | 2 +- trunk/arch/s390/include/asm/system.h | 2 - trunk/arch/s390/include/asm/thread_info.h | 2 - trunk/arch/s390/include/asm/topology.h | 40 +- trunk/arch/s390/include/asm/types.h | 2 - trunk/arch/s390/include/asm/unistd.h | 1 + trunk/arch/s390/kernel/Makefile | 3 +- trunk/arch/s390/kernel/asm-offsets.c | 8 +- trunk/arch/s390/kernel/base.S | 16 +- trunk/arch/s390/kernel/compat_linux.c | 3 - trunk/arch/s390/kernel/compat_signal.c | 12 +- trunk/arch/s390/kernel/debug.c | 8 +- trunk/arch/s390/kernel/dis.c | 9 +- trunk/arch/s390/kernel/early.c | 20 +- trunk/arch/s390/kernel/entry.S | 1103 ++--- trunk/arch/s390/kernel/entry.h | 10 +- trunk/arch/s390/kernel/entry64.S | 976 ++-- trunk/arch/s390/kernel/head.S | 4 +- trunk/arch/s390/kernel/machine_kexec.c | 1 + trunk/arch/s390/kernel/mem_detect.c | 122 +- trunk/arch/s390/kernel/reipl64.S | 4 +- trunk/arch/s390/kernel/setup.c | 69 +- trunk/arch/s390/kernel/signal.c | 20 +- trunk/arch/s390/kernel/smp.c | 229 +- trunk/arch/s390/kernel/sys_s390.c | 76 +- trunk/arch/s390/kernel/time.c | 260 +- trunk/arch/s390/kernel/topology.c | 281 +- trunk/arch/s390/kernel/traps.c | 170 +- trunk/arch/s390/mm/fault.c | 107 +- trunk/arch/s390/mm/init.c | 16 +- trunk/arch/s390/mm/pgtable.c | 14 +- trunk/arch/sh/drivers/dma/dma-sysfs.c | 81 +- trunk/arch/sh/include/asm/dma.h | 4 +- trunk/arch/sh/include/asm/thread_info.h | 2 - trunk/arch/sh/kernel/cpu/sh4/sq.c | 24 +- trunk/arch/sparc/include/asm/posix_types.h | 2 - trunk/arch/sparc/include/asm/thread_info_32.h | 2 - trunk/arch/sparc/include/asm/thread_info_64.h | 2 - trunk/arch/sparc/include/asm/types.h | 6 - trunk/arch/sparc/kernel/smp_64.c | 2 +- trunk/arch/sparc/kernel/sysfs.c | 122 +- trunk/arch/tile/kernel/sysfs.c | 61 +- trunk/arch/um/include/asm/thread_info.h | 2 - .../arch/unicore32/include/asm/thread_info.h | 2 - trunk/arch/unicore32/kernel/puv3-core.c | 1 - trunk/arch/unicore32/kernel/puv3-nb0916.c | 1 - trunk/arch/x86/Kconfig | 2 +- trunk/arch/x86/include/asm/mce.h | 2 +- trunk/arch/x86/include/asm/mrst.h | 2 +- trunk/arch/x86/include/asm/percpu.h | 28 - trunk/arch/x86/include/asm/thread_info.h | 2 - trunk/arch/x86/kernel/cpu/intel_cacheinfo.c | 25 +- .../arch/x86/kernel/cpu/mcheck/mce-internal.h | 4 +- trunk/arch/x86/kernel/cpu/mcheck/mce.c | 128 +- trunk/arch/x86/kernel/cpu/mcheck/mce_amd.c | 11 +- .../arch/x86/kernel/cpu/mcheck/therm_throt.c | 63 +- trunk/arch/x86/kernel/cpuid.c | 2 +- trunk/arch/x86/kernel/early_printk.c | 2 +- trunk/arch/x86/kernel/hpet.c | 1 - trunk/arch/x86/kernel/irqinit.c | 2 +- trunk/arch/x86/kernel/microcode_core.c | 64 +- trunk/arch/x86/kernel/msr.c | 2 +- trunk/arch/x86/pci/pcbios.c | 2 +- .../x86/platform/mrst/early_printk_mrst.c | 16 +- trunk/arch/x86/platform/uv/uv_sysfs.c | 2 +- trunk/arch/x86/xen/debugfs.c | 2 +- trunk/arch/x86/xen/debugfs.h | 2 +- trunk/arch/xtensa/include/asm/thread_info.h | 2 - trunk/arch/xtensa/include/asm/types.h | 2 - trunk/block/Kconfig | 6 + trunk/block/Makefile | 3 +- trunk/block/blk-cgroup.c | 45 +- trunk/block/bsg.c | 2 +- trunk/block/genhd.c | 5 +- trunk/block/ioctl.c | 2 +- .../check.c => block/partition-generic.c} | 152 +- trunk/{fs => block}/partitions/Kconfig | 0 trunk/{fs => block}/partitions/Makefile | 0 trunk/{fs => block}/partitions/acorn.c | 0 trunk/{fs => block}/partitions/acorn.h | 0 trunk/{fs => block}/partitions/amiga.c | 0 trunk/{fs => block}/partitions/amiga.h | 0 trunk/{fs => block}/partitions/atari.c | 0 trunk/{fs => block}/partitions/atari.h | 0 trunk/block/partitions/check.c | 166 + trunk/{fs => block}/partitions/check.h | 3 + trunk/{fs => block}/partitions/efi.c | 0 trunk/{fs => block}/partitions/efi.h | 0 trunk/{fs => block}/partitions/ibm.c | 0 trunk/{fs => block}/partitions/ibm.h | 0 trunk/{fs => block}/partitions/karma.c | 0 trunk/{fs => block}/partitions/karma.h | 0 trunk/{fs => block}/partitions/ldm.c | 0 trunk/{fs => block}/partitions/ldm.h | 0 trunk/{fs => block}/partitions/mac.c | 0 trunk/{fs => block}/partitions/mac.h | 0 trunk/{fs => block}/partitions/msdos.c | 0 trunk/{fs => block}/partitions/msdos.h | 0 trunk/{fs => block}/partitions/osf.c | 0 trunk/{fs => block}/partitions/osf.h | 0 trunk/{fs => block}/partitions/sgi.c | 0 trunk/{fs => block}/partitions/sgi.h | 0 trunk/{fs => block}/partitions/sun.c | 0 trunk/{fs => block}/partitions/sun.h | 0 trunk/{fs => block}/partitions/sysv68.c | 0 trunk/{fs => block}/partitions/sysv68.h | 0 trunk/{fs => block}/partitions/ultrix.c | 0 trunk/{fs => block}/partitions/ultrix.h | 0 trunk/crypto/Kconfig | 2 - trunk/drivers/Kconfig | 4 +- trunk/drivers/acpi/Kconfig | 2 +- trunk/drivers/acpi/acpica/hwxface.c | 2 +- trunk/drivers/acpi/battery.c | 2 +- trunk/drivers/acpi/ec_sys.c | 2 +- trunk/drivers/acpi/processor_driver.c | 6 +- trunk/drivers/acpi/processor_thermal.c | 1 - trunk/drivers/acpi/sleep.c | 16 + trunk/drivers/amba/bus.c | 136 +- trunk/drivers/ata/pata_at91.c | 6 +- trunk/drivers/ata/sata_mv.c | 19 +- trunk/drivers/base/Kconfig | 11 + trunk/drivers/base/Makefile | 5 +- trunk/drivers/base/base.h | 12 +- trunk/drivers/base/bus.c | 293 +- trunk/drivers/base/class.c | 14 +- trunk/drivers/base/core.c | 89 +- trunk/drivers/base/cpu.c | 150 +- trunk/drivers/base/devres.c | 2 +- trunk/drivers/base/devtmpfs.c | 11 +- trunk/drivers/base/dma-buf.c | 291 ++ trunk/drivers/base/firmware_class.c | 18 +- trunk/drivers/base/init.c | 1 - trunk/drivers/base/memory.c | 160 +- trunk/drivers/base/node.c | 154 +- trunk/drivers/base/platform.c | 117 +- trunk/drivers/base/power/Makefile | 2 +- trunk/drivers/base/power/domain.c | 539 ++- trunk/drivers/base/power/domain_governor.c | 156 + trunk/drivers/base/power/generic_ops.c | 91 +- trunk/drivers/base/power/main.c | 375 +- trunk/drivers/base/power/qos.c | 49 +- trunk/drivers/base/power/runtime.c | 157 +- trunk/drivers/base/regmap/Kconfig | 3 + trunk/drivers/base/regmap/Makefile | 4 +- trunk/drivers/base/regmap/internal.h | 6 +- trunk/drivers/base/regmap/regcache-indexed.c | 64 - trunk/drivers/base/regmap/regcache-lzo.c | 21 +- trunk/drivers/base/regmap/regcache-rbtree.c | 61 +- trunk/drivers/base/regmap/regcache.c | 87 +- trunk/drivers/base/regmap/regmap-irq.c | 302 ++ trunk/drivers/base/regmap/regmap.c | 179 +- trunk/drivers/base/sys.c | 10 +- trunk/drivers/base/topology.c | 51 +- trunk/drivers/block/amiflop.c | 2 +- trunk/drivers/block/aoe/aoechr.c | 2 +- trunk/drivers/block/brd.c | 9 +- trunk/drivers/block/floppy.c | 1 - trunk/drivers/block/loop.c | 1 - trunk/drivers/block/pktcdvd.c | 2 +- trunk/drivers/block/xen-blkback/xenbus.c | 2 +- trunk/drivers/bluetooth/ath3k.c | 14 +- trunk/drivers/bluetooth/bcm203x.c | 21 +- trunk/drivers/bluetooth/bfusb.c | 21 +- trunk/drivers/bluetooth/bpa10x.c | 15 +- trunk/drivers/bluetooth/btmrvl_main.c | 2 - trunk/drivers/bluetooth/btusb.c | 15 +- trunk/drivers/cdrom/cdrom.c | 1 - trunk/drivers/char/ipmi/ipmi_bt_sm.c | 2 +- trunk/drivers/char/mem.c | 4 +- trunk/drivers/char/misc.c | 2 +- trunk/drivers/char/raw.c | 2 +- trunk/drivers/char/tile-srom.c | 2 +- trunk/drivers/clk/Kconfig | 3 + trunk/drivers/cpufreq/cpufreq.c | 79 +- trunk/drivers/cpufreq/cpufreq_stats.c | 1 - trunk/drivers/cpuidle/cpuidle.c | 12 +- trunk/drivers/cpuidle/cpuidle.h | 10 +- trunk/drivers/cpuidle/sysfs.c | 74 +- trunk/drivers/devfreq/Kconfig | 13 + trunk/drivers/devfreq/Makefile | 3 + trunk/drivers/devfreq/devfreq.c | 15 +- trunk/drivers/devfreq/exynos4_bus.c | 1135 +++++ trunk/drivers/dma/dmatest.c | 46 +- trunk/drivers/dma/mv_xor.c | 11 +- trunk/drivers/dma/mxs-dma.c | 8 +- trunk/drivers/dma/pl330.c | 99 +- trunk/drivers/edac/edac_core.h | 7 +- trunk/drivers/edac/edac_device.c | 1 - trunk/drivers/edac/edac_device_sysfs.c | 20 +- trunk/drivers/edac/edac_mc.c | 1 - trunk/drivers/edac/edac_mc_sysfs.c | 16 +- trunk/drivers/edac/edac_module.h | 2 - trunk/drivers/edac/edac_pci.c | 1 - trunk/drivers/edac/edac_pci_sysfs.c | 16 +- trunk/drivers/edac/edac_stub.c | 27 +- trunk/drivers/edac/i82975x_edac.c | 30 +- trunk/drivers/edac/mce_amd_inj.c | 13 +- trunk/drivers/edac/ppc4xx_edac.c | 2 +- trunk/drivers/firmware/google/gsmi.c | 3 +- trunk/drivers/firmware/iscsi_ibft.c | 12 +- trunk/drivers/gpio/Kconfig | 21 +- trunk/drivers/gpio/Makefile | 2 +- trunk/drivers/gpio/gpio-adp5520.c | 12 +- trunk/drivers/gpio/gpio-adp5588.c | 5 +- trunk/drivers/gpio/gpio-bt8xx.c | 3 - trunk/drivers/gpio/gpio-cs5535.c | 14 +- trunk/drivers/gpio/gpio-da9052.c | 12 +- trunk/drivers/gpio/gpio-generic.c | 12 +- trunk/drivers/gpio/gpio-janz-ttl.c | 15 +- trunk/drivers/gpio/gpio-nomadik.c | 4 +- trunk/drivers/gpio/gpio-pcf857x.c | 5 +- trunk/drivers/gpio/gpio-pch.c | 7 +- trunk/drivers/gpio/gpio-pxa.c | 377 +- trunk/drivers/gpio/gpio-rdc321x.c | 13 +- trunk/drivers/gpio/gpio-samsung.c | 105 +- trunk/drivers/gpio/gpio-sch.c | 13 +- trunk/drivers/gpio/gpio-timberdale.c | 13 +- trunk/drivers/gpio/gpio-ucb1400.c | 13 +- trunk/drivers/gpio/gpio-vr41xx.c | 13 +- trunk/drivers/gpio/gpio-vx855.c | 12 +- trunk/drivers/gpio/gpio-wm8994.c | 79 +- trunk/drivers/gpio/gpio-xilinx.c | 1 - trunk/drivers/gpio/gpiolib.c | 6 +- trunk/drivers/gpu/drm/drm_sysfs.c | 2 +- trunk/drivers/gpu/drm/i915/intel_sdvo_regs.h | 2 +- trunk/drivers/hid/hid-pl.c | 4 +- trunk/drivers/hid/hid-twinhan.c | 2 +- trunk/drivers/hid/usbhid/hiddev.c | 2 +- trunk/drivers/hid/usbhid/usbkbd.c | 17 +- trunk/drivers/hid/usbhid/usbmouse.c | 17 +- trunk/drivers/hv/Kconfig | 4 +- trunk/drivers/hv/channel_mgmt.c | 12 + trunk/drivers/hv/hv.c | 8 +- trunk/drivers/hv/hv_kvp.c | 10 +- trunk/drivers/hv/hyperv_vmbus.h | 1 + trunk/drivers/hv/vmbus_drv.c | 30 +- trunk/drivers/hwmon/Kconfig | 4 +- trunk/drivers/hwmon/acpi_power_meter.c | 6 +- trunk/drivers/hwmon/adcxx.c | 2 +- trunk/drivers/hwmon/adm1031.c | 2 +- trunk/drivers/hwmon/adm9240.c | 2 +- trunk/drivers/hwmon/adt7411.c | 2 +- trunk/drivers/hwmon/adt7462.c | 28 +- trunk/drivers/hwmon/adt7470.c | 26 +- trunk/drivers/hwmon/adt7475.c | 20 +- trunk/drivers/hwmon/amc6821.c | 14 +- trunk/drivers/hwmon/applesmc.c | 6 +- trunk/drivers/hwmon/asc7621.c | 24 +- trunk/drivers/hwmon/dme1737.c | 6 +- trunk/drivers/hwmon/ds620.c | 2 +- trunk/drivers/hwmon/emc1403.c | 6 +- trunk/drivers/hwmon/emc2103.c | 10 +- trunk/drivers/hwmon/emc6w201.c | 6 +- trunk/drivers/hwmon/f71882fg.c | 32 +- trunk/drivers/hwmon/f75375s.c | 309 +- trunk/drivers/hwmon/g760a.c | 2 +- trunk/drivers/hwmon/gpio-fan.c | 6 +- trunk/drivers/hwmon/ibmaem.c | 2 +- trunk/drivers/hwmon/it87.c | 34 +- trunk/drivers/hwmon/jc42.c | 6 +- trunk/drivers/hwmon/lm73.c | 2 +- trunk/drivers/hwmon/lm75.c | 25 +- trunk/drivers/hwmon/lm75.h | 5 +- trunk/drivers/hwmon/lm80.c | 70 +- trunk/drivers/hwmon/lm90.c | 10 +- trunk/drivers/hwmon/lm95241.c | 8 +- trunk/drivers/hwmon/lm95245.c | 8 +- trunk/drivers/hwmon/ltc4261.c | 1 + trunk/drivers/hwmon/max1111.c | 2 +- trunk/drivers/hwmon/max16065.c | 2 +- trunk/drivers/hwmon/max1668.c | 4 +- trunk/drivers/hwmon/max6639.c | 8 +- trunk/drivers/hwmon/max6642.c | 2 +- trunk/drivers/hwmon/max6650.c | 2 +- trunk/drivers/hwmon/pc87427.c | 6 +- trunk/drivers/hwmon/pmbus/Kconfig | 9 +- trunk/drivers/hwmon/pmbus/adm1275.c | 71 +- trunk/drivers/hwmon/pmbus/pmbus.c | 2 - trunk/drivers/hwmon/pmbus/zl6100.c | 43 +- trunk/drivers/hwmon/sht15.c | 2 +- trunk/drivers/hwmon/tmp102.c | 2 +- trunk/drivers/hwmon/tmp401.c | 10 +- trunk/drivers/hwmon/tmp421.c | 2 +- trunk/drivers/hwmon/w83627ehf.c | 22 +- trunk/drivers/hwmon/w83791d.c | 8 +- trunk/drivers/hwmon/w83792d.c | 2 +- trunk/drivers/hwmon/w83793.c | 2 +- trunk/drivers/hwmon/w83795.c | 32 +- .../i2c/busses/i2c-designware-platdrv.c | 12 + trunk/drivers/i2c/busses/i2c-diolan-u2c.c | 15 +- trunk/drivers/i2c/busses/i2c-tegra.c | 10 +- trunk/drivers/i2c/busses/i2c-tiny-usb.c | 15 +- trunk/drivers/i2c/busses/i2c-xiic.c | 2 +- trunk/drivers/ide/at91_ide.c | 2 +- trunk/drivers/infiniband/core/cm.c | 2 +- trunk/drivers/infiniband/core/cm_msgs.h | 1 + trunk/drivers/infiniband/core/cma.c | 6 +- trunk/drivers/infiniband/core/ucm.c | 3 - trunk/drivers/infiniband/core/user_mad.c | 2 +- trunk/drivers/infiniband/core/uverbs_cmd.c | 27 +- trunk/drivers/infiniband/core/uverbs_main.c | 2 +- trunk/drivers/infiniband/hw/ipath/ipath_fs.c | 6 +- trunk/drivers/infiniband/hw/mlx4/ah.c | 2 +- trunk/drivers/infiniband/hw/mlx4/cq.c | 6 +- trunk/drivers/infiniband/hw/mlx4/qp.c | 4 +- trunk/drivers/infiniband/hw/nes/nes_cm.c | 1 + trunk/drivers/infiniband/hw/nes/nes_hw.c | 6 +- trunk/drivers/infiniband/hw/nes/nes_utils.c | 2 +- trunk/drivers/infiniband/hw/qib/qib_7220.h | 2 +- trunk/drivers/infiniband/hw/qib/qib_driver.c | 3 +- trunk/drivers/infiniband/hw/qib/qib_fs.c | 6 +- trunk/drivers/infiniband/hw/qib/qib_iba6120.c | 4 +- trunk/drivers/infiniband/hw/qib/qib_iba7220.c | 10 +- trunk/drivers/infiniband/hw/qib/qib_iba7322.c | 40 +- trunk/drivers/infiniband/hw/qib/qib_init.c | 2 +- trunk/drivers/infiniband/hw/qib/qib_pcie.c | 4 +- trunk/drivers/infiniband/hw/qib/qib_qsfp.h | 2 +- trunk/drivers/infiniband/hw/qib/qib_sd7220.c | 2 +- trunk/drivers/infiniband/hw/qib/qib_sysfs.c | 2 +- trunk/drivers/infiniband/hw/qib/qib_verbs.c | 43 +- .../drivers/infiniband/ulp/iser/iscsi_iser.c | 2 +- trunk/drivers/input/input.c | 2 +- trunk/drivers/input/joystick/xpad.c | 13 +- trunk/drivers/input/keyboard/samsung-keypad.c | 174 +- trunk/drivers/input/misc/ati_remote2.c | 21 +- trunk/drivers/input/misc/keyspan_remote.c | 21 +- trunk/drivers/input/misc/powermate.c | 13 +- trunk/drivers/input/misc/yealink.c | 17 +- trunk/drivers/input/mouse/appletouch.c | 13 +- trunk/drivers/input/mouse/bcm5974.c | 14 +- trunk/drivers/input/tablet/acecad.c | 17 +- trunk/drivers/input/tablet/aiptek.c | 19 +- trunk/drivers/input/tablet/gtco.c | 28 +- trunk/drivers/input/tablet/hanwang.c | 13 +- trunk/drivers/input/tablet/kbtab.c | 20 +- trunk/drivers/input/tablet/wacom_sys.c | 19 +- trunk/drivers/input/touchscreen/ad7877.c | 4 +- trunk/drivers/input/touchscreen/st1232.c | 13 +- trunk/drivers/input/touchscreen/tsc2005.c | 4 +- .../input/touchscreen/usbtouchscreen.c | 13 +- .../input/touchscreen/zylonite-wm97xx.c | 5 +- trunk/drivers/isdn/hardware/mISDN/hfcsusb.c | 28 +- trunk/drivers/isdn/hisax/enternow_pci.c | 2 +- trunk/drivers/leds/Kconfig | 3 +- trunk/drivers/leds/led-class.c | 1 - trunk/drivers/leds/led-triggers.c | 1 - trunk/drivers/macintosh/smu.c | 4 - trunk/drivers/md/bitmap.c | 12 +- trunk/drivers/md/dm.c | 1 - trunk/drivers/md/md.c | 110 +- trunk/drivers/md/md.h | 82 +- trunk/drivers/md/multipath.c | 7 +- trunk/drivers/md/raid1.c | 174 +- trunk/drivers/md/raid1.h | 7 +- trunk/drivers/md/raid10.c | 582 ++- trunk/drivers/md/raid10.h | 61 +- trunk/drivers/md/raid5.c | 557 ++- trunk/drivers/md/raid5.h | 98 +- trunk/drivers/media/dvb/b2c2/flexcop-usb.c | 20 +- .../media/dvb/ddbridge/ddbridge-core.c | 2 +- trunk/drivers/media/dvb/dvb-core/dvbdev.c | 2 +- trunk/drivers/media/dvb/dvb-usb/a800.c | 21 +- trunk/drivers/media/dvb/dvb-usb/af9015.c | 20 +- trunk/drivers/media/dvb/dvb-usb/anysee.c | 21 +- trunk/drivers/media/dvb/dvb-usb/au6610.c | 21 +- trunk/drivers/media/dvb/dvb-usb/az6027.c | 23 +- trunk/drivers/media/dvb/dvb-usb/ce6230.c | 22 +- .../media/dvb/dvb-usb/cinergyT2-core.c | 20 +- trunk/drivers/media/dvb/dvb-usb/cxusb.c | 21 +- .../drivers/media/dvb/dvb-usb/dib0700_core.c | 22 +- trunk/drivers/media/dvb/dvb-usb/dibusb-mb.c | 21 +- trunk/drivers/media/dvb/dvb-usb/dibusb-mc.c | 21 +- trunk/drivers/media/dvb/dvb-usb/digitv.c | 21 +- trunk/drivers/media/dvb/dvb-usb/dtt200u.c | 21 +- trunk/drivers/media/dvb/dvb-usb/dtv5100.c | 21 +- trunk/drivers/media/dvb/dvb-usb/dw2102.c | 17 +- trunk/drivers/media/dvb/dvb-usb/ec168.c | 22 +- trunk/drivers/media/dvb/dvb-usb/friio.c | 23 +- trunk/drivers/media/dvb/dvb-usb/gl861.c | 21 +- trunk/drivers/media/dvb/dvb-usb/gp8psk.c | 21 +- trunk/drivers/media/dvb/dvb-usb/it913x.c | 21 +- trunk/drivers/media/dvb/dvb-usb/lmedm04.c | 21 +- trunk/drivers/media/dvb/dvb-usb/m920x.c | 22 +- trunk/drivers/media/dvb/dvb-usb/mxl111sf.c | 19 +- trunk/drivers/media/dvb/dvb-usb/nova-t-usb2.c | 21 +- trunk/drivers/media/dvb/dvb-usb/opera1.c | 17 +- trunk/drivers/media/dvb/dvb-usb/pctv452e.c | 17 +- .../media/dvb/dvb-usb/technisat-usb2.c | 20 +- trunk/drivers/media/dvb/dvb-usb/ttusb2.c | 21 +- trunk/drivers/media/dvb/dvb-usb/umt-010.c | 21 +- trunk/drivers/media/dvb/dvb-usb/vp702x.c | 21 +- trunk/drivers/media/dvb/dvb-usb/vp7045.c | 21 +- trunk/drivers/media/dvb/siano/smsusb.c | 21 +- .../media/dvb/ttusb-budget/dvb-ttusb-budget.c | 21 +- trunk/drivers/media/dvb/ttusb-dec/ttusb_dec.c | 21 +- trunk/drivers/media/radio/dsbr100.c | 16 +- trunk/drivers/media/radio/radio-mr800.c | 23 +- .../media/radio/si470x/radio-si470x-usb.c | 28 +- trunk/drivers/media/rc/ati_remote.c | 33 +- trunk/drivers/media/rc/ene_ir.c | 2 +- trunk/drivers/media/rc/ene_ir.h | 2 +- trunk/drivers/media/rc/imon.c | 21 +- trunk/drivers/media/rc/mceusb.c | 20 +- trunk/drivers/media/rc/rc-main.c | 2 +- trunk/drivers/media/rc/redrat3.c | 20 +- trunk/drivers/media/rc/streamzap.c | 28 +- trunk/drivers/media/rc/winbond-cir.c | 2 +- .../media/video/cx231xx/cx231xx-cards.c | 24 +- trunk/drivers/media/video/davinci/vpif.h | 1 + .../media/video/davinci/vpif_capture.h | 2 +- .../media/video/davinci/vpif_display.h | 1 + .../drivers/media/video/em28xx/em28xx-cards.c | 24 +- .../media/video/et61x251/et61x251_core.c | 25 +- trunk/drivers/media/video/gspca/benq.c | 13 +- trunk/drivers/media/video/gspca/conex.c | 13 +- trunk/drivers/media/video/gspca/cpia1.c | 13 +- trunk/drivers/media/video/gspca/etoms.c | 14 +- trunk/drivers/media/video/gspca/finepix.c | 14 +- trunk/drivers/media/video/gspca/gl860/gl860.c | 17 +- trunk/drivers/media/video/gspca/jeilinj.c | 14 +- trunk/drivers/media/video/gspca/kinect.c | 14 +- trunk/drivers/media/video/gspca/konica.c | 13 +- .../media/video/gspca/m5602/m5602_core.c | 14 +- trunk/drivers/media/video/gspca/mars.c | 13 +- trunk/drivers/media/video/gspca/mr97310a.c | 13 +- trunk/drivers/media/video/gspca/nw80x.c | 13 +- trunk/drivers/media/video/gspca/ov519.c | 13 +- trunk/drivers/media/video/gspca/ov534.c | 14 +- trunk/drivers/media/video/gspca/ov534_9.c | 14 +- trunk/drivers/media/video/gspca/pac207.c | 13 +- trunk/drivers/media/video/gspca/pac7302.c | 13 +- trunk/drivers/media/video/gspca/pac7311.c | 13 +- trunk/drivers/media/video/gspca/se401.c | 13 +- trunk/drivers/media/video/gspca/sn9c2028.c | 14 +- trunk/drivers/media/video/gspca/sn9c20x.c | 13 +- trunk/drivers/media/video/gspca/sonixb.c | 13 +- trunk/drivers/media/video/gspca/sonixj.c | 13 +- trunk/drivers/media/video/gspca/spca1528.c | 13 +- trunk/drivers/media/video/gspca/spca500.c | 13 +- trunk/drivers/media/video/gspca/spca501.c | 13 +- trunk/drivers/media/video/gspca/spca505.c | 13 +- trunk/drivers/media/video/gspca/spca506.c | 19 +- trunk/drivers/media/video/gspca/spca508.c | 13 +- trunk/drivers/media/video/gspca/spca561.c | 13 +- trunk/drivers/media/video/gspca/sq905.c | 14 +- trunk/drivers/media/video/gspca/sq905c.c | 14 +- trunk/drivers/media/video/gspca/sq930x.c | 13 +- trunk/drivers/media/video/gspca/stk014.c | 13 +- trunk/drivers/media/video/gspca/stv0680.c | 13 +- .../media/video/gspca/stv06xx/stv06xx.c | 13 +- trunk/drivers/media/video/gspca/sunplus.c | 13 +- trunk/drivers/media/video/gspca/t613.c | 13 +- trunk/drivers/media/video/gspca/topro.c | 13 +- trunk/drivers/media/video/gspca/tv8532.c | 14 +- trunk/drivers/media/video/gspca/vc032x.c | 13 +- trunk/drivers/media/video/gspca/vicam.c | 14 +- trunk/drivers/media/video/gspca/xirlink_cit.c | 13 +- trunk/drivers/media/video/gspca/zc3xx.c | 13 +- trunk/drivers/media/video/hdpvr/hdpvr-core.c | 21 +- trunk/drivers/media/video/s2255drv.c | 20 +- .../media/video/sn9c102/sn9c102_core.c | 25 +- trunk/drivers/media/video/stk-webcam.c | 23 +- .../drivers/media/video/tm6000/tm6000-cards.c | 26 +- .../drivers/media/video/zoran/zoran_driver.c | 2 +- trunk/drivers/media/video/zr364xx.c | 23 +- trunk/drivers/message/fusion/lsi/mpi_ioc.h | 2 +- trunk/drivers/message/i2o/i2o_proc.c | 2 +- trunk/drivers/mfd/Kconfig | 28 + trunk/drivers/mfd/Makefile | 5 + trunk/drivers/mfd/da9052-core.c | 694 +++ trunk/drivers/mfd/da9052-i2c.c | 140 + trunk/drivers/mfd/da9052-spi.c | 115 + trunk/drivers/mfd/db8500-prcmu.c | 7 +- trunk/drivers/mfd/omap-usb-host.c | 755 ++- trunk/drivers/mfd/twl6030-irq.c | 2 - trunk/drivers/misc/ad525x_dpot-i2c.c | 10 +- trunk/drivers/misc/ad525x_dpot-spi.c | 97 +- trunk/drivers/misc/ad525x_dpot.c | 24 +- trunk/drivers/misc/ad525x_dpot.h | 8 +- trunk/drivers/misc/bmp085.c | 2 +- trunk/drivers/misc/ibmasm/command.c | 2 +- trunk/drivers/misc/ibmasm/dot_command.c | 2 +- trunk/drivers/misc/ibmasm/dot_command.h | 2 +- trunk/drivers/misc/ibmasm/event.c | 2 +- trunk/drivers/misc/ibmasm/heartbeat.c | 2 +- trunk/drivers/misc/ibmasm/i2o.h | 2 +- trunk/drivers/misc/ibmasm/ibmasm.h | 2 +- trunk/drivers/misc/ibmasm/ibmasmfs.c | 2 +- trunk/drivers/misc/ibmasm/lowlevel.c | 2 +- trunk/drivers/misc/ibmasm/lowlevel.h | 2 +- trunk/drivers/misc/ibmasm/module.c | 2 +- trunk/drivers/misc/ibmasm/r_heartbeat.c | 2 +- trunk/drivers/misc/ibmasm/remote.h | 2 +- trunk/drivers/misc/ibmasm/uart.c | 2 +- trunk/drivers/misc/isl29020.c | 2 +- trunk/drivers/misc/sgi-gru/gruprocfs.c | 2 +- trunk/drivers/misc/ti-st/st_core.c | 18 +- trunk/drivers/misc/ti-st/st_kim.c | 84 +- trunk/drivers/mmc/card/mmc_test.c | 2 +- trunk/drivers/mmc/host/at91_mci.c | 30 +- trunk/drivers/mmc/host/mvsdio.c | 13 +- trunk/drivers/mmc/host/mxs-mmc.c | 10 +- trunk/drivers/mmc/host/omap.c | 4 +- trunk/drivers/mmc/host/omap_hsmmc.c | 26 +- trunk/drivers/mmc/host/sdhci-s3c.c | 7 +- trunk/drivers/mmc/host/ushc.c | 12 +- trunk/drivers/mtd/devices/block2mtd.c | 1 - trunk/drivers/mtd/nand/Kconfig | 1 - trunk/drivers/mtd/nand/alauda.c | 13 +- trunk/drivers/mtd/nand/atmel_nand.c | 8 +- trunk/drivers/mtd/nand/gpmi-nand/gpmi-lib.c | 12 +- trunk/drivers/net/Kconfig | 2 + trunk/drivers/net/Makefile | 2 + trunk/drivers/net/bonding/bond_sysfs.c | 1 - trunk/drivers/net/can/flexcan.c | 10 +- trunk/drivers/net/can/usb/ems_usb.c | 26 +- trunk/drivers/net/can/usb/esd_usb2.c | 23 +- trunk/drivers/net/ethernet/Makefile | 2 +- trunk/drivers/net/ethernet/cadence/Kconfig | 16 +- .../drivers/net/ethernet/cadence/at91_ether.c | 26 +- .../drivers/net/ethernet/cadence/at91_ether.h | 4 +- trunk/drivers/net/ethernet/cadence/macb.c | 416 +- trunk/drivers/net/ethernet/cadence/macb.h | 152 +- .../ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 2 +- .../net/ethernet/chelsio/cxgb4vf/sge.c | 2 +- trunk/drivers/net/ethernet/freescale/fec.c | 10 +- .../net/ethernet/marvell/mv643xx_eth.c | 10 +- trunk/drivers/net/ethernet/sis/sis900.h | 2 +- trunk/drivers/net/hyperv/Kconfig | 5 + trunk/drivers/net/hyperv/Makefile | 3 + .../{staging/hv => net/hyperv}/hyperv_net.h | 139 +- .../{staging/hv => net/hyperv}/netvsc.c | 164 +- .../{staging/hv => net/hyperv}/netvsc_drv.c | 162 +- .../{staging/hv => net/hyperv}/rndis_filter.c | 44 +- trunk/drivers/net/irda/irda-usb.c | 35 +- trunk/drivers/net/irda/kingsun-sir.c | 19 +- trunk/drivers/net/irda/ks959-sir.c | 21 +- trunk/drivers/net/irda/ksdazzle-sir.c | 21 +- trunk/drivers/net/irda/mcs7780.c | 23 +- trunk/drivers/net/irda/nsc-ircc.c | 2 +- trunk/drivers/net/irda/stir4200.c | 21 +- trunk/drivers/net/irda/via-ircc.c | 4 +- trunk/drivers/net/irda/w83977af_ir.c | 2 +- trunk/drivers/net/usb/asix.c | 12 +- trunk/drivers/net/usb/catc.c | 17 +- trunk/drivers/net/usb/cdc-phonet.c | 13 +- trunk/drivers/net/usb/cdc_eem.c | 13 +- trunk/drivers/net/usb/cdc_ether.c | 19 +- trunk/drivers/net/usb/cdc_ncm.c | 15 +- trunk/drivers/net/usb/cdc_subset.c | 12 +- trunk/drivers/net/usb/cx82310_eth.c | 12 +- trunk/drivers/net/usb/dm9601.c | 13 +- trunk/drivers/net/usb/gl620a.c | 12 +- trunk/drivers/net/usb/int51x1.c | 12 +- trunk/drivers/net/usb/ipheth.c | 20 +- trunk/drivers/net/usb/kalmia.c | 12 +- trunk/drivers/net/usb/kaweth.c | 30 +- trunk/drivers/net/usb/lg-vl600.c | 12 +- trunk/drivers/net/usb/mcs7830.c | 12 +- trunk/drivers/net/usb/net1080.c | 12 +- trunk/drivers/net/usb/plusb.c | 12 +- trunk/drivers/net/usb/rndis_host.c | 12 +- trunk/drivers/net/usb/rtl8150.c | 15 +- trunk/drivers/net/usb/sierra_net.c | 19 +- trunk/drivers/net/usb/smsc75xx.c | 12 +- trunk/drivers/net/usb/smsc95xx.c | 12 +- trunk/drivers/net/usb/zaurus.c | 12 +- trunk/drivers/net/wimax/i2400m/i2400m.h | 2 +- .../drivers/net/wireless/ath/carl9170/debug.c | 2 +- trunk/drivers/net/wireless/ath/carl9170/usb.c | 13 +- trunk/drivers/net/wireless/libertas/debugfs.c | 2 +- trunk/drivers/net/wireless/libertas/if_usb.c | 24 +- .../drivers/net/wireless/libertas_tf/if_usb.c | 22 +- .../net/wireless/orinoco/orinoco_usb.c | 27 +- trunk/drivers/net/wireless/p54/p54usb.c | 13 +- trunk/drivers/net/wireless/rndis_wlan.c | 12 +- trunk/drivers/net/wireless/rt2x00/rt2500usb.c | 13 +- trunk/drivers/net/wireless/rt2x00/rt2800usb.c | 13 +- trunk/drivers/net/wireless/rt2x00/rt73usb.c | 13 +- .../net/wireless/rtl818x/rtl8187/dev.c | 13 +- .../net/wireless/rtlwifi/rtl8192cu/sw.c | 13 +- .../net/wireless/rtlwifi/rtl8192de/hw.c | 4 +- trunk/drivers/net/wireless/zd1201.c | 13 +- trunk/drivers/nfc/pn533.c | 19 +- trunk/drivers/of/Kconfig | 9 + trunk/drivers/of/Makefile | 1 + trunk/drivers/of/base.c | 156 +- trunk/drivers/of/fdt.c | 5 +- trunk/drivers/of/gpio.c | 45 +- trunk/drivers/of/pdt.c | 2 +- trunk/drivers/of/selftest.c | 139 + trunk/drivers/parisc/Kconfig | 7 - trunk/drivers/parport/parport_ax88796.c | 13 +- trunk/drivers/parport/parport_mfc3.c | 2 +- trunk/drivers/parport/parport_sunbpp.c | 13 +- trunk/drivers/pci/pci-label.c | 4 +- trunk/drivers/pcmcia/pxa2xx_cm_x255.c | 16 +- trunk/drivers/pcmcia/pxa2xx_cm_x270.c | 9 +- trunk/drivers/pcmcia/pxa2xx_e740.c | 11 +- trunk/drivers/pcmcia/pxa2xx_palmld.c | 2 +- trunk/drivers/pcmcia/pxa2xx_palmtc.c | 2 +- trunk/drivers/pcmcia/pxa2xx_stargate2.c | 6 +- trunk/drivers/pcmcia/pxa2xx_trizeps4.c | 5 +- trunk/drivers/pcmcia/pxa2xx_vpac270.c | 4 +- trunk/drivers/platform/x86/asus-laptop.c | 2 +- trunk/drivers/platform/x86/asus-wmi.c | 4 +- trunk/drivers/platform/x86/asus_acpi.c | 4 +- trunk/drivers/platform/x86/ibm_rtl.c | 34 +- trunk/drivers/platform/x86/ideapad-laptop.c | 2 +- trunk/drivers/platform/x86/intel_menlow.c | 2 +- trunk/drivers/platform/x86/intel_scu_ipc.c | 2 +- trunk/drivers/platform/x86/thinkpad_acpi.c | 19 +- trunk/drivers/power/power_supply_sysfs.c | 4 +- trunk/drivers/rtc/Kconfig | 2 +- trunk/drivers/rtc/rtc-at91rm9200.c | 101 +- trunk/drivers/rtc/rtc-s3c.c | 21 +- trunk/drivers/rtc/rtc-sa1100.c | 300 +- trunk/drivers/s390/block/dasd.c | 5 +- trunk/drivers/s390/block/dasd_3990_erp.c | 4 +- trunk/drivers/s390/block/dasd_alias.c | 10 + trunk/drivers/s390/block/dasd_eckd.c | 411 +- trunk/drivers/s390/block/xpram.c | 2 +- trunk/drivers/s390/char/sclp_config.c | 8 +- trunk/drivers/s390/char/tape_class.h | 1 - trunk/drivers/s390/cio/qdio_setup.c | 10 +- trunk/drivers/s390/crypto/zcrypt_pcixcc.c | 32 +- trunk/drivers/s390/net/qeth_core_main.c | 2 +- trunk/drivers/scsi/aacraid/commctrl.c | 1 + trunk/drivers/scsi/aic7xxx/aicasm/aicasm.c | 2 +- trunk/drivers/scsi/be2iscsi/be_iscsi.c | 2 +- trunk/drivers/scsi/be2iscsi/be_iscsi.h | 2 +- trunk/drivers/scsi/be2iscsi/be_main.c | 12 +- trunk/drivers/scsi/bfa/bfad_debugfs.c | 2 +- trunk/drivers/scsi/bnx2i/bnx2i_iscsi.c | 2 +- trunk/drivers/scsi/cxgbi/libcxgbi.c | 2 +- trunk/drivers/scsi/cxgbi/libcxgbi.h | 2 +- trunk/drivers/scsi/gdth.h | 2 +- trunk/drivers/scsi/ips.c | 2 +- trunk/drivers/scsi/iscsi_boot_sysfs.c | 14 +- trunk/drivers/scsi/iscsi_tcp.c | 2 +- trunk/drivers/scsi/jazz_esp.c | 2 +- trunk/drivers/scsi/pmcraid.c | 2 +- trunk/drivers/scsi/qla2xxx/qla_nx.c | 2 +- trunk/drivers/scsi/qla4xxx/ql4_fw.h | 2 +- trunk/drivers/scsi/qla4xxx/ql4_os.c | 10 +- trunk/drivers/scsi/scsi_transport_iscsi.c | 8 +- trunk/drivers/scsi/scsi_transport_spi.c | 2 +- trunk/drivers/scsi/scsicam.c | 1 - trunk/drivers/scsi/sg.c | 7 +- trunk/drivers/scsi/sni_53c710.c | 2 +- trunk/drivers/scsi/vmw_pvscsi.c | 2 +- trunk/drivers/sh/intc/core.c | 37 +- trunk/drivers/sh/intc/internals.h | 7 +- trunk/drivers/sh/intc/userimask.c | 16 +- trunk/drivers/spi/Kconfig | 9 +- trunk/drivers/spi/spi-omap2-mcspi.c | 51 +- trunk/drivers/spi/spi-pl022.c | 141 +- trunk/drivers/spi/spi-s3c64xx.c | 14 +- trunk/drivers/spi/spi-topcliff-pch.c | 13 +- trunk/drivers/spi/spi.c | 2 +- trunk/drivers/staging/Kconfig | 8 +- trunk/drivers/staging/Makefile | 4 +- trunk/drivers/staging/android/Kconfig | 110 + trunk/drivers/staging/android/Makefile | 9 + trunk/drivers/staging/android/TODO | 10 + trunk/drivers/staging/android/android_pmem.h | 93 + trunk/drivers/staging/android/ashmem.c | 752 +++ trunk/drivers/staging/android/ashmem.h | 48 + trunk/drivers/staging/android/binder.c | 3600 ++++++++++++++ trunk/drivers/staging/android/binder.h | 330 ++ trunk/drivers/staging/android/logger.c | 616 +++ trunk/drivers/staging/android/logger.h | 49 + .../drivers/staging/android/lowmemorykiller.c | 219 + trunk/drivers/staging/android/pmem.c | 1345 +++++ trunk/drivers/staging/android/ram_console.c | 443 ++ trunk/drivers/staging/android/ram_console.h | 22 + trunk/drivers/staging/android/switch/Kconfig | 11 + trunk/drivers/staging/android/switch/Makefile | 4 + trunk/drivers/staging/android/switch/switch.h | 53 + .../staging/android/switch/switch_class.c | 174 + .../staging/android/switch/switch_gpio.c | 172 + trunk/drivers/staging/android/timed_gpio.c | 176 + trunk/drivers/staging/android/timed_gpio.h | 33 + trunk/drivers/staging/android/timed_output.c | 123 + trunk/drivers/staging/android/timed_output.h | 37 + trunk/drivers/staging/asus_oled/asus_oled.c | 4 +- trunk/drivers/staging/bcm/Bcmchar.c | 376 +- .../drivers/staging/bcm/HandleControlPacket.c | 323 +- trunk/drivers/staging/bcm/InterfaceDld.c | 12 +- trunk/drivers/staging/bcm/InterfaceIdleMode.c | 33 +- trunk/drivers/staging/bcm/InterfaceInit.c | 12 +- trunk/drivers/staging/bcm/InterfaceMisc.c | 24 +- trunk/drivers/staging/bcm/Misc.c | 32 +- trunk/drivers/staging/bcm/hostmibs.c | 178 +- trunk/drivers/staging/bcm/led_control.c | 1131 ++--- trunk/drivers/staging/bcm/nvm.c | 95 +- trunk/drivers/staging/bcm/target_params.h | 4 +- trunk/drivers/staging/comedi/comedi_fops.c | 86 +- .../comedi/drivers/addi-data/addi_common.c | 137 +- .../comedi/drivers/addi-data/hwdrv_apci3200.c | 2 +- .../staging/comedi/drivers/adl_pci7230.c | 10 +- .../staging/comedi/drivers/adl_pci7296.c | 6 +- .../staging/comedi/drivers/adl_pci7432.c | 6 +- .../staging/comedi/drivers/adl_pci8164.c | 6 +- .../staging/comedi/drivers/adl_pci9111.c | 6 +- .../staging/comedi/drivers/adv_pci1710.c | 32 +- .../staging/comedi/drivers/adv_pci_dio.c | 23 +- .../staging/comedi/drivers/amplc_dio200.c | 9 +- .../staging/comedi/drivers/amplc_pc236.c | 6 +- .../staging/comedi/drivers/amplc_pc263.c | 6 +- .../staging/comedi/drivers/amplc_pci224.c | 9 +- .../staging/comedi/drivers/amplc_pci230.c | 9 +- .../staging/comedi/drivers/cb_das16_cs.c | 20 +- .../staging/comedi/drivers/cb_pcidas.c | 42 +- .../staging/comedi/drivers/cb_pcidas64.c | 26 +- .../staging/comedi/drivers/cb_pcidda.c | 18 +- .../staging/comedi/drivers/cb_pcidio.c | 23 +- .../staging/comedi/drivers/cb_pcimdas.c | 50 +- .../staging/comedi/drivers/cb_pcimdda.c | 30 +- .../staging/comedi/drivers/contec_pci_dio.c | 19 +- .../staging/comedi/drivers/daqboard2000.c | 73 +- trunk/drivers/staging/comedi/drivers/das08.c | 6 +- .../drivers/staging/comedi/drivers/das08_cs.c | 8 +- .../drivers/staging/comedi/drivers/das16m1.c | 37 +- .../drivers/staging/comedi/drivers/das1800.c | 65 +- .../drivers/staging/comedi/drivers/das6402.c | 23 +- trunk/drivers/staging/comedi/drivers/das800.c | 43 +- trunk/drivers/staging/comedi/drivers/dt3000.c | 38 +- .../drivers/staging/comedi/drivers/jr3_pci.c | 81 +- .../staging/comedi/drivers/ke_counter.c | 6 +- trunk/drivers/staging/comedi/drivers/me_daq.c | 9 +- .../staging/comedi/drivers/ni_at_a2150.c | 8 +- .../staging/comedi/drivers/ni_daq_dio24.c | 19 +- .../staging/comedi/drivers/ni_labpc_cs.c | 2 +- .../staging/comedi/drivers/ni_pcimio.c | 29 +- trunk/drivers/staging/comedi/drivers/pcl816.c | 4 +- trunk/drivers/staging/comedi/drivers/pcl818.c | 108 +- trunk/drivers/staging/comedi/drivers/pcmmio.c | 26 +- trunk/drivers/staging/comedi/drivers/pcmuio.c | 40 +- .../staging/comedi/drivers/serial2002.c | 7 +- .../staging/comedi/drivers/usbduxsigma.c | 16 +- trunk/drivers/staging/crystalhd/bc_dts_defs.h | 262 +- trunk/drivers/staging/cxt1e1/comet.h | 22 - trunk/drivers/staging/cxt1e1/comet_tables.c | 24 - trunk/drivers/staging/cxt1e1/comet_tables.h | 24 - trunk/drivers/staging/cxt1e1/libsbew.h | 34 +- trunk/drivers/staging/cxt1e1/musycc.c | 49 - trunk/drivers/staging/cxt1e1/musycc.h | 31 - trunk/drivers/staging/cxt1e1/ossiRelease.c | 10 - trunk/drivers/staging/cxt1e1/pmc93x6_eeprom.h | 21 - trunk/drivers/staging/cxt1e1/pmcc4.h | 42 - trunk/drivers/staging/cxt1e1/pmcc4_cpld.h | 33 - trunk/drivers/staging/cxt1e1/pmcc4_defs.h | 14 - trunk/drivers/staging/cxt1e1/pmcc4_drv.c | 70 - trunk/drivers/staging/cxt1e1/pmcc4_ioctls.h | 16 - trunk/drivers/staging/cxt1e1/sbe_bid.h | 14 - trunk/drivers/staging/cxt1e1/sbe_promformat.h | 27 - .../staging/cxt1e1/sbecom_inline_linux.h | 20 - trunk/drivers/staging/cxt1e1/sbeproc.h | 20 - trunk/drivers/staging/cxt1e1/sbew_ioc.h | 55 - trunk/drivers/staging/et131x/et131x.c | 370 +- trunk/drivers/staging/frontier/alphatrack.c | 28 +- trunk/drivers/staging/frontier/tranzport.c | 29 +- .../staging/ft1000/ft1000-pcmcia/ft1000_hw.c | 4 +- .../staging/ft1000/ft1000-usb/ft1000_hw.c | 2 +- .../staging/ft1000/ft1000-usb/ft1000_usb.c | 22 +- trunk/drivers/staging/gma500/Kconfig | 2 +- trunk/drivers/staging/gma500/power.c | 2 +- trunk/drivers/staging/hv/Kconfig | 12 - trunk/drivers/staging/hv/Makefile | 3 - trunk/drivers/staging/hv/TODO | 4 +- trunk/drivers/staging/hv/hv_mouse.c | 599 --- trunk/drivers/staging/hv/storvsc_drv.c | 310 +- .../iio/Documentation/generic_buffer.c | 8 + .../staging/iio/Documentation/iio_utils.h | 26 +- .../staging/iio/Documentation/ring.txt | 10 - .../staging/iio/Documentation/sysfs-bus-iio | 10 + trunk/drivers/staging/iio/Kconfig | 1 - .../staging/iio/accel/adis16201_core.c | 49 +- .../staging/iio/accel/adis16201_ring.c | 14 +- .../staging/iio/accel/adis16203_core.c | 37 +- .../staging/iio/accel/adis16203_ring.c | 14 +- .../staging/iio/accel/adis16204_core.c | 48 +- .../staging/iio/accel/adis16204_ring.c | 14 +- .../staging/iio/accel/adis16209_core.c | 45 +- .../staging/iio/accel/adis16209_ring.c | 9 +- .../staging/iio/accel/adis16220_core.c | 40 +- .../staging/iio/accel/adis16240_core.c | 45 +- .../staging/iio/accel/adis16240_ring.c | 9 +- trunk/drivers/staging/iio/accel/kxsd9.c | 23 +- trunk/drivers/staging/iio/accel/lis3l02dq.h | 12 - .../staging/iio/accel/lis3l02dq_core.c | 48 +- .../staging/iio/accel/lis3l02dq_ring.c | 61 +- .../drivers/staging/iio/accel/sca3000_core.c | 37 +- .../drivers/staging/iio/accel/sca3000_ring.c | 17 +- trunk/drivers/staging/iio/adc/ad7192.c | 97 +- trunk/drivers/staging/iio/adc/ad7280a.c | 41 +- trunk/drivers/staging/iio/adc/ad7291.c | 53 +- trunk/drivers/staging/iio/adc/ad7298.h | 5 - trunk/drivers/staging/iio/adc/ad7298_core.c | 80 +- trunk/drivers/staging/iio/adc/ad7298_ring.c | 45 +- trunk/drivers/staging/iio/adc/ad7476.h | 5 - trunk/drivers/staging/iio/adc/ad7476_core.c | 38 +- trunk/drivers/staging/iio/adc/ad7476_ring.c | 31 +- trunk/drivers/staging/iio/adc/ad7606.h | 1 - trunk/drivers/staging/iio/adc/ad7606_core.c | 10 +- trunk/drivers/staging/iio/adc/ad7606_par.c | 1 - trunk/drivers/staging/iio/adc/ad7606_ring.c | 30 +- trunk/drivers/staging/iio/adc/ad7606_spi.c | 16 +- trunk/drivers/staging/iio/adc/ad7780.c | 21 +- trunk/drivers/staging/iio/adc/ad7793.c | 108 +- trunk/drivers/staging/iio/adc/ad7816.c | 16 +- trunk/drivers/staging/iio/adc/ad7887.h | 5 - trunk/drivers/staging/iio/adc/ad7887_core.c | 26 +- trunk/drivers/staging/iio/adc/ad7887_ring.c | 46 +- trunk/drivers/staging/iio/adc/ad799x.h | 6 - trunk/drivers/staging/iio/adc/ad799x_core.c | 23 +- trunk/drivers/staging/iio/adc/ad799x_ring.c | 47 +- trunk/drivers/staging/iio/adc/adt7310.c | 17 +- trunk/drivers/staging/iio/adc/adt7410.c | 15 +- trunk/drivers/staging/iio/adc/max1363.h | 14 +- trunk/drivers/staging/iio/adc/max1363_core.c | 92 +- trunk/drivers/staging/iio/adc/max1363_ring.c | 92 +- trunk/drivers/staging/iio/addac/adt7316-i2c.c | 14 +- trunk/drivers/staging/iio/addac/adt7316-spi.c | 15 +- trunk/drivers/staging/iio/addac/adt7316.c | 1 + .../iio/{buffer_generic.h => buffer.h} | 87 +- trunk/drivers/staging/iio/cdc/ad7150.c | 22 +- trunk/drivers/staging/iio/cdc/ad7152.c | 52 +- trunk/drivers/staging/iio/cdc/ad7746.c | 64 +- trunk/drivers/staging/iio/chrdev.h | 25 - trunk/drivers/staging/iio/dac/Kconfig | 39 +- trunk/drivers/staging/iio/dac/Makefile | 3 + trunk/drivers/staging/iio/dac/ad5064.c | 19 +- trunk/drivers/staging/iio/dac/ad5360.c | 37 +- trunk/drivers/staging/iio/dac/ad5380.c | 676 +++ trunk/drivers/staging/iio/dac/ad5421.c | 555 +++ trunk/drivers/staging/iio/dac/ad5421.h | 32 + trunk/drivers/staging/iio/dac/ad5446.c | 201 +- trunk/drivers/staging/iio/dac/ad5446.h | 10 +- trunk/drivers/staging/iio/dac/ad5504.c | 145 +- trunk/drivers/staging/iio/dac/ad5504.h | 5 +- trunk/drivers/staging/iio/dac/ad5624r.h | 4 +- trunk/drivers/staging/iio/dac/ad5624r_spi.c | 140 +- trunk/drivers/staging/iio/dac/ad5686.c | 18 +- trunk/drivers/staging/iio/dac/ad5764.c | 393 ++ trunk/drivers/staging/iio/dac/ad5791.c | 28 +- trunk/drivers/staging/iio/dac/max517.c | 14 +- trunk/drivers/staging/iio/dds/ad5930.c | 14 +- trunk/drivers/staging/iio/dds/ad9832.c | 18 +- trunk/drivers/staging/iio/dds/ad9834.c | 24 +- trunk/drivers/staging/iio/dds/ad9850.c | 14 +- trunk/drivers/staging/iio/dds/ad9852.c | 14 +- trunk/drivers/staging/iio/dds/ad9910.c | 14 +- trunk/drivers/staging/iio/dds/ad9951.c | 14 +- trunk/drivers/staging/iio/events.h | 103 + trunk/drivers/staging/iio/gyro/Kconfig | 6 +- .../drivers/staging/iio/gyro/adis16060_core.c | 8 +- .../drivers/staging/iio/gyro/adis16080_core.c | 14 +- .../drivers/staging/iio/gyro/adis16130_core.c | 14 +- .../drivers/staging/iio/gyro/adis16260_core.c | 58 +- .../drivers/staging/iio/gyro/adis16260_ring.c | 9 +- trunk/drivers/staging/iio/gyro/adxrs450.h | 5 + .../drivers/staging/iio/gyro/adxrs450_core.c | 101 +- trunk/drivers/staging/iio/iio.h | 144 +- trunk/drivers/staging/iio/iio_core.h | 11 - trunk/drivers/staging/iio/iio_core_trigger.h | 3 +- trunk/drivers/staging/iio/iio_dummy_evgen.c | 4 + trunk/drivers/staging/iio/iio_simple_dummy.c | 49 +- .../staging/iio/iio_simple_dummy_buffer.c | 12 +- .../staging/iio/iio_simple_dummy_events.c | 1 + .../staging/iio/impedance-analyzer/ad5933.c | 43 +- trunk/drivers/staging/iio/imu/adis16400.h | 2 + .../drivers/staging/iio/imu/adis16400_core.c | 282 +- .../drivers/staging/iio/imu/adis16400_ring.c | 23 +- .../drivers/staging/iio/industrialio-buffer.c | 346 +- trunk/drivers/staging/iio/industrialio-core.c | 70 +- .../staging/iio/industrialio-trigger.c | 36 +- trunk/drivers/staging/iio/kfifo_buf.c | 72 +- trunk/drivers/staging/iio/kfifo_buf.h | 2 +- trunk/drivers/staging/iio/light/isl29018.c | 21 +- trunk/drivers/staging/iio/light/tsl2563.c | 25 +- trunk/drivers/staging/iio/light/tsl2583.c | 31 +- .../drivers/staging/iio/magnetometer/ak8975.c | 18 +- .../staging/iio/magnetometer/hmc5843.c | 19 +- trunk/drivers/staging/iio/meter/ade7753.c | 14 +- trunk/drivers/staging/iio/meter/ade7754.c | 14 +- .../drivers/staging/iio/meter/ade7758_core.c | 50 +- .../drivers/staging/iio/meter/ade7758_ring.c | 10 +- trunk/drivers/staging/iio/meter/ade7759.c | 14 +- trunk/drivers/staging/iio/meter/ade7854-i2c.c | 14 +- trunk/drivers/staging/iio/meter/ade7854-spi.c | 14 +- trunk/drivers/staging/iio/resolver/ad2s1200.c | 14 +- trunk/drivers/staging/iio/resolver/ad2s1210.c | 14 +- trunk/drivers/staging/iio/resolver/ad2s90.c | 14 +- trunk/drivers/staging/iio/ring_sw.c | 151 +- trunk/drivers/staging/iio/ring_sw.h | 2 +- trunk/drivers/staging/iio/sysfs.h | 43 - trunk/drivers/staging/iio/trigger.h | 2 - .../iio/trigger/iio-trig-periodic-rtc.c | 1 - trunk/drivers/staging/iio/types.h | 49 + trunk/drivers/staging/intel_sst/Kconfig | 19 - trunk/drivers/staging/intel_sst/Makefile | 7 - trunk/drivers/staging/intel_sst/TODO | 13 - trunk/drivers/staging/intel_sst/intel_sst.c | 649 --- trunk/drivers/staging/intel_sst/intel_sst.h | 162 - .../intel_sst/intel_sst_app_interface.c | 1460 ------ .../staging/intel_sst/intel_sst_common.h | 623 --- .../intel_sst/intel_sst_drv_interface.c | 564 --- .../drivers/staging/intel_sst/intel_sst_dsp.c | 496 -- .../staging/intel_sst/intel_sst_fw_ipc.h | 416 -- .../staging/intel_sst/intel_sst_ioctl.h | 440 -- .../drivers/staging/intel_sst/intel_sst_ipc.c | 774 --- .../drivers/staging/intel_sst/intel_sst_pvt.c | 313 -- .../staging/intel_sst/intel_sst_stream.c | 583 --- .../intel_sst/intel_sst_stream_encoded.c | 1273 ----- trunk/drivers/staging/intel_sst/intelmid.c | 1022 ---- trunk/drivers/staging/intel_sst/intelmid.h | 209 - .../staging/intel_sst/intelmid_adc_control.h | 193 - .../drivers/staging/intel_sst/intelmid_ctrl.c | 921 ---- .../staging/intel_sst/intelmid_msic_control.c | 1047 ---- .../drivers/staging/intel_sst/intelmid_pvt.c | 173 - .../staging/intel_sst/intelmid_snd_control.h | 123 - .../staging/intel_sst/intelmid_v0_control.c | 866 ---- .../staging/intel_sst/intelmid_v1_control.c | 978 ---- .../staging/intel_sst/intelmid_v2_control.c | 1156 ----- trunk/drivers/staging/keucr/smilmain.c | 4 +- trunk/drivers/staging/keucr/usb.c | 24 +- trunk/drivers/staging/line6/Makefile | 3 +- trunk/drivers/staging/line6/capture.c | 44 +- trunk/drivers/staging/line6/capture.h | 2 + trunk/drivers/staging/line6/driver.c | 74 +- trunk/drivers/staging/line6/driver.h | 10 +- trunk/drivers/staging/line6/midi.c | 37 +- trunk/drivers/staging/line6/midi.h | 4 +- trunk/drivers/staging/line6/pcm.c | 115 +- trunk/drivers/staging/line6/pcm.h | 8 - trunk/drivers/staging/line6/playback.c | 53 +- trunk/drivers/staging/line6/playback.h | 2 + trunk/drivers/staging/line6/pod.c | 6 +- trunk/drivers/staging/line6/podhd.c | 154 + trunk/drivers/staging/line6/podhd.h | 30 + trunk/drivers/staging/line6/revision.h | 2 +- trunk/drivers/staging/line6/toneport.c | 6 +- trunk/drivers/staging/line6/usbdefs.h | 91 +- trunk/drivers/staging/line6/variax.c | 6 +- .../drivers/staging/media/go7007/go7007-usb.c | 15 +- .../staging/media/lirc/lirc_igorplugusb.c | 21 +- trunk/drivers/staging/media/lirc/lirc_imon.c | 24 +- trunk/drivers/staging/media/lirc/lirc_sasem.c | 25 +- .../drivers/staging/media/lirc/lirc_ttusbir.c | 22 +- trunk/drivers/staging/mei/init.c | 49 +- trunk/drivers/staging/mei/interface.c | 8 +- trunk/drivers/staging/mei/interface.h | 11 + trunk/drivers/staging/mei/interrupt.c | 322 +- trunk/drivers/staging/mei/iorw.c | 77 +- trunk/drivers/staging/mei/main.c | 576 +-- trunk/drivers/staging/mei/mei.txt | 226 +- trunk/drivers/staging/mei/mei_dev.h | 13 - trunk/drivers/staging/mei/wd.c | 32 +- trunk/drivers/staging/nvec/nvec.c | 30 +- trunk/drivers/staging/olpc_dcon/olpc_dcon.c | 18 +- trunk/drivers/staging/olpc_dcon/olpc_dcon.h | 2 +- .../staging/olpc_dcon/olpc_dcon_xo_1.c | 10 +- .../staging/olpc_dcon/olpc_dcon_xo_1_5.c | 10 +- trunk/drivers/staging/omapdrm/Kconfig | 25 + trunk/drivers/staging/omapdrm/Makefile | 21 + trunk/drivers/staging/omapdrm/TODO | 38 + .../drivers/staging/omapdrm/omap_connector.c | 371 ++ trunk/drivers/staging/omapdrm/omap_crtc.c | 326 ++ trunk/drivers/staging/omapdrm/omap_debugfs.c | 42 + trunk/drivers/staging/omapdrm/omap_dmm_priv.h | 187 + .../drivers/staging/omapdrm/omap_dmm_tiler.c | 830 ++++ .../drivers/staging/omapdrm/omap_dmm_tiler.h | 135 + trunk/drivers/staging/omapdrm/omap_drm.h | 123 + trunk/drivers/staging/omapdrm/omap_drv.c | 821 ++++ trunk/drivers/staging/omapdrm/omap_drv.h | 135 + trunk/drivers/staging/omapdrm/omap_encoder.c | 171 + trunk/drivers/staging/omapdrm/omap_fb.c | 243 + trunk/drivers/staging/omapdrm/omap_fbdev.c | 372 ++ trunk/drivers/staging/omapdrm/omap_gem.c | 1231 +++++ .../staging/omapdrm/omap_gem_helpers.c | 169 + trunk/drivers/staging/omapdrm/omap_priv.h | 47 + trunk/drivers/staging/omapdrm/tcm-sita.c | 703 +++ trunk/drivers/staging/omapdrm/tcm-sita.h | 95 + trunk/drivers/staging/omapdrm/tcm.h | 326 ++ trunk/drivers/staging/phison/phison.c | 2 +- trunk/drivers/staging/pohmelfs/dir.c | 11 +- trunk/drivers/staging/pohmelfs/inode.c | 9 +- trunk/drivers/staging/pohmelfs/netfs.h | 2 +- trunk/drivers/staging/rtl8192e/Kconfig | 50 +- trunk/drivers/staging/rtl8192e/Makefile | 46 +- trunk/drivers/staging/rtl8192e/dot11d.c | 4 +- trunk/drivers/staging/rtl8192e/dot11d.h | 2 +- .../drivers/staging/rtl8192e/rtl8192e/Kconfig | 9 + .../staging/rtl8192e/rtl8192e/Makefile | 21 + .../rtl8192e/{ => rtl8192e}/r8190P_def.h | 0 .../rtl8192e/{ => rtl8192e}/r8190P_rtl8256.c | 0 .../rtl8192e/{ => rtl8192e}/r8190P_rtl8256.h | 0 .../rtl8192e/{ => rtl8192e}/r8192E_cmdpkt.c | 0 .../rtl8192e/{ => rtl8192e}/r8192E_cmdpkt.h | 0 .../rtl8192e/{ => rtl8192e}/r8192E_dev.c | 0 .../rtl8192e/{ => rtl8192e}/r8192E_dev.h | 0 .../rtl8192e/{ => rtl8192e}/r8192E_firmware.c | 0 .../rtl8192e/{ => rtl8192e}/r8192E_firmware.h | 0 .../rtl8192e/{ => rtl8192e}/r8192E_hw.h | 0 .../rtl8192e/{ => rtl8192e}/r8192E_hwimg.c | 0 .../rtl8192e/{ => rtl8192e}/r8192E_hwimg.h | 0 .../rtl8192e/{ => rtl8192e}/r8192E_phy.c | 3 +- .../rtl8192e/{ => rtl8192e}/r8192E_phy.h | 0 .../rtl8192e/{ => rtl8192e}/r8192E_phyreg.h | 0 .../rtl8192e/{ => rtl8192e}/r819xE_phyreg.h | 0 .../staging/rtl8192e/{ => rtl8192e}/rtl_cam.c | 0 .../staging/rtl8192e/{ => rtl8192e}/rtl_cam.h | 0 .../rtl8192e/{ => rtl8192e}/rtl_core.c | 68 +- .../rtl8192e/{ => rtl8192e}/rtl_core.h | 53 +- .../rtl8192e/{ => rtl8192e}/rtl_crypto.h | 0 .../rtl8192e/{ => rtl8192e}/rtl_debug.c | 79 - .../staging/rtl8192e/{ => rtl8192e}/rtl_dm.c | 0 .../staging/rtl8192e/{ => rtl8192e}/rtl_dm.h | 0 .../rtl8192e/{ => rtl8192e}/rtl_eeprom.c | 0 .../rtl8192e/{ => rtl8192e}/rtl_eeprom.h | 0 .../rtl8192e/{ => rtl8192e}/rtl_ethtool.c | 0 .../staging/rtl8192e/{ => rtl8192e}/rtl_pci.c | 0 .../staging/rtl8192e/{ => rtl8192e}/rtl_pci.h | 1 - .../staging/rtl8192e/{ => rtl8192e}/rtl_pm.c | 2 - .../staging/rtl8192e/{ => rtl8192e}/rtl_pm.h | 4 - .../staging/rtl8192e/{ => rtl8192e}/rtl_ps.c | 0 .../staging/rtl8192e/{ => rtl8192e}/rtl_ps.h | 2 +- .../staging/rtl8192e/{ => rtl8192e}/rtl_wx.c | 3 +- .../staging/rtl8192e/{ => rtl8192e}/rtl_wx.h | 0 .../drivers/staging/rtl8192e/rtl819x_BAProc.c | 1 - .../drivers/staging/rtl8192e/rtl819x_HTProc.c | 5 +- .../drivers/staging/rtl8192e/rtl819x_TSProc.c | 1 + trunk/drivers/staging/rtl8192e/rtl_debug.h | 299 -- trunk/drivers/staging/rtl8192e/rtllib.h | 113 +- trunk/drivers/staging/rtl8192e/rtllib_crypt.c | 80 +- trunk/drivers/staging/rtl8192e/rtllib_crypt.h | 64 +- .../staging/rtl8192e/rtllib_crypt_ccmp.c | 26 +- .../staging/rtl8192e/rtllib_crypt_tkip.c | 38 +- .../staging/rtl8192e/rtllib_crypt_wep.c | 25 +- trunk/drivers/staging/rtl8192e/rtllib_debug.h | 86 + .../drivers/staging/rtl8192e/rtllib_module.c | 38 +- trunk/drivers/staging/rtl8192e/rtllib_rx.c | 21 +- .../drivers/staging/rtl8192e/rtllib_softmac.c | 96 +- .../staging/rtl8192e/rtllib_softmac_wx.c | 19 +- trunk/drivers/staging/rtl8192e/rtllib_tx.c | 19 +- trunk/drivers/staging/rtl8192e/rtllib_wx.c | 109 +- .../drivers/staging/rtl8192u/ieee80211/api.c | 244 - trunk/drivers/staging/rtl8712/rtl871x_mlme.c | 2 +- trunk/drivers/staging/rts5139/rts51x.c | 32 +- trunk/drivers/staging/rts5139/rts51x.h | 1 - .../staging/rts5139/rts51x_transport.h | 1 - trunk/drivers/staging/rts_pstor/rtsx.c | 2 - trunk/drivers/staging/sep/sep_driver.c | 4 +- trunk/drivers/staging/serial/68360serial.c | 4 +- trunk/drivers/staging/sm7xx/smtcfb.c | 6 +- trunk/drivers/staging/speakup/kobjects.c | 3 +- trunk/drivers/staging/speakup/main.c | 5 +- trunk/drivers/staging/spectra/Kconfig | 41 - trunk/drivers/staging/spectra/Makefile | 11 - trunk/drivers/staging/spectra/README | 29 - trunk/drivers/staging/spectra/ffsdefs.h | 58 - trunk/drivers/staging/spectra/ffsport.c | 834 ---- trunk/drivers/staging/spectra/ffsport.h | 85 - trunk/drivers/staging/spectra/flash.c | 4305 ----------------- trunk/drivers/staging/spectra/flash.h | 198 - trunk/drivers/staging/spectra/lld.c | 339 -- trunk/drivers/staging/spectra/lld.h | 111 - trunk/drivers/staging/spectra/lld_cdma.c | 910 ---- trunk/drivers/staging/spectra/lld_cdma.h | 123 - trunk/drivers/staging/spectra/lld_emu.c | 776 --- trunk/drivers/staging/spectra/lld_emu.h | 51 - trunk/drivers/staging/spectra/lld_mtd.c | 683 --- trunk/drivers/staging/spectra/lld_mtd.h | 51 - trunk/drivers/staging/spectra/lld_nand.c | 2619 ---------- trunk/drivers/staging/spectra/lld_nand.h | 131 - trunk/drivers/staging/spectra/nand_regs.h | 619 --- .../drivers/staging/spectra/spectraswconfig.h | 82 - trunk/drivers/staging/tidspbridge/Kconfig | 2 +- .../drivers/staging/tidspbridge/rmgr/dbdcd.c | 2 +- trunk/drivers/staging/usbip/stub_dev.c | 5 - trunk/drivers/staging/usbip/stub_rx.c | 2 +- trunk/drivers/staging/usbip/usbip_common.c | 61 +- trunk/drivers/staging/usbip/usbip_common.h | 17 +- trunk/drivers/staging/usbip/vhci_rx.c | 2 +- trunk/drivers/staging/vme/TODO | 67 +- .../staging/vme/bridges/vme_ca91cx42.c | 31 +- .../drivers/staging/vme/bridges/vme_tsi148.c | 36 +- trunk/drivers/staging/vme/devices/Kconfig | 13 + trunk/drivers/staging/vme/devices/Makefile | 3 + trunk/drivers/staging/vme/devices/vme_pio2.h | 249 + .../staging/vme/devices/vme_pio2_cntr.c | 71 + .../staging/vme/devices/vme_pio2_core.c | 524 ++ .../staging/vme/devices/vme_pio2_gpio.c | 232 + trunk/drivers/staging/vme/devices/vme_user.h | 10 +- trunk/drivers/staging/vme/vme.c | 69 +- trunk/drivers/staging/vme/vme.h | 38 +- trunk/drivers/staging/vme/vme_api.txt | 61 +- trunk/drivers/staging/vme/vme_bridge.h | 38 +- trunk/drivers/staging/vt6655/device_main.c | 6 +- trunk/drivers/staging/vt6655/ioctl.c | 8 + trunk/drivers/staging/vt6655/iwctl.c | 12 - trunk/drivers/staging/vt6655/iwctl.h | 5 - trunk/drivers/staging/vt6656/80211mgr.c | 35 +- trunk/drivers/staging/vt6656/baseband.c | 61 +- trunk/drivers/staging/vt6656/bssdb.c | 100 +- trunk/drivers/staging/vt6656/card.c | 14 +- trunk/drivers/staging/vt6656/card.h | 4 +- trunk/drivers/staging/vt6656/int.c | 5 +- trunk/drivers/staging/vt6656/int.h | 2 +- trunk/drivers/staging/vt6656/ioctl.c | 8 + trunk/drivers/staging/vt6656/iwctl.c | 12 - trunk/drivers/staging/vt6656/iwctl.h | 5 - trunk/drivers/staging/vt6656/mac.c | 4 +- trunk/drivers/staging/vt6656/mac.h | 2 +- trunk/drivers/staging/vt6656/main_usb.c | 26 +- trunk/drivers/staging/winbond/wbusb.c | 13 +- trunk/drivers/staging/wlags49_h2/debug.h | 2 +- trunk/drivers/staging/wlags49_h2/dhfcfg.h | 2 +- trunk/drivers/staging/wlags49_h2/hcf.c | 6 +- trunk/drivers/staging/wlags49_h2/hcf.h | 6 +- trunk/drivers/staging/wlags49_h2/hcfcfg.h | 6 +- trunk/drivers/staging/wlags49_h2/hcfdef.h | 6 +- trunk/drivers/staging/wlags49_h2/mdd.h | 6 +- trunk/drivers/staging/wlags49_h2/mmd.c | 2 +- trunk/drivers/staging/wlags49_h2/mmd.h | 2 +- trunk/drivers/staging/wlags49_h2/wl_cs.h | 4 +- trunk/drivers/staging/wlags49_h2/wl_enc.c | 4 +- trunk/drivers/staging/wlags49_h2/wl_enc.h | 4 +- trunk/drivers/staging/wlags49_h2/wl_if.h | 4 +- .../drivers/staging/wlags49_h2/wl_internal.h | 4 +- trunk/drivers/staging/wlags49_h2/wl_main.c | 4 +- trunk/drivers/staging/wlags49_h2/wl_main.h | 4 +- trunk/drivers/staging/wlags49_h2/wl_netdev.c | 4 +- trunk/drivers/staging/wlags49_h2/wl_netdev.h | 4 +- trunk/drivers/staging/wlags49_h2/wl_pci.c | 17 +- trunk/drivers/staging/wlags49_h2/wl_pci.h | 4 +- trunk/drivers/staging/wlags49_h2/wl_priv.c | 4 +- trunk/drivers/staging/wlags49_h2/wl_priv.h | 4 +- trunk/drivers/staging/wlags49_h2/wl_profile.c | 4 +- trunk/drivers/staging/wlags49_h2/wl_profile.h | 4 +- trunk/drivers/staging/wlags49_h2/wl_util.c | 4 +- trunk/drivers/staging/wlags49_h2/wl_util.h | 4 +- trunk/drivers/staging/wlags49_h2/wl_version.h | 4 +- trunk/drivers/staging/wlags49_h2/wl_wext.c | 4 +- trunk/drivers/staging/wlags49_h2/wl_wext.h | 4 +- trunk/drivers/staging/wlan-ng/prism2usb.c | 14 +- trunk/drivers/staging/xgifb/Makefile | 2 +- trunk/drivers/staging/xgifb/XGI_main.h | 13 +- trunk/drivers/staging/xgifb/XGI_main_26.c | 158 +- trunk/drivers/staging/xgifb/XGIfb.h | 3 + trunk/drivers/staging/xgifb/vb_ext.c | 444 -- trunk/drivers/staging/xgifb/vb_ext.h | 9 - trunk/drivers/staging/xgifb/vb_init.c | 276 +- trunk/drivers/staging/xgifb/vb_setmode.c | 1003 ++-- trunk/drivers/staging/xgifb/vb_setmode.h | 52 +- trunk/drivers/staging/xgifb/vb_struct.h | 4 +- trunk/drivers/staging/xgifb/vb_table.h | 27 - trunk/drivers/staging/xgifb/vgatypes.h | 2 - trunk/drivers/staging/zcache/zcache-main.c | 6 +- trunk/drivers/staging/zram/zram_drv.c | 3 +- trunk/drivers/staging/zram/zram_sysfs.c | 6 +- trunk/drivers/tty/n_hdlc.c | 6 +- trunk/drivers/tty/n_tty.c | 8 +- trunk/drivers/tty/pty.c | 26 +- trunk/drivers/tty/serial/8250.c | 98 +- trunk/drivers/tty/serial/8250.h | 26 + trunk/drivers/tty/serial/8250_dw.c | 12 +- trunk/drivers/tty/serial/8250_fsl.c | 63 + trunk/drivers/tty/serial/8250_pci.c | 47 +- trunk/drivers/tty/serial/Kconfig | 83 +- trunk/drivers/tty/serial/Makefile | 7 +- trunk/drivers/tty/serial/atmel_serial.c | 12 +- trunk/drivers/tty/serial/bfin_sport_uart.c | 22 +- trunk/drivers/tty/serial/bfin_sport_uart.h | 5 +- trunk/drivers/tty/serial/bfin_uart.c | 83 +- trunk/drivers/tty/serial/ifx6x60.c | 1 - trunk/drivers/tty/serial/imx.c | 148 +- trunk/drivers/tty/serial/m32r_sio.c | 7 +- trunk/drivers/tty/serial/max3100.c | 1 - trunk/drivers/tty/serial/max3107-aava.c | 1 - trunk/drivers/tty/serial/max3107.c | 1 - trunk/drivers/tty/serial/mfd.c | 18 +- trunk/drivers/tty/serial/mrst_max3110.c | 1 - trunk/drivers/tty/serial/msm_serial_hs.c | 23 +- trunk/drivers/tty/serial/mxs-auart.c | 13 +- trunk/drivers/tty/serial/omap-serial.c | 430 +- trunk/drivers/tty/serial/pch_uart.c | 160 +- trunk/drivers/tty/serial/s3c2410.c | 115 - trunk/drivers/tty/serial/s3c2412.c | 149 - trunk/drivers/tty/serial/s3c2440.c | 178 - trunk/drivers/tty/serial/s3c6400.c | 149 - trunk/drivers/tty/serial/s5pv210.c | 158 - trunk/drivers/tty/serial/samsung.c | 639 ++- trunk/drivers/tty/serial/samsung.h | 32 +- trunk/drivers/tty/serial/sc26xx.c | 14 +- trunk/drivers/tty/serial/serial_core.c | 325 +- trunk/drivers/tty/serial/serial_cs.c | 8 +- trunk/drivers/tty/serial/sirfsoc_uart.c | 783 +++ trunk/drivers/tty/serial/sirfsoc_uart.h | 185 + trunk/drivers/tty/serial/timbuart.c | 15 +- trunk/drivers/tty/serial/vr41xx_siu.c | 13 +- trunk/drivers/tty/sysrq.c | 2 +- trunk/drivers/tty/tty_io.c | 311 +- trunk/drivers/tty/tty_ldisc.c | 22 +- trunk/drivers/tty/vt/consolemap.c | 2 +- trunk/drivers/uio/uio_pdrv.c | 12 +- trunk/drivers/uio/uio_pdrv_genirq.c | 13 +- trunk/drivers/uio/uio_pruss.c | 14 +- trunk/drivers/usb/Kconfig | 1 + trunk/drivers/usb/Makefile | 3 +- trunk/drivers/usb/atm/cxacru.c | 13 +- trunk/drivers/usb/atm/speedtch.c | 17 +- trunk/drivers/usb/atm/ueagle-atm.c | 31 +- trunk/drivers/usb/c67x00/c67x00-drv.c | 15 +- trunk/drivers/usb/c67x00/c67x00-hcd.c | 1 - trunk/drivers/usb/class/cdc-acm.c | 338 +- trunk/drivers/usb/class/cdc-acm.h | 1 + trunk/drivers/usb/class/cdc-wdm.c | 19 +- trunk/drivers/usb/class/usblp.c | 15 +- trunk/drivers/usb/class/usbtmc.c | 17 +- trunk/drivers/usb/core/devio.c | 189 +- trunk/drivers/usb/core/driver.c | 36 +- trunk/drivers/usb/core/file.c | 2 +- trunk/drivers/usb/core/hcd-pci.c | 4 - trunk/drivers/usb/core/hcd.c | 31 +- trunk/drivers/usb/core/hub.c | 89 +- trunk/drivers/usb/core/inode.c | 31 +- trunk/drivers/usb/core/quirks.c | 5 +- trunk/drivers/usb/core/sysfs.c | 4 +- trunk/drivers/usb/core/usb.c | 2 +- trunk/drivers/usb/core/usb.h | 14 - trunk/drivers/usb/dwc3/Kconfig | 5 +- trunk/drivers/usb/dwc3/Makefile | 6 +- trunk/drivers/usb/dwc3/core.c | 209 +- trunk/drivers/usb/dwc3/core.h | 62 +- trunk/drivers/usb/dwc3/debugfs.c | 99 +- trunk/drivers/usb/dwc3/dwc3-omap.c | 43 +- trunk/drivers/usb/dwc3/dwc3-pci.c | 51 +- trunk/drivers/usb/dwc3/ep0.c | 160 +- trunk/drivers/usb/dwc3/gadget.c | 440 +- trunk/drivers/usb/dwc3/gadget.h | 29 +- trunk/drivers/usb/dwc3/host.c | 102 + trunk/drivers/usb/dwc3/io.h | 2 +- trunk/drivers/usb/gadget/Kconfig | 29 +- trunk/drivers/usb/gadget/Makefile | 2 +- trunk/drivers/usb/gadget/amd5536udc.c | 4 +- trunk/drivers/usb/gadget/at91_udc.c | 16 +- trunk/drivers/usb/gadget/atmel_usba_udc.c | 2 +- trunk/drivers/usb/gadget/ci13xxx_udc.c | 36 +- trunk/drivers/usb/gadget/ci13xxx_udc.h | 2 +- trunk/drivers/usb/gadget/composite.c | 8 +- trunk/drivers/usb/gadget/dbgp.c | 2 +- trunk/drivers/usb/gadget/dummy_hcd.c | 15 +- trunk/drivers/usb/gadget/epautoconf.c | 6 +- trunk/drivers/usb/gadget/f_fs.c | 33 +- trunk/drivers/usb/gadget/f_mass_storage.c | 60 +- trunk/drivers/usb/gadget/file_storage.c | 64 +- trunk/drivers/usb/gadget/fsl_qe_udc.c | 19 +- trunk/drivers/usb/gadget/fsl_udc_core.c | 4 +- trunk/drivers/usb/gadget/fusb300_udc.c | 4 +- trunk/drivers/usb/gadget/goku_udc.c | 3 +- trunk/drivers/usb/gadget/imx_udc.c | 2 +- trunk/drivers/usb/gadget/inode.c | 32 +- trunk/drivers/usb/gadget/langwell_udc.c | 2 +- trunk/drivers/usb/gadget/m66592-udc.c | 4 +- trunk/drivers/usb/gadget/mv_udc.h | 7 +- trunk/drivers/usb/gadget/mv_udc_core.c | 344 +- trunk/drivers/usb/gadget/net2272.c | 4 +- trunk/drivers/usb/gadget/net2280.c | 4 +- trunk/drivers/usb/gadget/omap_udc.c | 3 +- trunk/drivers/usb/gadget/pch_udc.c | 4 +- trunk/drivers/usb/gadget/printer.c | 6 +- trunk/drivers/usb/gadget/pxa25x_udc.c | 2 +- trunk/drivers/usb/gadget/pxa27x_udc.c | 2 +- trunk/drivers/usb/gadget/r8a66597-udc.c | 4 +- trunk/drivers/usb/gadget/s3c-hsotg.c | 17 +- trunk/drivers/usb/gadget/s3c-hsudc.c | 136 +- trunk/drivers/usb/gadget/s3c2410_udc.c | 8 +- trunk/drivers/usb/gadget/s3c2410_udc.h | 2 +- trunk/drivers/usb/gadget/udc-core.c | 26 +- trunk/drivers/usb/gadget/usbstring.c | 73 +- trunk/drivers/usb/host/Kconfig | 15 + trunk/drivers/usb/host/ehci-au1xxx.c | 1 + trunk/drivers/usb/host/ehci-hcd.c | 69 +- trunk/drivers/usb/host/ehci-mv.c | 391 ++ trunk/drivers/usb/host/ehci-octeon.c | 2 + trunk/drivers/usb/host/ehci-omap.c | 19 +- trunk/drivers/usb/host/ehci-orion.c | 10 +- trunk/drivers/usb/host/ehci-ps3.c | 30 + trunk/drivers/usb/host/ehci-pxa168.c | 2 +- trunk/drivers/usb/host/ehci-q.c | 13 +- trunk/drivers/usb/host/ehci-s5p.c | 4 +- trunk/drivers/usb/host/ehci-tegra.c | 71 + trunk/drivers/usb/host/ehci-vt8500.c | 2 + trunk/drivers/usb/host/ehci-w90x900.c | 2 + trunk/drivers/usb/host/ehci-xls.c | 2 +- trunk/drivers/usb/host/fhci-hcd.c | 12 +- trunk/drivers/usb/host/fsl-mph-dr-of.c | 12 +- trunk/drivers/usb/host/hwa-hc.c | 16 +- trunk/drivers/usb/host/imx21-hcd.c | 15 +- trunk/drivers/usb/host/isp1760-hcd.c | 74 +- trunk/drivers/usb/host/isp1760-if.c | 19 +- trunk/drivers/usb/host/ohci-at91.c | 12 +- trunk/drivers/usb/host/ohci-au1xxx.c | 5 +- trunk/drivers/usb/host/ohci-dbg.c | 18 +- trunk/drivers/usb/host/ohci-ep93xx.c | 2 - trunk/drivers/usb/host/ohci-exynos.c | 274 ++ trunk/drivers/usb/host/ohci-hcd.c | 33 +- trunk/drivers/usb/host/ohci-hub.c | 7 +- trunk/drivers/usb/host/ohci-omap.c | 1 - trunk/drivers/usb/host/ohci-omap3.c | 18 +- trunk/drivers/usb/host/ohci-pci.c | 5 +- trunk/drivers/usb/host/ohci-pxa27x.c | 2 - trunk/drivers/usb/host/ohci-q.c | 8 +- trunk/drivers/usb/host/ohci-s3c2410.c | 55 +- trunk/drivers/usb/host/ohci-sh.c | 1 - trunk/drivers/usb/host/ohci-sm501.c | 1 - trunk/drivers/usb/host/ohci-spear.c | 1 - trunk/drivers/usb/host/ohci-tmio.c | 3 - trunk/drivers/usb/host/ohci-xls.c | 2 +- trunk/drivers/usb/host/ohci.h | 14 +- trunk/drivers/usb/host/oxu210hp-hcd.c | 19 +- trunk/drivers/usb/host/uhci-q.c | 2 +- trunk/drivers/usb/host/whci/qset.c | 4 +- trunk/drivers/usb/host/xhci-hub.c | 18 +- trunk/drivers/usb/host/xhci-mem.c | 14 - trunk/drivers/usb/host/xhci-ring.c | 113 +- trunk/drivers/usb/host/xhci.c | 31 +- trunk/drivers/usb/host/xhci.h | 3 +- trunk/drivers/usb/image/microtek.c | 14 +- trunk/drivers/usb/misc/adutux.c | 35 +- trunk/drivers/usb/misc/cypress_cy7c63.c | 22 +- trunk/drivers/usb/misc/cytherm.c | 26 +- trunk/drivers/usb/misc/emi26.c | 13 +- trunk/drivers/usb/misc/emi62.c | 17 +- trunk/drivers/usb/misc/idmouse.c | 24 +- trunk/drivers/usb/misc/iowarrior.c | 15 +- trunk/drivers/usb/misc/isight_firmware.c | 19 +- trunk/drivers/usb/misc/ldusb.c | 27 +- trunk/drivers/usb/misc/legousbtower.c | 48 +- trunk/drivers/usb/misc/rio500.c | 28 +- trunk/drivers/usb/misc/trancevibrator.c | 21 +- trunk/drivers/usb/misc/usblcd.c | 20 +- trunk/drivers/usb/misc/usbled.c | 18 +- trunk/drivers/usb/misc/usbsevseg.c | 18 +- trunk/drivers/usb/misc/usbtest.c | 1 - trunk/drivers/usb/misc/yurex.c | 22 +- trunk/drivers/usb/musb/Kconfig | 61 +- trunk/drivers/usb/musb/Makefile | 26 +- trunk/drivers/usb/musb/cppi_dma.c | 2 +- trunk/drivers/usb/musb/musb_core.c | 8 +- trunk/drivers/usb/musb/musb_core.h | 4 +- trunk/drivers/usb/musb/musb_debug.h | 4 +- trunk/drivers/usb/musb/musb_debugfs.c | 8 - trunk/drivers/usb/musb/musb_gadget.c | 6 +- trunk/drivers/usb/musb/musb_gadget_ep0.c | 1 - trunk/drivers/usb/musb/musb_io.h | 2 +- trunk/drivers/usb/musb/omap2430.c | 61 +- trunk/drivers/usb/musb/tusb6010.c | 1 + trunk/drivers/usb/musb/ux500_dma.c | 39 +- trunk/drivers/usb/otg/Kconfig | 32 +- trunk/drivers/usb/otg/Makefile | 1 + trunk/drivers/usb/otg/fsl_otg.c | 15 +- trunk/drivers/usb/otg/mv_otg.c | 957 ++++ trunk/drivers/usb/otg/mv_otg.h | 165 + trunk/drivers/usb/renesas_usbhs/common.c | 52 +- trunk/drivers/usb/renesas_usbhs/common.h | 9 +- trunk/drivers/usb/renesas_usbhs/fifo.c | 9 +- trunk/drivers/usb/renesas_usbhs/fifo.h | 3 +- trunk/drivers/usb/renesas_usbhs/mod.c | 4 +- trunk/drivers/usb/renesas_usbhs/mod_gadget.c | 195 +- trunk/drivers/usb/renesas_usbhs/mod_host.c | 952 ++-- trunk/drivers/usb/renesas_usbhs/pipe.c | 31 +- trunk/drivers/usb/renesas_usbhs/pipe.h | 1 + trunk/drivers/usb/serial/ChangeLog.history | 730 --- trunk/drivers/usb/serial/belkin_sa.c | 43 - trunk/drivers/usb/serial/ch341.c | 3 +- trunk/drivers/usb/serial/cp210x.c | 59 +- trunk/drivers/usb/serial/cyberjack.c | 33 +- trunk/drivers/usb/serial/cypress_m8.c | 29 - trunk/drivers/usb/serial/digi_acceleport.c | 227 +- trunk/drivers/usb/serial/ftdi_sio.c | 4 + trunk/drivers/usb/serial/ftdi_sio_ids.h | 6 +- trunk/drivers/usb/serial/garmin_gps.c | 9 - trunk/drivers/usb/serial/generic.c | 83 +- trunk/drivers/usb/serial/io_edgeport.c | 3 - trunk/drivers/usb/serial/io_ti.c | 28 +- trunk/drivers/usb/serial/ipaq.c | 34 - trunk/drivers/usb/serial/ir-usb.c | 32 - trunk/drivers/usb/serial/iuu_phoenix.c | 3 +- trunk/drivers/usb/serial/keyspan.c | 90 - trunk/drivers/usb/serial/keyspan_pda.c | 66 +- trunk/drivers/usb/serial/kobil_sct.c | 25 - trunk/drivers/usb/serial/mct_u232.c | 46 - trunk/drivers/usb/serial/mos7720.c | 18 - trunk/drivers/usb/serial/mos7840.c | 4 - trunk/drivers/usb/serial/omninet.c | 51 +- trunk/drivers/usb/serial/opticon.c | 1 - trunk/drivers/usb/serial/option.c | 5 + trunk/drivers/usb/serial/oti6858.c | 23 +- trunk/drivers/usb/serial/pl2303.c | 17 +- trunk/drivers/usb/serial/sierra.c | 1 - trunk/drivers/usb/serial/symbolserial.c | 1 - trunk/drivers/usb/serial/ti_usb_3410_5052.c | 13 +- trunk/drivers/usb/serial/usb-serial.c | 98 +- trunk/drivers/usb/serial/usb_debug.c | 13 +- trunk/drivers/usb/serial/whiteheat.c | 58 - trunk/drivers/usb/storage/alauda.c | 15 +- trunk/drivers/usb/storage/cypress_atacb.c | 15 +- trunk/drivers/usb/storage/datafab.c | 15 +- trunk/drivers/usb/storage/ene_ub6250.c | 25 +- trunk/drivers/usb/storage/freecom.c | 15 +- trunk/drivers/usb/storage/isd200.c | 17 +- trunk/drivers/usb/storage/jumpshot.c | 15 +- trunk/drivers/usb/storage/karma.c | 15 +- trunk/drivers/usb/storage/onetouch.c | 15 +- trunk/drivers/usb/storage/realtek_cr.c | 27 +- trunk/drivers/usb/storage/sddr09.c | 15 +- trunk/drivers/usb/storage/sddr55.c | 15 +- trunk/drivers/usb/storage/shuttle_usbat.c | 15 +- trunk/drivers/usb/storage/uas.c | 13 +- trunk/drivers/usb/storage/unusual_devs.h | 2 +- trunk/drivers/usb/storage/usb.c | 14 +- trunk/drivers/usb/usb-skeleton.c | 61 +- trunk/drivers/usb/wusbcore/Kconfig | 1 + trunk/drivers/usb/wusbcore/cbaf.c | 12 +- trunk/drivers/usb/wusbcore/security.c | 2 +- trunk/drivers/uwb/est.c | 2 +- trunk/drivers/uwb/hwa-rc.c | 12 +- trunk/drivers/uwb/i1480/dfu/usb.c | 22 +- trunk/drivers/video/bf54x-lq043fb.c | 2 +- trunk/drivers/video/bfin-t350mcqb-fb.c | 2 +- trunk/drivers/video/console/Kconfig | 2 - trunk/drivers/video/mxsfb.c | 8 +- trunk/drivers/video/omap/rfbi.c | 2 +- trunk/drivers/video/omap/sossi.c | 2 +- trunk/drivers/video/omap2/omapfb/Kconfig | 2 +- trunk/drivers/video/smscufx.c | 19 +- trunk/drivers/video/udlfb.c | 19 +- trunk/drivers/w1/masters/ds2490.c | 21 +- trunk/drivers/w1/slaves/w1_therm.c | 36 +- trunk/drivers/w1/w1.c | 10 + trunk/drivers/watchdog/at91sam9_wdt.c | 22 +- trunk/drivers/watchdog/at91sam9_wdt.h | 6 +- trunk/drivers/watchdog/pcwd_usb.c | 35 +- trunk/drivers/watchdog/w83627hf_wdt.c | 4 +- trunk/drivers/xen/xen-balloon.c | 86 +- trunk/drivers/xen/xen-selfballoon.c | 76 +- trunk/drivers/zorro/zorro.ids | 2 +- trunk/fs/9p/v9fs_vfs.h | 4 +- trunk/fs/9p/vfs_inode.c | 46 +- trunk/fs/9p/vfs_inode_dotl.c | 14 +- trunk/fs/9p/vfs_super.c | 2 +- trunk/fs/Kconfig | 10 +- trunk/fs/Makefile | 3 +- trunk/fs/adfs/super.c | 4 +- trunk/fs/affs/affs.h | 6 +- trunk/fs/affs/amigaffs.c | 6 +- trunk/fs/affs/namei.c | 8 +- trunk/fs/affs/super.c | 1 - trunk/fs/afs/dir.c | 12 +- trunk/fs/afs/mntpt.c | 4 +- trunk/fs/afs/super.c | 1 - trunk/fs/attr.c | 4 +- trunk/fs/autofs4/autofs_i.h | 2 +- trunk/fs/autofs4/dev-ioctl.c | 10 +- trunk/fs/autofs4/inode.c | 8 +- trunk/fs/autofs4/root.c | 4 +- trunk/fs/bad_inode.c | 6 +- trunk/fs/befs/linuxvfs.c | 1 - trunk/fs/bfs/dir.c | 2 +- trunk/fs/bfs/inode.c | 1 - trunk/fs/binfmt_misc.c | 6 +- trunk/fs/block_dev.c | 38 +- trunk/fs/btrfs/async-thread.c | 2 +- trunk/fs/btrfs/disk-io.c | 8 +- trunk/fs/btrfs/free-space-cache.c | 2 +- trunk/fs/btrfs/inode.c | 13 +- trunk/fs/btrfs/ioctl.c | 22 +- trunk/fs/btrfs/super.c | 5 +- trunk/fs/buffer.c | 50 - trunk/fs/cachefiles/interface.c | 1 - trunk/fs/ceph/caps.c | 4 +- trunk/fs/ceph/dir.c | 12 +- trunk/fs/ceph/inode.c | 1 - trunk/fs/ceph/super.c | 6 +- trunk/fs/ceph/super.h | 2 +- trunk/fs/char_dev.c | 6 +- trunk/fs/cifs/cifs_fs_sb.h | 4 +- trunk/fs/cifs/cifsfs.c | 10 +- trunk/fs/cifs/cifsfs.h | 6 +- trunk/fs/cifs/cifsglob.h | 4 +- trunk/fs/cifs/connect.c | 2 +- trunk/fs/cifs/dir.c | 4 +- trunk/fs/cifs/inode.c | 4 +- trunk/fs/coda/dir.c | 8 +- trunk/fs/coda/inode.c | 1 - trunk/fs/compat.c | 13 +- trunk/fs/configfs/configfs_internal.h | 4 +- trunk/fs/configfs/dir.c | 6 +- trunk/fs/configfs/inode.c | 6 +- trunk/fs/cramfs/inode.c | 3 +- trunk/fs/dcache.c | 37 +- trunk/fs/debugfs/file.c | 117 +- trunk/fs/debugfs/inode.c | 16 +- trunk/fs/devpts/inode.c | 8 +- trunk/fs/ecryptfs/inode.c | 29 +- trunk/fs/ecryptfs/super.c | 5 +- trunk/fs/efs/super.c | 1 - trunk/fs/exec.c | 2 +- trunk/fs/exofs/Kconfig | 11 - trunk/fs/exofs/Kconfig.ore | 12 + trunk/fs/exofs/dir.c | 2 +- trunk/fs/exofs/exofs.h | 2 +- trunk/fs/exofs/inode.c | 2 +- trunk/fs/exofs/namei.c | 6 +- trunk/fs/exofs/ore.c | 8 +- trunk/fs/exofs/ore_raid.c | 78 +- trunk/fs/exofs/super.c | 3 +- trunk/fs/ext2/dir.c | 2 +- trunk/fs/ext2/ext2.h | 2 +- trunk/fs/ext2/ialloc.c | 9 +- trunk/fs/ext2/inode.c | 5 - trunk/fs/ext2/ioctl.c | 12 +- trunk/fs/ext2/namei.c | 6 +- trunk/fs/ext2/super.c | 8 +- trunk/fs/ext2/xattr.c | 1 - trunk/fs/ext2/xattr_security.c | 1 - trunk/fs/ext2/xattr_trusted.c | 1 - trunk/fs/ext2/xattr_user.c | 1 - trunk/fs/ext3/ialloc.c | 10 +- trunk/fs/ext3/inode.c | 45 +- trunk/fs/ext3/ioctl.c | 26 +- trunk/fs/ext3/namei.c | 17 +- trunk/fs/ext3/super.c | 22 +- trunk/fs/ext3/xattr_security.c | 1 - trunk/fs/ext3/xattr_trusted.c | 1 - trunk/fs/ext3/xattr_user.c | 1 - trunk/fs/ext4/block_validity.c | 1 - trunk/fs/ext4/ext4.h | 2 +- trunk/fs/ext4/extents.c | 1 - trunk/fs/ext4/ialloc.c | 8 +- trunk/fs/ext4/indirect.c | 1 - trunk/fs/ext4/inode.c | 5 +- trunk/fs/ext4/ioctl.c | 34 +- trunk/fs/ext4/migrate.c | 1 - trunk/fs/ext4/namei.c | 8 +- trunk/fs/ext4/page-io.c | 1 - trunk/fs/ext4/super.c | 10 +- trunk/fs/ext4/xattr_security.c | 1 - trunk/fs/ext4/xattr_trusted.c | 1 - trunk/fs/ext4/xattr_user.c | 1 - trunk/fs/fat/fat.h | 6 +- trunk/fs/fat/file.c | 8 +- trunk/fs/fat/inode.c | 33 +- trunk/fs/fat/namei_msdos.c | 4 +- trunk/fs/fat/namei_vfat.c | 7 +- trunk/fs/fhandle.c | 8 +- trunk/fs/file_table.c | 23 - trunk/fs/filesystems.c | 1 - trunk/fs/freevxfs/vxfs_inode.c | 5 +- trunk/fs/fs-writeback.c | 5 +- trunk/fs/fuse/dir.c | 12 +- trunk/fs/fuse/fuse_i.h | 2 +- trunk/fs/fuse/inode.c | 11 +- trunk/fs/gfs2/acl.c | 14 +- trunk/fs/gfs2/aops.c | 18 +- trunk/fs/gfs2/bmap.c | 26 +- trunk/fs/gfs2/dir.c | 64 +- trunk/fs/gfs2/dir.h | 2 +- trunk/fs/gfs2/export.c | 3 +- trunk/fs/gfs2/file.c | 38 +- trunk/fs/gfs2/incore.h | 20 +- trunk/fs/gfs2/inode.c | 88 +- trunk/fs/gfs2/log.c | 6 +- trunk/fs/gfs2/main.c | 3 +- trunk/fs/gfs2/meta_io.c | 4 +- trunk/fs/gfs2/ops_fstype.c | 2 +- trunk/fs/gfs2/quota.c | 91 +- trunk/fs/gfs2/rgrp.c | 293 +- trunk/fs/gfs2/rgrp.h | 16 +- trunk/fs/gfs2/super.c | 23 +- trunk/fs/gfs2/trans.h | 6 +- trunk/fs/gfs2/xattr.c | 48 +- trunk/fs/hfs/dir.c | 4 +- trunk/fs/hfs/hfs_fs.h | 2 +- trunk/fs/hfs/inode.c | 2 +- trunk/fs/hfs/super.c | 5 +- trunk/fs/hfsplus/dir.c | 6 +- trunk/fs/hfsplus/hfsplus_fs.h | 4 +- trunk/fs/hfsplus/inode.c | 2 +- trunk/fs/hfsplus/ioctl.c | 4 +- trunk/fs/hfsplus/options.c | 4 +- trunk/fs/hfsplus/super.c | 1 - trunk/fs/hostfs/hostfs.h | 2 +- trunk/fs/hostfs/hostfs_kern.c | 11 +- trunk/fs/hpfs/namei.c | 6 +- trunk/fs/hpfs/super.c | 1 - trunk/fs/hppfs/hppfs.c | 3 +- trunk/fs/hugetlbfs/inode.c | 66 +- trunk/fs/inode.c | 92 +- trunk/fs/internal.h | 30 +- trunk/fs/isofs/inode.c | 5 +- trunk/fs/isofs/isofs.h | 6 +- trunk/fs/jbd/checkpoint.c | 2 +- trunk/fs/jbd/commit.c | 6 + trunk/fs/jbd/journal.c | 3 +- trunk/fs/jbd/revoke.c | 34 + trunk/fs/jbd/transaction.c | 38 +- trunk/fs/jbd2/checkpoint.c | 2 +- trunk/fs/jbd2/journal.c | 2 +- trunk/fs/jffs2/dir.c | 14 +- trunk/fs/jffs2/super.c | 5 +- trunk/fs/jfs/ioctl.c | 4 +- trunk/fs/jfs/jfs_logmgr.c | 2 +- trunk/fs/jfs/jfs_txnmgr.c | 4 +- trunk/fs/jfs/namei.c | 6 +- trunk/fs/jfs/super.c | 5 +- trunk/fs/libfs.c | 2 +- trunk/fs/lockd/svcsubs.c | 2 +- trunk/fs/logfs/dir.c | 6 +- trunk/fs/logfs/inode.c | 3 +- trunk/fs/logfs/logfs.h | 2 +- trunk/fs/minix/bitmap.c | 2 +- trunk/fs/minix/inode.c | 1 - trunk/fs/minix/minix.h | 2 +- trunk/fs/minix/namei.c | 6 +- trunk/fs/mount.h | 76 + trunk/fs/namei.c | 55 +- trunk/fs/namespace.c | 831 ++-- trunk/fs/ncpfs/dir.c | 18 +- trunk/fs/ncpfs/inode.c | 7 +- trunk/fs/ncpfs/ioctl.c | 2 +- trunk/fs/ncpfs/ncplib_kernel.h | 2 +- trunk/fs/ncpfs/symlink.c | 2 +- trunk/fs/nfs/dir.c | 33 +- trunk/fs/nfs/inode.c | 44 +- trunk/fs/nfs/nfs3proc.c | 3 +- trunk/fs/nfs/nfs4proc.c | 5 +- trunk/fs/nfs/proc.c | 3 +- trunk/fs/nfs/super.c | 49 +- trunk/fs/nfsd/nfs4proc.c | 4 +- trunk/fs/nfsd/nfs4recover.c | 12 +- trunk/fs/nfsd/nfs4state.c | 2 +- trunk/fs/nfsd/nfsctl.c | 2 +- trunk/fs/nfsd/nfsfh.c | 4 +- trunk/fs/nfsd/nfsfh.h | 2 +- trunk/fs/nfsd/vfs.c | 38 +- trunk/fs/nfsd/vfs.h | 12 +- trunk/fs/nilfs2/dir.c | 2 +- trunk/fs/nilfs2/inode.c | 2 +- trunk/fs/nilfs2/ioctl.c | 22 +- trunk/fs/nilfs2/namei.c | 6 +- trunk/fs/nilfs2/nilfs.h | 2 +- trunk/fs/nilfs2/segment.c | 2 +- trunk/fs/nilfs2/super.c | 8 +- trunk/fs/nls/nls_base.c | 73 +- trunk/fs/notify/fanotify/fanotify_user.c | 6 +- trunk/fs/notify/fsnotify.c | 9 +- trunk/fs/notify/vfsmount_mark.c | 19 +- trunk/fs/ntfs/inode.c | 9 +- trunk/fs/ntfs/inode.h | 2 +- trunk/fs/ntfs/super.c | 6 +- trunk/fs/ntfs/volume.h | 4 +- trunk/fs/ocfs2/cluster/netdebug.c | 2 +- trunk/fs/ocfs2/dlmfs/dlmfs.c | 24 +- trunk/fs/ocfs2/file.c | 2 +- trunk/fs/ocfs2/ioctl.c | 4 +- trunk/fs/ocfs2/move_extents.c | 4 +- trunk/fs/ocfs2/namei.c | 8 +- trunk/fs/ocfs2/super.c | 10 +- trunk/fs/ocfs2/xattr.c | 2 +- trunk/fs/ocfs2/xattr.h | 2 +- trunk/fs/omfs/dir.c | 6 +- trunk/fs/omfs/inode.c | 2 +- trunk/fs/omfs/omfs.h | 2 +- trunk/fs/open.c | 22 +- trunk/fs/openpromfs/inode.c | 1 - trunk/fs/pipe.c | 7 - trunk/fs/pnode.c | 120 +- trunk/fs/pnode.h | 36 +- trunk/fs/proc/base.c | 116 +- trunk/fs/proc/generic.c | 8 +- trunk/fs/proc/inode.c | 1 - trunk/fs/proc/namespaces.c | 1 - trunk/fs/proc/proc_net.c | 2 +- trunk/fs/proc_namespace.c | 333 ++ trunk/fs/qnx4/inode.c | 8 +- trunk/fs/quota/dquot.c | 3 +- trunk/fs/quota/quota.c | 1 - trunk/fs/ramfs/inode.c | 8 +- trunk/fs/reiserfs/bitmap.c | 91 + trunk/fs/reiserfs/inode.c | 2 +- trunk/fs/reiserfs/ioctl.c | 8 +- trunk/fs/reiserfs/namei.c | 8 +- trunk/fs/reiserfs/super.c | 146 +- trunk/fs/reiserfs/xattr.c | 2 +- trunk/fs/romfs/super.c | 1 - trunk/fs/seq_file.c | 10 +- trunk/fs/splice.c | 1 - trunk/fs/squashfs/super.c | 1 - trunk/fs/statfs.c | 21 +- trunk/fs/super.c | 70 +- trunk/fs/sync.c | 1 - trunk/fs/sysfs/file.c | 4 +- trunk/fs/sysfs/group.c | 2 +- trunk/fs/sysfs/inode.c | 2 +- trunk/fs/sysfs/sysfs.h | 4 +- trunk/fs/sysv/ialloc.c | 2 +- trunk/fs/sysv/inode.c | 1 - trunk/fs/sysv/itree.c | 2 +- trunk/fs/sysv/namei.c | 6 +- trunk/fs/sysv/sysv.h | 2 +- trunk/fs/ubifs/dir.c | 14 +- trunk/fs/ubifs/ioctl.c | 4 +- trunk/fs/ubifs/super.c | 5 +- trunk/fs/ubifs/ubifs.h | 2 +- trunk/fs/udf/file.c | 6 +- trunk/fs/udf/ialloc.c | 2 +- trunk/fs/udf/inode.c | 63 +- trunk/fs/udf/namei.c | 6 +- trunk/fs/udf/super.c | 25 +- trunk/fs/udf/symlink.c | 14 +- trunk/fs/udf/udf_sb.h | 8 +- trunk/fs/udf/udfdecl.h | 2 +- trunk/fs/ufs/ialloc.c | 2 +- trunk/fs/ufs/inode.c | 4 +- trunk/fs/ufs/namei.c | 6 +- trunk/fs/ufs/super.c | 5 +- trunk/fs/ufs/ufs.h | 2 +- trunk/fs/xattr.c | 4 +- trunk/fs/xfs/xfs_acl.c | 2 +- trunk/fs/xfs/xfs_buf.c | 10 +- trunk/fs/xfs/xfs_buf.h | 3 +- trunk/fs/xfs/xfs_discard.c | 4 +- trunk/fs/xfs/xfs_dquot.c | 500 +- trunk/fs/xfs/xfs_dquot.h | 39 +- trunk/fs/xfs/xfs_dquot_item.c | 5 +- trunk/fs/xfs/xfs_file.c | 6 +- trunk/fs/xfs/xfs_ialloc.c | 4 +- trunk/fs/xfs/xfs_ialloc.h | 2 +- trunk/fs/xfs/xfs_iget.c | 1 - trunk/fs/xfs/xfs_inode.c | 4 +- trunk/fs/xfs/xfs_inode.h | 2 +- trunk/fs/xfs/xfs_inode_item.c | 2 - trunk/fs/xfs/xfs_ioctl.c | 8 +- trunk/fs/xfs/xfs_ioctl32.c | 8 +- trunk/fs/xfs/xfs_iops.c | 8 +- trunk/fs/xfs/xfs_log.c | 79 +- trunk/fs/xfs/xfs_log.h | 8 +- trunk/fs/xfs/xfs_log_cil.c | 98 +- trunk/fs/xfs/xfs_mount.h | 1 - trunk/fs/xfs/xfs_qm.c | 464 +- trunk/fs/xfs/xfs_qm.h | 6 - trunk/fs/xfs/xfs_quota.h | 12 +- trunk/fs/xfs/xfs_super.c | 40 +- trunk/fs/xfs/xfs_sync.c | 6 +- trunk/fs/xfs/xfs_trace.h | 2 - trunk/fs/xfs/xfs_trans.c | 475 +- trunk/fs/xfs/xfs_trans.h | 3 +- trunk/fs/xfs/xfs_utils.c | 2 +- trunk/fs/xfs/xfs_utils.h | 2 +- trunk/fs/xfs/xfs_vnodeops.c | 4 +- trunk/fs/xfs/xfs_vnodeops.h | 4 +- trunk/include/asm-generic/gpio.h | 6 +- trunk/include/asm-generic/types.h | 6 - trunk/include/drm/drmP.h | 2 +- trunk/include/linux/amba/pl022.h | 4 + trunk/include/linux/amba/pl330.h | 15 +- trunk/include/linux/ata_platform.h | 3 - trunk/include/linux/audit.h | 8 +- trunk/include/linux/cgroup.h | 33 +- trunk/include/linux/clk.h | 22 + trunk/include/linux/compat.h | 4 +- trunk/include/linux/configfs.h | 2 +- trunk/include/linux/cordic.h | 4 +- trunk/include/linux/cpu.h | 18 +- trunk/include/linux/debugfs.h | 72 +- trunk/include/linux/device.h | 114 +- trunk/include/linux/dma-buf.h | 176 + trunk/include/linux/edac.h | 8 +- trunk/include/linux/ext3_fs.h | 2 +- trunk/include/linux/freezer.h | 159 +- trunk/include/linux/fs.h | 107 +- trunk/include/linux/genhd.h | 2 +- trunk/include/linux/gpio-pxa.h | 16 + trunk/include/linux/hyperv.h | 2 +- trunk/include/linux/i2c.h | 13 + trunk/include/linux/ide.h | 2 +- trunk/include/linux/init_task.h | 9 +- trunk/include/linux/ipc.h | 2 +- trunk/include/linux/iscsi_boot_sysfs.h | 8 +- trunk/include/linux/jbd.h | 5 +- trunk/include/linux/kmod.h | 2 + trunk/include/linux/kobject.h | 2 - trunk/include/linux/kref.h | 77 +- trunk/include/linux/kthread.h | 1 + trunk/include/linux/mbus.h | 13 +- trunk/include/linux/memory.h | 3 +- trunk/include/linux/mfd/da9052/da9052.h | 131 + trunk/include/linux/mfd/da9052/pdata.h | 40 + trunk/include/linux/mfd/da9052/reg.h | 749 +++ trunk/include/linux/miscdevice.h | 2 +- trunk/include/linux/mnt_namespace.h | 31 +- trunk/include/linux/mount.h | 39 +- trunk/include/linux/netdevice.h | 4 +- trunk/include/linux/netfilter/x_tables.h | 4 +- trunk/include/linux/nfs_fs.h | 2 +- trunk/include/linux/nls.h | 5 +- trunk/include/linux/node.h | 6 +- trunk/include/linux/of.h | 44 +- trunk/include/linux/of_fdt.h | 4 +- trunk/include/linux/of_gpio.h | 10 +- trunk/include/linux/percpu.h | 190 +- trunk/include/linux/platform_data/macb.h | 17 + trunk/include/linux/platform_data/mv_usb.h | 18 +- trunk/include/linux/platform_data/s3c-hsudc.h | 34 + trunk/include/linux/platform_device.h | 44 +- trunk/include/linux/pm.h | 15 +- trunk/include/linux/pm_domain.h | 103 +- trunk/include/linux/pm_qos.h | 8 + trunk/include/linux/pm_runtime.h | 5 + trunk/include/linux/proc_fs.h | 24 +- trunk/include/linux/raid/md_p.h | 7 +- trunk/include/linux/raid/pq.h | 2 +- trunk/include/linux/ramfs.h | 2 +- trunk/include/linux/regmap.h | 59 +- trunk/include/linux/reiserfs_fs.h | 9 +- trunk/include/linux/reiserfs_fs_sb.h | 4 +- trunk/include/linux/relay.h | 2 +- trunk/include/linux/sched.h | 77 +- trunk/include/linux/security.h | 66 +- trunk/include/linux/seq_file.h | 10 +- trunk/include/linux/serial_8250.h | 5 + trunk/include/linux/serial_core.h | 100 +- trunk/include/linux/sh_intc.h | 1 + trunk/include/linux/shmem_fs.h | 2 +- trunk/include/linux/slab_def.h | 2 - trunk/include/linux/spi/spi.h | 11 + trunk/include/linux/sunrpc/cache.h | 2 +- trunk/include/linux/sunrpc/rpc_pipe_fs.h | 2 +- trunk/include/linux/suspend.h | 35 +- trunk/include/linux/syscalls.h | 24 +- trunk/include/linux/sysctl.h | 2 +- trunk/include/linux/sysfs.h | 8 +- trunk/include/linux/types.h | 3 +- trunk/include/linux/usb.h | 28 +- trunk/include/linux/usb/ch11.h | 31 +- trunk/include/linux/usb/ch9.h | 20 +- trunk/include/linux/usb/gadget.h | 26 +- trunk/include/linux/usb/hcd.h | 2 - trunk/include/linux/usb/renesas_usbhs.h | 10 +- trunk/include/linux/usb/serial.h | 11 +- trunk/include/linux/wanrouter.h | 2 +- trunk/include/media/davinci/vpif_types.h | 71 + trunk/include/net/mac80211.h | 2 +- trunk/include/net/snmp.h | 14 +- trunk/include/rdma/ib_addr.h | 2 +- trunk/include/rdma/ib_cm.h | 3 + trunk/include/scsi/scsi_transport_iscsi.h | 2 +- trunk/include/sound/info.h | 2 +- trunk/include/sound/saif.h | 4 +- trunk/include/trace/events/regmap.h | 9 + trunk/include/xen/balloon.h | 6 +- trunk/init/do_mounts.c | 10 +- trunk/init/initramfs.c | 8 +- trunk/ipc/mqueue.c | 9 +- trunk/kernel/acct.c | 42 +- trunk/kernel/audit.c | 5 +- trunk/kernel/auditsc.c | 20 +- trunk/kernel/cgroup.c | 423 +- trunk/kernel/cgroup_freezer.c | 77 +- trunk/kernel/cpu.c | 4 +- trunk/kernel/cpuset.c | 105 +- trunk/kernel/events/core.c | 15 +- trunk/kernel/events/ring_buffer.c | 2 +- trunk/kernel/exit.c | 3 +- trunk/kernel/fork.c | 9 +- trunk/kernel/freezer.c | 203 +- trunk/kernel/irq/irqdomain.c | 3 + trunk/kernel/irq/manage.c | 2 +- trunk/kernel/kexec.c | 4 +- trunk/kernel/kmod.c | 27 +- trunk/kernel/kthread.c | 27 +- trunk/kernel/power/hibernate.c | 92 +- trunk/kernel/power/main.c | 10 +- trunk/kernel/power/power.h | 2 + trunk/kernel/power/process.c | 77 +- trunk/kernel/power/suspend.c | 12 +- trunk/kernel/power/swap.c | 1 - trunk/kernel/power/user.c | 184 +- trunk/kernel/relay.c | 2 +- trunk/kernel/res_counter.c | 3 +- trunk/kernel/rtmutex-tester.c | 37 +- trunk/kernel/sched/core.c | 73 +- trunk/kernel/signal.c | 10 + trunk/kernel/time/Kconfig | 2 +- trunk/kernel/time/clockevents.c | 1 - trunk/kernel/time/clocksource.c | 37 +- trunk/kernel/trace/blktrace.c | 2 +- trunk/kernel/trace/trace.c | 2 +- trunk/kernel/trace/trace.h | 2 +- trunk/lib/Kconfig | 7 +- trunk/lib/Makefile | 2 +- trunk/lib/cordic.c | 2 +- trunk/lib/decompress_bunzip2.c | 5 +- trunk/lib/decompress_unlzma.c | 2 +- trunk/lib/devres.c | 55 +- trunk/lib/fault-inject.c | 8 +- trunk/lib/kobject.c | 37 - trunk/lib/kobject_uevent.c | 3 + trunk/lib/kref.c | 97 - trunk/mm/backing-dev.c | 8 +- trunk/mm/compaction.c | 10 +- trunk/mm/failslab.c | 2 +- trunk/mm/filemap.c | 2 +- trunk/mm/hugetlb.c | 34 +- trunk/mm/memcontrol.c | 16 +- trunk/mm/oom_kill.c | 2 +- trunk/mm/page-writeback.c | 2 +- trunk/mm/page_alloc.c | 6 +- trunk/mm/shmem.c | 17 +- trunk/mm/slab.c | 2 + trunk/mm/slub.c | 6 +- trunk/mm/swap_state.c | 1 - trunk/mm/vmscan.c | 14 +- trunk/net/caif/caif_dev.c | 4 +- trunk/net/caif/cffrml.c | 4 +- trunk/net/ipv4/Kconfig | 2 - trunk/net/ipv4/ip_fragment.c | 2 +- trunk/net/ipv4/netfilter/nf_nat_core.c | 2 +- trunk/net/netfilter/ipvs/Kconfig | 1 - trunk/net/sctp/endpointola.c | 2 +- trunk/net/sunrpc/cache.c | 2 +- trunk/net/sunrpc/rpc_pipe.c | 3 +- trunk/net/sunrpc/sched.c | 3 +- trunk/net/unix/af_unix.c | 2 +- trunk/scripts/package/Makefile | 2 +- trunk/security/apparmor/apparmorfs.c | 2 +- trunk/security/apparmor/lsm.c | 11 +- trunk/security/apparmor/path.c | 1 - trunk/security/capability.c | 13 +- trunk/security/device_cgroup.c | 7 +- trunk/security/inode.c | 16 +- trunk/security/security.c | 17 +- trunk/security/selinux/hooks.c | 10 +- trunk/security/smack/smack_lsm.c | 4 +- trunk/security/tomoyo/audit.c | 4 +- trunk/security/tomoyo/common.h | 2 +- trunk/security/tomoyo/realpath.c | 9 +- trunk/security/tomoyo/securityfs_if.c | 2 +- trunk/security/tomoyo/tomoyo.c | 15 +- trunk/sound/aoa/codecs/Kconfig | 8 - trunk/sound/core/Kconfig | 1 - trunk/sound/oss/Kconfig | 2 +- trunk/sound/soc/kirkwood/kirkwood-dma.c | 15 +- trunk/sound/soc/mxs/mxs-saif.c | 24 +- trunk/sound/sound_core.c | 2 +- trunk/sound/usb/6fire/chip.c | 15 +- trunk/sound/usb/caiaq/device.c | 13 +- trunk/sound/usb/misc/ua101.c | 14 +- trunk/sound/usb/usx2y/us122l.c | 14 +- trunk/sound/usb/usx2y/usbusx2y.c | 13 +- trunk/tools/power/x86/turbostat/turbostat.8 | 8 +- trunk/tools/testing/ktest/sample.conf | 2 +- 2737 files changed, 66845 insertions(+), 68041 deletions(-) create mode 100644 trunk/Documentation/devicetree/bindings/arm/insignal-boards.txt create mode 100644 trunk/Documentation/devicetree/bindings/arm/samsung-boards.txt create mode 100644 trunk/Documentation/devicetree/bindings/arm/tegra.txt create mode 100644 trunk/Documentation/devicetree/bindings/dma/arm-pl330.txt create mode 100644 trunk/Documentation/devicetree/bindings/gpio/gpio-samsung.txt create mode 100644 trunk/Documentation/devicetree/bindings/i2c/i2c-designware.txt create mode 100644 trunk/Documentation/devicetree/bindings/i2c/trivial-devices.txt create mode 100644 trunk/Documentation/devicetree/bindings/input/samsung-keypad.txt create mode 100644 trunk/Documentation/devicetree/bindings/net/macb.txt create mode 100644 trunk/Documentation/devicetree/bindings/nvec/nvec_nvidia.txt create mode 100644 trunk/Documentation/devicetree/bindings/rtc/s3c-rtc.txt create mode 100644 trunk/Documentation/devicetree/bindings/serial/omap_serial.txt create mode 100644 trunk/Documentation/devicetree/bindings/serial/samsung_uart.txt create mode 100644 trunk/Documentation/devicetree/bindings/usb/tegra-usb.txt create mode 100644 trunk/Documentation/dma-buf-sharing.txt create mode 100644 trunk/arch/arm/boot/dts/exynos4210-origen.dts create mode 100644 trunk/arch/arm/boot/dts/exynos4210-smdkv310.dts create mode 100644 trunk/arch/arm/boot/dts/exynos4210.dtsi rename trunk/arch/arm/boot/dts/{imx6q-sabreauto.dts => imx6q-arm2.dts} (78%) create mode 100644 trunk/arch/arm/boot/dts/imx6q-sabrelite.dts create mode 100644 trunk/arch/arm/boot/dts/omap2.dtsi create mode 100644 trunk/arch/arm/boot/dts/tegra-cardhu.dts create mode 100644 trunk/arch/arm/boot/dts/tegra-paz00.dts create mode 100644 trunk/arch/arm/boot/dts/tegra-trimslice.dts create mode 100644 trunk/arch/arm/boot/dts/tegra30.dtsi create mode 100644 trunk/arch/arm/boot/dts/testcases/tests-phandle.dtsi create mode 100644 trunk/arch/arm/boot/dts/testcases/tests.dtsi delete mode 100644 trunk/arch/arm/configs/pcontrol_g20_defconfig create mode 100644 trunk/arch/arm/mach-exynos/dev-ohci.c create mode 100644 trunk/arch/arm/mach-exynos/include/mach/ohci.h create mode 100644 trunk/arch/arm/mach-exynos/include/mach/spi-clocks.h create mode 100644 trunk/arch/arm/mach-exynos/mach-exynos4-dt.c delete mode 100644 trunk/arch/arm/mach-exynos/setup-sdhci.c create mode 100644 trunk/arch/arm/mach-exynos/setup-spi.c create mode 100644 trunk/arch/arm/mach-mxs/include/mach/digctl.h create mode 100644 trunk/arch/arm/mach-omap2/cpuidle44xx.c create mode 100644 trunk/arch/arm/mach-omap2/include/mach/barriers.h create mode 100644 trunk/arch/arm/mach-omap2/include/mach/omap-secure.h create mode 100644 trunk/arch/arm/mach-omap2/include/mach/omap-wakeupgen.h create mode 100644 trunk/arch/arm/mach-omap2/omap-mpuss-lowpower.c create mode 100644 trunk/arch/arm/mach-omap2/omap-secure.c rename trunk/arch/arm/mach-omap2/{omap44xx-smc.S => omap-smc.S} (70%) create mode 100644 trunk/arch/arm/mach-omap2/omap-wakeupgen.c create mode 100644 trunk/arch/arm/mach-omap2/omap4-sar-layout.h create mode 100644 trunk/arch/arm/mach-omap2/prm_common.c create mode 100644 trunk/arch/arm/mach-omap2/sleep44xx.S delete mode 100644 trunk/arch/arm/mach-picoxcell/include/mach/memory.h delete mode 100644 trunk/arch/arm/mach-picoxcell/io.c delete mode 100644 trunk/arch/arm/mach-pxa/include/mach/gpio-pxa.h delete mode 100644 trunk/arch/arm/mach-s3c2416/setup-sdhci.c delete mode 100644 trunk/arch/arm/mach-s3c64xx/dev-spi.c delete mode 100644 trunk/arch/arm/mach-s3c64xx/setup-sdhci.c create mode 100644 trunk/arch/arm/mach-s3c64xx/setup-spi.c delete mode 100644 trunk/arch/arm/mach-s5p64x0/dev-spi.c create mode 100644 trunk/arch/arm/mach-s5p64x0/setup-sdhci-gpio.c create mode 100644 trunk/arch/arm/mach-s5p64x0/setup-spi.c delete mode 100644 trunk/arch/arm/mach-s5pc100/dev-spi.c delete mode 100644 trunk/arch/arm/mach-s5pc100/setup-sdhci.c create mode 100644 trunk/arch/arm/mach-s5pc100/setup-spi.c delete mode 100644 trunk/arch/arm/mach-s5pv210/dev-spi.c delete mode 100644 trunk/arch/arm/mach-s5pv210/setup-sdhci.c create mode 100644 trunk/arch/arm/mach-s5pv210/setup-spi.c rename trunk/arch/arm/mach-tegra/{board-dt.c => board-dt-tegra20.c} (69%) create mode 100644 trunk/arch/arm/mach-tegra/board-dt-tegra30.c create mode 100644 trunk/arch/arm/mach-tegra/board-pinmux.c create mode 100644 trunk/arch/arm/mach-tegra/board-pinmux.h rename trunk/arch/arm/mach-tegra/include/mach/{pinmux-t2.h => pinmux-tegra20.h} (96%) create mode 100644 trunk/arch/arm/mach-tegra/include/mach/pinmux-tegra30.h rename trunk/arch/arm/mach-tegra/{pinmux-t2-tables.c => pinmux-tegra20-tables.c} (95%) create mode 100644 trunk/arch/arm/mach-tegra/pinmux-tegra30-tables.c delete mode 100644 trunk/arch/arm/mach-u300/include/mach/memory.h create mode 100644 trunk/arch/arm/plat-omap/include/plat/am33xx.h create mode 100644 trunk/arch/arm/plat-omap/include/plat/omap-secure.h rename trunk/arch/arm/plat-omap/include/plat/{ti816x.h => ti81xx.h} (60%) create mode 100644 trunk/arch/arm/plat-orion/addr-map.c create mode 100644 trunk/arch/arm/plat-orion/include/plat/addr-map.h delete mode 100644 trunk/arch/arm/plat-pxa/include/plat/gpio-pxa.h delete mode 100644 trunk/arch/arm/plat-pxa/include/plat/gpio.h rename trunk/{fs/partitions/check.c => block/partition-generic.c} (79%) rename trunk/{fs => block}/partitions/Kconfig (100%) rename trunk/{fs => block}/partitions/Makefile (100%) rename trunk/{fs => block}/partitions/acorn.c (100%) rename trunk/{fs => block}/partitions/acorn.h (100%) rename trunk/{fs => block}/partitions/amiga.c (100%) rename trunk/{fs => block}/partitions/amiga.h (100%) rename trunk/{fs => block}/partitions/atari.c (100%) rename trunk/{fs => block}/partitions/atari.h (100%) create mode 100644 trunk/block/partitions/check.c rename trunk/{fs => block}/partitions/check.h (92%) rename trunk/{fs => block}/partitions/efi.c (100%) rename trunk/{fs => block}/partitions/efi.h (100%) rename trunk/{fs => block}/partitions/ibm.c (100%) rename trunk/{fs => block}/partitions/ibm.h (100%) rename trunk/{fs => block}/partitions/karma.c (100%) rename trunk/{fs => block}/partitions/karma.h (100%) rename trunk/{fs => block}/partitions/ldm.c (100%) rename trunk/{fs => block}/partitions/ldm.h (100%) rename trunk/{fs => block}/partitions/mac.c (100%) rename trunk/{fs => block}/partitions/mac.h (100%) rename trunk/{fs => block}/partitions/msdos.c (100%) rename trunk/{fs => block}/partitions/msdos.h (100%) rename trunk/{fs => block}/partitions/osf.c (100%) rename trunk/{fs => block}/partitions/osf.h (100%) rename trunk/{fs => block}/partitions/sgi.c (100%) rename trunk/{fs => block}/partitions/sgi.h (100%) rename trunk/{fs => block}/partitions/sun.c (100%) rename trunk/{fs => block}/partitions/sun.h (100%) rename trunk/{fs => block}/partitions/sysv68.c (100%) rename trunk/{fs => block}/partitions/sysv68.h (100%) rename trunk/{fs => block}/partitions/ultrix.c (100%) rename trunk/{fs => block}/partitions/ultrix.h (100%) create mode 100644 trunk/drivers/base/dma-buf.c create mode 100644 trunk/drivers/base/power/domain_governor.c delete mode 100644 trunk/drivers/base/regmap/regcache-indexed.c create mode 100644 trunk/drivers/base/regmap/regmap-irq.c create mode 100644 trunk/drivers/devfreq/exynos4_bus.c create mode 100644 trunk/drivers/mfd/da9052-core.c create mode 100644 trunk/drivers/mfd/da9052-i2c.c create mode 100644 trunk/drivers/mfd/da9052-spi.c create mode 100644 trunk/drivers/net/hyperv/Kconfig create mode 100644 trunk/drivers/net/hyperv/Makefile rename trunk/drivers/{staging/hv => net/hyperv}/hyperv_net.h (92%) rename trunk/drivers/{staging/hv => net/hyperv}/netvsc.c (91%) rename trunk/drivers/{staging/hv => net/hyperv}/netvsc_drv.c (77%) rename trunk/drivers/{staging/hv => net/hyperv}/rndis_filter.c (94%) create mode 100644 trunk/drivers/of/selftest.c create mode 100644 trunk/drivers/staging/android/Kconfig create mode 100644 trunk/drivers/staging/android/Makefile create mode 100644 trunk/drivers/staging/android/TODO create mode 100644 trunk/drivers/staging/android/android_pmem.h create mode 100644 trunk/drivers/staging/android/ashmem.c create mode 100644 trunk/drivers/staging/android/ashmem.h create mode 100644 trunk/drivers/staging/android/binder.c create mode 100644 trunk/drivers/staging/android/binder.h create mode 100644 trunk/drivers/staging/android/logger.c create mode 100644 trunk/drivers/staging/android/logger.h create mode 100644 trunk/drivers/staging/android/lowmemorykiller.c create mode 100644 trunk/drivers/staging/android/pmem.c create mode 100644 trunk/drivers/staging/android/ram_console.c create mode 100644 trunk/drivers/staging/android/ram_console.h create mode 100644 trunk/drivers/staging/android/switch/Kconfig create mode 100644 trunk/drivers/staging/android/switch/Makefile create mode 100644 trunk/drivers/staging/android/switch/switch.h create mode 100644 trunk/drivers/staging/android/switch/switch_class.c create mode 100644 trunk/drivers/staging/android/switch/switch_gpio.c create mode 100644 trunk/drivers/staging/android/timed_gpio.c create mode 100644 trunk/drivers/staging/android/timed_gpio.h create mode 100644 trunk/drivers/staging/android/timed_output.c create mode 100644 trunk/drivers/staging/android/timed_output.h delete mode 100644 trunk/drivers/staging/hv/hv_mouse.c rename trunk/drivers/staging/iio/{buffer_generic.h => buffer.h} (67%) delete mode 100644 trunk/drivers/staging/iio/chrdev.h create mode 100644 trunk/drivers/staging/iio/dac/ad5380.c create mode 100644 trunk/drivers/staging/iio/dac/ad5421.c create mode 100644 trunk/drivers/staging/iio/dac/ad5421.h create mode 100644 trunk/drivers/staging/iio/dac/ad5764.c create mode 100644 trunk/drivers/staging/iio/events.h create mode 100644 trunk/drivers/staging/iio/types.h delete mode 100644 trunk/drivers/staging/intel_sst/Kconfig delete mode 100644 trunk/drivers/staging/intel_sst/Makefile delete mode 100644 trunk/drivers/staging/intel_sst/TODO delete mode 100644 trunk/drivers/staging/intel_sst/intel_sst.c delete mode 100644 trunk/drivers/staging/intel_sst/intel_sst.h delete mode 100644 trunk/drivers/staging/intel_sst/intel_sst_app_interface.c delete mode 100644 trunk/drivers/staging/intel_sst/intel_sst_common.h delete mode 100644 trunk/drivers/staging/intel_sst/intel_sst_drv_interface.c delete mode 100644 trunk/drivers/staging/intel_sst/intel_sst_dsp.c delete mode 100644 trunk/drivers/staging/intel_sst/intel_sst_fw_ipc.h delete mode 100644 trunk/drivers/staging/intel_sst/intel_sst_ioctl.h delete mode 100644 trunk/drivers/staging/intel_sst/intel_sst_ipc.c delete mode 100644 trunk/drivers/staging/intel_sst/intel_sst_pvt.c delete mode 100644 trunk/drivers/staging/intel_sst/intel_sst_stream.c delete mode 100644 trunk/drivers/staging/intel_sst/intel_sst_stream_encoded.c delete mode 100644 trunk/drivers/staging/intel_sst/intelmid.c delete mode 100644 trunk/drivers/staging/intel_sst/intelmid.h delete mode 100644 trunk/drivers/staging/intel_sst/intelmid_adc_control.h delete mode 100644 trunk/drivers/staging/intel_sst/intelmid_ctrl.c delete mode 100644 trunk/drivers/staging/intel_sst/intelmid_msic_control.c delete mode 100644 trunk/drivers/staging/intel_sst/intelmid_pvt.c delete mode 100644 trunk/drivers/staging/intel_sst/intelmid_snd_control.h delete mode 100644 trunk/drivers/staging/intel_sst/intelmid_v0_control.c delete mode 100644 trunk/drivers/staging/intel_sst/intelmid_v1_control.c delete mode 100644 trunk/drivers/staging/intel_sst/intelmid_v2_control.c create mode 100644 trunk/drivers/staging/line6/podhd.c create mode 100644 trunk/drivers/staging/line6/podhd.h create mode 100644 trunk/drivers/staging/omapdrm/Kconfig create mode 100644 trunk/drivers/staging/omapdrm/Makefile create mode 100644 trunk/drivers/staging/omapdrm/TODO create mode 100644 trunk/drivers/staging/omapdrm/omap_connector.c create mode 100644 trunk/drivers/staging/omapdrm/omap_crtc.c create mode 100644 trunk/drivers/staging/omapdrm/omap_debugfs.c create mode 100644 trunk/drivers/staging/omapdrm/omap_dmm_priv.h create mode 100644 trunk/drivers/staging/omapdrm/omap_dmm_tiler.c create mode 100644 trunk/drivers/staging/omapdrm/omap_dmm_tiler.h create mode 100644 trunk/drivers/staging/omapdrm/omap_drm.h create mode 100644 trunk/drivers/staging/omapdrm/omap_drv.c create mode 100644 trunk/drivers/staging/omapdrm/omap_drv.h create mode 100644 trunk/drivers/staging/omapdrm/omap_encoder.c create mode 100644 trunk/drivers/staging/omapdrm/omap_fb.c create mode 100644 trunk/drivers/staging/omapdrm/omap_fbdev.c create mode 100644 trunk/drivers/staging/omapdrm/omap_gem.c create mode 100644 trunk/drivers/staging/omapdrm/omap_gem_helpers.c create mode 100644 trunk/drivers/staging/omapdrm/omap_priv.h create mode 100644 trunk/drivers/staging/omapdrm/tcm-sita.c create mode 100644 trunk/drivers/staging/omapdrm/tcm-sita.h create mode 100644 trunk/drivers/staging/omapdrm/tcm.h create mode 100644 trunk/drivers/staging/rtl8192e/rtl8192e/Kconfig create mode 100644 trunk/drivers/staging/rtl8192e/rtl8192e/Makefile rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8190P_def.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8190P_rtl8256.c (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8190P_rtl8256.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8192E_cmdpkt.c (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8192E_cmdpkt.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8192E_dev.c (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8192E_dev.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8192E_firmware.c (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8192E_firmware.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8192E_hw.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8192E_hwimg.c (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8192E_hwimg.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8192E_phy.c (99%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8192E_phy.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r8192E_phyreg.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/r819xE_phyreg.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_cam.c (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_cam.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_core.c (98%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_core.h (97%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_crypto.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_debug.c (94%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_dm.c (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_dm.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_eeprom.c (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_eeprom.h (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_ethtool.c (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_pci.c (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_pci.h (99%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_pm.c (99%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_pm.h (97%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_ps.c (100%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_ps.h (98%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_wx.c (99%) rename trunk/drivers/staging/rtl8192e/{ => rtl8192e}/rtl_wx.h (100%) delete mode 100644 trunk/drivers/staging/rtl8192e/rtl_debug.h create mode 100644 trunk/drivers/staging/rtl8192e/rtllib_debug.h delete mode 100644 trunk/drivers/staging/rtl8192u/ieee80211/api.c delete mode 100644 trunk/drivers/staging/spectra/Kconfig delete mode 100644 trunk/drivers/staging/spectra/Makefile delete mode 100644 trunk/drivers/staging/spectra/README delete mode 100644 trunk/drivers/staging/spectra/ffsdefs.h delete mode 100644 trunk/drivers/staging/spectra/ffsport.c delete mode 100644 trunk/drivers/staging/spectra/ffsport.h delete mode 100644 trunk/drivers/staging/spectra/flash.c delete mode 100644 trunk/drivers/staging/spectra/flash.h delete mode 100644 trunk/drivers/staging/spectra/lld.c delete mode 100644 trunk/drivers/staging/spectra/lld.h delete mode 100644 trunk/drivers/staging/spectra/lld_cdma.c delete mode 100644 trunk/drivers/staging/spectra/lld_cdma.h delete mode 100644 trunk/drivers/staging/spectra/lld_emu.c delete mode 100644 trunk/drivers/staging/spectra/lld_emu.h delete mode 100644 trunk/drivers/staging/spectra/lld_mtd.c delete mode 100644 trunk/drivers/staging/spectra/lld_mtd.h delete mode 100644 trunk/drivers/staging/spectra/lld_nand.c delete mode 100644 trunk/drivers/staging/spectra/lld_nand.h delete mode 100644 trunk/drivers/staging/spectra/nand_regs.h delete mode 100644 trunk/drivers/staging/spectra/spectraswconfig.h create mode 100644 trunk/drivers/staging/vme/devices/vme_pio2.h create mode 100644 trunk/drivers/staging/vme/devices/vme_pio2_cntr.c create mode 100644 trunk/drivers/staging/vme/devices/vme_pio2_core.c create mode 100644 trunk/drivers/staging/vme/devices/vme_pio2_gpio.c delete mode 100644 trunk/drivers/staging/xgifb/vb_ext.c delete mode 100644 trunk/drivers/staging/xgifb/vb_ext.h create mode 100644 trunk/drivers/tty/serial/8250_fsl.c delete mode 100644 trunk/drivers/tty/serial/s3c2410.c delete mode 100644 trunk/drivers/tty/serial/s3c2412.c delete mode 100644 trunk/drivers/tty/serial/s3c2440.c delete mode 100644 trunk/drivers/tty/serial/s3c6400.c delete mode 100644 trunk/drivers/tty/serial/s5pv210.c create mode 100644 trunk/drivers/tty/serial/sirfsoc_uart.c create mode 100644 trunk/drivers/tty/serial/sirfsoc_uart.h create mode 100644 trunk/drivers/usb/dwc3/host.c create mode 100644 trunk/drivers/usb/host/ehci-mv.c create mode 100644 trunk/drivers/usb/host/ohci-exynos.c create mode 100644 trunk/drivers/usb/otg/mv_otg.c create mode 100644 trunk/drivers/usb/otg/mv_otg.h delete mode 100644 trunk/drivers/usb/serial/ChangeLog.history create mode 100644 trunk/fs/exofs/Kconfig.ore create mode 100644 trunk/fs/mount.h create mode 100644 trunk/fs/proc_namespace.c create mode 100644 trunk/include/linux/dma-buf.h create mode 100644 trunk/include/linux/gpio-pxa.h create mode 100644 trunk/include/linux/mfd/da9052/da9052.h create mode 100644 trunk/include/linux/mfd/da9052/pdata.h create mode 100644 trunk/include/linux/mfd/da9052/reg.h create mode 100644 trunk/include/linux/platform_data/macb.h create mode 100644 trunk/include/linux/platform_data/s3c-hsudc.h create mode 100644 trunk/include/media/davinci/vpif_types.h delete mode 100644 trunk/lib/kref.c diff --git a/[refs] b/[refs] index cd2d57c113fd..fb22b05c80c8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a8c1f65c79cbbb2f7da782d4c9d15639a9b94b27 +refs/heads/master: 38e5781bbf8e82c1635ea845e0d07b2228a5ac7a diff --git a/trunk/Documentation/ABI/testing/sysfs-bus-usb b/trunk/Documentation/ABI/testing/sysfs-bus-usb index e647378e9e88..b4f548792e32 100644 --- a/trunk/Documentation/ABI/testing/sysfs-bus-usb +++ b/trunk/Documentation/ABI/testing/sysfs-bus-usb @@ -119,6 +119,31 @@ Description: Write a 1 to force the device to disconnect (equivalent to unplugging a wired USB device). +What: /sys/bus/usb/drivers/.../new_id +Date: October 2011 +Contact: linux-usb@vger.kernel.org +Description: + Writing a device ID to this file will attempt to + dynamically add a new device ID to a USB device driver. + This may allow the driver to support more hardware than + was included in the driver's static device ID support + table at compile time. The format for the device ID is: + idVendor idProduct bInterfaceClass. + The vendor ID and device ID fields are required, the + interface class is optional. + Upon successfully adding an ID, the driver will probe + for the device and attempt to bind to it. For example: + # echo "8086 10f5" > /sys/bus/usb/drivers/foo/new_id + +What: /sys/bus/usb-serial/drivers/.../new_id +Date: October 2011 +Contact: linux-usb@vger.kernel.org +Description: + For serial USB drivers, this attribute appears under the + extra bus folder "usb-serial" in sysfs; apart from that + difference, all descriptions from the entry + "/sys/bus/usb/drivers/.../new_id" apply. + What: /sys/bus/usb/drivers/.../remove_id Date: November 2009 Contact: CHENG Renquan diff --git a/trunk/Documentation/ABI/testing/sysfs-driver-hid-logitech-lg4ff b/trunk/Documentation/ABI/testing/sysfs-driver-hid-logitech-lg4ff index 9aec8ef228b0..167d9032b970 100644 --- a/trunk/Documentation/ABI/testing/sysfs-driver-hid-logitech-lg4ff +++ b/trunk/Documentation/ABI/testing/sysfs-driver-hid-logitech-lg4ff @@ -1,7 +1,7 @@ What: /sys/module/hid_logitech/drivers/hid:logitech//range. Date: July 2011 KernelVersion: 3.2 -Contact: Michal Malý +Contact: Michal MalĂ˝ Description: Display minimum, maximum and current range of the steering wheel. Writing a value within min and max boundaries sets the range of the wheel. diff --git a/trunk/Documentation/HOWTO b/trunk/Documentation/HOWTO index 81bc1a9ab9d8..f7ade3b3b40d 100644 --- a/trunk/Documentation/HOWTO +++ b/trunk/Documentation/HOWTO @@ -275,8 +275,8 @@ versions. If no 2.6.x.y kernel is available, then the highest numbered 2.6.x kernel is the current stable kernel. -2.6.x.y are maintained by the "stable" team , and are -released as needs dictate. The normal release period is approximately +2.6.x.y are maintained by the "stable" team , and +are released as needs dictate. The normal release period is approximately two weeks, but it can be longer if there are no pressing problems. A security-related problem, instead, can cause a release to happen almost instantly. diff --git a/trunk/Documentation/cgroups/cgroups.txt b/trunk/Documentation/cgroups/cgroups.txt index 9c452ef2328c..a7c96ae5557c 100644 --- a/trunk/Documentation/cgroups/cgroups.txt +++ b/trunk/Documentation/cgroups/cgroups.txt @@ -594,53 +594,44 @@ rmdir() will fail with it. From this behavior, pre_destroy() can be called multiple times against a cgroup. int can_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, - struct task_struct *task) + struct cgroup_taskset *tset) (cgroup_mutex held by caller) -Called prior to moving a task into a cgroup; if the subsystem -returns an error, this will abort the attach operation. If a NULL -task is passed, then a successful result indicates that *any* -unspecified task can be moved into the cgroup. Note that this isn't -called on a fork. If this method returns 0 (success) then this should -remain valid while the caller holds cgroup_mutex and it is ensured that either +Called prior to moving one or more tasks into a cgroup; if the +subsystem returns an error, this will abort the attach operation. +@tset contains the tasks to be attached and is guaranteed to have at +least one task in it. + +If there are multiple tasks in the taskset, then: + - it's guaranteed that all are from the same thread group + - @tset contains all tasks from the thread group whether or not + they're switching cgroups + - the first task is the leader + +Each @tset entry also contains the task's old cgroup and tasks which +aren't switching cgroup can be skipped easily using the +cgroup_taskset_for_each() iterator. Note that this isn't called on a +fork. If this method returns 0 (success) then this should remain valid +while the caller holds cgroup_mutex and it is ensured that either attach() or cancel_attach() will be called in future. -int can_attach_task(struct cgroup *cgrp, struct task_struct *tsk); -(cgroup_mutex held by caller) - -As can_attach, but for operations that must be run once per task to be -attached (possibly many when using cgroup_attach_proc). Called after -can_attach. - void cancel_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, - struct task_struct *task, bool threadgroup) + struct cgroup_taskset *tset) (cgroup_mutex held by caller) Called when a task attach operation has failed after can_attach() has succeeded. A subsystem whose can_attach() has some side-effects should provide this function, so that the subsystem can implement a rollback. If not, not necessary. This will be called only about subsystems whose can_attach() operation have -succeeded. - -void pre_attach(struct cgroup *cgrp); -(cgroup_mutex held by caller) - -For any non-per-thread attachment work that needs to happen before -attach_task. Needed by cpuset. +succeeded. The parameters are identical to can_attach(). void attach(struct cgroup_subsys *ss, struct cgroup *cgrp, - struct cgroup *old_cgrp, struct task_struct *task) + struct cgroup_taskset *tset) (cgroup_mutex held by caller) Called after the task has been attached to the cgroup, to allow any post-attachment activity that requires memory allocations or blocking. - -void attach_task(struct cgroup *cgrp, struct task_struct *tsk); -(cgroup_mutex held by caller) - -As attach, but for operations that must be run once per task to be attached, -like can_attach_task. Called before attach. Currently does not support any -subsystem that might need the old_cgrp for every thread in the group. +The parameters are identical to can_attach(). void fork(struct cgroup_subsy *ss, struct task_struct *task) diff --git a/trunk/Documentation/cpu-freq/governors.txt b/trunk/Documentation/cpu-freq/governors.txt index d221781dabaa..c7a2eb8450c2 100644 --- a/trunk/Documentation/cpu-freq/governors.txt +++ b/trunk/Documentation/cpu-freq/governors.txt @@ -127,7 +127,7 @@ in the bash (as said, 1000 is default), do: echo `$(($(cat cpuinfo_transition_latency) * 750 / 1000)) \ >ondemand/sampling_rate -show_sampling_rate_min: +sampling_rate_min: The sampling rate is limited by the HW transition latency: transition_latency * 100 Or by kernel restrictions: @@ -140,8 +140,6 @@ HZ=100: min=200000us (200ms) The highest value of kernel and HW latency restrictions is shown and used as the minimum sampling rate. -show_sampling_rate_max: THIS INTERFACE IS DEPRECATED, DON'T USE IT. - up_threshold: defines what the average CPU usage between the samplings of 'sampling_rate' needs to be for the kernel to make a decision on whether it should increase the frequency. For example when it is set diff --git a/trunk/Documentation/development-process/5.Posting b/trunk/Documentation/development-process/5.Posting index 903a2546f138..8a48c9b62864 100644 --- a/trunk/Documentation/development-process/5.Posting +++ b/trunk/Documentation/development-process/5.Posting @@ -271,10 +271,10 @@ copies should go to: the linux-kernel list. - If you are fixing a bug, think about whether the fix should go into the - next stable update. If so, stable@kernel.org should get a copy of the - patch. Also add a "Cc: stable@kernel.org" to the tags within the patch - itself; that will cause the stable team to get a notification when your - fix goes into the mainline. + next stable update. If so, stable@vger.kernel.org should get a copy of + the patch. Also add a "Cc: stable@vger.kernel.org" to the tags within + the patch itself; that will cause the stable team to get a notification + when your fix goes into the mainline. When selecting recipients for a patch, it is good to have an idea of who you think will eventually accept the patch and get it merged. While it diff --git a/trunk/Documentation/devices.txt b/trunk/Documentation/devices.txt index eccffe715229..cec8864ce4e8 100644 --- a/trunk/Documentation/devices.txt +++ b/trunk/Documentation/devices.txt @@ -379,7 +379,7 @@ Your cooperation is appreciated. 162 = /dev/smbus System Management Bus 163 = /dev/lik Logitech Internet Keyboard 164 = /dev/ipmo Intel Intelligent Platform Management - 165 = /dev/vmmon VMWare virtual machine monitor + 165 = /dev/vmmon VMware virtual machine monitor 166 = /dev/i2o/ctl I2O configuration manager 167 = /dev/specialix_sxctl Specialix serial control 168 = /dev/tcldrv Technology Concepts serial control diff --git a/trunk/Documentation/devicetree/bindings/arm/fsl.txt b/trunk/Documentation/devicetree/bindings/arm/fsl.txt index c9848ad0e2e3..54bdddadf1cf 100644 --- a/trunk/Documentation/devicetree/bindings/arm/fsl.txt +++ b/trunk/Documentation/devicetree/bindings/arm/fsl.txt @@ -21,6 +21,10 @@ i.MX53 Smart Mobile Reference Design Board Required root node properties: - compatible = "fsl,imx53-smd", "fsl,imx53"; -i.MX6 Quad SABRE Automotive Board +i.MX6 Quad Armadillo2 Board Required root node properties: - - compatible = "fsl,imx6q-sabreauto", "fsl,imx6q"; + - compatible = "fsl,imx6q-arm2", "fsl,imx6q"; + +i.MX6 Quad SABRE Lite Board +Required root node properties: + - compatible = "fsl,imx6q-sabrelite", "fsl,imx6q"; diff --git a/trunk/Documentation/devicetree/bindings/arm/insignal-boards.txt b/trunk/Documentation/devicetree/bindings/arm/insignal-boards.txt new file mode 100644 index 000000000000..524c3dc5d808 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/insignal-boards.txt @@ -0,0 +1,8 @@ +* Insignal's Exynos4210 based Origen evaluation board + +Origen low-cost evaluation board is based on Samsung's Exynos4210 SoC. + +Required root node properties: + - compatible = should be one or more of the following. + (a) "samsung,smdkv310" - for Samsung's SMDKV310 eval board. + (b) "samsung,exynos4210" - for boards based on Exynos4210 SoC. diff --git a/trunk/Documentation/devicetree/bindings/arm/samsung-boards.txt b/trunk/Documentation/devicetree/bindings/arm/samsung-boards.txt new file mode 100644 index 000000000000..0bf68be56fd1 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/samsung-boards.txt @@ -0,0 +1,8 @@ +* Samsung's Exynos4210 based SMDKV310 evaluation board + +SMDKV310 evaluation board is based on Samsung's Exynos4210 SoC. + +Required root node properties: + - compatible = should be one or more of the following. + (a) "samsung,smdkv310" - for Samsung's SMDKV310 eval board. + (b) "samsung,exynos4210" - for boards based on Exynos4210 SoC. diff --git a/trunk/Documentation/devicetree/bindings/arm/tegra.txt b/trunk/Documentation/devicetree/bindings/arm/tegra.txt new file mode 100644 index 000000000000..6e69d2e5e766 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/arm/tegra.txt @@ -0,0 +1,14 @@ +NVIDIA Tegra device tree bindings +------------------------------------------- + +Boards with the tegra20 SoC shall have the following properties: + +Required root node property: + +compatible = "nvidia,tegra20"; + +Boards with the tegra30 SoC shall have the following properties: + +Required root node property: + +compatible = "nvidia,tegra30"; diff --git a/trunk/Documentation/devicetree/bindings/dma/arm-pl330.txt b/trunk/Documentation/devicetree/bindings/dma/arm-pl330.txt new file mode 100644 index 000000000000..a4cd273b2a67 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/dma/arm-pl330.txt @@ -0,0 +1,30 @@ +* ARM PrimeCell PL330 DMA Controller + +The ARM PrimeCell PL330 DMA controller can move blocks of memory contents +between memory and peripherals or memory to memory. + +Required properties: + - compatible: should include both "arm,pl330" and "arm,primecell". + - reg: physical base address of the controller and length of memory mapped + region. + - interrupts: interrupt number to the cpu. + +Example: + + pdma0: pdma@12680000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0x12680000 0x1000>; + interrupts = <99>; + }; + +Client drivers (device nodes requiring dma transfers from dev-to-mem or +mem-to-dev) should specify the DMA channel numbers using a two-value pair +as shown below. + + [property name] = <[phandle of the dma controller] [dma request id]>; + + where 'dma request id' is the dma request number which is connected + to the client controller. The 'property name' is recommended to be + of the form -dma-channel. + + Example: tx-dma-channel = <&pdma0 12>; diff --git a/trunk/Documentation/devicetree/bindings/gpio/gpio-samsung.txt b/trunk/Documentation/devicetree/bindings/gpio/gpio-samsung.txt new file mode 100644 index 000000000000..8f50fe5e6c42 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/gpio/gpio-samsung.txt @@ -0,0 +1,40 @@ +Samsung Exynos4 GPIO Controller + +Required properties: +- compatible: Compatible property value should be "samsung,exynos4-gpio>". + +- reg: Physical base address of the controller and length of memory mapped + region. + +- #gpio-cells: Should be 4. The syntax of the gpio specifier used by client nodes + should be the following with values derived from the SoC user manual. + <[phandle of the gpio controller node] + [pin number within the gpio controller] + [mux function] + [pull up/down] + [drive strength]> + + Values for gpio specifier: + - Pin number: is a value between 0 to 7. + - Pull Up/Down: 0 - Pull Up/Down Disabled. + 1 - Pull Down Enabled. + 3 - Pull Up Enabled. + - Drive Strength: 0 - 1x, + 1 - 3x, + 2 - 2x, + 3 - 4x + +- gpio-controller: Specifies that the node is a gpio controller. +- #address-cells: should be 1. +- #size-cells: should be 1. + +Example: + + gpa0: gpio-controller@11400000 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "samsung,exynos4-gpio"; + reg = <0x11400000 0x20>; + #gpio-cells = <4>; + gpio-controller; + }; diff --git a/trunk/Documentation/devicetree/bindings/i2c/i2c-designware.txt b/trunk/Documentation/devicetree/bindings/i2c/i2c-designware.txt new file mode 100644 index 000000000000..e42a2ee233e6 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/i2c/i2c-designware.txt @@ -0,0 +1,22 @@ +* Synopsys DesignWare I2C + +Required properties : + + - compatible : should be "snps,designware-i2c" + - reg : Offset and length of the register set for the device + - interrupts : where IRQ is the interrupt number. + +Recommended properties : + + - clock-frequency : desired I2C bus clock frequency in Hz. + +Example : + + i2c@f0000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,designware-i2c"; + reg = <0xf0000 0x1000>; + interrupts = <11>; + clock-frequency = <400000>; + }; diff --git a/trunk/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/trunk/Documentation/devicetree/bindings/i2c/trivial-devices.txt new file mode 100644 index 000000000000..1a85f986961b --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/i2c/trivial-devices.txt @@ -0,0 +1,58 @@ +This is a list of trivial i2c devices that have simple device tree +bindings, consisting only of a compatible field, an address and +possibly an interrupt line. + +If a device needs more specific bindings, such as properties to +describe some aspect of it, there needs to be a specific binding +document for it just like any other devices. + + +Compatible Vendor / Chip +========== ============= +ad,ad7414 SMBus/I2C Digital Temperature Sensor in 6-Pin SOT with SMBus Alert and Over Temperature Pin +ad,adm9240 ADM9240: Complete System Hardware Monitor for uProcessor-Based Systems +adi,adt7461 +/-1C TDM Extended Temp Range I.C +adt7461 +/-1C TDM Extended Temp Range I.C +at,24c08 i2c serial eeprom (24cxx) +atmel,24c02 i2c serial eeprom (24cxx) +catalyst,24c32 i2c serial eeprom +dallas,ds1307 64 x 8, Serial, I2C Real-Time Clock +dallas,ds1338 I2C RTC with 56-Byte NV RAM +dallas,ds1339 I2C Serial Real-Time Clock +dallas,ds1340 I2C RTC with Trickle Charger +dallas,ds1374 I2C, 32-Bit Binary Counter Watchdog RTC with Trickle Charger and Reset Input/Output +dallas,ds1631 High-Precision Digital Thermometer +dallas,ds1682 Total-Elapsed-Time Recorder with Alarm +dallas,ds1775 Tiny Digital Thermometer and Thermostat +dallas,ds3232 Extremely Accurate I²C RTC with Integrated Crystal and SRAM +dallas,ds4510 CPU Supervisor with Nonvolatile Memory and Programmable I/O +dallas,ds75 Digital Thermometer and Thermostat +dialog,da9053 DA9053: flexible system level PMIC with multicore support +epson,rx8025 High-Stability. I2C-Bus INTERFACE REAL TIME CLOCK MODULE +epson,rx8581 I2C-BUS INTERFACE REAL TIME CLOCK MODULE +fsl,mag3110 MAG3110: Xtrinsic High Accuracy, 3D Magnetometer +fsl,mc13892 MC13892: Power Management Integrated Circuit (PMIC) for i.MX35/51 +fsl,mma8450 MMA8450Q: Xtrinsic Low-power, 3-axis Xtrinsic Accelerometer +fsl,mpr121 MPR121: Proximity Capacitive Touch Sensor Controller +fsl,sgtl5000 SGTL5000: Ultra Low-Power Audio Codec +maxim,ds1050 5 Bit Programmable, Pulse-Width Modulator +maxim,max1237 Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs +maxim,max6625 9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface +mc,rv3029c2 Real Time Clock Module with I2C-Bus +national,lm75 I2C TEMP SENSOR +national,lm80 Serial Interface ACPI-Compatible Microprocessor System Hardware Monitor +national,lm92 Âą0.33°C Accurate, 12-Bit + Sign Temperature Sensor and Thermal Window Comparator with Two-Wire Interface +nxp,pca9556 Octal SMBus and I2C registered interface +nxp,pca9557 8-bit I2C-bus and SMBus I/O port with reset +nxp,pcf8563 Real-time clock/calendar +ovti,ov5642 OV5642: Color CMOS QSXGA (5-megapixel) Image Sensor with OmniBSI and Embedded TrueFocus +pericom,pt7c4338 Real-time Clock Module +plx,pex8648 48-Lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch +ramtron,24c64 i2c serial eeprom (24cxx) +ricoh,rs5c372a I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC +samsung,24ad0xd1 S524AD0XF1 (128K/256K-bit Serial EEPROM for Low Power) +st-micro,24c256 i2c serial eeprom (24cxx) +stm,m41t00 Serial Access TIMEKEEPER +stm,m41t62 Serial real-time clock (RTC) with alarm +stm,m41t80 M41T80 - SERIAL ACCESS RTC WITH ALARMS +ti,tsc2003 I2C Touch-Screen Controller diff --git a/trunk/Documentation/devicetree/bindings/input/samsung-keypad.txt b/trunk/Documentation/devicetree/bindings/input/samsung-keypad.txt new file mode 100644 index 000000000000..ce3e394c0e64 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/input/samsung-keypad.txt @@ -0,0 +1,88 @@ +* Samsung's Keypad Controller device tree bindings + +Samsung's Keypad controller is used to interface a SoC with a matrix-type +keypad device. The keypad controller supports multiple row and column lines. +A key can be placed at each intersection of a unique row and a unique column. +The keypad controller can sense a key-press and key-release and report the +event using a interrupt to the cpu. + +Required SoC Specific Properties: +- compatible: should be one of the following + - "samsung,s3c6410-keypad": For controllers compatible with s3c6410 keypad + controller. + - "samsung,s5pv210-keypad": For controllers compatible with s5pv210 keypad + controller. + +- reg: physical base address of the controller and length of memory mapped + region. + +- interrupts: The interrupt number to the cpu. + +Required Board Specific Properties: +- samsung,keypad-num-rows: Number of row lines connected to the keypad + controller. + +- samsung,keypad-num-columns: Number of column lines connected to the + keypad controller. + +- row-gpios: List of gpios used as row lines. The gpio specifier for + this property depends on the gpio controller to which these row lines + are connected. + +- col-gpios: List of gpios used as column lines. The gpio specifier for + this property depends on the gpio controller to which these column + lines are connected. + +- Keys represented as child nodes: Each key connected to the keypad + controller is represented as a child node to the keypad controller + device node and should include the following properties. + - keypad,row: the row number to which the key is connected. + - keypad,column: the column number to which the key is connected. + - linux,code: the key-code to be reported when the key is pressed + and released. + +Optional Properties specific to linux: +- linux,keypad-no-autorepeat: do no enable autorepeat feature. +- linux,keypad-wakeup: use any event on keypad as wakeup event. + + +Example: + keypad@100A0000 { + compatible = "samsung,s5pv210-keypad"; + reg = <0x100A0000 0x100>; + interrupts = <173>; + samsung,keypad-num-rows = <2>; + samsung,keypad-num-columns = <8>; + linux,input-no-autorepeat; + linux,input-wakeup; + + row-gpios = <&gpx2 0 3 3 0 + &gpx2 1 3 3 0>; + + col-gpios = <&gpx1 0 3 0 0 + &gpx1 1 3 0 0 + &gpx1 2 3 0 0 + &gpx1 3 3 0 0 + &gpx1 4 3 0 0 + &gpx1 5 3 0 0 + &gpx1 6 3 0 0 + &gpx1 7 3 0 0>; + + key_1 { + keypad,row = <0>; + keypad,column = <3>; + linux,code = <2>; + }; + + key_2 { + keypad,row = <0>; + keypad,column = <4>; + linux,code = <3>; + }; + + key_3 { + keypad,row = <0>; + keypad,column = <5>; + linux,code = <4>; + }; + }; diff --git a/trunk/Documentation/devicetree/bindings/net/macb.txt b/trunk/Documentation/devicetree/bindings/net/macb.txt new file mode 100644 index 000000000000..44afa0e5057d --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/net/macb.txt @@ -0,0 +1,25 @@ +* Cadence MACB/GEM Ethernet controller + +Required properties: +- compatible: Should be "cdns,[-]{macb|gem}" + Use "cdns,at91sam9260-macb" Atmel at91sam9260 and at91sam9263 SoCs. + Use "cdns,at32ap7000-macb" for other 10/100 usage or use the generic form: "cdns,macb". + Use "cnds,pc302-gem" for Picochip picoXcell pc302 and later devices based on + the Cadence GEM, or the generic form: "cdns,gem". +- reg: Address and length of the register set for the device +- interrupts: Should contain macb interrupt +- phy-mode: String, operation mode of the PHY interface. + Supported values are: "mii", "rmii", "gmii", "rgmii". + +Optional properties: +- local-mac-address: 6 bytes, mac address + +Examples: + + macb0: ethernet@fffc4000 { + compatible = "cdns,at32ap7000-macb"; + reg = <0xfffc4000 0x4000>; + interrupts = <21>; + phy-mode = "rmii"; + local-mac-address = [3a 0e 03 04 05 06]; + }; diff --git a/trunk/Documentation/devicetree/bindings/nvec/nvec_nvidia.txt b/trunk/Documentation/devicetree/bindings/nvec/nvec_nvidia.txt new file mode 100644 index 000000000000..5aeee53ff9f4 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/nvec/nvec_nvidia.txt @@ -0,0 +1,9 @@ +NVIDIA compliant embedded controller + +Required properties: +- compatible : should be "nvidia,nvec". +- reg : the iomem of the i2c slave controller +- interrupts : the interrupt line of the i2c slave controller +- clock-frequency : the frequency of the i2c bus +- gpios : the gpio used for ec request +- slave-addr: the i2c address of the slave controller diff --git a/trunk/Documentation/devicetree/bindings/rtc/s3c-rtc.txt b/trunk/Documentation/devicetree/bindings/rtc/s3c-rtc.txt new file mode 100644 index 000000000000..90ec45fd33ec --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/rtc/s3c-rtc.txt @@ -0,0 +1,20 @@ +* Samsung's S3C Real Time Clock controller + +Required properties: +- compatible: should be one of the following. + * "samsung,s3c2410-rtc" - for controllers compatible with s3c2410 rtc. + * "samsung,s3c6410-rtc" - for controllers compatible with s3c6410 rtc. +- reg: physical base address of the controller and length of memory mapped + region. +- interrupts: Two interrupt numbers to the cpu should be specified. First + interrupt number is the rtc alarm interupt and second interrupt number + is the rtc tick interrupt. The number of cells representing a interrupt + depends on the parent interrupt controller. + +Example: + + rtc@10070000 { + compatible = "samsung,s3c6410-rtc"; + reg = <0x10070000 0x100>; + interrupts = <44 0 45 0>; + }; diff --git a/trunk/Documentation/devicetree/bindings/serial/omap_serial.txt b/trunk/Documentation/devicetree/bindings/serial/omap_serial.txt new file mode 100644 index 000000000000..342eedd10050 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/serial/omap_serial.txt @@ -0,0 +1,10 @@ +OMAP UART controller + +Required properties: +- compatible : should be "ti,omap2-uart" for OMAP2 controllers +- compatible : should be "ti,omap3-uart" for OMAP3 controllers +- compatible : should be "ti,omap4-uart" for OMAP4 controllers +- ti,hwmods : Must be "uart", n being the instance number (1-based) + +Optional properties: +- clock-frequency : frequency of the clock input to the UART diff --git a/trunk/Documentation/devicetree/bindings/serial/samsung_uart.txt b/trunk/Documentation/devicetree/bindings/serial/samsung_uart.txt new file mode 100644 index 000000000000..2c8a17cf5cb5 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/serial/samsung_uart.txt @@ -0,0 +1,14 @@ +* Samsung's UART Controller + +The Samsung's UART controller is used for interfacing SoC with serial communicaion +devices. + +Required properties: +- compatible: should be + - "samsung,exynos4210-uart", for UART's compatible with Exynos4210 uart ports. + +- reg: base physical address of the controller and length of memory mapped + region. + +- interrupts: interrupt number to the cpu. The interrupt specifier format depends + on the interrupt controller parent. diff --git a/trunk/Documentation/devicetree/bindings/usb/tegra-usb.txt b/trunk/Documentation/devicetree/bindings/usb/tegra-usb.txt new file mode 100644 index 000000000000..035d63d5646d --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/usb/tegra-usb.txt @@ -0,0 +1,13 @@ +Tegra SOC USB controllers + +The device node for a USB controller that is part of a Tegra +SOC is as described in the document "Open Firmware Recommended +Practice : Universal Serial Bus" with the following modifications +and additions : + +Required properties : + - compatible : Should be "nvidia,tegra20-ehci" for USB controllers + used in host mode. + - phy_type : Should be one of "ulpi" or "utmi". + - nvidia,vbus-gpio : If present, specifies a gpio that needs to be + activated for the bus to be powered. diff --git a/trunk/Documentation/devicetree/bindings/vendor-prefixes.txt b/trunk/Documentation/devicetree/bindings/vendor-prefixes.txt index 874921e97802..18626965159e 100644 --- a/trunk/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/trunk/Documentation/devicetree/bindings/vendor-prefixes.txt @@ -8,7 +8,9 @@ amcc Applied Micro Circuits Corporation (APM, formally AMCC) apm Applied Micro Circuits Corporation (APM) arm ARM Ltd. atmel Atmel Corporation +cavium Cavium, Inc. chrp Common Hardware Reference Platform +cortina Cortina Systems, Inc. dallas Maxim Integrated Products (formerly Dallas Semiconductor) denx Denx Software Engineering epson Seiko Epson Corp. @@ -36,6 +38,7 @@ schindler Schindler sil Silicon Image simtek sirf SiRF Technology, Inc. +st STMicroelectronics stericsson ST-Ericsson ti Texas Instruments xlnx Xilinx diff --git a/trunk/Documentation/dma-buf-sharing.txt b/trunk/Documentation/dma-buf-sharing.txt new file mode 100644 index 000000000000..510eab32f392 --- /dev/null +++ b/trunk/Documentation/dma-buf-sharing.txt @@ -0,0 +1,224 @@ + DMA Buffer Sharing API Guide + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Sumit Semwal + + + +This document serves as a guide to device-driver writers on what is the dma-buf +buffer sharing API, how to use it for exporting and using shared buffers. + +Any device driver which wishes to be a part of DMA buffer sharing, can do so as +either the 'exporter' of buffers, or the 'user' of buffers. + +Say a driver A wants to use buffers created by driver B, then we call B as the +exporter, and A as buffer-user. + +The exporter +- implements and manages operations[1] for the buffer +- allows other users to share the buffer by using dma_buf sharing APIs, +- manages the details of buffer allocation, +- decides about the actual backing storage where this allocation happens, +- takes care of any migration of scatterlist - for all (shared) users of this + buffer, + +The buffer-user +- is one of (many) sharing users of the buffer. +- doesn't need to worry about how the buffer is allocated, or where. +- needs a mechanism to get access to the scatterlist that makes up this buffer + in memory, mapped into its own address space, so it can access the same area + of memory. + +*IMPORTANT*: [see https://lkml.org/lkml/2011/12/20/211 for more details] +For this first version, A buffer shared using the dma_buf sharing API: +- *may* be exported to user space using "mmap" *ONLY* by exporter, outside of + this framework. +- may be used *ONLY* by importers that do not need CPU access to the buffer. + +The dma_buf buffer sharing API usage contains the following steps: + +1. Exporter announces that it wishes to export a buffer +2. Userspace gets the file descriptor associated with the exported buffer, and + passes it around to potential buffer-users based on use case +3. Each buffer-user 'connects' itself to the buffer +4. When needed, buffer-user requests access to the buffer from exporter +5. When finished with its use, the buffer-user notifies end-of-DMA to exporter +6. when buffer-user is done using this buffer completely, it 'disconnects' + itself from the buffer. + + +1. Exporter's announcement of buffer export + + The buffer exporter announces its wish to export a buffer. In this, it + connects its own private buffer data, provides implementation for operations + that can be performed on the exported dma_buf, and flags for the file + associated with this buffer. + + Interface: + struct dma_buf *dma_buf_export(void *priv, struct dma_buf_ops *ops, + size_t size, int flags) + + If this succeeds, dma_buf_export allocates a dma_buf structure, and returns a + pointer to the same. It also associates an anonymous file with this buffer, + so it can be exported. On failure to allocate the dma_buf object, it returns + NULL. + +2. Userspace gets a handle to pass around to potential buffer-users + + Userspace entity requests for a file-descriptor (fd) which is a handle to the + anonymous file associated with the buffer. It can then share the fd with other + drivers and/or processes. + + Interface: + int dma_buf_fd(struct dma_buf *dmabuf) + + This API installs an fd for the anonymous file associated with this buffer; + returns either 'fd', or error. + +3. Each buffer-user 'connects' itself to the buffer + + Each buffer-user now gets a reference to the buffer, using the fd passed to + it. + + Interface: + struct dma_buf *dma_buf_get(int fd) + + This API will return a reference to the dma_buf, and increment refcount for + it. + + After this, the buffer-user needs to attach its device with the buffer, which + helps the exporter to know of device buffer constraints. + + Interface: + struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf, + struct device *dev) + + This API returns reference to an attachment structure, which is then used + for scatterlist operations. It will optionally call the 'attach' dma_buf + operation, if provided by the exporter. + + The dma-buf sharing framework does the bookkeeping bits related to managing + the list of all attachments to a buffer. + +Until this stage, the buffer-exporter has the option to choose not to actually +allocate the backing storage for this buffer, but wait for the first buffer-user +to request use of buffer for allocation. + + +4. When needed, buffer-user requests access to the buffer + + Whenever a buffer-user wants to use the buffer for any DMA, it asks for + access to the buffer using dma_buf_map_attachment API. At least one attach to + the buffer must have happened before map_dma_buf can be called. + + Interface: + struct sg_table * dma_buf_map_attachment(struct dma_buf_attachment *, + enum dma_data_direction); + + This is a wrapper to dma_buf->ops->map_dma_buf operation, which hides the + "dma_buf->ops->" indirection from the users of this interface. + + In struct dma_buf_ops, map_dma_buf is defined as + struct sg_table * (*map_dma_buf)(struct dma_buf_attachment *, + enum dma_data_direction); + + It is one of the buffer operations that must be implemented by the exporter. + It should return the sg_table containing scatterlist for this buffer, mapped + into caller's address space. + + If this is being called for the first time, the exporter can now choose to + scan through the list of attachments for this buffer, collate the requirements + of the attached devices, and choose an appropriate backing storage for the + buffer. + + Based on enum dma_data_direction, it might be possible to have multiple users + accessing at the same time (for reading, maybe), or any other kind of sharing + that the exporter might wish to make available to buffer-users. + + map_dma_buf() operation can return -EINTR if it is interrupted by a signal. + + +5. When finished, the buffer-user notifies end-of-DMA to exporter + + Once the DMA for the current buffer-user is over, it signals 'end-of-DMA' to + the exporter using the dma_buf_unmap_attachment API. + + Interface: + void dma_buf_unmap_attachment(struct dma_buf_attachment *, + struct sg_table *); + + This is a wrapper to dma_buf->ops->unmap_dma_buf() operation, which hides the + "dma_buf->ops->" indirection from the users of this interface. + + In struct dma_buf_ops, unmap_dma_buf is defined as + void (*unmap_dma_buf)(struct dma_buf_attachment *, struct sg_table *); + + unmap_dma_buf signifies the end-of-DMA for the attachment provided. Like + map_dma_buf, this API also must be implemented by the exporter. + + +6. when buffer-user is done using this buffer, it 'disconnects' itself from the + buffer. + + After the buffer-user has no more interest in using this buffer, it should + disconnect itself from the buffer: + + - it first detaches itself from the buffer. + + Interface: + void dma_buf_detach(struct dma_buf *dmabuf, + struct dma_buf_attachment *dmabuf_attach); + + This API removes the attachment from the list in dmabuf, and optionally calls + dma_buf->ops->detach(), if provided by exporter, for any housekeeping bits. + + - Then, the buffer-user returns the buffer reference to exporter. + + Interface: + void dma_buf_put(struct dma_buf *dmabuf); + + This API then reduces the refcount for this buffer. + + If, as a result of this call, the refcount becomes 0, the 'release' file + operation related to this fd is called. It calls the dmabuf->ops->release() + operation in turn, and frees the memory allocated for dmabuf when exported. + +NOTES: +- Importance of attach-detach and {map,unmap}_dma_buf operation pairs + The attach-detach calls allow the exporter to figure out backing-storage + constraints for the currently-interested devices. This allows preferential + allocation, and/or migration of pages across different types of storage + available, if possible. + + Bracketing of DMA access with {map,unmap}_dma_buf operations is essential + to allow just-in-time backing of storage, and migration mid-way through a + use-case. + +- Migration of backing storage if needed + If after + - at least one map_dma_buf has happened, + - and the backing storage has been allocated for this buffer, + another new buffer-user intends to attach itself to this buffer, it might + be allowed, if possible for the exporter. + + In case it is allowed by the exporter: + if the new buffer-user has stricter 'backing-storage constraints', and the + exporter can handle these constraints, the exporter can just stall on the + map_dma_buf until all outstanding access is completed (as signalled by + unmap_dma_buf). + Once all users have finished accessing and have unmapped this buffer, the + exporter could potentially move the buffer to the stricter backing-storage, + and then allow further {map,unmap}_dma_buf operations from any buffer-user + from the migrated backing-storage. + + If the exporter cannot fulfil the backing-storage constraints of the new + buffer-user device as requested, dma_buf_attach() would return an error to + denote non-compatibility of the new buffer-sharing request with the current + buffer. + + If the exporter chooses not to allow an attach() operation once a + map_dma_buf() API has been called, it simply returns an error. + +References: +[1] struct dma_buf_ops in include/linux/dma-buf.h +[2] All interfaces mentioned above defined in include/linux/dma-buf.h diff --git a/trunk/Documentation/dontdiff b/trunk/Documentation/dontdiff index dfa6fc6e4b28..0c083c5c2faa 100644 --- a/trunk/Documentation/dontdiff +++ b/trunk/Documentation/dontdiff @@ -66,7 +66,6 @@ GRTAGS GSYMS GTAGS Image -Kerntypes Module.markers Module.symvers PENDING diff --git a/trunk/Documentation/driver-model/devres.txt b/trunk/Documentation/driver-model/devres.txt index d79aead9418b..10c64c8a13d4 100644 --- a/trunk/Documentation/driver-model/devres.txt +++ b/trunk/Documentation/driver-model/devres.txt @@ -262,6 +262,7 @@ IOMAP devm_ioremap() devm_ioremap_nocache() devm_iounmap() + devm_request_and_ioremap() : checks resource, requests region, ioremaps pcim_iomap() pcim_iounmap() pcim_iomap_table() : array of mapped addresses indexed by BAR diff --git a/trunk/Documentation/feature-removal-schedule.txt b/trunk/Documentation/feature-removal-schedule.txt index 33f7327d0451..284b44259750 100644 --- a/trunk/Documentation/feature-removal-schedule.txt +++ b/trunk/Documentation/feature-removal-schedule.txt @@ -85,17 +85,6 @@ Who: Robin Getz & Matt Mackall --------------------------- -What: Deprecated snapshot ioctls -When: 2.6.36 - -Why: The ioctls in kernel/power/user.c were marked as deprecated long time - ago. Now they notify users about that so that they need to replace - their userspace. After some more time, remove them completely. - -Who: Jiri Slaby - ---------------------------- - What: The ieee80211_regdom module parameter When: March 2010 / desktop catchup @@ -534,6 +523,20 @@ Why: In 3.0, we can now autodetect internal 3G device and already have information log when acer-wmi initial. Who: Lee, Chun-Yi +--------------------------- + +What: /sys/devices/platform/_UDC_/udc/_UDC_/is_dualspeed file and + is_dualspeed line in /sys/devices/platform/ci13xxx_*/udc/device file. +When: 3.8 +Why: The is_dualspeed file is superseded by maximum_speed in the same + directory and is_dualspeed line in device file is superseded by + max_speed line in the same file. + + The maximum_speed/max_speed specifies maximum speed supported by UDC. + To check if dualspeeed is supported, check if the value is >= 3. + Various possible speeds are defined in . +Who: Michal Nazarewicz + ---------------------------- What: The XFS nodelaylog mount option diff --git a/trunk/Documentation/filesystems/Locking b/trunk/Documentation/filesystems/Locking index d819ba16a0c7..4fca82e5276e 100644 --- a/trunk/Documentation/filesystems/Locking +++ b/trunk/Documentation/filesystems/Locking @@ -37,15 +37,15 @@ d_manage: no no yes (ref-walk) maybe --------------------------- inode_operations --------------------------- prototypes: - int (*create) (struct inode *,struct dentry *,int, struct nameidata *); + int (*create) (struct inode *,struct dentry *,umode_t, struct nameidata *); struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameid ata *); int (*link) (struct dentry *,struct inode *,struct dentry *); int (*unlink) (struct inode *,struct dentry *); int (*symlink) (struct inode *,struct dentry *,const char *); - int (*mkdir) (struct inode *,struct dentry *,int); + int (*mkdir) (struct inode *,struct dentry *,umode_t); int (*rmdir) (struct inode *,struct dentry *); - int (*mknod) (struct inode *,struct dentry *,int,dev_t); + int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t); int (*rename) (struct inode *, struct dentry *, struct inode *, struct dentry *); int (*readlink) (struct dentry *, char __user *,int); @@ -117,7 +117,7 @@ prototypes: int (*statfs) (struct dentry *, struct kstatfs *); int (*remount_fs) (struct super_block *, int *, char *); void (*umount_begin) (struct super_block *); - int (*show_options)(struct seq_file *, struct vfsmount *); + int (*show_options)(struct seq_file *, struct dentry *); ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t); ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t); diff --git a/trunk/Documentation/filesystems/configfs/configfs.txt b/trunk/Documentation/filesystems/configfs/configfs.txt index dd57bb6bb390..b40fec9d3f53 100644 --- a/trunk/Documentation/filesystems/configfs/configfs.txt +++ b/trunk/Documentation/filesystems/configfs/configfs.txt @@ -192,7 +192,7 @@ attribute value uses the store_attribute() method. struct configfs_attribute { char *ca_name; struct module *ca_owner; - mode_t ca_mode; + umode_t ca_mode; }; When a config_item wants an attribute to appear as a file in the item's diff --git a/trunk/Documentation/filesystems/debugfs.txt b/trunk/Documentation/filesystems/debugfs.txt index 742cc06e138f..6872c91bce35 100644 --- a/trunk/Documentation/filesystems/debugfs.txt +++ b/trunk/Documentation/filesystems/debugfs.txt @@ -35,7 +35,7 @@ described below will work. The most general way to create a file within a debugfs directory is with: - struct dentry *debugfs_create_file(const char *name, mode_t mode, + struct dentry *debugfs_create_file(const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops); @@ -53,13 +53,13 @@ actually necessary; the debugfs code provides a number of helper functions for simple situations. Files containing a single integer value can be created with any of: - struct dentry *debugfs_create_u8(const char *name, mode_t mode, + struct dentry *debugfs_create_u8(const char *name, umode_t mode, struct dentry *parent, u8 *value); - struct dentry *debugfs_create_u16(const char *name, mode_t mode, + struct dentry *debugfs_create_u16(const char *name, umode_t mode, struct dentry *parent, u16 *value); - struct dentry *debugfs_create_u32(const char *name, mode_t mode, + struct dentry *debugfs_create_u32(const char *name, umode_t mode, struct dentry *parent, u32 *value); - struct dentry *debugfs_create_u64(const char *name, mode_t mode, + struct dentry *debugfs_create_u64(const char *name, umode_t mode, struct dentry *parent, u64 *value); These files support both reading and writing the given value; if a specific @@ -67,13 +67,13 @@ file should not be written to, simply set the mode bits accordingly. The values in these files are in decimal; if hexadecimal is more appropriate, the following functions can be used instead: - struct dentry *debugfs_create_x8(const char *name, mode_t mode, + struct dentry *debugfs_create_x8(const char *name, umode_t mode, struct dentry *parent, u8 *value); - struct dentry *debugfs_create_x16(const char *name, mode_t mode, + struct dentry *debugfs_create_x16(const char *name, umode_t mode, struct dentry *parent, u16 *value); - struct dentry *debugfs_create_x32(const char *name, mode_t mode, + struct dentry *debugfs_create_x32(const char *name, umode_t mode, struct dentry *parent, u32 *value); - struct dentry *debugfs_create_x64(const char *name, mode_t mode, + struct dentry *debugfs_create_x64(const char *name, umode_t mode, struct dentry *parent, u64 *value); These functions are useful as long as the developer knows the size of the @@ -81,7 +81,7 @@ value to be exported. Some types can have different widths on different architectures, though, complicating the situation somewhat. There is a function meant to help out in one special case: - struct dentry *debugfs_create_size_t(const char *name, mode_t mode, + struct dentry *debugfs_create_size_t(const char *name, umode_t mode, struct dentry *parent, size_t *value); @@ -90,21 +90,22 @@ a variable of type size_t. Boolean values can be placed in debugfs with: - struct dentry *debugfs_create_bool(const char *name, mode_t mode, + struct dentry *debugfs_create_bool(const char *name, umode_t mode, struct dentry *parent, u32 *value); A read on the resulting file will yield either Y (for non-zero values) or N, followed by a newline. If written to, it will accept either upper- or lower-case values, or 1 or 0. Any other input will be silently ignored. -Finally, a block of arbitrary binary data can be exported with: +Another option is exporting a block of arbitrary binary data, with +this structure and function: struct debugfs_blob_wrapper { void *data; unsigned long size; }; - struct dentry *debugfs_create_blob(const char *name, mode_t mode, + struct dentry *debugfs_create_blob(const char *name, umode_t mode, struct dentry *parent, struct debugfs_blob_wrapper *blob); @@ -115,6 +116,35 @@ can be used to export binary information, but there does not appear to be any code which does so in the mainline. Note that all files created with debugfs_create_blob() are read-only. +If you want to dump a block of registers (something that happens quite +often during development, even if little such code reaches mainline. +Debugfs offers two functions: one to make a registers-only file, and +another to insert a register block in the middle of another sequential +file. + + struct debugfs_reg32 { + char *name; + unsigned long offset; + }; + + struct debugfs_regset32 { + struct debugfs_reg32 *regs; + int nregs; + void __iomem *base; + }; + + struct dentry *debugfs_create_regset32(const char *name, mode_t mode, + struct dentry *parent, + struct debugfs_regset32 *regset); + + int debugfs_print_regs32(struct seq_file *s, struct debugfs_reg32 *regs, + int nregs, void __iomem *base, char *prefix); + +The "base" argument may be 0, but you may want to build the reg32 array +using __stringify, and a number of register names (macros) are actually +byte offsets over a base for the register block. + + There are a couple of other directory-oriented helper functions: struct dentry *debugfs_rename(struct dentry *old_dir, diff --git a/trunk/Documentation/filesystems/sysfs.txt b/trunk/Documentation/filesystems/sysfs.txt index 07235caec22c..a6619b7064b9 100644 --- a/trunk/Documentation/filesystems/sysfs.txt +++ b/trunk/Documentation/filesystems/sysfs.txt @@ -70,7 +70,7 @@ An attribute definition is simply: struct attribute { char * name; struct module *owner; - mode_t mode; + umode_t mode; }; diff --git a/trunk/Documentation/filesystems/vfs.txt b/trunk/Documentation/filesystems/vfs.txt index 43cbd0821721..3d9393b845b8 100644 --- a/trunk/Documentation/filesystems/vfs.txt +++ b/trunk/Documentation/filesystems/vfs.txt @@ -225,7 +225,7 @@ struct super_operations { void (*clear_inode) (struct inode *); void (*umount_begin) (struct super_block *); - int (*show_options)(struct seq_file *, struct vfsmount *); + int (*show_options)(struct seq_file *, struct dentry *); ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t); ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); @@ -341,14 +341,14 @@ This describes how the VFS can manipulate an inode in your filesystem. As of kernel 2.6.22, the following members are defined: struct inode_operations { - int (*create) (struct inode *,struct dentry *,int, struct nameidata *); + int (*create) (struct inode *,struct dentry *, umode_t, struct nameidata *); struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *); int (*link) (struct dentry *,struct inode *,struct dentry *); int (*unlink) (struct inode *,struct dentry *); int (*symlink) (struct inode *,struct dentry *,const char *); - int (*mkdir) (struct inode *,struct dentry *,int); + int (*mkdir) (struct inode *,struct dentry *,umode_t); int (*rmdir) (struct inode *,struct dentry *); - int (*mknod) (struct inode *,struct dentry *,int,dev_t); + int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t); int (*rename) (struct inode *, struct dentry *, struct inode *, struct dentry *); int (*readlink) (struct dentry *, char __user *,int); diff --git a/trunk/Documentation/hwmon/pmbus b/trunk/Documentation/hwmon/pmbus index 15ac911ce51b..d28b591753d1 100644 --- a/trunk/Documentation/hwmon/pmbus +++ b/trunk/Documentation/hwmon/pmbus @@ -2,9 +2,8 @@ Kernel driver pmbus ==================== Supported chips: - * Ericsson BMR45X series - DC/DC Converter - Prefixes: 'bmr450', 'bmr451', 'bmr453', 'bmr454' + * Ericsson BMR453, BMR454 + Prefixes: 'bmr453', 'bmr454' Addresses scanned: - Datasheet: http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146395 diff --git a/trunk/Documentation/hwmon/zl6100 b/trunk/Documentation/hwmon/zl6100 index 7617798b5c97..51f76a189fee 100644 --- a/trunk/Documentation/hwmon/zl6100 +++ b/trunk/Documentation/hwmon/zl6100 @@ -6,6 +6,10 @@ Supported chips: Prefix: 'zl2004' Addresses scanned: - Datasheet: http://www.intersil.com/data/fn/fn6847.pdf + * Intersil / Zilker Labs ZL2005 + Prefix: 'zl2005' + Addresses scanned: - + Datasheet: http://www.intersil.com/data/fn/fn6848.pdf * Intersil / Zilker Labs ZL2006 Prefix: 'zl2006' Addresses scanned: - @@ -30,6 +34,17 @@ Supported chips: Prefix: 'zl6105' Addresses scanned: - Datasheet: http://www.intersil.com/data/fn/fn6906.pdf + * Ericsson BMR450, BMR451 + Prefix: 'bmr450', 'bmr451' + Addresses scanned: - + Datasheet: +http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146401 + * Ericsson BMR462, BMR463, BMR464 + Prefixes: 'bmr462', 'bmr463', 'bmr464' + Addresses scanned: - + Datasheet: +http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146256 + Author: Guenter Roeck diff --git a/trunk/Documentation/kdump/kdump.txt b/trunk/Documentation/kdump/kdump.txt index 7a9e0b4b2903..506c7390c2b9 100644 --- a/trunk/Documentation/kdump/kdump.txt +++ b/trunk/Documentation/kdump/kdump.txt @@ -17,8 +17,8 @@ You can use common commands, such as cp and scp, to copy the memory image to a dump file on the local disk, or across the network to a remote system. -Kdump and kexec are currently supported on the x86, x86_64, ppc64 and ia64 -architectures. +Kdump and kexec are currently supported on the x86, x86_64, ppc64, ia64, +and s390x architectures. When the system kernel boots, it reserves a small section of memory for the dump-capture kernel. This ensures that ongoing Direct Memory Access @@ -34,11 +34,18 @@ Similarly on PPC64 machines first 32KB of physical memory is needed for booting regardless of where the kernel is loaded and to support 64K page size kexec backs up the first 64KB memory. +For s390x, when kdump is triggered, the crashkernel region is exchanged +with the region [0, crashkernel region size] and then the kdump kernel +runs in [0, crashkernel region size]. Therefore no relocatable kernel is +needed for s390x. + All of the necessary information about the system kernel's core image is encoded in the ELF format, and stored in a reserved area of memory before a crash. The physical address of the start of the ELF header is passed to the dump-capture kernel through the elfcorehdr= boot -parameter. +parameter. Optionally the size of the ELF header can also be passed +when using the elfcorehdr=[size[KMG]@]offset[KMG] syntax. + With the dump-capture kernel, you can access the memory image, or "old memory," in two ways: @@ -291,6 +298,10 @@ Boot into System Kernel The region may be automatically placed on ia64, see the dump-capture kernel config option notes above. + On s390x, typically use "crashkernel=xxM". The value of xx is dependent + on the memory consumption of the kdump system. In general this is not + dependent on the memory size of the production system. + Load the Dump-capture Kernel ============================ @@ -308,6 +319,8 @@ For ppc64: - Use vmlinux For ia64: - Use vmlinux or vmlinuz.gz +For s390x: + - Use image or bzImage If you are using a uncompressed vmlinux image then use following command @@ -337,6 +350,8 @@ For i386, x86_64 and ia64: For ppc64: "1 maxcpus=1 noirqdistrib reset_devices" +For s390x: + "1 maxcpus=1 cgroup_disable=memory" Notes on loading the dump-capture kernel: @@ -362,6 +377,20 @@ Notes on loading the dump-capture kernel: dump. Hence generally it is useful either to build a UP dump-capture kernel or specify maxcpus=1 option while loading dump-capture kernel. +* For s390x there are two kdump modes: If a ELF header is specified with + the elfcorehdr= kernel parameter, it is used by the kdump kernel as it + is done on all other architectures. If no elfcorehdr= kernel parameter is + specified, the s390x kdump kernel dynamically creates the header. The + second mode has the advantage that for CPU and memory hotplug, kdump has + not to be reloaded with kexec_load(). + +* For s390x systems with many attached devices the "cio_ignore" kernel + parameter should be used for the kdump kernel in order to prevent allocation + of kernel memory for devices that are not relevant for kdump. The same + applies to systems that use SCSI/FCP devices. In that case the + "allow_lun_scan" zfcp module parameter should be set to zero before + setting FCP devices online. + Kernel Panic ============ diff --git a/trunk/Documentation/kernel-parameters.txt b/trunk/Documentation/kernel-parameters.txt index e229769606f2..7b2e5c5eefa6 100644 --- a/trunk/Documentation/kernel-parameters.txt +++ b/trunk/Documentation/kernel-parameters.txt @@ -2637,6 +2637,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. [USB] Start with the old device initialization scheme (default 0 = off). + usbcore.usbfs_memory_mb= + [USB] Memory limit (in MB) for buffers allocated by + usbfs (default = 16, 0 = max = 2047). + usbcore.use_both_schemes= [USB] Try the other device initialization scheme if the first one fails (default 1 = enabled). diff --git a/trunk/Documentation/md.txt b/trunk/Documentation/md.txt index fc94770f44ab..993fba37b7d1 100644 --- a/trunk/Documentation/md.txt +++ b/trunk/Documentation/md.txt @@ -357,14 +357,14 @@ Each directory contains: written to, that device. state - A file recording the current state of the device in the array + A file recording the current state of the device in the array which can be a comma separated list of faulty - device has been kicked from active use due to - a detected fault or it has unacknowledged bad - blocks + a detected fault, or it has unacknowledged bad + blocks in_sync - device is a fully in-sync member of the array writemostly - device will only be subject to read - requests if there are no other options. + requests if there are no other options. This applies only to raid1 arrays. blocked - device has failed, and the failure hasn't been acknowledged yet by the metadata handler. @@ -374,6 +374,13 @@ Each directory contains: This includes spares that are in the process of being recovered to write_error - device has ever seen a write error. + want_replacement - device is (mostly) working but probably + should be replaced, either due to errors or + due to user request. + replacement - device is a replacement for another active + device with same raid_disk. + + This list may grow in future. This can be written to. Writing "faulty" simulates a failure on the device. @@ -386,6 +393,13 @@ Each directory contains: Writing "in_sync" sets the in_sync flag. Writing "write_error" sets writeerrorseen flag. Writing "-write_error" clears writeerrorseen flag. + Writing "want_replacement" is allowed at any time except to a + replacement device or a spare. It sets the flag. + Writing "-want_replacement" is allowed at any time. It clears + the flag. + Writing "replacement" or "-replacement" is only allowed before + starting the array. It sets or clears the flag. + This file responds to select/poll. Any change to 'faulty' or 'blocked' causes an event. diff --git a/trunk/Documentation/power/devices.txt b/trunk/Documentation/power/devices.txt index 3139fb505dce..20af7def23c8 100644 --- a/trunk/Documentation/power/devices.txt +++ b/trunk/Documentation/power/devices.txt @@ -126,7 +126,9 @@ The core methods to suspend and resume devices reside in struct dev_pm_ops pointed to by the ops member of struct dev_pm_domain, or by the pm member of struct bus_type, struct device_type and struct class. They are mostly of interest to the people writing infrastructure for platforms and buses, like PCI -or USB, or device type and device class drivers. +or USB, or device type and device class drivers. They also are relevant to the +writers of device drivers whose subsystems (PM domains, device types, device +classes and bus types) don't provide all power management methods. Bus drivers implement these methods as appropriate for the hardware and the drivers using it; PCI works differently from USB, and so on. Not many people @@ -268,32 +270,35 @@ various phases always run after tasks have been frozen and before they are unfrozen. Furthermore, the *_noirq phases run at a time when IRQ handlers have been disabled (except for those marked with the IRQF_NO_SUSPEND flag). -All phases use PM domain, bus, type, or class callbacks (that is, methods -defined in dev->pm_domain->ops, dev->bus->pm, dev->type->pm, or dev->class->pm). -These callbacks are regarded by the PM core as mutually exclusive. Moreover, -PM domain callbacks always take precedence over bus, type and class callbacks, -while type callbacks take precedence over bus and class callbacks, and class -callbacks take precedence over bus callbacks. To be precise, the following -rules are used to determine which callback to execute in the given phase: +All phases use PM domain, bus, type, class or driver callbacks (that is, methods +defined in dev->pm_domain->ops, dev->bus->pm, dev->type->pm, dev->class->pm or +dev->driver->pm). These callbacks are regarded by the PM core as mutually +exclusive. Moreover, PM domain callbacks always take precedence over all of the +other callbacks and, for example, type callbacks take precedence over bus, class +and driver callbacks. To be precise, the following rules are used to determine +which callback to execute in the given phase: - 1. If dev->pm_domain is present, the PM core will attempt to execute the - callback included in dev->pm_domain->ops. If that callback is not - present, no action will be carried out for the given device. + 1. If dev->pm_domain is present, the PM core will choose the callback + included in dev->pm_domain->ops for execution 2. Otherwise, if both dev->type and dev->type->pm are present, the callback - included in dev->type->pm will be executed. + included in dev->type->pm will be chosen for execution. 3. Otherwise, if both dev->class and dev->class->pm are present, the - callback included in dev->class->pm will be executed. + callback included in dev->class->pm will be chosen for execution. 4. Otherwise, if both dev->bus and dev->bus->pm are present, the callback - included in dev->bus->pm will be executed. + included in dev->bus->pm will be chosen for execution. This allows PM domains and device types to override callbacks provided by bus types or device classes if necessary. -These callbacks may in turn invoke device- or driver-specific methods stored in -dev->driver->pm, but they don't have to. +The PM domain, type, class and bus callbacks may in turn invoke device- or +driver-specific methods stored in dev->driver->pm, but they don't have to do +that. + +If the subsystem callback chosen for execution is not present, the PM core will +execute the corresponding method from dev->driver->pm instead if there is one. Entering System Suspend diff --git a/trunk/Documentation/power/freezing-of-tasks.txt b/trunk/Documentation/power/freezing-of-tasks.txt index 316c2ba187f4..6ccb68f68da6 100644 --- a/trunk/Documentation/power/freezing-of-tasks.txt +++ b/trunk/Documentation/power/freezing-of-tasks.txt @@ -21,7 +21,7 @@ freeze_processes() (defined in kernel/power/process.c) is called. It executes try_to_freeze_tasks() that sets TIF_FREEZE for all of the freezable tasks and either wakes them up, if they are kernel threads, or sends fake signals to them, if they are user space processes. A task that has TIF_FREEZE set, should react -to it by calling the function called refrigerator() (defined in +to it by calling the function called __refrigerator() (defined in kernel/freezer.c), which sets the task's PF_FROZEN flag, changes its state to TASK_UNINTERRUPTIBLE and makes it loop until PF_FROZEN is cleared for it. Then, we say that the task is 'frozen' and therefore the set of functions @@ -29,10 +29,10 @@ handling this mechanism is referred to as 'the freezer' (these functions are defined in kernel/power/process.c, kernel/freezer.c & include/linux/freezer.h). User space processes are generally frozen before kernel threads. -It is not recommended to call refrigerator() directly. Instead, it is -recommended to use the try_to_freeze() function (defined in -include/linux/freezer.h), that checks the task's TIF_FREEZE flag and makes the -task enter refrigerator() if the flag is set. +__refrigerator() must not be called directly. Instead, use the +try_to_freeze() function (defined in include/linux/freezer.h), that checks +the task's TIF_FREEZE flag and makes the task enter __refrigerator() if the +flag is set. For user space processes try_to_freeze() is called automatically from the signal-handling code, but the freezable kernel threads need to call it @@ -61,13 +61,13 @@ wait_event_freezable() and wait_event_freezable_timeout() macros. After the system memory state has been restored from a hibernation image and devices have been reinitialized, the function thaw_processes() is called in order to clear the PF_FROZEN flag for each frozen task. Then, the tasks that -have been frozen leave refrigerator() and continue running. +have been frozen leave __refrigerator() and continue running. III. Which kernel threads are freezable? Kernel threads are not freezable by default. However, a kernel thread may clear PF_NOFREEZE for itself by calling set_freezable() (the resetting of PF_NOFREEZE -directly is strongly discouraged). From this point it is regarded as freezable +directly is not allowed). From this point it is regarded as freezable and must call try_to_freeze() in a suitable place. IV. Why do we do that? @@ -176,3 +176,28 @@ tasks, since it generally exists anyway. A driver must have all firmwares it may need in RAM before suspend() is called. If keeping them is not practical, for example due to their size, they must be requested early enough using the suspend notifier API described in notifiers.txt. + +VI. Are there any precautions to be taken to prevent freezing failures? + +Yes, there are. + +First of all, grabbing the 'pm_mutex' lock to mutually exclude a piece of code +from system-wide sleep such as suspend/hibernation is not encouraged. +If possible, that piece of code must instead hook onto the suspend/hibernation +notifiers to achieve mutual exclusion. Look at the CPU-Hotplug code +(kernel/cpu.c) for an example. + +However, if that is not feasible, and grabbing 'pm_mutex' is deemed necessary, +it is strongly discouraged to directly call mutex_[un]lock(&pm_mutex) since +that could lead to freezing failures, because if the suspend/hibernate code +successfully acquired the 'pm_mutex' lock, and hence that other entity failed +to acquire the lock, then that task would get blocked in TASK_UNINTERRUPTIBLE +state. As a consequence, the freezer would not be able to freeze that task, +leading to freezing failure. + +However, the [un]lock_system_sleep() APIs are safe to use in this scenario, +since they ask the freezer to skip freezing this task, since it is anyway +"frozen enough" as it is blocked on 'pm_mutex', which will be released +only after the entire suspend/hibernation sequence is complete. +So, to summarize, use [un]lock_system_sleep() instead of directly using +mutex_[un]lock(&pm_mutex). That would prevent freezing failures. diff --git a/trunk/Documentation/power/runtime_pm.txt b/trunk/Documentation/power/runtime_pm.txt index c2ae8bf77d46..4abe83e1045a 100644 --- a/trunk/Documentation/power/runtime_pm.txt +++ b/trunk/Documentation/power/runtime_pm.txt @@ -57,6 +57,10 @@ the following: 4. Bus type of the device, if both dev->bus and dev->bus->pm are present. +If the subsystem chosen by applying the above rules doesn't provide the relevant +callback, the PM core will invoke the corresponding driver callback stored in +dev->driver->pm directly (if present). + The PM core always checks which callback to use in the order given above, so the priority order of callbacks from high to low is: PM domain, device type, class and bus type. Moreover, the high-priority one will always take precedence over @@ -64,86 +68,88 @@ a low-priority one. The PM domain, bus type, device type and class callbacks are referred to as subsystem-level callbacks in what follows. By default, the callbacks are always invoked in process context with interrupts -enabled. However, subsystems can use the pm_runtime_irq_safe() helper function -to tell the PM core that their ->runtime_suspend(), ->runtime_resume() and -->runtime_idle() callbacks may be invoked in atomic context with interrupts -disabled for a given device. This implies that the callback routines in -question must not block or sleep, but it also means that the synchronous helper -functions listed at the end of Section 4 may be used for that device within an -interrupt handler or generally in an atomic context. - -The subsystem-level suspend callback is _entirely_ _responsible_ for handling -the suspend of the device as appropriate, which may, but need not include -executing the device driver's own ->runtime_suspend() callback (from the +enabled. However, the pm_runtime_irq_safe() helper function can be used to tell +the PM core that it is safe to run the ->runtime_suspend(), ->runtime_resume() +and ->runtime_idle() callbacks for the given device in atomic context with +interrupts disabled. This implies that the callback routines in question must +not block or sleep, but it also means that the synchronous helper functions +listed at the end of Section 4 may be used for that device within an interrupt +handler or generally in an atomic context. + +The subsystem-level suspend callback, if present, is _entirely_ _responsible_ +for handling the suspend of the device as appropriate, which may, but need not +include executing the device driver's own ->runtime_suspend() callback (from the PM core's point of view it is not necessary to implement a ->runtime_suspend() callback in a device driver as long as the subsystem-level suspend callback knows what to do to handle the device). - * Once the subsystem-level suspend callback has completed successfully - for given device, the PM core regards the device as suspended, which need - not mean that the device has been put into a low power state. It is - supposed to mean, however, that the device will not process data and will - not communicate with the CPU(s) and RAM until the subsystem-level resume - callback is executed for it. The runtime PM status of a device after - successful execution of the subsystem-level suspend callback is 'suspended'. - - * If the subsystem-level suspend callback returns -EBUSY or -EAGAIN, - the device's runtime PM status is 'active', which means that the device - _must_ be fully operational afterwards. - - * If the subsystem-level suspend callback returns an error code different - from -EBUSY or -EAGAIN, the PM core regards this as a fatal error and will - refuse to run the helper functions described in Section 4 for the device, - until the status of it is directly set either to 'active', or to 'suspended' - (the PM core provides special helper functions for this purpose). - -In particular, if the driver requires remote wake-up capability (i.e. hardware + * Once the subsystem-level suspend callback (or the driver suspend callback, + if invoked directly) has completed successfully for the given device, the PM + core regards the device as suspended, which need not mean that it has been + put into a low power state. It is supposed to mean, however, that the + device will not process data and will not communicate with the CPU(s) and + RAM until the appropriate resume callback is executed for it. The runtime + PM status of a device after successful execution of the suspend callback is + 'suspended'. + + * If the suspend callback returns -EBUSY or -EAGAIN, the device's runtime PM + status remains 'active', which means that the device _must_ be fully + operational afterwards. + + * If the suspend callback returns an error code different from -EBUSY and + -EAGAIN, the PM core regards this as a fatal error and will refuse to run + the helper functions described in Section 4 for the device until its status + is directly set to either'active', or 'suspended' (the PM core provides + special helper functions for this purpose). + +In particular, if the driver requires remote wakeup capability (i.e. hardware mechanism allowing the device to request a change of its power state, such as PCI PME) for proper functioning and device_run_wake() returns 'false' for the device, then ->runtime_suspend() should return -EBUSY. On the other hand, if -device_run_wake() returns 'true' for the device and the device is put into a low -power state during the execution of the subsystem-level suspend callback, it is -expected that remote wake-up will be enabled for the device. Generally, remote -wake-up should be enabled for all input devices put into a low power state at -run time. - -The subsystem-level resume callback is _entirely_ _responsible_ for handling the -resume of the device as appropriate, which may, but need not include executing -the device driver's own ->runtime_resume() callback (from the PM core's point of -view it is not necessary to implement a ->runtime_resume() callback in a device -driver as long as the subsystem-level resume callback knows what to do to handle -the device). - - * Once the subsystem-level resume callback has completed successfully, the PM - core regards the device as fully operational, which means that the device - _must_ be able to complete I/O operations as needed. The runtime PM status - of the device is then 'active'. - - * If the subsystem-level resume callback returns an error code, the PM core - regards this as a fatal error and will refuse to run the helper functions - described in Section 4 for the device, until its status is directly set - either to 'active' or to 'suspended' (the PM core provides special helper - functions for this purpose). - -The subsystem-level idle callback is executed by the PM core whenever the device -appears to be idle, which is indicated to the PM core by two counters, the -device's usage counter and the counter of 'active' children of the device. +device_run_wake() returns 'true' for the device and the device is put into a +low-power state during the execution of the suspend callback, it is expected +that remote wakeup will be enabled for the device. Generally, remote wakeup +should be enabled for all input devices put into low-power states at run time. + +The subsystem-level resume callback, if present, is _entirely_ _responsible_ for +handling the resume of the device as appropriate, which may, but need not +include executing the device driver's own ->runtime_resume() callback (from the +PM core's point of view it is not necessary to implement a ->runtime_resume() +callback in a device driver as long as the subsystem-level resume callback knows +what to do to handle the device). + + * Once the subsystem-level resume callback (or the driver resume callback, if + invoked directly) has completed successfully, the PM core regards the device + as fully operational, which means that the device _must_ be able to complete + I/O operations as needed. The runtime PM status of the device is then + 'active'. + + * If the resume callback returns an error code, the PM core regards this as a + fatal error and will refuse to run the helper functions described in Section + 4 for the device, until its status is directly set to either 'active', or + 'suspended' (by means of special helper functions provided by the PM core + for this purpose). + +The idle callback (a subsystem-level one, if present, or the driver one) is +executed by the PM core whenever the device appears to be idle, which is +indicated to the PM core by two counters, the device's usage counter and the +counter of 'active' children of the device. * If any of these counters is decreased using a helper function provided by the PM core and it turns out to be equal to zero, the other counter is checked. If that counter also is equal to zero, the PM core executes the - subsystem-level idle callback with the device as an argument. + idle callback with the device as its argument. -The action performed by a subsystem-level idle callback is totally dependent on -the subsystem in question, but the expected and recommended action is to check +The action performed by the idle callback is totally dependent on the subsystem +(or driver) in question, but the expected and recommended action is to check if the device can be suspended (i.e. if all of the conditions necessary for suspending the device are satisfied) and to queue up a suspend request for the device in that case. The value returned by this callback is ignored by the PM core. The helper functions provided by the PM core, described in Section 4, guarantee -that the following constraints are met with respect to the bus type's runtime -PM callbacks: +that the following constraints are met with respect to runtime PM callbacks for +one device: (1) The callbacks are mutually exclusive (e.g. it is forbidden to execute ->runtime_suspend() in parallel with ->runtime_resume() or with another diff --git a/trunk/Documentation/s390/Debugging390.txt b/trunk/Documentation/s390/Debugging390.txt index efe998becc5b..462321c1aeea 100644 --- a/trunk/Documentation/s390/Debugging390.txt +++ b/trunk/Documentation/s390/Debugging390.txt @@ -41,7 +41,6 @@ ldd Debugging modules The proc file system Starting points for debugging scripting languages etc. -Dumptool & Lcrash SysRq References Special Thanks @@ -2455,39 +2454,6 @@ jdb another fully interactive gdb style debugger. -Dumptool & Lcrash ( lkcd ) -========================== -Michael Holzheu & others here at IBM have a fairly mature port of -SGI's lcrash tool which allows one to look at kernel structures in a -running kernel. - -It also complements a tool called dumptool which dumps all the kernel's -memory pages & registers to either a tape or a disk. -This can be used by tech support or an ambitious end user do -post mortem debugging of a machine like gdb core dumps. - -Going into how to use this tool in detail will be explained -in other documentation supplied by IBM with the patches & the -lcrash homepage http://oss.sgi.com/projects/lkcd/ & the lcrash manpage. - -How they work -------------- -Lcrash is a perfectly normal program,however, it requires 2 -additional files, Kerntypes which is built using a patch to the -linux kernel sources in the linux root directory & the System.map. - -Kerntypes is an objectfile whose sole purpose in life -is to provide stabs debug info to lcrash, to do this -Kerntypes is built from kerntypes.c which just includes the most commonly -referenced header files used when debugging, lcrash can then read the -.stabs section of this file. - -Debugging a live system it uses /dev/mem -alternatively for post mortem debugging it uses the data -collected by dumptool. - - - SysRq ===== This is now supported by linux for s/390 & z/Architecture. diff --git a/trunk/Documentation/scsi/53c700.txt b/trunk/Documentation/scsi/53c700.txt index 0da681d497a2..e31aceb6df15 100644 --- a/trunk/Documentation/scsi/53c700.txt +++ b/trunk/Documentation/scsi/53c700.txt @@ -16,32 +16,13 @@ fill in to get the driver working. Compile Time Flags ================== -The driver may be either io mapped or memory mapped. This is -selectable by configuration flags: - -CONFIG_53C700_MEM_MAPPED - -define if the driver is memory mapped. - -CONFIG_53C700_IO_MAPPED - -define if the driver is to be io mapped. - -One or other of the above flags *must* be defined. - -Other flags are: +A compile time flag is: CONFIG_53C700_LE_ON_BE define if the chipset must be supported in little endian mode on a big endian architecture (used for the 700 on parisc). -CONFIG_53C700_USE_CONSISTENT - -allocate consistent memory (should only be used if your architecture -has a mixture of consistent and inconsistent memory). Fully -consistent or fully inconsistent architectures should not define this. - Using the Chip Core Driver ========================== diff --git a/trunk/Documentation/serial/driver b/trunk/Documentation/serial/driver index 77ba0afbe4db..0a25a9191864 100644 --- a/trunk/Documentation/serial/driver +++ b/trunk/Documentation/serial/driver @@ -101,7 +101,7 @@ hardware. Returns the current state of modem control inputs. The state of the outputs should not be returned, since the core keeps track of their state. The state information should include: - - TIOCM_DCD state of DCD signal + - TIOCM_CAR state of DCD signal - TIOCM_CTS state of CTS signal - TIOCM_DSR state of DSR signal - TIOCM_RI state of RI signal diff --git a/trunk/Documentation/usb/usbmon.txt b/trunk/Documentation/usb/usbmon.txt index a4efa0462f05..5335fa8b06eb 100644 --- a/trunk/Documentation/usb/usbmon.txt +++ b/trunk/Documentation/usb/usbmon.txt @@ -47,10 +47,11 @@ This allows to filter away annoying devices that talk continuously. 2. Find which bus connects to the desired device -Run "cat /proc/bus/usb/devices", and find the T-line which corresponds to -the device. Usually you do it by looking for the vendor string. If you have -many similar devices, unplug one and compare two /proc/bus/usb/devices outputs. -The T-line will have a bus number. Example: +Run "cat /sys/kernel/debug/usb/devices", and find the T-line which corresponds +to the device. Usually you do it by looking for the vendor string. If you have +many similar devices, unplug one and compare the two +/sys/kernel/debug/usb/devices outputs. The T-line will have a bus number. +Example: T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 @@ -58,7 +59,10 @@ P: Vendor=0557 ProdID=2004 Rev= 1.00 S: Manufacturer=ATEN S: Product=UC100KM V2.00 -Bus=03 means it's bus 3. +"Bus=03" means it's bus 3. Alternatively, you can look at the output from +"lsusb" and get the bus number from the appropriate line. Example: + +Bus 003 Device 002: ID 0557:2004 ATEN UC100KM V2.00 3. Start 'cat' diff --git a/trunk/Documentation/vgaarbiter.txt b/trunk/Documentation/vgaarbiter.txt index b7d401e0eae9..014423e2824c 100644 --- a/trunk/Documentation/vgaarbiter.txt +++ b/trunk/Documentation/vgaarbiter.txt @@ -177,7 +177,7 @@ II. Credits Benjamin Herrenschmidt (IBM?) started this work when he discussed such design with the Xorg community in 2005 [1, 2]. In the end of 2007, Paulo Zanoni and -Tiago Vignatti (both of C3SL/Federal University of Paraná) proceeded his work +Tiago Vignatti (both of C3SL/Federal University of ParanĂĄ) proceeded his work enhancing the kernel code to adapt as a kernel module and also did the implementation of the user space side [3]. Now (2009) Tiago Vignatti and Dave Airlie finally put this work in shape and queued to Jesse Barnes' PCI tree. diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index 4babed7836c7..0ae41c9a6c13 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -184,11 +184,6 @@ S: Maintained F: Documentation/filesystems/9p.txt F: fs/9p/ -A2232 SERIAL BOARD DRIVER -L: linux-m68k@lists.linux-m68k.org -S: Orphan -F: drivers/staging/generic_serial/ser_a2232* - AACRAID SCSI RAID DRIVER M: Adaptec OEM Raid Solutions L: linux-scsi@vger.kernel.org @@ -1587,7 +1582,7 @@ M: Franky (Zhenhui) Lin M: Kan Yan L: linux-wireless@vger.kernel.org S: Supported -F: drivers/staging/brcm80211/ +F: drivers/net/wireless/brcm80211/ BROADCOM BNX2FC 10 GIGABIT FCOE DRIVER M: Bhanu Prakash Gollapudi @@ -1891,12 +1886,6 @@ L: platform-driver-x86@vger.kernel.org S: Maintained F: drivers/platform/x86/compal-laptop.c -COMPUTONE INTELLIPORT MULTIPORT CARD -W: http://www.wittsend.com/computone.html -S: Orphan -F: Documentation/serial/computone.txt -F: drivers/staging/tty/ip2/ - CONEXANT ACCESSRUNNER USB DRIVER M: Simon Arlott L: accessrunner-general@lists.sourceforge.net @@ -2200,15 +2189,6 @@ F: drivers/md/dm* F: include/linux/device-mapper.h F: include/linux/dm-*.h -DIGI INTL. EPCA DRIVER -M: "Digi International, Inc" -L: Eng.Linux@digi.com -W: http://www.digi.com -S: Orphan -F: Documentation/serial/digiepca.txt -F: drivers/staging/tty/epca* -F: drivers/staging/tty/digi* - DIOLAN U2C-12 I2C DRIVER M: Guenter Roeck L: linux-i2c@vger.kernel.org @@ -2912,6 +2892,7 @@ F: include/linux/gigaset_dev.h GPIO SUBSYSTEM M: Grant Likely +M: Linus Walleij S: Maintained T: git git://git.secretlab.ca/git/linux-2.6.git F: Documentation/gpio.txt @@ -3181,6 +3162,16 @@ M: William Irwin S: Maintained F: fs/hugetlbfs/ +Hyper-V CORE AND DRIVERS +M: K. Y. Srinivasan +M: Haiyang Zhang +L: devel@linuxdriverproject.org +S: Maintained +F: drivers/hv/ +F: drivers/hid/hid-hyperv.c +F: drivers/net/hyperv/ +F: drivers/staging/hv/ + I2C/SMBUS STUB DRIVER M: "Mark M. Hoffman" L: linux-i2c@vger.kernel.org @@ -3576,8 +3567,7 @@ F: net/netfilter/ipvs/ IPWIRELESS DRIVER M: Jiri Kosina M: David Sterba -S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/ipwireless_cs.git +S: Odd Fixes F: drivers/tty/ipwireless/ IPX NETWORK LAYER @@ -5121,6 +5111,15 @@ L: linux-mtd@lists.infradead.org S: Maintained F: drivers/mtd/devices/phram.c +PICOXCELL SUPPORT +M: Jamie Iles +L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) +T: git git://github.com/jamieiles/linux-2.6-ji.git +S: Supported +F: arch/arm/mach-picoxcell +F: drivers/*/picoxcell* +F: drivers/*/*/picoxcell* + PIN CONTROL SUBSYSTEM M: Linus Walleij S: Maintained @@ -5307,7 +5306,10 @@ F: drivers/media/video/pvrusb2/ PXA2xx/PXA3xx SUPPORT M: Eric Miao M: Russell King +M: Haojian Zhuang L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) +T: git git://github.com/hzhuang1/linux.git +T: git git://git.linaro.org/people/ycmiao/pxa-linux.git S: Maintained F: arch/arm/mach-pxa/ F: drivers/pcmcia/pxa2xx* @@ -5317,25 +5319,14 @@ F: include/sound/pxa2xx-lib.h F: sound/arm/pxa* F: sound/soc/pxa -PXA168 SUPPORT +MMP SUPPORT M: Eric Miao -M: Jason Chagas -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git -S: Maintained - -PXA910 SUPPORT -M: Eric Miao -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git -S: Maintained - -MMP2 SUPPORT (aka ARMADA610) M: Haojian Zhuang -M: Eric Miao L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git +T: git git://github.com/hzhuang1/linux.git +T: git git://git.linaro.org/people/ycmiao/pxa-linux.git S: Maintained +F: arch/arm/mach-mmp/ PXA MMCI DRIVER S: Orphan @@ -5545,11 +5536,6 @@ M: Maxim Levitsky S: Maintained F: drivers/memstick/host/r592.* -RISCOM8 DRIVER -S: Orphan -F: Documentation/serial/riscom8.txt -F: drivers/staging/tty/riscom8* - ROCKETPORT DRIVER P: Comtrol Corp. W: http://www.comtrol.com @@ -6212,11 +6198,6 @@ F: arch/arm/mach-spear3xx/spear3*0_evb.c F: arch/arm/mach-spear6xx/spear600.c F: arch/arm/mach-spear6xx/spear600_evb.c -SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER -S: Orphan -F: Documentation/serial/specialix.txt -F: drivers/staging/tty/specialix* - SPI SUBSYSTEM M: Grant Likely L: spi-devel-general@lists.sourceforge.net @@ -6259,7 +6240,7 @@ F: arch/alpha/kernel/srm_env.c STABLE BRANCH M: Greg Kroah-Hartman -L: stable@kernel.org +L: stable@vger.kernel.org S: Maintained STAGING SUBSYSTEM @@ -6294,11 +6275,6 @@ M: Manu Abraham S: Odd Fixes F: drivers/staging/crystalhd/ -STAGING - CYPRESS WESTBRIDGE SUPPORT -M: David Cross -S: Odd Fixes -F: drivers/staging/westbridge/ - STAGING - ECHO CANCELLER M: Steve Underwood M: David Rowe @@ -6320,12 +6296,6 @@ M: David Täht S: Odd Fixes F: drivers/staging/frontier/ -STAGING - HYPER-V (MICROSOFT) -M: Hank Janssen -M: Haiyang Zhang -S: Odd Fixes -F: drivers/staging/hv/ - STAGING - INDUSTRIAL IO M: Jonathan Cameron L: linux-iio@vger.kernel.org @@ -6410,7 +6380,7 @@ S: Odd Fixes F: drivers/staging/winbond/ STAGING - XGI Z7,Z9,Z11 PCI DISPLAY DRIVER -M: Arnaud Patard +M: Arnaud Patard S: Odd Fixes F: drivers/staging/xgifb/ diff --git a/trunk/arch/alpha/include/asm/ipcbuf.h b/trunk/arch/alpha/include/asm/ipcbuf.h index d9c0e1a50702..84c7e51cb6d0 100644 --- a/trunk/arch/alpha/include/asm/ipcbuf.h +++ b/trunk/arch/alpha/include/asm/ipcbuf.h @@ -1,28 +1 @@ -#ifndef _ALPHA_IPCBUF_H -#define _ALPHA_IPCBUF_H - -/* - * The ipc64_perm structure for alpha architecture. - * Note extra padding because this structure is passed back and forth - * between kernel and user space. - * - * Pad space is left for: - * - 32-bit seq - * - 2 miscellaneous 64-bit values - */ - -struct ipc64_perm -{ - __kernel_key_t key; - __kernel_uid_t uid; - __kernel_gid_t gid; - __kernel_uid_t cuid; - __kernel_gid_t cgid; - __kernel_mode_t mode; - unsigned short seq; - unsigned short __pad1; - unsigned long __unused1; - unsigned long __unused2; -}; - -#endif /* _ALPHA_IPCBUF_H */ +#include diff --git a/trunk/arch/alpha/include/asm/thread_info.h b/trunk/arch/alpha/include/asm/thread_info.h index ff73db022342..28335bd40e40 100644 --- a/trunk/arch/alpha/include/asm/thread_info.h +++ b/trunk/arch/alpha/include/asm/thread_info.h @@ -79,7 +79,6 @@ register struct thread_info *__current_thread_info __asm__("$8"); #define TIF_UAC_SIGBUS 12 /* ! userspace part of 'osf_sysinfo' */ #define TIF_MEMDIE 13 /* is terminating due to OOM killer */ #define TIF_RESTORE_SIGMASK 14 /* restore signal mask in do_signal */ -#define TIF_FREEZE 16 /* is freezing for suspend */ #define _TIF_SYSCALL_TRACE (1< #endif -#ifndef __ASSEMBLY__ - -typedef unsigned int umode_t; - -#endif /* __ASSEMBLY__ */ #endif /* _ALPHA_TYPES_H */ diff --git a/trunk/arch/arm/Kconfig b/trunk/arch/arm/Kconfig index 444822526a07..9d66dfc33a5a 100644 --- a/trunk/arch/arm/Kconfig +++ b/trunk/arch/arm/Kconfig @@ -447,6 +447,7 @@ config ARCH_MXS select ARCH_REQUIRE_GPIOLIB select CLKDEV_LOOKUP select CLKSRC_MMIO + select HAVE_CLK_PREPARE help Support for Freescale MXS-based family of processors @@ -597,6 +598,7 @@ config ARCH_MMP select ARCH_REQUIRE_GPIOLIB select CLKDEV_LOOKUP select GENERIC_CLOCKEVENTS + select GPIO_PXA select HAVE_SCHED_CLOCK select TICK_ONESHOT select PLAT_PXA @@ -658,6 +660,7 @@ config ARCH_PICOXCELL select HAVE_SCHED_CLOCK select HAVE_TCM select NO_IOPORT + select SPARSE_IRQ select USE_OF help This enables support for systems based on the Picochip picoXcell @@ -681,6 +684,7 @@ config ARCH_PXA select CLKSRC_MMIO select ARCH_REQUIRE_GPIOLIB select GENERIC_CLOCKEVENTS + select GPIO_PXA select HAVE_SCHED_CLOCK select TICK_ONESHOT select PLAT_PXA @@ -748,7 +752,7 @@ config ARCH_SA1100 select ARCH_HAS_CPUFREQ select CPU_FREQ select GENERIC_CLOCKEVENTS - select HAVE_CLK + select CLKDEV_LOOKUP select HAVE_SCHED_CLOCK select TICK_ONESHOT select ARCH_REQUIRE_GPIOLIB @@ -892,7 +896,6 @@ config ARCH_U300 select HAVE_MACH_CLKDEV select GENERIC_GPIO select ARCH_REQUIRE_GPIOLIB - select NEED_MACH_MEMORY_H help Support for ST-Ericsson U300 series mobile platforms. @@ -1140,10 +1143,9 @@ config IWMMXT Enable support for iWMMXt context switching at run time if running on a CPU that supports it. -# bool 'Use XScale PMU as timer source' CONFIG_XSCALE_PMU_TIMER config XSCALE_PMU bool - depends on CPU_XSCALE && !XSCALE_PMU_TIMER + depends on CPU_XSCALE default y config CPU_HAS_PMU diff --git a/trunk/arch/arm/Kconfig.debug b/trunk/arch/arm/Kconfig.debug index c5213e78606b..e0d236d7ff73 100644 --- a/trunk/arch/arm/Kconfig.debug +++ b/trunk/arch/arm/Kconfig.debug @@ -100,6 +100,14 @@ choice Note that the system will appear to hang during boot if there is nothing connected to read from the DCC. + config AT91_DEBUG_LL_DBGU0 + bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl" + depends on HAVE_AT91_DBGU0 + + config AT91_DEBUG_LL_DBGU1 + bool "Kernel low-level debugging on 9263, 9g45 and cap9" + depends on HAVE_AT91_DBGU1 + config DEBUG_FOOTBRIDGE_COM1 bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1" depends on FOOTBRIDGE @@ -247,6 +255,43 @@ choice their output to the standard serial port on the RealView PB1176 platform. + config DEBUG_MSM_UART1 + bool "Kernel low-level debugging messages via MSM UART1" + depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 + help + Say Y here if you want the debug print routines to direct + their output to the first serial port on MSM devices. + + config DEBUG_MSM_UART2 + bool "Kernel low-level debugging messages via MSM UART2" + depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 + help + Say Y here if you want the debug print routines to direct + their output to the second serial port on MSM devices. + + config DEBUG_MSM_UART3 + bool "Kernel low-level debugging messages via MSM UART3" + depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 + help + Say Y here if you want the debug print routines to direct + their output to the third serial port on MSM devices. + + config DEBUG_MSM8660_UART + bool "Kernel low-level debugging messages via MSM 8660 UART" + depends on ARCH_MSM8X60 + select MSM_HAS_DEBUG_UART_HS + help + Say Y here if you want the debug print routines to direct + their output to the serial port on MSM 8660 devices. + + config DEBUG_MSM8960_UART + bool "Kernel low-level debugging messages via MSM 8960 UART" + depends on ARCH_MSM8960 + select MSM_HAS_DEBUG_UART_HS + help + Say Y here if you want the debug print routines to direct + their output to the serial port on MSM 8960 devices. + endchoice config EARLY_PRINTK diff --git a/trunk/arch/arm/boot/dts/at91sam9g20.dtsi b/trunk/arch/arm/boot/dts/at91sam9g20.dtsi index aeef04269cf8..07603b8c9503 100644 --- a/trunk/arch/arm/boot/dts/at91sam9g20.dtsi +++ b/trunk/arch/arm/boot/dts/at91sam9g20.dtsi @@ -114,6 +114,13 @@ atmel,use-dma-tx; status = "disabled"; }; + + macb0: ethernet@fffc4000 { + compatible = "cdns,at32ap7000-macb", "cdns,macb"; + reg = <0xfffc4000 0x100>; + interrupts = <21>; + status = "disabled"; + }; }; }; }; diff --git a/trunk/arch/arm/boot/dts/at91sam9g45.dtsi b/trunk/arch/arm/boot/dts/at91sam9g45.dtsi index db6a45202f26..fffa005300a4 100644 --- a/trunk/arch/arm/boot/dts/at91sam9g45.dtsi +++ b/trunk/arch/arm/boot/dts/at91sam9g45.dtsi @@ -101,6 +101,13 @@ atmel,use-dma-tx; status = "disabled"; }; + + macb0: ethernet@fffbc000 { + compatible = "cdns,at32ap7000-macb", "cdns,macb"; + reg = <0xfffbc000 0x100>; + interrupts = <25>; + status = "disabled"; + }; }; }; }; diff --git a/trunk/arch/arm/boot/dts/at91sam9m10g45ek.dts b/trunk/arch/arm/boot/dts/at91sam9m10g45ek.dts index 85b34f59cd82..a387e7704ce1 100644 --- a/trunk/arch/arm/boot/dts/at91sam9m10g45ek.dts +++ b/trunk/arch/arm/boot/dts/at91sam9m10g45ek.dts @@ -30,6 +30,11 @@ usart1: serial@fff90000 { status = "okay"; }; + + macb0: ethernet@fffbc000 { + phy-mode = "rmii"; + status = "okay"; + }; }; }; }; diff --git a/trunk/arch/arm/boot/dts/exynos4210-origen.dts b/trunk/arch/arm/boot/dts/exynos4210-origen.dts new file mode 100644 index 000000000000..b8c476384eef --- /dev/null +++ b/trunk/arch/arm/boot/dts/exynos4210-origen.dts @@ -0,0 +1,137 @@ +/* + * Samsung's Exynos4210 based Origen board device tree source + * + * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * Copyright (c) 2010-2011 Linaro Ltd. + * www.linaro.org + * + * Device tree source file for Insignal's Origen board which is based on + * Samsung's Exynos4210 SoC. + * + * 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. +*/ + +/dts-v1/; +/include/ "exynos4210.dtsi" + +/ { + model = "Insignal Origen evaluation board based on Exynos4210"; + compatible = "insignal,origen", "samsung,exynos4210"; + + memory { + reg = <0x40000000 0x40000000>; + }; + + chosen { + bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc"; + }; + + sdhci@12530000 { + samsung,sdhci-bus-width = <4>; + linux,mmc_cap_4_bit_data; + samsung,sdhci-cd-internal; + gpio-cd = <&gpk2 2 2 3 3>; + gpios = <&gpk2 0 2 0 3>, + <&gpk2 1 2 0 3>, + <&gpk2 3 2 3 3>, + <&gpk2 4 2 3 3>, + <&gpk2 5 2 3 3>, + <&gpk2 6 2 3 3>; + }; + + sdhci@12510000 { + samsung,sdhci-bus-width = <4>; + linux,mmc_cap_4_bit_data; + samsung,sdhci-cd-internal; + gpio-cd = <&gpk0 2 2 3 3>; + gpios = <&gpk0 0 2 0 3>, + <&gpk0 1 2 0 3>, + <&gpk0 3 2 3 3>, + <&gpk0 4 2 3 3>, + <&gpk0 5 2 3 3>, + <&gpk0 6 2 3 3>; + }; + + gpio_keys { + compatible = "gpio-keys"; + #address-cells = <1>; + #size-cells = <0>; + + up { + label = "Up"; + gpios = <&gpx2 0 0 0 2>; + linux,code = <103>; + }; + + down { + label = "Down"; + gpios = <&gpx2 1 0 0 2>; + linux,code = <108>; + }; + + back { + label = "Back"; + gpios = <&gpx1 7 0 0 2>; + linux,code = <158>; + }; + + home { + label = "Home"; + gpios = <&gpx1 6 0 0 2>; + linux,code = <102>; + }; + + menu { + label = "Menu"; + gpios = <&gpx1 5 0 0 2>; + linux,code = <139>; + }; + }; + + keypad@100A0000 { + status = "disabled"; + }; + + sdhci@12520000 { + status = "disabled"; + }; + + sdhci@12540000 { + status = "disabled"; + }; + + i2c@13860000 { + status = "disabled"; + }; + + i2c@13870000 { + status = "disabled"; + }; + + i2c@13880000 { + status = "disabled"; + }; + + i2c@13890000 { + status = "disabled"; + }; + + i2c@138A0000 { + status = "disabled"; + }; + + i2c@138B0000 { + status = "disabled"; + }; + + i2c@138C0000 { + status = "disabled"; + }; + + i2c@138D0000 { + status = "disabled"; + }; +}; diff --git a/trunk/arch/arm/boot/dts/exynos4210-smdkv310.dts b/trunk/arch/arm/boot/dts/exynos4210-smdkv310.dts new file mode 100644 index 000000000000..27afc8e535ca --- /dev/null +++ b/trunk/arch/arm/boot/dts/exynos4210-smdkv310.dts @@ -0,0 +1,182 @@ +/* + * Samsung's Exynos4210 based SMDKV310 board device tree source + * + * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * Copyright (c) 2010-2011 Linaro Ltd. + * www.linaro.org + * + * Device tree source file for Samsung's SMDKV310 board which is based on + * Samsung's Exynos4210 SoC. + * + * 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. +*/ + +/dts-v1/; +/include/ "exynos4210.dtsi" + +/ { + model = "Samsung smdkv310 evaluation board based on Exynos4210"; + compatible = "samsung,smdkv310", "samsung,exynos4210"; + + memory { + reg = <0x40000000 0x80000000>; + }; + + chosen { + bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc"; + }; + + sdhci@12530000 { + samsung,sdhci-bus-width = <4>; + linux,mmc_cap_4_bit_data; + samsung,sdhci-cd-internal; + gpio-cd = <&gpk2 2 2 3 3>; + gpios = <&gpk2 0 2 0 3>, + <&gpk2 1 2 0 3>, + <&gpk2 3 2 3 3>, + <&gpk2 4 2 3 3>, + <&gpk2 5 2 3 3>, + <&gpk2 6 2 3 3>; + }; + + keypad@100A0000 { + samsung,keypad-num-rows = <2>; + samsung,keypad-num-columns = <8>; + linux,keypad-no-autorepeat; + linux,keypad-wakeup; + + row-gpios = <&gpx2 0 3 3 0>, + <&gpx2 1 3 3 0>; + + col-gpios = <&gpx1 0 3 0 0>, + <&gpx1 1 3 0 0>, + <&gpx1 2 3 0 0>, + <&gpx1 3 3 0 0>, + <&gpx1 4 3 0 0>, + <&gpx1 5 3 0 0>, + <&gpx1 6 3 0 0>, + <&gpx1 7 3 0 0>; + + key_1 { + keypad,row = <0>; + keypad,column = <3>; + linux,code = <2>; + }; + + key_2 { + keypad,row = <0>; + keypad,column = <4>; + linux,code = <3>; + }; + + key_3 { + keypad,row = <0>; + keypad,column = <5>; + linux,code = <4>; + }; + + key_4 { + keypad,row = <0>; + keypad,column = <6>; + linux,code = <5>; + }; + + key_5 { + keypad,row = <0>; + keypad,column = <7>; + linux,code = <6>; + }; + + key_a { + keypad,row = <1>; + keypad,column = <3>; + linux,code = <30>; + }; + + key_b { + keypad,row = <1>; + keypad,column = <4>; + linux,code = <48>; + }; + + key_c { + keypad,row = <1>; + keypad,column = <5>; + linux,code = <46>; + }; + + key_d { + keypad,row = <1>; + keypad,column = <6>; + linux,code = <32>; + }; + + key_e { + keypad,row = <1>; + keypad,column = <7>; + linux,code = <18>; + }; + }; + + i2c@13860000 { + #address-cells = <1>; + #size-cells = <0>; + samsung,i2c-sda-delay = <100>; + samsung,i2c-max-bus-freq = <20000>; + gpios = <&gpd1 0 2 3 0>, + <&gpd1 1 2 3 0>; + + eeprom@50 { + compatible = "samsung,24ad0xd1"; + reg = <0x50>; + }; + + eeprom@52 { + compatible = "samsung,24ad0xd1"; + reg = <0x52>; + }; + }; + + sdhci@12510000 { + status = "disabled"; + }; + + sdhci@12520000 { + status = "disabled"; + }; + + sdhci@12540000 { + status = "disabled"; + }; + + i2c@13870000 { + status = "disabled"; + }; + + i2c@13880000 { + status = "disabled"; + }; + + i2c@13890000 { + status = "disabled"; + }; + + i2c@138A0000 { + status = "disabled"; + }; + + i2c@138B0000 { + status = "disabled"; + }; + + i2c@138C0000 { + status = "disabled"; + }; + + i2c@138D0000 { + status = "disabled"; + }; +}; diff --git a/trunk/arch/arm/boot/dts/exynos4210.dtsi b/trunk/arch/arm/boot/dts/exynos4210.dtsi new file mode 100644 index 000000000000..63d7578856c1 --- /dev/null +++ b/trunk/arch/arm/boot/dts/exynos4210.dtsi @@ -0,0 +1,397 @@ +/* + * Samsung's Exynos4210 SoC device tree source + * + * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * Copyright (c) 2010-2011 Linaro Ltd. + * www.linaro.org + * + * Samsung's Exynos4210 SoC device nodes are listed in this file. Exynos4210 + * based board files can include this file and provide values for board specfic + * bindings. + * + * Note: This file does not include device nodes for all the controllers in + * Exynos4210 SoC. As device tree coverage for Exynos4210 increases, additional + * nodes can be added to this file. + * + * 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/ "skeleton.dtsi" + +/ { + compatible = "samsung,exynos4210"; + interrupt-parent = <&gic>; + + gic:interrupt-controller@10490000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + interrupt-controller; + reg = <0x10490000 0x1000>, <0x10480000 0x100>; + }; + + watchdog@10060000 { + compatible = "samsung,s3c2410-wdt"; + reg = <0x10060000 0x100>; + interrupts = <0 43 0>; + }; + + rtc@10070000 { + compatible = "samsung,s3c6410-rtc"; + reg = <0x10070000 0x100>; + interrupts = <0 44 0>, <0 45 0>; + }; + + keypad@100A0000 { + compatible = "samsung,s5pv210-keypad"; + reg = <0x100A0000 0x100>; + interrupts = <0 109 0>; + }; + + sdhci@12510000 { + compatible = "samsung,exynos4210-sdhci"; + reg = <0x12510000 0x100>; + interrupts = <0 73 0>; + }; + + sdhci@12520000 { + compatible = "samsung,exynos4210-sdhci"; + reg = <0x12520000 0x100>; + interrupts = <0 74 0>; + }; + + sdhci@12530000 { + compatible = "samsung,exynos4210-sdhci"; + reg = <0x12530000 0x100>; + interrupts = <0 75 0>; + }; + + sdhci@12540000 { + compatible = "samsung,exynos4210-sdhci"; + reg = <0x12540000 0x100>; + interrupts = <0 76 0>; + }; + + serial@13800000 { + compatible = "samsung,exynos4210-uart"; + reg = <0x13800000 0x100>; + interrupts = <0 52 0>; + }; + + serial@13810000 { + compatible = "samsung,exynos4210-uart"; + reg = <0x13810000 0x100>; + interrupts = <0 53 0>; + }; + + serial@13820000 { + compatible = "samsung,exynos4210-uart"; + reg = <0x13820000 0x100>; + interrupts = <0 54 0>; + }; + + serial@13830000 { + compatible = "samsung,exynos4210-uart"; + reg = <0x13830000 0x100>; + interrupts = <0 55 0>; + }; + + i2c@13860000 { + compatible = "samsung,s3c2440-i2c"; + reg = <0x13860000 0x100>; + interrupts = <0 58 0>; + }; + + i2c@13870000 { + compatible = "samsung,s3c2440-i2c"; + reg = <0x13870000 0x100>; + interrupts = <0 59 0>; + }; + + i2c@13880000 { + compatible = "samsung,s3c2440-i2c"; + reg = <0x13880000 0x100>; + interrupts = <0 60 0>; + }; + + i2c@13890000 { + compatible = "samsung,s3c2440-i2c"; + reg = <0x13890000 0x100>; + interrupts = <0 61 0>; + }; + + i2c@138A0000 { + compatible = "samsung,s3c2440-i2c"; + reg = <0x138A0000 0x100>; + interrupts = <0 62 0>; + }; + + i2c@138B0000 { + compatible = "samsung,s3c2440-i2c"; + reg = <0x138B0000 0x100>; + interrupts = <0 63 0>; + }; + + i2c@138C0000 { + compatible = "samsung,s3c2440-i2c"; + reg = <0x138C0000 0x100>; + interrupts = <0 64 0>; + }; + + i2c@138D0000 { + compatible = "samsung,s3c2440-i2c"; + reg = <0x138D0000 0x100>; + interrupts = <0 65 0>; + }; + + amba { + #address-cells = <1>; + #size-cells = <1>; + compatible = "arm,amba-bus"; + interrupt-parent = <&gic>; + ranges; + + pdma0: pdma@12680000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0x12680000 0x1000>; + interrupts = <0 35 0>; + }; + + pdma1: pdma@12690000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0x12690000 0x1000>; + interrupts = <0 36 0>; + }; + }; + + gpio-controllers { + #address-cells = <1>; + #size-cells = <1>; + gpio-controller; + ranges; + + gpa0: gpio-controller@11400000 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11400000 0x20>; + #gpio-cells = <4>; + }; + + gpa1: gpio-controller@11400020 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11400020 0x20>; + #gpio-cells = <4>; + }; + + gpb: gpio-controller@11400040 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11400040 0x20>; + #gpio-cells = <4>; + }; + + gpc0: gpio-controller@11400060 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11400060 0x20>; + #gpio-cells = <4>; + }; + + gpc1: gpio-controller@11400080 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11400080 0x20>; + #gpio-cells = <4>; + }; + + gpd0: gpio-controller@114000A0 { + compatible = "samsung,exynos4-gpio"; + reg = <0x114000A0 0x20>; + #gpio-cells = <4>; + }; + + gpd1: gpio-controller@114000C0 { + compatible = "samsung,exynos4-gpio"; + reg = <0x114000C0 0x20>; + #gpio-cells = <4>; + }; + + gpe0: gpio-controller@114000E0 { + compatible = "samsung,exynos4-gpio"; + reg = <0x114000E0 0x20>; + #gpio-cells = <4>; + }; + + gpe1: gpio-controller@11400100 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11400100 0x20>; + #gpio-cells = <4>; + }; + + gpe2: gpio-controller@11400120 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11400120 0x20>; + #gpio-cells = <4>; + }; + + gpe3: gpio-controller@11400140 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11400140 0x20>; + #gpio-cells = <4>; + }; + + gpe4: gpio-controller@11400160 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11400160 0x20>; + #gpio-cells = <4>; + }; + + gpf0: gpio-controller@11400180 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11400180 0x20>; + #gpio-cells = <4>; + }; + + gpf1: gpio-controller@114001A0 { + compatible = "samsung,exynos4-gpio"; + reg = <0x114001A0 0x20>; + #gpio-cells = <4>; + }; + + gpf2: gpio-controller@114001C0 { + compatible = "samsung,exynos4-gpio"; + reg = <0x114001C0 0x20>; + #gpio-cells = <4>; + }; + + gpf3: gpio-controller@114001E0 { + compatible = "samsung,exynos4-gpio"; + reg = <0x114001E0 0x20>; + #gpio-cells = <4>; + }; + + gpj0: gpio-controller@11000000 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000000 0x20>; + #gpio-cells = <4>; + }; + + gpj1: gpio-controller@11000020 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000020 0x20>; + #gpio-cells = <4>; + }; + + gpk0: gpio-controller@11000040 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000040 0x20>; + #gpio-cells = <4>; + }; + + gpk1: gpio-controller@11000060 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000060 0x20>; + #gpio-cells = <4>; + }; + + gpk2: gpio-controller@11000080 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000080 0x20>; + #gpio-cells = <4>; + }; + + gpk3: gpio-controller@110000A0 { + compatible = "samsung,exynos4-gpio"; + reg = <0x110000A0 0x20>; + #gpio-cells = <4>; + }; + + gpl0: gpio-controller@110000C0 { + compatible = "samsung,exynos4-gpio"; + reg = <0x110000C0 0x20>; + #gpio-cells = <4>; + }; + + gpl1: gpio-controller@110000E0 { + compatible = "samsung,exynos4-gpio"; + reg = <0x110000E0 0x20>; + #gpio-cells = <4>; + }; + + gpl2: gpio-controller@11000100 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000100 0x20>; + #gpio-cells = <4>; + }; + + gpy0: gpio-controller@11000120 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000120 0x20>; + #gpio-cells = <4>; + }; + + gpy1: gpio-controller@11000140 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000140 0x20>; + #gpio-cells = <4>; + }; + + gpy2: gpio-controller@11000160 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000160 0x20>; + #gpio-cells = <4>; + }; + + gpy3: gpio-controller@11000180 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000180 0x20>; + #gpio-cells = <4>; + }; + + gpy4: gpio-controller@110001A0 { + compatible = "samsung,exynos4-gpio"; + reg = <0x110001A0 0x20>; + #gpio-cells = <4>; + }; + + gpy5: gpio-controller@110001C0 { + compatible = "samsung,exynos4-gpio"; + reg = <0x110001C0 0x20>; + #gpio-cells = <4>; + }; + + gpy6: gpio-controller@110001E0 { + compatible = "samsung,exynos4-gpio"; + reg = <0x110001E0 0x20>; + #gpio-cells = <4>; + }; + + gpx0: gpio-controller@11000C00 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000C00 0x20>; + #gpio-cells = <4>; + }; + + gpx1: gpio-controller@11000C20 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000C20 0x20>; + #gpio-cells = <4>; + }; + + gpx2: gpio-controller@11000C40 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000C40 0x20>; + #gpio-cells = <4>; + }; + + gpx3: gpio-controller@11000C60 { + compatible = "samsung,exynos4-gpio"; + reg = <0x11000C60 0x20>; + #gpio-cells = <4>; + }; + + gpz: gpio-controller@03860000 { + compatible = "samsung,exynos4-gpio"; + reg = <0x03860000 0x20>; + #gpio-cells = <4>; + }; + }; +}; diff --git a/trunk/arch/arm/boot/dts/highbank.dts b/trunk/arch/arm/boot/dts/highbank.dts index aeb1a7578fad..305635bd45c0 100644 --- a/trunk/arch/arm/boot/dts/highbank.dts +++ b/trunk/arch/arm/boot/dts/highbank.dts @@ -194,5 +194,17 @@ reg = <0xfff3d000 0x1000>; interrupts = <0 92 4>; }; + + ethernet@fff50000 { + compatible = "calxeda,hb-xgmac"; + reg = <0xfff50000 0x1000>; + interrupts = <0 77 4 0 78 4 0 79 4>; + }; + + ethernet@fff51000 { + compatible = "calxeda,hb-xgmac"; + reg = <0xfff51000 0x1000>; + interrupts = <0 80 4 0 81 4 0 82 4>; + }; }; }; diff --git a/trunk/arch/arm/boot/dts/imx51-babbage.dts b/trunk/arch/arm/boot/dts/imx51-babbage.dts index f8766af11215..564cb8c19f15 100644 --- a/trunk/arch/arm/boot/dts/imx51-babbage.dts +++ b/trunk/arch/arm/boot/dts/imx51-babbage.dts @@ -35,20 +35,19 @@ }; esdhc@70008000 { /* ESDHC2 */ - cd-gpios = <&gpio0 6 0>; /* GPIO1_6 */ - wp-gpios = <&gpio0 5 0>; /* GPIO1_5 */ + cd-gpios = <&gpio1 6 0>; + wp-gpios = <&gpio1 5 0>; status = "okay"; }; - uart2: uart@7000c000 { /* UART3 */ + uart3: uart@7000c000 { fsl,uart-has-rtscts; status = "okay"; }; ecspi@70010000 { /* ECSPI1 */ fsl,spi-num-chipselects = <2>; - cs-gpios = <&gpio3 24 0>, /* GPIO4_24 */ - <&gpio3 25 0>; /* GPIO4_25 */ + cs-gpios = <&gpio4 24 0>, <&gpio4 25 0>; status = "okay"; pmic: mc13892@0 { @@ -57,7 +56,7 @@ compatible = "fsl,mc13892"; spi-max-frequency = <6000000>; reg = <0>; - mc13xxx-irq-gpios = <&gpio0 8 0>; /* GPIO1_8 */ + mc13xxx-irq-gpios = <&gpio1 8 0>; fsl,mc13xxx-uses-regulator; }; @@ -91,12 +90,12 @@ reg = <0x73fa8000 0x4000>; }; - uart0: uart@73fbc000 { + uart1: uart@73fbc000 { fsl,uart-has-rtscts; status = "okay"; }; - uart1: uart@73fc0000 { + uart2: uart@73fc0000 { status = "okay"; }; }; @@ -127,7 +126,7 @@ power { label = "Power Button"; - gpios = <&gpio1 21 0>; + gpios = <&gpio2 21 0>; linux,code = <116>; /* KEY_POWER */ gpio-key,wakeup; }; diff --git a/trunk/arch/arm/boot/dts/imx51.dtsi b/trunk/arch/arm/boot/dts/imx51.dtsi index 327ab8e3a4c8..6663986fe1c8 100644 --- a/trunk/arch/arm/boot/dts/imx51.dtsi +++ b/trunk/arch/arm/boot/dts/imx51.dtsi @@ -14,9 +14,9 @@ / { aliases { - serial0 = &uart0; - serial1 = &uart1; - serial2 = &uart2; + serial0 = &uart1; + serial1 = &uart2; + serial2 = &uart3; }; tzic: tz-interrupt-controller@e0000000 { @@ -86,7 +86,7 @@ status = "disabled"; }; - uart2: uart@7000c000 { /* UART3 */ + uart3: uart@7000c000 { compatible = "fsl,imx51-uart", "fsl,imx21-uart"; reg = <0x7000c000 0x4000>; interrupts = <33>; @@ -117,7 +117,7 @@ }; }; - gpio0: gpio@73f84000 { /* GPIO1 */ + gpio1: gpio@73f84000 { compatible = "fsl,imx51-gpio", "fsl,imx31-gpio"; reg = <0x73f84000 0x4000>; interrupts = <50 51>; @@ -127,7 +127,7 @@ #interrupt-cells = <1>; }; - gpio1: gpio@73f88000 { /* GPIO2 */ + gpio2: gpio@73f88000 { compatible = "fsl,imx51-gpio", "fsl,imx31-gpio"; reg = <0x73f88000 0x4000>; interrupts = <52 53>; @@ -137,7 +137,7 @@ #interrupt-cells = <1>; }; - gpio2: gpio@73f8c000 { /* GPIO3 */ + gpio3: gpio@73f8c000 { compatible = "fsl,imx51-gpio", "fsl,imx31-gpio"; reg = <0x73f8c000 0x4000>; interrupts = <54 55>; @@ -147,7 +147,7 @@ #interrupt-cells = <1>; }; - gpio3: gpio@73f90000 { /* GPIO4 */ + gpio4: gpio@73f90000 { compatible = "fsl,imx51-gpio", "fsl,imx31-gpio"; reg = <0x73f90000 0x4000>; interrupts = <56 57>; @@ -171,14 +171,14 @@ status = "disabled"; }; - uart0: uart@73fbc000 { + uart1: uart@73fbc000 { compatible = "fsl,imx51-uart", "fsl,imx21-uart"; reg = <0x73fbc000 0x4000>; interrupts = <31>; status = "disabled"; }; - uart1: uart@73fc0000 { + uart2: uart@73fc0000 { compatible = "fsl,imx51-uart", "fsl,imx21-uart"; reg = <0x73fc0000 0x4000>; interrupts = <32>; diff --git a/trunk/arch/arm/boot/dts/imx53-ard.dts b/trunk/arch/arm/boot/dts/imx53-ard.dts index 2ab7f80a0a35..2dccce46ed81 100644 --- a/trunk/arch/arm/boot/dts/imx53-ard.dts +++ b/trunk/arch/arm/boot/dts/imx53-ard.dts @@ -29,8 +29,8 @@ aips@50000000 { /* AIPS1 */ spba@50000000 { esdhc@50004000 { /* ESDHC1 */ - cd-gpios = <&gpio0 1 0>; /* GPIO1_1 */ - wp-gpios = <&gpio0 9 0>; /* GPIO1_9 */ + cd-gpios = <&gpio1 1 0>; + wp-gpios = <&gpio1 9 0>; status = "okay"; }; }; @@ -44,7 +44,7 @@ reg = <0x53fa8000 0x4000>; }; - uart0: uart@53fbc000 { /* UART1 */ + uart1: uart@53fbc000 { status = "okay"; }; }; @@ -67,7 +67,7 @@ compatible = "smsc,lan9220", "smsc,lan9115"; reg = <0xf4000000 0x2000000>; phy-mode = "mii"; - interrupt-parent = <&gpio1>; + interrupt-parent = <&gpio2>; interrupts = <31>; reg-io-width = <4>; smsc,irq-push-pull; @@ -79,34 +79,34 @@ home { label = "Home"; - gpios = <&gpio4 10 0>; /* GPIO5_10 */ + gpios = <&gpio5 10 0>; linux,code = <102>; /* KEY_HOME */ gpio-key,wakeup; }; back { label = "Back"; - gpios = <&gpio4 11 0>; /* GPIO5_11 */ + gpios = <&gpio5 11 0>; linux,code = <158>; /* KEY_BACK */ gpio-key,wakeup; }; program { label = "Program"; - gpios = <&gpio4 12 0>; /* GPIO5_12 */ + gpios = <&gpio5 12 0>; linux,code = <362>; /* KEY_PROGRAM */ gpio-key,wakeup; }; volume-up { label = "Volume Up"; - gpios = <&gpio4 13 0>; /* GPIO5_13 */ + gpios = <&gpio5 13 0>; linux,code = <115>; /* KEY_VOLUMEUP */ }; volume-down { label = "Volume Down"; - gpios = <&gpio3 0 0>; /* GPIO4_0 */ + gpios = <&gpio4 0 0>; linux,code = <114>; /* KEY_VOLUMEDOWN */ }; }; diff --git a/trunk/arch/arm/boot/dts/imx53-evk.dts b/trunk/arch/arm/boot/dts/imx53-evk.dts index 3f3a88185ff8..5bac4aa4800b 100644 --- a/trunk/arch/arm/boot/dts/imx53-evk.dts +++ b/trunk/arch/arm/boot/dts/imx53-evk.dts @@ -29,15 +29,14 @@ aips@50000000 { /* AIPS1 */ spba@50000000 { esdhc@50004000 { /* ESDHC1 */ - cd-gpios = <&gpio2 13 0>; /* GPIO3_13 */ - wp-gpios = <&gpio2 14 0>; /* GPIO3_14 */ + cd-gpios = <&gpio3 13 0>; + wp-gpios = <&gpio3 14 0>; status = "okay"; }; ecspi@50010000 { /* ECSPI1 */ fsl,spi-num-chipselects = <2>; - cs-gpios = <&gpio1 30 0>, /* GPIO2_30 */ - <&gpio2 19 0>; /* GPIO3_19 */ + cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>; status = "okay"; flash: at45db321d@1 { @@ -61,8 +60,8 @@ }; esdhc@50020000 { /* ESDHC3 */ - cd-gpios = <&gpio2 11 0>; /* GPIO3_11 */ - wp-gpios = <&gpio2 12 0>; /* GPIO3_12 */ + cd-gpios = <&gpio3 11 0>; + wp-gpios = <&gpio3 12 0>; status = "okay"; }; }; @@ -76,7 +75,7 @@ reg = <0x53fa8000 0x4000>; }; - uart0: uart@53fbc000 { /* UART1 */ + uart1: uart@53fbc000 { status = "okay"; }; }; @@ -102,7 +101,7 @@ fec@63fec000 { phy-mode = "rmii"; - phy-reset-gpios = <&gpio6 6 0>; /* GPIO7_6 */ + phy-reset-gpios = <&gpio7 6 0>; status = "okay"; }; }; @@ -113,7 +112,7 @@ green { label = "Heartbeat"; - gpios = <&gpio6 7 0>; /* GPIO7_7 */ + gpios = <&gpio7 7 0>; linux,default-trigger = "heartbeat"; }; }; diff --git a/trunk/arch/arm/boot/dts/imx53-qsb.dts b/trunk/arch/arm/boot/dts/imx53-qsb.dts index ae6de6d0c3f1..5c57c8672c36 100644 --- a/trunk/arch/arm/boot/dts/imx53-qsb.dts +++ b/trunk/arch/arm/boot/dts/imx53-qsb.dts @@ -29,13 +29,13 @@ aips@50000000 { /* AIPS1 */ spba@50000000 { esdhc@50004000 { /* ESDHC1 */ - cd-gpios = <&gpio2 13 0>; /* GPIO3_13 */ + cd-gpios = <&gpio3 13 0>; status = "okay"; }; esdhc@50020000 { /* ESDHC3 */ - cd-gpios = <&gpio2 11 0>; /* GPIO3_11 */ - wp-gpios = <&gpio2 12 0>; /* GPIO3_12 */ + cd-gpios = <&gpio3 11 0>; + wp-gpios = <&gpio3 12 0>; status = "okay"; }; }; @@ -49,7 +49,7 @@ reg = <0x53fa8000 0x4000>; }; - uart0: uart@53fbc000 { /* UART1 */ + uart1: uart@53fbc000 { status = "okay"; }; }; @@ -84,7 +84,7 @@ fec@63fec000 { phy-mode = "rmii"; - phy-reset-gpios = <&gpio6 6 0>; /* GPIO7_6 */ + phy-reset-gpios = <&gpio7 6 0>; status = "okay"; }; }; @@ -95,20 +95,20 @@ power { label = "Power Button"; - gpios = <&gpio0 8 0>; /* GPIO1_8 */ + gpios = <&gpio1 8 0>; linux,code = <116>; /* KEY_POWER */ gpio-key,wakeup; }; volume-up { label = "Volume Up"; - gpios = <&gpio1 14 0>; /* GPIO2_14 */ + gpios = <&gpio2 14 0>; linux,code = <115>; /* KEY_VOLUMEUP */ }; volume-down { label = "Volume Down"; - gpios = <&gpio1 15 0>; /* GPIO2_15 */ + gpios = <&gpio2 15 0>; linux,code = <114>; /* KEY_VOLUMEDOWN */ }; }; @@ -118,7 +118,7 @@ user { label = "Heartbeat"; - gpios = <&gpio6 7 0>; /* GPIO7_7 */ + gpios = <&gpio7 7 0>; linux,default-trigger = "heartbeat"; }; }; diff --git a/trunk/arch/arm/boot/dts/imx53-smd.dts b/trunk/arch/arm/boot/dts/imx53-smd.dts index b1c062eea715..c7ee86c2dfb5 100644 --- a/trunk/arch/arm/boot/dts/imx53-smd.dts +++ b/trunk/arch/arm/boot/dts/imx53-smd.dts @@ -29,8 +29,8 @@ aips@50000000 { /* AIPS1 */ spba@50000000 { esdhc@50004000 { /* ESDHC1 */ - cd-gpios = <&gpio2 13 0>; /* GPIO3_13 */ - wp-gpios = <&gpio3 11 0>; /* GPIO4_11 */ + cd-gpios = <&gpio3 13 0>; + wp-gpios = <&gpio4 11 0>; status = "okay"; }; @@ -39,15 +39,14 @@ status = "okay"; }; - uart2: uart@5000c000 { /* UART3 */ + uart3: uart@5000c000 { fsl,uart-has-rtscts; status = "okay"; }; ecspi@50010000 { /* ECSPI1 */ fsl,spi-num-chipselects = <2>; - cs-gpios = <&gpio1 30 0>, /* GPIO2_30 */ - <&gpio2 19 0>; /* GPIO3_19 */ + cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>; status = "okay"; zigbee: mc1323@0 { @@ -91,11 +90,11 @@ reg = <0x53fa8000 0x4000>; }; - uart0: uart@53fbc000 { /* UART1 */ + uart1: uart@53fbc000 { status = "okay"; }; - uart1: uart@53fc0000 { /* UART2 */ + uart2: uart@53fc0000 { status = "okay"; }; }; @@ -145,7 +144,7 @@ fec@63fec000 { phy-mode = "rmii"; - phy-reset-gpios = <&gpio6 6 0>; /* GPIO7_6 */ + phy-reset-gpios = <&gpio7 6 0>; status = "okay"; }; }; @@ -156,13 +155,13 @@ volume-up { label = "Volume Up"; - gpios = <&gpio1 14 0>; /* GPIO2_14 */ + gpios = <&gpio2 14 0>; linux,code = <115>; /* KEY_VOLUMEUP */ }; volume-down { label = "Volume Down"; - gpios = <&gpio1 15 0>; /* GPIO2_15 */ + gpios = <&gpio2 15 0>; linux,code = <114>; /* KEY_VOLUMEDOWN */ }; }; diff --git a/trunk/arch/arm/boot/dts/imx53.dtsi b/trunk/arch/arm/boot/dts/imx53.dtsi index 099cd84ee372..5dd91b942c91 100644 --- a/trunk/arch/arm/boot/dts/imx53.dtsi +++ b/trunk/arch/arm/boot/dts/imx53.dtsi @@ -14,11 +14,11 @@ / { aliases { - serial0 = &uart0; - serial1 = &uart1; - serial2 = &uart2; - serial3 = &uart3; - serial4 = &uart4; + serial0 = &uart1; + serial1 = &uart2; + serial2 = &uart3; + serial3 = &uart4; + serial4 = &uart5; }; tzic: tz-interrupt-controller@0fffc000 { @@ -88,7 +88,7 @@ status = "disabled"; }; - uart2: uart@5000c000 { /* UART3 */ + uart3: uart@5000c000 { compatible = "fsl,imx53-uart", "fsl,imx21-uart"; reg = <0x5000c000 0x4000>; interrupts = <33>; @@ -119,7 +119,7 @@ }; }; - gpio0: gpio@53f84000 { /* GPIO1 */ + gpio1: gpio@53f84000 { compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; reg = <0x53f84000 0x4000>; interrupts = <50 51>; @@ -129,7 +129,7 @@ #interrupt-cells = <1>; }; - gpio1: gpio@53f88000 { /* GPIO2 */ + gpio2: gpio@53f88000 { compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; reg = <0x53f88000 0x4000>; interrupts = <52 53>; @@ -139,7 +139,7 @@ #interrupt-cells = <1>; }; - gpio2: gpio@53f8c000 { /* GPIO3 */ + gpio3: gpio@53f8c000 { compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; reg = <0x53f8c000 0x4000>; interrupts = <54 55>; @@ -149,7 +149,7 @@ #interrupt-cells = <1>; }; - gpio3: gpio@53f90000 { /* GPIO4 */ + gpio4: gpio@53f90000 { compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; reg = <0x53f90000 0x4000>; interrupts = <56 57>; @@ -173,21 +173,21 @@ status = "disabled"; }; - uart0: uart@53fbc000 { /* UART1 */ + uart1: uart@53fbc000 { compatible = "fsl,imx53-uart", "fsl,imx21-uart"; reg = <0x53fbc000 0x4000>; interrupts = <31>; status = "disabled"; }; - uart1: uart@53fc0000 { /* UART2 */ + uart2: uart@53fc0000 { compatible = "fsl,imx53-uart", "fsl,imx21-uart"; reg = <0x53fc0000 0x4000>; interrupts = <32>; status = "disabled"; }; - gpio4: gpio@53fdc000 { /* GPIO5 */ + gpio5: gpio@53fdc000 { compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; reg = <0x53fdc000 0x4000>; interrupts = <103 104>; @@ -197,7 +197,7 @@ #interrupt-cells = <1>; }; - gpio5: gpio@53fe0000 { /* GPIO6 */ + gpio6: gpio@53fe0000 { compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; reg = <0x53fe0000 0x4000>; interrupts = <105 106>; @@ -207,7 +207,7 @@ #interrupt-cells = <1>; }; - gpio6: gpio@53fe4000 { /* GPIO7 */ + gpio7: gpio@53fe4000 { compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; reg = <0x53fe4000 0x4000>; interrupts = <107 108>; @@ -226,7 +226,7 @@ status = "disabled"; }; - uart3: uart@53ff0000 { /* UART4 */ + uart4: uart@53ff0000 { compatible = "fsl,imx53-uart", "fsl,imx21-uart"; reg = <0x53ff0000 0x4000>; interrupts = <13>; @@ -241,7 +241,7 @@ reg = <0x60000000 0x10000000>; ranges; - uart4: uart@63f90000 { /* UART5 */ + uart5: uart@63f90000 { compatible = "fsl,imx53-uart", "fsl,imx21-uart"; reg = <0x63f90000 0x4000>; interrupts = <86>; diff --git a/trunk/arch/arm/boot/dts/imx6q-sabreauto.dts b/trunk/arch/arm/boot/dts/imx6q-arm2.dts similarity index 78% rename from trunk/arch/arm/boot/dts/imx6q-sabreauto.dts rename to trunk/arch/arm/boot/dts/imx6q-arm2.dts index 072974e443f2..c3977e0478b9 100644 --- a/trunk/arch/arm/boot/dts/imx6q-sabreauto.dts +++ b/trunk/arch/arm/boot/dts/imx6q-arm2.dts @@ -14,8 +14,8 @@ /include/ "imx6q.dtsi" / { - model = "Freescale i.MX6 Quad SABRE Automotive Board"; - compatible = "fsl,imx6q-sabreauto", "fsl,imx6q"; + model = "Freescale i.MX6 Quad Armadillo2 Board"; + compatible = "fsl,imx6q-arm2", "fsl,imx6q"; chosen { bootargs = "console=ttymxc0,115200 root=/dev/mmcblk3p3 rootwait"; @@ -34,8 +34,8 @@ }; usdhc@02198000 { /* uSDHC3 */ - cd-gpios = <&gpio5 11 0>; /* GPIO6_11 */ - wp-gpios = <&gpio5 14 0>; /* GPIO6_14 */ + cd-gpios = <&gpio6 11 0>; + wp-gpios = <&gpio6 14 0>; status = "okay"; }; @@ -44,7 +44,7 @@ status = "okay"; }; - uart3: uart@021f0000 { /* UART4 */ + uart4: uart@021f0000 { status = "okay"; }; }; @@ -55,7 +55,7 @@ debug-led { label = "Heartbeat"; - gpios = <&gpio2 25 0>; /* GPIO3_25 */ + gpios = <&gpio3 25 0>; linux,default-trigger = "heartbeat"; }; }; diff --git a/trunk/arch/arm/boot/dts/imx6q-sabrelite.dts b/trunk/arch/arm/boot/dts/imx6q-sabrelite.dts new file mode 100644 index 000000000000..08d920de7286 --- /dev/null +++ b/trunk/arch/arm/boot/dts/imx6q-sabrelite.dts @@ -0,0 +1,49 @@ +/* + * Copyright 2011 Freescale Semiconductor, Inc. + * Copyright 2011 Linaro Ltd. + * + * The code contained herein is licensed under the GNU General Public + * License. You may obtain a copy of the GNU General Public License + * Version 2 or later at the following locations: + * + * http://www.opensource.org/licenses/gpl-license.html + * http://www.gnu.org/copyleft/gpl.html + */ + +/dts-v1/; +/include/ "imx6q.dtsi" + +/ { + model = "Freescale i.MX6 Quad SABRE Lite Board"; + compatible = "fsl,imx6q-sabrelite", "fsl,imx6q"; + + memory { + reg = <0x10000000 0x40000000>; + }; + + soc { + aips-bus@02100000 { /* AIPS2 */ + enet@02188000 { + phy-mode = "rgmii"; + phy-reset-gpios = <&gpio3 23 0>; + status = "okay"; + }; + + usdhc@02198000 { /* uSDHC3 */ + cd-gpios = <&gpio7 0 0>; + wp-gpios = <&gpio7 1 0>; + status = "okay"; + }; + + usdhc@0219c000 { /* uSDHC4 */ + cd-gpios = <&gpio2 6 0>; + wp-gpios = <&gpio2 7 0>; + status = "okay"; + }; + + uart2: uart@021e8000 { + status = "okay"; + }; + }; + }; +}; diff --git a/trunk/arch/arm/boot/dts/imx6q.dtsi b/trunk/arch/arm/boot/dts/imx6q.dtsi index 7dda599558cc..263e8f3664b5 100644 --- a/trunk/arch/arm/boot/dts/imx6q.dtsi +++ b/trunk/arch/arm/boot/dts/imx6q.dtsi @@ -14,11 +14,11 @@ / { aliases { - serial0 = &uart0; - serial1 = &uart1; - serial2 = &uart2; - serial3 = &uart3; - serial4 = &uart4; + serial0 = &uart1; + serial1 = &uart2; + serial2 = &uart3; + serial3 = &uart4; + serial4 = &uart5; }; cpus { @@ -165,7 +165,7 @@ status = "disabled"; }; - uart0: uart@02020000 { /* UART1 */ + uart1: uart@02020000 { compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; reg = <0x02020000 0x4000>; interrupts = <0 26 0x04>; @@ -247,7 +247,7 @@ interrupts = <0 55 0x04>; }; - gpio0: gpio@0209c000 { /* GPIO1 */ + gpio1: gpio@0209c000 { compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio"; reg = <0x0209c000 0x4000>; interrupts = <0 66 0x04 0 67 0x04>; @@ -257,7 +257,7 @@ #interrupt-cells = <1>; }; - gpio1: gpio@020a0000 { /* GPIO2 */ + gpio2: gpio@020a0000 { compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio"; reg = <0x020a0000 0x4000>; interrupts = <0 68 0x04 0 69 0x04>; @@ -267,7 +267,7 @@ #interrupt-cells = <1>; }; - gpio2: gpio@020a4000 { /* GPIO3 */ + gpio3: gpio@020a4000 { compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio"; reg = <0x020a4000 0x4000>; interrupts = <0 70 0x04 0 71 0x04>; @@ -277,7 +277,7 @@ #interrupt-cells = <1>; }; - gpio3: gpio@020a8000 { /* GPIO4 */ + gpio4: gpio@020a8000 { compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio"; reg = <0x020a8000 0x4000>; interrupts = <0 72 0x04 0 73 0x04>; @@ -287,7 +287,7 @@ #interrupt-cells = <1>; }; - gpio4: gpio@020ac000 { /* GPIO5 */ + gpio5: gpio@020ac000 { compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio"; reg = <0x020ac000 0x4000>; interrupts = <0 74 0x04 0 75 0x04>; @@ -297,7 +297,7 @@ #interrupt-cells = <1>; }; - gpio5: gpio@020b0000 { /* GPIO6 */ + gpio6: gpio@020b0000 { compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio"; reg = <0x020b0000 0x4000>; interrupts = <0 76 0x04 0 77 0x04>; @@ -307,7 +307,7 @@ #interrupt-cells = <1>; }; - gpio6: gpio@020b4000 { /* GPIO7 */ + gpio7: gpio@020b4000 { compatible = "fsl,imx6q-gpio", "fsl,imx31-gpio"; reg = <0x020b4000 0x4000>; interrupts = <0 78 0x04 0 79 0x04>; @@ -543,28 +543,28 @@ interrupts = <0 18 0x04>; }; - uart1: uart@021e8000 { /* UART2 */ + uart2: uart@021e8000 { compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; reg = <0x021e8000 0x4000>; interrupts = <0 27 0x04>; status = "disabled"; }; - uart2: uart@021ec000 { /* UART3 */ + uart3: uart@021ec000 { compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; reg = <0x021ec000 0x4000>; interrupts = <0 28 0x04>; status = "disabled"; }; - uart3: uart@021f0000 { /* UART4 */ + uart4: uart@021f0000 { compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; reg = <0x021f0000 0x4000>; interrupts = <0 29 0x04>; status = "disabled"; }; - uart4: uart@021f4000 { /* UART5 */ + uart5: uart@021f4000 { compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; reg = <0x021f4000 0x4000>; interrupts = <0 30 0x04>; diff --git a/trunk/arch/arm/boot/dts/omap2.dtsi b/trunk/arch/arm/boot/dts/omap2.dtsi new file mode 100644 index 000000000000..f2ab4ea7cc0e --- /dev/null +++ b/trunk/arch/arm/boot/dts/omap2.dtsi @@ -0,0 +1,67 @@ +/* + * Device Tree Source for OMAP2 SoC + * + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +/include/ "skeleton.dtsi" + +/ { + compatible = "ti,omap2430", "ti,omap2420", "ti,omap2"; + + aliases { + serial0 = &uart1; + serial1 = &uart2; + serial2 = &uart3; + }; + + cpus { + cpu@0 { + compatible = "arm,arm1136jf-s"; + }; + }; + + soc { + compatible = "ti,omap-infra"; + mpu { + compatible = "ti,omap2-mpu"; + ti,hwmods = "mpu"; + }; + }; + + ocp { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + ti,hwmods = "l3_main"; + + intc: interrupt-controller@1 { + compatible = "ti,omap2-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + + uart1: serial@4806a000 { + compatible = "ti,omap2-uart"; + ti,hwmods = "uart1"; + clock-frequency = <48000000>; + }; + + uart2: serial@4806c000 { + compatible = "ti,omap2-uart"; + ti,hwmods = "uart2"; + clock-frequency = <48000000>; + }; + + uart3: serial@4806e000 { + compatible = "ti,omap2-uart"; + ti,hwmods = "uart3"; + clock-frequency = <48000000>; + }; + }; +}; diff --git a/trunk/arch/arm/boot/dts/omap3.dtsi b/trunk/arch/arm/boot/dts/omap3.dtsi index d202bb5ec7ef..216c3317461d 100644 --- a/trunk/arch/arm/boot/dts/omap3.dtsi +++ b/trunk/arch/arm/boot/dts/omap3.dtsi @@ -13,6 +13,13 @@ / { compatible = "ti,omap3430", "ti,omap3"; + aliases { + serial0 = &uart1; + serial1 = &uart2; + serial2 = &uart3; + serial3 = &uart4; + }; + cpus { cpu@0 { compatible = "arm,cortex-a8"; @@ -59,5 +66,29 @@ interrupt-controller; #interrupt-cells = <1>; }; + + uart1: serial@0x4806a000 { + compatible = "ti,omap3-uart"; + ti,hwmods = "uart1"; + clock-frequency = <48000000>; + }; + + uart2: serial@0x4806c000 { + compatible = "ti,omap3-uart"; + ti,hwmods = "uart2"; + clock-frequency = <48000000>; + }; + + uart3: serial@0x49020000 { + compatible = "ti,omap3-uart"; + ti,hwmods = "uart3"; + clock-frequency = <48000000>; + }; + + uart4: serial@0x49042000 { + compatible = "ti,omap3-uart"; + ti,hwmods = "uart4"; + clock-frequency = <48000000>; + }; }; }; diff --git a/trunk/arch/arm/boot/dts/omap4.dtsi b/trunk/arch/arm/boot/dts/omap4.dtsi index 4c61c829043a..e8fe75fac7c5 100644 --- a/trunk/arch/arm/boot/dts/omap4.dtsi +++ b/trunk/arch/arm/boot/dts/omap4.dtsi @@ -21,6 +21,10 @@ interrupt-parent = <&gic>; aliases { + serial0 = &uart1; + serial1 = &uart2; + serial2 = &uart3; + serial3 = &uart4; }; cpus { @@ -99,5 +103,29 @@ reg = <0x48241000 0x1000>, <0x48240100 0x0100>; }; + + uart1: serial@0x4806a000 { + compatible = "ti,omap4-uart"; + ti,hwmods = "uart1"; + clock-frequency = <48000000>; + }; + + uart2: serial@0x4806c000 { + compatible = "ti,omap4-uart"; + ti,hwmods = "uart2"; + clock-frequency = <48000000>; + }; + + uart3: serial@0x48020000 { + compatible = "ti,omap4-uart"; + ti,hwmods = "uart3"; + clock-frequency = <48000000>; + }; + + uart4: serial@0x4806e000 { + compatible = "ti,omap4-uart"; + ti,hwmods = "uart4"; + clock-frequency = <48000000>; + }; }; }; diff --git a/trunk/arch/arm/boot/dts/tegra-cardhu.dts b/trunk/arch/arm/boot/dts/tegra-cardhu.dts new file mode 100644 index 000000000000..70c41fc897d7 --- /dev/null +++ b/trunk/arch/arm/boot/dts/tegra-cardhu.dts @@ -0,0 +1,36 @@ +/dts-v1/; + +/include/ "tegra30.dtsi" + +/ { + model = "NVIDIA Tegra30 Cardhu evaluation board"; + compatible = "nvidia,cardhu", "nvidia,tegra30"; + + memory { + reg = < 0x80000000 0x40000000 >; + }; + + serial@70006000 { + clock-frequency = < 408000000 >; + }; + + i2c@7000c000 { + clock-frequency = <100000>; + }; + + i2c@7000c400 { + clock-frequency = <100000>; + }; + + i2c@7000c500 { + clock-frequency = <100000>; + }; + + i2c@7000c700 { + clock-frequency = <100000>; + }; + + i2c@7000d000 { + clock-frequency = <100000>; + }; +}; diff --git a/trunk/arch/arm/boot/dts/tegra-harmony.dts b/trunk/arch/arm/boot/dts/tegra-harmony.dts index 0e225b86b652..80afa1b70b80 100644 --- a/trunk/arch/arm/boot/dts/tegra-harmony.dts +++ b/trunk/arch/arm/boot/dts/tegra-harmony.dts @@ -1,16 +1,11 @@ /dts-v1/; -/memreserve/ 0x1c000000 0x04000000; /include/ "tegra20.dtsi" / { model = "NVIDIA Tegra2 Harmony evaluation board"; compatible = "nvidia,harmony", "nvidia,tegra20"; - chosen { - bootargs = "vmalloc=192M video=tegrafb console=ttyS0,115200n8 root=/dev/mmcblk0p2 rw rootwait"; - }; - memory@0 { reg = < 0x00000000 0x40000000 >; }; @@ -52,16 +47,40 @@ ext-mic-en-gpios = <&gpio 185 0>; }; + serial@70006000 { + status = "disable"; + }; + + serial@70006040 { + status = "disable"; + }; + + serial@70006200 { + status = "disable"; + }; + serial@70006300 { clock-frequency = < 216000000 >; }; + serial@70006400 { + status = "disable"; + }; + + sdhci@c8000000 { + status = "disable"; + }; + sdhci@c8000200 { cd-gpios = <&gpio 69 0>; /* gpio PI5 */ wp-gpios = <&gpio 57 0>; /* gpio PH1 */ power-gpios = <&gpio 155 0>; /* gpio PT3 */ }; + sdhci@c8000400 { + status = "disable"; + }; + sdhci@c8000600 { cd-gpios = <&gpio 58 0>; /* gpio PH2 */ wp-gpios = <&gpio 59 0>; /* gpio PH3 */ diff --git a/trunk/arch/arm/boot/dts/tegra-paz00.dts b/trunk/arch/arm/boot/dts/tegra-paz00.dts new file mode 100644 index 000000000000..1a1d7023b69b --- /dev/null +++ b/trunk/arch/arm/boot/dts/tegra-paz00.dts @@ -0,0 +1,77 @@ +/dts-v1/; + +/include/ "tegra20.dtsi" + +/ { + model = "Toshiba AC100 / Dynabook AZ"; + compatible = "compal,paz00", "nvidia,tegra20"; + + memory@0 { + reg = <0x00000000 0x20000000>; + }; + + i2c@7000c000 { + clock-frequency = <400000>; + }; + + i2c@7000c400 { + clock-frequency = <400000>; + }; + + i2c@7000c500 { + status = "disable"; + }; + + nvec@7000c500 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "nvidia,nvec"; + reg = <0x7000C500 0x100>; + interrupts = <0 92 0x04>; + clock-frequency = <80000>; + request-gpios = <&gpio 170 0>; + slave-addr = <138>; + }; + + i2c@7000d000 { + clock-frequency = <400000>; + }; + + serial@70006000 { + clock-frequency = <216000000>; + }; + + serial@70006040 { + status = "disable"; + }; + + serial@70006200 { + status = "disable"; + }; + + serial@70006300 { + clock-frequency = <216000000>; + }; + + serial@70006400 { + status = "disable"; + }; + + sdhci@c8000000 { + cd-gpios = <&gpio 173 0>; /* gpio PV5 */ + wp-gpios = <&gpio 57 0>; /* gpio PH1 */ + power-gpios = <&gpio 155 0>; /* gpio PT3 */ + }; + + sdhci@c8000200 { + status = "disable"; + }; + + sdhci@c8000400 { + status = "disable"; + }; + + sdhci@c8000600 { + support-8bit; + }; +}; diff --git a/trunk/arch/arm/boot/dts/tegra-seaboard.dts b/trunk/arch/arm/boot/dts/tegra-seaboard.dts index a72299b8e668..b55a02e34ba7 100644 --- a/trunk/arch/arm/boot/dts/tegra-seaboard.dts +++ b/trunk/arch/arm/boot/dts/tegra-seaboard.dts @@ -1,25 +1,65 @@ /dts-v1/; -/memreserve/ 0x1c000000 0x04000000; /include/ "tegra20.dtsi" / { model = "NVIDIA Seaboard"; compatible = "nvidia,seaboard", "nvidia,tegra20"; - chosen { - bootargs = "vmalloc=192M video=tegrafb console=ttyS0,115200n8 root=/dev/mmcblk1p3 rw rootwait"; - }; - memory { device_type = "memory"; reg = < 0x00000000 0x40000000 >; }; + i2c@7000c000 { + clock-frequency = <400000>; + }; + + i2c@7000c400 { + clock-frequency = <400000>; + }; + + i2c@7000c500 { + clock-frequency = <400000>; + }; + + i2c@7000d000 { + clock-frequency = <400000>; + + adt7461@4c { + compatible = "adt7461"; + reg = <0x4c>; + }; + }; + + serial@70006000 { + status = "disable"; + }; + + serial@70006040 { + status = "disable"; + }; + + serial@70006200 { + status = "disable"; + }; + serial@70006300 { clock-frequency = < 216000000 >; }; + serial@70006400 { + status = "disable"; + }; + + sdhci@c8000000 { + status = "disable"; + }; + + sdhci@c8000200 { + status = "disable"; + }; + sdhci@c8000400 { cd-gpios = <&gpio 69 0>; /* gpio PI5 */ wp-gpios = <&gpio 57 0>; /* gpio PH1 */ @@ -29,4 +69,28 @@ sdhci@c8000600 { support-8bit; }; + + usb@c5000000 { + nvidia,vbus-gpio = <&gpio 24 0>; /* PD0 */ + }; + + gpio-keys { + compatible = "gpio-keys"; + + power { + label = "Power"; + gpios = <&gpio 170 1>; /* gpio PV2, active low */ + linux,code = <116>; /* KEY_POWER */ + gpio-key,wakeup; + }; + + lid { + label = "Lid"; + gpios = <&gpio 23 0>; /* gpio PC7 */ + linux,input-type = <5>; /* EV_SW */ + linux,code = <0>; /* SW_LID */ + debounce-interval = <1>; + gpio-key,wakeup; + }; + }; }; diff --git a/trunk/arch/arm/boot/dts/tegra-trimslice.dts b/trunk/arch/arm/boot/dts/tegra-trimslice.dts new file mode 100644 index 000000000000..3b3ee7db99f3 --- /dev/null +++ b/trunk/arch/arm/boot/dts/tegra-trimslice.dts @@ -0,0 +1,65 @@ +/dts-v1/; + +/include/ "tegra20.dtsi" + +/ { + model = "Compulab TrimSlice board"; + compatible = "compulab,trimslice", "nvidia,tegra20"; + + memory@0 { + reg = < 0x00000000 0x40000000 >; + }; + + i2c@7000c000 { + clock-frequency = <400000>; + }; + + i2c@7000c400 { + clock-frequency = <400000>; + }; + + i2c@7000c500 { + clock-frequency = <400000>; + }; + + i2c@7000d000 { + status = "disable"; + }; + + serial@70006000 { + clock-frequency = < 216000000 >; + }; + + serial@70006040 { + status = "disable"; + }; + + serial@70006200 { + status = "disable"; + }; + + serial@70006300 { + status = "disable"; + }; + + serial@70006400 { + status = "disable"; + }; + + sdhci@c8000000 { + status = "disable"; + }; + + sdhci@c8000200 { + status = "disable"; + }; + + sdhci@c8000400 { + status = "disable"; + }; + + sdhci@c8000600 { + cd-gpios = <&gpio 121 0>; + wp-gpios = <&gpio 122 0>; + }; +}; diff --git a/trunk/arch/arm/boot/dts/tegra-ventana.dts b/trunk/arch/arm/boot/dts/tegra-ventana.dts index 3f9abd6b6964..c7d3b87f29df 100644 --- a/trunk/arch/arm/boot/dts/tegra-ventana.dts +++ b/trunk/arch/arm/boot/dts/tegra-ventana.dts @@ -1,24 +1,59 @@ /dts-v1/; -/memreserve/ 0x1c000000 0x04000000; /include/ "tegra20.dtsi" / { model = "NVIDIA Tegra2 Ventana evaluation board"; compatible = "nvidia,ventana", "nvidia,tegra20"; - chosen { - bootargs = "vmalloc=192M video=tegrafb console=ttyS0,115200n8 root=/dev/ram rdinit=/sbin/init"; - }; - memory { reg = < 0x00000000 0x40000000 >; }; + i2c@7000c000 { + clock-frequency = <400000>; + }; + + i2c@7000c400 { + clock-frequency = <400000>; + }; + + i2c@7000c500 { + clock-frequency = <400000>; + }; + + i2c@7000d000 { + clock-frequency = <400000>; + }; + + serial@70006000 { + status = "disable"; + }; + + serial@70006040 { + status = "disable"; + }; + + serial@70006200 { + status = "disable"; + }; + serial@70006300 { clock-frequency = < 216000000 >; }; + serial@70006400 { + status = "disable"; + }; + + sdhci@c8000000 { + status = "disable"; + }; + + sdhci@c8000200 { + status = "disable"; + }; + sdhci@c8000400 { cd-gpios = <&gpio 69 0>; /* gpio PI5 */ wp-gpios = <&gpio 57 0>; /* gpio PH1 */ diff --git a/trunk/arch/arm/boot/dts/tegra20.dtsi b/trunk/arch/arm/boot/dts/tegra20.dtsi index 65d7e6a333eb..3da7afd45322 100644 --- a/trunk/arch/arm/boot/dts/tegra20.dtsi +++ b/trunk/arch/arm/boot/dts/tegra20.dtsi @@ -5,9 +5,9 @@ interrupt-parent = <&intc>; intc: interrupt-controller@50041000 { - compatible = "nvidia,tegra20-gic"; + compatible = "arm,cortex-a9-gic"; interrupt-controller; - #interrupt-cells = <1>; + #interrupt-cells = <3>; reg = < 0x50041000 0x1000 >, < 0x50040100 0x0100 >; }; @@ -17,7 +17,7 @@ #size-cells = <0>; compatible = "nvidia,tegra20-i2c"; reg = <0x7000C000 0x100>; - interrupts = < 70 >; + interrupts = < 0 38 0x04 >; }; i2c@7000c400 { @@ -25,7 +25,7 @@ #size-cells = <0>; compatible = "nvidia,tegra20-i2c"; reg = <0x7000C400 0x100>; - interrupts = < 116 >; + interrupts = < 0 84 0x04 >; }; i2c@7000c500 { @@ -33,38 +33,32 @@ #size-cells = <0>; compatible = "nvidia,tegra20-i2c"; reg = <0x7000C500 0x100>; - interrupts = < 124 >; + interrupts = < 0 92 0x04 >; }; i2c@7000d000 { #address-cells = <1>; #size-cells = <0>; - compatible = "nvidia,tegra20-i2c"; + compatible = "nvidia,tegra20-i2c-dvc"; reg = <0x7000D000 0x200>; - interrupts = < 85 >; + interrupts = < 0 53 0x04 >; }; i2s@70002800 { - #address-cells = <1>; - #size-cells = <0>; compatible = "nvidia,tegra20-i2s"; reg = <0x70002800 0x200>; - interrupts = < 45 >; + interrupts = < 0 13 0x04 >; dma-channel = < 2 >; }; i2s@70002a00 { - #address-cells = <1>; - #size-cells = <0>; compatible = "nvidia,tegra20-i2s"; reg = <0x70002a00 0x200>; - interrupts = < 35 >; + interrupts = < 0 3 0x04 >; dma-channel = < 1 >; }; das@70000c00 { - #address-cells = <1>; - #size-cells = <0>; compatible = "nvidia,tegra20-das"; reg = <0x70000c00 0x80>; }; @@ -72,7 +66,13 @@ gpio: gpio@6000d000 { compatible = "nvidia,tegra20-gpio"; reg = < 0x6000d000 0x1000 >; - interrupts = < 64 65 66 67 87 119 121 >; + interrupts = < 0 32 0x04 + 0 33 0x04 + 0 34 0x04 + 0 35 0x04 + 0 55 0x04 + 0 87 0x04 + 0 89 0x04 >; #gpio-cells = <2>; gpio-controller; }; @@ -89,59 +89,80 @@ compatible = "nvidia,tegra20-uart"; reg = <0x70006000 0x40>; reg-shift = <2>; - interrupts = < 68 >; + interrupts = < 0 36 0x04 >; }; serial@70006040 { compatible = "nvidia,tegra20-uart"; reg = <0x70006040 0x40>; reg-shift = <2>; - interrupts = < 69 >; + interrupts = < 0 37 0x04 >; }; serial@70006200 { compatible = "nvidia,tegra20-uart"; reg = <0x70006200 0x100>; reg-shift = <2>; - interrupts = < 78 >; + interrupts = < 0 46 0x04 >; }; serial@70006300 { compatible = "nvidia,tegra20-uart"; reg = <0x70006300 0x100>; reg-shift = <2>; - interrupts = < 122 >; + interrupts = < 0 90 0x04 >; }; serial@70006400 { compatible = "nvidia,tegra20-uart"; reg = <0x70006400 0x100>; reg-shift = <2>; - interrupts = < 123 >; + interrupts = < 0 91 0x04 >; }; sdhci@c8000000 { compatible = "nvidia,tegra20-sdhci"; reg = <0xc8000000 0x200>; - interrupts = < 46 >; + interrupts = < 0 14 0x04 >; }; sdhci@c8000200 { compatible = "nvidia,tegra20-sdhci"; reg = <0xc8000200 0x200>; - interrupts = < 47 >; + interrupts = < 0 15 0x04 >; }; sdhci@c8000400 { compatible = "nvidia,tegra20-sdhci"; reg = <0xc8000400 0x200>; - interrupts = < 51 >; + interrupts = < 0 19 0x04 >; }; sdhci@c8000600 { compatible = "nvidia,tegra20-sdhci"; reg = <0xc8000600 0x200>; - interrupts = < 63 >; + interrupts = < 0 31 0x04 >; + }; + + usb@c5000000 { + compatible = "nvidia,tegra20-ehci", "usb-ehci"; + reg = <0xc5000000 0x4000>; + interrupts = < 0 20 0x04 >; + phy_type = "utmi"; + }; + + usb@c5004000 { + compatible = "nvidia,tegra20-ehci", "usb-ehci"; + reg = <0xc5004000 0x4000>; + interrupts = < 0 21 0x04 >; + phy_type = "ulpi"; + }; + + usb@c5008000 { + compatible = "nvidia,tegra20-ehci", "usb-ehci"; + reg = <0xc5008000 0x4000>; + interrupts = < 0 97 0x04 >; + phy_type = "utmi"; }; }; diff --git a/trunk/arch/arm/boot/dts/tegra30.dtsi b/trunk/arch/arm/boot/dts/tegra30.dtsi new file mode 100644 index 000000000000..ee7db9892e02 --- /dev/null +++ b/trunk/arch/arm/boot/dts/tegra30.dtsi @@ -0,0 +1,127 @@ +/include/ "skeleton.dtsi" + +/ { + compatible = "nvidia,tegra30"; + interrupt-parent = <&intc>; + + intc: interrupt-controller@50041000 { + compatible = "arm,cortex-a9-gic"; + interrupt-controller; + #interrupt-cells = <3>; + reg = < 0x50041000 0x1000 >, + < 0x50040100 0x0100 >; + }; + + i2c@7000c000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; + reg = <0x7000C000 0x100>; + interrupts = < 0 38 0x04 >; + }; + + i2c@7000c400 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; + reg = <0x7000C400 0x100>; + interrupts = < 0 84 0x04 >; + }; + + i2c@7000c500 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; + reg = <0x7000C500 0x100>; + interrupts = < 0 92 0x04 >; + }; + + i2c@7000c700 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; + reg = <0x7000c700 0x100>; + interrupts = < 0 120 0x04 >; + }; + + i2c@7000d000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; + reg = <0x7000D000 0x100>; + interrupts = < 0 53 0x04 >; + }; + + gpio: gpio@6000d000 { + compatible = "nvidia,tegra30-gpio", "nvidia,tegra20-gpio"; + reg = < 0x6000d000 0x1000 >; + interrupts = < 0 32 0x04 0 33 0x04 0 34 0x04 0 35 0x04 0 55 0x04 0 87 0x04 0 89 0x04 >; + #gpio-cells = <2>; + gpio-controller; + }; + + serial@70006000 { + compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart"; + reg = <0x70006000 0x40>; + reg-shift = <2>; + interrupts = < 0 36 0x04 >; + }; + + serial@70006040 { + compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart"; + reg = <0x70006040 0x40>; + reg-shift = <2>; + interrupts = < 0 37 0x04 >; + }; + + serial@70006200 { + compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart"; + reg = <0x70006200 0x100>; + reg-shift = <2>; + interrupts = < 0 46 0x04 >; + }; + + serial@70006300 { + compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart"; + reg = <0x70006300 0x100>; + reg-shift = <2>; + interrupts = < 0 90 0x04 >; + }; + + serial@70006400 { + compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart"; + reg = <0x70006400 0x100>; + reg-shift = <2>; + interrupts = < 0 91 0x04 >; + }; + + sdhci@78000000 { + compatible = "nvidia,tegra30-sdhci", "nvidia,tegra20-sdhci"; + reg = <0x78000000 0x200>; + interrupts = < 0 14 0x04 >; + }; + + sdhci@78000200 { + compatible = "nvidia,tegra30-sdhci", "nvidia,tegra20-sdhci"; + reg = <0x78000200 0x200>; + interrupts = < 0 15 0x04 >; + }; + + sdhci@78000400 { + compatible = "nvidia,tegra30-sdhci", "nvidia,tegra20-sdhci"; + reg = <0x78000400 0x200>; + interrupts = < 0 19 0x04 >; + }; + + sdhci@78000600 { + compatible = "nvidia,tegra30-sdhci", "nvidia,tegra20-sdhci"; + reg = <0x78000600 0x200>; + interrupts = < 0 31 0x04 >; + }; + + pinmux: pinmux@70000000 { + compatible = "nvidia,tegra30-pinmux"; + reg = < 0x70000868 0xd0 /* Pad control registers */ + 0x70003000 0x3e0 >; /* Mux registers */ + }; +}; diff --git a/trunk/arch/arm/boot/dts/testcases/tests-phandle.dtsi b/trunk/arch/arm/boot/dts/testcases/tests-phandle.dtsi new file mode 100644 index 000000000000..ec0c4e6212c9 --- /dev/null +++ b/trunk/arch/arm/boot/dts/testcases/tests-phandle.dtsi @@ -0,0 +1,37 @@ + +/ { + testcase-data { + phandle-tests { + provider0: provider0 { + #phandle-cells = <0>; + }; + + provider1: provider1 { + #phandle-cells = <1>; + }; + + provider2: provider2 { + #phandle-cells = <2>; + }; + + provider3: provider3 { + #phandle-cells = <3>; + }; + + consumer-a { + phandle-list = <&provider1 1>, + <&provider2 2 0>, + <0>, + <&provider3 4 4 3>, + <&provider2 5 100>, + <&provider0>, + <&provider1 7>; + phandle-list-names = "first", "second", "third"; + + phandle-list-bad-phandle = <12345678 0 0>; + phandle-list-bad-args = <&provider2 1 0>, + <&provider3 0>; + }; + }; + }; +}; diff --git a/trunk/arch/arm/boot/dts/testcases/tests.dtsi b/trunk/arch/arm/boot/dts/testcases/tests.dtsi new file mode 100644 index 000000000000..a7c5067622e8 --- /dev/null +++ b/trunk/arch/arm/boot/dts/testcases/tests.dtsi @@ -0,0 +1 @@ +/include/ "tests-phandle.dtsi" diff --git a/trunk/arch/arm/boot/dts/usb_a9g20.dts b/trunk/arch/arm/boot/dts/usb_a9g20.dts index d66e2c00ac35..f04b535477f5 100644 --- a/trunk/arch/arm/boot/dts/usb_a9g20.dts +++ b/trunk/arch/arm/boot/dts/usb_a9g20.dts @@ -25,6 +25,11 @@ dbgu: serial@fffff200 { status = "okay"; }; + + macb0: ethernet@fffc4000 { + phy-mode = "rmii"; + status = "okay"; + }; }; }; }; diff --git a/trunk/arch/arm/boot/dts/versatile-pb.dts b/trunk/arch/arm/boot/dts/versatile-pb.dts index 8a614e398004..166461073b78 100644 --- a/trunk/arch/arm/boot/dts/versatile-pb.dts +++ b/trunk/arch/arm/boot/dts/versatile-pb.dts @@ -46,3 +46,5 @@ }; }; }; + +/include/ "testcases/tests.dtsi" diff --git a/trunk/arch/arm/configs/imx_v4_v5_defconfig b/trunk/arch/arm/configs/imx_v4_v5_defconfig index cf497ce41dfe..a22e93079063 100644 --- a/trunk/arch/arm/configs/imx_v4_v5_defconfig +++ b/trunk/arch/arm/configs/imx_v4_v5_defconfig @@ -68,7 +68,6 @@ CONFIG_MTD_CFI=y CONFIG_MTD_CFI_ADV_OPTIONS=y CONFIG_MTD_CFI_GEOMETRY=y # CONFIG_MTD_MAP_BANK_WIDTH_1 is not set -# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set # CONFIG_MTD_CFI_I2 is not set CONFIG_MTD_CFI_INTELEXT=y CONFIG_MTD_PHYSMAP=y diff --git a/trunk/arch/arm/configs/omap1_defconfig b/trunk/arch/arm/configs/omap1_defconfig index 945a34f2a34d..dde2a1af7b39 100644 --- a/trunk/arch/arm/configs/omap1_defconfig +++ b/trunk/arch/arm/configs/omap1_defconfig @@ -48,7 +48,6 @@ CONFIG_MACH_SX1=y CONFIG_MACH_NOKIA770=y CONFIG_MACH_AMS_DELTA=y CONFIG_MACH_OMAP_GENERIC=y -CONFIG_OMAP_ARM_182MHZ=y # CONFIG_ARM_THUMB is not set CONFIG_PCCARD=y CONFIG_OMAP_CF=y diff --git a/trunk/arch/arm/configs/pcontrol_g20_defconfig b/trunk/arch/arm/configs/pcontrol_g20_defconfig deleted file mode 100644 index c75c9fcede58..000000000000 --- a/trunk/arch/arm/configs/pcontrol_g20_defconfig +++ /dev/null @@ -1,175 +0,0 @@ -CONFIG_EXPERIMENTAL=y -CONFIG_CROSS_COMPILE="/opt/arm-2010q1/bin/arm-none-linux-gnueabi-" -# CONFIG_LOCALVERSION_AUTO is not set -# CONFIG_SWAP is not set -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_TREE_PREEMPT_RCU=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_NAMESPACES=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_EXPERT=y -# CONFIG_SYSCTL_SYSCALL is not set -# CONFIG_KALLSYMS is not set -# CONFIG_VM_EVENT_COUNTERS is not set -# CONFIG_COMPAT_BRK is not set -CONFIG_SLAB=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -# CONFIG_LBDAF is not set -# CONFIG_BLK_DEV_BSG is not set -CONFIG_DEFAULT_DEADLINE=y -CONFIG_ARCH_AT91=y -CONFIG_ARCH_AT91SAM9G20=y -CONFIG_MACH_PCONTROL_G20=y -CONFIG_AT91_PROGRAMMABLE_CLOCKS=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_PREEMPT=y -CONFIG_AEABI=y -# CONFIG_OABI_COMPAT is not set -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="console=ttyS0,115200 mem=128M mtdparts=atmel_nand:128k(bootstrap)ro,256k(uboot)ro,128k(env1)ro,128k(env2)ro,2M(linux),-(root) root=/dev/mmcblk0p1 rootwait rw" -CONFIG_VFP=y -CONFIG_BINFMT_MISC=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -# CONFIG_INET_XFRM_MODE_TRANSPORT is not set -# CONFIG_INET_XFRM_MODE_TUNNEL is not set -# CONFIG_INET_XFRM_MODE_BEET is not set -# CONFIG_INET_LRO is not set -# CONFIG_IPV6 is not set -CONFIG_VLAN_8021Q=y -# CONFIG_WIRELESS is not set -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -# CONFIG_FW_LOADER is not set -CONFIG_MTD=y -CONFIG_MTD_PARTITIONS=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_COMPLEX_MAPPINGS=y -CONFIG_MTD_PHRAM=m -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_ATMEL=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_ATMEL_TCLIB=y -CONFIG_EEPROM_AT24=m -CONFIG_SCSI=m -# CONFIG_SCSI_PROC_FS is not set -CONFIG_BLK_DEV_SD=m -CONFIG_SCSI_MULTI_LUN=y -# CONFIG_SCSI_LOWLEVEL is not set -CONFIG_NETDEVICES=y -CONFIG_MACVLAN=m -CONFIG_TUN=m -CONFIG_SMSC_PHY=m -CONFIG_BROADCOM_PHY=m -CONFIG_NET_ETHERNET=y -CONFIG_MII=y -CONFIG_MACB=y -CONFIG_SMSC911X=m -# CONFIG_NETDEV_1000 is not set -# CONFIG_NETDEV_10000 is not set -# CONFIG_WLAN is not set -CONFIG_PPP=m -CONFIG_PPP_ASYNC=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_MPPE=m -CONFIG_INPUT_POLLDEV=y -CONFIG_INPUT_SPARSEKMAP=y -# CONFIG_INPUT_MOUSEDEV is not set -CONFIG_INPUT_EVDEV=m -CONFIG_INPUT_EVBUG=m -# CONFIG_KEYBOARD_ATKBD is not set -CONFIG_KEYBOARD_GPIO=m -CONFIG_KEYBOARD_MATRIX=m -# CONFIG_INPUT_MOUSE is not set -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_INPUT_MISC=y -CONFIG_INPUT_UINPUT=m -CONFIG_INPUT_GPIO_ROTARY_ENCODER=m -# CONFIG_SERIO is not set -# CONFIG_DEVKMEM is not set -CONFIG_SERIAL_ATMEL=y -CONFIG_SERIAL_ATMEL_CONSOLE=y -CONFIG_SERIAL_MAX3100=m -# CONFIG_LEGACY_PTYS is not set -# CONFIG_HW_RANDOM is not set -CONFIG_R3964=m -CONFIG_I2C=m -CONFIG_I2C_CHARDEV=m -# CONFIG_I2C_HELPER_AUTO is not set -CONFIG_I2C_GPIO=m -CONFIG_SPI=y -CONFIG_SPI_ATMEL=m -CONFIG_SPI_SPIDEV=m -CONFIG_GPIO_SYSFS=y -CONFIG_W1=m -CONFIG_W1_MASTER_GPIO=m -CONFIG_W1_SLAVE_DS2431=m -# CONFIG_HWMON is not set -CONFIG_WATCHDOG=y -CONFIG_AT91SAM9X_WATCHDOG=y -# CONFIG_MFD_SUPPORT is not set -# CONFIG_HID_SUPPORT is not set -CONFIG_USB=y -# CONFIG_USB_DEVICE_CLASS is not set -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_STORAGE=m -CONFIG_USB_LIBUSUAL=y -CONFIG_USB_SERIAL=m -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_FTDI_SIO=m -CONFIG_USB_SERIAL_PL2303=m -CONFIG_USB_GADGET=y -CONFIG_USB_ZERO=m -CONFIG_USB_ETH=m -CONFIG_USB_FILE_STORAGE=m -CONFIG_USB_G_SERIAL=m -CONFIG_USB_G_HID=m -CONFIG_MMC=y -CONFIG_MMC_UNSAFE_RESUME=y -CONFIG_MMC_ATMELMCI=y -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_TIMER=y -CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_AT91SAM9=y -CONFIG_AUXDISPLAY=y -CONFIG_UIO=y -CONFIG_UIO_PDRV=y -CONFIG_STAGING=y -# CONFIG_STAGING_EXCLUDE_BUILD is not set -CONFIG_IIO=y -CONFIG_EXT2_FS=y -CONFIG_EXT3_FS=y -# CONFIG_EXT3_FS_XATTR is not set -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_NFS_V4=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_850=y -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_ISO8859_15=y -CONFIG_NLS_UTF8=y -# CONFIG_RCU_CPU_STALL_DETECTOR is not set -CONFIG_CRYPTO=y -CONFIG_CRYPTO_ANSI_CPRNG=y -# CONFIG_CRYPTO_HW is not set -CONFIG_CRC_CCITT=y diff --git a/trunk/arch/arm/configs/tegra_defconfig b/trunk/arch/arm/configs/tegra_defconfig index 195729760aeb..fd5d3041d717 100644 --- a/trunk/arch/arm/configs/tegra_defconfig +++ b/trunk/arch/arm/configs/tegra_defconfig @@ -9,9 +9,8 @@ CONFIG_RESOURCE_COUNTERS=y CONFIG_CGROUP_SCHED=y CONFIG_RT_GROUP_SCHED=y CONFIG_BLK_DEV_INITRD=y -CONFIG_EMBEDDED=y -# CONFIG_SYSCTL_SYSCALL is not set # CONFIG_ELF_CORE is not set +CONFIG_EMBEDDED=y CONFIG_SLAB=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y @@ -20,6 +19,8 @@ CONFIG_MODULE_FORCE_UNLOAD=y # CONFIG_IOSCHED_DEADLINE is not set # CONFIG_IOSCHED_CFQ is not set CONFIG_ARCH_TEGRA=y +CONFIG_ARCH_TEGRA_2x_SOC=y +CONFIG_ARCH_TEGRA_3x_SOC=y CONFIG_MACH_HARMONY=y CONFIG_MACH_KAEN=y CONFIG_MACH_PAZ00=y @@ -78,14 +79,12 @@ CONFIG_BLK_DEV_SD=y # CONFIG_SCSI_LOWLEVEL is not set CONFIG_NETDEVICES=y CONFIG_DUMMY=y -CONFIG_NET_ETHERNET=y CONFIG_R8169=y -# CONFIG_NETDEV_10000 is not set -# CONFIG_WLAN is not set CONFIG_USB_PEGASUS=y CONFIG_USB_USBNET=y CONFIG_USB_NET_SMSC75XX=y CONFIG_USB_NET_SMSC95XX=y +# CONFIG_WLAN is not set # CONFIG_INPUT is not set # CONFIG_SERIO is not set # CONFIG_VT is not set diff --git a/trunk/arch/arm/include/asm/ipcbuf.h b/trunk/arch/arm/include/asm/ipcbuf.h index 97683975f7df..84c7e51cb6d0 100644 --- a/trunk/arch/arm/include/asm/ipcbuf.h +++ b/trunk/arch/arm/include/asm/ipcbuf.h @@ -1,29 +1 @@ -#ifndef __ASMARM_IPCBUF_H -#define __ASMARM_IPCBUF_H - -/* - * The ipc64_perm structure for arm architecture. - * Note extra padding because this structure is passed back and forth - * between kernel and user space. - * - * Pad space is left for: - * - 32-bit mode_t and seq - * - 2 miscellaneous 32-bit values - */ - -struct ipc64_perm -{ - __kernel_key_t key; - __kernel_uid32_t uid; - __kernel_gid32_t gid; - __kernel_uid32_t cuid; - __kernel_gid32_t cgid; - __kernel_mode_t mode; - unsigned short __pad1; - unsigned short seq; - unsigned short __pad2; - unsigned long __unused1; - unsigned long __unused2; -}; - -#endif /* __ASMARM_IPCBUF_H */ +#include diff --git a/trunk/arch/arm/include/asm/mach/arch.h b/trunk/arch/arm/include/asm/mach/arch.h index bcb0c883e21e..d7692cafde7f 100644 --- a/trunk/arch/arm/include/asm/mach/arch.h +++ b/trunk/arch/arm/include/asm/mach/arch.h @@ -19,7 +19,7 @@ struct machine_desc { unsigned int nr; /* architecture number */ const char *name; /* architecture name */ unsigned long atag_offset; /* tagged list (relative) */ - const char **dt_compat; /* array of device tree + const char *const *dt_compat; /* array of device tree * 'compatible' strings */ unsigned int nr_irqs; /* number of IRQs */ diff --git a/trunk/arch/arm/include/asm/mach/time.h b/trunk/arch/arm/include/asm/mach/time.h index d5adaae5ee2c..f73c908b7fa0 100644 --- a/trunk/arch/arm/include/asm/mach/time.h +++ b/trunk/arch/arm/include/asm/mach/time.h @@ -10,8 +10,6 @@ #ifndef __ASM_ARM_MACH_TIME_H #define __ASM_ARM_MACH_TIME_H -#include - /* * This is our kernel timer structure. * diff --git a/trunk/arch/arm/include/asm/prom.h b/trunk/arch/arm/include/asm/prom.h index 6f65ca86a5ec..ee0363307918 100644 --- a/trunk/arch/arm/include/asm/prom.h +++ b/trunk/arch/arm/include/asm/prom.h @@ -13,7 +13,6 @@ #ifdef CONFIG_OF -#include #include extern struct machine_desc *setup_machine_fdt(unsigned int dt_phys); diff --git a/trunk/arch/arm/include/asm/thread_info.h b/trunk/arch/arm/include/asm/thread_info.h index 7b5cc8dae06e..0f30c3a78fc1 100644 --- a/trunk/arch/arm/include/asm/thread_info.h +++ b/trunk/arch/arm/include/asm/thread_info.h @@ -142,7 +142,6 @@ extern void vfp_flush_hwstate(struct thread_info *); #define TIF_POLLING_NRFLAG 16 #define TIF_USING_IWMMXT 17 #define TIF_MEMDIE 18 /* is terminating due to OOM killer */ -#define TIF_FREEZE 19 #define TIF_RESTORE_SIGMASK 20 #define TIF_SECCOMP 21 @@ -152,7 +151,6 @@ extern void vfp_flush_hwstate(struct thread_info *); #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT) -#define _TIF_FREEZE (1 << TIF_FREEZE) #define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK) #define _TIF_SECCOMP (1 << TIF_SECCOMP) diff --git a/trunk/arch/arm/include/asm/types.h b/trunk/arch/arm/include/asm/types.h index 48192ac3a23a..28beab917ffc 100644 --- a/trunk/arch/arm/include/asm/types.h +++ b/trunk/arch/arm/include/asm/types.h @@ -3,12 +3,6 @@ #include -#ifndef __ASSEMBLY__ - -typedef unsigned short umode_t; - -#endif /* __ASSEMBLY__ */ - /* * These aren't exported outside the kernel to avoid name space clashes */ diff --git a/trunk/arch/arm/kernel/leds.c b/trunk/arch/arm/kernel/leds.c index 0bcd38341573..1911dae19e4f 100644 --- a/trunk/arch/arm/kernel/leds.c +++ b/trunk/arch/arm/kernel/leds.c @@ -9,7 +9,7 @@ */ #include #include -#include +#include #include #include @@ -34,8 +34,8 @@ static const struct leds_evt_name evt_names[] = { { "red", led_red_on, led_red_off }, }; -static ssize_t leds_store(struct sys_device *dev, - struct sysdev_attribute *attr, +static ssize_t leds_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t size) { int ret = -EINVAL, len = strcspn(buf, " "); @@ -69,15 +69,16 @@ static ssize_t leds_store(struct sys_device *dev, return ret; } -static SYSDEV_ATTR(event, 0200, NULL, leds_store); +static DEVICE_ATTR(event, 0200, NULL, leds_store); -static struct sysdev_class leds_sysclass = { +static struct bus_type leds_subsys = { .name = "leds", + .dev_name = "leds", }; -static struct sys_device leds_device = { +static struct device leds_device = { .id = 0, - .cls = &leds_sysclass, + .bus = &leds_subsys, }; static int leds_suspend(void) @@ -105,11 +106,11 @@ static struct syscore_ops leds_syscore_ops = { static int __init leds_init(void) { int ret; - ret = sysdev_class_register(&leds_sysclass); + ret = subsys_system_register(&leds_subsys, NULL); if (ret == 0) - ret = sysdev_register(&leds_device); + ret = device_register(&leds_device); if (ret == 0) - ret = sysdev_create_file(&leds_device, &attr_event); + ret = device_create_file(&leds_device, &dev_attr_event); if (ret == 0) register_syscore_ops(&leds_syscore_ops); return ret; diff --git a/trunk/arch/arm/mach-at91/Kconfig b/trunk/arch/arm/mach-at91/Kconfig index d111c3e99249..4f991f295284 100644 --- a/trunk/arch/arm/mach-at91/Kconfig +++ b/trunk/arch/arm/mach-at91/Kconfig @@ -3,6 +3,12 @@ if ARCH_AT91 config HAVE_AT91_DATAFLASH_CARD bool +config HAVE_AT91_DBGU0 + bool + +config HAVE_AT91_DBGU1 + bool + config HAVE_AT91_USART3 bool @@ -21,12 +27,14 @@ config ARCH_AT91RM9200 bool "AT91RM9200" select CPU_ARM920T select GENERIC_CLOCKEVENTS + select HAVE_AT91_DBGU0 select HAVE_AT91_USART3 config ARCH_AT91SAM9260 bool "AT91SAM9260 or AT91SAM9XE" select CPU_ARM926T select GENERIC_CLOCKEVENTS + select HAVE_AT91_DBGU0 select HAVE_AT91_USART3 select HAVE_AT91_USART4 select HAVE_AT91_USART5 @@ -37,11 +45,13 @@ config ARCH_AT91SAM9261 select CPU_ARM926T select GENERIC_CLOCKEVENTS select HAVE_FB_ATMEL + select HAVE_AT91_DBGU0 config ARCH_AT91SAM9G10 bool "AT91SAM9G10" select CPU_ARM926T select GENERIC_CLOCKEVENTS + select HAVE_AT91_DBGU0 select HAVE_FB_ATMEL config ARCH_AT91SAM9263 @@ -50,6 +60,7 @@ config ARCH_AT91SAM9263 select GENERIC_CLOCKEVENTS select HAVE_FB_ATMEL select HAVE_NET_MACB + select HAVE_AT91_DBGU1 config ARCH_AT91SAM9RL bool "AT91SAM9RL" @@ -57,11 +68,13 @@ config ARCH_AT91SAM9RL select GENERIC_CLOCKEVENTS select HAVE_AT91_USART3 select HAVE_FB_ATMEL + select HAVE_AT91_DBGU0 config ARCH_AT91SAM9G20 bool "AT91SAM9G20" select CPU_ARM926T select GENERIC_CLOCKEVENTS + select HAVE_AT91_DBGU0 select HAVE_AT91_USART3 select HAVE_AT91_USART4 select HAVE_AT91_USART5 @@ -74,6 +87,7 @@ config ARCH_AT91SAM9G45 select HAVE_AT91_USART3 select HAVE_FB_ATMEL select HAVE_NET_MACB + select HAVE_AT91_DBGU1 config ARCH_AT91CAP9 bool "AT91CAP9" @@ -81,6 +95,7 @@ config ARCH_AT91CAP9 select GENERIC_CLOCKEVENTS select HAVE_FB_ATMEL select HAVE_NET_MACB + select HAVE_AT91_DBGU1 config ARCH_AT91X40 bool "AT91x40" @@ -510,8 +525,13 @@ config AT91_TIMER_HZ choice prompt "Select a UART for early kernel messages" -config AT91_EARLY_DBGU - bool "DBGU" +config AT91_EARLY_DBGU0 + bool "DBGU on rm9200, 9260/9g20, 9261/9g10 and 9rl" + depends on HAVE_AT91_DBGU0 + +config AT91_EARLY_DBGU1 + bool "DBGU on 9263, 9g45 and cap9" + depends on HAVE_AT91_DBGU1 config AT91_EARLY_USART0 bool "USART0" diff --git a/trunk/arch/arm/mach-at91/at91cap9.c b/trunk/arch/arm/mach-at91/at91cap9.c index 29373397d2df..edb879ac04c8 100644 --- a/trunk/arch/arm/mach-at91/at91cap9.c +++ b/trunk/arch/arm/mach-at91/at91cap9.c @@ -13,7 +13,6 @@ */ #include -#include #include #include @@ -23,11 +22,11 @@ #include #include #include -#include #include "soc.h" #include "generic.h" #include "clock.h" +#include "sam9_smc.h" /* -------------------------------------------------------------------- * Clocks @@ -137,7 +136,7 @@ static struct clk pwm_clk = { .type = CLK_TYPE_PERIPHERAL, }; static struct clk macb_clk = { - .name = "macb_clk", + .name = "pclk", .pmc_mask = 1 << AT91CAP9_ID_EMAC, .type = CLK_TYPE_PERIPHERAL, }; @@ -210,6 +209,8 @@ static struct clk *periph_clocks[] __initdata = { }; static struct clk_lookup periph_clocks_lookups[] = { + /* One additional fake clock for macb_hclk */ + CLKDEV_CON_ID("hclk", &macb_clk), CLKDEV_CON_DEV_ID("hclk", "atmel_usba_udc", &utmi_clk), CLKDEV_CON_DEV_ID("pclk", "atmel_usba_udc", &udphs_clk), CLKDEV_CON_DEV_ID("mci_clk", "at91_mci.0", &mmc0_clk), @@ -221,6 +222,10 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), /* fake hclk clock */ CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), + CLKDEV_CON_ID("pioA", &pioABCD_clk), + CLKDEV_CON_ID("pioB", &pioABCD_clk), + CLKDEV_CON_ID("pioC", &pioABCD_clk), + CLKDEV_CON_ID("pioD", &pioABCD_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -293,23 +298,19 @@ void __init at91cap9_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91cap9_gpio[] = { +static struct at91_gpio_bank at91cap9_gpio[] __initdata = { { .id = AT91CAP9_ID_PIOABCD, - .offset = AT91_PIOA, - .clock = &pioABCD_clk, + .regbase = AT91CAP9_BASE_PIOA, }, { .id = AT91CAP9_ID_PIOABCD, - .offset = AT91_PIOB, - .clock = &pioABCD_clk, + .regbase = AT91CAP9_BASE_PIOB, }, { .id = AT91CAP9_ID_PIOABCD, - .offset = AT91_PIOC, - .clock = &pioABCD_clk, + .regbase = AT91CAP9_BASE_PIOC, }, { .id = AT91CAP9_ID_PIOABCD, - .offset = AT91_PIOD, - .clock = &pioABCD_clk, + .regbase = AT91CAP9_BASE_PIOD, } }; @@ -318,12 +319,6 @@ static void at91cap9_restart(char mode, const char *cmd) at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST); } -static void at91cap9_poweroff(void) -{ - at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); -} - - /* -------------------------------------------------------------------- * AT91CAP9 processor initialization * -------------------------------------------------------------------- */ @@ -333,10 +328,16 @@ static void __init at91cap9_map_io(void) at91_init_sram(0, AT91CAP9_SRAM_BASE, AT91CAP9_SRAM_SIZE); } +static void __init at91cap9_ioremap_registers(void) +{ + at91_ioremap_shdwc(AT91CAP9_BASE_SHDWC); + at91sam926x_ioremap_pit(AT91CAP9_BASE_PIT); + at91sam9_ioremap_smc(0, AT91CAP9_BASE_SMC); +} + static void __init at91cap9_initialize(void) { arm_pm_restart = at91cap9_restart; - pm_power_off = at91cap9_poweroff; at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1); /* Register GPIO subsystem */ @@ -394,6 +395,7 @@ static unsigned int at91cap9_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91cap9_soc = { .map_io = at91cap9_map_io, .default_irq_priority = at91cap9_default_irq_priority, + .ioremap_registers = at91cap9_ioremap_registers, .register_clocks = at91cap9_register_clocks, .init = at91cap9_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91cap9_devices.c b/trunk/arch/arm/mach-at91/at91cap9_devices.c index adad70db70eb..d298fb7cb210 100644 --- a/trunk/arch/arm/mach-at91/at91cap9_devices.c +++ b/trunk/arch/arm/mach-at91/at91cap9_devices.c @@ -76,7 +76,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) /* Enable VBus control for UHP ports */ for (i = 0; i < data->ports; i++) { - if (data->vbus_pin[i]) + if (gpio_is_valid(data->vbus_pin[i])) at91_set_gpio_output(data->vbus_pin[i], 0); } @@ -179,7 +179,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) usba_udc_data.pdata.num_ep = ARRAY_SIZE(usba_udc_ep); memcpy(usba_udc_data.ep, usba_udc_ep, sizeof(usba_udc_ep)); - if (data && data->vbus_pin > 0) { + if (data && gpio_is_valid(data->vbus_pin)) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); usba_udc_data.pdata.vbus_pin = data->vbus_pin; @@ -200,7 +200,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) {} #if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE) static u64 eth_dmamask = DMA_BIT_MASK(32); -static struct at91_eth_data eth_data; +static struct macb_platform_data eth_data; static struct resource eth_resources[] = { [0] = { @@ -227,12 +227,12 @@ static struct platform_device at91cap9_eth_device = { .num_resources = ARRAY_SIZE(eth_resources), }; -void __init at91_add_device_eth(struct at91_eth_data *data) +void __init at91_add_device_eth(struct macb_platform_data *data) { if (!data) return; - if (data->phy_irq_pin) { + if (gpio_is_valid(data->phy_irq_pin)) { at91_set_gpio_input(data->phy_irq_pin, 0); at91_set_deglitch(data->phy_irq_pin, 1); } @@ -264,7 +264,7 @@ void __init at91_add_device_eth(struct at91_eth_data *data) platform_device_register(&at91cap9_eth_device); } #else -void __init at91_add_device_eth(struct at91_eth_data *data) {} +void __init at91_add_device_eth(struct macb_platform_data *data) {} #endif @@ -332,13 +332,13 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) return; /* input/irq */ - if (data->det_pin) { + if (gpio_is_valid(data->det_pin)) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (data->wp_pin) + if (gpio_is_valid(data->wp_pin)) at91_set_gpio_input(data->wp_pin, 1); - if (data->vcc_pin) + if (gpio_is_valid(data->vcc_pin)) at91_set_gpio_output(data->vcc_pin, 0); if (mmc_id == 0) { /* MCI0 */ @@ -398,8 +398,8 @@ static struct resource nand_resources[] = { .flags = IORESOURCE_MEM, }, [1] = { - .start = AT91_BASE_SYS + AT91_ECC, - .end = AT91_BASE_SYS + AT91_ECC + SZ_512 - 1, + .start = AT91CAP9_BASE_ECC, + .end = AT91CAP9_BASE_ECC + SZ_512 - 1, .flags = IORESOURCE_MEM, } }; @@ -425,15 +425,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA); /* enable pin */ - if (data->enable_pin) + if (gpio_is_valid(data->enable_pin)) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (data->rdy_pin) + if (gpio_is_valid(data->rdy_pin)) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (data->det_pin) + if (gpio_is_valid(data->det_pin)) at91_set_gpio_input(data->det_pin, 1); nand_data = *data; @@ -670,8 +670,8 @@ static void __init at91_add_device_tc(void) { } static struct resource rtt_resources[] = { { - .start = AT91_BASE_SYS + AT91_RTT, - .end = AT91_BASE_SYS + AT91_RTT + SZ_16 - 1, + .start = AT91CAP9_BASE_RTT, + .end = AT91CAP9_BASE_RTT + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -694,10 +694,19 @@ static void __init at91_add_device_rtt(void) * -------------------------------------------------------------------- */ #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) +static struct resource wdt_resources[] = { + { + .start = AT91CAP9_BASE_WDT, + .end = AT91CAP9_BASE_WDT + SZ_16 - 1, + .flags = IORESOURCE_MEM, + } +}; + static struct platform_device at91cap9_wdt_device = { .name = "at91_wdt", .id = -1, - .num_resources = 0, + .resource = wdt_resources, + .num_resources = ARRAY_SIZE(wdt_resources), }; static void __init at91_add_device_watchdog(void) @@ -807,7 +816,7 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data) at91_set_A_periph(AT91_PIN_PA9, 0); /* AC97RX */ /* reset */ - if (data->reset_pin) + if (gpio_is_valid(data->reset_pin)) at91_set_gpio_output(data->reset_pin, 0); ac97_data = *data; @@ -1021,8 +1030,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} #if defined(CONFIG_SERIAL_ATMEL) static struct resource dbgu_resources[] = { [0] = { - .start = AT91_BASE_SYS + AT91_DBGU, - .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, + .start = AT91CAP9_BASE_DBGU, + .end = AT91CAP9_BASE_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { diff --git a/trunk/arch/arm/mach-at91/at91rm9200.c b/trunk/arch/arm/mach-at91/at91rm9200.c index 430a9fdc3dbf..99c3174e24a2 100644 --- a/trunk/arch/arm/mach-at91/at91rm9200.c +++ b/trunk/arch/arm/mach-at91/at91rm9200.c @@ -23,6 +23,7 @@ #include "soc.h" #include "generic.h" #include "clock.h" +#include "sam9_smc.h" static struct map_desc at91rm9200_io_desc[] __initdata = { { @@ -195,6 +196,10 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk), /* fake hclk clock */ CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), + CLKDEV_CON_ID("pioA", &pioA_clk), + CLKDEV_CON_ID("pioB", &pioB_clk), + CLKDEV_CON_ID("pioC", &pioC_clk), + CLKDEV_CON_ID("pioD", &pioD_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -268,23 +273,19 @@ void __init at91rm9200_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91rm9200_gpio[] = { +static struct at91_gpio_bank at91rm9200_gpio[] __initdata = { { .id = AT91RM9200_ID_PIOA, - .offset = AT91_PIOA, - .clock = &pioA_clk, + .regbase = AT91RM9200_BASE_PIOA, }, { .id = AT91RM9200_ID_PIOB, - .offset = AT91_PIOB, - .clock = &pioB_clk, + .regbase = AT91RM9200_BASE_PIOB, }, { .id = AT91RM9200_ID_PIOC, - .offset = AT91_PIOC, - .clock = &pioC_clk, + .regbase = AT91RM9200_BASE_PIOC, }, { .id = AT91RM9200_ID_PIOD, - .offset = AT91_PIOD, - .clock = &pioD_clk, + .regbase = AT91RM9200_BASE_PIOD, } }; @@ -307,6 +308,10 @@ static void __init at91rm9200_map_io(void) iotable_init(at91rm9200_io_desc, ARRAY_SIZE(at91rm9200_io_desc)); } +static void __init at91rm9200_ioremap_registers(void) +{ +} + static void __init at91rm9200_initialize(void) { arm_pm_restart = at91rm9200_restart; @@ -366,6 +371,7 @@ static unsigned int at91rm9200_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91rm9200_soc = { .map_io = at91rm9200_map_io, .default_irq_priority = at91rm9200_default_irq_priority, + .ioremap_registers = at91rm9200_ioremap_registers, .register_clocks = at91rm9200_register_clocks, .init = at91rm9200_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91rm9200_devices.c b/trunk/arch/arm/mach-at91/at91rm9200_devices.c index ad930688358c..18bacec2b094 100644 --- a/trunk/arch/arm/mach-at91/at91rm9200_devices.c +++ b/trunk/arch/arm/mach-at91/at91rm9200_devices.c @@ -114,11 +114,11 @@ void __init at91_add_device_udc(struct at91_udc_data *data) if (!data) return; - if (data->vbus_pin) { + if (gpio_is_valid(data->vbus_pin)) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); } - if (data->pullup_pin) + if (gpio_is_valid(data->pullup_pin)) at91_set_gpio_output(data->pullup_pin, 0); udc_data = *data; @@ -135,7 +135,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) {} #if defined(CONFIG_ARM_AT91_ETHER) || defined(CONFIG_ARM_AT91_ETHER_MODULE) static u64 eth_dmamask = DMA_BIT_MASK(32); -static struct at91_eth_data eth_data; +static struct macb_platform_data eth_data; static struct resource eth_resources[] = { [0] = { @@ -162,12 +162,12 @@ static struct platform_device at91rm9200_eth_device = { .num_resources = ARRAY_SIZE(eth_resources), }; -void __init at91_add_device_eth(struct at91_eth_data *data) +void __init at91_add_device_eth(struct macb_platform_data *data) { if (!data) return; - if (data->phy_irq_pin) { + if (gpio_is_valid(data->phy_irq_pin)) { at91_set_gpio_input(data->phy_irq_pin, 0); at91_set_deglitch(data->phy_irq_pin, 1); } @@ -199,7 +199,7 @@ void __init at91_add_device_eth(struct at91_eth_data *data) platform_device_register(&at91rm9200_eth_device); } #else -void __init at91_add_device_eth(struct at91_eth_data *data) {} +void __init at91_add_device_eth(struct macb_platform_data *data) {} #endif @@ -260,7 +260,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data) ); /* input/irq */ - if (data->irq_pin) { + if (gpio_is_valid(data->irq_pin)) { at91_set_gpio_input(data->irq_pin, 1); at91_set_deglitch(data->irq_pin, 1); } @@ -268,7 +268,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data) at91_set_deglitch(data->det_pin, 1); /* outputs, initially off */ - if (data->vcc_pin) + if (gpio_is_valid(data->vcc_pin)) at91_set_gpio_output(data->vcc_pin, 0); at91_set_gpio_output(data->rst_pin, 0); @@ -328,13 +328,13 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) return; /* input/irq */ - if (data->det_pin) { + if (gpio_is_valid(data->det_pin)) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (data->wp_pin) + if (gpio_is_valid(data->wp_pin)) at91_set_gpio_input(data->wp_pin, 1); - if (data->vcc_pin) + if (gpio_is_valid(data->vcc_pin)) at91_set_gpio_output(data->vcc_pin, 0); /* CLK */ @@ -419,15 +419,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) ); /* enable pin */ - if (data->enable_pin) + if (gpio_is_valid(data->enable_pin)) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (data->rdy_pin) + if (gpio_is_valid(data->rdy_pin)) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (data->det_pin) + if (gpio_is_valid(data->det_pin)) at91_set_gpio_input(data->det_pin, 1); at91_set_A_periph(AT91_PIN_PC1, 0); /* SMOE */ @@ -665,10 +665,24 @@ static void __init at91_add_device_tc(void) { } * -------------------------------------------------------------------- */ #if defined(CONFIG_RTC_DRV_AT91RM9200) || defined(CONFIG_RTC_DRV_AT91RM9200_MODULE) +static struct resource rtc_resources[] = { + [0] = { + .start = AT91RM9200_BASE_RTC, + .end = AT91RM9200_BASE_RTC + SZ_256 - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = AT91_ID_SYS, + .end = AT91_ID_SYS, + .flags = IORESOURCE_IRQ, + }, +}; + static struct platform_device at91rm9200_rtc_device = { .name = "at91_rtc", .id = -1, - .num_resources = 0, + .resource = rtc_resources, + .num_resources = ARRAY_SIZE(rtc_resources), }; static void __init at91_add_device_rtc(void) @@ -877,8 +891,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} #if defined(CONFIG_SERIAL_ATMEL) static struct resource dbgu_resources[] = { [0] = { - .start = AT91_BASE_SYS + AT91_DBGU, - .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, + .start = AT91RM9200_BASE_DBGU, + .end = AT91RM9200_BASE_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { diff --git a/trunk/arch/arm/mach-at91/at91rm9200_time.c b/trunk/arch/arm/mach-at91/at91rm9200_time.c index 1dd69c85dfec..a028cdf8f974 100644 --- a/trunk/arch/arm/mach-at91/at91rm9200_time.c +++ b/trunk/arch/arm/mach-at91/at91rm9200_time.c @@ -32,6 +32,8 @@ static unsigned long last_crtr; static u32 irqmask; static struct clock_event_device clkevt; +#define RM9200_TIMER_LATCH ((AT91_SLOW_CLOCK + HZ/2) / HZ) + /* * The ST_CRTR is updated asynchronously to the master clock ... but * the updates as seen by the CPU don't seem to be strictly monotonic. @@ -74,8 +76,8 @@ static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id) if (sr & AT91_ST_PITS) { u32 crtr = read_CRTR(); - while (((crtr - last_crtr) & AT91_ST_CRTV) >= LATCH) { - last_crtr += LATCH; + while (((crtr - last_crtr) & AT91_ST_CRTV) >= RM9200_TIMER_LATCH) { + last_crtr += RM9200_TIMER_LATCH; clkevt.event_handler(&clkevt); } return IRQ_HANDLED; @@ -116,7 +118,7 @@ clkevt32k_mode(enum clock_event_mode mode, struct clock_event_device *dev) case CLOCK_EVT_MODE_PERIODIC: /* PIT for periodic irqs; fixed rate of 1/HZ */ irqmask = AT91_ST_PITS; - at91_sys_write(AT91_ST_PIMR, LATCH); + at91_sys_write(AT91_ST_PIMR, RM9200_TIMER_LATCH); break; case CLOCK_EVT_MODE_ONESHOT: /* ALM for oneshot irqs, set by next_event() diff --git a/trunk/arch/arm/mach-at91/at91sam9260.c b/trunk/arch/arm/mach-at91/at91sam9260.c index e76cd49ebc9e..5e46e4a96430 100644 --- a/trunk/arch/arm/mach-at91/at91sam9260.c +++ b/trunk/arch/arm/mach-at91/at91sam9260.c @@ -11,7 +11,6 @@ */ #include -#include #include #include @@ -21,11 +20,11 @@ #include #include #include -#include #include "soc.h" #include "generic.h" #include "clock.h" +#include "sam9_smc.h" /* -------------------------------------------------------------------- * Clocks @@ -120,7 +119,7 @@ static struct clk ohci_clk = { .type = CLK_TYPE_PERIPHERAL, }; static struct clk macb_clk = { - .name = "macb_clk", + .name = "pclk", .pmc_mask = 1 << AT91SAM9260_ID_EMAC, .type = CLK_TYPE_PERIPHERAL, }; @@ -190,6 +189,8 @@ static struct clk *periph_clocks[] __initdata = { }; static struct clk_lookup periph_clocks_lookups[] = { + /* One additional fake clock for macb_hclk */ + CLKDEV_CON_ID("hclk", &macb_clk), CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.0", &spi0_clk), CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.1", &spi1_clk), CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tc0_clk), @@ -209,6 +210,9 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("usart", "fffd8000.serial", &usart5_clk), /* fake hclk clock */ CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), + CLKDEV_CON_ID("pioA", &pioA_clk), + CLKDEV_CON_ID("pioB", &pioB_clk), + CLKDEV_CON_ID("pioC", &pioC_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -270,28 +274,19 @@ void __init at91sam9260_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91sam9260_gpio[] = { +static struct at91_gpio_bank at91sam9260_gpio[] __initdata = { { .id = AT91SAM9260_ID_PIOA, - .offset = AT91_PIOA, - .clock = &pioA_clk, + .regbase = AT91SAM9260_BASE_PIOA, }, { .id = AT91SAM9260_ID_PIOB, - .offset = AT91_PIOB, - .clock = &pioB_clk, + .regbase = AT91SAM9260_BASE_PIOB, }, { .id = AT91SAM9260_ID_PIOC, - .offset = AT91_PIOC, - .clock = &pioC_clk, + .regbase = AT91SAM9260_BASE_PIOC, } }; -static void at91sam9260_poweroff(void) -{ - at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); -} - - /* -------------------------------------------------------------------- * AT91SAM9260 processor initialization * -------------------------------------------------------------------- */ @@ -325,10 +320,16 @@ static void __init at91sam9260_map_io(void) } } +static void __init at91sam9260_ioremap_registers(void) +{ + at91_ioremap_shdwc(AT91SAM9260_BASE_SHDWC); + at91sam926x_ioremap_pit(AT91SAM9260_BASE_PIT); + at91sam9_ioremap_smc(0, AT91SAM9260_BASE_SMC); +} + static void __init at91sam9260_initialize(void) { arm_pm_restart = at91sam9_alt_restart; - pm_power_off = at91sam9260_poweroff; at91_extern_irq = (1 << AT91SAM9260_ID_IRQ0) | (1 << AT91SAM9260_ID_IRQ1) | (1 << AT91SAM9260_ID_IRQ2); @@ -381,6 +382,7 @@ static unsigned int at91sam9260_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91sam9260_soc = { .map_io = at91sam9260_map_io, .default_irq_priority = at91sam9260_default_irq_priority, + .ioremap_registers = at91sam9260_ioremap_registers, .register_clocks = at91sam9260_register_clocks, .init = at91sam9260_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91sam9260_devices.c b/trunk/arch/arm/mach-at91/at91sam9260_devices.c index 629fa9774972..642ccb6d26b2 100644 --- a/trunk/arch/arm/mach-at91/at91sam9260_devices.c +++ b/trunk/arch/arm/mach-at91/at91sam9260_devices.c @@ -115,7 +115,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) if (!data) return; - if (data->vbus_pin) { + if (gpio_is_valid(data->vbus_pin)) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); } @@ -136,7 +136,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) {} #if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE) static u64 eth_dmamask = DMA_BIT_MASK(32); -static struct at91_eth_data eth_data; +static struct macb_platform_data eth_data; static struct resource eth_resources[] = { [0] = { @@ -163,12 +163,12 @@ static struct platform_device at91sam9260_eth_device = { .num_resources = ARRAY_SIZE(eth_resources), }; -void __init at91_add_device_eth(struct at91_eth_data *data) +void __init at91_add_device_eth(struct macb_platform_data *data) { if (!data) return; - if (data->phy_irq_pin) { + if (gpio_is_valid(data->phy_irq_pin)) { at91_set_gpio_input(data->phy_irq_pin, 0); at91_set_deglitch(data->phy_irq_pin, 1); } @@ -200,7 +200,7 @@ void __init at91_add_device_eth(struct at91_eth_data *data) platform_device_register(&at91sam9260_eth_device); } #else -void __init at91_add_device_eth(struct at91_eth_data *data) {} +void __init at91_add_device_eth(struct macb_platform_data *data) {} #endif @@ -243,13 +243,13 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) return; /* input/irq */ - if (data->det_pin) { + if (gpio_is_valid(data->det_pin)) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (data->wp_pin) + if (gpio_is_valid(data->wp_pin)) at91_set_gpio_input(data->wp_pin, 1); - if (data->vcc_pin) + if (gpio_is_valid(data->vcc_pin)) at91_set_gpio_output(data->vcc_pin, 0); /* CLK */ @@ -330,11 +330,11 @@ void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data) for (i = 0; i < ATMCI_MAX_NR_SLOTS; i++) { if (data->slot[i].bus_width) { /* input/irq */ - if (data->slot[i].detect_pin) { + if (gpio_is_valid(data->slot[i].detect_pin)) { at91_set_gpio_input(data->slot[i].detect_pin, 1); at91_set_deglitch(data->slot[i].detect_pin, 1); } - if (data->slot[i].wp_pin) + if (gpio_is_valid(data->slot[i].wp_pin)) at91_set_gpio_input(data->slot[i].wp_pin, 1); switch (i) { @@ -399,8 +399,8 @@ static struct resource nand_resources[] = { .flags = IORESOURCE_MEM, }, [1] = { - .start = AT91_BASE_SYS + AT91_ECC, - .end = AT91_BASE_SYS + AT91_ECC + SZ_512 - 1, + .start = AT91SAM9260_BASE_ECC, + .end = AT91SAM9260_BASE_ECC + SZ_512 - 1, .flags = IORESOURCE_MEM, } }; @@ -426,15 +426,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); /* enable pin */ - if (data->enable_pin) + if (gpio_is_valid(data->enable_pin)) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (data->rdy_pin) + if (gpio_is_valid(data->rdy_pin)) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (data->det_pin) + if (gpio_is_valid(data->det_pin)) at91_set_gpio_input(data->det_pin, 1); nand_data = *data; @@ -714,8 +714,8 @@ static void __init at91_add_device_tc(void) { } static struct resource rtt_resources[] = { { - .start = AT91_BASE_SYS + AT91_RTT, - .end = AT91_BASE_SYS + AT91_RTT + SZ_16 - 1, + .start = AT91SAM9260_BASE_RTT, + .end = AT91SAM9260_BASE_RTT + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -738,10 +738,19 @@ static void __init at91_add_device_rtt(void) * -------------------------------------------------------------------- */ #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) +static struct resource wdt_resources[] = { + { + .start = AT91SAM9260_BASE_WDT, + .end = AT91SAM9260_BASE_WDT + SZ_16 - 1, + .flags = IORESOURCE_MEM, + } +}; + static struct platform_device at91sam9260_wdt_device = { .name = "at91_wdt", .id = -1, - .num_resources = 0, + .resource = wdt_resources, + .num_resources = ARRAY_SIZE(wdt_resources), }; static void __init at91_add_device_watchdog(void) @@ -837,8 +846,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} #if defined(CONFIG_SERIAL_ATMEL) static struct resource dbgu_resources[] = { [0] = { - .start = AT91_BASE_SYS + AT91_DBGU, - .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, + .start = AT91SAM9260_BASE_DBGU, + .end = AT91SAM9260_BASE_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { @@ -1281,17 +1290,17 @@ void __init at91_add_device_cf(struct at91_cf_data *data) at91_sys_write(AT91_MATRIX_EBICSA, csa); - if (data->rst_pin) { + if (gpio_is_valid(data->rst_pin)) { at91_set_multi_drive(data->rst_pin, 0); at91_set_gpio_output(data->rst_pin, 1); } - if (data->irq_pin) { + if (gpio_is_valid(data->irq_pin)) { at91_set_gpio_input(data->irq_pin, 0); at91_set_deglitch(data->irq_pin, 1); } - if (data->det_pin) { + if (gpio_is_valid(data->det_pin)) { at91_set_gpio_input(data->det_pin, 0); at91_set_deglitch(data->det_pin, 1); } diff --git a/trunk/arch/arm/mach-at91/at91sam9261.c b/trunk/arch/arm/mach-at91/at91sam9261.c index 19ac7c0729a0..b85b9ea60170 100644 --- a/trunk/arch/arm/mach-at91/at91sam9261.c +++ b/trunk/arch/arm/mach-at91/at91sam9261.c @@ -11,7 +11,6 @@ */ #include -#include #include #include @@ -20,11 +19,11 @@ #include #include #include -#include #include "soc.h" #include "generic.h" #include "clock.h" +#include "sam9_smc.h" /* -------------------------------------------------------------------- * Clocks @@ -176,6 +175,9 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk), CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &hck0), + CLKDEV_CON_ID("pioA", &pioA_clk), + CLKDEV_CON_ID("pioB", &pioB_clk), + CLKDEV_CON_ID("pioC", &pioC_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -251,28 +253,19 @@ void __init at91sam9261_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91sam9261_gpio[] = { +static struct at91_gpio_bank at91sam9261_gpio[] __initdata = { { .id = AT91SAM9261_ID_PIOA, - .offset = AT91_PIOA, - .clock = &pioA_clk, + .regbase = AT91SAM9261_BASE_PIOA, }, { .id = AT91SAM9261_ID_PIOB, - .offset = AT91_PIOB, - .clock = &pioB_clk, + .regbase = AT91SAM9261_BASE_PIOB, }, { .id = AT91SAM9261_ID_PIOC, - .offset = AT91_PIOC, - .clock = &pioC_clk, + .regbase = AT91SAM9261_BASE_PIOC, } }; -static void at91sam9261_poweroff(void) -{ - at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); -} - - /* -------------------------------------------------------------------- * AT91SAM9261 processor initialization * -------------------------------------------------------------------- */ @@ -285,10 +278,16 @@ static void __init at91sam9261_map_io(void) at91_init_sram(0, AT91SAM9261_SRAM_BASE, AT91SAM9261_SRAM_SIZE); } +static void __init at91sam9261_ioremap_registers(void) +{ + at91_ioremap_shdwc(AT91SAM9261_BASE_SHDWC); + at91sam926x_ioremap_pit(AT91SAM9261_BASE_PIT); + at91sam9_ioremap_smc(0, AT91SAM9261_BASE_SMC); +} + static void __init at91sam9261_initialize(void) { arm_pm_restart = at91sam9_alt_restart; - pm_power_off = at91sam9261_poweroff; at91_extern_irq = (1 << AT91SAM9261_ID_IRQ0) | (1 << AT91SAM9261_ID_IRQ1) | (1 << AT91SAM9261_ID_IRQ2); @@ -341,6 +340,7 @@ static unsigned int at91sam9261_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91sam9261_soc = { .map_io = at91sam9261_map_io, .default_irq_priority = at91sam9261_default_irq_priority, + .ioremap_registers = at91sam9261_ioremap_registers, .register_clocks = at91sam9261_register_clocks, .init = at91sam9261_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91sam9261_devices.c b/trunk/arch/arm/mach-at91/at91sam9261_devices.c index a178b58b0b9c..fc59cbdb0e3c 100644 --- a/trunk/arch/arm/mach-at91/at91sam9261_devices.c +++ b/trunk/arch/arm/mach-at91/at91sam9261_devices.c @@ -118,7 +118,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) if (!data) return; - if (data->vbus_pin) { + if (gpio_is_valid(data->vbus_pin)) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); } @@ -171,13 +171,13 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) return; /* input/irq */ - if (data->det_pin) { + if (gpio_is_valid(data->det_pin)) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (data->wp_pin) + if (gpio_is_valid(data->wp_pin)) at91_set_gpio_input(data->wp_pin, 1); - if (data->vcc_pin) + if (gpio_is_valid(data->vcc_pin)) at91_set_gpio_output(data->vcc_pin, 0); /* CLK */ @@ -240,15 +240,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); /* enable pin */ - if (data->enable_pin) + if (gpio_is_valid(data->enable_pin)) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (data->rdy_pin) + if (gpio_is_valid(data->rdy_pin)) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (data->det_pin) + if (gpio_is_valid(data->det_pin)) at91_set_gpio_input(data->det_pin, 1); at91_set_A_periph(AT91_PIN_PC0, 0); /* NANDOE */ @@ -600,8 +600,8 @@ static void __init at91_add_device_tc(void) { } static struct resource rtt_resources[] = { { - .start = AT91_BASE_SYS + AT91_RTT, - .end = AT91_BASE_SYS + AT91_RTT + SZ_16 - 1, + .start = AT91SAM9261_BASE_RTT, + .end = AT91SAM9261_BASE_RTT + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -624,10 +624,19 @@ static void __init at91_add_device_rtt(void) * -------------------------------------------------------------------- */ #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) +static struct resource wdt_resources[] = { + { + .start = AT91SAM9261_BASE_WDT, + .end = AT91SAM9261_BASE_WDT + SZ_16 - 1, + .flags = IORESOURCE_MEM, + } +}; + static struct platform_device at91sam9261_wdt_device = { .name = "at91_wdt", .id = -1, - .num_resources = 0, + .resource = wdt_resources, + .num_resources = ARRAY_SIZE(wdt_resources), }; static void __init at91_add_device_watchdog(void) @@ -816,8 +825,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} #if defined(CONFIG_SERIAL_ATMEL) static struct resource dbgu_resources[] = { [0] = { - .start = AT91_BASE_SYS + AT91_DBGU, - .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, + .start = AT91SAM9261_BASE_DBGU, + .end = AT91SAM9261_BASE_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { diff --git a/trunk/arch/arm/mach-at91/at91sam9263.c b/trunk/arch/arm/mach-at91/at91sam9263.c index 50d016310031..79e3669b1117 100644 --- a/trunk/arch/arm/mach-at91/at91sam9263.c +++ b/trunk/arch/arm/mach-at91/at91sam9263.c @@ -11,7 +11,6 @@ */ #include -#include #include #include @@ -19,11 +18,11 @@ #include #include #include -#include #include "soc.h" #include "generic.h" #include "clock.h" +#include "sam9_smc.h" /* -------------------------------------------------------------------- * Clocks @@ -118,7 +117,7 @@ static struct clk pwm_clk = { .type = CLK_TYPE_PERIPHERAL, }; static struct clk macb_clk = { - .name = "macb_clk", + .name = "pclk", .pmc_mask = 1 << AT91SAM9263_ID_EMAC, .type = CLK_TYPE_PERIPHERAL, }; @@ -182,6 +181,8 @@ static struct clk *periph_clocks[] __initdata = { }; static struct clk_lookup periph_clocks_lookups[] = { + /* One additional fake clock for macb_hclk */ + CLKDEV_CON_ID("hclk", &macb_clk), CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk), CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), CLKDEV_CON_DEV_ID("mci_clk", "at91_mci.0", &mmc0_clk), @@ -191,6 +192,11 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tcb_clk), /* fake hclk clock */ CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), + CLKDEV_CON_ID("pioA", &pioA_clk), + CLKDEV_CON_ID("pioB", &pioB_clk), + CLKDEV_CON_ID("pioC", &pioCDE_clk), + CLKDEV_CON_ID("pioD", &pioCDE_clk), + CLKDEV_CON_ID("pioE", &pioCDE_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -263,36 +269,25 @@ void __init at91sam9263_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91sam9263_gpio[] = { +static struct at91_gpio_bank at91sam9263_gpio[] __initdata = { { .id = AT91SAM9263_ID_PIOA, - .offset = AT91_PIOA, - .clock = &pioA_clk, + .regbase = AT91SAM9263_BASE_PIOA, }, { .id = AT91SAM9263_ID_PIOB, - .offset = AT91_PIOB, - .clock = &pioB_clk, + .regbase = AT91SAM9263_BASE_PIOB, }, { .id = AT91SAM9263_ID_PIOCDE, - .offset = AT91_PIOC, - .clock = &pioCDE_clk, + .regbase = AT91SAM9263_BASE_PIOC, }, { .id = AT91SAM9263_ID_PIOCDE, - .offset = AT91_PIOD, - .clock = &pioCDE_clk, + .regbase = AT91SAM9263_BASE_PIOD, }, { .id = AT91SAM9263_ID_PIOCDE, - .offset = AT91_PIOE, - .clock = &pioCDE_clk, + .regbase = AT91SAM9263_BASE_PIOE, } }; -static void at91sam9263_poweroff(void) -{ - at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); -} - - /* -------------------------------------------------------------------- * AT91SAM9263 processor initialization * -------------------------------------------------------------------- */ @@ -303,10 +298,17 @@ static void __init at91sam9263_map_io(void) at91_init_sram(1, AT91SAM9263_SRAM1_BASE, AT91SAM9263_SRAM1_SIZE); } +static void __init at91sam9263_ioremap_registers(void) +{ + at91_ioremap_shdwc(AT91SAM9263_BASE_SHDWC); + at91sam926x_ioremap_pit(AT91SAM9263_BASE_PIT); + at91sam9_ioremap_smc(0, AT91SAM9263_BASE_SMC0); + at91sam9_ioremap_smc(1, AT91SAM9263_BASE_SMC1); +} + static void __init at91sam9263_initialize(void) { arm_pm_restart = at91sam9_alt_restart; - pm_power_off = at91sam9263_poweroff; at91_extern_irq = (1 << AT91SAM9263_ID_IRQ0) | (1 << AT91SAM9263_ID_IRQ1); /* Register GPIO subsystem */ @@ -358,6 +360,7 @@ static unsigned int at91sam9263_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91sam9263_soc = { .map_io = at91sam9263_map_io, .default_irq_priority = at91sam9263_default_irq_priority, + .ioremap_registers = at91sam9263_ioremap_registers, .register_clocks = at91sam9263_register_clocks, .init = at91sam9263_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91sam9263_devices.c b/trunk/arch/arm/mach-at91/at91sam9263_devices.c index d5fbac9ff4fa..7b46b2787022 100644 --- a/trunk/arch/arm/mach-at91/at91sam9263_devices.c +++ b/trunk/arch/arm/mach-at91/at91sam9263_devices.c @@ -70,7 +70,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) /* Enable VBus control for UHP ports */ for (i = 0; i < data->ports; i++) { - if (data->vbus_pin[i]) + if (gpio_is_valid(data->vbus_pin[i])) at91_set_gpio_output(data->vbus_pin[i], 0); } @@ -123,7 +123,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) if (!data) return; - if (data->vbus_pin) { + if (gpio_is_valid(data->vbus_pin)) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); } @@ -144,7 +144,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) {} #if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE) static u64 eth_dmamask = DMA_BIT_MASK(32); -static struct at91_eth_data eth_data; +static struct macb_platform_data eth_data; static struct resource eth_resources[] = { [0] = { @@ -171,12 +171,12 @@ static struct platform_device at91sam9263_eth_device = { .num_resources = ARRAY_SIZE(eth_resources), }; -void __init at91_add_device_eth(struct at91_eth_data *data) +void __init at91_add_device_eth(struct macb_platform_data *data) { if (!data) return; - if (data->phy_irq_pin) { + if (gpio_is_valid(data->phy_irq_pin)) { at91_set_gpio_input(data->phy_irq_pin, 0); at91_set_deglitch(data->phy_irq_pin, 1); } @@ -208,7 +208,7 @@ void __init at91_add_device_eth(struct at91_eth_data *data) platform_device_register(&at91sam9263_eth_device); } #else -void __init at91_add_device_eth(struct at91_eth_data *data) {} +void __init at91_add_device_eth(struct macb_platform_data *data) {} #endif @@ -276,13 +276,13 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) return; /* input/irq */ - if (data->det_pin) { + if (gpio_is_valid(data->det_pin)) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (data->wp_pin) + if (gpio_is_valid(data->wp_pin)) at91_set_gpio_input(data->wp_pin, 1); - if (data->vcc_pin) + if (gpio_is_valid(data->vcc_pin)) at91_set_gpio_output(data->vcc_pin, 0); if (mmc_id == 0) { /* MCI0 */ @@ -430,17 +430,17 @@ void __init at91_add_device_cf(struct at91_cf_data *data) } at91_sys_write(AT91_MATRIX_EBI0CSA, ebi0_csa); - if (data->det_pin) { + if (gpio_is_valid(data->det_pin)) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (data->irq_pin) { + if (gpio_is_valid(data->irq_pin)) { at91_set_gpio_input(data->irq_pin, 1); at91_set_deglitch(data->irq_pin, 1); } - if (data->vcc_pin) + if (gpio_is_valid(data->vcc_pin)) /* initially off */ at91_set_gpio_output(data->vcc_pin, 0); @@ -473,8 +473,8 @@ static struct resource nand_resources[] = { .flags = IORESOURCE_MEM, }, [1] = { - .start = AT91_BASE_SYS + AT91_ECC0, - .end = AT91_BASE_SYS + AT91_ECC0 + SZ_512 - 1, + .start = AT91SAM9263_BASE_ECC0, + .end = AT91SAM9263_BASE_ECC0 + SZ_512 - 1, .flags = IORESOURCE_MEM, } }; @@ -500,15 +500,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) at91_sys_write(AT91_MATRIX_EBI0CSA, csa | AT91_MATRIX_EBI0_CS3A_SMC_SMARTMEDIA); /* enable pin */ - if (data->enable_pin) + if (gpio_is_valid(data->enable_pin)) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (data->rdy_pin) + if (gpio_is_valid(data->rdy_pin)) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (data->det_pin) + if (gpio_is_valid(data->det_pin)) at91_set_gpio_input(data->det_pin, 1); nand_data = *data; @@ -749,7 +749,7 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data) at91_set_A_periph(AT91_PIN_PB3, 0); /* AC97RX */ /* reset */ - if (data->reset_pin) + if (gpio_is_valid(data->reset_pin)) at91_set_gpio_output(data->reset_pin, 0); ac97_data = *data; @@ -956,8 +956,8 @@ static void __init at91_add_device_tc(void) { } static struct resource rtt0_resources[] = { { - .start = AT91_BASE_SYS + AT91_RTT0, - .end = AT91_BASE_SYS + AT91_RTT0 + SZ_16 - 1, + .start = AT91SAM9263_BASE_RTT0, + .end = AT91SAM9263_BASE_RTT0 + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -971,8 +971,8 @@ static struct platform_device at91sam9263_rtt0_device = { static struct resource rtt1_resources[] = { { - .start = AT91_BASE_SYS + AT91_RTT1, - .end = AT91_BASE_SYS + AT91_RTT1 + SZ_16 - 1, + .start = AT91SAM9263_BASE_RTT1, + .end = AT91SAM9263_BASE_RTT1 + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -996,10 +996,19 @@ static void __init at91_add_device_rtt(void) * -------------------------------------------------------------------- */ #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) +static struct resource wdt_resources[] = { + { + .start = AT91SAM9263_BASE_WDT, + .end = AT91SAM9263_BASE_WDT + SZ_16 - 1, + .flags = IORESOURCE_MEM, + } +}; + static struct platform_device at91sam9263_wdt_device = { .name = "at91_wdt", .id = -1, - .num_resources = 0, + .resource = wdt_resources, + .num_resources = ARRAY_SIZE(wdt_resources), }; static void __init at91_add_device_watchdog(void) @@ -1196,8 +1205,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} static struct resource dbgu_resources[] = { [0] = { - .start = AT91_BASE_SYS + AT91_DBGU, - .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, + .start = AT91SAM9263_BASE_DBGU, + .end = AT91SAM9263_BASE_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { diff --git a/trunk/arch/arm/mach-at91/at91sam926x_time.c b/trunk/arch/arm/mach-at91/at91sam926x_time.c index 4ba85499fa97..d89ead740a99 100644 --- a/trunk/arch/arm/mach-at91/at91sam926x_time.c +++ b/trunk/arch/arm/mach-at91/at91sam926x_time.c @@ -25,7 +25,17 @@ static u32 pit_cycle; /* write-once */ static u32 pit_cnt; /* access only w/system irq blocked */ +static void __iomem *pit_base_addr __read_mostly; +static inline unsigned int pit_read(unsigned int reg_offset) +{ + return __raw_readl(pit_base_addr + reg_offset); +} + +static inline void pit_write(unsigned int reg_offset, unsigned long value) +{ + __raw_writel(value, pit_base_addr + reg_offset); +} /* * Clocksource: just a monotonic counter of MCK/16 cycles. @@ -39,7 +49,7 @@ static cycle_t read_pit_clk(struct clocksource *cs) raw_local_irq_save(flags); elapsed = pit_cnt; - t = at91_sys_read(AT91_PIT_PIIR); + t = pit_read(AT91_PIT_PIIR); raw_local_irq_restore(flags); elapsed += PIT_PICNT(t) * pit_cycle; @@ -64,8 +74,8 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev) switch (mode) { case CLOCK_EVT_MODE_PERIODIC: /* update clocksource counter */ - pit_cnt += pit_cycle * PIT_PICNT(at91_sys_read(AT91_PIT_PIVR)); - at91_sys_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN + pit_cnt += pit_cycle * PIT_PICNT(pit_read(AT91_PIT_PIVR)); + pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN | AT91_PIT_PITIEN); break; case CLOCK_EVT_MODE_ONESHOT: @@ -74,7 +84,7 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev) case CLOCK_EVT_MODE_SHUTDOWN: case CLOCK_EVT_MODE_UNUSED: /* disable irq, leaving the clocksource active */ - at91_sys_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN); + pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN); break; case CLOCK_EVT_MODE_RESUME: break; @@ -103,11 +113,11 @@ static irqreturn_t at91sam926x_pit_interrupt(int irq, void *dev_id) /* The PIT interrupt may be disabled, and is shared */ if ((pit_clkevt.mode == CLOCK_EVT_MODE_PERIODIC) - && (at91_sys_read(AT91_PIT_SR) & AT91_PIT_PITS)) { + && (pit_read(AT91_PIT_SR) & AT91_PIT_PITS)) { unsigned nr_ticks; /* Get number of ticks performed before irq, and ack it */ - nr_ticks = PIT_PICNT(at91_sys_read(AT91_PIT_PIVR)); + nr_ticks = PIT_PICNT(pit_read(AT91_PIT_PIVR)); do { pit_cnt += pit_cycle; pit_clkevt.event_handler(&pit_clkevt); @@ -129,14 +139,14 @@ static struct irqaction at91sam926x_pit_irq = { static void at91sam926x_pit_reset(void) { /* Disable timer and irqs */ - at91_sys_write(AT91_PIT_MR, 0); + pit_write(AT91_PIT_MR, 0); /* Clear any pending interrupts, wait for PIT to stop counting */ - while (PIT_CPIV(at91_sys_read(AT91_PIT_PIVR)) != 0) + while (PIT_CPIV(pit_read(AT91_PIT_PIVR)) != 0) cpu_relax(); /* Start PIT but don't enable IRQ */ - at91_sys_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN); + pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN); } /* @@ -178,7 +188,15 @@ static void __init at91sam926x_pit_init(void) static void at91sam926x_pit_suspend(void) { /* Disable timer */ - at91_sys_write(AT91_PIT_MR, 0); + pit_write(AT91_PIT_MR, 0); +} + +void __init at91sam926x_ioremap_pit(u32 addr) +{ + pit_base_addr = ioremap(addr, 16); + + if (!pit_base_addr) + panic("Impossible to ioremap PIT\n"); } struct sys_timer at91sam926x_timer = { diff --git a/trunk/arch/arm/mach-at91/at91sam9g45.c b/trunk/arch/arm/mach-at91/at91sam9g45.c index ff21f7a60c63..7032dd32cdf0 100644 --- a/trunk/arch/arm/mach-at91/at91sam9g45.c +++ b/trunk/arch/arm/mach-at91/at91sam9g45.c @@ -11,7 +11,6 @@ */ #include -#include #include #include @@ -20,12 +19,12 @@ #include #include #include -#include #include #include "soc.h" #include "generic.h" #include "clock.h" +#include "sam9_smc.h" /* -------------------------------------------------------------------- * Clocks @@ -150,7 +149,7 @@ static struct clk ac97_clk = { .type = CLK_TYPE_PERIPHERAL, }; static struct clk macb_clk = { - .name = "macb_clk", + .name = "pclk", .pmc_mask = 1 << AT91SAM9G45_ID_EMAC, .type = CLK_TYPE_PERIPHERAL, }; @@ -209,6 +208,8 @@ static struct clk *periph_clocks[] __initdata = { }; static struct clk_lookup periph_clocks_lookups[] = { + /* One additional fake clock for macb_hclk */ + CLKDEV_CON_ID("hclk", &macb_clk), /* One additional fake clock for ohci */ CLKDEV_CON_ID("ohci_clk", &uhphs_clk), CLKDEV_CON_DEV_ID("ehci_clk", "atmel-ehci", &uhphs_clk), @@ -231,6 +232,11 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("usart", "fff98000.serial", &usart3_clk), /* fake hclk clock */ CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &uhphs_clk), + CLKDEV_CON_ID("pioA", &pioA_clk), + CLKDEV_CON_ID("pioB", &pioB_clk), + CLKDEV_CON_ID("pioC", &pioC_clk), + CLKDEV_CON_ID("pioD", &pioDE_clk), + CLKDEV_CON_ID("pioE", &pioDE_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -293,27 +299,22 @@ void __init at91sam9g45_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91sam9g45_gpio[] = { +static struct at91_gpio_bank at91sam9g45_gpio[] __initdata = { { .id = AT91SAM9G45_ID_PIOA, - .offset = AT91_PIOA, - .clock = &pioA_clk, + .regbase = AT91SAM9G45_BASE_PIOA, }, { .id = AT91SAM9G45_ID_PIOB, - .offset = AT91_PIOB, - .clock = &pioB_clk, + .regbase = AT91SAM9G45_BASE_PIOB, }, { .id = AT91SAM9G45_ID_PIOC, - .offset = AT91_PIOC, - .clock = &pioC_clk, + .regbase = AT91SAM9G45_BASE_PIOC, }, { .id = AT91SAM9G45_ID_PIODE, - .offset = AT91_PIOD, - .clock = &pioDE_clk, + .regbase = AT91SAM9G45_BASE_PIOD, }, { .id = AT91SAM9G45_ID_PIODE, - .offset = AT91_PIOE, - .clock = &pioDE_clk, + .regbase = AT91SAM9G45_BASE_PIOE, } }; @@ -322,12 +323,6 @@ static void at91sam9g45_restart(char mode, const char *cmd) at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST); } -static void at91sam9g45_poweroff(void) -{ - at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); -} - - /* -------------------------------------------------------------------- * AT91SAM9G45 processor initialization * -------------------------------------------------------------------- */ @@ -338,10 +333,16 @@ static void __init at91sam9g45_map_io(void) init_consistent_dma_size(SZ_4M); } +static void __init at91sam9g45_ioremap_registers(void) +{ + at91_ioremap_shdwc(AT91SAM9G45_BASE_SHDWC); + at91sam926x_ioremap_pit(AT91SAM9G45_BASE_PIT); + at91sam9_ioremap_smc(0, AT91SAM9G45_BASE_SMC); +} + static void __init at91sam9g45_initialize(void) { arm_pm_restart = at91sam9g45_restart; - pm_power_off = at91sam9g45_poweroff; at91_extern_irq = (1 << AT91SAM9G45_ID_IRQ0); /* Register GPIO subsystem */ @@ -393,6 +394,7 @@ static unsigned int at91sam9g45_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91sam9g45_soc = { .map_io = at91sam9g45_map_io, .default_irq_priority = at91sam9g45_default_irq_priority, + .ioremap_registers = at91sam9g45_ioremap_registers, .register_clocks = at91sam9g45_register_clocks, .init = at91sam9g45_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91sam9g45_devices.c b/trunk/arch/arm/mach-at91/at91sam9g45_devices.c index 09a16d6bd5cd..b7582dd10dc3 100644 --- a/trunk/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/trunk/arch/arm/mach-at91/at91sam9g45_devices.c @@ -44,8 +44,8 @@ static struct at_dma_platform_data atdma_pdata = { static struct resource hdmac_resources[] = { [0] = { - .start = AT91_BASE_SYS + AT91_DMA, - .end = AT91_BASE_SYS + AT91_DMA + SZ_512 - 1, + .start = AT91SAM9G45_BASE_DMA, + .end = AT91SAM9G45_BASE_DMA + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { @@ -120,7 +120,7 @@ void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data) /* Enable VBus control for UHP ports */ for (i = 0; i < data->ports; i++) { - if (data->vbus_pin[i]) + if (gpio_is_valid(data->vbus_pin[i])) at91_set_gpio_output(data->vbus_pin[i], 0); } @@ -181,7 +181,7 @@ void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data) /* Enable VBus control for UHP ports */ for (i = 0; i < data->ports; i++) { - if (data->vbus_pin[i]) + if (gpio_is_valid(data->vbus_pin[i])) at91_set_gpio_output(data->vbus_pin[i], 0); } @@ -263,7 +263,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) usba_udc_data.pdata.num_ep = ARRAY_SIZE(usba_udc_ep); memcpy(usba_udc_data.ep, usba_udc_ep, sizeof(usba_udc_ep)); - if (data && data->vbus_pin > 0) { + if (data && gpio_is_valid(data->vbus_pin)) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); usba_udc_data.pdata.vbus_pin = data->vbus_pin; @@ -284,7 +284,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) {} #if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE) static u64 eth_dmamask = DMA_BIT_MASK(32); -static struct at91_eth_data eth_data; +static struct macb_platform_data eth_data; static struct resource eth_resources[] = { [0] = { @@ -311,12 +311,12 @@ static struct platform_device at91sam9g45_eth_device = { .num_resources = ARRAY_SIZE(eth_resources), }; -void __init at91_add_device_eth(struct at91_eth_data *data) +void __init at91_add_device_eth(struct macb_platform_data *data) { if (!data) return; - if (data->phy_irq_pin) { + if (gpio_is_valid(data->phy_irq_pin)) { at91_set_gpio_input(data->phy_irq_pin, 0); at91_set_deglitch(data->phy_irq_pin, 1); } @@ -348,7 +348,7 @@ void __init at91_add_device_eth(struct at91_eth_data *data) platform_device_register(&at91sam9g45_eth_device); } #else -void __init at91_add_device_eth(struct at91_eth_data *data) {} +void __init at91_add_device_eth(struct macb_platform_data *data) {} #endif @@ -449,11 +449,11 @@ void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data) /* input/irq */ - if (data->slot[0].detect_pin) { + if (gpio_is_valid(data->slot[0].detect_pin)) { at91_set_gpio_input(data->slot[0].detect_pin, 1); at91_set_deglitch(data->slot[0].detect_pin, 1); } - if (data->slot[0].wp_pin) + if (gpio_is_valid(data->slot[0].wp_pin)) at91_set_gpio_input(data->slot[0].wp_pin, 1); if (mmc_id == 0) { /* MCI0 */ @@ -529,8 +529,8 @@ static struct resource nand_resources[] = { .flags = IORESOURCE_MEM, }, [1] = { - .start = AT91_BASE_SYS + AT91_ECC, - .end = AT91_BASE_SYS + AT91_ECC + SZ_512 - 1, + .start = AT91SAM9G45_BASE_ECC, + .end = AT91SAM9G45_BASE_ECC + SZ_512 - 1, .flags = IORESOURCE_MEM, } }; @@ -556,15 +556,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA); /* enable pin */ - if (data->enable_pin) + if (gpio_is_valid(data->enable_pin)) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (data->rdy_pin) + if (gpio_is_valid(data->rdy_pin)) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (data->det_pin) + if (gpio_is_valid(data->det_pin)) at91_set_gpio_input(data->det_pin, 1); nand_data = *data; @@ -859,7 +859,7 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data) at91_set_A_periph(AT91_PIN_PD6, 0); /* AC97RX */ /* reset */ - if (data->reset_pin) + if (gpio_is_valid(data->reset_pin)) at91_set_gpio_output(data->reset_pin, 0); ac97_data = *data; @@ -1009,10 +1009,24 @@ static void __init at91_add_device_tc(void) { } * -------------------------------------------------------------------- */ #if defined(CONFIG_RTC_DRV_AT91RM9200) || defined(CONFIG_RTC_DRV_AT91RM9200_MODULE) +static struct resource rtc_resources[] = { + [0] = { + .start = AT91SAM9G45_BASE_RTC, + .end = AT91SAM9G45_BASE_RTC + SZ_256 - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = AT91_ID_SYS, + .end = AT91_ID_SYS, + .flags = IORESOURCE_IRQ, + }, +}; + static struct platform_device at91sam9g45_rtc_device = { .name = "at91_rtc", .id = -1, - .num_resources = 0, + .resource = rtc_resources, + .num_resources = ARRAY_SIZE(rtc_resources), }; static void __init at91_add_device_rtc(void) @@ -1081,8 +1095,8 @@ void __init at91_add_device_tsadcc(struct at91_tsadcc_data *data) {} static struct resource rtt_resources[] = { { - .start = AT91_BASE_SYS + AT91_RTT, - .end = AT91_BASE_SYS + AT91_RTT + SZ_16 - 1, + .start = AT91SAM9G45_BASE_RTT, + .end = AT91SAM9G45_BASE_RTT + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -1133,10 +1147,19 @@ static void __init at91_add_device_trng(void) {} * -------------------------------------------------------------------- */ #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) +static struct resource wdt_resources[] = { + { + .start = AT91SAM9G45_BASE_WDT, + .end = AT91SAM9G45_BASE_WDT + SZ_16 - 1, + .flags = IORESOURCE_MEM, + } +}; + static struct platform_device at91sam9g45_wdt_device = { .name = "at91_wdt", .id = -1, - .num_resources = 0, + .resource = wdt_resources, + .num_resources = ARRAY_SIZE(wdt_resources), }; static void __init at91_add_device_watchdog(void) @@ -1332,8 +1355,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} #if defined(CONFIG_SERIAL_ATMEL) static struct resource dbgu_resources[] = { [0] = { - .start = AT91_BASE_SYS + AT91_DBGU, - .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, + .start = AT91SAM9G45_BASE_DBGU, + .end = AT91SAM9G45_BASE_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { diff --git a/trunk/arch/arm/mach-at91/at91sam9rl.c b/trunk/arch/arm/mach-at91/at91sam9rl.c index 61cbb46f5b0e..d6bcb1da11df 100644 --- a/trunk/arch/arm/mach-at91/at91sam9rl.c +++ b/trunk/arch/arm/mach-at91/at91sam9rl.c @@ -10,7 +10,6 @@ */ #include -#include #include #include @@ -20,11 +19,11 @@ #include #include #include -#include #include "soc.h" #include "generic.h" #include "clock.h" +#include "sam9_smc.h" /* -------------------------------------------------------------------- * Clocks @@ -184,6 +183,10 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("t2_clk", "atmel_tcb.0", &tc2_clk), CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk), CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), + CLKDEV_CON_ID("pioA", &pioA_clk), + CLKDEV_CON_ID("pioB", &pioB_clk), + CLKDEV_CON_ID("pioC", &pioC_clk), + CLKDEV_CON_ID("pioD", &pioD_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -243,32 +246,22 @@ void __init at91sam9rl_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91sam9rl_gpio[] = { +static struct at91_gpio_bank at91sam9rl_gpio[] __initdata = { { .id = AT91SAM9RL_ID_PIOA, - .offset = AT91_PIOA, - .clock = &pioA_clk, + .regbase = AT91SAM9RL_BASE_PIOA, }, { .id = AT91SAM9RL_ID_PIOB, - .offset = AT91_PIOB, - .clock = &pioB_clk, + .regbase = AT91SAM9RL_BASE_PIOB, }, { .id = AT91SAM9RL_ID_PIOC, - .offset = AT91_PIOC, - .clock = &pioC_clk, + .regbase = AT91SAM9RL_BASE_PIOC, }, { .id = AT91SAM9RL_ID_PIOD, - .offset = AT91_PIOD, - .clock = &pioD_clk, + .regbase = AT91SAM9RL_BASE_PIOD, } }; -static void at91sam9rl_poweroff(void) -{ - at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); -} - - /* -------------------------------------------------------------------- * AT91SAM9RL processor initialization * -------------------------------------------------------------------- */ @@ -290,10 +283,16 @@ static void __init at91sam9rl_map_io(void) at91_init_sram(0, AT91SAM9RL_SRAM_BASE, sram_size); } +static void __init at91sam9rl_ioremap_registers(void) +{ + at91_ioremap_shdwc(AT91SAM9RL_BASE_SHDWC); + at91sam926x_ioremap_pit(AT91SAM9RL_BASE_PIT); + at91sam9_ioremap_smc(0, AT91SAM9RL_BASE_SMC); +} + static void __init at91sam9rl_initialize(void) { arm_pm_restart = at91sam9_alt_restart; - pm_power_off = at91sam9rl_poweroff; at91_extern_irq = (1 << AT91SAM9RL_ID_IRQ0); /* Register GPIO subsystem */ @@ -345,6 +344,7 @@ static unsigned int at91sam9rl_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91sam9rl_soc = { .map_io = at91sam9rl_map_io, .default_irq_priority = at91sam9rl_default_irq_priority, + .ioremap_registers = at91sam9rl_ioremap_registers, .register_clocks = at91sam9rl_register_clocks, .init = at91sam9rl_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91sam9rl_devices.c b/trunk/arch/arm/mach-at91/at91sam9rl_devices.c index 628eb566d60c..61908dce9784 100644 --- a/trunk/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/trunk/arch/arm/mach-at91/at91sam9rl_devices.c @@ -39,8 +39,8 @@ static struct at_dma_platform_data atdma_pdata = { static struct resource hdmac_resources[] = { [0] = { - .start = AT91_BASE_SYS + AT91_DMA, - .end = AT91_BASE_SYS + AT91_DMA + SZ_512 - 1, + .start = AT91SAM9RL_BASE_DMA, + .end = AT91SAM9RL_BASE_DMA + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [2] = { @@ -147,7 +147,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) usba_udc_data.pdata.num_ep = ARRAY_SIZE(usba_udc_ep); memcpy(usba_udc_data.ep, usba_udc_ep, sizeof(usba_udc_ep)); - if (data && data->vbus_pin > 0) { + if (data && gpio_is_valid(data->vbus_pin)) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); usba_udc_data.pdata.vbus_pin = data->vbus_pin; @@ -201,13 +201,13 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) return; /* input/irq */ - if (data->det_pin) { + if (gpio_is_valid(data->det_pin)) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (data->wp_pin) + if (gpio_is_valid(data->wp_pin)) at91_set_gpio_input(data->wp_pin, 1); - if (data->vcc_pin) + if (gpio_is_valid(data->vcc_pin)) at91_set_gpio_output(data->vcc_pin, 0); /* CLK */ @@ -248,8 +248,8 @@ static struct resource nand_resources[] = { .flags = IORESOURCE_MEM, }, [1] = { - .start = AT91_BASE_SYS + AT91_ECC, - .end = AT91_BASE_SYS + AT91_ECC + SZ_512 - 1, + .start = AT91SAM9RL_BASE_ECC, + .end = AT91SAM9RL_BASE_ECC + SZ_512 - 1, .flags = IORESOURCE_MEM, } }; @@ -275,15 +275,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); /* enable pin */ - if (data->enable_pin) + if (gpio_is_valid(data->enable_pin)) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (data->rdy_pin) + if (gpio_is_valid(data->rdy_pin)) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (data->det_pin) + if (gpio_is_valid(data->det_pin)) at91_set_gpio_input(data->det_pin, 1); at91_set_A_periph(AT91_PIN_PB4, 0); /* NANDOE */ @@ -483,7 +483,7 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data) at91_set_A_periph(AT91_PIN_PD4, 0); /* AC97RX */ /* reset */ - if (data->reset_pin) + if (gpio_is_valid(data->reset_pin)) at91_set_gpio_output(data->reset_pin, 0); ac97_data = *data; @@ -685,8 +685,8 @@ static void __init at91_add_device_rtc(void) {} static struct resource rtt_resources[] = { { - .start = AT91_BASE_SYS + AT91_RTT, - .end = AT91_BASE_SYS + AT91_RTT + SZ_16 - 1, + .start = AT91SAM9RL_BASE_RTT, + .end = AT91SAM9RL_BASE_RTT + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -709,10 +709,19 @@ static void __init at91_add_device_rtt(void) * -------------------------------------------------------------------- */ #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) +static struct resource wdt_resources[] = { + { + .start = AT91SAM9RL_BASE_WDT, + .end = AT91SAM9RL_BASE_WDT + SZ_16 - 1, + .flags = IORESOURCE_MEM, + } +}; + static struct platform_device at91sam9rl_wdt_device = { .name = "at91_wdt", .id = -1, - .num_resources = 0, + .resource = wdt_resources, + .num_resources = ARRAY_SIZE(wdt_resources), }; static void __init at91_add_device_watchdog(void) @@ -908,8 +917,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} #if defined(CONFIG_SERIAL_ATMEL) static struct resource dbgu_resources[] = { [0] = { - .start = AT91_BASE_SYS + AT91_DBGU, - .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, + .start = AT91SAM9RL_BASE_DBGU, + .end = AT91SAM9RL_BASE_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { diff --git a/trunk/arch/arm/mach-at91/board-1arm.c b/trunk/arch/arm/mach-at91/board-1arm.c index 367d5cd5e362..2628384aaae1 100644 --- a/trunk/arch/arm/mach-at91/board-1arm.c +++ b/trunk/arch/arm/mach-at91/board-1arm.c @@ -63,13 +63,15 @@ static void __init onearm_init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata onearm_eth_data = { +static struct macb_platform_data __initdata onearm_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; static struct at91_usbh_data __initdata onearm_usbh_data = { .ports = 1, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata onearm_udc_data = { diff --git a/trunk/arch/arm/mach-at91/board-afeb-9260v1.c b/trunk/arch/arm/mach-at91/board-afeb-9260v1.c index 4282d96dffa8..3bb40694b02d 100644 --- a/trunk/arch/arm/mach-at91/board-afeb-9260v1.c +++ b/trunk/arch/arm/mach-at91/board-afeb-9260v1.c @@ -75,6 +75,8 @@ static void __init afeb9260_init_early(void) */ static struct at91_usbh_data __initdata afeb9260_usbh_data = { .ports = 1, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -82,7 +84,7 @@ static struct at91_usbh_data __initdata afeb9260_usbh_data = { */ static struct at91_udc_data __initdata afeb9260_udc_data = { .vbus_pin = AT91_PIN_PC5, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; @@ -103,7 +105,7 @@ static struct spi_board_info afeb9260_spi_devices[] = { /* * MACB Ethernet device */ -static struct at91_eth_data __initdata afeb9260_macb_data = { +static struct macb_platform_data __initdata afeb9260_macb_data = { .phy_irq_pin = AT91_PIN_PA9, .is_rmii = 0, }; @@ -138,6 +140,7 @@ static struct atmel_nand_data __initdata afeb9260_nand_data = { .bus_width_16 = 0, .parts = afeb9260_nand_partition, .num_parts = ARRAY_SIZE(afeb9260_nand_partition), + .det_pin = -EINVAL, }; @@ -149,6 +152,7 @@ static struct at91_mmc_data __initdata afeb9260_mmc_data = { .wp_pin = AT91_PIN_PC4, .slot_b = 1, .wire4 = 1, + .vcc_pin = -EINVAL, }; @@ -169,6 +173,8 @@ static struct i2c_board_info __initdata afeb9260_i2c_devices[] = { static struct at91_cf_data afeb9260_cf_data = { .chipselect = 4, .irq_pin = AT91_PIN_PA6, + .det_pin = -EINVAL, + .vcc_pin = -EINVAL, .rst_pin = AT91_PIN_PA7, .flags = AT91_CF_TRUE_IDE, }; diff --git a/trunk/arch/arm/mach-at91/board-cam60.c b/trunk/arch/arm/mach-at91/board-cam60.c index f90cfb32bad2..8510e9e54988 100644 --- a/trunk/arch/arm/mach-at91/board-cam60.c +++ b/trunk/arch/arm/mach-at91/board-cam60.c @@ -62,6 +62,8 @@ static void __init cam60_init_early(void) */ static struct at91_usbh_data __initdata cam60_usbh_data = { .ports = 1, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; @@ -115,7 +117,7 @@ static struct spi_board_info cam60_spi_devices[] __initdata = { /* * MACB Ethernet device */ -static struct __initdata at91_eth_data cam60_macb_data = { +static struct __initdata macb_platform_data cam60_macb_data = { .phy_irq_pin = AT91_PIN_PB5, .is_rmii = 0, }; @@ -135,7 +137,7 @@ static struct mtd_partition __initdata cam60_nand_partition[] = { static struct atmel_nand_data __initdata cam60_nand_data = { .ale = 21, .cle = 22, - // .det_pin = ... not there + .det_pin = -EINVAL, .rdy_pin = AT91_PIN_PA9, .enable_pin = AT91_PIN_PA7, .parts = cam60_nand_partition, @@ -163,7 +165,7 @@ static struct sam9_smc_config __initdata cam60_nand_smc_config = { static void __init cam60_add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &cam60_nand_smc_config); + sam9_smc_configure(0, 3, &cam60_nand_smc_config); at91_add_device_nand(&cam60_nand_data); } diff --git a/trunk/arch/arm/mach-at91/board-cap9adk.c b/trunk/arch/arm/mach-at91/board-cap9adk.c index 5dffd3be62d2..ac3de4f7c31d 100644 --- a/trunk/arch/arm/mach-at91/board-cap9adk.c +++ b/trunk/arch/arm/mach-at91/board-cap9adk.c @@ -70,6 +70,8 @@ static void __init cap9adk_init_early(void) */ static struct at91_usbh_data __initdata cap9adk_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -144,16 +146,17 @@ static struct spi_board_info cap9adk_spi_devices[] = { */ static struct at91_mmc_data __initdata cap9adk_mmc_data = { .wire4 = 1, -// .det_pin = ... not connected -// .wp_pin = ... not connected -// .vcc_pin = ... not connected + .det_pin = -EINVAL, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; /* * MACB Ethernet device */ -static struct at91_eth_data __initdata cap9adk_macb_data = { +static struct macb_platform_data __initdata cap9adk_macb_data = { + .phy_irq_pin = -EINVAL, .is_rmii = 1, }; @@ -172,8 +175,8 @@ static struct mtd_partition __initdata cap9adk_nand_partitions[] = { static struct atmel_nand_data __initdata cap9adk_nand_data = { .ale = 21, .cle = 22, -// .det_pin = ... not connected -// .rdy_pin = ... not connected + .det_pin = -EINVAL, + .rdy_pin = -EINVAL, .enable_pin = AT91_PIN_PD15, .parts = cap9adk_nand_partitions, .num_parts = ARRAY_SIZE(cap9adk_nand_partitions), @@ -212,7 +215,7 @@ static void __init cap9adk_add_device_nand(void) cap9adk_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &cap9adk_nand_smc_config); + sam9_smc_configure(0, 3, &cap9adk_nand_smc_config); at91_add_device_nand(&cap9adk_nand_data); } @@ -282,7 +285,7 @@ static __init void cap9adk_add_device_nor(void) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_VDDIOMSEL_3_3V); /* configure chip-select 0 (NOR) */ - sam9_smc_configure(0, &cap9adk_nor_smc_config); + sam9_smc_configure(0, 0, &cap9adk_nor_smc_config); platform_device_register(&cap9adk_nor_flash); } @@ -351,7 +354,7 @@ static struct atmel_lcdfb_info __initdata cap9adk_lcdc_data; * AC97 */ static struct ac97c_platform_data cap9adk_ac97_data = { -// .reset_pin = ... not connected + .reset_pin = -EINVAL, }; diff --git a/trunk/arch/arm/mach-at91/board-carmeva.c b/trunk/arch/arm/mach-at91/board-carmeva.c index 774c87fcbd5b..59d9cf997537 100644 --- a/trunk/arch/arm/mach-at91/board-carmeva.c +++ b/trunk/arch/arm/mach-at91/board-carmeva.c @@ -57,13 +57,15 @@ static void __init carmeva_init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata carmeva_eth_data = { +static struct macb_platform_data __initdata carmeva_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; static struct at91_usbh_data __initdata carmeva_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata carmeva_udc_data = { @@ -75,8 +77,8 @@ static struct at91_udc_data __initdata carmeva_udc_data = { // static struct at91_cf_data __initdata carmeva_cf_data = { // .det_pin = AT91_PIN_PB0, // .rst_pin = AT91_PIN_PC5, - // .irq_pin = ... not connected - // .vcc_pin = ... always powered + // .irq_pin = -EINVAL, + // .vcc_pin = -EINVAL, // }; static struct at91_mmc_data __initdata carmeva_mmc_data = { @@ -84,6 +86,7 @@ static struct at91_mmc_data __initdata carmeva_mmc_data = { .wire4 = 1, .det_pin = AT91_PIN_PB10, .wp_pin = AT91_PIN_PC14, + .vcc_pin = -EINVAL, }; static struct spi_board_info carmeva_spi_devices[] = { diff --git a/trunk/arch/arm/mach-at91/board-cpu9krea.c b/trunk/arch/arm/mach-at91/board-cpu9krea.c index fc885a4ce243..9ab3d1ea326d 100644 --- a/trunk/arch/arm/mach-at91/board-cpu9krea.c +++ b/trunk/arch/arm/mach-at91/board-cpu9krea.c @@ -86,6 +86,8 @@ static void __init cpu9krea_init_early(void) */ static struct at91_usbh_data __initdata cpu9krea_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -93,13 +95,14 @@ static struct at91_usbh_data __initdata cpu9krea_usbh_data = { */ static struct at91_udc_data __initdata cpu9krea_udc_data = { .vbus_pin = AT91_PIN_PC8, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; /* * MACB Ethernet device */ -static struct at91_eth_data __initdata cpu9krea_macb_data = { +static struct macb_platform_data __initdata cpu9krea_macb_data = { + .phy_irq_pin = -EINVAL, .is_rmii = 1, }; @@ -112,6 +115,7 @@ static struct atmel_nand_data __initdata cpu9krea_nand_data = { .rdy_pin = AT91_PIN_PC13, .enable_pin = AT91_PIN_PC14, .bus_width_16 = 0, + .det_pin = -EINVAL, }; #ifdef CONFIG_MACH_CPU9260 @@ -156,7 +160,7 @@ static struct sam9_smc_config __initdata cpu9krea_nand_smc_config = { static void __init cpu9krea_add_device_nand(void) { - sam9_smc_configure(3, &cpu9krea_nand_smc_config); + sam9_smc_configure(0, 3, &cpu9krea_nand_smc_config); at91_add_device_nand(&cpu9krea_nand_data); } @@ -238,7 +242,7 @@ static __init void cpu9krea_add_device_nor(void) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_VDDIOMSEL_3_3V); /* configure chip-select 0 (NOR) */ - sam9_smc_configure(0, &cpu9krea_nor_smc_config); + sam9_smc_configure(0, 0, &cpu9krea_nor_smc_config); platform_device_register(&cpu9krea_nor_flash); } @@ -337,6 +341,8 @@ static struct at91_mmc_data __initdata cpu9krea_mmc_data = { .slot_b = 0, .wire4 = 1, .det_pin = AT91_PIN_PA29, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; static void __init cpu9krea_board_init(void) diff --git a/trunk/arch/arm/mach-at91/board-cpuat91.c b/trunk/arch/arm/mach-at91/board-cpuat91.c index d35e65b08ccd..368e1427ad99 100644 --- a/trunk/arch/arm/mach-at91/board-cpuat91.c +++ b/trunk/arch/arm/mach-at91/board-cpuat91.c @@ -82,12 +82,15 @@ static void __init cpuat91_init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata cpuat91_eth_data = { +static struct macb_platform_data __initdata cpuat91_eth_data = { + .phy_irq_pin = -EINVAL, .is_rmii = 1, }; static struct at91_usbh_data __initdata cpuat91_usbh_data = { .ports = 1, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata cpuat91_udc_data = { @@ -98,6 +101,8 @@ static struct at91_udc_data __initdata cpuat91_udc_data = { static struct at91_mmc_data __initdata cpuat91_mmc_data = { .det_pin = AT91_PIN_PC2, .wire4 = 1, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; static struct physmap_flash_data cpuat91_flash_data = { diff --git a/trunk/arch/arm/mach-at91/board-csb337.c b/trunk/arch/arm/mach-at91/board-csb337.c index c3936665e645..1a1547b1ce4e 100644 --- a/trunk/arch/arm/mach-at91/board-csb337.c +++ b/trunk/arch/arm/mach-at91/board-csb337.c @@ -58,18 +58,20 @@ static void __init csb337_init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata csb337_eth_data = { +static struct macb_platform_data __initdata csb337_eth_data = { .phy_irq_pin = AT91_PIN_PC2, .is_rmii = 0, }; static struct at91_usbh_data __initdata csb337_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata csb337_udc_data = { - // this has no VBUS sensing pin .pullup_pin = AT91_PIN_PA24, + .vbus_pin = -EINVAL, }; static struct i2c_board_info __initdata csb337_i2c_devices[] = { @@ -98,6 +100,7 @@ static struct at91_mmc_data __initdata csb337_mmc_data = { .slot_b = 0, .wire4 = 1, .wp_pin = AT91_PIN_PD6, + .vcc_pin = -EINVAL, }; static struct spi_board_info csb337_spi_devices[] = { diff --git a/trunk/arch/arm/mach-at91/board-csb637.c b/trunk/arch/arm/mach-at91/board-csb637.c index 586100e2acbb..f650bf39455d 100644 --- a/trunk/arch/arm/mach-at91/board-csb637.c +++ b/trunk/arch/arm/mach-at91/board-csb637.c @@ -52,13 +52,15 @@ static void __init csb637_init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata csb637_eth_data = { +static struct macb_platform_data __initdata csb637_eth_data = { .phy_irq_pin = AT91_PIN_PC0, .is_rmii = 0, }; static struct at91_usbh_data __initdata csb637_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata csb637_udc_data = { diff --git a/trunk/arch/arm/mach-at91/board-dt.c b/trunk/arch/arm/mach-at91/board-dt.c index 0b7d32778210..bb6b434ec0c1 100644 --- a/trunk/arch/arm/mach-at91/board-dt.c +++ b/trunk/arch/arm/mach-at91/board-dt.c @@ -50,6 +50,7 @@ static void __init ek_init_early(void) static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, + .det_pin = -EINVAL, .rdy_pin = AT91_PIN_PC8, .enable_pin = AT91_PIN_PC14, }; @@ -82,7 +83,7 @@ static void __init ek_add_device_nand(void) ek_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &ek_nand_smc_config); + sam9_smc_configure(0, 3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } diff --git a/trunk/arch/arm/mach-at91/board-eb9200.c b/trunk/arch/arm/mach-at91/board-eb9200.c index 45db7a3dbef0..d302ca3eeb64 100644 --- a/trunk/arch/arm/mach-at91/board-eb9200.c +++ b/trunk/arch/arm/mach-at91/board-eb9200.c @@ -60,13 +60,15 @@ static void __init eb9200_init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata eb9200_eth_data = { +static struct macb_platform_data __initdata eb9200_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; static struct at91_usbh_data __initdata eb9200_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata eb9200_udc_data = { @@ -75,15 +77,18 @@ static struct at91_udc_data __initdata eb9200_udc_data = { }; static struct at91_cf_data __initdata eb9200_cf_data = { + .irq_pin = -EINVAL, .det_pin = AT91_PIN_PB0, + .vcc_pin = -EINVAL, .rst_pin = AT91_PIN_PC5, - // .irq_pin = ... not connected - // .vcc_pin = ... always powered }; static struct at91_mmc_data __initdata eb9200_mmc_data = { .slot_b = 0, .wire4 = 1, + .det_pin = -EINVAL, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; static struct i2c_board_info __initdata eb9200_i2c_devices[] = { diff --git a/trunk/arch/arm/mach-at91/board-ecbat91.c b/trunk/arch/arm/mach-at91/board-ecbat91.c index 2f9c16d29212..69966ce4d776 100644 --- a/trunk/arch/arm/mach-at91/board-ecbat91.c +++ b/trunk/arch/arm/mach-at91/board-ecbat91.c @@ -64,18 +64,23 @@ static void __init ecb_at91init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata ecb_at91eth_data = { +static struct macb_platform_data __initdata ecb_at91eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 0, }; static struct at91_usbh_data __initdata ecb_at91usbh_data = { .ports = 1, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_mmc_data __initdata ecb_at91mmc_data = { .slot_b = 0, .wire4 = 1, + .det_pin = -EINVAL, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; diff --git a/trunk/arch/arm/mach-at91/board-eco920.c b/trunk/arch/arm/mach-at91/board-eco920.c index 8252c722607b..07ef35b0ec2c 100644 --- a/trunk/arch/arm/mach-at91/board-eco920.c +++ b/trunk/arch/arm/mach-at91/board-eco920.c @@ -47,13 +47,15 @@ static void __init eco920_init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata eco920_eth_data = { +static struct macb_platform_data __initdata eco920_eth_data = { .phy_irq_pin = AT91_PIN_PC2, .is_rmii = 1, }; static struct at91_usbh_data __initdata eco920_usbh_data = { .ports = 1, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata eco920_udc_data = { @@ -64,6 +66,9 @@ static struct at91_udc_data __initdata eco920_udc_data = { static struct at91_mmc_data __initdata eco920_mmc_data = { .slot_b = 0, .wire4 = 0, + .det_pin = -EINVAL, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; static struct physmap_flash_data eco920_flash_data = { diff --git a/trunk/arch/arm/mach-at91/board-flexibity.c b/trunk/arch/arm/mach-at91/board-flexibity.c index 4c3f65d9c59b..eec02cd57ced 100644 --- a/trunk/arch/arm/mach-at91/board-flexibity.c +++ b/trunk/arch/arm/mach-at91/board-flexibity.c @@ -52,12 +52,14 @@ static void __init flexibity_init_early(void) /* USB Host port */ static struct at91_usbh_data __initdata flexibity_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* USB Device port */ static struct at91_udc_data __initdata flexibity_udc_data = { .vbus_pin = AT91_PIN_PC5, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; /* SPI devices */ @@ -76,6 +78,7 @@ static struct at91_mmc_data __initdata flexibity_mmc_data = { .wire4 = 1, .det_pin = AT91_PIN_PC9, .wp_pin = AT91_PIN_PC4, + .vcc_pin = -EINVAL, }; /* LEDs */ diff --git a/trunk/arch/arm/mach-at91/board-foxg20.c b/trunk/arch/arm/mach-at91/board-foxg20.c index f27d1a780cfa..caf017f0f4ee 100644 --- a/trunk/arch/arm/mach-at91/board-foxg20.c +++ b/trunk/arch/arm/mach-at91/board-foxg20.c @@ -106,6 +106,8 @@ static void __init foxg20_init_early(void) */ static struct at91_usbh_data __initdata foxg20_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -113,7 +115,7 @@ static struct at91_usbh_data __initdata foxg20_usbh_data = { */ static struct at91_udc_data __initdata foxg20_udc_data = { .vbus_pin = AT91_PIN_PC6, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; @@ -135,7 +137,7 @@ static struct spi_board_info foxg20_spi_devices[] = { /* * MACB Ethernet device */ -static struct at91_eth_data __initdata foxg20_macb_data = { +static struct macb_platform_data __initdata foxg20_macb_data = { .phy_irq_pin = AT91_PIN_PA7, .is_rmii = 1, }; @@ -147,6 +149,9 @@ static struct at91_eth_data __initdata foxg20_macb_data = { static struct at91_mmc_data __initdata foxg20_mmc_data = { .slot_b = 1, .wire4 = 1, + .det_pin = -EINVAL, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; diff --git a/trunk/arch/arm/mach-at91/board-gsia18s.c b/trunk/arch/arm/mach-at91/board-gsia18s.c index 2e95949737e6..230e71969fb7 100644 --- a/trunk/arch/arm/mach-at91/board-gsia18s.c +++ b/trunk/arch/arm/mach-at91/board-gsia18s.c @@ -80,6 +80,8 @@ static void __init gsia18s_init_early(void) */ static struct at91_usbh_data __initdata usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -87,13 +89,13 @@ static struct at91_usbh_data __initdata usbh_data = { */ static struct at91_udc_data __initdata udc_data = { .vbus_pin = AT91_PIN_PA22, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; /* * MACB Ethernet device */ -static struct at91_eth_data __initdata macb_data = { +static struct macb_platform_data __initdata macb_data = { .phy_irq_pin = AT91_PIN_PA28, .is_rmii = 1, }; @@ -530,6 +532,7 @@ static struct i2c_board_info __initdata gsia18s_i2c_devices[] = { static struct at91_cf_data __initdata gsia18s_cf1_data = { .irq_pin = AT91_PIN_PA27, .det_pin = AT91_PIN_PB30, + .vcc_pin = -EINVAL, .rst_pin = AT91_PIN_PB31, .chipselect = 5, .flags = AT91_CF_TRUE_IDE, diff --git a/trunk/arch/arm/mach-at91/board-kafa.c b/trunk/arch/arm/mach-at91/board-kafa.c index 3bae73e63633..efde1b2327c8 100644 --- a/trunk/arch/arm/mach-at91/board-kafa.c +++ b/trunk/arch/arm/mach-at91/board-kafa.c @@ -61,13 +61,15 @@ static void __init kafa_init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata kafa_eth_data = { +static struct macb_platform_data __initdata kafa_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 0, }; static struct at91_usbh_data __initdata kafa_usbh_data = { .ports = 1, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata kafa_udc_data = { diff --git a/trunk/arch/arm/mach-at91/board-kb9202.c b/trunk/arch/arm/mach-at91/board-kb9202.c index e61351ffad50..d75a4a2ad9c2 100644 --- a/trunk/arch/arm/mach-at91/board-kb9202.c +++ b/trunk/arch/arm/mach-at91/board-kb9202.c @@ -69,13 +69,15 @@ static void __init kb9202_init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata kb9202_eth_data = { +static struct macb_platform_data __initdata kb9202_eth_data = { .phy_irq_pin = AT91_PIN_PB29, .is_rmii = 0, }; static struct at91_usbh_data __initdata kb9202_usbh_data = { .ports = 1, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata kb9202_udc_data = { @@ -87,6 +89,8 @@ static struct at91_mmc_data __initdata kb9202_mmc_data = { .det_pin = AT91_PIN_PB2, .slot_b = 0, .wire4 = 1, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; static struct mtd_partition __initdata kb9202_nand_partition[] = { @@ -100,7 +104,7 @@ static struct mtd_partition __initdata kb9202_nand_partition[] = { static struct atmel_nand_data __initdata kb9202_nand_data = { .ale = 22, .cle = 21, - // .det_pin = ... not there + .det_pin = -EINVAL, .rdy_pin = AT91_PIN_PC29, .enable_pin = AT91_PIN_PC28, .parts = kb9202_nand_partition, diff --git a/trunk/arch/arm/mach-at91/board-neocore926.c b/trunk/arch/arm/mach-at91/board-neocore926.c index ef816c17dc61..3f8617c0e04e 100644 --- a/trunk/arch/arm/mach-at91/board-neocore926.c +++ b/trunk/arch/arm/mach-at91/board-neocore926.c @@ -72,6 +72,7 @@ static void __init neocore926_init_early(void) static struct at91_usbh_data __initdata neocore926_usbh_data = { .ports = 2, .vbus_pin = { AT91_PIN_PA24, AT91_PIN_PA21 }, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -79,7 +80,7 @@ static struct at91_usbh_data __initdata neocore926_usbh_data = { */ static struct at91_udc_data __initdata neocore926_udc_data = { .vbus_pin = AT91_PIN_PA25, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; @@ -149,13 +150,14 @@ static struct at91_mmc_data __initdata neocore926_mmc_data = { .wire4 = 1, .det_pin = AT91_PIN_PE18, .wp_pin = AT91_PIN_PE19, + .vcc_pin = -EINVAL, }; /* * MACB Ethernet device */ -static struct at91_eth_data __initdata neocore926_macb_data = { +static struct macb_platform_data __initdata neocore926_macb_data = { .phy_irq_pin = AT91_PIN_PE31, .is_rmii = 1, }; @@ -190,6 +192,7 @@ static struct atmel_nand_data __initdata neocore926_nand_data = { .enable_pin = AT91_PIN_PD15, .parts = neocore926_nand_partition, .num_parts = ARRAY_SIZE(neocore926_nand_partition), + .det_pin = -EINVAL, }; static struct sam9_smc_config __initdata neocore926_nand_smc_config = { @@ -213,7 +216,7 @@ static struct sam9_smc_config __initdata neocore926_nand_smc_config = { static void __init neocore926_add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &neocore926_nand_smc_config); + sam9_smc_configure(0, 3, &neocore926_nand_smc_config); at91_add_device_nand(&neocore926_nand_data); } diff --git a/trunk/arch/arm/mach-at91/board-pcontrol-g20.c b/trunk/arch/arm/mach-at91/board-pcontrol-g20.c index 49e3f699b48e..b4a12fc184c8 100644 --- a/trunk/arch/arm/mach-at91/board-pcontrol-g20.c +++ b/trunk/arch/arm/mach-at91/board-pcontrol-g20.c @@ -96,9 +96,9 @@ static struct sam9_smc_config __initdata pcontrol_smc_config[2] = { { static void __init add_device_pcontrol(void) { /* configure chip-select 4 (IO compatible to 8051 X4 ) */ - sam9_smc_configure(4, &pcontrol_smc_config[0]); + sam9_smc_configure(0, 4, &pcontrol_smc_config[0]); /* configure chip-select 7 (FerroRAM 256KiBx16bit MR2A16A D4 ) */ - sam9_smc_configure(7, &pcontrol_smc_config[1]); + sam9_smc_configure(0, 7, &pcontrol_smc_config[1]); } @@ -107,6 +107,8 @@ static void __init add_device_pcontrol(void) */ static struct at91_usbh_data __initdata usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; @@ -122,7 +124,7 @@ static struct at91_udc_data __initdata pcontrol_g20_udc_data = { /* * MACB Ethernet device */ -static struct at91_eth_data __initdata macb_data = { +static struct macb_platform_data __initdata macb_data = { .phy_irq_pin = AT91_PIN_PA28, .is_rmii = 1, }; diff --git a/trunk/arch/arm/mach-at91/board-picotux200.c b/trunk/arch/arm/mach-at91/board-picotux200.c index 0a8fe6a1b7c8..ab024fa11d5c 100644 --- a/trunk/arch/arm/mach-at91/board-picotux200.c +++ b/trunk/arch/arm/mach-at91/board-picotux200.c @@ -60,13 +60,15 @@ static void __init picotux200_init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata picotux200_eth_data = { +static struct macb_platform_data __initdata picotux200_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; static struct at91_usbh_data __initdata picotux200_usbh_data = { .ports = 1, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_mmc_data __initdata picotux200_mmc_data = { @@ -74,6 +76,7 @@ static struct at91_mmc_data __initdata picotux200_mmc_data = { .slot_b = 0, .wire4 = 1, .wp_pin = AT91_PIN_PA17, + .vcc_pin = -EINVAL, }; #define PICOTUX200_FLASH_BASE AT91_CHIPSELECT_0 diff --git a/trunk/arch/arm/mach-at91/board-qil-a9260.c b/trunk/arch/arm/mach-at91/board-qil-a9260.c index 07421bdb88ea..e029d220cb84 100644 --- a/trunk/arch/arm/mach-at91/board-qil-a9260.c +++ b/trunk/arch/arm/mach-at91/board-qil-a9260.c @@ -77,6 +77,8 @@ static void __init ek_init_early(void) */ static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -84,7 +86,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PC5, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; /* @@ -104,7 +106,7 @@ static struct spi_board_info ek_spi_devices[] = { /* * MACB Ethernet device */ -static struct at91_eth_data __initdata ek_macb_data = { +static struct macb_platform_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PA31, .is_rmii = 1, }; @@ -133,7 +135,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, -// .det_pin = ... not connected + .det_pin = -EINVAL, .rdy_pin = AT91_PIN_PC13, .enable_pin = AT91_PIN_PC14, .parts = ek_nand_partition, @@ -161,7 +163,7 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = { static void __init ek_add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &ek_nand_smc_config); + sam9_smc_configure(0, 3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -172,9 +174,9 @@ static void __init ek_add_device_nand(void) static struct at91_mmc_data __initdata ek_mmc_data = { .slot_b = 0, .wire4 = 1, -// .det_pin = ... not connected -// .wp_pin = ... not connected -// .vcc_pin = ... not connected + .det_pin = -EINVAL, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; /* @@ -251,7 +253,7 @@ static void __init ek_board_init(void) /* LEDs */ at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds)); /* shutdown controller, wakeup button (5 msec low) */ - at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW + at91_shdwc_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW | AT91_SHDW_RTTWKEN); } diff --git a/trunk/arch/arm/mach-at91/board-rm9200dk.c b/trunk/arch/arm/mach-at91/board-rm9200dk.c index 80a8c9c6e922..782f37946af5 100644 --- a/trunk/arch/arm/mach-at91/board-rm9200dk.c +++ b/trunk/arch/arm/mach-at91/board-rm9200dk.c @@ -65,13 +65,15 @@ static void __init dk_init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata dk_eth_data = { +static struct macb_platform_data __initdata dk_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; static struct at91_usbh_data __initdata dk_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata dk_udc_data = { @@ -80,16 +82,19 @@ static struct at91_udc_data __initdata dk_udc_data = { }; static struct at91_cf_data __initdata dk_cf_data = { + .irq_pin = -EINVAL, .det_pin = AT91_PIN_PB0, + .vcc_pin = -EINVAL, .rst_pin = AT91_PIN_PC5, - // .irq_pin = ... not connected - // .vcc_pin = ... always powered }; #ifndef CONFIG_MTD_AT91_DATAFLASH_CARD static struct at91_mmc_data __initdata dk_mmc_data = { .slot_b = 0, .wire4 = 1, + .det_pin = -EINVAL, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; #endif @@ -143,7 +148,7 @@ static struct atmel_nand_data __initdata dk_nand_data = { .cle = 21, .det_pin = AT91_PIN_PB1, .rdy_pin = AT91_PIN_PC2, - // .enable_pin = ... not there + .enable_pin = -EINVAL, .parts = dk_nand_partition, .num_parts = ARRAY_SIZE(dk_nand_partition), }; diff --git a/trunk/arch/arm/mach-at91/board-rm9200ek.c b/trunk/arch/arm/mach-at91/board-rm9200ek.c index 99fd7f8aee0e..ef7c12a92246 100644 --- a/trunk/arch/arm/mach-at91/board-rm9200ek.c +++ b/trunk/arch/arm/mach-at91/board-rm9200ek.c @@ -65,13 +65,15 @@ static void __init ek_init_early(void) at91_set_serial_console(0); } -static struct at91_eth_data __initdata ek_eth_data = { +static struct macb_platform_data __initdata ek_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata ek_udc_data = { @@ -85,6 +87,7 @@ static struct at91_mmc_data __initdata ek_mmc_data = { .slot_b = 0, .wire4 = 1, .wp_pin = AT91_PIN_PA17, + .vcc_pin = -EINVAL, }; #endif diff --git a/trunk/arch/arm/mach-at91/board-rsi-ews.c b/trunk/arch/arm/mach-at91/board-rsi-ews.c index e927df0175df..af0750fafa29 100644 --- a/trunk/arch/arm/mach-at91/board-rsi-ews.c +++ b/trunk/arch/arm/mach-at91/board-rsi-ews.c @@ -60,7 +60,7 @@ static void __init rsi_ews_init_early(void) /* * Ethernet */ -static struct at91_eth_data rsi_ews_eth_data __initdata = { +static struct macb_platform_data rsi_ews_eth_data __initdata = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; @@ -70,6 +70,8 @@ static struct at91_eth_data rsi_ews_eth_data __initdata = { */ static struct at91_usbh_data rsi_ews_usbh_data __initdata = { .ports = 1, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* diff --git a/trunk/arch/arm/mach-at91/board-sam9-l9260.c b/trunk/arch/arm/mach-at91/board-sam9-l9260.c index 072d53af98d9..84bce587735f 100644 --- a/trunk/arch/arm/mach-at91/board-sam9-l9260.c +++ b/trunk/arch/arm/mach-at91/board-sam9-l9260.c @@ -72,6 +72,8 @@ static void __init ek_init_early(void) */ static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -79,7 +81,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PC5, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; @@ -109,7 +111,7 @@ static struct spi_board_info ek_spi_devices[] = { /* * MACB Ethernet device */ -static struct at91_eth_data __initdata ek_macb_data = { +static struct macb_platform_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PA7, .is_rmii = 0, }; @@ -134,7 +136,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, -// .det_pin = ... not connected + .det_pin = -EINVAL, .rdy_pin = AT91_PIN_PC13, .enable_pin = AT91_PIN_PC14, .parts = ek_nand_partition, @@ -162,7 +164,7 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = { static void __init ek_add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &ek_nand_smc_config); + sam9_smc_configure(0, 3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -176,7 +178,7 @@ static struct at91_mmc_data __initdata ek_mmc_data = { .wire4 = 1, .det_pin = AT91_PIN_PC8, .wp_pin = AT91_PIN_PC4, -// .vcc_pin = ... not connected + .vcc_pin = -EINVAL, }; static void __init ek_board_init(void) diff --git a/trunk/arch/arm/mach-at91/board-sam9260ek.c b/trunk/arch/arm/mach-at91/board-sam9260ek.c index 4f10181a0782..be8233bcabdc 100644 --- a/trunk/arch/arm/mach-at91/board-sam9260ek.c +++ b/trunk/arch/arm/mach-at91/board-sam9260ek.c @@ -75,6 +75,8 @@ static void __init ek_init_early(void) */ static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -82,7 +84,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PC5, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; @@ -151,7 +153,7 @@ static struct spi_board_info ek_spi_devices[] = { /* * MACB Ethernet device */ -static struct at91_eth_data __initdata ek_macb_data = { +static struct macb_platform_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PA7, .is_rmii = 1, }; @@ -176,7 +178,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, -// .det_pin = ... not connected + .det_pin = -EINVAL, .rdy_pin = AT91_PIN_PC13, .enable_pin = AT91_PIN_PC14, .parts = ek_nand_partition, @@ -211,7 +213,7 @@ static void __init ek_add_device_nand(void) ek_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &ek_nand_smc_config); + sam9_smc_configure(0, 3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -223,9 +225,9 @@ static void __init ek_add_device_nand(void) static struct at91_mmc_data __initdata ek_mmc_data = { .slot_b = 1, .wire4 = 1, -// .det_pin = ... not connected -// .wp_pin = ... not connected -// .vcc_pin = ... not connected + .det_pin = -EINVAL, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; diff --git a/trunk/arch/arm/mach-at91/board-sam9261ek.c b/trunk/arch/arm/mach-at91/board-sam9261ek.c index b005b738e8ff..40895072a1a7 100644 --- a/trunk/arch/arm/mach-at91/board-sam9261ek.c +++ b/trunk/arch/arm/mach-at91/board-sam9261ek.c @@ -131,7 +131,7 @@ static struct sam9_smc_config __initdata dm9000_smc_config = { static void __init ek_add_device_dm9000(void) { /* Configure chip-select 2 (DM9000) */ - sam9_smc_configure(2, &dm9000_smc_config); + sam9_smc_configure(0, 2, &dm9000_smc_config); /* Configure Reset signal as output */ at91_set_gpio_output(AT91_PIN_PC10, 0); @@ -151,6 +151,8 @@ static void __init ek_add_device_dm9000(void) {} */ static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; @@ -159,7 +161,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PB29, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; @@ -182,7 +184,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 22, .cle = 21, -// .det_pin = ... not connected + .det_pin = -EINVAL, .rdy_pin = AT91_PIN_PC15, .enable_pin = AT91_PIN_PC14, .parts = ek_nand_partition, @@ -217,7 +219,7 @@ static void __init ek_add_device_nand(void) ek_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &ek_nand_smc_config); + sam9_smc_configure(0, 3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -345,6 +347,9 @@ static struct spi_board_info ek_spi_devices[] = { */ static struct at91_mmc_data __initdata ek_mmc_data = { .wire4 = 1, + .det_pin = -EINVAL, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; #endif /* CONFIG_SPI_ATMEL_* */ diff --git a/trunk/arch/arm/mach-at91/board-sam9263ek.c b/trunk/arch/arm/mach-at91/board-sam9263ek.c index bccdcf23caa1..29f66052fe63 100644 --- a/trunk/arch/arm/mach-at91/board-sam9263ek.c +++ b/trunk/arch/arm/mach-at91/board-sam9263ek.c @@ -74,6 +74,7 @@ static void __init ek_init_early(void) static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, .vbus_pin = { AT91_PIN_PA24, AT91_PIN_PA21 }, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -81,7 +82,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PA25, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; @@ -151,14 +152,14 @@ static struct at91_mmc_data __initdata ek_mmc_data = { .wire4 = 1, .det_pin = AT91_PIN_PE18, .wp_pin = AT91_PIN_PE19, -// .vcc_pin = ... not connected + .vcc_pin = -EINVAL, }; /* * MACB Ethernet device */ -static struct at91_eth_data __initdata ek_macb_data = { +static struct macb_platform_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PE31, .is_rmii = 1, }; @@ -183,7 +184,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, -// .det_pin = ... not connected + .det_pin = -EINVAL, .rdy_pin = AT91_PIN_PA22, .enable_pin = AT91_PIN_PD15, .parts = ek_nand_partition, @@ -218,7 +219,7 @@ static void __init ek_add_device_nand(void) ek_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &ek_nand_smc_config); + sam9_smc_configure(0, 3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -353,6 +354,7 @@ static void __init ek_add_device_buttons(void) {} * reset_pin is not connected: NRST */ static struct ac97c_platform_data ek_ac97_data = { + .reset_pin = -EINVAL, }; diff --git a/trunk/arch/arm/mach-at91/board-sam9g20ek.c b/trunk/arch/arm/mach-at91/board-sam9g20ek.c index 64fc75c9d0ac..843d6286c6f4 100644 --- a/trunk/arch/arm/mach-at91/board-sam9g20ek.c +++ b/trunk/arch/arm/mach-at91/board-sam9g20ek.c @@ -86,6 +86,8 @@ static void __init ek_init_early(void) */ static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -93,7 +95,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PC5, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; @@ -123,7 +125,7 @@ static struct spi_board_info ek_spi_devices[] = { /* * MACB Ethernet device */ -static struct at91_eth_data __initdata ek_macb_data = { +static struct macb_platform_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PA7, .is_rmii = 1, }; @@ -163,6 +165,7 @@ static struct atmel_nand_data __initdata ek_nand_data = { .cle = 22, .rdy_pin = AT91_PIN_PC13, .enable_pin = AT91_PIN_PC14, + .det_pin = -EINVAL, .parts = ek_nand_partition, .num_parts = ARRAY_SIZE(ek_nand_partition), }; @@ -195,7 +198,7 @@ static void __init ek_add_device_nand(void) ek_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &ek_nand_smc_config); + sam9_smc_configure(0, 3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -210,6 +213,7 @@ static struct mci_platform_data __initdata ek_mmc_data = { .slot[1] = { .bus_width = 4, .detect_pin = AT91_PIN_PC9, + .wp_pin = -EINVAL, }, }; @@ -218,6 +222,8 @@ static struct at91_mmc_data __initdata ek_mmc_data = { .slot_b = 1, /* Only one slot so use slot B */ .wire4 = 1, .det_pin = AT91_PIN_PC9, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; #endif @@ -227,6 +233,7 @@ static void __init ek_add_device_mmc(void) if (ek_have_2mmc()) { ek_mmc_data.slot[0].bus_width = 4; ek_mmc_data.slot[0].detect_pin = AT91_PIN_PC2; + ek_mmc_data.slot[0].wp_pin = -1; } at91_add_device_mci(0, &ek_mmc_data); #else diff --git a/trunk/arch/arm/mach-at91/board-sam9m10g45ek.c b/trunk/arch/arm/mach-at91/board-sam9m10g45ek.c index 92de9127923a..ea0d1b9c2b7b 100644 --- a/trunk/arch/arm/mach-at91/board-sam9m10g45ek.c +++ b/trunk/arch/arm/mach-at91/board-sam9m10g45ek.c @@ -69,6 +69,7 @@ static void __init ek_init_early(void) static struct at91_usbh_data __initdata ek_usbh_hs_data = { .ports = 2, .vbus_pin = {AT91_PIN_PD1, AT91_PIN_PD3}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; @@ -100,6 +101,7 @@ static struct mci_platform_data __initdata mci0_data = { .slot[0] = { .bus_width = 4, .detect_pin = AT91_PIN_PD10, + .wp_pin = -EINVAL, }, }; @@ -115,7 +117,7 @@ static struct mci_platform_data __initdata mci1_data = { /* * MACB Ethernet device */ -static struct at91_eth_data __initdata ek_macb_data = { +static struct macb_platform_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PD5, .is_rmii = 1, }; @@ -143,6 +145,7 @@ static struct atmel_nand_data __initdata ek_nand_data = { .cle = 22, .rdy_pin = AT91_PIN_PC8, .enable_pin = AT91_PIN_PC14, + .det_pin = -EINVAL, .parts = ek_nand_partition, .num_parts = ARRAY_SIZE(ek_nand_partition), }; @@ -175,7 +178,7 @@ static void __init ek_add_device_nand(void) ek_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &ek_nand_smc_config); + sam9_smc_configure(0, 3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -330,6 +333,7 @@ static void __init ek_add_device_buttons(void) {} * reset_pin is not connected: NRST */ static struct ac97c_platform_data ek_ac97_data = { + .reset_pin = -EINVAL, }; diff --git a/trunk/arch/arm/mach-at91/board-sam9rlek.c b/trunk/arch/arm/mach-at91/board-sam9rlek.c index b2b748239f36..c1366d0032bf 100644 --- a/trunk/arch/arm/mach-at91/board-sam9rlek.c +++ b/trunk/arch/arm/mach-at91/board-sam9rlek.c @@ -67,8 +67,8 @@ static struct usba_platform_data __initdata ek_usba_udc_data = { static struct at91_mmc_data __initdata ek_mmc_data = { .wire4 = 1, .det_pin = AT91_PIN_PA15, -// .wp_pin = ... not connected -// .vcc_pin = ... not connected + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; @@ -91,7 +91,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, -// .det_pin = ... not connected + .det_pin = -EINVAL, .rdy_pin = AT91_PIN_PD17, .enable_pin = AT91_PIN_PB6, .parts = ek_nand_partition, @@ -119,7 +119,7 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = { static void __init ek_add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &ek_nand_smc_config); + sam9_smc_configure(0, 3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -204,6 +204,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data; * reset_pin is not connected: NRST */ static struct ac97c_platform_data ek_ac97_data = { + .reset_pin = -EINVAL, }; diff --git a/trunk/arch/arm/mach-at91/board-snapper9260.c b/trunk/arch/arm/mach-at91/board-snapper9260.c index 0df01c6e2d0c..4770db08e5a6 100644 --- a/trunk/arch/arm/mach-at91/board-snapper9260.c +++ b/trunk/arch/arm/mach-at91/board-snapper9260.c @@ -57,15 +57,19 @@ static void __init snapper9260_init_early(void) static struct at91_usbh_data __initdata snapper9260_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata snapper9260_udc_data = { .vbus_pin = SNAPPER9260_IO_EXP_GPIO(5), .vbus_active_low = 1, .vbus_polled = 1, + .pullup_pin = -EINVAL, }; -static struct at91_eth_data snapper9260_macb_data = { +static struct macb_platform_data snapper9260_macb_data = { + .phy_irq_pin = -EINVAL, .is_rmii = 1, }; @@ -104,6 +108,8 @@ static struct atmel_nand_data __initdata snapper9260_nand_data = { .parts = snapper9260_nand_partitions, .num_parts = ARRAY_SIZE(snapper9260_nand_partitions), .bus_width_16 = 0, + .enable_pin = -EINVAL, + .det_pin = -EINVAL, }; static struct sam9_smc_config __initdata snapper9260_nand_smc_config = { @@ -149,7 +155,7 @@ static struct i2c_board_info __initdata snapper9260_i2c_devices[] = { static void __init snapper9260_add_device_nand(void) { at91_set_A_periph(AT91_PIN_PC14, 0); - sam9_smc_configure(3, &snapper9260_nand_smc_config); + sam9_smc_configure(0, 3, &snapper9260_nand_smc_config); at91_add_device_nand(&snapper9260_nand_data); } diff --git a/trunk/arch/arm/mach-at91/board-stamp9g20.c b/trunk/arch/arm/mach-at91/board-stamp9g20.c index 936e5fd7f406..72eb3b4d9ab6 100644 --- a/trunk/arch/arm/mach-at91/board-stamp9g20.c +++ b/trunk/arch/arm/mach-at91/board-stamp9g20.c @@ -85,6 +85,7 @@ static struct atmel_nand_data __initdata nand_data = { .rdy_pin = AT91_PIN_PC13, .enable_pin = AT91_PIN_PC14, .bus_width_16 = 0, + .det_pin = -EINVAL, }; static struct sam9_smc_config __initdata nand_smc_config = { @@ -108,7 +109,7 @@ static struct sam9_smc_config __initdata nand_smc_config = { static void __init add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &nand_smc_config); + sam9_smc_configure(0, 3, &nand_smc_config); at91_add_device_nand(&nand_data); } @@ -122,12 +123,17 @@ static void __init add_device_nand(void) static struct mci_platform_data __initdata mmc_data = { .slot[0] = { .bus_width = 4, + .detect_pin = -1, + .wp_pin = -1, }, }; #else static struct at91_mmc_data __initdata mmc_data = { .slot_b = 0, .wire4 = 1, + .det_pin = -EINVAL, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; #endif @@ -137,6 +143,8 @@ static struct at91_mmc_data __initdata mmc_data = { */ static struct at91_usbh_data __initdata usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; @@ -145,19 +153,19 @@ static struct at91_usbh_data __initdata usbh_data = { */ static struct at91_udc_data __initdata portuxg20_udc_data = { .vbus_pin = AT91_PIN_PC7, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; static struct at91_udc_data __initdata stamp9g20evb_udc_data = { .vbus_pin = AT91_PIN_PA22, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; /* * MACB Ethernet device */ -static struct at91_eth_data __initdata macb_data = { +static struct macb_platform_data __initdata macb_data = { .phy_irq_pin = AT91_PIN_PA28, .is_rmii = 1, }; diff --git a/trunk/arch/arm/mach-at91/board-usb-a926x.c b/trunk/arch/arm/mach-at91/board-usb-a926x.c index 0a20bab21f99..26c36fc2d1e5 100644 --- a/trunk/arch/arm/mach-at91/board-usb-a926x.c +++ b/trunk/arch/arm/mach-at91/board-usb-a926x.c @@ -66,6 +66,8 @@ static void __init ek_init_early(void) */ static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -73,7 +75,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PB11, - .pullup_pin = 0, /* pull-up driven by UDC */ + .pullup_pin = -EINVAL, /* pull-up driven by UDC */ }; static void __init ek_add_device_udc(void) @@ -146,7 +148,7 @@ static void __init ek_add_device_spi(void) /* * MACB Ethernet device */ -static struct at91_eth_data __initdata ek_macb_data = { +static struct macb_platform_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PE31, .is_rmii = 1, }; @@ -193,7 +195,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, -// .det_pin = ... not connected + .det_pin = -EINVAL, .rdy_pin = AT91_PIN_PA22, .enable_pin = AT91_PIN_PD15, .parts = ek_nand_partition, @@ -245,9 +247,9 @@ static void __init ek_add_device_nand(void) /* configure chip-select 3 (NAND) */ if (machine_is_usb_a9g20()) - sam9_smc_configure(3, &usb_a9g20_nand_smc_config); + sam9_smc_configure(0, 3, &usb_a9g20_nand_smc_config); else - sam9_smc_configure(3, &usb_a9260_nand_smc_config); + sam9_smc_configure(0, 3, &usb_a9260_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -344,7 +346,7 @@ static void __init ek_board_init(void) /* I2C */ at91_add_device_i2c(NULL, 0); /* shutdown controller, wakeup button (5 msec low) */ - at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) + at91_shdwc_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW | AT91_SHDW_RTTWKEN); } diff --git a/trunk/arch/arm/mach-at91/board-yl-9200.c b/trunk/arch/arm/mach-at91/board-yl-9200.c index 12a3f955162b..bbd553e1cd93 100644 --- a/trunk/arch/arm/mach-at91/board-yl-9200.c +++ b/trunk/arch/arm/mach-at91/board-yl-9200.c @@ -110,7 +110,7 @@ static struct gpio_led yl9200_leds[] = { /* * Ethernet */ -static struct at91_eth_data __initdata yl9200_eth_data = { +static struct macb_platform_data __initdata yl9200_eth_data = { .phy_irq_pin = AT91_PIN_PB28, .is_rmii = 1, }; @@ -120,6 +120,8 @@ static struct at91_eth_data __initdata yl9200_eth_data = { */ static struct at91_usbh_data __initdata yl9200_usbh_data = { .ports = 1, /* PQFP version of AT91RM9200 */ + .vbus_pin = {-EINVAL, -EINVAL}, + .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -137,8 +139,9 @@ static struct at91_udc_data __initdata yl9200_udc_data = { */ static struct at91_mmc_data __initdata yl9200_mmc_data = { .det_pin = AT91_PIN_PB9, - // .wp_pin = ... not connected .wire4 = 1, + .wp_pin = -EINVAL, + .vcc_pin = -EINVAL, }; /* @@ -175,7 +178,7 @@ static struct mtd_partition __initdata yl9200_nand_partition[] = { static struct atmel_nand_data __initdata yl9200_nand_data = { .ale = 6, .cle = 7, - // .det_pin = ... not connected + .det_pin = -EINVAL, .rdy_pin = AT91_PIN_PC14, /* R/!B (Sheet10) */ .enable_pin = AT91_PIN_PC15, /* !CE (Sheet10) */ .parts = yl9200_nand_partition, diff --git a/trunk/arch/arm/mach-at91/generic.h b/trunk/arch/arm/mach-at91/generic.h index 7f4503bc4cbb..4866b8180d66 100644 --- a/trunk/arch/arm/mach-at91/generic.h +++ b/trunk/arch/arm/mach-at91/generic.h @@ -29,6 +29,7 @@ extern void __init at91_aic_init(unsigned int priority[]); /* Timer */ struct sys_timer; extern struct sys_timer at91rm9200_timer; +extern void at91sam926x_ioremap_pit(u32 addr); extern struct sys_timer at91sam926x_timer; extern struct sys_timer at91x40_timer; @@ -59,14 +60,16 @@ extern void at91_irq_resume(void); /* reset */ extern void at91sam9_alt_restart(char, const char *); +/* shutdown */ +extern void at91_ioremap_shdwc(u32 base_addr); + /* GPIO */ #define AT91RM9200_PQFP 3 /* AT91RM9200 PQFP package has 3 banks */ #define AT91RM9200_BGA 4 /* AT91RM9200 BGA package has 4 banks */ struct at91_gpio_bank { unsigned short id; /* peripheral ID */ - unsigned long offset; /* offset from system peripheral base */ - struct clk *clock; /* associated clock */ + unsigned long regbase; /* offset from system peripheral base */ }; extern void __init at91_gpio_init(struct at91_gpio_bank *, int nr_banks); extern void __init at91_gpio_irq_setup(void); diff --git a/trunk/arch/arm/mach-at91/gpio.c b/trunk/arch/arm/mach-at91/gpio.c index 224e9e2f8674..74d6783eeabb 100644 --- a/trunk/arch/arm/mach-at91/gpio.c +++ b/trunk/arch/arm/mach-at91/gpio.c @@ -29,8 +29,9 @@ struct at91_gpio_chip { struct gpio_chip chip; struct at91_gpio_chip *next; /* Bank sharing same clock */ - struct at91_gpio_bank *bank; /* Bank definition */ + int id; /* ID of register bank */ void __iomem *regbase; /* Base of register bank */ + struct clk *clock; /* associated clock */ }; #define to_at91_gpio_chip(c) container_of(c, struct at91_gpio_chip, chip) @@ -58,18 +59,17 @@ static int at91_gpiolib_direction_input(struct gpio_chip *chip, } static struct at91_gpio_chip gpio_chip[] = { - AT91_GPIO_CHIP("A", 0x00 + PIN_BASE, 32), - AT91_GPIO_CHIP("B", 0x20 + PIN_BASE, 32), - AT91_GPIO_CHIP("C", 0x40 + PIN_BASE, 32), - AT91_GPIO_CHIP("D", 0x60 + PIN_BASE, 32), - AT91_GPIO_CHIP("E", 0x80 + PIN_BASE, 32), + AT91_GPIO_CHIP("pioA", 0x00, 32), + AT91_GPIO_CHIP("pioB", 0x20, 32), + AT91_GPIO_CHIP("pioC", 0x40, 32), + AT91_GPIO_CHIP("pioD", 0x60, 32), + AT91_GPIO_CHIP("pioE", 0x80, 32), }; static int gpio_banks; static inline void __iomem *pin_to_controller(unsigned pin) { - pin -= PIN_BASE; pin /= 32; if (likely(pin < gpio_banks)) return gpio_chip[pin].regbase; @@ -79,7 +79,6 @@ static inline void __iomem *pin_to_controller(unsigned pin) static inline unsigned pin_to_mask(unsigned pin) { - pin -= PIN_BASE; return 1 << (pin % 32); } @@ -274,8 +273,9 @@ static u32 backups[MAX_GPIO_BANKS]; static int gpio_irq_set_wake(struct irq_data *d, unsigned state) { - unsigned mask = pin_to_mask(d->irq); - unsigned bank = (d->irq - PIN_BASE) / 32; + unsigned pin = irq_to_gpio(d->irq); + unsigned mask = pin_to_mask(pin); + unsigned bank = pin / 32; if (unlikely(bank >= MAX_GPIO_BANKS)) return -EINVAL; @@ -285,7 +285,7 @@ static int gpio_irq_set_wake(struct irq_data *d, unsigned state) else wakeups[bank] &= ~mask; - irq_set_irq_wake(gpio_chip[bank].bank->id, state); + irq_set_irq_wake(gpio_chip[bank].id, state); return 0; } @@ -302,7 +302,7 @@ void at91_gpio_suspend(void) __raw_writel(wakeups[i], pio + PIO_IER); if (!wakeups[i]) - clk_disable(gpio_chip[i].bank->clock); + clk_disable(gpio_chip[i].clock); else { #ifdef CONFIG_PM_DEBUG printk(KERN_DEBUG "GPIO-%c may wake for %08x\n", 'A'+i, wakeups[i]); @@ -319,7 +319,7 @@ void at91_gpio_resume(void) void __iomem *pio = gpio_chip[i].regbase; if (!wakeups[i]) - clk_enable(gpio_chip[i].bank->clock); + clk_enable(gpio_chip[i].clock); __raw_writel(wakeups[i], pio + PIO_IDR); __raw_writel(backups[i], pio + PIO_IER); @@ -344,8 +344,9 @@ void at91_gpio_resume(void) static void gpio_irq_mask(struct irq_data *d) { - void __iomem *pio = pin_to_controller(d->irq); - unsigned mask = pin_to_mask(d->irq); + unsigned pin = irq_to_gpio(d->irq); + void __iomem *pio = pin_to_controller(pin); + unsigned mask = pin_to_mask(pin); if (pio) __raw_writel(mask, pio + PIO_IDR); @@ -353,8 +354,9 @@ static void gpio_irq_mask(struct irq_data *d) static void gpio_irq_unmask(struct irq_data *d) { - void __iomem *pio = pin_to_controller(d->irq); - unsigned mask = pin_to_mask(d->irq); + unsigned pin = irq_to_gpio(d->irq); + void __iomem *pio = pin_to_controller(pin); + unsigned mask = pin_to_mask(pin); if (pio) __raw_writel(mask, pio + PIO_IER); @@ -382,7 +384,7 @@ static struct irq_chip gpio_irqchip = { static void gpio_irq_handler(unsigned irq, struct irq_desc *desc) { - unsigned pin; + unsigned irq_pin; struct irq_data *idata = irq_desc_get_irq_data(desc); struct irq_chip *chip = irq_data_get_irq_chip(idata); struct at91_gpio_chip *at91_gpio = irq_data_get_irq_chip_data(idata); @@ -405,12 +407,12 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc) continue; } - pin = at91_gpio->chip.base; + irq_pin = gpio_to_irq(at91_gpio->chip.base); while (isr) { if (isr & 1) - generic_handle_irq(pin); - pin++; + generic_handle_irq(irq_pin); + irq_pin++; isr >>= 1; } } @@ -438,7 +440,7 @@ static int at91_gpio_show(struct seq_file *s, void *unused) seq_printf(s, "%i:\t", j); for (bank = 0; bank < gpio_banks; bank++) { - unsigned pin = PIN_BASE + (32 * bank) + j; + unsigned pin = (32 * bank) + j; void __iomem *pio = pin_to_controller(pin); unsigned mask = pin_to_mask(pin); @@ -491,27 +493,28 @@ static struct lock_class_key gpio_lock_class; */ void __init at91_gpio_irq_setup(void) { - unsigned pioc, pin; + unsigned pioc, irq = gpio_to_irq(0); struct at91_gpio_chip *this, *prev; - for (pioc = 0, pin = PIN_BASE, this = gpio_chip, prev = NULL; + for (pioc = 0, this = gpio_chip, prev = NULL; pioc++ < gpio_banks; prev = this, this++) { - unsigned id = this->bank->id; + unsigned id = this->id; unsigned i; __raw_writel(~0, this->regbase + PIO_IDR); - for (i = 0, pin = this->chip.base; i < 32; i++, pin++) { - irq_set_lockdep_class(pin, &gpio_lock_class); + for (i = 0, irq = gpio_to_irq(this->chip.base); i < 32; + i++, irq++) { + irq_set_lockdep_class(irq, &gpio_lock_class); /* * Can use the "simple" and not "edge" handler since it's * shorter, and the AIC handles interrupts sanely. */ - irq_set_chip_and_handler(pin, &gpio_irqchip, + irq_set_chip_and_handler(irq, &gpio_irqchip, handle_simple_irq); - set_irq_flags(pin, IRQF_VALID); + set_irq_flags(irq, IRQF_VALID); } /* The toplevel handler handles one bank of GPIOs, except @@ -524,7 +527,7 @@ void __init at91_gpio_irq_setup(void) irq_set_chip_data(id, this); irq_set_chained_handler(id, gpio_irq_handler); } - pr_info("AT91: %d gpio irqs in %d banks\n", pin - PIN_BASE, gpio_banks); + pr_info("AT91: %d gpio irqs in %d banks\n", irq - gpio_to_irq(0), gpio_banks); } /* gpiolib support */ @@ -612,16 +615,26 @@ void __init at91_gpio_init(struct at91_gpio_bank *data, int nr_banks) for (i = 0; i < nr_banks; i++) { at91_gpio = &gpio_chip[i]; - at91_gpio->bank = &data[i]; - at91_gpio->chip.base = PIN_BASE + i * 32; - at91_gpio->regbase = at91_gpio->bank->offset + - (void __iomem *)AT91_VA_BASE_SYS; + at91_gpio->id = data[i].id; + at91_gpio->chip.base = i * 32; + + at91_gpio->regbase = ioremap(data[i].regbase, 512); + if (!at91_gpio->regbase) { + pr_err("at91_gpio.%d, failed to map registers, ignoring.\n", i); + continue; + } + + at91_gpio->clock = clk_get_sys(NULL, at91_gpio->chip.label); + if (!at91_gpio->clock) { + pr_err("at91_gpio.%d, failed to get clock, ignoring.\n", i); + continue; + } /* enable PIO controller's clock */ - clk_enable(at91_gpio->bank->clock); + clk_enable(at91_gpio->clock); /* AT91SAM9263_ID_PIOCDE groups PIOC, PIOD, PIOE */ - if (last && last->bank->id == at91_gpio->bank->id) + if (last && last->id == at91_gpio->id) last->next = at91_gpio; last = at91_gpio; diff --git a/trunk/arch/arm/mach-at91/include/mach/at91_aic.h b/trunk/arch/arm/mach-at91/include/mach/at91_aic.h index 03566799d3be..3045781c473f 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91_aic.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91_aic.h @@ -16,7 +16,19 @@ #ifndef AT91_AIC_H #define AT91_AIC_H -#define AT91_AIC_SMR(n) (AT91_AIC + ((n) * 4)) /* Source Mode Registers 0-31 */ +#ifndef __ASSEMBLY__ +extern void __iomem *at91_aic_base; + +#define at91_aic_read(field) \ + __raw_readl(at91_aic_base + field) + +#define at91_aic_write(field, value) \ + __raw_writel(value, at91_aic_base + field); +#else +.extern at91_aic_base +#endif + +#define AT91_AIC_SMR(n) ((n) * 4) /* Source Mode Registers 0-31 */ #define AT91_AIC_PRIOR (7 << 0) /* Priority Level */ #define AT91_AIC_SRCTYPE (3 << 5) /* Interrupt Source Type */ #define AT91_AIC_SRCTYPE_LOW (0 << 5) @@ -24,30 +36,30 @@ #define AT91_AIC_SRCTYPE_HIGH (2 << 5) #define AT91_AIC_SRCTYPE_RISING (3 << 5) -#define AT91_AIC_SVR(n) (AT91_AIC + 0x80 + ((n) * 4)) /* Source Vector Registers 0-31 */ -#define AT91_AIC_IVR (AT91_AIC + 0x100) /* Interrupt Vector Register */ -#define AT91_AIC_FVR (AT91_AIC + 0x104) /* Fast Interrupt Vector Register */ -#define AT91_AIC_ISR (AT91_AIC + 0x108) /* Interrupt Status Register */ +#define AT91_AIC_SVR(n) (0x80 + ((n) * 4)) /* Source Vector Registers 0-31 */ +#define AT91_AIC_IVR 0x100 /* Interrupt Vector Register */ +#define AT91_AIC_FVR 0x104 /* Fast Interrupt Vector Register */ +#define AT91_AIC_ISR 0x108 /* Interrupt Status Register */ #define AT91_AIC_IRQID (0x1f << 0) /* Current Interrupt Identifier */ -#define AT91_AIC_IPR (AT91_AIC + 0x10c) /* Interrupt Pending Register */ -#define AT91_AIC_IMR (AT91_AIC + 0x110) /* Interrupt Mask Register */ -#define AT91_AIC_CISR (AT91_AIC + 0x114) /* Core Interrupt Status Register */ +#define AT91_AIC_IPR 0x10c /* Interrupt Pending Register */ +#define AT91_AIC_IMR 0x110 /* Interrupt Mask Register */ +#define AT91_AIC_CISR 0x114 /* Core Interrupt Status Register */ #define AT91_AIC_NFIQ (1 << 0) /* nFIQ Status */ #define AT91_AIC_NIRQ (1 << 1) /* nIRQ Status */ -#define AT91_AIC_IECR (AT91_AIC + 0x120) /* Interrupt Enable Command Register */ -#define AT91_AIC_IDCR (AT91_AIC + 0x124) /* Interrupt Disable Command Register */ -#define AT91_AIC_ICCR (AT91_AIC + 0x128) /* Interrupt Clear Command Register */ -#define AT91_AIC_ISCR (AT91_AIC + 0x12c) /* Interrupt Set Command Register */ -#define AT91_AIC_EOICR (AT91_AIC + 0x130) /* End of Interrupt Command Register */ -#define AT91_AIC_SPU (AT91_AIC + 0x134) /* Spurious Interrupt Vector Register */ -#define AT91_AIC_DCR (AT91_AIC + 0x138) /* Debug Control Register */ +#define AT91_AIC_IECR 0x120 /* Interrupt Enable Command Register */ +#define AT91_AIC_IDCR 0x124 /* Interrupt Disable Command Register */ +#define AT91_AIC_ICCR 0x128 /* Interrupt Clear Command Register */ +#define AT91_AIC_ISCR 0x12c /* Interrupt Set Command Register */ +#define AT91_AIC_EOICR 0x130 /* End of Interrupt Command Register */ +#define AT91_AIC_SPU 0x134 /* Spurious Interrupt Vector Register */ +#define AT91_AIC_DCR 0x138 /* Debug Control Register */ #define AT91_AIC_DCR_PROT (1 << 0) /* Protection Mode */ #define AT91_AIC_DCR_GMSK (1 << 1) /* General Mask */ -#define AT91_AIC_FFER (AT91_AIC + 0x140) /* Fast Forcing Enable Register [SAM9 only] */ -#define AT91_AIC_FFDR (AT91_AIC + 0x144) /* Fast Forcing Disable Register [SAM9 only] */ -#define AT91_AIC_FFSR (AT91_AIC + 0x148) /* Fast Forcing Status Register [SAM9 only] */ +#define AT91_AIC_FFER 0x140 /* Fast Forcing Enable Register [SAM9 only] */ +#define AT91_AIC_FFDR 0x144 /* Fast Forcing Disable Register [SAM9 only] */ +#define AT91_AIC_FFSR 0x148 /* Fast Forcing Status Register [SAM9 only] */ #endif diff --git a/trunk/arch/arm/mach-at91/include/mach/at91_dbgu.h b/trunk/arch/arm/mach-at91/include/mach/at91_dbgu.h index dbfe455a4c41..2aa0c5e13495 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91_dbgu.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91_dbgu.h @@ -19,7 +19,7 @@ #define dbgu_readl(dbgu, field) \ __raw_readl(AT91_VA_BASE_SYS + dbgu + AT91_DBGU_ ## field) -#ifdef AT91_DBGU +#if !defined(CONFIG_ARCH_AT91X40) #define AT91_DBGU_CR (0x00) /* Control Register */ #define AT91_DBGU_MR (0x04) /* Mode Register */ #define AT91_DBGU_IER (0x08) /* Interrupt Enable Register */ diff --git a/trunk/arch/arm/mach-at91/include/mach/at91_pit.h b/trunk/arch/arm/mach-at91/include/mach/at91_pit.h index 974d0bd05b5b..d1f80ad7f4d4 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91_pit.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91_pit.h @@ -16,16 +16,16 @@ #ifndef AT91_PIT_H #define AT91_PIT_H -#define AT91_PIT_MR (AT91_PIT + 0x00) /* Mode Register */ +#define AT91_PIT_MR 0x00 /* Mode Register */ #define AT91_PIT_PITIEN (1 << 25) /* Timer Interrupt Enable */ #define AT91_PIT_PITEN (1 << 24) /* Timer Enabled */ #define AT91_PIT_PIV (0xfffff) /* Periodic Interval Value */ -#define AT91_PIT_SR (AT91_PIT + 0x04) /* Status Register */ +#define AT91_PIT_SR 0x04 /* Status Register */ #define AT91_PIT_PITS (1 << 0) /* Timer Status */ -#define AT91_PIT_PIVR (AT91_PIT + 0x08) /* Periodic Interval Value Register */ -#define AT91_PIT_PIIR (AT91_PIT + 0x0c) /* Periodic Interval Image Register */ +#define AT91_PIT_PIVR 0x08 /* Periodic Interval Value Register */ +#define AT91_PIT_PIIR 0x0c /* Periodic Interval Image Register */ #define AT91_PIT_PICNT (0xfff << 20) /* Interval Counter */ #define AT91_PIT_CPIV (0xfffff) /* Inverval Value */ diff --git a/trunk/arch/arm/mach-at91/include/mach/at91_rtc.h b/trunk/arch/arm/mach-at91/include/mach/at91_rtc.h index e56f4701a3e5..da1945e5f714 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91_rtc.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91_rtc.h @@ -16,7 +16,7 @@ #ifndef AT91_RTC_H #define AT91_RTC_H -#define AT91_RTC_CR (AT91_RTC + 0x00) /* Control Register */ +#define AT91_RTC_CR 0x00 /* Control Register */ #define AT91_RTC_UPDTIM (1 << 0) /* Update Request Time Register */ #define AT91_RTC_UPDCAL (1 << 1) /* Update Request Calendar Register */ #define AT91_RTC_TIMEVSEL (3 << 8) /* Time Event Selection */ @@ -29,44 +29,44 @@ #define AT91_RTC_CALEVSEL_MONTH (1 << 16) #define AT91_RTC_CALEVSEL_YEAR (2 << 16) -#define AT91_RTC_MR (AT91_RTC + 0x04) /* Mode Register */ +#define AT91_RTC_MR 0x04 /* Mode Register */ #define AT91_RTC_HRMOD (1 << 0) /* 12/24 Hour Mode */ -#define AT91_RTC_TIMR (AT91_RTC + 0x08) /* Time Register */ +#define AT91_RTC_TIMR 0x08 /* Time Register */ #define AT91_RTC_SEC (0x7f << 0) /* Current Second */ #define AT91_RTC_MIN (0x7f << 8) /* Current Minute */ #define AT91_RTC_HOUR (0x3f << 16) /* Current Hour */ #define AT91_RTC_AMPM (1 << 22) /* Ante Meridiem Post Meridiem Indicator */ -#define AT91_RTC_CALR (AT91_RTC + 0x0c) /* Calendar Register */ +#define AT91_RTC_CALR 0x0c /* Calendar Register */ #define AT91_RTC_CENT (0x7f << 0) /* Current Century */ #define AT91_RTC_YEAR (0xff << 8) /* Current Year */ #define AT91_RTC_MONTH (0x1f << 16) /* Current Month */ #define AT91_RTC_DAY (7 << 21) /* Current Day */ #define AT91_RTC_DATE (0x3f << 24) /* Current Date */ -#define AT91_RTC_TIMALR (AT91_RTC + 0x10) /* Time Alarm Register */ +#define AT91_RTC_TIMALR 0x10 /* Time Alarm Register */ #define AT91_RTC_SECEN (1 << 7) /* Second Alarm Enable */ #define AT91_RTC_MINEN (1 << 15) /* Minute Alarm Enable */ #define AT91_RTC_HOUREN (1 << 23) /* Hour Alarm Enable */ -#define AT91_RTC_CALALR (AT91_RTC + 0x14) /* Calendar Alarm Register */ +#define AT91_RTC_CALALR 0x14 /* Calendar Alarm Register */ #define AT91_RTC_MTHEN (1 << 23) /* Month Alarm Enable */ #define AT91_RTC_DATEEN (1 << 31) /* Date Alarm Enable */ -#define AT91_RTC_SR (AT91_RTC + 0x18) /* Status Register */ +#define AT91_RTC_SR 0x18 /* Status Register */ #define AT91_RTC_ACKUPD (1 << 0) /* Acknowledge for Update */ #define AT91_RTC_ALARM (1 << 1) /* Alarm Flag */ #define AT91_RTC_SECEV (1 << 2) /* Second Event */ #define AT91_RTC_TIMEV (1 << 3) /* Time Event */ #define AT91_RTC_CALEV (1 << 4) /* Calendar Event */ -#define AT91_RTC_SCCR (AT91_RTC + 0x1c) /* Status Clear Command Register */ -#define AT91_RTC_IER (AT91_RTC + 0x20) /* Interrupt Enable Register */ -#define AT91_RTC_IDR (AT91_RTC + 0x24) /* Interrupt Disable Register */ -#define AT91_RTC_IMR (AT91_RTC + 0x28) /* Interrupt Mask Register */ +#define AT91_RTC_SCCR 0x1c /* Status Clear Command Register */ +#define AT91_RTC_IER 0x20 /* Interrupt Enable Register */ +#define AT91_RTC_IDR 0x24 /* Interrupt Disable Register */ +#define AT91_RTC_IMR 0x28 /* Interrupt Mask Register */ -#define AT91_RTC_VER (AT91_RTC + 0x2c) /* Valid Entry Register */ +#define AT91_RTC_VER 0x2c /* Valid Entry Register */ #define AT91_RTC_NVTIM (1 << 0) /* Non valid Time */ #define AT91_RTC_NVCAL (1 << 1) /* Non valid Calendar */ #define AT91_RTC_NVTIMALR (1 << 2) /* Non valid Time Alarm */ diff --git a/trunk/arch/arm/mach-at91/include/mach/at91_shdwc.h b/trunk/arch/arm/mach-at91/include/mach/at91_shdwc.h index c4ce07e8a8fa..1d4fe822c77a 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91_shdwc.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91_shdwc.h @@ -16,11 +16,21 @@ #ifndef AT91_SHDWC_H #define AT91_SHDWC_H -#define AT91_SHDW_CR (AT91_SHDWC + 0x00) /* Shut Down Control Register */ +#ifndef __ASSEMBLY__ +extern void __iomem *at91_shdwc_base; + +#define at91_shdwc_read(field) \ + __raw_readl(at91_shdwc_base + field) + +#define at91_shdwc_write(field, value) \ + __raw_writel(value, at91_shdwc_base + field); +#endif + +#define AT91_SHDW_CR 0x00 /* Shut Down Control Register */ #define AT91_SHDW_SHDW (1 << 0) /* Shut Down command */ #define AT91_SHDW_KEY (0xa5 << 24) /* KEY Password */ -#define AT91_SHDW_MR (AT91_SHDWC + 0x04) /* Shut Down Mode Register */ +#define AT91_SHDW_MR 0x04 /* Shut Down Mode Register */ #define AT91_SHDW_WKMODE0 (3 << 0) /* Wake-up 0 Mode Selection */ #define AT91_SHDW_WKMODE0_NONE 0 #define AT91_SHDW_WKMODE0_HIGH 1 @@ -30,7 +40,7 @@ #define AT91_SHDW_CPTWK0_(x) ((x) << 4) #define AT91_SHDW_RTTWKEN (1 << 16) /* Real Time Timer Wake-up Enable */ -#define AT91_SHDW_SR (AT91_SHDWC + 0x08) /* Shut Down Status Register */ +#define AT91_SHDW_SR 0x08 /* Shut Down Status Register */ #define AT91_SHDW_WAKEUP0 (1 << 0) /* Wake-up 0 Status */ #define AT91_SHDW_RTTWK (1 << 16) /* Real-time Timer Wake-up */ #define AT91_SHDW_RTCWK (1 << 17) /* Real-time Clock Wake-up [SAM9RL] */ diff --git a/trunk/arch/arm/mach-at91/include/mach/at91cap9.h b/trunk/arch/arm/mach-at91/include/mach/at91cap9.h index c5df1e8f1955..4c0e2f6011d7 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91cap9.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91cap9.h @@ -79,29 +79,28 @@ /* * System Peripherals (offset from AT91_BASE_SYS) */ -#define AT91_ECC (0xffffe200 - AT91_BASE_SYS) #define AT91_BCRAMC (0xffffe400 - AT91_BASE_SYS) #define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS) -#define AT91_SMC (0xffffe800 - AT91_BASE_SYS) #define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS) -#define AT91_CCFG (0xffffeb10 - AT91_BASE_SYS) -#define AT91_DMA (0xffffec00 - AT91_BASE_SYS) -#define AT91_DBGU (0xffffee00 - AT91_BASE_SYS) -#define AT91_AIC (0xfffff000 - AT91_BASE_SYS) -#define AT91_PIOA (0xfffff200 - AT91_BASE_SYS) -#define AT91_PIOB (0xfffff400 - AT91_BASE_SYS) -#define AT91_PIOC (0xfffff600 - AT91_BASE_SYS) -#define AT91_PIOD (0xfffff800 - AT91_BASE_SYS) #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) -#define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) -#define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) -#define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) -#define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) #define AT91_GPBR (cpu_is_at91cap9_revB() ? \ (0xfffffd50 - AT91_BASE_SYS) : \ (0xfffffd60 - AT91_BASE_SYS)) +#define AT91CAP9_BASE_ECC 0xffffe200 +#define AT91CAP9_BASE_DMA 0xffffec00 +#define AT91CAP9_BASE_SMC 0xffffe800 +#define AT91CAP9_BASE_DBGU AT91_BASE_DBGU1 +#define AT91CAP9_BASE_PIOA 0xfffff200 +#define AT91CAP9_BASE_PIOB 0xfffff400 +#define AT91CAP9_BASE_PIOC 0xfffff600 +#define AT91CAP9_BASE_PIOD 0xfffff800 +#define AT91CAP9_BASE_SHDWC 0xfffffd10 +#define AT91CAP9_BASE_RTT 0xfffffd20 +#define AT91CAP9_BASE_PIT 0xfffffd30 +#define AT91CAP9_BASE_WDT 0xfffffd40 + #define AT91_USART0 AT91CAP9_BASE_US0 #define AT91_USART1 AT91CAP9_BASE_US1 #define AT91_USART2 AT91CAP9_BASE_US2 diff --git a/trunk/arch/arm/mach-at91/include/mach/at91rm9200.h b/trunk/arch/arm/mach-at91/include/mach/at91rm9200.h index e4037b500302..bacb51141819 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91rm9200.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91rm9200.h @@ -79,17 +79,17 @@ /* * System Peripherals (offset from AT91_BASE_SYS) */ -#define AT91_AIC (0xfffff000 - AT91_BASE_SYS) /* Advanced Interrupt Controller */ -#define AT91_DBGU (0xfffff200 - AT91_BASE_SYS) /* Debug Unit */ -#define AT91_PIOA (0xfffff400 - AT91_BASE_SYS) /* PIO Controller A */ -#define AT91_PIOB (0xfffff600 - AT91_BASE_SYS) /* PIO Controller B */ -#define AT91_PIOC (0xfffff800 - AT91_BASE_SYS) /* PIO Controller C */ -#define AT91_PIOD (0xfffffa00 - AT91_BASE_SYS) /* PIO Controller D */ #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) /* Power Management Controller */ #define AT91_ST (0xfffffd00 - AT91_BASE_SYS) /* System Timer */ -#define AT91_RTC (0xfffffe00 - AT91_BASE_SYS) /* Real-Time Clock */ #define AT91_MC (0xffffff00 - AT91_BASE_SYS) /* Memory Controllers */ +#define AT91RM9200_BASE_DBGU AT91_BASE_DBGU0 /* Debug Unit */ +#define AT91RM9200_BASE_PIOA 0xfffff400 /* PIO Controller A */ +#define AT91RM9200_BASE_PIOB 0xfffff600 /* PIO Controller B */ +#define AT91RM9200_BASE_PIOC 0xfffff800 /* PIO Controller C */ +#define AT91RM9200_BASE_PIOD 0xfffffa00 /* PIO Controller D */ +#define AT91RM9200_BASE_RTC 0xfffffe00 /* Real-Time Clock */ + #define AT91_USART0 AT91RM9200_BASE_US0 #define AT91_USART1 AT91RM9200_BASE_US1 #define AT91_USART2 AT91RM9200_BASE_US2 diff --git a/trunk/arch/arm/mach-at91/include/mach/at91sam9260.h b/trunk/arch/arm/mach-at91/include/mach/at91sam9260.h index 9a791165913f..f937c476bb67 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91sam9260.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91sam9260.h @@ -80,24 +80,23 @@ /* * System Peripherals (offset from AT91_BASE_SYS) */ -#define AT91_ECC (0xffffe800 - AT91_BASE_SYS) #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS) -#define AT91_SMC (0xffffec00 - AT91_BASE_SYS) #define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS) -#define AT91_CCFG (0xffffef10 - AT91_BASE_SYS) -#define AT91_AIC (0xfffff000 - AT91_BASE_SYS) -#define AT91_DBGU (0xfffff200 - AT91_BASE_SYS) -#define AT91_PIOA (0xfffff400 - AT91_BASE_SYS) -#define AT91_PIOB (0xfffff600 - AT91_BASE_SYS) -#define AT91_PIOC (0xfffff800 - AT91_BASE_SYS) #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) -#define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) -#define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) -#define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) -#define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) +#define AT91SAM9260_BASE_ECC 0xffffe800 +#define AT91SAM9260_BASE_SMC 0xffffec00 +#define AT91SAM9260_BASE_DBGU AT91_BASE_DBGU0 +#define AT91SAM9260_BASE_PIOA 0xfffff400 +#define AT91SAM9260_BASE_PIOB 0xfffff600 +#define AT91SAM9260_BASE_PIOC 0xfffff800 +#define AT91SAM9260_BASE_SHDWC 0xfffffd10 +#define AT91SAM9260_BASE_RTT 0xfffffd20 +#define AT91SAM9260_BASE_PIT 0xfffffd30 +#define AT91SAM9260_BASE_WDT 0xfffffd40 + #define AT91_USART0 AT91SAM9260_BASE_US0 #define AT91_USART1 AT91SAM9260_BASE_US1 #define AT91_USART2 AT91SAM9260_BASE_US2 diff --git a/trunk/arch/arm/mach-at91/include/mach/at91sam9261.h b/trunk/arch/arm/mach-at91/include/mach/at91sam9261.h index ce596204cefa..175604e261be 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91sam9261.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91sam9261.h @@ -66,21 +66,21 @@ * System Peripherals (offset from AT91_BASE_SYS) */ #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS) -#define AT91_SMC (0xffffec00 - AT91_BASE_SYS) #define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS) -#define AT91_AIC (0xfffff000 - AT91_BASE_SYS) -#define AT91_DBGU (0xfffff200 - AT91_BASE_SYS) -#define AT91_PIOA (0xfffff400 - AT91_BASE_SYS) -#define AT91_PIOB (0xfffff600 - AT91_BASE_SYS) -#define AT91_PIOC (0xfffff800 - AT91_BASE_SYS) #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) -#define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) -#define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) -#define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) -#define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) +#define AT91SAM9261_BASE_SMC 0xffffec00 +#define AT91SAM9261_BASE_DBGU AT91_BASE_DBGU0 +#define AT91SAM9261_BASE_PIOA 0xfffff400 +#define AT91SAM9261_BASE_PIOB 0xfffff600 +#define AT91SAM9261_BASE_PIOC 0xfffff800 +#define AT91SAM9261_BASE_SHDWC 0xfffffd10 +#define AT91SAM9261_BASE_RTT 0xfffffd20 +#define AT91SAM9261_BASE_PIT 0xfffffd30 +#define AT91SAM9261_BASE_WDT 0xfffffd40 + #define AT91_USART0 AT91SAM9261_BASE_US0 #define AT91_USART1 AT91SAM9261_BASE_US1 #define AT91_USART2 AT91SAM9261_BASE_US2 diff --git a/trunk/arch/arm/mach-at91/include/mach/at91sam9263.h b/trunk/arch/arm/mach-at91/include/mach/at91sam9263.h index f1b92961a2b1..80c915002d83 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91sam9263.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91sam9263.h @@ -74,30 +74,29 @@ /* * System Peripherals (offset from AT91_BASE_SYS) */ -#define AT91_ECC0 (0xffffe000 - AT91_BASE_SYS) #define AT91_SDRAMC0 (0xffffe200 - AT91_BASE_SYS) -#define AT91_SMC0 (0xffffe400 - AT91_BASE_SYS) -#define AT91_ECC1 (0xffffe600 - AT91_BASE_SYS) #define AT91_SDRAMC1 (0xffffe800 - AT91_BASE_SYS) -#define AT91_SMC1 (0xffffea00 - AT91_BASE_SYS) #define AT91_MATRIX (0xffffec00 - AT91_BASE_SYS) -#define AT91_CCFG (0xffffed10 - AT91_BASE_SYS) -#define AT91_DBGU (0xffffee00 - AT91_BASE_SYS) -#define AT91_AIC (0xfffff000 - AT91_BASE_SYS) -#define AT91_PIOA (0xfffff200 - AT91_BASE_SYS) -#define AT91_PIOB (0xfffff400 - AT91_BASE_SYS) -#define AT91_PIOC (0xfffff600 - AT91_BASE_SYS) -#define AT91_PIOD (0xfffff800 - AT91_BASE_SYS) -#define AT91_PIOE (0xfffffa00 - AT91_BASE_SYS) #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) -#define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) -#define AT91_RTT0 (0xfffffd20 - AT91_BASE_SYS) -#define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) -#define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) -#define AT91_RTT1 (0xfffffd50 - AT91_BASE_SYS) #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) +#define AT91SAM9263_BASE_ECC0 0xffffe000 +#define AT91SAM9263_BASE_SMC0 0xffffe400 +#define AT91SAM9263_BASE_ECC1 0xffffe600 +#define AT91SAM9263_BASE_SMC1 0xffffea00 +#define AT91SAM9263_BASE_DBGU AT91_BASE_DBGU1 +#define AT91SAM9263_BASE_PIOA 0xfffff200 +#define AT91SAM9263_BASE_PIOB 0xfffff400 +#define AT91SAM9263_BASE_PIOC 0xfffff600 +#define AT91SAM9263_BASE_PIOD 0xfffff800 +#define AT91SAM9263_BASE_PIOE 0xfffffa00 +#define AT91SAM9263_BASE_SHDWC 0xfffffd10 +#define AT91SAM9263_BASE_RTT0 0xfffffd20 +#define AT91SAM9263_BASE_PIT 0xfffffd30 +#define AT91SAM9263_BASE_WDT 0xfffffd40 +#define AT91SAM9263_BASE_RTT1 0xfffffd50 + #define AT91_USART0 AT91SAM9263_BASE_US0 #define AT91_USART1 AT91SAM9263_BASE_US1 #define AT91_USART2 AT91SAM9263_BASE_US2 diff --git a/trunk/arch/arm/mach-at91/include/mach/at91sam9_smc.h b/trunk/arch/arm/mach-at91/include/mach/at91sam9_smc.h index 57de6207e57e..eb18a70fa647 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91sam9_smc.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91sam9_smc.h @@ -16,7 +16,9 @@ #ifndef AT91SAM9_SMC_H #define AT91SAM9_SMC_H -#define AT91_SMC_SETUP(n) (AT91_SMC + 0x00 + ((n)*0x10)) /* Setup Register for CS n */ +#include + +#define AT91_SMC_SETUP 0x00 /* Setup Register for CS n */ #define AT91_SMC_NWESETUP (0x3f << 0) /* NWE Setup Length */ #define AT91_SMC_NWESETUP_(x) ((x) << 0) #define AT91_SMC_NCS_WRSETUP (0x3f << 8) /* NCS Setup Length in Write Access */ @@ -26,7 +28,7 @@ #define AT91_SMC_NCS_RDSETUP (0x3f << 24) /* NCS Setup Length in Read Access */ #define AT91_SMC_NCS_RDSETUP_(x) ((x) << 24) -#define AT91_SMC_PULSE(n) (AT91_SMC + 0x04 + ((n)*0x10)) /* Pulse Register for CS n */ +#define AT91_SMC_PULSE 0x04 /* Pulse Register for CS n */ #define AT91_SMC_NWEPULSE (0x7f << 0) /* NWE Pulse Length */ #define AT91_SMC_NWEPULSE_(x) ((x) << 0) #define AT91_SMC_NCS_WRPULSE (0x7f << 8) /* NCS Pulse Length in Write Access */ @@ -36,13 +38,13 @@ #define AT91_SMC_NCS_RDPULSE (0x7f << 24) /* NCS Pulse Length in Read Access */ #define AT91_SMC_NCS_RDPULSE_(x)((x) << 24) -#define AT91_SMC_CYCLE(n) (AT91_SMC + 0x08 + ((n)*0x10)) /* Cycle Register for CS n */ +#define AT91_SMC_CYCLE 0x08 /* Cycle Register for CS n */ #define AT91_SMC_NWECYCLE (0x1ff << 0 ) /* Total Write Cycle Length */ #define AT91_SMC_NWECYCLE_(x) ((x) << 0) #define AT91_SMC_NRDCYCLE (0x1ff << 16) /* Total Read Cycle Length */ #define AT91_SMC_NRDCYCLE_(x) ((x) << 16) -#define AT91_SMC_MODE(n) (AT91_SMC + 0x0c + ((n)*0x10)) /* Mode Register for CS n */ +#define AT91_SMC_MODE 0x0c /* Mode Register for CS n */ #define AT91_SMC_READMODE (1 << 0) /* Read Mode */ #define AT91_SMC_WRITEMODE (1 << 1) /* Write Mode */ #define AT91_SMC_EXNWMODE (3 << 4) /* NWAIT Mode */ @@ -66,11 +68,4 @@ #define AT91_SMC_PS_16 (2 << 28) #define AT91_SMC_PS_32 (3 << 28) -#if defined(AT91_SMC1) /* The AT91SAM9263 has 2 Static Memory contollers */ -#define AT91_SMC1_SETUP(n) (AT91_SMC1 + 0x00 + ((n)*0x10)) /* Setup Register for CS n */ -#define AT91_SMC1_PULSE(n) (AT91_SMC1 + 0x04 + ((n)*0x10)) /* Pulse Register for CS n */ -#define AT91_SMC1_CYCLE(n) (AT91_SMC1 + 0x08 + ((n)*0x10)) /* Cycle Register for CS n */ -#define AT91_SMC1_MODE(n) (AT91_SMC1 + 0x0c + ((n)*0x10)) /* Mode Register for CS n */ -#endif - #endif diff --git a/trunk/arch/arm/mach-at91/include/mach/at91sam9g45.h b/trunk/arch/arm/mach-at91/include/mach/at91sam9g45.h index 406bb6496805..f0c23c960dec 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91sam9g45.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91sam9g45.h @@ -86,27 +86,27 @@ /* * System Peripherals (offset from AT91_BASE_SYS) */ -#define AT91_ECC (0xffffe200 - AT91_BASE_SYS) #define AT91_DDRSDRC1 (0xffffe400 - AT91_BASE_SYS) #define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS) -#define AT91_SMC (0xffffe800 - AT91_BASE_SYS) #define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS) -#define AT91_DMA (0xffffec00 - AT91_BASE_SYS) -#define AT91_DBGU (0xffffee00 - AT91_BASE_SYS) -#define AT91_AIC (0xfffff000 - AT91_BASE_SYS) -#define AT91_PIOA (0xfffff200 - AT91_BASE_SYS) -#define AT91_PIOB (0xfffff400 - AT91_BASE_SYS) -#define AT91_PIOC (0xfffff600 - AT91_BASE_SYS) -#define AT91_PIOD (0xfffff800 - AT91_BASE_SYS) -#define AT91_PIOE (0xfffffa00 - AT91_BASE_SYS) #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) -#define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) -#define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) -#define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) -#define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) -#define AT91_RTC (0xfffffdb0 - AT91_BASE_SYS) + +#define AT91SAM9G45_BASE_ECC 0xffffe200 +#define AT91SAM9G45_BASE_DMA 0xffffec00 +#define AT91SAM9G45_BASE_SMC 0xffffe800 +#define AT91SAM9G45_BASE_DBGU AT91_BASE_DBGU1 +#define AT91SAM9G45_BASE_PIOA 0xfffff200 +#define AT91SAM9G45_BASE_PIOB 0xfffff400 +#define AT91SAM9G45_BASE_PIOC 0xfffff600 +#define AT91SAM9G45_BASE_PIOD 0xfffff800 +#define AT91SAM9G45_BASE_PIOE 0xfffffa00 +#define AT91SAM9G45_BASE_SHDWC 0xfffffd10 +#define AT91SAM9G45_BASE_RTT 0xfffffd20 +#define AT91SAM9G45_BASE_PIT 0xfffffd30 +#define AT91SAM9G45_BASE_WDT 0xfffffd40 +#define AT91SAM9G45_BASE_RTC 0xfffffdb0 #define AT91_USART0 AT91SAM9G45_BASE_US0 #define AT91_USART1 AT91SAM9G45_BASE_US1 diff --git a/trunk/arch/arm/mach-at91/include/mach/at91sam9rl.h b/trunk/arch/arm/mach-at91/include/mach/at91sam9rl.h index 1aabacd315d4..2bb359e60b97 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91sam9rl.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91sam9rl.h @@ -69,27 +69,26 @@ /* * System Peripherals (offset from AT91_BASE_SYS) */ -#define AT91_DMA (0xffffe600 - AT91_BASE_SYS) -#define AT91_ECC (0xffffe800 - AT91_BASE_SYS) #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS) -#define AT91_SMC (0xffffec00 - AT91_BASE_SYS) #define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS) -#define AT91_CCFG (0xffffef10 - AT91_BASE_SYS) -#define AT91_AIC (0xfffff000 - AT91_BASE_SYS) -#define AT91_DBGU (0xfffff200 - AT91_BASE_SYS) -#define AT91_PIOA (0xfffff400 - AT91_BASE_SYS) -#define AT91_PIOB (0xfffff600 - AT91_BASE_SYS) -#define AT91_PIOC (0xfffff800 - AT91_BASE_SYS) -#define AT91_PIOD (0xfffffa00 - AT91_BASE_SYS) #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) -#define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) -#define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) -#define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) -#define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) #define AT91_SCKCR (0xfffffd50 - AT91_BASE_SYS) #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) -#define AT91_RTC (0xfffffe00 - AT91_BASE_SYS) + +#define AT91SAM9RL_BASE_DMA 0xffffe600 +#define AT91SAM9RL_BASE_ECC 0xffffe800 +#define AT91SAM9RL_BASE_SMC 0xffffec00 +#define AT91SAM9RL_BASE_DBGU AT91_BASE_DBGU0 +#define AT91SAM9RL_BASE_PIOA 0xfffff400 +#define AT91SAM9RL_BASE_PIOB 0xfffff600 +#define AT91SAM9RL_BASE_PIOC 0xfffff800 +#define AT91SAM9RL_BASE_PIOD 0xfffffa00 +#define AT91SAM9RL_BASE_SHDWC 0xfffffd10 +#define AT91SAM9RL_BASE_RTT 0xfffffd20 +#define AT91SAM9RL_BASE_PIT 0xfffffd30 +#define AT91SAM9RL_BASE_WDT 0xfffffd40 +#define AT91SAM9RL_BASE_RTC 0xfffffe00 #define AT91_USART0 AT91SAM9RL_BASE_US0 #define AT91_USART1 AT91SAM9RL_BASE_US1 diff --git a/trunk/arch/arm/mach-at91/include/mach/at91x40.h b/trunk/arch/arm/mach-at91/include/mach/at91x40.h index a152ff87e688..a57829f4fd18 100644 --- a/trunk/arch/arm/mach-at91/include/mach/at91x40.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91x40.h @@ -40,7 +40,6 @@ #define AT91_PIOA (0xffff0000 - AT91_BASE_SYS) /* PIO Controller A */ #define AT91_PS (0xffff4000 - AT91_BASE_SYS) /* Power Save */ #define AT91_WD (0xffff8000 - AT91_BASE_SYS) /* Watchdog Timer */ -#define AT91_AIC (0xfffff000 - AT91_BASE_SYS) /* Advanced Interrupt Controller */ /* * The AT91x40 series doesn't have a debug unit like the other AT91 parts. diff --git a/trunk/arch/arm/mach-at91/include/mach/board.h b/trunk/arch/arm/mach-at91/include/mach/board.h index eac92e995bb5..d0b377b21bd7 100644 --- a/trunk/arch/arm/mach-at91/include/mach/board.h +++ b/trunk/arch/arm/mach-at91/include/mach/board.h @@ -40,13 +40,14 @@ #include #include #include +#include /* USB Device */ struct at91_udc_data { - u8 vbus_pin; /* high == host powering us */ + int vbus_pin; /* high == host powering us */ u8 vbus_active_low; /* vbus polarity */ u8 vbus_polled; /* Use polling, not interrupt */ - u8 pullup_pin; /* active == D+ pulled up */ + int pullup_pin; /* active == D+ pulled up */ u8 pullup_active_low; /* true == pullup_pin is active low */ }; extern void __init at91_add_device_udc(struct at91_udc_data *data); @@ -56,10 +57,10 @@ extern void __init at91_add_device_usba(struct usba_platform_data *data); /* Compact Flash */ struct at91_cf_data { - u8 irq_pin; /* I/O IRQ */ - u8 det_pin; /* Card detect */ - u8 vcc_pin; /* power switching */ - u8 rst_pin; /* card reset */ + int irq_pin; /* I/O IRQ */ + int det_pin; /* Card detect */ + int vcc_pin; /* power switching */ + int rst_pin; /* card reset */ u8 chipselect; /* EBI Chip Select number */ u8 flags; #define AT91_CF_TRUE_IDE 0x01 @@ -70,37 +71,26 @@ extern void __init at91_add_device_cf(struct at91_cf_data *data); /* MMC / SD */ /* at91_mci platform config */ struct at91_mmc_data { - u8 det_pin; /* card detect IRQ */ + int det_pin; /* card detect IRQ */ unsigned slot_b:1; /* uses Slot B */ unsigned wire4:1; /* (SD) supports DAT0..DAT3 */ - u8 wp_pin; /* (SD) writeprotect detect */ - u8 vcc_pin; /* power switching (high == on) */ + int wp_pin; /* (SD) writeprotect detect */ + int vcc_pin; /* power switching (high == on) */ }; extern void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data); /* atmel-mci platform config */ extern void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data); - /* Ethernet (EMAC & MACB) */ -struct at91_eth_data { - u32 phy_mask; - u8 phy_irq_pin; /* PHY IRQ */ - u8 is_rmii; /* using RMII interface? */ -}; -extern void __init at91_add_device_eth(struct at91_eth_data *data); - -#if defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9263) || defined(CONFIG_ARCH_AT91SAM9G20) || defined(CONFIG_ARCH_AT91CAP9) \ - || defined(CONFIG_ARCH_AT91SAM9G45) -#define eth_platform_data at91_eth_data -#endif +extern void __init at91_add_device_eth(struct macb_platform_data *data); /* USB Host */ struct at91_usbh_data { u8 ports; /* number of ports on root hub */ - u8 vbus_pin[2]; /* port power-control pin */ + int vbus_pin[2]; /* port power-control pin */ u8 vbus_pin_inverted; u8 overcurrent_supported; - u8 overcurrent_pin[2]; + int overcurrent_pin[2]; u8 overcurrent_status[2]; u8 overcurrent_changed[2]; }; @@ -110,9 +100,9 @@ extern void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data); /* NAND / SmartMedia */ struct atmel_nand_data { - u8 enable_pin; /* chip enable */ - u8 det_pin; /* card detect */ - u8 rdy_pin; /* ready/busy */ + int enable_pin; /* chip enable */ + int det_pin; /* card detect */ + int rdy_pin; /* ready/busy */ u8 rdy_pin_active_low; /* rdy_pin value is inverted */ u8 ale; /* address line number connected to ALE */ u8 cle; /* address line number connected to CLE */ diff --git a/trunk/arch/arm/mach-at91/include/mach/debug-macro.S b/trunk/arch/arm/mach-at91/include/mach/debug-macro.S index 0ed8648c6452..c6bb9e2d9baa 100644 --- a/trunk/arch/arm/mach-at91/include/mach/debug-macro.S +++ b/trunk/arch/arm/mach-at91/include/mach/debug-macro.S @@ -14,9 +14,15 @@ #include #include +#if defined(CONFIG_AT91_DEBUG_LL_DBGU0) +#define AT91_DBGU AT91_BASE_DBGU0 +#else +#define AT91_DBGU AT91_BASE_DBGU1 +#endif + .macro addruart, rp, rv, tmp - ldr \rp, =(AT91_BASE_SYS + AT91_DBGU) @ System peripherals (phys address) - ldr \rv, =(AT91_VA_BASE_SYS + AT91_DBGU) @ System peripherals (virt address) + ldr \rp, =AT91_DBGU @ System peripherals (phys address) + ldr \rv, =AT91_IO_P2V(AT91_DBGU) @ System peripherals (virt address) .endm .macro senduart,rd,rx diff --git a/trunk/arch/arm/mach-at91/include/mach/entry-macro.S b/trunk/arch/arm/mach-at91/include/mach/entry-macro.S index 7ab68f972227..423eea0ed74c 100644 --- a/trunk/arch/arm/mach-at91/include/mach/entry-macro.S +++ b/trunk/arch/arm/mach-at91/include/mach/entry-macro.S @@ -17,16 +17,17 @@ .endm .macro get_irqnr_preamble, base, tmp - ldr \base, =(AT91_VA_BASE_SYS + AT91_AIC) @ base virtual address of AIC peripheral + ldr \base, =at91_aic_base @ base virtual address of AIC peripheral + ldr \base, [\base] .endm .macro arch_ret_to_user, tmp1, tmp2 .endm .macro get_irqnr_and_base, irqnr, irqstat, base, tmp - ldr \irqnr, [\base, #(AT91_AIC_IVR - AT91_AIC)] @ read IRQ vector register: de-asserts nIRQ to processor (and clears interrupt) - ldr \irqstat, [\base, #(AT91_AIC_ISR - AT91_AIC)] @ read interrupt source number - teq \irqstat, #0 @ ISR is 0 when no current interrupt, or spurious interrupt - streq \tmp, [\base, #(AT91_AIC_EOICR - AT91_AIC)] @ not going to be handled further, then ACK it now. + ldr \irqnr, [\base, #AT91_AIC_IVR] @ read IRQ vector register: de-asserts nIRQ to processor (and clears interrupt) + ldr \irqstat, [\base, #AT91_AIC_ISR] @ read interrupt source number + teq \irqstat, #0 @ ISR is 0 when no current interrupt, or spurious interrupt + streq \tmp, [\base, #AT91_AIC_EOICR] @ not going to be handled further, then ACK it now. .endm diff --git a/trunk/arch/arm/mach-at91/include/mach/gpio.h b/trunk/arch/arm/mach-at91/include/mach/gpio.h index 2b9a1f51210f..e3fd225121c7 100644 --- a/trunk/arch/arm/mach-at91/include/mach/gpio.h +++ b/trunk/arch/arm/mach-at91/include/mach/gpio.h @@ -16,177 +16,175 @@ #include #include -#define PIN_BASE NR_AIC_IRQS - #define MAX_GPIO_BANKS 5 -#define NR_BUILTIN_GPIO (PIN_BASE + (MAX_GPIO_BANKS * 32)) +#define NR_BUILTIN_GPIO (MAX_GPIO_BANKS * 32) /* these pin numbers double as IRQ numbers, like AT91xxx_ID_* values */ -#define AT91_PIN_PA0 (PIN_BASE + 0x00 + 0) -#define AT91_PIN_PA1 (PIN_BASE + 0x00 + 1) -#define AT91_PIN_PA2 (PIN_BASE + 0x00 + 2) -#define AT91_PIN_PA3 (PIN_BASE + 0x00 + 3) -#define AT91_PIN_PA4 (PIN_BASE + 0x00 + 4) -#define AT91_PIN_PA5 (PIN_BASE + 0x00 + 5) -#define AT91_PIN_PA6 (PIN_BASE + 0x00 + 6) -#define AT91_PIN_PA7 (PIN_BASE + 0x00 + 7) -#define AT91_PIN_PA8 (PIN_BASE + 0x00 + 8) -#define AT91_PIN_PA9 (PIN_BASE + 0x00 + 9) -#define AT91_PIN_PA10 (PIN_BASE + 0x00 + 10) -#define AT91_PIN_PA11 (PIN_BASE + 0x00 + 11) -#define AT91_PIN_PA12 (PIN_BASE + 0x00 + 12) -#define AT91_PIN_PA13 (PIN_BASE + 0x00 + 13) -#define AT91_PIN_PA14 (PIN_BASE + 0x00 + 14) -#define AT91_PIN_PA15 (PIN_BASE + 0x00 + 15) -#define AT91_PIN_PA16 (PIN_BASE + 0x00 + 16) -#define AT91_PIN_PA17 (PIN_BASE + 0x00 + 17) -#define AT91_PIN_PA18 (PIN_BASE + 0x00 + 18) -#define AT91_PIN_PA19 (PIN_BASE + 0x00 + 19) -#define AT91_PIN_PA20 (PIN_BASE + 0x00 + 20) -#define AT91_PIN_PA21 (PIN_BASE + 0x00 + 21) -#define AT91_PIN_PA22 (PIN_BASE + 0x00 + 22) -#define AT91_PIN_PA23 (PIN_BASE + 0x00 + 23) -#define AT91_PIN_PA24 (PIN_BASE + 0x00 + 24) -#define AT91_PIN_PA25 (PIN_BASE + 0x00 + 25) -#define AT91_PIN_PA26 (PIN_BASE + 0x00 + 26) -#define AT91_PIN_PA27 (PIN_BASE + 0x00 + 27) -#define AT91_PIN_PA28 (PIN_BASE + 0x00 + 28) -#define AT91_PIN_PA29 (PIN_BASE + 0x00 + 29) -#define AT91_PIN_PA30 (PIN_BASE + 0x00 + 30) -#define AT91_PIN_PA31 (PIN_BASE + 0x00 + 31) - -#define AT91_PIN_PB0 (PIN_BASE + 0x20 + 0) -#define AT91_PIN_PB1 (PIN_BASE + 0x20 + 1) -#define AT91_PIN_PB2 (PIN_BASE + 0x20 + 2) -#define AT91_PIN_PB3 (PIN_BASE + 0x20 + 3) -#define AT91_PIN_PB4 (PIN_BASE + 0x20 + 4) -#define AT91_PIN_PB5 (PIN_BASE + 0x20 + 5) -#define AT91_PIN_PB6 (PIN_BASE + 0x20 + 6) -#define AT91_PIN_PB7 (PIN_BASE + 0x20 + 7) -#define AT91_PIN_PB8 (PIN_BASE + 0x20 + 8) -#define AT91_PIN_PB9 (PIN_BASE + 0x20 + 9) -#define AT91_PIN_PB10 (PIN_BASE + 0x20 + 10) -#define AT91_PIN_PB11 (PIN_BASE + 0x20 + 11) -#define AT91_PIN_PB12 (PIN_BASE + 0x20 + 12) -#define AT91_PIN_PB13 (PIN_BASE + 0x20 + 13) -#define AT91_PIN_PB14 (PIN_BASE + 0x20 + 14) -#define AT91_PIN_PB15 (PIN_BASE + 0x20 + 15) -#define AT91_PIN_PB16 (PIN_BASE + 0x20 + 16) -#define AT91_PIN_PB17 (PIN_BASE + 0x20 + 17) -#define AT91_PIN_PB18 (PIN_BASE + 0x20 + 18) -#define AT91_PIN_PB19 (PIN_BASE + 0x20 + 19) -#define AT91_PIN_PB20 (PIN_BASE + 0x20 + 20) -#define AT91_PIN_PB21 (PIN_BASE + 0x20 + 21) -#define AT91_PIN_PB22 (PIN_BASE + 0x20 + 22) -#define AT91_PIN_PB23 (PIN_BASE + 0x20 + 23) -#define AT91_PIN_PB24 (PIN_BASE + 0x20 + 24) -#define AT91_PIN_PB25 (PIN_BASE + 0x20 + 25) -#define AT91_PIN_PB26 (PIN_BASE + 0x20 + 26) -#define AT91_PIN_PB27 (PIN_BASE + 0x20 + 27) -#define AT91_PIN_PB28 (PIN_BASE + 0x20 + 28) -#define AT91_PIN_PB29 (PIN_BASE + 0x20 + 29) -#define AT91_PIN_PB30 (PIN_BASE + 0x20 + 30) -#define AT91_PIN_PB31 (PIN_BASE + 0x20 + 31) - -#define AT91_PIN_PC0 (PIN_BASE + 0x40 + 0) -#define AT91_PIN_PC1 (PIN_BASE + 0x40 + 1) -#define AT91_PIN_PC2 (PIN_BASE + 0x40 + 2) -#define AT91_PIN_PC3 (PIN_BASE + 0x40 + 3) -#define AT91_PIN_PC4 (PIN_BASE + 0x40 + 4) -#define AT91_PIN_PC5 (PIN_BASE + 0x40 + 5) -#define AT91_PIN_PC6 (PIN_BASE + 0x40 + 6) -#define AT91_PIN_PC7 (PIN_BASE + 0x40 + 7) -#define AT91_PIN_PC8 (PIN_BASE + 0x40 + 8) -#define AT91_PIN_PC9 (PIN_BASE + 0x40 + 9) -#define AT91_PIN_PC10 (PIN_BASE + 0x40 + 10) -#define AT91_PIN_PC11 (PIN_BASE + 0x40 + 11) -#define AT91_PIN_PC12 (PIN_BASE + 0x40 + 12) -#define AT91_PIN_PC13 (PIN_BASE + 0x40 + 13) -#define AT91_PIN_PC14 (PIN_BASE + 0x40 + 14) -#define AT91_PIN_PC15 (PIN_BASE + 0x40 + 15) -#define AT91_PIN_PC16 (PIN_BASE + 0x40 + 16) -#define AT91_PIN_PC17 (PIN_BASE + 0x40 + 17) -#define AT91_PIN_PC18 (PIN_BASE + 0x40 + 18) -#define AT91_PIN_PC19 (PIN_BASE + 0x40 + 19) -#define AT91_PIN_PC20 (PIN_BASE + 0x40 + 20) -#define AT91_PIN_PC21 (PIN_BASE + 0x40 + 21) -#define AT91_PIN_PC22 (PIN_BASE + 0x40 + 22) -#define AT91_PIN_PC23 (PIN_BASE + 0x40 + 23) -#define AT91_PIN_PC24 (PIN_BASE + 0x40 + 24) -#define AT91_PIN_PC25 (PIN_BASE + 0x40 + 25) -#define AT91_PIN_PC26 (PIN_BASE + 0x40 + 26) -#define AT91_PIN_PC27 (PIN_BASE + 0x40 + 27) -#define AT91_PIN_PC28 (PIN_BASE + 0x40 + 28) -#define AT91_PIN_PC29 (PIN_BASE + 0x40 + 29) -#define AT91_PIN_PC30 (PIN_BASE + 0x40 + 30) -#define AT91_PIN_PC31 (PIN_BASE + 0x40 + 31) - -#define AT91_PIN_PD0 (PIN_BASE + 0x60 + 0) -#define AT91_PIN_PD1 (PIN_BASE + 0x60 + 1) -#define AT91_PIN_PD2 (PIN_BASE + 0x60 + 2) -#define AT91_PIN_PD3 (PIN_BASE + 0x60 + 3) -#define AT91_PIN_PD4 (PIN_BASE + 0x60 + 4) -#define AT91_PIN_PD5 (PIN_BASE + 0x60 + 5) -#define AT91_PIN_PD6 (PIN_BASE + 0x60 + 6) -#define AT91_PIN_PD7 (PIN_BASE + 0x60 + 7) -#define AT91_PIN_PD8 (PIN_BASE + 0x60 + 8) -#define AT91_PIN_PD9 (PIN_BASE + 0x60 + 9) -#define AT91_PIN_PD10 (PIN_BASE + 0x60 + 10) -#define AT91_PIN_PD11 (PIN_BASE + 0x60 + 11) -#define AT91_PIN_PD12 (PIN_BASE + 0x60 + 12) -#define AT91_PIN_PD13 (PIN_BASE + 0x60 + 13) -#define AT91_PIN_PD14 (PIN_BASE + 0x60 + 14) -#define AT91_PIN_PD15 (PIN_BASE + 0x60 + 15) -#define AT91_PIN_PD16 (PIN_BASE + 0x60 + 16) -#define AT91_PIN_PD17 (PIN_BASE + 0x60 + 17) -#define AT91_PIN_PD18 (PIN_BASE + 0x60 + 18) -#define AT91_PIN_PD19 (PIN_BASE + 0x60 + 19) -#define AT91_PIN_PD20 (PIN_BASE + 0x60 + 20) -#define AT91_PIN_PD21 (PIN_BASE + 0x60 + 21) -#define AT91_PIN_PD22 (PIN_BASE + 0x60 + 22) -#define AT91_PIN_PD23 (PIN_BASE + 0x60 + 23) -#define AT91_PIN_PD24 (PIN_BASE + 0x60 + 24) -#define AT91_PIN_PD25 (PIN_BASE + 0x60 + 25) -#define AT91_PIN_PD26 (PIN_BASE + 0x60 + 26) -#define AT91_PIN_PD27 (PIN_BASE + 0x60 + 27) -#define AT91_PIN_PD28 (PIN_BASE + 0x60 + 28) -#define AT91_PIN_PD29 (PIN_BASE + 0x60 + 29) -#define AT91_PIN_PD30 (PIN_BASE + 0x60 + 30) -#define AT91_PIN_PD31 (PIN_BASE + 0x60 + 31) - -#define AT91_PIN_PE0 (PIN_BASE + 0x80 + 0) -#define AT91_PIN_PE1 (PIN_BASE + 0x80 + 1) -#define AT91_PIN_PE2 (PIN_BASE + 0x80 + 2) -#define AT91_PIN_PE3 (PIN_BASE + 0x80 + 3) -#define AT91_PIN_PE4 (PIN_BASE + 0x80 + 4) -#define AT91_PIN_PE5 (PIN_BASE + 0x80 + 5) -#define AT91_PIN_PE6 (PIN_BASE + 0x80 + 6) -#define AT91_PIN_PE7 (PIN_BASE + 0x80 + 7) -#define AT91_PIN_PE8 (PIN_BASE + 0x80 + 8) -#define AT91_PIN_PE9 (PIN_BASE + 0x80 + 9) -#define AT91_PIN_PE10 (PIN_BASE + 0x80 + 10) -#define AT91_PIN_PE11 (PIN_BASE + 0x80 + 11) -#define AT91_PIN_PE12 (PIN_BASE + 0x80 + 12) -#define AT91_PIN_PE13 (PIN_BASE + 0x80 + 13) -#define AT91_PIN_PE14 (PIN_BASE + 0x80 + 14) -#define AT91_PIN_PE15 (PIN_BASE + 0x80 + 15) -#define AT91_PIN_PE16 (PIN_BASE + 0x80 + 16) -#define AT91_PIN_PE17 (PIN_BASE + 0x80 + 17) -#define AT91_PIN_PE18 (PIN_BASE + 0x80 + 18) -#define AT91_PIN_PE19 (PIN_BASE + 0x80 + 19) -#define AT91_PIN_PE20 (PIN_BASE + 0x80 + 20) -#define AT91_PIN_PE21 (PIN_BASE + 0x80 + 21) -#define AT91_PIN_PE22 (PIN_BASE + 0x80 + 22) -#define AT91_PIN_PE23 (PIN_BASE + 0x80 + 23) -#define AT91_PIN_PE24 (PIN_BASE + 0x80 + 24) -#define AT91_PIN_PE25 (PIN_BASE + 0x80 + 25) -#define AT91_PIN_PE26 (PIN_BASE + 0x80 + 26) -#define AT91_PIN_PE27 (PIN_BASE + 0x80 + 27) -#define AT91_PIN_PE28 (PIN_BASE + 0x80 + 28) -#define AT91_PIN_PE29 (PIN_BASE + 0x80 + 29) -#define AT91_PIN_PE30 (PIN_BASE + 0x80 + 30) -#define AT91_PIN_PE31 (PIN_BASE + 0x80 + 31) +#define AT91_PIN_PA0 (0x00 + 0) +#define AT91_PIN_PA1 (0x00 + 1) +#define AT91_PIN_PA2 (0x00 + 2) +#define AT91_PIN_PA3 (0x00 + 3) +#define AT91_PIN_PA4 (0x00 + 4) +#define AT91_PIN_PA5 (0x00 + 5) +#define AT91_PIN_PA6 (0x00 + 6) +#define AT91_PIN_PA7 (0x00 + 7) +#define AT91_PIN_PA8 (0x00 + 8) +#define AT91_PIN_PA9 (0x00 + 9) +#define AT91_PIN_PA10 (0x00 + 10) +#define AT91_PIN_PA11 (0x00 + 11) +#define AT91_PIN_PA12 (0x00 + 12) +#define AT91_PIN_PA13 (0x00 + 13) +#define AT91_PIN_PA14 (0x00 + 14) +#define AT91_PIN_PA15 (0x00 + 15) +#define AT91_PIN_PA16 (0x00 + 16) +#define AT91_PIN_PA17 (0x00 + 17) +#define AT91_PIN_PA18 (0x00 + 18) +#define AT91_PIN_PA19 (0x00 + 19) +#define AT91_PIN_PA20 (0x00 + 20) +#define AT91_PIN_PA21 (0x00 + 21) +#define AT91_PIN_PA22 (0x00 + 22) +#define AT91_PIN_PA23 (0x00 + 23) +#define AT91_PIN_PA24 (0x00 + 24) +#define AT91_PIN_PA25 (0x00 + 25) +#define AT91_PIN_PA26 (0x00 + 26) +#define AT91_PIN_PA27 (0x00 + 27) +#define AT91_PIN_PA28 (0x00 + 28) +#define AT91_PIN_PA29 (0x00 + 29) +#define AT91_PIN_PA30 (0x00 + 30) +#define AT91_PIN_PA31 (0x00 + 31) + +#define AT91_PIN_PB0 (0x20 + 0) +#define AT91_PIN_PB1 (0x20 + 1) +#define AT91_PIN_PB2 (0x20 + 2) +#define AT91_PIN_PB3 (0x20 + 3) +#define AT91_PIN_PB4 (0x20 + 4) +#define AT91_PIN_PB5 (0x20 + 5) +#define AT91_PIN_PB6 (0x20 + 6) +#define AT91_PIN_PB7 (0x20 + 7) +#define AT91_PIN_PB8 (0x20 + 8) +#define AT91_PIN_PB9 (0x20 + 9) +#define AT91_PIN_PB10 (0x20 + 10) +#define AT91_PIN_PB11 (0x20 + 11) +#define AT91_PIN_PB12 (0x20 + 12) +#define AT91_PIN_PB13 (0x20 + 13) +#define AT91_PIN_PB14 (0x20 + 14) +#define AT91_PIN_PB15 (0x20 + 15) +#define AT91_PIN_PB16 (0x20 + 16) +#define AT91_PIN_PB17 (0x20 + 17) +#define AT91_PIN_PB18 (0x20 + 18) +#define AT91_PIN_PB19 (0x20 + 19) +#define AT91_PIN_PB20 (0x20 + 20) +#define AT91_PIN_PB21 (0x20 + 21) +#define AT91_PIN_PB22 (0x20 + 22) +#define AT91_PIN_PB23 (0x20 + 23) +#define AT91_PIN_PB24 (0x20 + 24) +#define AT91_PIN_PB25 (0x20 + 25) +#define AT91_PIN_PB26 (0x20 + 26) +#define AT91_PIN_PB27 (0x20 + 27) +#define AT91_PIN_PB28 (0x20 + 28) +#define AT91_PIN_PB29 (0x20 + 29) +#define AT91_PIN_PB30 (0x20 + 30) +#define AT91_PIN_PB31 (0x20 + 31) + +#define AT91_PIN_PC0 (0x40 + 0) +#define AT91_PIN_PC1 (0x40 + 1) +#define AT91_PIN_PC2 (0x40 + 2) +#define AT91_PIN_PC3 (0x40 + 3) +#define AT91_PIN_PC4 (0x40 + 4) +#define AT91_PIN_PC5 (0x40 + 5) +#define AT91_PIN_PC6 (0x40 + 6) +#define AT91_PIN_PC7 (0x40 + 7) +#define AT91_PIN_PC8 (0x40 + 8) +#define AT91_PIN_PC9 (0x40 + 9) +#define AT91_PIN_PC10 (0x40 + 10) +#define AT91_PIN_PC11 (0x40 + 11) +#define AT91_PIN_PC12 (0x40 + 12) +#define AT91_PIN_PC13 (0x40 + 13) +#define AT91_PIN_PC14 (0x40 + 14) +#define AT91_PIN_PC15 (0x40 + 15) +#define AT91_PIN_PC16 (0x40 + 16) +#define AT91_PIN_PC17 (0x40 + 17) +#define AT91_PIN_PC18 (0x40 + 18) +#define AT91_PIN_PC19 (0x40 + 19) +#define AT91_PIN_PC20 (0x40 + 20) +#define AT91_PIN_PC21 (0x40 + 21) +#define AT91_PIN_PC22 (0x40 + 22) +#define AT91_PIN_PC23 (0x40 + 23) +#define AT91_PIN_PC24 (0x40 + 24) +#define AT91_PIN_PC25 (0x40 + 25) +#define AT91_PIN_PC26 (0x40 + 26) +#define AT91_PIN_PC27 (0x40 + 27) +#define AT91_PIN_PC28 (0x40 + 28) +#define AT91_PIN_PC29 (0x40 + 29) +#define AT91_PIN_PC30 (0x40 + 30) +#define AT91_PIN_PC31 (0x40 + 31) + +#define AT91_PIN_PD0 (0x60 + 0) +#define AT91_PIN_PD1 (0x60 + 1) +#define AT91_PIN_PD2 (0x60 + 2) +#define AT91_PIN_PD3 (0x60 + 3) +#define AT91_PIN_PD4 (0x60 + 4) +#define AT91_PIN_PD5 (0x60 + 5) +#define AT91_PIN_PD6 (0x60 + 6) +#define AT91_PIN_PD7 (0x60 + 7) +#define AT91_PIN_PD8 (0x60 + 8) +#define AT91_PIN_PD9 (0x60 + 9) +#define AT91_PIN_PD10 (0x60 + 10) +#define AT91_PIN_PD11 (0x60 + 11) +#define AT91_PIN_PD12 (0x60 + 12) +#define AT91_PIN_PD13 (0x60 + 13) +#define AT91_PIN_PD14 (0x60 + 14) +#define AT91_PIN_PD15 (0x60 + 15) +#define AT91_PIN_PD16 (0x60 + 16) +#define AT91_PIN_PD17 (0x60 + 17) +#define AT91_PIN_PD18 (0x60 + 18) +#define AT91_PIN_PD19 (0x60 + 19) +#define AT91_PIN_PD20 (0x60 + 20) +#define AT91_PIN_PD21 (0x60 + 21) +#define AT91_PIN_PD22 (0x60 + 22) +#define AT91_PIN_PD23 (0x60 + 23) +#define AT91_PIN_PD24 (0x60 + 24) +#define AT91_PIN_PD25 (0x60 + 25) +#define AT91_PIN_PD26 (0x60 + 26) +#define AT91_PIN_PD27 (0x60 + 27) +#define AT91_PIN_PD28 (0x60 + 28) +#define AT91_PIN_PD29 (0x60 + 29) +#define AT91_PIN_PD30 (0x60 + 30) +#define AT91_PIN_PD31 (0x60 + 31) + +#define AT91_PIN_PE0 (0x80 + 0) +#define AT91_PIN_PE1 (0x80 + 1) +#define AT91_PIN_PE2 (0x80 + 2) +#define AT91_PIN_PE3 (0x80 + 3) +#define AT91_PIN_PE4 (0x80 + 4) +#define AT91_PIN_PE5 (0x80 + 5) +#define AT91_PIN_PE6 (0x80 + 6) +#define AT91_PIN_PE7 (0x80 + 7) +#define AT91_PIN_PE8 (0x80 + 8) +#define AT91_PIN_PE9 (0x80 + 9) +#define AT91_PIN_PE10 (0x80 + 10) +#define AT91_PIN_PE11 (0x80 + 11) +#define AT91_PIN_PE12 (0x80 + 12) +#define AT91_PIN_PE13 (0x80 + 13) +#define AT91_PIN_PE14 (0x80 + 14) +#define AT91_PIN_PE15 (0x80 + 15) +#define AT91_PIN_PE16 (0x80 + 16) +#define AT91_PIN_PE17 (0x80 + 17) +#define AT91_PIN_PE18 (0x80 + 18) +#define AT91_PIN_PE19 (0x80 + 19) +#define AT91_PIN_PE20 (0x80 + 20) +#define AT91_PIN_PE21 (0x80 + 21) +#define AT91_PIN_PE22 (0x80 + 22) +#define AT91_PIN_PE23 (0x80 + 23) +#define AT91_PIN_PE24 (0x80 + 24) +#define AT91_PIN_PE25 (0x80 + 25) +#define AT91_PIN_PE26 (0x80 + 26) +#define AT91_PIN_PE27 (0x80 + 27) +#define AT91_PIN_PE28 (0x80 + 28) +#define AT91_PIN_PE29 (0x80 + 29) +#define AT91_PIN_PE30 (0x80 + 30) +#define AT91_PIN_PE31 (0x80 + 31) #ifndef __ASSEMBLY__ /* setup setup routines, called from board init or driver probe() */ @@ -215,8 +213,8 @@ extern void at91_gpio_resume(void); #include -#define gpio_to_irq(gpio) (gpio) -#define irq_to_gpio(irq) (irq) +#define gpio_to_irq(gpio) (gpio + NR_AIC_IRQS) +#define irq_to_gpio(irq) (irq - NR_AIC_IRQS) #endif /* __ASSEMBLY__ */ diff --git a/trunk/arch/arm/mach-at91/include/mach/hardware.h b/trunk/arch/arm/mach-at91/include/mach/hardware.h index 483478d8be6b..2d0e4e998566 100644 --- a/trunk/arch/arm/mach-at91/include/mach/hardware.h +++ b/trunk/arch/arm/mach-at91/include/mach/hardware.h @@ -16,6 +16,12 @@ #include +/* DBGU base */ +/* rm9200, 9260/9g20, 9261/9g10, 9rl */ +#define AT91_BASE_DBGU0 0xfffff200 +/* 9263, 9g45, cap9 */ +#define AT91_BASE_DBGU1 0xffffee00 + #if defined(CONFIG_ARCH_AT91RM9200) #include #elif defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9G20) @@ -51,6 +57,12 @@ #define AT91_BASE_SYS 0xffffc000 #endif +/* + * On all at91 have the Advanced Interrupt Controller starts at address + * 0xfffff000 + */ +#define AT91_AIC 0xfffff000 + /* * Peripheral identifiers/interrupts. */ diff --git a/trunk/arch/arm/mach-at91/include/mach/irqs.h b/trunk/arch/arm/mach-at91/include/mach/irqs.h index 36bd55f3fc6e..ac8b7dfc85ef 100644 --- a/trunk/arch/arm/mach-at91/include/mach/irqs.h +++ b/trunk/arch/arm/mach-at91/include/mach/irqs.h @@ -31,7 +31,7 @@ * Acknowledge interrupt with AIC after interrupt has been handled. * (by kernel/irq.c) */ -#define irq_finish(irq) do { at91_sys_write(AT91_AIC_EOICR, 0); } while (0) +#define irq_finish(irq) do { at91_aic_write(AT91_AIC_EOICR, 0); } while (0) /* diff --git a/trunk/arch/arm/mach-at91/include/mach/timex.h b/trunk/arch/arm/mach-at91/include/mach/timex.h index 85820ad801cc..5e917a66edd7 100644 --- a/trunk/arch/arm/mach-at91/include/mach/timex.h +++ b/trunk/arch/arm/mach-at91/include/mach/timex.h @@ -23,70 +23,15 @@ #include -#if defined(CONFIG_ARCH_AT91RM9200) +#ifdef CONFIG_ARCH_AT91X40 -#define CLOCK_TICK_RATE (AT91_SLOW_CLOCK) - -#elif defined(CONFIG_ARCH_AT91SAM9260) - -#if defined(CONFIG_MACH_USB_A9260) || defined(CONFIG_MACH_QIL_A9260) -#define AT91SAM9_MASTER_CLOCK 90000000 -#else -#define AT91SAM9_MASTER_CLOCK 99300000 -#endif - -#define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16) - -#elif defined(CONFIG_ARCH_AT91SAM9261) - -#define AT91SAM9_MASTER_CLOCK 99300000 -#define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16) - -#elif defined(CONFIG_ARCH_AT91SAM9G10) - -#define AT91SAM9_MASTER_CLOCK 133000000 -#define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16) - -#elif defined(CONFIG_ARCH_AT91SAM9263) - -#if defined(CONFIG_MACH_USB_A9263) -#define AT91SAM9_MASTER_CLOCK 90000000 -#else -#define AT91SAM9_MASTER_CLOCK 99959500 -#endif - -#define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16) - -#elif defined(CONFIG_ARCH_AT91SAM9RL) - -#define AT91SAM9_MASTER_CLOCK 100000000 -#define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16) - -#elif defined(CONFIG_ARCH_AT91SAM9G20) +#define AT91X40_MASTER_CLOCK 40000000 +#define CLOCK_TICK_RATE (AT91X40_MASTER_CLOCK) -#if defined(CONFIG_MACH_USB_A9G20) -#define AT91SAM9_MASTER_CLOCK 133000000 #else -#define AT91SAM9_MASTER_CLOCK 132096000 -#endif - -#define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16) - -#elif defined(CONFIG_ARCH_AT91SAM9G45) -#define AT91SAM9_MASTER_CLOCK 133333333 -#define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16) - -#elif defined(CONFIG_ARCH_AT91CAP9) - -#define AT91CAP9_MASTER_CLOCK 100000000 -#define CLOCK_TICK_RATE (AT91CAP9_MASTER_CLOCK/16) - -#elif defined(CONFIG_ARCH_AT91X40) - -#define AT91X40_MASTER_CLOCK 40000000 -#define CLOCK_TICK_RATE (AT91X40_MASTER_CLOCK) +#define CLOCK_TICK_RATE 12345678 #endif -#endif +#endif /* __ASM_ARCH_TIMEX_H */ diff --git a/trunk/arch/arm/mach-at91/include/mach/uncompress.h b/trunk/arch/arm/mach-at91/include/mach/uncompress.h index 18bdcdeb474f..0234fd9d20d6 100644 --- a/trunk/arch/arm/mach-at91/include/mach/uncompress.h +++ b/trunk/arch/arm/mach-at91/include/mach/uncompress.h @@ -24,8 +24,10 @@ #include #include -#if defined(CONFIG_AT91_EARLY_DBGU) -#define UART_OFFSET (AT91_DBGU + AT91_BASE_SYS) +#if defined(CONFIG_AT91_EARLY_DBGU0) +#define UART_OFFSET AT91_BASE_DBGU0 +#elif defined(CONFIG_AT91_EARLY_DBGU1) +#define UART_OFFSET AT91_BASE_DBGU1 #elif defined(CONFIG_AT91_EARLY_USART0) #define UART_OFFSET AT91_USART0 #elif defined(CONFIG_AT91_EARLY_USART1) diff --git a/trunk/arch/arm/mach-at91/irq.c b/trunk/arch/arm/mach-at91/irq.c index 9665265ec757..be6b639ecd7b 100644 --- a/trunk/arch/arm/mach-at91/irq.c +++ b/trunk/arch/arm/mach-at91/irq.c @@ -33,17 +33,18 @@ #include #include +void __iomem *at91_aic_base; static void at91_aic_mask_irq(struct irq_data *d) { /* Disable interrupt on AIC */ - at91_sys_write(AT91_AIC_IDCR, 1 << d->irq); + at91_aic_write(AT91_AIC_IDCR, 1 << d->irq); } static void at91_aic_unmask_irq(struct irq_data *d) { /* Enable interrupt on AIC */ - at91_sys_write(AT91_AIC_IECR, 1 << d->irq); + at91_aic_write(AT91_AIC_IECR, 1 << d->irq); } unsigned int at91_extern_irq; @@ -77,8 +78,8 @@ static int at91_aic_set_type(struct irq_data *d, unsigned type) return -EINVAL; } - smr = at91_sys_read(AT91_AIC_SMR(d->irq)) & ~AT91_AIC_SRCTYPE; - at91_sys_write(AT91_AIC_SMR(d->irq), smr | srctype); + smr = at91_aic_read(AT91_AIC_SMR(d->irq)) & ~AT91_AIC_SRCTYPE; + at91_aic_write(AT91_AIC_SMR(d->irq), smr | srctype); return 0; } @@ -102,15 +103,15 @@ static int at91_aic_set_wake(struct irq_data *d, unsigned value) void at91_irq_suspend(void) { - backups = at91_sys_read(AT91_AIC_IMR); - at91_sys_write(AT91_AIC_IDCR, backups); - at91_sys_write(AT91_AIC_IECR, wakeups); + backups = at91_aic_read(AT91_AIC_IMR); + at91_aic_write(AT91_AIC_IDCR, backups); + at91_aic_write(AT91_AIC_IECR, wakeups); } void at91_irq_resume(void) { - at91_sys_write(AT91_AIC_IDCR, wakeups); - at91_sys_write(AT91_AIC_IECR, backups); + at91_aic_write(AT91_AIC_IDCR, wakeups); + at91_aic_write(AT91_AIC_IECR, backups); } #else @@ -133,34 +134,39 @@ void __init at91_aic_init(unsigned int priority[NR_AIC_IRQS]) { unsigned int i; + at91_aic_base = ioremap(AT91_AIC, 512); + + if (!at91_aic_base) + panic("Impossible to ioremap AT91_AIC\n"); + /* * The IVR is used by macro get_irqnr_and_base to read and verify. * The irq number is NR_AIC_IRQS when a spurious interrupt has occurred. */ for (i = 0; i < NR_AIC_IRQS; i++) { /* Put irq number in Source Vector Register: */ - at91_sys_write(AT91_AIC_SVR(i), i); + at91_aic_write(AT91_AIC_SVR(i), i); /* Active Low interrupt, with the specified priority */ - at91_sys_write(AT91_AIC_SMR(i), AT91_AIC_SRCTYPE_LOW | priority[i]); + at91_aic_write(AT91_AIC_SMR(i), AT91_AIC_SRCTYPE_LOW | priority[i]); irq_set_chip_and_handler(i, &at91_aic_chip, handle_level_irq); set_irq_flags(i, IRQF_VALID | IRQF_PROBE); /* Perform 8 End Of Interrupt Command to make sure AIC will not Lock out nIRQ */ if (i < 8) - at91_sys_write(AT91_AIC_EOICR, 0); + at91_aic_write(AT91_AIC_EOICR, 0); } /* * Spurious Interrupt ID in Spurious Vector Register is NR_AIC_IRQS * When there is no current interrupt, the IRQ Vector Register reads the value stored in AIC_SPU */ - at91_sys_write(AT91_AIC_SPU, NR_AIC_IRQS); + at91_aic_write(AT91_AIC_SPU, NR_AIC_IRQS); /* No debugging in AIC: Debug (Protect) Control Register */ - at91_sys_write(AT91_AIC_DCR, 0); + at91_aic_write(AT91_AIC_DCR, 0); /* Disable and clear all interrupts initially */ - at91_sys_write(AT91_AIC_IDCR, 0xFFFFFFFF); - at91_sys_write(AT91_AIC_ICCR, 0xFFFFFFFF); + at91_aic_write(AT91_AIC_IDCR, 0xFFFFFFFF); + at91_aic_write(AT91_AIC_ICCR, 0xFFFFFFFF); } diff --git a/trunk/arch/arm/mach-at91/pm.c b/trunk/arch/arm/mach-at91/pm.c index 7046158109d7..62ad95556c36 100644 --- a/trunk/arch/arm/mach-at91/pm.c +++ b/trunk/arch/arm/mach-at91/pm.c @@ -34,7 +34,7 @@ /* * Show the reason for the previous system reset. */ -#if defined(AT91_SHDWC) +#if defined(AT91_RSTC) #include #include @@ -58,8 +58,11 @@ static void __init show_reset_status(void) char *reason, *r2 = reset; u32 reset_type, wake_type; + if (!at91_shdwc_base) + return; + reset_type = at91_sys_read(AT91_RSTC_SR) & AT91_RSTC_RSTTYP; - wake_type = at91_sys_read(AT91_SHDW_SR); + wake_type = at91_shdwc_read(AT91_SHDW_SR); switch (reset_type) { case AT91_RSTC_RSTTYP_GENERAL: @@ -215,7 +218,7 @@ static int at91_pm_enter(suspend_state_t state) | (1 << AT91_ID_FIQ) | (1 << AT91_ID_SYS) | (at91_extern_irq)) - & at91_sys_read(AT91_AIC_IMR), + & at91_aic_read(AT91_AIC_IMR), state); switch (state) { @@ -283,7 +286,7 @@ static int at91_pm_enter(suspend_state_t state) } pr_debug("AT91: PM - wakeup %08x\n", - at91_sys_read(AT91_AIC_IPR) & at91_sys_read(AT91_AIC_IMR)); + at91_aic_read(AT91_AIC_IPR) & at91_aic_read(AT91_AIC_IMR)); error: target_state = PM_SUSPEND_ON; diff --git a/trunk/arch/arm/mach-at91/sam9_smc.c b/trunk/arch/arm/mach-at91/sam9_smc.c index 5eab6aa621d0..8294783b679d 100644 --- a/trunk/arch/arm/mach-at91/sam9_smc.c +++ b/trunk/arch/arm/mach-at91/sam9_smc.c @@ -10,38 +10,58 @@ #include #include +#include +#include #include #include "sam9_smc.h" -void __init sam9_smc_configure(int cs, struct sam9_smc_config* config) + +#define AT91_SMC_CS(id, n) (smc_base_addr[id] + ((n) * 0x10)) + +static void __iomem *smc_base_addr[2]; + +static void __init sam9_smc_cs_configure(void __iomem *base, struct sam9_smc_config* config) { + /* Setup register */ - at91_sys_write(AT91_SMC_SETUP(cs), - AT91_SMC_NWESETUP_(config->nwe_setup) - | AT91_SMC_NCS_WRSETUP_(config->ncs_write_setup) - | AT91_SMC_NRDSETUP_(config->nrd_setup) - | AT91_SMC_NCS_RDSETUP_(config->ncs_read_setup) - ); + __raw_writel(AT91_SMC_NWESETUP_(config->nwe_setup) + | AT91_SMC_NCS_WRSETUP_(config->ncs_write_setup) + | AT91_SMC_NRDSETUP_(config->nrd_setup) + | AT91_SMC_NCS_RDSETUP_(config->ncs_read_setup), + base + AT91_SMC_SETUP); /* Pulse register */ - at91_sys_write(AT91_SMC_PULSE(cs), - AT91_SMC_NWEPULSE_(config->nwe_pulse) - | AT91_SMC_NCS_WRPULSE_(config->ncs_write_pulse) - | AT91_SMC_NRDPULSE_(config->nrd_pulse) - | AT91_SMC_NCS_RDPULSE_(config->ncs_read_pulse) - ); + __raw_writel(AT91_SMC_NWEPULSE_(config->nwe_pulse) + | AT91_SMC_NCS_WRPULSE_(config->ncs_write_pulse) + | AT91_SMC_NRDPULSE_(config->nrd_pulse) + | AT91_SMC_NCS_RDPULSE_(config->ncs_read_pulse), + base + AT91_SMC_PULSE); /* Cycle register */ - at91_sys_write(AT91_SMC_CYCLE(cs), - AT91_SMC_NWECYCLE_(config->write_cycle) - | AT91_SMC_NRDCYCLE_(config->read_cycle) - ); + __raw_writel(AT91_SMC_NWECYCLE_(config->write_cycle) + | AT91_SMC_NRDCYCLE_(config->read_cycle), + base + AT91_SMC_CYCLE); /* Mode register */ - at91_sys_write(AT91_SMC_MODE(cs), - config->mode - | AT91_SMC_TDF_(config->tdf_cycles) - ); + __raw_writel(config->mode + | AT91_SMC_TDF_(config->tdf_cycles), + base + AT91_SMC_MODE); +} + +void __init sam9_smc_configure(int id, int cs, struct sam9_smc_config* config) +{ + sam9_smc_cs_configure(AT91_SMC_CS(id, cs), config); +} + +void __init at91sam9_ioremap_smc(int id, u32 addr) +{ + if (id > 1) { + pr_warn("%s: id > 2\n", __func__); + return; + } + smc_base_addr[id] = ioremap(addr, 512); + if (!smc_base_addr[id]) + pr_warn("Impossible to ioremap smc.%d 0x%x\n", id, addr); } diff --git a/trunk/arch/arm/mach-at91/sam9_smc.h b/trunk/arch/arm/mach-at91/sam9_smc.h index bf72cfb3455b..039c5ce17aec 100644 --- a/trunk/arch/arm/mach-at91/sam9_smc.h +++ b/trunk/arch/arm/mach-at91/sam9_smc.h @@ -30,4 +30,5 @@ struct sam9_smc_config { u8 tdf_cycles:4; }; -extern void __init sam9_smc_configure(int cs, struct sam9_smc_config* config); +extern void __init sam9_smc_configure(int id, int cs, struct sam9_smc_config* config); +extern void __init at91sam9_ioremap_smc(int id, u32 addr); diff --git a/trunk/arch/arm/mach-at91/setup.c b/trunk/arch/arm/mach-at91/setup.c index cf98a8f94dc5..8bdcc3cb6012 100644 --- a/trunk/arch/arm/mach-at91/setup.c +++ b/trunk/arch/arm/mach-at91/setup.c @@ -8,6 +8,7 @@ #include #include #include +#include #include @@ -15,6 +16,7 @@ #include #include #include +#include #include "soc.h" #include "generic.h" @@ -73,9 +75,6 @@ static struct map_desc at91_io_desc __initdata = { .type = MT_DEVICE, }; -#define AT91_DBGU0 0xfffff200 -#define AT91_DBGU1 0xffffee00 - static void __init soc_detect(u32 dbgu_base) { u32 cidr, socid; @@ -248,9 +247,9 @@ void __init at91_map_io(void) at91_soc_initdata.type = AT91_SOC_NONE; at91_soc_initdata.subtype = AT91_SOC_SUBTYPE_NONE; - soc_detect(AT91_DBGU0); + soc_detect(AT91_BASE_DBGU0); if (!at91_soc_is_detected()) - soc_detect(AT91_DBGU1); + soc_detect(AT91_BASE_DBGU1); if (!at91_soc_is_detected()) panic("AT91: Impossible to detect the SOC type"); @@ -267,8 +266,25 @@ void __init at91_map_io(void) at91_boot_soc.map_io(); } +void __iomem *at91_shdwc_base = NULL; + +static void at91sam9_poweroff(void) +{ + at91_shdwc_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); +} + +void __init at91_ioremap_shdwc(u32 base_addr) +{ + at91_shdwc_base = ioremap(base_addr, 16); + if (!at91_shdwc_base) + panic("Impossible to ioremap at91_shdwc_base\n"); + pm_power_off = at91sam9_poweroff; +} + void __init at91_initialize(unsigned long main_clock) { + at91_boot_soc.ioremap_registers(); + /* Init clock subsystem */ at91_clock_init(main_clock); diff --git a/trunk/arch/arm/mach-at91/soc.h b/trunk/arch/arm/mach-at91/soc.h index 21ed8816e6f7..4588ae6f7acd 100644 --- a/trunk/arch/arm/mach-at91/soc.h +++ b/trunk/arch/arm/mach-at91/soc.h @@ -7,6 +7,7 @@ struct at91_init_soc { unsigned int *default_irq_priority; void (*map_io)(void); + void (*ioremap_registers)(void); void (*register_clocks)(void); void (*init)(void); }; diff --git a/trunk/arch/arm/mach-bcmring/core.c b/trunk/arch/arm/mach-bcmring/core.c index 430da120a297..6b67b7e8426c 100644 --- a/trunk/arch/arm/mach-bcmring/core.c +++ b/trunk/arch/arm/mach-bcmring/core.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/arch/arm/mach-davinci/clock.c b/trunk/arch/arm/mach-davinci/clock.c index 00861139101d..008772e3b843 100644 --- a/trunk/arch/arm/mach-davinci/clock.c +++ b/trunk/arch/arm/mach-davinci/clock.c @@ -31,19 +31,12 @@ static LIST_HEAD(clocks); static DEFINE_MUTEX(clocks_mutex); static DEFINE_SPINLOCK(clockfw_lock); -static unsigned psc_domain(struct clk *clk) -{ - return (clk->flags & PSC_DSP) - ? DAVINCI_GPSC_DSPDOMAIN - : DAVINCI_GPSC_ARMDOMAIN; -} - static void __clk_enable(struct clk *clk) { if (clk->parent) __clk_enable(clk->parent); if (clk->usecount++ == 0 && (clk->flags & CLK_PSC)) - davinci_psc_config(psc_domain(clk), clk->gpsc, clk->lpsc, + davinci_psc_config(clk->domain, clk->gpsc, clk->lpsc, true, clk->flags); } @@ -53,7 +46,7 @@ static void __clk_disable(struct clk *clk) return; if (--clk->usecount == 0 && !(clk->flags & CLK_PLL) && (clk->flags & CLK_PSC)) - davinci_psc_config(psc_domain(clk), clk->gpsc, clk->lpsc, + davinci_psc_config(clk->domain, clk->gpsc, clk->lpsc, false, clk->flags); if (clk->parent) __clk_disable(clk->parent); @@ -237,7 +230,7 @@ static int __init clk_disable_unused(void) pr_debug("Clocks: disable unused %s\n", ck->name); - davinci_psc_config(psc_domain(ck), ck->gpsc, ck->lpsc, + davinci_psc_config(ck->domain, ck->gpsc, ck->lpsc, false, ck->flags); } spin_unlock_irq(&clockfw_lock); diff --git a/trunk/arch/arm/mach-davinci/clock.h b/trunk/arch/arm/mach-davinci/clock.h index a705f367a84d..46f0f1bf1a4c 100644 --- a/trunk/arch/arm/mach-davinci/clock.h +++ b/trunk/arch/arm/mach-davinci/clock.h @@ -93,6 +93,7 @@ struct clk { u8 usecount; u8 lpsc; u8 gpsc; + u8 domain; u32 flags; struct clk *parent; struct list_head children; /* list of children */ @@ -107,11 +108,10 @@ struct clk { /* Clock flags: SoC-specific flags start at BIT(16) */ #define ALWAYS_ENABLED BIT(1) #define CLK_PSC BIT(2) -#define PSC_DSP BIT(3) /* PSC uses DSP domain, not ARM */ -#define CLK_PLL BIT(4) /* PLL-derived clock */ -#define PRE_PLL BIT(5) /* source is before PLL mult/div */ -#define PSC_SWRSTDISABLE BIT(6) /* Disable state is SwRstDisable */ -#define PSC_FORCE BIT(7) /* Force module state transtition */ +#define CLK_PLL BIT(3) /* PLL-derived clock */ +#define PRE_PLL BIT(4) /* source is before PLL mult/div */ +#define PSC_SWRSTDISABLE BIT(5) /* Disable state is SwRstDisable */ +#define PSC_FORCE BIT(6) /* Force module state transtition */ #define CLK(dev, con, ck) \ { \ diff --git a/trunk/arch/arm/mach-davinci/dm644x.c b/trunk/arch/arm/mach-davinci/dm644x.c index 0800f9cf33bb..43a48ee1917b 100644 --- a/trunk/arch/arm/mach-davinci/dm644x.c +++ b/trunk/arch/arm/mach-davinci/dm644x.c @@ -130,7 +130,7 @@ static struct clk dsp_clk = { .name = "dsp", .parent = &pll1_sysclk1, .lpsc = DAVINCI_LPSC_GEM, - .flags = PSC_DSP, + .domain = DAVINCI_GPSC_DSPDOMAIN, .usecount = 1, /* REVISIT how to disable? */ }; @@ -145,7 +145,7 @@ static struct clk vicp_clk = { .name = "vicp", .parent = &pll1_sysclk2, .lpsc = DAVINCI_LPSC_IMCOP, - .flags = PSC_DSP, + .domain = DAVINCI_GPSC_DSPDOMAIN, .usecount = 1, /* REVISIT how to disable? */ }; diff --git a/trunk/arch/arm/mach-davinci/include/mach/dm646x.h b/trunk/arch/arm/mach-davinci/include/mach/dm646x.h index 2a00fe5ac253..a8ee6c9f0bb0 100644 --- a/trunk/arch/arm/mach-davinci/include/mach/dm646x.h +++ b/trunk/arch/arm/mach-davinci/include/mach/dm646x.h @@ -16,6 +16,7 @@ #include #include #include +#include #define DM646X_EMAC_BASE (0x01C80000) #define DM646X_EMAC_MDIO_BASE (DM646X_EMAC_BASE + 0x4000) @@ -34,58 +35,6 @@ int __init dm646x_init_edma(struct edma_rsv_info *rsv); void dm646x_video_init(void); -enum vpif_if_type { - VPIF_IF_BT656, - VPIF_IF_BT1120, - VPIF_IF_RAW_BAYER -}; - -struct vpif_interface { - enum vpif_if_type if_type; - unsigned hd_pol:1; - unsigned vd_pol:1; - unsigned fid_pol:1; -}; - -struct vpif_subdev_info { - const char *name; - struct i2c_board_info board_info; - u32 input; - u32 output; - unsigned can_route:1; - struct vpif_interface vpif_if; -}; - -struct vpif_display_config { - int (*set_clock)(int, int); - struct vpif_subdev_info *subdevinfo; - int subdev_count; - const char **output; - int output_count; - const char *card_name; -}; - -struct vpif_input { - struct v4l2_input input; - const char *subdev_name; -}; - -#define VPIF_CAPTURE_MAX_CHANNELS 2 - -struct vpif_capture_chan_config { - const struct vpif_input *inputs; - int input_count; -}; - -struct vpif_capture_config { - int (*setup_input_channel_mode)(int); - int (*setup_input_path)(int, const char *); - struct vpif_capture_chan_config chan_config[VPIF_CAPTURE_MAX_CHANNELS]; - struct vpif_subdev_info *subdev_info; - int subdev_count; - const char *card_name; -}; - void dm646x_setup_vpif(struct vpif_display_config *, struct vpif_capture_config *); diff --git a/trunk/arch/arm/mach-dove/addr-map.c b/trunk/arch/arm/mach-dove/addr-map.c index 00be4fc26dd7..98b8c83b09ab 100644 --- a/trunk/arch/arm/mach-dove/addr-map.c +++ b/trunk/arch/arm/mach-dove/addr-map.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "common.h" /* @@ -34,98 +35,72 @@ #define ATTR_PCIE_MEM 0xe8 #define ATTR_SCRATCHPAD 0x0 -/* - * CPU Address Decode Windows registers - */ -#define WIN_CTRL(n) (BRIDGE_VIRT_BASE + ((n) << 4) + 0x0) -#define WIN_BASE(n) (BRIDGE_VIRT_BASE + ((n) << 4) + 0x4) -#define WIN_REMAP_LO(n) (BRIDGE_VIRT_BASE + ((n) << 4) + 0x8) -#define WIN_REMAP_HI(n) (BRIDGE_VIRT_BASE + ((n) << 4) + 0xc) - -struct mbus_dram_target_info dove_mbus_dram_info; - static inline void __iomem *ddr_map_sc(int i) { return (void __iomem *)(DOVE_MC_VIRT_BASE + 0x100 + ((i) << 4)); } -static int cpu_win_can_remap(int win) -{ - if (win < 4) - return 1; - - return 0; -} - -static void __init setup_cpu_win(int win, u32 base, u32 size, - u8 target, u8 attr, int remap) -{ - u32 ctrl; - - base &= 0xffff0000; - ctrl = ((size - 1) & 0xffff0000) | (attr << 8) | (target << 4) | 1; - - writel(base, WIN_BASE(win)); - writel(ctrl, WIN_CTRL(win)); - if (cpu_win_can_remap(win)) { - if (remap < 0) - remap = base; - writel(remap & 0xffff0000, WIN_REMAP_LO(win)); - writel(0, WIN_REMAP_HI(win)); - } -} - -void __init dove_setup_cpu_mbus(void) -{ - int i; - int cs; +/* + * Description of the windows needed by the platform code + */ +static struct __initdata orion_addr_map_cfg addr_map_cfg = { + .num_wins = 8, + .remappable_wins = 4, + .bridge_virt_base = BRIDGE_VIRT_BASE, +}; +static const struct __initdata orion_addr_map_info addr_map_info[] = { /* - * First, disable and clear windows. + * Windows for PCIe IO+MEM space. */ - for (i = 0; i < 8; i++) { - writel(0, WIN_BASE(i)); - writel(0, WIN_CTRL(i)); - if (cpu_win_can_remap(i)) { - writel(0, WIN_REMAP_LO(i)); - writel(0, WIN_REMAP_HI(i)); - } - } - + { 0, DOVE_PCIE0_IO_PHYS_BASE, DOVE_PCIE0_IO_SIZE, + TARGET_PCIE0, ATTR_PCIE_IO, DOVE_PCIE0_IO_BUS_BASE + }, + { 1, DOVE_PCIE1_IO_PHYS_BASE, DOVE_PCIE1_IO_SIZE, + TARGET_PCIE1, ATTR_PCIE_IO, DOVE_PCIE1_IO_BUS_BASE + }, + { 2, DOVE_PCIE0_MEM_PHYS_BASE, DOVE_PCIE0_MEM_SIZE, + TARGET_PCIE0, ATTR_PCIE_MEM, -1 + }, + { 3, DOVE_PCIE1_MEM_PHYS_BASE, DOVE_PCIE1_MEM_SIZE, + TARGET_PCIE1, ATTR_PCIE_MEM, -1 + }, /* - * Setup windows for PCIe IO+MEM space. + * Window for CESA engine. */ - setup_cpu_win(0, DOVE_PCIE0_IO_PHYS_BASE, DOVE_PCIE0_IO_SIZE, - TARGET_PCIE0, ATTR_PCIE_IO, DOVE_PCIE0_IO_BUS_BASE); - setup_cpu_win(1, DOVE_PCIE1_IO_PHYS_BASE, DOVE_PCIE1_IO_SIZE, - TARGET_PCIE1, ATTR_PCIE_IO, DOVE_PCIE1_IO_BUS_BASE); - setup_cpu_win(2, DOVE_PCIE0_MEM_PHYS_BASE, DOVE_PCIE0_MEM_SIZE, - TARGET_PCIE0, ATTR_PCIE_MEM, -1); - setup_cpu_win(3, DOVE_PCIE1_MEM_PHYS_BASE, DOVE_PCIE1_MEM_SIZE, - TARGET_PCIE1, ATTR_PCIE_MEM, -1); - + { 4, DOVE_CESA_PHYS_BASE, DOVE_CESA_SIZE, + TARGET_CESA, ATTR_CESA, -1 + }, /* - * Setup window for CESA engine. + * Window to the BootROM for Standby and Sleep Resume */ - setup_cpu_win(4, DOVE_CESA_PHYS_BASE, DOVE_CESA_SIZE, - TARGET_CESA, ATTR_CESA, -1); - + { 5, DOVE_BOOTROM_PHYS_BASE, DOVE_BOOTROM_SIZE, + TARGET_BOOTROM, ATTR_BOOTROM, -1 + }, /* - * Setup the Window to the BootROM for Standby and Sleep Resume + * Window to the PMU Scratch Pad space */ - setup_cpu_win(5, DOVE_BOOTROM_PHYS_BASE, DOVE_BOOTROM_SIZE, - TARGET_BOOTROM, ATTR_BOOTROM, -1); + { 6, DOVE_SCRATCHPAD_PHYS_BASE, DOVE_SCRATCHPAD_SIZE, + TARGET_SCRATCHPAD, ATTR_SCRATCHPAD, -1 + }, + /* End marker */ + { -1, 0, 0, 0, 0, 0 } +}; + +void __init dove_setup_cpu_mbus(void) +{ + int i; + int cs; /* - * Setup the Window to the PMU Scratch Pad space + * Disable, clear and configure windows. */ - setup_cpu_win(6, DOVE_SCRATCHPAD_PHYS_BASE, DOVE_SCRATCHPAD_SIZE, - TARGET_SCRATCHPAD, ATTR_SCRATCHPAD, -1); + orion_config_wins(&addr_map_cfg, addr_map_info); /* * Setup MBUS dram target info. */ - dove_mbus_dram_info.mbus_dram_target_id = TARGET_DDR; + orion_mbus_dram_info.mbus_dram_target_id = TARGET_DDR; for (i = 0, cs = 0; i < 2; i++) { u32 map = readl(ddr_map_sc(i)); @@ -136,7 +111,7 @@ void __init dove_setup_cpu_mbus(void) if (map & 1) { struct mbus_dram_window *w; - w = &dove_mbus_dram_info.cs[cs++]; + w = &orion_mbus_dram_info.cs[cs++]; w->cs_index = i; w->mbus_attr = 0; /* CS address decoding done inside */ /* the DDR controller, no need to */ @@ -145,5 +120,5 @@ void __init dove_setup_cpu_mbus(void) w->size = 0x100000 << (((map & 0x000f0000) >> 16) - 4); } } - dove_mbus_dram_info.num_cs = cs; + orion_mbus_dram_info.num_cs = cs; } diff --git a/trunk/arch/arm/mach-dove/common.c b/trunk/arch/arm/mach-dove/common.c index 13bb236cd0cd..dd1429ae6405 100644 --- a/trunk/arch/arm/mach-dove/common.c +++ b/trunk/arch/arm/mach-dove/common.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -30,6 +29,7 @@ #include #include #include +#include #include "common.h" static int get_tclk(void); @@ -71,8 +71,7 @@ void __init dove_map_io(void) ****************************************************************************/ void __init dove_ehci0_init(void) { - orion_ehci_init(&dove_mbus_dram_info, - DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0); + orion_ehci_init(DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0); } /***************************************************************************** @@ -80,8 +79,7 @@ void __init dove_ehci0_init(void) ****************************************************************************/ void __init dove_ehci1_init(void) { - orion_ehci_1_init(&dove_mbus_dram_info, - DOVE_USB1_PHYS_BASE, IRQ_DOVE_USB1); + orion_ehci_1_init(DOVE_USB1_PHYS_BASE, IRQ_DOVE_USB1); } /***************************************************************************** @@ -89,7 +87,7 @@ void __init dove_ehci1_init(void) ****************************************************************************/ void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data) { - orion_ge00_init(eth_data, &dove_mbus_dram_info, + orion_ge00_init(eth_data, DOVE_GE00_PHYS_BASE, IRQ_DOVE_GE00_SUM, 0, get_tclk()); } @@ -107,8 +105,7 @@ void __init dove_rtc_init(void) ****************************************************************************/ void __init dove_sata_init(struct mv_sata_platform_data *sata_data) { - orion_sata_init(sata_data, &dove_mbus_dram_info, - DOVE_SATA_PHYS_BASE, IRQ_DOVE_SATA); + orion_sata_init(sata_data, DOVE_SATA_PHYS_BASE, IRQ_DOVE_SATA); } @@ -198,8 +195,7 @@ struct sys_timer dove_timer = { ****************************************************************************/ void __init dove_xor0_init(void) { - orion_xor0_init(&dove_mbus_dram_info, - DOVE_XOR0_PHYS_BASE, DOVE_XOR0_HIGH_PHYS_BASE, + orion_xor0_init(DOVE_XOR0_PHYS_BASE, DOVE_XOR0_HIGH_PHYS_BASE, IRQ_DOVE_XOR_00, IRQ_DOVE_XOR_01); } diff --git a/trunk/arch/arm/mach-dove/common.h b/trunk/arch/arm/mach-dove/common.h index 42027305c107..6432a3ba864b 100644 --- a/trunk/arch/arm/mach-dove/common.h +++ b/trunk/arch/arm/mach-dove/common.h @@ -15,7 +15,6 @@ struct mv643xx_eth_platform_data; struct mv_sata_platform_data; extern struct sys_timer dove_timer; -extern struct mbus_dram_target_info dove_mbus_dram_info; /* * Basic Dove init functions used early by machine-setup. diff --git a/trunk/arch/arm/mach-dove/pcie.c b/trunk/arch/arm/mach-dove/pcie.c index aa2b3a09a51d..6c11a4df7178 100644 --- a/trunk/arch/arm/mach-dove/pcie.c +++ b/trunk/arch/arm/mach-dove/pcie.c @@ -10,7 +10,6 @@ #include #include -#include #include