@@ -257,41 +257,37 @@ static int vc4_drm_bind(struct device *dev)
257257
258258 dev -> coherent_dma_mask = DMA_BIT_MASK (32 );
259259
260- vc4 = devm_kzalloc (dev , sizeof (* vc4 ), GFP_KERNEL );
261- if (!vc4 )
262- return - ENOMEM ;
263-
264260 /* If VC4 V3D is missing, don't advertise render nodes. */
265261 node = of_find_matching_node_and_match (NULL , vc4_v3d_dt_match , NULL );
266262 if (!node || !of_device_is_available (node ))
267263 vc4_drm_driver .driver_features &= ~DRIVER_RENDER ;
268264 of_node_put (node );
269265
270- drm = drm_dev_alloc (& vc4_drm_driver , dev );
271- if (IS_ERR (drm ))
272- return PTR_ERR (drm );
266+ vc4 = devm_drm_dev_alloc (dev , & vc4_drm_driver , struct vc4_dev , base );
267+ if (IS_ERR (vc4 ))
268+ return PTR_ERR (vc4 );
269+
270+ drm = & vc4 -> base ;
273271 platform_set_drvdata (pdev , drm );
274- vc4 -> dev = drm ;
275- drm -> dev_private = vc4 ;
276272 INIT_LIST_HEAD (& vc4 -> debugfs_list );
277273
278274 mutex_init (& vc4 -> bin_bo_lock );
279275
280276 ret = vc4_bo_cache_init (drm );
281277 if (ret )
282- goto dev_put ;
278+ return ret ;
283279
284280 ret = drmm_mode_config_init (drm );
285281 if (ret )
286- goto dev_put ;
282+ return ret ;
287283
288284 ret = vc4_gem_init (drm );
289285 if (ret )
290- goto dev_put ;
286+ return ret ;
291287
292288 ret = component_bind_all (dev , drm );
293289 if (ret )
294- goto dev_put ;
290+ return ret ;
295291
296292 ret = vc4_plane_create_additional_planes (drm );
297293 if (ret )
@@ -316,8 +312,7 @@ static int vc4_drm_bind(struct device *dev)
316312
317313unbind_all :
318314 component_unbind_all (dev , drm );
319- dev_put :
320- drm_dev_put (drm );
315+
321316 return ret ;
322317}
323318
@@ -332,8 +327,6 @@ static void vc4_drm_unbind(struct device *dev)
332327
333328 drm_atomic_private_obj_fini (& vc4 -> load_tracker );
334329 drm_atomic_private_obj_fini (& vc4 -> ctm_manager );
335-
336- drm_dev_put (drm );
337330}
338331
339332static const struct component_master_ops vc4_drm_ops = {
0 commit comments