1. 16 Nov, 2014 6 commits
    • Daniel Thompson's avatar
      drm/msm: Fix fbdev for 16- and 24-bit modes. · 95a9b8d1
      Daniel Thompson authored
      Currently forcing the video mode from the kernel command line (for example
      video=HDMI-A-1:1280x720-16@60) does not correctly set the number of bits
      per pixel. This is due to a rather aggressive override in
      msm_fbdev_create(). This is a particular problem for Android bring up
      because the software EGL fallbacks don't support 32bpp.
      
      Since the overrides are actually the default values anyway then this
      problem can be trivially fixed by removing the overrides completely.
      
      Change was tested by dd'ing a test image to /dev/fb0 with no video=
      (still 32bpp), video=1920x1080-32@60, video=1920x1080-24@60 and
      video=1920x1080-16@60 .
      Signed-off-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Rob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      95a9b8d1
    • Daniel Thompson's avatar
      drm/msm: Allow exported dma-bufs to be mapped · 77a147e7
      Daniel Thompson authored
      Currently msm does not implement gem_prime_mmap. Without this it is not
      possible to draw onto a dma-buf from userspace (making its very hard to
      implement the Android rendering model).
      
      Fixing this is just a matter of adding a little boilerplate.
      Signed-off-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      77a147e7
    • Rob Clark's avatar
      drm/msm/hdmi: refactor bind/init · 067fef37
      Rob Clark authored
      Split up hdmi_init() into hdmi_init() (done at hdmi sub-device
      bind/probe time) and hdmi_modeset_init() done from master driver's
      modeset_init().
      
      Anything that can fail due to dependencies on other drivers which
      may be missing or not probed yet should go in hdmi_init(), so that
      devm error/cleanup paths work properly.
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      067fef37
    • Rob Clark's avatar
      drm/msm: update generated headers · bc00ae02
      Rob Clark authored
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      bc00ae02
    • Rob Clark's avatar
      drm/msm/adreno: slight init order cleanup · 0122f96f
      Rob Clark authored
      Move anything that can fail after call to base class msm_gpu_init().
      This way, if we fail, active_list has already been initialized so we
      don't trip 'WARN_ON(!list_empty(&gpu->active_list))' in
      msm_gpu_cleanup().
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      0122f96f
    • Rob Clark's avatar
      drm/msm: select REGULATOR · b7bbd640
      Rob Clark authored
      Fixes a potential error, spotted by Felipe with randconfig:
      
      -----
      drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c: In function ‘mdp4_kms_init’:
      drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c:384:2: error: implicit declaration \
              of function ‘devm_regulator_get_exclusive’ [-Werror=implicit-function-declaration]
        mdp4_kms->vdd = devm_regulator_get_exclusive(&pdev->dev, "vdd");
        ^
      drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c:384:16: error: assignment makes \
              pointer from integer without a cast [-Werror]
        mdp4_kms->vdd = devm_regulator_get_exclusive(&pdev->dev, "vdd");
                      ^
      -----
      
      Also add a brief comment explaining the use of _get_exclusive()
      Reported-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      b7bbd640
  2. 14 Nov, 2014 13 commits
    • Dave Airlie's avatar
      Merge tag 'drm/gem-cma/for-3.19-rc1' of git://people.freedesktop.org/~tagr/linux into drm-next · ca5a71de
      Dave Airlie authored
      drm: Sanitize DRM_IOCTL_MODE_CREATE_DUMB input
      
      Some drivers erroneously treat the .pitch and .size fields of struct
      drm_mode_create_dumb as inputs. While the include/uapi/drm/drm_mode.h
      header has a comment denoting them as outputs, that seemingly wasn't
      enough to make drivers use them properly.
      
      The result is that some userspace doesn't explicitly zero out those
      fields, assuming that the kernel won't use them. That causes problems
      since the data within the structure might be uninitialized, so bogus
      data may end up confusing drivers (ridiculously large values for the
      pitch, ...).
      
      This series attempts to improve the situation by fixing all drivers to
      not use the output fields. Furthermore to spare new drivers this bad
      surprise, the DRM core now zeros out these fields prior to handing the
      data structure to the driver.
      
      Lessons learned from this are that future IOCTLs should be properly
      documented (in the DRM DocBook for example) and should be rigorously
      defined. To prevent misuse like this, userspace should be required to
      zero out all output fields. The kernel should check for this and fail
      if that's not the case.
      
      * tag 'drm/gem-cma/for-3.19-rc1' of git://people.freedesktop.org/~tagr/linux:
        drm/cma: Remove call to drm_gem_free_mmap_offset()
        drm: Sanitize DRM_IOCTL_MODE_CREATE_DUMB input
        drm/rcar: gem: dumb: pitch is an output
        drm/omap: gem: dumb: pitch is an output
        drm/cma: Introduce drm_gem_cma_dumb_create_internal()
        drm/doc: Add GEM/CMA helpers to kerneldoc
        drm/doc: mm: Fix indentation
        drm/gem: Fix a few kerneldoc typos
      ca5a71de
    • Dave Airlie's avatar
      drm/qxl: use suggested x/y offset properties to pass guest prefs · 7dea0941
      Dave Airlie authored
      This passes the guest preferences for a where to place the
      outputs through to userspace. Userspace would need to be updated
      to take note of this information, X server and GNOME.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      7dea0941
    • Dave Airlie's avatar
      drm: add properties for suggested x/y offset for connectors. (v2) · 5bb2bbf5
      Dave Airlie authored
      Virtual GPUs would like to give the guest some indication where on the screen
      the outputs are layed out. So far we only provide modes, these
      properties could be exposed to userspace so the desktop environment
      could use them as hints to set the correct offsets.
      
      v2: rename properties to be more consistent.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      5bb2bbf5
    • Daniel Vetter's avatar
      drm: Simplify return value handling in drm_crtc.c · baf698b0
      Daniel Vetter authored
      While looking through drm_crtc.c to double-check make locking changes
      I've noticed that there's a few other places that would now benefit
      from simplified return value handling.
      
      So let's flatten the control flow and replace and always 0 ret with 0
      where possible.
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Reviewed-by: default avatarSean Paul <seanpaul@chromium.org>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      baf698b0
    • Dave Airlie's avatar
      Merge tag 'drm/tegra/for-3.19-rc1' of git://people.freedesktop.org/~tagr/linux into drm-next · b0654103
      Dave Airlie authored
      drm/tegra: Changes for v3.19-rc1
      
      The highlights in this pull request are:
      
        * IOMMU support: The Tegra DRM driver can now deal with discontiguous
          buffers if an IOMMU exists in the system. That means it can allocate
          using drm_gem_get_pages() and will map them into IOVA space via the
          IOMMU API. Similarly, non-contiguous PRIME buffers can be imported
          from a different driver, which allows better integration with gk20a
          (nouveau) and less hacks.
      
        * Universal planes: This is precursory work for atomic modesetting and
          will allow hardware cursor support to be implemented on pre-Tegra114
          where RGB cursors were not supported.
      
        * DSI ganged-mode support: The DSI controller can now gang up with a
          second DSI controller to drive high resolution DSI panels.
      
      Besides those bigger changes there is a slew of fixes, cleanups, plugged
      memory leaks and so on.
      
      * tag 'drm/tegra/for-3.19-rc1' of git://people.freedesktop.org/~tagr/linux: (44 commits)
        drm/tegra: gem: Check before freeing CMA memory
        drm/tegra: fb: Add error codes to error messages
        drm/tegra: fb: Properly release GEM objects on failure
        drm/tegra: Detach panel when a connector is removed
        drm/tegra: Plug memory leak
        drm/tegra: gem: Use more consistent data types
        drm/tegra: fb: Do not destroy framebuffer
        drm/tegra: gem: dumb: pitch and size are outputs
        drm/tegra: Enable the hotplug interrupt only when necessary
        drm/tegra: dc: Universal plane support
        drm/tegra: dc: Registers are 32 bits wide
        drm/tegra: dc: Factor out DC, window and cursor commit
        drm/tegra: Add IOMMU support
        drm/tegra: Fix error handling cleanup
        drm/tegra: gem: Use dma_mmap_writecombine()
        drm/tegra: gem: Remove redundant drm_gem_free_mmap_offset()
        drm/tegra: gem: Cleanup tegra_bo_create_with_handle()
        drm/tegra: gem: Extract tegra_bo_alloc_object()
        drm/tegra: dsi: Set up PHY_TIMING & BTA_TIMING registers earlier
        drm/tegra: dsi: Replace 1000000 by USEC_PER_SEC
        ...
      b0654103
    • Dave Airlie's avatar
      Merge tag 'drm/fixes/for-3.19-rc1' of git://people.freedesktop.org/~tagr/linux into drm-next · 4fb2ac6e
      Dave Airlie authored
      drm: Miscellaneous fixes for v3.19-rc1
      
      This is a small collection of fixes that I've been carrying around for a
      while now. Many of these have been posted and reviewed or acked. The few
      that haven't I deemed too trivial to bother.
      
      * tag 'drm/fixes/for-3.19-rc1' of git://people.freedesktop.org/~tagr/linux:
        video/hdmi: Relicense header under MIT license
        drm/gma500: mdfld: Reuse video/mipi_display.h
        drm: Make drm_mode_create_tv_properties() signature consistent
        drm: Implement drm_get_pci_dev() dummy for !PCI
        drm/prime: Use unsigned type for number of pages
        drm/gem: Fix typo in kerneldoc
        drm: Use const data when creating blob properties
        drm: Use size_t for blob property sizes
      4fb2ac6e
    • Dave Airlie's avatar
      Merge tag 'drm/panel/for-3.19-rc1' of git://people.freedesktop.org/~tagr/linux into drm-next · 8aa3dc3c
      Dave Airlie authored
      drm/panel: Changes for v3.19-rc1
      
      This contains support for a couple of new panels, updates for some GPIO
      API changes and a bunch of updates to the MIPI DSI support that should
      make it easier to write panel drivers in the future.
      
      * tag 'drm/panel/for-3.19-rc1' of git://people.freedesktop.org/~tagr/linux: (31 commits)
        drm/panel: Add Sharp LQ101R1SX01 support
        drm/dsi: Do not require .owner field to be set
        drm/dsi: Resolve MIPI DSI device from phandle
        drm/dsi: Implement DCS set_{column,page}_address commands
        drm/dsi: Implement DCS {get,set}_pixel_format commands
        drm/dsi: Implement DCS get_power_mode command
        drm/dsi: Implement DCS soft_reset command
        drm/dsi: Implement DCS nop command
        drm/dsi: Add to DocBook documentation
        drm/dsi: Implement some standard DCS commands
        drm/dsi: Implement generic read and write commands
        drm/panel: s6e8aa0: Use standard MIPI DSI function
        drm/dsi: Add mipi_dsi_set_maximum_return_packet_size() helper
        drm/dsi: Constify mipi_dsi_msg
        drm/dsi: Make mipi_dsi_dcs_{read,write}() symmetrical
        drm/dsi: Add DSI transfer helper
        drm/dsi: Add message to packet translator
        drm/dsi: Introduce packet format helpers
        drm/panel: s6e8aa0: Fix build warnings on 64-bit
        drm/panel: ld9040: Fix build warnings on 64-bit
        ...
      8aa3dc3c
    • Dave Airlie's avatar
      Merge tag 'drm-intel-next-2014-11-07-fixups' of... · fd172d0c
      Dave Airlie authored
      Merge tag 'drm-intel-next-2014-11-07-fixups' of git://anongit.freedesktop.org/drm-intel into drm-next
      
      - skl watermarks code (Damien, Vandana, Pradeep)
      - reworked audio codec /eld handling code (Jani)
      - rework the mmio_flip code to use the vblank evade logic and wait for rendering
        using the standard wait_seqno interface (Ander)
      - skl forcewake support (Zhe Wang)
      - refactor the chv interrupt code to use functions shared with vlv (Ville)
      - prep work for different global gtt views (Tvrtko Ursulin)
      - precompute the display PLL config before touching hw state (Ander)
      - completely reworked panel power sequencer code for chv/vlv (Ville)
      - pre work to split the plane update code into a prepare and commit phase
        (Gustavo Padovan)
      - golden context for skl (Armin Reese)
      - as usual tons of fixes and improvements all over
      
      * tag 'drm-intel-next-2014-11-07-fixups' of git://anongit.freedesktop.org/drm-intel: (135 commits)
        drm/i915: Use correct pipe config to update pll dividers. V2
        drm/i915: Plug memory leak in intel_shared_dpll_start_config()
        drm/i915: Update DRIVER_DATE to 20141107
        drm/i915: Add gen to the gpu hang ecode
        drm/i915: Cache HPLL frequency on VLV/CHV
        Revert "drm/i915/vlv: Remove check for Old Ack during forcewake"
        drm/i915: Make mmio flip wait for seqno in the work function
        drm/i915: Make __wait_seqno non-static and rename to __i915_wait_seqno
        drm/i915: Move the .global_resources() hook call into modeset_update_crtc_power_domains()
        drm/i915/audio: add DOC comment describing HDA over HDMI/DP
        drm/i915: make pipe/port based audio valid accessors easier to use
        drm/i915/audio: add audio codec enable debug log for g4x
        drm/i915/audio: add audio codec disable on g4x
        drm/i915: enable audio codec after port
        drm/i915/audio: add vlv/chv/gen5-7 audio codec disable sequence
        drm/i915/audio: rewrite vlv/chv and gen 5-7 audio codec enable sequence
        drm/i915/skl: Enable Gen9 RC6
        drm/i915/skl: Gen9 Forcewake
        drm/i915/skl: Log the order in which we flush the pipes in the WM code
        drm/i915/skl: Flush the WM configuration
        ...
      fd172d0c
    • Chris Wilson's avatar
      drm/dp/mst: Handle invalid link bandwidth from DPCD gracefully · b853fdb3
      Chris Wilson authored
      Don't BUG out if the link reports an invalid (or plain unknown)
      bandwidth value, but report the failure and fail gracefully.
      
      Fixes a trivial compiler warning in case the BUG is ever compiled away.
      
      Link: http://lkml.kernel.org/p/1415785566-12758-1-git-send-email-geert@linux-m68k.orgSigned-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Dave Airlie <airlied@redhat.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      b853fdb3
    • Rob Clark's avatar
      drm/atomic: rip out unnecessary locking checks · db883628
      Rob Clark authored
      For async commit, it is *intentional* that those locks are not held.
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      db883628
    • Boris BREZILLON's avatar
      drm: flip-work: change drm_flip_work_init prototype · d7f8db53
      Boris BREZILLON authored
      Now that we're using lists instead of kfifo to store drm flip-work tasks
      we do not need the size parameter passed to drm_flip_work_init function
      anymore.
      Moreover this function cannot fail anymore, we can thus remove the return
      code.
      
      Modify drm_flip_work_init users to take account of these changes.
      
      [airlied: fixed two unused variable warnings]
      Signed-off-by: default avatarBoris BREZILLON <boris.brezillon@free-electrons.com>
      Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      d7f8db53
    • Boris BREZILLON's avatar
      drm: rework flip-work helpers to avoid calling func when the FIFO is full · 8bd4ae20
      Boris BREZILLON authored
      Make use of lists instead of kfifo in order to dynamically allocate
      task entry when someone require some delayed work, and thus preventing
      drm_flip_work_queue from directly calling func instead of queuing this
      call.
      This allow drm_flip_work_queue to be safely called even within irq
      handlers.
      
      Add new helper functions to allocate a flip work task and queue it when
      needed. This prevents allocating data within irq context (which might
      impact the time spent in the irq handler).
      Signed-off-by: default avatarBoris BREZILLON <boris.brezillon@free-electrons.com>
      Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      8bd4ae20
    • Bob Paauwe's avatar
      drm/i915: Use correct pipe config to update pll dividers. V2 · e1f234bd
      Bob Paauwe authored
      Use the new pipe config values to calculate the updated pll dividers.
      
      This regression was introduced in
      
      commit 0dbdf89f27b17ae1eceed6782c2917f74cbb5d59
      Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
      Date:   Wed Oct 29 11:32:33 2014 +0200
      
          drm/i915: Add infrastructure for choosing DPLLs before disabling crtcs
      
      	and
      
      	commit 00d958817dd3daaa452c221387ddaf23d1e4c06f
      	Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
      	Date:   Wed Oct 29 11:32:36 2014 +0200
      
      	    drm/i915: Covert remaining platforms to choose DPLLS before disabling CRTCs
      
      v2: Use intel_pipe_will_have_type() to look at new configuration - Ander
      Signed-off-by: default avatarBob Paauwe <bob.j.paauwe@intel.com>
      CC: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
      Tested-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      Reviewed-by: default avatarAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      e1f234bd
  3. 13 Nov, 2014 21 commits