Commit 05e58c83 authored by Ezequiel Garcia's avatar Ezequiel Garcia Committed by Mauro Carvalho Chehab

media: hantro: Simplify macroblock macros

It seems all codecs are using a 16x16 size macroblock,
and so it's possible to have just one set of macroblock macros.
Signed-off-by: default avatarEzequiel Garcia <ezequiel@collabora.com>
Reviewed-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 5adff604
...@@ -26,21 +26,9 @@ ...@@ -26,21 +26,9 @@
#include "hantro_hw.h" #include "hantro_hw.h"
#define VP8_MB_DIM 16 #define MB_DIM 16
#define VP8_MB_WIDTH(w) DIV_ROUND_UP(w, VP8_MB_DIM) #define MB_WIDTH(w) DIV_ROUND_UP(w, MB_DIM)
#define VP8_MB_HEIGHT(h) DIV_ROUND_UP(h, VP8_MB_DIM) #define MB_HEIGHT(h) DIV_ROUND_UP(h, MB_DIM)
#define H264_MB_DIM 16
#define H264_MB_WIDTH(w) DIV_ROUND_UP(w, H264_MB_DIM)
#define H264_MB_HEIGHT(h) DIV_ROUND_UP(h, H264_MB_DIM)
#define MPEG2_MB_DIM 16
#define MPEG2_MB_WIDTH(w) DIV_ROUND_UP(w, MPEG2_MB_DIM)
#define MPEG2_MB_HEIGHT(h) DIV_ROUND_UP(h, MPEG2_MB_DIM)
#define JPEG_MB_DIM 16
#define JPEG_MB_WIDTH(w) DIV_ROUND_UP(w, JPEG_MB_DIM)
#define JPEG_MB_HEIGHT(h) DIV_ROUND_UP(h, JPEG_MB_DIM)
struct hantro_ctx; struct hantro_ctx;
struct hantro_codec_ops; struct hantro_codec_ops;
......
...@@ -251,7 +251,7 @@ static void set_buffers(struct hantro_ctx *ctx) ...@@ -251,7 +251,7 @@ static void set_buffers(struct hantro_ctx *ctx)
size_t mv_offset = round_up(pic_size, 8); size_t mv_offset = round_up(pic_size, 8);
if (ctrls->slices[0].flags & V4L2_H264_SLICE_FLAG_BOTTOM_FIELD) if (ctrls->slices[0].flags & V4L2_H264_SLICE_FLAG_BOTTOM_FIELD)
mv_offset += 32 * H264_MB_WIDTH(ctx->dst_fmt.width); mv_offset += 32 * MB_WIDTH(ctx->dst_fmt.width);
vdpu_write_relaxed(vpu, dst_dma + mv_offset, vdpu_write_relaxed(vpu, dst_dma + mv_offset,
G1_REG_ADDR_DIR_MV); G1_REG_ADDR_DIR_MV);
......
...@@ -207,8 +207,8 @@ void hantro_g1_mpeg2_dec_run(struct hantro_ctx *ctx) ...@@ -207,8 +207,8 @@ void hantro_g1_mpeg2_dec_run(struct hantro_ctx *ctx)
G1_REG_DEC_AXI_WR_ID(0); G1_REG_DEC_AXI_WR_ID(0);
vdpu_write_relaxed(vpu, reg, G1_SWREG(3)); vdpu_write_relaxed(vpu, reg, G1_SWREG(3));
reg = G1_REG_PIC_MB_WIDTH(MPEG2_MB_WIDTH(ctx->dst_fmt.width)) | reg = G1_REG_PIC_MB_WIDTH(MB_WIDTH(ctx->dst_fmt.width)) |
G1_REG_PIC_MB_HEIGHT_P(MPEG2_MB_HEIGHT(ctx->dst_fmt.height)) | G1_REG_PIC_MB_HEIGHT_P(MB_HEIGHT(ctx->dst_fmt.height)) |
G1_REG_ALT_SCAN_E(picture->alternate_scan) | G1_REG_ALT_SCAN_E(picture->alternate_scan) |
G1_REG_TOPFIELDFIRST_E(picture->top_field_first); G1_REG_TOPFIELDFIRST_E(picture->top_field_first);
vdpu_write_relaxed(vpu, reg, G1_SWREG(4)); vdpu_write_relaxed(vpu, reg, G1_SWREG(4));
......
...@@ -470,8 +470,8 @@ void hantro_g1_vp8_dec_run(struct hantro_ctx *ctx) ...@@ -470,8 +470,8 @@ void hantro_g1_vp8_dec_run(struct hantro_ctx *ctx)
vdpu_write_relaxed(vpu, reg, G1_REG_DEC_CTRL0); vdpu_write_relaxed(vpu, reg, G1_REG_DEC_CTRL0);
/* Frame dimensions */ /* Frame dimensions */
mb_width = VP8_MB_WIDTH(width); mb_width = MB_WIDTH(width);
mb_height = VP8_MB_HEIGHT(height); mb_height = MB_HEIGHT(height);
reg = G1_REG_DEC_CTRL1_PIC_MB_WIDTH(mb_width) | reg = G1_REG_DEC_CTRL1_PIC_MB_WIDTH(mb_width) |
G1_REG_DEC_CTRL1_PIC_MB_HEIGHT_P(mb_height) | G1_REG_DEC_CTRL1_PIC_MB_HEIGHT_P(mb_height) |
G1_REG_DEC_CTRL1_PIC_MB_W_EXT(mb_width >> 9) | G1_REG_DEC_CTRL1_PIC_MB_W_EXT(mb_width >> 9) |
......
...@@ -116,8 +116,8 @@ void hantro_h1_jpeg_enc_run(struct hantro_ctx *ctx) ...@@ -116,8 +116,8 @@ void hantro_h1_jpeg_enc_run(struct hantro_ctx *ctx)
/* Make sure that all registers are written at this point. */ /* Make sure that all registers are written at this point. */
vepu_write(vpu, reg, H1_REG_AXI_CTRL); vepu_write(vpu, reg, H1_REG_AXI_CTRL);
reg = H1_REG_ENC_CTRL_WIDTH(JPEG_MB_WIDTH(ctx->src_fmt.width)) reg = H1_REG_ENC_CTRL_WIDTH(MB_WIDTH(ctx->src_fmt.width))
| H1_REG_ENC_CTRL_HEIGHT(JPEG_MB_HEIGHT(ctx->src_fmt.height)) | H1_REG_ENC_CTRL_HEIGHT(MB_HEIGHT(ctx->src_fmt.height))
| H1_REG_ENC_CTRL_ENC_MODE_JPEG | H1_REG_ENC_CTRL_ENC_MODE_JPEG
| H1_REG_ENC_PIC_INTRA | H1_REG_ENC_PIC_INTRA
| H1_REG_ENC_CTRL_EN_BIT; | H1_REG_ENC_CTRL_EN_BIT;
......
...@@ -48,10 +48,10 @@ static const struct hantro_fmt rk3288_vpu_enc_fmts[] = { ...@@ -48,10 +48,10 @@ static const struct hantro_fmt rk3288_vpu_enc_fmts[] = {
.frmsize = { .frmsize = {
.min_width = 96, .min_width = 96,
.max_width = 8192, .max_width = 8192,
.step_width = JPEG_MB_DIM, .step_width = MB_DIM,
.min_height = 32, .min_height = 32,
.max_height = 8192, .max_height = 8192,
.step_height = JPEG_MB_DIM, .step_height = MB_DIM,
}, },
}, },
}; };
...@@ -68,10 +68,10 @@ static const struct hantro_fmt rk3288_vpu_dec_fmts[] = { ...@@ -68,10 +68,10 @@ static const struct hantro_fmt rk3288_vpu_dec_fmts[] = {
.frmsize = { .frmsize = {
.min_width = 48, .min_width = 48,
.max_width = 3840, .max_width = 3840,
.step_width = H264_MB_DIM, .step_width = MB_DIM,
.min_height = 48, .min_height = 48,
.max_height = 2160, .max_height = 2160,
.step_height = H264_MB_DIM, .step_height = MB_DIM,
}, },
}, },
{ {
...@@ -81,10 +81,10 @@ static const struct hantro_fmt rk3288_vpu_dec_fmts[] = { ...@@ -81,10 +81,10 @@ static const struct hantro_fmt rk3288_vpu_dec_fmts[] = {
.frmsize = { .frmsize = {
.min_width = 48, .min_width = 48,
.max_width = 1920, .max_width = 1920,
.step_width = MPEG2_MB_DIM, .step_width = MB_DIM,
.min_height = 48, .min_height = 48,
.max_height = 1088, .max_height = 1088,
.step_height = MPEG2_MB_DIM, .step_height = MB_DIM,
}, },
}, },
{ {
...@@ -94,10 +94,10 @@ static const struct hantro_fmt rk3288_vpu_dec_fmts[] = { ...@@ -94,10 +94,10 @@ static const struct hantro_fmt rk3288_vpu_dec_fmts[] = {
.frmsize = { .frmsize = {
.min_width = 48, .min_width = 48,
.max_width = 3840, .max_width = 3840,
.step_width = VP8_MB_DIM, .step_width = MB_DIM,
.min_height = 48, .min_height = 48,
.max_height = 2160, .max_height = 2160,
.step_height = VP8_MB_DIM, .step_height = MB_DIM,
}, },
}, },
}; };
......
...@@ -47,10 +47,10 @@ static const struct hantro_fmt rk3399_vpu_enc_fmts[] = { ...@@ -47,10 +47,10 @@ static const struct hantro_fmt rk3399_vpu_enc_fmts[] = {
.frmsize = { .frmsize = {
.min_width = 96, .min_width = 96,
.max_width = 8192, .max_width = 8192,
.step_width = JPEG_MB_DIM, .step_width = MB_DIM,
.min_height = 32, .min_height = 32,
.max_height = 8192, .max_height = 8192,
.step_height = JPEG_MB_DIM, .step_height = MB_DIM,
}, },
}, },
}; };
...@@ -67,10 +67,10 @@ static const struct hantro_fmt rk3399_vpu_dec_fmts[] = { ...@@ -67,10 +67,10 @@ static const struct hantro_fmt rk3399_vpu_dec_fmts[] = {
.frmsize = { .frmsize = {
.min_width = 48, .min_width = 48,
.max_width = 1920, .max_width = 1920,
.step_width = MPEG2_MB_DIM, .step_width = MB_DIM,
.min_height = 48, .min_height = 48,
.max_height = 1088, .max_height = 1088,
.step_height = MPEG2_MB_DIM, .step_height = MB_DIM,
}, },
}, },
{ {
...@@ -80,10 +80,10 @@ static const struct hantro_fmt rk3399_vpu_dec_fmts[] = { ...@@ -80,10 +80,10 @@ static const struct hantro_fmt rk3399_vpu_dec_fmts[] = {
.frmsize = { .frmsize = {
.min_width = 48, .min_width = 48,
.max_width = 3840, .max_width = 3840,
.step_width = VP8_MB_DIM, .step_width = MB_DIM,
.min_height = 48, .min_height = 48,
.max_height = 2160, .max_height = 2160,
.step_height = VP8_MB_DIM, .step_height = MB_DIM,
}, },
}, },
}; };
......
...@@ -149,8 +149,8 @@ void rk3399_vpu_jpeg_enc_run(struct hantro_ctx *ctx) ...@@ -149,8 +149,8 @@ void rk3399_vpu_jpeg_enc_run(struct hantro_ctx *ctx)
reg = VEPU_REG_AXI_CTRL_BURST_LEN(16); reg = VEPU_REG_AXI_CTRL_BURST_LEN(16);
vepu_write_relaxed(vpu, reg, VEPU_REG_AXI_CTRL); vepu_write_relaxed(vpu, reg, VEPU_REG_AXI_CTRL);
reg = VEPU_REG_MB_WIDTH(JPEG_MB_WIDTH(ctx->src_fmt.width)) reg = VEPU_REG_MB_WIDTH(MB_WIDTH(ctx->src_fmt.width))
| VEPU_REG_MB_HEIGHT(JPEG_MB_HEIGHT(ctx->src_fmt.height)) | VEPU_REG_MB_HEIGHT(MB_HEIGHT(ctx->src_fmt.height))
| VEPU_REG_FRAME_TYPE_INTRA | VEPU_REG_FRAME_TYPE_INTRA
| VEPU_REG_ENCODE_FORMAT_JPEG | VEPU_REG_ENCODE_FORMAT_JPEG
| VEPU_REG_ENCODE_ENABLE; | VEPU_REG_ENCODE_ENABLE;
......
...@@ -223,8 +223,8 @@ void rk3399_vpu_mpeg2_dec_run(struct hantro_ctx *ctx) ...@@ -223,8 +223,8 @@ void rk3399_vpu_mpeg2_dec_run(struct hantro_ctx *ctx)
VDPU_REG_DEC_CLK_GATE_E(1); VDPU_REG_DEC_CLK_GATE_E(1);
vdpu_write_relaxed(vpu, reg, VDPU_SWREG(57)); vdpu_write_relaxed(vpu, reg, VDPU_SWREG(57));
reg = VDPU_REG_PIC_MB_WIDTH(MPEG2_MB_WIDTH(ctx->dst_fmt.width)) | reg = VDPU_REG_PIC_MB_WIDTH(MB_WIDTH(ctx->dst_fmt.width)) |
VDPU_REG_PIC_MB_HEIGHT_P(MPEG2_MB_HEIGHT(ctx->dst_fmt.height)) | VDPU_REG_PIC_MB_HEIGHT_P(MB_HEIGHT(ctx->dst_fmt.height)) |
VDPU_REG_ALT_SCAN_E(picture->alternate_scan) | VDPU_REG_ALT_SCAN_E(picture->alternate_scan) |
VDPU_REG_TOPFIELDFIRST_E(picture->top_field_first); VDPU_REG_TOPFIELDFIRST_E(picture->top_field_first);
vdpu_write_relaxed(vpu, reg, VDPU_SWREG(120)); vdpu_write_relaxed(vpu, reg, VDPU_SWREG(120));
......
...@@ -563,8 +563,8 @@ void rk3399_vpu_vp8_dec_run(struct hantro_ctx *ctx) ...@@ -563,8 +563,8 @@ void rk3399_vpu_vp8_dec_run(struct hantro_ctx *ctx)
hantro_reg_write(vpu, &vp8_dec_filter_disable, 1); hantro_reg_write(vpu, &vp8_dec_filter_disable, 1);
/* Frame dimensions */ /* Frame dimensions */
mb_width = VP8_MB_WIDTH(width); mb_width = MB_WIDTH(width);
mb_height = VP8_MB_HEIGHT(height); mb_height = MB_HEIGHT(height);
hantro_reg_write(vpu, &vp8_dec_mb_width, mb_width); hantro_reg_write(vpu, &vp8_dec_mb_width, mb_width);
hantro_reg_write(vpu, &vp8_dec_mb_height, mb_height); hantro_reg_write(vpu, &vp8_dec_mb_height, mb_height);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment