1. 16 3月, 2014 9 次提交
    • D
      drm: init TTM dev_mapping in ttm_bo_device_init() · 44d847b7
      David Herrmann 提交于
      With dev->anon_inode we have a global address_space ready for operation
      right from the beginning. Therefore, there is no need to do a delayed
      setup with TTM. Instead, set dev_mapping during initialization in
      ttm_bo_device_init() and remove any "if (dev_mapping)" conditions.
      
      Cc: Dave Airlie <airlied@redhat.com>
      Cc: Ben Skeggs <bskeggs@redhat.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>
      Cc: Alex Deucher <alexdeucher@gmail.com>
      Cc: Thomas Hellstrom <thellstrom@vmware.com>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      44d847b7
    • D
      drm: use anon-inode instead of relying on cdevs · 6796cb16
      David Herrmann 提交于
      DRM drivers share a common address_space across all character-devices of a
      single DRM device. This allows simple buffer eviction and mapping-control.
      However, DRM core currently waits for the first ->open() on any char-dev
      to mark the underlying inode as backing inode of the device. This delayed
      initialization causes ugly conditions all over the place:
        if (dev->dev_mapping)
          do_sth();
      
      To avoid delayed initialization and to stop reusing the inode of the
      char-dev, we allocate an anonymous inode for each DRM device and reset
      filp->f_mapping to it on ->open().
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      6796cb16
    • D
      drm: add pseudo filesystem for shared inodes · 31bbe16f
      David Herrmann 提交于
      Our current DRM design uses a single address_space for all users of the
      same DRM device. However, there is no way to create an anonymous
      address_space without an underlying inode. Therefore, we wait for the
      first ->open() callback on a registered char-dev and take-over the inode
      of the char-dev. This worked well so far, but has several drawbacks:
       - We screw with FS internals and rely on some non-obvious invariants like
         inode->i_mapping being the same as inode->i_data for char-devs.
       - We don't have any address_space prior to the first ->open() from
         user-space. This leads to ugly fallback code and we cannot allocate
         global objects early.
      
      As pointed out by Al-Viro, fs/anon_inode.c is *not* supposed to be used by
      drivers for anonymous inode-allocation. Therefore, this patch follows the
      proposed alternative solution and adds a pseudo filesystem mount-point to
      DRM. We can then allocate private inodes including a private address_space
      for each DRM device at initialization time.
      
      Note that we could use:
        sysfs_get_inode(sysfs_mnt->mnt_sb, drm_device->dev->kobj.sd);
      to get access to the underlying sysfs-inode of a "struct device" object.
      However, most of this information is currently hidden and it's not clear
      whether this address_space is suitable for driver access. Thus, unless
      linux allows anonymous address_space objects or driver-core provides a
      public inode per device, we're left with our own private internal mount
      point.
      
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      31bbe16f
    • D
      drm/gem: dont init "ret" in drm_gem_mmap() · a8469aa8
      David Herrmann 提交于
      There is no need to initialize this variable, so drop it. Otherwise, the
      compiler won't warn if we use it unintialized.
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      a8469aa8
    • D
      drm/crtc: add sanity checks to create_dumb() · b28cd41f
      David Herrmann 提交于
      Lets make sure some basic expressions are always true:
        bpp != NULL
        width != NULL
        height != NULL
        stride = bpp * width < 2^32
        size = stride * height < 2^32
        PAGE_ALIGN(size) < 2^32
      
      At least the udl driver doesn't check for multiplication-overflows, so
      lets just make sure it will never happen. These checks allow drivers to do
      any 32bit math without having to test for mult-overflows themselves.
      
      The two divisions might hurt performance a bit, but dumb_create() is only
      used for scanout-buffers, so that should be fine. We could use 64bit math
      to avoid the divisions, but that may be slow on 32bit machines.. Or maybe
      there should just be a "safe_mult32()" helper, which currently doesn't
      exist (I think?).
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      b28cd41f
    • D
      drm/gem: free vma-node during object-cleanup · 77472347
      David Herrmann 提交于
      All drivers currently need to clean up the vma-node manually. There is no
      fancy logic involved so lets just clean it up unconditionally. The
      vma-manager correctly catches multiple calls so we are fine.
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      77472347
    • D
      drm/gem: fix indentation · 16d2831d
      David Herrmann 提交于
      Remove double-whitespace and wrong indentation.
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      16d2831d
    • D
      drm/udl: fix Bpp calculation in dumb_create() · 2b932d8e
      David Herrmann 提交于
      Probably a typo.. we obviously need "(bpp + 7) / 8" instead of
      "(bpp + 1) / 8". Unlikely to be hit in any sane code, but lets be safe.
      Use DIV_ROUND_UP() to avoid the problem entirely and make the core more
      readable.
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      2b932d8e
    • D
      drm/udl: fix error-path when damage-req fails · 06c99161
      David Herrmann 提交于
      We need to call dma_buf_end_cpu_access() in case a damage-request.
      Unlikely, but might happen during device unplug.
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      06c99161
  2. 04 3月, 2014 1 次提交
  3. 03 3月, 2014 13 次提交
  4. 28 2月, 2014 3 次提交
  5. 27 2月, 2014 4 次提交
    • T
      drm/dp: Allow registering AUX channels as I2C busses · 88759686
      Thierry Reding 提交于
      Implements an I2C-over-AUX I2C adapter on top of the generic drm_dp_aux
      infrastructure. It extracts the retry logic from existing drivers, which
      should help in porting those drivers to this new helper.
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      ---
      Changes in v5:
      - move comments partially to to header file
      - keep MOT set between I2C messages
      - return -EPROTO on short reads
      
      Changes in v4:
      - fix typo "bitrate" -> "bit rate"
      
      Changes in v3:
      - add back DRM_DEBUG_KMS and DRM_ERROR messages
      - embed i2c_adapter within struct drm_dp_aux
      - fix typo in comment
      88759686
    • T
      drm/dp: Add DisplayPort link helpers · 516c0f7c
      Thierry Reding 提交于
      Add a helper to probe a DP link (read out the supported DPCD revision,
      maximum rate, link count and capabilities) as well as power up the DP
      link and configure it accordingly.
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      ---
      Changes in v5:
      - export helpers
      
      Changes in v4:
      - fix a couple of typos in comments as pointed out by Alex Deucher
      
      Changes in v3:
      - split into drm_dp_link_power_up() and drm_dp_link_configure()
      - do not change sink state for DPCD versions earlier than 1.1
      - sleep for 1-2 ms after setting local sink to D0 state
      - read and write consecutive registers where possible
      - read DPCD revision when link is probed
      - remove duplicate kerneldoc
      516c0f7c
    • T
      drm/dp: Add drm_dp_dpcd_read_link_status() · 8d4adc6a
      Thierry Reding 提交于
      The function reads the link status (6 bytes starting at offset 0x202)
      from the DPCD so that it can be conveniently passed to other DPCD
      helpers.
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      8d4adc6a
    • T
      drm/dp: Add AUX channel infrastructure · c197db75
      Thierry Reding 提交于
      This is a superset of the current i2c_dp_aux bus functionality and can
      be used to transfer native AUX in addition to I2C-over-AUX messages.
      
      Helpers are provided to read and write the DPCD, either blockwise or
      byte-wise. Many of the existing helpers for DisplayPort take a copy of a
      portion of the DPCD and operate on that, without a way to write data
      back to the DPCD (e.g. for configuration of the link).
      
      Subsequent patches will build upon this infrastructure to provide common
      functionality in a generic way.
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      ---
      Changes in v5:
      - move comments partially to struct drm_dp_aux_msg in header file
      - return -EPROTO on short reads in DPCD helpers
      
      Changes in v4:
      - fix a typo in a comment
      
      Changes in v3:
      - reorder drm_dp_dpcd_writeb() arguments to be more intuitive
      - return number of bytes transferred in drm_dp_dpcd_write()
      - factor out drm_dp_dpcd_access()
      - describe error codes
      c197db75
  6. 21 2月, 2014 1 次提交
  7. 19 2月, 2014 9 次提交