diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-29 23:49:12 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-29 23:49:12 -0500 |
| commit | 9b0cd304f26b9fca140de15deeac2bf357d1f388 (patch) | |
| tree | 03a0d74614865a5b776b2a98a433232013b1d369 /include | |
| parent | ca2a650f3dfdc30d71d21bcbb04d2d057779f3f9 (diff) | |
| parent | ef64cf9d06049e4e9df661f3be60b217e476bee1 (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.h | 81 | ||||
| -rw-r--r-- | include/drm/drm_agpsupport.h | 33 | ||||
| -rw-r--r-- | include/drm/drm_crtc.h | 30 | ||||
| -rw-r--r-- | include/drm/drm_crtc_helper.h | 4 | ||||
| -rw-r--r-- | include/drm/drm_dp_helper.h | 35 | ||||
| -rw-r--r-- | include/drm/drm_mipi_dsi.h | 158 | ||||
| -rw-r--r-- | include/drm/drm_os_linux.h | 37 | ||||
| -rw-r--r-- | include/drm/drm_panel.h | 82 | ||||
| -rw-r--r-- | include/drm/ttm/ttm_bo_driver.h | 9 | ||||
| -rw-r--r-- | include/drm/ttm/ttm_object.h | 18 | ||||
| -rw-r--r-- | include/linux/fb.h | 4 | ||||
| -rw-r--r-- | include/linux/host1x.h | 6 | ||||
| -rw-r--r-- | include/uapi/drm/drm.h | 1 | ||||
| -rw-r--r-- | include/uapi/drm/i915_drm.h | 21 | ||||
| -rw-r--r-- | include/uapi/drm/radeon_drm.h | 2 | ||||
| -rw-r--r-- | include/uapi/drm/vmwgfx_drm.h | 260 |
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 | */ |
| 512 | struct drm_agp_mem { | 527 | struct 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 | */ |
| 525 | struct drm_agp_head { | 540 | struct 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 | */ | ||
| 612 | struct 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 | */ |
| 1087 | struct drm_device { | 1093 | struct drm_device { |
| 1088 | struct list_head driver_item; /**< list of devices per driver */ | 1094 | struct list_head legacy_dev_ |
