mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 18:21:24 +02:00
media: rockchip: rga: align stride to 4 bytes
Add an alignment setting to rga_hw to set the desired stride alignment. As the RGA2 register for the stride counts in word units, the code already divides the bytesperline value by 4 when writing it into the register. Therefore fix the alignment to a multiple of 4 to avoid potential off by one errors due from the division. Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Sven Püschel <s.pueschel@pengutronix.de> Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
parent
6f4e57d57c
commit
00910c4f73
|
|
@ -580,6 +580,7 @@ const struct rga_hw rga2_hw = {
|
|||
.max_width = MAX_WIDTH,
|
||||
.min_height = MIN_HEIGHT,
|
||||
.max_height = MAX_HEIGHT,
|
||||
.stride_alignment = 4,
|
||||
|
||||
.start = rga_hw_start,
|
||||
.handle_irq = rga_handle_irq,
|
||||
|
|
|
|||
|
|
@ -234,10 +234,10 @@ static int rga_open(struct file *file)
|
|||
ctx->in = def_frame;
|
||||
ctx->out = def_frame;
|
||||
|
||||
v4l2_fill_pixfmt_mp(&ctx->in.pix,
|
||||
ctx->in.fmt->fourcc, def_width, def_height);
|
||||
v4l2_fill_pixfmt_mp(&ctx->out.pix,
|
||||
ctx->out.fmt->fourcc, def_width, def_height);
|
||||
v4l2_fill_pixfmt_mp_aligned(&ctx->in.pix, ctx->in.fmt->fourcc,
|
||||
def_width, def_height, rga->hw->stride_alignment);
|
||||
v4l2_fill_pixfmt_mp_aligned(&ctx->out.pix, ctx->out.fmt->fourcc,
|
||||
def_width, def_height, rga->hw->stride_alignment);
|
||||
|
||||
if (mutex_lock_interruptible(&rga->mutex)) {
|
||||
ret = -ERESTARTSYS;
|
||||
|
|
@ -393,7 +393,8 @@ static int vidioc_try_fmt(struct file *file, void *priv, struct v4l2_format *f)
|
|||
fmt = &hw->formats[0];
|
||||
|
||||
v4l2_apply_frmsize_constraints(&pix_fmt->width, &pix_fmt->height, &frmsize);
|
||||
v4l2_fill_pixfmt_mp(pix_fmt, fmt->fourcc, pix_fmt->width, pix_fmt->height);
|
||||
v4l2_fill_pixfmt_mp_aligned(pix_fmt, fmt->fourcc,
|
||||
pix_fmt->width, pix_fmt->height, hw->stride_alignment);
|
||||
pix_fmt->field = V4L2_FIELD_NONE;
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@ struct rga_hw {
|
|||
size_t cmdbuf_size;
|
||||
u32 min_width, min_height;
|
||||
u32 max_width, max_height;
|
||||
u8 stride_alignment;
|
||||
|
||||
void (*start)(struct rockchip_rga *rga,
|
||||
struct rga_vb_buffer *src, struct rga_vb_buffer *dst);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user