Skip to contentSkip to conversation

xc5000: properly report i2c write failures

PATCH Joonyoung Shim 1 participant 1 message Feb 7, 2014 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

Hi,

Sorry for response about the past post.

Quoted 13 lines

The logic as written would *never* actually return an error condition, since the loop would run until the counter hit zero but the check was for a value less than zero.

---
  drivers/media/common/tuners/xc5000.c |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
drivers/media/common/tuners/xc5000.c +0 -0
index f660e33..a7fa17e 100644

drivers/media/common/tuners/xc5000.c static int xc_write_reg(struct xc5000_priv *priv, u16 regAddr, u16 i2cData) · line 344

Quoted 5 lines
drivers/media/common/tuners/xc5000.c +1 -1
@@ -341,7 +341,7 @@    static int xc_write_reg(struct xc5000_priv *priv, u16 regAddr, u16 i2cData)
  			}
  		}
  	}
-	if (WatchDogTimer < 0)
+	if (WatchDogTimer <= 0)

I can't load firmware like error of below link.

https://bugs.launchpad.net/ubuntu/+source/linux-firmware-nonfree/+bug/1263837 <https://bugs.launchpad.net/ubuntu/+source/linux-firmware-nonfree/+bug/1263837>

This error is related with this patch. This fix is right but above error is created after this fix because my device makes WatchDogTimer to 0 when load firmware.
Maybe it will be related with XREG_BUSY register but i can't check it.

I removed this fix, but i have faced at other error with "xc5000: PLL not running after fwload" So i have commented like below.

static const struct xc5000_fw_cfg xc5000a_1_6_114 = {
        .name = XC5000A_FIRMWARE,
        .size = 12401,
        //.pll_reg = 0x806c,
};

Then, xc5000 device works well.

I don't have xc5000 datasheet so i can't debug xc5000 driver anymore.

Any help?

Thanks.

Quoted 4 lines
drivers/media/common/tuners/xc5000.c +0 -0
  		result = XC_RESULT_I2C_WRITE_FAILURE;
 
  	return result;