Skip to content

Commit 47a3ee2

Browse files
pinchartltomba
authored andcommitted
drm/omap: Pass both output and display omap_dss_device to connector init
The drm_connector implementation requires access to the omap_dss_device corresponding to the display, which is passed to its initialization function and stored internally. Refactoring of the timings operations will require access to the output omap_dss_device. To prepare for that, pass it to the connector 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>
1 parent 7805d1e commit 47a3ee2

File tree

3 files changed

+21
-16
lines changed

3 files changed

+21
-16
lines changed

drivers/gpu/drm/omapdrm/omap_connector.c

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929

3030
struct omap_connector {
3131
struct drm_connector base;
32-
struct omap_dss_device *dssdev;
32+
struct omap_dss_device *output;
33+
struct omap_dss_device *display;
3334
struct omap_dss_device *hpd;
3435
bool hdmi_mode;
3536
};
@@ -104,7 +105,7 @@ omap_connector_find_device(struct drm_connector *connector,
104105
struct omap_connector *omap_connector = to_omap_connector(connector);
105106
struct omap_dss_device *dssdev;
106107

107-
for (dssdev = omap_connector->dssdev; dssdev; dssdev = dssdev->src) {
108+
for (dssdev = omap_connector->display; dssdev; dssdev = dssdev->src) {
108109
if (dssdev->ops_flags & op)
109110
return dssdev;
110111
}
@@ -129,7 +130,7 @@ static enum drm_connector_status omap_connector_detect(
129130

130131
omap_connector_hpd_notify(connector, dssdev->src, status);
131132
} else {
132-
switch (omap_connector->dssdev->type) {
133+
switch (omap_connector->display->type) {
133134
case OMAP_DISPLAY_TYPE_DPI:
134135
case OMAP_DISPLAY_TYPE_DBI:
135136
case OMAP_DISPLAY_TYPE_SDI:
@@ -142,7 +143,7 @@ static enum drm_connector_status omap_connector_detect(
142143
}
143144
}
144145

145-
VERB("%s: %d (force=%d)", omap_connector->dssdev->name, status, force);
146+
VERB("%s: %d (force=%d)", omap_connector->display->name, status, force);
146147

147148
return status;
148149
}
@@ -151,7 +152,7 @@ static void omap_connector_destroy(struct drm_connector *connector)
151152
{
152153
struct omap_connector *omap_connector = to_omap_connector(connector);
153154

154-
DBG("%s", omap_connector->dssdev->name);
155+
DBG("%s", omap_connector->display->name);
155156

156157
if (omap_connector->hpd) {
157158
struct omap_dss_device *hpd = omap_connector->hpd;
@@ -165,7 +166,8 @@ static void omap_connector_destroy(struct drm_connector *connector)
165166
drm_connector_cleanup(connector);
166167
kfree(omap_connector);
167168

168-
omapdss_device_put(omap_connector->dssdev);
169+
omapdss_device_put(omap_connector->output);
170+
omapdss_device_put(omap_connector->display);
169171
}
170172

171173
#define MAX_EDID 512
@@ -212,7 +214,7 @@ static int omap_connector_get_modes(struct drm_connector *connector)
212214
struct drm_display_mode *mode;
213215
struct videomode vm = {0};
214216

215-
DBG("%s", omap_connector->dssdev->name);
217+
DBG("%s", omap_connector->display->name);
216218

217219
/*
218220
* If display exposes EDID, then we parse that in the normal way to
@@ -229,7 +231,7 @@ static int omap_connector_get_modes(struct drm_connector *connector)
229231
if (!mode)
230232
return 0;
231233

232-
dssdev = omap_connector->dssdev;
234+
dssdev = omap_connector->display;
233235
dssdev->ops->get_timings(dssdev, &vm);
234236

235237
drm_display_mode_from_videomode(&vm, mode);
@@ -250,7 +252,7 @@ static int omap_connector_mode_valid(struct drm_connector *connector,
250252
struct drm_display_mode *mode)
251253
{
252254
struct omap_connector *omap_connector = to_omap_connector(connector);
253-
struct omap_dss_device *dssdev = omap_connector->dssdev;
255+
struct omap_dss_device *dssdev = omap_connector->display;
254256
struct videomode vm = {0};
255257
struct drm_device *dev = connector->dev;
256258
struct drm_display_mode *new_mode;
@@ -325,19 +327,21 @@ static const struct drm_connector_helper_funcs omap_connector_helper_funcs = {
325327

326328
/* initialize connector */
327329
struct drm_connector *omap_connector_init(struct drm_device *dev,
328-
int connector_type, struct omap_dss_device *dssdev,
329-
struct drm_encoder *encoder)
330+
int connector_type, struct omap_dss_device *output,
331+
struct omap_dss_device *display, struct drm_encoder *encoder)
330332
{
331333
struct drm_connector *connector = NULL;
332334
struct omap_connector *omap_connector;
335+
struct omap_dss_device *dssdev;
333336

334-
DBG("%s", dssdev->name);
337+
DBG("%s", display->name);
335338

336339
omap_connector = kzalloc(sizeof(*omap_connector), GFP_KERNEL);
337340
if (!omap_connector)
338341
goto fail;
339342

340-
omap_connector->dssdev = omapdss_device_get(dssdev);
343+
omap_connector->output = omapdss_device_get(output);
344+
omap_connector->display = omapdss_device_get(display);
341345

342346
connector = &omap_connector->base;
343347
connector->interlace_allowed = 1;

drivers/gpu/drm/omapdrm/omap_connector.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ struct drm_encoder;
2828
struct omap_dss_device;
2929

3030
struct drm_connector *omap_connector_init(struct drm_device *dev,
31-
int connector_type, struct omap_dss_device *dssdev,
32-
struct drm_encoder *encoder);
31+
int connector_type, struct omap_dss_device *output,
32+
struct omap_dss_device *display, struct drm_encoder *encoder);
3333
struct drm_encoder *omap_connector_attached_encoder(
3434
struct drm_connector *connector);
3535
bool omap_connector_get_hdmi_mode(struct drm_connector *connector);

drivers/gpu/drm/omapdrm/omap_drv.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,8 @@ static int omap_modeset_init(struct drm_device *dev)
323323
return -ENOMEM;
324324

325325
connector = omap_connector_init(dev,
326-
get_connector_type(display), display, encoder);
326+
get_connector_type(display), pipe->output,
327+
display, encoder);
327328
if (!connector)
328329
return -ENOMEM;
329330

0 commit comments

Comments
 (0)