media: platform: exynos4-is: remove all references to physical addresses
[platform/kernel/linux-starfive.git] / drivers / media / platform / exynos4-is / fimc-core.c
index cde60fb..bfdee77 100644 (file)
@@ -214,11 +214,13 @@ static int fimc_get_scaler_factor(u32 src, u32 tar, u32 *ratio, u32 *shift)
        while (sh--) {
                u32 tmp = 1 << sh;
                if (src >= tar * tmp) {
-                       *shift = sh, *ratio = tmp;
+                       *shift = sh;
+                       *ratio = tmp;
                        return 0;
                }
        }
-       *shift = 0, *ratio = 1;
+       *shift = 0;
+       *ratio = 1;
        return 0;
 }
 
@@ -325,7 +327,7 @@ out:
 
 /* The color format (colplanes, memplanes) must be already configured. */
 int fimc_prepare_addr(struct fimc_ctx *ctx, struct vb2_buffer *vb,
-                     struct fimc_frame *frame, struct fimc_addr *paddr)
+                     struct fimc_frame *frame, struct fimc_addr *addr)
 {
        int ret = 0;
        u32 pix_size;
@@ -338,42 +340,40 @@ int fimc_prepare_addr(struct fimc_ctx *ctx, struct vb2_buffer *vb,
        dbg("memplanes= %d, colplanes= %d, pix_size= %d",
                frame->fmt->memplanes, frame->fmt->colplanes, pix_size);
 
-       paddr->y = vb2_dma_contig_plane_dma_addr(vb, 0);
+       addr->y = vb2_dma_contig_plane_dma_addr(vb, 0);
 
        if (frame->fmt->memplanes == 1) {
                switch (frame->fmt->colplanes) {
                case 1:
-                       paddr->cb = 0;
-                       paddr->cr = 0;
+                       addr->cb = 0;
+                       addr->cr = 0;
                        break;
                case 2:
                        /* decompose Y into Y/Cb */
-                       paddr->cb = (u32)(paddr->y + pix_size);
-                       paddr->cr = 0;
+                       addr->cb = (u32)(addr->y + pix_size);
+                       addr->cr = 0;
                        break;
                case 3:
-                       paddr->cb = (u32)(paddr->y + pix_size);
+                       addr->cb = (u32)(addr->y + pix_size);
                        /* decompose Y into Y/Cb/Cr */
                        if (FIMC_FMT_YCBCR420 == frame->fmt->color)
-                               paddr->cr = (u32)(paddr->cb
-                                               + (pix_size >> 2));
+                               addr->cr = (u32)(addr->cb + (pix_size >> 2));
                        else /* 422 */
-                               paddr->cr = (u32)(paddr->cb
-                                               + (pix_size >> 1));
+                               addr->cr = (u32)(addr->cb + (pix_size >> 1));
                        break;
                default:
                        return -EINVAL;
                }
        } else if (!frame->fmt->mdataplanes) {
                if (frame->fmt->memplanes >= 2)
-                       paddr->cb = vb2_dma_contig_plane_dma_addr(vb, 1);
+                       addr->cb = vb2_dma_contig_plane_dma_addr(vb, 1);
 
                if (frame->fmt->memplanes == 3)
-                       paddr->cr = vb2_dma_contig_plane_dma_addr(vb, 2);
+                       addr->cr = vb2_dma_contig_plane_dma_addr(vb, 2);
        }
 
-       dbg("PHYS_ADDR: y= 0x%X  cb= 0x%X cr= 0x%X ret= %d",
-           paddr->y, paddr->cb, paddr->cr, ret);
+       dbg("DMA ADDR: y= 0x%X  cb= 0x%X cr= 0x%X ret= %d",
+           addr->y, addr->cb, addr->cr, ret);
 
        return ret;
 }
@@ -954,9 +954,11 @@ static int fimc_probe(struct platform_device *pdev)
        spin_lock_init(&fimc->slock);
        mutex_init(&fimc->lock);
 
-       fimc->sysreg = fimc_get_sysreg_regmap(dev->of_node);
-       if (IS_ERR(fimc->sysreg))
-               return PTR_ERR(fimc->sysreg);
+       if (fimc->variant->has_isp_wb) {
+               fimc->sysreg = fimc_get_sysreg_regmap(dev->of_node);
+               if (IS_ERR(fimc->sysreg))
+                       return PTR_ERR(fimc->sysreg);
+       }
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        fimc->regs = devm_ioremap_resource(dev, res);
@@ -1110,67 +1112,8 @@ static int fimc_remove(struct platform_device *pdev)
        return 0;
 }
 
-/* Image pixel limits, similar across several FIMC HW revisions. */
-static const struct fimc_pix_limit s5p_pix_limit[4] = {
-       [0] = {
-               .scaler_en_w    = 3264,
-               .scaler_dis_w   = 8192,
-               .out_rot_en_w   = 1920,
-               .out_rot_dis_w  = 4224,
-       },
-       [1] = {
-               .scaler_en_w    = 4224,
-               .scaler_dis_w   = 8192,
-               .out_rot_en_w   = 1920,
-               .out_rot_dis_w  = 4224,
-       },
-       [2] = {
-               .scaler_en_w    = 1920,
-               .scaler_dis_w   = 8192,
-               .out_rot_en_w   = 1280,
-               .out_rot_dis_w  = 1920,
-       },
-};
-
-static const struct fimc_variant fimc0_variant_s5pv210 = {
-       .has_inp_rot     = 1,
-       .has_out_rot     = 1,
-       .has_cam_if      = 1,
-       .min_inp_pixsize = 16,
-       .min_out_pixsize = 16,
-       .hor_offs_align  = 8,
-       .min_vsize_align = 16,
-       .pix_limit       = &s5p_pix_limit[1],
-};
-
-static const struct fimc_variant fimc1_variant_s5pv210 = {
-       .has_inp_rot     = 1,
-       .has_out_rot     = 1,
-       .has_cam_if      = 1,
-       .has_mainscaler_ext = 1,
-       .min_inp_pixsize = 16,
-       .min_out_pixsize = 16,
-       .hor_offs_align  = 1,
-       .min_vsize_align = 1,
-       .pix_limit       = &s5p_pix_limit[2],
-};
-
-static const struct fimc_variant fimc2_variant_s5pv210 = {
-       .has_cam_if      = 1,
-       .min_inp_pixsize = 16,
-       .min_out_pixsize = 16,
-       .hor_offs_align  = 8,
-       .min_vsize_align = 16,
-       .pix_limit       = &s5p_pix_limit[2],
-};
-
 /* S5PV210, S5PC110 */
 static const struct fimc_drvdata fimc_drvdata_s5pv210 = {
-       .variant = {
-               [0] = &fimc0_variant_s5pv210,
-               [1] = &fimc1_variant_s5pv210,
-               [2] = &fimc2_variant_s5pv210,
-       },
        .num_entities   = 3,
        .lclk_frequency = 166000000UL,
        .out_buf_count  = 4,