diff options
-rw-r--r-- | drivers/gpu/drm/tve200/tve200_display.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/tve200/tve200_drm.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/tve200/tve200_drv.c | 30 |
3 files changed, 13 insertions, 21 deletions
diff --git a/drivers/gpu/drm/tve200/tve200_display.c b/drivers/gpu/drm/tve200/tve200_display.c index 1ad02fdbb074..18457de47bbc 100644 --- a/drivers/gpu/drm/tve200/tve200_display.c +++ b/drivers/gpu/drm/tve200/tve200_display.c | |||
@@ -333,8 +333,5 @@ int tve200_display_init(struct drm_device *drm) | |||
333 | if (ret) | 333 | if (ret) |
334 | return ret; | 334 | return ret; |
335 | 335 | ||
336 | /* We need the encoder to attach the bridge */ | ||
337 | priv->encoder = &priv->pipe.encoder; | ||
338 | |||
339 | return 0; | 336 | return 0; |
340 | } | 337 | } |
diff --git a/drivers/gpu/drm/tve200/tve200_drm.h b/drivers/gpu/drm/tve200/tve200_drm.h index b463624c1f29..628b79324c48 100644 --- a/drivers/gpu/drm/tve200/tve200_drm.h +++ b/drivers/gpu/drm/tve200/tve200_drm.h | |||
@@ -100,7 +100,6 @@ struct tve200_drm_dev_private { | |||
100 | struct drm_device *drm; | 100 | struct drm_device *drm; |
101 | 101 | ||
102 | struct drm_connector *connector; | 102 | struct drm_connector *connector; |
103 | struct drm_encoder *encoder; | ||
104 | struct drm_panel *panel; | 103 | struct drm_panel *panel; |
105 | struct drm_bridge *bridge; | 104 | struct drm_bridge *bridge; |
106 | struct drm_simple_display_pipe pipe; | 105 | struct drm_simple_display_pipe pipe; |
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c index c22644692a88..eae38b669f0a 100644 --- a/drivers/gpu/drm/tve200/tve200_drv.c +++ b/drivers/gpu/drm/tve200/tve200_drv.c | |||
@@ -87,6 +87,14 @@ static int tve200_modeset_init(struct drm_device *dev) | |||
87 | ret = PTR_ERR(bridge); | 87 | ret = PTR_ERR(bridge); |
88 | goto out_bridge; | 88 | goto out_bridge; |
89 | } | 89 | } |
90 | } else { | ||
91 | /* | ||
92 | * TODO: when we are using a different bridge than a panel | ||
93 | * (such as a dumb VGA connector) we need to devise a different | ||
94 | * method to get the connector out of the bridge. | ||
95 | */ | ||
96 | dev_err(dev->dev, "the bridge is not a panel\n"); | ||
97 | goto out_bridge; | ||
90 | } | 98 | } |
91 | 99 | ||
92 | ret = tve200_display_init(dev); | 100 | ret = tve200_display_init(dev); |
@@ -95,21 +103,13 @@ static int tve200_modeset_init(struct drm_device *dev) | |||
95 | goto out_bridge; | 103 | goto out_bridge; |
96 | } | 104 | } |
97 | 105 | ||
98 | if (bridge) { | 106 | ret = drm_simple_display_pipe_attach_bridge(&priv->pipe, |
99 | ret = drm_bridge_attach(priv->encoder, bridge, NULL); | 107 | bridge); |
100 | if (ret) | 108 | if (ret) { |
101 | goto out_bridge; | 109 | dev_err(dev->dev, "failed to attach bridge\n"); |
102 | } | ||
103 | |||
104 | /* | ||
105 | * TODO: when we are using a different bridge than a panel | ||
106 | * (such as a dumb VGA connector) we need to devise a different | ||
107 | * method to get the connector out of the bridge. | ||
108 | */ | ||
109 | if (!panel) { | ||
110 | dev_err(dev->dev, "the bridge is not a panel\n"); | ||
111 | goto out_bridge; | 110 | goto out_bridge; |
112 | } | 111 | } |
112 | |||
113 | priv->panel = panel; | 113 | priv->panel = panel; |
114 | priv->connector = panel->connector; | 114 | priv->connector = panel->connector; |
115 | priv->bridge = bridge; | 115 | priv->bridge = bridge; |
@@ -138,8 +138,6 @@ static int tve200_modeset_init(struct drm_device *dev) | |||
138 | out_bridge: | 138 | out_bridge: |
139 | if (panel) | 139 | if (panel) |
140 | drm_panel_bridge_remove(bridge); | 140 | drm_panel_bridge_remove(bridge); |
141 | else | ||
142 | drm_bridge_remove(bridge); | ||
143 | drm_mode_config_cleanup(dev); | 141 | drm_mode_config_cleanup(dev); |
144 | finish: | 142 | finish: |
145 | return ret; | 143 | return ret; |
@@ -275,8 +273,6 @@ static int tve200_remove(struct platform_device *pdev) | |||
275 | drm_fbdev_cma_fini(priv->fbdev); | 273 | drm_fbdev_cma_fini(priv->fbdev); |
276 | if (priv->panel) | 274 | if (priv->panel) |
277 | drm_panel_bridge_remove(priv->bridge); | 275 | drm_panel_bridge_remove(priv->bridge); |
278 | else | ||
279 | drm_bridge_remove(priv->bridge); | ||
280 | drm_mode_config_cleanup(drm); | 276 | drm_mode_config_cleanup(drm); |
281 | clk_disable_unprepare(priv->pclk); | 277 | clk_disable_unprepare(priv->pclk); |
282 | drm_dev_unref(drm); | 278 | drm_dev_unref(drm); |