linux/drivers/media/i2c
Frank Schaefer 3881e59fe7 ov2640: fix vflip control
commit 7f140fc206 upstream.

Enabling vflip currently causes wrong colors.
It seems that (at least with the current sensor setup) REG04_VFLIP_IMG only
changes the vertical readout direction.
Because pixels are arranged RGRG... in odd lines and GBGB... in even lines,
either a one line shift or even/odd line swap is required, too, but
apparently this doesn't happen.

I finally figured out that this can be done manually by setting
REG04_VREF_EN.
Looking at hflip, it turns out that bit REG04_HREF_EN is set there
permanetly, but according to my tests has no effect on the pixel readout
order.
So my conclusion is that the current documentation of sensor register 0x04
is wrong (has changed after preliminary datasheet version 2.2).

I'm pretty sure that automatic vertical line shift/switch can be enabled,
too, but until anyone finds ot how this works, we have to stick with manual
switching.

Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
[bwh: Backported to 3.16: adjust filename]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2017-08-26 02:14:35 +01:00
..
cx25840 [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
m5mols [media] m5mols: Replace missing header 2014-05-25 17:00:01 -03:00
s5c73m3 [media] s5c73m3: Add missing rename of v4l2_of_get_next_endpoint() function 2014-04-15 09:49:54 -03:00
smiapp [media] smiapp: Take mutex during PLL update in sensor initialisation 2015-01-05 13:33:41 +00:00
soc_camera ov2640: fix vflip control 2017-08-26 02:14:35 +01:00
ad9389b.c [media] v4l: Validate fields in the core code for subdev EDID ioctls 2014-05-25 12:48:33 -03:00
adp1653.c [media] media: i2c: Convert to devm_kzalloc() 2013-05-21 07:52:15 -03:00
adv7170.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
adv7175.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
adv7180.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
adv7183.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
adv7183_regs.h [media] media_tree: Fix spelling errors 2013-12-09 14:50:50 -02:00
adv7343.c [media] of: move graph helpers from drivers/media/v4l2-core to drivers/of 2014-03-06 17:41:22 +01:00
adv7343_regs.h [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
adv7393.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
adv7393_regs.h [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
adv7511.c adv7511: TX_EDID_PRESENT is still 1 after a disconnect 2016-05-01 00:05:48 +02:00
adv7604.c adv7604: Initialize drive strength to default when using DT 2017-06-05 21:17:00 +01:00
adv7842.c [media] v4l: Validate fields in the core code for subdev EDID ioctls 2014-05-25 12:48:33 -03:00
ak881x.c [media] media/i2c: fill in missing reg->size fields 2013-06-17 08:56:55 -03:00
aptina-pll.c [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
aptina-pll.h [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
as3645a.c [media] media: i2c: Convert to devm_kzalloc() 2013-05-21 07:52:15 -03:00
bt819.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
bt856.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
bt866.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
cs53l32a.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
cs5345.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
ir-kbd-i2c.c [media] rc: abstract access to allowed/enabled protocols 2014-03-11 13:24:39 -03:00
Kconfig s5k4ecgx: select CRC32 helper 2017-03-16 02:26:39 +00:00
ks0127.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
ks0127.h [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
lm3560.c [media] lm3560: prevent memory leak in case of pdata absence 2014-03-11 09:56:39 -03:00
lm3646.c [media] lm3646: add new dual LED Flash driver 2014-03-11 10:00:26 -03:00
m52790.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
Makefile [media] V4L: Add driver for s5k6a3 image sensor 2014-03-14 10:32:17 -03:00
ml86v7667.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
msp3400-driver.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
msp3400-driver.h [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
msp3400-kthreads.c [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
mt9m032.c [media] videodev2: Set vb2_rect's width and height as unsigned 2014-01-07 08:02:39 -02:00
mt9p031.c [media] mt9p031: Fix BLC configuration restore when disabling test pattern 2014-05-23 14:54:04 -03:00
mt9t001.c [media] mt9t001: Add clock support 2014-02-24 13:11:40 -03:00
mt9v011.c [media, edac] Change my email address 2014-02-07 08:03:07 -02:00
mt9v032.c media: mt9v032: fix hblank calculation 2014-09-17 09:21:49 -07:00
noon010pc30.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
ov7640.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
ov7670.c [media] V4L2: ov7670: fix a wrong index, potentially Oopsing the kernel from user-space 2014-05-13 19:58:08 -03:00
ov9650.c [media] ov9650: off by one in ov965x_enum_frame_sizes() 2013-08-24 04:54:17 -03:00
s5k4ecgx.c [media] i2c/s5k4ecgx: fix printk format warning 2012-10-28 16:42:45 -02:00
s5k5baf.c [media] of: move graph helpers from drivers/media/v4l2-core to drivers/of 2014-03-06 17:41:22 +01:00
s5k6a3.c [media] V4L: Add driver for s5k6a3 image sensor 2014-03-14 10:32:17 -03:00
s5k6aa.c [media] s5k6aa: off by one in s5k6aa_enum_frame_interval() 2013-08-24 04:54:09 -03:00
saa711x_regs.h [media] saa7115: Implement i2c_board_info.platform_data 2013-08-18 08:27:07 -03:00
saa717x.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
saa6588.c [media] saa6588: add support for non-blocking mode 2014-01-07 07:42:19 -02:00
saa6752hs.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
saa7110.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
saa7115.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
saa7127.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
saa7185.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
saa7191.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
saa7191.h [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
smiapp-pll.c [media] smiapp-pll: Correct clock debug prints 2015-01-05 13:33:41 +00:00
smiapp-pll.h [media] smiapp: Make PLL flags unsigned long 2014-04-23 11:29:21 -03:00
sony-btf-mpx.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
sr030pc30.c [media, edac] Change my email address 2014-02-07 08:03:07 -02:00
tda7432.c [media] tda7432: Fix setting TDA7432_MUTE bit for TDA7432_RF register 2014-11-17 14:11:50 +00:00
tda9840.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
tea6415c.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
tea6415c.h [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
tea6420.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
tea6420.h [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
ths7303.c [media] ths7303: Declare as static a private function 2013-12-09 14:50:51 -02:00
ths8200.c [media] ths8200: Remove deprecated video-level DV timings operations 2014-05-25 12:46:18 -03:00
ths8200_regs.h [media] media: i2c: ths8200: driver for TI video encoder 2013-06-17 09:52:31 -03:00
tlv320aic23b.c [media] media: i2c: Convert to devm_kzalloc() 2013-05-21 07:52:15 -03:00
tvaudio.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
tvp514x.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
tvp514x_regs.h [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
tvp5150.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
tvp5150_reg.h [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
tvp7002.c [media] tvp7002: Remove deprecated video-level DV timings operations 2014-05-25 12:46:47 -03:00
tvp7002_reg.h [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
tw2804.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
tw9903.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
tw9906.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
uda1342.c [media] media: i2c: Convert to devm_kzalloc() 2013-05-21 07:52:15 -03:00
upd64031a.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
upd64083.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
vp27smpx.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
vpx3220.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
vs6624.c [media] v4l: vs6624: Fix warning due to unused function 2013-12-10 16:03:36 -02:00
vs6624_regs.h [media] move i2c files into drivers/media/i2c 2012-08-15 16:42:14 -03:00
wm8739.c [media] media/i2c: remove g_chip_ident op 2013-06-17 08:52:10 -03:00
wm8775.c [media] wm8775: fix broken audio routing 2013-11-29 14:34:54 -02:00