Merge tag 'drm-intel-next-2015-03-13-merge' of git://anongit.freedesktop.org/drm-intel into drm-next
drm-intel-next-2015-03-13-rebased: - EU count report param for gen9+ (Jeff McGee) - piles of pll/wm/... fixes for chv, finally out of preliminary hw support (Ville, Vijay) - gen9 rps support from Akash - more work to move towards atomic from Matt, Ander and others - runtime pm support for skl (Damien) - edp1.4 intermediate link clock support (Sonika) - use frontbuffer tracking for fbc (Paulo) - remove ilk rc6 (John Harrison) - a bunch of smaller things and fixes all over Includes backmerge because git rerere couldn't keep up any more. * tag 'drm-intel-next-2015-03-13-merge' of git://anongit.freedesktop.org/drm-intel: (366 commits) drm/i915: Make sure the primary plane is enabled before reading out the fb state drm/i915: Update DRIVER_DATE to 20150313 drm/i915: Fix vmap_batch page iterator overrun drm/i915: Export total subslice and EU counts drm/i915: redefine WARN_ON_ONCE to include the condition drm/i915/skl: Implement WaDisableHBR2 drm/i915: Remove the preliminary_hw_support shackles from CHV drm/i915: Read CHV_PLL_DW8 from the correct offset drm/i915: Rewrite IVB FDI bifurcation conflict checks drm/i915: Rewrite some some of the FDI lane checks drm/i915/skl: Enable the RPS interrupts programming drm/i915/skl: Enabling processing of Turbo interrupts drm/i915/skl: Updated the i915_frequency_info debugfs function drm/i915: Simplify the way BC bifurcation state consistency is kept drm/i915/skl: Updated the act_freq_mhz_show sysfs function drm/i915/skl: Updated the gen9_enable_rps function drm/i915/skl: Updated the gen6_rps_limits function drm/i915/skl: Restructured the gen6_set_rps_thresholds function drm/i915/skl: Updated the gen6_set_rps function drm/i915/skl: Updated the gen6_init_rps_frequencies function ...
This commit is contained in:
@@ -43,9 +43,10 @@
|
||||
#include "drm_crtc_internal.h"
|
||||
#include "drm_internal.h"
|
||||
|
||||
static struct drm_framebuffer *add_framebuffer_internal(struct drm_device *dev,
|
||||
struct drm_mode_fb_cmd2 *r,
|
||||
struct drm_file *file_priv);
|
||||
static struct drm_framebuffer *
|
||||
internal_framebuffer_create(struct drm_device *dev,
|
||||
struct drm_mode_fb_cmd2 *r,
|
||||
struct drm_file *file_priv);
|
||||
|
||||
/* Avoid boilerplate. I'm tired of typing. */
|
||||
#define DRM_ENUM_NAME_FN(fnname, list) \
|
||||
@@ -2943,13 +2944,11 @@ static int drm_mode_cursor_universal(struct drm_crtc *crtc,
|
||||
*/
|
||||
if (req->flags & DRM_MODE_CURSOR_BO) {
|
||||
if (req->handle) {
|
||||
fb = add_framebuffer_internal(dev, &fbreq, file_priv);
|
||||
fb = internal_framebuffer_create(dev, &fbreq, file_priv);
|
||||
if (IS_ERR(fb)) {
|
||||
DRM_DEBUG_KMS("failed to wrap cursor buffer in drm framebuffer\n");
|
||||
return PTR_ERR(fb);
|
||||
}
|
||||
|
||||
drm_framebuffer_reference(fb);
|
||||
} else {
|
||||
fb = NULL;
|
||||
}
|
||||
@@ -3308,9 +3307,10 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct drm_framebuffer *add_framebuffer_internal(struct drm_device *dev,
|
||||
struct drm_mode_fb_cmd2 *r,
|
||||
struct drm_file *file_priv)
|
||||
static struct drm_framebuffer *
|
||||
internal_framebuffer_create(struct drm_device *dev,
|
||||
struct drm_mode_fb_cmd2 *r,
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
struct drm_mode_config *config = &dev->mode_config;
|
||||
struct drm_framebuffer *fb;
|
||||
@@ -3348,12 +3348,6 @@ static struct drm_framebuffer *add_framebuffer_internal(struct drm_device *dev,
|
||||
return fb;
|
||||
}
|
||||
|
||||
mutex_lock(&file_priv->fbs_lock);
|
||||
r->fb_id = fb->base.id;
|
||||
list_add(&fb->filp_head, &file_priv->fbs);
|
||||
DRM_DEBUG_KMS("[FB:%d]\n", fb->base.id);
|
||||
mutex_unlock(&file_priv->fbs_lock);
|
||||
|
||||
return fb;
|
||||
}
|
||||
|
||||
@@ -3375,15 +3369,24 @@ static struct drm_framebuffer *add_framebuffer_internal(struct drm_device *dev,
|
||||
int drm_mode_addfb2(struct drm_device *dev,
|
||||
void *data, struct drm_file *file_priv)
|
||||
{
|
||||
struct drm_mode_fb_cmd2 *r = data;
|
||||
struct drm_framebuffer *fb;
|
||||
|
||||
if (!drm_core_check_feature(dev, DRIVER_MODESET))
|
||||
return -EINVAL;
|
||||
|
||||
fb = add_framebuffer_internal(dev, data, file_priv);
|
||||
fb = internal_framebuffer_create(dev, r, file_priv);
|
||||
if (IS_ERR(fb))
|
||||
return PTR_ERR(fb);
|
||||
|
||||
/* Transfer ownership to the filp for reaping on close */
|
||||
|
||||
DRM_DEBUG_KMS("[FB:%d]\n", fb->base.id);
|
||||
mutex_lock(&file_priv->fbs_lock);
|
||||
r->fb_id = fb->base.id;
|
||||
list_add(&fb->filp_head, &file_priv->fbs);
|
||||
mutex_unlock(&file_priv->fbs_lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user