]> err.no Git - linux-2.6/blobdiff - drivers/media/video/saa6588.c
Merge branches 'pxa' and 'orion-fixes1'
[linux-2.6] / drivers / media / video / saa6588.c
index 8ba05c214ca7a5222771fd73f3d4ce09a7d4aa71..716ee7f64df3c017deffdd15dbf899e48fb8840c 100644 (file)
@@ -44,10 +44,10 @@ static unsigned short normal_i2c[] = {
 I2C_CLIENT_INSMOD;
 
 /* insmod options */
-static unsigned int debug = 0;
-static unsigned int xtal = 0;
-static unsigned int rbds = 0;
-static unsigned int plvl = 0;
+static unsigned int debug;
+static unsigned int xtal;
+static unsigned int rbds;
+static unsigned int plvl;
 static unsigned int bufblocks = 100;
 
 module_param(debug, int, 0644);
@@ -212,8 +212,10 @@ static void read_from_buf(struct saa6588 *s, struct rds_command *a)
        if (rd_blocks > s->block_count)
                rd_blocks = s->block_count;
 
-       if (!rd_blocks)
+       if (!rd_blocks) {
+               spin_unlock_irqrestore(&s->lock, flags);
                return;
+       }
 
        for (i = 0; i < rd_blocks; i++) {
                if (block_to_user_buf(s, buf_ptr)) {
@@ -404,6 +406,7 @@ static int saa6588_attach(struct i2c_adapter *adap, int addr, int kind)
                kfree(s);
                return -ENOMEM;
        }
+       spin_lock_init(&s->lock);
        s->client = client_template;
        s->block_count = 0;
        s->wr_index = 0;