@@ -477,7 +477,8 @@ static int __devinit au1100fb_drv_probe(struct platform_device *dev)
477
477
u32 sys_clksrc ;
478
478
479
479
/* Allocate new device private */
480
- fbdev = kzalloc (sizeof (struct au1100fb_device ), GFP_KERNEL );
480
+ fbdev = devm_kzalloc (& dev -> dev , sizeof (struct au1100fb_device ),
481
+ GFP_KERNEL );
481
482
if (!fbdev ) {
482
483
print_err ("fail to allocate device private record" );
483
484
return - ENOMEM ;
@@ -498,8 +499,9 @@ static int __devinit au1100fb_drv_probe(struct platform_device *dev)
498
499
au1100fb_fix .mmio_start = regs_res -> start ;
499
500
au1100fb_fix .mmio_len = resource_size (regs_res );
500
501
501
- if (!request_mem_region (au1100fb_fix .mmio_start , au1100fb_fix .mmio_len ,
502
- DRIVER_NAME )) {
502
+ if (!devm_request_mem_region (au1100fb_fix .mmio_start ,
503
+ au1100fb_fix .mmio_len ,
504
+ DRIVER_NAME )) {
503
505
print_err ("fail to lock memory region at 0x%08lx" ,
504
506
au1100fb_fix .mmio_start );
505
507
return - EBUSY ;
@@ -514,8 +516,9 @@ static int __devinit au1100fb_drv_probe(struct platform_device *dev)
514
516
fbdev -> fb_len = fbdev -> panel -> xres * fbdev -> panel -> yres *
515
517
(fbdev -> panel -> bpp >> 3 ) * AU1100FB_NBR_VIDEO_BUFFERS ;
516
518
517
- fbdev -> fb_mem = dma_alloc_coherent (& dev -> dev , PAGE_ALIGN (fbdev -> fb_len ),
518
- & fbdev -> fb_phys , GFP_KERNEL );
519
+ fbdev -> fb_mem = dmam_alloc_coherent (& dev -> dev , & dev -> dev ,
520
+ PAGE_ALIGN (fbdev -> fb_len ),
521
+ & fbdev -> fb_phys , GFP_KERNEL );
519
522
if (!fbdev -> fb_mem ) {
520
523
print_err ("fail to allocate frambuffer (size: %dK))" ,
521
524
fbdev -> fb_len / 1024 );
@@ -557,14 +560,14 @@ static int __devinit au1100fb_drv_probe(struct platform_device *dev)
557
560
fbdev -> info .fbops = & au1100fb_ops ;
558
561
fbdev -> info .fix = au1100fb_fix ;
559
562
560
- if (!(fbdev -> info .pseudo_palette = kzalloc (sizeof (u32 ) * 16 , GFP_KERNEL ))) {
563
+ fbdev -> info .pseudo_palette =
564
+ devm_kzalloc (& dev -> dev , sizeof (u32 ) * 16 , GFP_KERNEL );
565
+ if (!fbdev -> info .pseudo_palette )
561
566
return - ENOMEM ;
562
- }
563
567
564
568
if (fb_alloc_cmap (& fbdev -> info .cmap , AU1100_LCD_NBR_PALETTE_ENTRIES , 0 ) < 0 ) {
565
569
print_err ("Fail to allocate colormap (%d entries)" ,
566
570
AU1100_LCD_NBR_PALETTE_ENTRIES );
567
- kfree (fbdev -> info .pseudo_palette );
568
571
return - EFAULT ;
569
572
}
570
573
@@ -582,20 +585,16 @@ static int __devinit au1100fb_drv_probe(struct platform_device *dev)
582
585
return 0 ;
583
586
584
587
failed :
585
- if (fbdev -> regs ) {
586
- release_mem_region (fbdev -> regs_phys , fbdev -> regs_len );
587
- }
588
588
if (fbdev -> fb_mem ) {
589
589
dma_free_noncoherent (& dev -> dev , fbdev -> fb_len , fbdev -> fb_mem ,
590
590
fbdev -> fb_phys );
591
591
}
592
592
if (fbdev -> info .cmap .len != 0 ) {
593
593
fb_dealloc_cmap (& fbdev -> info .cmap );
594
594
}
595
- kfree (fbdev );
596
595
platform_set_drvdata (dev , NULL );
597
596
598
- return 0 ;
597
+ return - ENODEV ;
599
598
}
600
599
601
600
int au1100fb_drv_remove (struct platform_device * dev )
@@ -615,14 +614,7 @@ int au1100fb_drv_remove(struct platform_device *dev)
615
614
/* Clean up all probe data */
616
615
unregister_framebuffer (& fbdev -> info );
617
616
618
- release_mem_region (fbdev -> regs_phys , fbdev -> regs_len );
619
-
620
- dma_free_coherent (& dev -> dev , PAGE_ALIGN (fbdev -> fb_len ), fbdev -> fb_mem ,
621
- fbdev -> fb_phys );
622
-
623
617
fb_dealloc_cmap (& fbdev -> info .cmap );
624
- kfree (fbdev -> info .pseudo_palette );
625
- kfree ((void * )fbdev );
626
618
627
619
return 0 ;
628
620
}
0 commit comments