RE: [PATCH v3] media: imx258: add vblank control to support more frame rate range

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Tomasz Figa <tfiga@xxxxxxxxxxxx>
> Sent: Friday, October 29, 2021 11:05 AM
> To: Cao, Bingbu <bingbu.cao@xxxxxxxxx>
> Cc: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>; linux-
> media@xxxxxxxxxxxxxxx; kieran.bingham@xxxxxxxxxxxxxxxx;
> bingbu.cao@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH v3] media: imx258: add vblank control to support
> more frame rate range
> 
> On Fri, Oct 29, 2021 at 11:18 AM Cao, Bingbu <bingbu.cao@xxxxxxxxx>
> wrote:
> >
> > Sakari and Tomasz,
> >
> > Thanks for your review.
> >
> > ________________________
> > BRs,
> > Bingbu Cao
> >
> > > -----Original Message-----
> > > From: Tomasz Figa <tfiga@xxxxxxxxxxxx>
> > > Sent: Thursday, October 28, 2021 9:52 PM
> > > To: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> > > Cc: Cao, Bingbu <bingbu.cao@xxxxxxxxx>; linux-media@xxxxxxxxxxxxxxx;
> > > kieran.bingham@xxxxxxxxxxxxxxxx; bingbu.cao@xxxxxxxxxxxxxxx
> > > Subject: Re: [PATCH v3] media: imx258: add vblank control to support
> > > more frame rate range
> > >
> > > On Sat, Oct 23, 2021 at 5:38 AM Sakari Ailus
> > > <sakari.ailus@xxxxxxxxxxxxxxx> wrote:
> > > >
> > > > Hi Bingbu,
> > > >
> > > > On Tue, Oct 19, 2021 at 03:58:41PM +0000, Cao, Bingbu wrote:
> > > > > > -----Original Message-----
> > > > > > From: Cao, Bingbu
> > > > > > Sent: Tuesday, October 19, 2021 11:30 PM
> > > > > > To: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> > > > > > Cc: linux-media@xxxxxxxxxxxxxxx; tfiga@xxxxxxxxxxxx;
> > > > > > kieran.bingham@xxxxxxxxxxxxxxxx; bingbu.cao@xxxxxxxxxxxxxxx
> > > > > > Subject: RE: [PATCH v3] media: imx258: add vblank control to
> > > > > > support more frame rate range
> > > > > >
> > > > > > Sakari,
> > > > > >
> > > > > > ________________________
> > > > > > BRs,
> > > > > > Bingbu Cao
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> > > > > > > Sent: Tuesday, October 19, 2021 8:52 PM
> > > > > > > To: Cao, Bingbu <bingbu.cao@xxxxxxxxx>
> > > > > > > Cc: linux-media@xxxxxxxxxxxxxxx; tfiga@xxxxxxxxxxxx;
> > > > > > > kieran.bingham@xxxxxxxxxxxxxxxx; bingbu.cao@xxxxxxxxxxxxxxx
> > > > > > > Subject: Re: [PATCH v3] media: imx258: add vblank control to
> > > > > > > support more frame rate range
> > > > > > >
> > > > > > > Hi Bingbu,
> > > > > > >
> > > > > > > On Mon, Oct 18, 2021 at 11:26:16AM +0800, Bingbu Cao wrote:
> > > > > > > > Current imx258 driver enable the automatic frame length
> > > > > > > > tracking control by default and did not support VBLANK
> > > > > > > > change, it's always
> > > > > > > working at 30fps.
> > > > > > > > However, in reality we need a wider frame rate range from
> > > > > > > > 15
> > > to 30.
> > > > > > > > This patch disable the automatic frame length tracking
> > > > > > > > control and enable the v4l2 VBLANK control to allow user
> > > > > > > > changing frame rate per
> > > > > > > requirement.
> > > > > > > >
> > > > > > > > Signed-off-by: Bingbu Cao <bingbu.cao@xxxxxxxxx>
> > > > > > > > ---
> > > > > > > >  drivers/media/i2c/imx258.c | 23 +++++++++++++++++------
> > > > > > > >  1 file changed, 17 insertions(+), 6 deletions(-)
> > > > > > > >
> > > > > > > > diff --git a/drivers/media/i2c/imx258.c
> > > > > > > > b/drivers/media/i2c/imx258.c index
> > > > > > > > 81cdf37216ca..2c787af7074d
> > > > > > > > 100644
> > > > > > > > --- a/drivers/media/i2c/imx258.c
> > > > > > > > +++ b/drivers/media/i2c/imx258.c
> > > > > > > > @@ -29,6 +29,7 @@
> > > > > > > >  #define IMX258_VTS_MAX                 0xffff
> > > > > > > >
> > > > > > > >  /*Frame Length Line*/
> > > > > > > > +#define IMX258_REG_FLL                 0x0340
> > > > > > > >  #define IMX258_FLL_MIN                 0x08a6
> > > > > > > >  #define IMX258_FLL_MAX                 0xffff
> > > > > > > >  #define IMX258_FLL_STEP                        1
> > > > > > > > @@ -241,7 +242,7 @@ static const struct imx258_reg
> > > > > > > > mode_4208x3118_regs[]
> > > > > > > = {
> > > > > > > >         { 0x034D, 0x70 },
> > > > > > > >         { 0x034E, 0x0C },
> > > > > > > >         { 0x034F, 0x30 },
> > > > > > > > -       { 0x0350, 0x01 },
> > > > > > > > +       { 0x0350, 0x00 }, /* no frame length automatic
> > > > > > > > + tracking control */
> > > > > > > >         { 0x0202, 0x0C },
> > > > > > > >         { 0x0203, 0x46 },
> > > > > > > >         { 0x0204, 0x00 },
> > > > > > > > @@ -360,7 +361,7 @@ static const struct imx258_reg
> > > > > > > > mode_2104_1560_regs[]
> > > > > > > = {
> > > > > > > >         { 0x034D, 0x38 },
> > > > > > > >         { 0x034E, 0x06 },
> > > > > > > >         { 0x034F, 0x18 },
> > > > > > > > -       { 0x0350, 0x01 },
> > > > > > > > +       { 0x0350, 0x00 }, /* no frame length automatic
> > > > > > > > + tracking control */
> > > > > > > >         { 0x0202, 0x06 },
> > > > > > > >         { 0x0203, 0x2E },
> > > > > > > >         { 0x0204, 0x00 },
> > > > > > > > @@ -479,7 +480,7 @@ static const struct imx258_reg
> > > > > > > > mode_1048_780_regs[]
> > > > > > > = {
> > > > > > > >         { 0x034D, 0x18 },
> > > > > > > >         { 0x034E, 0x03 },
> > > > > > > >         { 0x034F, 0x0C },
> > > > > > > > -       { 0x0350, 0x01 },
> > > > > > > > +       { 0x0350, 0x00 }, /* no frame length automatic
> > > > > > > > + tracking control */
> > > > > > >
> > > > > > > Why is automatic frame length control disabled?
> > > > > >
> > > > > > My understanding:
> > > > > > If automatic frame length control enabled, the frame length is
> > > > > > changed automatically when COARSE_INTEGRATE_TIME + 10 >
> > > > > > FRAME_LENGTH_LINES, it may not meet the requirement - less
> > > integrate time with more frame length.
> > > > > > we need control the vertical blank to do that.
> > > > > >
> > > > >
> > > > > If frame length automatic tracking control enabled, the
> > > > > CORSE_INTEGRATE_TIME could be larger than FRAME_LENGTH_LINES.
> > > >
> > > > Both are controlled by the driver. The driver is generally
> > > > responsible for ensuring the exposure time stays within the limits
> > > > for a given frame length.
> > > >
> > > > Unless this sensor does something weird, all you get by disabling
> > > > this is undefined behaviour instead of increased frame length when
> > > > the exposure time + margin exceeds frame length. This could mean
> > > > broken
> > > frames.
> > > >
> > > > Of course, it takes a driver bug to arrive into this situation.
> > >
> > > I'd argue that enabling the automatic control would make it much
> > > more difficult to spot the driver bug in this case and so it would
> > > be more desirable to keep it disabled as in this patch.
> >
> > You are right, I will remove the change in next version.
> 
> Sorry, remove what change? My comment agrees with this patch that keeps
> the function disabled.

Tomasz, my bad, let me keep it disabled. Sakari, what do you think?


> 
> Best regards,
> Tomasz




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux