media: s5p-mfc: Fix in register read and write for H264
authorSmitha T Murthy <smitha.t@samsung.com>
Wed, 7 Sep 2022 10:32:25 +0000 (16:02 +0530)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 7 Dec 2022 16:58:46 +0000 (17:58 +0100)
Few of the H264 encoder registers written were not getting reflected
since the read values were not stored and getting overwritten.

Fixes: 6a9c6f681257 ("[media] s5p-mfc: Add variants to access mfc registers")

Cc: stable@vger.kernel.org
Cc: linux-fsd@tesla.com
Signed-off-by: Smitha T Murthy <smitha.t@samsung.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/platform/samsung/s5p-mfc/s5p_mfc_opr_v6.c

index 8227004..c0df5ac 100644 (file)
@@ -1060,7 +1060,7 @@ static int s5p_mfc_set_enc_params_h264(struct s5p_mfc_ctx *ctx)
        }
 
        /* aspect ratio VUI */
-       readl(mfc_regs->e_h264_options);
+       reg = readl(mfc_regs->e_h264_options);
        reg &= ~(0x1 << 5);
        reg |= ((p_h264->vui_sar & 0x1) << 5);
        writel(reg, mfc_regs->e_h264_options);
@@ -1083,7 +1083,7 @@ static int s5p_mfc_set_enc_params_h264(struct s5p_mfc_ctx *ctx)
 
        /* intra picture period for H.264 open GOP */
        /* control */
-       readl(mfc_regs->e_h264_options);
+       reg = readl(mfc_regs->e_h264_options);
        reg &= ~(0x1 << 4);
        reg |= ((p_h264->open_gop & 0x1) << 4);
        writel(reg, mfc_regs->e_h264_options);
@@ -1097,23 +1097,23 @@ static int s5p_mfc_set_enc_params_h264(struct s5p_mfc_ctx *ctx)
        }
 
        /* 'WEIGHTED_BI_PREDICTION' for B is disable */
-       readl(mfc_regs->e_h264_options);
+       reg = readl(mfc_regs->e_h264_options);
        reg &= ~(0x3 << 9);
        writel(reg, mfc_regs->e_h264_options);
 
        /* 'CONSTRAINED_INTRA_PRED_ENABLE' is disable */
-       readl(mfc_regs->e_h264_options);
+       reg = readl(mfc_regs->e_h264_options);
        reg &= ~(0x1 << 14);
        writel(reg, mfc_regs->e_h264_options);
 
        /* ASO */
-       readl(mfc_regs->e_h264_options);
+       reg = readl(mfc_regs->e_h264_options);
        reg &= ~(0x1 << 6);
        reg |= ((p_h264->aso & 0x1) << 6);
        writel(reg, mfc_regs->e_h264_options);
 
        /* hier qp enable */
-       readl(mfc_regs->e_h264_options);
+       reg = readl(mfc_regs->e_h264_options);
        reg &= ~(0x1 << 8);
        reg |= ((p_h264->open_gop & 0x1) << 8);
        writel(reg, mfc_regs->e_h264_options);
@@ -1134,7 +1134,7 @@ static int s5p_mfc_set_enc_params_h264(struct s5p_mfc_ctx *ctx)
        writel(reg, mfc_regs->e_h264_num_t_layer);
 
        /* frame packing SEI generation */
-       readl(mfc_regs->e_h264_options);
+       reg = readl(mfc_regs->e_h264_options);
        reg &= ~(0x1 << 25);
        reg |= ((p_h264->sei_frame_packing & 0x1) << 25);
        writel(reg, mfc_regs->e_h264_options);