Hello Chris, On 26.08.2011 01:27, Chris Rankin wrote: > As far as I understand it, the FE_SET_FRONTEND ioctl is supposed to tell a > DVB device to tune itself, and will send a poll() event when it completes. > The "frequency" parameter of this event will be the frequency of the newly > tuned channel, or 0 if tuning failed. > > http://www.linuxtv.org/docs/dvbapi/DVB_Frontend_API.html#SECTION00328000000000000000 > > I have now tested with 2 different DVB adapters, and I don't think the 3.0.x > kernel still behaves like this. A study of the dvb-core/dvb_frontend.c file > reveals the following code: > > In the dvb_frontend_ioctl_legacy() function, > > switch(cmd) { > > ... > > case FE_SET_FRONTEND: { > > ... > > fepriv->state = FESTATE_RETUNE; > > /* Request the search algorithm to search */ > fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN; > > dvb_frontend_wakeup(fe); > dvb_frontend_add_event(fe, 0); // <--- HERE!!!! > fepriv->status = 0; > err = 0; > break; > } > > So basically, the ioctl always sends an event immediately and does not wait > for the tuning to happen first. Presumably, the device still tunes in the > background and writes the frequency into the frontend's private structure so > that a second FE_SET_FRONTEND ioctl succeeds. But this is not the documented > behaviour. > > The bug is visible when you try to use the device for the very first time. I > tested by unloading / reloading the kernel modules, launching xine and then > pressing its DVB button. This *always* fails the first time, for the reason > described above, and works every time after that.
can you please test whether https://patchwork.kernel.org/patch/1036132/ restores the old behaviour? These three pending patches are also related to frontend events: https://patchwork.kernel.org/patch/1036112/ https://patchwork.kernel.org/patch/1036142/ https://patchwork.kernel.org/patch/1036122/ Regards, Andreas -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html