Markus Rechberger wrote: > On 8/17/07, Oliver Endriss <o.endriss@xxxxxx> wrote: > > Steven Toth wrote: > > > The ts_bus_ctrl function pointer / callback is already in the mainline, > > > check dvb_frontend.c for more details. You shouldn't need a patch from me. > > > > ACK, should be enough to do this kind of locking. > > > > Furthermore, with this callback, the dvb_frontend_active() routine from > > ' [PATCH] function for checking if the dvb framework is idle' > > is not required at all. The callback is aware whether the frontend is > > running or not... > > > As far as I've seen the callback will be called as soon as the device > gets closed, even though the thread might still be spinning in the > background and the subsystem might still access DVB components, this > is why dvb_frontend_active is still needed. > Closing the devicenode and that callback doesn't mean that the device is idle. Ok, this should be fixed. What about this patch: diff -r dd58780b6fb4 linux/drivers/media/dvb/dvb-core/dvb_frontend.c --- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c Thu Aug 09 16:30:39 2007 +0200 +++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c Fri Aug 17 20:07:28 2007 +0200 @@ -596,6 +596,10 @@ restart: mb(); dvb_frontend_wakeup(fe); + + if (fe->ops.ts_bus_ctrl) + fe->ops.ts_bus_ctrl (fe, 0); + return 0; } @@ -1101,9 +1105,10 @@ static int dvb_frontend_release(struct i if ((file->f_flags & O_ACCMODE) != O_RDONLY) fepriv->release_jiffies = jiffies; - - if (fe->ops.ts_bus_ctrl) - fe->ops.ts_bus_ctrl (fe, 0); + else { + if (fe->ops.ts_bus_ctrl) + fe->ops.ts_bus_ctrl (fe, 0); + } ret = dvb_generic_release (inode, file); CU Oliver -- ---------------------------------------------------------------- VDR Remote Plugin 0.3.9: http://www.escape-edv.de/endriss/vdr/ ---------------------------------------------------------------- _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb