aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/jz4740_fb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/jz4740_fb.c')
-rw-r--r--drivers/video/jz4740_fb.c44
1 files changed, 8 insertions, 36 deletions
diff --git a/drivers/video/jz4740_fb.c b/drivers/video/jz4740_fb.c
index 3c63fc24bb1f..4d25711b9982 100644
--- a/drivers/video/jz4740_fb.c
+++ b/drivers/video/jz4740_fb.c
@@ -632,23 +632,10 @@ static int __devinit jzfb_probe(struct platform_device *pdev)
632 return -ENXIO; 632 return -ENXIO;
633 } 633 }
634 634
635 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
636 if (!mem) {
637 dev_err(&pdev->dev, "Failed to get register memory resource\n");
638 return -ENXIO;
639 }
640
641 mem = request_mem_region(mem->start, resource_size(mem), pdev->name);
642 if (!mem) {
643 dev_err(&pdev->dev, "Failed to request register memory region\n");
644 return -EBUSY;
645 }
646
647 fb = framebuffer_alloc(sizeof(struct jzfb), &pdev->dev); 635 fb = framebuffer_alloc(sizeof(struct jzfb), &pdev->dev);
648 if (!fb) { 636 if (!fb) {
649 dev_err(&pdev->dev, "Failed to allocate framebuffer device\n"); 637 dev_err(&pdev->dev, "Failed to allocate framebuffer device\n");
650 ret = -ENOMEM; 638 return -ENOMEM;
651 goto err_release_mem_region;
652 } 639 }
653 640
654 fb->fbops = &jzfb_ops; 641 fb->fbops = &jzfb_ops;
@@ -657,27 +644,26 @@ static int __devinit jzfb_probe(struct platform_device *pdev)
657 jzfb = fb->par; 644 jzfb = fb->par;
658 jzfb->pdev = pdev; 645 jzfb->pdev = pdev;
659 jzfb->pdata = pdata; 646 jzfb->pdata = pdata;
660 jzfb->mem = mem;
661 647
662 jzfb->ldclk = clk_get(&pdev->dev, "lcd"); 648 jzfb->ldclk = devm_clk_get(&pdev->dev, "lcd");
663 if (IS_ERR(jzfb->ldclk)) { 649 if (IS_ERR(jzfb->ldclk)) {
664 ret = PTR_ERR(jzfb->ldclk); 650 ret = PTR_ERR(jzfb->ldclk);
665 dev_err(&pdev->dev, "Failed to get lcd clock: %d\n", ret); 651 dev_err(&pdev->dev, "Failed to get lcd clock: %d\n", ret);
666 goto err_framebuffer_release; 652 goto err_framebuffer_release;
667 } 653 }
668 654
669 jzfb->lpclk = clk_get(&pdev->dev, "lcd_pclk"); 655 jzfb->lpclk = devm_clk_get(&pdev->dev, "lcd_pclk");
670 if (IS_ERR(jzfb->lpclk)) { 656 if (IS_ERR(jzfb->lpclk)) {
671 ret = PTR_ERR(jzfb->lpclk); 657 ret = PTR_ERR(jzfb->lpclk);
672 dev_err(&pdev->dev, "Failed to get lcd pixel clock: %d\n", ret); 658 dev_err(&pdev->dev, "Failed to get lcd pixel clock: %d\n", ret);
673 goto err_put_ldclk; 659 goto err_framebuffer_release;
674 } 660 }
675 661
676 jzfb->base = ioremap(mem->start, resource_size(mem)); 662 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
663 jzfb->base = devm_request_and_ioremap(&pdev->dev, mem);
677 if (!jzfb->base) { 664 if (!jzfb->base) {
678 dev_err(&pdev->dev, "Failed to ioremap register memory region\n");
679 ret = -EBUSY; 665 ret = -EBUSY;
680 goto err_put_lpclk; 666 goto err_framebuffer_release;
681 } 667 }
682 668
683 platform_set_drvdata(pdev, jzfb); 669 platform_set_drvdata(pdev, jzfb);
@@ -693,7 +679,7 @@ static int __devinit jzfb_probe(struct platform_device *pdev)
693 ret = jzfb_alloc_devmem(jzfb); 679 ret = jzfb_alloc_devmem(jzfb);
694 if (ret) { 680 if (ret) {
695 dev_err(&pdev->dev, "Failed to allocate video memory\n"); 681 dev_err(&pdev->dev, "Failed to allocate video memory\n");
696 goto err_iounmap; 682 goto err_framebuffer_release;
697 } 683 }
698 684
699 fb->fix = jzfb_fix; 685 fb->fix = jzfb_fix;
@@ -734,16 +720,8 @@ err_free_devmem:
734 720
735 fb_dealloc_cmap(&fb->cmap); 721 fb_dealloc_cmap(&fb->cmap);
736 jzfb_free_devmem(jzfb); 722 jzfb_free_devmem(jzfb);
737err_iounmap:
738 iounmap(jzfb->base);
739err_put_lpclk:
740 clk_put(jzfb->lpclk);
741err_put_ldclk:
742 clk_put(jzfb->ldclk);
743err_framebuffer_release: 723err_framebuffer_release:
744 framebuffer_release(fb); 724 framebuffer_release(fb);
745err_release_mem_region:
746 release_mem_region(mem->start, resource_size(mem));
747 return ret; 725 return ret;
748} 726}
749 727
@@ -756,17 +734,11 @@ static int __devexit jzfb_remove(struct platform_device *pdev)
756 jz_gpio_bulk_free(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb)); 734 jz_gpio_bulk_free(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb));
757 jz_gpio_bulk_free(jz_lcd_data_pins, jzfb_num_data_pins(jzfb)); 735 jz_gpio_bulk_free(jz_lcd_data_pins, jzfb_num_data_pins(jzfb));
758 736
759 iounmap(jzfb->base);
760 release_mem_region(jzfb->mem->start, resource_size(jzfb->mem));
761
762 fb_dealloc_cmap(&jzfb->fb->cmap); 737 fb_dealloc_cmap(&jzfb->fb->cmap);
763 jzfb_free_devmem(jzfb); 738 jzfb_free_devmem(jzfb);
764 739
765 platform_set_drvdata(pdev, NULL); 740 platform_set_drvdata(pdev, NULL);
766 741
767 clk_put(jzfb->lpclk);
768 clk_put(jzfb->ldclk);
769
770 framebuffer_release(jzfb->fb); 742 framebuffer_release(jzfb->fb);
771 743
772 return 0; 744 return 0;