aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i2c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2015-08-14 06:17:12 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2015-09-29 14:25:55 -0400
commit78e401f9891a8ecdb075c0ca46f9f43ce0ed0c4e (patch)
tree336da228fb3b03ac75151807e390d239f6783d1a /drivers/gpu/drm/i2c
parent3d58e31888318ebd157ba0680fb24cdcd1bc3d6f (diff)
drm/i2c: tda998x: remove encoder pointer
Remove the encoder pointer from struct tda998x_priv, moving the encoder itself from struct tda998x_priv2 here. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/gpu/drm/i2c')
-rw-r--r--drivers/gpu/drm/i2c/tda998x_drv.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index 883025d35f87..e30a2a8c2a3c 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -44,12 +44,13 @@ struct tda998x_priv {
44 44
45 wait_queue_head_t wq_edid; 45 wait_queue_head_t wq_edid;
46 volatile int wq_edid_wait; 46 volatile int wq_edid_wait;
47 struct drm_encoder *encoder;
48 47
49 struct work_struct detect_work; 48 struct work_struct detect_work;
50 struct timer_list edid_delay_timer; 49 struct timer_list edid_delay_timer;
51 wait_queue_head_t edid_delay_waitq; 50 wait_queue_head_t edid_delay_waitq;
52 bool edid_delay_active; 51 bool edid_delay_active;
52
53 struct drm_encoder encoder;
53}; 54};
54 55
55/* The TDA9988 series of devices use a paged register scheme.. to simplify 56/* The TDA9988 series of devices use a paged register scheme.. to simplify
@@ -594,7 +595,7 @@ static void tda998x_detect_work(struct work_struct *work)
594{ 595{
595 struct tda998x_priv *priv = 596 struct tda998x_priv *priv =
596 container_of(work, struct tda998x_priv, detect_work); 597 container_of(work, struct tda998x_priv, detect_work);
597 struct drm_device *dev = priv->encoder->dev; 598 struct drm_device *dev = priv->encoder.dev;
598 599
599 if (dev) 600 if (dev)
600 drm_kms_helper_hotplug_event(dev); 601 drm_kms_helper_hotplug_event(dev);
@@ -1330,7 +1331,6 @@ fail:
1330 1331
1331struct tda998x_priv2 { 1332struct tda998x_priv2 {
1332 struct tda998x_priv base; 1333 struct tda998x_priv base;
1333 struct drm_encoder encoder;
1334 struct drm_connector connector; 1334 struct drm_connector connector;
1335}; 1335};
1336 1336
@@ -1338,7 +1338,7 @@ struct tda998x_priv2 {
1338 container_of(x, struct tda998x_priv2, connector); 1338 container_of(x, struct tda998x_priv2, connector);
1339 1339
1340#define enc_to_tda998x_priv2(x) \ 1340#define enc_to_tda998x_priv2(x) \
1341 container_of(x, struct tda998x_priv2, encoder); 1341 container_of(x, struct tda998x_priv2, base.encoder);
1342 1342
1343static void tda998x_encoder2_dpms(struct drm_encoder *encoder, int mode) 1343static void tda998x_encoder2_dpms(struct drm_encoder *encoder, int mode)
1344{ 1344{
@@ -1408,7 +1408,7 @@ tda998x_connector_best_encoder(struct drm_connector *connector)
1408{ 1408{
1409 struct tda998x_priv2 *priv = conn_to_tda998x_priv2(connector); 1409 struct tda998x_priv2 *priv = conn_to_tda998x_priv2(connector);
1410 1410
1411 return &priv->encoder; 1411 return &priv->base.encoder;
1412} 1412}
1413 1413
1414static 1414static
@@ -1463,9 +1463,8 @@ static int tda998x_bind(struct device *dev, struct device *master, void *data)
1463 crtcs = 1 << 0; 1463 crtcs = 1 << 0;
1464 } 1464 }
1465 1465
1466 priv->base.encoder = &priv->encoder;
1467 priv->connector.interlace_allowed = 1; 1466 priv->connector.interlace_allowed = 1;
1468 priv->encoder.possible_crtcs = crtcs; 1467 priv->base.encoder.possible_crtcs = crtcs;
1469 1468
1470 ret = tda998x_create(client, &priv->base); 1469 ret = tda998x_create(client, &priv->base);
1471 if (ret) 1470 if (ret)
@@ -1476,8 +1475,8 @@ static int tda998x_bind(struct device *dev, struct device *master, void *data)
1476 1475
1477 tda998x_encoder_set_polling(&priv->base, &priv->connector); 1476 tda998x_encoder_set_polling(&priv->base, &priv->connector);
1478 1477
1479 drm_encoder_helper_add(&priv->encoder, &tda998x_encoder_helper_funcs); 1478 drm_encoder_helper_add(&priv->base.encoder, &tda998x_encoder_helper_funcs);
1480 ret = drm_encoder_init(drm, &priv->encoder, &tda998x_encoder_funcs, 1479 ret = drm_encoder_init(drm, &priv->base.encoder, &tda998x_encoder_funcs,
1481 DRM_MODE_ENCODER_TMDS); 1480 DRM_MODE_ENCODER_TMDS);
1482 if (ret) 1481 if (ret)
1483 goto err_encoder; 1482 goto err_encoder;
@@ -1494,15 +1493,15 @@ static int tda998x_bind(struct device *dev, struct device *master, void *data)
1494 if (ret) 1493 if (ret)
1495 goto err_sysfs; 1494 goto err_sysfs;
1496 1495
1497 priv->connector.encoder = &priv->encoder; 1496 priv->connector.encoder = &priv->base.encoder;
1498 drm_mode_connector_attach_encoder(&priv->connector, &priv->encoder); 1497 drm_mode_connector_attach_encoder(&priv->connector, &priv->base.encoder);
1499 1498
1500 return 0; 1499 return 0;
1501 1500
1502err_sysfs: 1501err_sysfs:
1503 drm_connector_cleanup(&priv->connector); 1502 drm_connector_cleanup(&priv->connector);
1504err_connector: 1503err_connector:
1505 drm_encoder_cleanup(&priv->encoder); 1504 drm_encoder_cleanup(&priv->base.encoder);
1506err_encoder: 1505err_encoder:
1507 tda998x_destroy(&priv->base); 1506 tda998x_destroy(&priv->base);
1508 return ret; 1507 return ret;
@@ -1514,7 +1513,7 @@ static void tda998x_unbind(struct device *dev, struct device *master,
1514 struct tda998x_priv2 *priv = dev_get_drvdata(dev); 1513 struct tda998x_priv2 *priv = dev_get_drvdata(dev);
1515 1514
1516 drm_connector_cleanup(&priv->connector); 1515 drm_connector_cleanup(&priv->connector);
1517 drm_encoder_cleanup(&priv->encoder); 1516 drm_encoder_cleanup(&priv->base.encoder);
1518 tda998x_destroy(&priv->base); 1517 tda998x_destroy(&priv->base);
1519} 1518}
1520 1519