Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] V4L: mt9m111: fix pixel clock

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 <t.gamez@phytec.de>
[g.liakhovetski@gmx.de: removed superfluous register write]
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Tested-by: Teresa Gámez <t.gamez@phytec.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Teresa Gámez and committed by
Mauro Carvalho Chehab
4bc90dea a1de7a00

+12 -2
+12 -2
drivers/media/video/mt9m111.c
··· 315 315 static int mt9m111_setup_pixfmt(struct i2c_client *client, u16 outfmt) 316 316 { 317 317 int ret; 318 + u16 mask = MT9M111_OUTFMT_PROCESSED_BAYER | MT9M111_OUTFMT_RGB | 319 + MT9M111_OUTFMT_BYPASS_IFP | MT9M111_OUTFMT_SWAP_RGB_EVEN | 320 + MT9M111_OUTFMT_RGB565 | MT9M111_OUTFMT_RGB555 | 321 + MT9M111_OUTFMT_SWAP_YCbCr_Cb_Cr | 322 + MT9M111_OUTFMT_SWAP_YCbCr_C_Y; 318 323 319 - ret = reg_write(OUTPUT_FORMAT_CTRL2_A, outfmt); 324 + ret = reg_read(OUTPUT_FORMAT_CTRL2_A); 325 + if (ret >= 0) 326 + ret = reg_write(OUTPUT_FORMAT_CTRL2_A, (ret & ~mask) | outfmt); 320 327 if (!ret) 321 - ret = reg_write(OUTPUT_FORMAT_CTRL2_B, outfmt); 328 + ret = reg_read(OUTPUT_FORMAT_CTRL2_B); 329 + if (ret >= 0) 330 + ret = reg_write(OUTPUT_FORMAT_CTRL2_B, (ret & ~mask) | outfmt); 331 + 322 332 return ret; 323 333 } 324 334