The simple KMS helpers are deprecated because they only add an intermediate layer between drivers and atomic modesetting.
Open-code drm_simple_encoder_init() by calling drm_encoder_init() directly and providing driver-local drm_encoder_funcs. Signed-off-by: Diogo Silva <[email protected]> --- drivers/gpu/drm/meson/meson_encoder_cvbs.c | 11 ++++++++--- drivers/gpu/drm/meson/meson_encoder_dsi.c | 11 ++++++++--- drivers/gpu/drm/meson/meson_encoder_hdmi.c | 11 ++++++++--- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/meson/meson_encoder_cvbs.c b/drivers/gpu/drm/meson/meson_encoder_cvbs.c index 22cacb1660c4..cdb84d2283f8 100644 --- a/drivers/gpu/drm/meson/meson_encoder_cvbs.c +++ b/drivers/gpu/drm/meson/meson_encoder_cvbs.c @@ -17,8 +17,8 @@ #include <drm/drm_bridge_connector.h> #include <drm/drm_device.h> #include <drm/drm_edid.h> +#include <drm/drm_encoder.h> #include <drm/drm_probe_helper.h> -#include <drm/drm_simple_kms_helper.h> #include "meson_registers.h" #include "meson_vclk.h" @@ -218,6 +218,10 @@ static const struct drm_bridge_funcs meson_encoder_cvbs_bridge_funcs = { .atomic_create_state = drm_atomic_helper_bridge_create_state, }; +static const struct drm_encoder_funcs meson_encoder_cvbs_funcs = { + .destroy = drm_encoder_cleanup, +}; + int meson_encoder_cvbs_probe(struct meson_drm *priv) { struct drm_device *drm = priv->drm; @@ -257,8 +261,9 @@ int meson_encoder_cvbs_probe(struct meson_drm *priv) meson_encoder_cvbs->priv = priv; /* Encoder */ - ret = drm_simple_encoder_init(priv->drm, &meson_encoder_cvbs->encoder, - DRM_MODE_ENCODER_TVDAC); + ret = drm_encoder_init(priv->drm, &meson_encoder_cvbs->encoder, + &meson_encoder_cvbs_funcs, + DRM_MODE_ENCODER_TVDAC, NULL); if (ret) return dev_err_probe(priv->dev, ret, "Failed to init CVBS encoder\n"); diff --git a/drivers/gpu/drm/meson/meson_encoder_dsi.c b/drivers/gpu/drm/meson/meson_encoder_dsi.c index 3e422b612f74..faa309cb97a6 100644 --- a/drivers/gpu/drm/meson/meson_encoder_dsi.c +++ b/drivers/gpu/drm/meson/meson_encoder_dsi.c @@ -10,10 +10,10 @@ #include <linux/of_graph.h> #include <drm/drm_atomic_helper.h> -#include <drm/drm_simple_kms_helper.h> #include <drm/drm_bridge.h> #include <drm/drm_bridge_connector.h> #include <drm/drm_device.h> +#include <drm/drm_encoder.h> #include <drm/drm_probe_helper.h> #include "meson_drv.h" @@ -99,6 +99,10 @@ static const struct drm_bridge_funcs meson_encoder_dsi_bridge_funcs = { .atomic_create_state = drm_atomic_helper_bridge_create_state, }; +static const struct drm_encoder_funcs meson_encoder_dsi_funcs = { + .destroy = drm_encoder_cleanup, +}; + int meson_encoder_dsi_probe(struct meson_drm *priv) { struct meson_encoder_dsi *meson_encoder_dsi; @@ -133,8 +137,9 @@ int meson_encoder_dsi_probe(struct meson_drm *priv) meson_encoder_dsi->priv = priv; /* Encoder */ - ret = drm_simple_encoder_init(priv->drm, &meson_encoder_dsi->encoder, - DRM_MODE_ENCODER_DSI); + ret = drm_encoder_init(priv->drm, &meson_encoder_dsi->encoder, + &meson_encoder_dsi_funcs, DRM_MODE_ENCODER_DSI, + NULL); if (ret) return dev_err_probe(priv->dev, ret, "Failed to init DSI encoder\n"); diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c index 0c7a72cb514a..c4355c5cc340 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c @@ -23,8 +23,8 @@ #include <drm/drm_bridge_connector.h> #include <drm/drm_device.h> #include <drm/drm_edid.h> +#include <drm/drm_encoder.h> #include <drm/drm_probe_helper.h> -#include <drm/drm_simple_kms_helper.h> #include <linux/media-bus-format.h> #include <linux/videodev2.h> @@ -369,6 +369,10 @@ static const struct drm_bridge_funcs meson_encoder_hdmi_bridge_funcs = { .atomic_create_state = drm_atomic_helper_bridge_create_state, }; +static const struct drm_encoder_funcs meson_encoder_hdmi_funcs = { + .destroy = drm_encoder_cleanup, +}; + int meson_encoder_hdmi_probe(struct meson_drm *priv) { struct meson_encoder_hdmi *meson_encoder_hdmi; @@ -407,8 +411,9 @@ int meson_encoder_hdmi_probe(struct meson_drm *priv) meson_encoder_hdmi->priv = priv; /* Encoder */ - ret = drm_simple_encoder_init(priv->drm, &meson_encoder_hdmi->encoder, - DRM_MODE_ENCODER_TMDS); + ret = drm_encoder_init(priv->drm, &meson_encoder_hdmi->encoder, + &meson_encoder_hdmi_funcs, + DRM_MODE_ENCODER_TMDS, NULL); if (ret) { dev_err_probe(priv->dev, ret, "Failed to init HDMI encoder\n"); goto err_put_node; -- 2.54.0

