mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
V4L/DVB (11633): gspca - m5602-s5k83a: Move hsync/vsync setup to start function
Signed-off-by: Erik Andrén <erik.andren@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
57851d0cd0
commit
cde41bb292
2 changed files with 18 additions and 1 deletions
|
@ -299,15 +299,29 @@ static int rotation_thread_function(void *data)
|
|||
|
||||
int s5k83a_start(struct sd *sd)
|
||||
{
|
||||
int i, err = 0;
|
||||
struct s5k83a_priv *sens_priv = sd->sensor_priv;
|
||||
|
||||
/* Create another thread, polling the GPIO ports of the camera to check
|
||||
if it got rotated. This is how the windows driver does it so we have
|
||||
to assume that there is no better way of accomplishing this */
|
||||
sens_priv->rotation_thread = kthread_create(rotation_thread_function,
|
||||
sd, "rotation thread");
|
||||
sd, "rotation thread");
|
||||
wake_up_process(sens_priv->rotation_thread);
|
||||
|
||||
/* Preinit the sensor */
|
||||
for (i = 0; i < ARRAY_SIZE(start_s5k83a) && !err; i++) {
|
||||
u8 data[2] = {start_s5k83a[i][2], start_s5k83a[i][3]};
|
||||
if (start_s5k83a[i][0] == SENSOR)
|
||||
err = m5602_write_sensor(sd, start_s5k83a[i][1],
|
||||
data, 2);
|
||||
else
|
||||
err = m5602_write_bridge(sd, start_s5k83a[i][1],
|
||||
data[0]);
|
||||
}
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
return s5k83a_set_led_indication(sd, 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -164,7 +164,10 @@ static const unsigned char init_s5k83a[][4] =
|
|||
/* normal colors
|
||||
(this is value after boot, but after tries can be different) */
|
||||
{SENSOR, 0x00, 0x06, 0x00},
|
||||
};
|
||||
|
||||
static const unsigned char start_s5k83a[][4] =
|
||||
{
|
||||
{BRIDGE, M5602_XB_SEN_CLK_DIV, 0x06, 0x00},
|
||||
{BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
|
||||
{BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00},
|
||||
|
|
Loading…
Reference in a new issue