diff options
Diffstat (limited to 'drivers/media/video/sh_mobile_ceu_camera.c')
-rw-r--r-- | drivers/media/video/sh_mobile_ceu_camera.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/media/video/sh_mobile_ceu_camera.c b/drivers/media/video/sh_mobile_ceu_camera.c index b5e37a530c62..d369e8409ab8 100644 --- a/drivers/media/video/sh_mobile_ceu_camera.c +++ b/drivers/media/video/sh_mobile_ceu_camera.c | |||
@@ -81,7 +81,6 @@ struct sh_mobile_ceu_buffer { | |||
81 | }; | 81 | }; |
82 | 82 | ||
83 | struct sh_mobile_ceu_dev { | 83 | struct sh_mobile_ceu_dev { |
84 | struct device *dev; | ||
85 | struct soc_camera_host ici; | 84 | struct soc_camera_host ici; |
86 | struct soc_camera_device *icd; | 85 | struct soc_camera_device *icd; |
87 | 86 | ||
@@ -617,7 +616,7 @@ static int sh_mobile_ceu_get_formats(struct soc_camera_device *icd, int idx, | |||
617 | xlate->cam_fmt = icd->formats + idx; | 616 | xlate->cam_fmt = icd->formats + idx; |
618 | xlate->buswidth = icd->formats[idx].depth; | 617 | xlate->buswidth = icd->formats[idx].depth; |
619 | xlate++; | 618 | xlate++; |
620 | dev_dbg(&ici->dev, "Providing format %s using %s\n", | 619 | dev_dbg(ici->dev, "Providing format %s using %s\n", |
621 | sh_mobile_ceu_formats[k].name, | 620 | sh_mobile_ceu_formats[k].name, |
622 | icd->formats[idx].name); | 621 | icd->formats[idx].name); |
623 | } | 622 | } |
@@ -630,7 +629,7 @@ add_single_format: | |||
630 | xlate->cam_fmt = icd->formats + idx; | 629 | xlate->cam_fmt = icd->formats + idx; |
631 | xlate->buswidth = icd->formats[idx].depth; | 630 | xlate->buswidth = icd->formats[idx].depth; |
632 | xlate++; | 631 | xlate++; |
633 | dev_dbg(&ici->dev, | 632 | dev_dbg(ici->dev, |
634 | "Providing format %s in pass-through mode\n", | 633 | "Providing format %s in pass-through mode\n", |
635 | icd->formats[idx].name); | 634 | icd->formats[idx].name); |
636 | } | 635 | } |
@@ -657,7 +656,7 @@ static int sh_mobile_ceu_set_fmt(struct soc_camera_device *icd, | |||
657 | 656 | ||
658 | xlate = soc_camera_xlate_by_fourcc(icd, pixfmt); | 657 | xlate = soc_camera_xlate_by_fourcc(icd, pixfmt); |
659 | if (!xlate) { | 658 | if (!xlate) { |
660 | dev_warn(&ici->dev, "Format %x not found\n", pixfmt); | 659 | dev_warn(ici->dev, "Format %x not found\n", pixfmt); |
661 | return -EINVAL; | 660 | return -EINVAL; |
662 | } | 661 | } |
663 | 662 | ||
@@ -684,7 +683,7 @@ static int sh_mobile_ceu_try_fmt(struct soc_camera_device *icd, | |||
684 | 683 | ||
685 | xlate = soc_camera_xlate_by_fourcc(icd, pixfmt); | 684 | xlate = soc_camera_xlate_by_fourcc(icd, pixfmt); |
686 | if (!xlate) { | 685 | if (!xlate) { |
687 | dev_warn(&ici->dev, "Format %x not found\n", pixfmt); | 686 | dev_warn(ici->dev, "Format %x not found\n", pixfmt); |
688 | return -EINVAL; | 687 | return -EINVAL; |
689 | } | 688 | } |
690 | 689 | ||
@@ -782,7 +781,7 @@ static void sh_mobile_ceu_init_videobuf(struct videobuf_queue *q, | |||
782 | 781 | ||
783 | videobuf_queue_dma_contig_init(q, | 782 | videobuf_queue_dma_contig_init(q, |
784 | &sh_mobile_ceu_videobuf_ops, | 783 | &sh_mobile_ceu_videobuf_ops, |
785 | &ici->dev, &pcdev->lock, | 784 | ici->dev, &pcdev->lock, |
786 | V4L2_BUF_TYPE_VIDEO_CAPTURE, | 785 | V4L2_BUF_TYPE_VIDEO_CAPTURE, |
787 | pcdev->is_interlaced ? | 786 | pcdev->is_interlaced ? |
788 | V4L2_FIELD_INTERLACED : V4L2_FIELD_NONE, | 787 | V4L2_FIELD_INTERLACED : V4L2_FIELD_NONE, |
@@ -829,7 +828,6 @@ static int sh_mobile_ceu_probe(struct platform_device *pdev) | |||
829 | goto exit; | 828 | goto exit; |
830 | } | 829 | } |
831 | 830 | ||
832 | platform_set_drvdata(pdev, pcdev); | ||
833 | INIT_LIST_HEAD(&pcdev->capture); | 831 | INIT_LIST_HEAD(&pcdev->capture); |
834 | spin_lock_init(&pcdev->lock); | 832 | spin_lock_init(&pcdev->lock); |
835 | 833 | ||
@@ -840,7 +838,7 @@ static int sh_mobile_ceu_probe(struct platform_device *pdev) | |||
840 | goto exit_kfree; | 838 | goto exit_kfree; |
841 | } | 839 | } |
842 | 840 | ||
843 | base = ioremap_nocache(res->start, res->end - res->start + 1); | 841 | base = ioremap_nocache(res->start, resource_size(res)); |
844 | if (!base) { | 842 | if (!base) { |
845 | err = -ENXIO; | 843 | err = -ENXIO; |
846 | dev_err(&pdev->dev, "Unable to ioremap CEU registers.\n"); | 844 | dev_err(&pdev->dev, "Unable to ioremap CEU registers.\n"); |
@@ -850,13 +848,12 @@ static int sh_mobile_ceu_probe(struct platform_device *pdev) | |||
850 | pcdev->irq = irq; | 848 | pcdev->irq = irq; |
851 | pcdev->base = base; | 849 | pcdev->base = base; |
852 | pcdev->video_limit = 0; /* only enabled if second resource exists */ | 850 | pcdev->video_limit = 0; /* only enabled if second resource exists */ |
853 | pcdev->dev = &pdev->dev; | ||
854 | 851 | ||
855 | res = platform_get_resource(pdev, IORESOURCE_MEM, 1); | 852 | res = platform_get_resource(pdev, IORESOURCE_MEM, 1); |
856 | if (res) { | 853 | if (res) { |
857 | err = dma_declare_coherent_memory(&pdev->dev, res->start, | 854 | err = dma_declare_coherent_memory(&pdev->dev, res->start, |
858 | res->start, | 855 | res->start, |
859 | (res->end - res->start) + 1, | 856 | resource_size(res), |
860 | DMA_MEMORY_MAP | | 857 | DMA_MEMORY_MAP | |
861 | DMA_MEMORY_EXCLUSIVE); | 858 | DMA_MEMORY_EXCLUSIVE); |
862 | if (!err) { | 859 | if (!err) { |
@@ -865,7 +862,7 @@ static int sh_mobile_ceu_probe(struct platform_device *pdev) | |||
865 | goto exit_iounmap; | 862 | goto exit_iounmap; |
866 | } | 863 | } |
867 | 864 | ||
868 | pcdev->video_limit = (res->end - res->start) + 1; | 865 | pcdev->video_limit = resource_size(res); |
869 | } | 866 | } |
870 | 867 | ||
871 | /* request irq */ | 868 | /* request irq */ |
@@ -885,7 +882,7 @@ static int sh_mobile_ceu_probe(struct platform_device *pdev) | |||
885 | } | 882 | } |
886 | 883 | ||
887 | pcdev->ici.priv = pcdev; | 884 | pcdev->ici.priv = pcdev; |
888 | pcdev->ici.dev.parent = &pdev->dev; | 885 | pcdev->ici.dev = &pdev->dev; |
889 | pcdev->ici.nr = pdev->id; | 886 | pcdev->ici.nr = pdev->id; |
890 | pcdev->ici.drv_name = dev_name(&pdev->dev); | 887 | pcdev->ici.drv_name = dev_name(&pdev->dev); |
891 | pcdev->ici.ops = &sh_mobile_ceu_host_ops; | 888 | pcdev->ici.ops = &sh_mobile_ceu_host_ops; |
@@ -913,9 +910,11 @@ exit: | |||
913 | 910 | ||
914 | static int sh_mobile_ceu_remove(struct platform_device *pdev) | 911 | static int sh_mobile_ceu_remove(struct platform_device *pdev) |
915 | { | 912 | { |
916 | struct sh_mobile_ceu_dev *pcdev = platform_get_drvdata(pdev); | 913 | struct soc_camera_host *soc_host = to_soc_camera_host(&pdev->dev); |
914 | struct sh_mobile_ceu_dev *pcdev = container_of(soc_host, | ||
915 | struct sh_mobile_ceu_dev, ici); | ||
917 | 916 | ||
918 | soc_camera_host_unregister(&pcdev->ici); | 917 | soc_camera_host_unregister(soc_host); |
919 | clk_put(pcdev->clk); | 918 | clk_put(pcdev->clk); |
920 | free_irq(pcdev->irq, pcdev); | 919 | free_irq(pcdev->irq, pcdev); |
921 | if (platform_get_resource(pdev, IORESOURCE_MEM, 1)) | 920 | if (platform_get_resource(pdev, IORESOURCE_MEM, 1)) |