media: staging: ipu3-imgu: Initialise height_per_slice in the stripes
authorJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>
Thu, 16 Sep 2021 17:25:04 +0000 (19:25 +0200)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 27 Sep 2023 07:39:56 +0000 (09:39 +0200)
While playing with low resolutions for the grid, it appeared that
height_per_slice is not initialised if we are not using both stripes for
the calculations. This pattern occurs three times:
- for the awb_fr processing block
- for the af processing block
- for the awb processing block

The idea of this small portion of code is to reduce complexity in
loading the statistics, it could be done also when only one stripe is
used. Fix it by getting this initialisation code outside of the else()
test case.

Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/staging/media/ipu3/ipu3-css-params.c

index 76ad802d694e1132b64351df6fb91cf91739a895..34f574b0b5216c55fa9d6693fe58b0bbff94e759 100644 (file)
@@ -2425,16 +2425,16 @@ int imgu_css_cfg_acc(struct imgu_css *css, unsigned int pipe,
                                        acc->awb_fr.stripes[1].grid_cfg.width,
                                        b_w_log2);
                acc->awb_fr.stripes[1].grid_cfg.x_end = end;
-
-               /*
-                * To reduce complexity of debubbling and loading
-                * statistics fix grid_height_per_slice to 1 for both
-                * stripes.
-                */
-               for (i = 0; i < stripes; i++)
-                       acc->awb_fr.stripes[i].grid_cfg.height_per_slice = 1;
        }
 
+       /*
+        * To reduce complexity of debubbling and loading
+        * statistics fix grid_height_per_slice to 1 for both
+        * stripes.
+        */
+       for (i = 0; i < stripes; i++)
+               acc->awb_fr.stripes[i].grid_cfg.height_per_slice = 1;
+
        if (imgu_css_awb_fr_ops_calc(css, pipe, &acc->awb_fr))
                return -EINVAL;
 
@@ -2597,15 +2597,15 @@ int imgu_css_cfg_acc(struct imgu_css *css, unsigned int pipe,
                        imgu_css_grid_end(acc->af.stripes[1].grid_cfg.x_start,
                                          acc->af.stripes[1].grid_cfg.width,
                                          b_w_log2);
-
-               /*
-                * To reduce complexity of debubbling and loading statistics
-                * fix grid_height_per_slice to 1 for both stripes
-                */
-               for (i = 0; i < stripes; i++)
-                       acc->af.stripes[i].grid_cfg.height_per_slice = 1;
        }
 
+       /*
+        * To reduce complexity of debubbling and loading statistics
+        * fix grid_height_per_slice to 1 for both stripes
+        */
+       for (i = 0; i < stripes; i++)
+               acc->af.stripes[i].grid_cfg.height_per_slice = 1;
+
        if (imgu_css_af_ops_calc(css, pipe, &acc->af))
                return -EINVAL;
 
@@ -2677,15 +2677,15 @@ int imgu_css_cfg_acc(struct imgu_css *css, unsigned int pipe,
                        imgu_css_grid_end(acc->awb.stripes[1].grid.x_start,
                                          acc->awb.stripes[1].grid.width,
                                          b_w_log2);
-
-               /*
-                * To reduce complexity of debubbling and loading statistics
-                * fix grid_height_per_slice to 1 for both stripes
-                */
-               for (i = 0; i < stripes; i++)
-                       acc->awb.stripes[i].grid.height_per_slice = 1;
        }
 
+       /*
+        * To reduce complexity of debubbling and loading statistics
+        * fix grid_height_per_slice to 1 for both stripes
+        */
+       for (i = 0; i < stripes; i++)
+               acc->awb.stripes[i].grid.height_per_slice = 1;
+
        if (imgu_css_awb_ops_calc(css, pipe, &acc->awb))
                return -EINVAL;