1. 05 Aug, 2014 13 commits
  2. 04 Aug, 2014 27 commits
    • Dave Airlie's avatar
      drm/sti: fix warning in build. · 8bb652eb
      Dave Airlie authored
      
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      8bb652eb
    • Dave Airlie's avatar
      Merge branch 'drm_kms_for_next-v8' of... · 96b1b971
      Dave Airlie authored
      Merge branch 'drm_kms_for_next-v8' of git://git.linaro.org/people/benjamin.gaignard/kernel into drm-next
      
      This series of patches add the support of DRM/KMS drivers for STMicroelectronics
      chipsets stih416 and stih407.
      
      Hardware is split in two main blocks: Compositor and TVout. Each of them
      includes specific hardware IPs and the display timing are controlled by a specific
      Video Timing Generator hardware IP (VTG).
      
      Compositor is made of the follow hardware IPs:
       - GDP (Generic Display Pipeline) which is an entry point for graphic (RGB)
         buffers
       - VDP (Video Diplay Pipeline) which is an entry point for video (YUV) buffers
       - HQVDP (High Quality Video Display Processor) that supports scaling,
         deinterlacing and some miscellaneous image quality improvements.
         It fetches the Video decoded buffers from memory, processes them and pushes
         them to the Compositor through a HW dedicated bus.
       - Mixer is responsible of mixing all the entries depending of their
         respective z-order and layout
      
      TVout is divided in 3 parts:
       - HDMI to generate HDMI signals, depending of chipset version HDMI phy can
         change.
       - HDA to generate signals for HD analog TV
       - VIP to control/switch data path coming from Compositor
      
      On stih416 compositor and Tvout are on different dies so a Video Trafic Advance
      inter-die Communication mechanism (VTAC) is needed.
      
      +---------------------------------------------+   +----------------------------------------+
      | +-------------------------------+   +----+  |   |  +----+   +--------------------------+ |
      | |                               |   |    |  |   |  |    |   |  +---------+     +----+  | |
      | | +----+              +------+  |   |    |  |   |  |    |   |  | VIP     |---->|HDMI|  | |
      | | |GPD +------------->|      |  |   |    |  |   |  |    |   |  |         |     +----+  | |
      | | +----+              |Mixer |--|-->|    |  |   |  |    |---|->| switcher|             | |
      | |                     |      |  |   |    |  |   |  |    |   |  |         |     +----+  | |
      | |                     |      |  |   |    |  |   |  |    |   |  |         |---->|HDA |  | |
      | |                     +------+  |   |VTAC|========>|VTAC|   |  +---------+     +----+  | |
      | |                               |   |    |  |   |  |    |   |                          | |
      | |         Compositor            |   |    |  |   |  |    |   |           TVout          | |
      | +-------------------------------+   |    |  |   |  |    |   +--------------------------+ |
      |                      ^              |    |  |   |  |    |             ^                  |
      |                      |              |    |  |   |  |    |             |                  |
      |               +--------------+      |    |  |   |  |    |      +-------------+           |
      |               | VTG (master) |----->|    |  |   |  |    |----->| VTG (slave) |           |
      |               +--------------+      +----+  |   |  +----+      +-------------+           |
      |Digital die                                  |   |                              Analog Die|
      +---------------------------------------------+   +----------------------------------------+
      
      On stih407 Compositor and Tvout are on the same die
      
      +-----------------------------------------------------------------+
      | +-------------------------------+  +--------------------------+ |
      | |                               |  |  +---------+     +----+  | |
      | | +----+              +------+  |  |  | VIP     |---->|HDMI|  | |
      | | |GPD +------------->|      |  |  |  |         |     +----+  | |
      | | +----+              |Mixer |--|--|->| switcher|             | |
      | | +----+   +-----+    |      |  |  |  |         |     +----+  | |
      | | |VDP +-->+HQVDP+--->|      |  |  |  |         |---->|HDA |  | |
      | | +----+   +-----+    +------+  |  |  +---------+     +----+  | |
      | |                               |  |                          | |
      | |         Compositor            |  |           TVout          | |
      | +-------------------------------+  +--------------------------+ |
      |                              ^        ^                         |
      |                              |        |                         |
      |                           +--------------+                      |
      |                           |     VTG      |                      |
      |                           +--------------+                      |
      |Digital die                                                      |
      +-----------------------------------------------------------------+
      
      In addition of the drivers for the IPs listed before a thin I2C driver (hdmiddc) is used
      by HDMI driver to retrieve EDID for monitor.
      
      To unify interfaces of GDP and VDP we create a "layer" interface called by
      compositor to control both GPD and VDP.
      
      Hardware have memory contraints (alignment, contiguous) so we use CMA drm helpers functions
      to allocate frame buffer.
      
      File naming convention is:
       - sti_* for IPs drivers
       - sti_drm_* for drm functions implementation.
      
      * 'drm_kms_for_next-v8' of git://git.linaro.org/people/benjamin.gaignard/kernel:
        drm: sti: Add DRM driver itself
        drm: sti: add Compositor
        drm: sti: add Mixer
        drm: sti: add VID layer
        drm: sti: add GDP layer
        drm: sti: add TVOut driver
        drm: sti: add HDA driver
        drm: sti: add HDMI driver
        drm: sti: add VTAC drivers
        drm: sti: add VTG driver
        drm: sti: add bindings for DRM driver
      96b1b971
    • Dave Airlie's avatar
      Merge branch 'tda998x-devel' of git://ftp.arm.linux.org.uk/~rmk/linux-cubox into drm-next · 920f9464
      Dave Airlie authored
      This builds upon the previous set of fixes which were pulled on 6th July.
      Included in this set are:
      - an update from Jean-Francois to add the missing reg documentation entry
        to the device tree documentation.
      - conversion of the tda998x driver to the component helpers.
      
      * 'tda998x-devel' of git://ftp.arm.linux.org.uk/~rmk/linux-cubox:
        drm/i2c: tda998x: add component support
        drm/i2c: tda998x: allow re-use of tda998x support code
        drm/i2c: tda998x: fix lack of required reg in DT documentation
      
      Conflicts:
      	drivers/gpu/drm/i2c/tda998x_drv.c
      920f9464
    • Dave Airlie's avatar
      Merge branch 'msm-next' of git://people.freedesktop.org/~robclark/linux into drm-next · eceb55a0
      Dave Airlie authored
      This time around we have a mix of new hw enablement (mdp5 v1.3 /
      apq8084), plus devicetree and various upstream changes (mostly
      adapting to CCF vs downstream clk driver differences) for mdp4 /
      apq8064.  With these drm/msm patches plus a few other small patchsets
      (from linaro qcom integration branch.. mostly stuff queued up for
      3.17) we have the inforce ifc6410 board working, with gpu.  Much nicer
      to work with than ancient vendor android branch :-)
      
      * 'msm-next' of git://people.freedesktop.org/~robclark/linux:
        drm/msm/hdmi: fix HDMI_MUX_EN gpio request typo
        drm/msm/hdmi: enable lpm-mux if it is present
        drm/msm/mdp5: add support for MDP5 v1.3
        drm/msm: fix potential deadlock in gpu init
        drm/msm: use upstream iommu
        drm/msm: no mmu is only error if not using vram carveout
        drm/msm: fix BUG_ON() in error cleanup path
        drm/msm/mdp4: add mdp axi clk
        drm/msm: hdmi phy 8960 phy pll
        drm/msm: update generated headers
        drm/msm: DT support for 8960/8064 (v3)
        drm/msm: Implement msm drm fb_mmap callback function
        drm/msm: activate iommu support
        drm/msm: fix double struct_mutex acquire
      eceb55a0
    • Dave Airlie's avatar
      Merge tag 'v3.16' into drm-next · 5d42f82a
      Dave Airlie authored
      Linux 3.16
      
      backmerge requested by i915, nouveau and radeon authors
      
      Conflicts:
      	drivers/gpu/drm/i915/i915_gem_render_state.c
      	drivers/gpu/drm/i915/intel_drv.h
      5d42f82a
    • Beeresh Gopal's avatar
      drm/msm/hdmi: fix HDMI_MUX_EN gpio request typo · a2fe6cdc
      Beeresh Gopal authored
      
      
      HDMI_MUX_EN gpio is requested. If an error occurs, the same name
      should be printed (HDMI_MUX_EN) instead of HDMI_MUX_SEL (typo).
      
      Signed-off-by: default avatarBeeresh Gopal <gbeeresh@codeaurora.org>
      Signed-off-by: default avatarStephane Viau <sviau@codeaurora.org>
      Reviewed-by: default avatarAndreas Färber <afaerber@suse.de>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      a2fe6cdc
    • Beeresh Gopal's avatar
      drm/msm/hdmi: enable lpm-mux if it is present · 1930f38a
      Beeresh Gopal authored
      
      
      lpm-mux is programmed to enable HDMI connector
      on the docking station for S805 chipset based
      devices.
      
      Signed-off-by: default avatarBeeresh Gopal <gbeeresh@codeaurora.org>
      Signed-off-by: default avatarStephane Viau <sviau@codeaurora.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      1930f38a
    • Stephane Viau's avatar
      drm/msm/mdp5: add support for MDP5 v1.3 · 3d47fd47
      Stephane Viau authored
      
      
      MDP5 has several functional blocks (ie: VIG/RGB pipes, LMs, ...).
      From one revision to another, these blocks' base addresses might
      change due to the number of instances present in the MDP5 hw.
      A way of dealing with these offset changes is to introduce
      dynamic offsets 'per block'.
      
      This change adds support for the new revision of MDP5: v1.3.
      The idea is to define one hw config per MDP version and select
      either one of them at runtime, after reading the MDP5 version.
      
      Once the MDP version is known, 'per block' dynamic offsets
      are initialized through a global pointer, which is then used for
      read/write register access.
      
      Signed-off-by: default avatarStephane Viau <sviau@codeaurora.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      3d47fd47
    • Rob Clark's avatar
      drm/msm: fix potential deadlock in gpu init · a1ad3523
      Rob Clark authored
      
      
      Somewhere along the way, the firmware loader sprouted another lock
      dependency, resulting in possible deadlock scenario:
      
       &dev->struct_mutex --> &sb->s_type->i_mutex_key#2 --> &mm->mmap_sem
      
      which is problematic vs things like gem mmap.
      
      So introduce a separate mutex to synchronize gpu init.
      
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      a1ad3523
    • Rob Clark's avatar
      drm/msm: use upstream iommu · 944fc36c
      Rob Clark authored
      
      
      Downstream kernel IOMMU had a non-standard way of dealing with multiple
      devices and multiple ports/contexts.  We don't need that on upstream
      kernel, so rip out the crazy.
      
      Note that we have to move the pinning of the ringbuffer to after the
      IOMMU is attached.  No idea how that managed to work properly on the
      downstream kernel.
      
      For now, I am leaving the IOMMU port name stuff in place, to simplify
      things for folks trying to backport latest drm/msm to device kernels.
      Once we no longer have to care about pre-DT kernels, we can drop this
      and instead backport upstream IOMMU driver.
      
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      944fc36c
    • Rob Clark's avatar
      1c4997fe
    • Rob Clark's avatar
      drm/msm: fix BUG_ON() in error cleanup path · 036c1708
      Rob Clark authored
      
      
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      036c1708
    • Rob Clark's avatar
      drm/msm/mdp4: add mdp axi clk · e8abb5b5
      Rob Clark authored
      
      
      Downstream kernel holds this clk via a fake-parent relationship.
      Upstream clock framework requires that we hold it explicitly.
      
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      e8abb5b5
    • Rob Clark's avatar
      drm/msm: hdmi phy 8960 phy pll · 034fbcc3
      Rob Clark authored
      
      
      On downstream kernel the clk driver directly bangs hdmi phy registers.
      For upstream kernel, we need to model this as a clock and register with
      the clock framework.
      
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      034fbcc3
    • Rob Clark's avatar
      drm/msm: update generated headers · 89301471
      Rob Clark authored
      
      
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      89301471
    • Rob Clark's avatar
      drm/msm: DT support for 8960/8064 (v3) · 41e69778
      Rob Clark authored
      
      
      Now that we (almost) have enough dependencies in place (MMCC, RPM, etc),
      add necessary DT support so that we can use drm/msm on upstream kernel.
      
      v2: update for review comments
      v3: rebase on component helper changes
      
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      41e69778
    • Hai Li's avatar
      drm/msm: Implement msm drm fb_mmap callback function · 8f67da33
      Hai Li authored
      
      
      This change implements msm drm specific fb_mmap function for fb device
      to properly map the fb address to userspace.
      
      Signed-off-by: default avatarHai Li <hali@codeaurora.org>
      Signed-off-by: default avatarStephane Viau <sviau@codeaurora.org>
      Signed-off-by: Rob Clark <robdclark@gmail.com> (+ minor comment tweak)
      8f67da33
    • Stephane Viau's avatar
      drm/msm: activate iommu support · 3bf6c1ec
      Stephane Viau authored
      
      
      This changes activates the iommu support for MDP5, through the
      platform config structure.
      
      Signed-off-by: default avatarStephane Viau <sviau@codeaurora.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      3bf6c1ec
    • Rob Clark's avatar
      drm/msm: fix double struct_mutex acquire · b544021f
      Rob Clark authored
      
      
      Mutex is already grabbed in show_locked().. somehow this slipped
      through.
      
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      b544021f
    • Dave Airlie's avatar
      Merge tag 'drm-intel-next-2014-07-25-merged' of... · c759606c
      Dave Airlie authored
      Merge tag 'drm-intel-next-2014-07-25-merged' of git://anongit.freedesktop.org/drm-intel into drm-next
      
      Final feature pull for 3.17.
      
      drm-intel-next-2014-07-25:
      - Ditch UMS support (well just the config option for now)
      - Prep work for future platforms (Sonika Jindal, Damien)
      - runtime pm/soix fixes (Paulo, Jesse)
      - psr tracking improvements, locking fixes, now enabled by default!
      - rps fixes for chv (Deepak, Ville)
      - drm core patches for rotation support (Ville, Sagar Kamble) - the i915 parts
        unfortunately didn't make it yet
      - userptr fixes (Chris)
      - minimum backlight brightness (Jani), acked long ago by Matthew Garret on irc -
        I've forgotten about this patch :(
      
      QA is a bit unhappy about the DP MST stuff since it broke hpd testing a
      bit, but otherwise looks sane. I've backmerged drm-next to resolve
      conflicts with the mst stuff, which means the new tag itself doesn't
      contain the overview as usual.
      
      * tag 'drm-intel-next-2014-07-25-merged' of git://anongit.freedesktop.org/drm-intel: (75 commits)
        drm/i915/userptr: Keep spin_lock/unlock in the same block
        drm/i915: Allow overlapping userptr objects
        drm/i915: Ditch UMS config option
        drm/i915: respect the VBT minimum backlight brightness
        drm/i915: extract backlight minimum brightness from VBT
        drm/i915: Replace HAS_PCH_SPLIT which incorrectly lets some platforms in
        drm/i915: Returning from increase/decrease of pllclock when invalid
        drm/i915: Setting legacy palette correctly for different platforms
        drm/i915: Avoid incorrect returning for some platforms
        drm/i915: Writing proper check for reading of pipe status reg
        drm/i915: Returning the right VGA control reg for platforms
        drm/i915: Allowing changing of wm latencies for valid platforms
        drm/i915: Adding HAS_GMCH_DISPLAY macro
        drm/i915: Fix possible overflow when recording semaphore states.
        drm/i915: Do not unmap object unless no other VMAs reference it
        drm/i915: remove plane/cursor/pipe assertions from intel_crtc_disable
        drm/i915: Reorder ctx unref on ppgtt cleanup
        drm/i915/error: Check the potential ctx obj's vm
        drm/i915: Fix printing proper min/min/rpe values in debugfs
        drm/i915: BDW can also detect unclaimed registers
        ...
      c759606c
    • Dave Airlie's avatar
      drm: close race in connector registration (v2) · 2ee39452
      Dave Airlie authored
      
      
      Daniel pointed out with hotplug that userspace could be trying to oops us
      as root for lols, and that to be correct we shouldn't register the object
      with the idr before we have fully set the connector object up.
      
      His proposed solution was a lot more life changing, this seemed like a simpler
      proposition to me, get the connector object id from the idr, but don't
      register the object until the drm_connector_register callback.
      
      The open question is whether the drm_mode_object_register needs a bigger lock
      than just the idr one, but I can't see why it would, but I can be locking
      challenged.
      
      v2: fix bool noreg into sane - add comment.
      
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      2ee39452
    • Chris Wilson's avatar
      drm/i915: only hook up hpd pulse for DP outputs · f68d697e
      Chris Wilson authored
      On HSW+, the digital encoders are shared between HDMI and DP outputs,
      with one encoder masquerading as both. The VBT should tell us if we need
      to have DP or HDMI support on a particular port, but if we don't have DP
      support and we enable the DP hpd pulse handler then we cause an oops.
      
      Don't hook up the DP hpd handling if we don't have a DP port.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81856
      
      
      Reported-by: Intel QA Team.
      Signed-off-by: Dave Airlie <airlied@redhat.com> # v1
      [ickle: Fix the error handling after a malloc failure]
      Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
      Cc: Paulo Zanoni <przanoni@gmail.com>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      f68d697e
    • Dave Airlie's avatar
      Merge branch 'exynos-drm-next' of... · 1fae6dfe
      Dave Airlie authored
      Merge branch 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-next
      
         This pull request includes i80 interface support, module auto-loading
         ipp consolidation, and trivail fixups and cleanups.
      
      Summary:
      - Add i80 interface support. For this, we added some features to
        Exynos drm framework, which don't affect any other SoC and common
        framework because they are specific to Exynos drm.
      - Add module auto-loading support. For this, sub drivers of Exynos drm
        exports their of match tables to userspace. This allows modules to be
        loaded automatically based on devicetree information
      - Consolidate ipp driver. This patch just just includes cleanups and
        a littl bit refactoring codes.
      
      If there is any problem, please kindly let me know.
      
      * 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos: (38 commits)
        drm/exynos: g2d: let exynos_g2d_get_ver_ioctl fail
        drm/exynos: g2d: make ioctls more robust
        drm/exynos: hdmi: add null check for hdmiphy_port
        drm/exynos: control blending of mixer graphic layer 0
        drm/exynos: Add MODULE_DEVICE_TABLE entries for various components
        Subject: Revert "drm/exynos: remove MODULE_DEVICE_TABLE definitions"
        Subject: Revert "drm/exynos: fix module build error"
        drm/exynos/ipp: simplify ipp_find_driver
        drm/exynos/ipp: simplify ipp_create_id
        drm/exynos/ipp: remove redundant messages
        drm/exynos/ipp: simplify ipp_find_obj
        drm/exynos/ipp: remove useless registration checks
        drm/exynos/ipp: simplify memory check function
        drm/exynos/ipp: remove incorrect checks of list_first_entry result
        drm/exynos/ipp: remove temporary variable
        drm/exynos/ipp: correct address type
        drm/exynos/ipp: remove struct exynos_drm_ipp_private
        drm/exynos/ipp: remove unused field from exynos_drm_ipp_private
        drm/exynos/ipp: remove type casting
        drm/exynos: g2d: add exynos4212 as a compatible device.
        ...
      1fae6dfe
    • Tobias Jakobi's avatar
      drm/exynos: g2d: let exynos_g2d_get_ver_ioctl fail · ef7ce055
      Tobias Jakobi authored
      
      
      Currently the DRM_IOCTL_EXYNOS_G2D_GET_VER ioctl always succeeds, even
      if no G2D support is available. Let the ioctl fail when this is the
      case, so that userspace can accurately probe for G2D support.
      
      This also fixes the exynos tests in libdrm. There 'g2d_init' doesn't
      fail when G2D is absent, leading to a segfault later.
      
      Signed-off-by: default avatarTobias Jakobi <tjakobi@math.uni-bielefeld.de>
      Signed-off-by: default avatarINki Dae <inki.dae@samsung.com>
      ef7ce055
    • Tobias Jakobi's avatar
      drm/exynos: g2d: make ioctls more robust · 1cd1ea56
      Tobias Jakobi authored
      
      
      Both exynos_g2d_set_cmdlist_ioctl and exynos_g2d_exec_ioctl don't check
      if the G2D was succesfully probe. If that is not the case, then g2d_priv
      is just NULL and extracting 'dev' from it in the next step  is going to
      produce a kernel oops.
      
      Add proper checks and return ENODEV if the G2D is not available.
      
      Signed-off-by: default avatarTobias Jakobi <tjakobi@math.uni-bielefeld.de>
      Signed-off-by: default avatarINki Dae <inki.dae@samsung.com>
      1cd1ea56
    • Seung-Woo Kim's avatar
      drm/exynos: hdmi: add null check for hdmiphy_port · 9d1e25c9
      Seung-Woo Kim authored
      
      
      The hdmiphy can be apb and hdmiphy_port can be null. So before
      accessing hdmiphy_port, it should be checked.
      
      Signed-off-by: default avatarSeung-Woo Kim <sw0312.kim@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      9d1e25c9
    • Joonyoung Shim's avatar
      drm/exynos: control blending of mixer graphic layer 0 · f1e716d8
      Joonyoung Shim authored
      The mixer graphic layer 0 isn't blended as default by commit
      0377f4ed
      
      (drm/exynos: Don't blend mixer
      layer 0). But it needs to be blended with graphic layer 0 if video layer
      is enabled by vp because video layer is bottom.
      
      Signed-off-by: default avatarJoonyoung Shim <jy0922.shim@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      f1e716d8