aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/omapdrm/omap_encoder.c
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2018-05-31 16:14:43 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2018-09-03 09:13:29 -0400
commitd96aaada55553b9e4264a2f2c8cc9599f027cd28 (patch)
tree3b11a16ffa29042aa5403199b4de68248cdd2b9f /drivers/gpu/drm/omapdrm/omap_encoder.c
parent70f9cbfc56a3239ff65796e024b4bbf653d1e0ba (diff)
drm/omap: Pass both output and display omap_dss_device to encoder init
The drm_encoder implementation requires access to the omap_dss_device corresponding to the display, which is passed to its initialization function and stored internally. Clean up of the HDMI mode and infoframe handling will require access to the output omap_dss_device. To prepare for that, pass it to the encoder initialization function and store it internally as well. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_encoder.c')
-rw-r--r--drivers/gpu/drm/omapdrm/omap_encoder.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_encoder.c b/drivers/gpu/drm/omapdrm/omap_encoder.c
index 87e2b3799a45..2689ae74ea60 100644
--- a/drivers/gpu/drm/omapdrm/omap_encoder.c
+++ b/drivers/gpu/drm/omapdrm/omap_encoder.c
@@ -36,7 +36,8 @@
36 */ 36 */
37struct omap_encoder { 37struct omap_encoder {
38 struct drm_encoder base; 38 struct drm_encoder base;
39 struct omap_dss_device *dssdev; 39 struct omap_dss_device *output;
40 struct omap_dss_device *display;
40}; 41};
41 42
42static void omap_encoder_destroy(struct drm_encoder *encoder) 43static void omap_encoder_destroy(struct drm_encoder *encoder)
@@ -57,7 +58,7 @@ static void omap_encoder_mode_set(struct drm_encoder *encoder,
57{ 58{
58 struct drm_device *dev = encoder->dev; 59 struct drm_device *dev = encoder->dev;
59 struct omap_encoder *omap_encoder = to_omap_encoder(encoder); 60 struct omap_encoder *omap_encoder = to_omap_encoder(encoder);
60 struct omap_dss_device *dssdev = omap_encoder->dssdev; 61 struct omap_dss_device *dssdev = omap_encoder->display;
61 struct drm_connector *connector; 62 struct drm_connector *connector;
62 bool hdmi_mode; 63 bool hdmi_mode;
63 int r; 64 int r;
@@ -86,7 +87,7 @@ static void omap_encoder_mode_set(struct drm_encoder *encoder,
86static void omap_encoder_disable(struct drm_encoder *encoder) 87static void omap_encoder_disable(struct drm_encoder *encoder)
87{ 88{
88 struct omap_encoder *omap_encoder = to_omap_encoder(encoder); 89 struct omap_encoder *omap_encoder = to_omap_encoder(encoder);
89 struct omap_dss_device *dssdev = omap_encoder->dssdev; 90 struct omap_dss_device *dssdev = omap_encoder->display;
90 91
91 dssdev->ops->disable(dssdev); 92 dssdev->ops->disable(dssdev);
92} 93}
@@ -97,7 +98,7 @@ static int omap_encoder_update(struct drm_encoder *encoder,
97{ 98{
98 struct drm_device *dev = encoder->dev; 99 struct drm_device *dev = encoder->dev;
99 struct omap_encoder *omap_encoder = to_omap_encoder(encoder); 100 struct omap_encoder *omap_encoder = to_omap_encoder(encoder);
100 struct omap_dss_device *dssdev = omap_encoder->dssdev; 101 struct omap_dss_device *dssdev = omap_encoder->display;
101 int ret; 102 int ret;
102 103
103 if (dssdev->ops->check_timings) { 104 if (dssdev->ops->check_timings) {
@@ -127,7 +128,7 @@ static int omap_encoder_update(struct drm_encoder *encoder,
127static void omap_encoder_enable(struct drm_encoder *encoder) 128static void omap_encoder_enable(struct drm_encoder *encoder)
128{ 129{
129 struct omap_encoder *omap_encoder = to_omap_encoder(encoder); 130 struct omap_encoder *omap_encoder = to_omap_encoder(encoder);
130 struct omap_dss_device *dssdev = omap_encoder->dssdev; 131 struct omap_dss_device *dssdev = omap_encoder->display;
131 int r; 132 int r;
132 133
133 omap_encoder_update(encoder, omap_crtc_channel(encoder->crtc), 134 omap_encoder_update(encoder, omap_crtc_channel(encoder->crtc),
@@ -156,7 +157,8 @@ static const struct drm_encoder_helper_funcs omap_encoder_helper_funcs = {
156 157
157/* initialize encoder */ 158/* initialize encoder */
158struct drm_encoder *omap_encoder_init(struct drm_device *dev, 159struct drm_encoder *omap_encoder_init(struct drm_device *dev,
159 struct omap_dss_device *dssdev) 160 struct omap_dss_device *output,
161 struct omap_dss_device *display)
160{ 162{
161 struct drm_encoder *encoder = NULL; 163 struct drm_encoder *encoder = NULL;
162 struct omap_encoder *omap_encoder; 164 struct omap_encoder *omap_encoder;
@@ -165,7 +167,8 @@ struct drm_encoder *omap_encoder_init(struct drm_device *dev,
165 if (!omap_encoder) 167 if (!omap_encoder)
166 goto fail; 168 goto fail;
167 169
168 omap_encoder->dssdev = dssdev; 170 omap_encoder->output = output;
171 omap_encoder->display = display;
169 172
170 encoder = &omap_encoder->base; 173 encoder = &omap_encoder->base;
171 174