]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge tag 'drm-misc-next-2017-03-31' of git://anongit.freedesktop.org/git/drm-misc...
authorDave Airlie <airlied@redhat.com>
Mon, 3 Apr 2017 06:30:24 +0000 (16:30 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 3 Apr 2017 06:30:24 +0000 (16:30 +1000)
drm-misc for 4.12:

Core:
- Removed some fb subsampling dimension checks from core (Ville)
- Some MST slot cleanup (Dhinakaran)
- Extracted drm_debugfs.h & drm_ioctl.h from drmP.h (Daniel)
- Added drm_atomic_helper_shutdown() to compliment suspend/resume counterparts
  (Daniel)
- Pipe context through legacy modeset to remove legacy_backoff nasties (Daniel)
- Cleanups around vblank as well as allowing lockless counter reads (Chris W.)
- VGA Switcheroo added to MAINTAINERS with Lukas Wunner as reviewer (Lukas)

Drivers:
- Enhancements to rockchip driver probe (Jeffy) and dsi (Chris Z.)
- Thunderbolt external GPU awareness added (Lukas)

* tag 'drm-misc-next-2017-03-31' of git://anongit.freedesktop.org/git/drm-misc: (63 commits)
  apple-gmux: Don't switch external DP port on 2011+ MacBook Pros
  drm/nouveau: Don't register Thunderbolt eGPU with vga_switcheroo
  drm/amdgpu: Don't register Thunderbolt eGPU with vga_switcheroo
  drm/radeon: Don't register Thunderbolt eGPU with vga_switcheroo
  PCI: Recognize Thunderbolt devices
  MAINTAINERS: Add Lukas Wunner as reviewer for vga_switcheroo
  drm: Fix locking gotcha in page_flip ioctl
  drm: Clarify the role of plane_state argument to drm_simple update().
  drm: Clear e after kfree in drm_mode_page_flip_ioctl
  drm: Convert cmpxchg(bool) back to a two step operation
  drm/bridge: ti-tfp410: support hpd via gpio
  drm: use .hword to represent 16-bit numbers
  Revert unrelated part of "drm: simplify the locking in the GETCRTC ioctl"
  drm: Fixup failure paths in drm_atomic_helper_set_config
  drm: Peek at the current counter/timestamp for vblank queries
  drm: Refactor vblank sequence number comparison
  drm: vblank cannot be enabled if dev->irq_enabled is false
  drm: Mark up accesses of vblank->enabled outside of its spinlock
  drm: Make the decision to keep vblank irq enabled earlier
  drm/atomic-helper: Remove the backoff hack from set_config
  ...

1  2 
MAINTAINERS
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
drivers/gpu/drm/radeon/radeon_device.c
drivers/gpu/drm/radeon/radeon_kms.c
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c

diff --cc MAINTAINERS
Simple merge
Simple merge
index c18c81f63ac360b527fac5d748916b4efb80dd66,d492d57d53094a061ef0e2b735e3bca87efb5636..6078654d033b5af1f3be338ca1fa4fde9c9226d6
@@@ -2934,23 -2223,3 +2934,24 @@@ vmw_kms_create_implicit_placement_prope
                                          "implicit_placement", 0, 1);
  
  }
- int vmw_kms_set_config(struct drm_mode_set *set)
 +
 +
 +/**
 + * vmw_kms_set_config - Wrapper around drm_atomic_helper_set_config
 + *
 + * @set: The configuration to set.
 + *
 + * The vmwgfx Xorg driver doesn't assign the mode::type member, which
 + * when drm_mode_set_crtcinfo is called as part of the configuration setting
 + * causes it to return incorrect crtc dimensions causing severe problems in
 + * the vmwgfx modesetting. So explicitly clear that member before calling
 + * into drm_atomic_helper_set_config.
 + */
-       return drm_atomic_helper_set_config(set);
++int vmw_kms_set_config(struct drm_mode_set *set,
++                     struct drm_modeset_acquire_ctx *ctx)
 +{
 +      if (set && set->mode)
 +              set->mode->type = 0;
 +
++      return drm_atomic_helper_set_config(set, ctx);
 +}
index 9c161d29aaeb7d54651e0ed856d6e01bd874039f,cb36e1d70133e62486728d2d93707f0721bc6c93..0c226b2adea5e34f4007fad71395dcdae9b8e2ed
@@@ -453,6 -339,5 +453,7 @@@ int vmw_kms_stdu_dma(struct vmw_privat
                     bool to_surface,
                     bool interruptible);
  
- int vmw_kms_set_config(struct drm_mode_set *set);
++int vmw_kms_set_config(struct drm_mode_set *set,
++                     struct drm_modeset_acquire_ctx *ctx);
  
  #endif
index 2664e4c1675055457a1620503ecc7b5d09c8f94c,e9d3c4b92df7f2b80c51987d572e5f1c533f029b..8d7dc9def7c20ba5fe101dd55e5612e4f9e5d631
@@@ -308,9 -382,22 +308,10 @@@ static void vmw_sou_crtc_helper_disable
  }
  
  static int vmw_sou_crtc_page_flip(struct drm_crtc *crtc,
 -                                struct drm_framebuffer *fb,
 +                                struct drm_framebuffer *new_fb,
                                  struct drm_pending_vblank_event *event,
-                                 uint32_t flags)
+                                 uint32_t flags,
+                                 struct drm_modeset_acquire_ctx *ctx)
  {
        struct vmw_private *dev_priv = vmw_priv(crtc->dev);
        struct drm_framebuffer *old_fb = crtc->primary->fb;
        if (!vmw_kms_crtc_flippable(dev_priv, crtc))
                return -EINVAL;
  
 -      crtc->primary->fb = fb;
 +      flags &= ~DRM_MODE_PAGE_FLIP_ASYNC;
-       ret = drm_atomic_helper_page_flip(crtc, new_fb, NULL, flags);
++      ret = drm_atomic_helper_page_flip(crtc, new_fb, NULL, flags, ctx);
 +      if (ret) {
 +              DRM_ERROR("Page flip error %d.\n", ret);
 +              return ret;
 +      }
  
        /* do a full screen dirty update */
        vclips.x = crtc->x;
index e872ffe5f0dbb9026d2103b24495abbc3b3550bd,b2c9d6ce7ce42d899afe3997951bd260ebcb629c..bad31bdf09b6c1d8bd31663c7973e1ebb912f340
@@@ -496,19 -666,9 +497,19 @@@ static int vmw_stdu_crtc_page_flip(stru
        if (!stdu->defined || !vmw_kms_crtc_flippable(dev_priv, crtc))
                return -EINVAL;
  
 -      ret = vmw_stdu_bind_fb(dev_priv, crtc, &crtc->mode, new_fb);
 -      if (ret)
 +      /*
 +       * We're always async, but the helper doesn't know how to set async
 +       * so lie to the helper. Also, the helper expects someone
 +       * to pick the event up from the crtc state, and if nobody does,
 +       * it will free it. Since we handle the event in this function,
 +       * don't hand it to the helper.
 +       */
 +      flags &= ~DRM_MODE_PAGE_FLIP_ASYNC;
-       ret = drm_atomic_helper_page_flip(crtc, new_fb, NULL, flags);
++      ret = drm_atomic_helper_page_flip(crtc, new_fb, NULL, flags, ctx);
 +      if (ret) {
 +              DRM_ERROR("Page flip error %d.\n", ret);
                return ret;
 +      }
  
        if (stdu->base.is_implicit)
                vmw_kms_update_implicit_fb(dev_priv, crtc);