From 66ede99f78b5ec8559e2837020bde587173404ef Mon Sep 17 00:00:00 2001 From: Olof Johansson Date: Mon, 17 Dec 2012 18:40:51 -0800 Subject: [PATCH] --- yaml --- r: 347404 b: refs/heads/master c: 1dc1d2e9485074d5f495beb7771a3ab20eb504e9 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/Documentation/DMA-attributes.txt | 9 + trunk/Documentation/DocBook/drm.tmpl | 39 +- .../bindings/gpu/nvidia,tegra20-host1x.txt | 191 ++ trunk/Documentation/kref.txt | 88 + trunk/MAINTAINERS | 9 + trunk/arch/arm/boot/dts/Makefile | 5 +- trunk/arch/arm/boot/dts/omap2420-h4.dts | 2 +- trunk/arch/arm/boot/dts/sun4i-cubieboard.dts | 4 +- trunk/arch/arm/boot/dts/sun5i-olinuxino.dts | 4 +- trunk/arch/arm/mach-davinci/board-da850-evm.c | 1 + trunk/arch/arm/mach-exynos/common.h | 2 +- trunk/arch/arm/mach-omap2/Kconfig | 3 +- trunk/arch/arm/mach-omap2/board-3430sdp.c | 1 + trunk/arch/arm/mach-omap2/board-am3517evm.c | 1 + trunk/arch/arm/mach-omap2/board-cm-t35.c | 1 + trunk/arch/arm/mach-omap2/board-devkit8000.c | 1 + trunk/arch/arm/mach-omap2/board-h4.c | 83 +- trunk/arch/arm/mach-omap2/board-omap3evm.c | 1 + .../arch/arm/mach-omap2/board-omap3stalker.c | 1 + trunk/arch/arm/mach-omap2/cclock44xx_data.c | 78 +- trunk/arch/arm/mach-omap2/clock.h | 10 + trunk/arch/arm/mach-omap2/clockdomain.c | 3 +- trunk/arch/arm/mach-omap2/common.c | 3 - trunk/arch/arm/mach-omap2/cpuidle34xx.c | 14 +- trunk/arch/arm/mach-omap2/cpuidle44xx.c | 28 +- trunk/arch/arm/mach-omap2/dpll3xxx.c | 46 +- trunk/arch/arm/mach-omap2/dpll44xx.c | 64 +- trunk/arch/arm/mach-omap2/mux.c | 10 +- trunk/arch/arm/mach-omap2/mux.h | 20 +- trunk/arch/arm/mach-omap2/mux34xx.c | 2 +- trunk/arch/arm/mach-omap2/serial.c | 3 +- trunk/arch/arm/mach-omap2/timer.c | 6 +- trunk/arch/arm/mach-omap2/usb-host.c | 4 + trunk/arch/arm/mach-tegra/common.c | 2 +- trunk/arch/arm/mach-tegra/tegra30_clocks.c | 4 +- trunk/arch/arm/mach-u300/core.c | 34 - trunk/arch/arm/mach-ux500/devices-db8500.h | 1 + trunk/arch/arm/mm/dma-mapping.c | 41 +- trunk/arch/arm/plat-omap/Makefile | 1 - trunk/arch/arm/plat-omap/debug-devices.c | 92 - .../plat-omap/include/plat/debug-devices.h | 2 - trunk/block/blk-cgroup.c | 2 +- trunk/block/blk-core.c | 127 +- trunk/block/blk-exec.c | 4 +- trunk/block/blk-lib.c | 26 +- trunk/block/blk-settings.c | 6 +- trunk/block/blk-sysfs.c | 4 +- trunk/block/blk-throttle.c | 2 +- trunk/block/blk.h | 4 +- trunk/block/bsg-lib.c | 13 - trunk/block/cfq-iosched.c | 3 +- trunk/block/deadline-iosched.c | 2 +- trunk/block/elevator.c | 16 +- trunk/block/genhd.c | 2 +- trunk/block/partitions/Kconfig | 4 +- trunk/drivers/amba/tegra-ahb.c | 2 + trunk/drivers/char/agp/intel-agp.h | 91 - trunk/drivers/char/agp/intel-gtt.c | 320 +- trunk/drivers/gpu/drm/Kconfig | 2 + trunk/drivers/gpu/drm/Makefile | 6 +- trunk/drivers/gpu/drm/ast/ast_ttm.c | 12 +- trunk/drivers/gpu/drm/cirrus/cirrus_drv.c | 13 +- trunk/drivers/gpu/drm/cirrus/cirrus_ttm.c | 12 +- trunk/drivers/gpu/drm/drm_crtc.c | 63 +- trunk/drivers/gpu/drm/drm_crtc_helper.c | 161 +- .../{drm_dp_i2c_helper.c => drm_dp_helper.c} | 146 +- trunk/drivers/gpu/drm/drm_edid.c | 48 +- trunk/drivers/gpu/drm/drm_fb_helper.c | 76 +- trunk/drivers/gpu/drm/drm_hashtab.c | 38 +- trunk/drivers/gpu/drm/drm_ioctl.c | 3 + trunk/drivers/gpu/drm/drm_irq.c | 120 +- trunk/drivers/gpu/drm/drm_modes.c | 8 +- trunk/drivers/gpu/drm/drm_pci.c | 2 +- trunk/drivers/gpu/drm/drm_stub.c | 37 +- trunk/drivers/gpu/drm/drm_sysfs.c | 6 +- trunk/drivers/gpu/drm/exynos/Kconfig | 30 + trunk/drivers/gpu/drm/exynos/Makefile | 5 + trunk/drivers/gpu/drm/exynos/exynos_ddc.c | 4 +- trunk/drivers/gpu/drm/exynos/exynos_drm_buf.c | 115 +- trunk/drivers/gpu/drm/exynos/exynos_drm_buf.h | 4 +- .../drivers/gpu/drm/exynos/exynos_drm_crtc.c | 5 + .../gpu/drm/exynos/exynos_drm_dmabuf.c | 150 +- trunk/drivers/gpu/drm/exynos/exynos_drm_drv.c | 117 +- trunk/drivers/gpu/drm/exynos/exynos_drm_drv.h | 43 +- .../gpu/drm/exynos/exynos_drm_encoder.c | 36 +- .../gpu/drm/exynos/exynos_drm_encoder.h | 1 + trunk/drivers/gpu/drm/exynos/exynos_drm_fb.c | 94 +- .../drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 74 +- .../drivers/gpu/drm/exynos/exynos_drm_fimc.c | 2001 +++++++++++++ .../drivers/gpu/drm/exynos/exynos_drm_fimc.h | 37 + .../drivers/gpu/drm/exynos/exynos_drm_fimd.c | 200 +- trunk/drivers/gpu/drm/exynos/exynos_drm_g2d.c | 495 +++- trunk/drivers/gpu/drm/exynos/exynos_drm_gem.c | 435 +-- trunk/drivers/gpu/drm/exynos/exynos_drm_gem.h | 58 +- trunk/drivers/gpu/drm/exynos/exynos_drm_gsc.c | 1870 ++++++++++++ trunk/drivers/gpu/drm/exynos/exynos_drm_gsc.h | 38 + .../drivers/gpu/drm/exynos/exynos_drm_hdmi.c | 59 +- .../drivers/gpu/drm/exynos/exynos_drm_hdmi.h | 3 +- .../drivers/gpu/drm/exynos/exynos_drm_iommu.c | 150 + .../drivers/gpu/drm/exynos/exynos_drm_iommu.h | 85 + trunk/drivers/gpu/drm/exynos/exynos_drm_ipp.c | 2060 +++++++++++++ trunk/drivers/gpu/drm/exynos/exynos_drm_ipp.h | 266 ++ .../drivers/gpu/drm/exynos/exynos_drm_plane.c | 12 +- .../gpu/drm/exynos/exynos_drm_rotator.c | 855 ++++++ .../gpu/drm/exynos/exynos_drm_rotator.h | 33 + .../drivers/gpu/drm/exynos/exynos_drm_vidi.c | 26 +- trunk/drivers/gpu/drm/exynos/exynos_hdmi.c | 324 ++- trunk/drivers/gpu/drm/exynos/exynos_hdmiphy.c | 4 +- trunk/drivers/gpu/drm/exynos/exynos_mixer.c | 376 ++- trunk/drivers/gpu/drm/exynos/regs-fimc.h | 669 +++++ trunk/drivers/gpu/drm/exynos/regs-gsc.h | 284 ++ trunk/drivers/gpu/drm/exynos/regs-hdmi.h | 22 +- trunk/drivers/gpu/drm/exynos/regs-rotator.h | 73 + trunk/drivers/gpu/drm/gma500/cdv_device.c | 4 +- trunk/drivers/gpu/drm/gma500/cdv_intel_dp.c | 2 +- trunk/drivers/gpu/drm/gma500/cdv_intel_hdmi.c | 6 +- trunk/drivers/gpu/drm/gma500/cdv_intel_lvds.c | 10 +- .../drivers/gpu/drm/gma500/mdfld_dsi_output.c | 12 +- .../gpu/drm/gma500/mdfld_intel_display.c | 2 +- trunk/drivers/gpu/drm/gma500/oaktrail.h | 6 + trunk/drivers/gpu/drm/gma500/oaktrail_crtc.c | 10 +- .../drivers/gpu/drm/gma500/oaktrail_device.c | 2 +- trunk/drivers/gpu/drm/gma500/oaktrail_hdmi.c | 365 ++- trunk/drivers/gpu/drm/gma500/oaktrail_lvds.c | 8 +- trunk/drivers/gpu/drm/gma500/psb_intel_lvds.c | 10 +- trunk/drivers/gpu/drm/gma500/psb_intel_sdvo.c | 24 +- trunk/drivers/gpu/drm/i2c/ch7006_drv.c | 20 +- trunk/drivers/gpu/drm/i915/i915_debugfs.c | 66 +- trunk/drivers/gpu/drm/i915/i915_dma.c | 95 +- trunk/drivers/gpu/drm/i915/i915_drv.c | 136 +- trunk/drivers/gpu/drm/i915/i915_drv.h | 472 +-- trunk/drivers/gpu/drm/i915/i915_gem.c | 292 +- trunk/drivers/gpu/drm/i915/i915_gem_context.c | 5 +- .../gpu/drm/i915/i915_gem_execbuffer.c | 64 +- trunk/drivers/gpu/drm/i915/i915_gem_gtt.c | 420 ++- trunk/drivers/gpu/drm/i915/i915_irq.c | 86 +- trunk/drivers/gpu/drm/i915/i915_reg.h | 308 +- trunk/drivers/gpu/drm/i915/i915_suspend.c | 763 ++--- trunk/drivers/gpu/drm/i915/i915_sysfs.c | 45 +- trunk/drivers/gpu/drm/i915/i915_trace.h | 10 +- trunk/drivers/gpu/drm/i915/intel_bios.c | 3 +- trunk/drivers/gpu/drm/i915/intel_crt.c | 62 +- trunk/drivers/gpu/drm/i915/intel_ddi.c | 1091 +++++-- trunk/drivers/gpu/drm/i915/intel_display.c | 2029 +++++++++---- trunk/drivers/gpu/drm/i915/intel_dp.c | 961 +++--- trunk/drivers/gpu/drm/i915/intel_drv.h | 123 +- trunk/drivers/gpu/drm/i915/intel_hdmi.c | 135 +- trunk/drivers/gpu/drm/i915/intel_i2c.c | 9 +- trunk/drivers/gpu/drm/i915/intel_lvds.c | 227 +- trunk/drivers/gpu/drm/i915/intel_modes.c | 11 +- trunk/drivers/gpu/drm/i915/intel_opregion.c | 2 + trunk/drivers/gpu/drm/i915/intel_panel.c | 90 +- trunk/drivers/gpu/drm/i915/intel_pm.c | 511 ++-- trunk/drivers/gpu/drm/i915/intel_ringbuffer.c | 250 +- trunk/drivers/gpu/drm/i915/intel_ringbuffer.h | 36 +- trunk/drivers/gpu/drm/i915/intel_sdvo.c | 128 +- trunk/drivers/gpu/drm/i915/intel_sprite.c | 101 +- trunk/drivers/gpu/drm/i915/intel_tv.c | 21 +- trunk/drivers/gpu/drm/mgag200/mgag200_main.c | 4 +- trunk/drivers/gpu/drm/mgag200/mgag200_ttm.c | 12 +- trunk/drivers/gpu/drm/nouveau/Makefile | 38 +- .../gpu/drm/nouveau/core/core/engctx.c | 15 + .../gpu/drm/nouveau/core/core/falcon.c | 247 ++ .../gpu/drm/nouveau/core/core/gpuobj.c | 4 +- trunk/drivers/gpu/drm/nouveau/core/core/mm.c | 17 +- .../gpu/drm/nouveau/core/engine/bsp/nv84.c | 108 +- .../gpu/drm/nouveau/core/engine/bsp/nvc0.c | 110 + .../gpu/drm/nouveau/core/engine/bsp/nve0.c | 110 + .../gpu/drm/nouveau/core/engine/copy/nva3.c | 124 +- .../gpu/drm/nouveau/core/engine/copy/nvc0.c | 167 +- .../gpu/drm/nouveau/core/engine/copy/nve0.c | 54 +- .../gpu/drm/nouveau/core/engine/crypt/nv84.c | 46 +- .../gpu/drm/nouveau/core/engine/crypt/nv98.c | 83 +- .../drm/nouveau/core/engine/disp/dacnv50.c | 88 + .../drm/nouveau/core/engine/disp/hdanva3.c | 48 + .../drm/nouveau/core/engine/disp/hdanvd0.c | 53 + .../drm/nouveau/core/engine/disp/hdminv84.c | 66 + .../drm/nouveau/core/engine/disp/hdminva3.c | 66 + .../drm/nouveau/core/engine/disp/hdminvd0.c | 62 + .../gpu/drm/nouveau/core/engine/disp/nv50.c | 1144 +++++++- .../gpu/drm/nouveau/core/engine/disp/nv50.h | 142 + .../gpu/drm/nouveau/core/engine/disp/nv84.c | 98 + .../gpu/drm/nouveau/core/engine/disp/nv94.c | 109 + .../gpu/drm/nouveau/core/engine/disp/nva0.c | 88 + .../gpu/drm/nouveau/core/engine/disp/nva3.c | 111 + .../gpu/drm/nouveau/core/engine/disp/nvd0.c | 884 +++++- .../gpu/drm/nouveau/core/engine/disp/nve0.c | 94 + .../drm/nouveau/core/engine/disp/sornv50.c | 112 + .../drm/nouveau/core/engine/disp/sornv94.c | 190 ++ .../drm/nouveau/core/engine/disp/sornvd0.c | 126 + .../gpu/drm/nouveau/core/engine/dmaobj/base.c | 71 +- .../gpu/drm/nouveau/core/engine/dmaobj/nv04.c | 68 +- .../gpu/drm/nouveau/core/engine/dmaobj/nv50.c | 126 +- .../gpu/drm/nouveau/core/engine/dmaobj/nvc0.c | 104 +- .../gpu/drm/nouveau/core/engine/dmaobj/nvd0.c | 122 + .../gpu/drm/nouveau/core/engine/fifo/base.c | 19 +- .../gpu/drm/nouveau/core/engine/fifo/nv04.c | 17 +- .../gpu/drm/nouveau/core/engine/fifo/nv10.c | 6 +- .../gpu/drm/nouveau/core/engine/fifo/nv17.c | 8 +- .../gpu/drm/nouveau/core/engine/fifo/nv40.c | 8 +- .../gpu/drm/nouveau/core/engine/fifo/nv50.c | 36 +- .../gpu/drm/nouveau/core/engine/fifo/nv84.c | 60 +- .../gpu/drm/nouveau/core/engine/fifo/nvc0.c | 26 +- .../gpu/drm/nouveau/core/engine/fifo/nve0.c | 21 +- .../gpu/drm/nouveau/core/engine/graph/nv04.c | 184 +- .../gpu/drm/nouveau/core/engine/graph/nv10.c | 10 +- .../gpu/drm/nouveau/core/engine/graph/nv20.c | 6 +- .../gpu/drm/nouveau/core/engine/graph/nv40.c | 38 +- .../gpu/drm/nouveau/core/engine/graph/nv50.c | 83 +- .../gpu/drm/nouveau/core/engine/graph/nvc0.c | 2 +- .../gpu/drm/nouveau/core/engine/graph/regs.h | 5 + .../gpu/drm/nouveau/core/engine/mpeg/nv31.c | 6 +- .../gpu/drm/nouveau/core/engine/mpeg/nv50.c | 1 - .../gpu/drm/nouveau/core/engine/ppp/nv98.c | 107 +- .../gpu/drm/nouveau/core/engine/ppp/nvc0.c | 110 + .../drm/nouveau/core/engine/software/nv04.c | 4 +- .../drm/nouveau/core/engine/software/nv10.c | 2 +- .../drm/nouveau/core/engine/software/nv50.c | 10 +- .../drm/nouveau/core/engine/software/nvc0.c | 10 +- .../gpu/drm/nouveau/core/engine/vp/nv84.c | 108 +- .../gpu/drm/nouveau/core/engine/vp/nvc0.c | 110 + .../gpu/drm/nouveau/core/engine/vp/nve0.c | 110 + .../gpu/drm/nouveau/core/include/core/class.h | 225 ++ .../drm/nouveau/core/include/core/engctx.h | 3 + .../drm/nouveau/core/include/core/falcon.h | 81 + .../drm/nouveau/core/include/core/gpuobj.h | 4 +- .../gpu/drm/nouveau/core/include/core/mm.h | 6 + .../drm/nouveau/core/include/core/object.h | 41 +- .../drm/nouveau/core/include/core/parent.h | 2 +- .../gpu/drm/nouveau/core/include/engine/bsp.h | 41 +- .../drm/nouveau/core/include/engine/copy.h | 39 +- .../drm/nouveau/core/include/engine/crypt.h | 39 - .../drm/nouveau/core/include/engine/disp.h | 5 + .../drm/nouveau/core/include/engine/dmaobj.h | 29 +- .../drm/nouveau/core/include/engine/fifo.h | 6 +- .../gpu/drm/nouveau/core/include/engine/ppp.h | 40 +- .../gpu/drm/nouveau/core/include/engine/vp.h | 41 +- .../nouveau/core/include/subdev/bios/dcb.h | 34 +- .../nouveau/core/include/subdev/bios/disp.h | 48 + .../drm/nouveau/core/include/subdev/bios/dp.h | 32 +- .../gpu/drm/nouveau/core/include/subdev/fb.h | 43 +- .../gpu/drm/nouveau/core/subdev/bar/base.c | 4 +- .../gpu/drm/nouveau/core/subdev/bios/base.c | 32 +- .../gpu/drm/nouveau/core/subdev/bios/dcb.c | 63 + .../gpu/drm/nouveau/core/subdev/bios/disp.c | 178 ++ .../gpu/drm/nouveau/core/subdev/bios/dp.c | 182 +- .../gpu/drm/nouveau/core/subdev/bios/gpio.c | 4 +- .../gpu/drm/nouveau/core/subdev/bios/init.c | 13 +- .../gpu/drm/nouveau/core/subdev/device/base.c | 28 +- .../gpu/drm/nouveau/core/subdev/device/nv10.c | 4 +- .../gpu/drm/nouveau/core/subdev/device/nv20.c | 6 +- .../gpu/drm/nouveau/core/subdev/device/nv30.c | 6 +- .../gpu/drm/nouveau/core/subdev/device/nv40.c | 28 +- .../gpu/drm/nouveau/core/subdev/device/nv50.c | 26 +- .../gpu/drm/nouveau/core/subdev/device/nvc0.c | 64 +- .../gpu/drm/nouveau/core/subdev/device/nve0.c | 17 +- .../drm/nouveau/core/subdev/devinit/nv50.c | 34 +- .../gpu/drm/nouveau/core/subdev/fb/base.c | 92 +- .../gpu/drm/nouveau/core/subdev/fb/nv04.c | 62 +- .../gpu/drm/nouveau/core/subdev/fb/nv10.c | 52 +- .../gpu/drm/nouveau/core/subdev/fb/nv1a.c | 89 + .../gpu/drm/nouveau/core/subdev/fb/nv20.c | 86 +- .../gpu/drm/nouveau/core/subdev/fb/nv25.c | 81 + .../gpu/drm/nouveau/core/subdev/fb/nv30.c | 51 +- .../gpu/drm/nouveau/core/subdev/fb/nv35.c | 82 + .../gpu/drm/nouveau/core/subdev/fb/nv36.c | 82 + .../gpu/drm/nouveau/core/subdev/fb/nv40.c | 131 +- .../gpu/drm/nouveau/core/subdev/fb/nv41.c | 106 + .../gpu/drm/nouveau/core/subdev/fb/nv44.c | 114 + .../gpu/drm/nouveau/core/subdev/fb/nv46.c | 79 + .../gpu/drm/nouveau/core/subdev/fb/nv47.c | 66 + .../gpu/drm/nouveau/core/subdev/fb/nv49.c | 84 + .../gpu/drm/nouveau/core/subdev/fb/nv4e.c | 72 + .../gpu/drm/nouveau/core/subdev/fb/nv50.c | 393 +-- .../gpu/drm/nouveau/core/subdev/fb/nvc0.c | 126 +- .../gpu/drm/nouveau/core/subdev/i2c/aux.c | 2 +- .../drm/nouveau/core/subdev/instmem/nv04.c | 8 +- .../drm/nouveau/core/subdev/instmem/nv40.c | 4 +- .../drm/nouveau/core/subdev/instmem/nv50.c | 4 +- .../gpu/drm/nouveau/core/subdev/mc/base.c | 8 +- .../gpu/drm/nouveau/core/subdev/mc/nv50.c | 1 + .../gpu/drm/nouveau/core/subdev/mc/nv98.c | 1 + .../gpu/drm/nouveau/core/subdev/mc/nvc0.c | 1 + trunk/drivers/gpu/drm/nouveau/nouveau_abi16.c | 27 +- trunk/drivers/gpu/drm/nouveau/nouveau_acpi.c | 30 +- trunk/drivers/gpu/drm/nouveau/nouveau_acpi.h | 4 + trunk/drivers/gpu/drm/nouveau/nouveau_bios.c | 235 +- trunk/drivers/gpu/drm/nouveau/nouveau_bios.h | 9 - trunk/drivers/gpu/drm/nouveau/nouveau_bo.c | 65 +- trunk/drivers/gpu/drm/nouveau/nouveau_bo.h | 2 +- trunk/drivers/gpu/drm/nouveau/nouveau_chan.c | 6 +- .../gpu/drm/nouveau/nouveau_connector.c | 25 +- .../gpu/drm/nouveau/nouveau_connector.h | 16 + trunk/drivers/gpu/drm/nouveau/nouveau_crtc.h | 10 - .../drivers/gpu/drm/nouveau/nouveau_display.c | 25 +- trunk/drivers/gpu/drm/nouveau/nouveau_dp.c | 141 +- trunk/drivers/gpu/drm/nouveau/nouveau_drm.c | 98 +- trunk/drivers/gpu/drm/nouveau/nouveau_drm.h | 4 +- .../drivers/gpu/drm/nouveau/nouveau_encoder.h | 7 +- trunk/drivers/gpu/drm/nouveau/nouveau_gem.c | 2 +- trunk/drivers/gpu/drm/nouveau/nouveau_hdmi.c | 261 -- trunk/drivers/gpu/drm/nouveau/nouveau_irq.c | 12 - trunk/drivers/gpu/drm/nouveau/nouveau_prime.c | 4 - trunk/drivers/gpu/drm/nouveau/nouveau_vga.c | 5 +- trunk/drivers/gpu/drm/nouveau/nv04_crtc.c | 6 +- trunk/drivers/gpu/drm/nouveau/nv04_display.c | 5 - trunk/drivers/gpu/drm/nouveau/nv10_fence.c | 7 +- trunk/drivers/gpu/drm/nouveau/nv17_tv.c | 16 +- trunk/drivers/gpu/drm/nouveau/nv50_crtc.c | 764 ----- trunk/drivers/gpu/drm/nouveau/nv50_cursor.c | 136 - trunk/drivers/gpu/drm/nouveau/nv50_dac.c | 321 -- trunk/drivers/gpu/drm/nouveau/nv50_display.c | 2579 ++++++++++++----- trunk/drivers/gpu/drm/nouveau/nv50_display.h | 71 +- trunk/drivers/gpu/drm/nouveau/nv50_evo.c | 403 --- trunk/drivers/gpu/drm/nouveau/nv50_evo.h | 120 - trunk/drivers/gpu/drm/nouveau/nv50_fence.c | 5 +- trunk/drivers/gpu/drm/nouveau/nv50_pm.c | 2 +- trunk/drivers/gpu/drm/nouveau/nv50_sor.c | 530 ---- trunk/drivers/gpu/drm/nouveau/nvc0_fence.c | 28 +- trunk/drivers/gpu/drm/nouveau/nvd0_display.c | 2141 -------------- trunk/drivers/gpu/drm/radeon/atombios_crtc.c | 2 + trunk/drivers/gpu/drm/radeon/atombios_dp.c | 149 +- .../gpu/drm/radeon/atombios_encoders.c | 2 +- trunk/drivers/gpu/drm/radeon/evergreen.c | 218 +- trunk/drivers/gpu/drm/radeon/evergreen_cs.c | 739 ++++- trunk/drivers/gpu/drm/radeon/evergreend.h | 131 + trunk/drivers/gpu/drm/radeon/ni.c | 357 ++- trunk/drivers/gpu/drm/radeon/nid.h | 86 + trunk/drivers/gpu/drm/radeon/r100.c | 23 +- trunk/drivers/gpu/drm/radeon/r600.c | 480 ++- trunk/drivers/gpu/drm/radeon/r600_cp.c | 7 +- trunk/drivers/gpu/drm/radeon/r600_cs.c | 357 ++- trunk/drivers/gpu/drm/radeon/r600_reg.h | 9 + trunk/drivers/gpu/drm/radeon/r600d.h | 86 +- trunk/drivers/gpu/drm/radeon/radeon.h | 38 +- trunk/drivers/gpu/drm/radeon/radeon_asic.c | 198 +- trunk/drivers/gpu/drm/radeon/radeon_asic.h | 34 + trunk/drivers/gpu/drm/radeon/radeon_combios.c | 6 +- .../gpu/drm/radeon/radeon_connectors.c | 62 +- trunk/drivers/gpu/drm/radeon/radeon_cp.c | 14 - trunk/drivers/gpu/drm/radeon/radeon_cs.c | 13 + trunk/drivers/gpu/drm/radeon/radeon_cursor.c | 17 +- trunk/drivers/gpu/drm/radeon/radeon_device.c | 1 + trunk/drivers/gpu/drm/radeon/radeon_display.c | 4 + trunk/drivers/gpu/drm/radeon/radeon_drv.c | 18 +- trunk/drivers/gpu/drm/radeon/radeon_drv.h | 1 - trunk/drivers/gpu/drm/radeon/radeon_fence.c | 2 +- trunk/drivers/gpu/drm/radeon/radeon_gart.c | 1 - trunk/drivers/gpu/drm/radeon/radeon_kms.c | 16 + trunk/drivers/gpu/drm/radeon/radeon_mode.h | 2 +- trunk/drivers/gpu/drm/radeon/radeon_object.c | 52 +- trunk/drivers/gpu/drm/radeon/radeon_object.h | 2 +- trunk/drivers/gpu/drm/radeon/radeon_test.c | 37 +- trunk/drivers/gpu/drm/radeon/radeon_ttm.c | 40 +- trunk/drivers/gpu/drm/radeon/rv515.c | 122 +- trunk/drivers/gpu/drm/radeon/rv770.c | 31 +- trunk/drivers/gpu/drm/radeon/rv770d.h | 71 + trunk/drivers/gpu/drm/radeon/si.c | 355 ++- trunk/drivers/gpu/drm/radeon/sid.h | 119 + .../drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 2 +- trunk/drivers/gpu/drm/tegra/Kconfig | 23 + trunk/drivers/gpu/drm/tegra/Makefile | 7 + trunk/drivers/gpu/drm/tegra/dc.c | 834 ++++++ trunk/drivers/gpu/drm/tegra/dc.h | 388 +++ trunk/drivers/gpu/drm/tegra/drm.c | 115 + trunk/drivers/gpu/drm/tegra/drm.h | 234 ++ trunk/drivers/gpu/drm/tegra/fb.c | 56 + trunk/drivers/gpu/drm/tegra/hdmi.c | 1334 +++++++++ trunk/drivers/gpu/drm/tegra/hdmi.h | 575 ++++ trunk/drivers/gpu/drm/tegra/host1x.c | 325 +++ trunk/drivers/gpu/drm/tegra/output.c | 272 ++ trunk/drivers/gpu/drm/tegra/rgb.c | 228 ++ trunk/drivers/gpu/drm/ttm/ttm_bo.c | 321 +- trunk/drivers/gpu/drm/ttm/ttm_bo_util.c | 8 +- trunk/drivers/gpu/drm/ttm/ttm_bo_vm.c | 4 +- trunk/drivers/gpu/drm/ttm/ttm_execbuf_util.c | 10 +- trunk/drivers/gpu/drm/ttm/ttm_memory.c | 1 - trunk/drivers/gpu/drm/ttm/ttm_object.c | 51 +- trunk/drivers/gpu/drm/udl/udl_connector.c | 14 +- trunk/drivers/gpu/drm/vmwgfx/Makefile | 3 +- .../gpu/drm/vmwgfx/svga3d_surfacedefs.h | 909 ++++++ trunk/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c | 23 +- trunk/drivers/gpu/drm/vmwgfx/vmwgfx_context.c | 274 ++ trunk/drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c | 22 +- trunk/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 92 +- trunk/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 153 +- trunk/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 917 ++++-- trunk/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c | 2 +- trunk/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c | 7 +- trunk/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 2 +- trunk/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c | 21 +- .../drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 2113 +++++--------- .../gpu/drm/vmwgfx/vmwgfx_resource_priv.h | 84 + trunk/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 4 +- trunk/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | 893 ++++++ trunk/drivers/gpu/vga/vga_switcheroo.c | 6 - trunk/drivers/mfd/omap-usb-host.c | 3 +- trunk/drivers/scsi/scsi_lib.c | 2 +- trunk/drivers/tty/serial/omap-serial.c | 3 +- trunk/fs/ext3/inode.c | 3 +- trunk/fs/ext3/super.c | 3 - trunk/fs/quota/quota.c | 4 + trunk/fs/udf/inode.c | 14 +- trunk/include/drm/drmP.h | 3 + trunk/include/drm/drm_crtc.h | 19 +- trunk/include/drm/drm_crtc_helper.h | 3 + trunk/include/drm/drm_dp_helper.h | 39 + trunk/include/drm/drm_hashtab.h | 14 + trunk/include/drm/exynos_drm.h | 26 + trunk/include/drm/intel-gtt.h | 7 +- trunk/include/drm/ttm/ttm_bo_api.h | 33 +- trunk/include/drm/ttm/ttm_bo_driver.h | 45 +- trunk/include/drm/ttm/ttm_execbuf_util.h | 3 - trunk/include/drm/ttm/ttm_memory.h | 2 - trunk/include/drm/ttm/ttm_object.h | 4 + trunk/include/linux/backing-dev.h | 4 + trunk/include/linux/blkdev.h | 17 +- trunk/include/linux/bsg-lib.h | 1 - trunk/include/linux/dma-attrs.h | 1 + trunk/include/linux/kref.h | 21 + .../linux/platform_data/serial-omap.h} | 0 trunk/include/linux/platform_data/usb-omap.h | 3 + trunk/include/uapi/drm/drm.h | 1 + trunk/include/uapi/drm/exynos_drm.h | 203 +- trunk/include/uapi/drm/i915_drm.h | 6 + trunk/include/uapi/drm/radeon_drm.h | 6 + trunk/include/video/omap-panel-tfp410.h | 2 +- trunk/kernel/sched/fair.c | 2 +- trunk/mm/backing-dev.c | 84 + 430 files changed, 39542 insertions(+), 15376 deletions(-) create mode 100644 trunk/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt delete mode 100644 trunk/arch/arm/plat-omap/debug-devices.c delete mode 100644 trunk/arch/arm/plat-omap/include/plat/debug-devices.h rename trunk/drivers/gpu/drm/{drm_dp_i2c_helper.c => drm_dp_helper.c} (58%) create mode 100644 trunk/drivers/gpu/drm/exynos/exynos_drm_fimc.c create mode 100644 trunk/drivers/gpu/drm/exynos/exynos_drm_fimc.h create mode 100644 trunk/drivers/gpu/drm/exynos/exynos_drm_gsc.c create mode 100644 trunk/drivers/gpu/drm/exynos/exynos_drm_gsc.h create mode 100644 trunk/drivers/gpu/drm/exynos/exynos_drm_iommu.c create mode 100644 trunk/drivers/gpu/drm/exynos/exynos_drm_iommu.h create mode 100644 trunk/drivers/gpu/drm/exynos/exynos_drm_ipp.c create mode 100644 trunk/drivers/gpu/drm/exynos/exynos_drm_ipp.h create mode 100644 trunk/drivers/gpu/drm/exynos/exynos_drm_rotator.c create mode 100644 trunk/drivers/gpu/drm/exynos/exynos_drm_rotator.h create mode 100644 trunk/drivers/gpu/drm/exynos/regs-fimc.h create mode 100644 trunk/drivers/gpu/drm/exynos/regs-gsc.h create mode 100644 trunk/drivers/gpu/drm/exynos/regs-rotator.h create mode 100644 trunk/drivers/gpu/drm/nouveau/core/core/falcon.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/bsp/nvc0.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/bsp/nve0.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/dacnv50.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/hdanva3.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/hdanvd0.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/hdminv84.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/hdminva3.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/hdminvd0.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/nv50.h create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/nv84.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/nv94.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/nva0.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/nva3.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/nve0.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/sornv50.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/sornv94.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/disp/sornvd0.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/dmaobj/nvd0.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/ppp/nvc0.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/vp/nvc0.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/engine/vp/nve0.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/include/core/falcon.h create mode 100644 trunk/drivers/gpu/drm/nouveau/core/include/subdev/bios/disp.h create mode 100644 trunk/drivers/gpu/drm/nouveau/core/subdev/bios/disp.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/subdev/fb/nv1a.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/subdev/fb/nv25.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/subdev/fb/nv35.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/subdev/fb/nv36.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/subdev/fb/nv41.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/subdev/fb/nv44.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/subdev/fb/nv46.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/subdev/fb/nv47.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/subdev/fb/nv49.c create mode 100644 trunk/drivers/gpu/drm/nouveau/core/subdev/fb/nv4e.c delete mode 100644 trunk/drivers/gpu/drm/nouveau/nouveau_hdmi.c delete mode 100644 trunk/drivers/gpu/drm/nouveau/nv50_crtc.c delete mode 100644 trunk/drivers/gpu/drm/nouveau/nv50_cursor.c delete mode 100644 trunk/drivers/gpu/drm/nouveau/nv50_dac.c delete mode 100644 trunk/drivers/gpu/drm/nouveau/nv50_evo.c delete mode 100644 trunk/drivers/gpu/drm/nouveau/nv50_evo.h delete mode 100644 trunk/drivers/gpu/drm/nouveau/nv50_sor.c delete mode 100644 trunk/drivers/gpu/drm/nouveau/nvd0_display.c create mode 100644 trunk/drivers/gpu/drm/tegra/Kconfig create mode 100644 trunk/drivers/gpu/drm/tegra/Makefile create mode 100644 trunk/drivers/gpu/drm/tegra/dc.c create mode 100644 trunk/drivers/gpu/drm/tegra/dc.h create mode 100644 trunk/drivers/gpu/drm/tegra/drm.c create mode 100644 trunk/drivers/gpu/drm/tegra/drm.h create mode 100644 trunk/drivers/gpu/drm/tegra/fb.c create mode 100644 trunk/drivers/gpu/drm/tegra/hdmi.c create mode 100644 trunk/drivers/gpu/drm/tegra/hdmi.h create mode 100644 trunk/drivers/gpu/drm/tegra/host1x.c create mode 100644 trunk/drivers/gpu/drm/tegra/output.c create mode 100644 trunk/drivers/gpu/drm/tegra/rgb.c create mode 100644 trunk/drivers/gpu/drm/vmwgfx/svga3d_surfacedefs.h create mode 100644 trunk/drivers/gpu/drm/vmwgfx/vmwgfx_context.c create mode 100644 trunk/drivers/gpu/drm/vmwgfx/vmwgfx_resource_priv.h create mode 100644 trunk/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c rename trunk/{arch/arm/plat-omap/include/plat/omap-serial.h => include/linux/platform_data/serial-omap.h} (100%) diff --git a/[refs] b/[refs] index 96b75ec922ae..ebf570e0fad1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 027c0a6af42efa4f2f6034421349bd26a3ca4923 +refs/heads/master: 1dc1d2e9485074d5f495beb7771a3ab20eb504e9 diff --git a/trunk/Documentation/DMA-attributes.txt b/trunk/Documentation/DMA-attributes.txt index f50309081ac7..e59480db9ee0 100644 --- a/trunk/Documentation/DMA-attributes.txt +++ b/trunk/Documentation/DMA-attributes.txt @@ -91,3 +91,12 @@ transferred to 'device' domain. This attribute can be also used for dma_unmap_{single,page,sg} functions family to force buffer to stay in device domain after releasing a mapping for it. Use this attribute with care! + +DMA_ATTR_FORCE_CONTIGUOUS +------------------------- + +By default DMA-mapping subsystem is allowed to assemble the buffer +allocated by dma_alloc_attrs() function from individual pages if it can +be mapped as contiguous chunk into device dma address space. By +specifing this attribute the allocated buffer is forced to be contiguous +also in physical memory. diff --git a/trunk/Documentation/DocBook/drm.tmpl b/trunk/Documentation/DocBook/drm.tmpl index b0300529ab13..4ee2304f82f9 100644 --- a/trunk/Documentation/DocBook/drm.tmpl +++ b/trunk/Documentation/DocBook/drm.tmpl @@ -1141,23 +1141,13 @@ int max_width, max_height; the page_flip operation will be called with a non-NULL event argument pointing to a drm_pending_vblank_event instance. Upon page - flip completion the driver must fill the - event::event - sequence, tv_sec - and tv_usec fields with the associated - vertical blanking count and timestamp, add the event to the - drm_file list of events to be signaled, and wake - up any waiting process. This can be performed with + flip completion the driver must call drm_send_vblank_event + to fill in the event and send to wake up any waiting processes. + This can be performed with event.sequence = drm_vblank_count_and_time(..., &now); - event->event.tv_sec = now.tv_sec; - event->event.tv_usec = now.tv_usec; - spin_lock_irqsave(&dev->event_lock, flags); - list_add_tail(&event->base.link, &event->base.file_priv->event_list); - wake_up_interruptible(&event->base.file_priv->event_wait); + ... + drm_send_vblank_event(dev, pipe, event); spin_unlock_irqrestore(&dev->event_lock, flags); ]]> @@ -1621,10 +1611,10 @@ void intel_crt_init(struct drm_device *dev) - + - Mid-layer Helper Functions + Mode Setting Helper Functions The CRTC, encoder and connector functions provided by the drivers implement the DRM API. They're called by the DRM core and ioctl handlers @@ -2106,6 +2096,21 @@ void intel_crt_init(struct drm_device *dev) + + Modeset Helper Functions Reference +!Edrivers/gpu/drm/drm_crtc_helper.c + + + fbdev Helper Functions Reference +!Pdrivers/gpu/drm/drm_fb_helper.c fbdev helpers +!Edrivers/gpu/drm/drm_fb_helper.c + + + Display Port Helper Functions Reference +!Pdrivers/gpu/drm/drm_dp_helper.c dp helpers +!Iinclude/drm/drm_dp_helper.h +!Edrivers/gpu/drm/drm_dp_helper.c + diff --git a/trunk/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt b/trunk/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt new file mode 100644 index 000000000000..b4fa934ae3a2 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt @@ -0,0 +1,191 @@ +NVIDIA Tegra host1x + +Required properties: +- compatible: "nvidia,tegra-host1x" +- reg: Physical base address and length of the controller's registers. +- interrupts: The interrupt outputs from the controller. +- #address-cells: The number of cells used to represent physical base addresses + in the host1x address space. Should be 1. +- #size-cells: The number of cells used to represent the size of an address + range in the host1x address space. Should be 1. +- ranges: The mapping of the host1x address space to the CPU address space. + +The host1x top-level node defines a number of children, each representing one +of the following host1x client modules: + +- mpe: video encoder + + Required properties: + - compatible: "nvidia,tegra-mpe" + - reg: Physical base address and length of the controller's registers. + - interrupts: The interrupt outputs from the controller. + +- vi: video input + + Required properties: + - compatible: "nvidia,tegra-vi" + - reg: Physical base address and length of the controller's registers. + - interrupts: The interrupt outputs from the controller. + +- epp: encoder pre-processor + + Required properties: + - compatible: "nvidia,tegra-epp" + - reg: Physical base address and length of the controller's registers. + - interrupts: The interrupt outputs from the controller. + +- isp: image signal processor + + Required properties: + - compatible: "nvidia,tegra-isp" + - reg: Physical base address and length of the controller's registers. + - interrupts: The interrupt outputs from the controller. + +- gr2d: 2D graphics engine + + Required properties: + - compatible: "nvidia,tegra-gr2d" + - reg: Physical base address and length of the controller's registers. + - interrupts: The interrupt outputs from the controller. + +- gr3d: 3D graphics engine + + Required properties: + - compatible: "nvidia,tegra-gr3d" + - reg: Physical base address and length of the controller's registers. + +- dc: display controller + + Required properties: + - compatible: "nvidia,tegra-dc" + - reg: Physical base address and length of the controller's registers. + - interrupts: The interrupt outputs from the controller. + + Each display controller node has a child node, named "rgb", that represents + the RGB output associated with the controller. It can take the following + optional properties: + - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing + - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection + - nvidia,edid: supplies a binary EDID blob + +- hdmi: High Definition Multimedia Interface + + Required properties: + - compatible: "nvidia,tegra-hdmi" + - reg: Physical base address and length of the controller's registers. + - interrupts: The interrupt outputs from the controller. + - vdd-supply: regulator for supply voltage + - pll-supply: regulator for PLL + + Optional properties: + - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing + - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection + - nvidia,edid: supplies a binary EDID blob + +- tvo: TV encoder output + + Required properties: + - compatible: "nvidia,tegra-tvo" + - reg: Physical base address and length of the controller's registers. + - interrupts: The interrupt outputs from the controller. + +- dsi: display serial interface + + Required properties: + - compatible: "nvidia,tegra-dsi" + - reg: Physical base address and length of the controller's registers. + +Example: + +/ { + ... + + host1x { + compatible = "nvidia,tegra20-host1x", "simple-bus"; + reg = <0x50000000 0x00024000>; + interrupts = <0 65 0x04 /* mpcore syncpt */ + 0 67 0x04>; /* mpcore general */ + + #address-cells = <1>; + #size-cells = <1>; + + ranges = <0x54000000 0x54000000 0x04000000>; + + mpe { + compatible = "nvidia,tegra20-mpe"; + reg = <0x54040000 0x00040000>; + interrupts = <0 68 0x04>; + }; + + vi { + compatible = "nvidia,tegra20-vi"; + reg = <0x54080000 0x00040000>; + interrupts = <0 69 0x04>; + }; + + epp { + compatible = "nvidia,tegra20-epp"; + reg = <0x540c0000 0x00040000>; + interrupts = <0 70 0x04>; + }; + + isp { + compatible = "nvidia,tegra20-isp"; + reg = <0x54100000 0x00040000>; + interrupts = <0 71 0x04>; + }; + + gr2d { + compatible = "nvidia,tegra20-gr2d"; + reg = <0x54140000 0x00040000>; + interrupts = <0 72 0x04>; + }; + + gr3d { + compatible = "nvidia,tegra20-gr3d"; + reg = <0x54180000 0x00040000>; + }; + + dc@54200000 { + compatible = "nvidia,tegra20-dc"; + reg = <0x54200000 0x00040000>; + interrupts = <0 73 0x04>; + + rgb { + status = "disabled"; + }; + }; + + dc@54240000 { + compatible = "nvidia,tegra20-dc"; + reg = <0x54240000 0x00040000>; + interrupts = <0 74 0x04>; + + rgb { + status = "disabled"; + }; + }; + + hdmi { + compatible = "nvidia,tegra20-hdmi"; + reg = <0x54280000 0x00040000>; + interrupts = <0 75 0x04>; + status = "disabled"; + }; + + tvo { + compatible = "nvidia,tegra20-tvo"; + reg = <0x542c0000 0x00040000>; + interrupts = <0 76 0x04>; + status = "disabled"; + }; + + dsi { + compatible = "nvidia,tegra20-dsi"; + reg = <0x54300000 0x00040000>; + status = "disabled"; + }; + }; + + ... +}; diff --git a/trunk/Documentation/kref.txt b/trunk/Documentation/kref.txt index 48ba715d5a63..ddf85a5dde0c 100644 --- a/trunk/Documentation/kref.txt +++ b/trunk/Documentation/kref.txt @@ -213,3 +213,91 @@ presentation on krefs, which can be found at: and: http://www.kroah.com/linux/talks/ols_2004_kref_talk/ + +The above example could also be optimized using kref_get_unless_zero() in +the following way: + +static struct my_data *get_entry() +{ + struct my_data *entry = NULL; + mutex_lock(&mutex); + if (!list_empty(&q)) { + entry = container_of(q.next, struct my_data, link); + if (!kref_get_unless_zero(&entry->refcount)) + entry = NULL; + } + mutex_unlock(&mutex); + return entry; +} + +static void release_entry(struct kref *ref) +{ + struct my_data *entry = container_of(ref, struct my_data, refcount); + + mutex_lock(&mutex); + list_del(&entry->link); + mutex_unlock(&mutex); + kfree(entry); +} + +static void put_entry(struct my_data *entry) +{ + kref_put(&entry->refcount, release_entry); +} + +Which is useful to remove the mutex lock around kref_put() in put_entry(), but +it's important that kref_get_unless_zero is enclosed in the same critical +section that finds the entry in the lookup table, +otherwise kref_get_unless_zero may reference already freed memory. +Note that it is illegal to use kref_get_unless_zero without checking its +return value. If you are sure (by already having a valid pointer) that +kref_get_unless_zero() will return true, then use kref_get() instead. + +The function kref_get_unless_zero also makes it possible to use rcu +locking for lookups in the above example: + +struct my_data +{ + struct rcu_head rhead; + . + struct kref refcount; + . + . +}; + +static struct my_data *get_entry_rcu() +{ + struct my_data *entry = NULL; + rcu_read_lock(); + if (!list_empty(&q)) { + entry = container_of(q.next, struct my_data, link); + if (!kref_get_unless_zero(&entry->refcount)) + entry = NULL; + } + rcu_read_unlock(); + return entry; +} + +static void release_entry_rcu(struct kref *ref) +{ + struct my_data *entry = container_of(ref, struct my_data, refcount); + + mutex_lock(&mutex); + list_del_rcu(&entry->link); + mutex_unlock(&mutex); + kfree_rcu(entry, rhead); +} + +static void put_entry(struct my_data *entry) +{ + kref_put(&entry->refcount, release_entry_rcu); +} + +But note that the struct kref member needs to remain in valid memory for a +rcu grace period after release_entry_rcu was called. That can be accomplished +by using kfree_rcu(entry, rhead) as done above, or by calling synchronize_rcu() +before using kfree, but note that synchronize_rcu() may sleep for a +substantial amount of time. + + +Thomas Hellstrom diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index d9c31b906ac9..6892b26025ba 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -2549,6 +2549,15 @@ S: Supported F: drivers/gpu/drm/exynos F: include/drm/exynos* +DRM DRIVERS FOR NVIDIA TEGRA +M: Thierry Reding +L: dri-devel@lists.freedesktop.org +L: linux-tegra@vger.kernel.org +T: git git://gitorious.org/thierryreding/linux.git +S: Maintained +F: drivers/gpu/drm/tegra/ +F: Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt + DSCC4 DRIVER M: Francois Romieu L: netdev@vger.kernel.org diff --git a/trunk/arch/arm/boot/dts/Makefile b/trunk/arch/arm/boot/dts/Makefile index 0f441740c22a..d077ef8426df 100644 --- a/trunk/arch/arm/boot/dts/Makefile +++ b/trunk/arch/arm/boot/dts/Makefile @@ -107,6 +107,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \ omap3-evm.dtb \ omap3-tobi.dtb \ omap4-panda.dtb \ + omap4-panda-a4.dtb \ omap4-panda-es.dtb \ omap4-var-som.dtb \ omap4-sdp.dtb \ @@ -131,8 +132,8 @@ dtb-$(CONFIG_ARCH_SPEAR3XX)+= spear300-evb.dtb \ spear320-evb.dtb \ spear320-hmi.dtb dtb-$(CONFIG_ARCH_SPEAR6XX)+= spear600-evb.dtb -dtb-$(CONFIG_ARCH_SUNXI) += sun4i-cubieboard.dtb \ - sun5i-olinuxino.dtb +dtb-$(CONFIG_ARCH_SUNXI) += sun4i-a10-cubieboard.dtb \ + sun5i-a13-olinuxino.dtb dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \ tegra20-medcom-wide.dtb \ tegra20-paz00.dtb \ diff --git a/trunk/arch/arm/boot/dts/omap2420-h4.dts b/trunk/arch/arm/boot/dts/omap2420-h4.dts index 77b84e17c477..9b0d07746cba 100644 --- a/trunk/arch/arm/boot/dts/omap2420-h4.dts +++ b/trunk/arch/arm/boot/dts/omap2420-h4.dts @@ -15,6 +15,6 @@ memory { device_type = "memory"; - reg = <0x80000000 0x84000000>; /* 64 MB */ + reg = <0x80000000 0x4000000>; /* 64 MB */ }; }; diff --git a/trunk/arch/arm/boot/dts/sun4i-cubieboard.dts b/trunk/arch/arm/boot/dts/sun4i-cubieboard.dts index f4ca126ad994..5cab82540437 100644 --- a/trunk/arch/arm/boot/dts/sun4i-cubieboard.dts +++ b/trunk/arch/arm/boot/dts/sun4i-cubieboard.dts @@ -11,11 +11,11 @@ */ /dts-v1/; -/include/ "sun4i.dtsi" +/include/ "sun4i-a10.dtsi" / { model = "Cubietech Cubieboard"; - compatible = "cubietech,cubieboard", "allwinner,sun4i"; + compatible = "cubietech,a10-cubieboard", "allwinner,sun4i-a10"; aliases { serial0 = &uart0; diff --git a/trunk/arch/arm/boot/dts/sun5i-olinuxino.dts b/trunk/arch/arm/boot/dts/sun5i-olinuxino.dts index d6ff889a5d87..498a091a4ea2 100644 --- a/trunk/arch/arm/boot/dts/sun5i-olinuxino.dts +++ b/trunk/arch/arm/boot/dts/sun5i-olinuxino.dts @@ -12,11 +12,11 @@ */ /dts-v1/; -/include/ "sun5i.dtsi" +/include/ "sun5i-a13.dtsi" / { model = "Olimex A13-Olinuxino"; - compatible = "olimex,a13-olinuxino", "allwinner,sun5i"; + compatible = "olimex,a13-olinuxino", "allwinner,sun5i-a13"; chosen { bootargs = "earlyprintk console=ttyS0,115200"; diff --git a/trunk/arch/arm/mach-davinci/board-da850-evm.c b/trunk/arch/arm/mach-davinci/board-da850-evm.c index 7211772edd9d..0299915575a8 100644 --- a/trunk/arch/arm/mach-davinci/board-da850-evm.c +++ b/trunk/arch/arm/mach-davinci/board-da850-evm.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/arm/mach-exynos/common.h b/trunk/arch/arm/mach-exynos/common.h index dac146df79ac..04744f9c120f 100644 --- a/trunk/arch/arm/mach-exynos/common.h +++ b/trunk/arch/arm/mach-exynos/common.h @@ -25,7 +25,7 @@ void exynos_init_late(void); #ifdef CONFIG_PM_GENERIC_DOMAINS int exynos_pm_late_initcall(void); #else -static int exynos_pm_late_initcall(void) { return 0; } +static inline int exynos_pm_late_initcall(void) { return 0; } #endif #ifdef CONFIG_ARCH_EXYNOS4 diff --git a/trunk/arch/arm/mach-omap2/Kconfig b/trunk/arch/arm/mach-omap2/Kconfig index be0f62bf9037..41b581fd0213 100644 --- a/trunk/arch/arm/mach-omap2/Kconfig +++ b/trunk/arch/arm/mach-omap2/Kconfig @@ -26,6 +26,8 @@ config SOC_HAS_OMAP2_SDRC config SOC_HAS_REALTIME_COUNTER bool "Real time free running counter" + depends on SOC_OMAP5 + default y config ARCH_OMAP2 bool "TI OMAP2" @@ -79,7 +81,6 @@ config SOC_OMAP5 select ARM_GIC select CPU_V7 select HAVE_SMP - select SOC_HAS_REALTIME_COUNTER select COMMON_CLK comment "OMAP Core Type" diff --git a/trunk/arch/arm/mach-omap2/board-3430sdp.c b/trunk/arch/arm/mach-omap2/board-3430sdp.c index 7b201546834d..bb73afc9ac17 100644 --- a/trunk/arch/arm/mach-omap2/board-3430sdp.c +++ b/trunk/arch/arm/mach-omap2/board-3430sdp.c @@ -157,6 +157,7 @@ static struct omap_dss_device sdp3430_lcd_device = { static struct tfp410_platform_data dvi_panel = { .power_down_gpio = -1, + .i2c_bus_num = -1, }; static struct omap_dss_device sdp3430_dvi_device = { diff --git a/trunk/arch/arm/mach-omap2/board-am3517evm.c b/trunk/arch/arm/mach-omap2/board-am3517evm.c index 4be58fd071f6..f81a303b87ff 100644 --- a/trunk/arch/arm/mach-omap2/board-am3517evm.c +++ b/trunk/arch/arm/mach-omap2/board-am3517evm.c @@ -208,6 +208,7 @@ static struct omap_dss_device am3517_evm_tv_device = { static struct tfp410_platform_data dvi_panel = { .power_down_gpio = -1, + .i2c_bus_num = -1, }; static struct omap_dss_device am3517_evm_dvi_device = { diff --git a/trunk/arch/arm/mach-omap2/board-cm-t35.c b/trunk/arch/arm/mach-omap2/board-cm-t35.c index c8e37dc00892..b3102c2f4a3c 100644 --- a/trunk/arch/arm/mach-omap2/board-cm-t35.c +++ b/trunk/arch/arm/mach-omap2/board-cm-t35.c @@ -241,6 +241,7 @@ static struct omap_dss_device cm_t35_lcd_device = { static struct tfp410_platform_data dvi_panel = { .power_down_gpio = CM_T35_DVI_EN_GPIO, + .i2c_bus_num = -1, }; static struct omap_dss_device cm_t35_dvi_device = { diff --git a/trunk/arch/arm/mach-omap2/board-devkit8000.c b/trunk/arch/arm/mach-omap2/board-devkit8000.c index 7667eb749522..12865af25d3a 100644 --- a/trunk/arch/arm/mach-omap2/board-devkit8000.c +++ b/trunk/arch/arm/mach-omap2/board-devkit8000.c @@ -141,6 +141,7 @@ static struct omap_dss_device devkit8000_lcd_device = { static struct tfp410_platform_data dvi_panel = { .power_down_gpio = -1, + .i2c_bus_num = 1, }; static struct omap_dss_device devkit8000_dvi_device = { diff --git a/trunk/arch/arm/mach-omap2/board-h4.c b/trunk/arch/arm/mach-omap2/board-h4.c index 9a3878ec2256..3be1311f9e33 100644 --- a/trunk/arch/arm/mach-omap2/board-h4.c +++ b/trunk/arch/arm/mach-omap2/board-h4.c @@ -27,14 +27,12 @@ #include #include #include +#include #include #include #include -#include -#include - #include