mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
media: rockchip: rga: remove stride from rga_frame
Remove the stride variable from rga_frame. Despite the comment it didn't involve any calculation and is just a copy of the plane_fmt[0].bytesperline value. Therefore avoid this struct member and use the bytesperline value directly in the places where it is required. Also drop the dependency on the depth format member, which was only used to calculate the stride of the default format. This is already done by the v4l2_fill_pixfmt_mp_aligned helper and used as stride in try_fmt. Therefore using it's value also for the default format stride is just more consistent. 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
d11d812dde
commit
918c4589a0
|
|
@ -44,7 +44,7 @@ rga_get_corner_addrs(struct rga_frame *frm, struct rga_addrs *addrs,
|
|||
struct rga_addrs *lt, *lb, *rt, *rb;
|
||||
const struct v4l2_format_info *format_info;
|
||||
unsigned int x_div = 0,
|
||||
y_div = 0, uv_stride = 0, pixel_width = 0;
|
||||
y_div = 0, y_stride = 0, uv_stride = 0, pixel_width = 0;
|
||||
|
||||
lt = &corner_addrs.left_top;
|
||||
lb = &corner_addrs.left_bottom;
|
||||
|
|
@ -61,14 +61,15 @@ rga_get_corner_addrs(struct rga_frame *frm, struct rga_addrs *addrs,
|
|||
else
|
||||
x_div = 1;
|
||||
y_div = format_info->vdiv;
|
||||
uv_stride = frm->stride / x_div;
|
||||
pixel_width = frm->stride / frm->pix.width;
|
||||
y_stride = frm->pix.plane_fmt[0].bytesperline;
|
||||
uv_stride = y_stride / x_div;
|
||||
pixel_width = y_stride / frm->pix.width;
|
||||
|
||||
lt->y_addr = addrs->y_addr + y * frm->stride + x * pixel_width;
|
||||
lt->y_addr = addrs->y_addr + y * y_stride + x * pixel_width;
|
||||
lt->u_addr = addrs->u_addr + (y / y_div) * uv_stride + x / x_div;
|
||||
lt->v_addr = addrs->v_addr + (y / y_div) * uv_stride + x / x_div;
|
||||
|
||||
lb->y_addr = lt->y_addr + (h - 1) * frm->stride;
|
||||
lb->y_addr = lt->y_addr + (h - 1) * y_stride;
|
||||
lb->u_addr = lt->u_addr + (h / y_div - 1) * uv_stride;
|
||||
lb->v_addr = lt->v_addr + (h / y_div - 1) * uv_stride;
|
||||
|
||||
|
|
@ -169,6 +170,7 @@ static void rga_cmd_set_trans_info(struct rga_ctx *ctx)
|
|||
union rga_src_act_info src_act_info;
|
||||
union rga_dst_vir_info dst_vir_info;
|
||||
union rga_dst_act_info dst_act_info;
|
||||
u32 in_stride, out_stride;
|
||||
|
||||
src_h = ctx->in.crop.height;
|
||||
src_w = ctx->in.crop.width;
|
||||
|
|
@ -291,13 +293,15 @@ static void rga_cmd_set_trans_info(struct rga_ctx *ctx)
|
|||
* Calculate the framebuffer virtual strides and active size,
|
||||
* note that the step of vir_stride / vir_width is 4 byte words
|
||||
*/
|
||||
src_vir_info.data.vir_stride = ctx->in.stride >> 2;
|
||||
src_vir_info.data.vir_width = ctx->in.stride >> 2;
|
||||
in_stride = ctx->in.pix.plane_fmt[0].bytesperline;
|
||||
src_vir_info.data.vir_stride = in_stride >> 2;
|
||||
src_vir_info.data.vir_width = in_stride >> 2;
|
||||
|
||||
src_act_info.data.act_height = src_h - 1;
|
||||
src_act_info.data.act_width = src_w - 1;
|
||||
|
||||
dst_vir_info.data.vir_stride = ctx->out.stride >> 2;
|
||||
out_stride = ctx->out.pix.plane_fmt[0].bytesperline;
|
||||
dst_vir_info.data.vir_stride = out_stride >> 2;
|
||||
dst_act_info.data.act_height = dst_h - 1;
|
||||
dst_act_info.data.act_width = dst_w - 1;
|
||||
|
||||
|
|
@ -481,97 +485,81 @@ static struct rga_fmt formats[] = {
|
|||
.fourcc = V4L2_PIX_FMT_ARGB32,
|
||||
.color_swap = RGA_COLOR_ALPHA_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_ABGR8888,
|
||||
.depth = 32,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_ABGR32,
|
||||
.color_swap = RGA_COLOR_RB_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_ABGR8888,
|
||||
.depth = 32,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_XBGR32,
|
||||
.color_swap = RGA_COLOR_RB_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_XBGR8888,
|
||||
.depth = 32,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_RGB24,
|
||||
.color_swap = RGA_COLOR_NONE_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_RGB888,
|
||||
.depth = 24,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_BGR24,
|
||||
.color_swap = RGA_COLOR_RB_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_RGB888,
|
||||
.depth = 24,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_ARGB444,
|
||||
.color_swap = RGA_COLOR_RB_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_ABGR4444,
|
||||
.depth = 16,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_ARGB555,
|
||||
.color_swap = RGA_COLOR_RB_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_ABGR1555,
|
||||
.depth = 16,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_RGB565,
|
||||
.color_swap = RGA_COLOR_RB_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_BGR565,
|
||||
.depth = 16,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_NV21,
|
||||
.color_swap = RGA_COLOR_UV_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_YUV420SP,
|
||||
.depth = 12,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_NV61,
|
||||
.color_swap = RGA_COLOR_UV_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_YUV422SP,
|
||||
.depth = 16,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_NV12,
|
||||
.color_swap = RGA_COLOR_NONE_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_YUV420SP,
|
||||
.depth = 12,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_NV12M,
|
||||
.color_swap = RGA_COLOR_NONE_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_YUV420SP,
|
||||
.depth = 12,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_NV16,
|
||||
.color_swap = RGA_COLOR_NONE_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_YUV422SP,
|
||||
.depth = 16,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_YUV420,
|
||||
.color_swap = RGA_COLOR_NONE_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_YUV420P,
|
||||
.depth = 12,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_YUV422P,
|
||||
.color_swap = RGA_COLOR_NONE_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_YUV422P,
|
||||
.depth = 16,
|
||||
},
|
||||
{
|
||||
.fourcc = V4L2_PIX_FMT_YVU420,
|
||||
.color_swap = RGA_COLOR_UV_SWAP,
|
||||
.hw_format = RGA_COLOR_FMT_YUV420P,
|
||||
.depth = 12,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -267,8 +267,6 @@ static int rga_open(struct file *file)
|
|||
.fmt = &rga->hw->formats[0],
|
||||
};
|
||||
|
||||
def_frame.stride = (def_width * def_frame.fmt->depth) >> 3;
|
||||
|
||||
ctx = kzalloc_obj(*ctx);
|
||||
if (!ctx)
|
||||
return -ENOMEM;
|
||||
|
|
@ -481,7 +479,6 @@ static int vidioc_s_fmt(struct file *file, void *priv, struct v4l2_format *f)
|
|||
if (IS_ERR(frm))
|
||||
return PTR_ERR(frm);
|
||||
frm->fmt = rga_fmt_find(rga, pix_fmt->pixelformat);
|
||||
frm->stride = pix_fmt->plane_fmt[0].bytesperline;
|
||||
|
||||
/*
|
||||
* Copy colorimetry from output to capture as required by the
|
||||
|
|
@ -507,7 +504,7 @@ static int vidioc_s_fmt(struct file *file, void *priv, struct v4l2_format *f)
|
|||
"[%s] fmt - %p4cc %dx%d (stride %d)\n",
|
||||
V4L2_TYPE_IS_OUTPUT(f->type) ? "OUTPUT" : "CAPTURE",
|
||||
&frm->fmt->fourcc, pix_fmt->width, pix_fmt->height,
|
||||
frm->stride);
|
||||
pix_fmt->plane_fmt[0].bytesperline);
|
||||
|
||||
for (i = 0; i < pix_fmt->num_planes; i++) {
|
||||
v4l2_dbg(debug, 1, &rga->v4l2_dev,
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@
|
|||
|
||||
struct rga_fmt {
|
||||
u32 fourcc;
|
||||
int depth;
|
||||
u8 color_swap;
|
||||
u8 hw_format;
|
||||
};
|
||||
|
|
@ -31,9 +30,6 @@ struct rga_frame {
|
|||
/* Image format */
|
||||
struct rga_fmt *fmt;
|
||||
struct v4l2_pix_format_mplane pix;
|
||||
|
||||
/* Variables that can calculated once and reused */
|
||||
u32 stride;
|
||||
};
|
||||
|
||||
struct rga_dma_desc {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user