Moin moin!
Sorry I'm posting this here rather than to the more specific
linux-dvb@ mailing list where I'd rather this appear, but my
attempts to surbscibe!@! to that list have been rejected, first
as an invalid e-mail, then an insecure e-mail, and I've been
unable to progress further from this throwaway account.
Feel free to redirect/repost this message there if you're a
qualified developer and feel it's more appropriate.
There is a change that was introduced to the file
drivers/media/dvb/ttusb-dec/ttusbdecfe.c
sometime in the not-too-recent past and which resulted in breaking
the support which early 2.6.1x kernels had for my Hauppauge
DEC-3000s DVB-S device.
The particular code (below) checks the value in a register to
decide the tuning status -- hitherto one had to assume the device
was properly tuned and receiving signal and everything.
60 switch(result[3]) {
61 case 1: /* not tuned yet */
62 case 2: /* no signal/no lock*/
63 break;
64 case 3: /* signal found and locked*/
65 *status = FE_HAS_SIGNAL | FE_HAS_VITERBI |
66 FE_HAS_SYNC | FE_HAS_CARRIER | FE_HAS_LOCK;
67 break;
68 case 4:
69 *status = FE_TIMEDOUT;
70 break;
71 default:
72 pr_info("%s: returned unknown value: %d\n",
73 __func__, result[3]);
74 return -EIO;
75 }
Unfortunately, while this might work for the other flavours of
card (DVB-T?) supported by this code, in the case of my particular
device for DVB-S, the unknown value returned is 0 and does not
change regardless of tuning status.
I haven't checked whether a different register on my particular
device contains a usable value for the above code....