1. 05 12月, 2018 1 次提交
  2. 11 9月, 2018 1 次提交
  3. 20 6月, 2018 1 次提交
    • B
      drm: Add writeback connector type · 935774cd
      Brian Starkey 提交于
      Writeback connectors represent writeback engines which can write the
      CRTC output to a memory framebuffer. Add a writeback connector type and
      related support functions.
      
      Drivers should initialize a writeback connector with
      drm_writeback_connector_init() which takes care of setting up all the
      writeback-specific details on top of the normal functionality of
      drm_connector_init().
      
      Writeback connectors have a WRITEBACK_FB_ID property, used to set the
      output framebuffer, and a WRITEBACK_PIXEL_FORMATS blob used to expose the
      supported writeback formats to userspace.
      
      When a framebuffer is attached to a writeback connector with the
      WRITEBACK_FB_ID property, it is used only once (for the commit in which
      it was included), and userspace can never read back the value of
      WRITEBACK_FB_ID. WRITEBACK_FB_ID can only be set if the connector is
      attached to a CRTC.
      
      Changes since v1:
       - Added drm_writeback.c + documentation
       - Added helper to initialize writeback connector in one go
       - Added core checks
       - Squashed into a single commit
       - Dropped the client cap
       - Writeback framebuffers are no longer persistent
      
      Changes since v2:
       Daniel Vetter:
       - Subclass drm_connector to drm_writeback_connector
       - Relax check to allow CRTC to be set without an FB
       - Add some writeback_ prefixes
       - Drop PIXEL_FORMATS_SIZE property, as it was unnecessary
       Gustavo Padovan:
       - Add drm_writeback_job to handle writeback signalling centrally
      
      Changes since v3:
       - Rebased
       - Rename PIXEL_FORMATS -> WRITEBACK_PIXEL_FORMATS
      
      Chances since v4:
       - Embed a drm_encoder inside the drm_writeback_connector to
         reduce the amount of boilerplate code required from the drivers
         that are using it.
      
      Changes since v5:
       - Added Rob Clark's atomic_commit() vfunc to connector helper
         funcs, so that writeback jobs are committed from atomic helpers
       - Updated create_writeback_properties() signature to return an
         error code rather than a boolean false for failure.
       - Free writeback job with the connector state rather than when
         doing the cleanup_work()
      
      Changes since v7:
       - fix extraneous use of out_fence that is only introduced in a
         subsequent patch.
      
      Changes since v8:
       - whitespace changes pull from subsequent patch
      
      Changes since v9:
       - Revert the v6 changes that free the writeback job in the connector
         state cleanup and return to doing it in the cleanup_work() function
      Signed-off-by: NBrian Starkey <brian.starkey@arm.com>
      [rebased and fixed conflicts]
      Signed-off-by: NMihail Atanassov <mihail.atanassov@arm.com>
      [rebased and added atomic_commit() vfunc for writeback jobs]
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      Signed-off-by: NLiviu Dudau <liviu.dudau@arm.com>
      Reviewed-by: NEric Anholt <eric@anholt.net>
      Link: https://patchwork.freedesktop.org/patch/229037/
      935774cd
  4. 17 5月, 2018 1 次提交
    • S
      drm: content-type property for HDMI connector · 50525c33
      Stanislav Lisovskiy 提交于
      Added content_type property to drm_connector_state
      in order to properly handle external HDMI TV content-type setting.
      
      v2:
       * Moved helper function which attaches content type property
         to the drm core, as was suggested.
         Removed redundant connector state initialization.
      
      v3:
       * Removed caps in drm_content_type_enum_list.
         After some discussion it turned out that HDMI Spec 1.4
         was wrongly assuming that IT Content(itc) bit doesn't affect
         Content type states, however itc bit needs to be manupulated
         as well. In order to not expose additional property for itc,
         for sake of simplicity it was decided to bind those together
         in same "content type" property.
      
      v4:
       * Added it_content checking in intel_digital_connector_atomic_check.
         Fixed documentation for new content type enum.
      
      v5:
       * Moved patch revision's description to commit messages.
      
      v6:
       * Minor naming fix for the content type enumeration string.
      
      v7:
       * Fix parameter name for documentation and parameter alignment
         in order not to get warning. Added Content Type description to
         new HDMI connector properties section.
      
      v8:
       * Thrown away unneeded numbers from HDMI content-type property
         description. Switch to strings desription instead of plain
         definitions.
      
      v9:
       * Moved away hdmi specific content-type enum from
         drm_connector_state. Content type property should probably not
         be bound to any specific connector interface in
         drm_connector_state.
         Same probably should be done to hdmi_picture_aspect_ration enum
         which is also contained in drm_connector_state. Added special
         helper function to get derive hdmi specific relevant infoframe
         fields.
      
      v10:
       * Added usage description to HDMI properties kernel doc.
      
      v11:
       * Created centralized function for filling HDMI AVI infoframe, based
         on correspondent DRM property value.
      Acked-by: NHans Verkuil <hans.verkuil@cisco.com>
      Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NStanislav Lisovskiy <stanislav.lisovskiy@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180515135928.31092-2-stanislav.lisovskiy@intel.com
      [vsyrjala: clean up checkpatch multiple blank lines warnings]
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      50525c33
  5. 11 5月, 2018 1 次提交
  6. 08 3月, 2018 1 次提交
  7. 28 2月, 2018 1 次提交
  8. 30 1月, 2018 4 次提交
  9. 09 1月, 2018 1 次提交
    • S
      drm: Add Content Protection property · 24557865
      Sean Paul 提交于
      This patch adds a new optional connector property to allow userspace to enable
      protection over the content it is displaying. This will typically be implemented
      by the driver using HDCP.
      
      The property is a tri-state with the following values:
      - OFF: Self explanatory, no content protection
      - DESIRED: Userspace requests that the driver enable protection
      - ENABLED: Once the driver has authenticated the link, it sets this value
      
      The driver is responsible for downgrading ENABLED to DESIRED if the link becomes
      unprotected. The driver should also maintain the desiredness of protection
      across hotplug/dpms/suspend.
      
      If this looks familiar, I posted [1] this 3 years ago. We have been using this
      in ChromeOS across exynos, mediatek, and rockchip over that time.
      
      Changes in v2:
       - Pimp kerneldoc for content_protection_property (Daniel)
       - Drop sysfs attribute
      Changes in v3:
       - None
      Changes in v4:
      - Changed kerneldoc to recommend userspace polling (Daniel)
      - Changed kerneldoc to briefly describe how to attach the property (Daniel)
      Changes in v5:
      - checkpatch whitespace noise
      - Change DRM_MODE_CONTENT_PROTECTION_OFF to DRM_MODE_CONTENT_PROTECTION_UNDESIRED
      Changes in v6:
      - None
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      
      [1] https://lists.freedesktop.org/archives/dri-devel/2014-December/073336.html
      Link: https://patchwork.freedesktop.org/patch/msgid/20180108195545.218615-4-seanpaul@chromium.org
      24557865
  10. 25 10月, 2017 1 次提交
    • K
      drm: Add four ioctls for managing drm mode object leases [v7] · 62884cd3
      Keith Packard 提交于
      drm_mode_create_lease
      
      	Creates a lease for a list of drm mode objects, returning an
      	fd for the new drm_master and a 64-bit identifier for the lessee
      
      drm_mode_list_lesees
      
      	List the identifiers of the lessees for a master file
      
      drm_mode_get_lease
      
      	List the leased objects for a master file
      
      drm_mode_revoke_lease
      
      	Erase the set of objects managed by a lease.
      
      This should suffice to at least create and query leases.
      
      Changes for v2 as suggested by Daniel Vetter <daniel.vetter@ffwll.ch>:
      
       * query ioctls only query the master associated with
         the provided file.
      
       * 'mask_lease' value has been removed
      
       * change ioctl has been removed.
      
      Changes for v3 suggested in part by Dave Airlie <airlied@gmail.com>
      
       * Add revoke ioctl.
      
      Changes for v4 suggested by Dave Airlie <airlied@gmail.com>
      
       * Expand on the comment about the magic use of &drm_lease_idr_object
       * Pad lease ioctl structures to align on 64-bit boundaries
      
      Changes for v5 suggested by Dave Airlie <airlied@gmail.com>
      
       * Check for non-negative object_id in create_lease to avoid debug
         output from the kernel.
      
      Changes for v6 provided by Dave Airlie <airlied@gmail.com>
      
       * For non-universal planes add primary/cursor planes to lease
      
         If we aren't exposing universal planes to this userspace client,
         and it requests a lease on a crtc, we should implicitly export the
         primary and cursor planes for the crtc.
      
         If the lessee doesn't request universal planes, it will just see
         the crtc, but if it does request them it will then see the plane
         objects as well.
      
         This also moves the object look ups earlier as a side effect, so
         we'd exit the ioctl quicker for non-existant objects.
      
       * Restrict leases to crtc/connector/planes.
      
         This only allows leasing for objects we wish to allow.
      
      Changes for v7 provided by Dave Airlie <airlied@gmail.com>
      
       * Check pad args are 0
       * Check create flags and object count are valid.
       * Check return from fd allocation
       * Refactor lease idr setup and add some simple validation
       * Use idr_mutex uniformly (Keith)
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      62884cd3
  11. 04 9月, 2017 1 次提交
  12. 25 8月, 2017 1 次提交
  13. 02 8月, 2017 1 次提交
    • B
      drm: Create a format/modifier blob · db1689aa
      Ben Widawsky 提交于
      Updated blob layout (Rob, Daniel, Kristian, xerpi)
      
      v2:
      * Removed __packed, and alignment (.+)
      * Fix indent in drm_format_modifier fields (Liviu)
      * Remove duplicated modifier > 64 check (Liviu)
      * Change comment about modifier (Liviu)
      * Remove arguments to blob creation, use plane instead (Liviu)
      * Fix data types (Ben)
      * Make the blob part of uapi (Daniel)
      
      v3:
      Remove unused ret field.
      Change i, and j to unsigned int (Emil)
      
      v4:
      Use plane->modifier_count instead of recounting (Daniel)
      
      v5:
      Rename modifiers to modifiers_property (Ville)
      Use sizeof(__u32) instead to reflect UAPI nature (Ville)
      Make BUILD_BUG_ON for blob header size
      
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: Kristian H. Kristensen <hoegsberg@gmail.com>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Reviewed-by: Daniel Stone <daniels@collabora.com> (v2)
      Reviewed-by: Liviu Dudau <liviu@dudau.co.uk> (v2)
      Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> (v3)
      Signed-off-by: NDaniel Stone <daniels@collabora.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170724034641.13369-2-ben@bwidawsk.net
      db1689aa
  14. 22 5月, 2017 1 次提交
  15. 27 2月, 2017 1 次提交
    • M
      drm: Add a new connector atomic property for link status · 40ee6fbe
      Manasi Navare 提交于
      At the time userspace does setcrtc, we've already promised the mode
      would work. The promise is based on the theoretical capabilities of
      the link, but it's possible we can't reach this in practice. The DP
      spec describes how the link should be reduced, but we can't reduce
      the link below the requirements of the mode. Black screen follows.
      
      One idea would be to have setcrtc return a failure. However, it
      already should not fail as the atomic checks have passed. It would
      also conflict with the idea of making setcrtc asynchronous in the
      future, returning before the actual mode setting and link training.
      
      Another idea is to train the link "upfront" at hotplug time, before
      pruning the mode list, so that we can do the pruning based on
      practical not theoretical capabilities. However, the changes for link
      training are pretty drastic, all for the sake of error handling and
      DP compliance, when the most common happy day scenario is the current
      approach of link training at mode setting time, using the optimal
      parameters for the mode. It is also not certain all hardware could do
      this without the pipe on; not even all our hardware can do this. Some
      of this can be solved, but not trivially.
      
      Both of the above ideas also fail to address link degradation *during*
      operation.
      
      The solution is to add a new "link-status" connector property in order
      to address link training failure in a way that:
      a) changes the current happy day scenario as little as possible, to
      avoid regressions, b) can be implemented the same way by all drm
      drivers, c) is still opt-in for the drivers and userspace, and opting
      out doesn't regress the user experience, d) doesn't prevent drivers
      from implementing better or alternate approaches, possibly without
      userspace involvement. And, of course, handles all the issues presented.
      In the usual happy day scenario, this is always "good". If something
      fails during or after a mode set, the kernel driver can set the link
      status to "bad" and issue a hotplug uevent for userspace to have it
      re-check the valid modes through GET_CONNECTOR IOCTL, and try modeset
      again. If the theoretical capabilities of the link can't be reached,
      the mode list is trimmed based on that.
      
      v7 by Jani:
      * Rebase, simplify set property while at it, checkpatch fix
      v6:
      * Fix a typo in kernel doc (Sean Paul)
      v5:
      * Clarify doc for silent rejection of atomic properties by driver (Daniel Vetter)
      v4:
      * Add comments in kernel-doc format (Daniel Vetter)
      * Update the kernel-doc for link-status (Sean Paul)
      v3:
      * Fixed a build error (Jani Saarinen)
      v2:
      * Removed connector->link_status (Daniel Vetter)
      * Set connector->state->link_status in drm_mode_connector_set_link_status_property
      (Daniel Vetter)
      * Set the connector_changed flag to true if connector->state->link_status changed.
      * Reset link_status to GOOD in update_output_state (Daniel Vetter)
      * Never allow userspace to set link status from Good To Bad (Daniel Vetter)
      Reviewed-by: NSean Paul <seanpaul@chromium.org>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Acked-by: NTony Cheng <tony.cheng@amd.com>
      Acked-by: NHarry Wentland <harry.wentland@amd.com>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Sean Paul <seanpaul@chromium.org>
      Signed-off-by: NManasi Navare <manasi.d.navare@intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Acked-by: Eric Anholt <eric@anholt.net> (for the -modesetting patch)
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/0182487051aa9f1594820e35a4853de2f8747b4e.1481883920.git.jani.nikula@intel.com
      40ee6fbe
  16. 10 12月, 2016 1 次提交
  17. 17 11月, 2016 1 次提交
  18. 15 11月, 2016 1 次提交
  19. 08 11月, 2016 1 次提交
  20. 17 10月, 2016 2 次提交
  21. 11 8月, 2016 1 次提交
  22. 13 5月, 2016 1 次提交
  23. 01 4月, 2016 1 次提交
    • E
      drm: Add an encoder and connector type enum for DPI. · 0b27c02a
      Eric Anholt 提交于
      Right now exynos is exposing DPI as a TMDS encoder and VGA connector,
      which seems rather misleading.  This isn't just an internal detail,
      since xrandr actually exposes "VGA" as the output name.  Define some
      new enums so that vc4's DPI can have a more informative name.
      
      I considered other names for the connector as well.  For VC4, the
      Adafruit DPI kippah takes the 28 GPIO pins and routes them to a
      standard-ish 40-pin FPC connector, but "40-pin FPC" doesn't uniquely
      identify an ordering of pins (apparently some other orderings exist),
      doesn't explain things as well for the user (who, if anything, knows
      their product is a DPI kippah/panel combo), and actually doesn't have
      to exist (one could connect the 28 GPIOs directly to something else).
      Simply "DPI" seems like a good compromise name to distinguish from the
      HDMI, DSI, and TV connectors .
      Signed-off-by: NEric Anholt <eric@anholt.net>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      0b27c02a
  24. 31 3月, 2016 1 次提交
  25. 08 3月, 2016 1 次提交
  26. 10 12月, 2015 2 次提交
  27. 08 9月, 2015 1 次提交
  28. 22 5月, 2015 1 次提交
  29. 14 2月, 2015 1 次提交
    • R
      drm: add support for tiled/compressed/etc modifier in addfb2 · e3eb3250
      Rob Clark 提交于
      In DRM/KMS we are lacking a good way to deal with tiled/compressed
      formats.  Especially in the case of dmabuf/prime buffer sharing, where
      we cannot always rely on under-the-hood flags passed to driver specific
      gem-create ioctl to pass around these extra flags.
      
      The proposal is to add a per-plane format modifier.  This allows to, if
      necessary, use different tiling patters for sub-sampled planes, etc.
      The format modifiers are added at the end of the ioctl struct, so for
      legacy userspace it will be zero padded.
      
      v1: original
      v1.5: increase modifier to 64b
      
      v2: Incorporate review comments from the big thread, plus a few more.
      
      - Add a getcap so that userspace doesn't have to jump through hoops.
      - Allow modifiers only when a flag is set. That way drivers know when
        they're dealing with old userspace and need to fish out e.g. tiling
        from other information.
      - After rolling out checks for ->modifier to all drivers I've decided
        that this is way too fragile and needs an explicit opt-in flag. So
        do that instead.
      - Add a define (just for documentation really) for the "NONE"
        modifier. Imo we don't need to add mask #defines since drivers
        really should only do exact matches against values defined with
        fourcc_mod_code.
      - Drop the Samsung tiling modifier on Rob's request since he's not yet
        sure whether that one is accurate.
      
      v3:
      - Also add a new ->modifier[] array to struct drm_framebuffer and fill
        it in drm_helper_mode_fill_fb_struct. Requested by Tvrkto Uruslin.
      - Remove TODO in comment and add code comment that modifiers should be
        properly documented, requested by Rob.
      
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
      Cc: Daniel Stone <daniel@fooishbar.org>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Michel Dänzer <michel@daenzer.net>
      Signed-off-by: Rob Clark <robdclark@gmail.com> (v1.5)
      Reviewed-by: NRob Clark <robdclark@gmail.com>
      Reviewed-by: NDaniel Stone <daniels@collabora.com>
      Acked-by: NDave Airlie <airlied@redhat.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      e3eb3250
  30. 05 1月, 2015 2 次提交
    • R
      drm: Atomic modeset ioctl · d34f20d6
      Rob Clark 提交于
      The atomic modeset ioctl can be used to push any number of new values
      for object properties. The driver can then check the full device
      configuration as single unit, and try to apply the changes atomically.
      
      The ioctl simply takes a list of object IDs and property IDs and their
      values.
      
      Originally based on a patch from Ville Syrjälä, although it has mutated
      (mutilated?) enough since then that you probably shouldn't blame it on
      him ;-)
      
      The atomic support is hidden behind the DRM_CLIENT_CAP_ATOMIC cap (to
      protect legacy userspace) and drm.atomic module param (for now).
      
      v2: Check for file_priv->atomic to make sure we only allow userspace
      in-the-know to use atomic.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      Reviewed-by: NSean Paul <seanpaul@chromium.org>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      d34f20d6
    • R
      drm: add atomic properties · 88a48e29
      Rob Clark 提交于
      Once a driver is using atomic helpers for modeset, the next step is to
      switch over to atomic properties.  To do this, make sure that any
      modeset objects have their ->atomic_{get,set}_property() vfuncs suitably
      populated if they have custom properties (you did already remember to
      plug in atomic-helper func for the legacy ->set_property() vfuncs,
      right?), and then set DRIVER_ATOMIC bit in driver_features flag.
      
      A new cap is introduced, DRM_CLIENT_CAP_ATOMIC, for the purposes of
      shielding legacy userspace from atomic properties.  Mostly for the
      benefit of legacy DDX drivers that do silly things like getting/setting
      each property at startup (since some of the new atomic properties will
      be able to trigger modeset).
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      [danvet: Squash in fixup patch to check for DRM_MODE_PROP_ATOMIC
      instaed of the CAP define when filtering properties. Reported by
      Tvrtko Uruslin, acked by Rob.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      88a48e29
  31. 11 12月, 2014 1 次提交
  32. 20 11月, 2014 1 次提交
    • D
      drm: s/enum_blob_list/enum_list/ in drm_property · 3758b341
      Daniel Vetter 提交于
      I guess for hysterical raisins this was meant to be the way to read
      blob properties. But that's done with the two-stage approach which
      uses separate blob kms object and the special-purpose get_blob ioctl.
      
      Shipping userspace seems to have never relied on this, and the kernel
      also never put any blob thing onto that property. And nowadays it
      would blow up, e.g. in drm_property_destroy. Also it makes no sense to
      return values in an ioctl that only returns metadata about everything.
      
      So let's ditch all the internal code for the blob list, rename the
      list to be unambiguous and sprinkle comments all over the place to
      explain this peculiar piece of api.
      
      v2: Squash in fixup from Rob to remove now unused variables.
      
      Cc: Rob Clark <robdclark@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      Reviewed-by: NRob Clark <robdclark@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      3758b341
  33. 23 7月, 2014 1 次提交
  34. 04 6月, 2014 1 次提交