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

Reply via email to