]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/media/video/gspca/t613.c
V4L/DVB (11446): gspca - t613: Do sensor reset only for sensor om6802.
[mv-sheeva.git] / drivers / media / video / gspca / t613.c
index 49db21e1376c7c29ddc33fab88064ff3325192f1..404214b8cd2bed98d22e036f6d71bd8b4672add9 100644 (file)
@@ -272,7 +272,7 @@ struct additional_sensor_data {
        const u8 stream[4];
 };
 
-const static struct additional_sensor_data sensor_data[] = {
+static const struct additional_sensor_data sensor_data[] = {
     {                          /* OM6802 */
        .data1 =
                {0xc2, 0x28, 0x0f, 0x22, 0xcd, 0x27, 0x2c, 0x06,
@@ -495,7 +495,7 @@ static void om6802_sensor_init(struct gspca_dev *gspca_dev)
        };
 
        reg_w_buf(gspca_dev, sensor_reset, sizeof sensor_reset);
-       msleep(5);
+       msleep(100);
        i = 4;
        while (--i > 0) {
                byte = reg_r(gspca_dev, 0x0060);
@@ -635,11 +635,11 @@ static int sd_init(struct gspca_dev *gspca_dev)
        struct sd *sd = (struct sd *) gspca_dev;
        int i;
        u16 sensor_id;
-       u8 test_byte;
+       u8 test_byte = 0;
        u16 reg80, reg8e;
 
        static const u8 read_indexs[] =
-               { 0x06, 0x07, 0x0a, 0x0b, 0x66, 0x80, 0x81, 0x8e, 0x8f, 0xa5,
+               { 0x0a, 0x0b, 0x66, 0x80, 0x81, 0x8e, 0x8f, 0xa5,
                  0xa6, 0xa8, 0xbb, 0xbc, 0xc6, 0x00 };
        static const u8 n1[] =
                        {0x08, 0x03, 0x09, 0x03, 0x12, 0x04};
@@ -679,25 +679,25 @@ static int sd_init(struct gspca_dev *gspca_dev)
 
        sensor_id = (reg_r(gspca_dev, 0x06) << 8)
                        | reg_r(gspca_dev, 0x07);
-       switch (sensor_id) {
+       switch (sensor_id & 0xff0f) {
        case 0x0801:
-               PDEBUG(D_CONF, "sensor tas5130a");
+               PDEBUG(D_PROBE, "sensor tas5130a");
                sd->sensor = SENSOR_TAS5130A;
                break;
        case 0x0803:
-               PDEBUG(D_CONF, "sensor om6802");
+               PDEBUG(D_PROBE, "sensor 'other'");
                sd->sensor = SENSOR_OTHER;
                break;
        case 0x0807:
-               PDEBUG(D_CONF, "sensor om6802");
+               PDEBUG(D_PROBE, "sensor om6802");
                sd->sensor = SENSOR_OM6802;
                break;
        default:
-               PDEBUG(D_CONF, "unknown sensor %04x", sensor_id);
+               PDEBUG(D_ERR|D_PROBE, "unknown sensor %04x", sensor_id);
                return -EINVAL;
        }
 
-       if (sd->sensor != SENSOR_OTHER) {
+       if (sd->sensor == SENSOR_OM6802) {
                reg_w_buf(gspca_dev, n1, sizeof n1);
                i = 5;
                while (--i >= 0) {