<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Hello,<br>
<br>
against my expectation, the Nova-S SE card does not work, although the
card is recognized by the kernel. Frontend modul is loaded, but no
signal can be received. So VDR exists (Emergency exit) when switching
to this device (i.e. to record something)<br>
<br>
Any suggestions?<br>
Eberhard<br>
<br>
Oliver Endriss wrote:
<blockquote cite="mid200808231711.36277@orion.escape-edv.de" type="cite">
  <pre wrap="">e9hack wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">Eberhard Kaltenhaeuser schrieb:
    </pre>
    <blockquote type="cite">
      <pre wrap="">Actual kernel does not support the Hauppauge WinTV Nova S SE PCI card 
anymore:

      </pre>
    </blockquote>
    <pre wrap="">I think it is a problem of this changeset <a class="moz-txt-link-freetext" href="http://linuxtv.org/hg/v4l-dvb/rev/358d281e6a3d">http://linuxtv.org/hg/v4l-dvb/rev/358d281e6a3d</a> 
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-&gt;i2c, &amp;msg1, 1)) != 1)
                return ret;

        if ((ret = i2c_transfer (state-&gt;i2c, &amp;msg2, 1)) != 1)
                return ret;

to:
        if (state-&gt;config-&gt;repeated_start_workaround) {
                ret = i2c_transfer(state-&gt;i2c, msg, 3);
                if (ret != 3)
                        return ret;
        } else {
                ret = i2c_transfer(state-&gt;i2c, &amp;msg[1], 2);
                if (ret != 2)
                        return ret;
        }
    </pre>
  </blockquote>
  <pre wrap=""><!---->
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

  </pre>
  <pre wrap="">
<hr size="4" width="90%">
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-&gt;i2c, &amp;msg[1], 2);
-                if (ret != 2)
+                ret = i2c_transfer(state-&gt;i2c, &amp;msg[1], 1);
+                if (ret != 1)
+                        return ret;
+                ret = i2c_transfer(state-&gt;i2c, &amp;msg[2], 1);
+                if (ret != 1)
                         return ret;
         }
 
  </pre>
  <pre wrap="">
<hr size="4" width="90%">
_______________________________________________
linux-dvb mailing list
<a class="moz-txt-link-abbreviated" href="mailto:linux-dvb@linuxtv.org">linux-dvb@linuxtv.org</a>
<a class="moz-txt-link-freetext" href="http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb">http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb</a></pre>
</blockquote>
</body>
</html>