e9hack wrote: > Eberhard Kaltenhaeuser schrieb: > > Actual kernel does not support the Hauppauge WinTV Nova S SE PCI card > > anymore: > > > > I think it is a problem of this changeset http://linuxtv.org/hg/v4l-dvb/rev/358d281e6a3d > from Patrick Boettcher. The S5H1420 isn't able to understand repeated start conditions. > The i2c-read code was changed from: > > if ((ret = i2c_transfer (state->i2c, &msg1, 1)) != 1) > return ret; > > if ((ret = i2c_transfer (state->i2c, &msg2, 1)) != 1) > return ret; > > to: > if (state->config->repeated_start_workaround) { > ret = i2c_transfer(state->i2c, msg, 3); > if (ret != 3) > return ret; > } else { > ret = i2c_transfer(state->i2c, &msg[1], 2); > if (ret != 2) > return ret; > } I think you are right. Btw, I don't understand Patrick's workaround. As the tuner does not support repeated start conditions, the solution is to send two separate messages, as it was before. Does the attached patch fix the problem? CU Oliver -- ---------------------------------------------------------------- VDR Remote Plugin 0.4.0: http://www.escape-edv.de/endriss/vdr/ ----------------------------------------------------------------
diff -r 1760a612cc98 linux/drivers/media/dvb/frontends/s5h1420.c --- a/linux/drivers/media/dvb/frontends/s5h1420.c Sun Aug 03 05:02:35 2008 +0200 +++ b/linux/drivers/media/dvb/frontends/s5h1420.c Sat Aug 23 17:07:01 2008 +0200 @@ -94,8 +94,11 @@ static u8 s5h1420_readreg(struct s5h1420 if (ret != 3) return ret; } else { - ret = i2c_transfer(state->i2c, &msg[1], 2); - if (ret != 2) + ret = i2c_transfer(state->i2c, &msg[1], 1); + if (ret != 1) + return ret; + ret = i2c_transfer(state->i2c, &msg[2], 1); + if (ret != 1) return ret; }
_______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb