|
@@ -1038,12 +1038,11 @@ static int fimc_try_fmt_mplane(struct fimc_ctx *ctx, struct v4l2_format *f)
|
|
|
mod_x = 6; /* 64 x 32 pixels tile */
|
|
|
mod_y = 5;
|
|
|
} else {
|
|
|
- if (fimc->id == 1 && variant->pix_hoff)
|
|
|
+ if (variant->min_vsize_align == 1)
|
|
|
mod_y = fimc_fmt_is_rgb(fmt->color) ? 0 : 1;
|
|
|
else
|
|
|
- mod_y = mod_x;
|
|
|
+ mod_y = ffs(variant->min_vsize_align) - 1;
|
|
|
}
|
|
|
- dbg("mod_x: %d, mod_y: %d, max_w: %d", mod_x, mod_y, max_w);
|
|
|
|
|
|
v4l_bound_align_image(&pix->width, 16, max_w, mod_x,
|
|
|
&pix->height, 8, variant->pix_limit->scaler_dis_w, mod_y, 0);
|
|
@@ -1226,10 +1225,10 @@ static int fimc_m2m_try_crop(struct fimc_ctx *ctx, struct v4l2_crop *cr)
|
|
|
fimc->variant->min_inp_pixsize : fimc->variant->min_out_pixsize;
|
|
|
|
|
|
/* Get pixel alignment constraints. */
|
|
|
- if (fimc->id == 1 && fimc->variant->pix_hoff)
|
|
|
+ if (fimc->variant->min_vsize_align == 1)
|
|
|
halign = fimc_fmt_is_rgb(f->fmt->color) ? 0 : 1;
|
|
|
else
|
|
|
- halign = ffs(min_size) - 1;
|
|
|
+ halign = ffs(fimc->variant->min_vsize_align) - 1;
|
|
|
|
|
|
for (i = 0; i < f->fmt->colplanes; i++)
|
|
|
depth += f->fmt->depth[i];
|
|
@@ -1834,6 +1833,7 @@ static struct samsung_fimc_variant fimc0_variant_s5p = {
|
|
|
.min_inp_pixsize = 16,
|
|
|
.min_out_pixsize = 16,
|
|
|
.hor_offs_align = 8,
|
|
|
+ .min_vsize_align = 16,
|
|
|
.out_buf_count = 4,
|
|
|
.pix_limit = &s5p_pix_limit[0],
|
|
|
};
|
|
@@ -1843,6 +1843,7 @@ static struct samsung_fimc_variant fimc2_variant_s5p = {
|
|
|
.min_inp_pixsize = 16,
|
|
|
.min_out_pixsize = 16,
|
|
|
.hor_offs_align = 8,
|
|
|
+ .min_vsize_align = 16,
|
|
|
.out_buf_count = 4,
|
|
|
.pix_limit = &s5p_pix_limit[1],
|
|
|
};
|
|
@@ -1855,6 +1856,7 @@ static struct samsung_fimc_variant fimc0_variant_s5pv210 = {
|
|
|
.min_inp_pixsize = 16,
|
|
|
.min_out_pixsize = 16,
|
|
|
.hor_offs_align = 8,
|
|
|
+ .min_vsize_align = 16,
|
|
|
.out_buf_count = 4,
|
|
|
.pix_limit = &s5p_pix_limit[1],
|
|
|
};
|
|
@@ -1868,6 +1870,7 @@ static struct samsung_fimc_variant fimc1_variant_s5pv210 = {
|
|
|
.min_inp_pixsize = 16,
|
|
|
.min_out_pixsize = 16,
|
|
|
.hor_offs_align = 1,
|
|
|
+ .min_vsize_align = 1,
|
|
|
.out_buf_count = 4,
|
|
|
.pix_limit = &s5p_pix_limit[2],
|
|
|
};
|
|
@@ -1878,6 +1881,7 @@ static struct samsung_fimc_variant fimc2_variant_s5pv210 = {
|
|
|
.min_inp_pixsize = 16,
|
|
|
.min_out_pixsize = 16,
|
|
|
.hor_offs_align = 8,
|
|
|
+ .min_vsize_align = 16,
|
|
|
.out_buf_count = 4,
|
|
|
.pix_limit = &s5p_pix_limit[2],
|
|
|
};
|
|
@@ -1892,6 +1896,7 @@ static struct samsung_fimc_variant fimc0_variant_exynos4 = {
|
|
|
.min_inp_pixsize = 16,
|
|
|
.min_out_pixsize = 16,
|
|
|
.hor_offs_align = 2,
|
|
|
+ .min_vsize_align = 1,
|
|
|
.out_buf_count = 32,
|
|
|
.pix_limit = &s5p_pix_limit[1],
|
|
|
};
|
|
@@ -1904,6 +1909,7 @@ static struct samsung_fimc_variant fimc3_variant_exynos4 = {
|
|
|
.min_inp_pixsize = 16,
|
|
|
.min_out_pixsize = 16,
|
|
|
.hor_offs_align = 2,
|
|
|
+ .min_vsize_align = 1,
|
|
|
.out_buf_count = 32,
|
|
|
.pix_limit = &s5p_pix_limit[3],
|
|
|
};
|