Am Mittwoch, den 18.05.2011, 13:12 +0200 schrieb Guennadi Liakhovetski:
> Hi Teresa
>
> I've verified the mt9v022 patch - finally I have noticed the difference,
> it does look correct! As for this one, how about this version of your
> patch:
Great! Thank you.
>
> diff --git a/drivers/media/video/mt9m111.c b/drivers/media/video/mt9m111.c
> index 53fa2a7..ebebed9 100644
> --- a/drivers/media/video/mt9m111.c
> +++ b/drivers/media/video/mt9m111.c
> @@ -315,10 +315,20 @@ static int mt9m111_setup_rect(struct i2c_client *client,
> static int mt9m111_setup_pixfmt(struct i2c_client *client, u16 outfmt)
> {
> int ret;
> + u16 mask = MT9M111_OUTFMT_PROCESSED_BAYER | MT9M111_OUTFMT_RGB |
> + MT9M111_OUTFMT_BYPASS_IFP | MT9M111_OUTFMT_SWAP_RGB_EVEN |
> + MT9M111_OUTFMT_RGB565 | MT9M111_OUTFMT_RGB555 |
> + MT9M111_OUTFMT_SWAP_YCbCr_Cb_Cr |
> + MT9M111_OUTFMT_SWAP_YCbCr_C_Y;
>
> - ret = reg_write(OUTPUT_FORMAT_CTRL2_A, outfmt);
> + ret = reg_read(OUTPUT_FORMAT_CTRL2_A);
> + if (ret >= 0)
> + ret = reg_write(OUTPUT_FORMAT_CTRL2_A, (ret & ~mask) | outfmt);
> if (!ret)
> - ret = reg_write(OUTPUT_FORMAT_CTRL2_B, outfmt);
> + ret = reg_read(OUTPUT_FORMAT_CTRL2_B);
> + if (ret >= 0)
> + ret = reg_write(OUTPUT_FORMAT_CTRL2_B, (ret & ~mask) | outfmt);
> +
> return ret;
> }
>
>
> It reduces the number of I2C accesses and avoids writing some not
> necessarily desired value to the register. Does this look ok to you? Could
> you maybe test - I've got no mt9m111 cameras.
>
Yes, this looks good. And I tested it successfully with a mt9m131.
Tested-by: Teresa Gámez <[email protected]>
Teresa
> Thanks
> Guennadi
>
> On Wed, 6 Apr 2011, Teresa Gámez wrote:
>
> > This camera driver supports only rising edge, which is the default
> > setting of the device. The function mt9m111_setup_pixfmt() overwrites
> > this setting. So the driver actually uses falling edge.
> > This patch corrects that.
> >
> > Signed-off-by: Teresa Gámez <[email protected]>
> > ---
> > drivers/media/video/mt9m111.c | 14 ++++++++++++--
> > 1 files changed, 12 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/media/video/mt9m111.c b/drivers/media/video/mt9m111.c
> > index 53fa2a7..4040a96 100644
> > --- a/drivers/media/video/mt9m111.c
> > +++ b/drivers/media/video/mt9m111.c
> > @@ -315,10 +315,20 @@ static int mt9m111_setup_rect(struct i2c_client
> > *client,
> > static int mt9m111_setup_pixfmt(struct i2c_client *client, u16 outfmt)
> > {
> > int ret;
> > + u16 mask = MT9M111_OUTFMT_PROCESSED_BAYER | MT9M111_OUTFMT_RGB |
> > + MT9M111_OUTFMT_BYPASS_IFP | MT9M111_OUTFMT_SWAP_RGB_EVEN |
> > + MT9M111_OUTFMT_RGB565 | MT9M111_OUTFMT_RGB555 |
> > + MT9M111_OUTFMT_SWAP_YCbCr_Cb_Cr |
> > + MT9M111_OUTFMT_SWAP_YCbCr_C_Y;
> >
> > - ret = reg_write(OUTPUT_FORMAT_CTRL2_A, outfmt);
> > + ret = reg_clear(OUTPUT_FORMAT_CTRL2_A, mask);
> > if (!ret)
> > - ret = reg_write(OUTPUT_FORMAT_CTRL2_B, outfmt);
> > + ret = reg_set(OUTPUT_FORMAT_CTRL2_A, outfmt);
> > + if (!ret)
> > + ret = reg_clear(OUTPUT_FORMAT_CTRL2_B, mask);
> > + if (!ret)
> > + ret = reg_set(OUTPUT_FORMAT_CTRL2_B, outfmt);
> > +
> > return ret;
> > }
> >
> > --
> > 1.7.0.4
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-media" in
> > the body of a message to [email protected]
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
>
> ---
> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html