aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-01-29 23:49:12 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-01-29 23:49:12 -0500
commit9b0cd304f26b9fca140de15deeac2bf357d1f388 (patch)
tree03a0d74614865a5b776b2a98a433232013b1d369 /include
parentca2a650f3dfdc30d71d21bcbb04d2d057779f3f9 (diff)
parentef64cf9d06049e4e9df661f3be60b217e476bee1 (diff)
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
Pull drm updates from Dave Airlie: "Been a bit busy, first week of kids school, and waiting on other trees to go in before I could send this, so its a bit later than I'd normally like. Highlights: - core: timestamp fixes, lots of misc cleanups - new drivers: bochs virtual vga - vmwgfx: major overhaul for their nextgen virt gpu. - i915: runtime D3 on HSW, watermark fixes, power well work, fbc fixes, bdw is no longer prelim. - nouveau: gk110/208 acceleration, more pm groundwork, old overlay support - radeon: dpm rework and clockgating for CIK, pci config reset, big endian fixes - tegra: panel support and DSI support, build as module, prime. - armada, omap, gma500, rcar, exynos, mgag200, cirrus, ast: fixes - msm: hdmi support for mdp5" * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (595 commits) drm/nouveau: resume display if any later suspend bits fail drm/nouveau: fix lock unbalance in nouveau_crtc_page_flip drm/nouveau: implement hooks for needed for drm vblank timestamping support drm/nouveau/disp: add a method to fetch info needed by drm vblank timestamping drm/nv50: fill in crtc mode struct members from crtc_mode_fixup drm/radeon/dce8: workaround for atom BlankCrtc table drm/radeon/DCE4+: clear bios scratch dpms bit (v2) drm/radeon: set si_notify_smc_display_change properly drm/radeon: fix DAC interrupt handling on DCE5+ drm/radeon: clean up active vram sizing drm/radeon: skip async dma init on r6xx drm/radeon/runpm: don't runtime suspend non-PX cards drm/radeon: add ring to fence trace functions drm/radeon: add missing trace point drm/radeon: fix VMID use tracking drm: ast,cirrus,mgag200: use drm_can_sleep drm/gma500: Lock struct_mutex around cursor updates drm/i915: Fix the offset issue for the stolen GEM objects DRM: armada: fix missing DRM_KMS_FB_HELPER select drm/i915: Decouple GPU error reporting from ring initialisation ...
Diffstat (limited to 'include')
-rw-r--r--include/drm/drmP.h81
-rw-r--r--include/drm/drm_agpsupport.h33
-rw-r--r--include/drm/drm_crtc.h30
-rw-r--r--include/drm/drm_crtc_helper.h4
-rw-r--r--include/drm/drm_dp_helper.h35
-rw-r--r--include/drm/drm_mipi_dsi.h158
-rw-r--r--include/drm/drm_os_linux.h37
-rw-r--r--include/drm/drm_panel.h82
-rw-r--r--include/drm/ttm/ttm_bo_driver.h9
-rw-r--r--include/drm/ttm/ttm_object.h18
-rw-r--r--include/linux/fb.h4
-rw-r--r--include/linux/host1x.h6
-rw-r--r--include/uapi/drm/drm.h1
-rw-r--r--include/uapi/drm/i915_drm.h21
-rw-r--r--include/uapi/drm/radeon_drm.h2
-rw-r--r--include/uapi/drm/vmwgfx_drm.h260
16 files changed, 668 insertions, 113 deletions
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 1d4a920ef7ff..04086c5be930 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -56,6 +56,7 @@
56#include <linux/mutex.h> 56#include <linux/mutex.h>
57#include <linux/io.h> 57#include <linux/io.h>
58#include <linux/slab.h> 58#include <linux/slab.h>
59#include <linux/ratelimit.h>
59#if defined(__alpha__) || defined(__powerpc__) 60#if defined(__alpha__) || defined(__powerpc__)
60#include <asm/pgtable.h> /* For pte_wrprotect */ 61#include <asm/pgtable.h> /* For pte_wrprotect */
61#endif 62#endif
@@ -136,7 +137,6 @@ int drm_err(const char *func, const char *format, ...);
136 137
137/* driver capabilities and requirements mask */ 138/* driver capabilities and requirements mask */
138#define DRIVER_USE_AGP 0x1 139#define DRIVER_USE_AGP 0x1
139#define DRIVER_REQUIRE_AGP 0x2
140#define DRIVER_PCI_DMA 0x8 140#define DRIVER_PCI_DMA 0x8
141#define DRIVER_SG 0x10 141#define DRIVER_SG 0x10
142#define DRIVER_HAVE_DMA 0x20 142#define DRIVER_HAVE_DMA 0x20
@@ -180,6 +180,22 @@ int drm_err(const char *func, const char *format, ...);
180#define DRM_ERROR(fmt, ...) \ 180#define DRM_ERROR(fmt, ...) \
181 drm_err(__func__, fmt, ##__VA_ARGS__) 181 drm_err(__func__, fmt, ##__VA_ARGS__)
182 182
183/**
184 * Rate limited error output. Like DRM_ERROR() but won't flood the log.
185 *
186 * \param fmt printf() like format string.
187 * \param arg arguments
188 */
189#define DRM_ERROR_RATELIMITED(fmt, ...) \
190({ \
191 static DEFINE_RATELIMIT_STATE(_rs, \
192 DEFAULT_RATELIMIT_INTERVAL, \
193 DEFAULT_RATELIMIT_BURST); \
194 \
195 if (__ratelimit(&_rs)) \
196 drm_err(__func__, fmt, ##__VA_ARGS__); \
197})
198
183#define DRM_INFO(fmt, ...) \ 199#define DRM_INFO(fmt, ...) \
184 printk(KERN_INFO "[" DRM_NAME "] " fmt, ##__VA_ARGS__) 200 printk(KERN_INFO "[" DRM_NAME "] " fmt, ##__VA_ARGS__)
185 201
@@ -422,7 +438,6 @@ struct drm_file {
422 struct pid *pid; 438 struct pid *pid;
423 kuid_t uid; 439 kuid_t uid;
424 drm_magic_t magic; 440 drm_magic_t magic;
425 unsigned long ioctl_count;
426 struct list_head lhead; 441 struct list_head lhead;
427 struct drm_minor *minor; 442 struct drm_minor *minor;
428 unsigned long lock_count; 443 unsigned long lock_count;
@@ -511,7 +526,7 @@ struct drm_device_dma {
511 */ 526 */
512struct drm_agp_mem { 527struct drm_agp_mem {
513 unsigned long handle; /**< handle */ 528 unsigned long handle; /**< handle */
514 DRM_AGP_MEM *memory; 529 struct agp_memory *memory;
515 unsigned long bound; /**< address */ 530 unsigned long bound; /**< address */
516 int pages; 531 int pages;
517 struct list_head head; 532 struct list_head head;
@@ -523,7 +538,7 @@ struct drm_agp_mem {
523 * \sa drm_agp_init() and drm_device::agp. 538 * \sa drm_agp_init() and drm_device::agp.
524 */ 539 */
525struct drm_agp_head { 540struct drm_agp_head {
526 DRM_AGP_KERN agp_info; /**< AGP device information */ 541 struct agp_kern_info agp_info; /**< AGP device information */
527 struct list_head memory; 542 struct list_head memory;
528 unsigned long mode; /**< AGP mode */ 543 unsigned long mode; /**< AGP mode */
529 struct agp_bridge_data *bridge; 544 struct agp_bridge_data *bridge;
@@ -607,13 +622,6 @@ struct drm_ati_pcigart_info {
607}; 622};
608 623
609/** 624/**
610 * GEM specific mm private for tracking GEM objects
611 */
612struct drm_gem_mm {
613 struct drm_vma_offset_manager vma_manager;
614};
615
616/**
617 * This structure defines the drm_mm memory object, which will be used by the 625 * This structure defines the drm_mm memory object, which will be used by the
618 * DRM for its buffer objects. 626 * DRM for its buffer objects.
619 */ 627 */
@@ -750,10 +758,6 @@ struct drm_bus {
750 int (*set_unique)(struct drm_device *dev, struct drm_master *master, 758 int (*set_unique)(struct drm_device *dev, struct drm_master *master,
751 struct drm_unique *unique); 759 struct drm_unique *unique);
752 int (*irq_by_busid)(struct drm_device *dev, struct drm_irq_busid *p); 760 int (*irq_by_busid)(struct drm_device *dev, struct drm_irq_busid *p);
753 /* hooks that are for PCI */
754 int (*agp_init)(struct drm_device *dev);
755 void (*agp_destroy)(struct drm_device *dev);
756
757}; 761};
758 762
759/** 763/**
@@ -841,6 +845,7 @@ struct drm_driver {
841 * 845 *
842 * \param dev DRM device. 846 * \param dev DRM device.
843 * \param crtc Id of the crtc to query. 847 * \param crtc Id of the crtc to query.
848 * \param flags Flags from the caller (DRM_CALLED_FROM_VBLIRQ or 0).
844 * \param *vpos Target location for current vertical scanout position. 849 * \param *vpos Target location for current vertical scanout position.
845 * \param *hpos Target location for current horizontal scanout position. 850 * \param *hpos Target location for current horizontal scanout position.
846 * \param *stime Target location for timestamp taken immediately before 851 * \param *stime Target location for timestamp taken immediately before
@@ -863,6 +868,7 @@ struct drm_driver {
863 * 868 *
864 */ 869 */
865 int (*get_scanout_position) (struct drm_device *dev, int crtc, 870 int (*get_scanout_position) (struct drm_device *dev, int crtc,
871 unsigned int flags,
866 int *vpos, int *hpos, ktime_t *stime, 872 int *vpos, int *hpos, ktime_t *stime,
867 ktime_t *etime); 873 ktime_t *etime);
868 874
@@ -903,7 +909,7 @@ struct drm_driver {
903 909
904 /* these have to be filled in */ 910 /* these have to be filled in */
905 911
906 irqreturn_t(*irq_handler) (DRM_IRQ_ARGS); 912 irqreturn_t(*irq_handler) (int irq, void *arg);
907 void (*irq_preinstall) (struct drm_device *dev); 913 void (*irq_preinstall) (struct drm_device *dev);
908 int (*irq_postinstall) (struct drm_device *dev); 914 int (*irq_postinstall) (struct drm_device *dev);
909 void (*irq_uninstall) (struct drm_device *dev); 915 void (*irq_uninstall) (struct drm_device *dev);
@@ -995,8 +1001,8 @@ struct drm_driver {
995 } kdriver; 1001 } kdriver;
996 struct drm_bus *bus; 1002 struct drm_bus *bus;
997 1003
998 /* List of devices hanging off this driver */ 1004 /* List of devices hanging off this driver with stealth attach. */
999 struct list_head device_list; 1005 struct list_head legacy_dev_list;
1000}; 1006};
1001 1007
1002#define DRM_MINOR_UNASSIGNED 0 1008#define DRM_MINOR_UNASSIGNED 0
@@ -1085,7 +1091,7 @@ struct drm_vblank_crtc {
1085 * may contain multiple heads. 1091 * may contain multiple heads.
1086 */ 1092 */
1087struct drm_device { 1093struct drm_device {
1088 struct list_head driver_item; /**< list of devices per driver */ 1094 struct list_head legacy_dev_