Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 164263
b: refs/heads/master
c: 4711ca8
h: refs/heads/master
i:
  164261: 9aec104
  164259: f862760
  164255: b4debc9
v: v3
  • Loading branch information
James Blanford authored and Mauro Carvalho Chehab committed Sep 19, 2009
1 parent 5eb57ad commit f41affd
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4fac17b4e73715aefe48f4ada7d4930cd4df6c31
refs/heads/master: 4711ca823bed12be879f22a930aa9deded9736df
49 changes: 31 additions & 18 deletions trunk/drivers/media/video/gspca/stv06xx/stv06xx_hdcs.c
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ static int hdcs_set_exposure(struct gspca_dev *gspca_dev, __s32 val)
within the column processing period */
int mnct;
int cycles, err;
u8 exp[4];
u8 exp[14];

cycles = val * HDCS_CLK_FREQ_MHZ;

Expand Down Expand Up @@ -316,24 +316,37 @@ static int hdcs_set_exposure(struct gspca_dev *gspca_dev, __s32 val)
srowexp = max_srowexp;

if (IS_1020(sd)) {
exp[0] = rowexp & 0xff;
exp[1] = rowexp >> 8;
exp[2] = (srowexp >> 2) & 0xff;
/* this clears exposure error flag */
exp[3] = 0x1;
err = hdcs_reg_write_seq(sd, HDCS_ROWEXPL, exp, 4);
exp[0] = HDCS20_CONTROL;
exp[1] = 0x00; /* Stop streaming */
exp[2] = HDCS_ROWEXPL;
exp[3] = rowexp & 0xff;
exp[4] = HDCS_ROWEXPH;
exp[5] = rowexp >> 8;
exp[6] = HDCS20_SROWEXP;
exp[7] = (srowexp >> 2) & 0xff;
exp[8] = HDCS20_ERROR;
exp[9] = 0x10; /* Clear exposure error flag*/
exp[10] = HDCS20_CONTROL;
exp[11] = 0x04; /* Restart streaming */
err = stv06xx_write_sensor_bytes(sd, exp, 6);
} else {
exp[0] = rowexp & 0xff;
exp[1] = rowexp >> 8;
exp[2] = srowexp & 0xff;
exp[3] = srowexp >> 8;
err = hdcs_reg_write_seq(sd, HDCS_ROWEXPL, exp, 4);
exp[0] = HDCS00_CONTROL;
exp[1] = 0x00; /* Stop streaming */
exp[2] = HDCS_ROWEXPL;
exp[3] = rowexp & 0xff;
exp[4] = HDCS_ROWEXPH;
exp[5] = rowexp >> 8;
exp[6] = HDCS00_SROWEXPL;
exp[7] = srowexp & 0xff;
exp[8] = HDCS00_SROWEXPH;
exp[9] = srowexp >> 8;
exp[10] = HDCS_STATUS;
exp[11] = 0x10; /* Clear exposure error flag*/
exp[12] = HDCS00_CONTROL;
exp[13] = 0x04; /* Restart streaming */
err = stv06xx_write_sensor_bytes(sd, exp, 7);
if (err < 0)
return err;

/* clear exposure error flag */
err = stv06xx_write_sensor(sd,
HDCS_STATUS, BIT(4));
}
PDEBUG(D_V4L2, "Writing exposure %d, rowexp %d, srowexp %d",
val, rowexp, srowexp);
Expand Down Expand Up @@ -605,11 +618,11 @@ static int hdcs_init(struct sd *sd)
if (err < 0)
return err;

err = hdcs_set_exposure(&sd->gspca_dev, HDCS_DEFAULT_EXPOSURE);
err = hdcs_set_size(sd, hdcs->array.width, hdcs->array.height);
if (err < 0)
return err;

err = hdcs_set_size(sd, hdcs->array.width, hdcs->array.height);
err = hdcs_set_exposure(&sd->gspca_dev, HDCS_DEFAULT_EXPOSURE);
return err;
}

Expand Down

0 comments on commit f41affd

Please sign in to comment.