[5/7,media] ds3000: properly report firmware probing issues
Commit Message
ds3000_readreg() returns negative values in case of i2c failures. The
old code would simply return 0 when failing to read the 0xb2 register,
misleading ds3000_initfe() into believing that the firmware had been
correctly loaded.
Signed-off-by: Rémi Cardona <remi.cardona@smartjog.com>
---
drivers/media/dvb-frontends/ds3000.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
Comments
On 09/28/2012 03:59 PM, Rémi Cardona wrote:
> ds3000_readreg() returns negative values in case of i2c failures. The
> old code would simply return 0 when failing to read the 0xb2 register,
> misleading ds3000_initfe() into believing that the firmware had been
> correctly loaded.
>
> Signed-off-by: Rémi Cardona <remi.cardona@smartjog.com>
Reviewed-by: Antti Palosaari <crope@iki.fi>
> ---
> drivers/media/dvb-frontends/ds3000.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/dvb-frontends/ds3000.c b/drivers/media/dvb-frontends/ds3000.c
> index 162faaf..59184a8 100644
> --- a/drivers/media/dvb-frontends/ds3000.c
> +++ b/drivers/media/dvb-frontends/ds3000.c
> @@ -395,8 +395,13 @@ static int ds3000_firmware_ondemand(struct dvb_frontend *fe)
>
> dprintk("%s()\n", __func__);
>
> - if (ds3000_readreg(state, 0xb2) <= 0)
> + ret = ds3000_readreg(state, 0xb2);
> + if (ret == 0) {
> + /* Firmware already uploaded, skipping */
> return ret;
> + } else if (ret < 0) {
> + return ret;
> + }
>
> /* Load firmware */
> /* request the firmware, this will block until someone uploads it */
>
@@ -395,8 +395,13 @@ static int ds3000_firmware_ondemand(struct dvb_frontend *fe)
dprintk("%s()\n", __func__);
- if (ds3000_readreg(state, 0xb2) <= 0)
+ ret = ds3000_readreg(state, 0xb2);
+ if (ret == 0) {
+ /* Firmware already uploaded, skipping */
return ret;
+ } else if (ret < 0) {
+ return ret;
+ }
/* Load firmware */
/* request the firmware, this will block until someone uploads it */