<div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">---------- Missatge reenviat ----------<br>From:&nbsp;&quot;Michael Krufky&quot; &lt;<a href="mailto:mkrufky@linuxtv.org">
mkrufky@linuxtv.org</a>&gt;<br>To:&nbsp;&quot;Ivor Hewitt&quot; &lt;<a href="mailto:ivor@ivor.org">ivor@ivor.org</a>&gt;<br>Date:&nbsp;Mon, 21 Jan 2008 15:45:31 -0500<br>Subject:&nbsp;Re: [linux-dvb] [PATCH] allow dvb-usb firmware loading in warm state?
<br>On Jan 21, 2008 3:19 PM, Ivor Hewitt &lt;<a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:ivor@ivor.org">ivor@ivor.org</a>&gt; wrote:<br>&gt; Hi,<br>&gt; I was having (still am! :) trouble with my nova-t 500 card and I wanted
<br>&gt; a way to be able try a different firmware... but the current code only<br>&gt; loads in a cold state... and my &quot;mythbackend&quot; is pretty inaccessible, so<br>&gt; I made the attached change. This allows a module parameter of
<br>&gt; &quot;force_load_firmware&quot; which causes the &quot;cold state&quot; logic to be used<br>&gt; when warm. Thought this might be a useful idea, it was handy for me anyway.<br>&gt;<br>&gt; Cheers,<br>&gt; Ivor<br>
&gt;<br>&gt; -- snip --<br>&gt;<br>&gt; &nbsp; /* DIB7070 generic */<br>&gt; diff -r 7564c110491e linux/drivers/media/dvb/dvb-usb/dvb-usb-init.c<br>&gt; --- a/linux/drivers/media/dvb/dvb-usb/dvb-usb-init.c &nbsp; &nbsp;Sun Jan 20<br>&gt; 09:13:44 2008 -0200
<br>&gt; +++ b/linux/drivers/media/dvb/dvb-usb/dvb-usb-init.c &nbsp; &nbsp;Mon Jan 21<br>&gt; 11:55:20 2008 +0000<br>&gt; @@ -25,6 +25,10 @@ static int dvb_usb_force_pid_filter_usag<br>&gt; &nbsp; static int dvb_usb_force_pid_filter_usage;
<br>&gt; &nbsp; module_param_named(force_pid_filter_usage,<br>&gt; dvb_usb_force_pid_filter_usage, int, 0444);<br>&gt; &nbsp; MODULE_PARM_DESC(force_pid_filter_usage, &quot;force all dvb-usb-devices to<br>&gt; use a PID filter, if any (default: 0).&quot;);
<br>&gt; +<br>&gt; +int dvb_usb_force_firmware;<br>&gt; +module_param_named(force_load_firmware, dvb_usb_force_firmware, int, 0444);<br>&gt; +MODULE_PARM_DESC(force_load_firmware, &quot;force firmware loading even when<br>
&gt; in warm state.&quot;);<br>&gt;<br>&gt; &nbsp; static int dvb_usb_adapter_init(struct dvb_usb_device *d)<br>&gt; &nbsp; {<br>&gt; @@ -230,7 +234,7 @@ int dvb_usb_device_init(struct usb_inter<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return -ENODEV;
<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>&gt;<br>&gt; - &nbsp; &nbsp; &nbsp; if (cold) {<br>&gt; + &nbsp; &nbsp; &nbsp; if (cold||dvb_usb_force_firmware) {<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;info(&quot;found a &#39;%s&#39; in cold state, will try to load a<br>&gt; firmware&quot;,desc-&gt;name);
<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ret = dvb_usb_download_firmware(udev,props);<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!props-&gt;no_reconnect || ret != 0)<br><br><br>Doesn&#39;t this cause an endless loop? &nbsp;How does the driver know when to
<br>stop uploading firmware?<br><br>-Mike<br></blockquote></div><br>I think that code executes once only at driver initialisation phase. That means that now probably you&#39;ll be able to force a firmware reload by doing &quot;rmmod dvb-usb-dib0700; modprobe dvb-usb-dib0700&quot;, which is pretty good IMHO. If so, that would solve a number of issues with this card that now require a full power-off cycle (a reboot isn&#39;t enough to make the card reload the firmware).
<br><br>Please, correct me if I&#39;m wrong...<br><br>Regards, <br>&nbsp; Eduard<br><br><br>