mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 07:03:03 +02:00
media: imx: imx7-media-csi: Fix applying format constraints
v4l_bound_align_image() aligns to a multiple of 2 to the power of
walign, not to walign. Depending on the pixel format, this causes the
image width to be aligned to 16 or 256 pixels instead of 4 or 8 as
required by the hardware. Fix it by rounding and clamping the width and
height manually.
Closes: https://lore.kernel.org/linux-media/CAJ+vNU0BOVLTL17ofgHwtexbpuMYwH_aGUC==EXABUtHHiv_ag@mail.gmail.com
Reported-by: Tim Harvey <tharvey@gateworks.com>
Fixes: 6f482c4729 ("media: imx: imx7-media-csi: Get rid of superfluous call to imx7_csi_mbus_fmt_to_pix_fmt")
Co-developed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Fabio Estevam <festevam@denx.de>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
6d00f4ec12
commit
2908042a37
|
|
@ -9,7 +9,9 @@
|
|||
#include <linux/clk.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/math.h>
|
||||
#include <linux/mfd/syscon.h>
|
||||
#include <linux/minmax.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_graph.h>
|
||||
|
|
@ -1137,8 +1139,9 @@ __imx7_csi_video_try_fmt(struct v4l2_pix_format *pixfmt,
|
|||
* TODO: Implement configurable stride support.
|
||||
*/
|
||||
walign = 8 * 8 / cc->bpp;
|
||||
v4l_bound_align_image(&pixfmt->width, 1, 0xffff, walign,
|
||||
&pixfmt->height, 1, 0xffff, 1, 0);
|
||||
pixfmt->width = clamp(round_up(pixfmt->width, walign), walign,
|
||||
round_down(65535U, walign));
|
||||
pixfmt->height = clamp(pixfmt->height, 1U, 65535U);
|
||||
|
||||
pixfmt->bytesperline = pixfmt->width * cc->bpp / 8;
|
||||
pixfmt->sizeimage = pixfmt->bytesperline * pixfmt->height;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user