|
@@ -259,6 +259,10 @@ static int rtl28xxu_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[],
|
|
ret = -EOPNOTSUPP;
|
|
ret = -EOPNOTSUPP;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /* Retry failed I2C messages */
|
|
|
|
+ if (ret == -EPIPE)
|
|
|
|
+ ret = -EAGAIN;
|
|
|
|
+
|
|
err_mutex_unlock:
|
|
err_mutex_unlock:
|
|
mutex_unlock(&d->i2c_mutex);
|
|
mutex_unlock(&d->i2c_mutex);
|
|
|
|
|
|
@@ -619,6 +623,10 @@ static int rtl28xxu_identify_state(struct dvb_usb_device *d, const char **name)
|
|
}
|
|
}
|
|
dev_dbg(&d->intf->dev, "chip_id=%u\n", dev->chip_id);
|
|
dev_dbg(&d->intf->dev, "chip_id=%u\n", dev->chip_id);
|
|
|
|
|
|
|
|
+ /* Retry failed I2C messages */
|
|
|
|
+ d->i2c_adap.retries = 1;
|
|
|
|
+ d->i2c_adap.timeout = msecs_to_jiffies(10);
|
|
|
|
+
|
|
return WARM;
|
|
return WARM;
|
|
err:
|
|
err:
|
|
dev_dbg(&d->intf->dev, "failed=%d\n", ret);
|
|
dev_dbg(&d->intf->dev, "failed=%d\n", ret);
|