The test here is never true because '&' was used instead of '|'. It was
the same as:
if (status & ((1<<16) & (1<<17)) ...
Signed-off-by: Dan Carpenter <[email protected]>
---
I don't have this hardware and this one really should be tested or
checked by someone who knows the spec. It could be that the intent was
to do:
if ((status & SOLO_IIC_STATE_TRNS) &&
(status & SOLO_IIC_STATE_SIG_ERR) || ...
diff --git a/drivers/staging/media/solo6x10/i2c.c
b/drivers/staging/media/solo6x10/i2c.c
index ef95a50..398070a 100644
--- a/drivers/staging/media/solo6x10/i2c.c
+++ b/drivers/staging/media/solo6x10/i2c.c
@@ -175,7 +175,7 @@ int solo_i2c_isr(struct solo_dev *solo_dev)
solo_reg_write(solo_dev, SOLO_IRQ_STAT, SOLO_IRQ_IIC);
- if (status & (SOLO_IIC_STATE_TRNS & SOLO_IIC_STATE_SIG_ERR) ||
+ if (status & (SOLO_IIC_STATE_TRNS | SOLO_IIC_STATE_SIG_ERR) ||
solo_dev->i2c_id < 0) {
solo_i2c_stop(solo_dev);
return -ENXIO;
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel