drm/vc4: Use simple encoder
authorThomas Zimmermann <tzimmermann@suse.de>
Thu, 5 Mar 2020 15:59:46 +0000 (16:59 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Thu, 2 Apr 2020 12:16:45 +0000 (14:16 +0200)
The vc4 driver uses empty implementations for its encoders. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Eric Anholt <eric@anholt.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20200305155950.2705-19-tzimmermann@suse.de
drivers/gpu/drm/vc4/vc4_dpi.c
drivers/gpu/drm/vc4/vc4_dsi.c
drivers/gpu/drm/vc4/vc4_hdmi.c
drivers/gpu/drm/vc4/vc4_vec.c

index 6dfede03396efb1906a529d97d0bc2174c69b654..a90f2545baee0c7e6b541cc1d957c7dad6c286a4 100644 (file)
@@ -17,6 +17,7 @@
 #include <drm/drm_of.h>
 #include <drm/drm_panel.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 #include <linux/clk.h>
 #include <linux/component.h>
 #include <linux/of_graph.h>
@@ -114,10 +115,6 @@ static const struct debugfs_reg32 dpi_regs[] = {
        VC4_REG32(DPI_ID),
 };
 
-static const struct drm_encoder_funcs vc4_dpi_encoder_funcs = {
-       .destroy = drm_encoder_cleanup,
-};
-
 static void vc4_dpi_encoder_disable(struct drm_encoder *encoder)
 {
        struct vc4_dpi_encoder *vc4_encoder = to_vc4_dpi_encoder(encoder);
@@ -309,8 +306,7 @@ static int vc4_dpi_bind(struct device *dev, struct device *master, void *data)
        if (ret)
                DRM_ERROR("Failed to turn on core clock: %d\n", ret);
 
-       drm_encoder_init(drm, dpi->encoder, &vc4_dpi_encoder_funcs,
-                        DRM_MODE_ENCODER_DPI, NULL);
+       drm_simple_encoder_init(drm, dpi->encoder, DRM_MODE_ENCODER_DPI);
        drm_encoder_helper_add(dpi->encoder, &vc4_dpi_encoder_helper_funcs);
 
        ret = vc4_dpi_init_bridge(dpi);
index d99b1d52665172abf055042034df49956101c388..eaf276978ee7fb79a145868071ddd91f86fbdd12 100644 (file)
@@ -37,6 +37,7 @@
 #include <drm/drm_of.h>
 #include <drm/drm_panel.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "vc4_drv.h"
 #include "vc4_regs.h"
@@ -652,15 +653,6 @@ static const struct debugfs_reg32 dsi1_regs[] = {
        VC4_REG32(DSI1_ID),
 };
 
-static void vc4_dsi_encoder_destroy(struct drm_encoder *encoder)
-{
-       drm_encoder_cleanup(encoder);
-}
-
-static const struct drm_encoder_funcs vc4_dsi_encoder_funcs = {
-       .destroy = vc4_dsi_encoder_destroy,
-};
-
 static void vc4_dsi_latch_ulps(struct vc4_dsi *dsi, bool latch)
 {
        u32 afec0 = DSI_PORT_READ(PHY_AFEC0);
@@ -1615,8 +1607,7 @@ static int vc4_dsi_bind(struct device *dev, struct device *master, void *data)
        if (dsi->port == 1)
                vc4->dsi1 = dsi;
 
-       drm_encoder_init(drm, dsi->encoder, &vc4_dsi_encoder_funcs,
-                        DRM_MODE_ENCODER_DSI, NULL);
+       drm_simple_encoder_init(drm, dsi->encoder, DRM_MODE_ENCODER_DSI);
        drm_encoder_helper_add(dsi->encoder, &vc4_dsi_encoder_helper_funcs);
 
        ret = drm_bridge_attach(dsi->encoder, dsi->bridge, NULL, 0);
@@ -1656,7 +1647,7 @@ static void vc4_dsi_unbind(struct device *dev, struct device *master,
         * normally.
         */
        list_splice_init(&dsi->bridge_chain, &dsi->encoder->bridge_chain);
-       vc4_dsi_encoder_destroy(dsi->encoder);
+       drm_encoder_cleanup(dsi->encoder);
 
        if (dsi->port == 1)
                vc4->dsi1 = NULL;
index cea18dc15f77cdb3a7b6ab74f296ab54faae56ef..8f956156eb8ec17814515f54db0006cb6b335b99 100644 (file)
@@ -34,6 +34,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_edid.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 #include <linux/clk.h>
 #include <linux/component.h>
 #include <linux/i2c.h>
@@ -306,15 +307,6 @@ static struct drm_connector *vc4_hdmi_connector_init(struct drm_device *dev,
        return connector;
 }
 
-static void vc4_hdmi_encoder_destroy(struct drm_encoder *encoder)
-{
-       drm_encoder_cleanup(encoder);
-}
-
-static const struct drm_encoder_funcs vc4_hdmi_encoder_funcs = {
-       .destroy = vc4_hdmi_encoder_destroy,
-};
-
 static int vc4_hdmi_stop_packet(struct drm_encoder *encoder,
                                enum hdmi_infoframe_type type)
 {
@@ -1394,8 +1386,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
        }
        pm_runtime_enable(dev);
 
-       drm_encoder_init(drm, hdmi->encoder, &vc4_hdmi_encoder_funcs,
-                        DRM_MODE_ENCODER_TMDS, NULL);
+       drm_simple_encoder_init(drm, hdmi->encoder, DRM_MODE_ENCODER_TMDS);
        drm_encoder_helper_add(hdmi->encoder, &vc4_hdmi_encoder_helper_funcs);
 
        hdmi->connector =
@@ -1453,7 +1444,7 @@ err_destroy_conn:
        vc4_hdmi_connector_destroy(hdmi->connector);
 #endif
 err_destroy_encoder:
-       vc4_hdmi_encoder_destroy(hdmi->encoder);
+       drm_encoder_cleanup(hdmi->encoder);
 err_unprepare_hsm:
        clk_disable_unprepare(hdmi->hsm_clock);
        pm_runtime_disable(dev);
@@ -1472,7 +1463,7 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master,
 
        cec_unregister_adapter(hdmi->cec_adap);
        vc4_hdmi_connector_destroy(hdmi->connector);
-       vc4_hdmi_encoder_destroy(hdmi->encoder);
+       drm_encoder_cleanup(hdmi->encoder);
 
        clk_disable_unprepare(hdmi->hsm_clock);
        pm_runtime_disable(dev);
index 7402bc768664ccd47d66e5168769784d52fd20b8..bd5b8eb58b180696b217f914d550af1419a2978d 100644 (file)
@@ -17,6 +17,7 @@
 #include <drm/drm_edid.h>
 #include <drm/drm_panel.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 #include <linux/clk.h>
 #include <linux/component.h>
 #include <linux/of_graph.h>
@@ -374,10 +375,6 @@ static struct drm_connector *vc4_vec_connector_init(struct drm_device *dev,
        return connector;
 }
 
-static const struct drm_encoder_funcs vc4_vec_encoder_funcs = {
-       .destroy = drm_encoder_cleanup,
-};
-
 static void vc4_vec_encoder_disable(struct drm_encoder *encoder)
 {
        struct vc4_vec_encoder *vc4_vec_encoder = to_vc4_vec_encoder(encoder);
@@ -566,8 +563,7 @@ static int vc4_vec_bind(struct device *dev, struct device *master, void *data)
 
        pm_runtime_enable(dev);
 
-       drm_encoder_init(drm, vec->encoder, &vc4_vec_encoder_funcs,
-                        DRM_MODE_ENCODER_TVDAC, NULL);
+       drm_simple_encoder_init(drm, vec->encoder, DRM_MODE_ENCODER_TVDAC);
        drm_encoder_helper_add(vec->encoder, &vc4_vec_encoder_helper_funcs);
 
        vec->connector = vc4_vec_connector_init(drm, vec);