media: rkisp1: stats: mask the hist_bins values
authorDafna Hirschfeld <dafna.hirschfeld@collabora.com>
Thu, 21 Jan 2021 14:44:04 +0000 (15:44 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 28 Jan 2021 10:30:04 +0000 (11:30 +0100)
hist_bins is an array of type __u32. Each entry represents
a 20 bit value. So mask out the unused bits.

Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Acked-by: Helen Koike <helen.koike@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/rockchip/rkisp1/rkisp1-regs.h
drivers/media/platform/rockchip/rkisp1/rkisp1-stats.c

index 8a8d960..fa33080 100644 (file)
 #define RKISP1_CIF_ISP_MAX_HIST_PREDIVIDER             0x0000007F
 #define RKISP1_CIF_ISP_HIST_ROW_NUM                    5
 #define RKISP1_CIF_ISP_HIST_COLUMN_NUM                 5
+#define RKISP1_CIF_ISP_HIST_GET_BIN(x)                 ((x) & 0x000FFFFF)
 
 /* AUTO FOCUS MEASUREMENT:  ISP_AFM_CTRL */
 #define RKISP1_ISP_AFM_CTRL_ENABLE                     BIT(0)
index 4cdb180..3b27837 100644 (file)
@@ -233,9 +233,11 @@ static void rkisp1_stats_get_hst_meas(struct rkisp1_stats *stats,
        unsigned int i;
 
        pbuf->meas_type |= RKISP1_CIF_ISP_STAT_HIST;
-       for (i = 0; i < RKISP1_CIF_ISP_HIST_BIN_N_MAX; i++)
-               pbuf->params.hist.hist_bins[i] =
-                       rkisp1_read(rkisp1, RKISP1_CIF_ISP_HIST_BIN_0 + i * 4);
+       for (i = 0; i < RKISP1_CIF_ISP_HIST_BIN_N_MAX; i++) {
+               u32 reg_val = rkisp1_read(rkisp1, RKISP1_CIF_ISP_HIST_BIN_0 + i * 4);
+
+               pbuf->params.hist.hist_bins[i] = RKISP1_CIF_ISP_HIST_GET_BIN(reg_val);
+       }
 }
 
 static void rkisp1_stats_get_bls_meas(struct rkisp1_stats *stats,