aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJean-François Moine <moinejf@free.fr>2010-11-12 13:32:29 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-12-29 05:16:43 -0500
commit5927abcb21d0dd10c960517453e37302acf2269e (patch)
treec70c7df9d596ed3a1f8dc92eb652f5453943c3eb /drivers
parenta23acec4bca79f2168a5aeacc8d85386b70ae522 (diff)
[media] gspca - ov519: Change the ov519 start and stop sequences
- start and stop streaming are done via the FRAR - streaming suspend (for control change) is done by video reset Signed-off-by: Jean-François Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/video/gspca/ov519.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/media/video/gspca/ov519.c b/drivers/media/video/gspca/ov519.c
index 2484e5222d4a..43b86b1b57fb 100644
--- a/drivers/media/video/gspca/ov519.c
+++ b/drivers/media/video/gspca/ov519.c
@@ -2325,6 +2325,8 @@ static inline void ov51x_stop(struct sd *sd)
2325 break; 2325 break;
2326 case BRIDGE_OV519: 2326 case BRIDGE_OV519:
2327 reg_w(sd, OV519_R51_RESET1, 0x0f); 2327 reg_w(sd, OV519_R51_RESET1, 0x0f);
2328 reg_w(sd, OV519_R51_RESET1, 0x00);
2329 reg_w(sd, 0x22, 0x00); /* FRAR */
2328 break; 2330 break;
2329 case BRIDGE_OVFX2: 2331 case BRIDGE_OVFX2:
2330 reg_w_mask(sd, 0x0f, 0x00, 0x02); 2332 reg_w_mask(sd, 0x0f, 0x00, 0x02);
@@ -2356,7 +2358,9 @@ static inline void ov51x_restart(struct sd *sd)
2356 reg_w(sd, R51x_SYS_RESET, 0x00); 2358 reg_w(sd, R51x_SYS_RESET, 0x00);
2357 break; 2359 break;
2358 case BRIDGE_OV519: 2360 case BRIDGE_OV519:
2361 reg_w(sd, OV519_R51_RESET1, 0x0f);
2359 reg_w(sd, OV519_R51_RESET1, 0x00); 2362 reg_w(sd, OV519_R51_RESET1, 0x00);
2363 reg_w(sd, 0x22, 0x1d); /* FRAR */
2360 break; 2364 break;
2361 case BRIDGE_OVFX2: 2365 case BRIDGE_OVFX2:
2362 reg_w_mask(sd, 0x0f, 0x02, 0x02); 2366 reg_w_mask(sd, 0x0f, 0x02, 0x02);
@@ -3668,13 +3672,13 @@ static void sethvflip(struct gspca_dev *gspca_dev)
3668 struct sd *sd = (struct sd *) gspca_dev; 3672 struct sd *sd = (struct sd *) gspca_dev;
3669 3673
3670 if (sd->gspca_dev.streaming) 3674 if (sd->gspca_dev.streaming)
3671 ov51x_stop(sd); 3675 reg_w(sd, OV519_R51_RESET1, 0x0f); /* block stream */
3672 i2c_w_mask(sd, OV7670_R1E_MVFP, 3676 i2c_w_mask(sd, OV7670_R1E_MVFP,
3673 OV7670_MVFP_MIRROR * sd->ctrls[HFLIP].val 3677 OV7670_MVFP_MIRROR * sd->ctrls[HFLIP].val
3674 | OV7670_MVFP_VFLIP * sd->ctrls[VFLIP].val, 3678 | OV7670_MVFP_VFLIP * sd->ctrls[VFLIP].val,
3675 OV7670_MVFP_MIRROR | OV7670_MVFP_VFLIP); 3679 OV7670_MVFP_MIRROR | OV7670_MVFP_VFLIP);
3676 if (sd->gspca_dev.streaming) 3680 if (sd->gspca_dev.streaming)
3677 ov51x_restart(sd); 3681 reg_w(sd, OV519_R51_RESET1, 0x00); /* restart stream */
3678} 3682}
3679 3683
3680static void set_ov_sensor_window(struct sd *sd) 3684static void set_ov_sensor_window(struct sd *sd)