OSDN Git Service

[media] omap3isp: Fix histogram regions
authorJohannes Schellen <Johannes.Schellen@rwth-aachen.de>
Fri, 11 Jan 2013 15:00:19 +0000 (12:00 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 5 Feb 2013 16:50:49 +0000 (14:50 -0200)
This patch fixes a bug which causes all histogram regions to start in the
top left corner of the image. The histogram region coordinates are 16 bit
values which share a 32 bit register. The bug is due to the region end
value assignments overwriting the region start values with zero.

Signed-off-by: Johannes Schellen <Johannes.Schellen@rwth-aachen.de>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/platform/omap3isp/isphist.c

index 2ccc4e5..e070c24 100644 (file)
@@ -114,14 +114,14 @@ static void hist_setup_regs(struct ispstat *hist, void *priv)
        /* Regions size and position */
        for (c = 0; c < OMAP3ISP_HIST_MAX_REGIONS; c++) {
                if (c < conf->num_regions) {
-                       reg_hor[c] = conf->region[c].h_start <<
-                                    ISPHIST_REG_START_SHIFT;
-                       reg_hor[c] = conf->region[c].h_end <<
-                                    ISPHIST_REG_END_SHIFT;
-                       reg_ver[c] = conf->region[c].v_start <<
-                                    ISPHIST_REG_START_SHIFT;
-                       reg_ver[c] = conf->region[c].v_end <<
-                                    ISPHIST_REG_END_SHIFT;
+                       reg_hor[c] = (conf->region[c].h_start <<
+                                    ISPHIST_REG_START_SHIFT)
+                                  | (conf->region[c].h_end <<
+                                    ISPHIST_REG_END_SHIFT);
+                       reg_ver[c] = (conf->region[c].v_start <<
+                                    ISPHIST_REG_START_SHIFT)
+                                  | (conf->region[c].v_end <<
+                                    ISPHIST_REG_END_SHIFT);
                } else {
                        reg_hor[c] = 0;
                        reg_ver[c] = 0;