]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
V4L/DVB (11633): gspca - m5602-s5k83a: Move hsync/vsync setup to start function
authorErik Andrén <erik.andren@gmail.com>
Wed, 21 Jan 2009 06:33:14 +0000 (03:33 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 16 Jun 2009 21:20:46 +0000 (18:20 -0300)
Signed-off-by: Erik Andrén <erik.andren@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/gspca/m5602/m5602_s5k83a.c
drivers/media/video/gspca/m5602/m5602_s5k83a.h

index 646796d21c5bf6b31ead5f562e0d4686d2d6f146..118ec8f8cbdfd8413de7a881c98705f5a8b9cba9 100644 (file)
@@ -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);
 }
 
index 47c0bb4731d68b9810ca73f8798951ef8e8531a6..7814b078acde3ca4cdd0aba521102000866dcc66 100644 (file)
@@ -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},