@@ -268,7 +268,6 @@ static const u32 rp1dpi_formats[] = {
268268static int rp1dpi_platform_probe (struct platform_device * pdev )
269269{
270270 struct device * dev = & pdev -> dev ;
271- struct drm_device * drm ;
272271 struct rp1_dpi * dpi ;
273272 struct drm_bridge * bridge = NULL ;
274273 struct drm_panel * panel ;
@@ -287,24 +286,13 @@ static int rp1dpi_platform_probe(struct platform_device *pdev)
287286 return PTR_ERR (bridge );
288287 }
289288
290- drm = drm_dev_alloc ( & rp1dpi_driver , dev );
291- if (IS_ERR (drm )) {
292- dev_info ( dev , "%s %d" , __func__ , ( int ) __LINE__ );
293- ret = PTR_ERR ( drm );
289+ dpi = devm_drm_dev_alloc ( dev , & rp1dpi_driver , struct rp1_dpi , drm );
290+ if (IS_ERR (dpi )) {
291+ ret = PTR_ERR ( dpi );
292+ dev_err ( dev , "%s devm_drm_dev_alloc %d" , __func__ , ret );
294293 return ret ;
295294 }
296- dpi = drmm_kzalloc (drm , sizeof (* dpi ), GFP_KERNEL );
297- if (!dpi ) {
298- dev_info (dev , "%s %d" , __func__ , (int )__LINE__ );
299- drm_dev_put (drm );
300- return - ENOMEM ;
301- }
302-
303- init_completion (& dpi -> finished );
304- dpi -> drm = drm ;
305295 dpi -> pdev = pdev ;
306- drm -> dev_private = dpi ;
307- platform_set_drvdata (pdev , drm );
308296
309297 dpi -> bus_fmt = default_bus_fmt ;
310298 ret = of_property_read_u32 (dev -> of_node , "default_bus_fmt" , & dpi -> bus_fmt );
@@ -314,9 +302,8 @@ static int rp1dpi_platform_probe(struct platform_device *pdev)
314302 devm_ioremap_resource (dev ,
315303 platform_get_resource (dpi -> pdev , IORESOURCE_MEM , i ));
316304 if (IS_ERR (dpi -> hw_base [i ])) {
317- ret = PTR_ERR (dpi -> hw_base [i ]);
318305 dev_err (dev , "Error memory mapping regs[%d]\n" , i );
319- goto err_free_drm ;
306+ return PTR_ERR ( dpi -> hw_base [ i ]) ;
320307 }
321308 }
322309 ret = platform_get_irq (dpi -> pdev , 0 );
@@ -325,35 +312,39 @@ static int rp1dpi_platform_probe(struct platform_device *pdev)
325312 IRQF_SHARED , "rp1-dpi" , dpi );
326313 if (ret ) {
327314 dev_err (dev , "Unable to request interrupt\n" );
328- ret = - EINVAL ;
329- goto err_free_drm ;
315+ return - EINVAL ;
330316 }
331- dma_set_mask_and_coherent (dev , DMA_BIT_MASK (64 ));
332317
333318 for (i = 0 ; i < RP1DPI_NUM_CLOCKS ; i ++ ) {
334319 static const char * const myclocknames [RP1DPI_NUM_CLOCKS ] = {
335320 "dpiclk" , "plldiv" , "pllcore"
336321 };
337322 dpi -> clocks [i ] = devm_clk_get (dev , myclocknames [i ]);
338323 if (IS_ERR (dpi -> clocks [i ])) {
339- ret = PTR_ERR ( dpi -> clocks [i ]);
340- goto err_free_drm ;
324+ dev_err ( dev , "Unable to request clock %s\n" , myclocknames [i ]);
325+ return PTR_ERR ( dpi -> clocks [ i ]) ;
341326 }
342327 }
343328
344- ret = drmm_mode_config_init (drm );
329+ ret = drmm_mode_config_init (& dpi -> drm );
345330 if (ret )
346- goto err_free_drm ;
347-
348- drm -> mode_config .max_width = 4096 ;
349- drm -> mode_config .max_height = 4096 ;
350- drm -> mode_config .preferred_depth = 32 ;
351- drm -> mode_config .prefer_shadow = 0 ;
352- drm -> mode_config .quirk_addfb_prefer_host_byte_order = true;
353- drm -> mode_config .funcs = & rp1dpi_mode_funcs ;
354- drm_vblank_init (drm , 1 );
331+ goto done_err ;
355332
356- ret = drm_simple_display_pipe_init (drm ,
333+ /* Now we have all our resources, finish driver initialization */
334+ dma_set_mask_and_coherent (dev , DMA_BIT_MASK (64 ));
335+ init_completion (& dpi -> finished );
336+ dpi -> drm .dev_private = dpi ;
337+ platform_set_drvdata (pdev , & dpi -> drm );
338+
339+ dpi -> drm .mode_config .max_width = 4096 ;
340+ dpi -> drm .mode_config .max_height = 4096 ;
341+ dpi -> drm .mode_config .preferred_depth = 32 ;
342+ dpi -> drm .mode_config .prefer_shadow = 0 ;
343+ dpi -> drm .mode_config .quirk_addfb_prefer_host_byte_order = true;
344+ dpi -> drm .mode_config .funcs = & rp1dpi_mode_funcs ;
345+ drm_vblank_init (& dpi -> drm , 1 );
346+
347+ ret = drm_simple_display_pipe_init (& dpi -> drm ,
357348 & dpi -> pipe ,
358349 & rp1dpi_pipe_funcs ,
359350 rp1dpi_formats ,
@@ -362,22 +353,19 @@ static int rp1dpi_platform_probe(struct platform_device *pdev)
362353 if (!ret )
363354 ret = drm_simple_display_pipe_attach_bridge (& dpi -> pipe , bridge );
364355 if (ret )
365- goto err_free_drm ;
356+ goto done_err ;
366357
367- drm_mode_config_reset (drm );
358+ drm_mode_config_reset (& dpi -> drm );
368359
369- ret = drm_dev_register (drm , 0 );
360+ ret = drm_dev_register (& dpi -> drm , 0 );
370361 if (ret )
371- goto err_free_drm ;
372-
373- drm_fbdev_generic_setup (drm , 32 );
362+ return ret ;
374363
375- dev_info ( dev , "%s success\n" , __func__ );
364+ drm_fbdev_generic_setup ( & dpi -> drm , 32 );
376365 return ret ;
377366
378- err_free_drm :
367+ done_err :
379368 dev_err (dev , "%s fail %d\n" , __func__ , ret );
380- drm_dev_put (drm );
381369 return ret ;
382370}
383371
0 commit comments