diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-09 19:04:31 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-09 19:04:31 -0400 |
| commit | 2e17c5a97e231f3cb426f4b7895eab5be5c5442e (patch) | |
| tree | 80871817427250200d6931a45ccb4833c4add74a /include | |
| parent | 5f097cd249f00683442c3e265d6f27d80fc83563 (diff) | |
| parent | 774d8e34e46506222bb5e2888e3ef42b2775715f (diff) | |
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
Pull drm updates from Dave Airlie:
"Okay this is the big one, I was stalled on the fbdev pull req as I
stupidly let fbdev guys merge a patch I required to fix a warning with
some patches I had, they ended up merging the patch from the wrong
place, but the warning should be fixed. In future I'll just take the
patch myself!
Outside drm:
There are some snd changes for the HDMI audio interactions on haswell,
they've been acked for inclusion via my tree. This relies on the
wound/wait tree from Ingo which is already merged.
Major changes:
AMD finally released the dynamic power management code for all their
GPUs from r600->present day, this is great, off by default for now but
also a huge amount of code, in fact it is most of this pull request.
Since it landed there has been a lot of community testing and Alex has
sent a lot of fixes for any bugs found so far. I suspect radeon might
now be the biggest kernel driver ever :-P p.s. radeon.dpm=1 to enable
dynamic powermanagement for anyone.
New drivers:
Renesas r-car display unit.
Other highlights:
- core: GEM CMA prime support, use new w/w mutexs for TTM
reservations, cursor hotspot, doc updates
- dvo chips: chrontel 7010B support
- i915: Haswell (fbc, ips, vecs, watermarks, audio powerwell),
Valleyview (enabled by default, rc6), lots of pll reworking, 30bpp
support (this time for sure)
- nouveau: async buffer object deletion, context/register init
updates, kernel vp2 engine support, GF117 support, GK110 accel
support (with external nvidia ucode), context cleanups.
- exynos: memory leak fixes, Add S3C64XX SoC series support, device
tree updates, common clock framework support,
- qxl: cursor hotspot support, multi-monitor support, suspend/resume
support
- mgag200: hw cursor support, g200 mode limiting
- shmobile: prime support
- tegra: fixes mostly
I've been banging on this quite a lot due to the size of it, and it
seems to okay on everything I've tested it on."
* 'drm-next' of git://people.freedesktop.org/~airlied/linux: (811 commits)
drm/radeon/dpm: implement vblank_too_short callback for si
drm/radeon/dpm: implement vblank_too_short callback for cayman
drm/radeon/dpm: implement vblank_too_short callback for btc
drm/radeon/dpm: implement vblank_too_short callback for evergreen
drm/radeon/dpm: implement vblank_too_short callback for 7xx
drm/radeon/dpm: add checks against vblank time
drm/radeon/dpm: add helper to calculate vblank time
drm/radeon: remove stray line in old pm code
drm/radeon/dpm: fix display_gap programming on rv7xx
drm/nvc0/gr: fix gpc firmware regression
drm/nouveau: fix minor thinko causing bo moves to not be async on kepler
drm/radeon/dpm: implement force performance level for TN
drm/radeon/dpm: implement force performance level for ON/LN
drm/radeon/dpm: implement force performance level for SI
drm/radeon/dpm: implement force performance level for cayman
drm/radeon/dpm: implement force performance levels for 7xx/eg/btc
drm/radeon/dpm: add infrastructure to force performance levels
drm/radeon: fix surface setup on r1xx
drm/radeon: add support for 3d perf states on older asics
drm/radeon: set default clocks for SI when DPM is disabled
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/drm/drmP.h | 40 | ||||
| -rw-r--r-- | include/drm/drm_crtc.h | 37 | ||||
| -rw-r--r-- | include/drm/drm_fixed.h | 94 | ||||
| -rw-r--r-- | include/drm/drm_gem_cma_helper.h | 12 | ||||
| -rw-r--r-- | include/drm/drm_mm.h | 38 | ||||
| -rw-r--r-- | include/drm/drm_os_linux.h | 16 | ||||
| -rw-r--r-- | include/drm/drm_pciids.h | 24 | ||||
| -rw-r--r-- | include/drm/drm_rect.h | 167 | ||||
| -rw-r--r-- | include/drm/i915_powerwell.h | 36 | ||||
| -rw-r--r-- | include/drm/ttm/ttm_bo_api.h | 37 | ||||
| -rw-r--r-- | include/drm/ttm/ttm_bo_driver.h | 169 | ||||
| -rw-r--r-- | include/drm/ttm/ttm_execbuf_util.h | 12 | ||||
| -rw-r--r-- | include/linux/io.h | 25 | ||||
| -rw-r--r-- | include/linux/platform_data/rcar-du.h | 54 | ||||
| -rw-r--r-- | include/linux/reservation.h | 62 | ||||
| -rw-r--r-- | include/uapi/drm/drm.h | 1 | ||||
| -rw-r--r-- | include/uapi/drm/drm_mode.h | 13 | ||||
| -rw-r--r-- | include/uapi/drm/i915_drm.h | 3 | ||||
| -rw-r--r-- | include/uapi/drm/tegra_drm.h | 2 | ||||
| -rw-r--r-- | include/video/display_timing.h | 1 | ||||
| -rw-r--r-- | include/video/uvesafb.h | 1 |
21 files changed, 646 insertions, 198 deletions
diff --git a/include/drm/drmP.h b/include/drm/drmP.h index 63d17ee9eb48..12083dc862a9 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h | |||
| @@ -55,16 +55,13 @@ | |||
| 55 | #include <linux/mm.h> | 55 | #include <linux/mm.h> |
| 56 | #include <linux/cdev.h> | 56 | #include <linux/cdev.h> |
| 57 | #include <linux/mutex.h> | 57 | #include <linux/mutex.h> |
| 58 | #include <linux/io.h> | ||
| 58 | #include <linux/slab.h> | 59 | #include <linux/slab.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 |
| 62 | #include <asm/io.h> | ||
| 63 | #include <asm/mman.h> | 63 | #include <asm/mman.h> |
| 64 | #include <asm/uaccess.h> | 64 | #include <asm/uaccess.h> |
| 65 | #ifdef CONFIG_MTRR | ||
| 66 | #include <asm/mtrr.h> | ||
| 67 | #endif | ||
| 68 | #if defined(CONFIG_AGP) || defined(CONFIG_AGP_MODULE) | 65 | #if defined(CONFIG_AGP) || defined(CONFIG_AGP_MODULE) |
| 69 | #include <linux/types.h> | 66 | #include <linux/types.h> |
| 70 | #include <linux/agp_backend.h> | 67 | #include <linux/agp_backend.h> |
| @@ -933,12 +930,15 @@ struct drm_driver { | |||
| 933 | struct dma_buf *dma_buf); | 930 | struct dma_buf *dma_buf); |
| 934 | /* low-level interface used by drm_gem_prime_{import,export} */ | 931 | /* low-level interface used by drm_gem_prime_{import,export} */ |
| 935 | int (*gem_prime_pin)(struct drm_gem_object *obj); | 932 | int (*gem_prime_pin)(struct drm_gem_object *obj); |
| 933 | void (*gem_prime_unpin)(struct drm_gem_object *obj); | ||
| 936 | struct sg_table *(*gem_prime_get_sg_table)(struct drm_gem_object *obj); | 934 | struct sg_table *(*gem_prime_get_sg_table)(struct drm_gem_object *obj); |
| 937 | struct drm_gem_object *(*gem_prime_import_sg_table)( | 935 | struct drm_gem_object *(*gem_prime_import_sg_table)( |
| 938 | struct drm_device *dev, size_t size, | 936 | struct drm_device *dev, size_t size, |
| 939 | struct sg_table *sgt); | 937 | struct sg_table *sgt); |
| 940 | void *(*gem_prime_vmap)(struct drm_gem_object *obj); | 938 | void *(*gem_prime_vmap)(struct drm_gem_object *obj); |
| 941 | void (*gem_prime_vunmap)(struct drm_gem_object *obj, void *vaddr); | 939 | void (*gem_prime_vunmap)(struct drm_gem_object *obj, void *vaddr); |
| 940 | int (*gem_prime_mmap)(struct drm_gem_object *obj, | ||
| 941 | struct vm_area_struct *vma); | ||
| 942 | 942 | ||
| 943 | /* vga arb irq handler */ | 943 | /* vga arb irq handler */ |
| 944 | void (*vgaarb_irq)(struct drm_device *dev, bool state); | 944 | void (*vgaarb_irq)(struct drm_device *dev, bool state); |
| @@ -1250,37 +1250,8 @@ static inline int drm_core_has_MTRR(struct drm_device *dev) | |||
| 1250 | { | 1250 | { |
| 1251 | return drm_core_check_feature(dev, DRIVER_USE_MTRR); | 1251 | return drm_core_check_feature(dev, DRIVER_USE_MTRR); |
| 1252 | } | 1252 | } |
| 1253 | |||
| 1254 | #define DRM_MTRR_WC MTRR_TYPE_WRCOMB | ||
| 1255 | |||
| 1256 | static inline int drm_mtrr_add(unsigned long offset, unsigned long size, | ||
| 1257 | unsigned int flags) | ||
| 1258 | { | ||
| 1259 | return mtrr_add(offset, size, flags, 1); | ||
| 1260 | } | ||
| 1261 | |||
| 1262 | static inline int drm_mtrr_del(int handle, unsigned long offset, | ||
| 1263 | unsigned long size, unsigned int flags) | ||
| 1264 | { | ||
| 1265 | return mtrr_del(handle, offset, size); | ||
| 1266 | } | ||
| 1267 | |||
| 1268 | #else | 1253 | #else |
| 1269 | #define drm_core_has_MTRR(dev) (0) | 1254 | #define drm_core_has_MTRR(dev) (0) |
| 1270 | |||
| 1271 | #define DRM_MTRR_WC 0 | ||
| 1272 | |||
| 1273 | static inline int drm_mtrr_add(unsigned long offset, unsigned long size, | ||
| 1274 | unsigned int flags) | ||
| 1275 | { | ||
| 1276 | return 0; | ||
| 1277 | } | ||
| 1278 | |||
| 1279 | static inline int drm_mtrr_del(int handle, unsigned long offset, | ||
| 1280 | unsigned long size, unsigned int flags) | ||
| 1281 | { | ||
| 1282 | return 0; | ||
| 1283 | } | ||
| 1284 | #endif | 1255 | #endif |
| 1285 | 1256 | ||
| 1286 | static inline void drm_device_set_unplugged(struct drm_device *dev) | 1257 | static inline void drm_device_set_unplugged(struct drm_device *dev) |
| @@ -1630,7 +1601,6 @@ extern void drm_sysfs_destroy(void); | |||
| 1630 | extern int drm_sysfs_device_add(struct drm_minor *minor); | 1601 | extern int drm_sysfs_device_add(struct drm_minor *minor); |
| 1631 | extern void drm_sysfs_hotplug_event(struct drm_device *dev); | 1602 | extern void drm_sysfs_hotplug_event(struct drm_device *dev); |
| 1632 | extern void drm_sysfs_device_remove(struct drm_minor *minor); | 1603 | extern void drm_sysfs_device_remove(struct drm_minor *minor); |
| 1633 | extern char *drm_get_connector_status_name(enum drm_connector_status status); | ||
| 1634 | extern int drm_sysfs_connector_add(struct drm_connector *connector); | 1604 | extern int drm_sysfs_connector_add(struct drm_connector *connector); |
| 1635 | extern void drm_sysfs_connector_remove(struct drm_connector *connector); | 1605 | extern void drm_sysfs_connector_remove(struct drm_connector *connector); |
| 1636 | 1606 | ||
| @@ -1648,6 +1618,8 @@ int drm_gem_private_object_init(struct drm_device *dev, | |||
| 1648 | void drm_gem_object_handle_free(struct drm_gem_object *obj); | 1618 | void drm_gem_object_handle_free(struct drm_gem_object *obj); |
| 1649 | void drm_gem_vm_open(struct vm_area_struct *vma); | 1619 | void drm_gem_vm_open(struct vm_area_struct *vma); |
| 1650 | void drm_gem_vm_close(struct vm_area_struct *vma); | 1620 | void drm_gem_vm_close(struct vm_area_struct *vma); |
| 1621 | int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size, | ||
| 1622 | struct vm_area_struct *vma); | ||
| 1651 | int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma); | 1623 | int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma); |
| 1652 | 1624 | ||
| 1653 | #include <drm/drm_global.h> | 1625 | #include <drm/drm_global.h> |
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index adb3f9b625f6..fa12a2fa4293 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h | |||
| @@ -339,6 +339,9 @@ struct drm_crtc_funcs { | |||
| 339 | /* cursor controls */ | 339 | /* cursor controls */ |
| 340 | int (*cursor_set)(struct drm_crtc *crtc, struct drm_file *file_priv, | 340 | int (*cursor_set)(struct drm_crtc *crtc, struct drm_file *file_priv, |
| 341 | uint32_t handle, uint32_t width, uint32_t height); | 341 | uint32_t handle, uint32_t width, uint32_t height); |
| 342 | int (*cursor_set2)(struct drm_crtc *crtc, struct drm_file *file_priv, | ||
| 343 | uint32_t handle, uint32_t width, uint32_t height, | ||
| 344 | int32_t hot_x, int32_t hot_y); | ||
| 342 | int (*cursor_move)(struct drm_crtc *crtc, int x, int y); | 345 | int (*cursor_move)(struct drm_crtc *crtc, int x, int y); |
| 343 | 346 | ||
| 344 | /* Set gamma on the CRTC */ | 347 | /* Set gamma on the CRTC */ |
| @@ -409,6 +412,10 @@ struct drm_crtc { | |||
| 409 | /* framebuffer the connector is currently bound to */ | 412 | /* framebuffer the connector is currently bound to */ |
| 410 | struct drm_framebuffer *fb; | 413 | struct drm_framebuffer *fb; |
| 411 | 414 | ||
| 415 | /* Temporary tracking of the old fb while a modeset is ongoing. Used | ||
| 416 | * by drm_mode_set_config_internal to implement correct refcounting. */ | ||
| 417 | struct drm_framebuffer *old_fb; | ||
| 418 | |||
| 412 | bool enabled; | 419 | bool enabled; |
| 413 | 420 | ||
| 414 | /* Requested mode from modesetting. */ | 421 | /* Requested mode from modesetting. */ |
| @@ -654,11 +661,7 @@ struct drm_plane_funcs { | |||
| 654 | * @format_count: number of formats supported | 661 | * @format_count: number of formats supported |
| 655 | * @crtc: currently bound CRTC | 662 | * @crtc: currently bound CRTC |
| 656 | * @fb: currently bound fb | 663 | * @fb: currently bound fb |
| 657 | * @gamma_size: size of gamma table | ||
| 658 | * @gamma_store: gamma correction table | ||
| 659 | * @enabled: enabled flag | ||
| 660 | * @funcs: helper functions | 664 | * @funcs: helper functions |
| 661 | * @helper_private: storage for drver layer | ||
