[v4] staging: media: ipu3: Fix AF x_start position when rightmost stripe is used

Message ID 20220317075713.10633-1-hpa@redhat.com (mailing list archive)
State Accepted
Delegated to: Sakari Ailus
Headers
Series [v4] staging: media: ipu3: Fix AF x_start position when rightmost stripe is used |

Commit Message

Kate Hsuan March 17, 2022, 7:57 a.m. UTC
  For the AF configuration, if the rightmost stripe is used, the AF scene
will be at the incorrect location of the sensor.

The AF coordinate may be set to the right part of the sensor. This
configuration would lead to x_start being greater than the
down_scaled_stripes offset and the leftmost stripe would be disabled
and only the rightmost stripe is used to control the AF coordinate. If
the x_start doesn't perform any adjustments, the AF coordinate will be
at the wrong place of the sensor since down_scaled_stripes offset
would be the new zero of the coordinate system.

In this patch, if only the rightmost stripe is used, x_start should
minus down_scaled_stripes offset to maintain its correctness of AF
scene coordinate.

Changes in v2:
1. Remove the setting of the first stripe.

Changes in v4:
1. x_start is estimated based on the method for both stripes are enabled.
2. x_end is estimated based on the width.

Signed-off-by: Kate Hsuan <hpa@redhat.com>
---
 drivers/staging/media/ipu3/ipu3-css-params.c | 9 +++++++++
 1 file changed, 9 insertions(+)
  

Comments

Sakari Ailus March 17, 2022, 8:10 a.m. UTC | #1
On Thu, Mar 17, 2022 at 03:57:13PM +0800, Kate Hsuan wrote:
> For the AF configuration, if the rightmost stripe is used, the AF scene
> will be at the incorrect location of the sensor.
> 
> The AF coordinate may be set to the right part of the sensor. This
> configuration would lead to x_start being greater than the
> down_scaled_stripes offset and the leftmost stripe would be disabled
> and only the rightmost stripe is used to control the AF coordinate. If
> the x_start doesn't perform any adjustments, the AF coordinate will be
> at the wrong place of the sensor since down_scaled_stripes offset
> would be the new zero of the coordinate system.
> 
> In this patch, if only the rightmost stripe is used, x_start should
> minus down_scaled_stripes offset to maintain its correctness of AF
> scene coordinate.
> 
> Changes in v2:
> 1. Remove the setting of the first stripe.
> 
> Changes in v4:
> 1. x_start is estimated based on the method for both stripes are enabled.
> 2. x_end is estimated based on the width.
> 
> Signed-off-by: Kate Hsuan <hpa@redhat.com>

Thanks, Kate!

Applied to my tree.
  
Sakari Ailus March 17, 2022, 8:28 a.m. UTC | #2
On Thu, Mar 17, 2022 at 03:57:13PM +0800, Kate Hsuan wrote:
> For the AF configuration, if the rightmost stripe is used, the AF scene
> will be at the incorrect location of the sensor.
> 
> The AF coordinate may be set to the right part of the sensor. This
> configuration would lead to x_start being greater than the
> down_scaled_stripes offset and the leftmost stripe would be disabled
> and only the rightmost stripe is used to control the AF coordinate. If
> the x_start doesn't perform any adjustments, the AF coordinate will be
> at the wrong place of the sensor since down_scaled_stripes offset
> would be the new zero of the coordinate system.
> 
> In this patch, if only the rightmost stripe is used, x_start should
> minus down_scaled_stripes offset to maintain its correctness of AF
> scene coordinate.
> 
> Changes in v2:
> 1. Remove the setting of the first stripe.
> 
> Changes in v4:
> 1. x_start is estimated based on the method for both stripes are enabled.
> 2. x_end is estimated based on the width.

Please put the changelog before '---' line. I've removed it from the commit
message this time.
  
Kate Hsuan March 17, 2022, 8:53 a.m. UTC | #3
Hi Sakari,

On Thu, Mar 17, 2022 at 4:28 PM Sakari Ailus
<sakari.ailus@linux.intel.com> wrote:
>
> On Thu, Mar 17, 2022 at 03:57:13PM +0800, Kate Hsuan wrote:
> > For the AF configuration, if the rightmost stripe is used, the AF scene
> > will be at the incorrect location of the sensor.
> >
> > The AF coordinate may be set to the right part of the sensor. This
> > configuration would lead to x_start being greater than the
> > down_scaled_stripes offset and the leftmost stripe would be disabled
> > and only the rightmost stripe is used to control the AF coordinate. If
> > the x_start doesn't perform any adjustments, the AF coordinate will be
> > at the wrong place of the sensor since down_scaled_stripes offset
> > would be the new zero of the coordinate system.
> >
> > In this patch, if only the rightmost stripe is used, x_start should
> > minus down_scaled_stripes offset to maintain its correctness of AF
> > scene coordinate.
> >
> > Changes in v2:
> > 1. Remove the setting of the first stripe.
> >
> > Changes in v4:
> > 1. x_start is estimated based on the method for both stripes are enabled.
> > 2. x_end is estimated based on the width.
>
> Please put the changelog before '---' line. I've removed it from the commit
> message this time.
>
> --
> Sakari Ailus
>

Okay, I got it.

Thank you.
  
Sakari Ailus March 17, 2022, 9:10 a.m. UTC | #4
On Thu, Mar 17, 2022 at 04:53:07PM +0800, Kate Hsuan wrote:
> Hi Sakari,
> 
> On Thu, Mar 17, 2022 at 4:28 PM Sakari Ailus
> <sakari.ailus@linux.intel.com> wrote:
> >
> > On Thu, Mar 17, 2022 at 03:57:13PM +0800, Kate Hsuan wrote:
> > > For the AF configuration, if the rightmost stripe is used, the AF scene
> > > will be at the incorrect location of the sensor.
> > >
> > > The AF coordinate may be set to the right part of the sensor. This
> > > configuration would lead to x_start being greater than the
> > > down_scaled_stripes offset and the leftmost stripe would be disabled
> > > and only the rightmost stripe is used to control the AF coordinate. If
> > > the x_start doesn't perform any adjustments, the AF coordinate will be
> > > at the wrong place of the sensor since down_scaled_stripes offset
> > > would be the new zero of the coordinate system.
> > >
> > > In this patch, if only the rightmost stripe is used, x_start should
> > > minus down_scaled_stripes offset to maintain its correctness of AF
> > > scene coordinate.
> > >
> > > Changes in v2:
> > > 1. Remove the setting of the first stripe.
> > >
> > > Changes in v4:
> > > 1. x_start is estimated based on the method for both stripes are enabled.
> > > 2. x_end is estimated based on the width.
> >
> > Please put the changelog before '---' line. I've removed it from the commit
> > message this time.

I meant to say after. Then it won't be part of the commit message.

> >
> > --
> > Sakari Ailus
> >
> 
> Okay, I got it.
> 
> Thank you.
> 
> -- 
> BR,
> Kate
>
  
Kate Hsuan March 18, 2022, 6:47 a.m. UTC | #5
Hi Sakari,

On Thu, Mar 17, 2022 at 5:10 PM Sakari Ailus
<sakari.ailus@linux.intel.com> wrote:
>
> On Thu, Mar 17, 2022 at 04:53:07PM +0800, Kate Hsuan wrote:
> > Hi Sakari,
> >
> > On Thu, Mar 17, 2022 at 4:28 PM Sakari Ailus
> > <sakari.ailus@linux.intel.com> wrote:
> > >
> > > On Thu, Mar 17, 2022 at 03:57:13PM +0800, Kate Hsuan wrote:
> > > > For the AF configuration, if the rightmost stripe is used, the AF scene
> > > > will be at the incorrect location of the sensor.
> > > >
> > > > The AF coordinate may be set to the right part of the sensor. This
> > > > configuration would lead to x_start being greater than the
> > > > down_scaled_stripes offset and the leftmost stripe would be disabled
> > > > and only the rightmost stripe is used to control the AF coordinate. If
> > > > the x_start doesn't perform any adjustments, the AF coordinate will be
> > > > at the wrong place of the sensor since down_scaled_stripes offset
> > > > would be the new zero of the coordinate system.
> > > >
> > > > In this patch, if only the rightmost stripe is used, x_start should
> > > > minus down_scaled_stripes offset to maintain its correctness of AF
> > > > scene coordinate.
> > > >
> > > > Changes in v2:
> > > > 1. Remove the setting of the first stripe.
> > > >
> > > > Changes in v4:
> > > > 1. x_start is estimated based on the method for both stripes are enabled.
> > > > 2. x_end is estimated based on the width.
> > >
> > > Please put the changelog before '---' line. I've removed it from the commit
> > > message this time.
>
> I meant to say after. Then it won't be part of the commit message.

Thank you. I understand :)

>
> > >
> > > --
> > > Sakari Ailus
> > >
> >
> > Okay, I got it.
> >
> > Thank you.
> >
> > --
> > BR,
> > Kate
> >
>
> --
> Sakari Ailus
>
  

Patch

diff --git a/drivers/staging/media/ipu3/ipu3-css-params.c b/drivers/staging/media/ipu3/ipu3-css-params.c
index d9e3c3785075..f84cf11358a8 100644
--- a/drivers/staging/media/ipu3/ipu3-css-params.c
+++ b/drivers/staging/media/ipu3/ipu3-css-params.c
@@ -2556,6 +2556,15 @@  int imgu_css_cfg_acc(struct imgu_css *css, unsigned int pipe,
 		/* Enable only for rightmost stripe, disable left */
 		acc->af.stripes[0].grid_cfg.y_start &=
 			~IPU3_UAPI_GRID_Y_START_EN;
+		acc->af.stripes[1].grid_cfg.x_start =
+			(acc->af.stripes[1].grid_cfg.x_start -
+			 acc->stripe.down_scaled_stripes[1].offset) &
+			IPU3_UAPI_GRID_START_MASK;
+		b_w_log2 = acc->af.stripes[1].grid_cfg.block_width_log2;
+		acc->af.stripes[1].grid_cfg.x_end =
+			imgu_css_grid_end(acc->af.stripes[1].grid_cfg.x_start,
+					  acc->af.stripes[1].grid_cfg.width,
+					  b_w_log2);
 	} else if (acc->af.config.grid_cfg.x_end <=
 		   acc->stripe.bds_out_stripes[0].width - min_overlap) {
 		/* Enable only for leftmost stripe, disable right */