2525
2626struct imx_parallel_display_encoder {
2727 struct drm_encoder encoder ;
28- struct drm_bridge bridge ;
29- struct imx_parallel_display * pd ;
3028};
3129
3230struct imx_parallel_display {
3331 struct device * dev ;
3432 u32 bus_format ;
3533 struct drm_bridge * next_bridge ;
34+ struct drm_bridge bridge ;
3635};
3736
3837static inline struct imx_parallel_display * bridge_to_imxpd (struct drm_bridge * b )
3938{
40- return container_of (b , struct imx_parallel_display_encoder , bridge )-> pd ;
39+ return container_of (b , struct imx_parallel_display , bridge );
4140}
4241
4342static const u32 imx_pd_bus_fmts [] = {
@@ -195,15 +194,13 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)
195194 if (IS_ERR (imxpd_encoder ))
196195 return PTR_ERR (imxpd_encoder );
197196
198- imxpd_encoder -> pd = imxpd ;
199197 encoder = & imxpd_encoder -> encoder ;
200- bridge = & imxpd_encoder -> bridge ;
198+ bridge = & imxpd -> bridge ;
201199
202200 ret = imx_drm_encoder_parse_of (drm , encoder , imxpd -> dev -> of_node );
203201 if (ret )
204202 return ret ;
205203
206- bridge -> funcs = & imx_pd_bridge_funcs ;
207204 drm_bridge_attach (encoder , bridge , NULL , DRM_BRIDGE_ATTACH_NO_CONNECTOR );
208205
209206 connector = drm_bridge_connector_init (drm , encoder );
@@ -228,9 +225,10 @@ static int imx_pd_probe(struct platform_device *pdev)
228225 u32 bus_format = 0 ;
229226 const char * fmt ;
230227
231- imxpd = devm_kzalloc (dev , sizeof (* imxpd ), GFP_KERNEL );
232- if (!imxpd )
233- return - ENOMEM ;
228+ imxpd = devm_drm_bridge_alloc (dev , struct imx_parallel_display , bridge ,
229+ & imx_pd_bridge_funcs );
230+ if (IS_ERR (imxpd ))
231+ return PTR_ERR (imxpd );
234232
235233 /* port@1 is the output port */
236234 imxpd -> next_bridge = devm_drm_of_get_bridge (dev , np , 1 , 0 );
@@ -258,6 +256,8 @@ static int imx_pd_probe(struct platform_device *pdev)
258256
259257 platform_set_drvdata (pdev , imxpd );
260258
259+ devm_drm_bridge_add (dev , & imxpd -> bridge );
260+
261261 return component_add (dev , & imx_pd_ops );
262262}
263263
0 commit comments