From 22aa867420ad3e59cbab42ba753b281893433610 Mon Sep 17 00:00:00 2001 From: Stephen Boyd Date: Tue, 8 Nov 2011 10:33:03 -0800 Subject: [PATCH] --- yaml --- r: 281533 b: refs/heads/master c: 650e3f0d66ade2a614d854765dae3bbc9a87f58d h: refs/heads/master i: 281531: bacaa980959ef81509b4b6cf14139f9541a2aa1c v: v3 --- [refs] | 2 +- trunk/.mailmap | 2 - trunk/Documentation/ABI/testing/sysfs-block | 13 + trunk/Documentation/DocBook/drm.tmpl | 308 +++++----- trunk/Documentation/DocBook/uio-howto.tmpl | 7 +- trunk/Documentation/blockdev/cciss.txt | 14 +- .../cgroups/freezer-subsystem.txt | 4 +- trunk/Documentation/i2c/ten-bit-addresses | 36 +- trunk/Documentation/networking/ip-sysctl.txt | 2 +- trunk/Documentation/serial/serial-rs485.txt | 14 +- .../sound/alsa/HD-Audio-Models.txt | 1 - trunk/Documentation/sound/alsa/HD-Audio.txt | 8 +- trunk/Kbuild | 2 +- trunk/MAINTAINERS | 40 +- trunk/Makefile | 2 +- trunk/arch/arm/Kconfig.debug | 29 +- trunk/arch/arm/boot/Makefile | 2 - trunk/arch/arm/boot/dts/tegra-ventana.dts | 3 +- .../arm/include/asm/hardware/cache-l2x0.h | 2 - trunk/arch/arm/include/asm/mach/arch.h | 1 - trunk/arch/arm/include/asm/unistd.h | 2 - trunk/arch/arm/kernel/calls.S | 2 - trunk/arch/arm/kernel/head.S | 2 +- trunk/arch/arm/kernel/machine_kexec.c | 35 +- trunk/arch/arm/kernel/setup.c | 6 +- trunk/arch/arm/mach-at91/Kconfig | 24 +- trunk/arch/arm/mach-at91/at91cap9.c | 40 +- trunk/arch/arm/mach-at91/at91cap9_devices.c | 52 +- trunk/arch/arm/mach-at91/at91rm9200.c | 24 +- trunk/arch/arm/mach-at91/at91rm9200_devices.c | 49 +- trunk/arch/arm/mach-at91/at91rm9200_time.c | 8 +- trunk/arch/arm/mach-at91/at91sam9260.c | 36 +- .../arch/arm/mach-at91/at91sam9260_devices.c | 56 +- trunk/arch/arm/mach-at91/at91sam9261.c | 32 +- .../arch/arm/mach-at91/at91sam9261_devices.c | 34 +- trunk/arch/arm/mach-at91/at91sam9263.c | 45 +- .../arch/arm/mach-at91/at91sam9263_devices.c | 60 +- trunk/arch/arm/mach-at91/at91sam926x_time.c | 38 +- trunk/arch/arm/mach-at91/at91sam9g45.c | 44 +- .../arch/arm/mach-at91/at91sam9g45_devices.c | 72 +-- trunk/arch/arm/mach-at91/at91sam9rl.c | 36 +- trunk/arch/arm/mach-at91/at91sam9rl_devices.c | 46 +- trunk/arch/arm/mach-at91/board-1arm.c | 4 +- trunk/arch/arm/mach-at91/board-afeb-9260v1.c | 10 +- trunk/arch/arm/mach-at91/board-cam60.c | 8 +- trunk/arch/arm/mach-at91/board-cap9adk.c | 21 +- trunk/arch/arm/mach-at91/board-carmeva.c | 9 +- trunk/arch/arm/mach-at91/board-cpu9krea.c | 14 +- trunk/arch/arm/mach-at91/board-cpuat91.c | 7 +- trunk/arch/arm/mach-at91/board-csb337.c | 7 +- trunk/arch/arm/mach-at91/board-csb637.c | 4 +- trunk/arch/arm/mach-at91/board-dt.c | 3 +- trunk/arch/arm/mach-at91/board-eb9200.c | 11 +- trunk/arch/arm/mach-at91/board-ecbat91.c | 7 +- trunk/arch/arm/mach-at91/board-eco920.c | 7 +- trunk/arch/arm/mach-at91/board-flexibity.c | 5 +- trunk/arch/arm/mach-at91/board-foxg20.c | 9 +- trunk/arch/arm/mach-at91/board-gsia18s.c | 7 +- trunk/arch/arm/mach-at91/board-kafa.c | 4 +- trunk/arch/arm/mach-at91/board-kb9202.c | 8 +- trunk/arch/arm/mach-at91/board-neocore926.c | 9 +- trunk/arch/arm/mach-at91/board-pcontrol-g20.c | 8 +- trunk/arch/arm/mach-at91/board-picotux200.c | 5 +- trunk/arch/arm/mach-at91/board-qil-a9260.c | 18 +- trunk/arch/arm/mach-at91/board-rm9200dk.c | 13 +- trunk/arch/arm/mach-at91/board-rm9200ek.c | 5 +- trunk/arch/arm/mach-at91/board-rsi-ews.c | 4 +- trunk/arch/arm/mach-at91/board-sam9-l9260.c | 12 +- trunk/arch/arm/mach-at91/board-sam9260ek.c | 16 +- trunk/arch/arm/mach-at91/board-sam9261ek.c | 13 +- trunk/arch/arm/mach-at91/board-sam9263ek.c | 12 +- trunk/arch/arm/mach-at91/board-sam9g20ek.c | 13 +- trunk/arch/arm/mach-at91/board-sam9m10g45ek.c | 8 +- trunk/arch/arm/mach-at91/board-sam9rlek.c | 9 +- trunk/arch/arm/mach-at91/board-snapper9260.c | 10 +- trunk/arch/arm/mach-at91/board-stamp9g20.c | 16 +- trunk/arch/arm/mach-at91/board-usb-a926x.c | 14 +- trunk/arch/arm/mach-at91/board-yl-9200.c | 11 +- trunk/arch/arm/mach-at91/generic.h | 7 +- trunk/arch/arm/mach-at91/gpio.c | 85 ++- .../arm/mach-at91/include/mach/at91_aic.h | 48 +- .../arm/mach-at91/include/mach/at91_dbgu.h | 2 +- .../arm/mach-at91/include/mach/at91_pit.h | 8 +- .../arm/mach-at91/include/mach/at91_rtc.h | 24 +- .../arm/mach-at91/include/mach/at91_shdwc.h | 16 +- .../arm/mach-at91/include/mach/at91cap9.h | 27 +- .../arm/mach-at91/include/mach/at91rm9200.h | 14 +- .../arm/mach-at91/include/mach/at91sam9260.h | 23 +- .../arm/mach-at91/include/mach/at91sam9261.h | 20 +- .../arm/mach-at91/include/mach/at91sam9263.h | 33 +- .../arm/mach-at91/include/mach/at91sam9_smc.h | 17 +- .../arm/mach-at91/include/mach/at91sam9g45.h | 30 +- .../arm/mach-at91/include/mach/at91sam9rl.h | 29 +- .../arch/arm/mach-at91/include/mach/at91x40.h | 1 + trunk/arch/arm/mach-at91/include/mach/board.h | 42 +- .../arm/mach-at91/include/mach/debug-macro.S | 10 +- .../arm/mach-at91/include/mach/entry-macro.S | 11 +- trunk/arch/arm/mach-at91/include/mach/gpio.h | 336 +++++------ .../arm/mach-at91/include/mach/hardware.h | 12 - trunk/arch/arm/mach-at91/include/mach/irqs.h | 2 +- trunk/arch/arm/mach-at91/include/mach/timex.h | 65 ++- .../arm/mach-at91/include/mach/uncompress.h | 6 +- .../arch/arm/mach-at91/include/mach/vmalloc.h | 2 - trunk/arch/arm/mach-at91/irq.c | 38 +- trunk/arch/arm/mach-at91/pm.c | 11 +- trunk/arch/arm/mach-at91/sam9_smc.c | 62 +- trunk/arch/arm/mach-at91/sam9_smc.h | 3 +- trunk/arch/arm/mach-at91/setup.c | 26 +- trunk/arch/arm/mach-at91/soc.h | 1 - trunk/arch/arm/mach-bcmring/core.c | 2 +- trunk/arch/arm/mach-bcmring/dma.c | 1 - trunk/arch/arm/mach-imx/Makefile.boot | 34 +- trunk/arch/arm/mach-imx/clock-imx6q.c | 17 +- trunk/arch/arm/mach-msm/Kconfig | 32 -- trunk/arch/arm/mach-msm/Makefile | 2 - trunk/arch/arm/mach-msm/board-msm7x30.c | 4 +- trunk/arch/arm/mach-msm/board-msm8960.c | 4 +- trunk/arch/arm/mach-msm/board-msm8x60.c | 4 +- .../arm/mach-msm/include/mach/debug-macro.S | 19 +- .../mach-msm/include/mach/msm_iomap-7x00.h | 12 - .../mach-msm/include/mach/msm_iomap-7x30.h | 12 - .../mach-msm/include/mach/msm_iomap-8x50.h | 12 - .../arm/mach-msm/include/mach/msm_iomap.h | 12 + trunk/arch/arm/mach-msm/io.c | 9 +- trunk/arch/arm/mach-msm/scm.c | 3 - trunk/arch/arm/mach-mx5/clock-mx51-mx53.c | 6 +- trunk/arch/arm/mach-mxs/mach-mx28evk.c | 4 +- .../mach-picoxcell/include/mach/debug-macro.S | 2 +- trunk/arch/arm/mach-shmobile/Makefile | 2 +- trunk/arch/arm/mach-shmobile/board-ag5evm.c | 16 +- trunk/arch/arm/mach-shmobile/board-ap4evb.c | 2 +- trunk/arch/arm/mach-shmobile/board-kota2.c | 7 - trunk/arch/arm/mach-shmobile/clock-sh7372.c | 8 +- trunk/arch/arm/mach-shmobile/cpuidle.c | 52 +- .../arm/mach-shmobile/include/mach/common.h | 4 +- .../arm/mach-shmobile/include/mach/sh73a0.h | 8 - trunk/arch/arm/mach-shmobile/pfc-sh7367.c | 122 +++- trunk/arch/arm/mach-shmobile/pfc-sh7372.c | 262 +++++---- trunk/arch/arm/mach-shmobile/pfc-sh7377.c | 159 ++++-- trunk/arch/arm/mach-shmobile/pfc-sh73a0.c | 193 ++++--- trunk/arch/arm/mach-shmobile/pm-sh7372.c | 47 +- .../arm/mach-shmobile}/pm_runtime.c | 4 +- trunk/arch/arm/mach-tegra/board-dt.c | 13 +- .../arm/mach-tegra/board-harmony-pinmux.c | 6 +- .../arch/arm/mach-tegra/board-paz00-pinmux.c | 6 +- .../arm/mach-tegra/board-seaboard-pinmux.c | 6 +- .../arm/mach-tegra/board-trimslice-pinmux.c | 5 +- trunk/arch/arm/mach-w90x900/dev.c | 4 +- .../arch/arm/mach-w90x900/include/mach/mfp.h | 3 +- .../mach-w90x900/include/mach/nuc900_spi.h | 2 +- trunk/arch/arm/mach-w90x900/mfp.c | 48 +- trunk/arch/arm/plat-mxc/Kconfig | 4 +- trunk/arch/arm/plat-mxc/avic.c | 1 - trunk/arch/arm/plat-mxc/gic.c | 11 +- .../arm/plat-mxc/include/mach/entry-macro.S | 3 + trunk/arch/arm/plat-mxc/tzic.c | 1 - trunk/arch/avr32/boards/atngw100/setup.c | 2 +- trunk/arch/avr32/boards/atstk1000/atstk1002.c | 2 +- trunk/arch/avr32/boards/favr-32/setup.c | 2 +- trunk/arch/avr32/boards/hammerhead/setup.c | 2 +- trunk/arch/avr32/boards/merisc/setup.c | 2 +- trunk/arch/avr32/boards/mimc200/setup.c | 2 +- trunk/arch/avr32/mach-at32ap/at32ap700x.c | 8 +- .../avr32/mach-at32ap/include/mach/board.h | 7 +- trunk/arch/blackfin/include/asm/bfin_serial.h | 2 - trunk/arch/blackfin/mach-bf518/boards/ezbrd.c | 14 +- .../blackfin/mach-bf518/boards/tcm-bf518.c | 14 +- .../blackfin/mach-bf527/boards/ad7160eval.c | 14 +- .../blackfin/mach-bf527/boards/cm_bf527.c | 16 +- trunk/arch/blackfin/mach-bf527/boards/ezbrd.c | 16 +- trunk/arch/blackfin/mach-bf527/boards/ezkit.c | 14 +- .../blackfin/mach-bf527/boards/tll6527m.c | 14 +- trunk/arch/blackfin/mach-bf533/boards/H8606.c | 7 +- .../blackfin/mach-bf533/boards/blackstamp.c | 7 +- .../blackfin/mach-bf533/boards/cm_bf533.c | 7 +- trunk/arch/blackfin/mach-bf533/boards/ezkit.c | 7 +- trunk/arch/blackfin/mach-bf533/boards/ip0x.c | 7 +- trunk/arch/blackfin/mach-bf533/boards/stamp.c | 7 +- .../blackfin/mach-bf537/boards/cm_bf537e.c | 16 +- .../blackfin/mach-bf537/boards/cm_bf537u.c | 16 +- .../arch/blackfin/mach-bf537/boards/dnp5370.c | 16 +- .../blackfin/mach-bf537/boards/minotaur.c | 14 +- .../arch/blackfin/mach-bf537/boards/pnav10.c | 15 +- trunk/arch/blackfin/mach-bf537/boards/stamp.c | 16 +- .../blackfin/mach-bf537/boards/tcm_bf537.c | 16 +- trunk/arch/blackfin/mach-bf538/boards/ezkit.c | 21 +- .../blackfin/mach-bf548/boards/cm_bf548.c | 28 +- trunk/arch/blackfin/mach-bf548/boards/ezkit.c | 28 +- .../arch/blackfin/mach-bf561/boards/acvilon.c | 7 +- .../blackfin/mach-bf561/boards/cm_bf561.c | 7 +- trunk/arch/blackfin/mach-bf561/boards/ezkit.c | 7 +- trunk/arch/blackfin/mach-bf561/boards/tepla.c | 7 +- trunk/arch/cris/arch-v10/drivers/Kconfig | 2 +- trunk/arch/cris/arch-v32/drivers/Kconfig | 2 +- trunk/arch/m68k/Kconfig | 4 +- trunk/arch/m68k/Kconfig.bus | 9 - trunk/arch/m68k/Kconfig.devices | 31 - trunk/arch/m68k/amiga/amiints.c | 168 +++--- trunk/arch/m68k/amiga/cia.c | 39 +- trunk/arch/m68k/apollo/dn_ints.c | 35 +- trunk/arch/m68k/atari/ataints.c | 274 ++++++++- trunk/arch/m68k/bvme6000/config.c | 2 +- trunk/arch/m68k/hp300/time.c | 2 +- trunk/arch/m68k/include/asm/hardirq.h | 5 - trunk/arch/m68k/include/asm/irq.h | 69 ++- trunk/arch/m68k/include/asm/macintosh.h | 2 - trunk/arch/m68k/include/asm/q40ints.h | 3 + trunk/arch/m68k/kernel/Makefile | 9 +- trunk/arch/m68k/kernel/entry_mm.S | 7 +- trunk/arch/m68k/kernel/ints.c | 323 ++++++++++- trunk/arch/m68k/mac/baboon.c | 21 +- trunk/arch/m68k/mac/iop.c | 10 +- trunk/arch/m68k/mac/macints.c | 24 +- trunk/arch/m68k/mac/oss.c | 54 +- trunk/arch/m68k/mac/psc.c | 49 +- trunk/arch/m68k/mac/via.c | 74 ++- trunk/arch/m68k/mvme147/config.c | 5 +- trunk/arch/m68k/mvme16x/config.c | 2 +- trunk/arch/m68k/q40/q40ints.c | 60 +- trunk/arch/m68k/sun3/sun3ints.c | 46 +- trunk/arch/microblaze/include/asm/namei.h | 22 + trunk/arch/mips/Makefile | 4 +- trunk/arch/mips/cavium-octeon/flash_setup.c | 9 +- trunk/arch/mips/cavium-octeon/smp.c | 5 +- trunk/arch/mips/emma/common/prom.c | 2 +- .../arch/mips/include/asm/mach-bcm47xx/gpio.h | 18 +- trunk/arch/mips/include/asm/unistd.h | 18 +- trunk/arch/mips/kernel/cevt-r4k.c | 38 +- .../mips/kernel/cpufreq/loongson2_clock.c | 1 - trunk/arch/mips/kernel/scall32-o32.S | 2 - trunk/arch/mips/kernel/scall64-64.S | 2 - trunk/arch/mips/kernel/scall64-n32.S | 2 - trunk/arch/mips/kernel/scall64-o32.S | 2 - trunk/arch/mips/kernel/traps.c | 3 +- trunk/arch/mips/lantiq/clk.c | 2 +- trunk/arch/mips/lantiq/devices.c | 2 +- trunk/arch/mips/lantiq/prom.c | 2 +- trunk/arch/mips/lantiq/setup.c | 2 +- trunk/arch/mips/lantiq/xway/clk-ase.c | 2 +- trunk/arch/mips/lantiq/xway/clk-xway.c | 2 +- trunk/arch/mips/lantiq/xway/devices.c | 2 +- trunk/arch/mips/lantiq/xway/dma.c | 1 - trunk/arch/mips/lantiq/xway/gpio.c | 2 +- trunk/arch/mips/lantiq/xway/gpio_ebu.c | 2 +- trunk/arch/mips/lantiq/xway/gpio_stp.c | 2 +- trunk/arch/mips/lantiq/xway/prom-ase.c | 2 +- trunk/arch/mips/lantiq/xway/prom-xway.c | 2 +- trunk/arch/mips/lantiq/xway/reset.c | 2 +- trunk/arch/mips/nxp/pnx8550/common/pci.c | 134 +++++ trunk/arch/mips/nxp/pnx8550/common/setup.c | 143 +++++ trunk/arch/mips/pci/pci-alchemy.c | 1 - trunk/arch/mips/pci/pci-lantiq.c | 1 - trunk/arch/mips/pmc-sierra/yosemite/prom.c | 2 +- trunk/arch/powerpc/Kconfig | 2 +- trunk/arch/powerpc/Makefile | 6 + trunk/arch/powerpc/boot/dts/charon.dts | 236 -------- .../powerpc/configs/52xx/tqm5200_defconfig | 20 +- trunk/arch/powerpc/configs/ppc64_defconfig | 4 - trunk/arch/powerpc/configs/pseries_defconfig | 4 - trunk/arch/powerpc/include/asm/atomic.h | 48 +- trunk/arch/powerpc/include/asm/bitops.h | 12 +- trunk/arch/powerpc/include/asm/floppy.h | 4 +- trunk/arch/powerpc/include/asm/futex.h | 7 +- trunk/arch/powerpc/include/asm/kvm.h | 8 + trunk/arch/powerpc/include/asm/kvm_book3s.h | 2 + trunk/arch/powerpc/include/asm/lv1call.h | 2 +- trunk/arch/powerpc/include/asm/reg_booke.h | 2 +- trunk/arch/powerpc/include/asm/sections.h | 2 +- trunk/arch/powerpc/include/asm/synch.h | 9 +- trunk/arch/powerpc/include/asm/xics.h | 4 +- trunk/arch/powerpc/kernel/entry_32.S | 15 - trunk/arch/powerpc/kernel/exceptions-64s.S | 6 +- trunk/arch/powerpc/kernel/jump_label.c | 2 - trunk/arch/powerpc/kernel/kvm.c | 1 + trunk/arch/powerpc/kernel/misc_32.S | 2 +- trunk/arch/powerpc/kernel/process.c | 24 +- trunk/arch/powerpc/kernel/prom_init.c | 6 +- trunk/arch/powerpc/kernel/setup_32.c | 2 - trunk/arch/powerpc/kernel/setup_64.c | 1 - trunk/arch/powerpc/kernel/signal_32.c | 2 +- trunk/arch/powerpc/kernel/smp.c | 2 +- trunk/arch/powerpc/kernel/traps.c | 2 + trunk/arch/powerpc/kvm/book3s_hv.c | 1 - trunk/arch/powerpc/kvm/book3s_hv_rmhandlers.S | 2 +- trunk/arch/powerpc/kvm/book3s_pr.c | 14 +- trunk/arch/powerpc/kvm/powerpc.c | 1 + trunk/arch/powerpc/lib/feature-fixups.c | 23 - trunk/arch/powerpc/mm/mem.c | 30 - trunk/arch/powerpc/mm/numa.c | 24 +- .../powerpc/platforms/52xx/mpc5200_simple.c | 1 - trunk/arch/powerpc/platforms/Kconfig | 2 +- trunk/arch/powerpc/platforms/cell/beat.c | 2 +- .../powerpc/platforms/cell/celleb_scc_pciex.c | 2 +- trunk/arch/powerpc/platforms/cell/iommu.c | 3 +- trunk/arch/powerpc/platforms/cell/pmu.c | 2 +- trunk/arch/powerpc/platforms/cell/spu_base.c | 9 +- trunk/arch/powerpc/platforms/powermac/pic.c | 1 + trunk/arch/powerpc/platforms/powermac/smp.c | 4 +- .../arch/powerpc/platforms/ps3/device-init.c | 2 +- trunk/arch/powerpc/platforms/ps3/interrupt.c | 23 +- trunk/arch/powerpc/platforms/ps3/platform.h | 1 - trunk/arch/powerpc/platforms/ps3/repository.c | 32 +- trunk/arch/powerpc/platforms/ps3/smp.c | 62 +- trunk/arch/powerpc/sysdev/fsl_rio.c | 2 +- trunk/arch/powerpc/sysdev/mpic.c | 2 + trunk/arch/powerpc/sysdev/ppc4xx_soc.c | 2 +- trunk/arch/powerpc/sysdev/xics/xics-common.c | 5 +- trunk/arch/s390/Kconfig | 1 - trunk/arch/s390/crypto/crypt_s390.h | 7 +- trunk/arch/s390/include/asm/kvm_host.h | 3 +- trunk/arch/s390/include/asm/pgtable.h | 12 +- trunk/arch/s390/include/asm/setup.h | 3 - trunk/arch/s390/include/asm/timex.h | 2 +- trunk/arch/s390/include/asm/unistd.h | 4 +- trunk/arch/s390/kernel/compat_wrapper.S | 20 - trunk/arch/s390/kernel/early.c | 2 - trunk/arch/s390/kernel/setup.c | 4 +- trunk/arch/s390/kernel/syscalls.S | 2 - trunk/arch/s390/kernel/topology.c | 45 +- trunk/arch/s390/kernel/vmlinux.lds.S | 2 - trunk/arch/s390/kvm/diag.c | 2 +- trunk/arch/s390/kvm/intercept.c | 3 +- trunk/arch/s390/kvm/interrupt.c | 1 - trunk/arch/s390/kvm/kvm-s390.c | 12 +- trunk/arch/s390/kvm/priv.c | 10 +- trunk/arch/s390/kvm/sigp.c | 45 +- trunk/arch/s390/mm/fault.c | 9 +- trunk/arch/sh/include/asm/page.h | 5 - trunk/arch/sh/include/asm/unistd_32.h | 4 +- trunk/arch/sh/include/asm/unistd_64.h | 4 +- trunk/arch/sh/kernel/cpu/sh2a/setup-sh7203.c | 16 +- trunk/arch/sh/kernel/syscalls_32.S | 2 - trunk/arch/sh/kernel/syscalls_64.S | 2 - trunk/arch/sparc/include/asm/pgtable_32.h | 20 +- trunk/arch/sparc/include/asm/pgtable_64.h | 20 +- trunk/arch/sparc/include/asm/unistd.h | 4 +- trunk/arch/sparc/kernel/entry.h | 7 - trunk/arch/sparc/kernel/module.c | 27 - trunk/arch/sparc/kernel/setup_64.c | 48 +- trunk/arch/sparc/kernel/signal32.c | 18 +- trunk/arch/sparc/kernel/signal_32.c | 30 +- trunk/arch/sparc/kernel/signal_64.c | 42 +- trunk/arch/sparc/kernel/sigutil_64.c | 1 - trunk/arch/sparc/kernel/systbls_32.S | 2 +- trunk/arch/sparc/kernel/systbls_64.S | 4 +- trunk/arch/sparc/mm/Makefile | 1 + trunk/arch/sparc/mm/generic_32.c | 99 ++++ trunk/arch/sparc/mm/generic_64.c | 165 ++++++ trunk/arch/unicore32/Kconfig | 4 +- trunk/arch/unicore32/Kconfig.debug | 14 + trunk/arch/unicore32/boot/compressed/Makefile | 4 +- trunk/arch/unicore32/include/asm/bitops.h | 12 +- trunk/arch/unicore32/include/asm/processor.h | 1 + trunk/arch/unicore32/kernel/ksyms.c | 4 +- trunk/arch/unicore32/lib/findbit.S | 14 +- trunk/arch/x86/include/asm/apic.h | 1 - trunk/arch/x86/include/asm/mach_traps.h | 2 +- trunk/arch/x86/include/asm/mce.h | 5 +- trunk/arch/x86/include/asm/mrst.h | 7 - trunk/arch/x86/include/asm/x86_init.h | 3 - trunk/arch/x86/kernel/alternative.c | 2 +- trunk/arch/x86/kernel/apic/apic.c | 33 +- trunk/arch/x86/kernel/apic/io_apic.c | 9 +- trunk/arch/x86/kernel/cpu/mcheck/mce-inject.c | 2 +- trunk/arch/x86/kernel/cpu/mcheck/mce.c | 25 +- trunk/arch/x86/kernel/kvmclock.c | 5 +- trunk/arch/x86/kernel/nmi.c | 3 +- trunk/arch/x86/kernel/setup.c | 2 - trunk/arch/x86/kernel/x86_init.c | 4 - trunk/arch/x86/kvm/vmx.c | 131 +---- trunk/arch/x86/platform/ce4100/ce4100.c | 2 +- trunk/arch/x86/platform/mrst/mrst.c | 47 +- trunk/arch/x86/platform/mrst/vrtc.c | 4 +- trunk/arch/x86/um/asm/processor.h | 2 +- trunk/arch/x86/xen/enlighten.c | 3 +- trunk/arch/x86/xen/grant-table.c | 2 +- trunk/block/blk-core.c | 18 +- trunk/block/blk-map.c | 7 +- trunk/block/genhd.c | 71 +++ trunk/crypto/ablkcipher.c | 14 - trunk/crypto/aead.c | 14 - trunk/crypto/ahash.c | 7 - trunk/crypto/blkcipher.c | 7 - trunk/crypto/crypto_user.c | 3 + trunk/crypto/pcompress.c | 7 - trunk/crypto/rng.c | 7 - trunk/crypto/shash.c | 7 - trunk/drivers/acpi/processor_idle.c | 29 + trunk/drivers/ata/ahci.c | 3 - trunk/drivers/ata/ahci_platform.c | 6 +- trunk/drivers/ata/libata-eh.c | 12 +- trunk/drivers/ata/libata-pmp.c | 7 +- trunk/drivers/ata/libata-scsi.c | 4 - trunk/drivers/ata/libata-sff.c | 4 - trunk/drivers/ata/pata_at91.c | 6 +- trunk/drivers/ata/pata_of_platform.c | 2 +- trunk/drivers/ata/sata_sis.c | 2 +- trunk/drivers/base/core.c | 3 - trunk/drivers/base/node.c | 14 +- trunk/drivers/base/power/clock_ops.c | 3 +- trunk/drivers/base/power/main.c | 3 +- trunk/drivers/base/power/opp.c | 2 +- trunk/drivers/base/power/qos.c | 18 +- trunk/drivers/block/cciss.c | 6 - trunk/drivers/block/cciss_scsi.c | 1 - trunk/drivers/block/loop.c | 47 +- trunk/drivers/block/paride/pg.c | 1 - trunk/drivers/bluetooth/btusb.c | 3 - trunk/drivers/char/agp/intel-gtt.c | 7 +- trunk/drivers/char/random.c | 2 +- trunk/drivers/cpufreq/db8500-cpufreq.c | 6 +- trunk/drivers/devfreq/Kconfig | 41 +- trunk/drivers/devfreq/devfreq.c | 10 +- trunk/drivers/firmware/dmi_scan.c | 6 +- trunk/drivers/gpio/gpio-omap.c | 59 +- trunk/drivers/gpio/gpio-pca953x.c | 11 +- trunk/drivers/gpu/drm/Kconfig | 2 +- trunk/drivers/gpu/drm/drm_crtc.c | 8 +- trunk/drivers/gpu/drm/drm_crtc_helper.c | 13 - trunk/drivers/gpu/drm/drm_debugfs.c | 12 +- trunk/drivers/gpu/drm/drm_drv.c | 2 +- trunk/drivers/gpu/drm/drm_irq.c | 31 +- trunk/drivers/gpu/drm/i915/i915_debugfs.c | 62 +- trunk/drivers/gpu/drm/i915/i915_drv.c | 10 +- trunk/drivers/gpu/drm/i915/i915_drv.h | 19 +- trunk/drivers/gpu/drm/i915/i915_gem.c | 14 +- trunk/drivers/gpu/drm/i915/i915_irq.c | 1 - trunk/drivers/gpu/drm/i915/i915_reg.h | 21 +- trunk/drivers/gpu/drm/i915/i915_suspend.c | 2 - trunk/drivers/gpu/drm/i915/intel_display.c | 33 +- trunk/drivers/gpu/drm/i915/intel_dp.c | 411 ++++++-------- trunk/drivers/gpu/drm/i915/intel_panel.c | 3 +- trunk/drivers/gpu/drm/nouveau/nouveau_bios.c | 22 +- trunk/drivers/gpu/drm/nouveau/nouveau_bo.c | 2 +- .../drivers/gpu/drm/nouveau/nouveau_channel.c | 1 - .../gpu/drm/nouveau/nouveau_connector.c | 2 +- trunk/drivers/gpu/drm/nouveau/nouveau_fbcon.c | 11 +- trunk/drivers/gpu/drm/nouveau/nouveau_fence.c | 2 + trunk/drivers/gpu/drm/nouveau/nouveau_i2c.c | 2 +- trunk/drivers/gpu/drm/nouveau/nouveau_perf.c | 2 +- trunk/drivers/gpu/drm/nouveau/nouveau_state.c | 13 +- trunk/drivers/gpu/drm/nouveau/nv40_pm.c | 20 +- trunk/drivers/gpu/drm/nouveau/nv50_graph.c | 4 +- trunk/drivers/gpu/drm/nouveau/nv50_grctx.c | 2 +- trunk/drivers/gpu/drm/nouveau/nv50_vram.c | 2 +- trunk/drivers/gpu/drm/nouveau/nvc0_graph.c | 41 +- trunk/drivers/gpu/drm/nouveau/nvc0_grctx.c | 31 +- trunk/drivers/gpu/drm/nouveau/nvc0_vram.c | 16 +- trunk/drivers/gpu/drm/radeon/atombios_crtc.c | 6 + trunk/drivers/gpu/drm/radeon/atombios_dp.c | 2 +- trunk/drivers/gpu/drm/radeon/evergreen.c | 53 +- trunk/drivers/gpu/drm/radeon/evergreen_cs.c | 92 ++- trunk/drivers/gpu/drm/radeon/r300.c | 94 ++-- trunk/drivers/gpu/drm/radeon/r600.c | 118 ++-- trunk/drivers/gpu/drm/radeon/r600_cs.c | 26 +- trunk/drivers/gpu/drm/radeon/radeon.h | 53 +- trunk/drivers/gpu/drm/radeon/radeon_asic.c | 2 +- trunk/drivers/gpu/drm/radeon/radeon_asic.h | 1 - .../drivers/gpu/drm/radeon/radeon_atombios.c | 304 +++++----- .../drivers/gpu/drm/radeon/radeon_benchmark.c | 2 +- trunk/drivers/gpu/drm/radeon/radeon_combios.c | 27 +- trunk/drivers/gpu/drm/radeon/radeon_cs.c | 25 +- trunk/drivers/gpu/drm/radeon/radeon_device.c | 16 +- trunk/drivers/gpu/drm/radeon/radeon_drv.c | 3 +- .../gpu/drm/radeon/radeon_legacy_crtc.c | 6 + trunk/drivers/gpu/drm/radeon/radeon_pm.c | 18 - trunk/drivers/gpu/drm/ttm/ttm_bo.c | 8 +- trunk/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 14 +- trunk/drivers/gpu/vga/vgaarb.c | 62 +- trunk/drivers/hwmon/Kconfig | 2 +- trunk/drivers/hwspinlock/u8500_hsem.c | 7 +- trunk/drivers/i2c/algos/i2c-algo-bit.c | 4 +- trunk/drivers/i2c/i2c-core.c | 4 +- trunk/drivers/i2c/i2c-dev.c | 2 +- trunk/drivers/ide/at91_ide.c | 2 +- trunk/drivers/ide/cy82c693.c | 6 +- trunk/drivers/ide/icside.c | 2 +- trunk/drivers/ide/ide-cd.c | 1 + trunk/drivers/ide/ide-floppy.c | 1 + trunk/drivers/ide/ide-tape.c | 1 + trunk/drivers/ide/piix.c | 18 +- trunk/drivers/ide/triflex.c | 16 +- trunk/drivers/input/mouse/elantech.c | 26 +- trunk/drivers/input/serio/ams_delta_serio.c | 1 - trunk/drivers/input/serio/i8042-x86ia64io.h | 14 - trunk/drivers/iommu/omap-iommu-debug.c | 1 - trunk/drivers/iommu/omap-iovmm.c | 1 - trunk/drivers/leds/led-class.c | 5 +- trunk/drivers/macintosh/via-macii.c | 2 +- trunk/drivers/macintosh/via-maciisi.c | 4 +- trunk/drivers/md/raid5.c | 16 +- .../drivers/media/dvb/dvb-usb/mxl111sf-i2c.c | 3 +- .../drivers/media/dvb/dvb-usb/mxl111sf-phy.c | 7 +- trunk/drivers/media/video/s5k6aa.c | 1 - .../drivers/media/video/s5p-mfc/s5p_mfc_dec.c | 4 +- .../drivers/media/video/s5p-mfc/s5p_mfc_enc.c | 4 +- trunk/drivers/media/video/uvc/uvc_ctrl.c | 6 +- trunk/drivers/media/video/v4l2-ctrls.c | 5 +- trunk/drivers/media/video/v4l2-event.c | 10 +- trunk/drivers/media/video/videobuf2-core.c | 6 +- trunk/drivers/mfd/ab5500-core.c | 1 - trunk/drivers/mfd/ab5500-debugfs.c | 1 - trunk/drivers/misc/Kconfig | 15 +- trunk/drivers/misc/ad525x_dpot.h | 2 +- trunk/drivers/misc/carma/carma-fpga-program.c | 9 +- trunk/drivers/misc/carma/carma-fpga.c | 9 +- trunk/drivers/misc/eeprom/Kconfig | 2 +- trunk/drivers/misc/pch_phub.c | 81 +-- trunk/drivers/misc/spear13xx_pcie_gadget.c | 2 +- trunk/drivers/mmc/host/at91_mci.c | 30 +- trunk/drivers/mmc/host/sdhci-esdhc-imx.c | 8 - trunk/drivers/mtd/maps/bcm963xx-flash.c | 1 - trunk/drivers/mtd/nand/atmel_nand.c | 8 +- trunk/drivers/net/Kconfig | 2 - trunk/drivers/net/bonding/bond_sysfs.c | 7 - .../net/ethernet/broadcom/bnx2x/bnx2x_main.c | 50 +- .../net/ethernet/broadcom/bnx2x/bnx2x_sp.c | 15 +- trunk/drivers/net/ethernet/cadence/Kconfig | 1 - .../drivers/net/ethernet/cadence/at91_ether.c | 3 +- .../drivers/net/ethernet/cadence/at91_ether.h | 4 +- trunk/drivers/net/ethernet/cadence/macb.c | 153 +++-- trunk/drivers/net/ethernet/lantiq_etop.c | 2 - trunk/drivers/net/ethernet/marvell/sky2.c | 106 ++-- trunk/drivers/net/ethernet/marvell/sky2.h | 1 - .../net/ethernet/mellanox/mlx4/en_rx.c | 6 +- .../net/ethernet/mellanox/mlx4/mlx4_en.h | 1 - trunk/drivers/net/ethernet/nvidia/forcedeth.c | 36 +- .../ethernet/oki-semi/pch_gbe/pch_gbe_param.c | 2 +- trunk/drivers/net/ethernet/rdc/r6040.c | 2 +- trunk/drivers/net/ethernet/realtek/r8169.c | 2 +- trunk/drivers/net/ethernet/smsc/smsc911x.c | 12 - .../ethernet/stmicro/stmmac/dwmac1000_dma.c | 3 +- .../ethernet/stmicro/stmmac/dwmac100_dma.c | 3 +- .../net/ethernet/stmicro/stmmac/stmmac.h | 2 +- .../ethernet/stmicro/stmmac/stmmac_ethtool.c | 6 - .../net/ethernet/stmicro/stmmac/stmmac_main.c | 117 ++-- trunk/drivers/net/ethernet/sun/sunhme.c | 2 +- .../net/ethernet/xilinx/ll_temac_main.c | 7 +- trunk/drivers/net/hippi/Kconfig | 2 +- trunk/drivers/net/usb/asix.c | 68 +-- trunk/drivers/net/usb/cdc_ether.c | 2 +- trunk/drivers/net/usb/lg-vl600.c | 25 +- trunk/drivers/net/usb/smsc75xx.c | 7 +- trunk/drivers/net/wireless/ath/regd.c | 2 - trunk/drivers/net/wireless/b43/xmit.c | 15 +- trunk/drivers/net/wireless/b43/xmit.h | 16 +- .../net/wireless/brcm80211/brcmsmac/dma.c | 5 +- .../net/wireless/iwlwifi/iwl-trans-pcie.c | 33 +- trunk/drivers/net/wireless/libertas/cfg.c | 2 +- trunk/drivers/net/wireless/libertas/if_spi.c | 1 - trunk/drivers/net/wireless/mwifiex/scan.c | 9 +- trunk/drivers/net/wireless/rt2x00/rt2800usb.c | 1 - trunk/drivers/net/wireless/rt2x00/rt2x00.h | 1 - trunk/drivers/net/wireless/rt2x00/rt2x00dev.c | 22 +- trunk/drivers/net/wireless/wl12xx/scan.c | 2 +- trunk/drivers/of/irq.c | 14 +- trunk/drivers/pci/Kconfig | 1 - trunk/drivers/pci/hotplug/acpiphp_glue.c | 29 +- trunk/drivers/pci/hotplug/pciehp_ctrl.c | 3 + trunk/drivers/pci/hotplug/pciehp_hpc.c | 27 +- trunk/drivers/pci/hotplug/shpchp_core.c | 4 +- trunk/drivers/pci/hotplug/shpchp_hpc.c | 4 +- trunk/drivers/pinctrl/Kconfig | 22 +- trunk/drivers/platform/x86/Kconfig | 4 +- trunk/drivers/platform/x86/dell-laptop.c | 4 +- trunk/drivers/ps3/ps3-vuart.c | 2 +- trunk/drivers/ps3/ps3stor_lib.c | 2 +- trunk/drivers/regulator/tps65910-regulator.c | 14 +- trunk/drivers/rtc/rtc-at91rm9200.c | 101 ++-- trunk/drivers/rtc/rtc-mrst.c | 19 +- trunk/drivers/rtc/rtc-puv3.c | 4 +- trunk/drivers/s390/char/zcore.c | 2 - trunk/drivers/s390/crypto/ap_bus.c | 23 +- trunk/drivers/s390/net/Kconfig | 2 +- trunk/drivers/s390/net/lcs.c | 6 +- trunk/drivers/s390/net/netiucv.c | 2 - trunk/drivers/s390/net/qeth_core.h | 3 +- trunk/drivers/s390/net/qeth_core_main.c | 1 + trunk/drivers/s390/net/qeth_l3_main.c | 7 - trunk/drivers/s390/net/qeth_l3_sys.c | 4 +- trunk/drivers/scsi/aacraid/linit.c | 4 - trunk/drivers/scsi/hpsa.c | 5 - trunk/drivers/scsi/mpt2sas/mpt2sas_scsih.c | 5 - trunk/drivers/scsi/scsi_lib.c | 3 +- trunk/drivers/scsi/scsi_scan.c | 6 +- trunk/drivers/sh/Makefile | 8 - trunk/drivers/sh/clk/core.c | 107 +++- trunk/drivers/spi/spi-atmel.c | 5 +- trunk/drivers/spi/spi-pl022.c | 8 - trunk/drivers/staging/et131x/Kconfig | 3 +- trunk/drivers/staging/et131x/et131x.c | 12 +- trunk/drivers/staging/iio/industrialio-core.c | 10 +- trunk/drivers/staging/media/as102/as102_drv.c | 4 +- trunk/drivers/staging/media/as102/as102_drv.h | 3 +- trunk/drivers/staging/octeon/ethernet-tx.c | 2 +- trunk/drivers/staging/slicoss/Kconfig | 2 +- trunk/drivers/tty/hvc/hvc_dcc.c | 2 - trunk/drivers/tty/n_gsm.c | 12 +- trunk/drivers/tty/serial/Kconfig | 14 +- trunk/drivers/tty/serial/atmel_serial.c | 16 +- trunk/drivers/tty/serial/crisv10.c | 10 +- trunk/drivers/tty/serial/mfd.c | 4 +- trunk/drivers/tty/serial/pch_uart.c | 19 +- trunk/drivers/tty/serial/sh-sci.c | 19 - trunk/drivers/tty/tty_ldisc.c | 30 +- trunk/drivers/usb/class/cdc-acm.c | 8 +- trunk/drivers/usb/core/hub.c | 6 - trunk/drivers/usb/core/quirks.c | 27 - trunk/drivers/usb/dwc3/gadget.c | 1 - trunk/drivers/usb/gadget/Kconfig | 9 +- trunk/drivers/usb/gadget/at91_udc.c | 14 +- trunk/drivers/usb/gadget/ci13xxx_msm.c | 2 - trunk/drivers/usb/gadget/ci13xxx_udc.c | 21 +- trunk/drivers/usb/gadget/f_mass_storage.c | 6 +- trunk/drivers/usb/gadget/f_midi.c | 138 ++--- trunk/drivers/usb/gadget/f_phonet.c | 2 +- trunk/drivers/usb/gadget/file_storage.c | 4 +- trunk/drivers/usb/gadget/fsl_udc_core.c | 5 +- trunk/drivers/usb/gadget/inode.c | 5 +- trunk/drivers/usb/gadget/pch_udc.c | 10 +- trunk/drivers/usb/gadget/r8a66597-udc.c | 30 +- trunk/drivers/usb/gadget/udc-core.c | 10 +- trunk/drivers/usb/host/ehci-sched.c | 15 +- trunk/drivers/usb/host/ehci-xls.c | 2 +- trunk/drivers/usb/host/ohci-at91.c | 14 +- trunk/drivers/usb/host/ohci-hcd.c | 15 +- trunk/drivers/usb/host/ohci-pci.c | 26 + trunk/drivers/usb/host/ohci.h | 1 + trunk/drivers/usb/host/pci-quirks.c | 57 +- trunk/drivers/usb/host/xhci-mem.c | 5 + trunk/drivers/usb/host/xhci-ring.c | 13 +- trunk/drivers/usb/host/xhci.c | 34 +- trunk/drivers/usb/musb/Kconfig | 3 +- trunk/drivers/usb/musb/am35x.c | 1 - trunk/drivers/usb/musb/da8xx.c | 1 - trunk/drivers/usb/musb/musb_core.c | 3 +- trunk/drivers/usb/musb/musb_gadget.c | 4 + trunk/drivers/usb/renesas_usbhs/common.c | 2 +- trunk/drivers/usb/renesas_usbhs/fifo.c | 4 +- trunk/drivers/usb/renesas_usbhs/mod.h | 8 +- trunk/drivers/usb/renesas_usbhs/mod_gadget.c | 4 +- trunk/drivers/usb/renesas_usbhs/mod_host.c | 63 +-- trunk/drivers/usb/serial/ark3116.c | 10 +- trunk/drivers/usb/serial/ftdi_sio.c | 14 +- trunk/drivers/usb/serial/option.c | 28 - trunk/drivers/usb/serial/pl2303.c | 1 + trunk/drivers/usb/serial/pl2303.h | 4 + trunk/drivers/usb/storage/ene_ub6250.c | 3 +- trunk/drivers/usb/storage/protocol.c | 7 +- trunk/drivers/virtio/Kconfig | 2 +- trunk/drivers/virtio/virtio_mmio.c | 2 +- trunk/drivers/virtio/virtio_pci.c | 29 +- trunk/drivers/watchdog/Kconfig | 7 + trunk/drivers/watchdog/Makefile | 1 + trunk/drivers/watchdog/adx_wdt.c | 355 ++++++++++++ trunk/drivers/watchdog/at91sam9_wdt.c | 22 +- trunk/drivers/watchdog/at91sam9_wdt.h | 6 +- trunk/drivers/watchdog/s3c2410_wdt.c | 4 +- trunk/drivers/watchdog/wm831x_wdt.c | 2 +- trunk/drivers/xen/balloon.c | 4 +- trunk/drivers/xen/gntalloc.c | 4 +- trunk/drivers/xen/gntdev.c | 10 +- trunk/drivers/xen/xenbus/xenbus_client.c | 11 +- trunk/fs/bio.c | 7 +- trunk/fs/btrfs/backref.c | 2 +- trunk/fs/btrfs/btrfs_inode.h | 4 +- trunk/fs/btrfs/ctree.c | 17 +- trunk/fs/btrfs/ctree.h | 5 +- trunk/fs/btrfs/delayed-inode.c | 58 +- trunk/fs/btrfs/disk-io.c | 189 ++----- trunk/fs/btrfs/extent-tree.c | 169 ++---- trunk/fs/btrfs/extent_io.c | 9 +- trunk/fs/btrfs/extent_io.h | 2 +- trunk/fs/btrfs/free-space-cache.c | 80 +-- trunk/fs/btrfs/inode-map.c | 28 +- trunk/fs/btrfs/inode.c | 90 +-- trunk/fs/btrfs/ioctl.c | 15 +- trunk/fs/btrfs/relocation.c | 2 - trunk/fs/btrfs/scrub.c | 66 ++- trunk/fs/btrfs/super.c | 87 +-- trunk/fs/btrfs/transaction.c | 12 +- trunk/fs/btrfs/volumes.c | 5 +- trunk/fs/btrfs/volumes.h | 6 - trunk/fs/ceph/dir.c | 2 +- trunk/fs/ceph/inode.c | 9 +- trunk/fs/ceph/super.c | 6 +- trunk/fs/dcache.c | 11 +- trunk/fs/ecryptfs/crypto.c | 26 +- trunk/fs/ecryptfs/ecryptfs_kernel.h | 5 +- trunk/fs/ecryptfs/file.c | 23 +- trunk/fs/ecryptfs/inode.c | 52 +- trunk/fs/ext4/balloc.c | 2 +- trunk/fs/ext4/inode.c | 1 - trunk/fs/ext4/super.c | 6 +- trunk/fs/hfs/trans.c | 2 - trunk/fs/minix/bitmap.c | 55 +- trunk/fs/minix/inode.c | 25 +- trunk/fs/minix/minix.h | 11 +- trunk/fs/namespace.c | 32 -- trunk/fs/nfs/dir.c | 2 +- trunk/fs/nfs/file.c | 91 ++- trunk/fs/nfs/inode.c | 2 +- trunk/fs/nfs/internal.h | 2 - trunk/fs/nfs/nfs3proc.c | 1 - trunk/fs/nfs/nfs4proc.c | 4 +- trunk/fs/nfs/pnfs.c | 26 +- trunk/fs/nfs/proc.c | 1 - trunk/fs/nfs/read.c | 14 +- trunk/fs/nfs/super.c | 37 +- trunk/fs/proc/base.c | 146 +++-- trunk/fs/xfs/xfs_aops.c | 2 +- trunk/fs/xfs/xfs_buf_item.c | 2 +- trunk/fs/xfs/xfs_dquot_item.c | 6 +- trunk/fs/xfs/xfs_extfree_item.c | 4 +- trunk/fs/xfs/xfs_inode_item.c | 2 +- trunk/fs/xfs/xfs_log.c | 2 +- trunk/fs/xfs/xfs_log.h | 2 +- trunk/fs/xfs/xfs_qm.c | 3 +- trunk/fs/xfs/xfs_trans.h | 6 +- trunk/fs/xfs/xfs_vnodeops.c | 14 +- trunk/include/drm/drmP.h | 4 +- trunk/include/drm/drm_mode.h | 2 - trunk/include/drm/drm_pciids.h | 2 - trunk/include/drm/exynos_drm.h | 2 - trunk/include/drm/radeon_drm.h | 4 - trunk/include/linux/bio.h | 10 +- trunk/include/linux/ceph/osd_client.h | 8 +- trunk/include/linux/devfreq.h | 2 +- trunk/include/linux/device.h | 7 +- trunk/include/linux/fs.h | 1 - trunk/include/linux/genhd.h | 4 + trunk/include/linux/hugetlb.h | 5 + trunk/include/linux/hwspinlock.h | 1 + trunk/include/linux/i2c.h | 3 + trunk/include/linux/inet_diag.h | 3 +- trunk/include/linux/init_task.h | 1 + trunk/include/linux/kvm.h | 1 + trunk/include/linux/mfd/tps65910.h | 3 +- trunk/include/linux/mfd/wm8994/registers.h | 15 - trunk/include/linux/nfs_fs.h | 3 - trunk/include/linux/nfs_xdr.h | 1 - trunk/include/linux/pci-ats.h | 6 +- trunk/include/linux/pci.h | 2 +- trunk/include/linux/pci_ids.h | 2 - trunk/include/linux/pinctrl/pinctrl.h | 1 - trunk/include/linux/platform_data/macb.h | 17 - trunk/include/linux/pm.h | 2 +- trunk/include/linux/pm_runtime.h | 6 + trunk/include/linux/sched.h | 1 + trunk/include/linux/serial.h | 14 +- trunk/include/linux/serial_sci.h | 1 - trunk/include/linux/sh_clk.h | 4 +- trunk/include/linux/sh_pfc.h | 76 --- trunk/include/linux/virtio_config.h | 2 - trunk/include/linux/virtio_mmio.h | 2 +- trunk/include/linux/vmalloc.h | 2 +- trunk/include/net/bluetooth/l2cap.h | 7 +- trunk/include/net/cfg80211.h | 4 - trunk/include/xen/platform_pci.h | 6 +- trunk/kernel/fork.c | 5 + trunk/kernel/irq/spurious.c | 2 +- trunk/kernel/power/hibernate.c | 23 +- trunk/kernel/power/main.c | 3 +- trunk/kernel/power/qos.c | 1 - trunk/mm/backing-dev.c | 8 - trunk/mm/hugetlb.c | 2 - trunk/mm/nommu.c | 2 +- trunk/mm/oom_kill.c | 5 - trunk/mm/page-writeback.c | 23 +- trunk/mm/vmalloc.c | 27 +- trunk/net/bluetooth/hci_conn.c | 2 +- trunk/net/bluetooth/l2cap_core.c | 16 +- trunk/net/bridge/br_multicast.c | 6 +- trunk/net/ceph/osd_client.c | 2 +- trunk/net/ipv4/ah4.c | 8 +- trunk/net/ipv4/inet_diag.c | 4 +- trunk/net/ipv4/ip_options.c | 1 - trunk/net/ipv4/ping.c | 2 + trunk/net/ipv4/route.c | 120 ++-- trunk/net/ipv4/tcp_ipv4.c | 1 - trunk/net/ipv4/tcp_output.c | 2 +- trunk/net/ipv6/ah6.c | 8 +- trunk/net/ipv6/ip6_input.c | 8 - trunk/net/ipv6/ip6_tunnel.c | 8 +- trunk/net/l2tp/l2tp_core.c | 8 +- trunk/net/mac80211/mlme.c | 21 +- trunk/net/mac80211/rx.c | 9 +- trunk/net/mac80211/sta_info.c | 8 +- trunk/net/mac80211/util.c | 4 - trunk/net/rds/Kconfig | 1 + trunk/net/sunrpc/xprtsock.c | 4 +- trunk/net/wireless/nl80211.c | 9 +- trunk/net/wireless/reg.c | 3 - trunk/net/wireless/scan.c | 13 +- trunk/security/keys/encrypted-keys/Makefile | 8 +- .../security/keys/encrypted-keys/encrypted.c | 2 +- .../security/keys/encrypted-keys/encrypted.h | 3 +- trunk/security/keys/user_defined.c | 3 +- trunk/security/smack/smackfs.c | 115 ++-- trunk/sound/core/vmaster.c | 18 +- trunk/sound/pci/hda/hda_codec.c | 64 +-- trunk/sound/pci/hda/hda_codec.h | 1 - trunk/sound/pci/hda/hda_eld.c | 13 +- trunk/sound/pci/hda/hda_local.h | 19 +- trunk/sound/pci/hda/patch_cirrus.c | 23 +- trunk/sound/pci/hda/patch_conexant.c | 1 + trunk/sound/pci/hda/patch_hdmi.c | 55 +- trunk/sound/pci/hda/patch_realtek.c | 15 +- trunk/sound/pci/hda/patch_sigmatel.c | 44 +- trunk/sound/pci/intel8x0.c | 58 +- trunk/sound/ppc/snd_ps3.c | 2 +- trunk/sound/soc/codecs/wm8994.c | 43 +- trunk/sound/usb/mixer.c | 110 ++-- trunk/sound/usb/quirks.c | 7 +- trunk/tools/testing/ktest/ktest.pl | 531 ++++-------------- trunk/tools/testing/ktest/sample.conf | 146 +---- 816 files changed, 7185 insertions(+), 8923 deletions(-) rename trunk/{drivers/sh => arch/arm/mach-shmobile}/pm_runtime.c (94%) create mode 100644 trunk/arch/microblaze/include/asm/namei.h create mode 100644 trunk/arch/mips/nxp/pnx8550/common/pci.c create mode 100644 trunk/arch/mips/nxp/pnx8550/common/setup.c delete mode 100644 trunk/arch/powerpc/boot/dts/charon.dts create mode 100644 trunk/arch/sparc/mm/generic_32.c create mode 100644 trunk/arch/sparc/mm/generic_64.c create mode 100644 trunk/drivers/watchdog/adx_wdt.c delete mode 100644 trunk/include/linux/platform_data/macb.h diff --git a/[refs] b/[refs] index 77f440dced79..11877196467a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1e81799bd62d42bb6d5ec5c74e9b022e7d44f11c +refs/heads/master: 650e3f0d66ade2a614d854765dae3bbc9a87f58d diff --git a/trunk/.mailmap b/trunk/.mailmap index 9b0d0267a3c3..a4806f0de852 100644 --- a/trunk/.mailmap +++ b/trunk/.mailmap @@ -68,7 +68,6 @@ Juha Yrjola Kay Sievers Kenneth W Chen Koushik -Kuninori Morimoto Leonid I Ananiev Linas Vepstas Mark Brown @@ -112,4 +111,3 @@ Uwe Kleine-König Uwe Kleine-König Valdis Kletnieks Takashi YOSHII -Yusuke Goda diff --git a/trunk/Documentation/ABI/testing/sysfs-block b/trunk/Documentation/ABI/testing/sysfs-block index c1eb41cb9876..2b5d56127fce 100644 --- a/trunk/Documentation/ABI/testing/sysfs-block +++ b/trunk/Documentation/ABI/testing/sysfs-block @@ -206,3 +206,16 @@ Description: when a discarded area is read the discard_zeroes_data parameter will be set to one. Otherwise it will be 0 and the result of reading a discarded area is undefined. +What: /sys/block//alias +Date: Aug 2011 +Contact: Nao Nishijima +Description: + A raw device name of a disk does not always point a same disk + each boot-up time. Therefore, users have to use persistent + device names, which udev creates when the kernel finds a disk, + instead of raw device name. However, kernel doesn't show those + persistent names on its messages (e.g. dmesg). + This file can store an alias of the disk and it would be + appeared in kernel messages if it is set. A disk can have an + alias which length is up to 255bytes. Users can use alphabets, + numbers, "-" and "_" in alias name. This file is writeonce. diff --git a/trunk/Documentation/DocBook/drm.tmpl b/trunk/Documentation/DocBook/drm.tmpl index 196b8b9dba11..c27915893974 100644 --- a/trunk/Documentation/DocBook/drm.tmpl +++ b/trunk/Documentation/DocBook/drm.tmpl @@ -32,7 +32,7 @@ The Linux DRM layer contains code intended to support the needs of complex graphics devices, usually containing programmable pipelines well suited to 3D graphics acceleration. Graphics - drivers in the kernel may make use of DRM functions to make + drivers in the kernel can make use of DRM functions to make tasks like memory management, interrupt handling and DMA easier, and provide a uniform interface to applications. @@ -57,10 +57,10 @@ existing drivers. - First, we go over some typical driver initialization + First, we'll go over some typical driver initialization requirements, like setting up command buffers, creating an initial output configuration, and initializing core services. - Subsequent sections cover core internals in more detail, + Subsequent sections will cover core internals in more detail, providing implementation notes and examples. @@ -74,7 +74,7 @@ The core of every DRM driver is struct drm_driver. Drivers - typically statically initialize a drm_driver structure, + will typically statically initialize a drm_driver structure, then pass it to drm_init() at load time. @@ -88,8 +88,8 @@ static struct drm_driver driver = { - /* Don't use MTRRs here; the Xserver or userspace app should - * deal with them for Intel hardware. + /* don't use mtrr's here, the Xserver or user space app should + * deal with them for intel hardware. */ .driver_features = DRIVER_USE_AGP | DRIVER_REQUIRE_AGP | @@ -154,8 +154,8 @@ In the example above, taken from the i915 DRM driver, the driver - sets several flags indicating what core features it supports; - we go over the individual callbacks in later sections. Since + sets several flags indicating what core features it supports. + We'll go over the individual callbacks in later sections. Since flags indicate which features your driver supports to the DRM core, you need to set most of them prior to calling drm_init(). Some, like DRIVER_MODESET can be set later based on user supplied parameters, @@ -203,8 +203,8 @@ DRIVER_HAVE_IRQDRIVER_IRQ_SHARED - DRIVER_HAVE_IRQ indicates whether the driver has an IRQ - handler. DRIVER_IRQ_SHARED indicates whether the device & + DRIVER_HAVE_IRQ indicates whether the driver has a IRQ + handler, DRIVER_IRQ_SHARED indicates whether the device & handler support shared IRQs (note that this is required of PCI drivers). @@ -214,8 +214,8 @@ DRIVER_DMA_QUEUE - Should be set if the driver queues DMA requests and completes them - asynchronously. Deprecated. + If the driver queues DMA requests and completes them + asynchronously, this flag should be set. Deprecated. @@ -238,7 +238,7 @@ In this specific case, the driver requires AGP and supports - IRQs. DMA, as discussed later, is handled by device-specific ioctls + IRQs. DMA, as we'll see, is handled by device specific ioctls in this case. It also supports the kernel mode setting APIs, though unlike in the actual i915 driver source, this example unconditionally exports KMS capability. @@ -269,34 +269,36 @@ initial output configuration. - If compatibility is a concern (e.g. with drivers converted over - to the new interfaces from the old ones), care must be taken to - prevent device initialization and control that is incompatible with - currently active userspace drivers. For instance, if user + Note that the tasks performed at driver load time must not + conflict with DRM client requirements. For instance, if user level mode setting drivers are in use, it would be problematic to perform output discovery & configuration at load time. - Likewise, if user-level drivers unaware of memory management are + Likewise, if pre-memory management aware user level drivers are in use, memory management and command buffer setup may need to - be omitted. These requirements are driver-specific, and care + be omitted. These requirements are driver specific, and care needs to be taken to keep both old and new applications and libraries working. The i915 driver supports the "modeset" module parameter to control whether advanced features are - enabled at load time or in legacy fashion. + enabled at load time or in legacy fashion. If compatibility is + a concern (e.g. with drivers converted over to the new interfaces + from the old ones), care must be taken to prevent incompatible + device initialization and control with the currently active + userspace drivers. Driver private & performance counters The driver private hangs off the main drm_device structure and - can be used for tracking various device-specific bits of + can be used for tracking various device specific bits of information, like register offsets, command buffer status, register state for suspend/resume, etc. At load time, a - driver may simply allocate one and set drm_device.dev_priv - appropriately; it should be freed and drm_device.dev_priv set - to NULL when the driver is unloaded. + driver can simply allocate one and set drm_device.dev_priv + appropriately; at unload the driver can free it and set + drm_device.dev_priv to NULL. - The DRM supports several counters which may be used for rough + The DRM supports several counters which can be used for rough performance characterization. Note that the DRM stat counter system is not often used by applications, and supporting additional counters is completely optional. @@ -305,15 +307,15 @@ These interfaces are deprecated and should not be used. If performance monitoring is desired, the developer should investigate and potentially enhance the kernel perf and tracing infrastructure to export - GPU related performance information for consumption by performance - monitoring tools and applications. + GPU related performance information to performance monitoring + tools and applications. Configuring the device - Obviously, device configuration is device-specific. + Obviously, device configuration will be device specific. However, there are several common operations: finding a device's PCI resources, mapping them, and potentially setting up an IRQ handler. @@ -321,10 +323,10 @@ Finding & mapping resources is fairly straightforward. The DRM wrapper functions, drm_get_resource_start() and - drm_get_resource_len(), may be used to find BARs on the given + drm_get_resource_len() can be used to find BARs on the given drm_device struct. Once those values have been retrieved, the driver load function can call drm_addmap() to create a new - mapping for the BAR in question. Note that you probably want a + mapping for the BAR in question. Note you'll probably want a drm_local_map_t in your driver private structure to track any mappings you create. @@ -333,20 +335,20 @@ if compatibility with other operating systems isn't a concern (DRM drivers can run under various BSD variants and OpenSolaris), - native Linux calls may be used for the above, e.g. pci_resource_* + native Linux calls can be used for the above, e.g. pci_resource_* and iomap*/iounmap. See the Linux device driver book for more info. - Once you have a register map, you may use the DRM_READn() and + Once you have a register map, you can use the DRM_READn() and DRM_WRITEn() macros to access the registers on your device, or - use driver-specific versions to offset into your MMIO space - relative to a driver-specific base pointer (see I915_READ for - an example). + use driver specific versions to offset into your MMIO space + relative to a driver specific base pointer (see I915_READ for + example). If your device supports interrupt generation, you may want to - set up an interrupt handler when the driver is loaded. This + setup an interrupt handler at driver load time as well. This is done using the drm_irq_install() function. If your device supports vertical blank interrupts, it should call drm_vblank_init() to initialize the core vblank handling code before @@ -355,7 +357,7 @@ - Once your interrupt handler is registered (it uses your + Once your interrupt handler is registered (it'll use your drm_driver.irq_handler as the actual interrupt handling function), you can safely enable interrupts on your device, assuming any other state your interrupt handler uses is also @@ -369,10 +371,10 @@ using the pci_map_rom() call, a convenience function that takes care of mapping the actual ROM, whether it has been shadowed into memory (typically at address 0xc0000) or exists - on the PCI device in the ROM BAR. Note that after the ROM - has been mapped and any necessary information has been extracted, - it should be unmapped; on many devices, the ROM address decoder is - shared with other BARs, so leaving it mapped could cause + on the PCI device in the ROM BAR. Note that once you've + mapped the ROM and extracted any necessary information, be + sure to unmap it; on many devices the ROM address decoder is + shared with other BARs, so leaving it mapped can cause undesired behavior like hangs or memory corruption. @@ -387,9 +389,9 @@ should support a memory manager. - If your driver supports memory management (it should!), you + If your driver supports memory management (it should!), you'll need to set that up at load time as well. How you initialize - it depends on which memory manager you're using: TTM or GEM. + it depends on which memory manager you're using, TTM or GEM. TTM initialization @@ -399,7 +401,7 @@ and devices with dedicated video RAM (VRAM), i.e. most discrete graphics devices. If your device has dedicated RAM, supporting TTM is desirable. TTM also integrates tightly with your - driver-specific buffer execution function. See the radeon + driver specific buffer execution function. See the radeon driver for examples. @@ -427,21 +429,21 @@ created by the memory manager at runtime. Your global TTM should have a type of TTM_GLOBAL_TTM_MEM. The size field for the global object should be sizeof(struct ttm_mem_global), and the init and - release hooks should point at your driver-specific init and - release routines, which probably eventually call - ttm_mem_global_init and ttm_mem_global_release, respectively. + release hooks should point at your driver specific init and + release routines, which will probably eventually call + ttm_mem_global_init and ttm_mem_global_release respectively. Once your global TTM accounting structure is set up and initialized - by calling ttm_global_item_ref() on it, - you need to create a buffer object TTM to + (done by calling ttm_global_item_ref on the global object you + just created), you'll need to create a buffer object TTM to provide a pool for buffer object allocation by clients and the kernel itself. The type of this object should be TTM_GLOBAL_TTM_BO, and its size should be sizeof(struct ttm_bo_global). Again, - driver-specific init and release functions may be provided, - likely eventually calling ttm_bo_global_init() and - ttm_bo_global_release(), respectively. Also, like the previous - object, ttm_global_item_ref() is used to create an initial reference + driver specific init and release functions can be provided, + likely eventually calling ttm_bo_global_init and + ttm_bo_global_release, respectively. Also like the previous + object, ttm_global_item_ref is used to create an initial reference count for the TTM, which will call your initialization function. @@ -451,26 +453,27 @@ GEM is an alternative to TTM, designed specifically for UMA devices. It has simpler initialization and execution requirements than TTM, but has no VRAM management capability. Core GEM - is initialized by calling drm_mm_init() to create + initialization is comprised of a basic drm_mm_init call to create a GTT DRM MM object, which provides an address space pool for - object allocation. In a KMS configuration, the driver - needs to allocate and initialize a command ring buffer following - core GEM initialization. A UMA device usually has what is called a + object allocation. In a KMS configuration, the driver will + need to allocate and initialize a command ring buffer following + basic GEM initialization. Most UMA devices have a so-called "stolen" memory region, which provides space for the initial framebuffer and large, contiguous memory regions required by the - device. This space is not typically managed by GEM, and it must + device. This space is not typically managed by GEM, and must be initialized separately into its own DRM MM object. - Initialization is driver-specific. In the case of Intel + Initialization will be driver specific, and will depend on + the architecture of the device. In the case of Intel integrated graphics chips like 965GM, GEM initialization can be done by calling the internal GEM init function, i915_gem_do_init(). Since the 965GM is a UMA device - (i.e. it doesn't have dedicated VRAM), GEM manages + (i.e. it doesn't have dedicated VRAM), GEM will manage making regular RAM available for GPU operations. Memory set aside by the BIOS (called "stolen" memory by the i915 - driver) is managed by the DRM memrange allocator; the - rest of the aperture is managed by GEM. + driver) will be managed by the DRM memrange allocator; the + rest of the aperture will be managed by GEM. /* Basic memrange allocator for stolen space (aka vram) */ drm_memrange_init(&dev_priv->vram, 0, prealloc_size); @@ -480,7 +483,7 @@ - Once the memory manager has been set up, we may allocate the + Once the memory manager has been set up, we can allocate the command buffer. In the i915 case, this is also done with a GEM function, i915_gem_init_ringbuffer(). @@ -490,25 +493,16 @@ Output configuration - The final initialization task is output configuration. This involves: - - - Finding and initializing the CRTCs, encoders, and connectors - for the device. - - - Creating an initial configuration. - - - Registering a framebuffer console driver. - - + The final initialization task is output configuration. This involves + finding and initializing the CRTCs, encoders and connectors + for your device, creating an initial configuration and + registering a framebuffer console driver. Output discovery and initialization - Several core functions exist to create CRTCs, encoders, and - connectors, namely: drm_crtc_init(), drm_connector_init(), and + Several core functions exist to create CRTCs, encoders and + connectors, namely drm_crtc_init(), drm_connector_init() and drm_encoder_init(), along with several "helper" functions to perform common tasks. @@ -561,10 +555,10 @@ void intel_crt_init(struct drm_device *dev) In the example above (again, taken from the i915 driver), a - CRT connector and encoder combination is created. A device-specific - i2c bus is also created for fetching EDID data and + CRT connector and encoder combination is created. A device + specific i2c bus is also created, for fetching EDID data and performing monitor detection. Once the process is complete, - the new connector is registered with sysfs to make its + the new connector is registered with sysfs, to make its properties available to applications. @@ -573,12 +567,12 @@ void intel_crt_init(struct drm_device *dev) Since many PC-class graphics devices have similar display output designs, the DRM provides a set of helper functions to make output management easier. The core helper routines handle - encoder re-routing and the disabling of unused functions following - mode setting. Using the helpers is optional, but recommended for + encoder re-routing and disabling of unused functions following + mode set. Using the helpers is optional, but recommended for devices with PC-style architectures (i.e. a set of display planes for feeding pixels to encoders which are in turn routed to connectors). Devices with more complex requirements needing - finer grained management may opt to use the core callbacks + finer grained management can opt to use the core callbacks directly. @@ -586,25 +580,17 @@ void intel_crt_init(struct drm_device *dev) - Each encoder object needs to provide: - - - A DPMS (basically on/off) function. - - - A mode-fixup function (for converting requested modes into - native hardware timings). - - - Functions (prepare, set, and commit) for use by the core DRM - helper functions. - - - Connector helpers need to provide functions (mode-fetch, validity, - and encoder-matching) for returning an ideal encoder for a given - connector. The core connector functions include a DPMS callback, - save/restore routines (deprecated), detection, mode probing, - property handling, and cleanup functions. + For each encoder, CRTC and connector, several functions must + be provided, depending on the object type. Encoder objects + need to provide a DPMS (basically on/off) function, mode fixup + (for converting requested modes into native hardware timings), + and prepare, set and commit functions for use by the core DRM + helper functions. Connector helpers need to provide mode fetch and + validity functions as well as an encoder matching function for + returning an ideal encoder for a given connector. The core + connector functions include a DPMS callback, (deprecated) + save/restore routines, detection, mode probing, property handling, + and cleanup functions. @@ -619,33 +605,22 @@ void intel_crt_init(struct drm_device *dev) VBlank event handling The DRM core exposes two vertical blank related ioctls: - - - DRM_IOCTL_WAIT_VBLANK - - - This takes a struct drm_wait_vblank structure as its argument, - and it is used to block or request a signal when a specified - vblank event occurs. - - - - - DRM_IOCTL_MODESET_CTL - - - This should be called by application level drivers before and - after mode setting, since on many devices the vertical blank - counter is reset at that time. Internally, the DRM snapshots - the last vblank count when the ioctl is called with the - _DRM_PRE_MODESET command, so that the counter won't go backwards - (which is dealt with when _DRM_POST_MODESET is used). - - - - + DRM_IOCTL_WAIT_VBLANK and DRM_IOCTL_MODESET_CTL. + + DRM_IOCTL_WAIT_VBLANK takes a struct drm_wait_vblank structure + as its argument, and is used to block or request a signal when a + specified vblank event occurs. + + + DRM_IOCTL_MODESET_CTL should be called by application level + drivers before and after mode setting, since on many devices the + vertical blank counter will be reset at that time. Internally, + the DRM snapshots the last vblank count when the ioctl is called + with the _DRM_PRE_MODESET command so that the counter won't go + backwards (which is dealt with when _DRM_POST_MODESET is used). + To support the functions above, the DRM core provides several helper functions for tracking vertical blank counters, and @@ -657,24 +632,24 @@ void intel_crt_init(struct drm_device *dev) register. The enable and disable vblank callbacks should enable and disable vertical blank interrupts, respectively. In the absence of DRM clients waiting on vblank events, the core DRM - code uses the disable_vblank() function to disable - interrupts, which saves power. They are re-enabled again when + code will use the disable_vblank() function to disable + interrupts, which saves power. They'll be re-enabled again when a client calls the vblank wait ioctl above. - A device that doesn't provide a count register may simply use an + Devices that don't provide a count register can simply use an internal atomic counter incremented on every vertical blank - interrupt (and then treat the enable_vblank() and disable_vblank() - callbacks as no-ops). + interrupt, and can make their enable and disable vblank + functions into no-ops. Memory management - The memory manager lies at the heart of many DRM operations; it - is required to support advanced client features like OpenGL - pbuffers. The DRM currently contains two memory managers: TTM + The memory manager lies at the heart of many DRM operations, and + is also required to support advanced client features like OpenGL + pbuffers. The DRM currently contains two memory managers, TTM and GEM. @@ -704,46 +679,41 @@ void intel_crt_init(struct drm_device *dev) GEM-enabled drivers must provide gem_init_object() and gem_free_object() callbacks to support the core memory - allocation routines. They should also provide several driver-specific - ioctls to support command execution, pinning, buffer + allocation routines. They should also provide several driver + specific ioctls to support command execution, pinning, buffer read & write, mapping, and domain ownership transfers. - On a fundamental level, GEM involves several operations: - - Memory allocation and freeing - Command execution - Aperture management at command execution time - - Buffer object allocation is relatively + On a fundamental level, GEM involves several operations: memory + allocation and freeing, command execution, and aperture management + at command execution time. Buffer object allocation is relatively straightforward and largely provided by Linux's shmem layer, which provides memory to back each object. When mapped into the GTT or used in a command buffer, the backing pages for an object are flushed to memory and marked write combined so as to be coherent - with the GPU. Likewise, if the CPU accesses an object after the GPU - has finished rendering to the object, then the object must be made - coherent with the CPU's view + with the GPU. Likewise, when the GPU finishes rendering to an object, + if the CPU accesses it, it must be made coherent with the CPU's view of memory, usually involving GPU cache flushing of various kinds. - This core CPU<->GPU coherency management is provided by a - device-specific ioctl, which evaluates an object's current domain and + This core CPU<->GPU coherency management is provided by the GEM + set domain function, which evaluates an object's current domain and performs any necessary flushing or synchronization to put the object into the desired coherency domain (note that the object may be busy, - i.e. an active render target; in that case, setting the domain - blocks the client and waits for rendering to complete before + i.e. an active render target; in that case the set domain function + will block the client and wait for rendering to complete before performing any necessary flushing operations). Perhaps the most important GEM function is providing a command execution interface to clients. Client programs construct command - buffers containing references to previously allocated memory objects, - and then submit them to GEM. At that point, GEM takes care to bind + buffers containing references to previously allocated memory objects + and submit them to GEM. At that point, GEM will take care to bind all the objects into the GTT, execute the buffer, and provide necessary synchronization between clients accessing the same buffers. This often involves evicting some objects from the GTT and re-binding others (a fairly expensive operation), and providing relocation support which hides fixed GTT offsets from clients. Clients must take care not to submit command buffers that reference more objects - than can fit in the GTT; otherwise, GEM will reject them and no rendering + than can fit in the GTT or GEM will reject them and no rendering will occur. Similarly, if several objects in the buffer require fence registers to be allocated for correct rendering (e.g. 2D blits on pre-965 chips), care must be taken not to require more fence @@ -759,7 +729,7 @@ void intel_crt_init(struct drm_device *dev) Output management At the core of the DRM output management code is a set of - structures representing CRTCs, encoders, and connectors. + structures representing CRTCs, encoders and connectors. A CRTC is an abstraction representing a part of the chip that @@ -795,19 +765,21 @@ void intel_crt_init(struct drm_device *dev) Framebuffer management - Clients need to provide a framebuffer object which provides a source - of pixels for a CRTC to deliver to the encoder(s) and ultimately the - connector(s). A framebuffer is fundamentally a driver-specific memory - object, made into an opaque handle by the DRM's addfb() function. - Once a framebuffer has been created this way, it may be passed to the - KMS mode setting routines for use in a completed configuration. + In order to set a mode on a given CRTC, encoder and connector + configuration, clients need to provide a framebuffer object which + will provide a source of pixels for the CRTC to deliver to the encoder(s) + and ultimately the connector(s) in the configuration. A framebuffer + is fundamentally a driver specific memory object, made into an opaque + handle by the DRM addfb function. Once an fb has been created this + way it can be passed to the KMS mode setting routines for use in + a configuration. Command submission & fencing - This should cover a few device-specific command submission + This should cover a few device specific command submission implementations. @@ -817,7 +789,7 @@ void intel_crt_init(struct drm_device *dev) The DRM core provides some suspend/resume code, but drivers wanting full suspend/resume support should provide save() and - restore() functions. These are called at suspend, + restore() functions. These will be called at suspend, hibernate, or resume time, and should perform any state save or restore required by your device across suspend or hibernate states. @@ -840,8 +812,8 @@ void intel_crt_init(struct drm_device *dev) The DRM core exports several interfaces to applications, generally intended to be used through corresponding libdrm - wrapper functions. In addition, drivers export device-specific - interfaces for use by userspace drivers & device-aware + wrapper functions. In addition, drivers export device specific + interfaces for use by userspace drivers & device aware applications through ioctls and sysfs files. @@ -850,8 +822,8 @@ void intel_crt_init(struct drm_device *dev) management, memory management, and output management. - Cover generic ioctls and sysfs layout here. We only need high-level - info, since man pages should cover the rest. + Cover generic ioctls and sysfs layout here. Only need high + level info, since man pages will cover the rest. diff --git a/trunk/Documentation/DocBook/uio-howto.tmpl b/trunk/Documentation/DocBook/uio-howto.tmpl index ac3d0018140c..54883de5d5f9 100644 --- a/trunk/Documentation/DocBook/uio-howto.tmpl +++ b/trunk/Documentation/DocBook/uio-howto.tmpl @@ -520,11 +520,6 @@ Here's a description of the fields of struct uio_mem: - -const char *name: Optional. Set this to help identify -the memory region, it will show up in the corresponding sysfs node. - - int memtype: Required if the mapping is used. Set this to UIO_MEM_PHYS if you you have physical memory on your @@ -558,7 +553,7 @@ instead to remember such an address. -Please do not touch the map element of +Please do not touch the kobj element of struct uio_mem! It is used by the UIO framework to set up sysfs files for this mapping. Simply leave it alone. diff --git a/trunk/Documentation/blockdev/cciss.txt b/trunk/Documentation/blockdev/cciss.txt index b79d0a13e7cd..71464e09ec18 100644 --- a/trunk/Documentation/blockdev/cciss.txt +++ b/trunk/Documentation/blockdev/cciss.txt @@ -98,12 +98,14 @@ You must enable "SCSI tape drive support for Smart Array 5xxx" and "SCSI support" in your kernel configuration to be able to use SCSI tape drives with your Smart Array 5xxx controller. -Additionally, note that the driver will engage the SCSI core at init -time if any tape drives or medium changers are detected. The driver may -also be directed to dynamically engage the SCSI core via the /proc filesystem -entry which the "block" side of the driver creates as -/proc/driver/cciss/cciss* at runtime. This is best done via a script. - +Additionally, note that the driver will not engage the SCSI core at init +time. The driver must be directed to dynamically engage the SCSI core via +the /proc filesystem entry which the "block" side of the driver creates as +/proc/driver/cciss/cciss* at runtime. This is because at driver init time, +the SCSI core may not yet be initialized (because the driver is a block +driver) and attempting to register it with the SCSI core in such a case +would cause a hang. This is best done via an initialization script +(typically in /etc/init.d, but could vary depending on distribution). For example: for x in /proc/driver/cciss/cciss[0-9]* diff --git a/trunk/Documentation/cgroups/freezer-subsystem.txt b/trunk/Documentation/cgroups/freezer-subsystem.txt index 7e62de1e59ff..c21d77742a07 100644 --- a/trunk/Documentation/cgroups/freezer-subsystem.txt +++ b/trunk/Documentation/cgroups/freezer-subsystem.txt @@ -33,9 +33,9 @@ demonstrate this problem using nested bash shells: From a second, unrelated bash shell: $ kill -SIGSTOP 16690 - $ kill -SIGCONT 16690 + $ kill -SIGCONT 16990 - + This happens because bash can observe both signals and choose how it responds to them. diff --git a/trunk/Documentation/i2c/ten-bit-addresses b/trunk/Documentation/i2c/ten-bit-addresses index cdfe13901b99..e9890709c508 100644 --- a/trunk/Documentation/i2c/ten-bit-addresses +++ b/trunk/Documentation/i2c/ten-bit-addresses @@ -1,24 +1,22 @@ The I2C protocol knows about two kinds of device addresses: normal 7 bit addresses, and an extended set of 10 bit addresses. The sets of addresses do not intersect: the 7 bit address 0x10 is not the same as the 10 bit -address 0x10 (though a single device could respond to both of them). +address 0x10 (though a single device could respond to both of them). You +select a 10 bit address by adding an extra byte after the address +byte: + S Addr7 Rd/Wr .... +becomes + S 11110 Addr10 Rd/Wr +S is the start bit, Rd/Wr the read/write bit, and if you count the number +of bits, you will see the there are 8 after the S bit for 7 bit addresses, +and 16 after the S bit for 10 bit addresses. -I2C messages to and from 10-bit address devices have a different format. -See the I2C specification for the details. +WARNING! The current 10 bit address support is EXPERIMENTAL. There are +several places in the code that will cause SEVERE PROBLEMS with 10 bit +addresses, even though there is some basic handling and hooks. Also, +almost no supported adapter handles the 10 bit addresses correctly. -The current 10 bit address support is minimal. It should work, however -you can expect some problems along the way: -* Not all bus drivers support 10-bit addresses. Some don't because the - hardware doesn't support them (SMBus doesn't require 10-bit address - support for example), some don't because nobody bothered adding the - code (or it's there but not working properly.) Software implementation - (i2c-algo-bit) is known to work. -* Some optional features do not support 10-bit addresses. This is the - case of automatic detection and instantiation of devices by their, - drivers, for example. -* Many user-space packages (for example i2c-tools) lack support for - 10-bit addresses. - -Note that 10-bit address devices are still pretty rare, so the limitations -listed above could stay for a long time, maybe even forever if nobody -needs them to be fixed. +As soon as a real 10 bit address device is spotted 'in the wild', we +can and will add proper support. Right now, 10 bit address devices +are defined by the I2C protocol, but we have never seen a single device +which supports them. diff --git a/trunk/Documentation/networking/ip-sysctl.txt b/trunk/Documentation/networking/ip-sysctl.txt index f049a1ca186f..cb7f3148035d 100644 --- a/trunk/Documentation/networking/ip-sysctl.txt +++ b/trunk/Documentation/networking/ip-sysctl.txt @@ -20,7 +20,7 @@ ip_no_pmtu_disc - BOOLEAN default FALSE min_pmtu - INTEGER - default 552 - minimum discovered Path MTU + default 562 - minimum discovered Path MTU route/max_size - INTEGER Maximum number of routes allowed in the kernel. Increase diff --git a/trunk/Documentation/serial/serial-rs485.txt b/trunk/Documentation/serial/serial-rs485.txt index 41c8378c0b2f..079cb3df62cf 100644 --- a/trunk/Documentation/serial/serial-rs485.txt +++ b/trunk/Documentation/serial/serial-rs485.txt @@ -97,23 +97,15 @@ struct serial_rs485 rs485conf; - /* Enable RS485 mode: */ + /* Set RS485 mode: */ rs485conf.flags |= SER_RS485_ENABLED; - /* Set logical level for RTS pin equal to 1 when sending: */ - rs485conf.flags |= SER_RS485_RTS_ON_SEND; - /* or, set logical level for RTS pin equal to 0 when sending: */ - rs485conf.flags &= ~(SER_RS485_RTS_ON_SEND); - - /* Set logical level for RTS pin equal to 1 after sending: */ - rs485conf.flags |= SER_RS485_RTS_AFTER_SEND; - /* or, set logical level for RTS pin equal to 0 after sending: */ - rs485conf.flags &= ~(SER_RS485_RTS_AFTER_SEND); - /* Set rts delay before send, if needed: */ + rs485conf.flags |= SER_RS485_RTS_BEFORE_SEND; rs485conf.delay_rts_before_send = ...; /* Set rts delay after send, if needed: */ + rs485conf.flags |= SER_RS485_RTS_AFTER_SEND; rs485conf.delay_rts_after_send = ...; /* Set this flag if you want to receive data even whilst sending data */ diff --git a/trunk/Documentation/sound/alsa/HD-Audio-Models.txt b/trunk/Documentation/sound/alsa/HD-Audio-Models.txt index edad99abec21..4f3443230d89 100644 --- a/trunk/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/trunk/Documentation/sound/alsa/HD-Audio-Models.txt @@ -349,7 +349,6 @@ STAC92HD83* ref Reference board mic-ref Reference board with power management for ports dell-s14 Dell laptop - dell-vostro-3500 Dell Vostro 3500 laptop hp HP laptops with (inverted) mute-LED hp-dv7-4000 HP dv-7 4000 auto BIOS setup (default) diff --git a/trunk/Documentation/sound/alsa/HD-Audio.txt b/trunk/Documentation/sound/alsa/HD-Audio.txt index 91fee3b45fb8..03e2771ddeef 100644 --- a/trunk/Documentation/sound/alsa/HD-Audio.txt +++ b/trunk/Documentation/sound/alsa/HD-Audio.txt @@ -579,7 +579,7 @@ Development Tree ~~~~~~~~~~~~~~~~ The latest development codes for HD-audio are found on sound git tree: -- git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git +- git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git The master branch or for-next branches can be used as the main development branches in general while the HD-audio specific patches @@ -594,7 +594,7 @@ is, installed via the usual spells: configure, make and make install(-modules). See INSTALL in the package. The snapshot tarballs are found at: -- ftp://ftp.suse.com/pub/people/tiwai/snapshot/ +- ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/ Sending a Bug Report @@ -696,7 +696,7 @@ via hda-verb won't change the mixer value. The hda-verb program is found in the ftp directory: -- ftp://ftp.suse.com/pub/people/tiwai/misc/ +- ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/misc/ Also a git repository is available: @@ -764,7 +764,7 @@ operation, the jack plugging simulation, etc. The package is found in: -- ftp://ftp.suse.com/pub/people/tiwai/misc/ +- ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/misc/ A git repository is available: diff --git a/trunk/Kbuild b/trunk/Kbuild index b8b708ad6dc3..4caab4f6cba7 100644 --- a/trunk/Kbuild +++ b/trunk/Kbuild @@ -92,7 +92,7 @@ always += missing-syscalls targets += missing-syscalls quiet_cmd_syscalls = CALL $< - cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags) + cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) missing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE $(call cmd,syscalls) diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index 3523ab000f1f..4808256446f2 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -1106,7 +1106,6 @@ F: drivers/media/video/s5p-fimc/ ARM/SAMSUNG S5P SERIES Multi Format Codec (MFC) SUPPORT M: Kyungmin Park M: Kamil Debski -M: Jeongtae Park L: linux-arm-kernel@lists.infradead.org L: linux-media@vger.kernel.org S: Maintained @@ -1789,14 +1788,6 @@ F: include/net/cfg80211.h F: net/wireless/* X: net/wireless/wext* -CHAR and MISC DRIVERS -M: Arnd Bergmann -M: Greg Kroah-Hartman -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git -S: Maintained -F: drivers/char/* -F: drivers/misc/* - CHECKPATCH M: Andy Whitcroft S: Supported @@ -1935,11 +1926,9 @@ S: Maintained F: drivers/connector/ CONTROL GROUPS (CGROUPS) -M: Tejun Heo +M: Paul Menage M: Li Zefan L: containers@lists.linux-foundation.org -L: cgroups@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git S: Maintained F: include/linux/cgroup* F: kernel/cgroup* @@ -2353,13 +2342,6 @@ S: Supported F: drivers/gpu/drm/i915 F: include/drm/i915* -DRM DRIVERS FOR EXYNOS -M: Inki Dae -L: dri-devel@lists.freedesktop.org -S: Supported -F: drivers/gpu/drm/exynos -F: include/drm/exynos* - DSCC4 DRIVER M: Francois Romieu L: netdev@vger.kernel.org @@ -2594,7 +2576,7 @@ S: Maintained F: drivers/net/ethernet/i825xx/eexpress.* ETHERNET BRIDGE -M: Stephen Hemminger +M: Stephen Hemminger L: bridge@lists.linux-foundation.org L: netdev@vger.kernel.org W: http://www.linuxfoundation.org/en/Net:Bridge @@ -3728,7 +3710,7 @@ F: fs/jbd2/ F: include/linux/jbd2.h JSM Neo PCI based serial card -M: Lucas Tavares +M: Breno Leitao L: linux-serial@vger.kernel.org S: Maintained F: drivers/tty/serial/jsm/ @@ -4314,7 +4296,6 @@ MEMORY RESOURCE CONTROLLER M: Balbir Singh M: Daisuke Nishimura M: KAMEZAWA Hiroyuki -L: cgroups@vger.kernel.org L: linux-mm@kvack.org S: Maintained F: mm/memcontrol.c @@ -4348,7 +4329,7 @@ MIPS M: Ralf Baechle L: linux-mips@linux-mips.org W: http://www.linux-mips.org/ -T: git git://git.linux-mips.org/pub/scm/ralf/linux.git +T: git git://git.linux-mips.org/pub/scm/linux.git Q: http://patchwork.linux-mips.org/project/linux-mips/list/ S: Supported F: Documentation/mips/ @@ -4481,7 +4462,7 @@ S: Supported F: drivers/infiniband/hw/nes/ NETEM NETWORK EMULATOR -M: Stephen Hemminger +M: Stephen Hemminger L: netem@lists.linux-foundation.org S: Maintained F: net/sched/sch_netem.c @@ -4958,7 +4939,7 @@ F: drivers/char/ppdev.c F: include/linux/ppdev.h PARAVIRT_OPS INTERFACE -M: Jeremy Fitzhardinge +M: Jeremy Fitzhardinge M: Chris Wright M: Alok Kataria M: Rusty Russell @@ -5996,7 +5977,7 @@ S: Maintained F: drivers/usb/misc/sisusbvga/ SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS -M: Stephen Hemminger +M: Stephen Hemminger L: netdev@vger.kernel.org S: Maintained F: drivers/net/ethernet/marvell/sk* @@ -6141,7 +6122,7 @@ F: sound/ SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC) M: Liam Girdwood M: Mark Brown -T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git +T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6.git L: alsa-devel@alsa-project.org (moderated for non-subscribers) W: http://alsa-project.org/main/index.php/ASoC S: Supported @@ -7410,8 +7391,8 @@ S: Maintained F: arch/x86/kernel/cpu/mcheck/* XEN HYPERVISOR INTERFACE +M: Jeremy Fitzhardinge M: Konrad Rzeszutek Wilk -M: Jeremy Fitzhardinge L: xen-devel@lists.xensource.com (moderated for non-subscribers) L: virtualization@lists.linux-foundation.org S: Supported @@ -7444,8 +7425,7 @@ F: drivers/xen/*swiotlb* XFS FILESYSTEM P: Silicon Graphics Inc -M: Ben Myers -M: Alex Elder +M: Alex Elder M: xfs-masters@oss.sgi.com L: xfs@oss.sgi.com W: http://oss.sgi.com/projects/xfs diff --git a/trunk/Makefile b/trunk/Makefile index 3a8f0640cda0..361e4f00e6b9 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -1,7 +1,7 @@ VERSION = 3 PATCHLEVEL = 2 SUBLEVEL = 0 -EXTRAVERSION = -rc3 +EXTRAVERSION = -rc1 NAME = Saber-toothed Squirrel # *DOCUMENTATION* diff --git a/trunk/arch/arm/Kconfig.debug b/trunk/arch/arm/Kconfig.debug index 0608c0ba94e6..333b6a416d2f 100644 --- a/trunk/arch/arm/Kconfig.debug +++ b/trunk/arch/arm/Kconfig.debug @@ -100,14 +100,6 @@ choice Note that the system will appear to hang during boot if there is nothing connected to read from the DCC. - config AT91_DEBUG_LL_DBGU0 - bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl" - depends on HAVE_AT91_DBGU0 - - config AT91_DEBUG_LL_DBGU1 - bool "Kernel low-level debugging on 9263, 9g45 and cap9" - depends on HAVE_AT91_DBGU1 - config DEBUG_FOOTBRIDGE_COM1 bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1" depends on FOOTBRIDGE @@ -255,6 +247,27 @@ choice their output to the standard serial port on the RealView PB1176 platform. + config DEBUG_MSM_UART1 + bool "Kernel low-level debugging messages via MSM UART1" + depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 + help + Say Y here if you want the debug print routines to direct + their output to the first serial port on MSM devices. + + config DEBUG_MSM_UART2 + bool "Kernel low-level debugging messages via MSM UART2" + depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 + help + Say Y here if you want the debug print routines to direct + their output to the second serial port on MSM devices. + + config DEBUG_MSM_UART3 + bool "Kernel low-level debugging messages via MSM UART3" + depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 + help + Say Y here if you want the debug print routines to direct + their output to the third serial port on MSM devices. + endchoice config EARLY_PRINTK diff --git a/trunk/arch/arm/boot/Makefile b/trunk/arch/arm/boot/Makefile index 5df26a9976a2..176062ac7f07 100644 --- a/trunk/arch/arm/boot/Makefile +++ b/trunk/arch/arm/boot/Makefile @@ -65,8 +65,6 @@ $(obj)/%.dtb: $(src)/dts/%.dts $(obj)/dtbs: $(addprefix $(obj)/, $(dtb-y)) -clean-files := *.dtb - quiet_cmd_uimage = UIMAGE $@ cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \ -C none -a $(LOADADDR) -e $(STARTADDR) \ diff --git a/trunk/arch/arm/boot/dts/tegra-ventana.dts b/trunk/arch/arm/boot/dts/tegra-ventana.dts index 3f9abd6b6964..9b29a623aaf1 100644 --- a/trunk/arch/arm/boot/dts/tegra-ventana.dts +++ b/trunk/arch/arm/boot/dts/tegra-ventana.dts @@ -22,10 +22,11 @@ sdhci@c8000400 { cd-gpios = <&gpio 69 0>; /* gpio PI5 */ wp-gpios = <&gpio 57 0>; /* gpio PH1 */ - power-gpios = <&gpio 70 0>; /* gpio PI6 */ + power-gpios = <&gpio 155 0>; /* gpio PT3 */ }; sdhci@c8000600 { + power-gpios = <&gpio 70 0>; /* gpio PI6 */ support-8bit; }; }; diff --git a/trunk/arch/arm/include/asm/hardware/cache-l2x0.h b/trunk/arch/arm/include/asm/hardware/cache-l2x0.h index 7df239bcdf27..1db1143a9483 100644 --- a/trunk/arch/arm/include/asm/hardware/cache-l2x0.h +++ b/trunk/arch/arm/include/asm/hardware/cache-l2x0.h @@ -20,8 +20,6 @@ #ifndef __ASM_ARM_HARDWARE_L2X0_H #define __ASM_ARM_HARDWARE_L2X0_H -#include - #define L2X0_CACHE_ID 0x000 #define L2X0_CACHE_TYPE 0x004 #define L2X0_CTRL 0x100 diff --git a/trunk/arch/arm/include/asm/mach/arch.h b/trunk/arch/arm/include/asm/mach/arch.h index 2b0efc3104ac..7d19425dd496 100644 --- a/trunk/arch/arm/include/asm/mach/arch.h +++ b/trunk/arch/arm/include/asm/mach/arch.h @@ -13,7 +13,6 @@ struct tag; struct meminfo; struct sys_timer; -struct pt_regs; struct machine_desc { unsigned int nr; /* architecture number */ diff --git a/trunk/arch/arm/include/asm/unistd.h b/trunk/arch/arm/include/asm/unistd.h index 4a1123783806..c60a2944f95b 100644 --- a/trunk/arch/arm/include/asm/unistd.h +++ b/trunk/arch/arm/include/asm/unistd.h @@ -402,8 +402,6 @@ #define __NR_syncfs (__NR_SYSCALL_BASE+373) #define __NR_sendmmsg (__NR_SYSCALL_BASE+374) #define __NR_setns (__NR_SYSCALL_BASE+375) -#define __NR_process_vm_readv (__NR_SYSCALL_BASE+376) -#define __NR_process_vm_writev (__NR_SYSCALL_BASE+377) /* * The following SWIs are ARM private. diff --git a/trunk/arch/arm/kernel/calls.S b/trunk/arch/arm/kernel/calls.S index 463ff4a0ec8a..9943e9e74a1b 100644 --- a/trunk/arch/arm/kernel/calls.S +++ b/trunk/arch/arm/kernel/calls.S @@ -385,8 +385,6 @@ CALL(sys_syncfs) CALL(sys_sendmmsg) /* 375 */ CALL(sys_setns) - CALL(sys_process_vm_readv) - CALL(sys_process_vm_writev) #ifndef syscalls_counted .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls #define syscalls_counted diff --git a/trunk/arch/arm/kernel/head.S b/trunk/arch/arm/kernel/head.S index 08c82fd844a8..566c54c2a1fe 100644 --- a/trunk/arch/arm/kernel/head.S +++ b/trunk/arch/arm/kernel/head.S @@ -360,7 +360,7 @@ __secondary_data: * r13 = *virtual* address to jump to upon completion */ __enable_mmu: -#if defined(CONFIG_ALIGNMENT_TRAP) && __LINUX_ARM_ARCH__ < 6 +#ifdef CONFIG_ALIGNMENT_TRAP orr r0, r0, #CR_A #else bic r0, r0, #CR_A diff --git a/trunk/arch/arm/kernel/machine_kexec.c b/trunk/arch/arm/kernel/machine_kexec.c index e59bbd496c39..c1b4463dcc83 100644 --- a/trunk/arch/arm/kernel/machine_kexec.c +++ b/trunk/arch/arm/kernel/machine_kexec.c @@ -32,6 +32,24 @@ static atomic_t waiting_for_crash_ipi; int machine_kexec_prepare(struct kimage *image) { + unsigned long page_list; + void *reboot_code_buffer; + page_list = image->head & PAGE_MASK; + + reboot_code_buffer = page_address(image->control_code_page); + + /* Prepare parameters for reboot_code_buffer*/ + kexec_start_address = image->start; + kexec_indirection_page = page_list; + kexec_mach_type = machine_arch_type; + kexec_boot_atags = image->start - KEXEC_ARM_ZIMAGE_OFFSET + KEXEC_ARM_ATAGS_OFFSET; + + /* copy our kernel relocation code to the control code page */ + memcpy(reboot_code_buffer, + relocate_new_kernel, relocate_new_kernel_size); + + flush_icache_range((unsigned long) reboot_code_buffer, + (unsigned long) reboot_code_buffer + KEXEC_CONTROL_PAGE_SIZE); return 0; } @@ -82,31 +100,14 @@ void (*kexec_reinit)(void); void machine_kexec(struct kimage *image) { - unsigned long page_list; unsigned long reboot_code_buffer_phys; void *reboot_code_buffer; - - page_list = image->head & PAGE_MASK; - /* we need both effective and real address here */ reboot_code_buffer_phys = page_to_pfn(image->control_code_page) << PAGE_SHIFT; reboot_code_buffer = page_address(image->control_code_page); - /* Prepare parameters for reboot_code_buffer*/ - kexec_start_address = image->start; - kexec_indirection_page = page_list; - kexec_mach_type = machine_arch_type; - kexec_boot_atags = image->start - KEXEC_ARM_ZIMAGE_OFFSET + KEXEC_ARM_ATAGS_OFFSET; - - /* copy our kernel relocation code to the control code page */ - memcpy(reboot_code_buffer, - relocate_new_kernel, relocate_new_kernel_size); - - - flush_icache_range((unsigned long) reboot_code_buffer, - (unsigned long) reboot_code_buffer + KEXEC_CONTROL_PAGE_SIZE); printk(KERN_INFO "Bye!\n"); if (kexec_reinit) diff --git a/trunk/arch/arm/kernel/setup.c b/trunk/arch/arm/kernel/setup.c index 3448a3f9cc8c..7e7977ab994f 100644 --- a/trunk/arch/arm/kernel/setup.c +++ b/trunk/arch/arm/kernel/setup.c @@ -461,10 +461,8 @@ static void __init setup_processor(void) cpu_name, read_cpuid_id(), read_cpuid_id() & 15, proc_arch[cpu_architecture()], cr_alignment); - snprintf(init_utsname()->machine, __NEW_UTS_LEN + 1, "%s%c", - list->arch_name, ENDIANNESS); - snprintf(elf_platform, ELF_PLATFORM_SIZE, "%s%c", - list->elf_name, ENDIANNESS); + sprintf(init_utsname()->machine, "%s%c", list->arch_name, ENDIANNESS); + sprintf(elf_platform, "%s%c", list->elf_name, ENDIANNESS); elf_hwcap = list->elf_hwcap; #ifndef CONFIG_ARM_THUMB elf_hwcap &= ~HWCAP_THUMB; diff --git a/trunk/arch/arm/mach-at91/Kconfig b/trunk/arch/arm/mach-at91/Kconfig index 4f991f295284..d111c3e99249 100644 --- a/trunk/arch/arm/mach-at91/Kconfig +++ b/trunk/arch/arm/mach-at91/Kconfig @@ -3,12 +3,6 @@ if ARCH_AT91 config HAVE_AT91_DATAFLASH_CARD bool -config HAVE_AT91_DBGU0 - bool - -config HAVE_AT91_DBGU1 - bool - config HAVE_AT91_USART3 bool @@ -27,14 +21,12 @@ config ARCH_AT91RM9200 bool "AT91RM9200" select CPU_ARM920T select GENERIC_CLOCKEVENTS - select HAVE_AT91_DBGU0 select HAVE_AT91_USART3 config ARCH_AT91SAM9260 bool "AT91SAM9260 or AT91SAM9XE" select CPU_ARM926T select GENERIC_CLOCKEVENTS - select HAVE_AT91_DBGU0 select HAVE_AT91_USART3 select HAVE_AT91_USART4 select HAVE_AT91_USART5 @@ -45,13 +37,11 @@ config ARCH_AT91SAM9261 select CPU_ARM926T select GENERIC_CLOCKEVENTS select HAVE_FB_ATMEL - select HAVE_AT91_DBGU0 config ARCH_AT91SAM9G10 bool "AT91SAM9G10" select CPU_ARM926T select GENERIC_CLOCKEVENTS - select HAVE_AT91_DBGU0 select HAVE_FB_ATMEL config ARCH_AT91SAM9263 @@ -60,7 +50,6 @@ config ARCH_AT91SAM9263 select GENERIC_CLOCKEVENTS select HAVE_FB_ATMEL select HAVE_NET_MACB - select HAVE_AT91_DBGU1 config ARCH_AT91SAM9RL bool "AT91SAM9RL" @@ -68,13 +57,11 @@ config ARCH_AT91SAM9RL select GENERIC_CLOCKEVENTS select HAVE_AT91_USART3 select HAVE_FB_ATMEL - select HAVE_AT91_DBGU0 config ARCH_AT91SAM9G20 bool "AT91SAM9G20" select CPU_ARM926T select GENERIC_CLOCKEVENTS - select HAVE_AT91_DBGU0 select HAVE_AT91_USART3 select HAVE_AT91_USART4 select HAVE_AT91_USART5 @@ -87,7 +74,6 @@ config ARCH_AT91SAM9G45 select HAVE_AT91_USART3 select HAVE_FB_ATMEL select HAVE_NET_MACB - select HAVE_AT91_DBGU1 config ARCH_AT91CAP9 bool "AT91CAP9" @@ -95,7 +81,6 @@ config ARCH_AT91CAP9 select GENERIC_CLOCKEVENTS select HAVE_FB_ATMEL select HAVE_NET_MACB - select HAVE_AT91_DBGU1 config ARCH_AT91X40 bool "AT91x40" @@ -525,13 +510,8 @@ config AT91_TIMER_HZ choice prompt "Select a UART for early kernel messages" -config AT91_EARLY_DBGU0 - bool "DBGU on rm9200, 9260/9g20, 9261/9g10 and 9rl" - depends on HAVE_AT91_DBGU0 - -config AT91_EARLY_DBGU1 - bool "DBGU on 9263, 9g45 and cap9" - depends on HAVE_AT91_DBGU1 +config AT91_EARLY_DBGU + bool "DBGU" config AT91_EARLY_USART0 bool "USART0" diff --git a/trunk/arch/arm/mach-at91/at91cap9.c b/trunk/arch/arm/mach-at91/at91cap9.c index 506a26c3fff6..ecdd54dd68c6 100644 --- a/trunk/arch/arm/mach-at91/at91cap9.c +++ b/trunk/arch/arm/mach-at91/at91cap9.c @@ -13,6 +13,7 @@ */ #include +#include #include #include @@ -22,11 +23,11 @@ #include #include #include +#include #include "soc.h" #include "generic.h" #include "clock.h" -#include "sam9_smc.h" /* -------------------------------------------------------------------- * Clocks @@ -136,7 +137,7 @@ static struct clk pwm_clk = { .type = CLK_TYPE_PERIPHERAL, }; static struct clk macb_clk = { - .name = "pclk", + .name = "macb_clk", .pmc_mask = 1 << AT91CAP9_ID_EMAC, .type = CLK_TYPE_PERIPHERAL, }; @@ -209,8 +210,6 @@ static struct clk *periph_clocks[] __initdata = { }; static struct clk_lookup periph_clocks_lookups[] = { - /* One additional fake clock for macb_hclk */ - CLKDEV_CON_ID("hclk", &macb_clk), CLKDEV_CON_DEV_ID("hclk", "atmel_usba_udc", &utmi_clk), CLKDEV_CON_DEV_ID("pclk", "atmel_usba_udc", &udphs_clk), CLKDEV_CON_DEV_ID("mci_clk", "at91_mci.0", &mmc0_clk), @@ -222,10 +221,6 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), /* fake hclk clock */ CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), - CLKDEV_CON_ID("pioA", &pioABCD_clk), - CLKDEV_CON_ID("pioB", &pioABCD_clk), - CLKDEV_CON_ID("pioC", &pioABCD_clk), - CLKDEV_CON_ID("pioD", &pioABCD_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -298,19 +293,23 @@ void __init at91cap9_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91cap9_gpio[] __initdata = { +static struct at91_gpio_bank at91cap9_gpio[] = { { .id = AT91CAP9_ID_PIOABCD, - .regbase = AT91CAP9_BASE_PIOA, + .offset = AT91_PIOA, + .clock = &pioABCD_clk, }, { .id = AT91CAP9_ID_PIOABCD, - .regbase = AT91CAP9_BASE_PIOB, + .offset = AT91_PIOB, + .clock = &pioABCD_clk, }, { .id = AT91CAP9_ID_PIOABCD, - .regbase = AT91CAP9_BASE_PIOC, + .offset = AT91_PIOC, + .clock = &pioABCD_clk, }, { .id = AT91CAP9_ID_PIOABCD, - .regbase = AT91CAP9_BASE_PIOD, + .offset = AT91_PIOD, + .clock = &pioABCD_clk, } }; @@ -319,6 +318,12 @@ static void at91cap9_reset(void) at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST); } +static void at91cap9_poweroff(void) +{ + at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); +} + + /* -------------------------------------------------------------------- * AT91CAP9 processor initialization * -------------------------------------------------------------------- */ @@ -328,16 +333,10 @@ static void __init at91cap9_map_io(void) at91_init_sram(0, AT91CAP9_SRAM_BASE, AT91CAP9_SRAM_SIZE); } -static void __init at91cap9_ioremap_registers(void) -{ - at91_ioremap_shdwc(AT91CAP9_BASE_SHDWC); - at91sam926x_ioremap_pit(AT91CAP9_BASE_PIT); - at91sam9_ioremap_smc(0, AT91CAP9_BASE_SMC); -} - static void __init at91cap9_initialize(void) { at91_arch_reset = at91cap9_reset; + pm_power_off = at91cap9_poweroff; at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1); /* Register GPIO subsystem */ @@ -395,7 +394,6 @@ static unsigned int at91cap9_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91cap9_soc = { .map_io = at91cap9_map_io, .default_irq_priority = at91cap9_default_irq_priority, - .ioremap_registers = at91cap9_ioremap_registers, .register_clocks = at91cap9_register_clocks, .init = at91cap9_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91cap9_devices.c b/trunk/arch/arm/mach-at91/at91cap9_devices.c index d298fb7cb210..a4401d6b5b07 100644 --- a/trunk/arch/arm/mach-at91/at91cap9_devices.c +++ b/trunk/arch/arm/mach-at91/at91cap9_devices.c @@ -76,7 +76,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) /* Enable VBus control for UHP ports */ for (i = 0; i < data->ports; i++) { - if (gpio_is_valid(data->vbus_pin[i])) + if (data->vbus_pin[i]) at91_set_gpio_output(data->vbus_pin[i], 0); } @@ -98,7 +98,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {} * USB HS Device (Gadget) * -------------------------------------------------------------------- */ -#if defined(CONFIG_USB_ATMEL_USBA) || defined(CONFIG_USB_ATMEL_USBA_MODULE) +#if defined(CONFIG_USB_GADGET_ATMEL_USBA) || defined(CONFIG_USB_GADGET_ATMEL_USBA_MODULE) static struct resource usba_udc_resources[] = { [0] = { @@ -179,7 +179,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) usba_udc_data.pdata.num_ep = ARRAY_SIZE(usba_udc_ep); memcpy(usba_udc_data.ep, usba_udc_ep, sizeof(usba_udc_ep)); - if (data && gpio_is_valid(data->vbus_pin)) { + if (data && data->vbus_pin > 0) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); usba_udc_data.pdata.vbus_pin = data->vbus_pin; @@ -200,7 +200,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) {} #if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE) static u64 eth_dmamask = DMA_BIT_MASK(32); -static struct macb_platform_data eth_data; +static struct at91_eth_data eth_data; static struct resource eth_resources[] = { [0] = { @@ -227,12 +227,12 @@ static struct platform_device at91cap9_eth_device = { .num_resources = ARRAY_SIZE(eth_resources), }; -void __init at91_add_device_eth(struct macb_platform_data *data) +void __init at91_add_device_eth(struct at91_eth_data *data) { if (!data) return; - if (gpio_is_valid(data->phy_irq_pin)) { + if (data->phy_irq_pin) { at91_set_gpio_input(data->phy_irq_pin, 0); at91_set_deglitch(data->phy_irq_pin, 1); } @@ -264,7 +264,7 @@ void __init at91_add_device_eth(struct macb_platform_data *data) platform_device_register(&at91cap9_eth_device); } #else -void __init at91_add_device_eth(struct macb_platform_data *data) {} +void __init at91_add_device_eth(struct at91_eth_data *data) {} #endif @@ -332,13 +332,13 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) return; /* input/irq */ - if (gpio_is_valid(data->det_pin)) { + if (data->det_pin) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (gpio_is_valid(data->wp_pin)) + if (data->wp_pin) at91_set_gpio_input(data->wp_pin, 1); - if (gpio_is_valid(data->vcc_pin)) + if (data->vcc_pin) at91_set_gpio_output(data->vcc_pin, 0); if (mmc_id == 0) { /* MCI0 */ @@ -398,8 +398,8 @@ static struct resource nand_resources[] = { .flags = IORESOURCE_MEM, }, [1] = { - .start = AT91CAP9_BASE_ECC, - .end = AT91CAP9_BASE_ECC + SZ_512 - 1, + .start = AT91_BASE_SYS + AT91_ECC, + .end = AT91_BASE_SYS + AT91_ECC + SZ_512 - 1, .flags = IORESOURCE_MEM, } }; @@ -425,15 +425,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA); /* enable pin */ - if (gpio_is_valid(data->enable_pin)) + if (data->enable_pin) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (gpio_is_valid(data->rdy_pin)) + if (data->rdy_pin) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (gpio_is_valid(data->det_pin)) + if (data->det_pin) at91_set_gpio_input(data->det_pin, 1); nand_data = *data; @@ -670,8 +670,8 @@ static void __init at91_add_device_tc(void) { } static struct resource rtt_resources[] = { { - .start = AT91CAP9_BASE_RTT, - .end = AT91CAP9_BASE_RTT + SZ_16 - 1, + .start = AT91_BASE_SYS + AT91_RTT, + .end = AT91_BASE_SYS + AT91_RTT + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -694,19 +694,10 @@ static void __init at91_add_device_rtt(void) * -------------------------------------------------------------------- */ #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) -static struct resource wdt_resources[] = { - { - .start = AT91CAP9_BASE_WDT, - .end = AT91CAP9_BASE_WDT + SZ_16 - 1, - .flags = IORESOURCE_MEM, - } -}; - static struct platform_device at91cap9_wdt_device = { .name = "at91_wdt", .id = -1, - .resource = wdt_resources, - .num_resources = ARRAY_SIZE(wdt_resources), + .num_resources = 0, }; static void __init at91_add_device_watchdog(void) @@ -816,7 +807,7 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data) at91_set_A_periph(AT91_PIN_PA9, 0); /* AC97RX */ /* reset */ - if (gpio_is_valid(data->reset_pin)) + if (data->reset_pin) at91_set_gpio_output(data->reset_pin, 0); ac97_data = *data; @@ -1030,8 +1021,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} #if defined(CONFIG_SERIAL_ATMEL) static struct resource dbgu_resources[] = { [0] = { - .start = AT91CAP9_BASE_DBGU, - .end = AT91CAP9_BASE_DBGU + SZ_512 - 1, + .start = AT91_VA_BASE_SYS + AT91_DBGU, + .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { @@ -1044,6 +1035,7 @@ static struct resource dbgu_resources[] = { static struct atmel_uart_data dbgu_data = { .use_dma_tx = 0, .use_dma_rx = 0, /* DBGU not capable of receive DMA */ + .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), }; static u64 dbgu_dmamask = DMA_BIT_MASK(32); diff --git a/trunk/arch/arm/mach-at91/at91rm9200.c b/trunk/arch/arm/mach-at91/at91rm9200.c index 9163d7d5f76e..713d3bdbd284 100644 --- a/trunk/arch/arm/mach-at91/at91rm9200.c +++ b/trunk/arch/arm/mach-at91/at91rm9200.c @@ -23,7 +23,6 @@ #include "soc.h" #include "generic.h" #include "clock.h" -#include "sam9_smc.h" static struct map_desc at91rm9200_io_desc[] __initdata = { { @@ -196,10 +195,6 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk), /* fake hclk clock */ CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), - CLKDEV_CON_ID("pioA", &pioA_clk), - CLKDEV_CON_ID("pioB", &pioB_clk), - CLKDEV_CON_ID("pioC", &pioC_clk), - CLKDEV_CON_ID("pioD", &pioD_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -273,19 +268,23 @@ void __init at91rm9200_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91rm9200_gpio[] __initdata = { +static struct at91_gpio_bank at91rm9200_gpio[] = { { .id = AT91RM9200_ID_PIOA, - .regbase = AT91RM9200_BASE_PIOA, + .offset = AT91_PIOA, + .clock = &pioA_clk, }, { .id = AT91RM9200_ID_PIOB, - .regbase = AT91RM9200_BASE_PIOB, + .offset = AT91_PIOB, + .clock = &pioB_clk, }, { .id = AT91RM9200_ID_PIOC, - .regbase = AT91RM9200_BASE_PIOC, + .offset = AT91_PIOC, + .clock = &pioC_clk, }, { .id = AT91RM9200_ID_PIOD, - .regbase = AT91RM9200_BASE_PIOD, + .offset = AT91_PIOD, + .clock = &pioD_clk, } }; @@ -308,10 +307,6 @@ static void __init at91rm9200_map_io(void) iotable_init(at91rm9200_io_desc, ARRAY_SIZE(at91rm9200_io_desc)); } -static void __init at91rm9200_ioremap_registers(void) -{ -} - static void __init at91rm9200_initialize(void) { at91_arch_reset = at91rm9200_reset; @@ -371,7 +366,6 @@ static unsigned int at91rm9200_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91rm9200_soc = { .map_io = at91rm9200_map_io, .default_irq_priority = at91rm9200_default_irq_priority, - .ioremap_registers = at91rm9200_ioremap_registers, .register_clocks = at91rm9200_register_clocks, .init = at91rm9200_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91rm9200_devices.c b/trunk/arch/arm/mach-at91/at91rm9200_devices.c index 064bbae65e5b..01d8bbd1468b 100644 --- a/trunk/arch/arm/mach-at91/at91rm9200_devices.c +++ b/trunk/arch/arm/mach-at91/at91rm9200_devices.c @@ -114,11 +114,11 @@ void __init at91_add_device_udc(struct at91_udc_data *data) if (!data) return; - if (gpio_is_valid(data->vbus_pin)) { + if (data->vbus_pin) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); } - if (gpio_is_valid(data->pullup_pin)) + if (data->pullup_pin) at91_set_gpio_output(data->pullup_pin, 0); udc_data = *data; @@ -135,7 +135,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) {} #if defined(CONFIG_ARM_AT91_ETHER) || defined(CONFIG_ARM_AT91_ETHER_MODULE) static u64 eth_dmamask = DMA_BIT_MASK(32); -static struct macb_platform_data eth_data; +static struct at91_eth_data eth_data; static struct resource eth_resources[] = { [0] = { @@ -162,12 +162,12 @@ static struct platform_device at91rm9200_eth_device = { .num_resources = ARRAY_SIZE(eth_resources), }; -void __init at91_add_device_eth(struct macb_platform_data *data) +void __init at91_add_device_eth(struct at91_eth_data *data) { if (!data) return; - if (gpio_is_valid(data->phy_irq_pin)) { + if (data->phy_irq_pin) { at91_set_gpio_input(data->phy_irq_pin, 0); at91_set_deglitch(data->phy_irq_pin, 1); } @@ -199,7 +199,7 @@ void __init at91_add_device_eth(struct macb_platform_data *data) platform_device_register(&at91rm9200_eth_device); } #else -void __init at91_add_device_eth(struct macb_platform_data *data) {} +void __init at91_add_device_eth(struct at91_eth_data *data) {} #endif @@ -260,7 +260,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data) ); /* input/irq */ - if (gpio_is_valid(data->irq_pin)) { + if (data->irq_pin) { at91_set_gpio_input(data->irq_pin, 1); at91_set_deglitch(data->irq_pin, 1); } @@ -268,7 +268,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data) at91_set_deglitch(data->det_pin, 1); /* outputs, initially off */ - if (gpio_is_valid(data->vcc_pin)) + if (data->vcc_pin) at91_set_gpio_output(data->vcc_pin, 0); at91_set_gpio_output(data->rst_pin, 0); @@ -328,13 +328,13 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) return; /* input/irq */ - if (gpio_is_valid(data->det_pin)) { + if (data->det_pin) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (gpio_is_valid(data->wp_pin)) + if (data->wp_pin) at91_set_gpio_input(data->wp_pin, 1); - if (gpio_is_valid(data->vcc_pin)) + if (data->vcc_pin) at91_set_gpio_output(data->vcc_pin, 0); /* CLK */ @@ -419,15 +419,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) ); /* enable pin */ - if (gpio_is_valid(data->enable_pin)) + if (data->enable_pin) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (gpio_is_valid(data->rdy_pin)) + if (data->rdy_pin) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (gpio_is_valid(data->det_pin)) + if (data->det_pin) at91_set_gpio_input(data->det_pin, 1); at91_set_A_periph(AT91_PIN_PC1, 0); /* SMOE */ @@ -665,24 +665,10 @@ static void __init at91_add_device_tc(void) { } * -------------------------------------------------------------------- */ #if defined(CONFIG_RTC_DRV_AT91RM9200) || defined(CONFIG_RTC_DRV_AT91RM9200_MODULE) -static struct resource rtc_resources[] = { - [0] = { - .start = AT91RM9200_BASE_RTC, - .end = AT91RM9200_BASE_RTC + SZ_256 - 1, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = AT91_ID_SYS, - .end = AT91_ID_SYS, - .flags = IORESOURCE_IRQ, - }, -}; - static struct platform_device at91rm9200_rtc_device = { .name = "at91_rtc", .id = -1, - .resource = rtc_resources, - .num_resources = ARRAY_SIZE(rtc_resources), + .num_resources = 0, }; static void __init at91_add_device_rtc(void) @@ -891,8 +877,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} #if defined(CONFIG_SERIAL_ATMEL) static struct resource dbgu_resources[] = { [0] = { - .start = AT91RM9200_BASE_DBGU, - .end = AT91RM9200_BASE_DBGU + SZ_512 - 1, + .start = AT91_VA_BASE_SYS + AT91_DBGU, + .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { @@ -905,6 +891,7 @@ static struct resource dbgu_resources[] = { static struct atmel_uart_data dbgu_data = { .use_dma_tx = 0, .use_dma_rx = 0, /* DBGU not capable of receive DMA */ + .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), }; static u64 dbgu_dmamask = DMA_BIT_MASK(32); diff --git a/trunk/arch/arm/mach-at91/at91rm9200_time.c b/trunk/arch/arm/mach-at91/at91rm9200_time.c index a028cdf8f974..1dd69c85dfec 100644 --- a/trunk/arch/arm/mach-at91/at91rm9200_time.c +++ b/trunk/arch/arm/mach-at91/at91rm9200_time.c @@ -32,8 +32,6 @@ static unsigned long last_crtr; static u32 irqmask; static struct clock_event_device clkevt; -#define RM9200_TIMER_LATCH ((AT91_SLOW_CLOCK + HZ/2) / HZ) - /* * The ST_CRTR is updated asynchronously to the master clock ... but * the updates as seen by the CPU don't seem to be strictly monotonic. @@ -76,8 +74,8 @@ static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id) if (sr & AT91_ST_PITS) { u32 crtr = read_CRTR(); - while (((crtr - last_crtr) & AT91_ST_CRTV) >= RM9200_TIMER_LATCH) { - last_crtr += RM9200_TIMER_LATCH; + while (((crtr - last_crtr) & AT91_ST_CRTV) >= LATCH) { + last_crtr += LATCH; clkevt.event_handler(&clkevt); } return IRQ_HANDLED; @@ -118,7 +116,7 @@ clkevt32k_mode(enum clock_event_mode mode, struct clock_event_device *dev) case CLOCK_EVT_MODE_PERIODIC: /* PIT for periodic irqs; fixed rate of 1/HZ */ irqmask = AT91_ST_PITS; - at91_sys_write(AT91_ST_PIMR, RM9200_TIMER_LATCH); + at91_sys_write(AT91_ST_PIMR, LATCH); break; case CLOCK_EVT_MODE_ONESHOT: /* ALM for oneshot irqs, set by next_event() diff --git a/trunk/arch/arm/mach-at91/at91sam9260.c b/trunk/arch/arm/mach-at91/at91sam9260.c index 3f6c6a12480d..b84a9f642f59 100644 --- a/trunk/arch/arm/mach-at91/at91sam9260.c +++ b/trunk/arch/arm/mach-at91/at91sam9260.c @@ -11,6 +11,7 @@ */ #include +#include #include #include @@ -20,11 +21,11 @@ #include #include #include +#include #include "soc.h" #include "generic.h" #include "clock.h" -#include "sam9_smc.h" /* -------------------------------------------------------------------- * Clocks @@ -119,7 +120,7 @@ static struct clk ohci_clk = { .type = CLK_TYPE_PERIPHERAL, }; static struct clk macb_clk = { - .name = "pclk", + .name = "macb_clk", .pmc_mask = 1 << AT91SAM9260_ID_EMAC, .type = CLK_TYPE_PERIPHERAL, }; @@ -189,8 +190,6 @@ static struct clk *periph_clocks[] __initdata = { }; static struct clk_lookup periph_clocks_lookups[] = { - /* One additional fake clock for macb_hclk */ - CLKDEV_CON_ID("hclk", &macb_clk), CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.0", &spi0_clk), CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.1", &spi1_clk), CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tc0_clk), @@ -210,9 +209,6 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("usart", "fffd8000.serial", &usart5_clk), /* fake hclk clock */ CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), - CLKDEV_CON_ID("pioA", &pioA_clk), - CLKDEV_CON_ID("pioB", &pioB_clk), - CLKDEV_CON_ID("pioC", &pioC_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -274,19 +270,28 @@ void __init at91sam9260_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91sam9260_gpio[] __initdata = { +static struct at91_gpio_bank at91sam9260_gpio[] = { { .id = AT91SAM9260_ID_PIOA, - .regbase = AT91SAM9260_BASE_PIOA, + .offset = AT91_PIOA, + .clock = &pioA_clk, }, { .id = AT91SAM9260_ID_PIOB, - .regbase = AT91SAM9260_BASE_PIOB, + .offset = AT91_PIOB, + .clock = &pioB_clk, }, { .id = AT91SAM9260_ID_PIOC, - .regbase = AT91SAM9260_BASE_PIOC, + .offset = AT91_PIOC, + .clock = &pioC_clk, } }; +static void at91sam9260_poweroff(void) +{ + at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); +} + + /* -------------------------------------------------------------------- * AT91SAM9260 processor initialization * -------------------------------------------------------------------- */ @@ -320,16 +325,10 @@ static void __init at91sam9260_map_io(void) } } -static void __init at91sam9260_ioremap_registers(void) -{ - at91_ioremap_shdwc(AT91SAM9260_BASE_SHDWC); - at91sam926x_ioremap_pit(AT91SAM9260_BASE_PIT); - at91sam9_ioremap_smc(0, AT91SAM9260_BASE_SMC); -} - static void __init at91sam9260_initialize(void) { at91_arch_reset = at91sam9_alt_reset; + pm_power_off = at91sam9260_poweroff; at91_extern_irq = (1 << AT91SAM9260_ID_IRQ0) | (1 << AT91SAM9260_ID_IRQ1) | (1 << AT91SAM9260_ID_IRQ2); @@ -382,7 +381,6 @@ static unsigned int at91sam9260_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91sam9260_soc = { .map_io = at91sam9260_map_io, .default_irq_priority = at91sam9260_default_irq_priority, - .ioremap_registers = at91sam9260_ioremap_registers, .register_clocks = at91sam9260_register_clocks, .init = at91sam9260_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91sam9260_devices.c b/trunk/arch/arm/mach-at91/at91sam9260_devices.c index f9bcb251e338..24b6f8c0440d 100644 --- a/trunk/arch/arm/mach-at91/at91sam9260_devices.c +++ b/trunk/arch/arm/mach-at91/at91sam9260_devices.c @@ -115,7 +115,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) if (!data) return; - if (gpio_is_valid(data->vbus_pin)) { + if (data->vbus_pin) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); } @@ -136,7 +136,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) {} #if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE) static u64 eth_dmamask = DMA_BIT_MASK(32); -static struct macb_platform_data eth_data; +static struct at91_eth_data eth_data; static struct resource eth_resources[] = { [0] = { @@ -163,12 +163,12 @@ static struct platform_device at91sam9260_eth_device = { .num_resources = ARRAY_SIZE(eth_resources), }; -void __init at91_add_device_eth(struct macb_platform_data *data) +void __init at91_add_device_eth(struct at91_eth_data *data) { if (!data) return; - if (gpio_is_valid(data->phy_irq_pin)) { + if (data->phy_irq_pin) { at91_set_gpio_input(data->phy_irq_pin, 0); at91_set_deglitch(data->phy_irq_pin, 1); } @@ -200,7 +200,7 @@ void __init at91_add_device_eth(struct macb_platform_data *data) platform_device_register(&at91sam9260_eth_device); } #else -void __init at91_add_device_eth(struct macb_platform_data *data) {} +void __init at91_add_device_eth(struct at91_eth_data *data) {} #endif @@ -243,13 +243,13 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) return; /* input/irq */ - if (gpio_is_valid(data->det_pin)) { + if (data->det_pin) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (gpio_is_valid(data->wp_pin)) + if (data->wp_pin) at91_set_gpio_input(data->wp_pin, 1); - if (gpio_is_valid(data->vcc_pin)) + if (data->vcc_pin) at91_set_gpio_output(data->vcc_pin, 0); /* CLK */ @@ -330,11 +330,11 @@ void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data) for (i = 0; i < ATMCI_MAX_NR_SLOTS; i++) { if (data->slot[i].bus_width) { /* input/irq */ - if (gpio_is_valid(data->slot[i].detect_pin)) { + if (data->slot[i].detect_pin) { at91_set_gpio_input(data->slot[i].detect_pin, 1); at91_set_deglitch(data->slot[i].detect_pin, 1); } - if (gpio_is_valid(data->slot[i].wp_pin)) + if (data->slot[i].wp_pin) at91_set_gpio_input(data->slot[i].wp_pin, 1); switch (i) { @@ -399,8 +399,8 @@ static struct resource nand_resources[] = { .flags = IORESOURCE_MEM, }, [1] = { - .start = AT91SAM9260_BASE_ECC, - .end = AT91SAM9260_BASE_ECC + SZ_512 - 1, + .start = AT91_BASE_SYS + AT91_ECC, + .end = AT91_BASE_SYS + AT91_ECC + SZ_512 - 1, .flags = IORESOURCE_MEM, } }; @@ -426,15 +426,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); /* enable pin */ - if (gpio_is_valid(data->enable_pin)) + if (data->enable_pin) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (gpio_is_valid(data->rdy_pin)) + if (data->rdy_pin) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (gpio_is_valid(data->det_pin)) + if (data->det_pin) at91_set_gpio_input(data->det_pin, 1); nand_data = *data; @@ -714,8 +714,8 @@ static void __init at91_add_device_tc(void) { } static struct resource rtt_resources[] = { { - .start = AT91SAM9260_BASE_RTT, - .end = AT91SAM9260_BASE_RTT + SZ_16 - 1, + .start = AT91_BASE_SYS + AT91_RTT, + .end = AT91_BASE_SYS + AT91_RTT + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -738,19 +738,10 @@ static void __init at91_add_device_rtt(void) * -------------------------------------------------------------------- */ #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) -static struct resource wdt_resources[] = { - { - .start = AT91SAM9260_BASE_WDT, - .end = AT91SAM9260_BASE_WDT + SZ_16 - 1, - .flags = IORESOURCE_MEM, - } -}; - static struct platform_device at91sam9260_wdt_device = { .name = "at91_wdt", .id = -1, - .resource = wdt_resources, - .num_resources = ARRAY_SIZE(wdt_resources), + .num_resources = 0, }; static void __init at91_add_device_watchdog(void) @@ -846,8 +837,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} #if defined(CONFIG_SERIAL_ATMEL) static struct resource dbgu_resources[] = { [0] = { - .start = AT91SAM9260_BASE_DBGU, - .end = AT91SAM9260_BASE_DBGU + SZ_512 - 1, + .start = AT91_VA_BASE_SYS + AT91_DBGU, + .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { @@ -860,6 +851,7 @@ static struct resource dbgu_resources[] = { static struct atmel_uart_data dbgu_data = { .use_dma_tx = 0, .use_dma_rx = 0, /* DBGU not capable of receive DMA */ + .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), }; static u64 dbgu_dmamask = DMA_BIT_MASK(32); @@ -1290,17 +1282,17 @@ void __init at91_add_device_cf(struct at91_cf_data *data) at91_sys_write(AT91_MATRIX_EBICSA, csa); - if (gpio_is_valid(data->rst_pin)) { + if (data->rst_pin) { at91_set_multi_drive(data->rst_pin, 0); at91_set_gpio_output(data->rst_pin, 1); } - if (gpio_is_valid(data->irq_pin)) { + if (data->irq_pin) { at91_set_gpio_input(data->irq_pin, 0); at91_set_deglitch(data->irq_pin, 1); } - if (gpio_is_valid(data->det_pin)) { + if (data->det_pin) { at91_set_gpio_input(data->det_pin, 0); at91_set_deglitch(data->det_pin, 1); } diff --git a/trunk/arch/arm/mach-at91/at91sam9261.c b/trunk/arch/arm/mach-at91/at91sam9261.c index a0538c5c2520..658a5185abfd 100644 --- a/trunk/arch/arm/mach-at91/at91sam9261.c +++ b/trunk/arch/arm/mach-at91/at91sam9261.c @@ -11,6 +11,7 @@ */ #include +#include #include #include @@ -19,11 +20,11 @@ #include #include #include +#include #include "soc.h" #include "generic.h" #include "clock.h" -#include "sam9_smc.h" /* -------------------------------------------------------------------- * Clocks @@ -175,9 +176,6 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk), CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &hck0), - CLKDEV_CON_ID("pioA", &pioA_clk), - CLKDEV_CON_ID("pioB", &pioB_clk), - CLKDEV_CON_ID("pioC", &pioC_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -253,19 +251,28 @@ void __init at91sam9261_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91sam9261_gpio[] __initdata = { +static struct at91_gpio_bank at91sam9261_gpio[] = { { .id = AT91SAM9261_ID_PIOA, - .regbase = AT91SAM9261_BASE_PIOA, + .offset = AT91_PIOA, + .clock = &pioA_clk, }, { .id = AT91SAM9261_ID_PIOB, - .regbase = AT91SAM9261_BASE_PIOB, + .offset = AT91_PIOB, + .clock = &pioB_clk, }, { .id = AT91SAM9261_ID_PIOC, - .regbase = AT91SAM9261_BASE_PIOC, + .offset = AT91_PIOC, + .clock = &pioC_clk, } }; +static void at91sam9261_poweroff(void) +{ + at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); +} + + /* -------------------------------------------------------------------- * AT91SAM9261 processor initialization * -------------------------------------------------------------------- */ @@ -278,16 +285,10 @@ static void __init at91sam9261_map_io(void) at91_init_sram(0, AT91SAM9261_SRAM_BASE, AT91SAM9261_SRAM_SIZE); } -static void __init at91sam9261_ioremap_registers(void) -{ - at91_ioremap_shdwc(AT91SAM9261_BASE_SHDWC); - at91sam926x_ioremap_pit(AT91SAM9261_BASE_PIT); - at91sam9_ioremap_smc(0, AT91SAM9261_BASE_SMC); -} - static void __init at91sam9261_initialize(void) { at91_arch_reset = at91sam9_alt_reset; + pm_power_off = at91sam9261_poweroff; at91_extern_irq = (1 << AT91SAM9261_ID_IRQ0) | (1 << AT91SAM9261_ID_IRQ1) | (1 << AT91SAM9261_ID_IRQ2); @@ -340,7 +341,6 @@ static unsigned int at91sam9261_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91sam9261_soc = { .map_io = at91sam9261_map_io, .default_irq_priority = at91sam9261_default_irq_priority, - .ioremap_registers = at91sam9261_ioremap_registers, .register_clocks = at91sam9261_register_clocks, .init = at91sam9261_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91sam9261_devices.c b/trunk/arch/arm/mach-at91/at91sam9261_devices.c index dff4c2de20c7..3b70b3897d95 100644 --- a/trunk/arch/arm/mach-at91/at91sam9261_devices.c +++ b/trunk/arch/arm/mach-at91/at91sam9261_devices.c @@ -118,7 +118,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) if (!data) return; - if (gpio_is_valid(data->vbus_pin)) { + if (data->vbus_pin) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); } @@ -171,13 +171,13 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) return; /* input/irq */ - if (gpio_is_valid(data->det_pin)) { + if (data->det_pin) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (gpio_is_valid(data->wp_pin)) + if (data->wp_pin) at91_set_gpio_input(data->wp_pin, 1); - if (gpio_is_valid(data->vcc_pin)) + if (data->vcc_pin) at91_set_gpio_output(data->vcc_pin, 0); /* CLK */ @@ -240,15 +240,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); /* enable pin */ - if (gpio_is_valid(data->enable_pin)) + if (data->enable_pin) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (gpio_is_valid(data->rdy_pin)) + if (data->rdy_pin) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (gpio_is_valid(data->det_pin)) + if (data->det_pin) at91_set_gpio_input(data->det_pin, 1); at91_set_A_periph(AT91_PIN_PC0, 0); /* NANDOE */ @@ -600,8 +600,8 @@ static void __init at91_add_device_tc(void) { } static struct resource rtt_resources[] = { { - .start = AT91SAM9261_BASE_RTT, - .end = AT91SAM9261_BASE_RTT + SZ_16 - 1, + .start = AT91_BASE_SYS + AT91_RTT, + .end = AT91_BASE_SYS + AT91_RTT + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -624,19 +624,10 @@ static void __init at91_add_device_rtt(void) * -------------------------------------------------------------------- */ #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) -static struct resource wdt_resources[] = { - { - .start = AT91SAM9261_BASE_WDT, - .end = AT91SAM9261_BASE_WDT + SZ_16 - 1, - .flags = IORESOURCE_MEM, - } -}; - static struct platform_device at91sam9261_wdt_device = { .name = "at91_wdt", .id = -1, - .resource = wdt_resources, - .num_resources = ARRAY_SIZE(wdt_resources), + .num_resources = 0, }; static void __init at91_add_device_watchdog(void) @@ -825,8 +816,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} #if defined(CONFIG_SERIAL_ATMEL) static struct resource dbgu_resources[] = { [0] = { - .start = AT91SAM9261_BASE_DBGU, - .end = AT91SAM9261_BASE_DBGU + SZ_512 - 1, + .start = AT91_VA_BASE_SYS + AT91_DBGU, + .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { @@ -839,6 +830,7 @@ static struct resource dbgu_resources[] = { static struct atmel_uart_data dbgu_data = { .use_dma_tx = 0, .use_dma_rx = 0, /* DBGU not capable of receive DMA */ + .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), }; static u64 dbgu_dmamask = DMA_BIT_MASK(32); diff --git a/trunk/arch/arm/mach-at91/at91sam9263.c b/trunk/arch/arm/mach-at91/at91sam9263.c index 5ffbbb024c1e..f83fbb0ee0c5 100644 --- a/trunk/arch/arm/mach-at91/at91sam9263.c +++ b/trunk/arch/arm/mach-at91/at91sam9263.c @@ -11,6 +11,7 @@ */ #include +#include #include #include @@ -18,11 +19,11 @@ #include #include #include +#include #include "soc.h" #include "generic.h" #include "clock.h" -#include "sam9_smc.h" /* -------------------------------------------------------------------- * Clocks @@ -117,7 +118,7 @@ static struct clk pwm_clk = { .type = CLK_TYPE_PERIPHERAL, }; static struct clk macb_clk = { - .name = "pclk", + .name = "macb_clk", .pmc_mask = 1 << AT91SAM9263_ID_EMAC, .type = CLK_TYPE_PERIPHERAL, }; @@ -181,8 +182,6 @@ static struct clk *periph_clocks[] __initdata = { }; static struct clk_lookup periph_clocks_lookups[] = { - /* One additional fake clock for macb_hclk */ - CLKDEV_CON_ID("hclk", &macb_clk), CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk), CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), CLKDEV_CON_DEV_ID("mci_clk", "at91_mci.0", &mmc0_clk), @@ -192,11 +191,6 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tcb_clk), /* fake hclk clock */ CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), - CLKDEV_CON_ID("pioA", &pioA_clk), - CLKDEV_CON_ID("pioB", &pioB_clk), - CLKDEV_CON_ID("pioC", &pioCDE_clk), - CLKDEV_CON_ID("pioD", &pioCDE_clk), - CLKDEV_CON_ID("pioE", &pioCDE_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -269,25 +263,36 @@ void __init at91sam9263_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91sam9263_gpio[] __initdata = { +static struct at91_gpio_bank at91sam9263_gpio[] = { { .id = AT91SAM9263_ID_PIOA, - .regbase = AT91SAM9263_BASE_PIOA, + .offset = AT91_PIOA, + .clock = &pioA_clk, }, { .id = AT91SAM9263_ID_PIOB, - .regbase = AT91SAM9263_BASE_PIOB, + .offset = AT91_PIOB, + .clock = &pioB_clk, }, { .id = AT91SAM9263_ID_PIOCDE, - .regbase = AT91SAM9263_BASE_PIOC, + .offset = AT91_PIOC, + .clock = &pioCDE_clk, }, { .id = AT91SAM9263_ID_PIOCDE, - .regbase = AT91SAM9263_BASE_PIOD, + .offset = AT91_PIOD, + .clock = &pioCDE_clk, }, { .id = AT91SAM9263_ID_PIOCDE, - .regbase = AT91SAM9263_BASE_PIOE, + .offset = AT91_PIOE, + .clock = &pioCDE_clk, } }; +static void at91sam9263_poweroff(void) +{ + at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); +} + + /* -------------------------------------------------------------------- * AT91SAM9263 processor initialization * -------------------------------------------------------------------- */ @@ -298,17 +303,10 @@ static void __init at91sam9263_map_io(void) at91_init_sram(1, AT91SAM9263_SRAM1_BASE, AT91SAM9263_SRAM1_SIZE); } -static void __init at91sam9263_ioremap_registers(void) -{ - at91_ioremap_shdwc(AT91SAM9263_BASE_SHDWC); - at91sam926x_ioremap_pit(AT91SAM9263_BASE_PIT); - at91sam9_ioremap_smc(0, AT91SAM9263_BASE_SMC0); - at91sam9_ioremap_smc(1, AT91SAM9263_BASE_SMC1); -} - static void __init at91sam9263_initialize(void) { at91_arch_reset = at91sam9_alt_reset; + pm_power_off = at91sam9263_poweroff; at91_extern_irq = (1 << AT91SAM9263_ID_IRQ0) | (1 << AT91SAM9263_ID_IRQ1); /* Register GPIO subsystem */ @@ -360,7 +358,6 @@ static unsigned int at91sam9263_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91sam9263_soc = { .map_io = at91sam9263_map_io, .default_irq_priority = at91sam9263_default_irq_priority, - .ioremap_registers = at91sam9263_ioremap_registers, .register_clocks = at91sam9263_register_clocks, .init = at91sam9263_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91sam9263_devices.c b/trunk/arch/arm/mach-at91/at91sam9263_devices.c index a1d452b22514..3faa1fde9ad9 100644 --- a/trunk/arch/arm/mach-at91/at91sam9263_devices.c +++ b/trunk/arch/arm/mach-at91/at91sam9263_devices.c @@ -70,7 +70,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) /* Enable VBus control for UHP ports */ for (i = 0; i < data->ports; i++) { - if (gpio_is_valid(data->vbus_pin[i])) + if (data->vbus_pin[i]) at91_set_gpio_output(data->vbus_pin[i], 0); } @@ -123,7 +123,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) if (!data) return; - if (gpio_is_valid(data->vbus_pin)) { + if (data->vbus_pin) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); } @@ -144,7 +144,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) {} #if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE) static u64 eth_dmamask = DMA_BIT_MASK(32); -static struct macb_platform_data eth_data; +static struct at91_eth_data eth_data; static struct resource eth_resources[] = { [0] = { @@ -171,12 +171,12 @@ static struct platform_device at91sam9263_eth_device = { .num_resources = ARRAY_SIZE(eth_resources), }; -void __init at91_add_device_eth(struct macb_platform_data *data) +void __init at91_add_device_eth(struct at91_eth_data *data) { if (!data) return; - if (gpio_is_valid(data->phy_irq_pin)) { + if (data->phy_irq_pin) { at91_set_gpio_input(data->phy_irq_pin, 0); at91_set_deglitch(data->phy_irq_pin, 1); } @@ -208,7 +208,7 @@ void __init at91_add_device_eth(struct macb_platform_data *data) platform_device_register(&at91sam9263_eth_device); } #else -void __init at91_add_device_eth(struct macb_platform_data *data) {} +void __init at91_add_device_eth(struct at91_eth_data *data) {} #endif @@ -276,13 +276,13 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) return; /* input/irq */ - if (gpio_is_valid(data->det_pin)) { + if (data->det_pin) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (gpio_is_valid(data->wp_pin)) + if (data->wp_pin) at91_set_gpio_input(data->wp_pin, 1); - if (gpio_is_valid(data->vcc_pin)) + if (data->vcc_pin) at91_set_gpio_output(data->vcc_pin, 0); if (mmc_id == 0) { /* MCI0 */ @@ -430,17 +430,17 @@ void __init at91_add_device_cf(struct at91_cf_data *data) } at91_sys_write(AT91_MATRIX_EBI0CSA, ebi0_csa); - if (gpio_is_valid(data->det_pin)) { + if (data->det_pin) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (gpio_is_valid(data->irq_pin)) { + if (data->irq_pin) { at91_set_gpio_input(data->irq_pin, 1); at91_set_deglitch(data->irq_pin, 1); } - if (gpio_is_valid(data->vcc_pin)) + if (data->vcc_pin) /* initially off */ at91_set_gpio_output(data->vcc_pin, 0); @@ -473,8 +473,8 @@ static struct resource nand_resources[] = { .flags = IORESOURCE_MEM, }, [1] = { - .start = AT91SAM9263_BASE_ECC0, - .end = AT91SAM9263_BASE_ECC0 + SZ_512 - 1, + .start = AT91_BASE_SYS + AT91_ECC0, + .end = AT91_BASE_SYS + AT91_ECC0 + SZ_512 - 1, .flags = IORESOURCE_MEM, } }; @@ -500,15 +500,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) at91_sys_write(AT91_MATRIX_EBI0CSA, csa | AT91_MATRIX_EBI0_CS3A_SMC_SMARTMEDIA); /* enable pin */ - if (gpio_is_valid(data->enable_pin)) + if (data->enable_pin) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (gpio_is_valid(data->rdy_pin)) + if (data->rdy_pin) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (gpio_is_valid(data->det_pin)) + if (data->det_pin) at91_set_gpio_input(data->det_pin, 1); nand_data = *data; @@ -749,7 +749,7 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data) at91_set_A_periph(AT91_PIN_PB3, 0); /* AC97RX */ /* reset */ - if (gpio_is_valid(data->reset_pin)) + if (data->reset_pin) at91_set_gpio_output(data->reset_pin, 0); ac97_data = *data; @@ -956,8 +956,8 @@ static void __init at91_add_device_tc(void) { } static struct resource rtt0_resources[] = { { - .start = AT91SAM9263_BASE_RTT0, - .end = AT91SAM9263_BASE_RTT0 + SZ_16 - 1, + .start = AT91_BASE_SYS + AT91_RTT0, + .end = AT91_BASE_SYS + AT91_RTT0 + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -971,8 +971,8 @@ static struct platform_device at91sam9263_rtt0_device = { static struct resource rtt1_resources[] = { { - .start = AT91SAM9263_BASE_RTT1, - .end = AT91SAM9263_BASE_RTT1 + SZ_16 - 1, + .start = AT91_BASE_SYS + AT91_RTT1, + .end = AT91_BASE_SYS + AT91_RTT1 + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -996,19 +996,10 @@ static void __init at91_add_device_rtt(void) * -------------------------------------------------------------------- */ #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) -static struct resource wdt_resources[] = { - { - .start = AT91SAM9263_BASE_WDT, - .end = AT91SAM9263_BASE_WDT + SZ_16 - 1, - .flags = IORESOURCE_MEM, - } -}; - static struct platform_device at91sam9263_wdt_device = { .name = "at91_wdt", .id = -1, - .resource = wdt_resources, - .num_resources = ARRAY_SIZE(wdt_resources), + .num_resources = 0, }; static void __init at91_add_device_watchdog(void) @@ -1205,8 +1196,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} static struct resource dbgu_resources[] = { [0] = { - .start = AT91SAM9263_BASE_DBGU, - .end = AT91SAM9263_BASE_DBGU + SZ_512 - 1, + .start = AT91_VA_BASE_SYS + AT91_DBGU, + .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { @@ -1219,6 +1210,7 @@ static struct resource dbgu_resources[] = { static struct atmel_uart_data dbgu_data = { .use_dma_tx = 0, .use_dma_rx = 0, /* DBGU not capable of receive DMA */ + .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), }; static u64 dbgu_dmamask = DMA_BIT_MASK(32); diff --git a/trunk/arch/arm/mach-at91/at91sam926x_time.c b/trunk/arch/arm/mach-at91/at91sam926x_time.c index d89ead740a99..4ba85499fa97 100644 --- a/trunk/arch/arm/mach-at91/at91sam926x_time.c +++ b/trunk/arch/arm/mach-at91/at91sam926x_time.c @@ -25,17 +25,7 @@ static u32 pit_cycle; /* write-once */ static u32 pit_cnt; /* access only w/system irq blocked */ -static void __iomem *pit_base_addr __read_mostly; -static inline unsigned int pit_read(unsigned int reg_offset) -{ - return __raw_readl(pit_base_addr + reg_offset); -} - -static inline void pit_write(unsigned int reg_offset, unsigned long value) -{ - __raw_writel(value, pit_base_addr + reg_offset); -} /* * Clocksource: just a monotonic counter of MCK/16 cycles. @@ -49,7 +39,7 @@ static cycle_t read_pit_clk(struct clocksource *cs) raw_local_irq_save(flags); elapsed = pit_cnt; - t = pit_read(AT91_PIT_PIIR); + t = at91_sys_read(AT91_PIT_PIIR); raw_local_irq_restore(flags); elapsed += PIT_PICNT(t) * pit_cycle; @@ -74,8 +64,8 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev) switch (mode) { case CLOCK_EVT_MODE_PERIODIC: /* update clocksource counter */ - pit_cnt += pit_cycle * PIT_PICNT(pit_read(AT91_PIT_PIVR)); - pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN + pit_cnt += pit_cycle * PIT_PICNT(at91_sys_read(AT91_PIT_PIVR)); + at91_sys_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN | AT91_PIT_PITIEN); break; case CLOCK_EVT_MODE_ONESHOT: @@ -84,7 +74,7 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev) case CLOCK_EVT_MODE_SHUTDOWN: case CLOCK_EVT_MODE_UNUSED: /* disable irq, leaving the clocksource active */ - pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN); + at91_sys_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN); break; case CLOCK_EVT_MODE_RESUME: break; @@ -113,11 +103,11 @@ static irqreturn_t at91sam926x_pit_interrupt(int irq, void *dev_id) /* The PIT interrupt may be disabled, and is shared */ if ((pit_clkevt.mode == CLOCK_EVT_MODE_PERIODIC) - && (pit_read(AT91_PIT_SR) & AT91_PIT_PITS)) { + && (at91_sys_read(AT91_PIT_SR) & AT91_PIT_PITS)) { unsigned nr_ticks; /* Get number of ticks performed before irq, and ack it */ - nr_ticks = PIT_PICNT(pit_read(AT91_PIT_PIVR)); + nr_ticks = PIT_PICNT(at91_sys_read(AT91_PIT_PIVR)); do { pit_cnt += pit_cycle; pit_clkevt.event_handler(&pit_clkevt); @@ -139,14 +129,14 @@ static struct irqaction at91sam926x_pit_irq = { static void at91sam926x_pit_reset(void) { /* Disable timer and irqs */ - pit_write(AT91_PIT_MR, 0); + at91_sys_write(AT91_PIT_MR, 0); /* Clear any pending interrupts, wait for PIT to stop counting */ - while (PIT_CPIV(pit_read(AT91_PIT_PIVR)) != 0) + while (PIT_CPIV(at91_sys_read(AT91_PIT_PIVR)) != 0) cpu_relax(); /* Start PIT but don't enable IRQ */ - pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN); + at91_sys_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN); } /* @@ -188,15 +178,7 @@ static void __init at91sam926x_pit_init(void) static void at91sam926x_pit_suspend(void) { /* Disable timer */ - pit_write(AT91_PIT_MR, 0); -} - -void __init at91sam926x_ioremap_pit(u32 addr) -{ - pit_base_addr = ioremap(addr, 16); - - if (!pit_base_addr) - panic("Impossible to ioremap PIT\n"); + at91_sys_write(AT91_PIT_MR, 0); } struct sys_timer at91sam926x_timer = { diff --git a/trunk/arch/arm/mach-at91/at91sam9g45.c b/trunk/arch/arm/mach-at91/at91sam9g45.c index f61eb64e6b39..318b0407ea04 100644 --- a/trunk/arch/arm/mach-at91/at91sam9g45.c +++ b/trunk/arch/arm/mach-at91/at91sam9g45.c @@ -11,6 +11,7 @@ */ #include +#include #include #include @@ -19,12 +20,12 @@ #include #include #include +#include #include #include "soc.h" #include "generic.h" #include "clock.h" -#include "sam9_smc.h" /* -------------------------------------------------------------------- * Clocks @@ -149,7 +150,7 @@ static struct clk ac97_clk = { .type = CLK_TYPE_PERIPHERAL, }; static struct clk macb_clk = { - .name = "pclk", + .name = "macb_clk", .pmc_mask = 1 << AT91SAM9G45_ID_EMAC, .type = CLK_TYPE_PERIPHERAL, }; @@ -208,8 +209,6 @@ static struct clk *periph_clocks[] __initdata = { }; static struct clk_lookup periph_clocks_lookups[] = { - /* One additional fake clock for macb_hclk */ - CLKDEV_CON_ID("hclk", &macb_clk), /* One additional fake clock for ohci */ CLKDEV_CON_ID("ohci_clk", &uhphs_clk), CLKDEV_CON_DEV_ID("ehci_clk", "atmel-ehci", &uhphs_clk), @@ -232,11 +231,6 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("usart", "fff98000.serial", &usart3_clk), /* fake hclk clock */ CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &uhphs_clk), - CLKDEV_CON_ID("pioA", &pioA_clk), - CLKDEV_CON_ID("pioB", &pioB_clk), - CLKDEV_CON_ID("pioC", &pioC_clk), - CLKDEV_CON_ID("pioD", &pioDE_clk), - CLKDEV_CON_ID("pioE", &pioDE_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -299,22 +293,27 @@ void __init at91sam9g45_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91sam9g45_gpio[] __initdata = { +static struct at91_gpio_bank at91sam9g45_gpio[] = { { .id = AT91SAM9G45_ID_PIOA, - .regbase = AT91SAM9G45_BASE_PIOA, + .offset = AT91_PIOA, + .clock = &pioA_clk, }, { .id = AT91SAM9G45_ID_PIOB, - .regbase = AT91SAM9G45_BASE_PIOB, + .offset = AT91_PIOB, + .clock = &pioB_clk, }, { .id = AT91SAM9G45_ID_PIOC, - .regbase = AT91SAM9G45_BASE_PIOC, + .offset = AT91_PIOC, + .clock = &pioC_clk, }, { .id = AT91SAM9G45_ID_PIODE, - .regbase = AT91SAM9G45_BASE_PIOD, + .offset = AT91_PIOD, + .clock = &pioDE_clk, }, { .id = AT91SAM9G45_ID_PIODE, - .regbase = AT91SAM9G45_BASE_PIOE, + .offset = AT91_PIOE, + .clock = &pioDE_clk, } }; @@ -323,6 +322,12 @@ static void at91sam9g45_reset(void) at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST); } +static void at91sam9g45_poweroff(void) +{ + at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); +} + + /* -------------------------------------------------------------------- * AT91SAM9G45 processor initialization * -------------------------------------------------------------------- */ @@ -333,16 +338,10 @@ static void __init at91sam9g45_map_io(void) init_consistent_dma_size(SZ_4M); } -static void __init at91sam9g45_ioremap_registers(void) -{ - at91_ioremap_shdwc(AT91SAM9G45_BASE_SHDWC); - at91sam926x_ioremap_pit(AT91SAM9G45_BASE_PIT); - at91sam9_ioremap_smc(0, AT91SAM9G45_BASE_SMC); -} - static void __init at91sam9g45_initialize(void) { at91_arch_reset = at91sam9g45_reset; + pm_power_off = at91sam9g45_poweroff; at91_extern_irq = (1 << AT91SAM9G45_ID_IRQ0); /* Register GPIO subsystem */ @@ -394,7 +393,6 @@ static unsigned int at91sam9g45_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91sam9g45_soc = { .map_io = at91sam9g45_map_io, .default_irq_priority = at91sam9g45_default_irq_priority, - .ioremap_registers = at91sam9g45_ioremap_registers, .register_clocks = at91sam9g45_register_clocks, .init = at91sam9g45_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91sam9g45_devices.c b/trunk/arch/arm/mach-at91/at91sam9g45_devices.c index b7582dd10dc3..000b5e1da965 100644 --- a/trunk/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/trunk/arch/arm/mach-at91/at91sam9g45_devices.c @@ -44,8 +44,8 @@ static struct at_dma_platform_data atdma_pdata = { static struct resource hdmac_resources[] = { [0] = { - .start = AT91SAM9G45_BASE_DMA, - .end = AT91SAM9G45_BASE_DMA + SZ_512 - 1, + .start = AT91_BASE_SYS + AT91_DMA, + .end = AT91_BASE_SYS + AT91_DMA + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { @@ -120,7 +120,7 @@ void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data) /* Enable VBus control for UHP ports */ for (i = 0; i < data->ports; i++) { - if (gpio_is_valid(data->vbus_pin[i])) + if (data->vbus_pin[i]) at91_set_gpio_output(data->vbus_pin[i], 0); } @@ -181,7 +181,7 @@ void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data) /* Enable VBus control for UHP ports */ for (i = 0; i < data->ports; i++) { - if (gpio_is_valid(data->vbus_pin[i])) + if (data->vbus_pin[i]) at91_set_gpio_output(data->vbus_pin[i], 0); } @@ -197,7 +197,7 @@ void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data) {} * USB HS Device (Gadget) * -------------------------------------------------------------------- */ -#if defined(CONFIG_USB_ATMEL_USBA) || defined(CONFIG_USB_ATMEL_USBA_MODULE) +#if defined(CONFIG_USB_GADGET_ATMEL_USBA) || defined(CONFIG_USB_GADGET_ATMEL_USBA_MODULE) static struct resource usba_udc_resources[] = { [0] = { .start = AT91SAM9G45_UDPHS_FIFO, @@ -263,7 +263,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) usba_udc_data.pdata.num_ep = ARRAY_SIZE(usba_udc_ep); memcpy(usba_udc_data.ep, usba_udc_ep, sizeof(usba_udc_ep)); - if (data && gpio_is_valid(data->vbus_pin)) { + if (data && data->vbus_pin > 0) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); usba_udc_data.pdata.vbus_pin = data->vbus_pin; @@ -284,7 +284,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) {} #if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE) static u64 eth_dmamask = DMA_BIT_MASK(32); -static struct macb_platform_data eth_data; +static struct at91_eth_data eth_data; static struct resource eth_resources[] = { [0] = { @@ -311,12 +311,12 @@ static struct platform_device at91sam9g45_eth_device = { .num_resources = ARRAY_SIZE(eth_resources), }; -void __init at91_add_device_eth(struct macb_platform_data *data) +void __init at91_add_device_eth(struct at91_eth_data *data) { if (!data) return; - if (gpio_is_valid(data->phy_irq_pin)) { + if (data->phy_irq_pin) { at91_set_gpio_input(data->phy_irq_pin, 0); at91_set_deglitch(data->phy_irq_pin, 1); } @@ -348,7 +348,7 @@ void __init at91_add_device_eth(struct macb_platform_data *data) platform_device_register(&at91sam9g45_eth_device); } #else -void __init at91_add_device_eth(struct macb_platform_data *data) {} +void __init at91_add_device_eth(struct at91_eth_data *data) {} #endif @@ -449,11 +449,11 @@ void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data) /* input/irq */ - if (gpio_is_valid(data->slot[0].detect_pin)) { + if (data->slot[0].detect_pin) { at91_set_gpio_input(data->slot[0].detect_pin, 1); at91_set_deglitch(data->slot[0].detect_pin, 1); } - if (gpio_is_valid(data->slot[0].wp_pin)) + if (data->slot[0].wp_pin) at91_set_gpio_input(data->slot[0].wp_pin, 1); if (mmc_id == 0) { /* MCI0 */ @@ -529,8 +529,8 @@ static struct resource nand_resources[] = { .flags = IORESOURCE_MEM, }, [1] = { - .start = AT91SAM9G45_BASE_ECC, - .end = AT91SAM9G45_BASE_ECC + SZ_512 - 1, + .start = AT91_BASE_SYS + AT91_ECC, + .end = AT91_BASE_SYS + AT91_ECC + SZ_512 - 1, .flags = IORESOURCE_MEM, } }; @@ -556,15 +556,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA); /* enable pin */ - if (gpio_is_valid(data->enable_pin)) + if (data->enable_pin) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (gpio_is_valid(data->rdy_pin)) + if (data->rdy_pin) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (gpio_is_valid(data->det_pin)) + if (data->det_pin) at91_set_gpio_input(data->det_pin, 1); nand_data = *data; @@ -859,7 +859,7 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data) at91_set_A_periph(AT91_PIN_PD6, 0); /* AC97RX */ /* reset */ - if (gpio_is_valid(data->reset_pin)) + if (data->reset_pin) at91_set_gpio_output(data->reset_pin, 0); ac97_data = *data; @@ -1009,24 +1009,10 @@ static void __init at91_add_device_tc(void) { } * -------------------------------------------------------------------- */ #if defined(CONFIG_RTC_DRV_AT91RM9200) || defined(CONFIG_RTC_DRV_AT91RM9200_MODULE) -static struct resource rtc_resources[] = { - [0] = { - .start = AT91SAM9G45_BASE_RTC, - .end = AT91SAM9G45_BASE_RTC + SZ_256 - 1, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = AT91_ID_SYS, - .end = AT91_ID_SYS, - .flags = IORESOURCE_IRQ, - }, -}; - static struct platform_device at91sam9g45_rtc_device = { .name = "at91_rtc", .id = -1, - .resource = rtc_resources, - .num_resources = ARRAY_SIZE(rtc_resources), + .num_resources = 0, }; static void __init at91_add_device_rtc(void) @@ -1095,8 +1081,8 @@ void __init at91_add_device_tsadcc(struct at91_tsadcc_data *data) {} static struct resource rtt_resources[] = { { - .start = AT91SAM9G45_BASE_RTT, - .end = AT91SAM9G45_BASE_RTT + SZ_16 - 1, + .start = AT91_BASE_SYS + AT91_RTT, + .end = AT91_BASE_SYS + AT91_RTT + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -1147,19 +1133,10 @@ static void __init at91_add_device_trng(void) {} * -------------------------------------------------------------------- */ #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) -static struct resource wdt_resources[] = { - { - .start = AT91SAM9G45_BASE_WDT, - .end = AT91SAM9G45_BASE_WDT + SZ_16 - 1, - .flags = IORESOURCE_MEM, - } -}; - static struct platform_device at91sam9g45_wdt_device = { .name = "at91_wdt", .id = -1, - .resource = wdt_resources, - .num_resources = ARRAY_SIZE(wdt_resources), + .num_resources = 0, }; static void __init at91_add_device_watchdog(void) @@ -1355,8 +1332,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} #if defined(CONFIG_SERIAL_ATMEL) static struct resource dbgu_resources[] = { [0] = { - .start = AT91SAM9G45_BASE_DBGU, - .end = AT91SAM9G45_BASE_DBGU + SZ_512 - 1, + .start = AT91_VA_BASE_SYS + AT91_DBGU, + .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { @@ -1369,6 +1346,7 @@ static struct resource dbgu_resources[] = { static struct atmel_uart_data dbgu_data = { .use_dma_tx = 0, .use_dma_rx = 0, + .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), }; static u64 dbgu_dmamask = DMA_BIT_MASK(32); diff --git a/trunk/arch/arm/mach-at91/at91sam9rl.c b/trunk/arch/arm/mach-at91/at91sam9rl.c index 96247f68b9d2..a238105d2c11 100644 --- a/trunk/arch/arm/mach-at91/at91sam9rl.c +++ b/trunk/arch/arm/mach-at91/at91sam9rl.c @@ -10,6 +10,7 @@ */ #include +#include #include #include @@ -19,11 +20,11 @@ #include #include #include +#include #include "soc.h" #include "generic.h" #include "clock.h" -#include "sam9_smc.h" /* -------------------------------------------------------------------- * Clocks @@ -183,10 +184,6 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("t2_clk", "atmel_tcb.0", &tc2_clk), CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk), CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), - CLKDEV_CON_ID("pioA", &pioA_clk), - CLKDEV_CON_ID("pioB", &pioB_clk), - CLKDEV_CON_ID("pioC", &pioC_clk), - CLKDEV_CON_ID("pioD", &pioD_clk), }; static struct clk_lookup usart_clocks_lookups[] = { @@ -246,22 +243,32 @@ void __init at91sam9rl_set_console_clock(int id) * GPIO * -------------------------------------------------------------------- */ -static struct at91_gpio_bank at91sam9rl_gpio[] __initdata = { +static struct at91_gpio_bank at91sam9rl_gpio[] = { { .id = AT91SAM9RL_ID_PIOA, - .regbase = AT91SAM9RL_BASE_PIOA, + .offset = AT91_PIOA, + .clock = &pioA_clk, }, { .id = AT91SAM9RL_ID_PIOB, - .regbase = AT91SAM9RL_BASE_PIOB, + .offset = AT91_PIOB, + .clock = &pioB_clk, }, { .id = AT91SAM9RL_ID_PIOC, - .regbase = AT91SAM9RL_BASE_PIOC, + .offset = AT91_PIOC, + .clock = &pioC_clk, }, { .id = AT91SAM9RL_ID_PIOD, - .regbase = AT91SAM9RL_BASE_PIOD, + .offset = AT91_PIOD, + .clock = &pioD_clk, } }; +static void at91sam9rl_poweroff(void) +{ + at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); +} + + /* -------------------------------------------------------------------- * AT91SAM9RL processor initialization * -------------------------------------------------------------------- */ @@ -283,16 +290,10 @@ static void __init at91sam9rl_map_io(void) at91_init_sram(0, AT91SAM9RL_SRAM_BASE, sram_size); } -static void __init at91sam9rl_ioremap_registers(void) -{ - at91_ioremap_shdwc(AT91SAM9RL_BASE_SHDWC); - at91sam926x_ioremap_pit(AT91SAM9RL_BASE_PIT); - at91sam9_ioremap_smc(0, AT91SAM9RL_BASE_SMC); -} - static void __init at91sam9rl_initialize(void) { at91_arch_reset = at91sam9_alt_reset; + pm_power_off = at91sam9rl_poweroff; at91_extern_irq = (1 << AT91SAM9RL_ID_IRQ0); /* Register GPIO subsystem */ @@ -344,7 +345,6 @@ static unsigned int at91sam9rl_default_irq_priority[NR_AIC_IRQS] __initdata = { struct at91_init_soc __initdata at91sam9rl_soc = { .map_io = at91sam9rl_map_io, .default_irq_priority = at91sam9rl_default_irq_priority, - .ioremap_registers = at91sam9rl_ioremap_registers, .register_clocks = at91sam9rl_register_clocks, .init = at91sam9rl_initialize, }; diff --git a/trunk/arch/arm/mach-at91/at91sam9rl_devices.c b/trunk/arch/arm/mach-at91/at91sam9rl_devices.c index 61908dce9784..305a851b5bff 100644 --- a/trunk/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/trunk/arch/arm/mach-at91/at91sam9rl_devices.c @@ -39,8 +39,8 @@ static struct at_dma_platform_data atdma_pdata = { static struct resource hdmac_resources[] = { [0] = { - .start = AT91SAM9RL_BASE_DMA, - .end = AT91SAM9RL_BASE_DMA + SZ_512 - 1, + .start = AT91_BASE_SYS + AT91_DMA, + .end = AT91_BASE_SYS + AT91_DMA + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [2] = { @@ -75,7 +75,7 @@ void __init at91_add_device_hdmac(void) {} * USB HS Device (Gadget) * -------------------------------------------------------------------- */ -#if defined(CONFIG_USB_ATMEL_USBA) || defined(CONFIG_USB_ATMEL_USBA_MODULE) +#if defined(CONFIG_USB_GADGET_ATMEL_USBA) || defined(CONFIG_USB_GADGET_ATMEL_USBA_MODULE) static struct resource usba_udc_resources[] = { [0] = { @@ -147,7 +147,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) usba_udc_data.pdata.num_ep = ARRAY_SIZE(usba_udc_ep); memcpy(usba_udc_data.ep, usba_udc_ep, sizeof(usba_udc_ep)); - if (data && gpio_is_valid(data->vbus_pin)) { + if (data && data->vbus_pin > 0) { at91_set_gpio_input(data->vbus_pin, 0); at91_set_deglitch(data->vbus_pin, 1); usba_udc_data.pdata.vbus_pin = data->vbus_pin; @@ -201,13 +201,13 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) return; /* input/irq */ - if (gpio_is_valid(data->det_pin)) { + if (data->det_pin) { at91_set_gpio_input(data->det_pin, 1); at91_set_deglitch(data->det_pin, 1); } - if (gpio_is_valid(data->wp_pin)) + if (data->wp_pin) at91_set_gpio_input(data->wp_pin, 1); - if (gpio_is_valid(data->vcc_pin)) + if (data->vcc_pin) at91_set_gpio_output(data->vcc_pin, 0); /* CLK */ @@ -248,8 +248,8 @@ static struct resource nand_resources[] = { .flags = IORESOURCE_MEM, }, [1] = { - .start = AT91SAM9RL_BASE_ECC, - .end = AT91SAM9RL_BASE_ECC + SZ_512 - 1, + .start = AT91_BASE_SYS + AT91_ECC, + .end = AT91_BASE_SYS + AT91_ECC + SZ_512 - 1, .flags = IORESOURCE_MEM, } }; @@ -275,15 +275,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); /* enable pin */ - if (gpio_is_valid(data->enable_pin)) + if (data->enable_pin) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ - if (gpio_is_valid(data->rdy_pin)) + if (data->rdy_pin) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ - if (gpio_is_valid(data->det_pin)) + if (data->det_pin) at91_set_gpio_input(data->det_pin, 1); at91_set_A_periph(AT91_PIN_PB4, 0); /* NANDOE */ @@ -483,7 +483,7 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data) at91_set_A_periph(AT91_PIN_PD4, 0); /* AC97RX */ /* reset */ - if (gpio_is_valid(data->reset_pin)) + if (data->reset_pin) at91_set_gpio_output(data->reset_pin, 0); ac97_data = *data; @@ -685,8 +685,8 @@ static void __init at91_add_device_rtc(void) {} static struct resource rtt_resources[] = { { - .start = AT91SAM9RL_BASE_RTT, - .end = AT91SAM9RL_BASE_RTT + SZ_16 - 1, + .start = AT91_BASE_SYS + AT91_RTT, + .end = AT91_BASE_SYS + AT91_RTT + SZ_16 - 1, .flags = IORESOURCE_MEM, } }; @@ -709,19 +709,10 @@ static void __init at91_add_device_rtt(void) * -------------------------------------------------------------------- */ #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) -static struct resource wdt_resources[] = { - { - .start = AT91SAM9RL_BASE_WDT, - .end = AT91SAM9RL_BASE_WDT + SZ_16 - 1, - .flags = IORESOURCE_MEM, - } -}; - static struct platform_device at91sam9rl_wdt_device = { .name = "at91_wdt", .id = -1, - .resource = wdt_resources, - .num_resources = ARRAY_SIZE(wdt_resources), + .num_resources = 0, }; static void __init at91_add_device_watchdog(void) @@ -917,8 +908,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} #if defined(CONFIG_SERIAL_ATMEL) static struct resource dbgu_resources[] = { [0] = { - .start = AT91SAM9RL_BASE_DBGU, - .end = AT91SAM9RL_BASE_DBGU + SZ_512 - 1, + .start = AT91_VA_BASE_SYS + AT91_DBGU, + .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .flags = IORESOURCE_MEM, }, [1] = { @@ -931,6 +922,7 @@ static struct resource dbgu_resources[] = { static struct atmel_uart_data dbgu_data = { .use_dma_tx = 0, .use_dma_rx = 0, /* DBGU not capable of receive DMA */ + .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), }; static u64 dbgu_dmamask = DMA_BIT_MASK(32); diff --git a/trunk/arch/arm/mach-at91/board-1arm.c b/trunk/arch/arm/mach-at91/board-1arm.c index 2628384aaae1..367d5cd5e362 100644 --- a/trunk/arch/arm/mach-at91/board-1arm.c +++ b/trunk/arch/arm/mach-at91/board-1arm.c @@ -63,15 +63,13 @@ static void __init onearm_init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata onearm_eth_data = { +static struct at91_eth_data __initdata onearm_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; static struct at91_usbh_data __initdata onearm_usbh_data = { .ports = 1, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata onearm_udc_data = { diff --git a/trunk/arch/arm/mach-at91/board-afeb-9260v1.c b/trunk/arch/arm/mach-at91/board-afeb-9260v1.c index 3bb40694b02d..4282d96dffa8 100644 --- a/trunk/arch/arm/mach-at91/board-afeb-9260v1.c +++ b/trunk/arch/arm/mach-at91/board-afeb-9260v1.c @@ -75,8 +75,6 @@ static void __init afeb9260_init_early(void) */ static struct at91_usbh_data __initdata afeb9260_usbh_data = { .ports = 1, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -84,7 +82,7 @@ static struct at91_usbh_data __initdata afeb9260_usbh_data = { */ static struct at91_udc_data __initdata afeb9260_udc_data = { .vbus_pin = AT91_PIN_PC5, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; @@ -105,7 +103,7 @@ static struct spi_board_info afeb9260_spi_devices[] = { /* * MACB Ethernet device */ -static struct macb_platform_data __initdata afeb9260_macb_data = { +static struct at91_eth_data __initdata afeb9260_macb_data = { .phy_irq_pin = AT91_PIN_PA9, .is_rmii = 0, }; @@ -140,7 +138,6 @@ static struct atmel_nand_data __initdata afeb9260_nand_data = { .bus_width_16 = 0, .parts = afeb9260_nand_partition, .num_parts = ARRAY_SIZE(afeb9260_nand_partition), - .det_pin = -EINVAL, }; @@ -152,7 +149,6 @@ static struct at91_mmc_data __initdata afeb9260_mmc_data = { .wp_pin = AT91_PIN_PC4, .slot_b = 1, .wire4 = 1, - .vcc_pin = -EINVAL, }; @@ -173,8 +169,6 @@ static struct i2c_board_info __initdata afeb9260_i2c_devices[] = { static struct at91_cf_data afeb9260_cf_data = { .chipselect = 4, .irq_pin = AT91_PIN_PA6, - .det_pin = -EINVAL, - .vcc_pin = -EINVAL, .rst_pin = AT91_PIN_PA7, .flags = AT91_CF_TRUE_IDE, }; diff --git a/trunk/arch/arm/mach-at91/board-cam60.c b/trunk/arch/arm/mach-at91/board-cam60.c index 8510e9e54988..f90cfb32bad2 100644 --- a/trunk/arch/arm/mach-at91/board-cam60.c +++ b/trunk/arch/arm/mach-at91/board-cam60.c @@ -62,8 +62,6 @@ static void __init cam60_init_early(void) */ static struct at91_usbh_data __initdata cam60_usbh_data = { .ports = 1, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; @@ -117,7 +115,7 @@ static struct spi_board_info cam60_spi_devices[] __initdata = { /* * MACB Ethernet device */ -static struct __initdata macb_platform_data cam60_macb_data = { +static struct __initdata at91_eth_data cam60_macb_data = { .phy_irq_pin = AT91_PIN_PB5, .is_rmii = 0, }; @@ -137,7 +135,7 @@ static struct mtd_partition __initdata cam60_nand_partition[] = { static struct atmel_nand_data __initdata cam60_nand_data = { .ale = 21, .cle = 22, - .det_pin = -EINVAL, + // .det_pin = ... not there .rdy_pin = AT91_PIN_PA9, .enable_pin = AT91_PIN_PA7, .parts = cam60_nand_partition, @@ -165,7 +163,7 @@ static struct sam9_smc_config __initdata cam60_nand_smc_config = { static void __init cam60_add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &cam60_nand_smc_config); + sam9_smc_configure(3, &cam60_nand_smc_config); at91_add_device_nand(&cam60_nand_data); } diff --git a/trunk/arch/arm/mach-at91/board-cap9adk.c b/trunk/arch/arm/mach-at91/board-cap9adk.c index ac3de4f7c31d..5dffd3be62d2 100644 --- a/trunk/arch/arm/mach-at91/board-cap9adk.c +++ b/trunk/arch/arm/mach-at91/board-cap9adk.c @@ -70,8 +70,6 @@ static void __init cap9adk_init_early(void) */ static struct at91_usbh_data __initdata cap9adk_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -146,17 +144,16 @@ static struct spi_board_info cap9adk_spi_devices[] = { */ static struct at91_mmc_data __initdata cap9adk_mmc_data = { .wire4 = 1, - .det_pin = -EINVAL, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, +// .det_pin = ... not connected +// .wp_pin = ... not connected +// .vcc_pin = ... not connected }; /* * MACB Ethernet device */ -static struct macb_platform_data __initdata cap9adk_macb_data = { - .phy_irq_pin = -EINVAL, +static struct at91_eth_data __initdata cap9adk_macb_data = { .is_rmii = 1, }; @@ -175,8 +172,8 @@ static struct mtd_partition __initdata cap9adk_nand_partitions[] = { static struct atmel_nand_data __initdata cap9adk_nand_data = { .ale = 21, .cle = 22, - .det_pin = -EINVAL, - .rdy_pin = -EINVAL, +// .det_pin = ... not connected +// .rdy_pin = ... not connected .enable_pin = AT91_PIN_PD15, .parts = cap9adk_nand_partitions, .num_parts = ARRAY_SIZE(cap9adk_nand_partitions), @@ -215,7 +212,7 @@ static void __init cap9adk_add_device_nand(void) cap9adk_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &cap9adk_nand_smc_config); + sam9_smc_configure(3, &cap9adk_nand_smc_config); at91_add_device_nand(&cap9adk_nand_data); } @@ -285,7 +282,7 @@ static __init void cap9adk_add_device_nor(void) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_VDDIOMSEL_3_3V); /* configure chip-select 0 (NOR) */ - sam9_smc_configure(0, 0, &cap9adk_nor_smc_config); + sam9_smc_configure(0, &cap9adk_nor_smc_config); platform_device_register(&cap9adk_nor_flash); } @@ -354,7 +351,7 @@ static struct atmel_lcdfb_info __initdata cap9adk_lcdc_data; * AC97 */ static struct ac97c_platform_data cap9adk_ac97_data = { - .reset_pin = -EINVAL, +// .reset_pin = ... not connected }; diff --git a/trunk/arch/arm/mach-at91/board-carmeva.c b/trunk/arch/arm/mach-at91/board-carmeva.c index 59d9cf997537..774c87fcbd5b 100644 --- a/trunk/arch/arm/mach-at91/board-carmeva.c +++ b/trunk/arch/arm/mach-at91/board-carmeva.c @@ -57,15 +57,13 @@ static void __init carmeva_init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata carmeva_eth_data = { +static struct at91_eth_data __initdata carmeva_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; static struct at91_usbh_data __initdata carmeva_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata carmeva_udc_data = { @@ -77,8 +75,8 @@ static struct at91_udc_data __initdata carmeva_udc_data = { // static struct at91_cf_data __initdata carmeva_cf_data = { // .det_pin = AT91_PIN_PB0, // .rst_pin = AT91_PIN_PC5, - // .irq_pin = -EINVAL, - // .vcc_pin = -EINVAL, + // .irq_pin = ... not connected + // .vcc_pin = ... always powered // }; static struct at91_mmc_data __initdata carmeva_mmc_data = { @@ -86,7 +84,6 @@ static struct at91_mmc_data __initdata carmeva_mmc_data = { .wire4 = 1, .det_pin = AT91_PIN_PB10, .wp_pin = AT91_PIN_PC14, - .vcc_pin = -EINVAL, }; static struct spi_board_info carmeva_spi_devices[] = { diff --git a/trunk/arch/arm/mach-at91/board-cpu9krea.c b/trunk/arch/arm/mach-at91/board-cpu9krea.c index 9ab3d1ea326d..fc885a4ce243 100644 --- a/trunk/arch/arm/mach-at91/board-cpu9krea.c +++ b/trunk/arch/arm/mach-at91/board-cpu9krea.c @@ -86,8 +86,6 @@ static void __init cpu9krea_init_early(void) */ static struct at91_usbh_data __initdata cpu9krea_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -95,14 +93,13 @@ static struct at91_usbh_data __initdata cpu9krea_usbh_data = { */ static struct at91_udc_data __initdata cpu9krea_udc_data = { .vbus_pin = AT91_PIN_PC8, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; /* * MACB Ethernet device */ -static struct macb_platform_data __initdata cpu9krea_macb_data = { - .phy_irq_pin = -EINVAL, +static struct at91_eth_data __initdata cpu9krea_macb_data = { .is_rmii = 1, }; @@ -115,7 +112,6 @@ static struct atmel_nand_data __initdata cpu9krea_nand_data = { .rdy_pin = AT91_PIN_PC13, .enable_pin = AT91_PIN_PC14, .bus_width_16 = 0, - .det_pin = -EINVAL, }; #ifdef CONFIG_MACH_CPU9260 @@ -160,7 +156,7 @@ static struct sam9_smc_config __initdata cpu9krea_nand_smc_config = { static void __init cpu9krea_add_device_nand(void) { - sam9_smc_configure(0, 3, &cpu9krea_nand_smc_config); + sam9_smc_configure(3, &cpu9krea_nand_smc_config); at91_add_device_nand(&cpu9krea_nand_data); } @@ -242,7 +238,7 @@ static __init void cpu9krea_add_device_nor(void) at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_VDDIOMSEL_3_3V); /* configure chip-select 0 (NOR) */ - sam9_smc_configure(0, 0, &cpu9krea_nor_smc_config); + sam9_smc_configure(0, &cpu9krea_nor_smc_config); platform_device_register(&cpu9krea_nor_flash); } @@ -341,8 +337,6 @@ static struct at91_mmc_data __initdata cpu9krea_mmc_data = { .slot_b = 0, .wire4 = 1, .det_pin = AT91_PIN_PA29, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, }; static void __init cpu9krea_board_init(void) diff --git a/trunk/arch/arm/mach-at91/board-cpuat91.c b/trunk/arch/arm/mach-at91/board-cpuat91.c index 368e1427ad99..d35e65b08ccd 100644 --- a/trunk/arch/arm/mach-at91/board-cpuat91.c +++ b/trunk/arch/arm/mach-at91/board-cpuat91.c @@ -82,15 +82,12 @@ static void __init cpuat91_init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata cpuat91_eth_data = { - .phy_irq_pin = -EINVAL, +static struct at91_eth_data __initdata cpuat91_eth_data = { .is_rmii = 1, }; static struct at91_usbh_data __initdata cpuat91_usbh_data = { .ports = 1, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata cpuat91_udc_data = { @@ -101,8 +98,6 @@ static struct at91_udc_data __initdata cpuat91_udc_data = { static struct at91_mmc_data __initdata cpuat91_mmc_data = { .det_pin = AT91_PIN_PC2, .wire4 = 1, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, }; static struct physmap_flash_data cpuat91_flash_data = { diff --git a/trunk/arch/arm/mach-at91/board-csb337.c b/trunk/arch/arm/mach-at91/board-csb337.c index 1a1547b1ce4e..c3936665e645 100644 --- a/trunk/arch/arm/mach-at91/board-csb337.c +++ b/trunk/arch/arm/mach-at91/board-csb337.c @@ -58,20 +58,18 @@ static void __init csb337_init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata csb337_eth_data = { +static struct at91_eth_data __initdata csb337_eth_data = { .phy_irq_pin = AT91_PIN_PC2, .is_rmii = 0, }; static struct at91_usbh_data __initdata csb337_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata csb337_udc_data = { + // this has no VBUS sensing pin .pullup_pin = AT91_PIN_PA24, - .vbus_pin = -EINVAL, }; static struct i2c_board_info __initdata csb337_i2c_devices[] = { @@ -100,7 +98,6 @@ static struct at91_mmc_data __initdata csb337_mmc_data = { .slot_b = 0, .wire4 = 1, .wp_pin = AT91_PIN_PD6, - .vcc_pin = -EINVAL, }; static struct spi_board_info csb337_spi_devices[] = { diff --git a/trunk/arch/arm/mach-at91/board-csb637.c b/trunk/arch/arm/mach-at91/board-csb637.c index f650bf39455d..586100e2acbb 100644 --- a/trunk/arch/arm/mach-at91/board-csb637.c +++ b/trunk/arch/arm/mach-at91/board-csb637.c @@ -52,15 +52,13 @@ static void __init csb637_init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata csb637_eth_data = { +static struct at91_eth_data __initdata csb637_eth_data = { .phy_irq_pin = AT91_PIN_PC0, .is_rmii = 0, }; static struct at91_usbh_data __initdata csb637_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata csb637_udc_data = { diff --git a/trunk/arch/arm/mach-at91/board-dt.c b/trunk/arch/arm/mach-at91/board-dt.c index bb6b434ec0c1..0b7d32778210 100644 --- a/trunk/arch/arm/mach-at91/board-dt.c +++ b/trunk/arch/arm/mach-at91/board-dt.c @@ -50,7 +50,6 @@ static void __init ek_init_early(void) static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, - .det_pin = -EINVAL, .rdy_pin = AT91_PIN_PC8, .enable_pin = AT91_PIN_PC14, }; @@ -83,7 +82,7 @@ static void __init ek_add_device_nand(void) ek_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &ek_nand_smc_config); + sam9_smc_configure(3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } diff --git a/trunk/arch/arm/mach-at91/board-eb9200.c b/trunk/arch/arm/mach-at91/board-eb9200.c index d302ca3eeb64..45db7a3dbef0 100644 --- a/trunk/arch/arm/mach-at91/board-eb9200.c +++ b/trunk/arch/arm/mach-at91/board-eb9200.c @@ -60,15 +60,13 @@ static void __init eb9200_init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata eb9200_eth_data = { +static struct at91_eth_data __initdata eb9200_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; static struct at91_usbh_data __initdata eb9200_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata eb9200_udc_data = { @@ -77,18 +75,15 @@ static struct at91_udc_data __initdata eb9200_udc_data = { }; static struct at91_cf_data __initdata eb9200_cf_data = { - .irq_pin = -EINVAL, .det_pin = AT91_PIN_PB0, - .vcc_pin = -EINVAL, .rst_pin = AT91_PIN_PC5, + // .irq_pin = ... not connected + // .vcc_pin = ... always powered }; static struct at91_mmc_data __initdata eb9200_mmc_data = { .slot_b = 0, .wire4 = 1, - .det_pin = -EINVAL, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, }; static struct i2c_board_info __initdata eb9200_i2c_devices[] = { diff --git a/trunk/arch/arm/mach-at91/board-ecbat91.c b/trunk/arch/arm/mach-at91/board-ecbat91.c index 69966ce4d776..2f9c16d29212 100644 --- a/trunk/arch/arm/mach-at91/board-ecbat91.c +++ b/trunk/arch/arm/mach-at91/board-ecbat91.c @@ -64,23 +64,18 @@ static void __init ecb_at91init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata ecb_at91eth_data = { +static struct at91_eth_data __initdata ecb_at91eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 0, }; static struct at91_usbh_data __initdata ecb_at91usbh_data = { .ports = 1, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_mmc_data __initdata ecb_at91mmc_data = { .slot_b = 0, .wire4 = 1, - .det_pin = -EINVAL, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, }; diff --git a/trunk/arch/arm/mach-at91/board-eco920.c b/trunk/arch/arm/mach-at91/board-eco920.c index 07ef35b0ec2c..8252c722607b 100644 --- a/trunk/arch/arm/mach-at91/board-eco920.c +++ b/trunk/arch/arm/mach-at91/board-eco920.c @@ -47,15 +47,13 @@ static void __init eco920_init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata eco920_eth_data = { +static struct at91_eth_data __initdata eco920_eth_data = { .phy_irq_pin = AT91_PIN_PC2, .is_rmii = 1, }; static struct at91_usbh_data __initdata eco920_usbh_data = { .ports = 1, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata eco920_udc_data = { @@ -66,9 +64,6 @@ static struct at91_udc_data __initdata eco920_udc_data = { static struct at91_mmc_data __initdata eco920_mmc_data = { .slot_b = 0, .wire4 = 0, - .det_pin = -EINVAL, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, }; static struct physmap_flash_data eco920_flash_data = { diff --git a/trunk/arch/arm/mach-at91/board-flexibity.c b/trunk/arch/arm/mach-at91/board-flexibity.c index eec02cd57ced..4c3f65d9c59b 100644 --- a/trunk/arch/arm/mach-at91/board-flexibity.c +++ b/trunk/arch/arm/mach-at91/board-flexibity.c @@ -52,14 +52,12 @@ static void __init flexibity_init_early(void) /* USB Host port */ static struct at91_usbh_data __initdata flexibity_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* USB Device port */ static struct at91_udc_data __initdata flexibity_udc_data = { .vbus_pin = AT91_PIN_PC5, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; /* SPI devices */ @@ -78,7 +76,6 @@ static struct at91_mmc_data __initdata flexibity_mmc_data = { .wire4 = 1, .det_pin = AT91_PIN_PC9, .wp_pin = AT91_PIN_PC4, - .vcc_pin = -EINVAL, }; /* LEDs */ diff --git a/trunk/arch/arm/mach-at91/board-foxg20.c b/trunk/arch/arm/mach-at91/board-foxg20.c index caf017f0f4ee..f27d1a780cfa 100644 --- a/trunk/arch/arm/mach-at91/board-foxg20.c +++ b/trunk/arch/arm/mach-at91/board-foxg20.c @@ -106,8 +106,6 @@ static void __init foxg20_init_early(void) */ static struct at91_usbh_data __initdata foxg20_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -115,7 +113,7 @@ static struct at91_usbh_data __initdata foxg20_usbh_data = { */ static struct at91_udc_data __initdata foxg20_udc_data = { .vbus_pin = AT91_PIN_PC6, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; @@ -137,7 +135,7 @@ static struct spi_board_info foxg20_spi_devices[] = { /* * MACB Ethernet device */ -static struct macb_platform_data __initdata foxg20_macb_data = { +static struct at91_eth_data __initdata foxg20_macb_data = { .phy_irq_pin = AT91_PIN_PA7, .is_rmii = 1, }; @@ -149,9 +147,6 @@ static struct macb_platform_data __initdata foxg20_macb_data = { static struct at91_mmc_data __initdata foxg20_mmc_data = { .slot_b = 1, .wire4 = 1, - .det_pin = -EINVAL, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, }; diff --git a/trunk/arch/arm/mach-at91/board-gsia18s.c b/trunk/arch/arm/mach-at91/board-gsia18s.c index 230e71969fb7..2e95949737e6 100644 --- a/trunk/arch/arm/mach-at91/board-gsia18s.c +++ b/trunk/arch/arm/mach-at91/board-gsia18s.c @@ -80,8 +80,6 @@ static void __init gsia18s_init_early(void) */ static struct at91_usbh_data __initdata usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -89,13 +87,13 @@ static struct at91_usbh_data __initdata usbh_data = { */ static struct at91_udc_data __initdata udc_data = { .vbus_pin = AT91_PIN_PA22, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; /* * MACB Ethernet device */ -static struct macb_platform_data __initdata macb_data = { +static struct at91_eth_data __initdata macb_data = { .phy_irq_pin = AT91_PIN_PA28, .is_rmii = 1, }; @@ -532,7 +530,6 @@ static struct i2c_board_info __initdata gsia18s_i2c_devices[] = { static struct at91_cf_data __initdata gsia18s_cf1_data = { .irq_pin = AT91_PIN_PA27, .det_pin = AT91_PIN_PB30, - .vcc_pin = -EINVAL, .rst_pin = AT91_PIN_PB31, .chipselect = 5, .flags = AT91_CF_TRUE_IDE, diff --git a/trunk/arch/arm/mach-at91/board-kafa.c b/trunk/arch/arm/mach-at91/board-kafa.c index efde1b2327c8..3bae73e63633 100644 --- a/trunk/arch/arm/mach-at91/board-kafa.c +++ b/trunk/arch/arm/mach-at91/board-kafa.c @@ -61,15 +61,13 @@ static void __init kafa_init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata kafa_eth_data = { +static struct at91_eth_data __initdata kafa_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 0, }; static struct at91_usbh_data __initdata kafa_usbh_data = { .ports = 1, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata kafa_udc_data = { diff --git a/trunk/arch/arm/mach-at91/board-kb9202.c b/trunk/arch/arm/mach-at91/board-kb9202.c index d75a4a2ad9c2..e61351ffad50 100644 --- a/trunk/arch/arm/mach-at91/board-kb9202.c +++ b/trunk/arch/arm/mach-at91/board-kb9202.c @@ -69,15 +69,13 @@ static void __init kb9202_init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata kb9202_eth_data = { +static struct at91_eth_data __initdata kb9202_eth_data = { .phy_irq_pin = AT91_PIN_PB29, .is_rmii = 0, }; static struct at91_usbh_data __initdata kb9202_usbh_data = { .ports = 1, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata kb9202_udc_data = { @@ -89,8 +87,6 @@ static struct at91_mmc_data __initdata kb9202_mmc_data = { .det_pin = AT91_PIN_PB2, .slot_b = 0, .wire4 = 1, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, }; static struct mtd_partition __initdata kb9202_nand_partition[] = { @@ -104,7 +100,7 @@ static struct mtd_partition __initdata kb9202_nand_partition[] = { static struct atmel_nand_data __initdata kb9202_nand_data = { .ale = 22, .cle = 21, - .det_pin = -EINVAL, + // .det_pin = ... not there .rdy_pin = AT91_PIN_PC29, .enable_pin = AT91_PIN_PC28, .parts = kb9202_nand_partition, diff --git a/trunk/arch/arm/mach-at91/board-neocore926.c b/trunk/arch/arm/mach-at91/board-neocore926.c index 3f8617c0e04e..ef816c17dc61 100644 --- a/trunk/arch/arm/mach-at91/board-neocore926.c +++ b/trunk/arch/arm/mach-at91/board-neocore926.c @@ -72,7 +72,6 @@ static void __init neocore926_init_early(void) static struct at91_usbh_data __initdata neocore926_usbh_data = { .ports = 2, .vbus_pin = { AT91_PIN_PA24, AT91_PIN_PA21 }, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -80,7 +79,7 @@ static struct at91_usbh_data __initdata neocore926_usbh_data = { */ static struct at91_udc_data __initdata neocore926_udc_data = { .vbus_pin = AT91_PIN_PA25, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; @@ -150,14 +149,13 @@ static struct at91_mmc_data __initdata neocore926_mmc_data = { .wire4 = 1, .det_pin = AT91_PIN_PE18, .wp_pin = AT91_PIN_PE19, - .vcc_pin = -EINVAL, }; /* * MACB Ethernet device */ -static struct macb_platform_data __initdata neocore926_macb_data = { +static struct at91_eth_data __initdata neocore926_macb_data = { .phy_irq_pin = AT91_PIN_PE31, .is_rmii = 1, }; @@ -192,7 +190,6 @@ static struct atmel_nand_data __initdata neocore926_nand_data = { .enable_pin = AT91_PIN_PD15, .parts = neocore926_nand_partition, .num_parts = ARRAY_SIZE(neocore926_nand_partition), - .det_pin = -EINVAL, }; static struct sam9_smc_config __initdata neocore926_nand_smc_config = { @@ -216,7 +213,7 @@ static struct sam9_smc_config __initdata neocore926_nand_smc_config = { static void __init neocore926_add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &neocore926_nand_smc_config); + sam9_smc_configure(3, &neocore926_nand_smc_config); at91_add_device_nand(&neocore926_nand_data); } diff --git a/trunk/arch/arm/mach-at91/board-pcontrol-g20.c b/trunk/arch/arm/mach-at91/board-pcontrol-g20.c index b4a12fc184c8..49e3f699b48e 100644 --- a/trunk/arch/arm/mach-at91/board-pcontrol-g20.c +++ b/trunk/arch/arm/mach-at91/board-pcontrol-g20.c @@ -96,9 +96,9 @@ static struct sam9_smc_config __initdata pcontrol_smc_config[2] = { { static void __init add_device_pcontrol(void) { /* configure chip-select 4 (IO compatible to 8051 X4 ) */ - sam9_smc_configure(0, 4, &pcontrol_smc_config[0]); + sam9_smc_configure(4, &pcontrol_smc_config[0]); /* configure chip-select 7 (FerroRAM 256KiBx16bit MR2A16A D4 ) */ - sam9_smc_configure(0, 7, &pcontrol_smc_config[1]); + sam9_smc_configure(7, &pcontrol_smc_config[1]); } @@ -107,8 +107,6 @@ static void __init add_device_pcontrol(void) */ static struct at91_usbh_data __initdata usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; @@ -124,7 +122,7 @@ static struct at91_udc_data __initdata pcontrol_g20_udc_data = { /* * MACB Ethernet device */ -static struct macb_platform_data __initdata macb_data = { +static struct at91_eth_data __initdata macb_data = { .phy_irq_pin = AT91_PIN_PA28, .is_rmii = 1, }; diff --git a/trunk/arch/arm/mach-at91/board-picotux200.c b/trunk/arch/arm/mach-at91/board-picotux200.c index ab024fa11d5c..0a8fe6a1b7c8 100644 --- a/trunk/arch/arm/mach-at91/board-picotux200.c +++ b/trunk/arch/arm/mach-at91/board-picotux200.c @@ -60,15 +60,13 @@ static void __init picotux200_init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata picotux200_eth_data = { +static struct at91_eth_data __initdata picotux200_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; static struct at91_usbh_data __initdata picotux200_usbh_data = { .ports = 1, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_mmc_data __initdata picotux200_mmc_data = { @@ -76,7 +74,6 @@ static struct at91_mmc_data __initdata picotux200_mmc_data = { .slot_b = 0, .wire4 = 1, .wp_pin = AT91_PIN_PA17, - .vcc_pin = -EINVAL, }; #define PICOTUX200_FLASH_BASE AT91_CHIPSELECT_0 diff --git a/trunk/arch/arm/mach-at91/board-qil-a9260.c b/trunk/arch/arm/mach-at91/board-qil-a9260.c index e029d220cb84..07421bdb88ea 100644 --- a/trunk/arch/arm/mach-at91/board-qil-a9260.c +++ b/trunk/arch/arm/mach-at91/board-qil-a9260.c @@ -77,8 +77,6 @@ static void __init ek_init_early(void) */ static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -86,7 +84,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PC5, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; /* @@ -106,7 +104,7 @@ static struct spi_board_info ek_spi_devices[] = { /* * MACB Ethernet device */ -static struct macb_platform_data __initdata ek_macb_data = { +static struct at91_eth_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PA31, .is_rmii = 1, }; @@ -135,7 +133,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, - .det_pin = -EINVAL, +// .det_pin = ... not connected .rdy_pin = AT91_PIN_PC13, .enable_pin = AT91_PIN_PC14, .parts = ek_nand_partition, @@ -163,7 +161,7 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = { static void __init ek_add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &ek_nand_smc_config); + sam9_smc_configure(3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -174,9 +172,9 @@ static void __init ek_add_device_nand(void) static struct at91_mmc_data __initdata ek_mmc_data = { .slot_b = 0, .wire4 = 1, - .det_pin = -EINVAL, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, +// .det_pin = ... not connected +// .wp_pin = ... not connected +// .vcc_pin = ... not connected }; /* @@ -253,7 +251,7 @@ static void __init ek_board_init(void) /* LEDs */ at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds)); /* shutdown controller, wakeup button (5 msec low) */ - at91_shdwc_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW + at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW | AT91_SHDW_RTTWKEN); } diff --git a/trunk/arch/arm/mach-at91/board-rm9200dk.c b/trunk/arch/arm/mach-at91/board-rm9200dk.c index 782f37946af5..80a8c9c6e922 100644 --- a/trunk/arch/arm/mach-at91/board-rm9200dk.c +++ b/trunk/arch/arm/mach-at91/board-rm9200dk.c @@ -65,15 +65,13 @@ static void __init dk_init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata dk_eth_data = { +static struct at91_eth_data __initdata dk_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; static struct at91_usbh_data __initdata dk_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata dk_udc_data = { @@ -82,19 +80,16 @@ static struct at91_udc_data __initdata dk_udc_data = { }; static struct at91_cf_data __initdata dk_cf_data = { - .irq_pin = -EINVAL, .det_pin = AT91_PIN_PB0, - .vcc_pin = -EINVAL, .rst_pin = AT91_PIN_PC5, + // .irq_pin = ... not connected + // .vcc_pin = ... always powered }; #ifndef CONFIG_MTD_AT91_DATAFLASH_CARD static struct at91_mmc_data __initdata dk_mmc_data = { .slot_b = 0, .wire4 = 1, - .det_pin = -EINVAL, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, }; #endif @@ -148,7 +143,7 @@ static struct atmel_nand_data __initdata dk_nand_data = { .cle = 21, .det_pin = AT91_PIN_PB1, .rdy_pin = AT91_PIN_PC2, - .enable_pin = -EINVAL, + // .enable_pin = ... not there .parts = dk_nand_partition, .num_parts = ARRAY_SIZE(dk_nand_partition), }; diff --git a/trunk/arch/arm/mach-at91/board-rm9200ek.c b/trunk/arch/arm/mach-at91/board-rm9200ek.c index ef7c12a92246..99fd7f8aee0e 100644 --- a/trunk/arch/arm/mach-at91/board-rm9200ek.c +++ b/trunk/arch/arm/mach-at91/board-rm9200ek.c @@ -65,15 +65,13 @@ static void __init ek_init_early(void) at91_set_serial_console(0); } -static struct macb_platform_data __initdata ek_eth_data = { +static struct at91_eth_data __initdata ek_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata ek_udc_data = { @@ -87,7 +85,6 @@ static struct at91_mmc_data __initdata ek_mmc_data = { .slot_b = 0, .wire4 = 1, .wp_pin = AT91_PIN_PA17, - .vcc_pin = -EINVAL, }; #endif diff --git a/trunk/arch/arm/mach-at91/board-rsi-ews.c b/trunk/arch/arm/mach-at91/board-rsi-ews.c index af0750fafa29..e927df0175df 100644 --- a/trunk/arch/arm/mach-at91/board-rsi-ews.c +++ b/trunk/arch/arm/mach-at91/board-rsi-ews.c @@ -60,7 +60,7 @@ static void __init rsi_ews_init_early(void) /* * Ethernet */ -static struct macb_platform_data rsi_ews_eth_data __initdata = { +static struct at91_eth_data rsi_ews_eth_data __initdata = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, }; @@ -70,8 +70,6 @@ static struct macb_platform_data rsi_ews_eth_data __initdata = { */ static struct at91_usbh_data rsi_ews_usbh_data __initdata = { .ports = 1, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* diff --git a/trunk/arch/arm/mach-at91/board-sam9-l9260.c b/trunk/arch/arm/mach-at91/board-sam9-l9260.c index 84bce587735f..072d53af98d9 100644 --- a/trunk/arch/arm/mach-at91/board-sam9-l9260.c +++ b/trunk/arch/arm/mach-at91/board-sam9-l9260.c @@ -72,8 +72,6 @@ static void __init ek_init_early(void) */ static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -81,7 +79,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PC5, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; @@ -111,7 +109,7 @@ static struct spi_board_info ek_spi_devices[] = { /* * MACB Ethernet device */ -static struct macb_platform_data __initdata ek_macb_data = { +static struct at91_eth_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PA7, .is_rmii = 0, }; @@ -136,7 +134,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, - .det_pin = -EINVAL, +// .det_pin = ... not connected .rdy_pin = AT91_PIN_PC13, .enable_pin = AT91_PIN_PC14, .parts = ek_nand_partition, @@ -164,7 +162,7 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = { static void __init ek_add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &ek_nand_smc_config); + sam9_smc_configure(3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -178,7 +176,7 @@ static struct at91_mmc_data __initdata ek_mmc_data = { .wire4 = 1, .det_pin = AT91_PIN_PC8, .wp_pin = AT91_PIN_PC4, - .vcc_pin = -EINVAL, +// .vcc_pin = ... not connected }; static void __init ek_board_init(void) diff --git a/trunk/arch/arm/mach-at91/board-sam9260ek.c b/trunk/arch/arm/mach-at91/board-sam9260ek.c index be8233bcabdc..4f10181a0782 100644 --- a/trunk/arch/arm/mach-at91/board-sam9260ek.c +++ b/trunk/arch/arm/mach-at91/board-sam9260ek.c @@ -75,8 +75,6 @@ static void __init ek_init_early(void) */ static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -84,7 +82,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PC5, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; @@ -153,7 +151,7 @@ static struct spi_board_info ek_spi_devices[] = { /* * MACB Ethernet device */ -static struct macb_platform_data __initdata ek_macb_data = { +static struct at91_eth_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PA7, .is_rmii = 1, }; @@ -178,7 +176,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, - .det_pin = -EINVAL, +// .det_pin = ... not connected .rdy_pin = AT91_PIN_PC13, .enable_pin = AT91_PIN_PC14, .parts = ek_nand_partition, @@ -213,7 +211,7 @@ static void __init ek_add_device_nand(void) ek_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &ek_nand_smc_config); + sam9_smc_configure(3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -225,9 +223,9 @@ static void __init ek_add_device_nand(void) static struct at91_mmc_data __initdata ek_mmc_data = { .slot_b = 1, .wire4 = 1, - .det_pin = -EINVAL, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, +// .det_pin = ... not connected +// .wp_pin = ... not connected +// .vcc_pin = ... not connected }; diff --git a/trunk/arch/arm/mach-at91/board-sam9261ek.c b/trunk/arch/arm/mach-at91/board-sam9261ek.c index 40895072a1a7..b005b738e8ff 100644 --- a/trunk/arch/arm/mach-at91/board-sam9261ek.c +++ b/trunk/arch/arm/mach-at91/board-sam9261ek.c @@ -131,7 +131,7 @@ static struct sam9_smc_config __initdata dm9000_smc_config = { static void __init ek_add_device_dm9000(void) { /* Configure chip-select 2 (DM9000) */ - sam9_smc_configure(0, 2, &dm9000_smc_config); + sam9_smc_configure(2, &dm9000_smc_config); /* Configure Reset signal as output */ at91_set_gpio_output(AT91_PIN_PC10, 0); @@ -151,8 +151,6 @@ static void __init ek_add_device_dm9000(void) {} */ static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; @@ -161,7 +159,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PB29, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; @@ -184,7 +182,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 22, .cle = 21, - .det_pin = -EINVAL, +// .det_pin = ... not connected .rdy_pin = AT91_PIN_PC15, .enable_pin = AT91_PIN_PC14, .parts = ek_nand_partition, @@ -219,7 +217,7 @@ static void __init ek_add_device_nand(void) ek_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &ek_nand_smc_config); + sam9_smc_configure(3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -347,9 +345,6 @@ static struct spi_board_info ek_spi_devices[] = { */ static struct at91_mmc_data __initdata ek_mmc_data = { .wire4 = 1, - .det_pin = -EINVAL, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, }; #endif /* CONFIG_SPI_ATMEL_* */ diff --git a/trunk/arch/arm/mach-at91/board-sam9263ek.c b/trunk/arch/arm/mach-at91/board-sam9263ek.c index 29f66052fe63..bccdcf23caa1 100644 --- a/trunk/arch/arm/mach-at91/board-sam9263ek.c +++ b/trunk/arch/arm/mach-at91/board-sam9263ek.c @@ -74,7 +74,6 @@ static void __init ek_init_early(void) static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, .vbus_pin = { AT91_PIN_PA24, AT91_PIN_PA21 }, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -82,7 +81,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PA25, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; @@ -152,14 +151,14 @@ static struct at91_mmc_data __initdata ek_mmc_data = { .wire4 = 1, .det_pin = AT91_PIN_PE18, .wp_pin = AT91_PIN_PE19, - .vcc_pin = -EINVAL, +// .vcc_pin = ... not connected }; /* * MACB Ethernet device */ -static struct macb_platform_data __initdata ek_macb_data = { +static struct at91_eth_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PE31, .is_rmii = 1, }; @@ -184,7 +183,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, - .det_pin = -EINVAL, +// .det_pin = ... not connected .rdy_pin = AT91_PIN_PA22, .enable_pin = AT91_PIN_PD15, .parts = ek_nand_partition, @@ -219,7 +218,7 @@ static void __init ek_add_device_nand(void) ek_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &ek_nand_smc_config); + sam9_smc_configure(3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -354,7 +353,6 @@ static void __init ek_add_device_buttons(void) {} * reset_pin is not connected: NRST */ static struct ac97c_platform_data ek_ac97_data = { - .reset_pin = -EINVAL, }; diff --git a/trunk/arch/arm/mach-at91/board-sam9g20ek.c b/trunk/arch/arm/mach-at91/board-sam9g20ek.c index 843d6286c6f4..64fc75c9d0ac 100644 --- a/trunk/arch/arm/mach-at91/board-sam9g20ek.c +++ b/trunk/arch/arm/mach-at91/board-sam9g20ek.c @@ -86,8 +86,6 @@ static void __init ek_init_early(void) */ static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -95,7 +93,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PC5, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; @@ -125,7 +123,7 @@ static struct spi_board_info ek_spi_devices[] = { /* * MACB Ethernet device */ -static struct macb_platform_data __initdata ek_macb_data = { +static struct at91_eth_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PA7, .is_rmii = 1, }; @@ -165,7 +163,6 @@ static struct atmel_nand_data __initdata ek_nand_data = { .cle = 22, .rdy_pin = AT91_PIN_PC13, .enable_pin = AT91_PIN_PC14, - .det_pin = -EINVAL, .parts = ek_nand_partition, .num_parts = ARRAY_SIZE(ek_nand_partition), }; @@ -198,7 +195,7 @@ static void __init ek_add_device_nand(void) ek_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &ek_nand_smc_config); + sam9_smc_configure(3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -213,7 +210,6 @@ static struct mci_platform_data __initdata ek_mmc_data = { .slot[1] = { .bus_width = 4, .detect_pin = AT91_PIN_PC9, - .wp_pin = -EINVAL, }, }; @@ -222,8 +218,6 @@ static struct at91_mmc_data __initdata ek_mmc_data = { .slot_b = 1, /* Only one slot so use slot B */ .wire4 = 1, .det_pin = AT91_PIN_PC9, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, }; #endif @@ -233,7 +227,6 @@ static void __init ek_add_device_mmc(void) if (ek_have_2mmc()) { ek_mmc_data.slot[0].bus_width = 4; ek_mmc_data.slot[0].detect_pin = AT91_PIN_PC2; - ek_mmc_data.slot[0].wp_pin = -1; } at91_add_device_mci(0, &ek_mmc_data); #else diff --git a/trunk/arch/arm/mach-at91/board-sam9m10g45ek.c b/trunk/arch/arm/mach-at91/board-sam9m10g45ek.c index ea0d1b9c2b7b..92de9127923a 100644 --- a/trunk/arch/arm/mach-at91/board-sam9m10g45ek.c +++ b/trunk/arch/arm/mach-at91/board-sam9m10g45ek.c @@ -69,7 +69,6 @@ static void __init ek_init_early(void) static struct at91_usbh_data __initdata ek_usbh_hs_data = { .ports = 2, .vbus_pin = {AT91_PIN_PD1, AT91_PIN_PD3}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; @@ -101,7 +100,6 @@ static struct mci_platform_data __initdata mci0_data = { .slot[0] = { .bus_width = 4, .detect_pin = AT91_PIN_PD10, - .wp_pin = -EINVAL, }, }; @@ -117,7 +115,7 @@ static struct mci_platform_data __initdata mci1_data = { /* * MACB Ethernet device */ -static struct macb_platform_data __initdata ek_macb_data = { +static struct at91_eth_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PD5, .is_rmii = 1, }; @@ -145,7 +143,6 @@ static struct atmel_nand_data __initdata ek_nand_data = { .cle = 22, .rdy_pin = AT91_PIN_PC8, .enable_pin = AT91_PIN_PC14, - .det_pin = -EINVAL, .parts = ek_nand_partition, .num_parts = ARRAY_SIZE(ek_nand_partition), }; @@ -178,7 +175,7 @@ static void __init ek_add_device_nand(void) ek_nand_smc_config.mode |= AT91_SMC_DBW_8; /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &ek_nand_smc_config); + sam9_smc_configure(3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -333,7 +330,6 @@ static void __init ek_add_device_buttons(void) {} * reset_pin is not connected: NRST */ static struct ac97c_platform_data ek_ac97_data = { - .reset_pin = -EINVAL, }; diff --git a/trunk/arch/arm/mach-at91/board-sam9rlek.c b/trunk/arch/arm/mach-at91/board-sam9rlek.c index c1366d0032bf..b2b748239f36 100644 --- a/trunk/arch/arm/mach-at91/board-sam9rlek.c +++ b/trunk/arch/arm/mach-at91/board-sam9rlek.c @@ -67,8 +67,8 @@ static struct usba_platform_data __initdata ek_usba_udc_data = { static struct at91_mmc_data __initdata ek_mmc_data = { .wire4 = 1, .det_pin = AT91_PIN_PA15, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, +// .wp_pin = ... not connected +// .vcc_pin = ... not connected }; @@ -91,7 +91,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, - .det_pin = -EINVAL, +// .det_pin = ... not connected .rdy_pin = AT91_PIN_PD17, .enable_pin = AT91_PIN_PB6, .parts = ek_nand_partition, @@ -119,7 +119,7 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = { static void __init ek_add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &ek_nand_smc_config); + sam9_smc_configure(3, &ek_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -204,7 +204,6 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data; * reset_pin is not connected: NRST */ static struct ac97c_platform_data ek_ac97_data = { - .reset_pin = -EINVAL, }; diff --git a/trunk/arch/arm/mach-at91/board-snapper9260.c b/trunk/arch/arm/mach-at91/board-snapper9260.c index 4770db08e5a6..0df01c6e2d0c 100644 --- a/trunk/arch/arm/mach-at91/board-snapper9260.c +++ b/trunk/arch/arm/mach-at91/board-snapper9260.c @@ -57,19 +57,15 @@ static void __init snapper9260_init_early(void) static struct at91_usbh_data __initdata snapper9260_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; static struct at91_udc_data __initdata snapper9260_udc_data = { .vbus_pin = SNAPPER9260_IO_EXP_GPIO(5), .vbus_active_low = 1, .vbus_polled = 1, - .pullup_pin = -EINVAL, }; -static struct macb_platform_data snapper9260_macb_data = { - .phy_irq_pin = -EINVAL, +static struct at91_eth_data snapper9260_macb_data = { .is_rmii = 1, }; @@ -108,8 +104,6 @@ static struct atmel_nand_data __initdata snapper9260_nand_data = { .parts = snapper9260_nand_partitions, .num_parts = ARRAY_SIZE(snapper9260_nand_partitions), .bus_width_16 = 0, - .enable_pin = -EINVAL, - .det_pin = -EINVAL, }; static struct sam9_smc_config __initdata snapper9260_nand_smc_config = { @@ -155,7 +149,7 @@ static struct i2c_board_info __initdata snapper9260_i2c_devices[] = { static void __init snapper9260_add_device_nand(void) { at91_set_A_periph(AT91_PIN_PC14, 0); - sam9_smc_configure(0, 3, &snapper9260_nand_smc_config); + sam9_smc_configure(3, &snapper9260_nand_smc_config); at91_add_device_nand(&snapper9260_nand_data); } diff --git a/trunk/arch/arm/mach-at91/board-stamp9g20.c b/trunk/arch/arm/mach-at91/board-stamp9g20.c index e8d3d5b88244..936e5fd7f406 100644 --- a/trunk/arch/arm/mach-at91/board-stamp9g20.c +++ b/trunk/arch/arm/mach-at91/board-stamp9g20.c @@ -85,7 +85,6 @@ static struct atmel_nand_data __initdata nand_data = { .rdy_pin = AT91_PIN_PC13, .enable_pin = AT91_PIN_PC14, .bus_width_16 = 0, - .det_pin = -EINVAL, }; static struct sam9_smc_config __initdata nand_smc_config = { @@ -109,7 +108,7 @@ static struct sam9_smc_config __initdata nand_smc_config = { static void __init add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &nand_smc_config); + sam9_smc_configure(3, &nand_smc_config); at91_add_device_nand(&nand_data); } @@ -123,17 +122,12 @@ static void __init add_device_nand(void) static struct mci_platform_data __initdata mmc_data = { .slot[0] = { .bus_width = 4, - .detect_pin = -1; - .wp_pin = -1; }, }; #else static struct at91_mmc_data __initdata mmc_data = { .slot_b = 0, .wire4 = 1, - .det_pin = -EINVAL, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, }; #endif @@ -143,8 +137,6 @@ static struct at91_mmc_data __initdata mmc_data = { */ static struct at91_usbh_data __initdata usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; @@ -153,19 +145,19 @@ static struct at91_usbh_data __initdata usbh_data = { */ static struct at91_udc_data __initdata portuxg20_udc_data = { .vbus_pin = AT91_PIN_PC7, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; static struct at91_udc_data __initdata stamp9g20evb_udc_data = { .vbus_pin = AT91_PIN_PA22, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; /* * MACB Ethernet device */ -static struct macb_platform_data __initdata macb_data = { +static struct at91_eth_data __initdata macb_data = { .phy_irq_pin = AT91_PIN_PA28, .is_rmii = 1, }; diff --git a/trunk/arch/arm/mach-at91/board-usb-a926x.c b/trunk/arch/arm/mach-at91/board-usb-a926x.c index 26c36fc2d1e5..0a20bab21f99 100644 --- a/trunk/arch/arm/mach-at91/board-usb-a926x.c +++ b/trunk/arch/arm/mach-at91/board-usb-a926x.c @@ -66,8 +66,6 @@ static void __init ek_init_early(void) */ static struct at91_usbh_data __initdata ek_usbh_data = { .ports = 2, - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -75,7 +73,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = { */ static struct at91_udc_data __initdata ek_udc_data = { .vbus_pin = AT91_PIN_PB11, - .pullup_pin = -EINVAL, /* pull-up driven by UDC */ + .pullup_pin = 0, /* pull-up driven by UDC */ }; static void __init ek_add_device_udc(void) @@ -148,7 +146,7 @@ static void __init ek_add_device_spi(void) /* * MACB Ethernet device */ -static struct macb_platform_data __initdata ek_macb_data = { +static struct at91_eth_data __initdata ek_macb_data = { .phy_irq_pin = AT91_PIN_PE31, .is_rmii = 1, }; @@ -195,7 +193,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { static struct atmel_nand_data __initdata ek_nand_data = { .ale = 21, .cle = 22, - .det_pin = -EINVAL, +// .det_pin = ... not connected .rdy_pin = AT91_PIN_PA22, .enable_pin = AT91_PIN_PD15, .parts = ek_nand_partition, @@ -247,9 +245,9 @@ static void __init ek_add_device_nand(void) /* configure chip-select 3 (NAND) */ if (machine_is_usb_a9g20()) - sam9_smc_configure(0, 3, &usb_a9g20_nand_smc_config); + sam9_smc_configure(3, &usb_a9g20_nand_smc_config); else - sam9_smc_configure(0, 3, &usb_a9260_nand_smc_config); + sam9_smc_configure(3, &usb_a9260_nand_smc_config); at91_add_device_nand(&ek_nand_data); } @@ -346,7 +344,7 @@ static void __init ek_board_init(void) /* I2C */ at91_add_device_i2c(NULL, 0); /* shutdown controller, wakeup button (5 msec low) */ - at91_shdwc_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) + at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW | AT91_SHDW_RTTWKEN); } diff --git a/trunk/arch/arm/mach-at91/board-yl-9200.c b/trunk/arch/arm/mach-at91/board-yl-9200.c index bbd553e1cd93..649b052231f5 100644 --- a/trunk/arch/arm/mach-at91/board-yl-9200.c +++ b/trunk/arch/arm/mach-at91/board-yl-9200.c @@ -110,7 +110,7 @@ static struct gpio_led yl9200_leds[] = { /* * Ethernet */ -static struct macb_platform_data __initdata yl9200_eth_data = { +static struct at91_eth_data __initdata yl9200_eth_data = { .phy_irq_pin = AT91_PIN_PB28, .is_rmii = 1, }; @@ -120,8 +120,6 @@ static struct macb_platform_data __initdata yl9200_eth_data = { */ static struct at91_usbh_data __initdata yl9200_usbh_data = { .ports = 1, /* PQFP version of AT91RM9200 */ - .vbus_pin = {-EINVAL, -EINVAL}, - .overcurrent_pin= {-EINVAL, -EINVAL}, }; /* @@ -139,9 +137,8 @@ static struct at91_udc_data __initdata yl9200_udc_data = { */ static struct at91_mmc_data __initdata yl9200_mmc_data = { .det_pin = AT91_PIN_PB9, + // .wp_pin = ... not connected .wire4 = 1, - .wp_pin = -EINVAL, - .vcc_pin = -EINVAL, }; /* @@ -178,7 +175,7 @@ static struct mtd_partition __initdata yl9200_nand_partition[] = { static struct atmel_nand_data __initdata yl9200_nand_data = { .ale = 6, .cle = 7, - .det_pin = -EINVAL, + // .det_pin = ... not connected .rdy_pin = AT91_PIN_PC14, /* R/!B (Sheet10) */ .enable_pin = AT91_PIN_PC15, /* !CE (Sheet10) */ .parts = yl9200_nand_partition, @@ -387,7 +384,7 @@ static struct spi_board_info yl9200_spi_devices[] = { #include