diff --git a/patch/kernel/archive/rockchip64-6.18/media-0004-media-verisilicon-AV1-Fix-enable-cdef-computation.patch b/patch/kernel/archive/rockchip64-6.18/media-0004-media-verisilicon-AV1-Fix-enable-cdef-computation.patch new file mode 100644 index 0000000000..2298fd78c9 --- /dev/null +++ b/patch/kernel/archive/rockchip64-6.18/media-0004-media-verisilicon-AV1-Fix-enable-cdef-computation.patch @@ -0,0 +1,49 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Gaignard +Date: Mon, 22 Sep 2025 13:15:02 +0200 +Subject: media: verisilicon: AV1: Fix enable cdef computation + +Testing V4L2_AV1_SEQUENCE_FLAG_ENABLE_CDEF flag isn't enough +to know if cdef bit has to be set. +If any of the used cdef fields isn't zero then we must enable +cdef feature on the hardware. + +Signed-off-by: Benjamin Gaignard +Fixes: 727a400686a2c ("media: verisilicon: Add Rockchip AV1 decoder") +--- + drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c b/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c +index 111111111111..222222222222 100644 +--- a/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c ++++ b/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c +@@ -1396,8 +1396,16 @@ static void rockchip_vpu981_av1_dec_set_cdef(struct hantro_ctx *ctx) + u16 luma_sec_strength = 0; + u32 chroma_pri_strength = 0; + u16 chroma_sec_strength = 0; ++ bool enable_cdef; + int i; + ++ enable_cdef = !(cdef->bits == 0 && ++ cdef->damping_minus_3 == 0 && ++ cdef->y_pri_strength[0] == 0 && ++ cdef->y_sec_strength[0] == 0 && ++ cdef->uv_pri_strength[0] == 0 && ++ cdef->uv_sec_strength[0] == 0); ++ hantro_reg_write(vpu, &av1_enable_cdef, enable_cdef); + hantro_reg_write(vpu, &av1_cdef_bits, cdef->bits); + hantro_reg_write(vpu, &av1_cdef_damping, cdef->damping_minus_3); + +@@ -1953,8 +1961,6 @@ static void rockchip_vpu981_av1_dec_set_parameters(struct hantro_ctx *ctx) + !!(ctrls->frame->flags & V4L2_AV1_FRAME_FLAG_SHOW_FRAME)); + hantro_reg_write(vpu, &av1_switchable_motion_mode, + !!(ctrls->frame->flags & V4L2_AV1_FRAME_FLAG_IS_MOTION_MODE_SWITCHABLE)); +- hantro_reg_write(vpu, &av1_enable_cdef, +- !!(ctrls->sequence->flags & V4L2_AV1_SEQUENCE_FLAG_ENABLE_CDEF)); + hantro_reg_write(vpu, &av1_allow_masked_compound, + !!(ctrls->sequence->flags + & V4L2_AV1_SEQUENCE_FLAG_ENABLE_MASKED_COMPOUND)); +-- +Armbian +