From c33b202a437065d025701327fed51a799a41153d Mon Sep 17 00:00:00 2001 From: Nishanth Menon Date: Fri, 10 Jun 2011 20:24:57 +0200 Subject: [PATCH] --- yaml --- r: 256915 b: refs/heads/master c: 99f381d3549432a250fe846a2a82d61a032804b0 h: refs/heads/master i: 256913: cd420afec46148ce45f572450beec068e13e2a9b 256911: 2dc38e8130bd07208da2019b67b520b24e397ec9 v: v3 --- [refs] | 2 +- trunk/Documentation/ABI/stable/firewire-cdev | 103 - .../ABI/stable/sysfs-bus-firewire | 122 - .../testing/sysfs-driver-hid-roccat-koneplus | 8 - .../ABI/testing/sysfs-driver-hid-wiimote | 10 - trunk/Documentation/DocBook/80211.tmpl | 5 +- .../devicetree/bindings/arm/primecell.txt | 21 - .../devicetree/bindings/gpio/fsl-imx-gpio.txt | 22 - .../devicetree/bindings/gpio/gpio.txt | 46 +- .../devicetree/bindings/gpio/gpio_nvidia.txt | 8 - .../fsl-sec2.txt => powerpc/fsl/sec.txt} | 2 +- .../devicetree/bindings/spi/fsl-imx-cspi.txt | 22 - .../devicetree/bindings/spi/spi_nvidia.txt | 5 - .../bindings/tty/serial/of-serial.txt | 36 - .../feature-removal-schedule.txt | 10 + trunk/Documentation/filesystems/nilfs2.txt | 1 + trunk/Documentation/filesystems/ubifs.txt | 28 + trunk/Documentation/mmc/00-INDEX | 2 - trunk/Documentation/mmc/mmc-async-req.txt | 87 - trunk/Documentation/networking/ifenslave.c | 18 +- trunk/Documentation/networking/ip-sysctl.txt | 29 +- .../networking/netdev-features.txt | 154 - trunk/Documentation/networking/nfc.txt | 128 - trunk/Documentation/networking/stmmac.txt | 200 +- trunk/Documentation/power/opp.txt | 2 + trunk/Documentation/spi/ep93xx_spi | 10 - trunk/Documentation/spi/pxa2xx | 5 + trunk/Documentation/virtual/lguest/lguest.c | 47 +- trunk/Documentation/x86/boot.txt | 2 +- trunk/MAINTAINERS | 26 +- trunk/Makefile | 2 +- trunk/arch/arm/configs/mmp2_defconfig | 9 +- .../arm/mach-at91/include/mach}/at91_mci.h | 2 +- trunk/arch/arm/mach-davinci/board-dm365-evm.c | 4 +- .../arm/mach-davinci/board-mityomapl138.c | 1 - trunk/arch/arm/mach-davinci/dm646x.c | 1 - trunk/arch/arm/mach-davinci/gpio.c | 21 +- trunk/arch/arm/mach-davinci/irq.c | 6 - trunk/arch/arm/mach-davinci/pm.c | 1 - trunk/arch/arm/mach-ep93xx/Makefile | 4 +- trunk/arch/arm/mach-ep93xx/core.c | 33 +- trunk/arch/arm/mach-ep93xx/dma-m2p.c | 411 + trunk/arch/arm/mach-ep93xx/dma.c | 108 - .../arm/mach-ep93xx/gpio.c} | 243 +- trunk/arch/arm/mach-ep93xx/include/mach/dma.h | 190 +- .../mach-ep93xx/include/mach/ep93xx-regs.h | 1 - .../arm/mach-ep93xx/include/mach/ep93xx_spi.h | 2 - trunk/arch/arm/mach-imx/clock-imx25.c | 7 +- trunk/arch/arm/mach-imx/dma-v1.c | 1 - trunk/arch/arm/mach-imx/mach-apf9328.c | 2 - trunk/arch/arm/mach-imx/mach-armadillo5x0.c | 2 - trunk/arch/arm/mach-imx/mach-bug.c | 2 - trunk/arch/arm/mach-imx/mach-cpuimx27.c | 2 - trunk/arch/arm/mach-imx/mach-cpuimx35.c | 2 - .../arch/arm/mach-imx/mach-eukrea_cpuimx25.c | 2 - .../arm/mach-imx/mach-imx27_visstrim_m10.c | 2 - trunk/arch/arm/mach-imx/mach-imx27ipcam.c | 2 - trunk/arch/arm/mach-imx/mach-imx27lite.c | 2 - trunk/arch/arm/mach-imx/mach-kzm_arm11_01.c | 2 - trunk/arch/arm/mach-imx/mach-mx1ads.c | 2 - trunk/arch/arm/mach-imx/mach-mx21ads.c | 2 - trunk/arch/arm/mach-imx/mach-mx25_3ds.c | 2 - trunk/arch/arm/mach-imx/mach-mx27_3ds.c | 2 - trunk/arch/arm/mach-imx/mach-mx27ads.c | 2 - trunk/arch/arm/mach-imx/mach-mx31_3ds.c | 3 - trunk/arch/arm/mach-imx/mach-mx31ads.c | 2 - trunk/arch/arm/mach-imx/mach-mx31lilly.c | 2 - trunk/arch/arm/mach-imx/mach-mx31lite.c | 2 - trunk/arch/arm/mach-imx/mach-mx31moboard.c | 2 - trunk/arch/arm/mach-imx/mach-mx35_3ds.c | 2 - trunk/arch/arm/mach-imx/mach-mxt_td60.c | 2 - trunk/arch/arm/mach-imx/mach-pca100.c | 2 - trunk/arch/arm/mach-imx/mach-pcm037.c | 2 - trunk/arch/arm/mach-imx/mach-pcm038.c | 2 - trunk/arch/arm/mach-imx/mach-pcm043.c | 2 - trunk/arch/arm/mach-imx/mach-qong.c | 2 - trunk/arch/arm/mach-imx/mach-scb9328.c | 2 - trunk/arch/arm/mach-imx/mach-vpr200.c | 2 - trunk/arch/arm/mach-imx/mm-imx1.c | 21 +- trunk/arch/arm/mach-imx/mm-imx21.c | 21 +- trunk/arch/arm/mach-imx/mm-imx25.c | 17 +- trunk/arch/arm/mach-imx/mm-imx27.c | 22 +- trunk/arch/arm/mach-imx/mm-imx31.c | 15 +- trunk/arch/arm/mach-imx/mm-imx35.c | 16 +- trunk/arch/arm/mach-iop13xx/setup.c | 1 - trunk/arch/arm/mach-ixp4xx/common.c | 10 +- trunk/arch/arm/mach-mmp/brownstone.c | 10 +- trunk/arch/arm/mach-mmp/include/mach/mmp2.h | 2 +- trunk/arch/arm/mach-mmp/jasper.c | 2 +- trunk/arch/arm/mach-mmp/mmp2.c | 16 +- trunk/arch/arm/mach-mx5/board-cpuimx51.c | 2 - trunk/arch/arm/mach-mx5/board-cpuimx51sd.c | 2 - trunk/arch/arm/mach-mx5/board-mx50_rdp.c | 2 - trunk/arch/arm/mach-mx5/board-mx51_3ds.c | 2 - trunk/arch/arm/mach-mx5/board-mx51_babbage.c | 2 - trunk/arch/arm/mach-mx5/board-mx51_efikamx.c | 2 - trunk/arch/arm/mach-mx5/board-mx51_efikasb.c | 2 - trunk/arch/arm/mach-mx5/board-mx53_evk.c | 2 - trunk/arch/arm/mach-mx5/board-mx53_loco.c | 2 - trunk/arch/arm/mach-mx5/board-mx53_smd.c | 2 - trunk/arch/arm/mach-mx5/clock-mx51-mx53.c | 11 +- trunk/arch/arm/mach-mx5/devices.c | 64 + trunk/arch/arm/mach-mx5/mm-mx50.c | 22 +- trunk/arch/arm/mach-mx5/mm.c | 27 +- trunk/arch/arm/mach-mxs/Makefile | 2 +- trunk/arch/arm/mach-mxs/devices.c | 11 - trunk/arch/arm/mach-mxs/devices/Makefile | 1 - .../arm/mach-mxs/devices/platform-auart.c | 1 - .../arch/arm/mach-mxs/devices/platform-dma.c | 1 - .../arch/arm/mach-mxs/devices/platform-fec.c | 1 - .../arm/mach-mxs/devices/platform-gpio-mxs.c | 53 - trunk/arch/arm/mach-mxs/gpio.c | 331 + trunk/arch/arm/mach-mxs/gpio.h | 34 + .../mach-mxs/include/mach/devices-common.h | 2 - trunk/arch/arm/mach-mxs/mach-mx28evk.c | 1 + trunk/arch/arm/mach-mxs/mm-mx23.c | 1 + trunk/arch/arm/mach-mxs/mm-mx28.c | 1 + trunk/arch/arm/mach-omap1/gpio15xx.c | 22 - trunk/arch/arm/mach-omap1/gpio16xx.c | 28 - trunk/arch/arm/mach-omap1/gpio7xx.c | 27 - trunk/arch/arm/mach-omap2/gpio.c | 32 - .../arm/mach-s3c2410/include/mach/spi-gpio.h | 28 + trunk/arch/arm/mach-s3c2410/mach-qt2410.c | 34 +- trunk/arch/arm/mach-s3c2412/mach-jive.c | 41 +- trunk/arch/arm/mach-s3c2440/mach-gta02.c | 1 + trunk/arch/arm/mach-s3c64xx/dma.c | 14 +- trunk/arch/arm/mach-tegra/Makefile | 1 + .../arm/mach-tegra/gpio.c} | 10 - trunk/arch/arm/plat-mxc/Makefile | 2 +- trunk/arch/arm/plat-mxc/devices.c | 11 - trunk/arch/arm/plat-mxc/devices/Makefile | 1 - .../arch/arm/plat-mxc/devices/platform-fec.c | 1 - .../plat-mxc/devices/platform-fsl-usb2-udc.c | 1 - .../arm/plat-mxc/devices/platform-gpio-mxc.c | 32 - .../arm/plat-mxc/devices/platform-imx-fb.c | 1 - .../arm/plat-mxc/devices/platform-ipu-core.c | 1 - .../arm/plat-mxc/devices/platform-mxc-ehci.c | 1 - .../arm/plat-mxc/devices/platform-mxc-mmc.c | 1 - .../arm/plat-mxc/devices/platform-spi_imx.c | 12 +- trunk/arch/arm/plat-mxc/gpio.c | 361 + trunk/arch/arm/plat-mxc/include/mach/common.h | 12 +- .../plat-mxc/include/mach/devices-common.h | 2 - trunk/arch/arm/plat-mxc/include/mach/gpio.h | 27 + trunk/arch/arm/plat-mxc/include/mach/irqs.h | 21 +- .../arm/plat-nomadik/include/plat/ste_dma40.h | 1 - trunk/arch/arm/plat-omap/include/plat/gpio.h | 20 - trunk/arch/arm/plat-pxa/include/plat/sdhci.h | 35 + trunk/arch/arm/plat-s3c24xx/dma.c | 12 +- trunk/arch/arm/plat-samsung/dma.c | 6 +- .../arch/arm/plat-samsung/include/plat/dma.h | 21 +- trunk/arch/arm/plat-samsung/irq-uart.c | 7 - trunk/arch/arm/plat-samsung/irq-vic-timer.c | 7 - trunk/arch/m68k/emu/nfeth.c | 2 +- .../arch/microblaze/include/asm/pci-bridge.h | 13 + trunk/arch/microblaze/include/asm/pci.h | 3 +- trunk/arch/microblaze/include/asm/prom.h | 15 + trunk/arch/microblaze/pci/Makefile | 2 +- trunk/arch/microblaze/pci/pci-common.c | 112 - trunk/arch/microblaze/pci/pci_32.c | 432 ++ trunk/arch/mips/kernel/i8259.c | 22 +- trunk/arch/powerpc/Kconfig | 1 - trunk/arch/powerpc/Makefile | 3 +- trunk/arch/powerpc/include/asm/pci-bridge.h | 29 +- trunk/arch/powerpc/include/asm/pci.h | 3 +- trunk/arch/powerpc/include/asm/ppc-opcode.h | 40 - trunk/arch/powerpc/include/asm/prom.h | 14 + trunk/arch/powerpc/kernel/pci-common.c | 11 +- trunk/arch/powerpc/kernel/pci_32.c | 150 +- trunk/arch/powerpc/kernel/pci_dn.c | 47 + trunk/arch/powerpc/kernel/pci_of_scan.c | 9 +- trunk/arch/powerpc/net/Makefile | 4 - trunk/arch/powerpc/net/bpf_jit.h | 227 - trunk/arch/powerpc/net/bpf_jit_64.S | 138 - trunk/arch/powerpc/net/bpf_jit_comp.c | 694 -- trunk/arch/powerpc/platforms/52xx/Kconfig | 8 + trunk/arch/powerpc/platforms/52xx/Makefile | 1 + .../powerpc/platforms/52xx/mpc52xx_gpio.c} | 12 +- trunk/arch/powerpc/platforms/powermac/pci.c | 3 +- trunk/arch/s390/kernel/traps.c | 4 +- trunk/arch/sparc/include/asm/irqflags_32.h | 8 +- trunk/arch/sparc/include/asm/irqflags_64.h | 14 +- trunk/arch/sparc/include/asm/pci_32.h | 3 + trunk/arch/sparc/include/asm/pci_64.h | 3 + trunk/arch/sparc/include/asm/ptrace.h | 1 - trunk/arch/sparc/kernel/entry.S | 2 +- trunk/arch/sparc/kernel/pci.c | 8 +- trunk/arch/sparc/kernel/pcic.c | 8 + trunk/arch/sparc/mm/leon_mm.c | 2 +- trunk/arch/x86/Kconfig | 2 +- trunk/arch/x86/include/asm/lguest_hcall.h | 1 - trunk/arch/x86/include/asm/percpu.h | 11 +- trunk/arch/x86/include/asm/prom.h | 11 + trunk/arch/x86/include/asm/xen/pci.h | 5 +- trunk/arch/x86/kernel/asm-offsets_32.c | 1 + trunk/arch/x86/kernel/devicetree.c | 60 +- trunk/arch/x86/kernel/reboot.c | 24 - trunk/arch/x86/kernel/tboot.c | 1 - trunk/arch/x86/lguest/boot.c | 36 +- trunk/arch/x86/lguest/i386_head.S | 35 +- trunk/arch/x86/pci/xen.c | 371 +- trunk/arch/x86/xen/Makefile | 2 +- trunk/arch/x86/xen/enlighten.c | 8 - trunk/arch/x86/xen/platform-pci-unplug.c | 2 +- trunk/arch/x86/xen/vga.c | 67 - trunk/arch/x86/xen/xen-ops.h | 11 - trunk/crypto/async_tx/raid6test.c | 1 - trunk/drivers/Kconfig | 2 + trunk/drivers/Makefile | 1 - trunk/drivers/acpi/apei/hest.c | 12 +- trunk/drivers/acpi/osl.c | 17 + trunk/drivers/atm/ambassador.c | 11 +- trunk/drivers/atm/ambassador.h | 4 + trunk/drivers/atm/eni.h | 1 - trunk/drivers/atm/firestream.c | 1 - trunk/drivers/atm/horizon.c | 1 - trunk/drivers/atm/idt77252.c | 1 - trunk/drivers/atm/iphase.c | 1 - trunk/drivers/atm/lanai.c | 9 +- trunk/drivers/atm/zatm.c | 1 - trunk/drivers/base/power/opp.c | 17 + trunk/drivers/bcma/Kconfig | 11 - trunk/drivers/bcma/Makefile | 3 +- trunk/drivers/bcma/bcma_private.h | 11 +- trunk/drivers/bcma/core.c | 3 +- trunk/drivers/bcma/driver_chipcommon_pmu.c | 6 +- trunk/drivers/bcma/driver_pci.c | 62 +- trunk/drivers/bcma/driver_pci_host.c | 14 - trunk/drivers/bcma/host_pci.c | 53 - trunk/drivers/bcma/main.c | 14 +- trunk/drivers/bcma/sprom.c | 165 - trunk/drivers/block/xen-blkback/xenbus.c | 2 +- trunk/drivers/block/xsysace.c | 98 +- trunk/drivers/bluetooth/ath3k.c | 5 - trunk/drivers/bluetooth/btusb.c | 12 +- trunk/drivers/char/random.c | 15 - trunk/drivers/connector/cn_proc.c | 35 - trunk/drivers/dma/Kconfig | 7 - trunk/drivers/dma/Makefile | 1 - trunk/drivers/dma/coh901318.c | 1 - trunk/drivers/dma/dmaengine.c | 1 - trunk/drivers/dma/dmatest.c | 1 - trunk/drivers/dma/ep93xx_dma.c | 1355 ---- trunk/drivers/dma/ipu/ipu_idmac.c | 1 - trunk/drivers/dma/ste_dma40.c | 1 - trunk/drivers/firewire/core-cdev.c | 20 +- trunk/drivers/firewire/net.c | 11 +- trunk/drivers/firewire/ohci.c | 42 +- .../drivers/gpio/{gpio-74x164.c => 74x164.c} | 33 +- trunk/drivers/gpio/Kconfig | 66 +- trunk/drivers/gpio/Makefile | 87 +- .../gpio/{gpio-ab8500.c => ab8500-gpio.c} | 0 .../gpio/{gpio-adp5520.c => adp5520-gpio.c} | 0 .../gpio/{gpio-adp5588.c => adp5588-gpio.c} | 0 .../{gpio-generic.c => basic_mmio_gpio.c} | 6 +- .../gpio/{gpio-bt8xx.c => bt8xxgpio.c} | 0 .../gpio/{gpio-cs5535.c => cs5535-gpio.c} | 0 trunk/drivers/gpio/gpio-da9052.c | 277 - trunk/drivers/gpio/gpio-exynos4.c | 5 +- trunk/drivers/gpio/gpio-mxc.c | 460 -- trunk/drivers/gpio/gpio-mxs.c | 289 - trunk/drivers/gpio/gpio-omap.c | 723 +- trunk/drivers/gpio/gpio-plat-samsung.c | 3 +- trunk/drivers/gpio/gpio-s5pc100.c | 5 +- trunk/drivers/gpio/gpio-s5pv210.c | 5 +- trunk/drivers/gpio/gpio-u300.c | 5 +- .../gpio/{gpio-it8761e.c => it8761e_gpio.c} | 2 +- .../gpio/{gpio-janz-ttl.c => janz-ttl.c} | 0 .../gpio/{gpio-langwell.c => langwell_gpio.c} | 4 +- .../gpio/{gpio-max7300.c => max7300.c} | 2 + .../gpio/{gpio-max7301.c => max7301.c} | 2 + .../gpio/{gpio-max730x.c => max730x.c} | 2 + .../gpio/{gpio-max732x.c => max732x.c} | 2 +- .../gpio/{gpio-mc33880.c => mc33880.c} | 2 +- .../gpio/{gpio-mcp23s08.c => mcp23s08.c} | 291 +- .../gpio/{gpio-ml-ioh.c => ml_ioh_gpio.c} | 2 +- .../gpio/{gpio-pca953x.c => pca953x.c} | 105 +- .../gpio/{gpio-pcf857x.c => pcf857x.c} | 2 +- trunk/drivers/gpio/{gpio-pch.c => pch_gpio.c} | 0 trunk/drivers/gpio/{gpio-pl061.c => pl061.c} | 4 +- .../gpio/{gpio-rdc321x.c => rdc321x-gpio.c} | 0 trunk/drivers/gpio/{gpio-sch.c => sch_gpio.c} | 2 +- .../gpio/{gpio-stmpe.c => stmpe-gpio.c} | 0 .../drivers/gpio/{gpio-sx150x.c => sx150x.c} | 0 .../gpio/{gpio-tc3589x.c => tc3589x-gpio.c} | 0 .../gpio/{gpio-timberdale.c => timbgpio.c} | 2 +- .../gpio/{gpio-tps65910.c => tps65910-gpio.c} | 2 +- .../gpio/{gpio-twl4030.c => twl4030-gpio.c} | 2 +- .../gpio/{gpio-ucb1400.c => ucb1400_gpio.c} | 0 .../gpio/{gpio-vr41xx.c => vr41xx_giu.c} | 2 +- .../gpio/{gpio-vx855.c => vx855_gpio.c} | 0 .../gpio/{gpio-wm831x.c => wm831x-gpio.c} | 3 +- .../gpio/{gpio-wm8350.c => wm8350-gpiolib.c} | 2 +- .../gpio/{gpio-wm8994.c => wm8994-gpio.c} | 2 +- .../gpio/{gpio-xilinx.c => xilinx_gpio.c} | 0 trunk/drivers/gpu/drm/i915/i915_drv.h | 5 +- trunk/drivers/gpu/drm/i915/i915_gem.c | 71 +- trunk/drivers/gpu/drm/i915/i915_gem_tiling.c | 4 +- trunk/drivers/gpu/drm/i915/intel_display.c | 15 +- trunk/drivers/hid/Kconfig | 44 +- trunk/drivers/hid/Makefile | 3 - trunk/drivers/hid/hid-axff.c | 1 - trunk/drivers/hid/hid-core.c | 13 +- trunk/drivers/hid/hid-emsff.c | 7 +- trunk/drivers/hid/hid-holtekff.c | 240 - trunk/drivers/hid/hid-ids.h | 15 - trunk/drivers/hid/hid-lg.c | 74 +- trunk/drivers/hid/hid-microsoft.c | 28 +- trunk/drivers/hid/hid-multitouch.c | 4 - trunk/drivers/hid/hid-prodikeys.c | 17 +- trunk/drivers/hid/hid-roccat-arvo.c | 21 +- trunk/drivers/hid/hid-roccat-arvo.h | 13 + trunk/drivers/hid/hid-roccat-common.c | 20 +- trunk/drivers/hid/hid-roccat-common.h | 4 +- trunk/drivers/hid/hid-roccat-kone.c | 56 +- trunk/drivers/hid/hid-roccat-kone.h | 2 +- trunk/drivers/hid/hid-roccat-koneplus.c | 49 +- trunk/drivers/hid/hid-roccat-koneplus.h | 23 +- trunk/drivers/hid/hid-roccat-kovaplus.c | 25 +- trunk/drivers/hid/hid-roccat-kovaplus.h | 9 + trunk/drivers/hid/hid-roccat-pyra.c | 25 +- trunk/drivers/hid/hid-roccat-pyra.h | 9 + trunk/drivers/hid/hid-sony.c | 35 - trunk/drivers/hid/hid-speedlink.c | 89 - trunk/drivers/hid/hid-uclogic.c | 195 - trunk/drivers/hid/hid-wiimote.c | 489 -- trunk/drivers/hid/usbhid/hid-core.c | 2 - trunk/drivers/hwmon/asus_atk0110.c | 1 - trunk/drivers/hwmon/it87.c | 2 +- trunk/drivers/hwmon/max1111.c | 11 - trunk/drivers/ieee802154/Makefile | 2 + trunk/drivers/ieee802154/fakehard.c | 2 + trunk/drivers/infiniband/core/addr.c | 7 +- trunk/drivers/infiniband/core/cache.c | 3 +- trunk/drivers/infiniband/core/cma.c | 84 +- trunk/drivers/infiniband/core/device.c | 6 - trunk/drivers/infiniband/core/netlink.c | 2 +- trunk/drivers/infiniband/hw/amso1100/c2.c | 1 - .../infiniband/hw/amso1100/c2_provider.c | 9 + trunk/drivers/infiniband/hw/cxgb3/iwch_cm.c | 12 +- .../infiniband/hw/cxgb3/iwch_provider.c | 8 + trunk/drivers/infiniband/hw/cxgb4/cm.c | 42 +- trunk/drivers/infiniband/hw/cxgb4/provider.c | 8 + trunk/drivers/infiniband/hw/cxgb4/resource.c | 9 +- .../infiniband/hw/ipath/ipath_file_ops.c | 11 +- trunk/drivers/infiniband/hw/ipath/ipath_mad.c | 198 +- trunk/drivers/infiniband/hw/mlx4/mad.c | 68 +- trunk/drivers/infiniband/hw/mlx4/main.c | 21 +- trunk/drivers/infiniband/hw/mlx4/mlx4_ib.h | 1 - trunk/drivers/infiniband/hw/mlx4/qp.c | 10 +- trunk/drivers/infiniband/hw/mthca/mthca_cmd.c | 276 +- trunk/drivers/infiniband/hw/mthca/mthca_cmd.h | 93 +- trunk/drivers/infiniband/hw/mthca/mthca_cq.c | 15 +- trunk/drivers/infiniband/hw/mthca/mthca_eq.c | 43 +- trunk/drivers/infiniband/hw/mthca/mthca_mad.c | 15 +- .../drivers/infiniband/hw/mthca/mthca_main.c | 175 +- trunk/drivers/infiniband/hw/mthca/mthca_mcg.c | 101 +- .../infiniband/hw/mthca/mthca_memfree.c | 43 +- trunk/drivers/infiniband/hw/mthca/mthca_mr.c | 35 +- .../infiniband/hw/mthca/mthca_provider.c | 77 +- trunk/drivers/infiniband/hw/mthca/mthca_qp.c | 49 +- .../drivers/infiniband/hw/mthca/mthca_reset.c | 2 +- trunk/drivers/infiniband/hw/mthca/mthca_srq.c | 33 +- trunk/drivers/infiniband/hw/nes/nes_cm.c | 2 +- trunk/drivers/infiniband/hw/nes/nes_hw.c | 19 +- trunk/drivers/infiniband/hw/nes/nes_hw.h | 4 + trunk/drivers/infiniband/hw/nes/nes_nic.c | 50 +- trunk/drivers/infiniband/hw/nes/nes_verbs.c | 11 + trunk/drivers/infiniband/hw/qib/qib.h | 3 - .../drivers/infiniband/hw/qib/qib_file_ops.c | 16 +- trunk/drivers/infiniband/hw/qib/qib_iba7220.c | 26 +- trunk/drivers/infiniband/hw/qib/qib_iba7322.c | 72 +- trunk/drivers/infiniband/hw/qib/qib_mad.c | 78 +- trunk/drivers/infiniband/hw/qib/qib_mad.h | 143 +- trunk/drivers/infiniband/hw/qib/qib_pcie.c | 8 +- trunk/drivers/infiniband/hw/qib/qib_sysfs.c | 14 - .../drivers/infiniband/ulp/ipoib/ipoib_main.c | 41 +- .../infiniband/ulp/ipoib/ipoib_multicast.c | 20 +- .../drivers/infiniband/ulp/iser/iscsi_iser.h | 1 - trunk/drivers/infiniband/ulp/srp/ib_srp.c | 2 - trunk/drivers/isdn/hardware/mISDN/avmfritz.c | 1 - trunk/drivers/isdn/hardware/mISDN/hfcmulti.c | 1 - trunk/drivers/isdn/hardware/mISDN/hfcpci.c | 1 - .../isdn/hardware/mISDN/mISDNinfineon.c | 1 - trunk/drivers/isdn/hardware/mISDN/mISDNipac.c | 1 - trunk/drivers/isdn/hardware/mISDN/netjet.c | 1 - trunk/drivers/isdn/hardware/mISDN/speedfax.c | 1 - trunk/drivers/isdn/hardware/mISDN/w6692.c | 1 - trunk/drivers/isdn/hisax/hisax.h | 1 - trunk/drivers/isdn/hisax/hisax_fcpcipnp.c | 1 - trunk/drivers/isdn/i4l/isdn_net.c | 5 +- trunk/drivers/leds/Kconfig | 19 +- trunk/drivers/leds/leds-gpio.c | 6 +- trunk/drivers/lguest/core.c | 2 +- trunk/drivers/lguest/interrupts_and_traps.c | 10 +- trunk/drivers/lguest/lg.h | 2 - trunk/drivers/lguest/lguest_device.c | 37 +- trunk/drivers/lguest/lguest_user.c | 17 +- trunk/drivers/lguest/page_tables.c | 282 +- trunk/drivers/lguest/x86/core.c | 107 +- trunk/drivers/media/dvb/b2c2/flexcop-common.h | 1 - trunk/drivers/media/dvb/dm1105/dm1105.c | 1 - .../drivers/media/dvb/dvb-core/dvb_frontend.c | 8 - trunk/drivers/media/dvb/mantis/mantis_ca.c | 1 - .../drivers/media/dvb/mantis/mantis_common.h | 1 - trunk/drivers/media/dvb/mantis/mantis_evm.c | 1 - trunk/drivers/media/dvb/mantis/mantis_hif.c | 1 - trunk/drivers/media/dvb/mantis/mantis_ioc.c | 1 - .../drivers/media/dvb/mantis/mantis_pcmcia.c | 1 - trunk/drivers/media/dvb/mantis/mantis_uart.c | 1 - .../drivers/media/dvb/mantis/mantis_vp1034.c | 1 - trunk/drivers/media/dvb/pluto2/pluto2.c | 1 - trunk/drivers/media/radio/Kconfig | 4 +- trunk/drivers/media/radio/si4713-i2c.c | 4 +- trunk/drivers/media/rc/mceusb.c | 9 +- trunk/drivers/media/rc/nuvoton-cir.c | 2 +- .../media/video/cx23885/cx23885-core.c | 9 +- trunk/drivers/media/video/tuner-core.c | 16 +- trunk/drivers/mmc/card/block.c | 681 +- trunk/drivers/mmc/card/mmc_test.c | 498 +- trunk/drivers/mmc/card/queue.c | 217 +- trunk/drivers/mmc/card/queue.h | 33 +- trunk/drivers/mmc/core/core.c | 197 +- trunk/drivers/mmc/core/sd.c | 68 +- trunk/drivers/mmc/core/sdio_bus.c | 8 +- trunk/drivers/mmc/host/Kconfig | 84 +- trunk/drivers/mmc/host/Makefile | 25 +- trunk/drivers/mmc/host/at91_mci.c | 3 +- trunk/drivers/mmc/host/atmel-mci.c | 63 - trunk/drivers/mmc/host/dw_mmc.c | 446 +- trunk/drivers/mmc/host/dw_mmc.h | 17 +- trunk/drivers/mmc/host/mmci.c | 147 +- trunk/drivers/mmc/host/mmci.h | 8 - trunk/drivers/mmc/host/mxs-mmc.c | 30 +- trunk/drivers/mmc/host/omap_hsmmc.c | 671 +- trunk/drivers/mmc/host/sdhci-cns3xxx.c | 44 +- trunk/drivers/mmc/host/sdhci-dove.c | 43 +- trunk/drivers/mmc/host/sdhci-esdhc-imx.c | 125 +- trunk/drivers/mmc/host/sdhci-of-core.c | 253 + trunk/drivers/mmc/host/sdhci-of-esdhc.c | 86 +- trunk/drivers/mmc/host/sdhci-of-hlwd.c | 67 +- trunk/drivers/mmc/host/sdhci-of.h | 42 + trunk/drivers/mmc/host/sdhci-pci.c | 54 +- trunk/drivers/mmc/host/sdhci-pltfm.c | 216 +- trunk/drivers/mmc/host/sdhci-pltfm.h | 90 +- trunk/drivers/mmc/host/sdhci-pxa.c | 303 + trunk/drivers/mmc/host/sdhci-pxav2.c | 244 - trunk/drivers/mmc/host/sdhci-pxav3.c | 289 - trunk/drivers/mmc/host/sdhci-s3c.c | 6 +- trunk/drivers/mmc/host/sdhci-tegra.c | 117 +- trunk/drivers/mmc/host/sdhci.c | 34 +- trunk/drivers/mmc/host/sh_mmcif.c | 27 +- trunk/drivers/mmc/host/sh_mobile_sdhi.c | 36 - trunk/drivers/mmc/host/tmio_mmc.h | 53 +- trunk/drivers/mmc/host/tmio_mmc_dma.c | 8 +- trunk/drivers/mmc/host/tmio_mmc_pio.c | 205 +- trunk/drivers/mtd/nand/atmel_nand.c | 1 - trunk/drivers/mtd/ubi/build.c | 28 +- trunk/drivers/mtd/ubi/debug.c | 269 +- trunk/drivers/mtd/ubi/debug.h | 113 +- trunk/drivers/mtd/ubi/io.c | 20 +- trunk/drivers/mtd/ubi/scan.c | 2 +- trunk/drivers/mtd/ubi/ubi.h | 8 +- trunk/drivers/mtd/ubi/vmt.c | 2 +- trunk/drivers/mtd/ubi/vtbl.c | 18 +- trunk/drivers/mtd/ubi/wl.c | 42 +- trunk/drivers/net/3c503.c | 1 - trunk/drivers/net/7990.c | 9 +- trunk/drivers/net/8139cp.c | 84 +- trunk/drivers/net/8139too.c | 1 - trunk/drivers/net/8390.h | 1 - trunk/drivers/net/Kconfig | 43 +- trunk/drivers/net/Makefile | 3 +- trunk/drivers/net/a2065.c | 356 +- trunk/drivers/net/ac3200.c | 1 - trunk/drivers/net/acenic.c | 66 +- trunk/drivers/net/acenic.h | 8 +- trunk/drivers/net/amd8111e.c | 37 +- trunk/drivers/net/amd8111e.h | 3 + trunk/drivers/net/apne.c | 1 - trunk/drivers/net/appletalk/ltpc.c | 8 +- trunk/drivers/net/arcnet/arc-rimi.c | 1 - trunk/drivers/net/arcnet/com20020-isa.c | 1 - trunk/drivers/net/arcnet/com20020-pci.c | 1 - trunk/drivers/net/arcnet/com20020.c | 1 - trunk/drivers/net/arcnet/com90io.c | 1 - trunk/drivers/net/arcnet/com90xx.c | 1 - trunk/drivers/net/ariadne.c | 1267 ++-- trunk/drivers/net/arm/am79c961a.c | 14 +- trunk/drivers/net/arm/at91_ether.c | 1 - trunk/drivers/net/arm/ep93xx_eth.c | 1 - trunk/drivers/net/arm/ks8695net.c | 2 - trunk/drivers/net/atl1c/atl1c.h | 3 +- trunk/drivers/net/atl1c/atl1c_main.c | 74 +- trunk/drivers/net/atl1e/atl1e.h | 3 +- trunk/drivers/net/atl1e/atl1e_main.c | 84 +- trunk/drivers/net/atlx/atl1.c | 21 +- trunk/drivers/net/atlx/atl1.h | 1 + trunk/drivers/net/atlx/atl2.c | 81 +- trunk/drivers/net/atlx/atl2.h | 3 + trunk/drivers/net/atlx/atlx.c | 57 +- trunk/drivers/net/b44.c | 21 +- trunk/drivers/net/bcm63xx_enet.c | 1 - trunk/drivers/net/benet/be.h | 16 +- trunk/drivers/net/benet/be_cmds.c | 142 +- trunk/drivers/net/benet/be_cmds.h | 29 +- trunk/drivers/net/benet/be_ethtool.c | 55 +- trunk/drivers/net/benet/be_main.c | 430 +- trunk/drivers/net/bmac.c | 9 +- trunk/drivers/net/bna/bfa_cee.c | 2 +- trunk/drivers/net/bna/bnad.c | 67 +- trunk/drivers/net/bna/bnad.h | 3 +- trunk/drivers/net/bna/cna.h | 3 +- trunk/drivers/net/bnx2.c | 97 +- trunk/drivers/net/bnx2.h | 15 - trunk/drivers/net/bnx2x/Makefile | 2 +- trunk/drivers/net/bnx2x/bnx2x.h | 1105 ++- trunk/drivers/net/bnx2x/bnx2x_cmn.c | 1497 ++-- trunk/drivers/net/bnx2x/bnx2x_cmn.h | 675 +- trunk/drivers/net/bnx2x/bnx2x_dcb.c | 851 +-- trunk/drivers/net/bnx2x/bnx2x_dcb.h | 30 +- trunk/drivers/net/bnx2x/bnx2x_dump.h | 1721 ++--- trunk/drivers/net/bnx2x/bnx2x_ethtool.c | 698 +- trunk/drivers/net/bnx2x/bnx2x_fw_defs.h | 519 +- trunk/drivers/net/bnx2x/bnx2x_hsi.h | 5529 +++++--------- trunk/drivers/net/bnx2x/bnx2x_init.h | 409 +- trunk/drivers/net/bnx2x/bnx2x_init_ops.h | 194 +- trunk/drivers/net/bnx2x/bnx2x_link.c | 6687 ++++------------- trunk/drivers/net/bnx2x/bnx2x_link.h | 183 +- trunk/drivers/net/bnx2x/bnx2x_main.c | 6239 +++++++-------- trunk/drivers/net/bnx2x/bnx2x_reg.h | 957 +-- trunk/drivers/net/bnx2x/bnx2x_sp.c | 5692 -------------- trunk/drivers/net/bnx2x/bnx2x_sp.h | 1297 ---- trunk/drivers/net/bnx2x/bnx2x_stats.c | 908 +-- trunk/drivers/net/bnx2x/bnx2x_stats.h | 228 +- trunk/drivers/net/bonding/bond_3ad.c | 53 +- trunk/drivers/net/bonding/bond_3ad.h | 8 +- trunk/drivers/net/bonding/bond_alb.c | 4 +- trunk/drivers/net/bonding/bond_ipv6.c | 8 +- trunk/drivers/net/bonding/bond_main.c | 133 +- trunk/drivers/net/bonding/bond_procfs.c | 1 - trunk/drivers/net/bonding/bond_sysfs.c | 34 - trunk/drivers/net/bonding/bonding.h | 8 +- trunk/drivers/net/caif/Kconfig | 9 - trunk/drivers/net/caif/Makefile | 3 - trunk/drivers/net/caif/caif_hsi.c | 1219 --- trunk/drivers/net/caif/caif_serial.c | 2 +- trunk/drivers/net/caif/caif_shm_u5500.c | 1 + trunk/drivers/net/caif/caif_shmcore.c | 2 +- trunk/drivers/net/caif/caif_spi.c | 1 + trunk/drivers/net/caif/caif_spi_slave.c | 1 + trunk/drivers/net/can/Kconfig | 8 +- trunk/drivers/net/can/at91_can.c | 366 +- trunk/drivers/net/can/bfin_can.c | 137 +- trunk/drivers/net/can/c_can/c_can.c | 1 + trunk/drivers/net/can/c_can/c_can_platform.c | 1 + trunk/drivers/net/can/dev.c | 2 +- trunk/drivers/net/can/janz-ican3.c | 1 - trunk/drivers/net/can/sja1000/sja1000.h | 1 - .../net/can/sja1000/sja1000_of_platform.c | 1 - trunk/drivers/net/can/slcan.c | 63 +- trunk/drivers/net/can/softing/softing_fw.c | 1 - trunk/drivers/net/can/softing/softing_main.c | 2 +- trunk/drivers/net/cassini.c | 1 - trunk/drivers/net/chelsio/common.h | 2 + trunk/drivers/net/chelsio/cxgb2.c | 39 +- trunk/drivers/net/chelsio/sge.c | 18 +- trunk/drivers/net/chelsio/sge.h | 2 +- trunk/drivers/net/cnic.c | 412 +- trunk/drivers/net/cnic.h | 52 +- trunk/drivers/net/cnic_defs.h | 6464 +++++++--------- trunk/drivers/net/cnic_if.h | 15 +- trunk/drivers/net/cpmac.c | 1 - trunk/drivers/net/cxgb3/adapter.h | 2 + trunk/drivers/net/cxgb3/common.h | 1 + trunk/drivers/net/cxgb3/cxgb3_main.c | 51 +- trunk/drivers/net/cxgb3/cxgb3_offload.c | 19 +- trunk/drivers/net/cxgb3/sge.c | 35 +- trunk/drivers/net/cxgb3/t3_hw.c | 11 +- trunk/drivers/net/cxgb4/cxgb4.h | 1 + trunk/drivers/net/cxgb4/cxgb4_main.c | 2 +- trunk/drivers/net/cxgb4vf/adapter.h | 2 +- trunk/drivers/net/cxgb4vf/cxgb4vf_main.c | 68 +- trunk/drivers/net/cxgb4vf/sge.c | 34 +- trunk/drivers/net/cxgb4vf/t4vf_hw.c | 1 + trunk/drivers/net/davinci_cpdma.c | 2 +- trunk/drivers/net/davinci_emac.c | 7 +- trunk/drivers/net/declance.c | 47 +- trunk/drivers/net/depca.c | 31 +- trunk/drivers/net/dl2k.c | 4 +- trunk/drivers/net/dm9000.c | 27 +- trunk/drivers/net/dnet.c | 3 - trunk/drivers/net/e100.c | 2 - trunk/drivers/net/e1000/e1000.h | 2 +- trunk/drivers/net/e1000/e1000_ethtool.c | 69 + trunk/drivers/net/e1000/e1000_hw.c | 7 +- trunk/drivers/net/e1000/e1000_main.c | 203 +- trunk/drivers/net/e1000e/82571.c | 5 +- trunk/drivers/net/e1000e/e1000.h | 51 +- trunk/drivers/net/e1000e/es2lan.c | 8 - trunk/drivers/net/e1000e/ethtool.c | 1 - trunk/drivers/net/e1000e/hw.h | 21 +- trunk/drivers/net/e1000e/ich8lan.c | 191 +- trunk/drivers/net/e1000e/lib.c | 4 +- trunk/drivers/net/e1000e/netdev.c | 171 +- trunk/drivers/net/e1000e/phy.c | 352 +- trunk/drivers/net/e2100.c | 1 - trunk/drivers/net/ehea/ehea.h | 1 + trunk/drivers/net/ehea/ehea_main.c | 54 +- trunk/drivers/net/ehea/ehea_qmr.c | 2 +- trunk/drivers/net/enic/enic.h | 4 +- trunk/drivers/net/enic/enic_dev.c | 11 - trunk/drivers/net/enic/enic_dev.h | 1 - trunk/drivers/net/enic/enic_main.c | 153 +- trunk/drivers/net/enic/enic_res.c | 30 +- trunk/drivers/net/enic/vnic_cq.c | 2 - trunk/drivers/net/enic/vnic_cq.h | 1 - trunk/drivers/net/enic/vnic_dev.c | 60 - trunk/drivers/net/enic/vnic_dev.h | 5 - trunk/drivers/net/enic/vnic_devcmd.h | 19 - trunk/drivers/net/enic/vnic_enet.h | 11 +- trunk/drivers/net/enic/vnic_intr.c | 7 +- trunk/drivers/net/enic/vnic_intr.h | 6 +- trunk/drivers/net/epic100.c | 4 +- trunk/drivers/net/es3210.c | 1 - trunk/drivers/net/ethoc.c | 3 - trunk/drivers/net/ewrk3.c | 39 +- trunk/drivers/net/fealnx.c | 4 +- trunk/drivers/net/fec.c | 9 +- trunk/drivers/net/fec_mpc52xx.c | 6 +- trunk/drivers/net/forcedeth.c | 68 +- trunk/drivers/net/fs_enet/fs_enet-main.c | 2 - trunk/drivers/net/ftgmac100.c | 1365 ---- trunk/drivers/net/ftgmac100.h | 246 - trunk/drivers/net/gianfar.c | 204 +- trunk/drivers/net/gianfar.h | 60 +- trunk/drivers/net/gianfar_ethtool.c | 958 +-- trunk/drivers/net/greth.c | 2 - trunk/drivers/net/hamachi.c | 4 +- trunk/drivers/net/hamradio/baycom_ser_fdx.c | 1 - trunk/drivers/net/hamradio/baycom_ser_hdx.c | 1 - trunk/drivers/net/hp-plus.c | 1 - trunk/drivers/net/hp.c | 1 - trunk/drivers/net/hp100.c | 18 +- trunk/drivers/net/ibmveth.c | 1 - trunk/drivers/net/ifb.c | 57 +- trunk/drivers/net/igb/Makefile | 2 +- trunk/drivers/net/igb/e1000_82575.c | 22 +- trunk/drivers/net/igb/e1000_82575.h | 4 +- trunk/drivers/net/igb/e1000_defines.h | 17 +- trunk/drivers/net/igb/e1000_hw.h | 2 +- trunk/drivers/net/igb/e1000_mac.c | 5 +- trunk/drivers/net/igb/e1000_mac.h | 2 +- trunk/drivers/net/igb/e1000_mbx.c | 2 +- trunk/drivers/net/igb/e1000_mbx.h | 2 +- trunk/drivers/net/igb/e1000_nvm.c | 2 +- trunk/drivers/net/igb/e1000_nvm.h | 2 +- trunk/drivers/net/igb/e1000_phy.c | 2 +- trunk/drivers/net/igb/e1000_phy.h | 2 +- trunk/drivers/net/igb/e1000_regs.h | 2 +- trunk/drivers/net/igb/igb.h | 6 +- trunk/drivers/net/igb/igb_ethtool.c | 102 +- trunk/drivers/net/igb/igb_main.c | 128 +- trunk/drivers/net/igbvf/igbvf.h | 4 +- trunk/drivers/net/igbvf/netdev.c | 46 +- trunk/drivers/net/ioc3-eth.c | 9 +- trunk/drivers/net/ipg.c | 1 - trunk/drivers/net/irda/ali-ircc.c | 1 - trunk/drivers/net/irda/donauboe.c | 1 - trunk/drivers/net/irda/nsc-ircc.c | 1 - trunk/drivers/net/irda/pxaficp_ir.c | 2 - trunk/drivers/net/irda/sir_dev.c | 1 - trunk/drivers/net/irda/smsc-ircc2.c | 3 +- trunk/drivers/net/irda/via-ircc.c | 1 - trunk/drivers/net/irda/via-ircc.h | 2 +- trunk/drivers/net/irda/vlsi_ir.c | 1 - trunk/drivers/net/irda/w83977af_ir.c | 1 - trunk/drivers/net/iseries_veth.c | 14 +- trunk/drivers/net/ixgbe/ixgbe.h | 102 +- trunk/drivers/net/ixgbe/ixgbe_82598.c | 43 - trunk/drivers/net/ixgbe/ixgbe_82599.c | 645 +- trunk/drivers/net/ixgbe/ixgbe_common.c | 244 +- trunk/drivers/net/ixgbe/ixgbe_common.h | 5 - trunk/drivers/net/ixgbe/ixgbe_dcb.c | 10 +- trunk/drivers/net/ixgbe/ixgbe_dcb.h | 7 + trunk/drivers/net/ixgbe/ixgbe_dcb_82598.c | 43 +- trunk/drivers/net/ixgbe/ixgbe_dcb_82598.h | 3 +- trunk/drivers/net/ixgbe/ixgbe_dcb_82599.c | 119 +- trunk/drivers/net/ixgbe/ixgbe_dcb_82599.h | 14 +- trunk/drivers/net/ixgbe/ixgbe_dcb_nl.c | 129 +- trunk/drivers/net/ixgbe/ixgbe_ethtool.c | 589 +- trunk/drivers/net/ixgbe/ixgbe_fcoe.c | 279 +- trunk/drivers/net/ixgbe/ixgbe_fcoe.h | 12 +- trunk/drivers/net/ixgbe/ixgbe_main.c | 1354 ++-- trunk/drivers/net/ixgbe/ixgbe_sriov.c | 16 - trunk/drivers/net/ixgbe/ixgbe_type.h | 99 +- trunk/drivers/net/ixgbe/ixgbe_x540.c | 2 - trunk/drivers/net/ixgbevf/ixgbevf.h | 8 +- trunk/drivers/net/ixgbevf/ixgbevf_main.c | 88 +- trunk/drivers/net/ixp2000/ixpdev.c | 1 - trunk/drivers/net/jme.c | 73 +- trunk/drivers/net/jme.h | 7 +- trunk/drivers/net/korina.c | 7 +- trunk/drivers/net/ks8842.c | 1 - trunk/drivers/net/ks8851.c | 1 - trunk/drivers/net/ks8851_mll.c | 4 +- trunk/drivers/net/ksz884x.c | 3 +- trunk/drivers/net/lib8390.c | 290 +- trunk/drivers/net/ll_temac_main.c | 7 +- trunk/drivers/net/lne390.c | 1 - trunk/drivers/net/macb.c | 3 - trunk/drivers/net/mace.c | 1 - trunk/drivers/net/macmace.c | 2 +- trunk/drivers/net/macvlan.c | 27 +- trunk/drivers/net/macvtap.c | 134 +- trunk/drivers/net/mipsnet.c | 1 - trunk/drivers/net/mlx4/en_ethtool.c | 9 +- trunk/drivers/net/mlx4/en_main.c | 3 +- trunk/drivers/net/mlx4/en_netdev.c | 54 +- trunk/drivers/net/mlx4/en_port.c | 29 +- trunk/drivers/net/mlx4/en_rx.c | 26 +- trunk/drivers/net/mlx4/en_selftest.c | 3 +- trunk/drivers/net/mlx4/en_tx.c | 5 +- trunk/drivers/net/mlx4/fw.c | 39 +- trunk/drivers/net/mlx4/fw.h | 8 +- trunk/drivers/net/mlx4/main.c | 62 +- trunk/drivers/net/mlx4/mcg.c | 17 +- trunk/drivers/net/mlx4/mlx4.h | 5 +- trunk/drivers/net/mlx4/mlx4_en.h | 6 +- trunk/drivers/net/mlx4/port.c | 8 +- trunk/drivers/net/mlx4/reset.c | 2 +- trunk/drivers/net/mv643xx_eth.c | 8 +- trunk/drivers/net/myri10ge/myri10ge.c | 268 +- .../net/myri10ge/myri10ge_mcp_gen_header.h | 2 - trunk/drivers/net/myri_sbus.c | 1187 +++ trunk/drivers/net/myri_sbus.h | 311 + trunk/drivers/net/netx-eth.c | 1 - trunk/drivers/net/netxen/netxen_nic.h | 5 +- trunk/drivers/net/netxen/netxen_nic_ctx.c | 16 +- trunk/drivers/net/netxen/netxen_nic_hw.c | 6 - trunk/drivers/net/netxen/netxen_nic_init.c | 74 +- trunk/drivers/net/netxen/netxen_nic_main.c | 13 +- trunk/drivers/net/niu.c | 39 +- trunk/drivers/net/ns83820.c | 34 +- trunk/drivers/net/octeon/octeon_mgmt.c | 1 - trunk/drivers/net/pcnet32.c | 9 +- trunk/drivers/net/phy/icplus.c | 6 +- trunk/drivers/net/plip.c | 6 +- trunk/drivers/net/ppp_async.c | 1 - trunk/drivers/net/ppp_synctty.c | 1 - trunk/drivers/net/pppoe.c | 3 +- trunk/drivers/net/pptp.c | 1 + trunk/drivers/net/ps3_gelic_net.c | 44 +- trunk/drivers/net/ps3_gelic_net.h | 1 + trunk/drivers/net/pxa168_eth.c | 5 +- trunk/drivers/net/qla3xxx.c | 5 +- trunk/drivers/net/qlcnic/qlcnic.h | 46 +- trunk/drivers/net/qlcnic/qlcnic_ctx.c | 37 +- trunk/drivers/net/qlcnic/qlcnic_ethtool.c | 163 +- trunk/drivers/net/qlcnic/qlcnic_hw.c | 74 +- trunk/drivers/net/qlcnic/qlcnic_init.c | 133 +- trunk/drivers/net/qlcnic/qlcnic_main.c | 78 +- trunk/drivers/net/qlge/qlge.h | 4 +- trunk/drivers/net/qlge/qlge_ethtool.c | 2 + trunk/drivers/net/qlge/qlge_main.c | 165 +- trunk/drivers/net/r6040.c | 11 +- trunk/drivers/net/r8169.c | 628 +- trunk/drivers/net/rionet.c | 2 +- trunk/drivers/net/s2io.c | 90 +- trunk/drivers/net/s2io.h | 1 + trunk/drivers/net/sc92031.c | 1 - trunk/drivers/net/sfc/Kconfig | 7 +- trunk/drivers/net/sfc/efx.c | 60 +- trunk/drivers/net/sfc/enum.h | 3 +- trunk/drivers/net/sfc/ethtool.c | 27 +- trunk/drivers/net/sfc/falcon.c | 51 +- trunk/drivers/net/sfc/filter.c | 47 +- trunk/drivers/net/sfc/net_driver.h | 12 +- trunk/drivers/net/sfc/nic.c | 1 - trunk/drivers/net/sfc/siena.c | 49 +- trunk/drivers/net/sgiseeq.c | 1 - trunk/drivers/net/sh_eth.c | 12 +- trunk/drivers/net/sis190.c | 1 - trunk/drivers/net/sis900.c | 4 +- trunk/drivers/net/skge.c | 103 +- trunk/drivers/net/skge.h | 1 - trunk/drivers/net/sky2.c | 165 +- trunk/drivers/net/sky2.h | 16 +- trunk/drivers/net/slhc.c | 2 +- trunk/drivers/net/slip.c | 35 +- trunk/drivers/net/slip.h | 1 + trunk/drivers/net/smc-mca.c | 1 - trunk/drivers/net/smc-ultra.c | 1 - trunk/drivers/net/smc911x.c | 5 + trunk/drivers/net/smc9194.c | 5 + trunk/drivers/net/smc91x.c | 5 + trunk/drivers/net/smsc911x.c | 2 - trunk/drivers/net/smsc9420.c | 3 - trunk/drivers/net/spider_net.c | 5 +- trunk/drivers/net/starfire.c | 90 +- trunk/drivers/net/stmmac/dwmac1000_core.c | 1 - trunk/drivers/net/stmmac/dwmac1000_dma.c | 1 - trunk/drivers/net/stmmac/dwmac100_core.c | 1 - trunk/drivers/net/stmmac/dwmac100_dma.c | 1 - trunk/drivers/net/stmmac/stmmac.h | 11 +- trunk/drivers/net/stmmac/stmmac_ethtool.c | 2 - trunk/drivers/net/stmmac/stmmac_main.c | 192 +- trunk/drivers/net/stmmac/stmmac_mdio.c | 84 +- trunk/drivers/net/sunbmac.c | 8 +- trunk/drivers/net/sungem.c | 898 ++- trunk/drivers/net/sungem.h | 25 + trunk/drivers/net/sunhme.c | 16 +- trunk/drivers/net/sunlance.c | 8 +- trunk/drivers/net/sunqe.c | 7 +- trunk/drivers/net/tehuti.c | 37 +- trunk/drivers/net/tehuti.h | 1 + trunk/drivers/net/tg3.c | 788 +- trunk/drivers/net/tg3.h | 30 +- trunk/drivers/net/tlan.c | 2 - trunk/drivers/net/tokenring/3c359.c | 6 +- trunk/drivers/net/tokenring/ibmtr.c | 3 +- trunk/drivers/net/tokenring/madgemc.c | 2 +- trunk/drivers/net/tsi108_eth.c | 1 - trunk/drivers/net/tulip/de2104x.c | 1 - trunk/drivers/net/tulip/de4x5.c | 12 +- trunk/drivers/net/tulip/dmfe.c | 4 + trunk/drivers/net/tulip/pnic.c | 1 - trunk/drivers/net/tulip/tulip_core.c | 1 - trunk/drivers/net/tun.c | 32 +- trunk/drivers/net/typhoon.c | 2 +- trunk/drivers/net/ucc_geth.c | 7 +- trunk/drivers/net/usb/asix.c | 4 - trunk/drivers/net/usb/cdc-phonet.c | 1 - trunk/drivers/net/usb/cdc_ncm.c | 1 + trunk/drivers/net/usb/ipheth.c | 15 +- trunk/drivers/net/usb/kalmia.c | 12 +- trunk/drivers/net/veth.c | 73 +- trunk/drivers/net/via-velocity.c | 51 +- trunk/drivers/net/via-velocity.h | 2 +- trunk/drivers/net/virtio_net.c | 79 +- trunk/drivers/net/vmxnet3/vmxnet3_drv.c | 120 +- trunk/drivers/net/vmxnet3/vmxnet3_ethtool.c | 53 +- trunk/drivers/net/vmxnet3/vmxnet3_int.h | 8 +- trunk/drivers/net/vxge/vxge-config.c | 57 +- trunk/drivers/net/vxge/vxge-config.h | 2 - trunk/drivers/net/vxge/vxge-main.c | 159 +- trunk/drivers/net/vxge/vxge-main.h | 53 +- trunk/drivers/net/vxge/vxge-traffic.c | 6 +- trunk/drivers/net/wan/c101.c | 30 +- trunk/drivers/net/wan/cosa.c | 226 +- trunk/drivers/net/wan/cycx_drv.c | 81 +- trunk/drivers/net/wan/cycx_main.c | 32 +- trunk/drivers/net/wan/cycx_x25.c | 177 +- trunk/drivers/net/wan/dlci.c | 22 +- trunk/drivers/net/wan/dscc4.c | 81 +- trunk/drivers/net/wan/farsync.c | 8 +- trunk/drivers/net/wan/hd64570.c | 8 +- trunk/drivers/net/wan/hd64572.c | 8 +- trunk/drivers/net/wan/hdlc.c | 16 +- trunk/drivers/net/wan/hdlc_cisco.c | 21 +- trunk/drivers/net/wan/hdlc_fr.c | 96 +- trunk/drivers/net/wan/hdlc_ppp.c | 9 +- trunk/drivers/net/wan/hdlc_x25.c | 12 +- trunk/drivers/net/wan/hostess_sv11.c | 11 +- trunk/drivers/net/wan/ixp4xx_hss.c | 28 +- trunk/drivers/net/wan/lapbether.c | 18 +- trunk/drivers/net/wan/n2.c | 42 +- trunk/drivers/net/wan/pc300_drv.c | 4 +- trunk/drivers/net/wan/pc300_tty.c | 2 +- trunk/drivers/net/wan/pc300too.c | 36 +- trunk/drivers/net/wan/pci200syn.c | 29 +- trunk/drivers/net/wan/sbni.c | 67 +- trunk/drivers/net/wan/sdla.c | 52 +- trunk/drivers/net/wan/sealevel.c | 11 +- trunk/drivers/net/wan/wanxl.c | 93 +- trunk/drivers/net/wan/x25_asy.c | 47 +- trunk/drivers/net/wan/z85230.c | 34 +- trunk/drivers/net/wireless/adm8211.c | 1 - trunk/drivers/net/wireless/ath/ath.h | 1 - trunk/drivers/net/wireless/ath/ath5k/ahb.c | 5 +- trunk/drivers/net/wireless/ath/ath5k/ani.c | 9 +- trunk/drivers/net/wireless/ath/ath5k/ath5k.h | 174 +- trunk/drivers/net/wireless/ath/ath5k/attach.c | 24 +- trunk/drivers/net/wireless/ath/ath5k/base.c | 87 +- trunk/drivers/net/wireless/ath/ath5k/base.h | 11 +- trunk/drivers/net/wireless/ath/ath5k/caps.c | 4 +- trunk/drivers/net/wireless/ath/ath5k/debug.c | 207 +- trunk/drivers/net/wireless/ath/ath5k/desc.h | 4 +- trunk/drivers/net/wireless/ath/ath5k/dma.c | 8 +- trunk/drivers/net/wireless/ath/ath5k/eeprom.c | 46 +- trunk/drivers/net/wireless/ath/ath5k/eeprom.h | 12 +- .../drivers/net/wireless/ath/ath5k/initvals.c | 14 +- trunk/drivers/net/wireless/ath/ath5k/led.c | 8 +- .../net/wireless/ath/ath5k/mac80211-ops.c | 10 +- trunk/drivers/net/wireless/ath/ath5k/pci.c | 14 +- trunk/drivers/net/wireless/ath/ath5k/pcu.c | 16 +- trunk/drivers/net/wireless/ath/ath5k/phy.c | 100 +- trunk/drivers/net/wireless/ath/ath5k/reg.h | 89 +- trunk/drivers/net/wireless/ath/ath5k/reset.c | 49 +- .../drivers/net/wireless/ath/ath5k/rfbuffer.h | 4 +- trunk/drivers/net/wireless/ath/ath5k/rfgain.h | 8 +- trunk/drivers/net/wireless/ath/ath5k/sysfs.c | 10 +- trunk/drivers/net/wireless/ath/ath5k/trace.h | 15 +- trunk/drivers/net/wireless/ath/ath9k/ahb.c | 4 - .../net/wireless/ath/ath9k/ar5008_phy.c | 5 - .../net/wireless/ath/ath9k/ar9002_hw.c | 39 + .../net/wireless/ath/ath9k/ar9002_mac.c | 6 + .../net/wireless/ath/ath9k/ar9002_phy.c | 34 +- .../wireless/ath/ath9k/ar9003_2p2_initvals.h | 10 +- .../net/wireless/ath/ath9k/ar9003_eeprom.c | 39 +- .../net/wireless/ath/ath9k/ar9003_hw.c | 182 +- .../net/wireless/ath/ath9k/ar9003_mac.c | 19 +- .../net/wireless/ath/ath9k/ar9003_paprd.c | 131 +- .../net/wireless/ath/ath9k/ar9003_phy.c | 41 +- .../net/wireless/ath/ath9k/ar9003_phy.h | 9 +- .../wireless/ath/ath9k/ar9330_1p1_initvals.h | 1147 --- .../wireless/ath/ath9k/ar9330_1p2_initvals.h | 1080 --- trunk/drivers/net/wireless/ath/ath9k/ath9k.h | 18 +- trunk/drivers/net/wireless/ath/ath9k/beacon.c | 30 +- trunk/drivers/net/wireless/ath/ath9k/debug.c | 59 +- trunk/drivers/net/wireless/ath/ath9k/debug.h | 1 - .../drivers/net/wireless/ath/ath9k/hif_usb.c | 2 - .../net/wireless/ath/ath9k/htc_drv_beacon.c | 8 +- .../net/wireless/ath/ath9k/htc_drv_init.c | 1 - .../net/wireless/ath/ath9k/htc_drv_main.c | 9 +- trunk/drivers/net/wireless/ath/ath9k/hw-ops.h | 5 + trunk/drivers/net/wireless/ath/ath9k/hw.c | 196 +- trunk/drivers/net/wireless/ath/ath9k/hw.h | 14 +- trunk/drivers/net/wireless/ath/ath9k/init.c | 14 +- trunk/drivers/net/wireless/ath/ath9k/mac.c | 3 +- trunk/drivers/net/wireless/ath/ath9k/main.c | 179 +- trunk/drivers/net/wireless/ath/ath9k/rc.c | 56 +- trunk/drivers/net/wireless/ath/ath9k/recv.c | 147 +- trunk/drivers/net/wireless/ath/ath9k/reg.h | 21 +- trunk/drivers/net/wireless/ath/ath9k/xmit.c | 346 +- .../net/wireless/ath/carl9170/carl9170.h | 3 +- trunk/drivers/net/wireless/ath/carl9170/fw.c | 2 +- .../drivers/net/wireless/ath/carl9170/fwcmd.h | 19 +- .../net/wireless/ath/carl9170/fwdesc.h | 18 +- trunk/drivers/net/wireless/ath/carl9170/hw.h | 15 +- .../drivers/net/wireless/ath/carl9170/main.c | 19 +- trunk/drivers/net/wireless/ath/carl9170/phy.c | 6 + trunk/drivers/net/wireless/ath/carl9170/rx.c | 2 +- .../net/wireless/ath/carl9170/version.h | 6 +- .../drivers/net/wireless/ath/carl9170/wlan.h | 25 +- trunk/drivers/net/wireless/atmel.c | 1 - trunk/drivers/net/wireless/b43/Kconfig | 32 - trunk/drivers/net/wireless/b43/Makefile | 5 - trunk/drivers/net/wireless/b43/b43.h | 56 +- trunk/drivers/net/wireless/b43/bus.c | 256 - trunk/drivers/net/wireless/b43/bus.h | 70 - trunk/drivers/net/wireless/b43/dma.c | 48 +- trunk/drivers/net/wireless/b43/leds.c | 15 +- trunk/drivers/net/wireless/b43/lo.c | 6 +- trunk/drivers/net/wireless/b43/main.c | 612 +- trunk/drivers/net/wireless/b43/main.h | 2 +- trunk/drivers/net/wireless/b43/phy_a.c | 21 +- trunk/drivers/net/wireless/b43/phy_common.c | 20 +- trunk/drivers/net/wireless/b43/phy_common.h | 6 - trunk/drivers/net/wireless/b43/phy_g.c | 92 +- trunk/drivers/net/wireless/b43/phy_ht.c | 406 - trunk/drivers/net/wireless/b43/phy_ht.h | 46 - trunk/drivers/net/wireless/b43/phy_lcn.c | 52 - trunk/drivers/net/wireless/b43/phy_lcn.h | 14 - trunk/drivers/net/wireless/b43/phy_lp.c | 135 +- trunk/drivers/net/wireless/b43/phy_n.c | 120 +- trunk/drivers/net/wireless/b43/pio.c | 10 +- trunk/drivers/net/wireless/b43/radio_2055.h | 5 - trunk/drivers/net/wireless/b43/radio_2056.h | 5 - trunk/drivers/net/wireless/b43/radio_2059.c | 165 - trunk/drivers/net/wireless/b43/radio_2059.h | 54 - trunk/drivers/net/wireless/b43/rfkill.c | 9 +- trunk/drivers/net/wireless/b43/sdio.c | 10 +- trunk/drivers/net/wireless/b43/sysfs.c | 4 +- trunk/drivers/net/wireless/b43/tables_lpphy.c | 15 +- trunk/drivers/net/wireless/b43/tables_nphy.h | 8 + .../drivers/net/wireless/b43/tables_phy_ht.c | 750 -- .../drivers/net/wireless/b43/tables_phy_ht.h | 22 - .../drivers/net/wireless/b43/tables_phy_lcn.c | 34 - .../drivers/net/wireless/b43/tables_phy_lcn.h | 6 - trunk/drivers/net/wireless/b43/wa.c | 24 +- trunk/drivers/net/wireless/b43/xmit.c | 5 +- trunk/drivers/net/wireless/b43legacy/dma.c | 10 +- trunk/drivers/net/wireless/b43legacy/main.c | 10 +- trunk/drivers/net/wireless/b43legacy/xmit.c | 2 + .../drivers/net/wireless/hostap/hostap_wlan.h | 1 - trunk/drivers/net/wireless/ipw2x00/ipw2100.c | 2 +- trunk/drivers/net/wireless/ipw2x00/ipw2200.h | 1 - .../drivers/net/wireless/ipw2x00/libipw_rx.c | 4 +- .../drivers/net/wireless/ipw2x00/libipw_wx.c | 1 - .../drivers/net/wireless/iwlegacy/iwl-3945.c | 4 + .../net/wireless/iwlegacy/iwl-4965-lib.c | 79 +- .../net/wireless/iwlegacy/iwl-4965-rs.c | 3 - .../net/wireless/iwlegacy/iwl-4965-rx.c | 78 +- .../net/wireless/iwlegacy/iwl-4965-tx.c | 3 +- .../drivers/net/wireless/iwlegacy/iwl-4965.c | 10 +- .../net/wireless/iwlegacy/iwl-commands.h | 7 + .../drivers/net/wireless/iwlegacy/iwl-core.c | 91 +- .../drivers/net/wireless/iwlegacy/iwl-core.h | 17 +- .../net/wireless/iwlegacy/iwl-debugfs.c | 192 +- trunk/drivers/net/wireless/iwlegacy/iwl-dev.h | 61 +- .../net/wireless/iwlegacy/iwl-devtrace.c | 3 + .../net/wireless/iwlegacy/iwl-devtrace.h | 60 + .../net/wireless/iwlegacy/iwl-eeprom.c | 1 + .../net/wireless/iwlegacy/iwl-helpers.h | 9 - trunk/drivers/net/wireless/iwlegacy/iwl-rx.c | 21 + .../drivers/net/wireless/iwlegacy/iwl-scan.c | 92 +- .../net/wireless/iwlegacy/iwl3945-base.c | 301 +- .../net/wireless/iwlegacy/iwl4965-base.c | 465 +- trunk/drivers/net/wireless/iwlwifi/Makefile | 2 - trunk/drivers/net/wireless/iwlwifi/iwl-1000.c | 21 +- trunk/drivers/net/wireless/iwlwifi/iwl-2000.c | 83 +- .../net/wireless/iwlwifi/iwl-5000-hw.h | 2 +- trunk/drivers/net/wireless/iwlwifi/iwl-5000.c | 58 +- trunk/drivers/net/wireless/iwlwifi/iwl-6000.c | 59 +- .../net/wireless/iwlwifi/iwl-agn-calib.c | 15 +- .../net/wireless/iwlwifi/iwl-agn-calib.h | 7 + .../net/wireless/iwlwifi/iwl-agn-eeprom.c | 20 +- .../net/wireless/iwlwifi/iwl-agn-hcmd.c | 142 +- .../drivers/net/wireless/iwlwifi/iwl-agn-hw.h | 7 + .../net/wireless/iwlwifi/iwl-agn-ict.c | 4 +- .../net/wireless/iwlwifi/iwl-agn-lib.c | 312 +- .../drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 30 +- .../net/wireless/iwlwifi/iwl-agn-rxon.c | 136 +- .../net/wireless/iwlwifi/iwl-agn-sta.c | 20 +- .../drivers/net/wireless/iwlwifi/iwl-agn-tt.c | 38 +- .../drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 233 +- .../net/wireless/iwlwifi/iwl-agn-ucode.c | 67 +- trunk/drivers/net/wireless/iwlwifi/iwl-agn.c | 884 ++- trunk/drivers/net/wireless/iwlwifi/iwl-agn.h | 52 +- .../net/wireless/iwlwifi/iwl-commands.h | 38 +- trunk/drivers/net/wireless/iwlwifi/iwl-core.c | 150 +- trunk/drivers/net/wireless/iwlwifi/iwl-core.h | 136 +- .../drivers/net/wireless/iwlwifi/iwl-debug.h | 18 +- .../net/wireless/iwlwifi/iwl-debugfs.c | 7 +- trunk/drivers/net/wireless/iwlwifi/iwl-dev.h | 130 +- .../drivers/net/wireless/iwlwifi/iwl-eeprom.c | 32 +- .../drivers/net/wireless/iwlwifi/iwl-eeprom.h | 26 +- trunk/drivers/net/wireless/iwlwifi/iwl-fh.h | 2 +- trunk/drivers/net/wireless/iwlwifi/iwl-hcmd.c | 34 +- .../net/wireless/iwlwifi/iwl-helpers.h | 9 - trunk/drivers/net/wireless/iwlwifi/iwl-io.h | 6 +- trunk/drivers/net/wireless/iwlwifi/iwl-led.c | 17 +- trunk/drivers/net/wireless/iwlwifi/iwl-pci.c | 560 -- trunk/drivers/net/wireless/iwlwifi/iwl-pci.h | 69 - .../drivers/net/wireless/iwlwifi/iwl-power.c | 42 +- .../drivers/net/wireless/iwlwifi/iwl-power.h | 2 +- trunk/drivers/net/wireless/iwlwifi/iwl-prph.h | 19 +- trunk/drivers/net/wireless/iwlwifi/iwl-rx.c | 94 +- trunk/drivers/net/wireless/iwlwifi/iwl-scan.c | 20 +- trunk/drivers/net/wireless/iwlwifi/iwl-sta.c | 20 +- .../net/wireless/iwlwifi/iwl-sv-open.c | 190 +- .../net/wireless/iwlwifi/iwl-testmode.h | 251 +- .../drivers/net/wireless/iwlwifi/iwl-trans.c | 571 -- .../drivers/net/wireless/iwlwifi/iwl-trans.h | 105 - trunk/drivers/net/wireless/iwlwifi/iwl-tx.c | 311 +- trunk/drivers/net/wireless/iwmc3200wifi/fw.c | 2 +- trunk/drivers/net/wireless/libertas/cfg.c | 1 - trunk/drivers/net/wireless/libertas/cmd.c | 47 +- trunk/drivers/net/wireless/libertas/cmd.h | 2 - trunk/drivers/net/wireless/libertas/cmdresp.c | 7 +- trunk/drivers/net/wireless/libertas/debugfs.c | 1 - trunk/drivers/net/wireless/libertas/ethtool.c | 1 - trunk/drivers/net/wireless/libertas/if_sdio.c | 34 - trunk/drivers/net/wireless/libertas/if_spi.c | 8 +- trunk/drivers/net/wireless/libertas/main.c | 13 +- trunk/drivers/net/wireless/libertas/mesh.c | 1 - trunk/drivers/net/wireless/libertas/rx.c | 1 - trunk/drivers/net/wireless/libertas/tx.c | 1 - trunk/drivers/net/wireless/libertas_tf/cmd.c | 1 - trunk/drivers/net/wireless/libertas_tf/main.c | 3 +- trunk/drivers/net/wireless/mac80211_hwsim.c | 464 +- trunk/drivers/net/wireless/mac80211_hwsim.h | 133 - trunk/drivers/net/wireless/mwifiex/11n.c | 33 +- trunk/drivers/net/wireless/mwifiex/11n.h | 14 +- trunk/drivers/net/wireless/mwifiex/11n_aggr.c | 54 +- .../net/wireless/mwifiex/11n_rxreorder.c | 5 +- .../net/wireless/mwifiex/11n_rxreorder.h | 5 +- trunk/drivers/net/wireless/mwifiex/cfg80211.c | 56 +- trunk/drivers/net/wireless/mwifiex/cmdevt.c | 28 +- trunk/drivers/net/wireless/mwifiex/debugfs.c | 2 +- trunk/drivers/net/wireless/mwifiex/decl.h | 4 +- trunk/drivers/net/wireless/mwifiex/fw.h | 11 - trunk/drivers/net/wireless/mwifiex/join.c | 23 +- trunk/drivers/net/wireless/mwifiex/main.c | 36 +- trunk/drivers/net/wireless/mwifiex/main.h | 29 +- trunk/drivers/net/wireless/mwifiex/scan.c | 6 +- trunk/drivers/net/wireless/mwifiex/sdio.c | 89 +- trunk/drivers/net/wireless/mwifiex/sdio.h | 6 +- trunk/drivers/net/wireless/mwifiex/sta_cmd.c | 113 +- .../net/wireless/mwifiex/sta_cmdresp.c | 50 +- trunk/drivers/net/wireless/mwifiex/sta_rx.c | 2 +- trunk/drivers/net/wireless/mwifiex/sta_tx.c | 13 +- trunk/drivers/net/wireless/mwifiex/txrx.c | 2 +- trunk/drivers/net/wireless/mwifiex/wmm.c | 30 +- trunk/drivers/net/wireless/mwl8k.c | 1 - trunk/drivers/net/wireless/orinoco/main.c | 2 +- trunk/drivers/net/wireless/p54/p54pci.h | 1 - .../drivers/net/wireless/prism54/islpci_dev.c | 1 - .../drivers/net/wireless/prism54/islpci_dev.h | 1 - .../net/wireless/prism54/islpci_hotplug.c | 1 - trunk/drivers/net/wireless/rt2x00/Kconfig | 9 +- trunk/drivers/net/wireless/rt2x00/rt2400pci.c | 1 - trunk/drivers/net/wireless/rt2x00/rt2500pci.c | 1 - trunk/drivers/net/wireless/rt2x00/rt2500usb.c | 1 - trunk/drivers/net/wireless/rt2x00/rt2800.h | 16 - trunk/drivers/net/wireless/rt2x00/rt2800lib.c | 378 +- trunk/drivers/net/wireless/rt2x00/rt2800lib.h | 1 + trunk/drivers/net/wireless/rt2x00/rt2800pci.c | 8 +- trunk/drivers/net/wireless/rt2x00/rt2800usb.c | 90 +- trunk/drivers/net/wireless/rt2x00/rt2x00.h | 2 - .../net/wireless/rt2x00/rt2x00crypto.c | 6 +- trunk/drivers/net/wireless/rt2x00/rt2x00dev.c | 13 - trunk/drivers/net/wireless/rt2x00/rt2x00lib.h | 3 +- trunk/drivers/net/wireless/rt2x00/rt2x00mac.c | 14 - .../drivers/net/wireless/rt2x00/rt2x00queue.c | 113 +- .../drivers/net/wireless/rt2x00/rt2x00queue.h | 4 +- trunk/drivers/net/wireless/rt2x00/rt2x00usb.c | 1 - trunk/drivers/net/wireless/rt2x00/rt61pci.c | 1 - trunk/drivers/net/wireless/rt2x00/rt73usb.c | 1 - .../net/wireless/rtl818x/rtl8180/dev.c | 1 - trunk/drivers/net/wireless/rtlwifi/Kconfig | 15 +- trunk/drivers/net/wireless/rtlwifi/Makefile | 1 - trunk/drivers/net/wireless/rtlwifi/base.c | 6 +- trunk/drivers/net/wireless/rtlwifi/core.c | 12 +- trunk/drivers/net/wireless/rtlwifi/core.h | 2 - trunk/drivers/net/wireless/rtlwifi/efuse.c | 14 +- trunk/drivers/net/wireless/rtlwifi/pci.c | 249 +- trunk/drivers/net/wireless/rtlwifi/pci.h | 12 + trunk/drivers/net/wireless/rtlwifi/ps.c | 97 +- trunk/drivers/net/wireless/rtlwifi/ps.h | 3 +- trunk/drivers/net/wireless/rtlwifi/rc.c | 2 +- trunk/drivers/net/wireless/rtlwifi/regd.c | 18 + .../net/wireless/rtlwifi/rtl8192c/dm_common.c | 4 +- .../net/wireless/rtlwifi/rtl8192c/fw_common.c | 2 + .../wireless/rtlwifi/rtl8192c/phy_common.c | 12 +- .../net/wireless/rtlwifi/rtl8192ce/hw.c | 21 +- .../net/wireless/rtlwifi/rtl8192ce/led.c | 2 +- .../net/wireless/rtlwifi/rtl8192ce/phy.c | 14 +- .../net/wireless/rtlwifi/rtl8192ce/reg.h | 2 - .../net/wireless/rtlwifi/rtl8192ce/rf.c | 2 +- .../net/wireless/rtlwifi/rtl8192ce/trx.c | 12 +- .../net/wireless/rtlwifi/rtl8192cu/hw.c | 8 +- .../net/wireless/rtlwifi/rtl8192cu/led.c | 2 +- .../net/wireless/rtlwifi/rtl8192cu/mac.c | 11 + .../net/wireless/rtlwifi/rtl8192cu/phy.c | 2 + .../net/wireless/rtlwifi/rtl8192cu/rf.c | 4 +- .../net/wireless/rtlwifi/rtl8192cu/trx.c | 2 +- .../net/wireless/rtlwifi/rtl8192de/Makefile | 14 - .../net/wireless/rtlwifi/rtl8192de/def.h | 269 - .../net/wireless/rtlwifi/rtl8192de/dm.c | 1355 ---- .../net/wireless/rtlwifi/rtl8192de/dm.h | 212 - .../net/wireless/rtlwifi/rtl8192de/fw.c | 790 -- .../net/wireless/rtlwifi/rtl8192de/fw.h | 155 - .../net/wireless/rtlwifi/rtl8192de/hw.c | 2329 ------ .../net/wireless/rtlwifi/rtl8192de/hw.h | 66 - .../net/wireless/rtlwifi/rtl8192de/led.c | 159 - .../net/wireless/rtlwifi/rtl8192de/led.h | 38 - .../net/wireless/rtlwifi/rtl8192de/phy.c | 3831 ---------- .../net/wireless/rtlwifi/rtl8192de/phy.h | 178 - .../net/wireless/rtlwifi/rtl8192de/reg.h | 1313 ---- .../net/wireless/rtlwifi/rtl8192de/rf.c | 628 -- .../net/wireless/rtlwifi/rtl8192de/rf.h | 44 - .../net/wireless/rtlwifi/rtl8192de/sw.c | 423 -- .../net/wireless/rtlwifi/rtl8192de/sw.h | 37 - .../net/wireless/rtlwifi/rtl8192de/table.c | 1690 ----- .../net/wireless/rtlwifi/rtl8192de/table.h | 57 - .../net/wireless/rtlwifi/rtl8192de/trx.c | 959 --- .../net/wireless/rtlwifi/rtl8192de/trx.h | 756 -- .../net/wireless/rtlwifi/rtl8192se/dm.c | 7 +- .../net/wireless/rtlwifi/rtl8192se/fw.c | 2 + .../net/wireless/rtlwifi/rtl8192se/hw.c | 26 +- .../net/wireless/rtlwifi/rtl8192se/led.c | 2 +- .../net/wireless/rtlwifi/rtl8192se/phy.c | 22 +- .../net/wireless/rtlwifi/rtl8192se/reg.h | 6 +- .../net/wireless/rtlwifi/rtl8192se/rf.c | 2 +- .../net/wireless/rtlwifi/rtl8192se/trx.c | 12 +- trunk/drivers/net/wireless/rtlwifi/wifi.h | 10 +- trunk/drivers/net/wireless/wl1251/sdio.c | 1 - trunk/drivers/net/wireless/wl1251/spi.c | 1 - trunk/drivers/net/wireless/wl12xx/Kconfig | 2 +- trunk/drivers/net/wireless/wl12xx/acx.c | 61 +- trunk/drivers/net/wireless/wl12xx/acx.h | 20 +- trunk/drivers/net/wireless/wl12xx/boot.c | 40 +- trunk/drivers/net/wireless/wl12xx/cmd.c | 109 +- trunk/drivers/net/wireless/wl12xx/cmd.h | 62 - trunk/drivers/net/wireless/wl12xx/conf.h | 65 +- trunk/drivers/net/wireless/wl12xx/debugfs.c | 153 +- trunk/drivers/net/wireless/wl12xx/event.c | 101 +- trunk/drivers/net/wireless/wl12xx/event.h | 29 +- trunk/drivers/net/wireless/wl12xx/ini.h | 3 - trunk/drivers/net/wireless/wl12xx/init.c | 27 +- trunk/drivers/net/wireless/wl12xx/io.c | 7 +- trunk/drivers/net/wireless/wl12xx/io.h | 15 - trunk/drivers/net/wireless/wl12xx/main.c | 793 +- trunk/drivers/net/wireless/wl12xx/ps.c | 21 +- trunk/drivers/net/wireless/wl12xx/rx.c | 39 +- trunk/drivers/net/wireless/wl12xx/rx.h | 12 - trunk/drivers/net/wireless/wl12xx/scan.c | 90 +- trunk/drivers/net/wireless/wl12xx/scan.h | 18 +- trunk/drivers/net/wireless/wl12xx/sdio.c | 83 +- trunk/drivers/net/wireless/wl12xx/spi.c | 16 +- trunk/drivers/net/wireless/wl12xx/testmode.c | 2 +- trunk/drivers/net/wireless/wl12xx/tx.c | 176 +- trunk/drivers/net/wireless/wl12xx/tx.h | 28 +- trunk/drivers/net/wireless/wl12xx/wl12xx.h | 63 +- trunk/drivers/net/wireless/zd1211rw/zd_chip.h | 2 - trunk/drivers/net/wireless/zd1211rw/zd_def.h | 6 - trunk/drivers/net/wireless/zd1211rw/zd_mac.c | 118 +- trunk/drivers/net/wireless/zd1211rw/zd_mac.h | 1 - trunk/drivers/net/wireless/zd1211rw/zd_usb.c | 129 +- trunk/drivers/net/wireless/zd1211rw/zd_usb.h | 5 +- trunk/drivers/net/xen-netback/netback.c | 1 - trunk/drivers/net/xen-netfront.c | 69 +- trunk/drivers/net/xilinx_emaclite.c | 14 +- trunk/drivers/net/yellowfin.c | 6 +- trunk/drivers/net/znet.c | 2 +- trunk/drivers/net/zorro8390.c | 673 +- trunk/drivers/nfc/Kconfig | 24 +- trunk/drivers/nfc/Makefile | 3 - trunk/drivers/nfc/pn533.c | 1632 ---- trunk/drivers/of/Kconfig | 8 +- trunk/drivers/of/Makefile | 1 - trunk/drivers/of/address.c | 18 - trunk/drivers/of/base.c | 65 - trunk/drivers/of/gpio.c | 11 +- trunk/drivers/of/of_pci.c | 112 +- trunk/drivers/of/of_pci_irq.c | 92 - trunk/drivers/of/platform.c | 196 +- trunk/drivers/pci/Makefile | 2 - trunk/drivers/pci/hotplug/rpadlpar_core.c | 2 +- trunk/drivers/pci/of.c | 61 - trunk/drivers/pci/probe.c | 7 +- trunk/drivers/pci/quirks.c | 23 - trunk/drivers/s390/net/ctcm_mpc.h | 1 - trunk/drivers/s390/net/qeth_core.h | 2 +- trunk/drivers/s390/net/qeth_core_main.c | 1 + trunk/drivers/s390/net/qeth_l3_main.c | 125 +- trunk/drivers/scsi/bnx2fc/57xx_hsi_bnx2fc.h | 1162 +-- trunk/drivers/scsi/bnx2fc/bnx2fc.h | 10 +- trunk/drivers/scsi/bnx2fc/bnx2fc_constants.h | 139 +- trunk/drivers/scsi/bnx2fc/bnx2fc_els.c | 7 +- trunk/drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 12 +- trunk/drivers/scsi/bnx2fc/bnx2fc_hwi.c | 442 +- trunk/drivers/scsi/bnx2fc/bnx2fc_io.c | 23 +- trunk/drivers/scsi/bnx2fc/bnx2fc_tgt.c | 24 +- .../drivers/scsi/bnx2i/57xx_iscsi_constants.h | 2 +- trunk/drivers/scsi/bnx2i/57xx_iscsi_hsi.h | 12 +- trunk/drivers/scsi/bnx2i/bnx2i.h | 2 +- trunk/drivers/scsi/bnx2i/bnx2i_hwi.c | 8 +- trunk/drivers/scsi/bnx2i/bnx2i_init.c | 21 +- trunk/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c | 2 +- trunk/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c | 2 +- trunk/drivers/scsi/cxgbi/libcxgbi.c | 4 +- trunk/drivers/spi/Kconfig | 48 +- trunk/drivers/spi/Makefile | 111 +- .../drivers/spi/{spi-pl022.c => amba-pl022.c} | 111 +- .../drivers/spi/{spi-ath79.c => ath79_spi.c} | 2 +- .../drivers/spi/{spi-atmel.c => atmel_spi.c} | 155 +- trunk/drivers/spi/atmel_spi.h | 167 + .../spi/{spi-au1550.c => au1550_spi.c} | 2 +- .../{spi-coldfire-qspi.c => coldfire_qspi.c} | 0 .../spi/{spi-davinci.c => davinci_spi.c} | 0 trunk/drivers/spi/{spi-dw.c => dw_spi.c} | 8 +- trunk/drivers/spi/{spi-dw.h => dw_spi.h} | 1 - .../spi/{spi-dw-mid.c => dw_spi_mid.c} | 4 +- .../spi/{spi-dw-mmio.c => dw_spi_mmio.c} | 4 +- .../spi/{spi-dw-pci.c => dw_spi_pci.c} | 4 +- .../spi/{spi-ep93xx.c => ep93xx_spi.c} | 303 +- .../{spi-mpc512x-psc.c => mpc512x_psc_spi.c} | 0 .../{spi-mpc52xx-psc.c => mpc52xx_psc_spi.c} | 0 .../spi/{spi-mpc52xx.c => mpc52xx_spi.c} | 0 .../spi/{spi-omap2-mcspi.c => omap2_mcspi.c} | 10 +- .../spi/{spi-omap-100k.c => omap_spi_100k.c} | 0 .../spi/{spi-omap-uwire.c => omap_uwire.c} | 2 +- .../drivers/spi/{spi-orion.c => orion_spi.c} | 8 +- .../spi/{spi-pxa2xx.c => pxa2xx_spi.c} | 0 .../{spi-pxa2xx-pci.c => pxa2xx_spi_pci.c} | 0 trunk/drivers/spi/spi.c | 2 +- .../spi/{spi-altera.c => spi_altera.c} | 0 .../spi/{spi-bfin5xx.c => spi_bfin5xx.c} | 218 +- .../{spi-bfin-sport.c => spi_bfin_sport.c} | 0 .../spi/{spi-bitbang.c => spi_bitbang.c} | 8 +- ...{spi-bitbang-txrx.h => spi_bitbang_txrx.h} | 0 .../spi/{spi-butterfly.c => spi_butterfly.c} | 4 +- .../spi/{spi-fsl-espi.c => spi_fsl_espi.c} | 2 +- .../spi/{spi-fsl-lib.c => spi_fsl_lib.c} | 2 +- .../spi/{spi-fsl-lib.h => spi_fsl_lib.h} | 0 .../spi/{spi-fsl-spi.c => spi_fsl_spi.c} | 30 +- trunk/drivers/spi/{spi-gpio.c => spi_gpio.c} | 6 +- trunk/drivers/spi/{spi-imx.c => spi_imx.c} | 466 +- .../spi/{spi-lm70llp.c => spi_lm70llp.c} | 4 +- .../spi/{spi-nuc900.c => spi_nuc900.c} | 5 +- .../spi/{spi-oc-tiny.c => spi_oc_tiny.c} | 0 .../spi/{spi-ppc4xx.c => spi_ppc4xx.c} | 2 +- .../spi/{spi-s3c24xx.c => spi_s3c24xx.c} | 5 +- .../{spi-s3c24xx-fiq.S => spi_s3c24xx_fiq.S} | 2 +- .../{spi-s3c24xx-fiq.h => spi_s3c24xx_fiq.h} | 0 trunk/drivers/spi/spi_s3c24xx_gpio.c | 201 + .../spi/{spi-s3c64xx.c => spi_s3c64xx.c} | 3 +- trunk/drivers/spi/{spi-sh.c => spi_sh.c} | 0 .../spi/{spi-sh-msiof.c => spi_sh_msiof.c} | 0 .../spi/{spi-sh-sci.c => spi_sh_sci.c} | 2 +- trunk/drivers/spi/{spi-stmp.c => spi_stmp.c} | 0 .../drivers/spi/{spi-tegra.c => spi_tegra.c} | 20 +- ...{spi-topcliff-pch.c => spi_topcliff_pch.c} | 1158 +-- trunk/drivers/spi/{spi-txx9.c => spi_txx9.c} | 2 +- trunk/drivers/spi/spidev.c | 2 +- .../spi/{spi-ti-ssp.c => ti-ssp-spi.c} | 0 .../drivers/spi/{spi-tle62x0.c => tle62x0.c} | 2 +- .../spi/{spi-xilinx.c => xilinx_spi.c} | 0 trunk/drivers/ssb/driver_chipcommon_pmu.c | 4 +- trunk/drivers/ssb/driver_gige.c | 13 +- trunk/drivers/ssb/driver_pcicore.c | 10 +- trunk/drivers/ssb/main.c | 33 +- trunk/drivers/ssb/pci.c | 9 +- trunk/drivers/ssb/pcihost_wrapper.c | 6 +- trunk/drivers/ssb/scan.c | 3 +- .../staging/brcm80211/brcmfmac/dhd_linux.c | 2 - .../staging/brcm80211/brcmfmac/wl_iw.c | 1 - .../staging/brcm80211/brcmsmac/wl_mac80211.c | 1 - .../staging/brcm80211/brcmsmac/wl_mac80211.h | 2 - trunk/drivers/staging/et131x/et131x_netdev.c | 1 + .../staging/ft1000/ft1000-usb/ft1000_hw.c | 9 + trunk/drivers/staging/pohmelfs/crypto.c | 1 - .../staging/rtl8187se/ieee80211/ieee80211.h | 1 - .../rtl8187se/ieee80211/ieee80211_softmac.c | 1 - trunk/drivers/staging/rtl8187se/r8180.h | 1 - trunk/drivers/staging/rtl8187se/r8180_core.c | 1 - .../staging/rtl8192e/ieee80211/ieee80211.h | 1 - trunk/drivers/staging/rtl8192e/r8192E.h | 1 - trunk/drivers/staging/rtl8192e/r8192E_core.c | 2 - .../staging/rtl8192u/ieee80211/ieee80211.h | 1 - .../drivers/staging/wlags49_h2/wl_internal.h | 7 + trunk/drivers/target/loopback/Kconfig | 6 + trunk/drivers/target/loopback/tcm_loop.c | 207 +- trunk/drivers/target/loopback/tcm_loop.h | 6 + trunk/drivers/target/target_core_alua.c | 426 +- trunk/drivers/target/target_core_cdb.c | 457 +- trunk/drivers/target/target_core_configfs.c | 667 +- trunk/drivers/target/target_core_device.c | 819 +- .../target/target_core_fabric_configfs.c | 122 +- trunk/drivers/target/target_core_fabric_lib.c | 27 +- trunk/drivers/target/target_core_file.c | 149 +- trunk/drivers/target/target_core_file.h | 4 + trunk/drivers/target/target_core_hba.c | 37 +- trunk/drivers/target/target_core_iblock.c | 199 +- trunk/drivers/target/target_core_iblock.h | 9 + trunk/drivers/target/target_core_pr.c | 862 +-- trunk/drivers/target/target_core_pr.h | 2 +- trunk/drivers/target/target_core_pscsi.c | 316 +- trunk/drivers/target/target_core_pscsi.h | 4 +- trunk/drivers/target/target_core_rd.c | 483 +- trunk/drivers/target/target_core_rd.h | 4 + trunk/drivers/target/target_core_scdb.c | 20 +- trunk/drivers/target/target_core_scdb.h | 10 +- trunk/drivers/target/target_core_stat.c | 112 +- trunk/drivers/target/target_core_tmr.c | 185 +- trunk/drivers/target/target_core_tpg.c | 206 +- trunk/drivers/target/target_core_transport.c | 3682 +++++---- trunk/drivers/target/target_core_ua.c | 62 +- trunk/drivers/target/tcm_fc/Makefile | 17 +- trunk/drivers/target/tcm_fc/tcm_fc.h | 25 + trunk/drivers/target/tcm_fc/tfc_cmd.c | 114 +- trunk/drivers/target/tcm_fc/tfc_conf.c | 47 +- trunk/drivers/target/tcm_fc/tfc_io.c | 130 +- trunk/drivers/target/tcm_fc/tfc_sess.c | 18 +- trunk/drivers/tty/serial/ifx6x60.c | 1 - trunk/drivers/tty/serial/of_serial.c | 43 +- trunk/drivers/usb/gadget/f_phonet.c | 1 - trunk/drivers/vhost/net.c | 91 +- trunk/drivers/vhost/test.c | 5 - trunk/drivers/vhost/vhost.c | 213 +- trunk/drivers/vhost/vhost.h | 32 - trunk/drivers/watchdog/Kconfig | 3 +- trunk/drivers/xen/Kconfig | 46 - trunk/drivers/xen/Makefile | 4 +- trunk/drivers/xen/events.c | 7 +- trunk/drivers/xen/tmem.c | 170 +- trunk/drivers/xen/xen-balloon.c | 2 - trunk/drivers/xen/xen-pciback/Makefile | 7 - trunk/drivers/xen/xen-pciback/conf_space.c | 438 -- trunk/drivers/xen/xen-pciback/conf_space.h | 126 - .../xen/xen-pciback/conf_space_capability.c | 207 - .../xen/xen-pciback/conf_space_header.c | 386 - .../xen/xen-pciback/conf_space_quirks.c | 140 - .../xen/xen-pciback/conf_space_quirks.h | 33 - trunk/drivers/xen/xen-pciback/passthrough.c | 194 - trunk/drivers/xen/xen-pciback/pci_stub.c | 1376 ---- trunk/drivers/xen/xen-pciback/pciback.h | 183 - trunk/drivers/xen/xen-pciback/pciback_ops.c | 384 - trunk/drivers/xen/xen-pciback/vpci.c | 259 - trunk/drivers/xen/xen-pciback/xenbus.c | 749 -- trunk/drivers/xen/xen-selfballoon.c | 485 -- trunk/drivers/xen/xenbus/xenbus_probe.c | 44 +- trunk/drivers/xen/xenbus/xenbus_probe.h | 2 - .../drivers/xen/xenbus/xenbus_probe_backend.c | 9 +- .../xen/xenbus/xenbus_probe_frontend.c | 6 +- trunk/fs/ceph/mds_client.c | 19 +- trunk/fs/cifs/cifsfs.c | 100 +- trunk/fs/cifs/cifsfs.h | 2 +- trunk/fs/cifs/connect.c | 2 +- trunk/fs/cifs/dir.c | 13 +- trunk/fs/cifs/file.c | 2 +- trunk/fs/cifs/sess.c | 10 +- trunk/fs/cramfs/inode.c | 22 +- trunk/fs/dcache.c | 2 + trunk/fs/dlm/ast.c | 265 +- trunk/fs/dlm/ast.h | 15 +- trunk/fs/dlm/config.c | 75 +- trunk/fs/dlm/config.h | 2 +- trunk/fs/dlm/dlm_internal.h | 29 +- trunk/fs/dlm/lock.c | 225 +- trunk/fs/dlm/lockspace.c | 177 +- trunk/fs/dlm/lowcomms.c | 9 +- trunk/fs/dlm/memory.c | 22 +- trunk/fs/dlm/memory.h | 2 +- trunk/fs/dlm/recoverd.c | 12 +- trunk/fs/dlm/user.c | 12 +- trunk/fs/exec.c | 27 +- trunk/fs/exofs/super.c | 2 +- trunk/fs/fscache/page.c | 14 +- trunk/fs/gfs2/bmap.c | 12 +- trunk/fs/gfs2/dir.c | 221 +- trunk/fs/gfs2/dir.h | 1 - trunk/fs/gfs2/file.c | 4 +- trunk/fs/gfs2/glock.c | 39 +- trunk/fs/gfs2/glock.h | 6 - trunk/fs/gfs2/glops.c | 7 +- trunk/fs/gfs2/incore.h | 3 +- trunk/fs/gfs2/main.c | 1 - trunk/fs/gfs2/ops_fstype.c | 1 - trunk/fs/gfs2/rgrp.c | 52 +- trunk/fs/gfs2/rgrp.h | 4 +- trunk/fs/gfs2/super.c | 2 +- trunk/fs/hfsplus/brec.c | 4 - trunk/fs/hfsplus/catalog.c | 14 +- trunk/fs/hfsplus/dir.c | 8 +- trunk/fs/hfsplus/extents.c | 50 +- trunk/fs/hfsplus/hfsplus_fs.h | 18 +- trunk/fs/hfsplus/inode.c | 12 +- trunk/fs/hfsplus/part_tbl.c | 32 +- trunk/fs/hfsplus/super.c | 43 +- trunk/fs/hfsplus/unicode.c | 35 +- trunk/fs/hfsplus/wrapper.c | 92 +- trunk/fs/hppfs/hppfs.c | 31 +- trunk/fs/libfs.c | 2 +- trunk/fs/namei.c | 7 +- trunk/fs/proc/array.c | 2 +- trunk/fs/proc/base.c | 2 +- trunk/fs/ubifs/commit.c | 8 +- trunk/fs/ubifs/debug.c | 762 +- trunk/fs/ubifs/debug.h | 241 +- trunk/fs/ubifs/dir.c | 16 +- trunk/fs/ubifs/file.c | 2 +- trunk/fs/ubifs/io.c | 168 +- trunk/fs/ubifs/log.c | 6 +- trunk/fs/ubifs/lprops.c | 8 +- trunk/fs/ubifs/lpt.c | 37 +- trunk/fs/ubifs/lpt_commit.c | 40 +- trunk/fs/ubifs/misc.h | 103 +- trunk/fs/ubifs/orphan.c | 2 +- trunk/fs/ubifs/recovery.c | 43 +- trunk/fs/ubifs/replay.c | 3 +- trunk/fs/ubifs/sb.c | 6 +- trunk/fs/ubifs/scan.c | 4 +- trunk/fs/ubifs/super.c | 6 +- trunk/fs/ubifs/tnc.c | 26 +- trunk/fs/ubifs/tnc_commit.c | 145 +- trunk/fs/ubifs/ubifs.h | 21 +- trunk/fs/ufs/namei.c | 12 +- trunk/fs/xfs/Makefile | 2 + trunk/fs/xfs/linux-2.6/xfs_acl.c | 2 +- trunk/fs/xfs/linux-2.6/xfs_aops.c | 20 +- trunk/fs/xfs/linux-2.6/xfs_buf.c | 79 +- trunk/fs/xfs/linux-2.6/xfs_buf.h | 64 +- trunk/fs/xfs/linux-2.6/xfs_export.c | 4 +- trunk/fs/xfs/linux-2.6/xfs_file.c | 2 +- trunk/fs/xfs/linux-2.6/xfs_iops.c | 433 +- trunk/fs/xfs/linux-2.6/xfs_linux.h | 7 +- trunk/fs/xfs/linux-2.6/xfs_super.c | 36 +- trunk/fs/xfs/linux-2.6/xfs_sync.c | 10 +- trunk/fs/xfs/linux-2.6/xfs_sync.h | 8 + trunk/fs/xfs/linux-2.6/xfs_trace.h | 60 +- trunk/fs/xfs/quota/xfs_dquot.c | 48 +- trunk/fs/xfs/quota/xfs_dquot.h | 6 + trunk/fs/xfs/quota/xfs_qm.c | 49 +- trunk/fs/xfs/quota/xfs_qm.h | 6 + trunk/fs/xfs/quota/xfs_qm_syscalls.c | 355 +- trunk/fs/xfs/quota/xfs_trans_dquot.c | 15 +- trunk/fs/xfs/xfs.h | 1 + trunk/fs/xfs/xfs_alloc.c | 14 +- trunk/fs/xfs/xfs_alloc_btree.c | 84 +- trunk/fs/xfs/xfs_arch.h | 136 + trunk/fs/xfs/xfs_attr.c | 41 +- trunk/fs/xfs/xfs_attr_leaf.c | 60 +- trunk/fs/xfs/xfs_bmap.c | 41 +- trunk/fs/xfs/xfs_bmap_btree.c | 106 +- trunk/fs/xfs/xfs_btree.c | 29 +- trunk/fs/xfs/xfs_btree.h | 38 +- trunk/fs/xfs/xfs_btree_trace.c | 249 + trunk/fs/xfs/xfs_btree_trace.h | 99 + trunk/fs/xfs/xfs_buf_item.c | 75 +- trunk/fs/xfs/xfs_da_btree.c | 272 +- trunk/fs/xfs/xfs_da_btree.h | 13 +- trunk/fs/xfs/xfs_dir2.c | 140 +- trunk/fs/xfs/xfs_dir2.h | 54 +- trunk/fs/xfs/xfs_dir2_block.c | 253 +- trunk/fs/xfs/xfs_dir2_block.h | 92 + trunk/fs/xfs/xfs_dir2_data.c | 327 +- trunk/fs/xfs/xfs_dir2_data.h | 184 + trunk/fs/xfs/xfs_dir2_format.h | 597 -- trunk/fs/xfs/xfs_dir2_leaf.c | 417 +- trunk/fs/xfs/xfs_dir2_leaf.h | 253 + trunk/fs/xfs/xfs_dir2_node.c | 201 +- trunk/fs/xfs/xfs_dir2_node.h | 100 + trunk/fs/xfs/xfs_dir2_priv.h | 135 - trunk/fs/xfs/xfs_dir2_sf.c | 338 +- trunk/fs/xfs/xfs_dir2_sf.h | 171 + trunk/fs/xfs/xfs_fs.h | 5 - trunk/fs/xfs/xfs_ialloc.c | 14 +- trunk/fs/xfs/xfs_ialloc_btree.c | 75 + trunk/fs/xfs/xfs_iget.c | 1 + trunk/fs/xfs/xfs_inode.c | 537 +- trunk/fs/xfs/xfs_inode.h | 25 +- trunk/fs/xfs/xfs_inode_item.c | 17 +- trunk/fs/xfs/xfs_inum.h | 11 + trunk/fs/xfs/xfs_log.c | 64 +- trunk/fs/xfs/xfs_log_recover.c | 38 +- trunk/fs/xfs/xfs_mount.c | 71 +- trunk/fs/xfs/xfs_mount.h | 2 +- trunk/fs/xfs/xfs_trans.c | 27 +- trunk/fs/xfs/xfs_trans_ail.c | 214 +- trunk/fs/xfs/xfs_trans_buf.c | 118 +- trunk/fs/xfs/xfs_trans_inode.c | 9 + trunk/fs/xfs/xfs_trans_priv.h | 14 +- trunk/fs/xfs/xfs_vnodeops.c | 479 +- trunk/fs/xfs/xfs_vnodeops.h | 3 +- trunk/include/acpi/acpi_bus.h | 2 +- trunk/include/acpi/acpiosxf.h | 3 - trunk/include/acpi/platform/aclinux.h | 18 - trunk/include/crypto/if_alg.h | 1 - trunk/include/linux/arcdevice.h | 1 - trunk/include/linux/ath9k_platform.h | 2 - trunk/include/linux/audit.h | 7 - trunk/include/linux/bcma/bcma.h | 26 - .../linux/bcma/bcma_driver_chipcommon.h | 1 - trunk/include/linux/bcma/bcma_driver_pci.h | 2 - trunk/include/linux/cn_proc.h | 13 - trunk/include/linux/cordic.h | 48 - trunk/include/linux/crc8.h | 101 - trunk/include/linux/dcbnl.h | 25 +- trunk/include/linux/dccp.h | 1 - trunk/include/linux/dma-direction.h | 13 - trunk/include/linux/dma-mapping.h | 10 +- trunk/include/linux/dmaengine.h | 4 +- trunk/include/linux/etherdevice.h | 2 +- trunk/include/linux/ethtool.h | 35 +- trunk/include/linux/firewire-cdev.h | 78 +- trunk/include/linux/hid.h | 3 +- trunk/include/linux/ieee80211.h | 18 +- trunk/include/linux/if_ether.h | 5 - trunk/include/linux/if_packet.h | 6 - trunk/include/linux/if_vlan.h | 91 +- trunk/include/linux/inet_lro.h | 19 + trunk/include/linux/lguest.h | 2 + trunk/include/linux/mfd/tmio.h | 8 - trunk/include/linux/mii.h | 2 - trunk/include/linux/mlx4/cmd.h | 3 - trunk/include/linux/mlx4/device.h | 60 +- trunk/include/linux/mlx4/qp.h | 8 +- trunk/include/linux/mmc/boot.h | 6 +- trunk/include/linux/mmc/card.h | 2 +- trunk/include/linux/mmc/core.h | 9 +- trunk/include/linux/mmc/dw_mmc.h | 28 +- trunk/include/linux/mmc/host.h | 26 +- trunk/include/linux/mmc/ioctl.h | 2 +- trunk/include/linux/mmc/mmc.h | 17 +- trunk/include/linux/mmc/pm.h | 2 +- trunk/include/linux/mmc/sd.h | 7 +- trunk/include/linux/mmc/sdhci-pltfm.h | 35 + trunk/include/linux/mmc/sdhci-spear.h | 6 +- trunk/include/linux/mmc/sdhci.h | 6 +- trunk/include/linux/mmc/sdio.h | 7 +- trunk/include/linux/mmc/sdio_func.h | 7 +- trunk/include/linux/mmc/sdio_ids.h | 6 +- trunk/include/linux/mmc/sh_mmcif.h | 6 +- trunk/include/linux/mmc/sh_mobile_sdhi.h | 6 +- trunk/include/linux/mmc/tmio.h | 8 +- trunk/include/linux/mtd/ubi.h | 14 +- trunk/include/linux/netdevice.h | 61 +- trunk/include/linux/netfilter/ipset/ip_set.h | 50 +- .../linux/netfilter/ipset/ip_set_ahash.h | 154 +- .../linux/netfilter/ipset/ip_set_hash.h | 4 - .../linux/netfilter/ipset/ip_set_timeout.h | 5 +- trunk/include/linux/netfilter/ipset/pfxlen.h | 11 +- trunk/include/linux/netfilter/nfnetlink.h | 3 - .../include/linux/netfilter/nfnetlink_queue.h | 1 - trunk/include/linux/netfilter/xt_set.h | 15 +- trunk/include/linux/netlink.h | 8 +- trunk/include/linux/netpoll.h | 2 + trunk/include/linux/nfc.h | 126 - trunk/include/linux/nl80211.h | 42 +- trunk/include/linux/of.h | 29 +- trunk/include/linux/of_address.h | 5 - trunk/include/linux/of_gpio.h | 42 +- trunk/include/linux/of_pci.h | 5 - trunk/include/linux/of_platform.h | 40 - trunk/include/linux/opp.h | 8 + trunk/include/linux/pci.h | 28 - trunk/include/linux/pci_ids.h | 9 - trunk/include/linux/platform_data/pxa_sdhci.h | 60 - trunk/include/linux/ptrace.h | 104 +- trunk/include/linux/random.h | 1 - trunk/include/linux/rtnetlink.h | 2 - trunk/include/linux/sched.h | 69 +- trunk/include/linux/sdla.h | 6 +- trunk/include/linux/skbuff.h | 73 +- trunk/include/linux/slab.h | 20 - trunk/include/linux/slab_def.h | 52 +- trunk/include/linux/slob_def.h | 10 + trunk/include/linux/slub_def.h | 23 +- trunk/include/linux/socket.h | 4 +- trunk/include/linux/spi/74x164.h | 2 + trunk/include/linux/spi/mcp23s08.h | 9 + trunk/include/linux/ssb/ssb.h | 2 +- trunk/include/linux/stmmac.h | 25 +- trunk/include/linux/tc_ematch/tc_em_meta.h | 2 +- trunk/include/linux/tcp.h | 1 - trunk/include/linux/tracehook.h | 385 +- trunk/include/linux/virtio_net.h | 1 - trunk/include/linux/workqueue.h | 18 +- trunk/include/net/act_api.h | 6 +- trunk/include/net/arp.h | 31 +- trunk/include/net/bluetooth/bluetooth.h | 27 +- trunk/include/net/bluetooth/hci.h | 77 - trunk/include/net/bluetooth/hci_core.h | 96 +- trunk/include/net/bluetooth/l2cap.h | 140 +- trunk/include/net/bluetooth/mgmt.h | 12 - trunk/include/net/bluetooth/rfcomm.h | 9 +- trunk/include/net/bluetooth/smp.h | 47 - trunk/include/net/caif/caif_hsi.h | 145 - trunk/include/net/cfg80211.h | 38 - trunk/include/net/dcbnl.h | 11 +- trunk/include/net/dst.h | 41 +- trunk/include/net/dst_ops.h | 1 - trunk/include/net/genetlink.h | 32 - trunk/include/net/inetpeer.h | 39 +- trunk/include/net/ip.h | 10 +- trunk/include/net/ip6_fib.h | 1 + trunk/include/net/ip_vs.h | 34 +- trunk/include/net/ipv6.h | 12 +- trunk/include/net/mac80211.h | 261 +- trunk/include/net/neighbour.h | 34 +- trunk/include/net/net_namespace.h | 1 - trunk/include/net/netlink.h | 24 - trunk/include/net/nfc.h | 156 - trunk/include/net/pkt_sched.h | 4 +- trunk/include/net/rtnetlink.h | 7 +- trunk/include/net/sch_generic.h | 12 +- trunk/include/net/sctp/sctp.h | 15 +- trunk/include/net/sctp/structs.h | 17 - trunk/include/net/sctp/user.h | 1 - trunk/include/net/snmp.h | 86 +- trunk/include/net/sock.h | 2 - trunk/include/net/tcp.h | 11 +- trunk/include/net/wimax.h | 1 + trunk/include/rdma/ib_pma.h | 156 - trunk/include/rdma/ib_verbs.h | 3 +- trunk/include/target/target_core_base.h | 228 +- trunk/include/target/target_core_device.h | 6 +- trunk/include/target/target_core_fabric_ops.h | 9 +- trunk/include/target/target_core_transport.h | 43 +- trunk/include/trace/events/sock.h | 68 - trunk/include/trace/events/udp.h | 32 - trunk/include/xen/balloon.h | 10 - trunk/include/xen/events.h | 2 + trunk/include/xen/hvc-console.h | 4 +- trunk/include/xen/interface/xen.h | 39 - trunk/include/xen/tmem.h | 5 - trunk/include/xen/xenbus.h | 2 - trunk/kernel/audit.c | 29 - trunk/kernel/exit.c | 91 +- trunk/kernel/fork.c | 33 +- trunk/kernel/ptrace.c | 197 +- trunk/kernel/rcutree_plugin.h | 53 +- trunk/kernel/sched.c | 233 +- trunk/kernel/sched_fair.c | 46 +- trunk/kernel/sched_features.h | 2 - trunk/kernel/signal.c | 444 +- trunk/kernel/softirq.c | 12 +- trunk/kernel/workqueue.c | 81 +- trunk/lib/Kconfig | 14 - trunk/lib/Makefile | 3 - trunk/lib/checksum.c | 13 +- trunk/lib/cordic.c | 101 - trunk/lib/crc8.c | 86 - trunk/mm/nommu.c | 3 +- trunk/mm/oom_kill.c | 3 +- trunk/mm/slab.c | 17 +- trunk/mm/slob.c | 6 - trunk/mm/slub.c | 105 +- trunk/mm/vmscan.c | 3 +- trunk/net/8021q/vlan.c | 19 +- trunk/net/8021q/vlan.h | 31 - trunk/net/8021q/vlan_core.c | 46 +- trunk/net/8021q/vlan_dev.c | 13 +- trunk/net/8021q/vlanproc.c | 6 +- trunk/net/Kconfig | 1 - trunk/net/Makefile | 1 - trunk/net/TUNABLE | 50 + trunk/net/appletalk/aarp.c | 138 +- trunk/net/appletalk/ddp.c | 380 +- trunk/net/atm/clip.c | 22 +- trunk/net/atm/mpc.c | 2 +- trunk/net/atm/pppoatm.c | 1 - trunk/net/batman-adv/Kconfig | 1 - trunk/net/batman-adv/aggregation.c | 73 +- trunk/net/batman-adv/aggregation.h | 13 +- trunk/net/batman-adv/bat_debugfs.c | 11 +- trunk/net/batman-adv/bat_sysfs.c | 102 +- trunk/net/batman-adv/bat_sysfs.h | 2 - trunk/net/batman-adv/bitarray.c | 12 +- trunk/net/batman-adv/bitarray.h | 10 +- trunk/net/batman-adv/gateway_client.c | 268 +- trunk/net/batman-adv/gateway_client.h | 3 +- trunk/net/batman-adv/gateway_common.c | 25 +- trunk/net/batman-adv/hard-interface.c | 46 +- trunk/net/batman-adv/hard-interface.h | 20 +- trunk/net/batman-adv/hash.c | 7 +- trunk/net/batman-adv/hash.h | 6 +- trunk/net/batman-adv/icmp_socket.c | 4 +- trunk/net/batman-adv/main.c | 31 +- trunk/net/batman-adv/main.h | 85 +- trunk/net/batman-adv/originator.c | 36 +- trunk/net/batman-adv/originator.h | 18 +- trunk/net/batman-adv/packet.h | 142 +- trunk/net/batman-adv/ring_buffer.c | 4 +- trunk/net/batman-adv/ring_buffer.h | 2 +- trunk/net/batman-adv/routing.c | 376 +- trunk/net/batman-adv/routing.h | 15 +- trunk/net/batman-adv/send.c | 147 +- trunk/net/batman-adv/send.h | 14 +- trunk/net/batman-adv/soft-interface.c | 66 +- trunk/net/batman-adv/soft-interface.h | 5 +- trunk/net/batman-adv/translation-table.c | 1566 +--- trunk/net/batman-adv/translation-table.h | 49 +- trunk/net/batman-adv/types.h | 74 +- trunk/net/batman-adv/unicast.c | 33 +- trunk/net/batman-adv/unicast.h | 8 +- trunk/net/batman-adv/vis.c | 104 +- trunk/net/bluetooth/Kconfig | 9 - trunk/net/bluetooth/Makefile | 2 +- trunk/net/bluetooth/cmtp/capi.c | 3 +- trunk/net/bluetooth/hci_conn.c | 79 +- trunk/net/bluetooth/hci_core.c | 264 +- trunk/net/bluetooth/hci_event.c | 289 +- trunk/net/bluetooth/hci_sock.c | 70 +- trunk/net/bluetooth/l2cap_core.c | 1059 ++- trunk/net/bluetooth/l2cap_sock.c | 442 +- trunk/net/bluetooth/lib.c | 23 +- trunk/net/bluetooth/mgmt.c | 281 +- trunk/net/bluetooth/rfcomm/sock.c | 6 +- trunk/net/bluetooth/sco.c | 4 +- trunk/net/bluetooth/smp.c | 702 -- trunk/net/bridge/br_netfilter.c | 16 +- trunk/net/bridge/br_netlink.c | 15 +- trunk/net/caif/caif_dev.c | 1 + trunk/net/caif/chnl_net.c | 2 +- trunk/net/can/af_can.c | 5 +- trunk/net/can/bcm.c | 1 - trunk/net/ceph/ceph_fs.c | 17 +- trunk/net/ceph/crypto.c | 2 +- trunk/net/core/dev.c | 26 +- trunk/net/core/dst.c | 17 +- trunk/net/core/ethtool.c | 313 +- trunk/net/core/fib_rules.c | 6 +- trunk/net/core/neighbour.c | 191 +- trunk/net/core/net-sysfs.c | 2 + trunk/net/core/net-traces.c | 2 - trunk/net/core/net_namespace.c | 1 - trunk/net/core/netpoll.c | 13 +- trunk/net/core/rtnetlink.c | 64 +- trunk/net/core/skbuff.c | 84 +- trunk/net/core/sock.c | 11 +- trunk/net/core/timestamping.c | 2 - trunk/net/dcb/dcbnl.c | 677 +- trunk/net/dccp/ccid.c | 4 +- trunk/net/dccp/ccids/ccid2.c | 109 +- trunk/net/dccp/ccids/ccid2.h | 25 +- trunk/net/dccp/input.c | 61 +- trunk/net/dccp/output.c | 14 +- trunk/net/decnet/af_decnet.c | 697 +- trunk/net/decnet/dn_dev.c | 78 +- trunk/net/decnet/dn_fib.c | 81 +- trunk/net/decnet/dn_neigh.c | 42 +- trunk/net/decnet/dn_nsp_in.c | 182 +- trunk/net/decnet/dn_route.c | 143 +- trunk/net/decnet/dn_table.c | 23 +- trunk/net/decnet/netfilter/dn_rtmsg.c | 18 +- trunk/net/decnet/sysctl_net_decnet.c | 17 +- trunk/net/dsa/mv88e6131.c | 8 +- trunk/net/econet/af_econet.c | 172 +- trunk/net/ethernet/eth.c | 3 +- trunk/net/ieee802154/af_ieee802154.c | 2 +- trunk/net/ieee802154/dgram.c | 2 +- trunk/net/ieee802154/nl-phy.c | 31 - trunk/net/ipv4/af_inet.c | 52 +- trunk/net/ipv4/arp.c | 41 +- trunk/net/ipv4/devinet.c | 6 +- trunk/net/ipv4/fib_frontend.c | 6 +- trunk/net/ipv4/fib_trie.c | 12 +- trunk/net/ipv4/gre.c | 1 + trunk/net/ipv4/icmp.c | 14 +- trunk/net/ipv4/inet_diag.c | 2 +- trunk/net/ipv4/inet_lro.c | 74 +- trunk/net/ipv4/inetpeer.c | 293 +- trunk/net/ipv4/ip_fragment.c | 5 +- trunk/net/ipv4/ip_gre.c | 2 +- trunk/net/ipv4/ip_input.c | 4 +- trunk/net/ipv4/ip_output.c | 16 +- trunk/net/ipv4/ipconfig.c | 75 +- trunk/net/ipv4/ipmr.c | 3 +- trunk/net/ipv4/netfilter/ipt_CLUSTERIP.c | 26 +- trunk/net/ipv4/netfilter/nf_defrag_ipv4.c | 2 +- trunk/net/ipv4/netfilter/nf_nat_snmp_basic.c | 210 +- trunk/net/ipv4/netfilter/nf_nat_standalone.c | 2 +- trunk/net/ipv4/raw.c | 36 +- trunk/net/ipv4/route.c | 94 +- trunk/net/ipv4/syncookies.c | 1 - trunk/net/ipv4/sysctl_net_ipv4.c | 14 + trunk/net/ipv4/tcp_input.c | 46 +- trunk/net/ipv4/tcp_ipv4.c | 11 +- trunk/net/ipv4/tcp_minisocks.c | 6 +- trunk/net/ipv4/udp.c | 2 - trunk/net/ipv4/xfrm4_policy.c | 2 +- trunk/net/ipv6/addrconf.c | 55 +- trunk/net/ipv6/addrlabel.c | 9 +- trunk/net/ipv6/ip6_fib.c | 5 +- trunk/net/ipv6/ip6_output.c | 58 +- trunk/net/ipv6/ip6mr.c | 3 +- trunk/net/ipv6/ndisc.c | 16 +- trunk/net/ipv6/raw.c | 145 +- trunk/net/ipv6/route.c | 85 +- trunk/net/ipv6/sit.c | 4 +- trunk/net/ipv6/syncookies.c | 1 - trunk/net/ipv6/tcp_ipv6.c | 5 - trunk/net/ipv6/udp.c | 2 +- trunk/net/irda/af_irda.c | 4 +- trunk/net/irda/ircomm/ircomm_tty_attach.c | 2 +- trunk/net/irda/irda_device.c | 2 +- trunk/net/irda/iriap.c | 8 +- trunk/net/irda/irlan/irlan_client.c | 10 +- trunk/net/irda/irlan/irlan_common.c | 10 +- trunk/net/irda/irlan/irlan_eth.c | 2 +- trunk/net/irda/irlan/irlan_provider.c | 10 +- trunk/net/irda/irqueue.c | 4 +- trunk/net/irda/irttp.c | 18 +- trunk/net/key/af_key.c | 20 +- trunk/net/l2tp/l2tp_ip.c | 19 +- trunk/net/lapb/lapb_iface.c | 30 +- trunk/net/lapb/lapb_in.c | 881 +-- trunk/net/mac80211/aes_ccm.c | 37 +- trunk/net/mac80211/aes_ccm.h | 2 + trunk/net/mac80211/aes_cmac.c | 10 +- trunk/net/mac80211/aes_cmac.h | 2 +- trunk/net/mac80211/agg-rx.c | 21 +- trunk/net/mac80211/cfg.c | 62 +- trunk/net/mac80211/debugfs_key.c | 13 +- trunk/net/mac80211/driver-ops.h | 28 - trunk/net/mac80211/driver-trace.h | 101 - trunk/net/mac80211/ht.c | 6 - trunk/net/mac80211/ieee80211_i.h | 36 +- trunk/net/mac80211/iface.c | 7 +- trunk/net/mac80211/key.c | 171 +- trunk/net/mac80211/key.h | 32 +- trunk/net/mac80211/mesh_pathtbl.c | 4 +- trunk/net/mac80211/mlme.c | 111 +- trunk/net/mac80211/pm.c | 51 +- trunk/net/mac80211/rc80211_minstrel.c | 9 - trunk/net/mac80211/rc80211_minstrel.h | 12 - trunk/net/mac80211/rc80211_minstrel_ht.c | 7 - trunk/net/mac80211/rx.c | 38 +- trunk/net/mac80211/scan.c | 45 +- trunk/net/mac80211/sta_info.h | 6 +- trunk/net/mac80211/tkip.c | 108 +- trunk/net/mac80211/tkip.h | 8 +- trunk/net/mac80211/tx.c | 17 +- trunk/net/mac80211/util.c | 90 +- trunk/net/mac80211/wme.c | 3 +- trunk/net/mac80211/wme.h | 5 + trunk/net/mac80211/work.c | 2 +- trunk/net/mac80211/wpa.c | 94 +- trunk/net/netfilter/ipset/Kconfig | 10 - trunk/net/netfilter/ipset/Makefile | 1 - trunk/net/netfilter/ipset/ip_set_bitmap_ip.c | 35 +- .../net/netfilter/ipset/ip_set_bitmap_ipmac.c | 38 +- .../net/netfilter/ipset/ip_set_bitmap_port.c | 31 +- trunk/net/netfilter/ipset/ip_set_core.c | 166 +- trunk/net/netfilter/ipset/ip_set_hash_ip.c | 49 +- .../net/netfilter/ipset/ip_set_hash_ipport.c | 69 +- .../netfilter/ipset/ip_set_hash_ipportip.c | 73 +- .../netfilter/ipset/ip_set_hash_ipportnet.c | 137 +- trunk/net/netfilter/ipset/ip_set_hash_net.c | 88 +- .../netfilter/ipset/ip_set_hash_netiface.c | 786 -- .../net/netfilter/ipset/ip_set_hash_netport.c | 119 +- trunk/net/netfilter/ipset/ip_set_list_set.c | 106 +- trunk/net/netfilter/ipset/pfxlen.c | 23 +- trunk/net/netfilter/ipvs/ip_vs_app.c | 14 +- trunk/net/netfilter/ipvs/ip_vs_conn.c | 4 +- trunk/net/netfilter/ipvs/ip_vs_core.c | 78 +- trunk/net/netfilter/ipvs/ip_vs_ctl.c | 28 +- trunk/net/netfilter/ipvs/ip_vs_est.c | 13 +- trunk/net/netfilter/ipvs/ip_vs_ftp.c | 52 +- trunk/net/netfilter/ipvs/ip_vs_proto.c | 4 +- trunk/net/netfilter/ipvs/ip_vs_sync.c | 13 +- trunk/net/netfilter/nf_conntrack_netlink.c | 4 +- trunk/net/netfilter/nfnetlink.c | 40 +- trunk/net/netfilter/nfnetlink_queue.c | 170 +- trunk/net/netfilter/xt_AUDIT.c | 5 - trunk/net/netfilter/xt_CT.c | 11 +- trunk/net/netfilter/xt_HL.c | 64 +- trunk/net/netfilter/xt_hl.c | 32 +- trunk/net/netfilter/xt_set.c | 153 +- trunk/net/netlabel/netlabel_unlabeled.c | 10 +- trunk/net/netlink/af_netlink.c | 20 +- trunk/net/netlink/genetlink.c | 2 +- trunk/net/netrom/nr_route.c | 22 +- trunk/net/nfc/Kconfig | 16 - trunk/net/nfc/Makefile | 7 - trunk/net/nfc/af_nfc.c | 98 - trunk/net/nfc/core.c | 468 -- trunk/net/nfc/netlink.c | 537 -- trunk/net/nfc/nfc.h | 117 - trunk/net/nfc/rawsock.c | 354 - trunk/net/packet/af_packet.c | 438 +- trunk/net/phonet/pn_netlink.c | 13 +- trunk/net/rds/bind.c | 4 +- trunk/net/rds/ib.h | 1 - trunk/net/rds/ib_cm.c | 6 +- trunk/net/rds/ib_send.c | 4 +- trunk/net/rds/iw.h | 1 - trunk/net/rds/iw_cm.c | 9 +- trunk/net/rds/iw_rdma.c | 9 +- trunk/net/rds/iw_send.c | 4 +- trunk/net/rds/send.c | 7 +- trunk/net/rds/tcp_stats.c | 2 +- trunk/net/rose/rose_link.c | 7 + trunk/net/rose/rose_route.c | 5 + trunk/net/sched/act_api.c | 11 +- trunk/net/sched/act_csum.c | 2 +- trunk/net/sched/act_gact.c | 3 +- trunk/net/sched/act_ipt.c | 2 +- trunk/net/sched/act_mirred.c | 2 +- trunk/net/sched/act_nat.c | 2 +- trunk/net/sched/act_pedit.c | 2 +- trunk/net/sched/act_police.c | 2 +- trunk/net/sched/act_simple.c | 3 +- trunk/net/sched/act_skbedit.c | 2 +- trunk/net/sched/cls_api.c | 12 +- trunk/net/sched/cls_basic.c | 2 +- trunk/net/sched/cls_cgroup.c | 2 +- trunk/net/sched/cls_flow.c | 6 +- trunk/net/sched/cls_fw.c | 2 +- trunk/net/sched/cls_route.c | 2 +- trunk/net/sched/cls_rsvp.h | 4 +- trunk/net/sched/cls_tcindex.c | 2 +- trunk/net/sched/cls_u32.c | 2 +- trunk/net/sched/em_meta.c | 7 + trunk/net/sched/sch_api.c | 18 +- trunk/net/sched/sch_atm.c | 1 - trunk/net/sched/sch_choke.c | 2 +- trunk/net/sched/sch_generic.c | 10 +- trunk/net/sched/sch_netem.c | 1 - trunk/net/sched/sch_sfq.c | 2 +- trunk/net/sched/sch_teql.c | 4 +- trunk/net/sctp/associola.c | 6 - trunk/net/sctp/bind_addr.c | 17 +- trunk/net/sctp/input.c | 3 +- trunk/net/sctp/ipv6.c | 2 - trunk/net/sctp/output.c | 19 +- trunk/net/sctp/outqueue.c | 13 - trunk/net/sctp/protocol.c | 152 +- trunk/net/sctp/sm_make_chunk.c | 55 +- trunk/net/sctp/sm_sideeffect.c | 2 +- trunk/net/sctp/sm_statefuns.c | 51 +- trunk/net/sctp/socket.c | 200 +- trunk/net/sctp/sysctl.c | 7 - trunk/net/sunrpc/auth.c | 2 +- trunk/net/sunrpc/auth_gss/auth_gss.c | 46 +- trunk/net/sunrpc/clnt.c | 25 +- trunk/net/sunrpc/rpc_pipe.c | 14 +- .../net/sunrpc/xprtrdma/svc_rdma_transport.c | 1 - trunk/net/sunrpc/xprtrdma/verbs.c | 1 - trunk/net/tipc/bcast.c | 6 +- trunk/net/tipc/bearer.c | 1 + trunk/net/tipc/bearer.h | 2 + trunk/net/tipc/core.h | 6 + trunk/net/tipc/link.c | 6 +- trunk/net/tipc/msg.c | 6 +- trunk/net/tipc/msg.h | 34 +- trunk/net/tipc/name_distr.c | 6 +- trunk/net/tipc/name_table.c | 289 +- trunk/net/tipc/name_table.h | 14 +- trunk/net/tipc/port.c | 284 +- trunk/net/tipc/socket.c | 3 + trunk/net/wireless/mlme.c | 15 +- trunk/net/wireless/nl80211.c | 232 +- trunk/net/wireless/nl80211.h | 4 - trunk/net/wireless/scan.c | 7 +- trunk/net/x25/af_x25.c | 471 +- trunk/net/x25/x25_dev.c | 44 +- trunk/net/x25/x25_in.c | 118 +- trunk/net/x25/x25_link.c | 87 +- trunk/net/x25/x25_subr.c | 78 +- trunk/net/xfrm/xfrm_policy.c | 9 +- trunk/net/xfrm/xfrm_user.c | 3 +- trunk/security/apparmor/domain.c | 2 +- trunk/security/apparmor/lib.c | 1 - trunk/security/selinux/hooks.c | 4 +- trunk/sound/soc/codecs/wm8994.c | 9 +- trunk/sound/soc/ep93xx/ep93xx-ac97.c | 4 +- trunk/sound/soc/ep93xx/ep93xx-i2s.c | 4 +- trunk/sound/soc/ep93xx/ep93xx-pcm.c | 137 +- trunk/sound/soc/sh/fsi-ak4642.c | 16 +- trunk/sound/soc/sh/fsi-da7210.c | 2 +- trunk/sound/soc/sh/fsi-hdmi.c | 4 +- 2026 files changed, 59047 insertions(+), 124309 deletions(-) delete mode 100644 trunk/Documentation/ABI/stable/firewire-cdev delete mode 100644 trunk/Documentation/ABI/stable/sysfs-bus-firewire delete mode 100644 trunk/Documentation/ABI/testing/sysfs-driver-hid-wiimote delete mode 100644 trunk/Documentation/devicetree/bindings/arm/primecell.txt delete mode 100644 trunk/Documentation/devicetree/bindings/gpio/fsl-imx-gpio.txt delete mode 100644 trunk/Documentation/devicetree/bindings/gpio/gpio_nvidia.txt rename trunk/Documentation/devicetree/bindings/{crypto/fsl-sec2.txt => powerpc/fsl/sec.txt} (98%) delete mode 100644 trunk/Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt delete mode 100644 trunk/Documentation/devicetree/bindings/spi/spi_nvidia.txt delete mode 100644 trunk/Documentation/devicetree/bindings/tty/serial/of-serial.txt delete mode 100644 trunk/Documentation/mmc/mmc-async-req.txt delete mode 100644 trunk/Documentation/networking/netdev-features.txt delete mode 100644 trunk/Documentation/networking/nfc.txt rename trunk/{drivers/mmc/host => arch/arm/mach-at91/include/mach}/at91_mci.h (99%) create mode 100644 trunk/arch/arm/mach-ep93xx/dma-m2p.c delete mode 100644 trunk/arch/arm/mach-ep93xx/dma.c rename trunk/{drivers/gpio/gpio-ep93xx.c => arch/arm/mach-ep93xx/gpio.c} (69%) delete mode 100644 trunk/arch/arm/mach-mxs/devices/platform-gpio-mxs.c create mode 100644 trunk/arch/arm/mach-mxs/gpio.c create mode 100644 trunk/arch/arm/mach-mxs/gpio.h create mode 100644 trunk/arch/arm/mach-s3c2410/include/mach/spi-gpio.h rename trunk/{drivers/gpio/gpio-tegra.c => arch/arm/mach-tegra/gpio.c} (97%) delete mode 100644 trunk/arch/arm/plat-mxc/devices/platform-gpio-mxc.c create mode 100644 trunk/arch/arm/plat-mxc/gpio.c create mode 100644 trunk/arch/arm/plat-pxa/include/plat/sdhci.h create mode 100644 trunk/arch/microblaze/pci/pci_32.c delete mode 100644 trunk/arch/powerpc/net/Makefile delete mode 100644 trunk/arch/powerpc/net/bpf_jit.h delete mode 100644 trunk/arch/powerpc/net/bpf_jit_64.S delete mode 100644 trunk/arch/powerpc/net/bpf_jit_comp.c rename trunk/{drivers/gpio/gpio-mpc5200.c => arch/powerpc/platforms/52xx/mpc52xx_gpio.c} (98%) delete mode 100644 trunk/arch/x86/xen/vga.c delete mode 100644 trunk/drivers/bcma/driver_pci_host.c delete mode 100644 trunk/drivers/bcma/sprom.c delete mode 100644 trunk/drivers/dma/ep93xx_dma.c rename trunk/drivers/gpio/{gpio-74x164.c => 74x164.c} (88%) rename trunk/drivers/gpio/{gpio-ab8500.c => ab8500-gpio.c} (100%) rename trunk/drivers/gpio/{gpio-adp5520.c => adp5520-gpio.c} (100%) rename trunk/drivers/gpio/{gpio-adp5588.c => adp5588-gpio.c} (100%) rename trunk/drivers/gpio/{gpio-generic.c => basic_mmio_gpio.c} (99%) rename trunk/drivers/gpio/{gpio-bt8xx.c => bt8xxgpio.c} (100%) rename trunk/drivers/gpio/{gpio-cs5535.c => cs5535-gpio.c} (100%) delete mode 100644 trunk/drivers/gpio/gpio-da9052.c delete mode 100644 trunk/drivers/gpio/gpio-mxc.c delete mode 100644 trunk/drivers/gpio/gpio-mxs.c rename trunk/drivers/gpio/{gpio-it8761e.c => it8761e_gpio.c} (98%) rename trunk/drivers/gpio/{gpio-janz-ttl.c => janz-ttl.c} (100%) rename trunk/drivers/gpio/{gpio-langwell.c => langwell_gpio.c} (99%) rename trunk/drivers/gpio/{gpio-max7300.c => max7300.c} (98%) rename trunk/drivers/gpio/{gpio-max7301.c => max7301.c} (98%) rename trunk/drivers/gpio/{gpio-max730x.c => max730x.c} (99%) rename trunk/drivers/gpio/{gpio-max732x.c => max732x.c} (99%) rename trunk/drivers/gpio/{gpio-mc33880.c => mc33880.c} (98%) rename trunk/drivers/gpio/{gpio-mcp23s08.c => mcp23s08.c} (68%) rename trunk/drivers/gpio/{gpio-ml-ioh.c => ml_ioh_gpio.c} (99%) rename trunk/drivers/gpio/{gpio-pca953x.c => pca953x.c} (89%) rename trunk/drivers/gpio/{gpio-pcf857x.c => pcf857x.c} (99%) rename trunk/drivers/gpio/{gpio-pch.c => pch_gpio.c} (100%) rename trunk/drivers/gpio/{gpio-pl061.c => pl061.c} (99%) rename trunk/drivers/gpio/{gpio-rdc321x.c => rdc321x-gpio.c} (100%) rename trunk/drivers/gpio/{gpio-sch.c => sch_gpio.c} (99%) rename trunk/drivers/gpio/{gpio-stmpe.c => stmpe-gpio.c} (100%) rename trunk/drivers/gpio/{gpio-sx150x.c => sx150x.c} (100%) rename trunk/drivers/gpio/{gpio-tc3589x.c => tc3589x-gpio.c} (100%) rename trunk/drivers/gpio/{gpio-timberdale.c => timbgpio.c} (99%) rename trunk/drivers/gpio/{gpio-tps65910.c => tps65910-gpio.c} (98%) rename trunk/drivers/gpio/{gpio-twl4030.c => twl4030-gpio.c} (99%) rename trunk/drivers/gpio/{gpio-ucb1400.c => ucb1400_gpio.c} (100%) rename trunk/drivers/gpio/{gpio-vr41xx.c => vr41xx_giu.c} (99%) rename trunk/drivers/gpio/{gpio-vx855.c => vx855_gpio.c} (100%) rename trunk/drivers/gpio/{gpio-wm831x.c => wm831x-gpio.c} (99%) rename trunk/drivers/gpio/{gpio-wm8350.c => wm8350-gpiolib.c} (98%) rename trunk/drivers/gpio/{gpio-wm8994.c => wm8994-gpio.c} (99%) rename trunk/drivers/gpio/{gpio-xilinx.c => xilinx_gpio.c} (100%) delete mode 100644 trunk/drivers/hid/hid-holtekff.c delete mode 100644 trunk/drivers/hid/hid-speedlink.c delete mode 100644 trunk/drivers/hid/hid-wiimote.c create mode 100644 trunk/drivers/mmc/host/sdhci-of-core.c create mode 100644 trunk/drivers/mmc/host/sdhci-of.h create mode 100644 trunk/drivers/mmc/host/sdhci-pxa.c delete mode 100644 trunk/drivers/mmc/host/sdhci-pxav2.c delete mode 100644 trunk/drivers/mmc/host/sdhci-pxav3.c delete mode 100644 trunk/drivers/net/bnx2x/bnx2x_sp.c delete mode 100644 trunk/drivers/net/bnx2x/bnx2x_sp.h delete mode 100644 trunk/drivers/net/caif/caif_hsi.c delete mode 100644 trunk/drivers/net/ftgmac100.c delete mode 100644 trunk/drivers/net/ftgmac100.h create mode 100644 trunk/drivers/net/myri_sbus.c create mode 100644 trunk/drivers/net/myri_sbus.h delete mode 100644 trunk/drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h delete mode 100644 trunk/drivers/net/wireless/ath/ath9k/ar9330_1p2_initvals.h delete mode 100644 trunk/drivers/net/wireless/b43/bus.c delete mode 100644 trunk/drivers/net/wireless/b43/bus.h delete mode 100644 trunk/drivers/net/wireless/b43/phy_ht.c delete mode 100644 trunk/drivers/net/wireless/b43/phy_ht.h delete mode 100644 trunk/drivers/net/wireless/b43/phy_lcn.c delete mode 100644 trunk/drivers/net/wireless/b43/phy_lcn.h delete mode 100644 trunk/drivers/net/wireless/b43/radio_2059.c delete mode 100644 trunk/drivers/net/wireless/b43/radio_2059.h delete mode 100644 trunk/drivers/net/wireless/b43/tables_phy_ht.c delete mode 100644 trunk/drivers/net/wireless/b43/tables_phy_ht.h delete mode 100644 trunk/drivers/net/wireless/b43/tables_phy_lcn.c delete mode 100644 trunk/drivers/net/wireless/b43/tables_phy_lcn.h delete mode 100644 trunk/drivers/net/wireless/iwlwifi/iwl-pci.c delete mode 100644 trunk/drivers/net/wireless/iwlwifi/iwl-pci.h delete mode 100644 trunk/drivers/net/wireless/iwlwifi/iwl-trans.c delete mode 100644 trunk/drivers/net/wireless/iwlwifi/iwl-trans.h delete mode 100644 trunk/drivers/net/wireless/mac80211_hwsim.h delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/Makefile delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/def.h delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/dm.c delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/dm.h delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/fw.c delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/fw.h delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/hw.c delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/hw.h delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/led.c delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/led.h delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/phy.c delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/phy.h delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/reg.h delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/rf.c delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/rf.h delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/sw.c delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/sw.h delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/table.c delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/table.h delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/trx.c delete mode 100644 trunk/drivers/net/wireless/rtlwifi/rtl8192de/trx.h delete mode 100644 trunk/drivers/nfc/pn533.c delete mode 100644 trunk/drivers/of/of_pci_irq.c delete mode 100644 trunk/drivers/pci/of.c rename trunk/drivers/spi/{spi-pl022.c => amba-pl022.c} (96%) rename trunk/drivers/spi/{spi-ath79.c => ath79_spi.c} (99%) rename trunk/drivers/spi/{spi-atmel.c => atmel_spi.c} (85%) create mode 100644 trunk/drivers/spi/atmel_spi.h rename trunk/drivers/spi/{spi-au1550.c => au1550_spi.c} (99%) rename trunk/drivers/spi/{spi-coldfire-qspi.c => coldfire_qspi.c} (100%) rename trunk/drivers/spi/{spi-davinci.c => davinci_spi.c} (100%) rename trunk/drivers/spi/{spi-dw.c => dw_spi.c} (99%) rename trunk/drivers/spi/{spi-dw.h => dw_spi.h} (99%) rename trunk/drivers/spi/{spi-dw-mid.c => dw_spi_mid.c} (98%) rename trunk/drivers/spi/{spi-dw-mmio.c => dw_spi_mmio.c} (97%) rename trunk/drivers/spi/{spi-dw-pci.c => dw_spi_pci.c} (98%) rename trunk/drivers/spi/{spi-ep93xx.c => ep93xx_spi.c} (77%) rename trunk/drivers/spi/{spi-mpc512x-psc.c => mpc512x_psc_spi.c} (100%) rename trunk/drivers/spi/{spi-mpc52xx-psc.c => mpc52xx_psc_spi.c} (100%) rename trunk/drivers/spi/{spi-mpc52xx.c => mpc52xx_spi.c} (100%) rename trunk/drivers/spi/{spi-omap2-mcspi.c => omap2_mcspi.c} (99%) rename trunk/drivers/spi/{spi-omap-100k.c => omap_spi_100k.c} (100%) rename trunk/drivers/spi/{spi-omap-uwire.c => omap_uwire.c} (99%) rename trunk/drivers/spi/{spi-orion.c => orion_spi.c} (98%) rename trunk/drivers/spi/{spi-pxa2xx.c => pxa2xx_spi.c} (100%) rename trunk/drivers/spi/{spi-pxa2xx-pci.c => pxa2xx_spi_pci.c} (100%) rename trunk/drivers/spi/{spi-altera.c => spi_altera.c} (100%) rename trunk/drivers/spi/{spi-bfin5xx.c => spi_bfin5xx.c} (88%) rename trunk/drivers/spi/{spi-bfin-sport.c => spi_bfin_sport.c} (100%) rename trunk/drivers/spi/{spi-bitbang.c => spi_bitbang.c} (98%) rename trunk/drivers/spi/{spi-bitbang-txrx.h => spi_bitbang_txrx.h} (100%) rename trunk/drivers/spi/{spi-butterfly.c => spi_butterfly.c} (99%) rename trunk/drivers/spi/{spi-fsl-espi.c => spi_fsl_espi.c} (99%) rename trunk/drivers/spi/{spi-fsl-lib.c => spi_fsl_lib.c} (99%) rename trunk/drivers/spi/{spi-fsl-lib.h => spi_fsl_lib.h} (100%) rename trunk/drivers/spi/{spi-fsl-spi.c => spi_fsl_spi.c} (98%) rename trunk/drivers/spi/{spi-gpio.c => spi_gpio.c} (99%) rename trunk/drivers/spi/{spi-imx.c => spi_imx.c} (66%) rename trunk/drivers/spi/{spi-lm70llp.c => spi_lm70llp.c} (98%) rename trunk/drivers/spi/{spi-nuc900.c => spi_nuc900.c} (99%) rename trunk/drivers/spi/{spi-oc-tiny.c => spi_oc_tiny.c} (100%) rename trunk/drivers/spi/{spi-ppc4xx.c => spi_ppc4xx.c} (99%) rename trunk/drivers/spi/{spi-s3c24xx.c => spi_s3c24xx.c} (99%) rename trunk/drivers/spi/{spi-s3c24xx-fiq.S => spi_s3c24xx_fiq.S} (99%) rename trunk/drivers/spi/{spi-s3c24xx-fiq.h => spi_s3c24xx_fiq.h} (100%) create mode 100644 trunk/drivers/spi/spi_s3c24xx_gpio.c rename trunk/drivers/spi/{spi-s3c64xx.c => spi_s3c64xx.c} (99%) rename trunk/drivers/spi/{spi-sh.c => spi_sh.c} (100%) rename trunk/drivers/spi/{spi-sh-msiof.c => spi_sh_msiof.c} (100%) rename trunk/drivers/spi/{spi-sh-sci.c => spi_sh_sci.c} (99%) rename trunk/drivers/spi/{spi-stmp.c => spi_stmp.c} (100%) rename trunk/drivers/spi/{spi-tegra.c => spi_tegra.c} (96%) rename trunk/drivers/spi/{spi-topcliff-pch.c => spi_topcliff_pch.c} (53%) rename trunk/drivers/spi/{spi-txx9.c => spi_txx9.c} (99%) rename trunk/drivers/spi/{spi-ti-ssp.c => ti-ssp-spi.c} (100%) rename trunk/drivers/spi/{spi-tle62x0.c => tle62x0.c} (99%) rename trunk/drivers/spi/{spi-xilinx.c => xilinx_spi.c} (100%) delete mode 100644 trunk/drivers/xen/xen-pciback/Makefile delete mode 100644 trunk/drivers/xen/xen-pciback/conf_space.c delete mode 100644 trunk/drivers/xen/xen-pciback/conf_space.h delete mode 100644 trunk/drivers/xen/xen-pciback/conf_space_capability.c delete mode 100644 trunk/drivers/xen/xen-pciback/conf_space_header.c delete mode 100644 trunk/drivers/xen/xen-pciback/conf_space_quirks.c delete mode 100644 trunk/drivers/xen/xen-pciback/conf_space_quirks.h delete mode 100644 trunk/drivers/xen/xen-pciback/passthrough.c delete mode 100644 trunk/drivers/xen/xen-pciback/pci_stub.c delete mode 100644 trunk/drivers/xen/xen-pciback/pciback.h delete mode 100644 trunk/drivers/xen/xen-pciback/pciback_ops.c delete mode 100644 trunk/drivers/xen/xen-pciback/vpci.c delete mode 100644 trunk/drivers/xen/xen-pciback/xenbus.c delete mode 100644 trunk/drivers/xen/xen-selfballoon.c create mode 100644 trunk/fs/xfs/xfs_arch.h create mode 100644 trunk/fs/xfs/xfs_btree_trace.c create mode 100644 trunk/fs/xfs/xfs_btree_trace.h create mode 100644 trunk/fs/xfs/xfs_dir2_block.h create mode 100644 trunk/fs/xfs/xfs_dir2_data.h delete mode 100644 trunk/fs/xfs/xfs_dir2_format.h create mode 100644 trunk/fs/xfs/xfs_dir2_leaf.h create mode 100644 trunk/fs/xfs/xfs_dir2_node.h delete mode 100644 trunk/fs/xfs/xfs_dir2_priv.h create mode 100644 trunk/fs/xfs/xfs_dir2_sf.h delete mode 100644 trunk/include/linux/cordic.h delete mode 100644 trunk/include/linux/crc8.h delete mode 100644 trunk/include/linux/dma-direction.h create mode 100644 trunk/include/linux/mmc/sdhci-pltfm.h delete mode 100644 trunk/include/linux/nfc.h delete mode 100644 trunk/include/linux/platform_data/pxa_sdhci.h delete mode 100644 trunk/include/net/caif/caif_hsi.h delete mode 100644 trunk/include/net/nfc.h delete mode 100644 trunk/include/rdma/ib_pma.h delete mode 100644 trunk/include/trace/events/sock.h delete mode 100644 trunk/include/trace/events/udp.h delete mode 100644 trunk/include/xen/tmem.h delete mode 100644 trunk/lib/cordic.c delete mode 100644 trunk/lib/crc8.c create mode 100644 trunk/net/TUNABLE delete mode 100644 trunk/net/bluetooth/smp.c delete mode 100644 trunk/net/netfilter/ipset/ip_set_hash_netiface.c delete mode 100644 trunk/net/nfc/Kconfig delete mode 100644 trunk/net/nfc/Makefile delete mode 100644 trunk/net/nfc/af_nfc.c delete mode 100644 trunk/net/nfc/core.c delete mode 100644 trunk/net/nfc/netlink.c delete mode 100644 trunk/net/nfc/nfc.h delete mode 100644 trunk/net/nfc/rawsock.c diff --git a/[refs] b/[refs] index 7ffc7262ed11..f611088cf8b3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 72f96e0e38d7e29ba16dcfd824ecaebe38b8293e +refs/heads/master: 99f381d3549432a250fe846a2a82d61a032804b0 diff --git a/trunk/Documentation/ABI/stable/firewire-cdev b/trunk/Documentation/ABI/stable/firewire-cdev deleted file mode 100644 index 16d030827368..000000000000 --- a/trunk/Documentation/ABI/stable/firewire-cdev +++ /dev/null @@ -1,103 +0,0 @@ -What: /dev/fw[0-9]+ -Date: May 2007 -KernelVersion: 2.6.22 -Contact: linux1394-devel@lists.sourceforge.net -Description: - The character device files /dev/fw* are the interface between - firewire-core and IEEE 1394 device drivers implemented in - userspace. The ioctl(2)- and read(2)-based ABI is defined and - documented in . - - This ABI offers most of the features which firewire-core also - exposes to kernelspace IEEE 1394 drivers. - - Each /dev/fw* is associated with one IEEE 1394 node, which can - be remote or local nodes. Operations on a /dev/fw* file have - different scope: - - The 1394 node which is associated with the file: - - Asynchronous request transmission - - Get the Configuration ROM - - Query node ID - - Query maximum speed of the path between this node - and local node - - The 1394 bus (i.e. "card") to which the node is attached to: - - Isochronous stream transmission and reception - - Asynchronous stream transmission and reception - - Asynchronous broadcast request transmission - - PHY packet transmission and reception - - Allocate, reallocate, deallocate isochronous - resources (channels, bandwidth) at the bus's IRM - - Query node IDs of local node, root node, IRM, bus - manager - - Query cycle time - - Bus reset initiation, bus reset event reception - - All 1394 buses: - - Allocation of IEEE 1212 address ranges on the local - link layers, reception of inbound requests to such - an address range, asynchronous response transmission - to inbound requests - - Addition of descriptors or directories to the local - nodes' Configuration ROM - - Due to the different scope of operations and in order to let - userland implement different access permission models, some - operations are restricted to /dev/fw* files that are associated - with a local node: - - Addition of descriptors or directories to the local - nodes' Configuration ROM - - PHY packet transmission and reception - - A /dev/fw* file remains associated with one particular node - during its entire life time. Bus topology changes, and hence - node ID changes, are tracked by firewire-core. ABI users do not - need to be aware of topology. - - The following file operations are supported: - - open(2) - Currently the only useful flags are O_RDWR. - - ioctl(2) - Initiate various actions. Some take immediate effect, others - are performed asynchronously while or after the ioctl returns. - See the inline documentation in for - descriptions of all ioctls. - - poll(2), select(2), epoll_wait(2) etc. - Watch for events to become available to be read. - - read(2) - Receive various events. There are solicited events like - outbound asynchronous transaction completion or isochronous - buffer completion, and unsolicited events such as bus resets, - request reception, or PHY packet reception. Always use a read - buffer which is large enough to receive the largest event that - could ever arrive. See for descriptions - of all event types and for which ioctls affect reception of - events. - - mmap(2) - Allocate a DMA buffer for isochronous reception or transmission - and map it into the process address space. The arguments should - be used as follows: addr = NULL, length = the desired buffer - size, i.e. number of packets times size of largest packet, - prot = at least PROT_READ for reception and at least PROT_WRITE - for transmission, flags = MAP_SHARED, fd = the handle to the - /dev/fw*, offset = 0. - - Isochronous reception works in packet-per-buffer fashion except - for multichannel reception which works in buffer-fill mode. - - munmap(2) - Unmap the isochronous I/O buffer from the process address space. - - close(2) - Besides stopping and freeing I/O contexts that were associated - with the file descriptor, back out any changes to the local - nodes' Configuration ROM. Deallocate isochronous channels and - bandwidth at the IRM that were marked for kernel-assisted - re- and deallocation. - -Users: libraw1394 - libdc1394 - tools like jujuutils, fwhack, ... diff --git a/trunk/Documentation/ABI/stable/sysfs-bus-firewire b/trunk/Documentation/ABI/stable/sysfs-bus-firewire deleted file mode 100644 index 3d484e5dc846..000000000000 --- a/trunk/Documentation/ABI/stable/sysfs-bus-firewire +++ /dev/null @@ -1,122 +0,0 @@ -What: /sys/bus/firewire/devices/fw[0-9]+/ -Date: May 2007 -KernelVersion: 2.6.22 -Contact: linux1394-devel@lists.sourceforge.net -Description: - IEEE 1394 node device attributes. - Read-only. Mutable during the node device's lifetime. - See IEEE 1212 for semantic definitions. - - config_rom - Contents of the Configuration ROM register. - Binary attribute; an array of host-endian u32. - - guid - The node's EUI-64 in the bus information block of - Configuration ROM. - Hexadecimal string representation of an u64. - - -What: /sys/bus/firewire/devices/fw[0-9]+/units -Date: June 2009 -KernelVersion: 2.6.31 -Contact: linux1394-devel@lists.sourceforge.net -Description: - IEEE 1394 node device attribute. - Read-only. Mutable during the node device's lifetime. - See IEEE 1212 for semantic definitions. - - units - Summary of all units present in an IEEE 1394 node. - Contains space-separated tuples of specifier_id and - version of each unit present in the node. Specifier_id - and version are hexadecimal string representations of - u24 of the respective unit directory entries. - Specifier_id and version within each tuple are separated - by a colon. - -Users: udev rules to set ownership and access permissions or ACLs of - /dev/fw[0-9]+ character device files - - -What: /sys/bus/firewire/devices/fw[0-9]+[.][0-9]+/ -Date: May 2007 -KernelVersion: 2.6.22 -Contact: linux1394-devel@lists.sourceforge.net -Description: - IEEE 1394 unit device attributes. - Read-only. Immutable during the unit device's lifetime. - See IEEE 1212 for semantic definitions. - - modalias - Same as MODALIAS in the uevent at device creation. - - rom_index - Offset of the unit directory within the parent device's - (node device's) Configuration ROM, in quadlets. - Decimal string representation. - - -What: /sys/bus/firewire/devices/*/ -Date: May 2007 -KernelVersion: 2.6.22 -Contact: linux1394-devel@lists.sourceforge.net -Description: - Attributes common to IEEE 1394 node devices and unit devices. - Read-only. Mutable during the node device's lifetime. - Immutable during the unit device's lifetime. - See IEEE 1212 for semantic definitions. - - These attributes are only created if the root directory of an - IEEE 1394 node or the unit directory of an IEEE 1394 unit - actually contains according entries. - - hardware_version - Hexadecimal string representation of an u24. - - hardware_version_name - Contents of a respective textual descriptor leaf. - - model - Hexadecimal string representation of an u24. - - model_name - Contents of a respective textual descriptor leaf. - - specifier_id - Hexadecimal string representation of an u24. - Mandatory in unit directories according to IEEE 1212. - - vendor - Hexadecimal string representation of an u24. - Mandatory in the root directory according to IEEE 1212. - - vendor_name - Contents of a respective textual descriptor leaf. - - version - Hexadecimal string representation of an u24. - Mandatory in unit directories according to IEEE 1212. - - -What: /sys/bus/firewire/drivers/sbp2/fw*/host*/target*/*:*:*:*/ieee1394_id - formerly - /sys/bus/ieee1394/drivers/sbp2/fw*/host*/target*/*:*:*:*/ieee1394_id -Date: Feb 2004 -KernelVersion: 2.6.4 -Contact: linux1394-devel@lists.sourceforge.net -Description: - SCSI target port identifier and logical unit identifier of a - logical unit of an SBP-2 target. The identifiers are specified - in SAM-2...SAM-4 annex A. They are persistent and world-wide - unique properties the SBP-2 attached target. - - Read-only attribute, immutable during the target's lifetime. - Format, as exposed by firewire-sbp2 since 2.6.22, May 2007: - Colon-separated hexadecimal string representations of - u64 EUI-64 : u24 directory_ID : u16 LUN - without 0x prefixes, without whitespace. The former sbp2 driver - (removed in 2.6.37 after being superseded by firewire-sbp2) used - a somewhat shorter format which was not as close to SAM. - -Users: udev rules to create /dev/disk/by-id/ symlinks diff --git a/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus b/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus index 65e6e5dd67e8..c1b53b8bc2ae 100644 --- a/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus +++ b/trunk/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus @@ -92,14 +92,6 @@ Description: The mouse has a tracking- and a distance-control-unit. These This file is writeonly. Users: http://roccat.sourceforge.net -What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/talk -Date: May 2011 -Contact: Stefan Achatz -Description: Used to active some easy* functions of the mouse from outside. - The data has to be 16 bytes long. - This file is writeonly. -Users: http://roccat.sourceforge.net - What: /sys/bus/usb/devices/-:./::./koneplus/roccatkoneplus/tcu Date: October 2010 Contact: Stefan Achatz diff --git a/trunk/Documentation/ABI/testing/sysfs-driver-hid-wiimote b/trunk/Documentation/ABI/testing/sysfs-driver-hid-wiimote deleted file mode 100644 index 5d5a16ea57c6..000000000000 --- a/trunk/Documentation/ABI/testing/sysfs-driver-hid-wiimote +++ /dev/null @@ -1,10 +0,0 @@ -What: /sys/bus/hid/drivers/wiimote//led1 -What: /sys/bus/hid/drivers/wiimote//led2 -What: /sys/bus/hid/drivers/wiimote//led3 -What: /sys/bus/hid/drivers/wiimote//led4 -Date: July 2011 -KernelVersion: 3.1 -Contact: David Herrmann -Description: Make it possible to set/get current led state. Reading from it - returns 0 if led is off and 1 if it is on. Writing 0 to it - disables the led, writing 1 enables it. diff --git a/trunk/Documentation/DocBook/80211.tmpl b/trunk/Documentation/DocBook/80211.tmpl index 445289cd0e65..8906648f962b 100644 --- a/trunk/Documentation/DocBook/80211.tmpl +++ b/trunk/Documentation/DocBook/80211.tmpl @@ -402,9 +402,8 @@ !Finclude/net/mac80211.h set_key_cmd !Finclude/net/mac80211.h ieee80211_key_conf !Finclude/net/mac80211.h ieee80211_key_flags -!Finclude/net/mac80211.h ieee80211_get_tkip_p1k -!Finclude/net/mac80211.h ieee80211_get_tkip_p1k_iv -!Finclude/net/mac80211.h ieee80211_get_tkip_p2k +!Finclude/net/mac80211.h ieee80211_tkip_key_type +!Finclude/net/mac80211.h ieee80211_get_tkip_key !Finclude/net/mac80211.h ieee80211_key_removed diff --git a/trunk/Documentation/devicetree/bindings/arm/primecell.txt b/trunk/Documentation/devicetree/bindings/arm/primecell.txt deleted file mode 100644 index 1d5d7a870ec7..000000000000 --- a/trunk/Documentation/devicetree/bindings/arm/primecell.txt +++ /dev/null @@ -1,21 +0,0 @@ -* ARM Primecell Peripherals - -ARM, Ltd. Primecell peripherals have a standard id register that can be used to -identify the peripheral type, vendor, and revision. This value can be used for -driver matching. - -Required properties: - -- compatible : should be a specific value for peripheral and "arm,primecell" - -Optional properties: - -- arm,primecell-periphid : Value to override the h/w value with - -Example: - -serial@fff36000 { - compatible = "arm,pl011", "arm,primecell"; - arm,primecell-periphid = <0x00341011>; -}; - diff --git a/trunk/Documentation/devicetree/bindings/gpio/fsl-imx-gpio.txt b/trunk/Documentation/devicetree/bindings/gpio/fsl-imx-gpio.txt deleted file mode 100644 index 4363ae4b3c14..000000000000 --- a/trunk/Documentation/devicetree/bindings/gpio/fsl-imx-gpio.txt +++ /dev/null @@ -1,22 +0,0 @@ -* Freescale i.MX/MXC GPIO controller - -Required properties: -- compatible : Should be "fsl,-gpio" -- reg : Address and length of the register set for the device -- interrupts : Should be the port interrupt shared by all 32 pins, if - one number. If two numbers, the first one is the interrupt shared - by low 16 pins and the second one is for high 16 pins. -- gpio-controller : Marks the device node as a gpio controller. -- #gpio-cells : Should be two. The first cell is the pin number and - the second cell is used to specify optional parameters (currently - unused). - -Example: - -gpio0: gpio@73f84000 { - compatible = "fsl,imx51-gpio", "fsl,imx31-gpio"; - reg = <0x73f84000 0x4000>; - interrupts = <50 51>; - gpio-controller; - #gpio-cells = <2>; -}; diff --git a/trunk/Documentation/devicetree/bindings/gpio/gpio.txt b/trunk/Documentation/devicetree/bindings/gpio/gpio.txt index 4e16ba4feab0..edaa84d288a1 100644 --- a/trunk/Documentation/devicetree/bindings/gpio/gpio.txt +++ b/trunk/Documentation/devicetree/bindings/gpio/gpio.txt @@ -4,45 +4,17 @@ Specifying GPIO information for devices 1) gpios property ----------------- -Nodes that makes use of GPIOs should specify them using one or more -properties, each containing a 'gpio-list': +Nodes that makes use of GPIOs should define them using `gpios' property, +format of which is: <&gpio-controller1-phandle gpio1-specifier + &gpio-controller2-phandle gpio2-specifier + 0 /* holes are permitted, means no GPIO 3 */ + &gpio-controller4-phandle gpio4-specifier + ...>; - gpio-list ::= [gpio-list] - single-gpio ::= - gpio-phandle : phandle to gpio controller node - gpio-specifier : Array of #gpio-cells specifying specific gpio - (controller specific) - -GPIO properties should be named "[-]gpios". Exact -meaning of each gpios property must be documented in the device tree -binding for each device. - -For example, the following could be used to describe gpios pins to use -as chip select lines; with chip selects 0, 1 and 3 populated, and chip -select 2 left empty: - - gpio1: gpio1 { - gpio-controller - #gpio-cells = <2>; - }; - gpio2: gpio2 { - gpio-controller - #gpio-cells = <1>; - }; - [...] - chipsel-gpios = <&gpio1 12 0>, - <&gpio1 13 0>, - <0>, /* holes are permitted, means no GPIO 2 */ - <&gpio2 2>; - -Note that gpio-specifier length is controller dependent. In the -above example, &gpio1 uses 2 cells to specify a gpio, while &gpio2 -only uses one. +Note that gpio-specifier length is controller dependent. gpio-specifier may encode: bank, pin position inside the bank, whether pin is open-drain and whether pin is logically inverted. -Exact meaning of each specifier cell is controller specific, and must -be documented in the device tree binding for the device. Example of the node using GPIOs: @@ -56,8 +28,8 @@ and empty GPIO flags as accepted by the "qe_pio_e" gpio-controller. 2) gpio-controller nodes ------------------------ -Every GPIO controller node must both an empty "gpio-controller" -property, and have #gpio-cells contain the size of the gpio-specifier. +Every GPIO controller node must have #gpio-cells property defined, +this information will be used to translate gpio-specifiers. Example of two SOC GPIO banks defined as gpio-controller nodes: diff --git a/trunk/Documentation/devicetree/bindings/gpio/gpio_nvidia.txt b/trunk/Documentation/devicetree/bindings/gpio/gpio_nvidia.txt deleted file mode 100644 index eb4b530d64e1..000000000000 --- a/trunk/Documentation/devicetree/bindings/gpio/gpio_nvidia.txt +++ /dev/null @@ -1,8 +0,0 @@ -NVIDIA Tegra 2 GPIO controller - -Required properties: -- compatible : "nvidia,tegra20-gpio" -- #gpio-cells : Should be two. The first cell is the pin number and the - second cell is used to specify optional parameters: - - bit 0 specifies polarity (0 for normal, 1 for inverted) -- gpio-controller : Marks the device node as a GPIO controller. diff --git a/trunk/Documentation/devicetree/bindings/crypto/fsl-sec2.txt b/trunk/Documentation/devicetree/bindings/powerpc/fsl/sec.txt similarity index 98% rename from trunk/Documentation/devicetree/bindings/crypto/fsl-sec2.txt rename to trunk/Documentation/devicetree/bindings/powerpc/fsl/sec.txt index 38988ef1336b..2b6f2d45c45a 100644 --- a/trunk/Documentation/devicetree/bindings/crypto/fsl-sec2.txt +++ b/trunk/Documentation/devicetree/bindings/powerpc/fsl/sec.txt @@ -1,4 +1,4 @@ -Freescale SoC SEC Security Engines versions 2.x-3.x +Freescale SoC SEC Security Engines Required properties: diff --git a/trunk/Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt b/trunk/Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt deleted file mode 100644 index 9841057d112b..000000000000 --- a/trunk/Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt +++ /dev/null @@ -1,22 +0,0 @@ -* Freescale (Enhanced) Configurable Serial Peripheral Interface - (CSPI/eCSPI) for i.MX - -Required properties: -- compatible : Should be "fsl,-cspi" or "fsl,-ecspi" -- reg : Offset and length of the register set for the device -- interrupts : Should contain CSPI/eCSPI interrupt -- fsl,spi-num-chipselects : Contains the number of the chipselect -- cs-gpios : Specifies the gpio pins to be used for chipselects. - -Example: - -ecspi@70010000 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "fsl,imx51-ecspi"; - reg = <0x70010000 0x4000>; - interrupts = <36>; - fsl,spi-num-chipselects = <2>; - cs-gpios = <&gpio3 24 0>, /* GPIO4_24 */ - <&gpio3 25 0>; /* GPIO4_25 */ -}; diff --git a/trunk/Documentation/devicetree/bindings/spi/spi_nvidia.txt b/trunk/Documentation/devicetree/bindings/spi/spi_nvidia.txt deleted file mode 100644 index 6b9e51896693..000000000000 --- a/trunk/Documentation/devicetree/bindings/spi/spi_nvidia.txt +++ /dev/null @@ -1,5 +0,0 @@ -NVIDIA Tegra 2 SPI device - -Required properties: -- compatible : should be "nvidia,tegra20-spi". -- gpios : should specify GPIOs used for chipselect. diff --git a/trunk/Documentation/devicetree/bindings/tty/serial/of-serial.txt b/trunk/Documentation/devicetree/bindings/tty/serial/of-serial.txt deleted file mode 100644 index b8b27b0aca10..000000000000 --- a/trunk/Documentation/devicetree/bindings/tty/serial/of-serial.txt +++ /dev/null @@ -1,36 +0,0 @@ -* UART (Universal Asynchronous Receiver/Transmitter) - -Required properties: -- compatible : one of: - - "ns8250" - - "ns16450" - - "ns16550a" - - "ns16550" - - "ns16750" - - "ns16850" - - "nvidia,tegra20-uart" - - "ibm,qpace-nwp-serial" - - "serial" if the port type is unknown. -- reg : offset and length of the register set for the device. -- interrupts : should contain uart interrupt. -- clock-frequency : the input clock frequency for the UART. - -Optional properties: -- current-speed : the current active speed of the UART. -- reg-offset : offset to apply to the mapbase from the start of the registers. -- reg-shift : quantity to shift the register offsets by. -- reg-io-width : the size (in bytes) of the IO accesses that should be - performed on the device. There are some systems that require 32-bit - accesses to the UART (e.g. TI davinci). -- used-by-rtas : set to indicate that the port is in use by the OpenFirmware - RTAS and should not be registered. - -Example: - - uart@80230000 { - compatible = "ns8250"; - reg = <0x80230000 0x100>; - clock-frequency = <3686400>; - interrupts = <10>; - reg-shift = <2>; - }; diff --git a/trunk/Documentation/feature-removal-schedule.txt b/trunk/Documentation/feature-removal-schedule.txt index d59e71df5c5c..b1c921c27519 100644 --- a/trunk/Documentation/feature-removal-schedule.txt +++ b/trunk/Documentation/feature-removal-schedule.txt @@ -501,6 +501,16 @@ Who: NeilBrown ---------------------------- +What: cancel_rearming_delayed_work[queue]() +When: 2.6.39 + +Why: The functions have been superceded by cancel_delayed_work_sync() + quite some time ago. The conversion is trivial and there is no + in-kernel user left. +Who: Tejun Heo + +---------------------------- + What: Legacy, non-standard chassis intrusion detection interface. When: June 2011 Why: The adm9240, w83792d and w83793 hardware monitoring drivers have diff --git a/trunk/Documentation/filesystems/nilfs2.txt b/trunk/Documentation/filesystems/nilfs2.txt index 873a2ab2e9f8..d5c0cef38a71 100644 --- a/trunk/Documentation/filesystems/nilfs2.txt +++ b/trunk/Documentation/filesystems/nilfs2.txt @@ -40,6 +40,7 @@ Features which NILFS2 does not support yet: - POSIX ACLs - quotas - fsck + - resize - defragmentation Mount options diff --git a/trunk/Documentation/filesystems/ubifs.txt b/trunk/Documentation/filesystems/ubifs.txt index a0a61d2f389f..8e4fab639d9c 100644 --- a/trunk/Documentation/filesystems/ubifs.txt +++ b/trunk/Documentation/filesystems/ubifs.txt @@ -111,6 +111,34 @@ The following is an example of the kernel boot arguments to attach mtd0 to UBI and mount volume "rootfs": ubi.mtd=0 root=ubi0:rootfs rootfstype=ubifs + +Module Parameters for Debugging +=============================== + +When UBIFS has been compiled with debugging enabled, there are 2 module +parameters that are available to control aspects of testing and debugging. + +debug_chks Selects extra checks that UBIFS can do while running: + + Check Flag value + + General checks 1 + Check Tree Node Cache (TNC) 2 + Check indexing tree size 4 + Check orphan area 8 + Check old indexing tree 16 + Check LEB properties (lprops) 32 + Check leaf nodes and inodes 64 + +debug_tsts Selects a mode of testing, as follows: + + Test mode Flag value + + Failure mode for recovery testing 4 + +For example, set debug_chks to 3 to enable general and TNC checks. + + References ========== diff --git a/trunk/Documentation/mmc/00-INDEX b/trunk/Documentation/mmc/00-INDEX index a9ba6720ffdf..93dd7a714075 100644 --- a/trunk/Documentation/mmc/00-INDEX +++ b/trunk/Documentation/mmc/00-INDEX @@ -4,5 +4,3 @@ mmc-dev-attrs.txt - info on SD and MMC device attributes mmc-dev-parts.txt - info on SD and MMC device partitions -mmc-async-req.txt - - info on mmc asynchronous requests diff --git a/trunk/Documentation/mmc/mmc-async-req.txt b/trunk/Documentation/mmc/mmc-async-req.txt deleted file mode 100644 index ae1907b10e4a..000000000000 --- a/trunk/Documentation/mmc/mmc-async-req.txt +++ /dev/null @@ -1,87 +0,0 @@ -Rationale -========= - -How significant is the cache maintenance overhead? -It depends. Fast eMMC and multiple cache levels with speculative cache -pre-fetch makes the cache overhead relatively significant. If the DMA -preparations for the next request are done in parallel with the current -transfer, the DMA preparation overhead would not affect the MMC performance. -The intention of non-blocking (asynchronous) MMC requests is to minimize the -time between when an MMC request ends and another MMC request begins. -Using mmc_wait_for_req(), the MMC controller is idle while dma_map_sg and -dma_unmap_sg are processing. Using non-blocking MMC requests makes it -possible to prepare the caches for next job in parallel with an active -MMC request. - -MMC block driver -================ - -The mmc_blk_issue_rw_rq() in the MMC block driver is made non-blocking. -The increase in throughput is proportional to the time it takes to -prepare (major part of preparations are dma_map_sg() and dma_unmap_sg()) -a request and how fast the memory is. The faster the MMC/SD is the -more significant the prepare request time becomes. Roughly the expected -performance gain is 5% for large writes and 10% on large reads on a L2 cache -platform. In power save mode, when clocks run on a lower frequency, the DMA -preparation may cost even more. As long as these slower preparations are run -in parallel with the transfer performance won't be affected. - -Details on measurements from IOZone and mmc_test -================================================ - -https://wiki.linaro.org/WorkingGroups/Kernel/Specs/StoragePerfMMC-async-req - -MMC core API extension -====================== - -There is one new public function mmc_start_req(). -It starts a new MMC command request for a host. The function isn't -truly non-blocking. If there is an ongoing async request it waits -for completion of that request and starts the new one and returns. It -doesn't wait for the new request to complete. If there is no ongoing -request it starts the new request and returns immediately. - -MMC host extensions -=================== - -There are two optional members in the mmc_host_ops -- pre_req() and -post_req() -- that the host driver may implement in order to move work -to before and after the actual mmc_host_ops.request() function is called. -In the DMA case pre_req() may do dma_map_sg() and prepare the DMA -descriptor, and post_req() runs the dma_unmap_sg(). - -Optimize for the first request -============================== - -The first request in a series of requests can't be prepared in parallel -with the previous transfer, since there is no previous request. -The argument is_first_req in pre_req() indicates that there is no previous -request. The host driver may optimize for this scenario to minimize -the performance loss. A way to optimize for this is to split the current -request in two chunks, prepare the first chunk and start the request, -and finally prepare the second chunk and start the transfer. - -Pseudocode to handle is_first_req scenario with minimal prepare overhead: - -if (is_first_req && req->size > threshold) - /* start MMC transfer for the complete transfer size */ - mmc_start_command(MMC_CMD_TRANSFER_FULL_SIZE); - - /* - * Begin to prepare DMA while cmd is being processed by MMC. - * The first chunk of the request should take the same time - * to prepare as the "MMC process command time". - * If prepare time exceeds MMC cmd time - * the transfer is delayed, guesstimate max 4k as first chunk size. - */ - prepare_1st_chunk_for_dma(req); - /* flush pending desc to the DMAC (dmaengine.h) */ - dma_issue_pending(req->dma_desc); - - prepare_2nd_chunk_for_dma(req); - /* - * The second issue_pending should be called before MMC runs out - * of the first chunk. If the MMC runs out of the first data chunk - * before this call, the transfer is delayed. - */ - dma_issue_pending(req->dma_desc); diff --git a/trunk/Documentation/networking/ifenslave.c b/trunk/Documentation/networking/ifenslave.c index 65968fbf1e49..2bac9618c345 100644 --- a/trunk/Documentation/networking/ifenslave.c +++ b/trunk/Documentation/networking/ifenslave.c @@ -260,7 +260,7 @@ int main(int argc, char *argv[]) case 'V': opt_V++; exclusive++; break; case '?': - fprintf(stderr, "%s", usage_msg); + fprintf(stderr, usage_msg); res = 2; goto out; } @@ -268,13 +268,13 @@ int main(int argc, char *argv[]) /* options check */ if (exclusive > 1) { - fprintf(stderr, "%s", usage_msg); + fprintf(stderr, usage_msg); res = 2; goto out; } if (opt_v || opt_V) { - printf("%s", version); + printf(version); if (opt_V) { res = 0; goto out; @@ -282,14 +282,14 @@ int main(int argc, char *argv[]) } if (opt_u) { - printf("%s", usage_msg); + printf(usage_msg); res = 0; goto out; } if (opt_h) { - printf("%s", usage_msg); - printf("%s", help_msg); + printf(usage_msg); + printf(help_msg); res = 0; goto out; } @@ -309,7 +309,7 @@ int main(int argc, char *argv[]) goto out; } else { /* Just show usage */ - fprintf(stderr, "%s", usage_msg); + fprintf(stderr, usage_msg); res = 2; goto out; } @@ -320,7 +320,7 @@ int main(int argc, char *argv[]) master_ifname = *spp++; if (master_ifname == NULL) { - fprintf(stderr, "%s", usage_msg); + fprintf(stderr, usage_msg); res = 2; goto out; } @@ -339,7 +339,7 @@ int main(int argc, char *argv[]) if (slave_ifname == NULL) { if (opt_d || opt_c) { - fprintf(stderr, "%s", usage_msg); + fprintf(stderr, usage_msg); res = 2; goto out; } diff --git a/trunk/Documentation/networking/ip-sysctl.txt b/trunk/Documentation/networking/ip-sysctl.txt index db2a4067013c..bfe924217f24 100644 --- a/trunk/Documentation/networking/ip-sysctl.txt +++ b/trunk/Documentation/networking/ip-sysctl.txt @@ -106,6 +106,16 @@ inet_peer_maxttl - INTEGER when the number of entries in the pool is very small). Measured in seconds. +inet_peer_gc_mintime - INTEGER + Minimum interval between garbage collection passes. This interval is + in effect under high memory pressure on the pool. + Measured in seconds. + +inet_peer_gc_maxtime - INTEGER + Minimum interval between garbage collection passes. This interval is + in effect under low (or absent) memory pressure on the pool. + Measured in seconds. + TCP variables: somaxconn - INTEGER @@ -384,7 +394,7 @@ tcp_rmem - vector of 3 INTEGERs: min, default, max min: Minimal size of receive buffer used by TCP sockets. It is guaranteed to each TCP socket, even under moderate memory pressure. - Default: 1 page + Default: 8K default: initial size of receive buffer used by TCP sockets. This value overrides net.core.rmem_default used by other protocols. @@ -473,7 +483,7 @@ tcp_window_scaling - BOOLEAN tcp_wmem - vector of 3 INTEGERs: min, default, max min: Amount of memory reserved for send buffers for TCP sockets. Each TCP socket has rights to use it due to fact of its birth. - Default: 1 page + Default: 4K default: initial size of send buffer used by TCP sockets. This value overrides net.core.wmem_default used by other protocols. @@ -543,13 +553,13 @@ udp_rmem_min - INTEGER Minimal size of receive buffer used by UDP sockets in moderation. Each UDP socket is able to use the size for receiving data, even if total pages of UDP sockets exceed udp_mem pressure. The unit is byte. - Default: 1 page + Default: 4096 udp_wmem_min - INTEGER Minimal size of send buffer used by UDP sockets in moderation. Each UDP socket is able to use the size for sending data, even if total pages of UDP sockets exceed udp_mem pressure. The unit is byte. - Default: 1 page + Default: 4096 CIPSOv4 Variables: @@ -1455,17 +1465,10 @@ sctp_mem - vector of 3 INTEGERs: min, pressure, max Default is calculated at boot time from amount of available memory. sctp_rmem - vector of 3 INTEGERs: min, default, max - Only the first value ("min") is used, "default" and "max" are - ignored. - - min: Minimal size of receive buffer used by SCTP socket. - It is guaranteed to each SCTP socket (but not association) even - under moderate memory pressure. - - Default: 1 page + See tcp_rmem for a description. sctp_wmem - vector of 3 INTEGERs: min, default, max - Currently this tunable has no effect. + See tcp_wmem for a description. addr_scope_policy - INTEGER Control IPv4 address scoping - draft-stewart-tsvwg-sctp-ipv4-00 diff --git a/trunk/Documentation/networking/netdev-features.txt b/trunk/Documentation/networking/netdev-features.txt deleted file mode 100644 index 4b1c0dcef84c..000000000000 --- a/trunk/Documentation/networking/netdev-features.txt +++ /dev/null @@ -1,154 +0,0 @@ -Netdev features mess and how to get out from it alive -===================================================== - -Author: - Michał Mirosław - - - - Part I: Feature sets -====================== - -Long gone are the days when a network card would just take and give packets -verbatim. Today's devices add multiple features and bugs (read: offloads) -that relieve an OS of various tasks like generating and checking checksums, -splitting packets, classifying them. Those capabilities and their state -are commonly referred to as netdev features in Linux kernel world. - -There are currently three sets of features relevant to the driver, and -one used internally by network core: - - 1. netdev->hw_features set contains features whose state may possibly - be changed (enabled or disabled) for a particular device by user's - request. This set should be initialized in ndo_init callback and not - changed later. - - 2. netdev->features set contains features which are currently enabled - for a device. This should be changed only by network core or in - error paths of ndo_set_features callback. - - 3. netdev->vlan_features set contains features whose state is inherited - by child VLAN devices (limits netdev->features set). This is currently - used for all VLAN devices whether tags are stripped or inserted in - hardware or software. - - 4. netdev->wanted_features set contains feature set requested by user. - This set is filtered by ndo_fix_features callback whenever it or - some device-specific conditions change. This set is internal to - networking core and should not be referenced in drivers. - - - - Part II: Controlling enabled features -======================================= - -When current feature set (netdev->features) is to be changed, new set -is calculated and filtered by calling ndo_fix_features callback -and netdev_fix_features(). If the resulting set differs from current -set, it is passed to ndo_set_features callback and (if the callback -returns success) replaces value stored in netdev->features. -NETDEV_FEAT_CHANGE notification is issued after that whenever current -set might have changed. - -The following events trigger recalculation: - 1. device's registration, after ndo_init returned success - 2. user requested changes in features state - 3. netdev_update_features() is called - -ndo_*_features callbacks are called with rtnl_lock held. Missing callbacks -are treated as always returning success. - -A driver that wants to trigger recalculation must do so by calling -netdev_update_features() while holding rtnl_lock. This should not be done -from ndo_*_features callbacks. netdev->features should not be modified by -driver except by means of ndo_fix_features callback. - - - - Part III: Implementation hints -================================ - - * ndo_fix_features: - -All dependencies between features should be resolved here. The resulting -set can be reduced further by networking core imposed limitations (as coded -in netdev_fix_features()). For this reason it is safer to disable a feature -when its dependencies are not met instead of forcing the dependency on. - -This callback should not modify hardware nor driver state (should be -stateless). It can be called multiple times between successive -ndo_set_features calls. - -Callback must not alter features contained in NETIF_F_SOFT_FEATURES or -NETIF_F_NEVER_CHANGE sets. The exception is NETIF_F_VLAN_CHALLENGED but -care must be taken as the change won't affect already configured VLANs. - - * ndo_set_features: - -Hardware should be reconfigured to match passed feature set. The set -should not be altered unless some error condition happens that can't -be reliably detected in ndo_fix_features. In this case, the callback -should update netdev->features to match resulting hardware state. -Errors returned are not (and cannot be) propagated anywhere except dmesg. -(Note: successful return is zero, >0 means silent error.) - - - - Part IV: Features -=================== - -For current list of features, see include/linux/netdev_features.h. -This section describes semantics of some of them. - - * Transmit checksumming - -For complete description, see comments near the top of include/linux/skbuff.h. - -Note: NETIF_F_HW_CSUM is a superset of NETIF_F_IP_CSUM + NETIF_F_IPV6_CSUM. -It means that device can fill TCP/UDP-like checksum anywhere in the packets -whatever headers there might be. - - * Transmit TCP segmentation offload - -NETIF_F_TSO_ECN means that hardware can properly split packets with CWR bit -set, be it TCPv4 (when NETIF_F_TSO is enabled) or TCPv6 (NETIF_F_TSO6). - - * Transmit DMA from high memory - -On platforms where this is relevant, NETIF_F_HIGHDMA signals that -ndo_start_xmit can handle skbs with frags in high memory. - - * Transmit scatter-gather - -Those features say that ndo_start_xmit can handle fragmented skbs: -NETIF_F_SG --- paged skbs (skb_shinfo()->frags), NETIF_F_FRAGLIST --- -chained skbs (skb->next/prev list). - - * Software features - -Features contained in NETIF_F_SOFT_FEATURES are features of networking -stack. Driver should not change behaviour based on them. - - * LLTX driver (deprecated for hardware drivers) - -NETIF_F_LLTX should be set in drivers that implement their own locking in -transmit path or don't need locking at all (e.g. software tunnels). -In ndo_start_xmit, it is recommended to use a try_lock and return -NETDEV_TX_LOCKED when the spin lock fails. The locking should also properly -protect against other callbacks (the rules you need to find out). - -Don't use it for new drivers. - - * netns-local device - -NETIF_F_NETNS_LOCAL is set for devices that are not allowed to move between -network namespaces (e.g. loopback). - -Don't use it in drivers. - - * VLAN challenged - -NETIF_F_VLAN_CHALLENGED should be set for devices which can't cope with VLAN -headers. Some drivers set this because the cards can't handle the bigger MTU. -[FIXME: Those cases could be fixed in VLAN code by allowing only reduced-MTU -VLANs. This may be not useful, though.] diff --git a/trunk/Documentation/networking/nfc.txt b/trunk/Documentation/networking/nfc.txt deleted file mode 100644 index b24c29bdae27..000000000000 --- a/trunk/Documentation/networking/nfc.txt +++ /dev/null @@ -1,128 +0,0 @@ -Linux NFC subsystem -=================== - -The Near Field Communication (NFC) subsystem is required to standardize the -NFC device drivers development and to create an unified userspace interface. - -This document covers the architecture overview, the device driver interface -description and the userspace interface description. - -Architecture overview ---------------------- - -The NFC subsystem is responsible for: - - NFC adapters management; - - Polling for targets; - - Low-level data exchange; - -The subsystem is divided in some parts. The 'core' is responsible for -providing the device driver interface. On the other side, it is also -responsible for providing an interface to control operations and low-level -data exchange. - -The control operations are available to userspace via generic netlink. - -The low-level data exchange interface is provided by the new socket family -PF_NFC. The NFC_SOCKPROTO_RAW performs raw communication with NFC targets. - - - +--------------------------------------+ - | USER SPACE | - +--------------------------------------+ - ^ ^ - | low-level | control - | data exchange | operations - | | - | v - | +-----------+ - | AF_NFC | netlink | - | socket +-----------+ - | raw ^ - | | - v v - +---------+ +-----------+ - | rawsock | <--------> | core | - +---------+ +-----------+ - ^ - | - v - +-----------+ - | driver | - +-----------+ - -Device Driver Interface ------------------------ - -When registering on the NFC subsystem, the device driver must inform the core -of the set of supported NFC protocols and the set of ops callbacks. The ops -callbacks that must be implemented are the following: - -* start_poll - setup the device to poll for targets -* stop_poll - stop on progress polling operation -* activate_target - select and initialize one of the targets found -* deactivate_target - deselect and deinitialize the selected target -* data_exchange - send data and receive the response (transceive operation) - -Userspace interface --------------------- - -The userspace interface is divided in control operations and low-level data -exchange operation. - -CONTROL OPERATIONS: - -Generic netlink is used to implement the interface to the control operations. -The operations are composed by commands and events, all listed below: - -* NFC_CMD_GET_DEVICE - get specific device info or dump the device list -* NFC_CMD_START_POLL - setup a specific device to polling for targets -* NFC_CMD_STOP_POLL - stop the polling operation in a specific device -* NFC_CMD_GET_TARGET - dump the list of targets found by a specific device - -* NFC_EVENT_DEVICE_ADDED - reports an NFC device addition -* NFC_EVENT_DEVICE_REMOVED - reports an NFC device removal -* NFC_EVENT_TARGETS_FOUND - reports START_POLL results when 1 or more targets -are found - -The user must call START_POLL to poll for NFC targets, passing the desired NFC -protocols through NFC_ATTR_PROTOCOLS attribute. The device remains in polling -state until it finds any target. However, the user can stop the polling -operation by calling STOP_POLL command. In this case, it will be checked if -the requester of STOP_POLL is the same of START_POLL. - -If the polling operation finds one or more targets, the event TARGETS_FOUND is -sent (including the device id). The user must call GET_TARGET to get the list of -all targets found by such device. Each reply message has target attributes with -relevant information such as the supported NFC protocols. - -All polling operations requested through one netlink socket are stopped when -it's closed. - -LOW-LEVEL DATA EXCHANGE: - -The userspace must use PF_NFC sockets to perform any data communication with -targets. All NFC sockets use AF_NFC: - -struct sockaddr_nfc { - sa_family_t sa_family; - __u32 dev_idx; - __u32 target_idx; - __u32 nfc_protocol; -}; - -To establish a connection with one target, the user must create an -NFC_SOCKPROTO_RAW socket and call the 'connect' syscall with the sockaddr_nfc -struct correctly filled. All information comes from NFC_EVENT_TARGETS_FOUND -netlink event. As a target can support more than one NFC protocol, the user -must inform which protocol it wants to use. - -Internally, 'connect' will result in an activate_target call to the driver. -When the socket is closed, the target is deactivated. - -The data format exchanged through the sockets is NFC protocol dependent. For -instance, when communicating with MIFARE tags, the data exchanged are MIFARE -commands and their responses. - -The first received package is the response to the first sent package and so -on. In order to allow valid "empty" responses, every data received has a NULL -header of 1 byte. diff --git a/trunk/Documentation/networking/stmmac.txt b/trunk/Documentation/networking/stmmac.txt index 57a24108b845..80a7a3454902 100644 --- a/trunk/Documentation/networking/stmmac.txt +++ b/trunk/Documentation/networking/stmmac.txt @@ -7,7 +7,7 @@ This is the driver for the MAC 10/100/1000 on-chip Ethernet controllers (Synopsys IP blocks); it has been fully tested on STLinux platforms. Currently this network device driver is for all STM embedded MAC/GMAC -(i.e. 7xxx/5xxx SoCs) and it's known working on other platforms i.e. ARM SPEAr. +(7xxx SoCs). Other platforms start using it i.e. ARM SPEAr. DWC Ether MAC 10/100/1000 Universal version 3.41a and DWC Ether MAC 10/100 Universal version 4.0 have been used for developing the first code @@ -71,7 +71,7 @@ Several performance tests on STM platforms showed this optimisation allows to sp the CPU while having the maximum throughput. 4.4) WOL -Wake up on Lan feature through Magic and Unicast frames are supported for the GMAC +Wake up on Lan feature through Magic Frame is only supported for the GMAC core. 4.5) DMA descriptors @@ -91,15 +91,11 @@ LRO is not supported. The driver is compatible with PAL to work with PHY and GPHY devices. 4.9) Platform information -Several driver's information can be passed through the platform -These are included in the include/linux/stmmac.h header file -and detailed below as well: +Several information came from the platform; please refer to the +driver's Header file in include/linux directory. - struct plat_stmmacenet_data { +struct plat_stmmacenet_data { int bus_id; - int phy_addr; - int interface; - struct stmmac_mdio_bus_data *mdio_bus_data; int pbl; int clk_csr; int has_gmac; @@ -107,135 +103,67 @@ and detailed below as well: int tx_coe; int bugged_jumbo; int pmt; - int force_sf_dma_mode; - void (*fix_mac_speed)(void *priv, unsigned int speed); - void (*bus_setup)(void __iomem *ioaddr); - int (*init)(struct platform_device *pdev); - void (*exit)(struct platform_device *pdev); - void *bsp_priv; - }; - -Where: - o bus_id: bus identifier. - o phy_addr: the physical address can be passed from the platform. - If it is set to -1 the driver will automatically - detect it at run-time by probing all the 32 addresses. - o interface: PHY device's interface. - o mdio_bus_data: specific platform fields for the MDIO bus. - o pbl: the Programmable Burst Length is maximum number of beats to - be transferred in one DMA transaction. - GMAC also enables the 4xPBL by default. - o clk_csr: CSR Clock range selection. - o has_gmac: uses the GMAC core. - o enh_desc: if sets the MAC will use the enhanced descriptor structure. - o tx_coe: core is able to perform the tx csum in HW. - o bugged_jumbo: some HWs are not able to perform the csum in HW for - over-sized frames due to limited buffer sizes. - Setting this flag the csum will be done in SW on - JUMBO frames. - o pmt: core has the embedded power module (optional). - o force_sf_dma_mode: force DMA to use the Store and Forward mode - instead of the Threshold. - o fix_mac_speed: this callback is used for modifying some syscfg registers - (on ST SoCs) according to the link speed negotiated by the - physical layer . - o bus_setup: perform HW setup of the bus. For example, on some ST platforms - this field is used to configure the AMBA bridge to generate more - efficient STBus traffic. - o init/exit: callbacks used for calling a custom initialisation; - this is sometime necessary on some platforms (e.g. ST boxes) - where the HW needs to have set some PIO lines or system cfg - registers. - o custom_cfg: this is a custom configuration that can be passed while - initialising the resources. - -The we have: - - struct stmmac_mdio_bus_data { - int bus_id; - int (*phy_reset)(void *priv); - unsigned int phy_mask; - int *irqs; - int probed_phy_irq; - }; - -Where: - o bus_id: bus identifier; - o phy_reset: hook to reset the phy device attached to the bus. - o phy_mask: phy mask passed when register the MDIO bus within the driver. - o irqs: list of IRQs, one per PHY. - o probed_phy_irq: if irqs is NULL, use this for probed PHY. - -Below an example how the structures above are using on ST platforms. - - static struct plat_stmmacenet_data stxYYY_ethernet_platform_data = { - .pbl = 32, - .has_gmac = 0, - .enh_desc = 0, - .fix_mac_speed = stxYYY_ethernet_fix_mac_speed, - | - |-> to write an internal syscfg - | on this platform when the - | link speed changes from 10 to - | 100 and viceversa - .init = &stmmac_claim_resource, - | - |-> On ST SoC this calls own "PAD" - | manager framework to claim - | all the resources necessary - | (GPIO ...). The .custom_cfg field - | is used to pass a custom config. + void (*fix_mac_speed)(void *priv, unsigned int speed); + void (*bus_setup)(unsigned long ioaddr); +#ifdef CONFIG_STM_DRIVERS + struct stm_pad_config *pad_config; +#endif + void *bsp_priv; }; -Below the usage of the stmmac_mdio_bus_data: on this SoC, in fact, -there are two MAC cores: one MAC is for MDIO Bus/PHY emulation -with fixed_link support. - -static struct stmmac_mdio_bus_data stmmac1_mdio_bus = { - .bus_id = 1, - | - |-> phy device on the bus_id 1 - .phy_reset = phy_reset; - | - |-> function to provide the phy_reset on this board - .phy_mask = 0, -}; - -static struct fixed_phy_status stmmac0_fixed_phy_status = { - .link = 1, - .speed = 100, - .duplex = 1, +Where: +- pbl (Programmable Burst Length) is maximum number of + beats to be transferred in one DMA transaction. + GMAC also enables the 4xPBL by default. +- fix_mac_speed and bus_setup are used to configure internal target + registers (on STM platforms); +- has_gmac: GMAC core is on board (get it at run-time in the next step); +- bus_id: bus identifier. +- tx_coe: core is able to perform the tx csum in HW. +- enh_desc: if sets the MAC will use the enhanced descriptor structure. +- clk_csr: CSR Clock range selection. +- bugged_jumbo: some HWs are not able to perform the csum in HW for + over-sized frames due to limited buffer sizes. Setting this + flag the csum will be done in SW on JUMBO frames. + +struct plat_stmmacphy_data { + int bus_id; + int phy_addr; + unsigned int phy_mask; + int interface; + int (*phy_reset)(void *priv); + void *priv; }; -During the board's device_init we can configure the first -MAC for fixed_link by calling: - fixed_phy_add(PHY_POLL, 1, &stmmac0_fixed_phy_status));) -and the second one, with a real PHY device attached to the bus, -by using the stmmac_mdio_bus_data structure (to provide the id, the -reset procedure etc). - -4.10) List of source files: - o Kconfig - o Makefile - o stmmac_main.c: main network device driver; - o stmmac_mdio.c: mdio functions; - o stmmac_ethtool.c: ethtool support; - o stmmac_timer.[ch]: timer code used for mitigating the driver dma interrupts - Only tested on ST40 platforms based. - o stmmac.h: private driver structure; - o common.h: common definitions and VFTs; - o descs.h: descriptor structure definitions; - o dwmac1000_core.c: GMAC core functions; - o dwmac1000_dma.c: dma functions for the GMAC chip; - o dwmac1000.h: specific header file for the GMAC; - o dwmac100_core: MAC 100 core and dma code; - o dwmac100_dma.c: dma funtions for the MAC chip; - o dwmac1000.h: specific header file for the MAC; - o dwmac_lib.c: generic DMA functions shared among chips - o enh_desc.c: functions for handling enhanced descriptors - o norm_desc.c: functions for handling normal descriptors - -5) TODO: - o XGMAC is not supported. - o Review the timer optimisation code to use an embedded device that will be +Where: +- bus_id: bus identifier; +- phy_addr: physical address used for the attached phy device; + set it to -1 to get it at run-time; +- interface: physical MII interface mode; +- phy_reset: hook to reset HW function. + +SOURCES: +- Kconfig +- Makefile +- stmmac_main.c: main network device driver; +- stmmac_mdio.c: mdio functions; +- stmmac_ethtool.c: ethtool support; +- stmmac_timer.[ch]: timer code used for mitigating the driver dma interrupts + Only tested on ST40 platforms based. +- stmmac.h: private driver structure; +- common.h: common definitions and VFTs; +- descs.h: descriptor structure definitions; +- dwmac1000_core.c: GMAC core functions; +- dwmac1000_dma.c: dma functions for the GMAC chip; +- dwmac1000.h: specific header file for the GMAC; +- dwmac100_core: MAC 100 core and dma code; +- dwmac100_dma.c: dma funtions for the MAC chip; +- dwmac1000.h: specific header file for the MAC; +- dwmac_lib.c: generic DMA functions shared among chips +- enh_desc.c: functions for handling enhanced descriptors +- norm_desc.c: functions for handling normal descriptors + +TODO: +- XGMAC controller is not supported. +- Review the timer optimisation code to use an embedded device that seems to be available in new chip generations. diff --git a/trunk/Documentation/power/opp.txt b/trunk/Documentation/power/opp.txt index 5ae70a12c1e2..3035d00757ad 100644 --- a/trunk/Documentation/power/opp.txt +++ b/trunk/Documentation/power/opp.txt @@ -321,6 +321,8 @@ opp_init_cpufreq_table - cpufreq framework typically is initialized with addition to CONFIG_PM as power management feature is required to dynamically scale voltage and frequency in a system. +opp_free_cpufreq_table - Free up the table allocated by opp_init_cpufreq_table + 7. Data Structures ================== Typically an SoC contains multiple voltage domains which are variable. Each diff --git a/trunk/Documentation/spi/ep93xx_spi b/trunk/Documentation/spi/ep93xx_spi index d8eb01c15db1..6325f5b48635 100644 --- a/trunk/Documentation/spi/ep93xx_spi +++ b/trunk/Documentation/spi/ep93xx_spi @@ -88,16 +88,6 @@ static void __init ts72xx_init_machine(void) ARRAY_SIZE(ts72xx_spi_devices)); } -The driver can use DMA for the transfers also. In this case ts72xx_spi_info -becomes: - -static struct ep93xx_spi_info ts72xx_spi_info = { - .num_chipselect = ARRAY_SIZE(ts72xx_spi_devices), - .use_dma = true; -}; - -Note that CONFIG_EP93XX_DMA should be enabled as well. - Thanks to ========= Martin Guy, H. Hartley Sweeten and others who helped me during development of diff --git a/trunk/Documentation/spi/pxa2xx b/trunk/Documentation/spi/pxa2xx index 00511e08db78..493dada57372 100644 --- a/trunk/Documentation/spi/pxa2xx +++ b/trunk/Documentation/spi/pxa2xx @@ -22,11 +22,15 @@ Typically a SPI master is defined in the arch/.../mach-*/board-*.c as a found in include/linux/spi/pxa2xx_spi.h: struct pxa2xx_spi_master { + enum pxa_ssp_type ssp_type; u32 clock_enable; u16 num_chipselect; u8 enable_dma; }; +The "pxa2xx_spi_master.ssp_type" field must have a value between 1 and 3 and +informs the driver which features a particular SSP supports. + The "pxa2xx_spi_master.clock_enable" field is used to enable/disable the corresponding SSP peripheral block in the "Clock Enable Register (CKEN"). See the "PXA2xx Developer Manual" section "Clocks and Power Management". @@ -57,6 +61,7 @@ static struct resource pxa_spi_nssp_resources[] = { }; static struct pxa2xx_spi_master pxa_nssp_master_info = { + .ssp_type = PXA25x_NSSP, /* Type of SSP */ .clock_enable = CKEN_NSSP, /* NSSP Peripheral clock */ .num_chipselect = 1, /* Matches the number of chips attached to NSSP */ .enable_dma = 1, /* Enables NSSP DMA */ diff --git a/trunk/Documentation/virtual/lguest/lguest.c b/trunk/Documentation/virtual/lguest/lguest.c index 043bd7df3139..cd9d6af61d07 100644 --- a/trunk/Documentation/virtual/lguest/lguest.c +++ b/trunk/Documentation/virtual/lguest/lguest.c @@ -51,7 +51,7 @@ #include #include "../../../include/linux/lguest_launcher.h" /*L:110 - * We can ignore the 43 include files we need for this program, but I do want + * We can ignore the 42 include files we need for this program, but I do want * to draw attention to the use of kernel-style types. * * As Linus said, "C is a Spartan language, and so should your naming be." I @@ -65,6 +65,7 @@ typedef uint16_t u16; typedef uint8_t u8; /*:*/ +#define PAGE_PRESENT 0x7 /* Present, RW, Execute */ #define BRIDGE_PFX "bridge:" #ifndef SIOCBRADDIF #define SIOCBRADDIF 0x89a2 /* add interface to bridge */ @@ -860,10 +861,8 @@ static void console_output(struct virtqueue *vq) /* writev can return a partial write, so we loop here. */ while (!iov_empty(iov, out)) { int len = writev(STDOUT_FILENO, iov, out); - if (len <= 0) { - warn("Write to stdout gave %i (%d)", len, errno); - break; - } + if (len <= 0) + err(1, "Write to stdout gave %i", len); iov_consume(iov, out, len); } @@ -899,7 +898,7 @@ static void net_output(struct virtqueue *vq) * same format: what a coincidence! */ if (writev(net_info->tunfd, iov, out) < 0) - warnx("Write to tun failed (%d)?", errno); + errx(1, "Write to tun failed?"); /* * Done with that one; wait_for_vq_desc() will send the interrupt if @@ -956,7 +955,7 @@ static void net_input(struct virtqueue *vq) */ len = readv(net_info->tunfd, iov, in); if (len <= 0) - warn("Failed to read from tun (%d).", errno); + err(1, "Failed to read from tun."); /* * Mark that packet buffer as used, but don't interrupt here. We want @@ -1094,10 +1093,9 @@ static void update_device_status(struct device *dev) warnx("Device %s configuration FAILED", dev->name); if (dev->running) reset_device(dev); - } else { - if (dev->running) - err(1, "Device %s features finalized twice", dev->name); - start_device(dev); + } else if (dev->desc->status & VIRTIO_CONFIG_S_DRIVER_OK) { + if (!dev->running) + start_device(dev); } } @@ -1122,11 +1120,25 @@ static void handle_output(unsigned long addr) return; } - /* Devices should not be used before features are finalized. */ + /* + * Devices *can* be used before status is set to DRIVER_OK. + * The original plan was that they would never do this: they + * would always finish setting up their status bits before + * actually touching the virtqueues. In practice, we allowed + * them to, and they do (eg. the disk probes for partition + * tables as part of initialization). + * + * If we see this, we start the device: once it's running, we + * expect the device to catch all the notifications. + */ for (vq = i->vq; vq; vq = vq->next) { if (addr != vq->config.pfn*getpagesize()) continue; - errx(1, "Notification on %s before setup!", i->name); + if (i->running) + errx(1, "Notification on running %s", i->name); + /* This just calls create_thread() for each virtqueue */ + start_device(i); + return; } } @@ -1358,7 +1370,7 @@ static void setup_console(void) * --sharenet= option which opens or creates a named pipe. This can be * used to send packets to another guest in a 1:1 manner. * - * More sophisticated is to use one of the tools developed for project like UML + * More sopisticated is to use one of the tools developed for project like UML * to do networking. * * Faster is to do virtio bonding in kernel. Doing this 1:1 would be @@ -1368,7 +1380,7 @@ static void setup_console(void) * multiple inter-guest channels behind one interface, although it would * require some manner of hotplugging new virtio channels. * - * Finally, we could use a virtio network switch in the kernel, ie. vhost. + * Finally, we could implement a virtio network switch in the kernel. :*/ static u32 str2ip(const char *ipaddr) @@ -2005,7 +2017,10 @@ int main(int argc, char *argv[]) /* Tell the entry path not to try to reload segment registers. */ boot->hdr.loadflags |= KEEP_SEGMENTS; - /* We tell the kernel to initialize the Guest. */ + /* + * We tell the kernel to initialize the Guest: this returns the open + * /dev/lguest file descriptor. + */ tell_kernel(start); /* Ensure that we terminate if a device-servicing child dies. */ diff --git a/trunk/Documentation/x86/boot.txt b/trunk/Documentation/x86/boot.txt index 7c3a8801b7ce..9b7221a86df2 100644 --- a/trunk/Documentation/x86/boot.txt +++ b/trunk/Documentation/x86/boot.txt @@ -674,7 +674,7 @@ Protocol: 2.10+ Field name: init_size Type: read -Offset/size: 0x260/4 +Offset/size: 0x25c/4 This field indicates the amount of linear contiguous memory starting at the kernel runtime start address that the kernel needs before it diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index 41ec646d8a98..187282da9213 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -1,5 +1,4 @@ - List of maintainers and how to submit kernel changes Please try to follow the guidelines below. This will make things @@ -3426,9 +3425,10 @@ S: Maintained F: drivers/net/ipg.* IPATH DRIVER -M: Mike Marciniszyn +M: Ralph Campbell L: linux-rdma@vger.kernel.org -S: Maintained +T: git git://git.qlogic.com/ipath-linux-2.6 +S: Supported F: drivers/infiniband/hw/ipath/ IPMI SUBSYSTEM @@ -4289,8 +4289,8 @@ S: Maintained F: drivers/usb/musb/ MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE) -M: Jon Mason M: Andrew Gallatin +M: Brice Goglin L: netdev@vger.kernel.org W: http://www.myri.com/scs/download-Myri10GE.html S: Supported @@ -4584,8 +4584,9 @@ S: Maintained F: drivers/mmc/host/omap.c OMAP HS MMC SUPPORT +M: Madhusudhan Chikkature L: linux-omap@vger.kernel.org -S: Orphan +S: Maintained F: drivers/mmc/host/omap_hsmmc.c OMAP RANDOM NUMBER GENERATOR SUPPORT @@ -5151,12 +5152,6 @@ M: Robert Jarzmik L: rtc-linux@googlegroups.com S: Maintained -QIB DRIVER -M: Mike Marciniszyn -L: linux-rdma@vger.kernel.org -S: Supported -F: drivers/infiniband/hw/qib/ - QLOGIC QLA1280 SCSI DRIVER M: Michael Reed L: linux-scsi@vger.kernel.org @@ -6247,14 +6242,9 @@ F: drivers/char/toshiba.c F: include/linux/toshiba.h TMIO MMC DRIVER -M: Guennadi Liakhovetski M: Ian Molton -L: linux-mmc@vger.kernel.org S: Maintained -F: drivers/mmc/host/tmio_mmc* -F: drivers/mmc/host/sh_mobile_sdhi.c -F: include/linux/mmc/tmio.h -F: include/linux/mmc/sh_mobile_sdhi.h +F: drivers/mmc/host/tmio_mmc.* TMPFS (SHMEM FILESYSTEM) M: Hugh Dickins @@ -6331,7 +6321,7 @@ F: drivers/scsi/u14-34f.c UBI FILE SYSTEM (UBIFS) M: Artem Bityutskiy -M: Adrian Hunter +M: Adrian Hunter L: linux-mtd@lists.infradead.org T: git git://git.infradead.org/ubifs-2.6.git W: http://www.linux-mtd.infradead.org/doc/ubifs.html diff --git a/trunk/Makefile b/trunk/Makefile index 6a5bdad524af..60d91f76c2fd 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -1,7 +1,7 @@ VERSION = 3 PATCHLEVEL = 0 SUBLEVEL = 0 -EXTRAVERSION = +EXTRAVERSION = -rc7 NAME = Sneaky Weasel # *DOCUMENTATION* diff --git a/trunk/arch/arm/configs/mmp2_defconfig b/trunk/arch/arm/configs/mmp2_defconfig index 5a584520db2f..47ad3b1a4fee 100644 --- a/trunk/arch/arm/configs/mmp2_defconfig +++ b/trunk/arch/arm/configs/mmp2_defconfig @@ -8,7 +8,6 @@ CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y # CONFIG_BLK_DEV_BSG is not set CONFIG_ARCH_MMP=y -CONFIG_MACH_BROWNSTONE=y CONFIG_MACH_FLINT=y CONFIG_MACH_MARVELL_JASPER=y CONFIG_HIGH_RES_TIMERS=y @@ -64,16 +63,10 @@ CONFIG_BACKLIGHT_MAX8925=y # CONFIG_USB_SUPPORT is not set CONFIG_RTC_CLASS=y CONFIG_RTC_DRV_MAX8925=y -CONFIG_MMC=y # CONFIG_DNOTIFY is not set CONFIG_INOTIFY=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y -CONFIG_EXT2_FS=y -CONFIG_EXT3_FS=y -CONFIG_EXT4_FS=y -CONFIG_MSDOS_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_JFFS2_FS=y CONFIG_CRAMFS=y CONFIG_NFS_FS=y @@ -88,7 +81,7 @@ CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_PREEMPT is not set CONFIG_DEBUG_INFO=y # CONFIG_RCU_CPU_STALL_DETECTOR is not set -# CONFIG_DYNAMIC_DEBUG is not set +CONFIG_DYNAMIC_DEBUG=y CONFIG_DEBUG_USER=y CONFIG_DEBUG_ERRORS=y # CONFIG_CRYPTO_ANSI_CPRNG is not set diff --git a/trunk/drivers/mmc/host/at91_mci.h b/trunk/arch/arm/mach-at91/include/mach/at91_mci.h similarity index 99% rename from trunk/drivers/mmc/host/at91_mci.h rename to trunk/arch/arm/mach-at91/include/mach/at91_mci.h index eec3a6b1c2bc..02182c16a022 100644 --- a/trunk/drivers/mmc/host/at91_mci.h +++ b/trunk/arch/arm/mach-at91/include/mach/at91_mci.h @@ -1,5 +1,5 @@ /* - * drivers/mmc/host/at91_mci.h + * arch/arm/mach-at91/include/mach/at91_mci.h * * Copyright (C) 2005 Ivan Kokshaysky * Copyright (C) SAN People diff --git a/trunk/arch/arm/mach-davinci/board-dm365-evm.c b/trunk/arch/arm/mach-davinci/board-dm365-evm.c index 09a87e61ffcf..c67f684ee3e5 100644 --- a/trunk/arch/arm/mach-davinci/board-dm365-evm.c +++ b/trunk/arch/arm/mach-davinci/board-dm365-evm.c @@ -520,7 +520,7 @@ static void __init evm_init_cpld(void) */ if (have_imager()) { label = "HD imager"; - mux |= 2; + mux |= 1; /* externally mux MMC1/ENET/AIC33 to imager */ mux |= BIT(6) | BIT(5) | BIT(3); @@ -540,7 +540,7 @@ static void __init evm_init_cpld(void) resets &= ~BIT(1); if (have_tvp7002()) { - mux |= 1; + mux |= 2; resets &= ~BIT(2); label = "tvp7002 HD"; } else { diff --git a/trunk/arch/arm/mach-davinci/board-mityomapl138.c b/trunk/arch/arm/mach-davinci/board-mityomapl138.c index 5f5d78308873..606a6f27ed6c 100644 --- a/trunk/arch/arm/mach-davinci/board-mityomapl138.c +++ b/trunk/arch/arm/mach-davinci/board-mityomapl138.c @@ -20,7 +20,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/arm/mach-davinci/dm646x.c b/trunk/arch/arm/mach-davinci/dm646x.c index e00d61e2efbe..1e0f809644bb 100644 --- a/trunk/arch/arm/mach-davinci/dm646x.c +++ b/trunk/arch/arm/mach-davinci/dm646x.c @@ -8,7 +8,6 @@ * is licensed "as is" without any warranty of any kind, whether express * or implied. */ -#include #include #include #include diff --git a/trunk/arch/arm/mach-davinci/gpio.c b/trunk/arch/arm/mach-davinci/gpio.c index cafbe13a82a5..e7221398e5af 100644 --- a/trunk/arch/arm/mach-davinci/gpio.c +++ b/trunk/arch/arm/mach-davinci/gpio.c @@ -254,10 +254,8 @@ gpio_irq_handler(unsigned irq, struct irq_desc *desc) { struct davinci_gpio_regs __iomem *g; u32 mask = 0xffff; - struct davinci_gpio_controller *d; - d = (struct davinci_gpio_controller *)irq_desc_get_handler_data(desc); - g = (struct davinci_gpio_regs __iomem *)d->regs; + g = (__force struct davinci_gpio_regs __iomem *) irq_desc_get_handler_data(desc); /* we only care about one bank */ if (irq & 1) @@ -276,14 +274,11 @@ gpio_irq_handler(unsigned irq, struct irq_desc *desc) if (!status) break; __raw_writel(status, &g->intstat); - - /* now demux them to the right lowlevel handler */ - n = d->irq_base; - if (irq & 1) { - n += 16; + if (irq & 1) status >>= 16; - } + /* now demux them to the right lowlevel handler */ + n = (int)irq_get_handler_data(irq); while (status) { res = ffs(status); n += res; @@ -429,13 +424,7 @@ static int __init davinci_gpio_irq_setup(void) /* set up all irqs in this bank */ irq_set_chained_handler(bank_irq, gpio_irq_handler); - - /* - * Each chip handles 32 gpios, and each irq bank consists of 16 - * gpio irqs. Pass the irq bank's corresponding controller to - * the chained irq handler. - */ - irq_set_handler_data(bank_irq, &chips[gpio / 32]); + irq_set_handler_data(bank_irq, (__force void *)g); for (i = 0; i < 16 && gpio < ngpio; i++, irq++, gpio++) { irq_set_chip(irq, &gpio_irqchip); diff --git a/trunk/arch/arm/mach-davinci/irq.c b/trunk/arch/arm/mach-davinci/irq.c index 952dc126c390..d8c1af025931 100644 --- a/trunk/arch/arm/mach-davinci/irq.c +++ b/trunk/arch/arm/mach-davinci/irq.c @@ -52,12 +52,6 @@ davinci_alloc_gc(void __iomem *base, unsigned int irq_start, unsigned int num) struct irq_chip_type *ct; gc = irq_alloc_generic_chip("AINTC", 1, irq_start, base, handle_edge_irq); - if (!gc) { - pr_err("%s: irq_alloc_generic_chip for IRQ %u failed\n", - __func__, irq_start); - return; - } - ct = gc->chip_types; ct->chip.irq_ack = irq_gc_ack_set_bit; ct->chip.irq_mask = irq_gc_mask_clr_bit; diff --git a/trunk/arch/arm/mach-davinci/pm.c b/trunk/arch/arm/mach-davinci/pm.c index 04c49f7543ef..1bd73a04be20 100644 --- a/trunk/arch/arm/mach-davinci/pm.c +++ b/trunk/arch/arm/mach-davinci/pm.c @@ -17,7 +17,6 @@ #include #include -#include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/Makefile b/trunk/arch/arm/mach-ep93xx/Makefile index 3cedcf2d39e5..33ee2c863d18 100644 --- a/trunk/arch/arm/mach-ep93xx/Makefile +++ b/trunk/arch/arm/mach-ep93xx/Makefile @@ -1,13 +1,11 @@ # # Makefile for the linux kernel. # -obj-y := core.o clock.o +obj-y := core.o clock.o dma-m2p.o gpio.o obj-m := obj-n := obj- := -obj-$(CONFIG_EP93XX_DMA) += dma.o - obj-$(CONFIG_MACH_ADSSPHERE) += adssphere.o obj-$(CONFIG_MACH_EDB93XX) += edb93xx.o obj-$(CONFIG_MACH_GESBC9312) += gesbc9312.o diff --git a/trunk/arch/arm/mach-ep93xx/core.c b/trunk/arch/arm/mach-ep93xx/core.c index c60f081e930b..6659a0d137a3 100644 --- a/trunk/arch/arm/mach-ep93xx/core.c +++ b/trunk/arch/arm/mach-ep93xx/core.c @@ -174,10 +174,14 @@ struct sys_timer ep93xx_timer = { /************************************************************************* * EP93xx IRQ handling *************************************************************************/ +extern void ep93xx_gpio_init_irq(void); + void __init ep93xx_init_irq(void) { vic_init(EP93XX_VIC1_BASE, 0, EP93XX_VIC1_VALID_IRQ_MASK, 0); vic_init(EP93XX_VIC2_BASE, 32, EP93XX_VIC2_VALID_IRQ_MASK, 0); + + ep93xx_gpio_init_irq(); } @@ -236,24 +240,6 @@ unsigned int ep93xx_chip_revision(void) return v; } -/************************************************************************* - * EP93xx GPIO - *************************************************************************/ -static struct resource ep93xx_gpio_resource[] = { - { - .start = EP93XX_GPIO_PHYS_BASE, - .end = EP93XX_GPIO_PHYS_BASE + 0xcc - 1, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device ep93xx_gpio_device = { - .name = "gpio-ep93xx", - .id = -1, - .num_resources = ARRAY_SIZE(ep93xx_gpio_resource), - .resource = ep93xx_gpio_resource, -}; - /************************************************************************* * EP93xx peripheral handling *************************************************************************/ @@ -506,15 +492,11 @@ static struct resource ep93xx_spi_resources[] = { }, }; -static u64 ep93xx_spi_dma_mask = DMA_BIT_MASK(32); - static struct platform_device ep93xx_spi_device = { .name = "ep93xx-spi", .id = 0, .dev = { - .platform_data = &ep93xx_spi_master_data, - .coherent_dma_mask = DMA_BIT_MASK(32), - .dma_mask = &ep93xx_spi_dma_mask, + .platform_data = &ep93xx_spi_master_data, }, .num_resources = ARRAY_SIZE(ep93xx_spi_resources), .resource = ep93xx_spi_resources, @@ -888,13 +870,14 @@ void __init ep93xx_register_ac97(void) platform_device_register(&ep93xx_pcm_device); } +extern void ep93xx_gpio_init(void); + void __init ep93xx_init_devices(void) { /* Disallow access to MaverickCrunch initially */ ep93xx_devcfg_clear_bits(EP93XX_SYSCON_DEVCFG_CPENA); - /* Get the GPIO working early, other devices need it */ - platform_device_register(&ep93xx_gpio_device); + ep93xx_gpio_init(); amba_device_register(&uart1_device, &iomem_resource); amba_device_register(&uart2_device, &iomem_resource); diff --git a/trunk/arch/arm/mach-ep93xx/dma-m2p.c b/trunk/arch/arm/mach-ep93xx/dma-m2p.c new file mode 100644 index 000000000000..a696d354b1f8 --- /dev/null +++ b/trunk/arch/arm/mach-ep93xx/dma-m2p.c @@ -0,0 +1,411 @@ +/* + * arch/arm/mach-ep93xx/dma-m2p.c + * M2P DMA handling for Cirrus EP93xx chips. + * + * Copyright (C) 2006 Lennert Buytenhek + * Copyright (C) 2006 Applied Data Systems + * + * Copyright (C) 2009 Ryan Mallon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + */ + +/* + * On the EP93xx chip the following peripherals my be allocated to the 10 + * Memory to Internal Peripheral (M2P) channels (5 transmit + 5 receive). + * + * I2S contains 3 Tx and 3 Rx DMA Channels + * AAC contains 3 Tx and 3 Rx DMA Channels + * UART1 contains 1 Tx and 1 Rx DMA Channels + * UART2 contains 1 Tx and 1 Rx DMA Channels + * UART3 contains 1 Tx and 1 Rx DMA Channels + * IrDA contains 1 Tx and 1 Rx DMA Channels + * + * SSP and IDE use the Memory to Memory (M2M) channels and are not covered + * with this implementation. + */ + +#define pr_fmt(fmt) "ep93xx " KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include +#include + +#include +#include + +#define M2P_CONTROL 0x00 +#define M2P_CONTROL_STALL_IRQ_EN (1 << 0) +#define M2P_CONTROL_NFB_IRQ_EN (1 << 1) +#define M2P_CONTROL_ERROR_IRQ_EN (1 << 3) +#define M2P_CONTROL_ENABLE (1 << 4) +#define M2P_INTERRUPT 0x04 +#define M2P_INTERRUPT_STALL (1 << 0) +#define M2P_INTERRUPT_NFB (1 << 1) +#define M2P_INTERRUPT_ERROR (1 << 3) +#define M2P_PPALLOC 0x08 +#define M2P_STATUS 0x0c +#define M2P_REMAIN 0x14 +#define M2P_MAXCNT0 0x20 +#define M2P_BASE0 0x24 +#define M2P_MAXCNT1 0x30 +#define M2P_BASE1 0x34 + +#define STATE_IDLE 0 /* Channel is inactive. */ +#define STATE_STALL 1 /* Channel is active, no buffers pending. */ +#define STATE_ON 2 /* Channel is active, one buffer pending. */ +#define STATE_NEXT 3 /* Channel is active, two buffers pending. */ + +struct m2p_channel { + char *name; + void __iomem *base; + int irq; + + struct clk *clk; + spinlock_t lock; + + void *client; + unsigned next_slot:1; + struct ep93xx_dma_buffer *buffer_xfer; + struct ep93xx_dma_buffer *buffer_next; + struct list_head buffers_pending; +}; + +static struct m2p_channel m2p_rx[] = { + {"m2p1", EP93XX_DMA_BASE + 0x0040, IRQ_EP93XX_DMAM2P1}, + {"m2p3", EP93XX_DMA_BASE + 0x00c0, IRQ_EP93XX_DMAM2P3}, + {"m2p5", EP93XX_DMA_BASE + 0x0200, IRQ_EP93XX_DMAM2P5}, + {"m2p7", EP93XX_DMA_BASE + 0x0280, IRQ_EP93XX_DMAM2P7}, + {"m2p9", EP93XX_DMA_BASE + 0x0300, IRQ_EP93XX_DMAM2P9}, + {NULL}, +}; + +static struct m2p_channel m2p_tx[] = { + {"m2p0", EP93XX_DMA_BASE + 0x0000, IRQ_EP93XX_DMAM2P0}, + {"m2p2", EP93XX_DMA_BASE + 0x0080, IRQ_EP93XX_DMAM2P2}, + {"m2p4", EP93XX_DMA_BASE + 0x0240, IRQ_EP93XX_DMAM2P4}, + {"m2p6", EP93XX_DMA_BASE + 0x02c0, IRQ_EP93XX_DMAM2P6}, + {"m2p8", EP93XX_DMA_BASE + 0x0340, IRQ_EP93XX_DMAM2P8}, + {NULL}, +}; + +static void feed_buf(struct m2p_channel *ch, struct ep93xx_dma_buffer *buf) +{ + if (ch->next_slot == 0) { + writel(buf->size, ch->base + M2P_MAXCNT0); + writel(buf->bus_addr, ch->base + M2P_BASE0); + } else { + writel(buf->size, ch->base + M2P_MAXCNT1); + writel(buf->bus_addr, ch->base + M2P_BASE1); + } + ch->next_slot ^= 1; +} + +static void choose_buffer_xfer(struct m2p_channel *ch) +{ + struct ep93xx_dma_buffer *buf; + + ch->buffer_xfer = NULL; + if (!list_empty(&ch->buffers_pending)) { + buf = list_entry(ch->buffers_pending.next, + struct ep93xx_dma_buffer, list); + list_del(&buf->list); + feed_buf(ch, buf); + ch->buffer_xfer = buf; + } +} + +static void choose_buffer_next(struct m2p_channel *ch) +{ + struct ep93xx_dma_buffer *buf; + + ch->buffer_next = NULL; + if (!list_empty(&ch->buffers_pending)) { + buf = list_entry(ch->buffers_pending.next, + struct ep93xx_dma_buffer, list); + list_del(&buf->list); + feed_buf(ch, buf); + ch->buffer_next = buf; + } +} + +static inline void m2p_set_control(struct m2p_channel *ch, u32 v) +{ + /* + * The control register must be read immediately after being written so + * that the internal state machine is correctly updated. See the ep93xx + * users' guide for details. + */ + writel(v, ch->base + M2P_CONTROL); + readl(ch->base + M2P_CONTROL); +} + +static inline int m2p_channel_state(struct m2p_channel *ch) +{ + return (readl(ch->base + M2P_STATUS) >> 4) & 0x3; +} + +static irqreturn_t m2p_irq(int irq, void *dev_id) +{ + struct m2p_channel *ch = dev_id; + struct ep93xx_dma_m2p_client *cl; + u32 irq_status, v; + int error = 0; + + cl = ch->client; + + spin_lock(&ch->lock); + irq_status = readl(ch->base + M2P_INTERRUPT); + + if (irq_status & M2P_INTERRUPT_ERROR) { + writel(M2P_INTERRUPT_ERROR, ch->base + M2P_INTERRUPT); + error = 1; + } + + if ((irq_status & (M2P_INTERRUPT_STALL | M2P_INTERRUPT_NFB)) == 0) { + spin_unlock(&ch->lock); + return IRQ_NONE; + } + + switch (m2p_channel_state(ch)) { + case STATE_IDLE: + pr_crit("dma interrupt without a dma buffer\n"); + BUG(); + break; + + case STATE_STALL: + cl->buffer_finished(cl->cookie, ch->buffer_xfer, 0, error); + if (ch->buffer_next != NULL) { + cl->buffer_finished(cl->cookie, ch->buffer_next, + 0, error); + } + choose_buffer_xfer(ch); + choose_buffer_next(ch); + if (ch->buffer_xfer != NULL) + cl->buffer_started(cl->cookie, ch->buffer_xfer); + break; + + case STATE_ON: + cl->buffer_finished(cl->cookie, ch->buffer_xfer, 0, error); + ch->buffer_xfer = ch->buffer_next; + choose_buffer_next(ch); + cl->buffer_started(cl->cookie, ch->buffer_xfer); + break; + + case STATE_NEXT: + pr_crit("dma interrupt while next\n"); + BUG(); + break; + } + + v = readl(ch->base + M2P_CONTROL) & ~(M2P_CONTROL_STALL_IRQ_EN | + M2P_CONTROL_NFB_IRQ_EN); + if (ch->buffer_xfer != NULL) + v |= M2P_CONTROL_STALL_IRQ_EN; + if (ch->buffer_next != NULL) + v |= M2P_CONTROL_NFB_IRQ_EN; + m2p_set_control(ch, v); + + spin_unlock(&ch->lock); + return IRQ_HANDLED; +} + +static struct m2p_channel *find_free_channel(struct ep93xx_dma_m2p_client *cl) +{ + struct m2p_channel *ch; + int i; + + if (cl->flags & EP93XX_DMA_M2P_RX) + ch = m2p_rx; + else + ch = m2p_tx; + + for (i = 0; ch[i].base; i++) { + struct ep93xx_dma_m2p_client *client; + + client = ch[i].client; + if (client != NULL) { + int port; + + port = cl->flags & EP93XX_DMA_M2P_PORT_MASK; + if (port == (client->flags & + EP93XX_DMA_M2P_PORT_MASK)) { + pr_warning("DMA channel already used by %s\n", + cl->name ? : "unknown client"); + return ERR_PTR(-EBUSY); + } + } + } + + for (i = 0; ch[i].base; i++) { + if (ch[i].client == NULL) + return ch + i; + } + + pr_warning("No free DMA channel for %s\n", + cl->name ? : "unknown client"); + return ERR_PTR(-ENODEV); +} + +static void channel_enable(struct m2p_channel *ch) +{ + struct ep93xx_dma_m2p_client *cl = ch->client; + u32 v; + + clk_enable(ch->clk); + + v = cl->flags & EP93XX_DMA_M2P_PORT_MASK; + writel(v, ch->base + M2P_PPALLOC); + + v = cl->flags & EP93XX_DMA_M2P_ERROR_MASK; + v |= M2P_CONTROL_ENABLE | M2P_CONTROL_ERROR_IRQ_EN; + m2p_set_control(ch, v); +} + +static void channel_disable(struct m2p_channel *ch) +{ + u32 v; + + v = readl(ch->base + M2P_CONTROL); + v &= ~(M2P_CONTROL_STALL_IRQ_EN | M2P_CONTROL_NFB_IRQ_EN); + m2p_set_control(ch, v); + + while (m2p_channel_state(ch) >= STATE_ON) + cpu_relax(); + + m2p_set_control(ch, 0x0); + + while (m2p_channel_state(ch) == STATE_STALL) + cpu_relax(); + + clk_disable(ch->clk); +} + +int ep93xx_dma_m2p_client_register(struct ep93xx_dma_m2p_client *cl) +{ + struct m2p_channel *ch; + int err; + + ch = find_free_channel(cl); + if (IS_ERR(ch)) + return PTR_ERR(ch); + + err = request_irq(ch->irq, m2p_irq, 0, cl->name ? : "dma-m2p", ch); + if (err) + return err; + + ch->client = cl; + ch->next_slot = 0; + ch->buffer_xfer = NULL; + ch->buffer_next = NULL; + INIT_LIST_HEAD(&ch->buffers_pending); + + cl->channel = ch; + + channel_enable(ch); + + return 0; +} +EXPORT_SYMBOL_GPL(ep93xx_dma_m2p_client_register); + +void ep93xx_dma_m2p_client_unregister(struct ep93xx_dma_m2p_client *cl) +{ + struct m2p_channel *ch = cl->channel; + + channel_disable(ch); + free_irq(ch->irq, ch); + ch->client = NULL; +} +EXPORT_SYMBOL_GPL(ep93xx_dma_m2p_client_unregister); + +void ep93xx_dma_m2p_submit(struct ep93xx_dma_m2p_client *cl, + struct ep93xx_dma_buffer *buf) +{ + struct m2p_channel *ch = cl->channel; + unsigned long flags; + u32 v; + + spin_lock_irqsave(&ch->lock, flags); + v = readl(ch->base + M2P_CONTROL); + if (ch->buffer_xfer == NULL) { + ch->buffer_xfer = buf; + feed_buf(ch, buf); + cl->buffer_started(cl->cookie, buf); + + v |= M2P_CONTROL_STALL_IRQ_EN; + m2p_set_control(ch, v); + + } else if (ch->buffer_next == NULL) { + ch->buffer_next = buf; + feed_buf(ch, buf); + + v |= M2P_CONTROL_NFB_IRQ_EN; + m2p_set_control(ch, v); + } else { + list_add_tail(&buf->list, &ch->buffers_pending); + } + spin_unlock_irqrestore(&ch->lock, flags); +} +EXPORT_SYMBOL_GPL(ep93xx_dma_m2p_submit); + +void ep93xx_dma_m2p_submit_recursive(struct ep93xx_dma_m2p_client *cl, + struct ep93xx_dma_buffer *buf) +{ + struct m2p_channel *ch = cl->channel; + + list_add_tail(&buf->list, &ch->buffers_pending); +} +EXPORT_SYMBOL_GPL(ep93xx_dma_m2p_submit_recursive); + +void ep93xx_dma_m2p_flush(struct ep93xx_dma_m2p_client *cl) +{ + struct m2p_channel *ch = cl->channel; + + channel_disable(ch); + ch->next_slot = 0; + ch->buffer_xfer = NULL; + ch->buffer_next = NULL; + INIT_LIST_HEAD(&ch->buffers_pending); + channel_enable(ch); +} +EXPORT_SYMBOL_GPL(ep93xx_dma_m2p_flush); + +static int init_channel(struct m2p_channel *ch) +{ + ch->clk = clk_get(NULL, ch->name); + if (IS_ERR(ch->clk)) + return PTR_ERR(ch->clk); + + spin_lock_init(&ch->lock); + ch->client = NULL; + + return 0; +} + +static int __init ep93xx_dma_m2p_init(void) +{ + int i; + int ret; + + for (i = 0; m2p_rx[i].base; i++) { + ret = init_channel(m2p_rx + i); + if (ret) + return ret; + } + + for (i = 0; m2p_tx[i].base; i++) { + ret = init_channel(m2p_tx + i); + if (ret) + return ret; + } + + pr_info("M2P DMA subsystem initialized\n"); + return 0; +} +arch_initcall(ep93xx_dma_m2p_init); diff --git a/trunk/arch/arm/mach-ep93xx/dma.c b/trunk/arch/arm/mach-ep93xx/dma.c deleted file mode 100644 index 5a2570881255..000000000000 --- a/trunk/arch/arm/mach-ep93xx/dma.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * arch/arm/mach-ep93xx/dma.c - * - * Platform support code for the EP93xx dmaengine driver. - * - * Copyright (C) 2011 Mika Westerberg - * - * This work is based on the original dma-m2p implementation with - * following copyrights: - * - * Copyright (C) 2006 Lennert Buytenhek - * Copyright (C) 2006 Applied Data Systems - * Copyright (C) 2009 Ryan Mallon - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at - * your option) any later version. - */ - -#include -#include -#include -#include -#include -#include - -#include -#include - -#define DMA_CHANNEL(_name, _base, _irq) \ - { .name = (_name), .base = (_base), .irq = (_irq) } - -/* - * DMA M2P channels. - * - * On the EP93xx chip the following peripherals my be allocated to the 10 - * Memory to Internal Peripheral (M2P) channels (5 transmit + 5 receive). - * - * I2S contains 3 Tx and 3 Rx DMA Channels - * AAC contains 3 Tx and 3 Rx DMA Channels - * UART1 contains 1 Tx and 1 Rx DMA Channels - * UART2 contains 1 Tx and 1 Rx DMA Channels - * UART3 contains 1 Tx and 1 Rx DMA Channels - * IrDA contains 1 Tx and 1 Rx DMA Channels - * - * Registers are mapped statically in ep93xx_map_io(). - */ -static struct ep93xx_dma_chan_data ep93xx_dma_m2p_channels[] = { - DMA_CHANNEL("m2p0", EP93XX_DMA_BASE + 0x0000, IRQ_EP93XX_DMAM2P0), - DMA_CHANNEL("m2p1", EP93XX_DMA_BASE + 0x0040, IRQ_EP93XX_DMAM2P1), - DMA_CHANNEL("m2p2", EP93XX_DMA_BASE + 0x0080, IRQ_EP93XX_DMAM2P2), - DMA_CHANNEL("m2p3", EP93XX_DMA_BASE + 0x00c0, IRQ_EP93XX_DMAM2P3), - DMA_CHANNEL("m2p4", EP93XX_DMA_BASE + 0x0240, IRQ_EP93XX_DMAM2P4), - DMA_CHANNEL("m2p5", EP93XX_DMA_BASE + 0x0200, IRQ_EP93XX_DMAM2P5), - DMA_CHANNEL("m2p6", EP93XX_DMA_BASE + 0x02c0, IRQ_EP93XX_DMAM2P6), - DMA_CHANNEL("m2p7", EP93XX_DMA_BASE + 0x0280, IRQ_EP93XX_DMAM2P7), - DMA_CHANNEL("m2p8", EP93XX_DMA_BASE + 0x0340, IRQ_EP93XX_DMAM2P8), - DMA_CHANNEL("m2p9", EP93XX_DMA_BASE + 0x0300, IRQ_EP93XX_DMAM2P9), -}; - -static struct ep93xx_dma_platform_data ep93xx_dma_m2p_data = { - .channels = ep93xx_dma_m2p_channels, - .num_channels = ARRAY_SIZE(ep93xx_dma_m2p_channels), -}; - -static struct platform_device ep93xx_dma_m2p_device = { - .name = "ep93xx-dma-m2p", - .id = -1, - .dev = { - .platform_data = &ep93xx_dma_m2p_data, - }, -}; - -/* - * DMA M2M channels. - * - * There are 2 M2M channels which support memcpy/memset and in addition simple - * hardware requests from/to SSP and IDE. We do not implement an external - * hardware requests. - * - * Registers are mapped statically in ep93xx_map_io(). - */ -static struct ep93xx_dma_chan_data ep93xx_dma_m2m_channels[] = { - DMA_CHANNEL("m2m0", EP93XX_DMA_BASE + 0x0100, IRQ_EP93XX_DMAM2M0), - DMA_CHANNEL("m2m1", EP93XX_DMA_BASE + 0x0140, IRQ_EP93XX_DMAM2M1), -}; - -static struct ep93xx_dma_platform_data ep93xx_dma_m2m_data = { - .channels = ep93xx_dma_m2m_channels, - .num_channels = ARRAY_SIZE(ep93xx_dma_m2m_channels), -}; - -static struct platform_device ep93xx_dma_m2m_device = { - .name = "ep93xx-dma-m2m", - .id = -1, - .dev = { - .platform_data = &ep93xx_dma_m2m_data, - }, -}; - -static int __init ep93xx_dma_init(void) -{ - platform_device_register(&ep93xx_dma_m2p_device); - platform_device_register(&ep93xx_dma_m2m_device); - return 0; -} -arch_initcall(ep93xx_dma_init); diff --git a/trunk/drivers/gpio/gpio-ep93xx.c b/trunk/arch/arm/mach-ep93xx/gpio.c similarity index 69% rename from trunk/drivers/gpio/gpio-ep93xx.c rename to trunk/arch/arm/mach-ep93xx/gpio.c index 3bfd3417ab11..415dce37b88c 100644 --- a/trunk/drivers/gpio/gpio-ep93xx.c +++ b/trunk/arch/arm/mach-ep93xx/gpio.c @@ -1,8 +1,9 @@ /* + * linux/arch/arm/mach-ep93xx/gpio.c + * * Generic EP93xx GPIO handling * * Copyright (c) 2008 Ryan Mallon - * Copyright (c) 2011 H Hartley Sweeten * * Based on code originally from: * linux/arch/arm/mach-ep93xx/core.c @@ -12,23 +13,17 @@ * published by the Free Software Foundation. */ -#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +#define pr_fmt(fmt) "ep93xx " KBUILD_MODNAME ": " fmt #include -#include +#include +#include #include #include #include -#include -#include #include -struct ep93xx_gpio { - void __iomem *mmio_base; - struct bgpio_chip bgc[8]; -}; - /************************************************************************* * Interrupt handling for EP93xx on-chip GPIOs *************************************************************************/ @@ -230,7 +225,7 @@ static struct irq_chip ep93xx_gpio_irq_chip = { .irq_set_type = ep93xx_gpio_irq_type, }; -static void ep93xx_gpio_init_irq(void) +void __init ep93xx_gpio_init_irq(void) { int gpio_irq; @@ -265,141 +260,151 @@ static void ep93xx_gpio_init_irq(void) /************************************************************************* * gpiolib interface for EP93xx on-chip GPIOs *************************************************************************/ -struct ep93xx_gpio_bank { - const char *label; - int data; - int dir; - int base; - bool has_debounce; -}; +struct ep93xx_gpio_chip { + struct gpio_chip chip; -#define EP93XX_GPIO_BANK(_label, _data, _dir, _base, _debounce) \ - { \ - .label = _label, \ - .data = _data, \ - .dir = _dir, \ - .base = _base, \ - .has_debounce = _debounce, \ - } - -static struct ep93xx_gpio_bank ep93xx_gpio_banks[] = { - EP93XX_GPIO_BANK("A", 0x00, 0x10, 0, true), - EP93XX_GPIO_BANK("B", 0x04, 0x14, 8, true), - EP93XX_GPIO_BANK("C", 0x08, 0x18, 40, false), - EP93XX_GPIO_BANK("D", 0x0c, 0x1c, 24, false), - EP93XX_GPIO_BANK("E", 0x20, 0x24, 32, false), - EP93XX_GPIO_BANK("F", 0x30, 0x34, 16, true), - EP93XX_GPIO_BANK("G", 0x38, 0x3c, 48, false), - EP93XX_GPIO_BANK("H", 0x40, 0x44, 56, false), + void __iomem *data_reg; + void __iomem *data_dir_reg; }; -static int ep93xx_gpio_set_debounce(struct gpio_chip *chip, - unsigned offset, unsigned debounce) -{ - int gpio = chip->base + offset; - int irq = gpio_to_irq(gpio); +#define to_ep93xx_gpio_chip(c) container_of(c, struct ep93xx_gpio_chip, chip) - if (irq < 0) - return -EINVAL; +static int ep93xx_gpio_direction_input(struct gpio_chip *chip, unsigned offset) +{ + struct ep93xx_gpio_chip *ep93xx_chip = to_ep93xx_gpio_chip(chip); + unsigned long flags; + u8 v; - ep93xx_gpio_int_debounce(irq, debounce ? true : false); + local_irq_save(flags); + v = __raw_readb(ep93xx_chip->data_dir_reg); + v &= ~(1 << offset); + __raw_writeb(v, ep93xx_chip->data_dir_reg); + local_irq_restore(flags); return 0; } -static int ep93xx_gpio_add_bank(struct bgpio_chip *bgc, struct device *dev, - void __iomem *mmio_base, struct ep93xx_gpio_bank *bank) +static int ep93xx_gpio_direction_output(struct gpio_chip *chip, + unsigned offset, int val) { - void __iomem *data = mmio_base + bank->data; - void __iomem *dir = mmio_base + bank->dir; - int err; + struct ep93xx_gpio_chip *ep93xx_chip = to_ep93xx_gpio_chip(chip); + unsigned long flags; + int line; + u8 v; - err = bgpio_init(bgc, dev, 1, data, NULL, NULL, dir, NULL, false); - if (err) - return err; + local_irq_save(flags); - bgc->gc.label = bank->label; - bgc->gc.base = bank->base; + /* Set the value */ + v = __raw_readb(ep93xx_chip->data_reg); + if (val) + v |= (1 << offset); + else + v &= ~(1 << offset); + __raw_writeb(v, ep93xx_chip->data_reg); + + /* Drive as an output */ + line = chip->base + offset; + if (line <= EP93XX_GPIO_LINE_MAX_IRQ) { + /* Ports A/B/F */ + ep93xx_gpio_int_mask(line); + ep93xx_gpio_update_int_params(line >> 3); + } - if (bank->has_debounce) - bgc->gc.set_debounce = ep93xx_gpio_set_debounce; + v = __raw_readb(ep93xx_chip->data_dir_reg); + v |= (1 << offset); + __raw_writeb(v, ep93xx_chip->data_dir_reg); - return gpiochip_add(&bgc->gc); + local_irq_restore(flags); + + return 0; } -static int __devinit ep93xx_gpio_probe(struct platform_device *pdev) +static int ep93xx_gpio_get(struct gpio_chip *chip, unsigned offset) { - struct ep93xx_gpio *ep93xx_gpio; - struct resource *res; - void __iomem *mmio; - int i; - int ret; + struct ep93xx_gpio_chip *ep93xx_chip = to_ep93xx_gpio_chip(chip); - ep93xx_gpio = kzalloc(sizeof(*ep93xx_gpio), GFP_KERNEL); - if (!ep93xx_gpio) - return -ENOMEM; - - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) { - ret = -ENXIO; - goto exit_free; - } - - if (!request_mem_region(res->start, resource_size(res), pdev->name)) { - ret = -EBUSY; - goto exit_free; - } - - mmio = ioremap(res->start, resource_size(res)); - if (!mmio) { - ret = -ENXIO; - goto exit_release; - } - ep93xx_gpio->mmio_base = mmio; + return !!(__raw_readb(ep93xx_chip->data_reg) & (1 << offset)); +} - /* Default all ports to GPIO */ - ep93xx_devcfg_set_bits(EP93XX_SYSCON_DEVCFG_KEYS | - EP93XX_SYSCON_DEVCFG_GONK | - EP93XX_SYSCON_DEVCFG_EONIDE | - EP93XX_SYSCON_DEVCFG_GONIDE | - EP93XX_SYSCON_DEVCFG_HONIDE); +static void ep93xx_gpio_set(struct gpio_chip *chip, unsigned offset, int val) +{ + struct ep93xx_gpio_chip *ep93xx_chip = to_ep93xx_gpio_chip(chip); + unsigned long flags; + u8 v; + + local_irq_save(flags); + v = __raw_readb(ep93xx_chip->data_reg); + if (val) + v |= (1 << offset); + else + v &= ~(1 << offset); + __raw_writeb(v, ep93xx_chip->data_reg); + local_irq_restore(flags); +} - for (i = 0; i < ARRAY_SIZE(ep93xx_gpio_banks); i++) { - struct bgpio_chip *bgc = &ep93xx_gpio->bgc[i]; - struct ep93xx_gpio_bank *bank = &ep93xx_gpio_banks[i]; +static int ep93xx_gpio_set_debounce(struct gpio_chip *chip, + unsigned offset, unsigned debounce) +{ + int gpio = chip->base + offset; + int irq = gpio_to_irq(gpio); - if (ep93xx_gpio_add_bank(bgc, &pdev->dev, mmio, bank)) - dev_warn(&pdev->dev, "Unable to add gpio bank %s\n", - bank->label); - } + if (irq < 0) + return -EINVAL; - ep93xx_gpio_init_irq(); + ep93xx_gpio_int_debounce(irq, debounce ? true : false); return 0; - -exit_release: - release_mem_region(res->start, resource_size(res)); -exit_free: - kfree(ep93xx_gpio); - dev_info(&pdev->dev, "%s failed with errno %d\n", __func__, ret); - return ret; } -static struct platform_driver ep93xx_gpio_driver = { - .driver = { - .name = "gpio-ep93xx", - .owner = THIS_MODULE, - }, - .probe = ep93xx_gpio_probe, +#define EP93XX_GPIO_BANK(name, dr, ddr, base_gpio) \ + { \ + .chip = { \ + .label = name, \ + .direction_input = ep93xx_gpio_direction_input, \ + .direction_output = ep93xx_gpio_direction_output, \ + .get = ep93xx_gpio_get, \ + .set = ep93xx_gpio_set, \ + .base = base_gpio, \ + .ngpio = 8, \ + }, \ + .data_reg = EP93XX_GPIO_REG(dr), \ + .data_dir_reg = EP93XX_GPIO_REG(ddr), \ + } + +static struct ep93xx_gpio_chip ep93xx_gpio_banks[] = { + EP93XX_GPIO_BANK("A", 0x00, 0x10, 0), + EP93XX_GPIO_BANK("B", 0x04, 0x14, 8), + EP93XX_GPIO_BANK("C", 0x08, 0x18, 40), + EP93XX_GPIO_BANK("D", 0x0c, 0x1c, 24), + EP93XX_GPIO_BANK("E", 0x20, 0x24, 32), + EP93XX_GPIO_BANK("F", 0x30, 0x34, 16), + EP93XX_GPIO_BANK("G", 0x38, 0x3c, 48), + EP93XX_GPIO_BANK("H", 0x40, 0x44, 56), }; -static int __init ep93xx_gpio_init(void) +void __init ep93xx_gpio_init(void) { - return platform_driver_register(&ep93xx_gpio_driver); -} -postcore_initcall(ep93xx_gpio_init); + int i; + + /* Set Ports C, D, E, G, and H for GPIO use */ + ep93xx_devcfg_set_bits(EP93XX_SYSCON_DEVCFG_KEYS | + EP93XX_SYSCON_DEVCFG_GONK | + EP93XX_SYSCON_DEVCFG_EONIDE | + EP93XX_SYSCON_DEVCFG_GONIDE | + EP93XX_SYSCON_DEVCFG_HONIDE); -MODULE_AUTHOR("Ryan Mallon " - "H Hartley Sweeten "); -MODULE_DESCRIPTION("EP93XX GPIO driver"); -MODULE_LICENSE("GPL"); + for (i = 0; i < ARRAY_SIZE(ep93xx_gpio_banks); i++) { + struct gpio_chip *chip = &ep93xx_gpio_banks[i].chip; + + /* + * Ports A, B, and F support input debouncing when + * used as interrupts. + */ + if (!strcmp(chip->label, "A") || + !strcmp(chip->label, "B") || + !strcmp(chip->label, "F")) + chip->set_debounce = ep93xx_gpio_set_debounce; + + gpiochip_add(chip); + } +} diff --git a/trunk/arch/arm/mach-ep93xx/include/mach/dma.h b/trunk/arch/arm/mach-ep93xx/include/mach/dma.h index 46d4d876e6fb..5e31b2b25da9 100644 --- a/trunk/arch/arm/mach-ep93xx/include/mach/dma.h +++ b/trunk/arch/arm/mach-ep93xx/include/mach/dma.h @@ -1,93 +1,149 @@ +/** + * DOC: EP93xx DMA M2P memory to peripheral and peripheral to memory engine + * + * The EP93xx DMA M2P subsystem handles DMA transfers between memory and + * peripherals. DMA M2P channels are available for audio, UARTs and IrDA. + * See chapter 10 of the EP93xx users guide for full details on the DMA M2P + * engine. + * + * See sound/soc/ep93xx/ep93xx-pcm.c for an example use of the DMA M2P code. + * + */ + #ifndef __ASM_ARCH_DMA_H #define __ASM_ARCH_DMA_H +#include #include -#include -#include -/* - * M2P channels. +/** + * struct ep93xx_dma_buffer - Information about a buffer to be transferred + * using the DMA M2P engine * - * Note that these values are also directly used for setting the PPALLOC - * register. + * @list: Entry in DMA buffer list + * @bus_addr: Physical address of the buffer + * @size: Size of the buffer in bytes */ -#define EP93XX_DMA_I2S1 0 -#define EP93XX_DMA_I2S2 1 -#define EP93XX_DMA_AAC1 2 -#define EP93XX_DMA_AAC2 3 -#define EP93XX_DMA_AAC3 4 -#define EP93XX_DMA_I2S3 5 -#define EP93XX_DMA_UART1 6 -#define EP93XX_DMA_UART2 7 -#define EP93XX_DMA_UART3 8 -#define EP93XX_DMA_IRDA 9 -/* M2M channels */ -#define EP93XX_DMA_SSP 10 -#define EP93XX_DMA_IDE 11 +struct ep93xx_dma_buffer { + struct list_head list; + u32 bus_addr; + u16 size; +}; /** - * struct ep93xx_dma_data - configuration data for the EP93xx dmaengine - * @port: peripheral which is requesting the channel - * @direction: TX/RX channel - * @name: optional name for the channel, this is displayed in /proc/interrupts - * - * This information is passed as private channel parameter in a filter - * function. Note that this is only needed for slave/cyclic channels. For - * memcpy channels %NULL data should be passed. + * struct ep93xx_dma_m2p_client - Information about a DMA M2P client + * + * @name: Unique name for this client + * @flags: Client flags + * @cookie: User data to pass to callback functions + * @buffer_started: Non NULL function to call when a transfer is started. + * The arguments are the user data cookie and the DMA + * buffer which is starting. + * @buffer_finished: Non NULL function to call when a transfer is completed. + * The arguments are the user data cookie, the DMA buffer + * which has completed, and a boolean flag indicating if + * the transfer had an error. */ -struct ep93xx_dma_data { - int port; - enum dma_data_direction direction; - const char *name; +struct ep93xx_dma_m2p_client { + char *name; + u8 flags; + void *cookie; + void (*buffer_started)(void *cookie, + struct ep93xx_dma_buffer *buf); + void (*buffer_finished)(void *cookie, + struct ep93xx_dma_buffer *buf, + int bytes, int error); + + /* private: Internal use only */ + void *channel; }; +/* DMA M2P ports */ +#define EP93XX_DMA_M2P_PORT_I2S1 0x00 +#define EP93XX_DMA_M2P_PORT_I2S2 0x01 +#define EP93XX_DMA_M2P_PORT_AAC1 0x02 +#define EP93XX_DMA_M2P_PORT_AAC2 0x03 +#define EP93XX_DMA_M2P_PORT_AAC3 0x04 +#define EP93XX_DMA_M2P_PORT_I2S3 0x05 +#define EP93XX_DMA_M2P_PORT_UART1 0x06 +#define EP93XX_DMA_M2P_PORT_UART2 0x07 +#define EP93XX_DMA_M2P_PORT_UART3 0x08 +#define EP93XX_DMA_M2P_PORT_IRDA 0x09 +#define EP93XX_DMA_M2P_PORT_MASK 0x0f + +/* DMA M2P client flags */ +#define EP93XX_DMA_M2P_TX 0x00 /* Memory to peripheral */ +#define EP93XX_DMA_M2P_RX 0x10 /* Peripheral to memory */ + +/* + * DMA M2P client error handling flags. See the EP93xx users guide + * documentation on the DMA M2P CONTROL register for more details + */ +#define EP93XX_DMA_M2P_ABORT_ON_ERROR 0x20 /* Abort on peripheral error */ +#define EP93XX_DMA_M2P_IGNORE_ERROR 0x40 /* Ignore peripheral errors */ +#define EP93XX_DMA_M2P_ERROR_MASK 0x60 /* Mask of error bits */ + /** - * struct ep93xx_dma_chan_data - platform specific data for a DMA channel - * @name: name of the channel, used for getting the right clock for the channel - * @base: mapped registers - * @irq: interrupt number used by this channel + * ep93xx_dma_m2p_client_register - Register a client with the DMA M2P + * subsystem + * + * @m2p: Client information to register + * returns 0 on success + * + * The DMA M2P subsystem allocates a channel and an interrupt line for the DMA + * client */ -struct ep93xx_dma_chan_data { - const char *name; - void __iomem *base; - int irq; -}; +int ep93xx_dma_m2p_client_register(struct ep93xx_dma_m2p_client *m2p); /** - * struct ep93xx_dma_platform_data - platform data for the dmaengine driver - * @channels: array of channels which are passed to the driver - * @num_channels: number of channels in the array + * ep93xx_dma_m2p_client_unregister - Unregister a client from the DMA M2P + * subsystem + * + * @m2p: Client to unregister * - * This structure is passed to the DMA engine driver via platform data. For - * M2P channels, contract is that even channels are for TX and odd for RX. - * There is no requirement for the M2M channels. + * Any transfers currently in progress will be completed in hardware, but + * ignored in software. */ -struct ep93xx_dma_platform_data { - struct ep93xx_dma_chan_data *channels; - size_t num_channels; -}; +void ep93xx_dma_m2p_client_unregister(struct ep93xx_dma_m2p_client *m2p); -static inline bool ep93xx_dma_chan_is_m2p(struct dma_chan *chan) -{ - return !strcmp(dev_name(chan->device->dev), "ep93xx-dma-m2p"); -} +/** + * ep93xx_dma_m2p_submit - Submit a DMA M2P transfer + * + * @m2p: DMA Client to submit the transfer on + * @buf: DMA Buffer to submit + * + * If the current or next transfer positions are free on the M2P client then + * the transfer is started immediately. If not, the transfer is added to the + * list of pending transfers. This function must not be called from the + * buffer_finished callback for an M2P channel. + * + */ +void ep93xx_dma_m2p_submit(struct ep93xx_dma_m2p_client *m2p, + struct ep93xx_dma_buffer *buf); /** - * ep93xx_dma_chan_direction - returns direction the channel can be used - * @chan: channel + * ep93xx_dma_m2p_submit_recursive - Put a DMA transfer on the pending list + * for an M2P channel * - * This function can be used in filter functions to find out whether the - * channel supports given DMA direction. Only M2P channels have such - * limitation, for M2M channels the direction is configurable. + * @m2p: DMA Client to submit the transfer on + * @buf: DMA Buffer to submit + * + * This function must only be called from the buffer_finished callback for an + * M2P channel. It is commonly used to add the next transfer in a chained list + * of DMA transfers. */ -static inline enum dma_data_direction -ep93xx_dma_chan_direction(struct dma_chan *chan) -{ - if (!ep93xx_dma_chan_is_m2p(chan)) - return DMA_NONE; +void ep93xx_dma_m2p_submit_recursive(struct ep93xx_dma_m2p_client *m2p, + struct ep93xx_dma_buffer *buf); - /* even channels are for TX, odd for RX */ - return (chan->chan_id % 2 == 0) ? DMA_TO_DEVICE : DMA_FROM_DEVICE; -} +/** + * ep93xx_dma_m2p_flush - Flush all pending transfers on a DMA M2P client + * + * @m2p: DMA client to flush transfers on + * + * Any transfers currently in progress will be completed in hardware, but + * ignored in software. + * + */ +void ep93xx_dma_m2p_flush(struct ep93xx_dma_m2p_client *m2p); #endif /* __ASM_ARCH_DMA_H */ diff --git a/trunk/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h b/trunk/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h index c4a7b84ef06d..9ac4d1055097 100644 --- a/trunk/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h +++ b/trunk/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h @@ -98,7 +98,6 @@ #define EP93XX_SECURITY_BASE EP93XX_APB_IOMEM(0x00030000) -#define EP93XX_GPIO_PHYS_BASE EP93XX_APB_PHYS(0x00040000) #define EP93XX_GPIO_BASE EP93XX_APB_IOMEM(0x00040000) #define EP93XX_GPIO_REG(x) (EP93XX_GPIO_BASE + (x)) #define EP93XX_GPIO_F_INT_STATUS EP93XX_GPIO_REG(0x5c) diff --git a/trunk/arch/arm/mach-ep93xx/include/mach/ep93xx_spi.h b/trunk/arch/arm/mach-ep93xx/include/mach/ep93xx_spi.h index 9bb63ac13f04..0a37961b3453 100644 --- a/trunk/arch/arm/mach-ep93xx/include/mach/ep93xx_spi.h +++ b/trunk/arch/arm/mach-ep93xx/include/mach/ep93xx_spi.h @@ -7,11 +7,9 @@ struct spi_device; * struct ep93xx_spi_info - EP93xx specific SPI descriptor * @num_chipselect: number of chip selects on this board, must be * at least one - * @use_dma: use DMA for the transfers */ struct ep93xx_spi_info { int num_chipselect; - bool use_dma; }; /** diff --git a/trunk/arch/arm/mach-imx/clock-imx25.c b/trunk/arch/arm/mach-imx/clock-imx25.c index af1c580b06bc..a65838fc061c 100644 --- a/trunk/arch/arm/mach-imx/clock-imx25.c +++ b/trunk/arch/arm/mach-imx/clock-imx25.c @@ -282,10 +282,9 @@ static struct clk_lookup lookups[] = { _REGISTER_CLOCK("mxc-ehci.2", "usb", usbotg_clk) _REGISTER_CLOCK("fsl-usb2-udc", "usb", usbotg_clk) _REGISTER_CLOCK("mxc_nand.0", NULL, nfc_clk) - /* i.mx25 has the i.mx35 type cspi */ - _REGISTER_CLOCK("imx35-cspi.0", NULL, cspi1_clk) - _REGISTER_CLOCK("imx35-cspi.1", NULL, cspi2_clk) - _REGISTER_CLOCK("imx35-cspi.2", NULL, cspi3_clk) + _REGISTER_CLOCK("imx25-cspi.0", NULL, cspi1_clk) + _REGISTER_CLOCK("imx25-cspi.1", NULL, cspi2_clk) + _REGISTER_CLOCK("imx25-cspi.2", NULL, cspi3_clk) _REGISTER_CLOCK("mxc_pwm.0", NULL, pwm1_clk) _REGISTER_CLOCK("mxc_pwm.1", NULL, pwm2_clk) _REGISTER_CLOCK("mxc_pwm.2", NULL, pwm3_clk) diff --git a/trunk/arch/arm/mach-imx/dma-v1.c b/trunk/arch/arm/mach-imx/dma-v1.c index f8aa5be0eb15..236f1495efad 100644 --- a/trunk/arch/arm/mach-imx/dma-v1.c +++ b/trunk/arch/arm/mach-imx/dma-v1.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/arch/arm/mach-imx/mach-apf9328.c b/trunk/arch/arm/mach-imx/mach-apf9328.c index 59d2a3b137d9..15e45c84e371 100644 --- a/trunk/arch/arm/mach-imx/mach-apf9328.c +++ b/trunk/arch/arm/mach-imx/mach-apf9328.c @@ -115,8 +115,6 @@ static struct platform_device *devices[] __initdata = { static void __init apf9328_init(void) { - imx1_soc_init(); - mxc_gpio_setup_multiple_pins(apf9328_pins, ARRAY_SIZE(apf9328_pins), "APF9328"); diff --git a/trunk/arch/arm/mach-imx/mach-armadillo5x0.c b/trunk/arch/arm/mach-imx/mach-armadillo5x0.c index ede2710f8b76..ffb40ff619b1 100644 --- a/trunk/arch/arm/mach-imx/mach-armadillo5x0.c +++ b/trunk/arch/arm/mach-imx/mach-armadillo5x0.c @@ -490,8 +490,6 @@ static struct platform_device *devices[] __initdata = { */ static void __init armadillo5x0_init(void) { - imx31_soc_init(); - mxc_iomux_setup_multiple_pins(armadillo5x0_pins, ARRAY_SIZE(armadillo5x0_pins), "armadillo5x0"); diff --git a/trunk/arch/arm/mach-imx/mach-bug.c b/trunk/arch/arm/mach-imx/mach-bug.c index f49470553bdf..42e4f078a19c 100644 --- a/trunk/arch/arm/mach-imx/mach-bug.c +++ b/trunk/arch/arm/mach-imx/mach-bug.c @@ -42,8 +42,6 @@ static const unsigned int bug_pins[] __initconst = { static void __init bug_board_init(void) { - imx31_soc_init(); - mxc_iomux_setup_multiple_pins(bug_pins, ARRAY_SIZE(bug_pins), "uart-4"); imx31_add_imx_uart4(&uart_pdata); diff --git a/trunk/arch/arm/mach-imx/mach-cpuimx27.c b/trunk/arch/arm/mach-imx/mach-cpuimx27.c index 87887ac5806b..46a2e41d43d2 100644 --- a/trunk/arch/arm/mach-imx/mach-cpuimx27.c +++ b/trunk/arch/arm/mach-imx/mach-cpuimx27.c @@ -250,8 +250,6 @@ __setup("otg_mode=", eukrea_cpuimx27_otg_mode); static void __init eukrea_cpuimx27_init(void) { - imx27_soc_init(); - mxc_gpio_setup_multiple_pins(eukrea_cpuimx27_pins, ARRAY_SIZE(eukrea_cpuimx27_pins), "CPUIMX27"); diff --git a/trunk/arch/arm/mach-imx/mach-cpuimx35.c b/trunk/arch/arm/mach-imx/mach-cpuimx35.c index f39a478ba1a6..3f8ef825fa6f 100644 --- a/trunk/arch/arm/mach-imx/mach-cpuimx35.c +++ b/trunk/arch/arm/mach-imx/mach-cpuimx35.c @@ -156,8 +156,6 @@ __setup("otg_mode=", eukrea_cpuimx35_otg_mode); */ static void __init eukrea_cpuimx35_init(void) { - imx35_soc_init(); - mxc_iomux_v3_setup_multiple_pads(eukrea_cpuimx35_pads, ARRAY_SIZE(eukrea_cpuimx35_pads)); diff --git a/trunk/arch/arm/mach-imx/mach-eukrea_cpuimx25.c b/trunk/arch/arm/mach-imx/mach-eukrea_cpuimx25.c index da36da52969d..148cff2819b9 100644 --- a/trunk/arch/arm/mach-imx/mach-eukrea_cpuimx25.c +++ b/trunk/arch/arm/mach-imx/mach-eukrea_cpuimx25.c @@ -125,8 +125,6 @@ __setup("otg_mode=", eukrea_cpuimx25_otg_mode); static void __init eukrea_cpuimx25_init(void) { - imx25_soc_init(); - if (mxc_iomux_v3_setup_multiple_pads(eukrea_cpuimx25_pads, ARRAY_SIZE(eukrea_cpuimx25_pads))) printk(KERN_ERR "error setting cpuimx25 pads !\n"); diff --git a/trunk/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/trunk/arch/arm/mach-imx/mach-imx27_visstrim_m10.c index c6269d60ddbc..7ae43b1ec517 100644 --- a/trunk/arch/arm/mach-imx/mach-imx27_visstrim_m10.c +++ b/trunk/arch/arm/mach-imx/mach-imx27_visstrim_m10.c @@ -231,8 +231,6 @@ static void __init visstrim_m10_board_init(void) { int ret; - imx27_soc_init(); - ret = mxc_gpio_setup_multiple_pins(visstrim_m10_pins, ARRAY_SIZE(visstrim_m10_pins), "VISSTRIM_M10"); if (ret) diff --git a/trunk/arch/arm/mach-imx/mach-imx27ipcam.c b/trunk/arch/arm/mach-imx/mach-imx27ipcam.c index 272f793e9247..9be6cd6fbf8c 100644 --- a/trunk/arch/arm/mach-imx/mach-imx27ipcam.c +++ b/trunk/arch/arm/mach-imx/mach-imx27ipcam.c @@ -50,8 +50,6 @@ static const int mx27ipcam_pins[] __initconst = { static void __init mx27ipcam_init(void) { - imx27_soc_init(); - mxc_gpio_setup_multiple_pins(mx27ipcam_pins, ARRAY_SIZE(mx27ipcam_pins), "mx27ipcam"); diff --git a/trunk/arch/arm/mach-imx/mach-imx27lite.c b/trunk/arch/arm/mach-imx/mach-imx27lite.c index d81a769fe895..841140516ede 100644 --- a/trunk/arch/arm/mach-imx/mach-imx27lite.c +++ b/trunk/arch/arm/mach-imx/mach-imx27lite.c @@ -59,8 +59,6 @@ static const struct imxuart_platform_data uart_pdata __initconst = { static void __init mx27lite_init(void) { - imx27_soc_init(); - mxc_gpio_setup_multiple_pins(mx27lite_pins, ARRAY_SIZE(mx27lite_pins), "imx27lite"); imx27_add_imx_uart0(&uart_pdata); diff --git a/trunk/arch/arm/mach-imx/mach-kzm_arm11_01.c b/trunk/arch/arm/mach-imx/mach-kzm_arm11_01.c index e472a1d88058..1ecae20cf4e3 100644 --- a/trunk/arch/arm/mach-imx/mach-kzm_arm11_01.c +++ b/trunk/arch/arm/mach-imx/mach-kzm_arm11_01.c @@ -223,8 +223,6 @@ static int kzm_pins[] __initdata = { */ static void __init kzm_board_init(void) { - imx31_soc_init(); - mxc_iomux_setup_multiple_pins(kzm_pins, ARRAY_SIZE(kzm_pins), "kzm"); kzm_init_ext_uart(); diff --git a/trunk/arch/arm/mach-imx/mach-mx1ads.c b/trunk/arch/arm/mach-imx/mach-mx1ads.c index 5cd8bee46960..38ec5cbbda9b 100644 --- a/trunk/arch/arm/mach-imx/mach-mx1ads.c +++ b/trunk/arch/arm/mach-imx/mach-mx1ads.c @@ -115,8 +115,6 @@ static struct i2c_board_info mx1ads_i2c_devices[] = { */ static void __init mx1ads_init(void) { - imx1_soc_init(); - mxc_gpio_setup_multiple_pins(mx1ads_pins, ARRAY_SIZE(mx1ads_pins), "mx1ads"); diff --git a/trunk/arch/arm/mach-imx/mach-mx21ads.c b/trunk/arch/arm/mach-imx/mach-mx21ads.c index d389ecf9b5a8..74ac88978ddd 100644 --- a/trunk/arch/arm/mach-imx/mach-mx21ads.c +++ b/trunk/arch/arm/mach-imx/mach-mx21ads.c @@ -279,8 +279,6 @@ static struct platform_device *platform_devices[] __initdata = { static void __init mx21ads_board_init(void) { - imx21_soc_init(); - mxc_gpio_setup_multiple_pins(mx21ads_pins, ARRAY_SIZE(mx21ads_pins), "mx21ads"); diff --git a/trunk/arch/arm/mach-imx/mach-mx25_3ds.c b/trunk/arch/arm/mach-imx/mach-mx25_3ds.c index 01534bb61305..58ea3fdf0911 100644 --- a/trunk/arch/arm/mach-imx/mach-mx25_3ds.c +++ b/trunk/arch/arm/mach-imx/mach-mx25_3ds.c @@ -219,8 +219,6 @@ static const struct esdhc_platform_data mx25pdk_esdhc_pdata __initconst = { static void __init mx25pdk_init(void) { - imx25_soc_init(); - mxc_iomux_v3_setup_multiple_pads(mx25pdk_pads, ARRAY_SIZE(mx25pdk_pads)); diff --git a/trunk/arch/arm/mach-imx/mach-mx27_3ds.c b/trunk/arch/arm/mach-imx/mach-mx27_3ds.c index 117ce0a50f4e..6e1accf93f81 100644 --- a/trunk/arch/arm/mach-imx/mach-mx27_3ds.c +++ b/trunk/arch/arm/mach-imx/mach-mx27_3ds.c @@ -267,8 +267,6 @@ static const struct imxi2c_platform_data mx27_3ds_i2c0_data __initconst = { static void __init mx27pdk_init(void) { - imx27_soc_init(); - mxc_gpio_setup_multiple_pins(mx27pdk_pins, ARRAY_SIZE(mx27pdk_pins), "mx27pdk"); mx27_3ds_sdhc1_enable_level_translator(); diff --git a/trunk/arch/arm/mach-imx/mach-mx27ads.c b/trunk/arch/arm/mach-imx/mach-mx27ads.c index fc26ed71b9ed..1db79506f5e4 100644 --- a/trunk/arch/arm/mach-imx/mach-mx27ads.c +++ b/trunk/arch/arm/mach-imx/mach-mx27ads.c @@ -288,8 +288,6 @@ static const struct imxuart_platform_data uart_pdata __initconst = { static void __init mx27ads_board_init(void) { - imx27_soc_init(); - mxc_gpio_setup_multiple_pins(mx27ads_pins, ARRAY_SIZE(mx27ads_pins), "mx27ads"); diff --git a/trunk/arch/arm/mach-imx/mach-mx31_3ds.c b/trunk/arch/arm/mach-imx/mach-mx31_3ds.c index 441fbb83f39c..9b982449cb52 100644 --- a/trunk/arch/arm/mach-imx/mach-mx31_3ds.c +++ b/trunk/arch/arm/mach-imx/mach-mx31_3ds.c @@ -13,7 +13,6 @@ */ #include -#include #include #include #include @@ -690,8 +689,6 @@ static void __init mx31_3ds_init(void) { int ret; - imx31_soc_init(); - mxc_iomux_setup_multiple_pins(mx31_3ds_pins, ARRAY_SIZE(mx31_3ds_pins), "mx31_3ds"); diff --git a/trunk/arch/arm/mach-imx/mach-mx31ads.c b/trunk/arch/arm/mach-imx/mach-mx31ads.c index 0ce49478a479..f4dee0254634 100644 --- a/trunk/arch/arm/mach-imx/mach-mx31ads.c +++ b/trunk/arch/arm/mach-imx/mach-mx31ads.c @@ -516,8 +516,6 @@ static void __init mx31ads_init_irq(void) static void __init mx31ads_init(void) { - imx31_soc_init(); - mxc_init_extuart(); mxc_init_imx_uart(); mxc_init_i2c(); diff --git a/trunk/arch/arm/mach-imx/mach-mx31lilly.c b/trunk/arch/arm/mach-imx/mach-mx31lilly.c index 750368ddf0f9..410e676ae087 100644 --- a/trunk/arch/arm/mach-imx/mach-mx31lilly.c +++ b/trunk/arch/arm/mach-imx/mach-mx31lilly.c @@ -243,8 +243,6 @@ core_param(mx31lilly_baseboard, mx31lilly_baseboard, int, 0444); static void __init mx31lilly_board_init(void) { - imx31_soc_init(); - switch (mx31lilly_baseboard) { case MX31LILLY_NOBOARD: break; diff --git a/trunk/arch/arm/mach-imx/mach-mx31lite.c b/trunk/arch/arm/mach-imx/mach-mx31lite.c index 4b47fd9fdd89..ac9b4cad320e 100644 --- a/trunk/arch/arm/mach-imx/mach-mx31lite.c +++ b/trunk/arch/arm/mach-imx/mach-mx31lite.c @@ -230,8 +230,6 @@ static void __init mx31lite_init(void) { int ret; - imx31_soc_init(); - switch (mx31lite_baseboard) { case MX31LITE_NOBOARD: break; diff --git a/trunk/arch/arm/mach-imx/mach-mx31moboard.c b/trunk/arch/arm/mach-imx/mach-mx31moboard.c index a52fd36e2b52..eaa51e49ca95 100644 --- a/trunk/arch/arm/mach-imx/mach-mx31moboard.c +++ b/trunk/arch/arm/mach-imx/mach-mx31moboard.c @@ -507,8 +507,6 @@ core_param(mx31moboard_baseboard, mx31moboard_baseboard, int, 0444); */ static void __init mx31moboard_init(void) { - imx31_soc_init(); - mxc_iomux_setup_multiple_pins(moboard_pins, ARRAY_SIZE(moboard_pins), "moboard"); diff --git a/trunk/arch/arm/mach-imx/mach-mx35_3ds.c b/trunk/arch/arm/mach-imx/mach-mx35_3ds.c index 48b3c6fd5cf0..882880ac1bbc 100644 --- a/trunk/arch/arm/mach-imx/mach-mx35_3ds.c +++ b/trunk/arch/arm/mach-imx/mach-mx35_3ds.c @@ -179,8 +179,6 @@ static const struct imxi2c_platform_data mx35_3ds_i2c0_data __initconst = { */ static void __init mx35_3ds_init(void) { - imx35_soc_init(); - mxc_iomux_v3_setup_multiple_pads(mx35pdk_pads, ARRAY_SIZE(mx35pdk_pads)); imx35_add_fec(NULL); diff --git a/trunk/arch/arm/mach-imx/mach-mxt_td60.c b/trunk/arch/arm/mach-imx/mach-mxt_td60.c index c85876fed663..2774541511e7 100644 --- a/trunk/arch/arm/mach-imx/mach-mxt_td60.c +++ b/trunk/arch/arm/mach-imx/mach-mxt_td60.c @@ -233,8 +233,6 @@ static const struct imxuart_platform_data uart_pdata __initconst = { static void __init mxt_td60_board_init(void) { - imx27_soc_init(); - mxc_gpio_setup_multiple_pins(mxt_td60_pins, ARRAY_SIZE(mxt_td60_pins), "MXT_TD60"); diff --git a/trunk/arch/arm/mach-imx/mach-pca100.c b/trunk/arch/arm/mach-imx/mach-pca100.c index 71083aa16038..bbddc5a11c43 100644 --- a/trunk/arch/arm/mach-imx/mach-pca100.c +++ b/trunk/arch/arm/mach-imx/mach-pca100.c @@ -357,8 +357,6 @@ static void __init pca100_init(void) { int ret; - imx27_soc_init(); - /* SSI unit */ mxc_audmux_v1_configure_port(MX27_AUDMUX_HPCR1_SSI0, MXC_AUDMUX_V1_PCR_SYN | /* 4wire mode */ diff --git a/trunk/arch/arm/mach-imx/mach-pcm037.c b/trunk/arch/arm/mach-imx/mach-pcm037.c index f45b7cd72c8a..89c213b81295 100644 --- a/trunk/arch/arm/mach-imx/mach-pcm037.c +++ b/trunk/arch/arm/mach-imx/mach-pcm037.c @@ -576,8 +576,6 @@ static void __init pcm037_init(void) { int ret; - imx31_soc_init(); - mxc_iomux_set_gpr(MUX_PGP_UH2, 1); mxc_iomux_setup_multiple_pins(pcm037_pins, ARRAY_SIZE(pcm037_pins), diff --git a/trunk/arch/arm/mach-imx/mach-pcm038.c b/trunk/arch/arm/mach-imx/mach-pcm038.c index 2d6a64bbac44..853bb871c7ed 100644 --- a/trunk/arch/arm/mach-imx/mach-pcm038.c +++ b/trunk/arch/arm/mach-imx/mach-pcm038.c @@ -295,8 +295,6 @@ static const struct mxc_usbh_platform_data usbh2_pdata __initconst = { static void __init pcm038_init(void) { - imx27_soc_init(); - mxc_gpio_setup_multiple_pins(pcm038_pins, ARRAY_SIZE(pcm038_pins), "PCM038"); diff --git a/trunk/arch/arm/mach-imx/mach-pcm043.c b/trunk/arch/arm/mach-imx/mach-pcm043.c index 163cc318cafb..026441628dfa 100644 --- a/trunk/arch/arm/mach-imx/mach-pcm043.c +++ b/trunk/arch/arm/mach-imx/mach-pcm043.c @@ -356,8 +356,6 @@ static struct esdhc_platform_data sd1_pdata = { */ static void __init pcm043_init(void) { - imx35_soc_init(); - mxc_iomux_v3_setup_multiple_pads(pcm043_pads, ARRAY_SIZE(pcm043_pads)); mxc_audmux_v2_configure_port(3, diff --git a/trunk/arch/arm/mach-imx/mach-qong.c b/trunk/arch/arm/mach-imx/mach-qong.c index 3626f486498a..c16328715939 100644 --- a/trunk/arch/arm/mach-imx/mach-qong.c +++ b/trunk/arch/arm/mach-imx/mach-qong.c @@ -244,8 +244,6 @@ static void __init qong_init_fpga(void) */ static void __init qong_init(void) { - imx31_soc_init(); - mxc_init_imx_uart(); qong_init_nor_mtd(); qong_init_fpga(); diff --git a/trunk/arch/arm/mach-imx/mach-scb9328.c b/trunk/arch/arm/mach-imx/mach-scb9328.c index 82805260e19c..dcaee043628e 100644 --- a/trunk/arch/arm/mach-imx/mach-scb9328.c +++ b/trunk/arch/arm/mach-imx/mach-scb9328.c @@ -129,8 +129,6 @@ static struct platform_device *devices[] __initdata = { */ static void __init scb9328_init(void) { - imx1_soc_init(); - imx1_add_imx_uart0(&uart_pdata); printk(KERN_INFO"Scb9328: Adding devices\n"); diff --git a/trunk/arch/arm/mach-imx/mach-vpr200.c b/trunk/arch/arm/mach-imx/mach-vpr200.c index 7d8e012a6335..d74e3473d236 100644 --- a/trunk/arch/arm/mach-imx/mach-vpr200.c +++ b/trunk/arch/arm/mach-imx/mach-vpr200.c @@ -267,8 +267,6 @@ static struct platform_device *devices[] __initdata = { */ static void __init vpr200_board_init(void) { - imx35_soc_init(); - mxc_iomux_v3_setup_multiple_pads(vpr200_pads, ARRAY_SIZE(vpr200_pads)); imx35_add_fec(NULL); diff --git a/trunk/arch/arm/mach-imx/mm-imx1.c b/trunk/arch/arm/mach-imx/mm-imx1.c index 2bded591d5c2..2e482ba5a0e7 100644 --- a/trunk/arch/arm/mach-imx/mm-imx1.c +++ b/trunk/arch/arm/mach-imx/mm-imx1.c @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -43,19 +44,15 @@ void __init imx1_init_early(void) MX1_NUM_GPIO_PORT); } +static struct mxc_gpio_port imx1_gpio_ports[] = { + DEFINE_IMX_GPIO_PORT_IRQ(MX1, 0, 1, MX1_GPIO_INT_PORTA), + DEFINE_IMX_GPIO_PORT_IRQ(MX1, 1, 2, MX1_GPIO_INT_PORTB), + DEFINE_IMX_GPIO_PORT_IRQ(MX1, 2, 3, MX1_GPIO_INT_PORTC), + DEFINE_IMX_GPIO_PORT_IRQ(MX1, 3, 4, MX1_GPIO_INT_PORTD), +}; + void __init mx1_init_irq(void) { mxc_init_irq(MX1_IO_ADDRESS(MX1_AVIC_BASE_ADDR)); -} - -void __init imx1_soc_init(void) -{ - mxc_register_gpio("imx1-gpio", 0, MX1_GPIO1_BASE_ADDR, SZ_256, - MX1_GPIO_INT_PORTA, 0); - mxc_register_gpio("imx1-gpio", 1, MX1_GPIO2_BASE_ADDR, SZ_256, - MX1_GPIO_INT_PORTB, 0); - mxc_register_gpio("imx1-gpio", 2, MX1_GPIO3_BASE_ADDR, SZ_256, - MX1_GPIO_INT_PORTC, 0); - mxc_register_gpio("imx1-gpio", 3, MX1_GPIO4_BASE_ADDR, SZ_256, - MX1_GPIO_INT_PORTD, 0); + mxc_gpio_init(imx1_gpio_ports, ARRAY_SIZE(imx1_gpio_ports)); } diff --git a/trunk/arch/arm/mach-imx/mm-imx21.c b/trunk/arch/arm/mach-imx/mm-imx21.c index 6d7d518686a5..7a0c500ac2c8 100644 --- a/trunk/arch/arm/mach-imx/mm-imx21.c +++ b/trunk/arch/arm/mach-imx/mm-imx21.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -69,17 +70,17 @@ void __init imx21_init_early(void) MX21_NUM_GPIO_PORT); } +static struct mxc_gpio_port imx21_gpio_ports[] = { + DEFINE_IMX_GPIO_PORT_IRQ(MX21, 0, 1, MX21_INT_GPIO), + DEFINE_IMX_GPIO_PORT(MX21, 1, 2), + DEFINE_IMX_GPIO_PORT(MX21, 2, 3), + DEFINE_IMX_GPIO_PORT(MX21, 3, 4), + DEFINE_IMX_GPIO_PORT(MX21, 4, 5), + DEFINE_IMX_GPIO_PORT(MX21, 5, 6), +}; + void __init mx21_init_irq(void) { mxc_init_irq(MX21_IO_ADDRESS(MX21_AVIC_BASE_ADDR)); -} - -void __init imx21_soc_init(void) -{ - mxc_register_gpio("imx21-gpio", 0, MX21_GPIO1_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); - mxc_register_gpio("imx21-gpio", 1, MX21_GPIO2_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); - mxc_register_gpio("imx21-gpio", 2, MX21_GPIO3_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); - mxc_register_gpio("imx21-gpio", 3, MX21_GPIO4_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); - mxc_register_gpio("imx21-gpio", 4, MX21_GPIO5_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); - mxc_register_gpio("imx21-gpio", 5, MX21_GPIO6_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0); + mxc_gpio_init(imx21_gpio_ports, ARRAY_SIZE(imx21_gpio_ports)); } diff --git a/trunk/arch/arm/mach-imx/mm-imx25.c b/trunk/arch/arm/mach-imx/mm-imx25.c index 9a1591c2508d..02f7b5c7fa8e 100644 --- a/trunk/arch/arm/mach-imx/mm-imx25.c +++ b/trunk/arch/arm/mach-imx/mm-imx25.c @@ -27,6 +27,7 @@ #include #include #include +#include #include /* @@ -56,16 +57,16 @@ void __init imx25_init_early(void) mxc_arch_reset_init(MX25_IO_ADDRESS(MX25_WDOG_BASE_ADDR)); } +static struct mxc_gpio_port imx25_gpio_ports[] = { + DEFINE_IMX_GPIO_PORT_IRQ(MX25, 0, 1, MX25_INT_GPIO1), + DEFINE_IMX_GPIO_PORT_IRQ(MX25, 1, 2, MX25_INT_GPIO2), + DEFINE_IMX_GPIO_PORT_IRQ(MX25, 2, 3, MX25_INT_GPIO3), + DEFINE_IMX_GPIO_PORT_IRQ(MX25, 3, 4, MX25_INT_GPIO4), +}; + void __init mx25_init_irq(void) { mxc_init_irq(MX25_IO_ADDRESS(MX25_AVIC_BASE_ADDR)); + mxc_gpio_init(imx25_gpio_ports, ARRAY_SIZE(imx25_gpio_ports)); } -void __init imx25_soc_init(void) -{ - /* i.mx25 has the i.mx31 type gpio */ - mxc_register_gpio("imx31-gpio", 0, MX25_GPIO1_BASE_ADDR, SZ_16K, MX25_INT_GPIO1, 0); - mxc_register_gpio("imx31-gpio", 1, MX25_GPIO2_BASE_ADDR, SZ_16K, MX25_INT_GPIO2, 0); - mxc_register_gpio("imx31-gpio", 2, MX25_GPIO3_BASE_ADDR, SZ_16K, MX25_INT_GPIO3, 0); - mxc_register_gpio("imx31-gpio", 3, MX25_GPIO4_BASE_ADDR, SZ_16K, MX25_INT_GPIO4, 0); -} diff --git a/trunk/arch/arm/mach-imx/mm-imx27.c b/trunk/arch/arm/mach-imx/mm-imx27.c index 133b30003ddb..a6761a39f08c 100644 --- a/trunk/arch/arm/mach-imx/mm-imx27.c +++ b/trunk/arch/arm/mach-imx/mm-imx27.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -69,18 +70,17 @@ void __init imx27_init_early(void) MX27_NUM_GPIO_PORT); } +static struct mxc_gpio_port imx27_gpio_ports[] = { + DEFINE_IMX_GPIO_PORT_IRQ(MX27, 0, 1, MX27_INT_GPIO), + DEFINE_IMX_GPIO_PORT(MX27, 1, 2), + DEFINE_IMX_GPIO_PORT(MX27, 2, 3), + DEFINE_IMX_GPIO_PORT(MX27, 3, 4), + DEFINE_IMX_GPIO_PORT(MX27, 4, 5), + DEFINE_IMX_GPIO_PORT(MX27, 5, 6), +}; + void __init mx27_init_irq(void) { mxc_init_irq(MX27_IO_ADDRESS(MX27_AVIC_BASE_ADDR)); -} - -void __init imx27_soc_init(void) -{ - /* i.mx27 has the i.mx21 type gpio */ - mxc_register_gpio("imx21-gpio", 0, MX27_GPIO1_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0); - mxc_register_gpio("imx21-gpio", 1, MX27_GPIO2_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0); - mxc_register_gpio("imx21-gpio", 2, MX27_GPIO3_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0); - mxc_register_gpio("imx21-gpio", 3, MX27_GPIO4_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0); - mxc_register_gpio("imx21-gpio", 4, MX27_GPIO5_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0); - mxc_register_gpio("imx21-gpio", 5, MX27_GPIO6_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0); + mxc_gpio_init(imx27_gpio_ports, ARRAY_SIZE(imx27_gpio_ports)); } diff --git a/trunk/arch/arm/mach-imx/mm-imx31.c b/trunk/arch/arm/mach-imx/mm-imx31.c index 6d103c01b8b9..86b9b45864d2 100644 --- a/trunk/arch/arm/mach-imx/mm-imx31.c +++ b/trunk/arch/arm/mach-imx/mm-imx31.c @@ -26,6 +26,7 @@ #include #include #include +#include #include static struct map_desc mx31_io_desc[] __initdata = { @@ -52,14 +53,14 @@ void __init imx31_init_early(void) mxc_arch_reset_init(MX31_IO_ADDRESS(MX31_WDOG_BASE_ADDR)); } +static struct mxc_gpio_port imx31_gpio_ports[] = { + DEFINE_IMX_GPIO_PORT_IRQ(MX31, 0, 1, MX31_INT_GPIO1), + DEFINE_IMX_GPIO_PORT_IRQ(MX31, 1, 2, MX31_INT_GPIO2), + DEFINE_IMX_GPIO_PORT_IRQ(MX31, 2, 3, MX31_INT_GPIO3), +}; + void __init mx31_init_irq(void) { mxc_init_irq(MX31_IO_ADDRESS(MX31_AVIC_BASE_ADDR)); -} - -void __init imx31_soc_init(void) -{ - mxc_register_gpio("imx31-gpio", 0, MX31_GPIO1_BASE_ADDR, SZ_16K, MX31_INT_GPIO1, 0); - mxc_register_gpio("imx31-gpio", 1, MX31_GPIO2_BASE_ADDR, SZ_16K, MX31_INT_GPIO2, 0); - mxc_register_gpio("imx31-gpio", 2, MX31_GPIO3_BASE_ADDR, SZ_16K, MX31_INT_GPIO3, 0); + mxc_gpio_init(imx31_gpio_ports, ARRAY_SIZE(imx31_gpio_ports)); } diff --git a/trunk/arch/arm/mach-imx/mm-imx35.c b/trunk/arch/arm/mach-imx/mm-imx35.c index bb068bc8dab7..c880e6d1ae55 100644 --- a/trunk/arch/arm/mach-imx/mm-imx35.c +++ b/trunk/arch/arm/mach-imx/mm-imx35.c @@ -27,6 +27,7 @@ #include #include #include +#include #include static struct map_desc mx35_io_desc[] __initdata = { @@ -49,15 +50,14 @@ void __init imx35_init_early(void) mxc_arch_reset_init(MX35_IO_ADDRESS(MX35_WDOG_BASE_ADDR)); } +static struct mxc_gpio_port imx35_gpio_ports[] = { + DEFINE_IMX_GPIO_PORT_IRQ(MX35, 0, 1, MX35_INT_GPIO1), + DEFINE_IMX_GPIO_PORT_IRQ(MX35, 1, 2, MX35_INT_GPIO2), + DEFINE_IMX_GPIO_PORT_IRQ(MX35, 2, 3, MX35_INT_GPIO3), +}; + void __init mx35_init_irq(void) { mxc_init_irq(MX35_IO_ADDRESS(MX35_AVIC_BASE_ADDR)); -} - -void __init imx35_soc_init(void) -{ - /* i.mx35 has the i.mx31 type gpio */ - mxc_register_gpio("imx31-gpio", 0, MX35_GPIO1_BASE_ADDR, SZ_16K, MX35_INT_GPIO1, 0); - mxc_register_gpio("imx31-gpio", 1, MX35_GPIO2_BASE_ADDR, SZ_16K, MX35_INT_GPIO2, 0); - mxc_register_gpio("imx31-gpio", 2, MX35_GPIO3_BASE_ADDR, SZ_16K, MX35_INT_GPIO3, 0); + mxc_gpio_init(imx35_gpio_ports, ARRAY_SIZE(imx35_gpio_ports)); } diff --git a/trunk/arch/arm/mach-iop13xx/setup.c b/trunk/arch/arm/mach-iop13xx/setup.c index a5b989728b9e..5c147fb66a01 100644 --- a/trunk/arch/arm/mach-iop13xx/setup.c +++ b/trunk/arch/arm/mach-iop13xx/setup.c @@ -17,7 +17,6 @@ * */ -#include #include #include #ifdef CONFIG_MTD_PHYSMAP diff --git a/trunk/arch/arm/mach-ixp4xx/common.c b/trunk/arch/arm/mach-ixp4xx/common.c index 07772575d7ab..74ed81a3cb1a 100644 --- a/trunk/arch/arm/mach-ixp4xx/common.c +++ b/trunk/arch/arm/mach-ixp4xx/common.c @@ -419,20 +419,14 @@ static void notrace ixp4xx_update_sched_clock(void) /* * clocksource */ - -static cycle_t ixp4xx_clocksource_read(struct clocksource *c) -{ - return *IXP4XX_OSTS; -} - unsigned long ixp4xx_timer_freq = IXP4XX_TIMER_FREQ; EXPORT_SYMBOL(ixp4xx_timer_freq); static void __init ixp4xx_clocksource_init(void) { init_sched_clock(&cd, ixp4xx_update_sched_clock, 32, ixp4xx_timer_freq); - clocksource_mmio_init(NULL, "OSTS", ixp4xx_timer_freq, 200, 32, - ixp4xx_clocksource_read); + clocksource_mmio_init(&IXP4XX_OSTS, "OSTS", ixp4xx_timer_freq, 200, 32, + clocksource_mmio_readl_up); } /* diff --git a/trunk/arch/arm/mach-mmp/brownstone.c b/trunk/arch/arm/mach-mmp/brownstone.c index c79162a50f28..7bb78fd5a2a6 100644 --- a/trunk/arch/arm/mach-mmp/brownstone.c +++ b/trunk/arch/arm/mach-mmp/brownstone.c @@ -177,16 +177,9 @@ static struct i2c_board_info brownstone_twsi1_info[] = { }; static struct sdhci_pxa_platdata mmp2_sdh_platdata_mmc0 = { - .clk_delay_cycles = 0x1f, + .max_speed = 25000000, }; -static struct sdhci_pxa_platdata mmp2_sdh_platdata_mmc2 = { - .clk_delay_cycles = 0x1f, - .flags = PXA_FLAG_CARD_PERMANENT - | PXA_FLAG_SD_8_BIT_CAPABLE_SLOT, -}; - - static void __init brownstone_init(void) { mfp_config(ARRAY_AND_SIZE(brownstone_pin_config)); @@ -196,7 +189,6 @@ static void __init brownstone_init(void) mmp2_add_uart(3); mmp2_add_twsi(1, NULL, ARRAY_AND_SIZE(brownstone_twsi1_info)); mmp2_add_sdhost(0, &mmp2_sdh_platdata_mmc0); /* SD/MMC */ - mmp2_add_sdhost(2, &mmp2_sdh_platdata_mmc2); /* eMMC */ /* enable 5v regulator */ platform_device_register(&brownstone_v_5vp_device); diff --git a/trunk/arch/arm/mach-mmp/include/mach/mmp2.h b/trunk/arch/arm/mach-mmp/include/mach/mmp2.h index de7b88826ad7..2cbf6df09b82 100644 --- a/trunk/arch/arm/mach-mmp/include/mach/mmp2.h +++ b/trunk/arch/arm/mach-mmp/include/mach/mmp2.h @@ -1,7 +1,7 @@ #ifndef __ASM_MACH_MMP2_H #define __ASM_MACH_MMP2_H -#include +#include struct sys_timer; diff --git a/trunk/arch/arm/mach-mmp/jasper.c b/trunk/arch/arm/mach-mmp/jasper.c index 5d6421d63254..24172a0aad59 100644 --- a/trunk/arch/arm/mach-mmp/jasper.c +++ b/trunk/arch/arm/mach-mmp/jasper.c @@ -154,7 +154,7 @@ static struct i2c_board_info jasper_twsi1_info[] = { }; static struct sdhci_pxa_platdata mmp2_sdh_platdata_mmc0 = { - .clk_delay_cycles = 0x1f, + .max_speed = 25000000, }; static void __init jasper_init(void) diff --git a/trunk/arch/arm/mach-mmp/mmp2.c b/trunk/arch/arm/mach-mmp/mmp2.c index 079c18861d5c..8e6c3ac7f7c1 100644 --- a/trunk/arch/arm/mach-mmp/mmp2.c +++ b/trunk/arch/arm/mach-mmp/mmp2.c @@ -168,10 +168,10 @@ static struct clk_lookup mmp2_clkregs[] = { INIT_CLKREG(&clk_twsi5, "pxa2xx-i2c.4", NULL), INIT_CLKREG(&clk_twsi6, "pxa2xx-i2c.5", NULL), INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), - INIT_CLKREG(&clk_sdh0, "sdhci-pxav3.0", "PXA-SDHCLK"), - INIT_CLKREG(&clk_sdh1, "sdhci-pxav3.1", "PXA-SDHCLK"), - INIT_CLKREG(&clk_sdh2, "sdhci-pxav3.2", "PXA-SDHCLK"), - INIT_CLKREG(&clk_sdh3, "sdhci-pxav3.3", "PXA-SDHCLK"), + INIT_CLKREG(&clk_sdh0, "sdhci-pxa.0", "PXA-SDHCLK"), + INIT_CLKREG(&clk_sdh1, "sdhci-pxa.1", "PXA-SDHCLK"), + INIT_CLKREG(&clk_sdh2, "sdhci-pxa.2", "PXA-SDHCLK"), + INIT_CLKREG(&clk_sdh3, "sdhci-pxa.3", "PXA-SDHCLK"), }; static int __init mmp2_init(void) @@ -222,8 +222,8 @@ MMP2_DEVICE(twsi4, "pxa2xx-i2c", 3, TWSI4, 0xd4033000, 0x70); MMP2_DEVICE(twsi5, "pxa2xx-i2c", 4, TWSI5, 0xd4033800, 0x70); MMP2_DEVICE(twsi6, "pxa2xx-i2c", 5, TWSI6, 0xd4034000, 0x70); MMP2_DEVICE(nand, "pxa3xx-nand", -1, NAND, 0xd4283000, 0x100, 28, 29); -MMP2_DEVICE(sdh0, "sdhci-pxav3", 0, MMC, 0xd4280000, 0x120); -MMP2_DEVICE(sdh1, "sdhci-pxav3", 1, MMC2, 0xd4280800, 0x120); -MMP2_DEVICE(sdh2, "sdhci-pxav3", 2, MMC3, 0xd4281000, 0x120); -MMP2_DEVICE(sdh3, "sdhci-pxav3", 3, MMC4, 0xd4281800, 0x120); +MMP2_DEVICE(sdh0, "sdhci-pxa", 0, MMC, 0xd4280000, 0x120); +MMP2_DEVICE(sdh1, "sdhci-pxa", 1, MMC2, 0xd4280800, 0x120); +MMP2_DEVICE(sdh2, "sdhci-pxa", 2, MMC3, 0xd4281000, 0x120); +MMP2_DEVICE(sdh3, "sdhci-pxa", 3, MMC4, 0xd4281800, 0x120); diff --git a/trunk/arch/arm/mach-mx5/board-cpuimx51.c b/trunk/arch/arm/mach-mx5/board-cpuimx51.c index add0d42de7af..4efa02ee1639 100644 --- a/trunk/arch/arm/mach-mx5/board-cpuimx51.c +++ b/trunk/arch/arm/mach-mx5/board-cpuimx51.c @@ -245,8 +245,6 @@ __setup("otg_mode=", eukrea_cpuimx51_otg_mode); */ static void __init eukrea_cpuimx51_init(void) { - imx51_soc_init(); - mxc_iomux_v3_setup_multiple_pads(eukrea_cpuimx51_pads, ARRAY_SIZE(eukrea_cpuimx51_pads)); diff --git a/trunk/arch/arm/mach-mx5/board-cpuimx51sd.c b/trunk/arch/arm/mach-mx5/board-cpuimx51sd.c index ff096d587299..5ef25a596143 100644 --- a/trunk/arch/arm/mach-mx5/board-cpuimx51sd.c +++ b/trunk/arch/arm/mach-mx5/board-cpuimx51sd.c @@ -264,8 +264,6 @@ static struct platform_device *platform_devices[] __initdata = { static void __init eukrea_cpuimx51sd_init(void) { - imx51_soc_init(); - mxc_iomux_v3_setup_multiple_pads(eukrea_cpuimx51sd_pads, ARRAY_SIZE(eukrea_cpuimx51sd_pads)); diff --git a/trunk/arch/arm/mach-mx5/board-mx50_rdp.c b/trunk/arch/arm/mach-mx5/board-mx50_rdp.c index 7de25c6712eb..11210e1ae42a 100644 --- a/trunk/arch/arm/mach-mx5/board-mx50_rdp.c +++ b/trunk/arch/arm/mach-mx5/board-mx50_rdp.c @@ -192,8 +192,6 @@ static const struct imxi2c_platform_data i2c_data __initconst = { */ static void __init mx50_rdp_board_init(void) { - imx50_soc_init(); - mxc_iomux_v3_setup_multiple_pads(mx50_rdp_pads, ARRAY_SIZE(mx50_rdp_pads)); diff --git a/trunk/arch/arm/mach-mx5/board-mx51_3ds.c b/trunk/arch/arm/mach-mx5/board-mx51_3ds.c index 3112d15feebc..63dfbeafbc1e 100644 --- a/trunk/arch/arm/mach-mx5/board-mx51_3ds.c +++ b/trunk/arch/arm/mach-mx5/board-mx51_3ds.c @@ -135,8 +135,6 @@ static struct spi_board_info mx51_3ds_spi_nor_device[] = { */ static void __init mx51_3ds_init(void) { - imx51_soc_init(); - mxc_iomux_v3_setup_multiple_pads(mx51_3ds_pads, ARRAY_SIZE(mx51_3ds_pads)); diff --git a/trunk/arch/arm/mach-mx5/board-mx51_babbage.c b/trunk/arch/arm/mach-mx5/board-mx51_babbage.c index 6021dd00ec75..c7b3fabf50f9 100644 --- a/trunk/arch/arm/mach-mx5/board-mx51_babbage.c +++ b/trunk/arch/arm/mach-mx5/board-mx51_babbage.c @@ -340,8 +340,6 @@ static void __init mx51_babbage_init(void) iomux_v3_cfg_t power_key = _MX51_PAD_EIM_A27__GPIO2_21 | MUX_PAD_CTRL(PAD_CTL_SRE_FAST | PAD_CTL_DSE_HIGH | PAD_CTL_PUS_100K_UP); - imx51_soc_init(); - #if defined(CONFIG_CPU_FREQ_IMX) get_cpu_op = mx51_get_cpu_op; #endif diff --git a/trunk/arch/arm/mach-mx5/board-mx51_efikamx.c b/trunk/arch/arm/mach-mx5/board-mx51_efikamx.c index 3be603b9075a..6e362315291b 100644 --- a/trunk/arch/arm/mach-mx5/board-mx51_efikamx.c +++ b/trunk/arch/arm/mach-mx5/board-mx51_efikamx.c @@ -236,8 +236,6 @@ late_initcall(mx51_efikamx_power_init); static void __init mx51_efikamx_init(void) { - imx51_soc_init(); - mxc_iomux_v3_setup_multiple_pads(mx51efikamx_pads, ARRAY_SIZE(mx51efikamx_pads)); efika_board_common_init(); diff --git a/trunk/arch/arm/mach-mx5/board-mx51_efikasb.c b/trunk/arch/arm/mach-mx5/board-mx51_efikasb.c index 4b2e522de0f8..474fc6e4c6df 100644 --- a/trunk/arch/arm/mach-mx5/board-mx51_efikasb.c +++ b/trunk/arch/arm/mach-mx5/board-mx51_efikasb.c @@ -248,8 +248,6 @@ static void __init mx51_efikasb_board_id(void) static void __init efikasb_board_init(void) { - imx51_soc_init(); - mxc_iomux_v3_setup_multiple_pads(mx51efikasb_pads, ARRAY_SIZE(mx51efikasb_pads)); efika_board_common_init(); diff --git a/trunk/arch/arm/mach-mx5/board-mx53_evk.c b/trunk/arch/arm/mach-mx5/board-mx53_evk.c index 0d9218a6e2d2..f87d571882c6 100644 --- a/trunk/arch/arm/mach-mx5/board-mx53_evk.c +++ b/trunk/arch/arm/mach-mx5/board-mx53_evk.c @@ -117,8 +117,6 @@ static const struct spi_imx_master mx53_evk_spi_data __initconst = { static void __init mx53_evk_board_init(void) { - imx53_soc_init(); - mxc_iomux_v3_setup_multiple_pads(mx53_evk_pads, ARRAY_SIZE(mx53_evk_pads)); mx53_evk_init_uart(); diff --git a/trunk/arch/arm/mach-mx5/board-mx53_loco.c b/trunk/arch/arm/mach-mx5/board-mx53_loco.c index 359c3e248add..1b947e8c9c0c 100644 --- a/trunk/arch/arm/mach-mx5/board-mx53_loco.c +++ b/trunk/arch/arm/mach-mx5/board-mx53_loco.c @@ -227,8 +227,6 @@ static const struct imxi2c_platform_data mx53_loco_i2c_data __initconst = { static void __init mx53_loco_board_init(void) { - imx53_soc_init(); - mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads, ARRAY_SIZE(mx53_loco_pads)); imx53_add_imx_uart(0, NULL); diff --git a/trunk/arch/arm/mach-mx5/board-mx53_smd.c b/trunk/arch/arm/mach-mx5/board-mx53_smd.c index bc02894eafef..817c08938f55 100644 --- a/trunk/arch/arm/mach-mx5/board-mx53_smd.c +++ b/trunk/arch/arm/mach-mx5/board-mx53_smd.c @@ -113,8 +113,6 @@ static const struct imxi2c_platform_data mx53_smd_i2c_data __initconst = { static void __init mx53_smd_board_init(void) { - imx53_soc_init(); - mxc_iomux_v3_setup_multiple_pads(mx53_smd_pads, ARRAY_SIZE(mx53_smd_pads)); mx53_smd_init_uart(); diff --git a/trunk/arch/arm/mach-mx5/clock-mx51-mx53.c b/trunk/arch/arm/mach-mx5/clock-mx51-mx53.c index cd79e3435e28..6b89c1bf4eb2 100644 --- a/trunk/arch/arm/mach-mx5/clock-mx51-mx53.c +++ b/trunk/arch/arm/mach-mx5/clock-mx51-mx53.c @@ -1442,8 +1442,7 @@ static struct clk_lookup mx51_lookups[] = { _REGISTER_CLOCK(NULL, "gpt_32k", gpt_32k_clk) _REGISTER_CLOCK("imx51-ecspi.0", NULL, ecspi1_clk) _REGISTER_CLOCK("imx51-ecspi.1", NULL, ecspi2_clk) - /* i.mx51 has the i.mx35 type cspi */ - _REGISTER_CLOCK("imx35-cspi.0", NULL, cspi_clk) + _REGISTER_CLOCK("imx51-cspi.0", NULL, cspi_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.0", NULL, esdhc1_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.2", NULL, esdhc3_clk) @@ -1472,11 +1471,9 @@ static struct clk_lookup mx53_lookups[] = { _REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_mx53_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.2", NULL, esdhc3_mx53_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.3", NULL, esdhc4_mx53_clk) - /* i.mx53 has the i.mx51 type ecspi */ - _REGISTER_CLOCK("imx51-ecspi.0", NULL, ecspi1_clk) - _REGISTER_CLOCK("imx51-ecspi.1", NULL, ecspi2_clk) - /* i.mx53 has the i.mx25 type cspi */ - _REGISTER_CLOCK("imx35-cspi.0", NULL, cspi_clk) + _REGISTER_CLOCK("imx53-ecspi.0", NULL, ecspi1_clk) + _REGISTER_CLOCK("imx53-ecspi.1", NULL, ecspi2_clk) + _REGISTER_CLOCK("imx53-cspi.0", NULL, cspi_clk) _REGISTER_CLOCK("imx2-wdt.0", NULL, dummy_clk) _REGISTER_CLOCK("imx2-wdt.1", NULL, dummy_clk) }; diff --git a/trunk/arch/arm/mach-mx5/devices.c b/trunk/arch/arm/mach-mx5/devices.c index 371ca8c8414c..153ada53e575 100644 --- a/trunk/arch/arm/mach-mx5/devices.c +++ b/trunk/arch/arm/mach-mx5/devices.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -118,3 +119,66 @@ struct platform_device mxc_usbh2_device = { .coherent_dma_mask = DMA_BIT_MASK(32), }, }; + +static struct mxc_gpio_port mxc_gpio_ports[] = { + { + .chip.label = "gpio-0", + .base = MX51_IO_ADDRESS(MX51_GPIO1_BASE_ADDR), + .irq = MX51_MXC_INT_GPIO1_LOW, + .irq_high = MX51_MXC_INT_GPIO1_HIGH, + .virtual_irq_start = MXC_GPIO_IRQ_START + }, + { + .chip.label = "gpio-1", + .base = MX51_IO_ADDRESS(MX51_GPIO2_BASE_ADDR), + .irq = MX51_MXC_INT_GPIO2_LOW, + .irq_high = MX51_MXC_INT_GPIO2_HIGH, + .virtual_irq_start = MXC_GPIO_IRQ_START + 32 * 1 + }, + { + .chip.label = "gpio-2", + .base = MX51_IO_ADDRESS(MX51_GPIO3_BASE_ADDR), + .irq = MX51_MXC_INT_GPIO3_LOW, + .irq_high = MX51_MXC_INT_GPIO3_HIGH, + .virtual_irq_start = MXC_GPIO_IRQ_START + 32 * 2 + }, + { + .chip.label = "gpio-3", + .base = MX51_IO_ADDRESS(MX51_GPIO4_BASE_ADDR), + .irq = MX51_MXC_INT_GPIO4_LOW, + .irq_high = MX51_MXC_INT_GPIO4_HIGH, + .virtual_irq_start = MXC_GPIO_IRQ_START + 32 * 3 + }, + { + .chip.label = "gpio-4", + .base = MX53_IO_ADDRESS(MX53_GPIO5_BASE_ADDR), + .irq = MX53_INT_GPIO5_LOW, + .irq_high = MX53_INT_GPIO5_HIGH, + .virtual_irq_start = MXC_GPIO_IRQ_START + 32 * 4 + }, + { + .chip.label = "gpio-5", + .base = MX53_IO_ADDRESS(MX53_GPIO6_BASE_ADDR), + .irq = MX53_INT_GPIO6_LOW, + .irq_high = MX53_INT_GPIO6_HIGH, + .virtual_irq_start = MXC_GPIO_IRQ_START + 32 * 5 + }, + { + .chip.label = "gpio-6", + .base = MX53_IO_ADDRESS(MX53_GPIO7_BASE_ADDR), + .irq = MX53_INT_GPIO7_LOW, + .irq_high = MX53_INT_GPIO7_HIGH, + .virtual_irq_start = MXC_GPIO_IRQ_START + 32 * 6 + }, +}; + +int __init imx51_register_gpios(void) +{ + return mxc_gpio_init(mxc_gpio_ports, 4); +} + +int __init imx53_register_gpios(void) +{ + return mxc_gpio_init(mxc_gpio_ports, ARRAY_SIZE(mxc_gpio_ports)); +} + diff --git a/trunk/arch/arm/mach-mx5/mm-mx50.c b/trunk/arch/arm/mach-mx5/mm-mx50.c index 77e374c726fa..b9c363b514a9 100644 --- a/trunk/arch/arm/mach-mx5/mm-mx50.c +++ b/trunk/arch/arm/mach-mx5/mm-mx50.c @@ -26,6 +26,7 @@ #include #include #include +#include #include /* @@ -55,18 +56,17 @@ void __init imx50_init_early(void) mxc_arch_reset_init(MX50_IO_ADDRESS(MX50_WDOG_BASE_ADDR)); } +static struct mxc_gpio_port imx50_gpio_ports[] = { + DEFINE_IMX_GPIO_PORT_IRQ_HIGH(MX50, 0, 1, MX50_INT_GPIO1_LOW, MX50_INT_GPIO1_HIGH), + DEFINE_IMX_GPIO_PORT_IRQ_HIGH(MX50, 1, 2, MX50_INT_GPIO2_LOW, MX50_INT_GPIO2_HIGH), + DEFINE_IMX_GPIO_PORT_IRQ_HIGH(MX50, 2, 3, MX50_INT_GPIO3_LOW, MX50_INT_GPIO3_HIGH), + DEFINE_IMX_GPIO_PORT_IRQ_HIGH(MX50, 3, 4, MX50_INT_GPIO3_LOW, MX50_INT_GPIO3_HIGH), + DEFINE_IMX_GPIO_PORT_IRQ_HIGH(MX50, 4, 5, MX50_INT_GPIO3_LOW, MX50_INT_GPIO3_HIGH), + DEFINE_IMX_GPIO_PORT_IRQ_HIGH(MX50, 5, 6, MX50_INT_GPIO3_LOW, MX50_INT_GPIO3_HIGH), +}; + void __init mx50_init_irq(void) { tzic_init_irq(MX50_IO_ADDRESS(MX50_TZIC_BASE_ADDR)); -} - -void __init imx50_soc_init(void) -{ - /* i.mx50 has the i.mx31 type gpio */ - mxc_register_gpio("imx31-gpio", 0, MX50_GPIO1_BASE_ADDR, SZ_16K, MX50_INT_GPIO1_LOW, MX50_INT_GPIO1_HIGH); - mxc_register_gpio("imx31-gpio", 1, MX50_GPIO2_BASE_ADDR, SZ_16K, MX50_INT_GPIO2_LOW, MX50_INT_GPIO2_HIGH); - mxc_register_gpio("imx31-gpio", 2, MX50_GPIO3_BASE_ADDR, SZ_16K, MX50_INT_GPIO3_LOW, MX50_INT_GPIO3_HIGH); - mxc_register_gpio("imx31-gpio", 3, MX50_GPIO4_BASE_ADDR, SZ_16K, MX50_INT_GPIO4_LOW, MX50_INT_GPIO4_HIGH); - mxc_register_gpio("imx31-gpio", 4, MX50_GPIO5_BASE_ADDR, SZ_16K, MX50_INT_GPIO5_LOW, MX50_INT_GPIO5_HIGH); - mxc_register_gpio("imx31-gpio", 5, MX50_GPIO6_BASE_ADDR, SZ_16K, MX50_INT_GPIO6_LOW, MX50_INT_GPIO6_HIGH); + mxc_gpio_init(imx50_gpio_ports, ARRAY_SIZE(imx50_gpio_ports)); } diff --git a/trunk/arch/arm/mach-mx5/mm.c b/trunk/arch/arm/mach-mx5/mm.c index 665843d6c2b2..ff557301b42b 100644 --- a/trunk/arch/arm/mach-mx5/mm.c +++ b/trunk/arch/arm/mach-mx5/mm.c @@ -69,6 +69,8 @@ void __init imx53_init_early(void) mxc_arch_reset_init(MX53_IO_ADDRESS(MX53_WDOG1_BASE_ADDR)); } +int imx51_register_gpios(void); + void __init mx51_init_irq(void) { unsigned long tzic_addr; @@ -84,8 +86,11 @@ void __init mx51_init_irq(void) panic("unable to map TZIC interrupt controller\n"); tzic_init_irq(tzic_virt); + imx51_register_gpios(); } +int imx53_register_gpios(void); + void __init mx53_init_irq(void) { unsigned long tzic_addr; @@ -98,25 +103,5 @@ void __init mx53_init_irq(void) panic("unable to map TZIC interrupt controller\n"); tzic_init_irq(tzic_virt); -} - -void __init imx51_soc_init(void) -{ - /* i.mx51 has the i.mx31 type gpio */ - mxc_register_gpio("imx31-gpio", 0, MX51_GPIO1_BASE_ADDR, SZ_16K, MX51_MXC_INT_GPIO1_LOW, MX51_MXC_INT_GPIO1_HIGH); - mxc_register_gpio("imx31-gpio", 1, MX51_GPIO2_BASE_ADDR, SZ_16K, MX51_MXC_INT_GPIO2_LOW, MX51_MXC_INT_GPIO2_HIGH); - mxc_register_gpio("imx31-gpio", 2, MX51_GPIO3_BASE_ADDR, SZ_16K, MX51_MXC_INT_GPIO3_LOW, MX51_MXC_INT_GPIO3_HIGH); - mxc_register_gpio("imx31-gpio", 3, MX51_GPIO4_BASE_ADDR, SZ_16K, MX51_MXC_INT_GPIO4_LOW, MX51_MXC_INT_GPIO4_HIGH); -} - -void __init imx53_soc_init(void) -{ - /* i.mx53 has the i.mx31 type gpio */ - mxc_register_gpio("imx31-gpio", 0, MX53_GPIO1_BASE_ADDR, SZ_16K, MX53_INT_GPIO1_LOW, MX53_INT_GPIO1_HIGH); - mxc_register_gpio("imx31-gpio", 1, MX53_GPIO2_BASE_ADDR, SZ_16K, MX53_INT_GPIO2_LOW, MX53_INT_GPIO2_HIGH); - mxc_register_gpio("imx31-gpio", 2, MX53_GPIO3_BASE_ADDR, SZ_16K, MX53_INT_GPIO3_LOW, MX53_INT_GPIO3_HIGH); - mxc_register_gpio("imx31-gpio", 3, MX53_GPIO4_BASE_ADDR, SZ_16K, MX53_INT_GPIO4_LOW, MX53_INT_GPIO4_HIGH); - mxc_register_gpio("imx31-gpio", 4, MX53_GPIO5_BASE_ADDR, SZ_16K, MX53_INT_GPIO5_LOW, MX53_INT_GPIO5_HIGH); - mxc_register_gpio("imx31-gpio", 5, MX53_GPIO6_BASE_ADDR, SZ_16K, MX53_INT_GPIO6_LOW, MX53_INT_GPIO6_HIGH); - mxc_register_gpio("imx31-gpio", 6, MX53_GPIO7_BASE_ADDR, SZ_16K, MX53_INT_GPIO7_LOW, MX53_INT_GPIO7_HIGH); + imx53_register_gpios(); } diff --git a/trunk/arch/arm/mach-mxs/Makefile b/trunk/arch/arm/mach-mxs/Makefile index 6c38262a3aaa..58e892376bf2 100644 --- a/trunk/arch/arm/mach-mxs/Makefile +++ b/trunk/arch/arm/mach-mxs/Makefile @@ -1,5 +1,5 @@ # Common support -obj-y := clock.o devices.o icoll.o iomux.o system.o timer.o +obj-y := clock.o devices.o gpio.o icoll.o iomux.o system.o timer.o obj-$(CONFIG_MXS_OCOTP) += ocotp.o obj-$(CONFIG_PM) += pm.o diff --git a/trunk/arch/arm/mach-mxs/devices.c b/trunk/arch/arm/mach-mxs/devices.c index fe3e847930c9..cfdb6b284702 100644 --- a/trunk/arch/arm/mach-mxs/devices.c +++ b/trunk/arch/arm/mach-mxs/devices.c @@ -88,14 +88,3 @@ int __init mxs_add_amba_device(const struct amba_device *dev) return amba_device_register(adev, &iomem_resource); } - -struct device mxs_apbh_bus = { - .init_name = "mxs_apbh", - .parent = &platform_bus, -}; - -static int __init mxs_device_init(void) -{ - return device_register(&mxs_apbh_bus); -} -core_initcall(mxs_device_init); diff --git a/trunk/arch/arm/mach-mxs/devices/Makefile b/trunk/arch/arm/mach-mxs/devices/Makefile index 351915c683ff..324f2824d38d 100644 --- a/trunk/arch/arm/mach-mxs/devices/Makefile +++ b/trunk/arch/arm/mach-mxs/devices/Makefile @@ -6,5 +6,4 @@ obj-$(CONFIG_MXS_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_I2C) += platform-mxs-i2c.o obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_MMC) += platform-mxs-mmc.o obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_PWM) += platform-mxs-pwm.o -obj-y += platform-gpio-mxs.o obj-$(CONFIG_MXS_HAVE_PLATFORM_MXSFB) += platform-mxsfb.o diff --git a/trunk/arch/arm/mach-mxs/devices/platform-auart.c b/trunk/arch/arm/mach-mxs/devices/platform-auart.c index 27608f5d2ac8..796606cce0ce 100644 --- a/trunk/arch/arm/mach-mxs/devices/platform-auart.c +++ b/trunk/arch/arm/mach-mxs/devices/platform-auart.c @@ -6,7 +6,6 @@ * the terms of the GNU General Public License version 2 as published by the * Free Software Foundation. */ -#include #include #include #include diff --git a/trunk/arch/arm/mach-mxs/devices/platform-dma.c b/trunk/arch/arm/mach-mxs/devices/platform-dma.c index 6a0202b1016c..295c4424d5d9 100644 --- a/trunk/arch/arm/mach-mxs/devices/platform-dma.c +++ b/trunk/arch/arm/mach-mxs/devices/platform-dma.c @@ -6,7 +6,6 @@ * Free Software Foundation. */ #include -#include #include #include diff --git a/trunk/arch/arm/mach-mxs/devices/platform-fec.c b/trunk/arch/arm/mach-mxs/devices/platform-fec.c index ae96a4fd8f14..9859cf283335 100644 --- a/trunk/arch/arm/mach-mxs/devices/platform-fec.c +++ b/trunk/arch/arm/mach-mxs/devices/platform-fec.c @@ -6,7 +6,6 @@ * the terms of the GNU General Public License version 2 as published by the * Free Software Foundation. */ -#include #include #include #include diff --git a/trunk/arch/arm/mach-mxs/devices/platform-gpio-mxs.c b/trunk/arch/arm/mach-mxs/devices/platform-gpio-mxs.c deleted file mode 100644 index ed0885e414e0..000000000000 --- a/trunk/arch/arm/mach-mxs/devices/platform-gpio-mxs.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License version 2 as published by the - * Free Software Foundation. - */ -#include -#include -#include - -#include -#include -#include - -struct platform_device *__init mxs_add_gpio( - int id, resource_size_t iobase, int irq) -{ - struct resource res[] = { - { - .start = iobase, - .end = iobase + SZ_8K - 1, - .flags = IORESOURCE_MEM, - }, { - .start = irq, - .end = irq, - .flags = IORESOURCE_IRQ, - }, - }; - - return platform_device_register_resndata(&mxs_apbh_bus, - "gpio-mxs", id, res, ARRAY_SIZE(res), NULL, 0); -} - -static int __init mxs_add_mxs_gpio(void) -{ - if (cpu_is_mx23()) { - mxs_add_gpio(0, MX23_PINCTRL_BASE_ADDR, MX23_INT_GPIO0); - mxs_add_gpio(1, MX23_PINCTRL_BASE_ADDR, MX23_INT_GPIO1); - mxs_add_gpio(2, MX23_PINCTRL_BASE_ADDR, MX23_INT_GPIO2); - } - - if (cpu_is_mx28()) { - mxs_add_gpio(0, MX28_PINCTRL_BASE_ADDR, MX28_INT_GPIO0); - mxs_add_gpio(1, MX28_PINCTRL_BASE_ADDR, MX28_INT_GPIO1); - mxs_add_gpio(2, MX28_PINCTRL_BASE_ADDR, MX28_INT_GPIO2); - mxs_add_gpio(3, MX28_PINCTRL_BASE_ADDR, MX28_INT_GPIO3); - mxs_add_gpio(4, MX28_PINCTRL_BASE_ADDR, MX28_INT_GPIO4); - } - - return 0; -} -postcore_initcall(mxs_add_mxs_gpio); diff --git a/trunk/arch/arm/mach-mxs/gpio.c b/trunk/arch/arm/mach-mxs/gpio.c new file mode 100644 index 000000000000..2c950fef71a8 --- /dev/null +++ b/trunk/arch/arm/mach-mxs/gpio.c @@ -0,0 +1,331 @@ +/* + * MXC GPIO support. (c) 2008 Daniel Mack + * Copyright 2008 Juergen Beisert, kernel@pengutronix.de + * + * Based on code from Freescale, + * Copyright (C) 2004-2010 Freescale Semiconductor, Inc. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "gpio.h" + +static struct mxs_gpio_port *mxs_gpio_ports; +static int gpio_table_size; + +#define PINCTRL_DOUT(n) ((cpu_is_mx23() ? 0x0500 : 0x0700) + (n) * 0x10) +#define PINCTRL_DIN(n) ((cpu_is_mx23() ? 0x0600 : 0x0900) + (n) * 0x10) +#define PINCTRL_DOE(n) ((cpu_is_mx23() ? 0x0700 : 0x0b00) + (n) * 0x10) +#define PINCTRL_PIN2IRQ(n) ((cpu_is_mx23() ? 0x0800 : 0x1000) + (n) * 0x10) +#define PINCTRL_IRQEN(n) ((cpu_is_mx23() ? 0x0900 : 0x1100) + (n) * 0x10) +#define PINCTRL_IRQLEV(n) ((cpu_is_mx23() ? 0x0a00 : 0x1200) + (n) * 0x10) +#define PINCTRL_IRQPOL(n) ((cpu_is_mx23() ? 0x0b00 : 0x1300) + (n) * 0x10) +#define PINCTRL_IRQSTAT(n) ((cpu_is_mx23() ? 0x0c00 : 0x1400) + (n) * 0x10) + +#define GPIO_INT_FALL_EDGE 0x0 +#define GPIO_INT_LOW_LEV 0x1 +#define GPIO_INT_RISE_EDGE 0x2 +#define GPIO_INT_HIGH_LEV 0x3 +#define GPIO_INT_LEV_MASK (1 << 0) +#define GPIO_INT_POL_MASK (1 << 1) + +/* Note: This driver assumes 32 GPIOs are handled in one register */ + +static void clear_gpio_irqstatus(struct mxs_gpio_port *port, u32 index) +{ + __mxs_clrl(1 << index, port->base + PINCTRL_IRQSTAT(port->id)); +} + +static void set_gpio_irqenable(struct mxs_gpio_port *port, u32 index, + int enable) +{ + if (enable) { + __mxs_setl(1 << index, port->base + PINCTRL_IRQEN(port->id)); + __mxs_setl(1 << index, port->base + PINCTRL_PIN2IRQ(port->id)); + } else { + __mxs_clrl(1 << index, port->base + PINCTRL_IRQEN(port->id)); + } +} + +static void mxs_gpio_ack_irq(struct irq_data *d) +{ + u32 gpio = irq_to_gpio(d->irq); + clear_gpio_irqstatus(&mxs_gpio_ports[gpio / 32], gpio & 0x1f); +} + +static void mxs_gpio_mask_irq(struct irq_data *d) +{ + u32 gpio = irq_to_gpio(d->irq); + set_gpio_irqenable(&mxs_gpio_ports[gpio / 32], gpio & 0x1f, 0); +} + +static void mxs_gpio_unmask_irq(struct irq_data *d) +{ + u32 gpio = irq_to_gpio(d->irq); + set_gpio_irqenable(&mxs_gpio_ports[gpio / 32], gpio & 0x1f, 1); +} + +static int mxs_gpio_get(struct gpio_chip *chip, unsigned offset); + +static int mxs_gpio_set_irq_type(struct irq_data *d, unsigned int type) +{ + u32 gpio = irq_to_gpio(d->irq); + u32 pin_mask = 1 << (gpio & 31); + struct mxs_gpio_port *port = &mxs_gpio_ports[gpio / 32]; + void __iomem *pin_addr; + int edge; + + switch (type) { + case IRQ_TYPE_EDGE_RISING: + edge = GPIO_INT_RISE_EDGE; + break; + case IRQ_TYPE_EDGE_FALLING: + edge = GPIO_INT_FALL_EDGE; + break; + case IRQ_TYPE_LEVEL_LOW: + edge = GPIO_INT_LOW_LEV; + break; + case IRQ_TYPE_LEVEL_HIGH: + edge = GPIO_INT_HIGH_LEV; + break; + default: + return -EINVAL; + } + + /* set level or edge */ + pin_addr = port->base + PINCTRL_IRQLEV(port->id); + if (edge & GPIO_INT_LEV_MASK) + __mxs_setl(pin_mask, pin_addr); + else + __mxs_clrl(pin_mask, pin_addr); + + /* set polarity */ + pin_addr = port->base + PINCTRL_IRQPOL(port->id); + if (edge & GPIO_INT_POL_MASK) + __mxs_setl(pin_mask, pin_addr); + else + __mxs_clrl(pin_mask, pin_addr); + + clear_gpio_irqstatus(port, gpio & 0x1f); + + return 0; +} + +/* MXS has one interrupt *per* gpio port */ +static void mxs_gpio_irq_handler(u32 irq, struct irq_desc *desc) +{ + u32 irq_stat; + struct mxs_gpio_port *port = (struct mxs_gpio_port *)irq_get_handler_data(irq); + u32 gpio_irq_no_base = port->virtual_irq_start; + + desc->irq_data.chip->irq_ack(&desc->irq_data); + + irq_stat = __raw_readl(port->base + PINCTRL_IRQSTAT(port->id)) & + __raw_readl(port->base + PINCTRL_IRQEN(port->id)); + + while (irq_stat != 0) { + int irqoffset = fls(irq_stat) - 1; + generic_handle_irq(gpio_irq_no_base + irqoffset); + irq_stat &= ~(1 << irqoffset); + } +} + +/* + * Set interrupt number "irq" in the GPIO as a wake-up source. + * While system is running, all registered GPIO interrupts need to have + * wake-up enabled. When system is suspended, only selected GPIO interrupts + * need to have wake-up enabled. + * @param irq interrupt source number + * @param enable enable as wake-up if equal to non-zero + * @return This function returns 0 on success. + */ +static int mxs_gpio_set_wake_irq(struct irq_data *d, unsigned int enable) +{ + u32 gpio = irq_to_gpio(d->irq); + u32 gpio_idx = gpio & 0x1f; + struct mxs_gpio_port *port = &mxs_gpio_ports[gpio / 32]; + + if (enable) { + if (port->irq_high && (gpio_idx >= 16)) + enable_irq_wake(port->irq_high); + else + enable_irq_wake(port->irq); + } else { + if (port->irq_high && (gpio_idx >= 16)) + disable_irq_wake(port->irq_high); + else + disable_irq_wake(port->irq); + } + + return 0; +} + +static struct irq_chip gpio_irq_chip = { + .name = "mxs gpio", + .irq_ack = mxs_gpio_ack_irq, + .irq_mask = mxs_gpio_mask_irq, + .irq_unmask = mxs_gpio_unmask_irq, + .irq_set_type = mxs_gpio_set_irq_type, + .irq_set_wake = mxs_gpio_set_wake_irq, +}; + +static void mxs_set_gpio_direction(struct gpio_chip *chip, unsigned offset, + int dir) +{ + struct mxs_gpio_port *port = + container_of(chip, struct mxs_gpio_port, chip); + void __iomem *pin_addr = port->base + PINCTRL_DOE(port->id); + + if (dir) + __mxs_setl(1 << offset, pin_addr); + else + __mxs_clrl(1 << offset, pin_addr); +} + +static int mxs_gpio_get(struct gpio_chip *chip, unsigned offset) +{ + struct mxs_gpio_port *port = + container_of(chip, struct mxs_gpio_port, chip); + + return (__raw_readl(port->base + PINCTRL_DIN(port->id)) >> offset) & 1; +} + +static void mxs_gpio_set(struct gpio_chip *chip, unsigned offset, int value) +{ + struct mxs_gpio_port *port = + container_of(chip, struct mxs_gpio_port, chip); + void __iomem *pin_addr = port->base + PINCTRL_DOUT(port->id); + + if (value) + __mxs_setl(1 << offset, pin_addr); + else + __mxs_clrl(1 << offset, pin_addr); +} + +static int mxs_gpio_to_irq(struct gpio_chip *chip, unsigned offset) +{ + struct mxs_gpio_port *port = + container_of(chip, struct mxs_gpio_port, chip); + + return port->virtual_irq_start + offset; +} + +static int mxs_gpio_direction_input(struct gpio_chip *chip, unsigned offset) +{ + mxs_set_gpio_direction(chip, offset, 0); + return 0; +} + +static int mxs_gpio_direction_output(struct gpio_chip *chip, + unsigned offset, int value) +{ + mxs_gpio_set(chip, offset, value); + mxs_set_gpio_direction(chip, offset, 1); + return 0; +} + +int __init mxs_gpio_init(struct mxs_gpio_port *port, int cnt) +{ + int i, j; + + /* save for local usage */ + mxs_gpio_ports = port; + gpio_table_size = cnt; + + pr_info("MXS GPIO hardware\n"); + + for (i = 0; i < cnt; i++) { + /* disable the interrupt and clear the status */ + __raw_writel(0, port[i].base + PINCTRL_PIN2IRQ(i)); + __raw_writel(0, port[i].base + PINCTRL_IRQEN(i)); + + /* clear address has to be used to clear IRQSTAT bits */ + __mxs_clrl(~0U, port[i].base + PINCTRL_IRQSTAT(i)); + + for (j = port[i].virtual_irq_start; + j < port[i].virtual_irq_start + 32; j++) { + irq_set_chip_and_handler(j, &gpio_irq_chip, + handle_level_irq); + set_irq_flags(j, IRQF_VALID); + } + + /* setup one handler for each entry */ + irq_set_chained_handler(port[i].irq, mxs_gpio_irq_handler); + irq_set_handler_data(port[i].irq, &port[i]); + + /* register gpio chip */ + port[i].chip.direction_input = mxs_gpio_direction_input; + port[i].chip.direction_output = mxs_gpio_direction_output; + port[i].chip.get = mxs_gpio_get; + port[i].chip.set = mxs_gpio_set; + port[i].chip.to_irq = mxs_gpio_to_irq; + port[i].chip.base = i * 32; + port[i].chip.ngpio = 32; + + /* its a serious configuration bug when it fails */ + BUG_ON(gpiochip_add(&port[i].chip) < 0); + } + + return 0; +} + +#define MX23_GPIO_BASE MX23_IO_ADDRESS(MX23_PINCTRL_BASE_ADDR) +#define MX28_GPIO_BASE MX28_IO_ADDRESS(MX28_PINCTRL_BASE_ADDR) + +#define DEFINE_MXS_GPIO_PORT(_base, _irq, _id) \ + { \ + .chip.label = "gpio-" #_id, \ + .id = _id, \ + .irq = _irq, \ + .base = _base, \ + .virtual_irq_start = MXS_GPIO_IRQ_START + (_id) * 32, \ + } + +#ifdef CONFIG_SOC_IMX23 +static struct mxs_gpio_port mx23_gpio_ports[] = { + DEFINE_MXS_GPIO_PORT(MX23_GPIO_BASE, MX23_INT_GPIO0, 0), + DEFINE_MXS_GPIO_PORT(MX23_GPIO_BASE, MX23_INT_GPIO1, 1), + DEFINE_MXS_GPIO_PORT(MX23_GPIO_BASE, MX23_INT_GPIO2, 2), +}; + +int __init mx23_register_gpios(void) +{ + return mxs_gpio_init(mx23_gpio_ports, ARRAY_SIZE(mx23_gpio_ports)); +} +#endif + +#ifdef CONFIG_SOC_IMX28 +static struct mxs_gpio_port mx28_gpio_ports[] = { + DEFINE_MXS_GPIO_PORT(MX28_GPIO_BASE, MX28_INT_GPIO0, 0), + DEFINE_MXS_GPIO_PORT(MX28_GPIO_BASE, MX28_INT_GPIO1, 1), + DEFINE_MXS_GPIO_PORT(MX28_GPIO_BASE, MX28_INT_GPIO2, 2), + DEFINE_MXS_GPIO_PORT(MX28_GPIO_BASE, MX28_INT_GPIO3, 3), + DEFINE_MXS_GPIO_PORT(MX28_GPIO_BASE, MX28_INT_GPIO4, 4), +}; + +int __init mx28_register_gpios(void) +{ + return mxs_gpio_init(mx28_gpio_ports, ARRAY_SIZE(mx28_gpio_ports)); +} +#endif diff --git a/trunk/arch/arm/mach-mxs/gpio.h b/trunk/arch/arm/mach-mxs/gpio.h new file mode 100644 index 000000000000..005bb06630b1 --- /dev/null +++ b/trunk/arch/arm/mach-mxs/gpio.h @@ -0,0 +1,34 @@ +/* + * Copyright 2007 Freescale Semiconductor, Inc. All Rights Reserved. + * Copyright 2008 Juergen Beisert, kernel@pengutronix.de + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#ifndef __MXS_GPIO_H__ +#define __MXS_GPIO_H__ + +struct mxs_gpio_port { + void __iomem *base; + int id; + int irq; + int irq_high; + int virtual_irq_start; + struct gpio_chip chip; +}; + +int mxs_gpio_init(struct mxs_gpio_port*, int); + +#endif /* __MXS_GPIO_H__ */ diff --git a/trunk/arch/arm/mach-mxs/include/mach/devices-common.h b/trunk/arch/arm/mach-mxs/include/mach/devices-common.h index 812d7a813a78..7a37469ed5bf 100644 --- a/trunk/arch/arm/mach-mxs/include/mach/devices-common.h +++ b/trunk/arch/arm/mach-mxs/include/mach/devices-common.h @@ -11,8 +11,6 @@ #include #include -extern struct device mxs_apbh_bus; - struct platform_device *mxs_add_platform_device_dmamask( const char *name, int id, const struct resource *res, unsigned int num_resources, diff --git a/trunk/arch/arm/mach-mxs/mach-mx28evk.c b/trunk/arch/arm/mach-mxs/mach-mx28evk.c index 56767a5cce0e..eacdc6b0e70a 100644 --- a/trunk/arch/arm/mach-mxs/mach-mx28evk.c +++ b/trunk/arch/arm/mach-mxs/mach-mx28evk.c @@ -26,6 +26,7 @@ #include #include "devices-mx28.h" +#include "gpio.h" #define MX28EVK_FLEXCAN_SWITCH MXS_GPIO_NR(2, 13) #define MX28EVK_FEC_PHY_POWER MXS_GPIO_NR(2, 15) diff --git a/trunk/arch/arm/mach-mxs/mm-mx23.c b/trunk/arch/arm/mach-mxs/mm-mx23.c index 1b2345ac1a87..5148cd64a6b7 100644 --- a/trunk/arch/arm/mach-mxs/mm-mx23.c +++ b/trunk/arch/arm/mach-mxs/mm-mx23.c @@ -41,4 +41,5 @@ void __init mx23_map_io(void) void __init mx23_init_irq(void) { icoll_init_irq(); + mx23_register_gpios(); } diff --git a/trunk/arch/arm/mach-mxs/mm-mx28.c b/trunk/arch/arm/mach-mxs/mm-mx28.c index b6e18ddb92c0..7e4cea32ebc6 100644 --- a/trunk/arch/arm/mach-mxs/mm-mx28.c +++ b/trunk/arch/arm/mach-mxs/mm-mx28.c @@ -41,4 +41,5 @@ void __init mx28_map_io(void) void __init mx28_init_irq(void) { icoll_init_irq(); + mx28_register_gpios(); } diff --git a/trunk/arch/arm/mach-omap1/gpio15xx.c b/trunk/arch/arm/mach-omap1/gpio15xx.c index 399da4ce017b..364137c2042c 100644 --- a/trunk/arch/arm/mach-omap1/gpio15xx.c +++ b/trunk/arch/arm/mach-omap1/gpio15xx.c @@ -34,22 +34,11 @@ static struct __initdata resource omap15xx_mpu_gpio_resources[] = { }, }; -static struct omap_gpio_reg_offs omap15xx_mpuio_regs = { - .revision = USHRT_MAX, - .direction = OMAP_MPUIO_IO_CNTL, - .datain = OMAP_MPUIO_INPUT_LATCH, - .dataout = OMAP_MPUIO_OUTPUT, - .irqstatus = OMAP_MPUIO_GPIO_INT, - .irqenable = OMAP_MPUIO_GPIO_MASKIT, - .irqenable_inv = true, -}; - static struct __initdata omap_gpio_platform_data omap15xx_mpu_gpio_config = { .virtual_irq_start = IH_MPUIO_BASE, .bank_type = METHOD_MPUIO, .bank_width = 16, .bank_stride = 1, - .regs = &omap15xx_mpuio_regs, }; static struct platform_device omap15xx_mpu_gpio = { @@ -75,21 +64,10 @@ static struct __initdata resource omap15xx_gpio_resources[] = { }, }; -static struct omap_gpio_reg_offs omap15xx_gpio_regs = { - .revision = USHRT_MAX, - .direction = OMAP1510_GPIO_DIR_CONTROL, - .datain = OMAP1510_GPIO_DATA_INPUT, - .dataout = OMAP1510_GPIO_DATA_OUTPUT, - .irqstatus = OMAP1510_GPIO_INT_STATUS, - .irqenable = OMAP1510_GPIO_INT_MASK, - .irqenable_inv = true, -}; - static struct __initdata omap_gpio_platform_data omap15xx_gpio_config = { .virtual_irq_start = IH_GPIO_BASE, .bank_type = METHOD_GPIO_1510, .bank_width = 16, - .regs = &omap15xx_gpio_regs, }; static struct platform_device omap15xx_gpio = { diff --git a/trunk/arch/arm/mach-omap1/gpio16xx.c b/trunk/arch/arm/mach-omap1/gpio16xx.c index 0f399bd0e70e..293a246e2824 100644 --- a/trunk/arch/arm/mach-omap1/gpio16xx.c +++ b/trunk/arch/arm/mach-omap1/gpio16xx.c @@ -37,22 +37,11 @@ static struct __initdata resource omap16xx_mpu_gpio_resources[] = { }, }; -static struct omap_gpio_reg_offs omap16xx_mpuio_regs = { - .revision = USHRT_MAX, - .direction = OMAP_MPUIO_IO_CNTL, - .datain = OMAP_MPUIO_INPUT_LATCH, - .dataout = OMAP_MPUIO_OUTPUT, - .irqstatus = OMAP_MPUIO_GPIO_INT, - .irqenable = OMAP_MPUIO_GPIO_MASKIT, - .irqenable_inv = true, -}; - static struct __initdata omap_gpio_platform_data omap16xx_mpu_gpio_config = { .virtual_irq_start = IH_MPUIO_BASE, .bank_type = METHOD_MPUIO, .bank_width = 16, .bank_stride = 1, - .regs = &omap16xx_mpuio_regs, }; static struct platform_device omap16xx_mpu_gpio = { @@ -78,24 +67,10 @@ static struct __initdata resource omap16xx_gpio1_resources[] = { }, }; -static struct omap_gpio_reg_offs omap16xx_gpio_regs = { - .revision = OMAP1610_GPIO_REVISION, - .direction = OMAP1610_GPIO_DIRECTION, - .set_dataout = OMAP1610_GPIO_SET_DATAOUT, - .clr_dataout = OMAP1610_GPIO_CLEAR_DATAOUT, - .datain = OMAP1610_GPIO_DATAIN, - .dataout = OMAP1610_GPIO_DATAOUT, - .irqstatus = OMAP1610_GPIO_IRQSTATUS1, - .irqenable = OMAP1610_GPIO_IRQENABLE1, - .set_irqenable = OMAP1610_GPIO_SET_IRQENABLE1, - .clr_irqenable = OMAP1610_GPIO_CLEAR_IRQENABLE1, -}; - static struct __initdata omap_gpio_platform_data omap16xx_gpio1_config = { .virtual_irq_start = IH_GPIO_BASE, .bank_type = METHOD_GPIO_1610, .bank_width = 16, - .regs = &omap16xx_gpio_regs, }; static struct platform_device omap16xx_gpio1 = { @@ -125,7 +100,6 @@ static struct __initdata omap_gpio_platform_data omap16xx_gpio2_config = { .virtual_irq_start = IH_GPIO_BASE + 16, .bank_type = METHOD_GPIO_1610, .bank_width = 16, - .regs = &omap16xx_gpio_regs, }; static struct platform_device omap16xx_gpio2 = { @@ -155,7 +129,6 @@ static struct __initdata omap_gpio_platform_data omap16xx_gpio3_config = { .virtual_irq_start = IH_GPIO_BASE + 32, .bank_type = METHOD_GPIO_1610, .bank_width = 16, - .regs = &omap16xx_gpio_regs, }; static struct platform_device omap16xx_gpio3 = { @@ -185,7 +158,6 @@ static struct __initdata omap_gpio_platform_data omap16xx_gpio4_config = { .virtual_irq_start = IH_GPIO_BASE + 48, .bank_type = METHOD_GPIO_1610, .bank_width = 16, - .regs = &omap16xx_gpio_regs, }; static struct platform_device omap16xx_gpio4 = { diff --git a/trunk/arch/arm/mach-omap1/gpio7xx.c b/trunk/arch/arm/mach-omap1/gpio7xx.c index 5ab63eab0ff5..c6ad248d63a6 100644 --- a/trunk/arch/arm/mach-omap1/gpio7xx.c +++ b/trunk/arch/arm/mach-omap1/gpio7xx.c @@ -39,22 +39,11 @@ static struct __initdata resource omap7xx_mpu_gpio_resources[] = { }, }; -static struct omap_gpio_reg_offs omap7xx_mpuio_regs = { - .revision = USHRT_MAX, - .direction = OMAP_MPUIO_IO_CNTL / 2, - .datain = OMAP_MPUIO_INPUT_LATCH / 2, - .dataout = OMAP_MPUIO_OUTPUT / 2, - .irqstatus = OMAP_MPUIO_GPIO_INT / 2, - .irqenable = OMAP_MPUIO_GPIO_MASKIT / 2, - .irqenable_inv = true, -}; - static struct __initdata omap_gpio_platform_data omap7xx_mpu_gpio_config = { .virtual_irq_start = IH_MPUIO_BASE, .bank_type = METHOD_MPUIO, .bank_width = 32, .bank_stride = 2, - .regs = &omap7xx_mpuio_regs, }; static struct platform_device omap7xx_mpu_gpio = { @@ -80,21 +69,10 @@ static struct __initdata resource omap7xx_gpio1_resources[] = { }, }; -static struct omap_gpio_reg_offs omap7xx_gpio_regs = { - .revision = USHRT_MAX, - .direction = OMAP7XX_GPIO_DIR_CONTROL, - .datain = OMAP7XX_GPIO_DATA_INPUT, - .dataout = OMAP7XX_GPIO_DATA_OUTPUT, - .irqstatus = OMAP7XX_GPIO_INT_STATUS, - .irqenable = OMAP7XX_GPIO_INT_MASK, - .irqenable_inv = true, -}; - static struct __initdata omap_gpio_platform_data omap7xx_gpio1_config = { .virtual_irq_start = IH_GPIO_BASE, .bank_type = METHOD_GPIO_7XX, .bank_width = 32, - .regs = &omap7xx_gpio_regs, }; static struct platform_device omap7xx_gpio1 = { @@ -124,7 +102,6 @@ static struct __initdata omap_gpio_platform_data omap7xx_gpio2_config = { .virtual_irq_start = IH_GPIO_BASE + 32, .bank_type = METHOD_GPIO_7XX, .bank_width = 32, - .regs = &omap7xx_gpio_regs, }; static struct platform_device omap7xx_gpio2 = { @@ -154,7 +131,6 @@ static struct __initdata omap_gpio_platform_data omap7xx_gpio3_config = { .virtual_irq_start = IH_GPIO_BASE + 64, .bank_type = METHOD_GPIO_7XX, .bank_width = 32, - .regs = &omap7xx_gpio_regs, }; static struct platform_device omap7xx_gpio3 = { @@ -184,7 +160,6 @@ static struct __initdata omap_gpio_platform_data omap7xx_gpio4_config = { .virtual_irq_start = IH_GPIO_BASE + 96, .bank_type = METHOD_GPIO_7XX, .bank_width = 32, - .regs = &omap7xx_gpio_regs, }; static struct platform_device omap7xx_gpio4 = { @@ -214,7 +189,6 @@ static struct __initdata omap_gpio_platform_data omap7xx_gpio5_config = { .virtual_irq_start = IH_GPIO_BASE + 128, .bank_type = METHOD_GPIO_7XX, .bank_width = 32, - .regs = &omap7xx_gpio_regs, }; static struct platform_device omap7xx_gpio5 = { @@ -244,7 +218,6 @@ static struct __initdata omap_gpio_platform_data omap7xx_gpio6_config = { .virtual_irq_start = IH_GPIO_BASE + 160, .bank_type = METHOD_GPIO_7XX, .bank_width = 32, - .regs = &omap7xx_gpio_regs, }; static struct platform_device omap7xx_gpio6 = { diff --git a/trunk/arch/arm/mach-omap2/gpio.c b/trunk/arch/arm/mach-omap2/gpio.c index 9a46d7773a48..9529842ae054 100644 --- a/trunk/arch/arm/mach-omap2/gpio.c +++ b/trunk/arch/arm/mach-omap2/gpio.c @@ -61,45 +61,13 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused) pdata->dbck_flag = dev_attr->dbck_flag; pdata->virtual_irq_start = IH_GPIO_BASE + 32 * (id - 1); - pdata->regs = kzalloc(sizeof(struct omap_gpio_reg_offs), GFP_KERNEL); - if (!pdata) { - pr_err("gpio%d: Memory allocation failed\n", id); - return -ENOMEM; - } - switch (oh->class->rev) { case 0: case 1: pdata->bank_type = METHOD_GPIO_24XX; - pdata->regs->revision = OMAP24XX_GPIO_REVISION; - pdata->regs->direction = OMAP24XX_GPIO_OE; - pdata->regs->datain = OMAP24XX_GPIO_DATAIN; - pdata->regs->dataout = OMAP24XX_GPIO_DATAOUT; - pdata->regs->set_dataout = OMAP24XX_GPIO_SETDATAOUT; - pdata->regs->clr_dataout = OMAP24XX_GPIO_CLEARDATAOUT; - pdata->regs->irqstatus = OMAP24XX_GPIO_IRQSTATUS1; - pdata->regs->irqstatus2 = OMAP24XX_GPIO_IRQSTATUS2; - pdata->regs->irqenable = OMAP24XX_GPIO_IRQENABLE1; - pdata->regs->set_irqenable = OMAP24XX_GPIO_SETIRQENABLE1; - pdata->regs->clr_irqenable = OMAP24XX_GPIO_CLEARIRQENABLE1; - pdata->regs->debounce = OMAP24XX_GPIO_DEBOUNCE_VAL; - pdata->regs->debounce_en = OMAP24XX_GPIO_DEBOUNCE_EN; break; case 2: pdata->bank_type = METHOD_GPIO_44XX; - pdata->regs->revision = OMAP4_GPIO_REVISION; - pdata->regs->direction = OMAP4_GPIO_OE; - pdata->regs->datain = OMAP4_GPIO_DATAIN; - pdata->regs->dataout = OMAP4_GPIO_DATAOUT; - pdata->regs->set_dataout = OMAP4_GPIO_SETDATAOUT; - pdata->regs->clr_dataout = OMAP4_GPIO_CLEARDATAOUT; - pdata->regs->irqstatus = OMAP4_GPIO_IRQSTATUS0; - pdata->regs->irqstatus2 = OMAP4_GPIO_IRQSTATUS1; - pdata->regs->irqenable = OMAP4_GPIO_IRQSTATUSSET0; - pdata->regs->set_irqenable = OMAP4_GPIO_IRQSTATUSSET0; - pdata->regs->clr_irqenable = OMAP4_GPIO_IRQSTATUSCLR0; - pdata->regs->debounce = OMAP4_GPIO_DEBOUNCINGTIME; - pdata->regs->debounce_en = OMAP4_GPIO_DEBOUNCENABLE; break; default: WARN(1, "Invalid gpio bank_type\n"); diff --git a/trunk/arch/arm/mach-s3c2410/include/mach/spi-gpio.h b/trunk/arch/arm/mach-s3c2410/include/mach/spi-gpio.h new file mode 100644 index 000000000000..dcef2287cb38 --- /dev/null +++ b/trunk/arch/arm/mach-s3c2410/include/mach/spi-gpio.h @@ -0,0 +1,28 @@ +/* arch/arm/mach-s3c2410/include/mach/spi-gpio.h + * + * Copyright (c) 2006 Simtec Electronics + * Ben Dooks + * + * S3C2410 - SPI Controller platform_device info + * + * 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. +*/ + +#ifndef __ASM_ARCH_SPIGPIO_H +#define __ASM_ARCH_SPIGPIO_H __FILE__ + +struct s3c2410_spigpio_info { + unsigned long pin_clk; + unsigned long pin_mosi; + unsigned long pin_miso; + + int num_chipselect; + int bus_num; + + void (*chip_select)(struct s3c2410_spigpio_info *spi, int cs); +}; + + +#endif /* __ASM_ARCH_SPIGPIO_H */ diff --git a/trunk/arch/arm/mach-s3c2410/mach-qt2410.c b/trunk/arch/arm/mach-s3c2410/mach-qt2410.c index f44f77531b1e..e8f49feef28c 100644 --- a/trunk/arch/arm/mach-s3c2410/mach-qt2410.c +++ b/trunk/arch/arm/mach-s3c2410/mach-qt2410.c @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include #include #include @@ -53,6 +53,8 @@ #include #include #include +#include +#include #include #include @@ -214,16 +216,32 @@ static struct platform_device qt2410_led = { /* SPI */ -static struct spi_gpio_platform_data spi_gpio_cfg = { - .sck = S3C2410_GPG(7), - .mosi = S3C2410_GPG(6), - .miso = S3C2410_GPG(5), +static void spi_gpio_cs(struct s3c2410_spigpio_info *spi, int cs) +{ + switch (cs) { + case BITBANG_CS_ACTIVE: + gpio_set_value(S3C2410_GPB(5), 0); + break; + case BITBANG_CS_INACTIVE: + gpio_set_value(S3C2410_GPB(5), 1); + break; + } +} + +static struct s3c2410_spigpio_info spi_gpio_cfg = { + .pin_clk = S3C2410_GPG(7), + .pin_mosi = S3C2410_GPG(6), + .pin_miso = S3C2410_GPG(5), + .chip_select = &spi_gpio_cs, }; + static struct platform_device qt2410_spi = { - .name = "spi-gpio", - .id = 1, - .dev.platform_data = &spi_gpio_cfg, + .name = "s3c24xx-spi-gpio", + .id = 1, + .dev = { + .platform_data = &spi_gpio_cfg, + }, }; /* Board devices */ diff --git a/trunk/arch/arm/mach-s3c2412/mach-jive.c b/trunk/arch/arm/mach-s3c2412/mach-jive.c index 5eeb47580b0c..85dcaeb9e62f 100644 --- a/trunk/arch/arm/mach-s3c2412/mach-jive.c +++ b/trunk/arch/arm/mach-s3c2412/mach-jive.c @@ -25,7 +25,6 @@ #include