diff options
Diffstat (limited to 'drivers/video/jz4740_fb.c')
-rw-r--r-- | drivers/video/jz4740_fb.c | 44 |
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); |
737 | err_iounmap: | ||
738 | iounmap(jzfb->base); | ||
739 | err_put_lpclk: | ||
740 | clk_put(jzfb->lpclk); | ||
741 | err_put_ldclk: | ||
742 | clk_put(jzfb->ldclk); | ||
743 | err_framebuffer_release: | 723 | err_framebuffer_release: |
744 | framebuffer_release(fb); | 724 | framebuffer_release(fb); |
745 | err_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; |