diff options
Diffstat (limited to 'drivers/media/video/cx231xx/cx231xx-i2c.c')
-rw-r--r-- | drivers/media/video/cx231xx/cx231xx-i2c.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/media/video/cx231xx/cx231xx-i2c.c b/drivers/media/video/cx231xx/cx231xx-i2c.c index 58d9cc0867b9..835670623dfb 100644 --- a/drivers/media/video/cx231xx/cx231xx-i2c.c +++ b/drivers/media/video/cx231xx/cx231xx-i2c.c | |||
@@ -359,7 +359,7 @@ static int cx231xx_i2c_xfer(struct i2c_adapter *i2c_adap, | |||
359 | 359 | ||
360 | if (num <= 0) | 360 | if (num <= 0) |
361 | return 0; | 361 | return 0; |
362 | 362 | mutex_lock(&dev->i2c_lock); | |
363 | for (i = 0; i < num; i++) { | 363 | for (i = 0; i < num; i++) { |
364 | 364 | ||
365 | addr = msgs[i].addr >> 1; | 365 | addr = msgs[i].addr >> 1; |
@@ -372,6 +372,7 @@ static int cx231xx_i2c_xfer(struct i2c_adapter *i2c_adap, | |||
372 | rc = cx231xx_i2c_check_for_device(i2c_adap, &msgs[i]); | 372 | rc = cx231xx_i2c_check_for_device(i2c_adap, &msgs[i]); |
373 | if (rc < 0) { | 373 | if (rc < 0) { |
374 | dprintk2(2, " no device\n"); | 374 | dprintk2(2, " no device\n"); |
375 | mutex_unlock(&dev->i2c_lock); | ||
375 | return rc; | 376 | return rc; |
376 | } | 377 | } |
377 | 378 | ||
@@ -384,7 +385,7 @@ static int cx231xx_i2c_xfer(struct i2c_adapter *i2c_adap, | |||
384 | } | 385 | } |
385 | } else if (i + 1 < num && (msgs[i + 1].flags & I2C_M_RD) && | 386 | } else if (i + 1 < num && (msgs[i + 1].flags & I2C_M_RD) && |
386 | msgs[i].addr == msgs[i + 1].addr | 387 | msgs[i].addr == msgs[i + 1].addr |
387 | && (msgs[i].len <= 2) && (bus->nr < 2)) { | 388 | && (msgs[i].len <= 2) && (bus->nr < 3)) { |
388 | /* read bytes */ | 389 | /* read bytes */ |
389 | rc = cx231xx_i2c_recv_bytes_with_saddr(i2c_adap, | 390 | rc = cx231xx_i2c_recv_bytes_with_saddr(i2c_adap, |
390 | &msgs[i], | 391 | &msgs[i], |
@@ -407,10 +408,11 @@ static int cx231xx_i2c_xfer(struct i2c_adapter *i2c_adap, | |||
407 | if (i2c_debug >= 2) | 408 | if (i2c_debug >= 2) |
408 | printk("\n"); | 409 | printk("\n"); |
409 | } | 410 | } |
410 | 411 | mutex_unlock(&dev->i2c_lock); | |
411 | return num; | 412 | return num; |
412 | err: | 413 | err: |
413 | dprintk2(2, " ERROR: %i\n", rc); | 414 | dprintk2(2, " ERROR: %i\n", rc); |
415 | mutex_unlock(&dev->i2c_lock); | ||
414 | return rc; | 416 | return rc; |
415 | } | 417 | } |
416 | 418 | ||
@@ -507,9 +509,6 @@ int cx231xx_i2c_register(struct cx231xx_i2c *bus) | |||
507 | if (0 == bus->i2c_rc) { | 509 | if (0 == bus->i2c_rc) { |
508 | if (i2c_scan) | 510 | if (i2c_scan) |
509 | cx231xx_do_i2c_scan(dev, &bus->i2c_client); | 511 | cx231xx_do_i2c_scan(dev, &bus->i2c_client); |
510 | |||
511 | /* Instantiate the IR receiver device, if present */ | ||
512 | cx231xx_register_i2c_ir(dev); | ||
513 | } else | 512 | } else |
514 | cx231xx_warn("%s: i2c bus %d register FAILED\n", | 513 | cx231xx_warn("%s: i2c bus %d register FAILED\n", |
515 | dev->name, bus->nr); | 514 | dev->name, bus->nr); |