Hi all,
I've no idea if this is useful to anyone but me, but I've done the
"quick and dirty" hack I mentioned about switching audio subcariers for
places like Romania. The pal option to tda9887.o now allows a setting like
pal="dg", specifying that we should use pal-d on VHF and pal-g on UHF.
I am absoultely convinced that I've done a very bad thing in just
declaring a variable external without explicitly exporting it, but I
didn't bother looking up how to do that properly and it works OK...
In use you need to to a NORM adjustment after changing between [UV]HF,
(which isn't automatic, at least under xawtv-3.74)
but that's a lot simpler than reloading the module!
Hope this is useful to someone
David
PS feel free to tell me what I'm breaking!
diff -u driver.orig/tda9887.c driver/tda9887.c
--- driver.orig/tda9887.c Thu Mar 6 17:03:24 2003
+++ driver/tda9887.c Fri Jul 4 09:35:29 2003
@@ -41,7 +41,7 @@
MODULE_PARM(pal,"s");
MODULE_PARM(secam,"s");
MODULE_LICENSE("GPL");
-
+extern int freqband;
/* ---------------------------------------------------------------------- */
#define dprintk if (debug) printk
@@ -126,6 +126,7 @@
static int tda9887_miro(struct tda9887 *t)
{
int rc;
+ char palmode;
u8 bData[4] = { 0 };
u8 bVideoIF = 0;
u8 bAudioIF = 0;
@@ -180,7 +181,14 @@
// stereo boards
bCarrierMode = cQSS;
}
- switch (pal[0]) {
+
+ if (pal[1]!=0 && freqband==1) {
+ palmode=pal[1];
+ } else {
+ palmode=pal[0];
+ }
+ printk("tda9887: pal-%c
(band=%s)\n",palmode,((freqband==0)?"VHF":"UHF"));
+ switch (palmode) {
case 'b':
case 'g':
case 'h':
diff -u driver.orig/tuner.c driver/tuner.c
--- driver.orig/tuner.c Thu Mar 6 16:59:05 2003
+++ driver/tuner.c Fri Jul 4 23:07:09 2003
@@ -32,6 +32,7 @@
static unsigned int type = UNSET;
static unsigned int addr = 0;
static char *pal = "b";
+int freqband=0; /* Which byte of pal[] are we using, based on frequency */
static unsigned int tv_range[2] = { 44, 958 };
static unsigned int radio_range[2] = { 65, 108 };
MODULE_PARM(debug,"i");
@@ -549,7 +550,15 @@
ret=mt2032_compute_freq(rfin,if1,if2,from,to,&buf[1],&sel,t->xogc);
if (ret<0)
return;
-
+ if (rfin>0) { /* No switching for composite in */
+ if (rfin<300000000) { /* where do we switch from UHF to VHF
+ Guess at 1M wavelength */
+ freqband=0;
+ } else {
+ freqband=1;
+ }
+ }
+ printk("tuner: frequency %u band now %d\n",rfin,freqband);
// send only the relevant registers per Rev. 1.2
buf[0]=0;
ret=i2c_master_send(c,buf,4);
--
video4linux-list mailing list
Unsubscribe mailto:[EMAIL PROTECTED]
https://www.redhat.com/mailman/listinfo/video4linux-list