1. 09 Aug, 2014 2 commits
  2. 07 Aug, 2014 4 commits
    • Dave Airlie's avatar
      Revert "drm: drop redundant drm_file->is_master" · 7963e9db
      Dave Airlie authored
      This reverts commit 48ba8137.
      
      Thanks to Chris:
      "drm_file->is_master is not synomous with having drm_file->master ==
      drm_file->minor->master. This is because drm_file->master is the same
      for all drm_files of the same generation and so when there is a master,
      every drm_file believes itself to be the master. Confusion ensues and
      things go pear shaped when one file is closed and there is no master
      anymore."
      
      Conflicts:
      	drivers/gpu/drm/drm_drv.c
      	drivers/gpu/drm/drm_stub.c
      7963e9db
    • Dave Airlie's avatar
      Merge tag 'drm/tegra/for-3.17-rc1' of git://anongit.freedesktop.org/tegra/linux into drm-next · fa1d0ee6
      Dave Airlie authored
      drm/tegra: Changes for v3.17-rc1
      
      Mostly some cleanup all over the place. Pitch alignment limitations of
      the display controller are now honored and job submission is 64-bit
      safe.
      
      The SOR output (used for eDP) properly configures sync signal polarities
      according to the display mode rather than hard-coding them to some value
      and the number of bits per color is now taken from the panel rather than
      hard-coded to properly support 24-bit vs. 18-bit panels.
      
      The DSI controller now properly supports non-continuous clock mode.
      
      GEM objects can now have their flags and tiling mode modified via IOCTLs
      to allow buffers imported from Nouveau to be properly displayed. Newer
      generations of the Tegra display controller can also detile block linear
      buffers at scan-out time.
      
      Finally the driver now properly exports MODULE_DEVICE_TABLEs to allow it
      to be automatically loaded when built as a module.
      
      * tag 'drm/tegra/for-3.17-rc1' of git://anongit.freedesktop.org/tegra/linux:
        drm/tegra: add MODULE_DEVICE_TABLEs
        drm/tegra: dc - Reset controller on driver remove
        drm/tegra: Properly align stride for framebuffers
        drm/tegra: sor - Configure proper sync polarities
        drm/tegra: sor - Use bits-per-color from panel
        drm/tegra: Make job submission 64-bit safe
        drm/tegra: Allow non-authenticated processes to create buffer objects
        drm/tegra: Add SET/GET_FLAGS IOCTLs
        drm/tegra: Add SET/GET_TILING IOCTLs
        drm/tegra: Implement more tiling modes
        drm/tegra: dsi - Handle non-continuous clock flag
        drm/tegra: sor - missing unlock on error
      fa1d0ee6
    • Dave Airlie's avatar
      Merge tag 'drm/panel/for-3.17-rc1' of git://anongit.freedesktop.org/tegra/linux into drm-next · 0c6287ec
      Dave Airlie authored
      drm/panel: Changes for v3.17-rc1
      
      Panels can now be more finely controlled via .prepare() and .unprepare()
      callbacks in addition to .enable() and .disable(). New kerneldoc details
      what they are supposed to do and when they should be called.
      
      The simple panel driver gained support for a couple of new panels and it
      is now possible to specify additional delays during power up and power
      down sequences if panels require it.
      
      DSI devices can now advertise that they support non-continuous clock
      mode which will allow DSI host controllers to disable the high speed
      clock after transmissions to save power.
      
      * tag 'drm/panel/for-3.17-rc1' of git://anongit.freedesktop.org/tegra/linux: (30 commits)
        drm/panel: simple: Use devm_gpiod_get_optional()
        drm/dsi: Replace upcasting macro by function
        drm/panel: ld9040: Replace upcasting macro by function
        drm/exynos: dp: Modify driver to support drm_panel
        drm/exynos: Move DP setup into commit()
        drm/panel: simple: Add AUO B133HTN01 panel support
        drm/panel: simple: Support delays in panel functions
        drm/panel: simple: Add proper definition for prepare and unprepare
        drm/panel: s6e8aa0: Add proper definition for prepare and unprepare
        drm/panel: ld9040: Add proper definition for prepare and unprepare
        drm/tegra: Add support for panel prepare and unprepare routines
        drm/exynos: dsi: Add support for panel prepare and unprepare routines
        drm/exynos: dpi: Add support for panel prepare and unprepare routines
        drm/panel: simple: Add dummy prepare and unprepare routines
        drm/panel: s6e8aa0: Add dummy prepare and unprepare routines
        drm/panel: ld9040: Add dummy prepare and unprepare routines
        drm/panel: Provide convenience wrapper for .get_modes()
        drm/panel: add .prepare() and .unprepare() functions
        drm/panel: simple: Remove simple-panel compatible
        drm/panel: simple: Add Innolux N116BGE panel support
        ...
      0c6287ec
    • Alexandre Courbot's avatar
      drm/panel: simple: Use devm_gpiod_get_optional() · 9746c619
      Alexandre Courbot authored
      
      
      Use the new devm_gpiod_get_optional() to simplify the probe code.
      
      Signed-off-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      9746c619
  3. 06 Aug, 2014 22 commits
  4. 05 Aug, 2014 12 commits
    • Dave Airlie's avatar
      Merge branch 'drm-next-3.17' of git://people.freedesktop.org/~agd5f/linux into drm-next · f7257a22
      Dave Airlie authored
      - Additional Hawaii fixes
      - Support for using the display scaler on non-fixed mode displays
      - Support for new firmware format that makes it easier to update
      - Enable dpm by default on additional asics
      - GPUVM improvements
      - Support for uncached and write combined gtt buffers
      - Allow allocation of BOs larger than visible vram
      - Various other small fixes and improvements
      
      * 'drm-next-3.17' of git://people.freedesktop.org/~agd5f/linux: (57 commits)
        drm/radeon: Prevent hdmi deep color if max_tmds_clock is undefined.
        drm/radeon: Use pflip irqs for pageflip completion if possible. (v2)
        drm/radeon: tweak ACCEL_WORKING2 query for the new firmware for hawaii
        drm/radeon: use packet3 for nop on hawaii with new firmware
        drm/radeon: tweak ACCEL_WORKING2 query for hawaii
        drm/radeon: use packet2 for nop on hawaii with old firmware
        drm/radeon: update IB size estimation for VM
        drm/radeon: split PT setup in more functions
        drm/radeon: add VM GART copy optimization to NI as well
        drm/radeon: take a BO reference on VM cleanup
        drm/radeon: add radeon_bo_ref function
        drm/radeon: remove taking mclk_lock from radeon_bo_unref
        drm/radeon: adjust default radeon_vm_block_size v2
        drm/radeon: try to enable VM flushing once more
        drm/radeon: use an intervall tree to manage the VMA v2
        drm/radeon: remove radeon_bo_clear_va
        drm/radeon: invalidate moved BOs in the VM (v2)
        drm/radeon: re-enable dpm by default on BTC
        drm/radeon: re-enable dpm by default on cayman
        drm/radeon: Only flush HDP cache from idle ioctl if BO is in VRAM
        ...
      f7257a22
    • David Herrmann's avatar
      drm: mark drm_context support as legacy · e7b96070
      David Herrmann authored
      
      
      This renames all drm-context helpers to drm_legacy_*() and moves the
      internal definitions into the new drm_legacy.h header. This header is
      local to DRM-core and drivers shouldn't access it.
      
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      e7b96070
    • Mario Kleiner's avatar
      drm/radeon: Prevent hdmi deep color if max_tmds_clock is undefined. · 9f51e2e0
      Mario Kleiner authored
      
      
      HDMI spec requires a valid max_tmds_clock from edid for hdmi
      deep color modes. If a sink violates this, disable deep color.
      
      Also add a hint to user about the deep_color module parameter if
      deep color is disabled due to that.
      
      Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      9f51e2e0
    • David Herrmann's avatar
      drm: make sysfs device always available for minors · e1728075
      David Herrmann authored
      
      
      For each minor we allocate a sysfs device as minor->kdev. Currently, this
      is allocated and registered in drm_minor_register(). This makes it
      impossible to add sysfs-attributes to the device before it is registered.
      Therefore, they are not added atomically, nor can we move device_add()
      *after* ->load() is called.
      
      This patch makes minor->kdev available early, but only adds the device
      during minor-registration. Note that the registration is still called
      before ->load() as debugfs needs to be split, too. This will be fixed in
      follow-ups.
      
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      e1728075
    • David Herrmann's avatar
      drm: make minor->index available early · f1b85962
      David Herrmann authored
      
      
      Instead of allocating the minor-index during registration, we now do this
      during allocation. This way, debug-messages between minor-allocation and
      minor-registration will now use the correct minor instead of 0. Same is
      done for unregistration vs. free, so debug-messages between
      device-shutdown and device-destruction show proper indices.
      
      Even though minor-indices are allocated early, we don't enable minor
      lookup early. Instead, we keep the entry set to NULL and replace it during
      registration / unregistration. This way, the index is allocated but lookup
      only works if registered.
      
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      f1b85962
    • David Herrmann's avatar
      drm: merge drm_drv.c into drm_ioctl.c · ec8f112d
      David Herrmann authored
      
      
      All that is left in drm_drv.c is ioctl management. Merge it into
      drm_ioctl.c so we have all ioctl management in one file (and the name is
      much more fitting).
      
      Maybe we should now rename drm_stub.c to drm_drv.c again?
      
      Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      ec8f112d
    • David Herrmann's avatar
      drm: move module initialization to drm_stub.c · 1b7199fe
      David Herrmann authored
      
      
      Most of the new DRM management functions are nowadays in drm_stub.c. By
      moving the core module initialization to drm_stub.c we can make several
      global variables static and keep the stub-open helper local.
      
      The core files now look like this:
        drm_stub.c: Core management
         drm_drv.c: Ioctl dispatcher
       drm_ioctl.c: Actual ioctl backends
        drm_fops.c: Char-dev file-operations
      
      A follow-up patch will move what is left from drm_drv.c into drm_ioctl.c.
      
      Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      1b7199fe
    • David Herrmann's avatar
      drm: don't de-authenticate clients on master-close · 3cb01a98
      David Herrmann authored
      
      
      If an active DRM-Master closes its device, we deauthenticate all clients
      on that master. However, if an inactive DRM-Master closes its device, we
      do nothing. This is quite inconsistent and breaks several scenarios:
      
       1) If this was used as security mechanism, it fails horribly if a master
          closes a device while VT switched away. Furthermore, none of the few
          drivers using ->master_*() callbacks seems to require it, anyway.
      
       2) If you spawn weston (or any other non-UMS compositor) in background
          while another compositor is active, both will get assigned to the
          same "drm_master" object. If the foreground compositor now exits, all
          clients of both the foreground AND background compositor will be
          de-authenticated leading to unexpected behavior.
      
      Stop this non-sense and keep clients authenticated. We don't do this when
      dropping DRM-Master (i.e., switching VTs) so don't do it on active-close
      either!
      
      Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      3cb01a98
    • David Herrmann's avatar
      drm: drop redundant drm_file->is_master · 48ba8137
      David Herrmann authored
      
      
      The drm_file->is_master field is redundant as it's equivalent to:
          drm_file->master && drm_file->master == drm_file->minor->master
      
      1) "=>"
        Whenever we set drm_file->is_master, we also set:
            drm_file->minor->master = drm_file->master;
      
        Whenever we clear drm_file->is_master, we also call:
            drm_master_put(&drm_file->minor->master);
        which implicitly clears it to NULL.
      
      2) "<="
        minor->master cannot be set if it is non-NULL. Therefore, it stays as
        is unless a file drops it.
      
        If minor->master is NULL, it is only set by places that also adjust
        drm_file->is_master.
      
      Therefore, we can safely drop is_master and replace it by an inline helper
      that matches:
          drm_file->master && drm_file->master == drm_file->minor->master
      
      Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      48ba8137
    • David Herrmann's avatar
      drm: extract legacy ctxbitmap flushing · 9f8d21ea
      David Herrmann authored
      
      
      The ctxbitmap code is only used by legacy drivers so lets try to keep it
      as separated as possible. Furthermore, the locking is non-obvious and
      kinda weird with ctxlist_mutex *and* struct_mutex. Keeping all ctxbitmap
      access in one file is much easier to review and makes drm_release() more
      readable.
      
      Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      9f8d21ea
    • Mario Kleiner's avatar
      drm/radeon: Use pflip irqs for pageflip completion if possible. (v2) · 39dc5454
      Mario Kleiner authored
      
      
      Skip the "manual" pageflip completion checks via polling and
      guessing in the vblank handler radeon_crtc_handle_vblank() on
      asics which are known to reliably support hw pageflip completion
      irqs. Those pflip irqs are a more reliable and race-free method
      of handling pageflip completion detection, whereas the "classic"
      polling method has some small races in combination with dpm on,
      and with the reworked pageflip implementation since Linux 3.16.
      
      On old asics without pflip irqs, the classic method is used.
      
      On asics with known good pflip irqs, only pflip irqs are used
      by default, but a new module parameter "use_pflipirqs" allows to
      override this in case we encounter asics in the wild with
      unreliable or faulty pflip irqs. A module parameter of 0 allows
      to use the classic method only in such a case. A parameter of 1
      allows to use both classic method and pflip irqs as additional
      band-aid to avoid some small races which could happen with the
      classic method alone. The setting 1 gives Linux 3.16 behaviour.
      
      Hw pflip irqs are available since R600.
      
      Tested on DCE-4, AMD Cedar - FirePro 2270.
      
      v2:  agd5f: only enable pflip interrupts on DCE4+ as they are not
      reliable on older asics.
      
      Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      39dc5454
    • Andreas Boll's avatar
      drm/radeon: tweak ACCEL_WORKING2 query for the new firmware for hawaii · 9eb401af
      Andreas Boll authored
      
      
      Adjust the previous tweak for hawaii to return 3 if the new firmware is used.
      
      Signed-off-by: default avatarAndreas Boll <andreas.boll.dev@gmail.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      9eb401af