On Fri, 28 Sep 2012, Anatolij Gustschin wrote:

> Hi Guennadi,
> 
> On Fri, 28 Sep 2012 14:33:34 +0200 (CEST)
> Guennadi Liakhovetski <g.liakhovet...@gmx.de> wrote:
> ...
> > > @@ -235,12 +238,32 @@ static int mt9v022_s_stream(struct v4l2_subdev *sd, 
> > > int enable)
> > >   struct i2c_client *client = v4l2_get_subdevdata(sd);
> > >   struct mt9v022 *mt9v022 = to_mt9v022(client);
> > >  
> > > - if (enable)
> > > + if (enable) {
> > >           /* Switch to master "normal" mode */
> > >           mt9v022->chip_control &= ~0x10;
> > > - else
> > > +         if (is_mt9v022_rev3(mt9v022->chip_version) ||
> > > +             is_mt9v024(mt9v022->chip_version)) {
> > > +                 /*
> > > +                  * Unset snapshot mode specific settings: clear bit 9
> > > +                  * and bit 2 in reg. 0x20 when in normal mode.
> > > +                  */
> > > +                 if (reg_clear(client, MT9V022_REG32, 0x204))
> > > +                         return -EIO;
> > > +         }
> > > + } else {
> > >           /* Switch to snapshot mode */
> > >           mt9v022->chip_control |= 0x10;
> > > +         if (is_mt9v022_rev3(mt9v022->chip_version) ||
> > > +             is_mt9v024(mt9v022->chip_version)) {
> > > +                 /*
> > > +                  * Required settings for snapshot mode: set bit 9
> > > +                  * (RST enable) and bit 2 (CR enable) in reg. 0x20
> > > +                  * See TechNote TN0960 or TN-09-225.
> > > +                  */
> > > +                 if (reg_set(client, MT9V022_REG32, 0x204))
> > > +                         return -EIO;
> > > +         }
> > > + }
> > 
> > Do I understand it right, that now on mt9v022 rev.3 and mt9v024 you 
> > unconditionally added using REG32 for leaving the snapshot mode on 
> > streamon and entering it on streamoff. This should be ok in principle, 
> > since that's also what we're trying to do, using the CHIP_CONTROL 
> > register. But in your comment you say, that on some _systems_ you can only 
> > _operate_ in snapshot mode. I.e. the snapshot mode enabled during running 
> > streaming, right? Then how does this patch help you with that?
> 
> Yes. But i.e. the driver calling the sub-device stream control function
> on streamon knows that the normal mode is not supported and therefore it
> calls this function with argument enable == 0, effectively setting the
> snapshot mode.

Right, I thought you could be doing that... Well, on the one hand I should 
be happy, that the problem is solved without driver modifications, OTOH 
this isn't pretty... In fact this shouldn't work at all. After a 
stream-off the buffer queue should be stopped too. However, to properly 
implement this you'd have to add a new V4L2 control to switch into 
snapshot mode.

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to