1. 04 7月, 2016 3 次提交
  2. 01 7月, 2016 4 次提交
  3. 30 6月, 2016 3 次提交
    • J
      drm/tegra: Prepare DPAUX for supporting generic PM domains · 9b99044a
      Jon Hunter 提交于
      To utilise the DPAUX on Tegra, the SOR power partition must be enabled.
      Now that Tegra supports the generic PM domain framework we manage the
      SOR power partition via this framework for DPAUX. However, the sequence
      for gating/ungating the SOR power partition requires that the DPAUX
      reset is asserted/de-asserted at the time the SOR power partition is
      gated/ungated, respectively. Now that the reset control core assumes
      that resets are exclusive, the Tegra generic PM domain code and the
      DPAUX driver cannot request the same reset unless we mark the resets as
      shared. Sharing resets will not work in this case because we cannot
      guarantee that the reset will be asserted/de-asserted at the appropriate
      time. Therefore, given that the Tegra generic PM domain code will handle
      the DPAUX reset, do not request the reset in the DPAUX driver if the
      DPAUX device has a PM domain associated.
      Signed-off-by: NJon Hunter <jonathanh@nvidia.com>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      9b99044a
    • J
      drm/tegra: dpaux: Add helpers for setting up pads · 9d0e09c1
      Jon Hunter 提交于
      In preparation for adding pinctrl support for the DPAUX pads, add a
      couple of helpers functions to configure the pads and control their
      power.
      
      Please note that although a simple if-statement could be used instead
      of a case statement for configuring the pads as there are only two
      possible modes, a case statement is used because when integrating with
      the pinctrl framework, we need to be able to handle invalid modes that
      could be passed.
      Signed-off-by: NJon Hunter <jonathanh@nvidia.com>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      9d0e09c1
    • J
      drm/tegra: dpaux: Clean-up on probe failure · bcbd63df
      Jon Hunter 提交于
      If the probing of the DPAUX fails, then clocks are left enabled and the
      DPAUX reset de-asserted. Add code to perform the necessary clean-up on
      probe failure by disabling clocks and asserting the reset.
      Signed-off-by: NJon Hunter <jonathanh@nvidia.com>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      bcbd63df
  4. 21 5月, 2016 1 次提交
    • D
      drm: Nuke ->vblank_disable_allowed · fcee5906
      Daniel Vetter 提交于
      This was added in
      
      commit 0a3e67a4
      Author: Jesse Barnes <jbarnes@virtuousgeek.org>
      Date:   Tue Sep 30 12:14:26 2008 -0700
      
          drm: Rework vblank-wait handling to allow interrupt reduction.
      
      to stay backwards-compatible with old UMS code that didn't even tell
      the kernel when it did a modeset, so that the kernel could
      save/restore vblank counters. At worst this means vblanks will be
      somewhat funky on a setup that very likely no one still runs.
      
      So let's just nuke it.
      
      Plan B would be to set it unconditionally in drm_vblank_init for kms
      drivers, instead of in each driver separately. So if this patch breaks
      anything please only restore the hunks in drmP.h and drm_irq.c, plus
      add a check for DRIVER_MODESET in drm_vblank_init.
      
      Stumbled over this in a discussion on irc with Chris.
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Cc: Liviu Dudau <liviu.dudau@arm.com>
      Cc: Russell King <rmk+kernel@arm.linux.org.uk>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: Eric Anholt <eric@anholt.net>
      Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
      Cc: Inki Dae <inki.dae@samsung.com>
      Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Mark Yao <mark.yao@rock-chips.com>
      Cc: Sascha Hauer <s.hauer@pengutronix.de>
      Cc: Philipp Zabel <p.zabel@pengutronix.de>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      Acked-by: NLiviu Dudau <Liviu.Dudau@arm.com>
      Acked-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Tested-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      fcee5906
  5. 19 5月, 2016 1 次提交
    • J
      drm/tegra: Fix crash caused by reference count imbalance · 280dc0e1
      Jon Hunter 提交于
      Commit d2307dea ("drm/atomic: use connector references (v3)") added
      reference counting for DRM connectors and this caused a crash when
      exercising system suspend on Tegra114 Dalmore.
      
      The Tegra DSI driver implements a Tegra specific function,
      tegra_dsi_connector_duplicate_state(), to duplicate the connector state
      and destroys the state using the generic helper function,
      drm_atomic_helper_connector_destroy_state(). Following commit
      d2307dea ("drm/atomic: use connector references (v3)") there is
      now an imbalance in the connector reference count because the Tegra
      function to duplicate state does not take a reference when duplicating
      the state information. However, the generic helper function to destroy
      the state information assumes a reference has been taken and during
      system suspend, when the connector state is destroyed, this leads to a
      crash because we attempt to put the reference for an object that has
      already been freed.
      
      Fix this by calling __drm_atomic_helper_connector_duplicate_state() from
      tegra_dsi_connector_duplicate_state() to ensure that we take a reference
      on a connector if crtc is set. Note that this will also copy the
      connector state a 2nd time, but this should be harmless.
      
      By fixing tegra_dsi_connector_duplicate_state() to take a reference,
      although a crash was no longer seen, it was then observed that after
      each system suspend-resume cycle, the reference would be one greater
      than before the suspend-resume cycle. Following commit d2307dea
      ("drm/atomic: use connector references (v3)"), it was found that we
      also need to put the reference when calling the function
      tegra_dsi_connector_reset() before freeing the state. Fix this by
      updating tegra_dsi_connector_reset() to call the function
      __drm_atomic_helper_connector_destroy_state() in order to put the
      reference for the connector.
      
      Fixes: d2307dea ("drm/atomic: use connector references (v3)")
      Signed-off-by: NJon Hunter <jonathanh@nvidia.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Acked-by: NThierry Reding <treding@nvidia.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/1463585856-16606-1-git-send-email-jonathanh@nvidia.com
      280dc0e1
  6. 17 5月, 2016 3 次提交
  7. 11 5月, 2016 1 次提交
  8. 02 5月, 2016 1 次提交
  9. 22 4月, 2016 1 次提交
  10. 05 4月, 2016 1 次提交
  11. 31 3月, 2016 1 次提交
  12. 09 3月, 2016 1 次提交
    • L
      dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() · f6e45661
      Luis R. Rodriguez 提交于
      Rename dma_*_writecombine() to dma_*_wc(), so that the naming
      is coherent across the various write-combining APIs. Keep the
      old names for compatibility for a while, these can be removed
      at a later time. A guard is left to enable backporting of the
      rename, and later remove of the old mapping defines seemlessly.
      
      Build tested successfully with allmodconfig.
      
      The following Coccinelle SmPL patch was used for this simple
      transformation:
      
      @ rename_dma_alloc_writecombine @
      expression dev, size, dma_addr, gfp;
      @@
      
      -dma_alloc_writecombine(dev, size, dma_addr, gfp)
      +dma_alloc_wc(dev, size, dma_addr, gfp)
      
      @ rename_dma_free_writecombine @
      expression dev, size, cpu_addr, dma_addr;
      @@
      
      -dma_free_writecombine(dev, size, cpu_addr, dma_addr)
      +dma_free_wc(dev, size, cpu_addr, dma_addr)
      
      @ rename_dma_mmap_writecombine @
      expression dev, vma, cpu_addr, dma_addr, size;
      @@
      
      -dma_mmap_writecombine(dev, vma, cpu_addr, dma_addr, size)
      +dma_mmap_wc(dev, vma, cpu_addr, dma_addr, size)
      
      We also keep the old names as compatibility helpers, and
      guard against their definition to make backporting easier.
      
      Generated-by: Coccinelle SmPL
      Suggested-by: NIngo Molnar <mingo@kernel.org>
      Signed-off-by: NLuis R. Rodriguez <mcgrof@suse.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: airlied@linux.ie
      Cc: akpm@linux-foundation.org
      Cc: benh@kernel.crashing.org
      Cc: bhelgaas@google.com
      Cc: bp@suse.de
      Cc: dan.j.williams@intel.com
      Cc: daniel.vetter@ffwll.ch
      Cc: dhowells@redhat.com
      Cc: julia.lawall@lip6.fr
      Cc: konrad.wilk@oracle.com
      Cc: linux-fbdev@vger.kernel.org
      Cc: linux-pci@vger.kernel.org
      Cc: luto@amacapital.net
      Cc: mst@redhat.com
      Cc: tomi.valkeinen@ti.com
      Cc: toshi.kani@hp.com
      Cc: vinod.koul@intel.com
      Cc: xen-devel@lists.xensource.com
      Link: http://lkml.kernel.org/r/1453516462-4844-1-git-send-email-mcgrof@do-not-panic.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
      f6e45661
  13. 09 2月, 2016 1 次提交
  14. 08 2月, 2016 1 次提交
  15. 05 1月, 2016 1 次提交
  16. 15 12月, 2015 2 次提交
  17. 14 12月, 2015 11 次提交
  18. 11 12月, 2015 3 次提交
    • V
      drm: Pass 'name' to drm_encoder_init() · 13a3d91f
      Ville Syrjälä 提交于
      Done with coccinelle for the most part. However, it thinks '...' is
      part of the semantic patch, so I put an 'int DOTDOTDOT' placeholder
      in its place and got rid of it with sed afterwards.
      
      @@
      identifier dev, encoder, funcs;
      @@
       int drm_encoder_init(struct drm_device *dev,
                            struct drm_encoder *encoder,
                            const struct drm_encoder_funcs *funcs,
                            int encoder_type
      +                     ,const char *name, int DOTDOTDOT
                            )
      { ... }
      
      @@
      identifier dev, encoder, funcs;
      @@
       int drm_encoder_init(struct drm_device *dev,
                            struct drm_encoder *encoder,
                            const struct drm_encoder_funcs *funcs,
                            int encoder_type
      +                     ,const char *name, int DOTDOTDOT
                            );
      
      @@
      expression E1, E2, E3, E4;
      @@
       drm_encoder_init(E1, E2, E3, E4
      +                 ,NULL
                        )
      
      v2: Add ', or NULL...' to @name kernel doc (Jani)
          Annotate the function with __printf() attribute (Jani)
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/1449670818-2966-1-git-send-email-ville.syrjala@linux.intel.com
      13a3d91f
    • V
      drm: Pass 'name' to drm_universal_plane_init() · b0b3b795
      Ville Syrjälä 提交于
      Done with coccinelle for the most part. It choked on
      msm/mdp/mdp5/mdp5_plane.c like so:
      "BAD:!!!!!  enum drm_plane_type type;"
      No idea how to deal with that, so I just fixed that up
      by hand.
      
      Also it thinks '...' is part of the semantic patch, so I put an
      'int DOTDOTDOT' placeholder in its place and got rid of it with
      sed afterwards.
      
      I didn't convert drm_plane_init() since passing the varargs through
      would mean either cpp macros or va_list, and I figured we don't
      care about these legacy functions enough to warrant the extra pain.
      
      @@
      typedef uint32_t;
      identifier dev, plane, possible_crtcs, funcs, formats, format_count, type;
      @@
       int drm_universal_plane_init(struct drm_device *dev,
                                    struct drm_plane *plane,
                                    unsigned long possible_crtcs,
                                    const struct drm_plane_funcs *funcs,
                                    const uint32_t *formats,
                                    unsigned int format_count,
                                    enum drm_plane_type type
      +                             ,const char *name, int DOTDOTDOT
                                    )
      { ... }
      
      @@
      identifier dev, plane, possible_crtcs, funcs, formats, format_count, type;
      @@
       int drm_universal_plane_init(struct drm_device *dev,
                                    struct drm_plane *plane,
                                    unsigned long possible_crtcs,
                                    const struct drm_plane_funcs *funcs,
                                    const uint32_t *formats,
                                    unsigned int format_count,
                                    enum drm_plane_type type
      +                             ,const char *name, int DOTDOTDOT
                                    );
      
      @@
      expression E1, E2, E3, E4, E5, E6, E7;
      @@
       drm_universal_plane_init(E1, E2, E3, E4, E5, E6, E7
      +                         ,NULL
                                )
      
      v2: Split crtc and plane changes apart
          Pass NUL for no-name instead of ""
          Leave drm_plane_init() alone
      v3: Add ', or NULL...' to @name kernel doc (Jani)
          Annotate the function with __printf() attribute (Jani)
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/1449670795-2853-1-git-send-email-ville.syrjala@linux.intel.com
      b0b3b795
    • V
      drm: Pass 'name' to drm_crtc_init_with_planes() · f9882876
      Ville Syrjälä 提交于
      Done with coccinelle for the most part. However, it thinks '...' is
      part of the semantic patch, so I put an 'int DOTDOTDOT' placeholder
      in its place and got rid of it with sed afterwards.
      
      I didn't convert drm_crtc_init() since passing the varargs through
      would mean either cpp macros or va_list, and I figured we don't
      care about these legacy functions enough to warrant the extra pain.
      
      @@
      identifier dev, crtc, primary, cursor, funcs;
      @@
       int drm_crtc_init_with_planes(struct drm_device *dev,
                                     struct drm_crtc *crtc,
                                     struct drm_plane *primary, struct drm_plane *cursor,
                                     const struct drm_crtc_funcs *funcs
      +                              ,const char *name, int DOTDOTDOT
                                     )
      { ... }
      
      @@
      identifier dev, crtc, primary, cursor, funcs;
      @@
       int drm_crtc_init_with_planes(struct drm_device *dev,
                                     struct drm_crtc *crtc,
                                     struct drm_plane *primary, struct drm_plane *cursor,
                                     const struct drm_crtc_funcs *funcs
      +                              ,const char *name, int DOTDOTDOT
                                     );
      
      @@
      expression E1, E2, E3, E4, E5;
      @@
       drm_crtc_init_with_planes(E1, E2, E3, E4, E5
      +                          ,NULL
                                 )
      
      v2: Split crtc and plane changes apart
          Pass NULL for no-name instead of ""
          Leave drm_crtc_init() alone
      v3: Add ', or NULL...' to @name kernel doc (Jani)
          Annotate the function with __printf() attribute (Jani)
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/1449670771-2751-1-git-send-email-ville.syrjala@linux.intel.com
      f9882876