From ca89a747520abbb19d74243b5ccc6eb7b7796a5c Mon Sep 17 00:00:00 2001 From: "Govindraj.R" Date: Wed, 9 May 2012 14:19:13 -0700 Subject: [PATCH] --- yaml --- r: 303447 b: refs/heads/master c: 5d4e9971c8adbb87bbe7a32a1864e0f1c91ee380 h: refs/heads/master i: 303445: 04718e1b3eaea2773d1122d5e615f60f8b2b3fbe 303443: a99591c9ada25339798cfba3a0bdadaef78ad8ac 303439: 9e375c2b06b2f1250c3507bb2ce0d32dbbf573e3 v: v3 --- [refs] | 2 +- trunk/Documentation/ABI/testing/sysfs-bus-hsi | 19 ++ .../Documentation/power/freezing-of-tasks.txt | 37 +- trunk/Documentation/security/keys.txt | 14 +- trunk/MAINTAINERS | 5 +- trunk/Makefile | 2 +- trunk/arch/arm/boot/dts/msm8660-surf.dts | 4 +- trunk/arch/arm/configs/imx_v4_v5_defconfig | 4 +- trunk/arch/arm/configs/mini2440_defconfig | 2 + trunk/arch/arm/configs/omap2plus_defconfig | 2 + trunk/arch/arm/kernel/smp_twd.c | 6 +- trunk/arch/arm/mach-exynos/clock-exynos4.c | 24 +- trunk/arch/arm/mach-exynos/clock-exynos5.c | 24 +- trunk/arch/arm/mach-exynos/common.c | 14 +- trunk/arch/arm/mach-exynos/dev-dwmci.c | 13 +- trunk/arch/arm/mach-exynos/mach-nuri.c | 1 + .../arm/mach-exynos/mach-universal_c210.c | 1 + trunk/arch/arm/mach-imx/Kconfig | 35 +- trunk/arch/arm/mach-imx/Makefile | 4 +- .../arm/mach-imx/eukrea_mbimx51-baseboard.c | 206 +++++++++++ ...baseboard.c => eukrea_mbimxsd-baseboard.c} | 120 +------ .../arm/mach-imx/eukrea_mbimxsd25-baseboard.c | 51 +-- .../arm/mach-imx/eukrea_mbimxsd35-baseboard.c | 42 --- trunk/arch/arm/mach-imx/mach-cpuimx51.c | 301 ++++++++++++++++ trunk/arch/arm/mach-imx/mach-cpuimx51sd.c | 50 +-- .../arch/arm/mach-imx/mach-eukrea_cpuimx25.c | 2 - .../arm/mach-imx/mach-imx27_visstrim_m10.c | 55 --- trunk/arch/arm/mach-imx/mach-mx35_3ds.c | 193 ----------- trunk/arch/arm/mach-mmp/Kconfig | 7 - trunk/arch/arm/mach-mmp/aspenite.c | 20 -- trunk/arch/arm/mach-mmp/devices.c | 282 --------------- .../arch/arm/mach-mmp/include/mach/devices.h | 3 - trunk/arch/arm/mach-mmp/include/mach/pxa168.h | 8 +- trunk/arch/arm/mach-mmp/include/mach/pxa910.h | 3 - .../arch/arm/mach-mmp/include/mach/regs-usb.h | 253 -------------- trunk/arch/arm/mach-mmp/pxa168.c | 20 +- trunk/arch/arm/mach-mmp/pxa910.c | 2 +- trunk/arch/arm/mach-mmp/ttc_dkb.c | 37 -- trunk/arch/arm/mach-msm/board-msm8x60.c | 25 +- trunk/arch/arm/mach-omap2/twl-common.c | 147 ++++++++ trunk/arch/arm/mach-omap2/vc3xxx_data.c | 1 + trunk/arch/arm/mach-omap2/voltage.c | 21 +- trunk/arch/arm/mach-pxa/hx4700.c | 10 +- .../arm/mach-pxa/include/mach/mfp-pxa2xx.h | 7 + .../arch/arm/mach-pxa/include/mach/mioa701.h | 3 - .../mach-pxa/include/mach/pcm990_baseboard.h | 68 +++- trunk/arch/arm/mach-pxa/mfp-pxa2xx.c | 21 +- trunk/arch/arm/mach-pxa/mioa701.c | 2 - trunk/arch/arm/mach-pxa/pcm990-baseboard.c | 83 ++--- trunk/arch/arm/mach-pxa/pxa27x.c | 6 +- trunk/arch/arm/mach-s3c24xx/Kconfig | 8 +- trunk/arch/arm/mach-s5pv210/mach-goni.c | 2 + trunk/arch/arm/mach-sa1100/generic.c | 2 +- trunk/arch/arm/mach-u300/core.c | 6 +- trunk/arch/arm/mach-u300/i2c.c | 9 +- trunk/arch/arm/mach-u300/include/mach/irqs.h | 150 ++++---- trunk/arch/arm/mach-ux500/mbox-db5500.c | 2 +- .../arm/plat-samsung/include/plat/sdhci.h | 28 ++ trunk/arch/blackfin/mach-bf538/boards/ezkit.c | 53 ++- trunk/arch/hexagon/kernel/dma.c | 1 + trunk/arch/hexagon/kernel/process.c | 6 +- trunk/arch/hexagon/kernel/ptrace.c | 1 + trunk/arch/hexagon/kernel/smp.c | 8 +- trunk/arch/hexagon/kernel/time.c | 1 + trunk/arch/hexagon/kernel/vdso.c | 1 + .../boot/dts/fsl/pq3-mpic-message-B.dtsi | 43 +++ trunk/arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi | 10 + trunk/arch/powerpc/include/asm/mpic.h | 18 - trunk/arch/powerpc/include/asm/mpic_msgr.h | 1 + trunk/arch/powerpc/include/asm/reg_booke.h | 5 - trunk/arch/powerpc/kernel/setup_32.c | 3 + trunk/arch/powerpc/platforms/85xx/common.c | 6 + .../arch/powerpc/platforms/85xx/mpc85xx_mds.c | 11 +- trunk/arch/powerpc/platforms/85xx/p1022_ds.c | 13 +- .../arch/powerpc/platforms/powermac/low_i2c.c | 9 + trunk/arch/powerpc/platforms/pseries/eeh.c | 2 +- trunk/arch/powerpc/sysdev/mpic.c | 54 +-- trunk/arch/powerpc/sysdev/mpic_msgr.c | 12 +- trunk/arch/powerpc/sysdev/scom.c | 1 + trunk/arch/sh/include/asm/atomic.h | 2 +- trunk/arch/sh/mm/fault_32.c | 2 +- trunk/arch/tile/include/asm/pci.h | 4 +- trunk/arch/tile/kernel/pci.c | 4 +- trunk/arch/x86/boot/compressed/head_32.S | 14 +- trunk/arch/x86/boot/compressed/head_64.S | 22 +- trunk/arch/x86/boot/tools/build.c | 15 +- trunk/arch/x86/include/asm/posix_types.h | 6 +- trunk/arch/x86/include/asm/sigcontext.h | 2 +- trunk/arch/x86/include/asm/siginfo.h | 8 +- trunk/arch/x86/include/asm/unistd.h | 6 +- trunk/arch/x86/include/asm/x86_init.h | 1 - trunk/arch/x86/kernel/acpi/sleep.c | 4 + trunk/arch/x86/kernel/acpi/sleep.h | 4 + trunk/arch/x86/kernel/acpi/wakeup_32.S | 4 +- trunk/arch/x86/kernel/acpi/wakeup_64.S | 4 +- trunk/arch/x86/kernel/apic/apic.c | 34 +- trunk/arch/x86/kernel/apic/apic_numachip.c | 7 +- trunk/arch/x86/kernel/apic/x2apic_phys.c | 6 + trunk/arch/x86/kernel/cpu/amd.c | 11 +- trunk/arch/x86/kernel/cpu/common.c | 9 - trunk/arch/x86/kernel/cpu/intel_cacheinfo.c | 8 +- trunk/arch/x86/kernel/i387.c | 1 + trunk/arch/x86/kernel/microcode_amd.c | 12 +- trunk/arch/x86/kernel/microcode_core.c | 10 +- trunk/arch/x86/kernel/x86_init.c | 1 - trunk/arch/x86/platform/mrst/mrst.c | 4 +- trunk/arch/x86/xen/enlighten.c | 4 +- trunk/arch/x86/xen/smp.c | 15 + trunk/arch/x86/xen/xen-asm.S | 2 +- trunk/arch/xtensa/include/asm/hardirq.h | 3 - trunk/arch/xtensa/include/asm/io.h | 1 + trunk/arch/xtensa/kernel/signal.c | 1 + trunk/drivers/acpi/sleep.c | 52 +-- trunk/drivers/bcma/sprom.c | 7 +- trunk/drivers/dma/amba-pl08x.c | 1 + trunk/drivers/dma/at_hdmac.c | 4 - trunk/drivers/dma/imx-dma.c | 9 +- trunk/drivers/dma/mxs-dma.c | 10 +- trunk/drivers/dma/pl330.c | 25 +- trunk/drivers/dma/ste_dma40.c | 323 +++++++++++------- trunk/drivers/dma/ste_dma40_ll.h | 2 - trunk/drivers/gpio/gpio-pxa.c | 21 +- trunk/drivers/gpu/drm/exynos/exynos_drm_gem.c | 30 +- .../gpu/drm/i915/i915_gem_execbuffer.c | 8 +- trunk/drivers/gpu/drm/i915/i915_reg.h | 1 + trunk/drivers/gpu/drm/i915/intel_crt.c | 29 +- trunk/drivers/gpu/drm/i915/intel_ringbuffer.c | 8 + trunk/drivers/gpu/drm/i915/intel_sdvo.c | 34 +- trunk/drivers/gpu/drm/radeon/atombios_crtc.c | 7 +- trunk/drivers/gpu/drm/radeon/radeon_display.c | 3 +- trunk/drivers/hsi/clients/hsi_char.c | 2 +- trunk/drivers/hsi/hsi.c | 223 ++++++------ trunk/drivers/hwmon/ad7314.c | 12 +- trunk/drivers/hwmon/fam15h_power.c | 9 +- trunk/drivers/infiniband/core/mad.c | 8 +- trunk/drivers/infiniband/hw/mlx4/main.c | 2 +- trunk/drivers/md/dm-raid.c | 4 +- trunk/drivers/md/md.c | 7 +- trunk/drivers/mmc/host/mxs-mmc.c | 3 + trunk/drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 1 + trunk/drivers/net/arcnet/arc-rimi.c | 8 +- trunk/drivers/net/caif/caif_hsi.c | 9 +- .../net/can/usb/peak_usb/pcan_usb_pro.c | 2 + trunk/drivers/net/dummy.c | 6 +- .../drivers/net/ethernet/atheros/atlx/atl1.c | 12 +- .../drivers/net/ethernet/atheros/atlx/atl1.h | 3 +- .../drivers/net/ethernet/atheros/atlx/atlx.c | 2 +- .../net/ethernet/broadcom/bnx2x/bnx2x_link.c | 12 +- .../net/ethernet/intel/e1000e/ich8lan.c | 15 +- .../net/ethernet/intel/ixgbe/ixgbe_lib.c | 10 + .../net/ethernet/intel/ixgbe/ixgbe_main.c | 20 +- trunk/drivers/net/ethernet/micrel/ks8851.c | 21 +- .../drivers/net/ethernet/micrel/ks8851_mll.c | 2 +- trunk/drivers/net/ethernet/micrel/ksz884x.c | 2 +- trunk/drivers/net/ethernet/realtek/8139cp.c | 10 +- trunk/drivers/net/ethernet/smsc/smsc911x.c | 17 +- trunk/drivers/net/ethernet/ti/davinci_mdio.c | 5 + .../net/ethernet/xilinx/xilinx_axienet.h | 4 +- .../net/ethernet/xilinx/xilinx_axienet_main.c | 6 +- .../net/ethernet/xilinx/xilinx_axienet_mdio.c | 6 +- trunk/drivers/net/hyperv/netvsc_drv.c | 38 +-- trunk/drivers/net/phy/icplus.c | 12 +- trunk/drivers/net/ppp/ppp_generic.c | 15 +- trunk/drivers/net/usb/qmi_wwan.c | 30 ++ trunk/drivers/net/usb/smsc75xx.c | 1 + trunk/drivers/net/virtio_net.c | 5 +- trunk/drivers/net/wan/farsync.c | 1 + trunk/drivers/net/wireless/ath/ath5k/ahb.c | 7 +- trunk/drivers/net/wireless/ath/ath9k/main.c | 9 +- trunk/drivers/net/wireless/ath/ath9k/xmit.c | 10 +- .../net/wireless/brcm80211/brcmsmac/main.c | 8 + trunk/drivers/net/wireless/libertas/cfg.c | 9 +- trunk/drivers/net/wireless/mwifiex/pcie.h | 18 +- trunk/drivers/pci/Makefile | 1 + trunk/drivers/pcmcia/Kconfig | 2 +- trunk/drivers/pcmcia/Makefile | 1 - trunk/drivers/pcmcia/pxa2xx_hx4700.c | 121 ------- trunk/drivers/platform/x86/acerhdf.c | 67 ++-- trunk/drivers/platform/x86/dell-laptop.c | 1 + trunk/drivers/platform/x86/intel_ips.c | 2 +- trunk/drivers/rtc/rtc-ds1307.c | 1 + trunk/drivers/spi/Kconfig | 2 +- trunk/drivers/spi/Makefile | 2 +- trunk/drivers/spi/spi-bcm63xx.c | 163 +++++---- trunk/drivers/spi/spi-bfin-sport.c | 21 +- trunk/drivers/spi/spi-bfin5xx.c | 14 +- trunk/drivers/spi/spi-ep93xx.c | 24 +- trunk/drivers/spi/spi-pl022.c | 58 ++-- trunk/drivers/staging/octeon/ethernet-rx.c | 1 + trunk/drivers/staging/octeon/ethernet-tx.c | 1 + trunk/drivers/staging/octeon/ethernet.c | 1 + trunk/drivers/staging/ozwpan/ozpd.c | 2 - .../staging/tidspbridge/core/tiomap3430.c | 20 +- trunk/drivers/staging/tidspbridge/core/wdt.c | 8 +- trunk/drivers/staging/zcache/Kconfig | 2 +- trunk/drivers/usb/class/cdc-wdm.c | 7 +- trunk/drivers/usb/core/hcd-pci.c | 9 + trunk/drivers/usb/gadget/dummy_hcd.c | 1 - trunk/drivers/usb/gadget/f_mass_storage.c | 2 +- trunk/drivers/usb/gadget/file_storage.c | 2 +- trunk/drivers/usb/gadget/udc-core.c | 4 +- trunk/drivers/usb/gadget/uvc.h | 2 +- trunk/drivers/usb/gadget/uvc_v4l2.c | 2 +- trunk/drivers/usb/host/ehci-pci.c | 8 + trunk/drivers/usb/musb/davinci.c | 3 +- trunk/drivers/usb/musb/musb_core.h | 2 +- trunk/drivers/usb/otg/gpio_vbus.c | 15 +- trunk/drivers/vhost/net.c | 2 +- trunk/drivers/vhost/vhost.c | 5 +- trunk/drivers/vhost/vhost.h | 2 +- trunk/drivers/video/bfin-lq035q1-fb.c | 1 + trunk/drivers/watchdog/hpwdt.c | 6 +- trunk/drivers/xen/events.c | 2 +- trunk/drivers/xen/xen-acpi-processor.c | 5 +- trunk/fs/autofs4/autofs_i.h | 12 +- trunk/fs/autofs4/dev-ioctl.c | 3 +- trunk/fs/autofs4/inode.c | 4 +- trunk/fs/autofs4/waitq.c | 22 +- trunk/fs/btrfs/backref.c | 27 +- trunk/fs/btrfs/ctree.h | 2 +- trunk/fs/btrfs/disk-io.c | 22 +- trunk/fs/btrfs/extent-tree.c | 15 +- trunk/fs/btrfs/extent_io.c | 56 +-- trunk/fs/btrfs/extent_io.h | 4 +- trunk/fs/btrfs/file.c | 9 +- trunk/fs/btrfs/inode.c | 54 +-- trunk/fs/btrfs/ioctl.c | 5 +- trunk/fs/btrfs/reada.c | 48 +-- trunk/fs/btrfs/relocation.c | 4 +- trunk/fs/btrfs/scrub.c | 15 - trunk/fs/btrfs/super.c | 7 +- trunk/fs/btrfs/transaction.c | 6 +- trunk/fs/btrfs/volumes.c | 13 +- trunk/fs/buffer.c | 1 - trunk/fs/cifs/cifsfs.c | 12 +- trunk/fs/cifs/connect.c | 12 +- trunk/fs/cifs/file.c | 3 +- trunk/fs/dlm/lock.c | 12 + trunk/fs/eventpoll.c | 4 +- trunk/fs/ext4/super.c | 2 + trunk/fs/gfs2/lock_dlm.c | 10 +- trunk/fs/hugetlbfs/inode.c | 1 + trunk/fs/jbd2/commit.c | 4 +- trunk/fs/nfs/dir.c | 4 +- trunk/fs/nfs/nfs4_fs.h | 1 + trunk/fs/nfs/nfs4proc.c | 44 ++- trunk/fs/nfs/nfs4state.c | 31 +- trunk/fs/nfs/nfs4xdr.c | 9 +- trunk/fs/nfs/read.c | 2 +- trunk/fs/nfs/super.c | 8 +- trunk/fs/nfs/write.c | 5 +- trunk/fs/pipe.c | 31 +- trunk/fs/proc/task_mmu.c | 3 - trunk/include/asm-generic/siginfo.h | 14 +- trunk/include/linux/gpio-pxa.h | 4 + trunk/include/linux/hsi/hsi.h | 31 +- trunk/include/linux/irq.h | 7 + trunk/include/linux/mfd/asic3.h | 1 - trunk/include/linux/nfs_xdr.h | 7 +- trunk/include/linux/pipe_fs_i.h | 1 + trunk/include/linux/skbuff.h | 7 +- trunk/include/linux/spi/spi.h | 2 +- trunk/include/linux/usb/hcd.h | 2 + trunk/include/linux/vm_event_item.h | 5 +- trunk/include/net/dst.h | 6 +- trunk/include/net/ip6_fib.h | 48 +++ trunk/include/net/red.h | 6 +- trunk/include/net/sock.h | 1 + trunk/init/main.c | 25 +- trunk/kernel/events/core.c | 2 +- trunk/kernel/irq/debug.h | 38 +-- trunk/kernel/power/swap.c | 28 +- trunk/kernel/rcutree.c | 1 - trunk/kernel/sched/core.c | 22 +- trunk/kernel/sched/fair.c | 18 +- trunk/kernel/sched/features.h | 1 + trunk/kernel/time/tick-broadcast.c | 13 +- trunk/kernel/trace/trace.c | 8 +- trunk/kernel/trace/trace.h | 4 +- trunk/kernel/trace/trace_output.c | 5 + trunk/mm/hugetlb.c | 2 +- trunk/mm/memcontrol.c | 17 +- trunk/mm/mempolicy.c | 11 +- trunk/mm/migrate.c | 16 +- trunk/mm/nobootmem.c | 10 +- trunk/mm/swap_state.c | 2 +- trunk/mm/vmscan.c | 11 +- trunk/mm/vmstat.c | 4 +- trunk/net/ax25/af_ax25.c | 9 +- trunk/net/caif/chnl_net.c | 9 +- trunk/net/core/dev.c | 20 ++ trunk/net/core/drop_monitor.c | 1 + trunk/net/core/net_namespace.c | 33 +- trunk/net/ipv4/tcp_input.c | 1 + trunk/net/ipv4/tcp_output.c | 1 + trunk/net/ipv6/addrconf.c | 9 +- trunk/net/ipv6/ip6_fib.c | 9 +- trunk/net/ipv6/ndisc.c | 3 +- trunk/net/ipv6/route.c | 71 ++-- trunk/net/ipv6/tcp_ipv6.c | 4 + trunk/net/key/af_key.c | 2 +- trunk/net/l2tp/l2tp_ip.c | 5 +- trunk/net/mac80211/ibss.c | 4 +- trunk/net/mac80211/rx.c | 10 +- trunk/net/phonet/pn_dev.c | 21 +- trunk/net/sched/sch_gred.c | 7 +- trunk/net/sunrpc/sunrpc_syms.c | 17 +- trunk/net/wireless/util.c | 2 +- trunk/scripts/mod/file2alias.c | 4 + trunk/sound/pci/hda/patch_realtek.c | 1 + trunk/sound/soc/codecs/cs42l73.c | 2 + trunk/sound/soc/codecs/wm8994.c | 276 ++++++++++++--- trunk/sound/soc/sh/fsi.c | 7 +- trunk/sound/soc/soc-core.c | 1 + trunk/sound/soc/soc-dapm.c | 2 + trunk/tools/perf/Makefile | 4 +- trunk/tools/perf/builtin-report.c | 17 +- trunk/tools/perf/builtin-test.c | 30 ++ trunk/tools/perf/util/parse-events.l | 2 +- trunk/tools/perf/util/symbol.c | 13 +- 320 files changed, 3379 insertions(+), 2859 deletions(-) create mode 100644 trunk/Documentation/ABI/testing/sysfs-bus-hsi create mode 100644 trunk/arch/arm/mach-imx/eukrea_mbimx51-baseboard.c rename trunk/arch/arm/mach-imx/{eukrea_mbimxsd51-baseboard.c => eukrea_mbimxsd-baseboard.c} (51%) create mode 100644 trunk/arch/arm/mach-imx/mach-cpuimx51.c delete mode 100644 trunk/arch/arm/mach-mmp/include/mach/regs-usb.h create mode 100644 trunk/arch/powerpc/boot/dts/fsl/pq3-mpic-message-B.dtsi delete mode 100644 trunk/drivers/pcmcia/pxa2xx_hx4700.c diff --git a/[refs] b/[refs] index 6a5b110b1294..6861ea8171ef 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: afeb36f128e387f8ad2cd7cd94020bae984ea9b4 +refs/heads/master: 5d4e9971c8adbb87bbe7a32a1864e0f1c91ee380 diff --git a/trunk/Documentation/ABI/testing/sysfs-bus-hsi b/trunk/Documentation/ABI/testing/sysfs-bus-hsi new file mode 100644 index 000000000000..1b1b282a99e1 --- /dev/null +++ b/trunk/Documentation/ABI/testing/sysfs-bus-hsi @@ -0,0 +1,19 @@ +What: /sys/bus/hsi +Date: April 2012 +KernelVersion: 3.4 +Contact: Carlos Chinea +Description: + High Speed Synchronous Serial Interface (HSI) is a + serial interface mainly used for connecting application + engines (APE) with cellular modem engines (CMT) in cellular + handsets. + The bus will be populated with devices (hsi_clients) representing + the protocols available in the system. Bus drivers implement + those protocols. + +What: /sys/bus/hsi/devices/.../modalias +Date: April 2012 +KernelVersion: 3.4 +Contact: Carlos Chinea +Description: Stores the same MODALIAS value emitted by uevent + Format: hsi: diff --git a/trunk/Documentation/power/freezing-of-tasks.txt b/trunk/Documentation/power/freezing-of-tasks.txt index ec715cd78fbb..6ec291ea1c78 100644 --- a/trunk/Documentation/power/freezing-of-tasks.txt +++ b/trunk/Documentation/power/freezing-of-tasks.txt @@ -9,7 +9,7 @@ architectures). II. How does it work? -There are four per-task flags used for that, PF_NOFREEZE, PF_FROZEN, TIF_FREEZE +There are three per-task flags used for that, PF_NOFREEZE, PF_FROZEN and PF_FREEZER_SKIP (the last one is auxiliary). The tasks that have PF_NOFREEZE unset (all user space processes and some kernel threads) are regarded as 'freezable' and treated in a special way before the system enters a @@ -17,30 +17,31 @@ suspend state as well as before a hibernation image is created (in what follows we only consider hibernation, but the description also applies to suspend). Namely, as the first step of the hibernation procedure the function -freeze_processes() (defined in kernel/power/process.c) is called. It executes -try_to_freeze_tasks() that sets TIF_FREEZE for all of the freezable tasks and -either wakes them up, if they are kernel threads, or sends fake signals to them, -if they are user space processes. A task that has TIF_FREEZE set, should react -to it by calling the function called __refrigerator() (defined in -kernel/freezer.c), which sets the task's PF_FROZEN flag, changes its state -to TASK_UNINTERRUPTIBLE and makes it loop until PF_FROZEN is cleared for it. -Then, we say that the task is 'frozen' and therefore the set of functions -handling this mechanism is referred to as 'the freezer' (these functions are -defined in kernel/power/process.c, kernel/freezer.c & include/linux/freezer.h). -User space processes are generally frozen before kernel threads. +freeze_processes() (defined in kernel/power/process.c) is called. A system-wide +variable system_freezing_cnt (as opposed to a per-task flag) is used to indicate +whether the system is to undergo a freezing operation. And freeze_processes() +sets this variable. After this, it executes try_to_freeze_tasks() that sends a +fake signal to all user space processes, and wakes up all the kernel threads. +All freezable tasks must react to that by calling try_to_freeze(), which +results in a call to __refrigerator() (defined in kernel/freezer.c), which sets +the task's PF_FROZEN flag, changes its state to TASK_UNINTERRUPTIBLE and makes +it loop until PF_FROZEN is cleared for it. Then, we say that the task is +'frozen' and therefore the set of functions handling this mechanism is referred +to as 'the freezer' (these functions are defined in kernel/power/process.c, +kernel/freezer.c & include/linux/freezer.h). User space processes are generally +frozen before kernel threads. __refrigerator() must not be called directly. Instead, use the try_to_freeze() function (defined in include/linux/freezer.h), that checks -the task's TIF_FREEZE flag and makes the task enter __refrigerator() if the -flag is set. +if the task is to be frozen and makes the task enter __refrigerator(). For user space processes try_to_freeze() is called automatically from the signal-handling code, but the freezable kernel threads need to call it explicitly in suitable places or use the wait_event_freezable() or wait_event_freezable_timeout() macros (defined in include/linux/freezer.h) -that combine interruptible sleep with checking if TIF_FREEZE is set and calling -try_to_freeze(). The main loop of a freezable kernel thread may look like the -following one: +that combine interruptible sleep with checking if the task is to be frozen and +calling try_to_freeze(). The main loop of a freezable kernel thread may look +like the following one: set_freezable(); do { @@ -53,7 +54,7 @@ following one: (from drivers/usb/core/hub.c::hub_thread()). If a freezable kernel thread fails to call try_to_freeze() after the freezer has -set TIF_FREEZE for it, the freezing of tasks will fail and the entire +initiated a freezing operation, the freezing of tasks will fail and the entire hibernation operation will be cancelled. For this reason, freezable kernel threads must call try_to_freeze() somewhere or use one of the wait_event_freezable() and wait_event_freezable_timeout() macros. diff --git a/trunk/Documentation/security/keys.txt b/trunk/Documentation/security/keys.txt index 787717091421..d389acd31e19 100644 --- a/trunk/Documentation/security/keys.txt +++ b/trunk/Documentation/security/keys.txt @@ -123,7 +123,7 @@ KEY SERVICE OVERVIEW The key service provides a number of features besides keys: - (*) The key service defines two special key types: + (*) The key service defines three special key types: (+) "keyring" @@ -137,6 +137,18 @@ The key service provides a number of features besides keys: blobs of data. These can be created, updated and read by userspace, and aren't intended for use by kernel services. + (+) "logon" + + Like a "user" key, a "logon" key has a payload that is an arbitrary + blob of data. It is intended as a place to store secrets which are + accessible to the kernel but not to userspace programs. + + The description can be arbitrary, but must be prefixed with a non-zero + length string that describes the key "subclass". The subclass is + separated from the rest of the description by a ':'. "logon" keys can + be created and updated from userspace, but the payload is only + readable from kernel space. + (*) Each process subscribes to three keyrings: a thread-specific keyring, a process-specific keyring, and a session-specific keyring. diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index 1a2f8f5823e0..bb76fc42fc42 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -3592,6 +3592,7 @@ S: Supported F: drivers/net/wireless/iwlegacy/ INTEL WIRELESS WIFI LINK (iwlwifi) +M: Johannes Berg M: Wey-Yi Guy M: Intel Linux Wireless L: linux-wireless@vger.kernel.org @@ -7578,8 +7579,8 @@ F: Documentation/filesystems/xfs.txt F: fs/xfs/ XILINX AXI ETHERNET DRIVER -M: Ariane Keller -M: Daniel Borkmann +M: Anirudha Sarangi +M: John Linn S: Maintained F: drivers/net/ethernet/xilinx/xilinx_axienet* diff --git a/trunk/Makefile b/trunk/Makefile index afc868e6c75d..a06ee9fa8022 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -1,7 +1,7 @@ VERSION = 3 PATCHLEVEL = 4 SUBLEVEL = 0 -EXTRAVERSION = -rc4 +EXTRAVERSION = -rc5 NAME = Saber-toothed Squirrel # *DOCUMENTATION* diff --git a/trunk/arch/arm/boot/dts/msm8660-surf.dts b/trunk/arch/arm/boot/dts/msm8660-surf.dts index 15ded0deaa79..45bc4bb04e57 100644 --- a/trunk/arch/arm/boot/dts/msm8660-surf.dts +++ b/trunk/arch/arm/boot/dts/msm8660-surf.dts @@ -10,7 +10,7 @@ intc: interrupt-controller@02080000 { compatible = "qcom,msm-8660-qgic"; interrupt-controller; - #interrupt-cells = <1>; + #interrupt-cells = <3>; reg = < 0x02080000 0x1000 >, < 0x02081000 0x1000 >; }; @@ -19,6 +19,6 @@ compatible = "qcom,msm-hsuart", "qcom,msm-uart"; reg = <0x19c40000 0x1000>, <0x19c00000 0x1000>; - interrupts = <195>; + interrupts = <0 195 0x0>; }; }; diff --git a/trunk/arch/arm/configs/imx_v4_v5_defconfig b/trunk/arch/arm/configs/imx_v4_v5_defconfig index 09a02963cf58..6b31cb60daab 100644 --- a/trunk/arch/arm/configs/imx_v4_v5_defconfig +++ b/trunk/arch/arm/configs/imx_v4_v5_defconfig @@ -92,7 +92,6 @@ CONFIG_INPUT_EVDEV=y # CONFIG_INPUT_MOUSE is not set CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_ADS7846=m -CONFIG_TOUCHSCREEN_MC13783=m # CONFIG_SERIO is not set # CONFIG_LEGACY_PTYS is not set CONFIG_SERIAL_8250=m @@ -108,8 +107,7 @@ CONFIG_SPI_SPIDEV=y CONFIG_W1=y CONFIG_W1_MASTER_MXC=y CONFIG_W1_SLAVE_THERM=y -CONFIG_HWMON=m -CONFIG_SENSORS_MC13783_ADC=m +# CONFIG_HWMON is not set CONFIG_WATCHDOG=y CONFIG_IMX2_WDT=y CONFIG_MFD_MC13XXX=y diff --git a/trunk/arch/arm/configs/mini2440_defconfig b/trunk/arch/arm/configs/mini2440_defconfig index 42da9183acc8..082175c54e7c 100644 --- a/trunk/arch/arm/configs/mini2440_defconfig +++ b/trunk/arch/arm/configs/mini2440_defconfig @@ -14,6 +14,8 @@ CONFIG_MODULE_FORCE_UNLOAD=y # CONFIG_BLK_DEV_BSG is not set CONFIG_BLK_DEV_INTEGRITY=y CONFIG_ARCH_S3C24XX=y +# CONFIG_CPU_S3C2410 is not set +CONFIG_CPU_S3C2440=y CONFIG_S3C_ADC=y CONFIG_S3C24XX_PWM=y CONFIG_MACH_MINI2440=y diff --git a/trunk/arch/arm/configs/omap2plus_defconfig b/trunk/arch/arm/configs/omap2plus_defconfig index d5f00d7eb075..9854ff4279e0 100644 --- a/trunk/arch/arm/configs/omap2plus_defconfig +++ b/trunk/arch/arm/configs/omap2plus_defconfig @@ -98,6 +98,7 @@ CONFIG_LIBERTAS_USB=m CONFIG_LIBERTAS_SDIO=m CONFIG_LIBERTAS_DEBUG=y CONFIG_USB_USBNET=y +CONFIG_USB_NET_SMSC95XX=y CONFIG_USB_ALI_M5632=y CONFIG_USB_AN2720=y CONFIG_USB_EPSON2888=y @@ -175,6 +176,7 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y CONFIG_USB_DEVICEFS=y CONFIG_USB_SUSPEND=y CONFIG_USB_MON=y +CONFIG_USB_EHCI_HCD=y CONFIG_USB_WDM=y CONFIG_USB_STORAGE=y CONFIG_USB_LIBUSUAL=y diff --git a/trunk/arch/arm/kernel/smp_twd.c b/trunk/arch/arm/kernel/smp_twd.c index 5b150afb995b..fef42b21cecb 100644 --- a/trunk/arch/arm/kernel/smp_twd.c +++ b/trunk/arch/arm/kernel/smp_twd.c @@ -118,14 +118,10 @@ static int twd_cpufreq_transition(struct notifier_block *nb, * The twd clock events must be reprogrammed to account for the new * frequency. The timer is local to a cpu, so cross-call to the * changing cpu. - * - * Only wait for it to finish, if the cpu is active to avoid - * deadlock when cpu1 is spinning on while(!cpu_active(cpu1)) during - * booting of that cpu. */ if (state == CPUFREQ_POSTCHANGE || state == CPUFREQ_RESUMECHANGE) smp_call_function_single(freqs->cpu, twd_update_frequency, - NULL, cpu_active(freqs->cpu)); + NULL, 1); return NOTIFY_OK; } diff --git a/trunk/arch/arm/mach-exynos/clock-exynos4.c b/trunk/arch/arm/mach-exynos/clock-exynos4.c index df54c2a92225..6efd1e5919fd 100644 --- a/trunk/arch/arm/mach-exynos/clock-exynos4.c +++ b/trunk/arch/arm/mach-exynos/clock-exynos4.c @@ -497,25 +497,25 @@ static struct clk exynos4_init_clocks_off[] = { .ctrlbit = (1 << 3), }, { .name = "hsmmc", - .devname = "s3c-sdhci.0", + .devname = "exynos4-sdhci.0", .parent = &exynos4_clk_aclk_133.clk, .enable = exynos4_clk_ip_fsys_ctrl, .ctrlbit = (1 << 5), }, { .name = "hsmmc", - .devname = "s3c-sdhci.1", + .devname = "exynos4-sdhci.1", .parent = &exynos4_clk_aclk_133.clk, .enable = exynos4_clk_ip_fsys_ctrl, .ctrlbit = (1 << 6), }, { .name = "hsmmc", - .devname = "s3c-sdhci.2", + .devname = "exynos4-sdhci.2", .parent = &exynos4_clk_aclk_133.clk, .enable = exynos4_clk_ip_fsys_ctrl, .ctrlbit = (1 << 7), }, { .name = "hsmmc", - .devname = "s3c-sdhci.3", + .devname = "exynos4-sdhci.3", .parent = &exynos4_clk_aclk_133.clk, .enable = exynos4_clk_ip_fsys_ctrl, .ctrlbit = (1 << 8), @@ -1202,7 +1202,7 @@ static struct clksrc_clk exynos4_clk_sclk_uart3 = { static struct clksrc_clk exynos4_clk_sclk_mmc0 = { .clk = { .name = "sclk_mmc", - .devname = "s3c-sdhci.0", + .devname = "exynos4-sdhci.0", .parent = &exynos4_clk_dout_mmc0.clk, .enable = exynos4_clksrc_mask_fsys_ctrl, .ctrlbit = (1 << 0), @@ -1213,7 +1213,7 @@ static struct clksrc_clk exynos4_clk_sclk_mmc0 = { static struct clksrc_clk exynos4_clk_sclk_mmc1 = { .clk = { .name = "sclk_mmc", - .devname = "s3c-sdhci.1", + .devname = "exynos4-sdhci.1", .parent = &exynos4_clk_dout_mmc1.clk, .enable = exynos4_clksrc_mask_fsys_ctrl, .ctrlbit = (1 << 4), @@ -1224,7 +1224,7 @@ static struct clksrc_clk exynos4_clk_sclk_mmc1 = { static struct clksrc_clk exynos4_clk_sclk_mmc2 = { .clk = { .name = "sclk_mmc", - .devname = "s3c-sdhci.2", + .devname = "exynos4-sdhci.2", .parent = &exynos4_clk_dout_mmc2.clk, .enable = exynos4_clksrc_mask_fsys_ctrl, .ctrlbit = (1 << 8), @@ -1235,7 +1235,7 @@ static struct clksrc_clk exynos4_clk_sclk_mmc2 = { static struct clksrc_clk exynos4_clk_sclk_mmc3 = { .clk = { .name = "sclk_mmc", - .devname = "s3c-sdhci.3", + .devname = "exynos4-sdhci.3", .parent = &exynos4_clk_dout_mmc3.clk, .enable = exynos4_clksrc_mask_fsys_ctrl, .ctrlbit = (1 << 12), @@ -1340,10 +1340,10 @@ static struct clk_lookup exynos4_clk_lookup[] = { CLKDEV_INIT("exynos4210-uart.1", "clk_uart_baud0", &exynos4_clk_sclk_uart1.clk), CLKDEV_INIT("exynos4210-uart.2", "clk_uart_baud0", &exynos4_clk_sclk_uart2.clk), CLKDEV_INIT("exynos4210-uart.3", "clk_uart_baud0", &exynos4_clk_sclk_uart3.clk), - CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.2", &exynos4_clk_sclk_mmc0.clk), - CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.2", &exynos4_clk_sclk_mmc1.clk), - CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.2", &exynos4_clk_sclk_mmc2.clk), - CLKDEV_INIT("s3c-sdhci.3", "mmc_busclk.2", &exynos4_clk_sclk_mmc3.clk), + CLKDEV_INIT("exynos4-sdhci.0", "mmc_busclk.2", &exynos4_clk_sclk_mmc0.clk), + CLKDEV_INIT("exynos4-sdhci.1", "mmc_busclk.2", &exynos4_clk_sclk_mmc1.clk), + CLKDEV_INIT("exynos4-sdhci.2", "mmc_busclk.2", &exynos4_clk_sclk_mmc2.clk), + CLKDEV_INIT("exynos4-sdhci.3", "mmc_busclk.2", &exynos4_clk_sclk_mmc3.clk), CLKDEV_INIT("exynos4-fb.0", "lcd", &exynos4_clk_fimd0), CLKDEV_INIT("dma-pl330.0", "apb_pclk", &exynos4_clk_pdma0), CLKDEV_INIT("dma-pl330.1", "apb_pclk", &exynos4_clk_pdma1), diff --git a/trunk/arch/arm/mach-exynos/clock-exynos5.c b/trunk/arch/arm/mach-exynos/clock-exynos5.c index d013982d0f8e..5cd7a8b8868c 100644 --- a/trunk/arch/arm/mach-exynos/clock-exynos5.c +++ b/trunk/arch/arm/mach-exynos/clock-exynos5.c @@ -455,25 +455,25 @@ static struct clk exynos5_init_clocks_off[] = { .ctrlbit = (1 << 20), }, { .name = "hsmmc", - .devname = "s3c-sdhci.0", + .devname = "exynos4-sdhci.0", .parent = &exynos5_clk_aclk_200.clk, .enable = exynos5_clk_ip_fsys_ctrl, .ctrlbit = (1 << 12), }, { .name = "hsmmc", - .devname = "s3c-sdhci.1", + .devname = "exynos4-sdhci.1", .parent = &exynos5_clk_aclk_200.clk, .enable = exynos5_clk_ip_fsys_ctrl, .ctrlbit = (1 << 13), }, { .name = "hsmmc", - .devname = "s3c-sdhci.2", + .devname = "exynos4-sdhci.2", .parent = &exynos5_clk_aclk_200.clk, .enable = exynos5_clk_ip_fsys_ctrl, .ctrlbit = (1 << 14), }, { .name = "hsmmc", - .devname = "s3c-sdhci.3", + .devname = "exynos4-sdhci.3", .parent = &exynos5_clk_aclk_200.clk, .enable = exynos5_clk_ip_fsys_ctrl, .ctrlbit = (1 << 15), @@ -813,7 +813,7 @@ static struct clksrc_clk exynos5_clk_sclk_uart3 = { static struct clksrc_clk exynos5_clk_sclk_mmc0 = { .clk = { .name = "sclk_mmc", - .devname = "s3c-sdhci.0", + .devname = "exynos4-sdhci.0", .parent = &exynos5_clk_dout_mmc0.clk, .enable = exynos5_clksrc_mask_fsys_ctrl, .ctrlbit = (1 << 0), @@ -824,7 +824,7 @@ static struct clksrc_clk exynos5_clk_sclk_mmc0 = { static struct clksrc_clk exynos5_clk_sclk_mmc1 = { .clk = { .name = "sclk_mmc", - .devname = "s3c-sdhci.1", + .devname = "exynos4-sdhci.1", .parent = &exynos5_clk_dout_mmc1.clk, .enable = exynos5_clksrc_mask_fsys_ctrl, .ctrlbit = (1 << 4), @@ -835,7 +835,7 @@ static struct clksrc_clk exynos5_clk_sclk_mmc1 = { static struct clksrc_clk exynos5_clk_sclk_mmc2 = { .clk = { .name = "sclk_mmc", - .devname = "s3c-sdhci.2", + .devname = "exynos4-sdhci.2", .parent = &exynos5_clk_dout_mmc2.clk, .enable = exynos5_clksrc_mask_fsys_ctrl, .ctrlbit = (1 << 8), @@ -846,7 +846,7 @@ static struct clksrc_clk exynos5_clk_sclk_mmc2 = { static struct clksrc_clk exynos5_clk_sclk_mmc3 = { .clk = { .name = "sclk_mmc", - .devname = "s3c-sdhci.3", + .devname = "exynos4-sdhci.3", .parent = &exynos5_clk_dout_mmc3.clk, .enable = exynos5_clksrc_mask_fsys_ctrl, .ctrlbit = (1 << 12), @@ -990,10 +990,10 @@ static struct clk_lookup exynos5_clk_lookup[] = { CLKDEV_INIT("exynos4210-uart.1", "clk_uart_baud0", &exynos5_clk_sclk_uart1.clk), CLKDEV_INIT("exynos4210-uart.2", "clk_uart_baud0", &exynos5_clk_sclk_uart2.clk), CLKDEV_INIT("exynos4210-uart.3", "clk_uart_baud0", &exynos5_clk_sclk_uart3.clk), - CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.2", &exynos5_clk_sclk_mmc0.clk), - CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.2", &exynos5_clk_sclk_mmc1.clk), - CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.2", &exynos5_clk_sclk_mmc2.clk), - CLKDEV_INIT("s3c-sdhci.3", "mmc_busclk.2", &exynos5_clk_sclk_mmc3.clk), + CLKDEV_INIT("exynos4-sdhci.0", "mmc_busclk.2", &exynos5_clk_sclk_mmc0.clk), + CLKDEV_INIT("exynos4-sdhci.1", "mmc_busclk.2", &exynos5_clk_sclk_mmc1.clk), + CLKDEV_INIT("exynos4-sdhci.2", "mmc_busclk.2", &exynos5_clk_sclk_mmc2.clk), + CLKDEV_INIT("exynos4-sdhci.3", "mmc_busclk.2", &exynos5_clk_sclk_mmc3.clk), CLKDEV_INIT("dma-pl330.0", "apb_pclk", &exynos5_clk_pdma0), CLKDEV_INIT("dma-pl330.1", "apb_pclk", &exynos5_clk_pdma1), CLKDEV_INIT("dma-pl330.2", "apb_pclk", &exynos5_clk_mdma1), diff --git a/trunk/arch/arm/mach-exynos/common.c b/trunk/arch/arm/mach-exynos/common.c index 8614aab47cc0..5ccd6e80a607 100644 --- a/trunk/arch/arm/mach-exynos/common.c +++ b/trunk/arch/arm/mach-exynos/common.c @@ -326,6 +326,11 @@ static void __init exynos4_map_io(void) s3c_fimc_setname(2, "exynos4-fimc"); s3c_fimc_setname(3, "exynos4-fimc"); + s3c_sdhci_setname(0, "exynos4-sdhci"); + s3c_sdhci_setname(1, "exynos4-sdhci"); + s3c_sdhci_setname(2, "exynos4-sdhci"); + s3c_sdhci_setname(3, "exynos4-sdhci"); + /* The I2C bus controllers are directly compatible with s3c2440 */ s3c_i2c0_setname("s3c2440-i2c"); s3c_i2c1_setname("s3c2440-i2c"); @@ -344,6 +349,11 @@ static void __init exynos5_map_io(void) s3c_device_i2c0.resource[1].start = EXYNOS5_IRQ_IIC; s3c_device_i2c0.resource[1].end = EXYNOS5_IRQ_IIC; + s3c_sdhci_setname(0, "exynos4-sdhci"); + s3c_sdhci_setname(1, "exynos4-sdhci"); + s3c_sdhci_setname(2, "exynos4-sdhci"); + s3c_sdhci_setname(3, "exynos4-sdhci"); + /* The I2C bus controllers are directly compatible with s3c2440 */ s3c_i2c0_setname("s3c2440-i2c"); s3c_i2c1_setname("s3c2440-i2c"); @@ -537,7 +547,9 @@ void __init exynos5_init_irq(void) { int irq; - gic_init(0, IRQ_PPI(0), S5P_VA_GIC_DIST, S5P_VA_GIC_CPU); +#ifdef CONFIG_OF + of_irq_init(exynos4_dt_irq_match); +#endif for (irq = 0; irq < EXYNOS5_MAX_COMBINER_NR; irq++) { combiner_init(irq, (void __iomem *)S5P_VA_COMBINER(irq), diff --git a/trunk/arch/arm/mach-exynos/dev-dwmci.c b/trunk/arch/arm/mach-exynos/dev-dwmci.c index b025db4bf602..79035018fb74 100644 --- a/trunk/arch/arm/mach-exynos/dev-dwmci.c +++ b/trunk/arch/arm/mach-exynos/dev-dwmci.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -33,16 +34,8 @@ static int exynos4_dwmci_init(u32 slot_id, irq_handler_t handler, void *data) } static struct resource exynos4_dwmci_resource[] = { - [0] = { - .start = EXYNOS4_PA_DWMCI, - .end = EXYNOS4_PA_DWMCI + SZ_4K - 1, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_DWMCI, - .end = IRQ_DWMCI, - .flags = IORESOURCE_IRQ, - } + [0] = DEFINE_RES_MEM(EXYNOS4_PA_DWMCI, SZ_4K), + [1] = DEFINE_RES_IRQ(EXYNOS4_IRQ_DWMCI), }; static struct dw_mci_board exynos4_dwci_pdata = { diff --git a/trunk/arch/arm/mach-exynos/mach-nuri.c b/trunk/arch/arm/mach-exynos/mach-nuri.c index b4f1f902ce6d..ed90aef404c3 100644 --- a/trunk/arch/arm/mach-exynos/mach-nuri.c +++ b/trunk/arch/arm/mach-exynos/mach-nuri.c @@ -112,6 +112,7 @@ static struct s3c_sdhci_platdata nuri_hsmmc0_data __initdata = { .host_caps = (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | MMC_CAP_ERASE), + .host_caps2 = MMC_CAP2_BROKEN_VOLTAGE, .cd_type = S3C_SDHCI_CD_PERMANENT, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, }; diff --git a/trunk/arch/arm/mach-exynos/mach-universal_c210.c b/trunk/arch/arm/mach-exynos/mach-universal_c210.c index 7ebf79c2ab34..cb2b027f09a6 100644 --- a/trunk/arch/arm/mach-exynos/mach-universal_c210.c +++ b/trunk/arch/arm/mach-exynos/mach-universal_c210.c @@ -747,6 +747,7 @@ static struct s3c_sdhci_platdata universal_hsmmc0_data __initdata = { .max_width = 8, .host_caps = (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED), + .host_caps2 = MMC_CAP2_BROKEN_VOLTAGE, .cd_type = S3C_SDHCI_CD_PERMANENT, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, }; diff --git a/trunk/arch/arm/mach-imx/Kconfig b/trunk/arch/arm/mach-imx/Kconfig index 18399d10d170..7561eca131b0 100644 --- a/trunk/arch/arm/mach-imx/Kconfig +++ b/trunk/arch/arm/mach-imx/Kconfig @@ -163,7 +163,6 @@ config MACH_EUKREA_CPUIMX25SD select SOC_IMX25 select IMX_HAVE_PLATFORM_FLEXCAN select IMX_HAVE_PLATFORM_FSL_USB2_UDC - select IMX_HAVE_PLATFORM_IMX2_WDT select IMX_HAVE_PLATFORM_IMXDI_RTC select IMX_HAVE_PLATFORM_IMX_FB select IMX_HAVE_PLATFORM_IMX_I2C @@ -182,7 +181,6 @@ config MACH_EUKREA_MBIMXSD25_BASEBOARD bool "Eukrea MBIMXSD development board" select IMX_HAVE_PLATFORM_GPIO_KEYS select IMX_HAVE_PLATFORM_IMX_SSI - select IMX_HAVE_PLATFORM_SPI_IMX select LEDS_GPIO_REGISTER help This adds board specific devices that can be found on Eukrea's @@ -608,7 +606,6 @@ config MACH_EUKREA_MBIMXSD35_BASEBOARD select IMX_HAVE_PLATFORM_GPIO_KEYS select IMX_HAVE_PLATFORM_IMX_SSI select IMX_HAVE_PLATFORM_IPU_CORE - select IMX_HAVE_PLATFORM_SPI_IMX select LEDS_GPIO_REGISTER help This adds board specific devices that can be found on Eukrea's @@ -685,13 +682,42 @@ config MACH_MX51_3DS Include support for MX51PDK (3DS) platform. This includes specific configurations for the board and its peripherals. +config MACH_EUKREA_CPUIMX51 + bool "Support Eukrea CPUIMX51 module" + select SOC_IMX51 + select IMX_HAVE_PLATFORM_FSL_USB2_UDC + select IMX_HAVE_PLATFORM_IMX_I2C + select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_MXC_EHCI + select IMX_HAVE_PLATFORM_MXC_NAND + select IMX_HAVE_PLATFORM_SPI_IMX + help + Include support for Eukrea CPUIMX51 platform. This includes + specific configurations for the module and its peripherals. + +choice + prompt "Baseboard" + depends on MACH_EUKREA_CPUIMX51 + default MACH_EUKREA_MBIMX51_BASEBOARD + +config MACH_EUKREA_MBIMX51_BASEBOARD + prompt "Eukrea MBIMX51 development board" + bool + select IMX_HAVE_PLATFORM_IMX_KEYPAD + select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX + select LEDS_GPIO_REGISTER + help + This adds board specific devices that can be found on Eukrea's + MBIMX51 evaluation board. + +endchoice + config MACH_EUKREA_CPUIMX51SD bool "Support Eukrea CPUIMX51SD module" select SOC_IMX51 select IMX_HAVE_PLATFORM_FSL_USB2_UDC select IMX_HAVE_PLATFORM_IMX_I2C select IMX_HAVE_PLATFORM_IMX_UART - select IMX_HAVE_PLATFORM_IMX2_WDT select IMX_HAVE_PLATFORM_MXC_EHCI select IMX_HAVE_PLATFORM_MXC_NAND select IMX_HAVE_PLATFORM_SPI_IMX @@ -707,7 +733,6 @@ choice config MACH_EUKREA_MBIMXSD51_BASEBOARD prompt "Eukrea MBIMXSD development board" bool - select IMX_HAVE_PLATFORM_IMX_SSI select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX select LEDS_GPIO_REGISTER help diff --git a/trunk/arch/arm/mach-imx/Makefile b/trunk/arch/arm/mach-imx/Makefile index 4937c070a57e..ab939c5046c3 100644 --- a/trunk/arch/arm/mach-imx/Makefile +++ b/trunk/arch/arm/mach-imx/Makefile @@ -83,8 +83,10 @@ obj-$(CONFIG_MACH_MX53_EVK) += mach-mx53_evk.o obj-$(CONFIG_MACH_MX53_SMD) += mach-mx53_smd.o obj-$(CONFIG_MACH_MX53_LOCO) += mach-mx53_loco.o obj-$(CONFIG_MACH_MX53_ARD) += mach-mx53_ard.o +obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += mach-cpuimx51.o +obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += mach-cpuimx51sd.o -obj-$(CONFIG_MACH_EUKREA_MBIMXSD51_BASEBOARD) += eukrea_mbimxsd51-baseboard.o +obj-$(CONFIG_MACH_EUKREA_MBIMXSD51_BASEBOARD) += eukrea_mbimxsd-baseboard.o obj-$(CONFIG_MX51_EFIKA_COMMON) += mx51_efika.o obj-$(CONFIG_MACH_MX51_EFIKAMX) += mach-mx51_efikamx.o obj-$(CONFIG_MACH_MX51_EFIKASB) += mach-mx51_efikasb.o diff --git a/trunk/arch/arm/mach-imx/eukrea_mbimx51-baseboard.c b/trunk/arch/arm/mach-imx/eukrea_mbimx51-baseboard.c new file mode 100644 index 000000000000..a6a3ab8f1b1c --- /dev/null +++ b/trunk/arch/arm/mach-imx/eukrea_mbimx51-baseboard.c @@ -0,0 +1,206 @@ +/* + * + * Copyright (C) 2010 Eric Bénard + * + * The code contained herein is licensed under the GNU General Public + * License. You may obtain a copy of the GNU General Public License + * Version 2 or later at the following locations: + * + * http://www.opensource.org/licenses/gpl-license.html + * http://www.gnu.org/copyleft/gpl.html + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include "devices-imx51.h" + +#define MBIMX51_TSC2007_GPIO IMX_GPIO_NR(3, 30) +#define MBIMX51_LED0 IMX_GPIO_NR(3, 5) +#define MBIMX51_LED1 IMX_GPIO_NR(3, 6) +#define MBIMX51_LED2 IMX_GPIO_NR(3, 7) +#define MBIMX51_LED3 IMX_GPIO_NR(3, 8) + +static const struct gpio_led mbimx51_leds[] __initconst = { + { + .name = "led0", + .default_trigger = "heartbeat", + .active_low = 1, + .gpio = MBIMX51_LED0, + }, + { + .name = "led1", + .default_trigger = "nand-disk", + .active_low = 1, + .gpio = MBIMX51_LED1, + }, + { + .name = "led2", + .default_trigger = "mmc0", + .active_low = 1, + .gpio = MBIMX51_LED2, + }, + { + .name = "led3", + .default_trigger = "default-on", + .active_low = 1, + .gpio = MBIMX51_LED3, + }, +}; + +static const struct gpio_led_platform_data mbimx51_leds_info __initconst = { + .leds = mbimx51_leds, + .num_leds = ARRAY_SIZE(mbimx51_leds), +}; + +static iomux_v3_cfg_t mbimx51_pads[] = { + /* UART2 */ + MX51_PAD_UART2_RXD__UART2_RXD, + MX51_PAD_UART2_TXD__UART2_TXD, + + /* UART3 */ + MX51_PAD_UART3_RXD__UART3_RXD, + MX51_PAD_UART3_TXD__UART3_TXD, + MX51_PAD_KEY_COL4__UART3_RTS, + MX51_PAD_KEY_COL5__UART3_CTS, + + /* TSC2007 IRQ */ + MX51_PAD_NANDF_D10__GPIO3_30, + + /* LEDS */ + MX51_PAD_DISPB2_SER_DIN__GPIO3_5, + MX51_PAD_DISPB2_SER_DIO__GPIO3_6, + MX51_PAD_DISPB2_SER_CLK__GPIO3_7, + MX51_PAD_DISPB2_SER_RS__GPIO3_8, + + /* KPP */ + MX51_PAD_KEY_ROW0__KEY_ROW0, + MX51_PAD_KEY_ROW1__KEY_ROW1, + MX51_PAD_KEY_ROW2__KEY_ROW2, + MX51_PAD_KEY_ROW3__KEY_ROW3, + MX51_PAD_KEY_COL0__KEY_COL0, + MX51_PAD_KEY_COL1__KEY_COL1, + MX51_PAD_KEY_COL2__KEY_COL2, + MX51_PAD_KEY_COL3__KEY_COL3, + + /* SD 1 */ + MX51_PAD_SD1_CMD__SD1_CMD, + MX51_PAD_SD1_CLK__SD1_CLK, + MX51_PAD_SD1_DATA0__SD1_DATA0, + MX51_PAD_SD1_DATA1__SD1_DATA1, + MX51_PAD_SD1_DATA2__SD1_DATA2, + MX51_PAD_SD1_DATA3__SD1_DATA3, + + /* SD 2 */ + MX51_PAD_SD2_CMD__SD2_CMD, + MX51_PAD_SD2_CLK__SD2_CLK, + MX51_PAD_SD2_DATA0__SD2_DATA0, + MX51_PAD_SD2_DATA1__SD2_DATA1, + MX51_PAD_SD2_DATA2__SD2_DATA2, + MX51_PAD_SD2_DATA3__SD2_DATA3, +}; + +static const struct imxuart_platform_data uart_pdata __initconst = { + .flags = IMXUART_HAVE_RTSCTS, +}; + +static int mbimx51_keymap[] = { + KEY(0, 0, KEY_1), + KEY(0, 1, KEY_2), + KEY(0, 2, KEY_3), + KEY(0, 3, KEY_UP), + + KEY(1, 0, KEY_4), + KEY(1, 1, KEY_5), + KEY(1, 2, KEY_6), + KEY(1, 3, KEY_LEFT), + + KEY(2, 0, KEY_7), + KEY(2, 1, KEY_8), + KEY(2, 2, KEY_9), + KEY(2, 3, KEY_RIGHT), + + KEY(3, 0, KEY_0), + KEY(3, 1, KEY_DOWN), + KEY(3, 2, KEY_ESC), + KEY(3, 3, KEY_ENTER), +}; + +static const struct matrix_keymap_data mbimx51_map_data __initconst = { + .keymap = mbimx51_keymap, + .keymap_size = ARRAY_SIZE(mbimx51_keymap), +}; + +static int tsc2007_get_pendown_state(void) +{ + return !gpio_get_value(MBIMX51_TSC2007_GPIO); +} + +struct tsc2007_platform_data tsc2007_data = { + .model = 2007, + .x_plate_ohms = 180, + .get_pendown_state = tsc2007_get_pendown_state, +}; + +static struct i2c_board_info mbimx51_i2c_devices[] = { + { + I2C_BOARD_INFO("tsc2007", 0x49), + .irq = IMX_GPIO_TO_IRQ(MBIMX51_TSC2007_GPIO), + .platform_data = &tsc2007_data, + }, { + I2C_BOARD_INFO("tlv320aic23", 0x1a), + }, +}; + +/* + * baseboard initialization. + */ +void __init eukrea_mbimx51_baseboard_init(void) +{ + mxc_iomux_v3_setup_multiple_pads(mbimx51_pads, + ARRAY_SIZE(mbimx51_pads)); + + imx51_add_imx_uart(1, NULL); + imx51_add_imx_uart(2, &uart_pdata); + + gpio_request(MBIMX51_LED0, "LED0"); + gpio_direction_output(MBIMX51_LED0, 1); + gpio_free(MBIMX51_LED0); + gpio_request(MBIMX51_LED1, "LED1"); + gpio_direction_output(MBIMX51_LED1, 1); + gpio_free(MBIMX51_LED1); + gpio_request(MBIMX51_LED2, "LED2"); + gpio_direction_output(MBIMX51_LED2, 1); + gpio_free(MBIMX51_LED2); + gpio_request(MBIMX51_LED3, "LED3"); + gpio_direction_output(MBIMX51_LED3, 1); + gpio_free(MBIMX51_LED3); + + gpio_led_register_device(-1, &mbimx51_leds_info); + + imx51_add_imx_keypad(&mbimx51_map_data); + + gpio_request(MBIMX51_TSC2007_GPIO, "tsc2007_irq"); + gpio_direction_input(MBIMX51_TSC2007_GPIO); + irq_set_irq_type(gpio_to_irq(MBIMX51_TSC2007_GPIO), + IRQF_TRIGGER_FALLING); + i2c_register_board_info(1, mbimx51_i2c_devices, + ARRAY_SIZE(mbimx51_i2c_devices)); + + imx51_add_sdhci_esdhc_imx(0, NULL); + imx51_add_sdhci_esdhc_imx(1, NULL); +} diff --git a/trunk/arch/arm/mach-imx/eukrea_mbimxsd51-baseboard.c b/trunk/arch/arm/mach-imx/eukrea_mbimxsd-baseboard.c similarity index 51% rename from trunk/arch/arm/mach-imx/eukrea_mbimxsd51-baseboard.c rename to trunk/arch/arm/mach-imx/eukrea_mbimxsd-baseboard.c index 96a24b73dc23..aaa592fdb9ce 100644 --- a/trunk/arch/arm/mach-imx/eukrea_mbimxsd51-baseboard.c +++ b/trunk/arch/arm/mach-imx/eukrea_mbimxsd-baseboard.c @@ -28,8 +28,6 @@ #include #include #include -#include