drm: rcar-du: Replace drm_encoder with drm_slave_encoder
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Sun, 30 Mar 2014 23:52:01 +0000 (01:52 +0200)
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Wed, 26 Nov 2014 18:09:38 +0000 (20:09 +0200)
DRM slave encoders require their associated struct drm_encoder instance
to be embedded in a struct drm_slave_encoder. This makes processing
encoders regardless of their types needlessly and painfully complex in
drivers that use a mix of slave encoders and custom encoders. Such a
driver will need to either create drm_slave_encoder instances that fake
their embedded encoder instance, or to turn all drm_encoder instances
into drm_slave_encoder instances.

Between the two evils, one must choose the lesser. Use drm_slave_encoder
everywhere.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
drivers/gpu/drm/rcar-du/rcar_du_encoder.h

index c6334b4280d96200a2053531e28bed3be86b6b64..c4dccdbcff33e46b30a28f818ef00612832b2792 100644 (file)
@@ -15,6 +15,7 @@
 #define __RCAR_DU_ENCODER_H__
 
 #include <drm/drm_crtc.h>
+#include <drm/drm_encoder_slave.h>
 
 struct rcar_du_device;
 struct rcar_du_lvdsenc;
@@ -27,15 +28,15 @@ enum rcar_du_encoder_type {
 };
 
 struct rcar_du_encoder {
-       struct drm_encoder encoder;
+       struct drm_encoder_slave slave;
        enum rcar_du_output output;
        struct rcar_du_lvdsenc *lvds;
 };
 
 #define to_rcar_encoder(e) \
-       container_of(e, struct rcar_du_encoder, encoder)
+       container_of(e, struct rcar_du_encoder, slave.base)
 
-#define rcar_encoder_to_drm_encoder(e) (&(e)->encoder)
+#define rcar_encoder_to_drm_encoder(e) (&(e)->slave.base)
 
 struct rcar_du_connector {
        struct drm_connector connector;