OSDN Git Service

drm/tegra: Convert to using __drm_atomic_helper_crtc_reset() for reset.
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Fri, 1 Mar 2019 12:56:24 +0000 (13:56 +0100)
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Thu, 25 Apr 2019 09:02:04 +0000 (11:02 +0200)
Convert tegra to using __drm_atomic_helper_crtc_reset(), instead of
writing its own version. Instead of open coding destroy_state(),
call it directly for freeing the old state.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Jonathan Hunter <jonathanh@nvidia.com>
Cc: linux-tegra@vger.kernel.org
[mlankhorst: Keep tegra_crtc_reset at the same place and predeclare
 tegra_crtc_atomic_destroy_state (tagr)]
Acked-by: Thierry Reding <treding@nvidia.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190301125627.7285-15-maarten.lankhorst@linux.intel.com
drivers/gpu/drm/tegra/dc.c

index 607a6ea..079250c 100644 (file)
@@ -26,6 +26,9 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_plane_helper.h>
 
+static void tegra_crtc_atomic_destroy_state(struct drm_crtc *crtc,
+                                           struct drm_crtc_state *state);
+
 static void tegra_dc_stats_reset(struct tegra_dc_stats *stats)
 {
        stats->frames = 0;
@@ -1155,20 +1158,12 @@ static void tegra_dc_destroy(struct drm_crtc *crtc)
 
 static void tegra_crtc_reset(struct drm_crtc *crtc)
 {
-       struct tegra_dc_state *state;
+       struct tegra_dc_state *state = kzalloc(sizeof(*state), GFP_KERNEL);
 
        if (crtc->state)
-               __drm_atomic_helper_crtc_destroy_state(crtc->state);
-
-       kfree(crtc->state);
-       crtc->state = NULL;
-
-       state = kzalloc(sizeof(*state), GFP_KERNEL);
-       if (state) {
-               crtc->state = &state->base;
-               crtc->state->crtc = crtc;
-       }
+               tegra_crtc_atomic_destroy_state(crtc, crtc->state);
 
+       __drm_atomic_helper_crtc_reset(crtc, &state->base);
        drm_crtc_vblank_reset(crtc);
 }