Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[vdr] Re: final solution to the signalless operation problem found!! -> testers+RFC required
Am Wednesday 24 March 2004 15:17 schrieb Andreas Oberritter:
> FE_SLEEP is called when the frontend handle is closed, so why does vdr
> open it when it does not use it?
Right - we can give it another option in setup.conf for signalless
operation...
>
> The only remaining problem is that the VES is in an undefined state
> after insmod. So how about this patch instead?
You _should_ be right - unfortunately my test showed, that the ARM crashes
instantly if using your patch instead of calling ioctl(FE_SLEEP) in vdr just
after opening the frontend (this way my ARM run now 24hours without any
outcommand error or reset or crash - it's rock-solid!).
So the shutdown only wasn't the solution, there had to be an FE_INIT first,
setting up the frontend-thread and later call FE_SLEEP or what else is going
one there.
I just tried to do ves1x93_init(i2c) just above your 3 lines in the patch
below, but it also did _not_ work.
>
> diff -u -r1.7 ves1x93.c
> --- ves1x93.c 14 Mar 2004 13:46:20 -0000 1.7
> +++ ves1x93.c 24 Mar 2004 14:14:04 -0000
> @@ -611,6 +611,10 @@
> state->inversion = INVERSION_OFF;
> *data = state;
>
> + ves1x93_init(i2c);//does also not work <-------Guido
> + if (board_type == BOARD_SIEMENS_PCI)
> + ves1x93_writereg(i2c, 0x1f, 0x00); /* LNB power off */
> + ves1x93_writereg(i2c, 0x00, 0x08); /* standby */
> +
> return dvb_register_frontend (ves1x93_ioctl, i2c, (void*) state,
> &ves1x93_info);
> }
>
> close() has the same advantages without changing any interface.
So i have to clarify my first mail - the patch i sent might not be working,
the ioctl(FE_SLEEP)-call directly after opening the frontend in vdr did the
trick !!!
So here again what __actually__ works for me like a charm:
--- linux/dvb/frontend.h.orig 2004-03-23 20:58:59.000000000 +0100
+++ linux/dvb/frontend.h 2004-03-23 20:58:24.000000000 +0100
@@ -255,6 +255,8 @@
#define FE_GET_FRONTEND _IOR('o', 77, struct
dvb_frontend_parameters)
#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
+#define FE_SLEEP _IO('v', 80) /* needs to be public */
+#define FE_INIT _IO('v', 81) /* needs to be public */
#endif /*_DVBFRONTEND_H_*/
--- dvbdevice.c.orig 2004-03-19 20:05:17.000000000 +0100
+++ dvbdevice.c 2004-03-24 19:27:32.748856312 +0100
@@ -471,7 +477,8 @@
// Devices that are present on all card types:
int fd_frontend = DvbOpen(DEV_DVB_FRONTEND, n, O_RDWR | O_NONBLOCK);
+ CHECK(ioctl(fd_frontend, FE_SLEEP,NULL));//this avoids the ARM-crash!
// Devices that are only present on cards with decoders:
--
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe vdr" as subject.
Home |
Main Index |
Thread Index