dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init()
@ 2020-03-05 15:59 Thomas Zimmermann
  2020-03-05 15:59 ` [PATCH 01/22] drm/arc: Use simple encoder Thomas Zimmermann
                   ` (23 more replies)
  0 siblings, 24 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

A call to drm_simple_encoder_init() initializes an encoder without
further functionality. It only provides the destroy callback to
cleanup the encoder's state. Only few drivers implement more
sophisticated encoders than that. Most drivers implement such a
simple encoder and can use drm_simple_encoder_init() instead.

The patchset converts drivers where the encoder's instance is
embedded in a larger data structure. The driver releases the
memory during cleanup. Each patch replaces drm_encoder_init() with
drm_simple_encoder_init() and removes the (now unused) driver's
encoder functions.

While the patchset is fairly large, the indiviual patches are self-
contained and can be merged independently from each other. The
simple-encoder functionality is currently in drm-misc-next, where
these patches could go as well.

Future directions: There's another common case where the driver
calls kzalloc() plus drm_encoder_init(). Such drivers are not
handled by this patchset. The plan here is to use a simple encoder
with either managed memory allocation (once it's merged), or embed
the encoder in a larger data structure and drop kzalloc() entirely.

The patchset has been compile-tested on x86-64, aarch64 and arm.

Thomas Zimmermann (22):
  drm/arc: Use simple encoder
  drm/atmel-hlcdc: Use simple encoder
  drm/exynos: Use simple encoder
  drm/fsl-dcu: Use simple encoder
  drm/gma500: Use simple encoder
  drm/hisilicon/kirin: Use simple encoder
  drm/i2c/tda998x: Use simple encoder
  drm/imx: Use simple encoder
  drm/ingenic: Use simple encoder
  drm/mediatek: Use simple encoder
  drm/rcar-du: Use simple encoder
  drm/rockchip: Use simple encoder
  drm/shmobile: Use simple encoder
  drm/sun4i: Use simple encoder
  drm/tegra: Use simple encoder
  drm/tidss: Use simple encoder
  drm/tilcdc: Use simple encoder
  drm/vc4: Use simple encoder
  drm/virtgpu: Use simple encoder
  drm/vkms: Use simple encoder
  drm/writeback: Use simple encoder
  drm/zte: Use simple encoder

 drivers/gpu/drm/arc/arcpgu_hdmi.c              | 10 +++-------
 drivers/gpu/drm/arc/arcpgu_sim.c               |  8 ++------
 .../gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c   | 12 ++++--------
 drivers/gpu/drm/drm_writeback.c                | 10 +++-------
 drivers/gpu/drm/exynos/exynos_dp.c             |  8 ++------
 drivers/gpu/drm/exynos/exynos_drm_dpi.c        |  8 ++------
 drivers/gpu/drm/exynos/exynos_drm_dsi.c        |  8 ++------
 drivers/gpu/drm/exynos/exynos_drm_vidi.c       |  8 ++------
 drivers/gpu/drm/exynos/exynos_hdmi.c           |  8 ++------
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c      | 14 +++-----------
 drivers/gpu/drm/gma500/cdv_intel_crt.c         | 14 +++-----------
 drivers/gpu/drm/gma500/cdv_intel_dp.c          | 16 +++-------------
 drivers/gpu/drm/gma500/cdv_intel_hdmi.c        |  4 ++--
 drivers/gpu/drm/gma500/cdv_intel_lvds.c        | 17 +++--------------
 drivers/gpu/drm/gma500/mdfld_dsi_dpi.c         |  7 +++----
 drivers/gpu/drm/gma500/mdfld_output.h          |  1 -
 drivers/gpu/drm/gma500/mdfld_tmd_vid.c         |  6 ------
 drivers/gpu/drm/gma500/mdfld_tpo_vid.c         |  6 ------
 drivers/gpu/drm/gma500/oaktrail_hdmi.c         | 14 ++------------
 drivers/gpu/drm/gma500/oaktrail_lvds.c         |  5 +++--
 drivers/gpu/drm/gma500/psb_intel_drv.h         |  1 -
 drivers/gpu/drm/gma500/psb_intel_lvds.c        | 18 +++---------------
 drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c     |  5 -----
 drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c   |  8 ++------
 drivers/gpu/drm/i2c/tda998x_drv.c              | 14 +++-----------
 drivers/gpu/drm/imx/dw_hdmi-imx.c              |  8 ++------
 drivers/gpu/drm/imx/imx-drm-core.c             |  6 ------
 drivers/gpu/drm/imx/imx-drm.h                  |  1 -
 drivers/gpu/drm/imx/imx-ldb.c                  |  8 ++------
 drivers/gpu/drm/imx/imx-tve.c                  |  8 ++------
 drivers/gpu/drm/imx/parallel-display.c         |  8 ++------
 drivers/gpu/drm/ingenic/ingenic-drm.c          |  9 +++------
 drivers/gpu/drm/mediatek/mtk_dpi.c             | 14 +++-----------
 drivers/gpu/drm/mediatek/mtk_dsi.c             | 14 +++-----------
 drivers/gpu/drm/rcar-du/rcar_du_encoder.c      | 14 +++-----------
 .../gpu/drm/rockchip/analogix_dp-rockchip.c    |  9 +++------
 drivers/gpu/drm/rockchip/cdn-dp-core.c         |  9 +++------
 .../gpu/drm/rockchip/dw-mipi-dsi-rockchip.c    |  8 ++------
 drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c    |  8 ++------
 drivers/gpu/drm/rockchip/inno_hdmi.c           |  8 ++------
 drivers/gpu/drm/rockchip/rk3066_hdmi.c         |  8 ++------
 drivers/gpu/drm/rockchip/rockchip_lvds.c       | 10 +++-------
 drivers/gpu/drm/rockchip/rockchip_rgb.c        |  8 ++------
 drivers/gpu/drm/shmobile/shmob_drm_crtc.c      | 14 +++-----------
 drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c         | 12 +++---------
 drivers/gpu/drm/sun4i/sun4i_lvds.c             | 12 +++---------
 drivers/gpu/drm/sun4i/sun4i_rgb.c              | 17 +++--------------
 drivers/gpu/drm/sun4i/sun4i_tv.c               | 17 +++--------------
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c         | 12 +++---------
 drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c          |  8 ++------
 drivers/gpu/drm/tegra/drm.h                    |  2 --
 drivers/gpu/drm/tegra/dsi.c                    | 10 +++-------
 drivers/gpu/drm/tegra/hdmi.c                   |  9 +++------
 drivers/gpu/drm/tegra/output.c                 |  6 +-----
 drivers/gpu/drm/tegra/rgb.c                    |  8 ++------
 drivers/gpu/drm/tegra/sor.c                    |  8 ++------
 drivers/gpu/drm/tidss/tidss_encoder.c          | 10 +++-------
 drivers/gpu/drm/tilcdc/tilcdc_external.c       | 10 +++-------
 drivers/gpu/drm/tilcdc/tilcdc_panel.c          |  8 ++------
 drivers/gpu/drm/vc4/vc4_dpi.c                  |  8 ++------
 drivers/gpu/drm/vc4/vc4_dsi.c                  | 15 +++------------
 drivers/gpu/drm/vc4/vc4_hdmi.c                 | 17 ++++-------------
 drivers/gpu/drm/vc4/vc4_vec.c                  |  8 ++------
 drivers/gpu/drm/virtio/virtgpu_display.c       |  8 ++------
 drivers/gpu/drm/vkms/vkms_output.c             |  8 ++------
 drivers/gpu/drm/zte/zx_hdmi.c                  |  8 ++------
 drivers/gpu/drm/zte/zx_tvenc.c                 |  8 ++------
 drivers/gpu/drm/zte/zx_vga.c                   |  8 ++------
 68 files changed, 151 insertions(+), 488 deletions(-)

--
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 01/22] drm/arc: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-05 23:48   ` kbuild test robot
  2020-03-06 21:18   ` Sam Ravnborg
  2020-03-05 15:59 ` [PATCH 02/22] drm/atmel-hlcdc: " Thomas Zimmermann
                   ` (22 subsequent siblings)
  23 siblings, 2 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The arc driver uses empty implementations for its encoders. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/arc/arcpgu_hdmi.c | 10 +++-------
 drivers/gpu/drm/arc/arcpgu_sim.c  |  8 ++------
 2 files changed, 5 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/arc/arcpgu_hdmi.c b/drivers/gpu/drm/arc/arcpgu_hdmi.c
index 52839934f2fb..780911765e2e 100644
--- a/drivers/gpu/drm/arc/arcpgu_hdmi.c
+++ b/drivers/gpu/drm/arc/arcpgu_hdmi.c
@@ -7,15 +7,12 @@
 
 #include <drm/drm_bridge.h>
 #include <drm/drm_crtc.h>
-#include <drm/drm_encoder.h>
 #include <drm/drm_device.h>
+#include <drm/drm_encoder.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "arcpgu.h"
 
-static struct drm_encoder_funcs arcpgu_drm_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 int arcpgu_drm_hdmi_init(struct drm_device *drm, struct device_node *np)
 {
 	struct drm_encoder *encoder;
@@ -34,8 +31,7 @@ int arcpgu_drm_hdmi_init(struct drm_device *drm, struct device_node *np)
 
 	encoder->possible_crtcs = 1;
 	encoder->possible_clones = 0;
-	ret = drm_encoder_init(drm, encoder, &arcpgu_drm_encoder_funcs,
-			       DRM_MODE_ENCODER_TMDS, NULL);
+	ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
 	if (ret)
 		return ret;
 
diff --git a/drivers/gpu/drm/arc/arcpgu_sim.c b/drivers/gpu/drm/arc/arcpgu_sim.c
index 37d961668dfe..66ca2c26e339 100644
--- a/drivers/gpu/drm/arc/arcpgu_sim.c
+++ b/drivers/gpu/drm/arc/arcpgu_sim.c
@@ -8,6 +8,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_device.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "arcpgu.h"
 
@@ -50,10 +51,6 @@ static const struct drm_connector_funcs arcpgu_drm_connector_funcs = {
 	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
 };
 
-static struct drm_encoder_funcs arcpgu_drm_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np)
 {
 	struct arcpgu_drm_connector *arcpgu_connector;
@@ -68,8 +65,7 @@ int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np)
 	encoder->possible_crtcs = 1;
 	encoder->possible_clones = 0;
 
-	ret = drm_encoder_init(drm, encoder, &arcpgu_drm_encoder_funcs,
-			       DRM_MODE_ENCODER_VIRTUAL, NULL);
+	ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_VIRTUAL);
 	if (ret)
 		return ret;
 
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 02/22] drm/atmel-hlcdc: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
  2020-03-05 15:59 ` [PATCH 01/22] drm/arc: Use simple encoder Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06  0:32   ` kbuild test robot
  2020-03-06 21:26   ` Sam Ravnborg
  2020-03-05 15:59 ` [PATCH 03/22] drm/exynos: " Thomas Zimmermann
                   ` (21 subsequent siblings)
  23 siblings, 2 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The atmel-hlcdc driver uses an empty implementation for its encoder.
Replace the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c
index e2019fe97fff..43bc709e3523 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c
@@ -11,9 +11,10 @@
 #include <linux/media-bus-format.h>
 #include <linux/of_graph.h>
 
+#include <drm/drm_bridge.h>
 #include <drm/drm_encoder.h>
 #include <drm/drm_of.h>
-#include <drm/drm_bridge.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "atmel_hlcdc_dc.h"
 
@@ -22,10 +23,6 @@ struct atmel_hlcdc_rgb_output {
 	int bus_fmt;
 };
 
-static const struct drm_encoder_funcs atmel_hlcdc_panel_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static struct atmel_hlcdc_rgb_output *
 atmel_hlcdc_encoder_to_rgb_output(struct drm_encoder *encoder)
 {
@@ -98,9 +95,8 @@ static int atmel_hlcdc_attach_endpoint(struct drm_device *dev, int endpoint)
 		return -EINVAL;
 	}
 
-	ret = drm_encoder_init(dev, &output->encoder,
-			       &atmel_hlcdc_panel_encoder_funcs,
-			       DRM_MODE_ENCODER_NONE, NULL);
+	ret = drm_simple_encoder_init(dev, &output->encoder,
+				      DRM_MODE_ENCODER_NONE);
 	if (ret)
 		return ret;
 
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 03/22] drm/exynos: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
  2020-03-05 15:59 ` [PATCH 01/22] drm/arc: Use simple encoder Thomas Zimmermann
  2020-03-05 15:59 ` [PATCH 02/22] drm/atmel-hlcdc: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06  0:55   ` kbuild test robot
                     ` (2 more replies)
  2020-03-05 15:59 ` [PATCH 04/22] drm/fsl-dcu: " Thomas Zimmermann
                   ` (20 subsequent siblings)
  23 siblings, 3 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The exynos driver uses empty implementations for its encoders. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/exynos/exynos_dp.c       | 8 ++------
 drivers/gpu/drm/exynos/exynos_drm_dpi.c  | 8 ++------
 drivers/gpu/drm/exynos/exynos_drm_dsi.c  | 8 ++------
 drivers/gpu/drm/exynos/exynos_drm_vidi.c | 8 ++------
 drivers/gpu/drm/exynos/exynos_hdmi.c     | 8 ++------
 5 files changed, 10 insertions(+), 30 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/exynos_dp.c
index d23d3502ca91..a61482af2998 100644
--- a/drivers/gpu/drm/exynos/exynos_dp.c
+++ b/drivers/gpu/drm/exynos/exynos_dp.c
@@ -25,6 +25,7 @@
 #include <drm/drm_panel.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 #include <drm/exynos_drm.h>
 
 #include "exynos_drm_crtc.h"
@@ -135,10 +136,6 @@ static const struct drm_encoder_helper_funcs exynos_dp_encoder_helper_funcs = {
 	.disable = exynos_dp_nop,
 };
 
-static const struct drm_encoder_funcs exynos_dp_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static int exynos_dp_dt_parse_panel(struct exynos_dp_device *dp)
 {
 	int ret;
@@ -174,8 +171,7 @@ static int exynos_dp_bind(struct device *dev, struct device *master, void *data)
 			return ret;
 	}
 
-	drm_encoder_init(drm_dev, encoder, &exynos_dp_encoder_funcs,
-			 DRM_MODE_ENCODER_TMDS, NULL);
+	drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
 
 	drm_encoder_helper_add(encoder, &exynos_dp_encoder_helper_funcs);
 
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
index 43fa0f26c052..7ba5354e7d94 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
@@ -14,6 +14,7 @@
 #include <drm/drm_panel.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include <video/of_videomode.h>
 #include <video/videomode.h>
@@ -149,10 +150,6 @@ static const struct drm_encoder_helper_funcs exynos_dpi_encoder_helper_funcs = {
 	.disable = exynos_dpi_disable,
 };
 
-static const struct drm_encoder_funcs exynos_dpi_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 enum {
 	FIMD_PORT_IN0,
 	FIMD_PORT_IN1,
@@ -201,8 +198,7 @@ int exynos_dpi_bind(struct drm_device *dev, struct drm_encoder *encoder)
 {
 	int ret;
 
-	drm_encoder_init(dev, encoder, &exynos_dpi_encoder_funcs,
-			 DRM_MODE_ENCODER_TMDS, NULL);
+	drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_TMDS);
 
 	drm_encoder_helper_add(encoder, &exynos_dpi_encoder_helper_funcs);
 
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
index 669d3857502a..2986c93382e0 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
@@ -30,6 +30,7 @@
 #include <drm/drm_panel.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "exynos_drm_crtc.h"
 #include "exynos_drm_drv.h"
@@ -1524,10 +1525,6 @@ static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = {
 	.disable = exynos_dsi_disable,
 };
 
-static const struct drm_encoder_funcs exynos_dsi_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 MODULE_DEVICE_TABLE(of, exynos_dsi_of_match);
 
 static int exynos_dsi_host_attach(struct mipi_dsi_host *host,
@@ -1705,8 +1702,7 @@ static int exynos_dsi_bind(struct device *dev, struct device *master,
 	struct drm_bridge *in_bridge;
 	int ret;
 
-	drm_encoder_init(drm_dev, encoder, &exynos_dsi_encoder_funcs,
-			 DRM_MODE_ENCODER_TMDS, NULL);
+	drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
 
 	drm_encoder_helper_add(encoder, &exynos_dsi_encoder_helper_funcs);
 
diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
index b320b3a21ad4..282467121699 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
@@ -14,6 +14,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 <drm/drm_vblank.h>
 #include <drm/exynos_drm.h>
 
@@ -369,10 +370,6 @@ static const struct drm_encoder_helper_funcs exynos_vidi_encoder_helper_funcs =
 	.disable = exynos_vidi_disable,
 };
 
-static const struct drm_encoder_funcs exynos_vidi_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static int vidi_bind(struct device *dev, struct device *master, void *data)
 {
 	struct vidi_context *ctx = dev_get_drvdata(dev);
@@ -406,8 +403,7 @@ static int vidi_bind(struct device *dev, struct device *master, void *data)
 		return PTR_ERR(ctx->crtc);
 	}
 
-	drm_encoder_init(drm_dev, encoder, &exynos_vidi_encoder_funcs,
-			 DRM_MODE_ENCODER_TMDS, NULL);
+	drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
 
 	drm_encoder_helper_add(encoder, &exynos_vidi_encoder_helper_funcs);
 
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index 3e5f1a77286d..302ffda5f297 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -38,6 +38,7 @@
 #include <drm/drm_edid.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "exynos_drm_crtc.h"
 #include "regs-hdmi.h"
@@ -1559,10 +1560,6 @@ static const struct drm_encoder_helper_funcs exynos_hdmi_encoder_helper_funcs =
 	.disable	= hdmi_disable,
 };
 
-static const struct drm_encoder_funcs exynos_hdmi_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static void hdmi_audio_shutdown(struct device *dev, void *data)
 {
 	struct hdmi_context *hdata = dev_get_drvdata(dev);
@@ -1851,8 +1848,7 @@ static int hdmi_bind(struct device *dev, struct device *master, void *data)
 
 	hdata->phy_clk.enable = hdmiphy_clk_enable;
 
-	drm_encoder_init(drm_dev, encoder, &exynos_hdmi_encoder_funcs,
-			 DRM_MODE_ENCODER_TMDS, NULL);
+	drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
 
 	drm_encoder_helper_add(encoder, &exynos_hdmi_encoder_helper_funcs);
 
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 04/22] drm/fsl-dcu: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (2 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 03/22] drm/exynos: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06  0:02   ` kbuild test robot
  2020-03-05 15:59 ` [PATCH 05/22] drm/gma500: " Thomas Zimmermann
                   ` (19 subsequent siblings)
  23 siblings, 1 reply; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The fsl-dcu driver uses an empty implementation for its encoder. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
index cff344367f81..9b0c4736c21a 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
@@ -13,19 +13,11 @@
 #include <drm/drm_of.h>
 #include <drm/drm_panel.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "fsl_dcu_drm_drv.h"
 #include "fsl_tcon.h"
 
-static void fsl_dcu_drm_encoder_destroy(struct drm_encoder *encoder)
-{
-	drm_encoder_cleanup(encoder);
-}
-
-static const struct drm_encoder_funcs encoder_funcs = {
-	.destroy = fsl_dcu_drm_encoder_destroy,
-};
-
 int fsl_dcu_drm_encoder_create(struct fsl_dcu_drm_device *fsl_dev,
 			       struct drm_crtc *crtc)
 {
@@ -38,8 +30,8 @@ int fsl_dcu_drm_encoder_create(struct fsl_dcu_drm_device *fsl_dev,
 	if (fsl_dev->tcon)
 		fsl_tcon_bypass_enable(fsl_dev->tcon);
 
-	ret = drm_encoder_init(fsl_dev->drm, encoder, &encoder_funcs,
-			       DRM_MODE_ENCODER_LVDS, NULL);
+	ret = drm_simple_encoder_init(fsl_dev->drm, encoder,
+				      DRM_MODE_ENCODER_LVDS);
 	if (ret < 0)
 		return ret;
 
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 05/22] drm/gma500: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (3 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 04/22] drm/fsl-dcu: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06  0:44   ` kbuild test robot
  2020-03-06 21:35   ` Sam Ravnborg
  2020-03-05 15:59 ` [PATCH 06/22] drm/hisilicon/kirin: " Thomas Zimmermann
                   ` (18 subsequent siblings)
  23 siblings, 2 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

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>
---
 drivers/gpu/drm/gma500/cdv_intel_crt.c     | 14 +++-----------
 drivers/gpu/drm/gma500/cdv_intel_dp.c      | 16 +++-------------
 drivers/gpu/drm/gma500/cdv_intel_hdmi.c    |  4 ++--
 drivers/gpu/drm/gma500/cdv_intel_lvds.c    | 17 +++--------------
 drivers/gpu/drm/gma500/mdfld_dsi_dpi.c     |  7 +++----
 drivers/gpu/drm/gma500/mdfld_output.h      |  1 -
 drivers/gpu/drm/gma500/mdfld_tmd_vid.c     |  6 ------
 drivers/gpu/drm/gma500/mdfld_tpo_vid.c     |  6 ------
 drivers/gpu/drm/gma500/oaktrail_hdmi.c     | 14 ++------------
 drivers/gpu/drm/gma500/oaktrail_lvds.c     |  5 +++--
 drivers/gpu/drm/gma500/psb_intel_drv.h     |  1 -
 drivers/gpu/drm/gma500/psb_intel_lvds.c    | 18 +++---------------
 drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c |  5 -----
 13 files changed, 22 insertions(+), 92 deletions(-)

diff --git a/drivers/gpu/drm/gma500/cdv_intel_crt.c b/drivers/gpu/drm/gma500/cdv_intel_crt.c
index 29c36d63b20e..88535f5aacc5 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_crt.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_crt.c
@@ -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);
 
diff --git a/drivers/gpu/drm/gma500/cdv_intel_dp.c b/drivers/gpu/drm/gma500/cdv_intel_dp.c
index 5772b2dce0d6..13947ec06dbb 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_dp.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_dp.c
@@ -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 {
diff --git a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
index 1711a41acc16..0d12c6ffbc40 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
@@ -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;
diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
index ea0a5d9a0acc..18de10e9ff9a 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
@@ -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;
diff --git a/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c b/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
index d4c65f268922..aa5aa293ddb6 100644
--- a/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
+++ b/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
@@ -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);
 
diff --git a/drivers/gpu/drm/gma500/mdfld_output.h b/drivers/gpu/drm/gma500/mdfld_output.h
index ab2b27c0f037..17a944d70add 100644
--- a/drivers/gpu/drm/gma500/mdfld_output.h
+++ b/drivers/gpu/drm/gma500/mdfld_output.h
@@ -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 *);
diff --git a/drivers/gpu/drm/gma500/mdfld_tmd_vid.c b/drivers/gpu/drm/gma500/mdfld_tmd_vid.c
index 49c92debb7b2..25e897b98f86 100644
--- a/drivers/gpu/drm/gma500/mdfld_tmd_vid.c
+++ b/drivers/gpu/drm/gma500/mdfld_tmd_vid.c
@@ -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,
diff --git a/drivers/gpu/drm/gma500/mdfld_tpo_vid.c b/drivers/gpu/drm/gma500/mdfld_tpo_vid.c
index a9420bf9a419..11845978fb0a 100644
--- a/drivers/gpu/drm/gma500/mdfld_tpo_vid.c
+++ b/drivers/gpu/drm/gma500/mdfld_tpo_vid.c
@@ -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,
diff --git a/drivers/gpu/drm/gma500/oaktrail_hdmi.c b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
index f4370232767d..b25086f252ae 100644
--- a/drivers/gpu/drm/gma500/oaktrail_hdmi.c
+++ b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
@@ -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);
 
diff --git a/drivers/gpu/drm/gma500/oaktrail_lvds.c b/drivers/gpu/drm/gma500/oaktrail_lvds.c
index 582e09597500..2828360153d1 100644
--- a/drivers/gpu/drm/gma500/oaktrail_lvds.c
+++ b/drivers/gpu/drm/gma500/oaktrail_lvds.c
@@ -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;
diff --git a/drivers/gpu/drm/gma500/psb_intel_drv.h b/drivers/gpu/drm/gma500/psb_intel_drv.h
index 16c6136f778b..fb601983cef0 100644
--- a/drivers/gpu/drm/gma500/psb_intel_drv.h
+++ b/drivers/gpu/drm/gma500/psb_intel_drv.h
@@ -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);
diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c b/drivers/gpu/drm/gma500/psb_intel_lvds.c
index afaebab7bc17..063c66bb946d 100644
--- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
@@ -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;
diff --git a/drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c b/drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c
index 9e8224456ea2..f7e121f4c609 100644
--- a/drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c
+++ b/drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c
@@ -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,
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 06/22] drm/hisilicon/kirin: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (4 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 05/22] drm/gma500: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06  6:16   ` kbuild test robot
  2020-03-05 15:59 ` [PATCH 07/22] drm/i2c/tda998x: " Thomas Zimmermann
                   ` (17 subsequent siblings)
  23 siblings, 1 reply; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The kirin driver uses an empty implementation for its encoder. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c b/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
index f31068d74b18..08c1ab542c03 100644
--- a/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
+++ b/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
@@ -25,6 +25,7 @@
 #include <drm/drm_of.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "dw_dsi_reg.h"
 
@@ -696,10 +697,6 @@ static const struct drm_encoder_helper_funcs dw_encoder_helper_funcs = {
 	.disable	= dsi_encoder_disable
 };
 
-static const struct drm_encoder_funcs dw_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static int dw_drm_encoder_init(struct device *dev,
 			       struct drm_device *drm_dev,
 			       struct drm_encoder *encoder)
@@ -713,8 +710,7 @@ static int dw_drm_encoder_init(struct device *dev,
 	}
 
 	encoder->possible_crtcs = crtc_mask;
-	ret = drm_encoder_init(drm_dev, encoder, &dw_encoder_funcs,
-			       DRM_MODE_ENCODER_DSI, NULL);
+	ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_DSI);
 	if (ret) {
 		DRM_ERROR("failed to init dsi encoder\n");
 		return ret;
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 07/22] drm/i2c/tda998x: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (5 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 06/22] drm/hisilicon/kirin: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06  7:30   ` kbuild test robot
  2020-03-07 15:40   ` kbuild test robot
  2020-03-05 15:59 ` [PATCH 08/22] drm/imx: " Thomas Zimmermann
                   ` (16 subsequent siblings)
  23 siblings, 2 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The tda998x driver uses an empty implementation for its encoder. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/i2c/tda998x_drv.c | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index c3332209f27a..0e1a90f70ec0 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -19,6 +19,7 @@
 #include <drm/drm_of.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 #include <drm/i2c/tda998x.h>
 
 #include <media/cec-notifier.h>
@@ -1997,15 +1998,6 @@ static int tda998x_create(struct device *dev)
 
 /* DRM encoder functions */
 
-static void tda998x_encoder_destroy(struct drm_encoder *encoder)
-{
-	drm_encoder_cleanup(encoder);
-}
-
-static const struct drm_encoder_funcs tda998x_encoder_funcs = {
-	.destroy = tda998x_encoder_destroy,
-};
-
 static int tda998x_encoder_init(struct device *dev, struct drm_device *drm)
 {
 	struct tda998x_priv *priv = dev_get_drvdata(dev);
@@ -2023,8 +2015,8 @@ static int tda998x_encoder_init(struct device *dev, struct drm_device *drm)
 
 	priv->encoder.possible_crtcs = crtcs;
 
-	ret = drm_encoder_init(drm, &priv->encoder, &tda998x_encoder_funcs,
-			       DRM_MODE_ENCODER_TMDS, NULL);
+	ret = drm_simple_encoder_init(drm, &priv->encoder,
+				      DRM_MODE_ENCODER_TMDS);
 	if (ret)
 		goto err_encoder;
 
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 08/22] drm/imx: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (6 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 07/22] drm/i2c/tda998x: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-05 15:59 ` [PATCH 09/22] drm/ingenic: " Thomas Zimmermann
                   ` (15 subsequent siblings)
  23 siblings, 0 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The imx driver uses empty implementations for its encoders. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/imx/dw_hdmi-imx.c      | 8 ++------
 drivers/gpu/drm/imx/imx-drm-core.c     | 6 ------
 drivers/gpu/drm/imx/imx-drm.h          | 1 -
 drivers/gpu/drm/imx/imx-ldb.c          | 8 ++------
 drivers/gpu/drm/imx/imx-tve.c          | 8 ++------
 drivers/gpu/drm/imx/parallel-display.c | 8 ++------
 6 files changed, 8 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/imx/dw_hdmi-imx.c b/drivers/gpu/drm/imx/dw_hdmi-imx.c
index f22cfbf9353e..ba4ca17fd4d8 100644
--- a/drivers/gpu/drm/imx/dw_hdmi-imx.c
+++ b/drivers/gpu/drm/imx/dw_hdmi-imx.c
@@ -18,6 +18,7 @@
 #include <drm/drm_edid.h>
 #include <drm/drm_encoder.h>
 #include <drm/drm_of.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "imx-drm.h"
 
@@ -143,10 +144,6 @@ static const struct drm_encoder_helper_funcs dw_hdmi_imx_encoder_helper_funcs =
 	.atomic_check = dw_hdmi_imx_atomic_check,
 };
 
-static const struct drm_encoder_funcs dw_hdmi_imx_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static enum drm_mode_status
 imx6q_hdmi_mode_valid(struct drm_connector *con,
 		      const struct drm_display_mode *mode)
@@ -236,8 +233,7 @@ static int dw_hdmi_imx_bind(struct device *dev, struct device *master,
 		return ret;
 
 	drm_encoder_helper_add(encoder, &dw_hdmi_imx_encoder_helper_funcs);
-	drm_encoder_init(drm, encoder, &dw_hdmi_imx_encoder_funcs,
-			 DRM_MODE_ENCODER_TMDS, NULL);
+	drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
 
 	platform_set_drvdata(pdev, hdmi);
 
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index da87c70e413b..9979547ca883 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -42,12 +42,6 @@ void imx_drm_connector_destroy(struct drm_connector *connector)
 }
 EXPORT_SYMBOL_GPL(imx_drm_connector_destroy);
 
-void imx_drm_encoder_destroy(struct drm_encoder *encoder)
-{
-	drm_encoder_cleanup(encoder);
-}
-EXPORT_SYMBOL_GPL(imx_drm_encoder_destroy);
-
 static int imx_drm_atomic_check(struct drm_device *dev,
 				struct drm_atomic_state *state)
 {
diff --git a/drivers/gpu/drm/imx/imx-drm.h b/drivers/gpu/drm/imx/imx-drm.h
index ab9c6f706eb3..c3e1a3f14d30 100644
--- a/drivers/gpu/drm/imx/imx-drm.h
+++ b/drivers/gpu/drm/imx/imx-drm.h
@@ -38,7 +38,6 @@ int imx_drm_encoder_parse_of(struct drm_device *drm,
 	struct drm_encoder *encoder, struct device_node *np);
 
 void imx_drm_connector_destroy(struct drm_connector *connector);
-void imx_drm_encoder_destroy(struct drm_encoder *encoder);
 
 int ipu_planes_assign_pre(struct drm_device *dev,
 			  struct drm_atomic_state *state);
diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c
index 4da22a94790c..66ea68e8da87 100644
--- a/drivers/gpu/drm/imx/imx-ldb.c
+++ b/drivers/gpu/drm/imx/imx-ldb.c
@@ -26,6 +26,7 @@
 #include <drm/drm_panel.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "imx-drm.h"
 
@@ -393,10 +394,6 @@ static const struct drm_connector_helper_funcs imx_ldb_connector_helper_funcs =
 	.best_encoder = imx_ldb_connector_best_encoder,
 };
 
-static const struct drm_encoder_funcs imx_ldb_encoder_funcs = {
-	.destroy = imx_drm_encoder_destroy,
-};
-
 static const struct drm_encoder_helper_funcs imx_ldb_encoder_helper_funcs = {
 	.atomic_mode_set = imx_ldb_encoder_atomic_mode_set,
 	.enable = imx_ldb_encoder_enable,
@@ -441,8 +438,7 @@ static int imx_ldb_register(struct drm_device *drm,
 	}
 
 	drm_encoder_helper_add(encoder, &imx_ldb_encoder_helper_funcs);
-	drm_encoder_init(drm, encoder, &imx_ldb_encoder_funcs,
-			 DRM_MODE_ENCODER_LVDS, NULL);
+	drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_LVDS);
 
 	if (imx_ldb_ch->bridge) {
 		ret = drm_bridge_attach(&imx_ldb_ch->encoder,
diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c
index 5bbfaa2cd0f4..ee63782c77e9 100644
--- a/drivers/gpu/drm/imx/imx-tve.c
+++ b/drivers/gpu/drm/imx/imx-tve.c
@@ -21,6 +21,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "imx-drm.h"
 
@@ -348,10 +349,6 @@ static const struct drm_connector_helper_funcs imx_tve_connector_helper_funcs =
 	.mode_valid = imx_tve_connector_mode_valid,
 };
 
-static const struct drm_encoder_funcs imx_tve_encoder_funcs = {
-	.destroy = imx_drm_encoder_destroy,
-};
-
 static const struct drm_encoder_helper_funcs imx_tve_encoder_helper_funcs = {
 	.mode_set = imx_tve_encoder_mode_set,
 	.enable = imx_tve_encoder_enable,
@@ -479,8 +476,7 @@ static int imx_tve_register(struct drm_device *drm, struct imx_tve *tve)
 		return ret;
 
 	drm_encoder_helper_add(&tve->encoder, &imx_tve_encoder_helper_funcs);
-	drm_encoder_init(drm, &tve->encoder, &imx_tve_encoder_funcs,
-			 encoder_type, NULL);
+	drm_simple_encoder_init(drm, &tve->encoder, encoder_type);
 
 	drm_connector_helper_add(&tve->connector,
 			&imx_tve_connector_helper_funcs);
diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c
index 08fafa4bf8c2..ac916c84a631 100644
--- a/drivers/gpu/drm/imx/parallel-display.c
+++ b/drivers/gpu/drm/imx/parallel-display.c
@@ -18,6 +18,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 "imx-drm.h"
 
@@ -256,10 +257,6 @@ static const struct drm_connector_helper_funcs imx_pd_connector_helper_funcs = {
 	.best_encoder = imx_pd_connector_best_encoder,
 };
 
-static const struct drm_encoder_funcs imx_pd_encoder_funcs = {
-	.destroy = imx_drm_encoder_destroy,
-};
-
 static const struct drm_bridge_funcs imx_pd_bridge_funcs = {
 	.enable = imx_pd_bridge_enable,
 	.disable = imx_pd_bridge_disable,
@@ -288,8 +285,7 @@ static int imx_pd_register(struct drm_device *drm,
 	 */
 	imxpd->connector.dpms = DRM_MODE_DPMS_OFF;
 
-	drm_encoder_init(drm, encoder, &imx_pd_encoder_funcs,
-			 DRM_MODE_ENCODER_NONE, NULL);
+	drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_NONE);
 
 	imxpd->bridge.funcs = &imx_pd_bridge_funcs;
 	drm_bridge_attach(encoder, &imxpd->bridge, NULL, 0);
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 09/22] drm/ingenic: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (7 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 08/22] drm/imx: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-05 15:59 ` [PATCH 10/22] drm/mediatek: " Thomas Zimmermann
                   ` (14 subsequent siblings)
  23 siblings, 0 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The ingenic driver uses an empty implementation for its encoder. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/ingenic/ingenic-drm.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/ingenic/ingenic-drm.c b/drivers/gpu/drm/ingenic/ingenic-drm.c
index 9dfe7cb530e1..9f7983a97392 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm.c
@@ -28,6 +28,7 @@
 #include <drm/drm_plane.h>
 #include <drm/drm_plane_helper.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 #include <drm/drm_vblank.h>
 
 #define JZ_REG_LCD_CFG				0x00
@@ -592,10 +593,6 @@ static const struct drm_mode_config_funcs ingenic_drm_mode_config_funcs = {
 	.atomic_commit		= drm_atomic_helper_commit,
 };
 
-static const struct drm_encoder_funcs ingenic_drm_encoder_funcs = {
-	.destroy		= drm_encoder_cleanup,
-};
-
 static void ingenic_drm_free_dma_hwdesc(void *d)
 {
 	struct ingenic_drm *priv = d;
@@ -730,8 +727,8 @@ static int ingenic_drm_probe(struct platform_device *pdev)
 	drm_encoder_helper_add(&priv->encoder,
 			       &ingenic_drm_encoder_helper_funcs);
 
-	ret = drm_encoder_init(drm, &priv->encoder, &ingenic_drm_encoder_funcs,
-			       DRM_MODE_ENCODER_DPI, NULL);
+	ret = drm_simple_encoder_init(drm, &priv->encoder,
+				      DRM_MODE_ENCODER_DPI);
 	if (ret) {
 		dev_err(dev, "Failed to init encoder: %i", ret);
 		return ret;
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 10/22] drm/mediatek: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (8 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 09/22] drm/ingenic: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-07 21:26   ` Matthias Brugger
  2020-03-10  2:37   ` CK Hu
  2020-03-05 15:59 ` [PATCH 11/22] drm/rcar-du: " Thomas Zimmermann
                   ` (13 subsequent siblings)
  23 siblings, 2 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The mediatak driver uses empty implementations for its encoders. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/mediatek/mtk_dpi.c | 14 +++-----------
 drivers/gpu/drm/mediatek/mtk_dsi.c | 14 +++-----------
 2 files changed, 6 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c
index 14fbe1c09ce9..9c90c58e5acd 100644
--- a/drivers/gpu/drm/mediatek/mtk_dpi.c
+++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
@@ -20,6 +20,7 @@
 #include <drm/drm_bridge.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_of.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "mtk_dpi_regs.h"
 #include "mtk_drm_ddp_comp.h"
@@ -509,15 +510,6 @@ static int mtk_dpi_set_display_mode(struct mtk_dpi *dpi,
 	return 0;
 }
 
-static void mtk_dpi_encoder_destroy(struct drm_encoder *encoder)
-{
-	drm_encoder_cleanup(encoder);
-}
-
-static const struct drm_encoder_funcs mtk_dpi_encoder_funcs = {
-	.destroy = mtk_dpi_encoder_destroy,
-};
-
 static bool mtk_dpi_encoder_mode_fixup(struct drm_encoder *encoder,
 				       const struct drm_display_mode *mode,
 				       struct drm_display_mode *adjusted_mode)
@@ -596,8 +588,8 @@ static int mtk_dpi_bind(struct device *dev, struct device *master, void *data)
 		return ret;
 	}
 
-	ret = drm_encoder_init(drm_dev, &dpi->encoder, &mtk_dpi_encoder_funcs,
-			       DRM_MODE_ENCODER_TMDS, NULL);
+	ret = drm_simple_encoder_init(drm_dev, &dpi->encoder,
+				      DRM_MODE_ENCODER_TMDS);
 	if (ret) {
 		dev_err(dev, "Failed to initialize decoder: %d\n", ret);
 		goto err_unregister;
diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
index 0ede69830a9d..a9a25087112f 100644
--- a/drivers/gpu/drm/mediatek/mtk_dsi.c
+++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
@@ -22,6 +22,7 @@
 #include <drm/drm_panel.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "mtk_drm_ddp_comp.h"
 
@@ -787,15 +788,6 @@ static void mtk_output_dsi_disable(struct mtk_dsi *dsi)
 	dsi->enabled = false;
 }
 
-static void mtk_dsi_encoder_destroy(struct drm_encoder *encoder)
-{
-	drm_encoder_cleanup(encoder);
-}
-
-static const struct drm_encoder_funcs mtk_dsi_encoder_funcs = {
-	.destroy = mtk_dsi_encoder_destroy,
-};
-
 static bool mtk_dsi_encoder_mode_fixup(struct drm_encoder *encoder,
 				       const struct drm_display_mode *mode,
 				       struct drm_display_mode *adjusted_mode)
@@ -888,8 +880,8 @@ static int mtk_dsi_create_conn_enc(struct drm_device *drm, struct mtk_dsi *dsi)
 {
 	int ret;
 
-	ret = drm_encoder_init(drm, &dsi->encoder, &mtk_dsi_encoder_funcs,
-			       DRM_MODE_ENCODER_DSI, NULL);
+	ret = drm_simple_encoder_init(drm, &dsi->encoder,
+				      DRM_MODE_ENCODER_DSI);
 	if (ret) {
 		DRM_ERROR("Failed to encoder init to drm\n");
 		return ret;
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 11/22] drm/rcar-du: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (9 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 10/22] drm/mediatek: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06  8:43   ` kbuild test robot
  2020-03-05 15:59 ` [PATCH 12/22] drm/rockchip: " Thomas Zimmermann
                   ` (12 subsequent siblings)
  23 siblings, 1 reply; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The rcar-du driver uses an empty implementation for its encoder. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/rcar-du/rcar_du_encoder.c | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/rcar-du/rcar_du_encoder.c b/drivers/gpu/drm/rcar-du/rcar_du_encoder.c
index c07c6a88aff0..b0335da0c161 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_encoder.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_encoder.c
@@ -13,6 +13,7 @@
 #include <drm/drm_crtc.h>
 #include <drm/drm_modeset_helper_vtables.h>
 #include <drm/drm_panel.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "rcar_du_drv.h"
 #include "rcar_du_encoder.h"
@@ -23,13 +24,6 @@
  * Encoder
  */
 
-static const struct drm_encoder_helper_funcs encoder_helper_funcs = {
-};
-
-static const struct drm_encoder_funcs encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static unsigned int rcar_du_encoder_count_ports(struct device_node *node)
 {
 	struct device_node *ports;
@@ -110,13 +104,11 @@ int rcar_du_encoder_init(struct rcar_du_device *rcdu,
 		}
 	}
 
-	ret = drm_encoder_init(rcdu->ddev, encoder, &encoder_funcs,
-			       DRM_MODE_ENCODER_NONE, NULL);
+	ret = drm_simple_encoder_init(rcdu->ddev, encoder,
+				      DRM_MODE_ENCODER_NONE);
 	if (ret < 0)
 		goto done;
 
-	drm_encoder_helper_add(encoder, &encoder_helper_funcs);
-
 	/*
 	 * Attach the bridge to the encoder. The bridge will create the
 	 * connector.
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 12/22] drm/rockchip: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (10 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 11/22] drm/rcar-du: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-05 23:59   ` kbuild test robot
  2020-03-06 10:05   ` kbuild test robot
  2020-03-05 15:59 ` [PATCH 13/22] drm/shmobile: " Thomas Zimmermann
                   ` (11 subsequent siblings)
  23 siblings, 2 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The rockchip driver uses empty implementations for its encoders. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/rockchip/analogix_dp-rockchip.c |  9 +++------
 drivers/gpu/drm/rockchip/cdn-dp-core.c          |  9 +++------
 drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c |  8 ++------
 drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c     |  8 ++------
 drivers/gpu/drm/rockchip/inno_hdmi.c            |  8 ++------
 drivers/gpu/drm/rockchip/rk3066_hdmi.c          |  8 ++------
 drivers/gpu/drm/rockchip/rockchip_lvds.c        | 10 +++-------
 drivers/gpu/drm/rockchip/rockchip_rgb.c         |  8 ++------
 8 files changed, 19 insertions(+), 49 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
index f38f5e113c6b..848522797314 100644
--- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
+++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
@@ -26,6 +26,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 "rockchip_drm_drv.h"
 #include "rockchip_drm_vop.h"
@@ -258,10 +259,6 @@ static struct drm_encoder_helper_funcs rockchip_dp_encoder_helper_funcs = {
 	.atomic_check = rockchip_dp_drm_encoder_atomic_check,
 };
 
-static struct drm_encoder_funcs rockchip_dp_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static int rockchip_dp_of_probe(struct rockchip_dp_device *dp)
 {
 	struct device *dev = dp->dev;
@@ -309,8 +306,8 @@ static int rockchip_dp_drm_create_encoder(struct rockchip_dp_device *dp)
 							     dev->of_node);
 	DRM_DEBUG_KMS("possible_crtcs = 0x%x\n", encoder->possible_crtcs);
 
-	ret = drm_encoder_init(drm_dev, encoder, &rockchip_dp_encoder_funcs,
-			       DRM_MODE_ENCODER_TMDS, NULL);
+	ret = drm_simple_encoder_init(drm_dev, encoder,
+				      DRM_MODE_ENCODER_TMDS);
 	if (ret) {
 		DRM_ERROR("failed to initialize encoder with drm\n");
 		return ret;
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
index eed594bd38d3..06f85138b51b 100644
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
@@ -20,6 +20,7 @@
 #include <drm/drm_edid.h>
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "cdn-dp-core.h"
 #include "cdn-dp-reg.h"
@@ -689,10 +690,6 @@ static const struct drm_encoder_helper_funcs cdn_dp_encoder_helper_funcs = {
 	.atomic_check = cdn_dp_encoder_atomic_check,
 };
 
-static const struct drm_encoder_funcs cdn_dp_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static int cdn_dp_parse_dt(struct cdn_dp_device *dp)
 {
 	struct device *dev = dp->dev;
@@ -1030,8 +1027,8 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data)
 							     dev->of_node);
 	DRM_DEBUG_KMS("possible_crtcs = 0x%x\n", encoder->possible_crtcs);
 
-	ret = drm_encoder_init(drm_dev, encoder, &cdn_dp_encoder_funcs,
-			       DRM_MODE_ENCODER_TMDS, NULL);
+	ret = drm_simple_encoder_init(drm_dev, encoder,
+				      DRM_MODE_ENCODER_TMDS);
 	if (ret) {
 		DRM_ERROR("failed to initialize encoder with drm\n");
 		return ret;
diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
index 6e1270e45f97..3feff0c45b3f 100644
--- a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
+++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
@@ -21,6 +21,7 @@
 #include <drm/bridge/dw_mipi_dsi.h>
 #include <drm/drm_mipi_dsi.h>
 #include <drm/drm_of.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "rockchip_drm_drv.h"
 #include "rockchip_drm_vop.h"
@@ -789,10 +790,6 @@ dw_mipi_dsi_encoder_helper_funcs = {
 	.disable = dw_mipi_dsi_encoder_disable,
 };
 
-static const struct drm_encoder_funcs dw_mipi_dsi_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static int rockchip_dsi_drm_create_encoder(struct dw_mipi_dsi_rockchip *dsi,
 					   struct drm_device *drm_dev)
 {
@@ -802,8 +799,7 @@ static int rockchip_dsi_drm_create_encoder(struct dw_mipi_dsi_rockchip *dsi,
 	encoder->possible_crtcs = drm_of_find_possible_crtcs(drm_dev,
 							     dsi->dev->of_node);
 
-	ret = drm_encoder_init(drm_dev, encoder, &dw_mipi_dsi_encoder_funcs,
-			       DRM_MODE_ENCODER_DSI, NULL);
+	ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_DSI);
 	if (ret) {
 		DRM_ERROR("Failed to initialize encoder with drm\n");
 		return ret;
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
index 7f56d8c3491d..121aa8a63a76 100644
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
@@ -14,6 +14,7 @@
 #include <drm/drm_edid.h>
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "rockchip_drm_drv.h"
 #include "rockchip_drm_vop.h"
@@ -237,10 +238,6 @@ dw_hdmi_rockchip_mode_valid(struct drm_connector *connector,
 	return (valid) ? MODE_OK : MODE_BAD;
 }
 
-static const struct drm_encoder_funcs dw_hdmi_rockchip_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static void dw_hdmi_rockchip_encoder_disable(struct drm_encoder *encoder)
 {
 }
@@ -546,8 +543,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
 	}
 
 	drm_encoder_helper_add(encoder, &dw_hdmi_rockchip_encoder_helper_funcs);
-	drm_encoder_init(drm, encoder, &dw_hdmi_rockchip_encoder_funcs,
-			 DRM_MODE_ENCODER_TMDS, NULL);
+	drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
 
 	platform_set_drvdata(pdev, hdmi);
 
diff --git a/drivers/gpu/drm/rockchip/inno_hdmi.c b/drivers/gpu/drm/rockchip/inno_hdmi.c
index e5864e823020..7afdc54eb3ec 100644
--- a/drivers/gpu/drm/rockchip/inno_hdmi.c
+++ b/drivers/gpu/drm/rockchip/inno_hdmi.c
@@ -19,6 +19,7 @@
 #include <drm/drm_edid.h>
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "rockchip_drm_drv.h"
 #include "rockchip_drm_vop.h"
@@ -532,10 +533,6 @@ static struct drm_encoder_helper_funcs inno_hdmi_encoder_helper_funcs = {
 	.atomic_check = inno_hdmi_encoder_atomic_check,
 };
 
-static struct drm_encoder_funcs inno_hdmi_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static enum drm_connector_status
 inno_hdmi_connector_detect(struct drm_connector *connector, bool force)
 {
@@ -617,8 +614,7 @@ static int inno_hdmi_register(struct drm_device *drm, struct inno_hdmi *hdmi)
 		return -EPROBE_DEFER;
 
 	drm_encoder_helper_add(encoder, &inno_hdmi_encoder_helper_funcs);
-	drm_encoder_init(drm, encoder, &inno_hdmi_encoder_funcs,
-			 DRM_MODE_ENCODER_TMDS, NULL);
+	drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
 
 	hdmi->connector.polled = DRM_CONNECTOR_POLL_HPD;
 
diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
index fe203d38664e..1c546c3a8998 100644
--- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c
+++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
@@ -6,6 +6,7 @@
 
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include <linux/clk.h>
 #include <linux/mfd/syscon.h>
@@ -451,10 +452,6 @@ struct drm_encoder_helper_funcs rk3066_hdmi_encoder_helper_funcs = {
 	.atomic_check = rk3066_hdmi_encoder_atomic_check,
 };
 
-static const struct drm_encoder_funcs rk3066_hdmi_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static enum drm_connector_status
 rk3066_hdmi_connector_detect(struct drm_connector *connector, bool force)
 {
@@ -557,8 +554,7 @@ rk3066_hdmi_register(struct drm_device *drm, struct rk3066_hdmi *hdmi)
 		return -EPROBE_DEFER;
 
 	drm_encoder_helper_add(encoder, &rk3066_hdmi_encoder_helper_funcs);
-	drm_encoder_init(drm, encoder, &rk3066_hdmi_encoder_funcs,
-			 DRM_MODE_ENCODER_TMDS, NULL);
+	drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
 
 	hdmi->connector.polled = DRM_CONNECTOR_POLL_HPD;
 
diff --git a/drivers/gpu/drm/rockchip/rockchip_lvds.c b/drivers/gpu/drm/rockchip/rockchip_lvds.c
index 449a62908d21..63f967902c2d 100644
--- a/drivers/gpu/drm/rockchip/rockchip_lvds.c
+++ b/drivers/gpu/drm/rockchip/rockchip_lvds.c
@@ -16,13 +16,14 @@
 #include <linux/pm_runtime.h>
 #include <linux/regmap.h>
 #include <linux/reset.h>
+
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_bridge.h>
-
 #include <drm/drm_dp_helper.h>
 #include <drm/drm_of.h>
 #include <drm/drm_panel.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "rockchip_drm_drv.h"
 #include "rockchip_drm_vop.h"
@@ -435,10 +436,6 @@ struct drm_encoder_helper_funcs px30_lvds_encoder_helper_funcs = {
 	.atomic_check = rockchip_lvds_encoder_atomic_check,
 };
 
-static const struct drm_encoder_funcs rockchip_lvds_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static int rk3288_lvds_probe(struct platform_device *pdev,
 			     struct rockchip_lvds *lvds)
 {
@@ -607,8 +604,7 @@ static int rockchip_lvds_bind(struct device *dev, struct device *master,
 	encoder->possible_crtcs = drm_of_find_possible_crtcs(drm_dev,
 							     dev->of_node);
 
-	ret = drm_encoder_init(drm_dev, encoder, &rockchip_lvds_encoder_funcs,
-			       DRM_MODE_ENCODER_LVDS, NULL);
+	ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_LVDS);
 	if (ret < 0) {
 		DRM_DEV_ERROR(drm_dev->dev,
 			      "failed to initialize encoder: %d\n", ret);
diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.c b/drivers/gpu/drm/rockchip/rockchip_rgb.c
index 3e2484985955..6c10caecd0db 100644
--- a/drivers/gpu/drm/rockchip/rockchip_rgb.c
+++ b/drivers/gpu/drm/rockchip/rockchip_rgb.c
@@ -14,6 +14,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 "rockchip_drm_drv.h"
 #include "rockchip_drm_vop.h"
@@ -67,10 +68,6 @@ struct drm_encoder_helper_funcs rockchip_rgb_encoder_helper_funcs = {
 	.atomic_check = rockchip_rgb_encoder_atomic_check,
 };
 
-static const struct drm_encoder_funcs rockchip_rgb_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 struct rockchip_rgb *rockchip_rgb_init(struct device *dev,
 				       struct drm_crtc *crtc,
 				       struct drm_device *drm_dev)
@@ -125,8 +122,7 @@ struct rockchip_rgb *rockchip_rgb_init(struct device *dev,
 	encoder = &rgb->encoder;
 	encoder->possible_crtcs = drm_crtc_mask(crtc);
 
-	ret = drm_encoder_init(drm_dev, encoder, &rockchip_rgb_encoder_funcs,
-			       DRM_MODE_ENCODER_NONE, NULL);
+	ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_NONE);
 	if (ret < 0) {
 		DRM_DEV_ERROR(drm_dev->dev,
 			      "failed to initialize encoder: %d\n", ret);
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 13/22] drm/shmobile: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (11 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 12/22] drm/rockchip: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-05 15:59 ` [PATCH 14/22] drm/sun4i: " Thomas Zimmermann
                   ` (10 subsequent siblings)
  23 siblings, 0 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The shmobile driver uses empty implementations for its encoders. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
index 75a752d59ef1..03556dbfcafb 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
@@ -17,6 +17,7 @@
 #include <drm/drm_gem_cma_helper.h>
 #include <drm/drm_plane_helper.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 #include <drm/drm_vblank.h>
 
 #include "shmob_drm_backlight.h"
@@ -558,15 +559,6 @@ static const struct drm_encoder_helper_funcs encoder_helper_funcs = {
 	.mode_set = shmob_drm_encoder_mode_set,
 };
 
-static void shmob_drm_encoder_destroy(struct drm_encoder *encoder)
-{
-	drm_encoder_cleanup(encoder);
-}
-
-static const struct drm_encoder_funcs encoder_funcs = {
-	.destroy = shmob_drm_encoder_destroy,
-};
-
 int shmob_drm_encoder_create(struct shmob_drm_device *sdev)
 {
 	struct drm_encoder *encoder = &sdev->encoder.encoder;
@@ -576,8 +568,8 @@ int shmob_drm_encoder_create(struct shmob_drm_device *sdev)
 
 	encoder->possible_crtcs = 1;
 
-	ret = drm_encoder_init(sdev->ddev, encoder, &encoder_funcs,
-			       DRM_MODE_ENCODER_LVDS, NULL);
+	ret = drm_simple_encoder_init(sdev->ddev, encoder,
+				      DRM_MODE_ENCODER_LVDS);
 	if (ret < 0)
 		return ret;
 
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 14/22] drm/sun4i: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (12 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 13/22] drm/shmobile: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06 11:12   ` kbuild test robot
  2020-03-05 15:59 ` [PATCH 15/22] drm/tegra: " Thomas Zimmermann
                   ` (9 subsequent siblings)
  23 siblings, 1 reply; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The ingenic driver uses empty implementations for its encoders. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 12 +++---------
 drivers/gpu/drm/sun4i/sun4i_lvds.c     | 12 +++---------
 drivers/gpu/drm/sun4i/sun4i_rgb.c      | 17 +++--------------
 drivers/gpu/drm/sun4i/sun4i_tv.c       | 17 +++--------------
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 12 +++---------
 drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c  |  8 ++------
 6 files changed, 17 insertions(+), 61 deletions(-)

diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
index 68d4644ac2dc..e324d7db7b7d 100644
--- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
+++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
@@ -22,6 +22,7 @@
 #include <drm/drm_panel.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "sun4i_backend.h"
 #include "sun4i_crtc.h"
@@ -204,10 +205,6 @@ static const struct drm_encoder_helper_funcs sun4i_hdmi_helper_funcs = {
 	.mode_valid	= sun4i_hdmi_mode_valid,
 };
 
-static const struct drm_encoder_funcs sun4i_hdmi_funcs = {
-	.destroy	= drm_encoder_cleanup,
-};
-
 static int sun4i_hdmi_get_modes(struct drm_connector *connector)
 {
 	struct sun4i_hdmi *hdmi = drm_connector_to_sun4i_hdmi(connector);
@@ -611,11 +608,8 @@ static int sun4i_hdmi_bind(struct device *dev, struct device *master,
 
 	drm_encoder_helper_add(&hdmi->encoder,
 			       &sun4i_hdmi_helper_funcs);
-	ret = drm_encoder_init(drm,
-			       &hdmi->encoder,
-			       &sun4i_hdmi_funcs,
-			       DRM_MODE_ENCODER_TMDS,
-			       NULL);
+	ret = drm_simple_encoder_init(drm, &hdmi->encoder,
+				      DRM_MODE_ENCODER_TMDS);
 	if (ret) {
 		dev_err(dev, "Couldn't initialise the HDMI encoder\n");
 		goto err_put_ddc_i2c;
diff --git a/drivers/gpu/drm/sun4i/sun4i_lvds.c b/drivers/gpu/drm/sun4i/sun4i_lvds.c
index 26e5c7ceb8ff..ffda3184aa12 100644
--- a/drivers/gpu/drm/sun4i/sun4i_lvds.c
+++ b/drivers/gpu/drm/sun4i/sun4i_lvds.c
@@ -12,6 +12,7 @@
 #include <drm/drm_panel.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "sun4i_crtc.h"
 #include "sun4i_tcon.h"
@@ -96,10 +97,6 @@ static const struct drm_encoder_helper_funcs sun4i_lvds_enc_helper_funcs = {
 	.enable		= sun4i_lvds_encoder_enable,
 };
 
-static const struct drm_encoder_funcs sun4i_lvds_enc_funcs = {
-	.destroy	= drm_encoder_cleanup,
-};
-
 int sun4i_lvds_init(struct drm_device *drm, struct sun4i_tcon *tcon)
 {
 	struct drm_encoder *encoder;
@@ -121,11 +118,8 @@ int sun4i_lvds_init(struct drm_device *drm, struct sun4i_tcon *tcon)
 
 	drm_encoder_helper_add(&lvds->encoder,
 			       &sun4i_lvds_enc_helper_funcs);
-	ret = drm_encoder_init(drm,
-			       &lvds->encoder,
-			       &sun4i_lvds_enc_funcs,
-			       DRM_MODE_ENCODER_LVDS,
-			       NULL);
+	ret = drm_simple_encoder_init(drm, &lvds->encoder,
+				      DRM_MODE_ENCODER_LVDS);
 	if (ret) {
 		dev_err(drm->dev, "Couldn't initialise the lvds encoder\n");
 		goto err_out;
diff --git a/drivers/gpu/drm/sun4i/sun4i_rgb.c b/drivers/gpu/drm/sun4i/sun4i_rgb.c
index 3b23d5be3cf3..5a7d43939ae6 100644
--- a/drivers/gpu/drm/sun4i/sun4i_rgb.c
+++ b/drivers/gpu/drm/sun4i/sun4i_rgb.c
@@ -14,6 +14,7 @@
 #include <drm/drm_panel.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "sun4i_crtc.h"
 #include "sun4i_tcon.h"
@@ -188,15 +189,6 @@ static struct drm_encoder_helper_funcs sun4i_rgb_enc_helper_funcs = {
 	.mode_valid	= sun4i_rgb_mode_valid,
 };
 
-static void sun4i_rgb_enc_destroy(struct drm_encoder *encoder)
-{
-	drm_encoder_cleanup(encoder);
-}
-
-static struct drm_encoder_funcs sun4i_rgb_enc_funcs = {
-	.destroy	= sun4i_rgb_enc_destroy,
-};
-
 int sun4i_rgb_init(struct drm_device *drm, struct sun4i_tcon *tcon)
 {
 	struct drm_encoder *encoder;
@@ -218,11 +210,8 @@ int sun4i_rgb_init(struct drm_device *drm, struct sun4i_tcon *tcon)
 
 	drm_encoder_helper_add(&rgb->encoder,
 			       &sun4i_rgb_enc_helper_funcs);
-	ret = drm_encoder_init(drm,
-			       &rgb->encoder,
-			       &sun4i_rgb_enc_funcs,
-			       DRM_MODE_ENCODER_NONE,
-			       NULL);
+	ret = drm_simple_encoder_init(drm, &rgb->encoder,
+				      DRM_MODE_ENCODER_NONE);
 	if (ret) {
 		dev_err(drm->dev, "Couldn't initialise the rgb encoder\n");
 		goto err_out;
diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c
index 39c15282e448..63f4428ac3bf 100644
--- a/drivers/gpu/drm/sun4i/sun4i_tv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_tv.c
@@ -19,6 +19,7 @@
 #include <drm/drm_panel.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "sun4i_crtc.h"
 #include "sun4i_drv.h"
@@ -473,15 +474,6 @@ static struct drm_encoder_helper_funcs sun4i_tv_helper_funcs = {
 	.mode_set	= sun4i_tv_mode_set,
 };
 
-static void sun4i_tv_destroy(struct drm_encoder *encoder)
-{
-	drm_encoder_cleanup(encoder);
-}
-
-static struct drm_encoder_funcs sun4i_tv_funcs = {
-	.destroy	= sun4i_tv_destroy,
-};
-
 static int sun4i_tv_comp_get_modes(struct drm_connector *connector)
 {
 	int i;
@@ -592,11 +584,8 @@ static int sun4i_tv_bind(struct device *dev, struct device *master,
 
 	drm_encoder_helper_add(&tv->encoder,
 			       &sun4i_tv_helper_funcs);
-	ret = drm_encoder_init(drm,
-			       &tv->encoder,
-			       &sun4i_tv_funcs,
-			       DRM_MODE_ENCODER_TVDAC,
-			       NULL);
+	ret = drm_simple_encoder_init(drm, &tv->encoder,
+				      DRM_MODE_ENCODER_TVDAC);
 	if (ret) {
 		dev_err(dev, "Couldn't initialise the TV encoder\n");
 		goto err_disable_clk;
diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
index 059939789730..f6c67dd87a05 100644
--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
@@ -24,6 +24,7 @@
 #include <drm/drm_panel.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "sun4i_crtc.h"
 #include "sun4i_tcon.h"
@@ -846,10 +847,6 @@ static const struct drm_encoder_helper_funcs sun6i_dsi_enc_helper_funcs = {
 	.enable		= sun6i_dsi_encoder_enable,
 };
 
-static const struct drm_encoder_funcs sun6i_dsi_enc_funcs = {
-	.destroy	= drm_encoder_cleanup,
-};
-
 static u32 sun6i_dsi_dcs_build_pkt_hdr(struct sun6i_dsi *dsi,
 				       const struct mipi_dsi_msg *msg)
 {
@@ -1062,11 +1059,8 @@ static int sun6i_dsi_bind(struct device *dev, struct device *master,
 
 	drm_encoder_helper_add(&dsi->encoder,
 			       &sun6i_dsi_enc_helper_funcs);
-	ret = drm_encoder_init(drm,
-			       &dsi->encoder,
-			       &sun6i_dsi_enc_funcs,
-			       DRM_MODE_ENCODER_DSI,
-			       NULL);
+	ret = drm_simple_encoder_init(drm, &dsi->encoder,
+				      DRM_MODE_ENCODER_DSI);
 	if (ret) {
 		dev_err(dsi->dev, "Couldn't initialise the DSI encoder\n");
 		return ret;
diff --git a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c
index e8a317d5ba19..972682bb8000 100644
--- a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c
+++ b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c
@@ -10,6 +10,7 @@
 
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_of.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "sun8i_dw_hdmi.h"
 #include "sun8i_tcon_top.h"
@@ -29,10 +30,6 @@ sun8i_dw_hdmi_encoder_helper_funcs = {
 	.mode_set = sun8i_dw_hdmi_encoder_mode_set,
 };
 
-static const struct drm_encoder_funcs sun8i_dw_hdmi_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static enum drm_mode_status
 sun8i_dw_hdmi_mode_valid_a83t(struct drm_connector *connector,
 			      const struct drm_display_mode *mode)
@@ -220,8 +217,7 @@ static int sun8i_dw_hdmi_bind(struct device *dev, struct device *master,
 	}
 
 	drm_encoder_helper_add(encoder, &sun8i_dw_hdmi_encoder_helper_funcs);
-	drm_encoder_init(drm, encoder, &sun8i_dw_hdmi_encoder_funcs,
-			 DRM_MODE_ENCODER_TMDS, NULL);
+	drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
 
 	sun8i_hdmi_phy_init(hdmi->phy);
 
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 15/22] drm/tegra: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (13 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 14/22] drm/sun4i: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06 12:38   ` kbuild test robot
  2020-03-05 15:59 ` [PATCH 16/22] drm/tidss: " Thomas Zimmermann
                   ` (8 subsequent siblings)
  23 siblings, 1 reply; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The tegra driver uses empty implementations for its encoders. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/tegra/drm.h    |  2 --
 drivers/gpu/drm/tegra/dsi.c    | 10 +++-------
 drivers/gpu/drm/tegra/hdmi.c   |  9 +++------
 drivers/gpu/drm/tegra/output.c |  6 +-----
 drivers/gpu/drm/tegra/rgb.c    |  8 ++------
 drivers/gpu/drm/tegra/sor.c    |  8 ++------
 6 files changed, 11 insertions(+), 32 deletions(-)

diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h
index ed99b67deb29..804869799305 100644
--- a/drivers/gpu/drm/tegra/drm.h
+++ b/drivers/gpu/drm/tegra/drm.h
@@ -152,8 +152,6 @@ enum drm_connector_status
 tegra_output_connector_detect(struct drm_connector *connector, bool force);
 void tegra_output_connector_destroy(struct drm_connector *connector);
 
-void tegra_output_encoder_destroy(struct drm_encoder *encoder);
-
 /* from dpaux.c */
 struct drm_dp_aux *drm_dp_aux_find_by_of_node(struct device_node *np);
 enum drm_connector_status drm_dp_aux_detect(struct drm_dp_aux *aux);
diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c
index 88b9d64c77bf..76369b128e5d 100644
--- a/drivers/gpu/drm/tegra/dsi.c
+++ b/drivers/gpu/drm/tegra/dsi.c
@@ -22,6 +22,7 @@
 #include <drm/drm_file.h>
 #include <drm/drm_mipi_dsi.h>
 #include <drm/drm_panel.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "dc.h"
 #include "drm.h"
@@ -824,10 +825,6 @@ static const struct drm_connector_helper_funcs tegra_dsi_connector_helper_funcs
 	.mode_valid = tegra_dsi_connector_mode_valid,
 };
 
-static const struct drm_encoder_funcs tegra_dsi_encoder_funcs = {
-	.destroy = tegra_output_encoder_destroy,
-};
-
 static void tegra_dsi_unprepare(struct tegra_dsi *dsi)
 {
 	int err;
@@ -1058,9 +1055,8 @@ static int tegra_dsi_init(struct host1x_client *client)
 					 &tegra_dsi_connector_helper_funcs);
 		dsi->output.connector.dpms = DRM_MODE_DPMS_OFF;
 
-		drm_encoder_init(drm, &dsi->output.encoder,
-				 &tegra_dsi_encoder_funcs,
-				 DRM_MODE_ENCODER_DSI, NULL);
+		drm_simple_encoder_init(drm, &dsi->output.encoder,
+					DRM_MODE_ENCODER_DSI);
 		drm_encoder_helper_add(&dsi->output.encoder,
 				       &tegra_dsi_encoder_helper_funcs);
 
diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c
index 6f117628f257..8ec72546f330 100644
--- a/drivers/gpu/drm/tegra/hdmi.c
+++ b/drivers/gpu/drm/tegra/hdmi.c
@@ -22,6 +22,7 @@
 #include <drm/drm_file.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "hda.h"
 #include "hdmi.h"
@@ -1136,10 +1137,6 @@ tegra_hdmi_connector_helper_funcs = {
 	.mode_valid = tegra_hdmi_connector_mode_valid,
 };
 
-static const struct drm_encoder_funcs tegra_hdmi_encoder_funcs = {
-	.destroy = tegra_output_encoder_destroy,
-};
-
 static void tegra_hdmi_encoder_disable(struct drm_encoder *encoder)
 {
 	struct tegra_output *output = encoder_to_output(encoder);
@@ -1445,8 +1442,8 @@ static int tegra_hdmi_init(struct host1x_client *client)
 				 &tegra_hdmi_connector_helper_funcs);
 	hdmi->output.connector.dpms = DRM_MODE_DPMS_OFF;
 
-	drm_encoder_init(drm, &hdmi->output.encoder, &tegra_hdmi_encoder_funcs,
-			 DRM_MODE_ENCODER_TMDS, NULL);
+	drm_simple_encoder_init(drm, &hdmi->output.encoder,
+				DRM_MODE_ENCODER_TMDS);
 	drm_encoder_helper_add(&hdmi->output.encoder,
 			       &tegra_hdmi_encoder_helper_funcs);
 
diff --git a/drivers/gpu/drm/tegra/output.c b/drivers/gpu/drm/tegra/output.c
index a264259b97a2..e36e5e7c2f69 100644
--- a/drivers/gpu/drm/tegra/output.c
+++ b/drivers/gpu/drm/tegra/output.c
@@ -6,6 +6,7 @@
 
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_panel.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "drm.h"
 #include "dc.h"
@@ -79,11 +80,6 @@ void tegra_output_connector_destroy(struct drm_connector *connector)
 	drm_connector_cleanup(connector);
 }
 
-void tegra_output_encoder_destroy(struct drm_encoder *encoder)
-{
-	drm_encoder_cleanup(encoder);
-}
-
 static irqreturn_t hpd_irq(int irq, void *data)
 {
 	struct tegra_output *output = data;
diff --git a/drivers/gpu/drm/tegra/rgb.c b/drivers/gpu/drm/tegra/rgb.c
index 4be4dfd4a68a..0562a7eb793f 100644
--- a/drivers/gpu/drm/tegra/rgb.c
+++ b/drivers/gpu/drm/tegra/rgb.c
@@ -8,6 +8,7 @@
 
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_panel.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "drm.h"
 #include "dc.h"
@@ -110,10 +111,6 @@ static const struct drm_connector_helper_funcs tegra_rgb_connector_helper_funcs
 	.mode_valid = tegra_rgb_connector_mode_valid,
 };
 
-static const struct drm_encoder_funcs tegra_rgb_encoder_funcs = {
-	.destroy = tegra_output_encoder_destroy,
-};
-
 static void tegra_rgb_encoder_disable(struct drm_encoder *encoder)
 {
 	struct tegra_output *output = encoder_to_output(encoder);
@@ -281,8 +278,7 @@ int tegra_dc_rgb_init(struct drm_device *drm, struct tegra_dc *dc)
 				 &tegra_rgb_connector_helper_funcs);
 	output->connector.dpms = DRM_MODE_DPMS_OFF;
 
-	drm_encoder_init(drm, &output->encoder, &tegra_rgb_encoder_funcs,
-			 DRM_MODE_ENCODER_LVDS, NULL);
+	drm_simple_encoder_init(drm, &output->encoder, DRM_MODE_ENCODER_LVDS);
 	drm_encoder_helper_add(&output->encoder,
 			       &tegra_rgb_encoder_helper_funcs);
 
diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c
index 81226a4953c1..606cab4f37b2 100644
--- a/drivers/gpu/drm/tegra/sor.c
+++ b/drivers/gpu/drm/tegra/sor.c
@@ -23,6 +23,7 @@
 #include <drm/drm_file.h>
 #include <drm/drm_panel.h>
 #include <drm/drm_scdc_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "dc.h"
 #include "dp.h"
@@ -1805,10 +1806,6 @@ static const struct drm_connector_helper_funcs tegra_sor_connector_helper_funcs
 	.mode_valid = tegra_sor_connector_mode_valid,
 };
 
-static const struct drm_encoder_funcs tegra_sor_encoder_funcs = {
-	.destroy = tegra_output_encoder_destroy,
-};
-
 static int
 tegra_sor_encoder_atomic_check(struct drm_encoder *encoder,
 			       struct drm_crtc_state *crtc_state,
@@ -3102,8 +3099,7 @@ static int tegra_sor_init(struct host1x_client *client)
 				 &tegra_sor_connector_helper_funcs);
 	sor->output.connector.dpms = DRM_MODE_DPMS_OFF;
 
-	drm_encoder_init(drm, &sor->output.encoder, &tegra_sor_encoder_funcs,
-			 encoder, NULL);
+	drm_simple_encoder_init(drm, &sor->output.encoder, encoder);
 	drm_encoder_helper_add(&sor->output.encoder, helpers);
 
 	drm_connector_attach_encoder(&sor->output.connector,
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 16/22] drm/tidss: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (14 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 15/22] drm/tegra: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06 16:02   ` Jyri Sarha
  2020-03-05 15:59 ` [PATCH 17/22] drm/tilcdc: " Thomas Zimmermann
                   ` (7 subsequent siblings)
  23 siblings, 1 reply; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The tidss driver uses an empty implementation for its encoder. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/tidss/tidss_encoder.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/tidss/tidss_encoder.c b/drivers/gpu/drm/tidss/tidss_encoder.c
index 83785b0a66a9..4c0558286f5e 100644
--- a/drivers/gpu/drm/tidss/tidss_encoder.c
+++ b/drivers/gpu/drm/tidss/tidss_encoder.c
@@ -8,8 +8,9 @@
 
 #include <drm/drm_crtc.h>
 #include <drm/drm_crtc_helper.h>
-#include <drm/drm_panel.h>
 #include <drm/drm_of.h>
+#include <drm/drm_panel.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "tidss_crtc.h"
 #include "tidss_drv.h"
@@ -59,10 +60,6 @@ static const struct drm_encoder_helper_funcs encoder_helper_funcs = {
 	.atomic_check = tidss_encoder_atomic_check,
 };
 
-static const struct drm_encoder_funcs encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 struct drm_encoder *tidss_encoder_create(struct tidss_device *tidss,
 					 u32 encoder_type, u32 possible_crtcs)
 {
@@ -75,8 +72,7 @@ struct drm_encoder *tidss_encoder_create(struct tidss_device *tidss,
 
 	enc->possible_crtcs = possible_crtcs;
 
-	ret = drm_encoder_init(&tidss->ddev, enc, &encoder_funcs,
-			       encoder_type, NULL);
+	ret = drm_simple_encoder_init(&tidss->ddev, enc, encoder_type);
 	if (ret < 0)
 		return ERR_PTR(ret);
 
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 17/22] drm/tilcdc: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (15 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 16/22] drm/tidss: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06 16:03   ` Jyri Sarha
  2020-03-05 15:59 ` [PATCH 18/22] drm/vc4: " Thomas Zimmermann
                   ` (6 subsequent siblings)
  23 siblings, 1 reply; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The tilcdc driver uses empty implementations for its encoders. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/tilcdc/tilcdc_external.c | 10 +++-------
 drivers/gpu/drm/tilcdc/tilcdc_panel.c    |  8 ++------
 2 files changed, 5 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c
index 28b7f703236e..b177525588c1 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_external.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c
@@ -10,6 +10,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_bridge.h>
 #include <drm/drm_of.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "tilcdc_drv.h"
 #include "tilcdc_external.h"
@@ -83,10 +84,6 @@ int tilcdc_add_component_encoder(struct drm_device *ddev)
 	return 0;
 }
 
-static const struct drm_encoder_funcs tilcdc_external_encoder_funcs = {
-	.destroy	= drm_encoder_cleanup,
-};
-
 static
 int tilcdc_attach_bridge(struct drm_device *ddev, struct drm_bridge *bridge)
 {
@@ -131,9 +128,8 @@ int tilcdc_attach_external_device(struct drm_device *ddev)
 	if (!priv->external_encoder)
 		return -ENOMEM;
 
-	ret = drm_encoder_init(ddev, priv->external_encoder,
-			       &tilcdc_external_encoder_funcs,
-			       DRM_MODE_ENCODER_NONE, NULL);
+	ret = drm_simple_encoder_init(ddev, priv->external_encoder,
+				      DRM_MODE_ENCODER_NONE);
 	if (ret) {
 		dev_err(ddev->dev, "drm_encoder_init() failed %d\n", ret);
 		return ret;
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_panel.c b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
index 5584e656b857..12823d60c4e8 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_panel.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
@@ -16,6 +16,7 @@
 #include <drm/drm_connector.h>
 #include <drm/drm_modeset_helper_vtables.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "tilcdc_drv.h"
 #include "tilcdc_panel.h"
@@ -74,10 +75,6 @@ static void panel_encoder_mode_set(struct drm_encoder *encoder,
 	/* nothing needed */
 }
 
-static const struct drm_encoder_funcs panel_encoder_funcs = {
-		.destroy        = drm_encoder_cleanup,
-};
-
 static const struct drm_encoder_helper_funcs panel_encoder_helper_funcs = {
 		.dpms           = panel_encoder_dpms,
 		.prepare        = panel_encoder_prepare,
@@ -102,8 +99,7 @@ static struct drm_encoder *panel_encoder_create(struct drm_device *dev,
 	encoder = &panel_encoder->base;
 	encoder->possible_crtcs = 1;
 
-	ret = drm_encoder_init(dev, encoder, &panel_encoder_funcs,
-			DRM_MODE_ENCODER_LVDS, NULL);
+	ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_LVDS);
 	if (ret < 0)
 		goto fail;
 
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 18/22] drm/vc4: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (16 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 17/22] drm/tilcdc: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-05 17:03   ` Eric Anholt
  2020-03-06 13:54   ` kbuild test robot
  2020-03-05 15:59 ` [PATCH 19/22] drm/virtgpu: " Thomas Zimmermann
                   ` (5 subsequent siblings)
  23 siblings, 2 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

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>
---
 drivers/gpu/drm/vc4/vc4_dpi.c  |  8 ++------
 drivers/gpu/drm/vc4/vc4_dsi.c  | 15 +++------------
 drivers/gpu/drm/vc4/vc4_hdmi.c | 17 ++++-------------
 drivers/gpu/drm/vc4/vc4_vec.c  |  8 ++------
 4 files changed, 11 insertions(+), 37 deletions(-)

diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c
index 6dfede03396e..a90f2545baee 100644
--- a/drivers/gpu/drm/vc4/vc4_dpi.c
+++ b/drivers/gpu/drm/vc4/vc4_dpi.c
@@ -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);
diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
index d99b1d526651..eaf276978ee7 100644
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
@@ -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;
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index cea18dc15f77..8f956156eb8e 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -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 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
 	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);
diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c
index 7402bc768664..bd5b8eb58b18 100644
--- a/drivers/gpu/drm/vc4/vc4_vec.c
+++ b/drivers/gpu/drm/vc4/vc4_vec.c
@@ -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);
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 19/22] drm/virtgpu: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (17 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 18/22] drm/vc4: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-07 15:40   ` kbuild test robot
  2020-03-05 15:59 ` [PATCH 20/22] drm/vkms: " Thomas Zimmermann
                   ` (4 subsequent siblings)
  23 siblings, 1 reply; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The virtgpu driver uses an empty implementation for its encoder. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/virtio/virtgpu_display.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
index 2b7e6ae65546..cc7fd957a307 100644
--- a/drivers/gpu/drm/virtio/virtgpu_display.c
+++ b/drivers/gpu/drm/virtio/virtgpu_display.c
@@ -30,6 +30,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "virtgpu_drv.h"
 
@@ -240,10 +241,6 @@ static const struct drm_connector_funcs virtio_gpu_connector_funcs = {
 	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
 };
 
-static const struct drm_encoder_funcs virtio_gpu_enc_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static int vgdev_output_init(struct virtio_gpu_device *vgdev, int index)
 {
 	struct drm_device *dev = vgdev->ddev;
@@ -276,8 +273,7 @@ static int vgdev_output_init(struct virtio_gpu_device *vgdev, int index)
 	if (vgdev->has_edid)
 		drm_connector_attach_edid_property(connector);
 
-	drm_encoder_init(dev, encoder, &virtio_gpu_enc_funcs,
-			 DRM_MODE_ENCODER_VIRTUAL, NULL);
+	drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_VIRTUAL);
 	drm_encoder_helper_add(encoder, &virtio_gpu_enc_helper_funcs);
 	encoder->possible_crtcs = 1 << index;
 
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 20/22] drm/vkms: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (18 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 19/22] drm/virtgpu: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06  0:24   ` kbuild test robot
                     ` (2 more replies)
  2020-03-05 15:59 ` [PATCH 21/22] drm/writeback: " Thomas Zimmermann
                   ` (3 subsequent siblings)
  23 siblings, 3 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The vkms driver uses an empty implementation for its encoder. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/vkms/vkms_output.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/vkms/vkms_output.c b/drivers/gpu/drm/vkms/vkms_output.c
index fb1941a6522c..85afb77e97f0 100644
--- a/drivers/gpu/drm/vkms/vkms_output.c
+++ b/drivers/gpu/drm/vkms/vkms_output.c
@@ -3,6 +3,7 @@
 #include "vkms_drv.h"
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 static void vkms_connector_destroy(struct drm_connector *connector)
 {
@@ -17,10 +18,6 @@ static const struct drm_connector_funcs vkms_connector_funcs = {
 	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
 };
 
-static const struct drm_encoder_funcs vkms_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static int vkms_conn_get_modes(struct drm_connector *connector)
 {
 	int count;
@@ -70,8 +67,7 @@ int vkms_output_init(struct vkms_device *vkmsdev, int index)
 
 	drm_connector_helper_add(connector, &vkms_conn_helper_funcs);
 
-	ret = drm_encoder_init(dev, encoder, &vkms_encoder_funcs,
-			       DRM_MODE_ENCODER_VIRTUAL, NULL);
+	ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_VIRTUAL);
 	if (ret) {
 		DRM_ERROR("Failed to init encoder\n");
 		goto err_encoder;
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 21/22] drm/writeback: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (19 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 20/22] drm/vkms: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06  0:54   ` kbuild test robot
                     ` (2 more replies)
  2020-03-05 15:59 ` [PATCH 22/22] drm/zte: " Thomas Zimmermann
                   ` (2 subsequent siblings)
  23 siblings, 3 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The writeback code uses an empty implementation for its encoder. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/drm_writeback.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/drm_writeback.c b/drivers/gpu/drm/drm_writeback.c
index 43d9e3bb3a94..cefb500c4ed7 100644
--- a/drivers/gpu/drm/drm_writeback.c
+++ b/drivers/gpu/drm/drm_writeback.c
@@ -16,6 +16,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_modeset_helper_vtables.h>
 #include <drm/drm_property.h>
+#include <drm/drm_simple_kms_helper.h>
 #include <drm/drm_writeback.h>
 
 /**
@@ -146,10 +147,6 @@ static int create_writeback_properties(struct drm_device *dev)
 	return 0;
 }
 
-static const struct drm_encoder_funcs drm_writeback_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 /**
  * drm_writeback_connector_init - Initialize a writeback connector and its properties
  * @dev: DRM device
@@ -191,9 +188,8 @@ int drm_writeback_connector_init(struct drm_device *dev,
 		return PTR_ERR(blob);
 
 	drm_encoder_helper_add(&wb_connector->encoder, enc_helper_funcs);
-	ret = drm_encoder_init(dev, &wb_connector->encoder,
-			       &drm_writeback_encoder_funcs,
-			       DRM_MODE_ENCODER_VIRTUAL, NULL);
+	ret = drm_simple_encoder_init(dev, &wb_connector->encoder,
+				      DRM_MODE_ENCODER_VIRTUAL);
 	if (ret)
 		goto fail;
 
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH 22/22] drm/zte: Use simple encoder
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (20 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 21/22] drm/writeback: " Thomas Zimmermann
@ 2020-03-05 15:59 ` Thomas Zimmermann
  2020-03-06 10:56 ` [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Daniel Vetter
  2020-03-06 14:22 ` Laurent Pinchart
  23 siblings, 0 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-05 15:59 UTC (permalink / raw)
  To: airlied, daniel, sam, abrodkin, bbrezillon, nicolas.ferre,
	alexandre.belloni, ludovic.desroches, maarten.lankhorst, mripard,
	jingoohan1, inki.dae, jy0922.shim, sw0312.kim, kyungmin.park,
	kgene, krzk, stefan, alison.wang, patrik.r.jakobsson,
	xinliang.liu, zourongrong, john.stultz, kong.kongxinwei,
	puck.chen, linux, p.zabel, shawnguo, s.hauer, kernel, festevam,
	linux-imx, paul, ck.hu, matthias.bgg, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, Thomas Zimmermann, linux-tegra

The zte driver uses empty implementations for its encoders. Replace
the code with the generic simple encoder.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/zte/zx_hdmi.c  | 8 ++------
 drivers/gpu/drm/zte/zx_tvenc.c | 8 ++------
 drivers/gpu/drm/zte/zx_vga.c   | 8 ++------
 3 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/drivers/gpu/drm/zte/zx_hdmi.c b/drivers/gpu/drm/zte/zx_hdmi.c
index b98a1420dcd3..76a16d997a23 100644
--- a/drivers/gpu/drm/zte/zx_hdmi.c
+++ b/drivers/gpu/drm/zte/zx_hdmi.c
@@ -20,6 +20,7 @@
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_print.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include <sound/hdmi-codec.h>
 
@@ -254,10 +255,6 @@ static const struct drm_encoder_helper_funcs zx_hdmi_encoder_helper_funcs = {
 	.mode_set = zx_hdmi_encoder_mode_set,
 };
 
-static const struct drm_encoder_funcs zx_hdmi_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static int zx_hdmi_connector_get_modes(struct drm_connector *connector)
 {
 	struct zx_hdmi *hdmi = to_zx_hdmi(connector);
@@ -313,8 +310,7 @@ static int zx_hdmi_register(struct drm_device *drm, struct zx_hdmi *hdmi)
 
 	encoder->possible_crtcs = VOU_CRTC_MASK;
 
-	drm_encoder_init(drm, encoder, &zx_hdmi_encoder_funcs,
-			 DRM_MODE_ENCODER_TMDS, NULL);
+	drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
 	drm_encoder_helper_add(encoder, &zx_hdmi_encoder_helper_funcs);
 
 	hdmi->connector.polled = DRM_CONNECTOR_POLL_HPD;
diff --git a/drivers/gpu/drm/zte/zx_tvenc.c b/drivers/gpu/drm/zte/zx_tvenc.c
index c598b7daf1f1..d8a89ba383bc 100644
--- a/drivers/gpu/drm/zte/zx_tvenc.c
+++ b/drivers/gpu/drm/zte/zx_tvenc.c
@@ -14,6 +14,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "zx_drm_drv.h"
 #include "zx_tvenc_regs.h"
@@ -218,10 +219,6 @@ static const struct drm_encoder_helper_funcs zx_tvenc_encoder_helper_funcs = {
 	.mode_set = zx_tvenc_encoder_mode_set,
 };
 
-static const struct drm_encoder_funcs zx_tvenc_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static int zx_tvenc_connector_get_modes(struct drm_connector *connector)
 {
 	struct zx_tvenc *tvenc = to_zx_tvenc(connector);
@@ -285,8 +282,7 @@ static int zx_tvenc_register(struct drm_device *drm, struct zx_tvenc *tvenc)
 	 */
 	encoder->possible_crtcs = BIT(1);
 
-	drm_encoder_init(drm, encoder, &zx_tvenc_encoder_funcs,
-			 DRM_MODE_ENCODER_TVDAC, NULL);
+	drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TVDAC);
 	drm_encoder_helper_add(encoder, &zx_tvenc_encoder_helper_funcs);
 
 	connector->interlace_allowed = true;
diff --git a/drivers/gpu/drm/zte/zx_vga.c b/drivers/gpu/drm/zte/zx_vga.c
index c4fa3bbaba78..a7ed7f5ca837 100644
--- a/drivers/gpu/drm/zte/zx_vga.c
+++ b/drivers/gpu/drm/zte/zx_vga.c
@@ -14,6 +14,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "zx_drm_drv.h"
 #include "zx_vga_regs.h"
@@ -72,10 +73,6 @@ static const struct drm_encoder_helper_funcs zx_vga_encoder_helper_funcs = {
 	.disable = zx_vga_encoder_disable,
 };
 
-static const struct drm_encoder_funcs zx_vga_encoder_funcs = {
-	.destroy = drm_encoder_cleanup,
-};
-
 static int zx_vga_connector_get_modes(struct drm_connector *connector)
 {
 	struct zx_vga *vga = to_zx_vga(connector);
@@ -154,8 +151,7 @@ static int zx_vga_register(struct drm_device *drm, struct zx_vga *vga)
 
 	encoder->possible_crtcs = VOU_CRTC_MASK;
 
-	ret = drm_encoder_init(drm, encoder, &zx_vga_encoder_funcs,
-			       DRM_MODE_ENCODER_DAC, NULL);
+	ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_DAC);
 	if (ret) {
 		DRM_DEV_ERROR(dev, "failed to init encoder: %d\n", ret);
 		return ret;
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 66+ messages in thread

* Re: [PATCH 18/22] drm/vc4: Use simple encoder
  2020-03-05 15:59 ` [PATCH 18/22] drm/vc4: " Thomas Zimmermann
@ 2020-03-05 17:03   ` Eric Anholt
  2020-03-06 13:54   ` kbuild test robot
  1 sibling, 0 replies; 66+ messages in thread
From: Eric Anholt @ 2020-03-05 17:03 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, David Airlie, linux, paul,
	linux-tegra, thierry.reding, krzk, sam, sebastian.reichel,
	linux-samsung-soc, jy0922.shim, hjc, abrodkin, kong.kongxinwei,
	jonathanh, xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, puck.chen, s.hauer, alison.wang,
	jsarha, matthias.bgg, wens, kernel, jernej.skrabec, kraxel,
	rodrigosiqueiramelo, tomi.valkeinen, bbrezillon, jingoohan1,
	DRI Development, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	laurent.pinchart

On Thu, Mar 5, 2020 at 8:00 AM Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> The vc4 driver uses empty implementations for its encoders. Replace
> the code with the generic simple encoder.

Acked-by: Eric Anholt <eric@anholt.net>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 01/22] drm/arc: Use simple encoder
  2020-03-05 15:59 ` [PATCH 01/22] drm/arc: Use simple encoder Thomas Zimmermann
@ 2020-03-05 23:48   ` kbuild test robot
  2020-03-06 21:18   ` Sam Ravnborg
  1 sibling, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-05 23:48 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, Thomas Zimmermann,
	puck.chen, s.hauer, alison.wang, jsarha, matthias.bgg, wens,
	kernel, jernej.skrabec, kbuild-all, rodrigosiqueiramelo,
	tomi.valkeinen, bbrezillon, jingoohan1, dri-devel, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 2724 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[also build test ERROR on v5.6-rc4]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: mips-randconfig-a001-20200306 (attached as .config)
compiler: mipsel-linux-gcc (GCC) 5.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=5.5.0 make.cross ARCH=mips 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/arc/arcpgu_hdmi.c: In function 'arcpgu_drm_hdmi_init':
>> drivers/gpu/drm/arc/arcpgu_hdmi.c:34:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
           ^
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/arc/arcpgu_sim.c: In function 'arcpgu_drm_sim_init':
>> drivers/gpu/drm/arc/arcpgu_sim.c:68:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_VIRTUAL);
           ^
   cc1: some warnings being treated as errors

vim +/drm_simple_encoder_init +34 drivers/gpu/drm/arc/arcpgu_hdmi.c

    15	
    16	int arcpgu_drm_hdmi_init(struct drm_device *drm, struct device_node *np)
    17	{
    18		struct drm_encoder *encoder;
    19		struct drm_bridge *bridge;
    20	
    21		int ret = 0;
    22	
    23		encoder = devm_kzalloc(drm->dev, sizeof(*encoder), GFP_KERNEL);
    24		if (encoder == NULL)
    25			return -ENOMEM;
    26	
    27		/* Locate drm bridge from the hdmi encoder DT node */
    28		bridge = of_drm_find_bridge(np);
    29		if (!bridge)
    30			return -EPROBE_DEFER;
    31	
    32		encoder->possible_crtcs = 1;
    33		encoder->possible_clones = 0;
  > 34		ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 29264 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 12/22] drm/rockchip: Use simple encoder
  2020-03-05 15:59 ` [PATCH 12/22] drm/rockchip: " Thomas Zimmermann
@ 2020-03-05 23:59   ` kbuild test robot
  2020-03-06 10:05   ` kbuild test robot
  1 sibling, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-05 23:59 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, Thomas Zimmermann,
	puck.chen, s.hauer, alison.wang, jsarha, matthias.bgg, wens,
	kernel, jernej.skrabec, kbuild-all, rodrigosiqueiramelo,
	tomi.valkeinen, bbrezillon, jingoohan1, dri-devel, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 5689 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2 v5.6-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: sparc-allyesconfig (attached as .config)
compiler: sparc64-linux-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=sparc 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/rockchip/analogix_dp-rockchip.c: In function 'rockchip_dp_drm_create_encoder':
>> drivers/gpu/drm/rockchip/analogix_dp-rockchip.c:309:8: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(drm_dev, encoder,
           ^~~~~~~~~~~~~~~~~~~~~~~
           drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/rockchip/cdn-dp-core.c: In function 'cdn_dp_bind':
>> drivers/gpu/drm/rockchip/cdn-dp-core.c:1030:8: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(drm_dev, encoder,
           ^~~~~~~~~~~~~~~~~~~~~~~
           drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c: In function 'dw_hdmi_rockchip_bind':
>> drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c:546:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c: In function 'rockchip_dsi_drm_create_encoder':
>> drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c:802:8: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_DSI);
           ^~~~~~~~~~~~~~~~~~~~~~~
           drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/rockchip/inno_hdmi.c: In function 'inno_hdmi_register':
>> drivers/gpu/drm/rockchip/inno_hdmi.c:617:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/rockchip/rockchip_lvds.c: In function 'rockchip_lvds_bind':
>> drivers/gpu/drm/rockchip/rockchip_lvds.c:607:8: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_LVDS);
           ^~~~~~~~~~~~~~~~~~~~~~~
           drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/rockchip/rockchip_rgb.c: In function 'rockchip_rgb_init':
>> drivers/gpu/drm/rockchip/rockchip_rgb.c:125:8: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_NONE);
           ^~~~~~~~~~~~~~~~~~~~~~~
           drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/rockchip/rk3066_hdmi.c: In function 'rk3066_hdmi_register':
>> drivers/gpu/drm/rockchip/rk3066_hdmi.c:557:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors

vim +309 drivers/gpu/drm/rockchip/analogix_dp-rockchip.c

   297	
   298	static int rockchip_dp_drm_create_encoder(struct rockchip_dp_device *dp)
   299	{
   300		struct drm_encoder *encoder = &dp->encoder;
   301		struct drm_device *drm_dev = dp->drm_dev;
   302		struct device *dev = dp->dev;
   303		int ret;
   304	
   305		encoder->possible_crtcs = drm_of_find_possible_crtcs(drm_dev,
   306								     dev->of_node);
   307		DRM_DEBUG_KMS("possible_crtcs = 0x%x\n", encoder->possible_crtcs);
   308	
 > 309		ret = drm_simple_encoder_init(drm_dev, encoder,
   310					      DRM_MODE_ENCODER_TMDS);
   311		if (ret) {
   312			DRM_ERROR("failed to initialize encoder with drm\n");
   313			return ret;
   314		}
   315	
   316		drm_encoder_helper_add(encoder, &rockchip_dp_encoder_helper_funcs);
   317	
   318		return 0;
   319	}
   320	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 61637 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 04/22] drm/fsl-dcu: Use simple encoder
  2020-03-05 15:59 ` [PATCH 04/22] drm/fsl-dcu: " Thomas Zimmermann
@ 2020-03-06  0:02   ` kbuild test robot
  0 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06  0:02 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, Thomas Zimmermann,
	puck.chen, s.hauer, alison.wang, jsarha, matthias.bgg, wens,
	kernel, jernej.skrabec, kbuild-all, rodrigosiqueiramelo,
	tomi.valkeinen, bbrezillon, jingoohan1, dri-devel, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 2370 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[also build test ERROR on v5.6-rc4]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: arm-multi_v7_defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=arm 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c: In function 'fsl_dcu_drm_encoder_create':
>> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c:33:8: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(fsl_dev->drm, encoder,
           ^~~~~~~~~~~~~~~~~~~~~~~
           drm_encoder_init
   cc1: some warnings being treated as errors

vim +33 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c

    20	
    21	int fsl_dcu_drm_encoder_create(struct fsl_dcu_drm_device *fsl_dev,
    22				       struct drm_crtc *crtc)
    23	{
    24		struct drm_encoder *encoder = &fsl_dev->encoder;
    25		int ret;
    26	
    27		encoder->possible_crtcs = 1;
    28	
    29		/* Use bypass mode for parallel RGB/LVDS encoder */
    30		if (fsl_dev->tcon)
    31			fsl_tcon_bypass_enable(fsl_dev->tcon);
    32	
  > 33		ret = drm_simple_encoder_init(fsl_dev->drm, encoder,
    34					      DRM_MODE_ENCODER_LVDS);
    35		if (ret < 0)
    36			return ret;
    37	
    38		return 0;
    39	}
    40	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 50199 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 20/22] drm/vkms: Use simple encoder
  2020-03-05 15:59 ` [PATCH 20/22] drm/vkms: " Thomas Zimmermann
@ 2020-03-06  0:24   ` kbuild test robot
  2020-03-07 13:59   ` kbuild test robot
  2020-03-24 11:59   ` Rodrigo Siqueira
  2 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06  0:24 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, Thomas Zimmermann,
	puck.chen, s.hauer, alison.wang, jsarha, matthias.bgg, wens,
	kernel, jernej.skrabec, kbuild-all, rodrigosiqueiramelo,
	tomi.valkeinen, bbrezillon, jingoohan1, dri-devel, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 2978 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2 v5.6-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: mips-randconfig-a001-20200306 (attached as .config)
compiler: mipsel-linux-gcc (GCC) 5.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=5.5.0 make.cross ARCH=mips 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/vkms/vkms_output.c: In function 'vkms_output_init':
>> drivers/gpu/drm/vkms/vkms_output.c:70:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_VIRTUAL);
           ^
   cc1: some warnings being treated as errors

vim +/drm_simple_encoder_init +70 drivers/gpu/drm/vkms/vkms_output.c

    34	
    35	int vkms_output_init(struct vkms_device *vkmsdev, int index)
    36	{
    37		struct vkms_output *output = &vkmsdev->output;
    38		struct drm_device *dev = &vkmsdev->drm;
    39		struct drm_connector *connector = &output->connector;
    40		struct drm_encoder *encoder = &output->encoder;
    41		struct drm_crtc *crtc = &output->crtc;
    42		struct drm_plane *primary, *cursor = NULL;
    43		int ret;
    44	
    45		primary = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_PRIMARY, index);
    46		if (IS_ERR(primary))
    47			return PTR_ERR(primary);
    48	
    49		if (enable_cursor) {
    50			cursor = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_CURSOR, index);
    51			if (IS_ERR(cursor)) {
    52				ret = PTR_ERR(cursor);
    53				goto err_cursor;
    54			}
    55		}
    56	
    57		ret = vkms_crtc_init(dev, crtc, primary, cursor);
    58		if (ret)
    59			goto err_crtc;
    60	
    61		ret = drm_connector_init(dev, connector, &vkms_connector_funcs,
    62					 DRM_MODE_CONNECTOR_VIRTUAL);
    63		if (ret) {
    64			DRM_ERROR("Failed to init connector\n");
    65			goto err_connector;
    66		}
    67	
    68		drm_connector_helper_add(connector, &vkms_conn_helper_funcs);
    69	
  > 70		ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_VIRTUAL);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 29264 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 02/22] drm/atmel-hlcdc: Use simple encoder
  2020-03-05 15:59 ` [PATCH 02/22] drm/atmel-hlcdc: " Thomas Zimmermann
@ 2020-03-06  0:32   ` kbuild test robot
  2020-03-06 21:26   ` Sam Ravnborg
  1 sibling, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06  0:32 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, Thomas Zimmermann,
	puck.chen, s.hauer, alison.wang, jsarha, matthias.bgg, wens,
	kernel, jernej.skrabec, kbuild-all, rodrigosiqueiramelo,
	tomi.valkeinen, bbrezillon, jingoohan1, dri-devel, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 3501 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[also build test ERROR on v5.6-rc4]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: arm-at91_dt_defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=arm 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu//drm/atmel-hlcdc/atmel_hlcdc_output.c: In function 'atmel_hlcdc_attach_endpoint':
>> drivers/gpu//drm/atmel-hlcdc/atmel_hlcdc_output.c:98:8: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(dev, &output->encoder,
           ^~~~~~~~~~~~~~~~~~~~~~~
           drm_encoder_init
   cc1: some warnings being treated as errors

vim +98 drivers/gpu//drm/atmel-hlcdc/atmel_hlcdc_output.c

    65	
    66	static int atmel_hlcdc_attach_endpoint(struct drm_device *dev, int endpoint)
    67	{
    68		struct atmel_hlcdc_rgb_output *output;
    69		struct device_node *ep;
    70		struct drm_panel *panel;
    71		struct drm_bridge *bridge;
    72		int ret;
    73	
    74		ep = of_graph_get_endpoint_by_regs(dev->dev->of_node, 0, endpoint);
    75		if (!ep)
    76			return -ENODEV;
    77	
    78		ret = drm_of_find_panel_or_bridge(dev->dev->of_node, 0, endpoint,
    79						  &panel, &bridge);
    80		if (ret) {
    81			of_node_put(ep);
    82			return ret;
    83		}
    84	
    85		output = devm_kzalloc(dev->dev, sizeof(*output), GFP_KERNEL);
    86		if (!output) {
    87			of_node_put(ep);
    88			return -ENOMEM;
    89		}
    90	
    91		output->bus_fmt = atmel_hlcdc_of_bus_fmt(ep);
    92		of_node_put(ep);
    93		if (output->bus_fmt < 0) {
    94			dev_err(dev->dev, "endpoint %d: invalid bus width\n", endpoint);
    95			return -EINVAL;
    96		}
    97	
  > 98		ret = drm_simple_encoder_init(dev, &output->encoder,
    99					      DRM_MODE_ENCODER_NONE);
   100		if (ret)
   101			return ret;
   102	
   103		output->encoder.possible_crtcs = 0x1;
   104	
   105		if (panel) {
   106			bridge = drm_panel_bridge_add_typed(panel,
   107							    DRM_MODE_CONNECTOR_Unknown);
   108			if (IS_ERR(bridge))
   109				return PTR_ERR(bridge);
   110		}
   111	
   112		if (bridge) {
   113			ret = drm_bridge_attach(&output->encoder, bridge, NULL, 0);
   114			if (!ret)
   115				return 0;
   116	
   117			if (panel)
   118				drm_panel_bridge_remove(bridge);
   119		}
   120	
   121		drm_encoder_cleanup(&output->encoder);
   122	
   123		return ret;
   124	}
   125	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 26878 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 05/22] drm/gma500: Use simple encoder
  2020-03-05 15:59 ` [PATCH 05/22] drm/gma500: " Thomas Zimmermann
@ 2020-03-06  0:44   ` kbuild test robot
  2020-03-06 21:35   ` Sam Ravnborg
  1 sibling, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06  0:44 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, Thomas Zimmermann,
	puck.chen, s.hauer, alison.wang, jsarha, matthias.bgg, wens,
	kernel, jernej.skrabec, kbuild-all, rodrigosiqueiramelo,
	tomi.valkeinen, bbrezillon, jingoohan1, dri-devel, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 11065 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[also build test ERROR on v5.6-rc4]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: x86_64-allyesconfig (attached as .config)
compiler: gcc-7 (Debian 7.5.0-5) 7.5.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/gma500/psb_intel_lvds.c: In function 'psb_intel_lvds_init':
>> drivers/gpu/drm/gma500/psb_intel_lvds.c:676:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_LVDS);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/gma500/cdv_intel_crt.c: In function 'cdv_intel_crt_init':
>> drivers/gpu/drm/gma500/cdv_intel_crt.c:267:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_DAC);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/gma500/cdv_intel_hdmi.c: In function 'cdv_hdmi_init':
>> drivers/gpu/drm/gma500/cdv_intel_hdmi.c:315:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_TMDS);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/gma500/cdv_intel_dp.c: In function 'cdv_intel_dp_init':
>> drivers/gpu/drm/gma500/cdv_intel_dp.c:2010:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_TMDS);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/gma500/cdv_intel_lvds.c: In function 'cdv_intel_lvds_init':
>> drivers/gpu/drm/gma500/cdv_intel_lvds.c:611:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_LVDS);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/gma500/oaktrail_lvds.c: In function 'oaktrail_lvds_init':
>> drivers/gpu/drm/gma500/oaktrail_lvds.c:316:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_LVDS);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/gma500/oaktrail_hdmi.c: In function 'oaktrail_hdmi_init':
>> drivers/gpu/drm/gma500/oaktrail_hdmi.c:646:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_TMDS);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/gma500/mdfld_dsi_dpi.c: In function 'mdfld_dsi_dpi_init':
>> drivers/gpu/drm/gma500/mdfld_dsi_dpi.c:998:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_LVDS);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors

vim +676 drivers/gpu/drm/gma500/psb_intel_lvds.c

   625	
   626	/**
   627	 * psb_intel_lvds_init - setup LVDS connectors on this device
   628	 * @dev: drm device
   629	 *
   630	 * Create the connector, register the LVDS DDC bus, and try to figure out what
   631	 * modes we can display on the LVDS panel (if present).
   632	 */
   633	void psb_intel_lvds_init(struct drm_device *dev,
   634				 struct psb_intel_mode_device *mode_dev)
   635	{
   636		struct gma_encoder *gma_encoder;
   637		struct gma_connector *gma_connector;
   638		struct psb_intel_lvds_priv *lvds_priv;
   639		struct drm_connector *connector;
   640		struct drm_encoder *encoder;
   641		struct drm_display_mode *scan;	/* *modes, *bios_mode; */
   642		struct drm_crtc *crtc;
   643		struct drm_psb_private *dev_priv = dev->dev_private;
   644		u32 lvds;
   645		int pipe;
   646	
   647		gma_encoder = kzalloc(sizeof(struct gma_encoder), GFP_KERNEL);
   648		if (!gma_encoder) {
   649			dev_err(dev->dev, "gma_encoder allocation error\n");
   650			return;
   651		}
   652	
   653		gma_connector = kzalloc(sizeof(struct gma_connector), GFP_KERNEL);
   654		if (!gma_connector) {
   655			dev_err(dev->dev, "gma_connector allocation error\n");
   656			goto failed_encoder;
   657		}
   658	
   659		lvds_priv = kzalloc(sizeof(struct psb_intel_lvds_priv), GFP_KERNEL);
   660		if (!lvds_priv) {
   661			dev_err(dev->dev, "LVDS private allocation error\n");
   662			goto failed_connector;
   663		}
   664	
   665		gma_encoder->dev_priv = lvds_priv;
   666	
   667		connector = &gma_connector->base;
   668		gma_connector->save = psb_intel_lvds_save;
   669		gma_connector->restore = psb_intel_lvds_restore;
   670	
   671		encoder = &gma_encoder->base;
   672		drm_connector_init(dev, connector,
   673				   &psb_intel_lvds_connector_funcs,
   674				   DRM_MODE_CONNECTOR_LVDS);
   675	
 > 676		drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_LVDS);
   677	
   678		gma_connector_attach_encoder(gma_connector, gma_encoder);
   679		gma_encoder->type = INTEL_OUTPUT_LVDS;
   680	
   681		drm_encoder_helper_add(encoder, &psb_intel_lvds_helper_funcs);
   682		drm_connector_helper_add(connector,
   683					 &psb_intel_lvds_connector_helper_funcs);
   684		connector->display_info.subpixel_order = SubPixelHorizontalRGB;
   685		connector->interlace_allowed = false;
   686		connector->doublescan_allowed = false;
   687	
   688		/*Attach connector properties*/
   689		drm_object_attach_property(&connector->base,
   690					      dev->mode_config.scaling_mode_property,
   691					      DRM_MODE_SCALE_FULLSCREEN);
   692		drm_object_attach_property(&connector->base,
   693					      dev_priv->backlight_property,
   694					      BRIGHTNESS_MAX_LEVEL);
   695	
   696		/*
   697		 * Set up I2C bus
   698		 * FIXME: distroy i2c_bus when exit
   699		 */
   700		lvds_priv->i2c_bus = psb_intel_i2c_create(dev, GPIOB, "LVDSBLC_B");
   701		if (!lvds_priv->i2c_bus) {
   702			dev_printk(KERN_ERR,
   703				&dev->pdev->dev, "I2C bus registration failed.\n");
   704			goto failed_blc_i2c;
   705		}
   706		lvds_priv->i2c_bus->slave_addr = 0x2C;
   707		dev_priv->lvds_i2c_bus =  lvds_priv->i2c_bus;
   708	
   709		/*
   710		 * LVDS discovery:
   711		 * 1) check for EDID on DDC
   712		 * 2) check for VBT data
   713		 * 3) check to see if LVDS is already on
   714		 *    if none of the above, no panel
   715		 * 4) make sure lid is open
   716		 *    if closed, act like it's not there for now
   717		 */
   718	
   719		/* Set up the DDC bus. */
   720		lvds_priv->ddc_bus = psb_intel_i2c_create(dev, GPIOC, "LVDSDDC_C");
   721		if (!lvds_priv->ddc_bus) {
   722			dev_printk(KERN_ERR, &dev->pdev->dev,
   723				   "DDC bus registration " "failed.\n");
   724			goto failed_ddc;
   725		}
   726	
   727		/*
   728		 * Attempt to get the fixed panel mode from DDC.  Assume that the
   729		 * preferred mode is the right one.
   730		 */
   731		mutex_lock(&dev->mode_config.mutex);
   732		psb_intel_ddc_get_modes(connector, &lvds_priv->ddc_bus->adapter);
   733		list_for_each_entry(scan, &connector->probed_modes, head) {
   734			if (scan->type & DRM_MODE_TYPE_PREFERRED) {
   735				mode_dev->panel_fixed_mode =
   736				    drm_mode_duplicate(dev, scan);
   737				DRM_DEBUG_KMS("Using mode from DDC\n");
   738				goto out;	/* FIXME: check for quirks */
   739			}
   740		}
   741	
   742		/* Failed to get EDID, what about VBT? do we need this? */
   743		if (dev_priv->lfp_lvds_vbt_mode) {
   744			mode_dev->panel_fixed_mode =
   745				drm_mode_duplicate(dev, dev_priv->lfp_lvds_vbt_mode);
   746	
   747			if (mode_dev->panel_fixed_mode) {
   748				mode_dev->panel_fixed_mode->type |=
   749					DRM_MODE_TYPE_PREFERRED;
   750				DRM_DEBUG_KMS("Using mode from VBT\n");
   751				goto out;
   752			}
   753		}
   754	
   755		/*
   756		 * If we didn't get EDID, try checking if the panel is already turned
   757		 * on.	If so, assume that whatever is currently programmed is the
   758		 * correct mode.
   759		 */
   760		lvds = REG_READ(LVDS);
   761		pipe = (lvds & LVDS_PIPEB_SELECT) ? 1 : 0;
   762		crtc = psb_intel_get_crtc_from_pipe(dev, pipe);
   763	
   764		if (crtc && (lvds & LVDS_PORT_EN)) {
   765			mode_dev->panel_fixed_mode =
   766			    psb_intel_crtc_mode_get(dev, crtc);
   767			if (mode_dev->panel_fixed_mode) {
   768				mode_dev->panel_fixed_mode->type |=
   769				    DRM_MODE_TYPE_PREFERRED;
   770				DRM_DEBUG_KMS("Using pre-programmed mode\n");
   771				goto out;	/* FIXME: check for quirks */
   772			}
   773		}
   774	
   775		/* If we still don't have a mode after all that, give up. */
   776		if (!mode_dev->panel_fixed_mode) {
   777			dev_err(dev->dev, "Found no modes on the lvds, ignoring the LVDS\n");
   778			goto failed_find;
   779		}
   780	
   781		/*
   782		 * Blacklist machines with BIOSes that list an LVDS panel without
   783		 * actually having one.
   784		 */
   785	out:
   786		mutex_unlock(&dev->mode_config.mutex);
   787		drm_connector_register(connector);
   788		return;
   789	
   790	failed_find:
   791		mutex_unlock(&dev->mode_config.mutex);
   792		psb_intel_i2c_destroy(lvds_priv->ddc_bus);
   793	failed_ddc:
   794		psb_intel_i2c_destroy(lvds_priv->i2c_bus);
   795	failed_blc_i2c:
   796		drm_encoder_cleanup(encoder);
   797		drm_connector_cleanup(connector);
   798	failed_connector:
   799		kfree(gma_connector);
   800	failed_encoder:
   801		kfree(gma_encoder);
   802	}
   803	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 72615 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 21/22] drm/writeback: Use simple encoder
  2020-03-05 15:59 ` [PATCH 21/22] drm/writeback: " Thomas Zimmermann
@ 2020-03-06  0:54   ` kbuild test robot
  2020-03-06  1:17   ` kbuild test robot
  2020-03-06 14:54   ` kbuild test robot
  2 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06  0:54 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, Thomas Zimmermann,
	puck.chen, s.hauer, alison.wang, jsarha, matthias.bgg, wens,
	kernel, jernej.skrabec, kbuild-all, rodrigosiqueiramelo,
	tomi.valkeinen, bbrezillon, jingoohan1, dri-devel, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 5131 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2 v5.6-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: x86_64-defconfig (attached as .config)
compiler: gcc-7 (Debian 7.5.0-5) 7.5.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/drm_writeback.c: In function 'drm_writeback_connector_init':
>> drivers/gpu/drm/drm_writeback.c:191:8: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(dev, &wb_connector->encoder,
           ^~~~~~~~~~~~~~~~~~~~~~~
           drm_encoder_init
   cc1: some warnings being treated as errors

vim +191 drivers/gpu/drm/drm_writeback.c

   149	
   150	/**
   151	 * drm_writeback_connector_init - Initialize a writeback connector and its properties
   152	 * @dev: DRM device
   153	 * @wb_connector: Writeback connector to initialize
   154	 * @con_funcs: Connector funcs vtable
   155	 * @enc_helper_funcs: Encoder helper funcs vtable to be used by the internal encoder
   156	 * @formats: Array of supported pixel formats for the writeback engine
   157	 * @n_formats: Length of the formats array
   158	 *
   159	 * This function creates the writeback-connector-specific properties if they
   160	 * have not been already created, initializes the connector as
   161	 * type DRM_MODE_CONNECTOR_WRITEBACK, and correctly initializes the property
   162	 * values. It will also create an internal encoder associated with the
   163	 * drm_writeback_connector and set it to use the @enc_helper_funcs vtable for
   164	 * the encoder helper.
   165	 *
   166	 * Drivers should always use this function instead of drm_connector_init() to
   167	 * set up writeback connectors.
   168	 *
   169	 * Returns: 0 on success, or a negative error code
   170	 */
   171	int drm_writeback_connector_init(struct drm_device *dev,
   172					 struct drm_writeback_connector *wb_connector,
   173					 const struct drm_connector_funcs *con_funcs,
   174					 const struct drm_encoder_helper_funcs *enc_helper_funcs,
   175					 const u32 *formats, int n_formats)
   176	{
   177		struct drm_property_blob *blob;
   178		struct drm_connector *connector = &wb_connector->base;
   179		struct drm_mode_config *config = &dev->mode_config;
   180		int ret = create_writeback_properties(dev);
   181	
   182		if (ret != 0)
   183			return ret;
   184	
   185		blob = drm_property_create_blob(dev, n_formats * sizeof(*formats),
   186						formats);
   187		if (IS_ERR(blob))
   188			return PTR_ERR(blob);
   189	
   190		drm_encoder_helper_add(&wb_connector->encoder, enc_helper_funcs);
 > 191		ret = drm_simple_encoder_init(dev, &wb_connector->encoder,
   192					      DRM_MODE_ENCODER_VIRTUAL);
   193		if (ret)
   194			goto fail;
   195	
   196		connector->interlace_allowed = 0;
   197	
   198		ret = drm_connector_init(dev, connector, con_funcs,
   199					 DRM_MODE_CONNECTOR_WRITEBACK);
   200		if (ret)
   201			goto connector_fail;
   202	
   203		ret = drm_connector_attach_encoder(connector,
   204							&wb_connector->encoder);
   205		if (ret)
   206			goto attach_fail;
   207	
   208		INIT_LIST_HEAD(&wb_connector->job_queue);
   209		spin_lock_init(&wb_connector->job_lock);
   210	
   211		wb_connector->fence_context = dma_fence_context_alloc(1);
   212		spin_lock_init(&wb_connector->fence_lock);
   213		snprintf(wb_connector->timeline_name,
   214			 sizeof(wb_connector->timeline_name),
   215			 "CONNECTOR:%d-%s", connector->base.id, connector->name);
   216	
   217		drm_object_attach_property(&connector->base,
   218					   config->writeback_out_fence_ptr_property, 0);
   219	
   220		drm_object_attach_property(&connector->base,
   221					   config->writeback_fb_id_property, 0);
   222	
   223		drm_object_attach_property(&connector->base,
   224					   config->writeback_pixel_formats_property,
   225					   blob->base.id);
   226		wb_connector->pixel_formats_blob_ptr = blob;
   227	
   228		return 0;
   229	
   230	attach_fail:
   231		drm_connector_cleanup(connector);
   232	connector_fail:
   233		drm_encoder_cleanup(&wb_connector->encoder);
   234	fail:
   235		drm_property_blob_put(blob);
   236		return ret;
   237	}
   238	EXPORT_SYMBOL(drm_writeback_connector_init);
   239	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 29068 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 03/22] drm/exynos: Use simple encoder
  2020-03-05 15:59 ` [PATCH 03/22] drm/exynos: " Thomas Zimmermann
@ 2020-03-06  0:55   ` kbuild test robot
  2020-03-06  5:14   ` kbuild test robot
  2020-03-06 21:28   ` Sam Ravnborg
  2 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06  0:55 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, Thomas Zimmermann,
	puck.chen, s.hauer, alison.wang, jsarha, matthias.bgg, wens,
	kernel, jernej.skrabec, kbuild-all, rodrigosiqueiramelo,
	tomi.valkeinen, bbrezillon, jingoohan1, dri-devel, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 2890 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[also build test ERROR on v5.6-rc4]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=m68k 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/exynos/exynos_drm_dpi.c: In function 'exynos_dpi_bind':
>> drivers/gpu/drm/exynos/exynos_drm_dpi.c:201:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_TMDS);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/exynos/exynos_dp.c: In function 'exynos_dp_bind':
>> drivers/gpu/drm/exynos/exynos_dp.c:174:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   cc1: some warnings being treated as errors

vim +201 drivers/gpu/drm/exynos/exynos_drm_dpi.c

   196	
   197	int exynos_dpi_bind(struct drm_device *dev, struct drm_encoder *encoder)
   198	{
   199		int ret;
   200	
 > 201		drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_TMDS);
   202	
   203		drm_encoder_helper_add(encoder, &exynos_dpi_encoder_helper_funcs);
   204	
   205		ret = exynos_drm_set_possible_crtcs(encoder, EXYNOS_DISPLAY_TYPE_LCD);
   206		if (ret < 0)
   207			return ret;
   208	
   209		ret = exynos_dpi_create_connector(encoder);
   210		if (ret) {
   211			DRM_DEV_ERROR(encoder_to_dpi(encoder)->dev,
   212				      "failed to create connector ret = %d\n", ret);
   213			drm_encoder_cleanup(encoder);
   214			return ret;
   215		}
   216	
   217		return 0;
   218	}
   219	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 53261 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 21/22] drm/writeback: Use simple encoder
  2020-03-05 15:59 ` [PATCH 21/22] drm/writeback: " Thomas Zimmermann
  2020-03-06  0:54   ` kbuild test robot
@ 2020-03-06  1:17   ` kbuild test robot
  2020-03-06 14:54   ` kbuild test robot
  2 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06  1:17 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, Thomas Zimmermann,
	puck.chen, s.hauer, alison.wang, jsarha, matthias.bgg, wens,
	kernel, jernej.skrabec, kbuild-all, rodrigosiqueiramelo,
	tomi.valkeinen, bbrezillon, jingoohan1, dri-devel, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 5248 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2 v5.6-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: mips-randconfig-a001-20200306 (attached as .config)
compiler: mipsel-linux-gcc (GCC) 5.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=5.5.0 make.cross ARCH=mips 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/drm_writeback.c: In function 'drm_writeback_connector_init':
>> drivers/gpu/drm/drm_writeback.c:191:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(dev, &wb_connector->encoder,
           ^
   cc1: some warnings being treated as errors

vim +/drm_simple_encoder_init +191 drivers/gpu/drm/drm_writeback.c

   149	
   150	/**
   151	 * drm_writeback_connector_init - Initialize a writeback connector and its properties
   152	 * @dev: DRM device
   153	 * @wb_connector: Writeback connector to initialize
   154	 * @con_funcs: Connector funcs vtable
   155	 * @enc_helper_funcs: Encoder helper funcs vtable to be used by the internal encoder
   156	 * @formats: Array of supported pixel formats for the writeback engine
   157	 * @n_formats: Length of the formats array
   158	 *
   159	 * This function creates the writeback-connector-specific properties if they
   160	 * have not been already created, initializes the connector as
   161	 * type DRM_MODE_CONNECTOR_WRITEBACK, and correctly initializes the property
   162	 * values. It will also create an internal encoder associated with the
   163	 * drm_writeback_connector and set it to use the @enc_helper_funcs vtable for
   164	 * the encoder helper.
   165	 *
   166	 * Drivers should always use this function instead of drm_connector_init() to
   167	 * set up writeback connectors.
   168	 *
   169	 * Returns: 0 on success, or a negative error code
   170	 */
   171	int drm_writeback_connector_init(struct drm_device *dev,
   172					 struct drm_writeback_connector *wb_connector,
   173					 const struct drm_connector_funcs *con_funcs,
   174					 const struct drm_encoder_helper_funcs *enc_helper_funcs,
   175					 const u32 *formats, int n_formats)
   176	{
   177		struct drm_property_blob *blob;
   178		struct drm_connector *connector = &wb_connector->base;
   179		struct drm_mode_config *config = &dev->mode_config;
   180		int ret = create_writeback_properties(dev);
   181	
   182		if (ret != 0)
   183			return ret;
   184	
   185		blob = drm_property_create_blob(dev, n_formats * sizeof(*formats),
   186						formats);
   187		if (IS_ERR(blob))
   188			return PTR_ERR(blob);
   189	
   190		drm_encoder_helper_add(&wb_connector->encoder, enc_helper_funcs);
 > 191		ret = drm_simple_encoder_init(dev, &wb_connector->encoder,
   192					      DRM_MODE_ENCODER_VIRTUAL);
   193		if (ret)
   194			goto fail;
   195	
   196		connector->interlace_allowed = 0;
   197	
   198		ret = drm_connector_init(dev, connector, con_funcs,
   199					 DRM_MODE_CONNECTOR_WRITEBACK);
   200		if (ret)
   201			goto connector_fail;
   202	
   203		ret = drm_connector_attach_encoder(connector,
   204							&wb_connector->encoder);
   205		if (ret)
   206			goto attach_fail;
   207	
   208		INIT_LIST_HEAD(&wb_connector->job_queue);
   209		spin_lock_init(&wb_connector->job_lock);
   210	
   211		wb_connector->fence_context = dma_fence_context_alloc(1);
   212		spin_lock_init(&wb_connector->fence_lock);
   213		snprintf(wb_connector->timeline_name,
   214			 sizeof(wb_connector->timeline_name),
   215			 "CONNECTOR:%d-%s", connector->base.id, connector->name);
   216	
   217		drm_object_attach_property(&connector->base,
   218					   config->writeback_out_fence_ptr_property, 0);
   219	
   220		drm_object_attach_property(&connector->base,
   221					   config->writeback_fb_id_property, 0);
   222	
   223		drm_object_attach_property(&connector->base,
   224					   config->writeback_pixel_formats_property,
   225					   blob->base.id);
   226		wb_connector->pixel_formats_blob_ptr = blob;
   227	
   228		return 0;
   229	
   230	attach_fail:
   231		drm_connector_cleanup(connector);
   232	connector_fail:
   233		drm_encoder_cleanup(&wb_connector->encoder);
   234	fail:
   235		drm_property_blob_put(blob);
   236		return ret;
   237	}
   238	EXPORT_SYMBOL(drm_writeback_connector_init);
   239	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 29264 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 03/22] drm/exynos: Use simple encoder
  2020-03-05 15:59 ` [PATCH 03/22] drm/exynos: " Thomas Zimmermann
  2020-03-06  0:55   ` kbuild test robot
@ 2020-03-06  5:14   ` kbuild test robot
  2020-03-06 21:28   ` Sam Ravnborg
  2 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06  5:14 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	clang-built-linux, ludovic.desroches, kgene, linux-imx,
	xinliang.liu, linux-rockchip, virtualization, linux-tegra,
	Thomas Zimmermann, puck.chen, s.hauer, alison.wang, jsarha,
	matthias.bgg, wens, kernel, jernej.skrabec, kbuild-all,
	rodrigosiqueiramelo, tomi.valkeinen, bbrezillon, jingoohan1,
	dri-devel, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 3121 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[also build test ERROR on v5.6-rc4]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: arm64-defconfig (attached as .config)
compiler: clang version 11.0.0 (git://gitmirror/llvm_project a0cd413426479abb207381bdbab862f3dfb3ce7d)
reproduce:
        # FIXME the reproduce steps for clang is not ready yet

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/exynos/exynos_drm_dsi.c:1705:2: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
           ^
   drivers/gpu/drm/exynos/exynos_drm_dsi.c:1705:2: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/exynos/exynos_hdmi.c:1851:2: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
           ^
   drivers/gpu/drm/exynos/exynos_hdmi.c:1851:2: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.

vim +/drm_simple_encoder_init +1705 drivers/gpu/drm/exynos/exynos_drm_dsi.c

  1695	
  1696	static int exynos_dsi_bind(struct device *dev, struct device *master,
  1697					void *data)
  1698	{
  1699		struct drm_encoder *encoder = dev_get_drvdata(dev);
  1700		struct exynos_dsi *dsi = encoder_to_dsi(encoder);
  1701		struct drm_device *drm_dev = data;
  1702		struct drm_bridge *in_bridge;
  1703		int ret;
  1704	
> 1705		drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
  1706	
  1707		drm_encoder_helper_add(encoder, &exynos_dsi_encoder_helper_funcs);
  1708	
  1709		ret = exynos_drm_set_possible_crtcs(encoder, EXYNOS_DISPLAY_TYPE_LCD);
  1710		if (ret < 0)
  1711			return ret;
  1712	
  1713		if (dsi->in_bridge_node) {
  1714			in_bridge = of_drm_find_bridge(dsi->in_bridge_node);
  1715			if (in_bridge)
  1716				drm_bridge_attach(encoder, in_bridge, NULL, 0);
  1717		}
  1718	
  1719		return mipi_dsi_host_register(&dsi->dsi_host);
  1720	}
  1721	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 47744 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 06/22] drm/hisilicon/kirin: Use simple encoder
  2020-03-05 15:59 ` [PATCH 06/22] drm/hisilicon/kirin: " Thomas Zimmermann
@ 2020-03-06  6:16   ` kbuild test robot
  0 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06  6:16 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	clang-built-linux, ludovic.desroches, kgene, linux-imx,
	xinliang.liu, linux-rockchip, virtualization, linux-tegra,
	Thomas Zimmermann, puck.chen, s.hauer, alison.wang, jsarha,
	matthias.bgg, wens, kernel, jernej.skrabec, kbuild-all,
	rodrigosiqueiramelo, tomi.valkeinen, bbrezillon, jingoohan1,
	dri-devel, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 2500 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[also build test ERROR on v5.6-rc4]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: arm64-defconfig (attached as .config)
compiler: clang version 11.0.0 (git://gitmirror/llvm_project a0cd413426479abb207381bdbab862f3dfb3ce7d)
reproduce:
        # FIXME the reproduce steps for clang is not ready yet

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpu//drm/hisilicon/kirin/dw_drm_dsi.c:713:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_DSI);
                 ^
   drivers/gpu//drm/hisilicon/kirin/dw_drm_dsi.c:713:8: note: did you mean 'drm_i2c_encoder_init'?
   include/drm/drm_encoder_slave.h:104:5: note: 'drm_i2c_encoder_init' declared here
   int drm_i2c_encoder_init(struct drm_device *dev,
       ^
   1 error generated.

vim +/drm_simple_encoder_init +713 drivers/gpu//drm/hisilicon/kirin/dw_drm_dsi.c

   699	
   700	static int dw_drm_encoder_init(struct device *dev,
   701				       struct drm_device *drm_dev,
   702				       struct drm_encoder *encoder)
   703	{
   704		int ret;
   705		u32 crtc_mask = drm_of_find_possible_crtcs(drm_dev, dev->of_node);
   706	
   707		if (!crtc_mask) {
   708			DRM_ERROR("failed to find crtc mask\n");
   709			return -EINVAL;
   710		}
   711	
   712		encoder->possible_crtcs = crtc_mask;
 > 713		ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_DSI);
   714		if (ret) {
   715			DRM_ERROR("failed to init dsi encoder\n");
   716			return ret;
   717		}
   718	
   719		drm_encoder_helper_add(encoder, &dw_encoder_helper_funcs);
   720	
   721		return 0;
   722	}
   723	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 47744 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 07/22] drm/i2c/tda998x: Use simple encoder
  2020-03-05 15:59 ` [PATCH 07/22] drm/i2c/tda998x: " Thomas Zimmermann
@ 2020-03-06  7:30   ` kbuild test robot
  2020-03-07 15:40   ` kbuild test robot
  1 sibling, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06  7:30 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	clang-built-linux, ludovic.desroches, kgene, linux-imx,
	xinliang.liu, linux-rockchip, virtualization, linux-tegra,
	Thomas Zimmermann, puck.chen, s.hauer, alison.wang, jsarha,
	matthias.bgg, wens, kernel, jernej.skrabec, kbuild-all,
	rodrigosiqueiramelo, tomi.valkeinen, bbrezillon, jingoohan1,
	dri-devel, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 2675 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[also build test ERROR on v5.6-rc4]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: arm64-defconfig (attached as .config)
compiler: clang version 11.0.0 (git://gitmirror/llvm_project a0cd413426479abb207381bdbab862f3dfb3ce7d)
reproduce:
        # FIXME the reproduce steps for clang is not ready yet

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/i2c/tda998x_drv.c:2018:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_simple_encoder_init(drm, &priv->encoder,
                 ^
   drivers/gpu/drm/i2c/tda998x_drv.c:2018:8: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.

vim +/drm_simple_encoder_init +2018 drivers/gpu/drm/i2c/tda998x_drv.c

  2000	
  2001	static int tda998x_encoder_init(struct device *dev, struct drm_device *drm)
  2002	{
  2003		struct tda998x_priv *priv = dev_get_drvdata(dev);
  2004		u32 crtcs = 0;
  2005		int ret;
  2006	
  2007		if (dev->of_node)
  2008			crtcs = drm_of_find_possible_crtcs(drm, dev->of_node);
  2009	
  2010		/* If no CRTCs were found, fall back to our old behaviour */
  2011		if (crtcs == 0) {
  2012			dev_warn(dev, "Falling back to first CRTC\n");
  2013			crtcs = 1 << 0;
  2014		}
  2015	
  2016		priv->encoder.possible_crtcs = crtcs;
  2017	
> 2018		ret = drm_simple_encoder_init(drm, &priv->encoder,
  2019					      DRM_MODE_ENCODER_TMDS);
  2020		if (ret)
  2021			goto err_encoder;
  2022	
  2023		ret = drm_bridge_attach(&priv->encoder, &priv->bridge, NULL, 0);
  2024		if (ret)
  2025			goto err_bridge;
  2026	
  2027		return 0;
  2028	
  2029	err_bridge:
  2030		drm_encoder_cleanup(&priv->encoder);
  2031	err_encoder:
  2032		return ret;
  2033	}
  2034	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 47744 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 11/22] drm/rcar-du: Use simple encoder
  2020-03-05 15:59 ` [PATCH 11/22] drm/rcar-du: " Thomas Zimmermann
@ 2020-03-06  8:43   ` kbuild test robot
  0 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06  8:43 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	clang-built-linux, ludovic.desroches, kgene, linux-imx,
	xinliang.liu, linux-rockchip, virtualization, linux-tegra,
	Thomas Zimmermann, puck.chen, s.hauer, alison.wang, jsarha,
	matthias.bgg, wens, kernel, jernej.skrabec, kbuild-all,
	rodrigosiqueiramelo, tomi.valkeinen, bbrezillon, jingoohan1,
	dri-devel, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 3665 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2 v5.6-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: arm64-defconfig (attached as .config)
compiler: clang version 11.0.0 (git://gitmirror/llvm_project a0cd413426479abb207381bdbab862f3dfb3ce7d)
reproduce:
        # FIXME the reproduce steps for clang is not ready yet

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpu//drm/rcar-du/rcar_du_encoder.c:107:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_simple_encoder_init(rcdu->ddev, encoder,
                 ^
   drivers/gpu//drm/rcar-du/rcar_du_encoder.c:107:8: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.

vim +/drm_simple_encoder_init +107 drivers/gpu//drm/rcar-du/rcar_du_encoder.c

    46	
    47	int rcar_du_encoder_init(struct rcar_du_device *rcdu,
    48				 enum rcar_du_output output,
    49				 struct device_node *enc_node)
    50	{
    51		struct rcar_du_encoder *renc;
    52		struct drm_encoder *encoder;
    53		struct drm_bridge *bridge;
    54		int ret;
    55	
    56		renc = devm_kzalloc(rcdu->dev, sizeof(*renc), GFP_KERNEL);
    57		if (renc == NULL)
    58			return -ENOMEM;
    59	
    60		rcdu->encoders[output] = renc;
    61		renc->output = output;
    62		encoder = rcar_encoder_to_drm_encoder(renc);
    63	
    64		dev_dbg(rcdu->dev, "initializing encoder %pOF for output %u\n",
    65			enc_node, output);
    66	
    67		/*
    68		 * Locate the DRM bridge from the DT node. For the DPAD outputs, if the
    69		 * DT node has a single port, assume that it describes a panel and
    70		 * create a panel bridge.
    71		 */
    72		if ((output == RCAR_DU_OUTPUT_DPAD0 ||
    73		     output == RCAR_DU_OUTPUT_DPAD1) &&
    74		    rcar_du_encoder_count_ports(enc_node) == 1) {
    75			struct drm_panel *panel = of_drm_find_panel(enc_node);
    76	
    77			if (IS_ERR(panel)) {
    78				ret = PTR_ERR(panel);
    79				goto done;
    80			}
    81	
    82			bridge = devm_drm_panel_bridge_add_typed(rcdu->dev, panel,
    83								 DRM_MODE_CONNECTOR_DPI);
    84			if (IS_ERR(bridge)) {
    85				ret = PTR_ERR(bridge);
    86				goto done;
    87			}
    88		} else {
    89			bridge = of_drm_find_bridge(enc_node);
    90			if (!bridge) {
    91				ret = -EPROBE_DEFER;
    92				goto done;
    93			}
    94		}
    95	
    96		/*
    97		 * On Gen3 skip the LVDS1 output if the LVDS1 encoder is used as a
    98		 * companion for LVDS0 in dual-link mode.
    99		 */
   100		if (rcdu->info->gen >= 3 && output == RCAR_DU_OUTPUT_LVDS1) {
   101			if (rcar_lvds_dual_link(bridge)) {
   102				ret = -ENOLINK;
   103				goto done;
   104			}
   105		}
   106	
 > 107		ret = drm_simple_encoder_init(rcdu->ddev, encoder,

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 47744 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 12/22] drm/rockchip: Use simple encoder
  2020-03-05 15:59 ` [PATCH 12/22] drm/rockchip: " Thomas Zimmermann
  2020-03-05 23:59   ` kbuild test robot
@ 2020-03-06 10:05   ` kbuild test robot
  1 sibling, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06 10:05 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	clang-built-linux, ludovic.desroches, kgene, linux-imx,
	xinliang.liu, linux-rockchip, virtualization, linux-tegra,
	Thomas Zimmermann, puck.chen, s.hauer, alison.wang, jsarha,
	matthias.bgg, wens, kernel, jernej.skrabec, kbuild-all,
	rodrigosiqueiramelo, tomi.valkeinen, bbrezillon, jingoohan1,
	dri-devel, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 4480 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2 v5.6-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: arm64-defconfig (attached as .config)
compiler: clang version 11.0.0 (git://gitmirror/llvm_project a0cd413426479abb207381bdbab862f3dfb3ce7d)
reproduce:
        # FIXME the reproduce steps for clang is not ready yet

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/rockchip/analogix_dp-rockchip.c:309:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_simple_encoder_init(drm_dev, encoder,
                 ^
   drivers/gpu/drm/rockchip/analogix_dp-rockchip.c:309:8: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/rockchip/cdn-dp-core.c:1030:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_simple_encoder_init(drm_dev, encoder,
                 ^
   drivers/gpu/drm/rockchip/cdn-dp-core.c:1030:8: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c:546:2: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
           ^
   drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c:546:2: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c:802:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_DSI);
                 ^
   drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c:802:8: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/rockchip/inno_hdmi.c:617:2: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
           ^
   drivers/gpu/drm/rockchip/inno_hdmi.c:617:2: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.

vim +/drm_simple_encoder_init +309 drivers/gpu/drm/rockchip/analogix_dp-rockchip.c

   297	
   298	static int rockchip_dp_drm_create_encoder(struct rockchip_dp_device *dp)
   299	{
   300		struct drm_encoder *encoder = &dp->encoder;
   301		struct drm_device *drm_dev = dp->drm_dev;
   302		struct device *dev = dp->dev;
   303		int ret;
   304	
   305		encoder->possible_crtcs = drm_of_find_possible_crtcs(drm_dev,
   306								     dev->of_node);
   307		DRM_DEBUG_KMS("possible_crtcs = 0x%x\n", encoder->possible_crtcs);
   308	
 > 309		ret = drm_simple_encoder_init(drm_dev, encoder,
   310					      DRM_MODE_ENCODER_TMDS);
   311		if (ret) {
   312			DRM_ERROR("failed to initialize encoder with drm\n");
   313			return ret;
   314		}
   315	
   316		drm_encoder_helper_add(encoder, &rockchip_dp_encoder_helper_funcs);
   317	
   318		return 0;
   319	}
   320	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 47744 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init()
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (21 preceding siblings ...)
  2020-03-05 15:59 ` [PATCH 22/22] drm/zte: " Thomas Zimmermann
@ 2020-03-06 10:56 ` Daniel Vetter
  2020-03-06 15:10   ` Thomas Zimmermann
  2020-03-06 14:22 ` Laurent Pinchart
  23 siblings, 1 reply; 66+ messages in thread
From: Daniel Vetter @ 2020-03-06 10:56 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, puck.chen, s.hauer,
	alison.wang, jsarha, matthias.bgg, wens, kernel, jernej.skrabec,
	kraxel, rodrigosiqueiramelo, tomi.valkeinen, bbrezillon,
	jingoohan1, dri-devel, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	laurent.pinchart

On Thu, Mar 05, 2020 at 04:59:28PM +0100, Thomas Zimmermann wrote:
> A call to drm_simple_encoder_init() initializes an encoder without
> further functionality. It only provides the destroy callback to
> cleanup the encoder's state. Only few drivers implement more
> sophisticated encoders than that. Most drivers implement such a
> simple encoder and can use drm_simple_encoder_init() instead.
> 
> The patchset converts drivers where the encoder's instance is
> embedded in a larger data structure. The driver releases the
> memory during cleanup. Each patch replaces drm_encoder_init() with
> drm_simple_encoder_init() and removes the (now unused) driver's
> encoder functions.
> 
> While the patchset is fairly large, the indiviual patches are self-
> contained and can be merged independently from each other. The
> simple-encoder functionality is currently in drm-misc-next, where
> these patches could go as well.
> 
> Future directions: There's another common case where the driver
> calls kzalloc() plus drm_encoder_init(). Such drivers are not
> handled by this patchset. The plan here is to use a simple encoder
> with either managed memory allocation (once it's merged), or embed
> the encoder in a larger data structure and drop kzalloc() entirely.
> 
> The patchset has been compile-tested on x86-64, aarch64 and arm.

So from a cursory look all these drivers get it wrong and devm_kzalloc
their encoders. But I guess simplifying stuff like you do here will at
least give us a nice list of things to look at once we get to the
drmm_simple_encoder_init version of all this. On the series:

Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> 
> Thomas Zimmermann (22):
>   drm/arc: Use simple encoder
>   drm/atmel-hlcdc: Use simple encoder
>   drm/exynos: Use simple encoder
>   drm/fsl-dcu: Use simple encoder
>   drm/gma500: Use simple encoder
>   drm/hisilicon/kirin: Use simple encoder
>   drm/i2c/tda998x: Use simple encoder
>   drm/imx: Use simple encoder
>   drm/ingenic: Use simple encoder
>   drm/mediatek: Use simple encoder
>   drm/rcar-du: Use simple encoder
>   drm/rockchip: Use simple encoder
>   drm/shmobile: Use simple encoder
>   drm/sun4i: Use simple encoder
>   drm/tegra: Use simple encoder
>   drm/tidss: Use simple encoder
>   drm/tilcdc: Use simple encoder
>   drm/vc4: Use simple encoder
>   drm/virtgpu: Use simple encoder
>   drm/vkms: Use simple encoder
>   drm/writeback: Use simple encoder
>   drm/zte: Use simple encoder
> 
>  drivers/gpu/drm/arc/arcpgu_hdmi.c              | 10 +++-------
>  drivers/gpu/drm/arc/arcpgu_sim.c               |  8 ++------
>  .../gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c   | 12 ++++--------
>  drivers/gpu/drm/drm_writeback.c                | 10 +++-------
>  drivers/gpu/drm/exynos/exynos_dp.c             |  8 ++------
>  drivers/gpu/drm/exynos/exynos_drm_dpi.c        |  8 ++------
>  drivers/gpu/drm/exynos/exynos_drm_dsi.c        |  8 ++------
>  drivers/gpu/drm/exynos/exynos_drm_vidi.c       |  8 ++------
>  drivers/gpu/drm/exynos/exynos_hdmi.c           |  8 ++------
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c      | 14 +++-----------
>  drivers/gpu/drm/gma500/cdv_intel_crt.c         | 14 +++-----------
>  drivers/gpu/drm/gma500/cdv_intel_dp.c          | 16 +++-------------
>  drivers/gpu/drm/gma500/cdv_intel_hdmi.c        |  4 ++--
>  drivers/gpu/drm/gma500/cdv_intel_lvds.c        | 17 +++--------------
>  drivers/gpu/drm/gma500/mdfld_dsi_dpi.c         |  7 +++----
>  drivers/gpu/drm/gma500/mdfld_output.h          |  1 -
>  drivers/gpu/drm/gma500/mdfld_tmd_vid.c         |  6 ------
>  drivers/gpu/drm/gma500/mdfld_tpo_vid.c         |  6 ------
>  drivers/gpu/drm/gma500/oaktrail_hdmi.c         | 14 ++------------
>  drivers/gpu/drm/gma500/oaktrail_lvds.c         |  5 +++--
>  drivers/gpu/drm/gma500/psb_intel_drv.h         |  1 -
>  drivers/gpu/drm/gma500/psb_intel_lvds.c        | 18 +++---------------
>  drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c     |  5 -----
>  drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c   |  8 ++------
>  drivers/gpu/drm/i2c/tda998x_drv.c              | 14 +++-----------
>  drivers/gpu/drm/imx/dw_hdmi-imx.c              |  8 ++------
>  drivers/gpu/drm/imx/imx-drm-core.c             |  6 ------
>  drivers/gpu/drm/imx/imx-drm.h                  |  1 -
>  drivers/gpu/drm/imx/imx-ldb.c                  |  8 ++------
>  drivers/gpu/drm/imx/imx-tve.c                  |  8 ++------
>  drivers/gpu/drm/imx/parallel-display.c         |  8 ++------
>  drivers/gpu/drm/ingenic/ingenic-drm.c          |  9 +++------
>  drivers/gpu/drm/mediatek/mtk_dpi.c             | 14 +++-----------
>  drivers/gpu/drm/mediatek/mtk_dsi.c             | 14 +++-----------
>  drivers/gpu/drm/rcar-du/rcar_du_encoder.c      | 14 +++-----------
>  .../gpu/drm/rockchip/analogix_dp-rockchip.c    |  9 +++------
>  drivers/gpu/drm/rockchip/cdn-dp-core.c         |  9 +++------
>  .../gpu/drm/rockchip/dw-mipi-dsi-rockchip.c    |  8 ++------
>  drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c    |  8 ++------
>  drivers/gpu/drm/rockchip/inno_hdmi.c           |  8 ++------
>  drivers/gpu/drm/rockchip/rk3066_hdmi.c         |  8 ++------
>  drivers/gpu/drm/rockchip/rockchip_lvds.c       | 10 +++-------
>  drivers/gpu/drm/rockchip/rockchip_rgb.c        |  8 ++------
>  drivers/gpu/drm/shmobile/shmob_drm_crtc.c      | 14 +++-----------
>  drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c         | 12 +++---------
>  drivers/gpu/drm/sun4i/sun4i_lvds.c             | 12 +++---------
>  drivers/gpu/drm/sun4i/sun4i_rgb.c              | 17 +++--------------
>  drivers/gpu/drm/sun4i/sun4i_tv.c               | 17 +++--------------
>  drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c         | 12 +++---------
>  drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c          |  8 ++------
>  drivers/gpu/drm/tegra/drm.h                    |  2 --
>  drivers/gpu/drm/tegra/dsi.c                    | 10 +++-------
>  drivers/gpu/drm/tegra/hdmi.c                   |  9 +++------
>  drivers/gpu/drm/tegra/output.c                 |  6 +-----
>  drivers/gpu/drm/tegra/rgb.c                    |  8 ++------
>  drivers/gpu/drm/tegra/sor.c                    |  8 ++------
>  drivers/gpu/drm/tidss/tidss_encoder.c          | 10 +++-------
>  drivers/gpu/drm/tilcdc/tilcdc_external.c       | 10 +++-------
>  drivers/gpu/drm/tilcdc/tilcdc_panel.c          |  8 ++------
>  drivers/gpu/drm/vc4/vc4_dpi.c                  |  8 ++------
>  drivers/gpu/drm/vc4/vc4_dsi.c                  | 15 +++------------
>  drivers/gpu/drm/vc4/vc4_hdmi.c                 | 17 ++++-------------
>  drivers/gpu/drm/vc4/vc4_vec.c                  |  8 ++------
>  drivers/gpu/drm/virtio/virtgpu_display.c       |  8 ++------
>  drivers/gpu/drm/vkms/vkms_output.c             |  8 ++------
>  drivers/gpu/drm/zte/zx_hdmi.c                  |  8 ++------
>  drivers/gpu/drm/zte/zx_tvenc.c                 |  8 ++------
>  drivers/gpu/drm/zte/zx_vga.c                   |  8 ++------
>  68 files changed, 151 insertions(+), 488 deletions(-)
> 
> --
> 2.25.1
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 14/22] drm/sun4i: Use simple encoder
  2020-03-05 15:59 ` [PATCH 14/22] drm/sun4i: " Thomas Zimmermann
@ 2020-03-06 11:12   ` kbuild test robot
  0 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06 11:12 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	clang-built-linux, ludovic.desroches, kgene, linux-imx,
	xinliang.liu, linux-rockchip, virtualization, linux-tegra,
	Thomas Zimmermann, puck.chen, s.hauer, alison.wang, jsarha,
	matthias.bgg, wens, kernel, jernej.skrabec, kbuild-all,
	rodrigosiqueiramelo, tomi.valkeinen, bbrezillon, jingoohan1,
	dri-devel, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 4841 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2 v5.6-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: arm64-defconfig (attached as .config)
compiler: clang version 11.0.0 (git://gitmirror/llvm_project a0cd413426479abb207381bdbab862f3dfb3ce7d)
reproduce:
        # FIXME the reproduce steps for clang is not ready yet

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/sun4i/sun4i_lvds.c:121:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_simple_encoder_init(drm, &lvds->encoder,
                 ^
   drivers/gpu/drm/sun4i/sun4i_lvds.c:121:8: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/sun4i/sun4i_rgb.c:213:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_simple_encoder_init(drm, &rgb->encoder,
                 ^
   drivers/gpu/drm/sun4i/sun4i_rgb.c:213:8: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c:611:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_simple_encoder_init(drm, &hdmi->encoder,
                 ^
   drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c:611:8: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c:220:2: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
           ^
   drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c:220:2: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/sun4i/sun4i_tv.c:587:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_simple_encoder_init(drm, &tv->encoder,
                 ^
   drivers/gpu/drm/sun4i/sun4i_tv.c:587:8: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c:1062:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_simple_encoder_init(drm, &dsi->encoder,
                 ^
   drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c:1062:8: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.

vim +/drm_simple_encoder_init +121 drivers/gpu/drm/sun4i/sun4i_lvds.c

    99	
   100	int sun4i_lvds_init(struct drm_device *drm, struct sun4i_tcon *tcon)
   101	{
   102		struct drm_encoder *encoder;
   103		struct drm_bridge *bridge;
   104		struct sun4i_lvds *lvds;
   105		int ret;
   106	
   107		lvds = devm_kzalloc(drm->dev, sizeof(*lvds), GFP_KERNEL);
   108		if (!lvds)
   109			return -ENOMEM;
   110		encoder = &lvds->encoder;
   111	
   112		ret = drm_of_find_panel_or_bridge(tcon->dev->of_node, 1, 0,
   113						  &lvds->panel, &bridge);
   114		if (ret) {
   115			dev_info(drm->dev, "No panel or bridge found... LVDS output disabled\n");
   116			return 0;
   117		}
   118	
   119		drm_encoder_helper_add(&lvds->encoder,
   120				       &sun4i_lvds_enc_helper_funcs);
 > 121		ret = drm_simple_encoder_init(drm, &lvds->encoder,

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 47744 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 15/22] drm/tegra: Use simple encoder
  2020-03-05 15:59 ` [PATCH 15/22] drm/tegra: " Thomas Zimmermann
@ 2020-03-06 12:38   ` kbuild test robot
  0 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06 12:38 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	clang-built-linux, ludovic.desroches, kgene, linux-imx,
	xinliang.liu, linux-rockchip, virtualization, linux-tegra,
	Thomas Zimmermann, puck.chen, s.hauer, alison.wang, jsarha,
	matthias.bgg, wens, kernel, jernej.skrabec, kbuild-all,
	rodrigosiqueiramelo, tomi.valkeinen, bbrezillon, jingoohan1,
	dri-devel, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 4393 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2 v5.6-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: arm64-defconfig (attached as .config)
compiler: clang version 11.0.0 (git://gitmirror/llvm_project a0cd413426479abb207381bdbab862f3dfb3ce7d)
reproduce:
        # FIXME the reproduce steps for clang is not ready yet

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/tegra/rgb.c:281:2: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           drm_simple_encoder_init(drm, &output->encoder, DRM_MODE_ENCODER_LVDS);
           ^
   drivers/gpu/drm/tegra/rgb.c:281:2: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/tegra/hdmi.c:1445:2: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           drm_simple_encoder_init(drm, &hdmi->output.encoder,
           ^
   drivers/gpu/drm/tegra/hdmi.c:1445:2: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/tegra/dsi.c:1058:3: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
                   drm_simple_encoder_init(drm, &dsi->output.encoder,
                   ^
   drivers/gpu/drm/tegra/dsi.c:1058:3: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu/drm/tegra/sor.c:3102:2: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           drm_simple_encoder_init(drm, &sor->output.encoder, encoder);
           ^
   drivers/gpu/drm/tegra/sor.c:3102:2: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.

vim +/drm_simple_encoder_init +281 drivers/gpu/drm/tegra/rgb.c

   266	
   267	int tegra_dc_rgb_init(struct drm_device *drm, struct tegra_dc *dc)
   268	{
   269		struct tegra_output *output = dc->rgb;
   270		int err;
   271	
   272		if (!dc->rgb)
   273			return -ENODEV;
   274	
   275		drm_connector_init(drm, &output->connector, &tegra_rgb_connector_funcs,
   276				   DRM_MODE_CONNECTOR_LVDS);
   277		drm_connector_helper_add(&output->connector,
   278					 &tegra_rgb_connector_helper_funcs);
   279		output->connector.dpms = DRM_MODE_DPMS_OFF;
   280	
 > 281		drm_simple_encoder_init(drm, &output->encoder, DRM_MODE_ENCODER_LVDS);
   282		drm_encoder_helper_add(&output->encoder,
   283				       &tegra_rgb_encoder_helper_funcs);
   284	
   285		drm_connector_attach_encoder(&output->connector,
   286						  &output->encoder);
   287		drm_connector_register(&output->connector);
   288	
   289		err = tegra_output_init(drm, output);
   290		if (err < 0) {
   291			dev_err(output->dev, "failed to initialize output: %d\n", err);
   292			return err;
   293		}
   294	
   295		/*
   296		 * Other outputs can be attached to either display controller. The RGB
   297		 * outputs are an exception and work only with their parent display
   298		 * controller.
   299		 */
   300		output->encoder.possible_crtcs = drm_crtc_mask(&dc->base);
   301	
   302		return 0;
   303	}
   304	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 47744 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 18/22] drm/vc4: Use simple encoder
  2020-03-05 15:59 ` [PATCH 18/22] drm/vc4: " Thomas Zimmermann
  2020-03-05 17:03   ` Eric Anholt
@ 2020-03-06 13:54   ` kbuild test robot
  1 sibling, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06 13:54 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	clang-built-linux, ludovic.desroches, kgene, linux-imx,
	xinliang.liu, linux-rockchip, virtualization, linux-tegra,
	Thomas Zimmermann, puck.chen, s.hauer, alison.wang, jsarha,
	matthias.bgg, wens, kernel, jernej.skrabec, kbuild-all,
	rodrigosiqueiramelo, tomi.valkeinen, bbrezillon, jingoohan1,
	dri-devel, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 5643 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2 v5.6-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: arm64-defconfig (attached as .config)
compiler: clang version 11.0.0 (git://gitmirror/llvm_project a0cd413426479abb207381bdbab862f3dfb3ce7d)
reproduce:
        # FIXME the reproduce steps for clang is not ready yet

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpu//drm/vc4/vc4_dpi.c:309:2: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           drm_simple_encoder_init(drm, dpi->encoder, DRM_MODE_ENCODER_DPI);
           ^
   drivers/gpu//drm/vc4/vc4_dpi.c:309:2: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu//drm/vc4/vc4_dsi.c:1610:2: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           drm_simple_encoder_init(drm, dsi->encoder, DRM_MODE_ENCODER_DSI);
           ^
   drivers/gpu//drm/vc4/vc4_dsi.c:1610:2: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu//drm/vc4/vc4_hdmi.c:1389:2: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           drm_simple_encoder_init(drm, hdmi->encoder, DRM_MODE_ENCODER_TMDS);
           ^
   drivers/gpu//drm/vc4/vc4_hdmi.c:1389:2: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.
--
>> drivers/gpu//drm/vc4/vc4_vec.c:566:2: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           drm_simple_encoder_init(drm, vec->encoder, DRM_MODE_ENCODER_TVDAC);
           ^
   drivers/gpu//drm/vc4/vc4_vec.c:566:2: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.

vim +/drm_simple_encoder_init +309 drivers/gpu//drm/vc4/vc4_dpi.c

   254	
   255	static int vc4_dpi_bind(struct device *dev, struct device *master, void *data)
   256	{
   257		struct platform_device *pdev = to_platform_device(dev);
   258		struct drm_device *drm = dev_get_drvdata(master);
   259		struct vc4_dev *vc4 = to_vc4_dev(drm);
   260		struct vc4_dpi *dpi;
   261		struct vc4_dpi_encoder *vc4_dpi_encoder;
   262		int ret;
   263	
   264		dpi = devm_kzalloc(dev, sizeof(*dpi), GFP_KERNEL);
   265		if (!dpi)
   266			return -ENOMEM;
   267	
   268		vc4_dpi_encoder = devm_kzalloc(dev, sizeof(*vc4_dpi_encoder),
   269					       GFP_KERNEL);
   270		if (!vc4_dpi_encoder)
   271			return -ENOMEM;
   272		vc4_dpi_encoder->base.type = VC4_ENCODER_TYPE_DPI;
   273		vc4_dpi_encoder->dpi = dpi;
   274		dpi->encoder = &vc4_dpi_encoder->base.base;
   275	
   276		dpi->pdev = pdev;
   277		dpi->regs = vc4_ioremap_regs(pdev, 0);
   278		if (IS_ERR(dpi->regs))
   279			return PTR_ERR(dpi->regs);
   280		dpi->regset.base = dpi->regs;
   281		dpi->regset.regs = dpi_regs;
   282		dpi->regset.nregs = ARRAY_SIZE(dpi_regs);
   283	
   284		if (DPI_READ(DPI_ID) != DPI_ID_VALUE) {
   285			dev_err(dev, "Port returned 0x%08x for ID instead of 0x%08x\n",
   286				DPI_READ(DPI_ID), DPI_ID_VALUE);
   287			return -ENODEV;
   288		}
   289	
   290		dpi->core_clock = devm_clk_get(dev, "core");
   291		if (IS_ERR(dpi->core_clock)) {
   292			ret = PTR_ERR(dpi->core_clock);
   293			if (ret != -EPROBE_DEFER)
   294				DRM_ERROR("Failed to get core clock: %d\n", ret);
   295			return ret;
   296		}
   297		dpi->pixel_clock = devm_clk_get(dev, "pixel");
   298		if (IS_ERR(dpi->pixel_clock)) {
   299			ret = PTR_ERR(dpi->pixel_clock);
   300			if (ret != -EPROBE_DEFER)
   301				DRM_ERROR("Failed to get pixel clock: %d\n", ret);
   302			return ret;
   303		}
   304	
   305		ret = clk_prepare_enable(dpi->core_clock);
   306		if (ret)
   307			DRM_ERROR("Failed to turn on core clock: %d\n", ret);
   308	
 > 309		drm_simple_encoder_init(drm, dpi->encoder, DRM_MODE_ENCODER_DPI);
   310		drm_encoder_helper_add(dpi->encoder, &vc4_dpi_encoder_helper_funcs);
   311	
   312		ret = vc4_dpi_init_bridge(dpi);
   313		if (ret)
   314			goto err_destroy_encoder;
   315	
   316		dev_set_drvdata(dev, dpi);
   317	
   318		vc4->dpi = dpi;
   319	
   320		vc4_debugfs_add_regset32(drm, "dpi_regs", &dpi->regset);
   321	
   322		return 0;
   323	
   324	err_destroy_encoder:
   325		drm_encoder_cleanup(dpi->encoder);
   326		clk_disable_unprepare(dpi->core_clock);
   327		return ret;
   328	}
   329	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 47744 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init()
  2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
                   ` (22 preceding siblings ...)
  2020-03-06 10:56 ` [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Daniel Vetter
@ 2020-03-06 14:22 ` Laurent Pinchart
  2020-03-06 15:18   ` Thomas Zimmermann
  23 siblings, 1 reply; 66+ messages in thread
From: Laurent Pinchart @ 2020-03-06 14:22 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, puck.chen, s.hauer,
	alison.wang, jsarha, matthias.bgg, wens, kernel, jernej.skrabec,
	rodrigosiqueiramelo, tomi.valkeinen, bbrezillon, jingoohan1,
	dri-devel, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	kraxel

Hi Thomas,

Thank you for the patch.

On Thu, Mar 05, 2020 at 04:59:28PM +0100, Thomas Zimmermann wrote:
> A call to drm_simple_encoder_init() initializes an encoder without
> further functionality. It only provides the destroy callback to
> cleanup the encoder's state. Only few drivers implement more
> sophisticated encoders than that. Most drivers implement such a
> simple encoder and can use drm_simple_encoder_init() instead.
> 
> The patchset converts drivers where the encoder's instance is
> embedded in a larger data structure. The driver releases the
> memory during cleanup. Each patch replaces drm_encoder_init() with
> drm_simple_encoder_init() and removes the (now unused) driver's
> encoder functions.
> 
> While the patchset is fairly large, the indiviual patches are self-
> contained and can be merged independently from each other. The
> simple-encoder functionality is currently in drm-misc-next, where
> these patches could go as well.

I've reviewed the whole series, including verifying that the few
instances of struct drm_encoder_funcs that were not declared const were
not modified somewhere to add more function pointers.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

for all the patches.

However, I'd like to note that drm_simple_encoder_init() is a bit of a
misnommer here. Several of the encoders in those drivers to implement
additional functionality. They just expose them through
drm_encoder_helper_funcs, not drm_encoder_funcs.

> Future directions: There's another common case where the driver
> calls kzalloc() plus drm_encoder_init(). Such drivers are not
> handled by this patchset. The plan here is to use a simple encoder
> with either managed memory allocation (once it's merged), or embed
> the encoder in a larger data structure and drop kzalloc() entirely.

I think an even more interesting future enhancement would be to add
encoder support to the newly added drm_bridge_connector_init(), for
drivers that are fully based on bridges and don't implement any encoder
operation, neither through drm_encoder_funcs nor through
drm_encoder_helper_funcs.

> The patchset has been compile-tested on x86-64, aarch64 and arm.
> 
> Thomas Zimmermann (22):
>   drm/arc: Use simple encoder
>   drm/atmel-hlcdc: Use simple encoder
>   drm/exynos: Use simple encoder
>   drm/fsl-dcu: Use simple encoder
>   drm/gma500: Use simple encoder
>   drm/hisilicon/kirin: Use simple encoder
>   drm/i2c/tda998x: Use simple encoder
>   drm/imx: Use simple encoder
>   drm/ingenic: Use simple encoder
>   drm/mediatek: Use simple encoder
>   drm/rcar-du: Use simple encoder
>   drm/rockchip: Use simple encoder
>   drm/shmobile: Use simple encoder
>   drm/sun4i: Use simple encoder
>   drm/tegra: Use simple encoder
>   drm/tidss: Use simple encoder
>   drm/tilcdc: Use simple encoder
>   drm/vc4: Use simple encoder
>   drm/virtgpu: Use simple encoder
>   drm/vkms: Use simple encoder
>   drm/writeback: Use simple encoder
>   drm/zte: Use simple encoder
> 
>  drivers/gpu/drm/arc/arcpgu_hdmi.c              | 10 +++-------
>  drivers/gpu/drm/arc/arcpgu_sim.c               |  8 ++------
>  .../gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c   | 12 ++++--------
>  drivers/gpu/drm/drm_writeback.c                | 10 +++-------
>  drivers/gpu/drm/exynos/exynos_dp.c             |  8 ++------
>  drivers/gpu/drm/exynos/exynos_drm_dpi.c        |  8 ++------
>  drivers/gpu/drm/exynos/exynos_drm_dsi.c        |  8 ++------
>  drivers/gpu/drm/exynos/exynos_drm_vidi.c       |  8 ++------
>  drivers/gpu/drm/exynos/exynos_hdmi.c           |  8 ++------
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c      | 14 +++-----------
>  drivers/gpu/drm/gma500/cdv_intel_crt.c         | 14 +++-----------
>  drivers/gpu/drm/gma500/cdv_intel_dp.c          | 16 +++-------------
>  drivers/gpu/drm/gma500/cdv_intel_hdmi.c        |  4 ++--
>  drivers/gpu/drm/gma500/cdv_intel_lvds.c        | 17 +++--------------
>  drivers/gpu/drm/gma500/mdfld_dsi_dpi.c         |  7 +++----
>  drivers/gpu/drm/gma500/mdfld_output.h          |  1 -
>  drivers/gpu/drm/gma500/mdfld_tmd_vid.c         |  6 ------
>  drivers/gpu/drm/gma500/mdfld_tpo_vid.c         |  6 ------
>  drivers/gpu/drm/gma500/oaktrail_hdmi.c         | 14 ++------------
>  drivers/gpu/drm/gma500/oaktrail_lvds.c         |  5 +++--
>  drivers/gpu/drm/gma500/psb_intel_drv.h         |  1 -
>  drivers/gpu/drm/gma500/psb_intel_lvds.c        | 18 +++---------------
>  drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c     |  5 -----
>  drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c   |  8 ++------
>  drivers/gpu/drm/i2c/tda998x_drv.c              | 14 +++-----------
>  drivers/gpu/drm/imx/dw_hdmi-imx.c              |  8 ++------
>  drivers/gpu/drm/imx/imx-drm-core.c             |  6 ------
>  drivers/gpu/drm/imx/imx-drm.h                  |  1 -
>  drivers/gpu/drm/imx/imx-ldb.c                  |  8 ++------
>  drivers/gpu/drm/imx/imx-tve.c                  |  8 ++------
>  drivers/gpu/drm/imx/parallel-display.c         |  8 ++------
>  drivers/gpu/drm/ingenic/ingenic-drm.c          |  9 +++------
>  drivers/gpu/drm/mediatek/mtk_dpi.c             | 14 +++-----------
>  drivers/gpu/drm/mediatek/mtk_dsi.c             | 14 +++-----------
>  drivers/gpu/drm/rcar-du/rcar_du_encoder.c      | 14 +++-----------
>  .../gpu/drm/rockchip/analogix_dp-rockchip.c    |  9 +++------
>  drivers/gpu/drm/rockchip/cdn-dp-core.c         |  9 +++------
>  .../gpu/drm/rockchip/dw-mipi-dsi-rockchip.c    |  8 ++------
>  drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c    |  8 ++------
>  drivers/gpu/drm/rockchip/inno_hdmi.c           |  8 ++------
>  drivers/gpu/drm/rockchip/rk3066_hdmi.c         |  8 ++------
>  drivers/gpu/drm/rockchip/rockchip_lvds.c       | 10 +++-------
>  drivers/gpu/drm/rockchip/rockchip_rgb.c        |  8 ++------
>  drivers/gpu/drm/shmobile/shmob_drm_crtc.c      | 14 +++-----------
>  drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c         | 12 +++---------
>  drivers/gpu/drm/sun4i/sun4i_lvds.c             | 12 +++---------
>  drivers/gpu/drm/sun4i/sun4i_rgb.c              | 17 +++--------------
>  drivers/gpu/drm/sun4i/sun4i_tv.c               | 17 +++--------------
>  drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c         | 12 +++---------
>  drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c          |  8 ++------
>  drivers/gpu/drm/tegra/drm.h                    |  2 --
>  drivers/gpu/drm/tegra/dsi.c                    | 10 +++-------
>  drivers/gpu/drm/tegra/hdmi.c                   |  9 +++------
>  drivers/gpu/drm/tegra/output.c                 |  6 +-----
>  drivers/gpu/drm/tegra/rgb.c                    |  8 ++------
>  drivers/gpu/drm/tegra/sor.c                    |  8 ++------
>  drivers/gpu/drm/tidss/tidss_encoder.c          | 10 +++-------
>  drivers/gpu/drm/tilcdc/tilcdc_external.c       | 10 +++-------
>  drivers/gpu/drm/tilcdc/tilcdc_panel.c          |  8 ++------
>  drivers/gpu/drm/vc4/vc4_dpi.c                  |  8 ++------
>  drivers/gpu/drm/vc4/vc4_dsi.c                  | 15 +++------------
>  drivers/gpu/drm/vc4/vc4_hdmi.c                 | 17 ++++-------------
>  drivers/gpu/drm/vc4/vc4_vec.c                  |  8 ++------
>  drivers/gpu/drm/virtio/virtgpu_display.c       |  8 ++------
>  drivers/gpu/drm/vkms/vkms_output.c             |  8 ++------
>  drivers/gpu/drm/zte/zx_hdmi.c                  |  8 ++------
>  drivers/gpu/drm/zte/zx_tvenc.c                 |  8 ++------
>  drivers/gpu/drm/zte/zx_vga.c                   |  8 ++------
>  68 files changed, 151 insertions(+), 488 deletions(-)

-- 
Regards,

Laurent Pinchart
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 21/22] drm/writeback: Use simple encoder
  2020-03-05 15:59 ` [PATCH 21/22] drm/writeback: " Thomas Zimmermann
  2020-03-06  0:54   ` kbuild test robot
  2020-03-06  1:17   ` kbuild test robot
@ 2020-03-06 14:54   ` kbuild test robot
  2 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-06 14:54 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	clang-built-linux, ludovic.desroches, kgene, linux-imx,
	xinliang.liu, linux-rockchip, virtualization, linux-tegra,
	Thomas Zimmermann, puck.chen, s.hauer, alison.wang, jsarha,
	matthias.bgg, wens, kernel, jernej.skrabec, kbuild-all,
	rodrigosiqueiramelo, tomi.valkeinen, bbrezillon, jingoohan1,
	dri-devel, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 5240 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2 v5.6-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: arm64-defconfig (attached as .config)
compiler: clang version 11.0.0 (git://gitmirror/llvm_project a0cd413426479abb207381bdbab862f3dfb3ce7d)
reproduce:
        # FIXME the reproduce steps for clang is not ready yet

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/drm_writeback.c:191:8: error: implicit declaration of function 'drm_simple_encoder_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_simple_encoder_init(dev, &wb_connector->encoder,
                 ^
   drivers/gpu/drm/drm_writeback.c:191:8: note: did you mean 'drm_encoder_init'?
   include/drm/drm_encoder.h:189:5: note: 'drm_encoder_init' declared here
   int drm_encoder_init(struct drm_device *dev,
       ^
   1 error generated.

vim +/drm_simple_encoder_init +191 drivers/gpu/drm/drm_writeback.c

   149	
   150	/**
   151	 * drm_writeback_connector_init - Initialize a writeback connector and its properties
   152	 * @dev: DRM device
   153	 * @wb_connector: Writeback connector to initialize
   154	 * @con_funcs: Connector funcs vtable
   155	 * @enc_helper_funcs: Encoder helper funcs vtable to be used by the internal encoder
   156	 * @formats: Array of supported pixel formats for the writeback engine
   157	 * @n_formats: Length of the formats array
   158	 *
   159	 * This function creates the writeback-connector-specific properties if they
   160	 * have not been already created, initializes the connector as
   161	 * type DRM_MODE_CONNECTOR_WRITEBACK, and correctly initializes the property
   162	 * values. It will also create an internal encoder associated with the
   163	 * drm_writeback_connector and set it to use the @enc_helper_funcs vtable for
   164	 * the encoder helper.
   165	 *
   166	 * Drivers should always use this function instead of drm_connector_init() to
   167	 * set up writeback connectors.
   168	 *
   169	 * Returns: 0 on success, or a negative error code
   170	 */
   171	int drm_writeback_connector_init(struct drm_device *dev,
   172					 struct drm_writeback_connector *wb_connector,
   173					 const struct drm_connector_funcs *con_funcs,
   174					 const struct drm_encoder_helper_funcs *enc_helper_funcs,
   175					 const u32 *formats, int n_formats)
   176	{
   177		struct drm_property_blob *blob;
   178		struct drm_connector *connector = &wb_connector->base;
   179		struct drm_mode_config *config = &dev->mode_config;
   180		int ret = create_writeback_properties(dev);
   181	
   182		if (ret != 0)
   183			return ret;
   184	
   185		blob = drm_property_create_blob(dev, n_formats * sizeof(*formats),
   186						formats);
   187		if (IS_ERR(blob))
   188			return PTR_ERR(blob);
   189	
   190		drm_encoder_helper_add(&wb_connector->encoder, enc_helper_funcs);
 > 191		ret = drm_simple_encoder_init(dev, &wb_connector->encoder,
   192					      DRM_MODE_ENCODER_VIRTUAL);
   193		if (ret)
   194			goto fail;
   195	
   196		connector->interlace_allowed = 0;
   197	
   198		ret = drm_connector_init(dev, connector, con_funcs,
   199					 DRM_MODE_CONNECTOR_WRITEBACK);
   200		if (ret)
   201			goto connector_fail;
   202	
   203		ret = drm_connector_attach_encoder(connector,
   204							&wb_connector->encoder);
   205		if (ret)
   206			goto attach_fail;
   207	
   208		INIT_LIST_HEAD(&wb_connector->job_queue);
   209		spin_lock_init(&wb_connector->job_lock);
   210	
   211		wb_connector->fence_context = dma_fence_context_alloc(1);
   212		spin_lock_init(&wb_connector->fence_lock);
   213		snprintf(wb_connector->timeline_name,
   214			 sizeof(wb_connector->timeline_name),
   215			 "CONNECTOR:%d-%s", connector->base.id, connector->name);
   216	
   217		drm_object_attach_property(&connector->base,
   218					   config->writeback_out_fence_ptr_property, 0);
   219	
   220		drm_object_attach_property(&connector->base,
   221					   config->writeback_fb_id_property, 0);
   222	
   223		drm_object_attach_property(&connector->base,
   224					   config->writeback_pixel_formats_property,
   225					   blob->base.id);
   226		wb_connector->pixel_formats_blob_ptr = blob;
   227	
   228		return 0;
   229	
   230	attach_fail:
   231		drm_connector_cleanup(connector);
   232	connector_fail:
   233		drm_encoder_cleanup(&wb_connector->encoder);
   234	fail:
   235		drm_property_blob_put(blob);
   236		return ret;
   237	}
   238	EXPORT_SYMBOL(drm_writeback_connector_init);
   239	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 47744 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init()
  2020-03-06 10:56 ` [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Daniel Vetter
@ 2020-03-06 15:10   ` Thomas Zimmermann
  0 siblings, 0 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-06 15:10 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: hamohammed.sa, alexandre.belloni, airlied, dri-devel,
	sebastian.reichel, paul, matthias.bgg, wens, thierry.reding,
	kraxel, sam, linux-samsung-soc, jy0922.shim, linux-rockchip,
	tomi.valkeinen, abrodkin, linux, krzk, jonathanh, xinliang.liu,
	kong.kongxinwei, kgene, linux-imx, nicolas.ferre, puck.chen,
	s.hauer, alison.wang, jsarha, linux-mediatek, linux-tegra,
	virtualization, jernej.skrabec, rodrigosiqueiramelo, bbrezillon,
	jingoohan1, sw0312.kim, hjc, kyungmin.park,
	kieran.bingham+renesas, ludovic.desroches, kernel, zourongrong,
	shawnguo, laurent.pinchart


[-- Attachment #1.1.1: Type: text/plain, Size: 7525 bytes --]

Hi

Am 06.03.20 um 11:56 schrieb Daniel Vetter:
> On Thu, Mar 05, 2020 at 04:59:28PM +0100, Thomas Zimmermann wrote:
>> A call to drm_simple_encoder_init() initializes an encoder without
>> further functionality. It only provides the destroy callback to
>> cleanup the encoder's state. Only few drivers implement more
>> sophisticated encoders than that. Most drivers implement such a
>> simple encoder and can use drm_simple_encoder_init() instead.
>>
>> The patchset converts drivers where the encoder's instance is
>> embedded in a larger data structure. The driver releases the
>> memory during cleanup. Each patch replaces drm_encoder_init() with
>> drm_simple_encoder_init() and removes the (now unused) driver's
>> encoder functions.
>>
>> While the patchset is fairly large, the indiviual patches are self-
>> contained and can be merged independently from each other. The
>> simple-encoder functionality is currently in drm-misc-next, where
>> these patches could go as well.
>>
>> Future directions: There's another common case where the driver
>> calls kzalloc() plus drm_encoder_init(). Such drivers are not
>> handled by this patchset. The plan here is to use a simple encoder
>> with either managed memory allocation (once it's merged), or embed
>> the encoder in a larger data structure and drop kzalloc() entirely.
>>
>> The patchset has been compile-tested on x86-64, aarch64 and arm.
> 
> So from a cursory look all these drivers get it wrong and devm_kzalloc
> their encoders. But I guess simplifying stuff like you do here will at
> least give us a nice list of things to look at once we get to the
> drmm_simple_encoder_init version of all this. On the series:
> 
> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Thanks!

> 
>>
>> Thomas Zimmermann (22):
>>   drm/arc: Use simple encoder
>>   drm/atmel-hlcdc: Use simple encoder
>>   drm/exynos: Use simple encoder
>>   drm/fsl-dcu: Use simple encoder
>>   drm/gma500: Use simple encoder
>>   drm/hisilicon/kirin: Use simple encoder
>>   drm/i2c/tda998x: Use simple encoder
>>   drm/imx: Use simple encoder
>>   drm/ingenic: Use simple encoder
>>   drm/mediatek: Use simple encoder
>>   drm/rcar-du: Use simple encoder
>>   drm/rockchip: Use simple encoder
>>   drm/shmobile: Use simple encoder
>>   drm/sun4i: Use simple encoder
>>   drm/tegra: Use simple encoder
>>   drm/tidss: Use simple encoder
>>   drm/tilcdc: Use simple encoder
>>   drm/vc4: Use simple encoder
>>   drm/virtgpu: Use simple encoder
>>   drm/vkms: Use simple encoder
>>   drm/writeback: Use simple encoder
>>   drm/zte: Use simple encoder
>>
>>  drivers/gpu/drm/arc/arcpgu_hdmi.c              | 10 +++-------
>>  drivers/gpu/drm/arc/arcpgu_sim.c               |  8 ++------
>>  .../gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c   | 12 ++++--------
>>  drivers/gpu/drm/drm_writeback.c                | 10 +++-------
>>  drivers/gpu/drm/exynos/exynos_dp.c             |  8 ++------
>>  drivers/gpu/drm/exynos/exynos_drm_dpi.c        |  8 ++------
>>  drivers/gpu/drm/exynos/exynos_drm_dsi.c        |  8 ++------
>>  drivers/gpu/drm/exynos/exynos_drm_vidi.c       |  8 ++------
>>  drivers/gpu/drm/exynos/exynos_hdmi.c           |  8 ++------
>>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c      | 14 +++-----------
>>  drivers/gpu/drm/gma500/cdv_intel_crt.c         | 14 +++-----------
>>  drivers/gpu/drm/gma500/cdv_intel_dp.c          | 16 +++-------------
>>  drivers/gpu/drm/gma500/cdv_intel_hdmi.c        |  4 ++--
>>  drivers/gpu/drm/gma500/cdv_intel_lvds.c        | 17 +++--------------
>>  drivers/gpu/drm/gma500/mdfld_dsi_dpi.c         |  7 +++----
>>  drivers/gpu/drm/gma500/mdfld_output.h          |  1 -
>>  drivers/gpu/drm/gma500/mdfld_tmd_vid.c         |  6 ------
>>  drivers/gpu/drm/gma500/mdfld_tpo_vid.c         |  6 ------
>>  drivers/gpu/drm/gma500/oaktrail_hdmi.c         | 14 ++------------
>>  drivers/gpu/drm/gma500/oaktrail_lvds.c         |  5 +++--
>>  drivers/gpu/drm/gma500/psb_intel_drv.h         |  1 -
>>  drivers/gpu/drm/gma500/psb_intel_lvds.c        | 18 +++---------------
>>  drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c     |  5 -----
>>  drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c   |  8 ++------
>>  drivers/gpu/drm/i2c/tda998x_drv.c              | 14 +++-----------
>>  drivers/gpu/drm/imx/dw_hdmi-imx.c              |  8 ++------
>>  drivers/gpu/drm/imx/imx-drm-core.c             |  6 ------
>>  drivers/gpu/drm/imx/imx-drm.h                  |  1 -
>>  drivers/gpu/drm/imx/imx-ldb.c                  |  8 ++------
>>  drivers/gpu/drm/imx/imx-tve.c                  |  8 ++------
>>  drivers/gpu/drm/imx/parallel-display.c         |  8 ++------
>>  drivers/gpu/drm/ingenic/ingenic-drm.c          |  9 +++------
>>  drivers/gpu/drm/mediatek/mtk_dpi.c             | 14 +++-----------
>>  drivers/gpu/drm/mediatek/mtk_dsi.c             | 14 +++-----------
>>  drivers/gpu/drm/rcar-du/rcar_du_encoder.c      | 14 +++-----------
>>  .../gpu/drm/rockchip/analogix_dp-rockchip.c    |  9 +++------
>>  drivers/gpu/drm/rockchip/cdn-dp-core.c         |  9 +++------
>>  .../gpu/drm/rockchip/dw-mipi-dsi-rockchip.c    |  8 ++------
>>  drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c    |  8 ++------
>>  drivers/gpu/drm/rockchip/inno_hdmi.c           |  8 ++------
>>  drivers/gpu/drm/rockchip/rk3066_hdmi.c         |  8 ++------
>>  drivers/gpu/drm/rockchip/rockchip_lvds.c       | 10 +++-------
>>  drivers/gpu/drm/rockchip/rockchip_rgb.c        |  8 ++------
>>  drivers/gpu/drm/shmobile/shmob_drm_crtc.c      | 14 +++-----------
>>  drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c         | 12 +++---------
>>  drivers/gpu/drm/sun4i/sun4i_lvds.c             | 12 +++---------
>>  drivers/gpu/drm/sun4i/sun4i_rgb.c              | 17 +++--------------
>>  drivers/gpu/drm/sun4i/sun4i_tv.c               | 17 +++--------------
>>  drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c         | 12 +++---------
>>  drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c          |  8 ++------
>>  drivers/gpu/drm/tegra/drm.h                    |  2 --
>>  drivers/gpu/drm/tegra/dsi.c                    | 10 +++-------
>>  drivers/gpu/drm/tegra/hdmi.c                   |  9 +++------
>>  drivers/gpu/drm/tegra/output.c                 |  6 +-----
>>  drivers/gpu/drm/tegra/rgb.c                    |  8 ++------
>>  drivers/gpu/drm/tegra/sor.c                    |  8 ++------
>>  drivers/gpu/drm/tidss/tidss_encoder.c          | 10 +++-------
>>  drivers/gpu/drm/tilcdc/tilcdc_external.c       | 10 +++-------
>>  drivers/gpu/drm/tilcdc/tilcdc_panel.c          |  8 ++------
>>  drivers/gpu/drm/vc4/vc4_dpi.c                  |  8 ++------
>>  drivers/gpu/drm/vc4/vc4_dsi.c                  | 15 +++------------
>>  drivers/gpu/drm/vc4/vc4_hdmi.c                 | 17 ++++-------------
>>  drivers/gpu/drm/vc4/vc4_vec.c                  |  8 ++------
>>  drivers/gpu/drm/virtio/virtgpu_display.c       |  8 ++------
>>  drivers/gpu/drm/vkms/vkms_output.c             |  8 ++------
>>  drivers/gpu/drm/zte/zx_hdmi.c                  |  8 ++------
>>  drivers/gpu/drm/zte/zx_tvenc.c                 |  8 ++------
>>  drivers/gpu/drm/zte/zx_vga.c                   |  8 ++------
>>  68 files changed, 151 insertions(+), 488 deletions(-)
>>
>> --
>> 2.25.1
>>
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init()
  2020-03-06 14:22 ` Laurent Pinchart
@ 2020-03-06 15:18   ` Thomas Zimmermann
  2020-03-07 20:08     ` Sam Ravnborg
  0 siblings, 1 reply; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-06 15:18 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: hamohammed.sa, alexandre.belloni, airlied, dri-devel,
	sebastian.reichel, paul, matthias.bgg, wens, thierry.reding,
	kraxel, sam, linux-samsung-soc, jy0922.shim, linux-rockchip,
	tomi.valkeinen, abrodkin, linux, krzk, jonathanh, xinliang.liu,
	kong.kongxinwei, kgene, linux-imx, nicolas.ferre, puck.chen,
	s.hauer, alison.wang, jsarha, linux-mediatek, linux-tegra,
	virtualization, jernej.skrabec, rodrigosiqueiramelo, bbrezillon,
	jingoohan1, sw0312.kim, hjc, kyungmin.park,
	kieran.bingham+renesas, ludovic.desroches, kernel, zourongrong,
	shawnguo


[-- Attachment #1.1.1: Type: text/plain, Size: 8439 bytes --]

Hi Laurent

Am 06.03.20 um 15:22 schrieb Laurent Pinchart:
> Hi Thomas,
> 
> Thank you for the patch.
> 
> On Thu, Mar 05, 2020 at 04:59:28PM +0100, Thomas Zimmermann wrote:
>> A call to drm_simple_encoder_init() initializes an encoder without
>> further functionality. It only provides the destroy callback to
>> cleanup the encoder's state. Only few drivers implement more
>> sophisticated encoders than that. Most drivers implement such a
>> simple encoder and can use drm_simple_encoder_init() instead.
>>
>> The patchset converts drivers where the encoder's instance is
>> embedded in a larger data structure. The driver releases the
>> memory during cleanup. Each patch replaces drm_encoder_init() with
>> drm_simple_encoder_init() and removes the (now unused) driver's
>> encoder functions.
>>
>> While the patchset is fairly large, the indiviual patches are self-
>> contained and can be merged independently from each other. The
>> simple-encoder functionality is currently in drm-misc-next, where
>> these patches could go as well.
> 
> I've reviewed the whole series, including verifying that the few
> instances of struct drm_encoder_funcs that were not declared const were
> not modified somewhere to add more function pointers.
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Thanks for the detailed review.

> 
> for all the patches.
> 
> However, I'd like to note that drm_simple_encoder_init() is a bit of a
> misnommer here. Several of the encoders in those drivers to implement
> additional functionality. They just expose them through
> drm_encoder_helper_funcs, not drm_encoder_funcs.

True. It's called 'simple encoder' for the lack of a better name. It's
part of the simple KMS helpers, so the name's at least consistent. OTOH
I always find drm_simple_display_pipe a bad name.

We can still rename the simple-encoder function without much effort. I'm
open for suggestions.

Best regards
Thomas

> 
>> Future directions: There's another common case where the driver
>> calls kzalloc() plus drm_encoder_init(). Such drivers are not
>> handled by this patchset. The plan here is to use a simple encoder
>> with either managed memory allocation (once it's merged), or embed
>> the encoder in a larger data structure and drop kzalloc() entirely.
> 
> I think an even more interesting future enhancement would be to add
> encoder support to the newly added drm_bridge_connector_init(), for
> drivers that are fully based on bridges and don't implement any encoder
> operation, neither through drm_encoder_funcs nor through
> drm_encoder_helper_funcs.
> 
>> The patchset has been compile-tested on x86-64, aarch64 and arm.
>>
>> Thomas Zimmermann (22):
>>   drm/arc: Use simple encoder
>>   drm/atmel-hlcdc: Use simple encoder
>>   drm/exynos: Use simple encoder
>>   drm/fsl-dcu: Use simple encoder
>>   drm/gma500: Use simple encoder
>>   drm/hisilicon/kirin: Use simple encoder
>>   drm/i2c/tda998x: Use simple encoder
>>   drm/imx: Use simple encoder
>>   drm/ingenic: Use simple encoder
>>   drm/mediatek: Use simple encoder
>>   drm/rcar-du: Use simple encoder
>>   drm/rockchip: Use simple encoder
>>   drm/shmobile: Use simple encoder
>>   drm/sun4i: Use simple encoder
>>   drm/tegra: Use simple encoder
>>   drm/tidss: Use simple encoder
>>   drm/tilcdc: Use simple encoder
>>   drm/vc4: Use simple encoder
>>   drm/virtgpu: Use simple encoder
>>   drm/vkms: Use simple encoder
>>   drm/writeback: Use simple encoder
>>   drm/zte: Use simple encoder
>>
>>  drivers/gpu/drm/arc/arcpgu_hdmi.c              | 10 +++-------
>>  drivers/gpu/drm/arc/arcpgu_sim.c               |  8 ++------
>>  .../gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c   | 12 ++++--------
>>  drivers/gpu/drm/drm_writeback.c                | 10 +++-------
>>  drivers/gpu/drm/exynos/exynos_dp.c             |  8 ++------
>>  drivers/gpu/drm/exynos/exynos_drm_dpi.c        |  8 ++------
>>  drivers/gpu/drm/exynos/exynos_drm_dsi.c        |  8 ++------
>>  drivers/gpu/drm/exynos/exynos_drm_vidi.c       |  8 ++------
>>  drivers/gpu/drm/exynos/exynos_hdmi.c           |  8 ++------
>>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c      | 14 +++-----------
>>  drivers/gpu/drm/gma500/cdv_intel_crt.c         | 14 +++-----------
>>  drivers/gpu/drm/gma500/cdv_intel_dp.c          | 16 +++-------------
>>  drivers/gpu/drm/gma500/cdv_intel_hdmi.c        |  4 ++--
>>  drivers/gpu/drm/gma500/cdv_intel_lvds.c        | 17 +++--------------
>>  drivers/gpu/drm/gma500/mdfld_dsi_dpi.c         |  7 +++----
>>  drivers/gpu/drm/gma500/mdfld_output.h          |  1 -
>>  drivers/gpu/drm/gma500/mdfld_tmd_vid.c         |  6 ------
>>  drivers/gpu/drm/gma500/mdfld_tpo_vid.c         |  6 ------
>>  drivers/gpu/drm/gma500/oaktrail_hdmi.c         | 14 ++------------
>>  drivers/gpu/drm/gma500/oaktrail_lvds.c         |  5 +++--
>>  drivers/gpu/drm/gma500/psb_intel_drv.h         |  1 -
>>  drivers/gpu/drm/gma500/psb_intel_lvds.c        | 18 +++---------------
>>  drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c     |  5 -----
>>  drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c   |  8 ++------
>>  drivers/gpu/drm/i2c/tda998x_drv.c              | 14 +++-----------
>>  drivers/gpu/drm/imx/dw_hdmi-imx.c              |  8 ++------
>>  drivers/gpu/drm/imx/imx-drm-core.c             |  6 ------
>>  drivers/gpu/drm/imx/imx-drm.h                  |  1 -
>>  drivers/gpu/drm/imx/imx-ldb.c                  |  8 ++------
>>  drivers/gpu/drm/imx/imx-tve.c                  |  8 ++------
>>  drivers/gpu/drm/imx/parallel-display.c         |  8 ++------
>>  drivers/gpu/drm/ingenic/ingenic-drm.c          |  9 +++------
>>  drivers/gpu/drm/mediatek/mtk_dpi.c             | 14 +++-----------
>>  drivers/gpu/drm/mediatek/mtk_dsi.c             | 14 +++-----------
>>  drivers/gpu/drm/rcar-du/rcar_du_encoder.c      | 14 +++-----------
>>  .../gpu/drm/rockchip/analogix_dp-rockchip.c    |  9 +++------
>>  drivers/gpu/drm/rockchip/cdn-dp-core.c         |  9 +++------
>>  .../gpu/drm/rockchip/dw-mipi-dsi-rockchip.c    |  8 ++------
>>  drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c    |  8 ++------
>>  drivers/gpu/drm/rockchip/inno_hdmi.c           |  8 ++------
>>  drivers/gpu/drm/rockchip/rk3066_hdmi.c         |  8 ++------
>>  drivers/gpu/drm/rockchip/rockchip_lvds.c       | 10 +++-------
>>  drivers/gpu/drm/rockchip/rockchip_rgb.c        |  8 ++------
>>  drivers/gpu/drm/shmobile/shmob_drm_crtc.c      | 14 +++-----------
>>  drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c         | 12 +++---------
>>  drivers/gpu/drm/sun4i/sun4i_lvds.c             | 12 +++---------
>>  drivers/gpu/drm/sun4i/sun4i_rgb.c              | 17 +++--------------
>>  drivers/gpu/drm/sun4i/sun4i_tv.c               | 17 +++--------------
>>  drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c         | 12 +++---------
>>  drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c          |  8 ++------
>>  drivers/gpu/drm/tegra/drm.h                    |  2 --
>>  drivers/gpu/drm/tegra/dsi.c                    | 10 +++-------
>>  drivers/gpu/drm/tegra/hdmi.c                   |  9 +++------
>>  drivers/gpu/drm/tegra/output.c                 |  6 +-----
>>  drivers/gpu/drm/tegra/rgb.c                    |  8 ++------
>>  drivers/gpu/drm/tegra/sor.c                    |  8 ++------
>>  drivers/gpu/drm/tidss/tidss_encoder.c          | 10 +++-------
>>  drivers/gpu/drm/tilcdc/tilcdc_external.c       | 10 +++-------
>>  drivers/gpu/drm/tilcdc/tilcdc_panel.c          |  8 ++------
>>  drivers/gpu/drm/vc4/vc4_dpi.c                  |  8 ++------
>>  drivers/gpu/drm/vc4/vc4_dsi.c                  | 15 +++------------
>>  drivers/gpu/drm/vc4/vc4_hdmi.c                 | 17 ++++-------------
>>  drivers/gpu/drm/vc4/vc4_vec.c                  |  8 ++------
>>  drivers/gpu/drm/virtio/virtgpu_display.c       |  8 ++------
>>  drivers/gpu/drm/vkms/vkms_output.c             |  8 ++------
>>  drivers/gpu/drm/zte/zx_hdmi.c                  |  8 ++------
>>  drivers/gpu/drm/zte/zx_tvenc.c                 |  8 ++------
>>  drivers/gpu/drm/zte/zx_vga.c                   |  8 ++------
>>  68 files changed, 151 insertions(+), 488 deletions(-)
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 16/22] drm/tidss: Use simple encoder
  2020-03-05 15:59 ` [PATCH 16/22] drm/tidss: " Thomas Zimmermann
@ 2020-03-06 16:02   ` Jyri Sarha
  0 siblings, 0 replies; 66+ messages in thread
From: Jyri Sarha @ 2020-03-06 16:02 UTC (permalink / raw)
  To: Thomas Zimmermann, airlied, daniel, sam, abrodkin, bbrezillon,
	nicolas.ferre, alexandre.belloni, ludovic.desroches,
	maarten.lankhorst, mripard, jingoohan1, inki.dae, jy0922.shim,
	sw0312.kim, kyungmin.park, kgene, krzk, stefan, alison.wang,
	patrik.r.jakobsson, xinliang.liu, zourongrong, john.stultz,
	kong.kongxinwei, puck.chen, linux, p.zabel, shawnguo, s.hauer,
	kernel, festevam, linux-imx, paul, ck.hu, matthias.bgg,
	laurent.pinchart, kieran.bingham+renesas, hjc, heiko, wens,
	jernej.skrabec, thierry.reding, jonathanh, tomi.valkeinen, eric,
	kraxel, rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, linux-tegra

On 05/03/2020 17:59, Thomas Zimmermann wrote:
> The tidss driver uses an empty implementation for its encoder. Replace
> the code with the generic simple encoder.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>

Acked-by: Jyri Sarha <jsarha@ti.com>

> ---
>  drivers/gpu/drm/tidss/tidss_encoder.c | 10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/tidss/tidss_encoder.c b/drivers/gpu/drm/tidss/tidss_encoder.c
> index 83785b0a66a9..4c0558286f5e 100644
> --- a/drivers/gpu/drm/tidss/tidss_encoder.c
> +++ b/drivers/gpu/drm/tidss/tidss_encoder.c
> @@ -8,8 +8,9 @@
>  
>  #include <drm/drm_crtc.h>
>  #include <drm/drm_crtc_helper.h>
> -#include <drm/drm_panel.h>
>  #include <drm/drm_of.h>
> +#include <drm/drm_panel.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include "tidss_crtc.h"
>  #include "tidss_drv.h"
> @@ -59,10 +60,6 @@ static const struct drm_encoder_helper_funcs encoder_helper_funcs = {
>  	.atomic_check = tidss_encoder_atomic_check,
>  };
>  
> -static const struct drm_encoder_funcs encoder_funcs = {
> -	.destroy = drm_encoder_cleanup,
> -};
> -
>  struct drm_encoder *tidss_encoder_create(struct tidss_device *tidss,
>  					 u32 encoder_type, u32 possible_crtcs)
>  {
> @@ -75,8 +72,7 @@ struct drm_encoder *tidss_encoder_create(struct tidss_device *tidss,
>  
>  	enc->possible_crtcs = possible_crtcs;
>  
> -	ret = drm_encoder_init(&tidss->ddev, enc, &encoder_funcs,
> -			       encoder_type, NULL);
> +	ret = drm_simple_encoder_init(&tidss->ddev, enc, encoder_type);
>  	if (ret < 0)
>  		return ERR_PTR(ret);
>  
> 


-- 
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 17/22] drm/tilcdc: Use simple encoder
  2020-03-05 15:59 ` [PATCH 17/22] drm/tilcdc: " Thomas Zimmermann
@ 2020-03-06 16:03   ` Jyri Sarha
  0 siblings, 0 replies; 66+ messages in thread
From: Jyri Sarha @ 2020-03-06 16:03 UTC (permalink / raw)
  To: Thomas Zimmermann, airlied, daniel, sam, abrodkin, bbrezillon,
	nicolas.ferre, alexandre.belloni, ludovic.desroches,
	maarten.lankhorst, mripard, jingoohan1, inki.dae, jy0922.shim,
	sw0312.kim, kyungmin.park, kgene, krzk, stefan, alison.wang,
	patrik.r.jakobsson, xinliang.liu, zourongrong, john.stultz,
	kong.kongxinwei, puck.chen, linux, p.zabel, shawnguo, s.hauer,
	kernel, festevam, linux-imx, paul, ck.hu, matthias.bgg,
	laurent.pinchart, kieran.bingham+renesas, hjc, heiko, wens,
	jernej.skrabec, thierry.reding, jonathanh, tomi.valkeinen, eric,
	kraxel, rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, linux-tegra

On 05/03/2020 17:59, Thomas Zimmermann wrote:
> The tilcdc driver uses empty implementations for its encoders. Replace
> the code with the generic simple encoder.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>

Acked-by: Jyri Sarha <jsarha@ti.com>

> ---
>  drivers/gpu/drm/tilcdc/tilcdc_external.c | 10 +++-------
>  drivers/gpu/drm/tilcdc/tilcdc_panel.c    |  8 ++------
>  2 files changed, 5 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c
> index 28b7f703236e..b177525588c1 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_external.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c
> @@ -10,6 +10,7 @@
>  #include <drm/drm_atomic_helper.h>
>  #include <drm/drm_bridge.h>
>  #include <drm/drm_of.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include "tilcdc_drv.h"
>  #include "tilcdc_external.h"
> @@ -83,10 +84,6 @@ int tilcdc_add_component_encoder(struct drm_device *ddev)
>  	return 0;
>  }
>  
> -static const struct drm_encoder_funcs tilcdc_external_encoder_funcs = {
> -	.destroy	= drm_encoder_cleanup,
> -};
> -
>  static
>  int tilcdc_attach_bridge(struct drm_device *ddev, struct drm_bridge *bridge)
>  {
> @@ -131,9 +128,8 @@ int tilcdc_attach_external_device(struct drm_device *ddev)
>  	if (!priv->external_encoder)
>  		return -ENOMEM;
>  
> -	ret = drm_encoder_init(ddev, priv->external_encoder,
> -			       &tilcdc_external_encoder_funcs,
> -			       DRM_MODE_ENCODER_NONE, NULL);
> +	ret = drm_simple_encoder_init(ddev, priv->external_encoder,
> +				      DRM_MODE_ENCODER_NONE);
>  	if (ret) {
>  		dev_err(ddev->dev, "drm_encoder_init() failed %d\n", ret);
>  		return ret;
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_panel.c b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> index 5584e656b857..12823d60c4e8 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> @@ -16,6 +16,7 @@
>  #include <drm/drm_connector.h>
>  #include <drm/drm_modeset_helper_vtables.h>
>  #include <drm/drm_probe_helper.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include "tilcdc_drv.h"
>  #include "tilcdc_panel.h"
> @@ -74,10 +75,6 @@ static void panel_encoder_mode_set(struct drm_encoder *encoder,
>  	/* nothing needed */
>  }
>  
> -static const struct drm_encoder_funcs panel_encoder_funcs = {
> -		.destroy        = drm_encoder_cleanup,
> -};
> -
>  static const struct drm_encoder_helper_funcs panel_encoder_helper_funcs = {
>  		.dpms           = panel_encoder_dpms,
>  		.prepare        = panel_encoder_prepare,
> @@ -102,8 +99,7 @@ static struct drm_encoder *panel_encoder_create(struct drm_device *dev,
>  	encoder = &panel_encoder->base;
>  	encoder->possible_crtcs = 1;
>  
> -	ret = drm_encoder_init(dev, encoder, &panel_encoder_funcs,
> -			DRM_MODE_ENCODER_LVDS, NULL);
> +	ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_LVDS);
>  	if (ret < 0)
>  		goto fail;
>  
> 


-- 
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 01/22] drm/arc: Use simple encoder
  2020-03-05 15:59 ` [PATCH 01/22] drm/arc: Use simple encoder Thomas Zimmermann
  2020-03-05 23:48   ` kbuild test robot
@ 2020-03-06 21:18   ` Sam Ravnborg
  2020-03-09  7:55     ` Thomas Zimmermann
  1 sibling, 1 reply; 66+ messages in thread
From: Sam Ravnborg @ 2020-03-06 21:18 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sebastian.reichel, linux-samsung-soc,
	jy0922.shim, hjc, tomi.valkeinen, abrodkin, kong.kongxinwei,
	jonathanh, xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, puck.chen, s.hauer,
	alison.wang, jsarha, matthias.bgg, wens, kernel, jernej.skrabec,
	kraxel, rodrigosiqueiramelo, bbrezillon, jingoohan1, dri-devel,
	sw0312.kim, nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

On Thu, Mar 05, 2020 at 04:59:29PM +0100, Thomas Zimmermann wrote:
> The arc driver uses empty implementations for its encoders. Replace
> the code with the generic simple encoder.

We should , as a follow-up patch, embed the encoder in
arcgpu_drm_private.
Then we drop the kzalloc() and avoid that life-time challenge.

This patch looks good for what it does.

Acked-by: Sam Ravnborg <sam@ravnborg.org>

> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  drivers/gpu/drm/arc/arcpgu_hdmi.c | 10 +++-------
>  drivers/gpu/drm/arc/arcpgu_sim.c  |  8 ++------
>  2 files changed, 5 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/gpu/drm/arc/arcpgu_hdmi.c b/drivers/gpu/drm/arc/arcpgu_hdmi.c
> index 52839934f2fb..780911765e2e 100644
> --- a/drivers/gpu/drm/arc/arcpgu_hdmi.c
> +++ b/drivers/gpu/drm/arc/arcpgu_hdmi.c
> @@ -7,15 +7,12 @@
>  
>  #include <drm/drm_bridge.h>
>  #include <drm/drm_crtc.h>
> -#include <drm/drm_encoder.h>
>  #include <drm/drm_device.h>
> +#include <drm/drm_encoder.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include "arcpgu.h"
>  
> -static struct drm_encoder_funcs arcpgu_drm_encoder_funcs = {
> -	.destroy = drm_encoder_cleanup,
> -};
> -
>  int arcpgu_drm_hdmi_init(struct drm_device *drm, struct device_node *np)
>  {
>  	struct drm_encoder *encoder;
> @@ -34,8 +31,7 @@ int arcpgu_drm_hdmi_init(struct drm_device *drm, struct device_node *np)
>  
>  	encoder->possible_crtcs = 1;
>  	encoder->possible_clones = 0;
> -	ret = drm_encoder_init(drm, encoder, &arcpgu_drm_encoder_funcs,
> -			       DRM_MODE_ENCODER_TMDS, NULL);
> +	ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
>  	if (ret)
>  		return ret;
>  
> diff --git a/drivers/gpu/drm/arc/arcpgu_sim.c b/drivers/gpu/drm/arc/arcpgu_sim.c
> index 37d961668dfe..66ca2c26e339 100644
> --- a/drivers/gpu/drm/arc/arcpgu_sim.c
> +++ b/drivers/gpu/drm/arc/arcpgu_sim.c
> @@ -8,6 +8,7 @@
>  #include <drm/drm_atomic_helper.h>
>  #include <drm/drm_device.h>
>  #include <drm/drm_probe_helper.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include "arcpgu.h"
>  
> @@ -50,10 +51,6 @@ static const struct drm_connector_funcs arcpgu_drm_connector_funcs = {
>  	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
>  };
>  
> -static struct drm_encoder_funcs arcpgu_drm_encoder_funcs = {
> -	.destroy = drm_encoder_cleanup,
> -};
> -
>  int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np)
>  {
>  	struct arcpgu_drm_connector *arcpgu_connector;
> @@ -68,8 +65,7 @@ int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np)
>  	encoder->possible_crtcs = 1;
>  	encoder->possible_clones = 0;
>  
> -	ret = drm_encoder_init(drm, encoder, &arcpgu_drm_encoder_funcs,
> -			       DRM_MODE_ENCODER_VIRTUAL, NULL);
> +	ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_VIRTUAL);
>  	if (ret)
>  		return ret;
>  
> -- 
> 2.25.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 02/22] drm/atmel-hlcdc: Use simple encoder
  2020-03-05 15:59 ` [PATCH 02/22] drm/atmel-hlcdc: " Thomas Zimmermann
  2020-03-06  0:32   ` kbuild test robot
@ 2020-03-06 21:26   ` Sam Ravnborg
  1 sibling, 0 replies; 66+ messages in thread
From: Sam Ravnborg @ 2020-03-06 21:26 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sebastian.reichel, linux-samsung-soc,
	jy0922.shim, hjc, tomi.valkeinen, abrodkin, kong.kongxinwei,
	jonathanh, xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, puck.chen, s.hauer,
	alison.wang, jsarha, matthias.bgg, wens, kernel, jernej.skrabec,
	kraxel, rodrigosiqueiramelo, bbrezillon, jingoohan1, dri-devel,
	sw0312.kim, nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

On Thu, Mar 05, 2020 at 04:59:30PM +0100, Thomas Zimmermann wrote:
> The atmel-hlcdc driver uses an empty implementation for its encoder.
> Replace the code with the generic simple encoder.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>

Reviewed-by: Sam Ravnborg <sam@ravnborg.org>

> ---
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c | 12 ++++--------
>  1 file changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c
> index e2019fe97fff..43bc709e3523 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c
> @@ -11,9 +11,10 @@
>  #include <linux/media-bus-format.h>
>  #include <linux/of_graph.h>
>  
> +#include <drm/drm_bridge.h>
>  #include <drm/drm_encoder.h>
>  #include <drm/drm_of.h>
> -#include <drm/drm_bridge.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include "atmel_hlcdc_dc.h"
>  
> @@ -22,10 +23,6 @@ struct atmel_hlcdc_rgb_output {
>  	int bus_fmt;
>  };
>  
> -static const struct drm_encoder_funcs atmel_hlcdc_panel_encoder_funcs = {
> -	.destroy = drm_encoder_cleanup,
> -};
> -
>  static struct atmel_hlcdc_rgb_output *
>  atmel_hlcdc_encoder_to_rgb_output(struct drm_encoder *encoder)
>  {
> @@ -98,9 +95,8 @@ static int atmel_hlcdc_attach_endpoint(struct drm_device *dev, int endpoint)
>  		return -EINVAL;
>  	}
>  
> -	ret = drm_encoder_init(dev, &output->encoder,
> -			       &atmel_hlcdc_panel_encoder_funcs,
> -			       DRM_MODE_ENCODER_NONE, NULL);
> +	ret = drm_simple_encoder_init(dev, &output->encoder,
> +				      DRM_MODE_ENCODER_NONE);
>  	if (ret)
>  		return ret;
>  
> -- 
> 2.25.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 03/22] drm/exynos: Use simple encoder
  2020-03-05 15:59 ` [PATCH 03/22] drm/exynos: " Thomas Zimmermann
  2020-03-06  0:55   ` kbuild test robot
  2020-03-06  5:14   ` kbuild test robot
@ 2020-03-06 21:28   ` Sam Ravnborg
  2 siblings, 0 replies; 66+ messages in thread
From: Sam Ravnborg @ 2020-03-06 21:28 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sebastian.reichel, linux-samsung-soc,
	jy0922.shim, hjc, tomi.valkeinen, abrodkin, kong.kongxinwei,
	jonathanh, xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, puck.chen, s.hauer,
	alison.wang, jsarha, matthias.bgg, wens, kernel, jernej.skrabec,
	kraxel, rodrigosiqueiramelo, bbrezillon, jingoohan1, dri-devel,
	sw0312.kim, nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

On Thu, Mar 05, 2020 at 04:59:31PM +0100, Thomas Zimmermann wrote:
> The exynos driver uses empty implementations for its encoders. Replace
> the code with the generic simple encoder.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>

Acked-by: Sam Ravnborg <sam@ravnborg.org>

> ---
>  drivers/gpu/drm/exynos/exynos_dp.c       | 8 ++------
>  drivers/gpu/drm/exynos/exynos_drm_dpi.c  | 8 ++------
>  drivers/gpu/drm/exynos/exynos_drm_dsi.c  | 8 ++------
>  drivers/gpu/drm/exynos/exynos_drm_vidi.c | 8 ++------
>  drivers/gpu/drm/exynos/exynos_hdmi.c     | 8 ++------
>  5 files changed, 10 insertions(+), 30 deletions(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/exynos_dp.c
> index d23d3502ca91..a61482af2998 100644
> --- a/drivers/gpu/drm/exynos/exynos_dp.c
> +++ b/drivers/gpu/drm/exynos/exynos_dp.c
> @@ -25,6 +25,7 @@
>  #include <drm/drm_panel.h>
>  #include <drm/drm_print.h>
>  #include <drm/drm_probe_helper.h>
> +#include <drm/drm_simple_kms_helper.h>
>  #include <drm/exynos_drm.h>
>  
>  #include "exynos_drm_crtc.h"
> @@ -135,10 +136,6 @@ static const struct drm_encoder_helper_funcs exynos_dp_encoder_helper_funcs = {
>  	.disable = exynos_dp_nop,
>  };
>  
> -static const struct drm_encoder_funcs exynos_dp_encoder_funcs = {
> -	.destroy = drm_encoder_cleanup,
> -};
> -
>  static int exynos_dp_dt_parse_panel(struct exynos_dp_device *dp)
>  {
>  	int ret;
> @@ -174,8 +171,7 @@ static int exynos_dp_bind(struct device *dev, struct device *master, void *data)
>  			return ret;
>  	}
>  
> -	drm_encoder_init(drm_dev, encoder, &exynos_dp_encoder_funcs,
> -			 DRM_MODE_ENCODER_TMDS, NULL);
> +	drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
>  
>  	drm_encoder_helper_add(encoder, &exynos_dp_encoder_helper_funcs);
>  
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
> index 43fa0f26c052..7ba5354e7d94 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
> @@ -14,6 +14,7 @@
>  #include <drm/drm_panel.h>
>  #include <drm/drm_print.h>
>  #include <drm/drm_probe_helper.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include <video/of_videomode.h>
>  #include <video/videomode.h>
> @@ -149,10 +150,6 @@ static const struct drm_encoder_helper_funcs exynos_dpi_encoder_helper_funcs = {
>  	.disable = exynos_dpi_disable,
>  };
>  
> -static const struct drm_encoder_funcs exynos_dpi_encoder_funcs = {
> -	.destroy = drm_encoder_cleanup,
> -};
> -
>  enum {
>  	FIMD_PORT_IN0,
>  	FIMD_PORT_IN1,
> @@ -201,8 +198,7 @@ int exynos_dpi_bind(struct drm_device *dev, struct drm_encoder *encoder)
>  {
>  	int ret;
>  
> -	drm_encoder_init(dev, encoder, &exynos_dpi_encoder_funcs,
> -			 DRM_MODE_ENCODER_TMDS, NULL);
> +	drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_TMDS);
>  
>  	drm_encoder_helper_add(encoder, &exynos_dpi_encoder_helper_funcs);
>  
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> index 669d3857502a..2986c93382e0 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> @@ -30,6 +30,7 @@
>  #include <drm/drm_panel.h>
>  #include <drm/drm_print.h>
>  #include <drm/drm_probe_helper.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include "exynos_drm_crtc.h"
>  #include "exynos_drm_drv.h"
> @@ -1524,10 +1525,6 @@ static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = {
>  	.disable = exynos_dsi_disable,
>  };
>  
> -static const struct drm_encoder_funcs exynos_dsi_encoder_funcs = {
> -	.destroy = drm_encoder_cleanup,
> -};
> -
>  MODULE_DEVICE_TABLE(of, exynos_dsi_of_match);
>  
>  static int exynos_dsi_host_attach(struct mipi_dsi_host *host,
> @@ -1705,8 +1702,7 @@ static int exynos_dsi_bind(struct device *dev, struct device *master,
>  	struct drm_bridge *in_bridge;
>  	int ret;
>  
> -	drm_encoder_init(drm_dev, encoder, &exynos_dsi_encoder_funcs,
> -			 DRM_MODE_ENCODER_TMDS, NULL);
> +	drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
>  
>  	drm_encoder_helper_add(encoder, &exynos_dsi_encoder_helper_funcs);
>  
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
> index b320b3a21ad4..282467121699 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
> @@ -14,6 +14,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 <drm/drm_vblank.h>
>  #include <drm/exynos_drm.h>
>  
> @@ -369,10 +370,6 @@ static const struct drm_encoder_helper_funcs exynos_vidi_encoder_helper_funcs =
>  	.disable = exynos_vidi_disable,
>  };
>  
> -static const struct drm_encoder_funcs exynos_vidi_encoder_funcs = {
> -	.destroy = drm_encoder_cleanup,
> -};
> -
>  static int vidi_bind(struct device *dev, struct device *master, void *data)
>  {
>  	struct vidi_context *ctx = dev_get_drvdata(dev);
> @@ -406,8 +403,7 @@ static int vidi_bind(struct device *dev, struct device *master, void *data)
>  		return PTR_ERR(ctx->crtc);
>  	}
>  
> -	drm_encoder_init(drm_dev, encoder, &exynos_vidi_encoder_funcs,
> -			 DRM_MODE_ENCODER_TMDS, NULL);
> +	drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
>  
>  	drm_encoder_helper_add(encoder, &exynos_vidi_encoder_helper_funcs);
>  
> diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
> index 3e5f1a77286d..302ffda5f297 100644
> --- a/drivers/gpu/drm/exynos/exynos_hdmi.c
> +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
> @@ -38,6 +38,7 @@
>  #include <drm/drm_edid.h>
>  #include <drm/drm_print.h>
>  #include <drm/drm_probe_helper.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include "exynos_drm_crtc.h"
>  #include "regs-hdmi.h"
> @@ -1559,10 +1560,6 @@ static const struct drm_encoder_helper_funcs exynos_hdmi_encoder_helper_funcs =
>  	.disable	= hdmi_disable,
>  };
>  
> -static const struct drm_encoder_funcs exynos_hdmi_encoder_funcs = {
> -	.destroy = drm_encoder_cleanup,
> -};
> -
>  static void hdmi_audio_shutdown(struct device *dev, void *data)
>  {
>  	struct hdmi_context *hdata = dev_get_drvdata(dev);
> @@ -1851,8 +1848,7 @@ static int hdmi_bind(struct device *dev, struct device *master, void *data)
>  
>  	hdata->phy_clk.enable = hdmiphy_clk_enable;
>  
> -	drm_encoder_init(drm_dev, encoder, &exynos_hdmi_encoder_funcs,
> -			 DRM_MODE_ENCODER_TMDS, NULL);
> +	drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
>  
>  	drm_encoder_helper_add(encoder, &exynos_hdmi_encoder_helper_funcs);
>  
> -- 
> 2.25.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 05/22] drm/gma500: Use simple encoder
  2020-03-05 15:59 ` [PATCH 05/22] drm/gma500: " Thomas Zimmermann
  2020-03-06  0:44   ` kbuild test robot
@ 2020-03-06 21:35   ` Sam Ravnborg
  2020-03-09  7:32     ` Thomas Zimmermann
  1 sibling, 1 reply; 66+ messages in thread
From: Sam Ravnborg @ 2020-03-06 21:35 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sebastian.reichel, linux-samsung-soc,
	jy0922.shim, hjc, tomi.valkeinen, abrodkin, kong.kongxinwei,
	jonathanh, xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, puck.chen, s.hauer,
	alison.wang, jsarha, matthias.bgg, wens, kernel, jernej.skrabec,
	kraxel, rodrigosiqueiramelo, bbrezillon, jingoohan1, dri-devel,
	sw0312.kim, nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

Hi Thomas.

On Thu, Mar 05, 2020 at 04:59:33PM +0100, Thomas Zimmermann wrote:
> The gma500 driver uses empty implementations for some of its encoders.
> Replace the code with the generic simple encoder.
This parts looks good.


> As a side effect, the
> patch also removes an indirection in the encoder setup for Medfield.

I failed to see where this was done. Maybe too late for me to review
patches, so I will stop now.


No matter - patch is:
Acked-by: Sam Ravnborg <sam@ravnborg.org>

> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  drivers/gpu/drm/gma500/cdv_intel_crt.c     | 14 +++-----------
>  drivers/gpu/drm/gma500/cdv_intel_dp.c      | 16 +++-------------
>  drivers/gpu/drm/gma500/cdv_intel_hdmi.c    |  4 ++--
>  drivers/gpu/drm/gma500/cdv_intel_lvds.c    | 17 +++--------------
>  drivers/gpu/drm/gma500/mdfld_dsi_dpi.c     |  7 +++----
>  drivers/gpu/drm/gma500/mdfld_output.h      |  1 -
>  drivers/gpu/drm/gma500/mdfld_tmd_vid.c     |  6 ------
>  drivers/gpu/drm/gma500/mdfld_tpo_vid.c     |  6 ------
>  drivers/gpu/drm/gma500/oaktrail_hdmi.c     | 14 ++------------
>  drivers/gpu/drm/gma500/oaktrail_lvds.c     |  5 +++--
>  drivers/gpu/drm/gma500/psb_intel_drv.h     |  1 -
>  drivers/gpu/drm/gma500/psb_intel_lvds.c    | 18 +++---------------
>  drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c |  5 -----
>  13 files changed, 22 insertions(+), 92 deletions(-)
> 
> diff --git a/drivers/gpu/drm/gma500/cdv_intel_crt.c b/drivers/gpu/drm/gma500/cdv_intel_crt.c
> index 29c36d63b20e..88535f5aacc5 100644
> --- a/drivers/gpu/drm/gma500/cdv_intel_crt.c
> +++ b/drivers/gpu/drm/gma500/cdv_intel_crt.c
> @@ -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);
>  
> diff --git a/drivers/gpu/drm/gma500/cdv_intel_dp.c b/drivers/gpu/drm/gma500/cdv_intel_dp.c
> index 5772b2dce0d6..13947ec06dbb 100644
> --- a/drivers/gpu/drm/gma500/cdv_intel_dp.c
> +++ b/drivers/gpu/drm/gma500/cdv_intel_dp.c
> @@ -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 {
> diff --git a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
> index 1711a41acc16..0d12c6ffbc40 100644
> --- a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
> +++ b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
> @@ -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;
> diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> index ea0a5d9a0acc..18de10e9ff9a 100644
> --- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> +++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> @@ -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;
> diff --git a/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c b/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
> index d4c65f268922..aa5aa293ddb6 100644
> --- a/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
> +++ b/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
> @@ -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);
>  
> diff --git a/drivers/gpu/drm/gma500/mdfld_output.h b/drivers/gpu/drm/gma500/mdfld_output.h
> index ab2b27c0f037..17a944d70add 100644
> --- a/drivers/gpu/drm/gma500/mdfld_output.h
> +++ b/drivers/gpu/drm/gma500/mdfld_output.h
> @@ -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 *);
> diff --git a/drivers/gpu/drm/gma500/mdfld_tmd_vid.c b/drivers/gpu/drm/gma500/mdfld_tmd_vid.c
> index 49c92debb7b2..25e897b98f86 100644
> --- a/drivers/gpu/drm/gma500/mdfld_tmd_vid.c
> +++ b/drivers/gpu/drm/gma500/mdfld_tmd_vid.c
> @@ -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,
> diff --git a/drivers/gpu/drm/gma500/mdfld_tpo_vid.c b/drivers/gpu/drm/gma500/mdfld_tpo_vid.c
> index a9420bf9a419..11845978fb0a 100644
> --- a/drivers/gpu/drm/gma500/mdfld_tpo_vid.c
> +++ b/drivers/gpu/drm/gma500/mdfld_tpo_vid.c
> @@ -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,
> diff --git a/drivers/gpu/drm/gma500/oaktrail_hdmi.c b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
> index f4370232767d..b25086f252ae 100644
> --- a/drivers/gpu/drm/gma500/oaktrail_hdmi.c
> +++ b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
> @@ -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);
>  
> diff --git a/drivers/gpu/drm/gma500/oaktrail_lvds.c b/drivers/gpu/drm/gma500/oaktrail_lvds.c
> index 582e09597500..2828360153d1 100644
> --- a/drivers/gpu/drm/gma500/oaktrail_lvds.c
> +++ b/drivers/gpu/drm/gma500/oaktrail_lvds.c
> @@ -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;
> diff --git a/drivers/gpu/drm/gma500/psb_intel_drv.h b/drivers/gpu/drm/gma500/psb_intel_drv.h
> index 16c6136f778b..fb601983cef0 100644
> --- a/drivers/gpu/drm/gma500/psb_intel_drv.h
> +++ b/drivers/gpu/drm/gma500/psb_intel_drv.h
> @@ -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);
> diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c b/drivers/gpu/drm/gma500/psb_intel_lvds.c
> index afaebab7bc17..063c66bb946d 100644
> --- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
> +++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
> @@ -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;
> diff --git a/drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c b/drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c
> index 9e8224456ea2..f7e121f4c609 100644
> --- a/drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c
> +++ b/drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c
> @@ -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,
> -- 
> 2.25.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 20/22] drm/vkms: Use simple encoder
  2020-03-05 15:59 ` [PATCH 20/22] drm/vkms: " Thomas Zimmermann
  2020-03-06  0:24   ` kbuild test robot
@ 2020-03-07 13:59   ` kbuild test robot
  2020-03-24 11:59   ` Rodrigo Siqueira
  2 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-07 13:59 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, Thomas Zimmermann,
	puck.chen, s.hauer, alison.wang, jsarha, matthias.bgg, wens,
	kernel, jernej.skrabec, kbuild-all, rodrigosiqueiramelo,
	tomi.valkeinen, bbrezillon, jingoohan1, dri-devel, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 2875 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2 v5.6-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: i386-randconfig-h001-20200307 (attached as .config)
compiler: gcc-7 (Debian 7.5.0-5) 7.5.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu//drm/vkms/vkms_output.c: In function 'vkms_output_init':
>> drivers/gpu//drm/vkms/vkms_output.c:70:8: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_VIRTUAL);
           ^~~~~~~~~~~~~~~~~~~~~~~
           drm_encoder_init
   cc1: some warnings being treated as errors

vim +70 drivers/gpu//drm/vkms/vkms_output.c

    34	
    35	int vkms_output_init(struct vkms_device *vkmsdev, int index)
    36	{
    37		struct vkms_output *output = &vkmsdev->output;
    38		struct drm_device *dev = &vkmsdev->drm;
    39		struct drm_connector *connector = &output->connector;
    40		struct drm_encoder *encoder = &output->encoder;
    41		struct drm_crtc *crtc = &output->crtc;
    42		struct drm_plane *primary, *cursor = NULL;
    43		int ret;
    44	
    45		primary = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_PRIMARY, index);
    46		if (IS_ERR(primary))
    47			return PTR_ERR(primary);
    48	
    49		if (enable_cursor) {
    50			cursor = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_CURSOR, index);
    51			if (IS_ERR(cursor)) {
    52				ret = PTR_ERR(cursor);
    53				goto err_cursor;
    54			}
    55		}
    56	
    57		ret = vkms_crtc_init(dev, crtc, primary, cursor);
    58		if (ret)
    59			goto err_crtc;
    60	
    61		ret = drm_connector_init(dev, connector, &vkms_connector_funcs,
    62					 DRM_MODE_CONNECTOR_VIRTUAL);
    63		if (ret) {
    64			DRM_ERROR("Failed to init connector\n");
    65			goto err_connector;
    66		}
    67	
    68		drm_connector_helper_add(connector, &vkms_conn_helper_funcs);
    69	
  > 70		ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_VIRTUAL);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 40866 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 07/22] drm/i2c/tda998x: Use simple encoder
  2020-03-05 15:59 ` [PATCH 07/22] drm/i2c/tda998x: " Thomas Zimmermann
  2020-03-06  7:30   ` kbuild test robot
@ 2020-03-07 15:40   ` kbuild test robot
  1 sibling, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-07 15:40 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, Thomas Zimmermann,
	puck.chen, s.hauer, alison.wang, jsarha, matthias.bgg, wens,
	kernel, jernej.skrabec, kbuild-all, rodrigosiqueiramelo,
	tomi.valkeinen, bbrezillon, jingoohan1, dri-devel, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 2572 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[also build test ERROR on v5.6-rc4]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: x86_64-randconfig-h002-20200307 (attached as .config)
compiler: gcc-7 (Debian 7.5.0-5) 7.5.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/i2c/tda998x_drv.c: In function 'tda998x_encoder_init':
>> drivers/gpu/drm/i2c/tda998x_drv.c:2018:8: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     ret = drm_simple_encoder_init(drm, &priv->encoder,
           ^~~~~~~~~~~~~~~~~~~~~~~
           drm_encoder_init
   cc1: some warnings being treated as errors

vim +2018 drivers/gpu/drm/i2c/tda998x_drv.c

  2000	
  2001	static int tda998x_encoder_init(struct device *dev, struct drm_device *drm)
  2002	{
  2003		struct tda998x_priv *priv = dev_get_drvdata(dev);
  2004		u32 crtcs = 0;
  2005		int ret;
  2006	
  2007		if (dev->of_node)
  2008			crtcs = drm_of_find_possible_crtcs(drm, dev->of_node);
  2009	
  2010		/* If no CRTCs were found, fall back to our old behaviour */
  2011		if (crtcs == 0) {
  2012			dev_warn(dev, "Falling back to first CRTC\n");
  2013			crtcs = 1 << 0;
  2014		}
  2015	
  2016		priv->encoder.possible_crtcs = crtcs;
  2017	
> 2018		ret = drm_simple_encoder_init(drm, &priv->encoder,
  2019					      DRM_MODE_ENCODER_TMDS);
  2020		if (ret)
  2021			goto err_encoder;
  2022	
  2023		ret = drm_bridge_attach(&priv->encoder, &priv->bridge, NULL, 0);
  2024		if (ret)
  2025			goto err_bridge;
  2026	
  2027		return 0;
  2028	
  2029	err_bridge:
  2030		drm_encoder_cleanup(&priv->encoder);
  2031	err_encoder:
  2032		return ret;
  2033	}
  2034	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 32004 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 19/22] drm/virtgpu: Use simple encoder
  2020-03-05 15:59 ` [PATCH 19/22] drm/virtgpu: " Thomas Zimmermann
@ 2020-03-07 15:40   ` kbuild test robot
  0 siblings, 0 replies; 66+ messages in thread
From: kbuild test robot @ 2020-03-07 15:40 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	kraxel, jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, Thomas Zimmermann,
	puck.chen, s.hauer, alison.wang, jsarha, matthias.bgg, wens,
	kernel, jernej.skrabec, kbuild-all, rodrigosiqueiramelo,
	tomi.valkeinen, bbrezillon, jingoohan1, dri-devel, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart

[-- Attachment #1: Type: text/plain, Size: 6166 bytes --]

Hi Thomas,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20200305]
[cannot apply to rockchip/for-next shawnguo/for-next sunxi/sunxi/for-next tegra/for-next linus/master v5.6-rc4 v5.6-rc3 v5.6-rc2 v5.6-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Thomas-Zimmermann/drm-Convert-drivers-to-drm_simple_encoder_init/20200306-045931
base:    47466dcf84ee66a973ea7d2fca7e582fe9328932
config: i386-randconfig-h002-20200307 (attached as .config)
compiler: gcc-7 (Debian 7.5.0-5) 7.5.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/virtio/virtgpu_display.c: In function 'vgdev_output_init':
>> drivers/gpu/drm/virtio/virtgpu_display.c:276:2: error: implicit declaration of function 'drm_simple_encoder_init'; did you mean 'drm_encoder_init'? [-Werror=implicit-function-declaration]
     drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_VIRTUAL);
     ^~~~~~~~~~~~~~~~~~~~~~~
     drm_encoder_init
   Cyclomatic Complexity 1 arch/x86/include/asm/bitops.h:fls
   Cyclomatic Complexity 1 include/linux/log2.h:__ilog2_u32
   Cyclomatic Complexity 1 include/linux/err.h:ERR_PTR
   Cyclomatic Complexity 1 include/linux/err.h:PTR_ERR
   Cyclomatic Complexity 3 include/linux/slab.h:kmalloc_type
   Cyclomatic Complexity 28 include/linux/slab.h:kmalloc_index
   Cyclomatic Complexity 1 include/linux/slab.h:kmalloc_large
   Cyclomatic Complexity 4 include/linux/slab.h:kmalloc
   Cyclomatic Complexity 1 include/linux/slab.h:kzalloc
   Cyclomatic Complexity 1 include/drm/drm_modeset_helper_vtables.h:drm_crtc_helper_add
   Cyclomatic Complexity 1 include/drm/drm_modeset_helper_vtables.h:drm_encoder_helper_add
   Cyclomatic Complexity 1 include/drm/drm_modeset_helper_vtables.h:drm_connector_helper_add
   Cyclomatic Complexity 1 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_crtc_atomic_enable
   Cyclomatic Complexity 1 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_crtc_atomic_check
   Cyclomatic Complexity 1 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_crtc_atomic_flush
   Cyclomatic Complexity 1 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_enc_mode_set
   Cyclomatic Complexity 1 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_enc_enable
   Cyclomatic Complexity 1 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_enc_disable
   Cyclomatic Complexity 2 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_conn_detect
   Cyclomatic Complexity 1 drivers/gpu/drm/virtio/virtgpu_display.c:vgdev_atomic_commit_tail
   Cyclomatic Complexity 67 include/asm-generic/getorder.h:get_order
   Cyclomatic Complexity 1 include/linux/err.h:IS_ERR
   Cyclomatic Complexity 2 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_framebuffer_init
   Cyclomatic Complexity 5 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_user_framebuffer_create
   Cyclomatic Complexity 5 drivers/gpu/drm/virtio/virtgpu_display.c:vgdev_output_init
   Cyclomatic Complexity 8 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_conn_mode_valid
   Cyclomatic Complexity 4 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_conn_get_modes
   Cyclomatic Complexity 1 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_conn_destroy
   Cyclomatic Complexity 1 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_crtc_atomic_disable
   Cyclomatic Complexity 1 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_crtc_mode_set_nofb
   Cyclomatic Complexity 2 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_modeset_init
   Cyclomatic Complexity 2 drivers/gpu/drm/virtio/virtgpu_display.c:virtio_gpu_modeset_fini
   Cyclomatic Complexity 1 drivers/gpu/drm/virtio/virtgpu_display.c:_GLOBAL__sub_I_00100_0_virtio_gpu_modeset_init
   Cyclomatic Complexity 1 drivers/gpu/drm/virtio/virtgpu_display.c:_GLOBAL__sub_D_00100_1_virtio_gpu_modeset_init
   cc1: some warnings being treated as errors

vim +276 drivers/gpu/drm/virtio/virtgpu_display.c

   243	
   244	static int vgdev_output_init(struct virtio_gpu_device *vgdev, int index)
   245	{
   246		struct drm_device *dev = vgdev->ddev;
   247		struct virtio_gpu_output *output = vgdev->outputs + index;
   248		struct drm_connector *connector = &output->conn;
   249		struct drm_encoder *encoder = &output->enc;
   250		struct drm_crtc *crtc = &output->crtc;
   251		struct drm_plane *primary, *cursor;
   252	
   253		output->index = index;
   254		if (index == 0) {
   255			output->info.enabled = cpu_to_le32(true);
   256			output->info.r.width = cpu_to_le32(XRES_DEF);
   257			output->info.r.height = cpu_to_le32(YRES_DEF);
   258		}
   259	
   260		primary = virtio_gpu_plane_init(vgdev, DRM_PLANE_TYPE_PRIMARY, index);
   261		if (IS_ERR(primary))
   262			return PTR_ERR(primary);
   263		cursor = virtio_gpu_plane_init(vgdev, DRM_PLANE_TYPE_CURSOR, index);
   264		if (IS_ERR(cursor))
   265			return PTR_ERR(cursor);
   266		drm_crtc_init_with_planes(dev, crtc, primary, cursor,
   267					  &virtio_gpu_crtc_funcs, NULL);
   268		drm_crtc_helper_add(crtc, &virtio_gpu_crtc_helper_funcs);
   269	
   270		drm_connector_init(dev, connector, &virtio_gpu_connector_funcs,
   271				   DRM_MODE_CONNECTOR_VIRTUAL);
   272		drm_connector_helper_add(connector, &virtio_gpu_conn_helper_funcs);
   273		if (vgdev->has_edid)
   274			drm_connector_attach_edid_property(connector);
   275	
 > 276		drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_VIRTUAL);
   277		drm_encoder_helper_add(encoder, &virtio_gpu_enc_helper_funcs);
   278		encoder->possible_crtcs = 1 << index;
   279	
   280		drm_connector_attach_encoder(connector, encoder);
   281		drm_connector_register(connector);
   282		return 0;
   283	}
   284	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 38019 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init()
  2020-03-06 15:18   ` Thomas Zimmermann
@ 2020-03-07 20:08     ` Sam Ravnborg
  2020-03-07 20:34       ` Laurent Pinchart
  2020-03-09  7:24       ` Thomas Zimmermann
  0 siblings, 2 replies; 66+ messages in thread
From: Sam Ravnborg @ 2020-03-07 20:08 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: ludovic.desroches, hamohammed.sa, alexandre.belloni, airlied,
	dri-devel, linux, paul, linux-tegra, thierry.reding,
	Laurent Pinchart, linux-samsung-soc, jy0922.shim, hjc, abrodkin,
	sebastian.reichel, krzk, jonathanh, linux-rockchip, wens,
	tomi.valkeinen, linux-imx, xinliang.liu, kong.kongxinwei,
	puck.chen, s.hauer, alison.wang, jsarha, linux-mediatek,
	matthias.bgg, virtualization, jernej.skrabec,
	rodrigosiqueiramelo, bbrezillon, jingoohan1, sw0312.kim,
	nicolas.ferre, kyungmin.park, kieran.bingham+renesas, kgene,
	kernel, zourongrong, shawnguo, kraxel

Hi Thomas.

On Fri, Mar 06, 2020 at 04:18:52PM +0100, Thomas Zimmermann wrote:
> Hi Laurent
> 
> Am 06.03.20 um 15:22 schrieb Laurent Pinchart:
> > Hi Thomas,
> > 
> > Thank you for the patch.
> > 
> > On Thu, Mar 05, 2020 at 04:59:28PM +0100, Thomas Zimmermann wrote:
> >> A call to drm_simple_encoder_init() initializes an encoder without
> >> further functionality. It only provides the destroy callback to
> >> cleanup the encoder's state. Only few drivers implement more
> >> sophisticated encoders than that. Most drivers implement such a
> >> simple encoder and can use drm_simple_encoder_init() instead.
> >>
> >> The patchset converts drivers where the encoder's instance is
> >> embedded in a larger data structure. The driver releases the
> >> memory during cleanup. Each patch replaces drm_encoder_init() with
> >> drm_simple_encoder_init() and removes the (now unused) driver's
> >> encoder functions.
> >>
> >> While the patchset is fairly large, the indiviual patches are self-
> >> contained and can be merged independently from each other. The
> >> simple-encoder functionality is currently in drm-misc-next, where
> >> these patches could go as well.
> > 
> > I've reviewed the whole series, including verifying that the few
> > instances of struct drm_encoder_funcs that were not declared const were
> > not modified somewhere to add more function pointers.
> > 
> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> 
> Thanks for the detailed review.
> 
> > 
> > for all the patches.
> > 
> > However, I'd like to note that drm_simple_encoder_init() is a bit of a
> > misnommer here. Several of the encoders in those drivers to implement
> > additional functionality. They just expose them through
> > drm_encoder_helper_funcs, not drm_encoder_funcs.
> 
> True. It's called 'simple encoder' for the lack of a better name. It's
> part of the simple KMS helpers, so the name's at least consistent. OTOH
> I always find drm_simple_display_pipe a bad name.
> 
> We can still rename the simple-encoder function without much effort. I'm
> open for suggestions.

IMO this does not belong in drm_simple_kms - but in drm_encoder.
This only occurs to me after looking a bit more on the patches,
you would have loved to get this feedback earlier.

Most users do not need their owm drm_encoder_funcs definition,
and would be happy with the default as provided by drm_simple_*

As the cleanup is handled automatically when the drm device
is teared down (in mode_config_rest()) I considered if we could here
use the drmm_ namespace - but that felt wrong.

My proposal is the following:
- Move the implementation to drm_encoder.c
- Name it drm_encoder_init_nofuncs()

The patches posted in this thread would be a little simpler
as they would loose the added include file.
And the three drivers using the current infrastructure would need a
small update.

I you decide to keep the current approach where the
functions are in drm_simple_* then the full series is:
Acked-by: Sam Ravnborg <sam@ravnborg.org>

But I think moving it to drm_encoder.c would be the approach that would
make it simpler to understand/follow. So that get my (biased) vote.

	Sam
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init()
  2020-03-07 20:08     ` Sam Ravnborg
@ 2020-03-07 20:34       ` Laurent Pinchart
  2020-03-07 20:51         ` Sam Ravnborg
  2020-03-09  7:24       ` Thomas Zimmermann
  1 sibling, 1 reply; 66+ messages in thread
From: Laurent Pinchart @ 2020-03-07 20:34 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: ludovic.desroches, hamohammed.sa, alexandre.belloni, airlied,
	dri-devel, linux, paul, linux-tegra, thierry.reding, kraxel,
	linux-samsung-soc, jy0922.shim, hjc, abrodkin, sebastian.reichel,
	krzk, jonathanh, linux-rockchip, wens, tomi.valkeinen, linux-imx,
	xinliang.liu, kong.kongxinwei, kernel, puck.chen, s.hauer,
	alison.wang, jsarha, linux-mediatek, matthias.bgg,
	virtualization, jernej.skrabec, rodrigosiqueiramelo, bbrezillon,
	jingoohan1, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, kgene, Thomas Zimmermann, zourongrong,
	shawnguo

Hi Sam,

On Sat, Mar 07, 2020 at 09:08:13PM +0100, Sam Ravnborg wrote:
> On Fri, Mar 06, 2020 at 04:18:52PM +0100, Thomas Zimmermann wrote:
> > Am 06.03.20 um 15:22 schrieb Laurent Pinchart:
> > > On Thu, Mar 05, 2020 at 04:59:28PM +0100, Thomas Zimmermann wrote:
> > >> A call to drm_simple_encoder_init() initializes an encoder without
> > >> further functionality. It only provides the destroy callback to
> > >> cleanup the encoder's state. Only few drivers implement more
> > >> sophisticated encoders than that. Most drivers implement such a
> > >> simple encoder and can use drm_simple_encoder_init() instead.
> > >>
> > >> The patchset converts drivers where the encoder's instance is
> > >> embedded in a larger data structure. The driver releases the
> > >> memory during cleanup. Each patch replaces drm_encoder_init() with
> > >> drm_simple_encoder_init() and removes the (now unused) driver's
> > >> encoder functions.
> > >>
> > >> While the patchset is fairly large, the indiviual patches are self-
> > >> contained and can be merged independently from each other. The
> > >> simple-encoder functionality is currently in drm-misc-next, where
> > >> these patches could go as well.
> > > 
> > > I've reviewed the whole series, including verifying that the few
> > > instances of struct drm_encoder_funcs that were not declared const were
> > > not modified somewhere to add more function pointers.
> > > 
> > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > 
> > Thanks for the detailed review.
> > 
> > > for all the patches.
> > > 
> > > However, I'd like to note that drm_simple_encoder_init() is a bit of a
> > > misnommer here. Several of the encoders in those drivers to implement
> > > additional functionality. They just expose them through
> > > drm_encoder_helper_funcs, not drm_encoder_funcs.
> > 
> > True. It's called 'simple encoder' for the lack of a better name. It's
> > part of the simple KMS helpers, so the name's at least consistent. OTOH
> > I always find drm_simple_display_pipe a bad name.
> > 
> > We can still rename the simple-encoder function without much effort. I'm
> > open for suggestions.
> 
> IMO this does not belong in drm_simple_kms - but in drm_encoder.
> This only occurs to me after looking a bit more on the patches,
> you would have loved to get this feedback earlier.
> 
> Most users do not need their owm drm_encoder_funcs definition,
> and would be happy with the default as provided by drm_simple_*
> 
> As the cleanup is handled automatically when the drm device
> is teared down (in mode_config_rest()) I considered if we could here
> use the drmm_ namespace - but that felt wrong.
> 
> My proposal is the following:
> - Move the implementation to drm_encoder.c
> - Name it drm_encoder_init_nofuncs()

Or better, rename the existing drm_encoder_init() to
drm_encoder_init_funcs(), and rename drm_simple_encoder_init() to
drm_encoder_init() ? It's the common case.

> The patches posted in this thread would be a little simpler
> as they would loose the added include file.
> And the three drivers using the current infrastructure would need a
> small update.
> 
> I you decide to keep the current approach where the
> functions are in drm_simple_* then the full series is:
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> 
> But I think moving it to drm_encoder.c would be the approach that would
> make it simpler to understand/follow. So that get my (biased) vote.

-- 
Regards,

Laurent Pinchart
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init()
  2020-03-07 20:34       ` Laurent Pinchart
@ 2020-03-07 20:51         ` Sam Ravnborg
  0 siblings, 0 replies; 66+ messages in thread
From: Sam Ravnborg @ 2020-03-07 20:51 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: ludovic.desroches, hamohammed.sa, alexandre.belloni, airlied,
	dri-devel, linux, paul, linux-tegra, thierry.reding, kraxel,
	linux-samsung-soc, jy0922.shim, hjc, abrodkin, sebastian.reichel,
	krzk, jonathanh, linux-rockchip, wens, tomi.valkeinen, linux-imx,
	xinliang.liu, kong.kongxinwei, kernel, puck.chen, s.hauer,
	alison.wang, jsarha, linux-mediatek, matthias.bgg,
	virtualization, jernej.skrabec, rodrigosiqueiramelo, bbrezillon,
	jingoohan1, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, kgene, Thomas Zimmermann, zourongrong,
	shawnguo

Hi Laurent.

On Sat, Mar 07, 2020 at 10:34:45PM +0200, Laurent Pinchart wrote:
> Hi Sam,
> 
> On Sat, Mar 07, 2020 at 09:08:13PM +0100, Sam Ravnborg wrote:
> > On Fri, Mar 06, 2020 at 04:18:52PM +0100, Thomas Zimmermann wrote:
> > > Am 06.03.20 um 15:22 schrieb Laurent Pinchart:
> > > > On Thu, Mar 05, 2020 at 04:59:28PM +0100, Thomas Zimmermann wrote:
> > > >> A call to drm_simple_encoder_init() initializes an encoder without
> > > >> further functionality. It only provides the destroy callback to
> > > >> cleanup the encoder's state. Only few drivers implement more
> > > >> sophisticated encoders than that. Most drivers implement such a
> > > >> simple encoder and can use drm_simple_encoder_init() instead.
> > > >>
> > > >> The patchset converts drivers where the encoder's instance is
> > > >> embedded in a larger data structure. The driver releases the
> > > >> memory during cleanup. Each patch replaces drm_encoder_init() with
> > > >> drm_simple_encoder_init() and removes the (now unused) driver's
> > > >> encoder functions.
> > > >>
> > > >> While the patchset is fairly large, the indiviual patches are self-
> > > >> contained and can be merged independently from each other. The
> > > >> simple-encoder functionality is currently in drm-misc-next, where
> > > >> these patches could go as well.
> > > > 
> > > > I've reviewed the whole series, including verifying that the few
> > > > instances of struct drm_encoder_funcs that were not declared const were
> > > > not modified somewhere to add more function pointers.
> > > > 
> > > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > 
> > > Thanks for the detailed review.
> > > 
> > > > for all the patches.
> > > > 
> > > > However, I'd like to note that drm_simple_encoder_init() is a bit of a
> > > > misnommer here. Several of the encoders in those drivers to implement
> > > > additional functionality. They just expose them through
> > > > drm_encoder_helper_funcs, not drm_encoder_funcs.
> > > 
> > > True. It's called 'simple encoder' for the lack of a better name. It's
> > > part of the simple KMS helpers, so the name's at least consistent. OTOH
> > > I always find drm_simple_display_pipe a bad name.
> > > 
> > > We can still rename the simple-encoder function without much effort. I'm
> > > open for suggestions.
> > 
> > IMO this does not belong in drm_simple_kms - but in drm_encoder.
> > This only occurs to me after looking a bit more on the patches,
> > you would have loved to get this feedback earlier.
> > 
> > Most users do not need their owm drm_encoder_funcs definition,
> > and would be happy with the default as provided by drm_simple_*
> > 
> > As the cleanup is handled automatically when the drm device
> > is teared down (in mode_config_rest()) I considered if we could here
> > use the drmm_ namespace - but that felt wrong.
> > 
> > My proposal is the following:
> > - Move the implementation to drm_encoder.c
> > - Name it drm_encoder_init_nofuncs()
> 
> Or better, rename the existing drm_encoder_init() to
> drm_encoder_init_funcs(), and rename drm_simple_encoder_init() to
> drm_encoder_init() ? It's the common case.

Agreed. It is a bit more involved which is the only reason I did not
suggest it.

But if we bite the bullet, then maybe do it properly.

Cocinelle for the rescue...

	Sam
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 10/22] drm/mediatek: Use simple encoder
  2020-03-05 15:59 ` [PATCH 10/22] drm/mediatek: " Thomas Zimmermann
@ 2020-03-07 21:26   ` Matthias Brugger
  2020-03-10  2:37   ` CK Hu
  1 sibling, 0 replies; 66+ messages in thread
From: Matthias Brugger @ 2020-03-07 21:26 UTC (permalink / raw)
  To: Thomas Zimmermann, airlied, daniel, sam, abrodkin, bbrezillon,
	nicolas.ferre, alexandre.belloni, ludovic.desroches,
	maarten.lankhorst, mripard, jingoohan1, inki.dae, jy0922.shim,
	sw0312.kim, kyungmin.park, kgene, krzk, stefan, alison.wang,
	patrik.r.jakobsson, xinliang.liu, zourongrong, john.stultz,
	kong.kongxinwei, puck.chen, linux, p.zabel, shawnguo, s.hauer,
	kernel, festevam, linux-imx, paul, ck.hu, laurent.pinchart,
	kieran.bingham+renesas, hjc, heiko, wens, jernej.skrabec,
	thierry.reding, jonathanh, jsarha, tomi.valkeinen, eric, kraxel,
	rodrigosiqueiramelo, hamohammed.sa, sebastian.reichel
  Cc: linux-samsung-soc, dri-devel, virtualization, linux-rockchip,
	linux-mediatek, linux-tegra



On 05/03/2020 16:59, Thomas Zimmermann wrote:
> The mediatak 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: Matthias Brugger <matthias.bgg@gmail.com>

> ---
>  drivers/gpu/drm/mediatek/mtk_dpi.c | 14 +++-----------
>  drivers/gpu/drm/mediatek/mtk_dsi.c | 14 +++-----------
>  2 files changed, 6 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c
> index 14fbe1c09ce9..9c90c58e5acd 100644
> --- a/drivers/gpu/drm/mediatek/mtk_dpi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
> @@ -20,6 +20,7 @@
>  #include <drm/drm_bridge.h>
>  #include <drm/drm_crtc.h>
>  #include <drm/drm_of.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include "mtk_dpi_regs.h"
>  #include "mtk_drm_ddp_comp.h"
> @@ -509,15 +510,6 @@ static int mtk_dpi_set_display_mode(struct mtk_dpi *dpi,
>  	return 0;
>  }
>  
> -static void mtk_dpi_encoder_destroy(struct drm_encoder *encoder)
> -{
> -	drm_encoder_cleanup(encoder);
> -}
> -
> -static const struct drm_encoder_funcs mtk_dpi_encoder_funcs = {
> -	.destroy = mtk_dpi_encoder_destroy,
> -};
> -
>  static bool mtk_dpi_encoder_mode_fixup(struct drm_encoder *encoder,
>  				       const struct drm_display_mode *mode,
>  				       struct drm_display_mode *adjusted_mode)
> @@ -596,8 +588,8 @@ static int mtk_dpi_bind(struct device *dev, struct device *master, void *data)
>  		return ret;
>  	}
>  
> -	ret = drm_encoder_init(drm_dev, &dpi->encoder, &mtk_dpi_encoder_funcs,
> -			       DRM_MODE_ENCODER_TMDS, NULL);
> +	ret = drm_simple_encoder_init(drm_dev, &dpi->encoder,
> +				      DRM_MODE_ENCODER_TMDS);
>  	if (ret) {
>  		dev_err(dev, "Failed to initialize decoder: %d\n", ret);
>  		goto err_unregister;
> diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
> index 0ede69830a9d..a9a25087112f 100644
> --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
> @@ -22,6 +22,7 @@
>  #include <drm/drm_panel.h>
>  #include <drm/drm_print.h>
>  #include <drm/drm_probe_helper.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include "mtk_drm_ddp_comp.h"
>  
> @@ -787,15 +788,6 @@ static void mtk_output_dsi_disable(struct mtk_dsi *dsi)
>  	dsi->enabled = false;
>  }
>  
> -static void mtk_dsi_encoder_destroy(struct drm_encoder *encoder)
> -{
> -	drm_encoder_cleanup(encoder);
> -}
> -
> -static const struct drm_encoder_funcs mtk_dsi_encoder_funcs = {
> -	.destroy = mtk_dsi_encoder_destroy,
> -};
> -
>  static bool mtk_dsi_encoder_mode_fixup(struct drm_encoder *encoder,
>  				       const struct drm_display_mode *mode,
>  				       struct drm_display_mode *adjusted_mode)
> @@ -888,8 +880,8 @@ static int mtk_dsi_create_conn_enc(struct drm_device *drm, struct mtk_dsi *dsi)
>  {
>  	int ret;
>  
> -	ret = drm_encoder_init(drm, &dsi->encoder, &mtk_dsi_encoder_funcs,
> -			       DRM_MODE_ENCODER_DSI, NULL);
> +	ret = drm_simple_encoder_init(drm, &dsi->encoder,
> +				      DRM_MODE_ENCODER_DSI);
>  	if (ret) {
>  		DRM_ERROR("Failed to encoder init to drm\n");
>  		return ret;
> 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init()
  2020-03-07 20:08     ` Sam Ravnborg
  2020-03-07 20:34       ` Laurent Pinchart
@ 2020-03-09  7:24       ` Thomas Zimmermann
  1 sibling, 0 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-09  7:24 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: hamohammed.sa, alexandre.belloni, airlied, dri-devel,
	sebastian.reichel, paul, matthias.bgg, thierry.reding,
	Laurent Pinchart, linux-samsung-soc, jy0922.shim, abrodkin,
	linux, krzk, jonathanh, linux-rockchip, ludovic.desroches,
	tomi.valkeinen, linux-imx, xinliang.liu, kong.kongxinwei,
	virtualization, nicolas.ferre, puck.chen, s.hauer, alison.wang,
	jsarha, linux-mediatek, linux-tegra, wens, jernej.skrabec,
	rodrigosiqueiramelo, bbrezillon, jingoohan1, sw0312.kim, hjc,
	kyungmin.park, kieran.bingham+renesas, kgene, kernel,
	zourongrong, shawnguo, kraxel


[-- Attachment #1.1.1: Type: text/plain, Size: 4068 bytes --]

Hi Sam

Am 07.03.20 um 21:08 schrieb Sam Ravnborg:
> Hi Thomas.
> 
> On Fri, Mar 06, 2020 at 04:18:52PM +0100, Thomas Zimmermann wrote:
>> Hi Laurent
>>
>> Am 06.03.20 um 15:22 schrieb Laurent Pinchart:
>>> Hi Thomas,
>>>
>>> Thank you for the patch.
>>>
>>> On Thu, Mar 05, 2020 at 04:59:28PM +0100, Thomas Zimmermann wrote:
>>>> A call to drm_simple_encoder_init() initializes an encoder without
>>>> further functionality. It only provides the destroy callback to
>>>> cleanup the encoder's state. Only few drivers implement more
>>>> sophisticated encoders than that. Most drivers implement such a
>>>> simple encoder and can use drm_simple_encoder_init() instead.
>>>>
>>>> The patchset converts drivers where the encoder's instance is
>>>> embedded in a larger data structure. The driver releases the
>>>> memory during cleanup. Each patch replaces drm_encoder_init() with
>>>> drm_simple_encoder_init() and removes the (now unused) driver's
>>>> encoder functions.
>>>>
>>>> While the patchset is fairly large, the indiviual patches are self-
>>>> contained and can be merged independently from each other. The
>>>> simple-encoder functionality is currently in drm-misc-next, where
>>>> these patches could go as well.
>>>
>>> I've reviewed the whole series, including verifying that the few
>>> instances of struct drm_encoder_funcs that were not declared const were
>>> not modified somewhere to add more function pointers.
>>>
>>> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>>
>> Thanks for the detailed review.
>>
>>>
>>> for all the patches.
>>>
>>> However, I'd like to note that drm_simple_encoder_init() is a bit of a
>>> misnommer here. Several of the encoders in those drivers to implement
>>> additional functionality. They just expose them through
>>> drm_encoder_helper_funcs, not drm_encoder_funcs.
>>
>> True. It's called 'simple encoder' for the lack of a better name. It's
>> part of the simple KMS helpers, so the name's at least consistent. OTOH
>> I always find drm_simple_display_pipe a bad name.
>>
>> We can still rename the simple-encoder function without much effort. I'm
>> open for suggestions.
> 
> IMO this does not belong in drm_simple_kms - but in drm_encoder.
> This only occurs to me after looking a bit more on the patches,
> you would have loved to get this feedback earlier.

Well, the simple-encoder functionality used to be located in the encoder
code, but Daniel mentioned this is more of a helper and asked me to move
it out of the core. [1] So it ended up with the simple-KMS helpers.

Best regards
Thomas

[1] https://patchwork.freedesktop.org/patch/352370/?series=73130&rev=1

> 
> Most users do not need their owm drm_encoder_funcs definition,
> and would be happy with the default as provided by drm_simple_*
> 
> As the cleanup is handled automatically when the drm device
> is teared down (in mode_config_rest()) I considered if we could here
> use the drmm_ namespace - but that felt wrong.
> 
> My proposal is the following:
> - Move the implementation to drm_encoder.c
> - Name it drm_encoder_init_nofuncs()
> 
> The patches posted in this thread would be a little simpler
> as they would loose the added include file.
> And the three drivers using the current infrastructure would need a
> small update.
> 
> I you decide to keep the current approach where the
> functions are in drm_simple_* then the full series is:
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> 
> But I think moving it to drm_encoder.c would be the approach that would
> make it simpler to understand/follow. So that get my (biased) vote.
> 
> 	Sam
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 05/22] drm/gma500: Use simple encoder
  2020-03-06 21:35   ` Sam Ravnborg
@ 2020-03-09  7:32     ` Thomas Zimmermann
  0 siblings, 0 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-09  7:32 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sebastian.reichel, linux-samsung-soc,
	jy0922.shim, hjc, tomi.valkeinen, abrodkin, kong.kongxinwei,
	jonathanh, xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, puck.chen, s.hauer,
	alison.wang, jsarha, matthias.bgg, wens, kernel, jernej.skrabec,
	kraxel, rodrigosiqueiramelo, bbrezillon, jingoohan1, dri-devel,
	sw0312.kim, nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart


[-- Attachment #1.1.1: Type: text/plain, Size: 16287 bytes --]

Hi Sam

Am 06.03.20 um 22:35 schrieb Sam Ravnborg:
> Hi Thomas.
> 
> On Thu, Mar 05, 2020 at 04:59:33PM +0100, Thomas Zimmermann wrote:
>> The gma500 driver uses empty implementations for some of its encoders.
>> Replace the code with the generic simple encoder.
> This parts looks good.
> 
> 
>> As a side effect, the
>> patch also removes an indirection in the encoder setup for Medfield.
> 
> I failed to see where this was done. Maybe too late for me to review
> patches, so I will stop now.

The indirection is in setting the encoder functions. Defined in
drivers/gpu/drm/gma500/mdfld_output.h, struct panel_funcs.encoder_funcs
is filled by various Medfield backends with encoder callbacks. But it's
always the same and the encoder_funcs field can be removed. A call to
drm_simple_encoder_init() works for all Medfield code.

Best regards
Thomas

> 
> 
> No matter - patch is:
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> 
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> ---
>>  drivers/gpu/drm/gma500/cdv_intel_crt.c     | 14 +++-----------
>>  drivers/gpu/drm/gma500/cdv_intel_dp.c      | 16 +++-------------
>>  drivers/gpu/drm/gma500/cdv_intel_hdmi.c    |  4 ++--
>>  drivers/gpu/drm/gma500/cdv_intel_lvds.c    | 17 +++--------------
>>  drivers/gpu/drm/gma500/mdfld_dsi_dpi.c     |  7 +++----
>>  drivers/gpu/drm/gma500/mdfld_output.h      |  1 -
>>  drivers/gpu/drm/gma500/mdfld_tmd_vid.c     |  6 ------
>>  drivers/gpu/drm/gma500/mdfld_tpo_vid.c     |  6 ------
>>  drivers/gpu/drm/gma500/oaktrail_hdmi.c     | 14 ++------------
>>  drivers/gpu/drm/gma500/oaktrail_lvds.c     |  5 +++--
>>  drivers/gpu/drm/gma500/psb_intel_drv.h     |  1 -
>>  drivers/gpu/drm/gma500/psb_intel_lvds.c    | 18 +++---------------
>>  drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c |  5 -----
>>  13 files changed, 22 insertions(+), 92 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/gma500/cdv_intel_crt.c b/drivers/gpu/drm/gma500/cdv_intel_crt.c
>> index 29c36d63b20e..88535f5aacc5 100644
>> --- a/drivers/gpu/drm/gma500/cdv_intel_crt.c
>> +++ b/drivers/gpu/drm/gma500/cdv_intel_crt.c
>> @@ -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);
>>  
>> diff --git a/drivers/gpu/drm/gma500/cdv_intel_dp.c b/drivers/gpu/drm/gma500/cdv_intel_dp.c
>> index 5772b2dce0d6..13947ec06dbb 100644
>> --- a/drivers/gpu/drm/gma500/cdv_intel_dp.c
>> +++ b/drivers/gpu/drm/gma500/cdv_intel_dp.c
>> @@ -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 {
>> diff --git a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
>> index 1711a41acc16..0d12c6ffbc40 100644
>> --- a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
>> +++ b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
>> @@ -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;
>> diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
>> index ea0a5d9a0acc..18de10e9ff9a 100644
>> --- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
>> +++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
>> @@ -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;
>> diff --git a/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c b/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
>> index d4c65f268922..aa5aa293ddb6 100644
>> --- a/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
>> +++ b/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
>> @@ -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);
>>  
>> diff --git a/drivers/gpu/drm/gma500/mdfld_output.h b/drivers/gpu/drm/gma500/mdfld_output.h
>> index ab2b27c0f037..17a944d70add 100644
>> --- a/drivers/gpu/drm/gma500/mdfld_output.h
>> +++ b/drivers/gpu/drm/gma500/mdfld_output.h
>> @@ -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 *);
>> diff --git a/drivers/gpu/drm/gma500/mdfld_tmd_vid.c b/drivers/gpu/drm/gma500/mdfld_tmd_vid.c
>> index 49c92debb7b2..25e897b98f86 100644
>> --- a/drivers/gpu/drm/gma500/mdfld_tmd_vid.c
>> +++ b/drivers/gpu/drm/gma500/mdfld_tmd_vid.c
>> @@ -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,
>> diff --git a/drivers/gpu/drm/gma500/mdfld_tpo_vid.c b/drivers/gpu/drm/gma500/mdfld_tpo_vid.c
>> index a9420bf9a419..11845978fb0a 100644
>> --- a/drivers/gpu/drm/gma500/mdfld_tpo_vid.c
>> +++ b/drivers/gpu/drm/gma500/mdfld_tpo_vid.c
>> @@ -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,
>> diff --git a/drivers/gpu/drm/gma500/oaktrail_hdmi.c b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
>> index f4370232767d..b25086f252ae 100644
>> --- a/drivers/gpu/drm/gma500/oaktrail_hdmi.c
>> +++ b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
>> @@ -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);
>>  
>> diff --git a/drivers/gpu/drm/gma500/oaktrail_lvds.c b/drivers/gpu/drm/gma500/oaktrail_lvds.c
>> index 582e09597500..2828360153d1 100644
>> --- a/drivers/gpu/drm/gma500/oaktrail_lvds.c
>> +++ b/drivers/gpu/drm/gma500/oaktrail_lvds.c
>> @@ -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;
>> diff --git a/drivers/gpu/drm/gma500/psb_intel_drv.h b/drivers/gpu/drm/gma500/psb_intel_drv.h
>> index 16c6136f778b..fb601983cef0 100644
>> --- a/drivers/gpu/drm/gma500/psb_intel_drv.h
>> +++ b/drivers/gpu/drm/gma500/psb_intel_drv.h
>> @@ -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);
>> diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c b/drivers/gpu/drm/gma500/psb_intel_lvds.c
>> index afaebab7bc17..063c66bb946d 100644
>> --- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
>> +++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
>> @@ -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;
>> diff --git a/drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c b/drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c
>> index 9e8224456ea2..f7e121f4c609 100644
>> --- a/drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c
>> +++ b/drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c
>> @@ -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,
>> -- 
>> 2.25.1

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 01/22] drm/arc: Use simple encoder
  2020-03-06 21:18   ` Sam Ravnborg
@ 2020-03-09  7:55     ` Thomas Zimmermann
  0 siblings, 0 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-09  7:55 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sebastian.reichel, linux-samsung-soc,
	jy0922.shim, hjc, tomi.valkeinen, abrodkin, kong.kongxinwei,
	jonathanh, xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, puck.chen, s.hauer,
	alison.wang, jsarha, matthias.bgg, wens, kernel, jernej.skrabec,
	kraxel, rodrigosiqueiramelo, bbrezillon, jingoohan1, dri-devel,
	sw0312.kim, nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart


[-- Attachment #1.1.1: Type: text/plain, Size: 3678 bytes --]

Hi Sam

Am 06.03.20 um 22:18 schrieb Sam Ravnborg:
> On Thu, Mar 05, 2020 at 04:59:29PM +0100, Thomas Zimmermann wrote:
>> The arc driver uses empty implementations for its encoders. Replace
>> the code with the generic simple encoder.
> 
> We should , as a follow-up patch, embed the encoder in
> arcgpu_drm_private.
> Then we drop the kzalloc() and avoid that life-time challenge.

You're right, there's a devm_kzalloc() for the encoder. I didn't notice
before. And from what I learned from the drmm_ patches, this doesn't
work reliably.

I'll drop this patch, as the series is supposed to handle embedded
encoders. arcgpu will be fixed later when the managed API is ready.

Best regards
Thomas

> 
> This patch looks good for what it does.
> 
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> 
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> ---
>>  drivers/gpu/drm/arc/arcpgu_hdmi.c | 10 +++-------
>>  drivers/gpu/drm/arc/arcpgu_sim.c  |  8 ++------
>>  2 files changed, 5 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/arc/arcpgu_hdmi.c b/drivers/gpu/drm/arc/arcpgu_hdmi.c
>> index 52839934f2fb..780911765e2e 100644
>> --- a/drivers/gpu/drm/arc/arcpgu_hdmi.c
>> +++ b/drivers/gpu/drm/arc/arcpgu_hdmi.c
>> @@ -7,15 +7,12 @@
>>  
>>  #include <drm/drm_bridge.h>
>>  #include <drm/drm_crtc.h>
>> -#include <drm/drm_encoder.h>
>>  #include <drm/drm_device.h>
>> +#include <drm/drm_encoder.h>
>> +#include <drm/drm_simple_kms_helper.h>
>>  
>>  #include "arcpgu.h"
>>  
>> -static struct drm_encoder_funcs arcpgu_drm_encoder_funcs = {
>> -	.destroy = drm_encoder_cleanup,
>> -};
>> -
>>  int arcpgu_drm_hdmi_init(struct drm_device *drm, struct device_node *np)
>>  {
>>  	struct drm_encoder *encoder;
>> @@ -34,8 +31,7 @@ int arcpgu_drm_hdmi_init(struct drm_device *drm, struct device_node *np)
>>  
>>  	encoder->possible_crtcs = 1;
>>  	encoder->possible_clones = 0;
>> -	ret = drm_encoder_init(drm, encoder, &arcpgu_drm_encoder_funcs,
>> -			       DRM_MODE_ENCODER_TMDS, NULL);
>> +	ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
>>  	if (ret)
>>  		return ret;
>>  
>> diff --git a/drivers/gpu/drm/arc/arcpgu_sim.c b/drivers/gpu/drm/arc/arcpgu_sim.c
>> index 37d961668dfe..66ca2c26e339 100644
>> --- a/drivers/gpu/drm/arc/arcpgu_sim.c
>> +++ b/drivers/gpu/drm/arc/arcpgu_sim.c
>> @@ -8,6 +8,7 @@
>>  #include <drm/drm_atomic_helper.h>
>>  #include <drm/drm_device.h>
>>  #include <drm/drm_probe_helper.h>
>> +#include <drm/drm_simple_kms_helper.h>
>>  
>>  #include "arcpgu.h"
>>  
>> @@ -50,10 +51,6 @@ static const struct drm_connector_funcs arcpgu_drm_connector_funcs = {
>>  	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
>>  };
>>  
>> -static struct drm_encoder_funcs arcpgu_drm_encoder_funcs = {
>> -	.destroy = drm_encoder_cleanup,
>> -};
>> -
>>  int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np)
>>  {
>>  	struct arcpgu_drm_connector *arcpgu_connector;
>> @@ -68,8 +65,7 @@ int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np)
>>  	encoder->possible_crtcs = 1;
>>  	encoder->possible_clones = 0;
>>  
>> -	ret = drm_encoder_init(drm, encoder, &arcpgu_drm_encoder_funcs,
>> -			       DRM_MODE_ENCODER_VIRTUAL, NULL);
>> +	ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_VIRTUAL);
>>  	if (ret)
>>  		return ret;
>>  
>> -- 
>> 2.25.1

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 10/22] drm/mediatek: Use simple encoder
  2020-03-05 15:59 ` [PATCH 10/22] drm/mediatek: " Thomas Zimmermann
  2020-03-07 21:26   ` Matthias Brugger
@ 2020-03-10  2:37   ` CK Hu
  1 sibling, 0 replies; 66+ messages in thread
From: CK Hu @ 2020-03-10  2:37 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, puck.chen, s.hauer,
	alison.wang, jsarha, matthias.bgg, wens, kernel, jernej.skrabec,
	kraxel, rodrigosiqueiramelo, tomi.valkeinen, bbrezillon,
	jingoohan1, dri-devel, sw0312.kim, nicolas.ferre, kyungmin.park,
	kieran.bingham+renesas, zourongrong, linux-mediatek, shawnguo,
	laurent.pinchart

Hi, Thomas:

On Thu, 2020-03-05 at 16:59 +0100, Thomas Zimmermann wrote:
> The mediatak driver uses empty implementations for its encoders. Replace
> the code with the generic simple encoder.
> 

Acked-by: CK Hu <ck.hu@mediatek.com>

> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  drivers/gpu/drm/mediatek/mtk_dpi.c | 14 +++-----------
>  drivers/gpu/drm/mediatek/mtk_dsi.c | 14 +++-----------
>  2 files changed, 6 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c
> index 14fbe1c09ce9..9c90c58e5acd 100644
> --- a/drivers/gpu/drm/mediatek/mtk_dpi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
> @@ -20,6 +20,7 @@
>  #include <drm/drm_bridge.h>
>  #include <drm/drm_crtc.h>
>  #include <drm/drm_of.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include "mtk_dpi_regs.h"
>  #include "mtk_drm_ddp_comp.h"
> @@ -509,15 +510,6 @@ static int mtk_dpi_set_display_mode(struct mtk_dpi *dpi,
>  	return 0;
>  }
>  
> -static void mtk_dpi_encoder_destroy(struct drm_encoder *encoder)
> -{
> -	drm_encoder_cleanup(encoder);
> -}
> -
> -static const struct drm_encoder_funcs mtk_dpi_encoder_funcs = {
> -	.destroy = mtk_dpi_encoder_destroy,
> -};
> -
>  static bool mtk_dpi_encoder_mode_fixup(struct drm_encoder *encoder,
>  				       const struct drm_display_mode *mode,
>  				       struct drm_display_mode *adjusted_mode)
> @@ -596,8 +588,8 @@ static int mtk_dpi_bind(struct device *dev, struct device *master, void *data)
>  		return ret;
>  	}
>  
> -	ret = drm_encoder_init(drm_dev, &dpi->encoder, &mtk_dpi_encoder_funcs,
> -			       DRM_MODE_ENCODER_TMDS, NULL);
> +	ret = drm_simple_encoder_init(drm_dev, &dpi->encoder,
> +				      DRM_MODE_ENCODER_TMDS);
>  	if (ret) {
>  		dev_err(dev, "Failed to initialize decoder: %d\n", ret);
>  		goto err_unregister;
> diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
> index 0ede69830a9d..a9a25087112f 100644
> --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
> @@ -22,6 +22,7 @@
>  #include <drm/drm_panel.h>
>  #include <drm/drm_print.h>
>  #include <drm/drm_probe_helper.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  #include "mtk_drm_ddp_comp.h"
>  
> @@ -787,15 +788,6 @@ static void mtk_output_dsi_disable(struct mtk_dsi *dsi)
>  	dsi->enabled = false;
>  }
>  
> -static void mtk_dsi_encoder_destroy(struct drm_encoder *encoder)
> -{
> -	drm_encoder_cleanup(encoder);
> -}
> -
> -static const struct drm_encoder_funcs mtk_dsi_encoder_funcs = {
> -	.destroy = mtk_dsi_encoder_destroy,
> -};
> -
>  static bool mtk_dsi_encoder_mode_fixup(struct drm_encoder *encoder,
>  				       const struct drm_display_mode *mode,
>  				       struct drm_display_mode *adjusted_mode)
> @@ -888,8 +880,8 @@ static int mtk_dsi_create_conn_enc(struct drm_device *drm, struct mtk_dsi *dsi)
>  {
>  	int ret;
>  
> -	ret = drm_encoder_init(drm, &dsi->encoder, &mtk_dsi_encoder_funcs,
> -			       DRM_MODE_ENCODER_DSI, NULL);
> +	ret = drm_simple_encoder_init(drm, &dsi->encoder,
> +				      DRM_MODE_ENCODER_DSI);
>  	if (ret) {
>  		DRM_ERROR("Failed to encoder init to drm\n");
>  		return ret;

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 20/22] drm/vkms: Use simple encoder
  2020-03-05 15:59 ` [PATCH 20/22] drm/vkms: " Thomas Zimmermann
  2020-03-06  0:24   ` kbuild test robot
  2020-03-07 13:59   ` kbuild test robot
@ 2020-03-24 11:59   ` Rodrigo Siqueira
  2020-03-31  9:20     ` Thomas Zimmermann
  2020-04-01  7:17     ` Thomas Zimmermann
  2 siblings, 2 replies; 66+ messages in thread
From: Rodrigo Siqueira @ 2020-03-24 11:59 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, puck.chen, s.hauer,
	alison.wang, jsarha, matthias.bgg, wens, kernel, jernej.skrabec,
	kraxel, tomi.valkeinen, bbrezillon, jingoohan1, dri-devel,
	sw0312.kim, nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart


[-- Attachment #1.1: Type: text/plain, Size: 2202 bytes --]

Hi Thomas,

First of all, thanks for your patch!

I applied all your series, compiled it, and when I tried
`make INSTALL_MOD_PATH=/PATH/ modules_instal` I got the following
message:

 depmod: ERROR: Cycle detected: drm_kms_helper -> drm -> drm_kms_helper
 depmod: ERROR: Found 2 modules in dependency cycles!
 make: *** [Makefile:1317: _modinst_post] Error 1

I cleaned up my local files and tried again, but I got the same error;
If I just use `drm-misc-next` everything is fine.  Did I miss something?

Thanks

On 03/05, Thomas Zimmermann wrote:
> The vkms driver uses an empty implementation for its encoder. Replace
> the code with the generic simple encoder.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  drivers/gpu/drm/vkms/vkms_output.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/vkms/vkms_output.c b/drivers/gpu/drm/vkms/vkms_output.c
> index fb1941a6522c..85afb77e97f0 100644
> --- a/drivers/gpu/drm/vkms/vkms_output.c
> +++ b/drivers/gpu/drm/vkms/vkms_output.c
> @@ -3,6 +3,7 @@
>  #include "vkms_drv.h"
>  #include <drm/drm_atomic_helper.h>
>  #include <drm/drm_probe_helper.h>
> +#include <drm/drm_simple_kms_helper.h>
>  
>  static void vkms_connector_destroy(struct drm_connector *connector)
>  {
> @@ -17,10 +18,6 @@ static const struct drm_connector_funcs vkms_connector_funcs = {
>  	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
>  };
>  
> -static const struct drm_encoder_funcs vkms_encoder_funcs = {
> -	.destroy = drm_encoder_cleanup,
> -};
> -
>  static int vkms_conn_get_modes(struct drm_connector *connector)
>  {
>  	int count;
> @@ -70,8 +67,7 @@ int vkms_output_init(struct vkms_device *vkmsdev, int index)
>  
>  	drm_connector_helper_add(connector, &vkms_conn_helper_funcs);
>  
> -	ret = drm_encoder_init(dev, encoder, &vkms_encoder_funcs,
> -			       DRM_MODE_ENCODER_VIRTUAL, NULL);
> +	ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_VIRTUAL);
>  	if (ret) {
>  		DRM_ERROR("Failed to init encoder\n");
>  		goto err_encoder;
> -- 
> 2.25.1
> 

-- 
Rodrigo Siqueira
https://siqueira.tech

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 20/22] drm/vkms: Use simple encoder
  2020-03-24 11:59   ` Rodrigo Siqueira
@ 2020-03-31  9:20     ` Thomas Zimmermann
  2020-04-01  7:17     ` Thomas Zimmermann
  1 sibling, 0 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-03-31  9:20 UTC (permalink / raw)
  To: Rodrigo Siqueira
  Cc: hamohammed.sa, alexandre.belloni, airlied, linux, paul,
	thierry.reding, krzk, sam, sebastian.reichel, linux-samsung-soc,
	jy0922.shim, hjc, abrodkin, kong.kongxinwei, jonathanh,
	xinliang.liu, ludovic.desroches, kgene, linux-imx,
	linux-rockchip, virtualization, linux-tegra, puck.chen, s.hauer,
	alison.wang, jsarha, matthias.bgg, wens, kernel, jernej.skrabec,
	kraxel, tomi.valkeinen, bbrezillon, jingoohan1, dri-devel,
	sw0312.kim, nicolas.ferre, kyungmin.park, kieran.bingham+renesas,
	zourongrong, linux-mediatek, shawnguo, laurent.pinchart


[-- Attachment #1.1.1: Type: text/plain, Size: 2592 bytes --]

Hi

Am 24.03.20 um 12:59 schrieb Rodrigo Siqueira:
> Hi Thomas,
> 
> First of all, thanks for your patch!
> 
> I applied all your series, compiled it, and when I tried
> `make INSTALL_MOD_PATH=/PATH/ modules_instal` I got the following
> message:
> 
>  depmod: ERROR: Cycle detected: drm_kms_helper -> drm -> drm_kms_helper
>  depmod: ERROR: Found 2 modules in dependency cycles!
>  make: *** [Makefile:1317: _modinst_post] Error 1
> 
> I cleaned up my local files and tried again, but I got the same error;
> If I just use `drm-misc-next` everything is fine.  Did I miss something?

I didn't change any module dependencies. Does it happen without this
patches?

Best regards
Thomas

> 
> Thanks
> 
> On 03/05, Thomas Zimmermann wrote:
>> The vkms driver uses an empty implementation for its encoder. Replace
>> the code with the generic simple encoder.
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> ---
>>  drivers/gpu/drm/vkms/vkms_output.c | 8 ++------
>>  1 file changed, 2 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/vkms/vkms_output.c b/drivers/gpu/drm/vkms/vkms_output.c
>> index fb1941a6522c..85afb77e97f0 100644
>> --- a/drivers/gpu/drm/vkms/vkms_output.c
>> +++ b/drivers/gpu/drm/vkms/vkms_output.c
>> @@ -3,6 +3,7 @@
>>  #include "vkms_drv.h"
>>  #include <drm/drm_atomic_helper.h>
>>  #include <drm/drm_probe_helper.h>
>> +#include <drm/drm_simple_kms_helper.h>
>>  
>>  static void vkms_connector_destroy(struct drm_connector *connector)
>>  {
>> @@ -17,10 +18,6 @@ static const struct drm_connector_funcs vkms_connector_funcs = {
>>  	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
>>  };
>>  
>> -static const struct drm_encoder_funcs vkms_encoder_funcs = {
>> -	.destroy = drm_encoder_cleanup,
>> -};
>> -
>>  static int vkms_conn_get_modes(struct drm_connector *connector)
>>  {
>>  	int count;
>> @@ -70,8 +67,7 @@ int vkms_output_init(struct vkms_device *vkmsdev, int index)
>>  
>>  	drm_connector_helper_add(connector, &vkms_conn_helper_funcs);
>>  
>> -	ret = drm_encoder_init(dev, encoder, &vkms_encoder_funcs,
>> -			       DRM_MODE_ENCODER_VIRTUAL, NULL);
>> +	ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_VIRTUAL);
>>  	if (ret) {
>>  		DRM_ERROR("Failed to init encoder\n");
>>  		goto err_encoder;
>> -- 
>> 2.25.1
>>
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 20/22] drm/vkms: Use simple encoder
  2020-03-24 11:59   ` Rodrigo Siqueira
  2020-03-31  9:20     ` Thomas Zimmermann
@ 2020-04-01  7:17     ` Thomas Zimmermann
  1 sibling, 0 replies; 66+ messages in thread
From: Thomas Zimmermann @ 2020-04-01  7:17 UTC (permalink / raw)
  To: Rodrigo Siqueira
  Cc: hamohammed.sa, alexandre.belloni, airlied, dri-devel,
	sebastian.reichel, paul, matthias.bgg, wens, thierry.reding,
	kraxel, sam, linux-samsung-soc, jy0922.shim, linux-rockchip,
	tomi.valkeinen, abrodkin, linux, krzk, jonathanh, xinliang.liu,
	kong.kongxinwei, kgene, linux-imx, nicolas.ferre, puck.chen,
	s.hauer, alison.wang, jsarha, linux-mediatek, linux-tegra,
	virtualization, jernej.skrabec, bbrezillon, jingoohan1,
	sw0312.kim, hjc, kyungmin.park, kieran.bingham+renesas,
	ludovic.desroches, kernel, zourongrong, shawnguo,
	laurent.pinchart


[-- Attachment #1.1.1: Type: text/plain, Size: 2852 bytes --]

Hi

Am 24.03.20 um 12:59 schrieb Rodrigo Siqueira:
> Hi Thomas,
> 
> First of all, thanks for your patch!
> 
> I applied all your series, compiled it, and when I tried
> `make INSTALL_MOD_PATH=/PATH/ modules_instal` I got the following
> message:
> 
>  depmod: ERROR: Cycle detected: drm_kms_helper -> drm -> drm_kms_helper
>  depmod: ERROR: Found 2 modules in dependency cycles!
>  make: *** [Makefile:1317: _modinst_post] Error 1
> 
> I cleaned up my local files and tried again, but I got the same error;
> If I just use `drm-misc-next` everything is fine.  Did I miss something?

I figured out that this problem is caused by the patch for the writeback
encoder, which is located in the DRM core. I'll drop the patch. Thanks
for testing!

Best regards
Thomas

> 
> Thanks
> 
> On 03/05, Thomas Zimmermann wrote:
>> The vkms driver uses an empty implementation for its encoder. Replace
>> the code with the generic simple encoder.
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> ---
>>  drivers/gpu/drm/vkms/vkms_output.c | 8 ++------
>>  1 file changed, 2 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/vkms/vkms_output.c b/drivers/gpu/drm/vkms/vkms_output.c
>> index fb1941a6522c..85afb77e97f0 100644
>> --- a/drivers/gpu/drm/vkms/vkms_output.c
>> +++ b/drivers/gpu/drm/vkms/vkms_output.c
>> @@ -3,6 +3,7 @@
>>  #include "vkms_drv.h"
>>  #include <drm/drm_atomic_helper.h>
>>  #include <drm/drm_probe_helper.h>
>> +#include <drm/drm_simple_kms_helper.h>
>>  
>>  static void vkms_connector_destroy(struct drm_connector *connector)
>>  {
>> @@ -17,10 +18,6 @@ static const struct drm_connector_funcs vkms_connector_funcs = {
>>  	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
>>  };
>>  
>> -static const struct drm_encoder_funcs vkms_encoder_funcs = {
>> -	.destroy = drm_encoder_cleanup,
>> -};
>> -
>>  static int vkms_conn_get_modes(struct drm_connector *connector)
>>  {
>>  	int count;
>> @@ -70,8 +67,7 @@ int vkms_output_init(struct vkms_device *vkmsdev, int index)
>>  
>>  	drm_connector_helper_add(connector, &vkms_conn_helper_funcs);
>>  
>> -	ret = drm_encoder_init(dev, encoder, &vkms_encoder_funcs,
>> -			       DRM_MODE_ENCODER_VIRTUAL, NULL);
>> +	ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_VIRTUAL);
>>  	if (ret) {
>>  		DRM_ERROR("Failed to init encoder\n");
>>  		goto err_encoder;
>> -- 
>> 2.25.1
>>
> 
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

end of thread, other threads:[~2020-04-01  7:17 UTC | newest]

Thread overview: 66+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-05 15:59 [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Thomas Zimmermann
2020-03-05 15:59 ` [PATCH 01/22] drm/arc: Use simple encoder Thomas Zimmermann
2020-03-05 23:48   ` kbuild test robot
2020-03-06 21:18   ` Sam Ravnborg
2020-03-09  7:55     ` Thomas Zimmermann
2020-03-05 15:59 ` [PATCH 02/22] drm/atmel-hlcdc: " Thomas Zimmermann
2020-03-06  0:32   ` kbuild test robot
2020-03-06 21:26   ` Sam Ravnborg
2020-03-05 15:59 ` [PATCH 03/22] drm/exynos: " Thomas Zimmermann
2020-03-06  0:55   ` kbuild test robot
2020-03-06  5:14   ` kbuild test robot
2020-03-06 21:28   ` Sam Ravnborg
2020-03-05 15:59 ` [PATCH 04/22] drm/fsl-dcu: " Thomas Zimmermann
2020-03-06  0:02   ` kbuild test robot
2020-03-05 15:59 ` [PATCH 05/22] drm/gma500: " Thomas Zimmermann
2020-03-06  0:44   ` kbuild test robot
2020-03-06 21:35   ` Sam Ravnborg
2020-03-09  7:32     ` Thomas Zimmermann
2020-03-05 15:59 ` [PATCH 06/22] drm/hisilicon/kirin: " Thomas Zimmermann
2020-03-06  6:16   ` kbuild test robot
2020-03-05 15:59 ` [PATCH 07/22] drm/i2c/tda998x: " Thomas Zimmermann
2020-03-06  7:30   ` kbuild test robot
2020-03-07 15:40   ` kbuild test robot
2020-03-05 15:59 ` [PATCH 08/22] drm/imx: " Thomas Zimmermann
2020-03-05 15:59 ` [PATCH 09/22] drm/ingenic: " Thomas Zimmermann
2020-03-05 15:59 ` [PATCH 10/22] drm/mediatek: " Thomas Zimmermann
2020-03-07 21:26   ` Matthias Brugger
2020-03-10  2:37   ` CK Hu
2020-03-05 15:59 ` [PATCH 11/22] drm/rcar-du: " Thomas Zimmermann
2020-03-06  8:43   ` kbuild test robot
2020-03-05 15:59 ` [PATCH 12/22] drm/rockchip: " Thomas Zimmermann
2020-03-05 23:59   ` kbuild test robot
2020-03-06 10:05   ` kbuild test robot
2020-03-05 15:59 ` [PATCH 13/22] drm/shmobile: " Thomas Zimmermann
2020-03-05 15:59 ` [PATCH 14/22] drm/sun4i: " Thomas Zimmermann
2020-03-06 11:12   ` kbuild test robot
2020-03-05 15:59 ` [PATCH 15/22] drm/tegra: " Thomas Zimmermann
2020-03-06 12:38   ` kbuild test robot
2020-03-05 15:59 ` [PATCH 16/22] drm/tidss: " Thomas Zimmermann
2020-03-06 16:02   ` Jyri Sarha
2020-03-05 15:59 ` [PATCH 17/22] drm/tilcdc: " Thomas Zimmermann
2020-03-06 16:03   ` Jyri Sarha
2020-03-05 15:59 ` [PATCH 18/22] drm/vc4: " Thomas Zimmermann
2020-03-05 17:03   ` Eric Anholt
2020-03-06 13:54   ` kbuild test robot
2020-03-05 15:59 ` [PATCH 19/22] drm/virtgpu: " Thomas Zimmermann
2020-03-07 15:40   ` kbuild test robot
2020-03-05 15:59 ` [PATCH 20/22] drm/vkms: " Thomas Zimmermann
2020-03-06  0:24   ` kbuild test robot
2020-03-07 13:59   ` kbuild test robot
2020-03-24 11:59   ` Rodrigo Siqueira
2020-03-31  9:20     ` Thomas Zimmermann
2020-04-01  7:17     ` Thomas Zimmermann
2020-03-05 15:59 ` [PATCH 21/22] drm/writeback: " Thomas Zimmermann
2020-03-06  0:54   ` kbuild test robot
2020-03-06  1:17   ` kbuild test robot
2020-03-06 14:54   ` kbuild test robot
2020-03-05 15:59 ` [PATCH 22/22] drm/zte: " Thomas Zimmermann
2020-03-06 10:56 ` [PATCH 00/22] drm: Convert drivers to drm_simple_encoder_init() Daniel Vetter
2020-03-06 15:10   ` Thomas Zimmermann
2020-03-06 14:22 ` Laurent Pinchart
2020-03-06 15:18   ` Thomas Zimmermann
2020-03-07 20:08     ` Sam Ravnborg
2020-03-07 20:34       ` Laurent Pinchart
2020-03-07 20:51         ` Sam Ravnborg
2020-03-09  7:24       ` Thomas Zimmermann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).