diff options
author | Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> | 2014-03-30 19:52:01 -0400 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> | 2014-11-26 13:09:38 -0500 |
commit | 69746b4112e3c83442c1df59b7011ab3c5ed2d5a (patch) | |
tree | 5dd309f52f2e67f1f736a9414b707984e0882904 | |
parent | 4b96b70cfa465550eb9d7112c28e8b5a4093e022 (diff) |
drm: rcar-du: Replace drm_encoder with drm_slave_encoder
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>
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_encoder.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_encoder.h b/drivers/gpu/drm/rcar-du/rcar_du_encoder.h index c6334b4280d9..c4dccdbcff33 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_encoder.h +++ b/drivers/gpu/drm/rcar-du/rcar_du_encoder.h | |||
@@ -15,6 +15,7 @@ | |||
15 | #define __RCAR_DU_ENCODER_H__ | 15 | #define __RCAR_DU_ENCODER_H__ |
16 | 16 | ||
17 | #include <drm/drm_crtc.h> | 17 | #include <drm/drm_crtc.h> |
18 | #include <drm/drm_encoder_slave.h> | ||
18 | 19 | ||
19 | struct rcar_du_device; | 20 | struct rcar_du_device; |
20 | struct rcar_du_lvdsenc; | 21 | struct rcar_du_lvdsenc; |
@@ -27,15 +28,15 @@ enum rcar_du_encoder_type { | |||
27 | }; | 28 | }; |
28 | 29 | ||
29 | struct rcar_du_encoder { | 30 | struct rcar_du_encoder { |
30 | struct drm_encoder encoder; | 31 | struct drm_encoder_slave slave; |
31 | enum rcar_du_output output; | 32 | enum rcar_du_output output; |
32 | struct rcar_du_lvdsenc *lvds; | 33 | struct rcar_du_lvdsenc *lvds; |
33 | }; | 34 | }; |
34 | 35 | ||
35 | #define to_rcar_encoder(e) \ | 36 | #define to_rcar_encoder(e) \ |
36 | container_of(e, struct rcar_du_encoder, encoder) | 37 | container_of(e, struct rcar_du_encoder, slave.base) |
37 | 38 | ||
38 | #define rcar_encoder_to_drm_encoder(e) (&(e)->encoder) | 39 | #define rcar_encoder_to_drm_encoder(e) (&(e)->slave.base) |
39 | 40 | ||
40 | struct rcar_du_connector { | 41 | struct rcar_du_connector { |
41 | struct drm_connector connector; | 42 | struct drm_connector connector; |