]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/gma500: Use simple encoder
authorThomas Zimmermann <tzimmermann@suse.de>
Thu, 5 Mar 2020 15:59:33 +0000 (16:59 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Thu, 2 Apr 2020 12:16:44 +0000 (14:16 +0200)
The gma500 driver uses empty implementations for some of its encoders.
Replace the code with the generic simple encoder. As a side effect, the
patch also removes an indirection in the encoder setup for Medfield.

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: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20200305155950.2705-6-tzimmermann@suse.de
13 files changed:
drivers/gpu/drm/gma500/cdv_intel_crt.c
drivers/gpu/drm/gma500/cdv_intel_dp.c
drivers/gpu/drm/gma500/cdv_intel_hdmi.c
drivers/gpu/drm/gma500/cdv_intel_lvds.c
drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
drivers/gpu/drm/gma500/mdfld_output.h
drivers/gpu/drm/gma500/mdfld_tmd_vid.c
drivers/gpu/drm/gma500/mdfld_tpo_vid.c
drivers/gpu/drm/gma500/oaktrail_hdmi.c
drivers/gpu/drm/gma500/oaktrail_lvds.c
drivers/gpu/drm/gma500/psb_intel_drv.h
drivers/gpu/drm/gma500/psb_intel_lvds.c
drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c

index 29c36d63b20e1d1d81ca1a9b599d75812e55aecc..88535f5aacc5d39aa0bc484a5cad41c5ae325701 100644 (file)
@@ -28,6 +28,8 @@
 #include <linux/i2c.h>
 #include <linux/pm_runtime.h>
 
+#include <drm/drm_simple_kms_helper.h>
+
 #include "cdv_device.h"
 #include "intel_bios.h"
 #include "power.h"
@@ -237,15 +239,6 @@ static const struct drm_connector_helper_funcs
        .best_encoder = gma_best_encoder,
 };
 
-static void cdv_intel_crt_enc_destroy(struct drm_encoder *encoder)
-{
-       drm_encoder_cleanup(encoder);
-}
-
-static const struct drm_encoder_funcs cdv_intel_crt_enc_funcs = {
-       .destroy = cdv_intel_crt_enc_destroy,
-};
-
 void cdv_intel_crt_init(struct drm_device *dev,
                        struct psb_intel_mode_device *mode_dev)
 {
@@ -271,8 +264,7 @@ void cdv_intel_crt_init(struct drm_device *dev,
                &cdv_intel_crt_connector_funcs, DRM_MODE_CONNECTOR_VGA);
 
        encoder = &gma_encoder->base;
-       drm_encoder_init(dev, encoder,
-               &cdv_intel_crt_enc_funcs, DRM_MODE_ENCODER_DAC, NULL);
+       drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_DAC);
 
        gma_connector_attach_encoder(gma_connector, gma_encoder);
 
index 5772b2dce0d662170731de50b2400ed52feb4c6d..13947ec06dbbf31d4f43831afc78ceb950618315 100644 (file)
@@ -32,6 +32,7 @@
 #include <drm/drm_crtc.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_dp_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "gma_display.h"
 #include "psb_drv.h"
@@ -1908,11 +1909,6 @@ cdv_intel_dp_destroy(struct drm_connector *connector)
        kfree(connector);
 }
 
-static void cdv_intel_dp_encoder_destroy(struct drm_encoder *encoder)
-{
-       drm_encoder_cleanup(encoder);
-}
-
 static const struct drm_encoder_helper_funcs cdv_intel_dp_helper_funcs = {
        .dpms = cdv_intel_dp_dpms,
        .mode_fixup = cdv_intel_dp_mode_fixup,
@@ -1935,11 +1931,6 @@ static const struct drm_connector_helper_funcs cdv_intel_dp_connector_helper_fun
        .best_encoder = gma_best_encoder,
 };
 
-static const struct drm_encoder_funcs cdv_intel_dp_enc_funcs = {
-       .destroy = cdv_intel_dp_encoder_destroy,
-};
-
-
 static void cdv_intel_dp_add_properties(struct drm_connector *connector)
 {
        cdv_intel_attach_force_audio_property(connector);
@@ -2016,8 +2007,7 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev
        encoder = &gma_encoder->base;
 
        drm_connector_init(dev, connector, &cdv_intel_dp_connector_funcs, type);
-       drm_encoder_init(dev, encoder, &cdv_intel_dp_enc_funcs,
-                        DRM_MODE_ENCODER_TMDS, NULL);
+       drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_TMDS);
 
        gma_connector_attach_encoder(gma_connector, gma_encoder);
 
@@ -2120,7 +2110,7 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev
                if (ret == 0) {
                        /* if this fails, presume the device is a ghost */
                        DRM_INFO("failed to retrieve link info, disabling eDP\n");
-                       cdv_intel_dp_encoder_destroy(encoder);
+                       drm_encoder_cleanup(encoder);
                        cdv_intel_dp_destroy(connector);
                        goto err_priv;
                } else {
index 1711a41acc165414a5533048c745f18b2b274ea8..0d12c6ffbc4078796a9e1fcc56e3a583dba54786 100644 (file)
@@ -32,6 +32,7 @@
 #include <drm/drm.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_edid.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "cdv_device.h"
 #include "psb_drv.h"
@@ -311,8 +312,7 @@ void cdv_hdmi_init(struct drm_device *dev,
                           &cdv_hdmi_connector_funcs,
                           DRM_MODE_CONNECTOR_DVID);
 
-       drm_encoder_init(dev, encoder, &psb_intel_lvds_enc_funcs,
-                        DRM_MODE_ENCODER_TMDS, NULL);
+       drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_TMDS);
 
        gma_connector_attach_encoder(gma_connector, gma_encoder);
        gma_encoder->type = INTEL_OUTPUT_HDMI;
index ea0a5d9a0acc3111515cc5069d248f4c9509dba9..18de10e9ff9a09abc037ea3491fb1c9311d99615 100644 (file)
@@ -12,6 +12,8 @@
 #include <linux/i2c.h>
 #include <linux/pm_runtime.h>
 
+#include <drm/drm_simple_kms_helper.h>
+
 #include "cdv_device.h"
 #include "intel_bios.h"
 #include "power.h"
@@ -499,16 +501,6 @@ static const struct drm_connector_funcs cdv_intel_lvds_connector_funcs = {
        .destroy = cdv_intel_lvds_destroy,
 };
 
-
-static void cdv_intel_lvds_enc_destroy(struct drm_encoder *encoder)
-{
-       drm_encoder_cleanup(encoder);
-}
-
-static const struct drm_encoder_funcs cdv_intel_lvds_enc_funcs = {
-       .destroy = cdv_intel_lvds_enc_destroy,
-};
-
 /*
  * Enumerate the child dev array parsed from VBT to check whether
  * the LVDS is present.
@@ -616,10 +608,7 @@ void cdv_intel_lvds_init(struct drm_device *dev,
                           &cdv_intel_lvds_connector_funcs,
                           DRM_MODE_CONNECTOR_LVDS);
 
-       drm_encoder_init(dev, encoder,
-                        &cdv_intel_lvds_enc_funcs,
-                        DRM_MODE_ENCODER_LVDS, NULL);
-
+       drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_LVDS);
 
        gma_connector_attach_encoder(gma_connector, gma_encoder);
        gma_encoder->type = INTEL_OUTPUT_LVDS;
index 187817e0c004384c98b1202e09e4ff5917ea9c1b..c976a9dd9240d907b38df1018818cac39f7d62cc 100644 (file)
@@ -27,6 +27,8 @@
 
 #include <linux/delay.h>
 
+#include <drm/drm_simple_kms_helper.h>
+
 #include "mdfld_dsi_dpi.h"
 #include "mdfld_dsi_pkg_sender.h"
 #include "mdfld_output.h"
@@ -993,10 +995,7 @@ struct mdfld_dsi_encoder *mdfld_dsi_dpi_init(struct drm_device *dev,
        /*create drm encoder object*/
        connector = &dsi_connector->base.base;
        encoder = &dpi_output->base.base.base;
-       drm_encoder_init(dev,
-                       encoder,
-                       p_funcs->encoder_funcs,
-                       DRM_MODE_ENCODER_LVDS, NULL);
+       drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_LVDS);
        drm_encoder_helper_add(encoder,
                                p_funcs->encoder_helper_funcs);
 
index ab2b27c0f037bdfa431fa79a55aa7b3c92d4d713..17a944d70add3a4532eee94980bd49e80ed0f567 100644 (file)
@@ -51,7 +51,6 @@ struct panel_info {
 };
 
 struct panel_funcs {
-       const struct drm_encoder_funcs *encoder_funcs;
        const struct drm_encoder_helper_funcs *encoder_helper_funcs;
        struct drm_display_mode * (*get_config_mode)(struct drm_device *);
        int (*get_panel_info)(struct drm_device *, int, struct panel_info *);
index 49c92debb7b25137bf4dab95818de89c8c932bad..25e897b98f8621587b3d482aac668e490047ace4 100644 (file)
@@ -188,13 +188,7 @@ static const struct drm_encoder_helper_funcs
        .commit = mdfld_dsi_dpi_commit,
 };
 
-/*TPO DPI encoder funcs*/
-static const struct drm_encoder_funcs mdfld_tpo_dpi_encoder_funcs = {
-       .destroy = drm_encoder_cleanup,
-};
-
 const struct panel_funcs mdfld_tmd_vid_funcs = {
-       .encoder_funcs = &mdfld_tpo_dpi_encoder_funcs,
        .encoder_helper_funcs = &mdfld_tpo_dpi_encoder_helper_funcs,
        .get_config_mode = &tmd_vid_get_config_mode,
        .get_panel_info = tmd_vid_get_panel_info,
index a9420bf9a4198ef0f7dcd59f5d8564d4b45b28af..11845978fb0a68efa7679332aa7f534b5e5f845a 100644 (file)
@@ -76,13 +76,7 @@ static const struct drm_encoder_helper_funcs
        .commit = mdfld_dsi_dpi_commit,
 };
 
-/*TPO DPI encoder funcs*/
-static const struct drm_encoder_funcs mdfld_tpo_dpi_encoder_funcs = {
-       .destroy = drm_encoder_cleanup,
-};
-
 const struct panel_funcs mdfld_tpo_vid_funcs = {
-       .encoder_funcs = &mdfld_tpo_dpi_encoder_funcs,
        .encoder_helper_funcs = &mdfld_tpo_dpi_encoder_helper_funcs,
        .get_config_mode = &tpo_vid_get_config_mode,
        .get_panel_info = tpo_vid_get_panel_info,
index f4370232767d3d70ce7e65f8ae7af2d622f60419..b25086f252ae02087a22beafa03de9b0d4b1ed26 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/delay.h>
 
 #include <drm/drm.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "psb_drv.h"
 #include "psb_intel_drv.h"
@@ -620,15 +621,6 @@ static const struct drm_connector_funcs oaktrail_hdmi_connector_funcs = {
        .destroy = oaktrail_hdmi_destroy,
 };
 
-static void oaktrail_hdmi_enc_destroy(struct drm_encoder *encoder)
-{
-       drm_encoder_cleanup(encoder);
-}
-
-static const struct drm_encoder_funcs oaktrail_hdmi_enc_funcs = {
-       .destroy = oaktrail_hdmi_enc_destroy,
-};
-
 void oaktrail_hdmi_init(struct drm_device *dev,
                                        struct psb_intel_mode_device *mode_dev)
 {
@@ -651,9 +643,7 @@ void oaktrail_hdmi_init(struct drm_device *dev,
                           &oaktrail_hdmi_connector_funcs,
                           DRM_MODE_CONNECTOR_DVID);
 
-       drm_encoder_init(dev, encoder,
-                        &oaktrail_hdmi_enc_funcs,
-                        DRM_MODE_ENCODER_TMDS, NULL);
+       drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_TMDS);
 
        gma_connector_attach_encoder(gma_connector, gma_encoder);
 
index 582e095975002de841d032a5f53f364ceebf6bc0..2828360153d16e6e19eaf53841cd42e905c83c13 100644 (file)
@@ -13,6 +13,8 @@
 
 #include <asm/intel-mid.h>
 
+#include <drm/drm_simple_kms_helper.h>
+
 #include "intel_bios.h"
 #include "power.h"
 #include "psb_drv.h"
@@ -311,8 +313,7 @@ void oaktrail_lvds_init(struct drm_device *dev,
                           &psb_intel_lvds_connector_funcs,
                           DRM_MODE_CONNECTOR_LVDS);
 
-       drm_encoder_init(dev, encoder, &psb_intel_lvds_enc_funcs,
-                        DRM_MODE_ENCODER_LVDS, NULL);
+       drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_LVDS);
 
        gma_connector_attach_encoder(gma_connector, gma_encoder);
        gma_encoder->type = INTEL_OUTPUT_LVDS;
index 16c6136f778b07c32bc7642e4ad2bb79a0b28e74..fb601983cef0f8e79245b48d3545f2790a9d2790 100644 (file)
@@ -252,7 +252,6 @@ extern int psb_intel_lvds_set_property(struct drm_connector *connector,
                                        struct drm_property *property,
                                        uint64_t value);
 extern void psb_intel_lvds_destroy(struct drm_connector *connector);
-extern const struct drm_encoder_funcs psb_intel_lvds_enc_funcs;
 
 /* intel_gmbus.c */
 extern void gma_intel_i2c_reset(struct drm_device *dev);
index afaebab7bc17f79d6f222b993ef2278b15892c23..063c66bb946d0c21872e0ad72db962d60ed565d5 100644 (file)
@@ -11,6 +11,8 @@
 #include <linux/i2c.h>
 #include <linux/pm_runtime.h>
 
+#include <drm/drm_simple_kms_helper.h>
+
 #include "intel_bios.h"
 #include "power.h"
 #include "psb_drv.h"
@@ -621,18 +623,6 @@ const struct drm_connector_funcs psb_intel_lvds_connector_funcs = {
        .destroy = psb_intel_lvds_destroy,
 };
 
-
-static void psb_intel_lvds_enc_destroy(struct drm_encoder *encoder)
-{
-       drm_encoder_cleanup(encoder);
-}
-
-const struct drm_encoder_funcs psb_intel_lvds_enc_funcs = {
-       .destroy = psb_intel_lvds_enc_destroy,
-};
-
-
-
 /**
  * psb_intel_lvds_init - setup LVDS connectors on this device
  * @dev: drm device
@@ -683,9 +673,7 @@ void psb_intel_lvds_init(struct drm_device *dev,
                           &psb_intel_lvds_connector_funcs,
                           DRM_MODE_CONNECTOR_LVDS);
 
-       drm_encoder_init(dev, encoder,
-                        &psb_intel_lvds_enc_funcs,
-                        DRM_MODE_ENCODER_LVDS, NULL);
+       drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_LVDS);
 
        gma_connector_attach_encoder(gma_connector, gma_encoder);
        gma_encoder->type = INTEL_OUTPUT_LVDS;
index 71574063c63e56402049835235e1a39d4bb1cbe0..e5bdd99ad453f4611e98411f03e9f226499044d8 100644 (file)
@@ -765,12 +765,7 @@ static const struct drm_encoder_helper_funcs tc35876x_encoder_helper_funcs = {
        .commit = mdfld_dsi_dpi_commit,
 };
 
-static const struct drm_encoder_funcs tc35876x_encoder_funcs = {
-       .destroy = drm_encoder_cleanup,
-};
-
 const struct panel_funcs mdfld_tc35876x_funcs = {
-       .encoder_funcs = &tc35876x_encoder_funcs,
        .encoder_helper_funcs = &tc35876x_encoder_helper_funcs,
        .get_config_mode = tc35876x_get_config_mode,
        .get_panel_info = tc35876x_get_panel_info,