[patch] tv tuner driver update

From: Gerd Knorr (kraxel@bytesex.org)
Date: Thu Oct 31 2002 - 11:31:32 EST


  Hi,

This is a update for the tv tuner module. It makes the descriptions
more verbose and also has some minor bugfixes + cleanups.

  Gerd

--- linux-2.5.45/drivers/media/video/tuner.c 2002-10-31 14:04:49.000000000 +0100
+++ linux/drivers/media/video/tuner.c 2002-10-31 14:20:28.000000000 +0100
@@ -101,10 +101,16 @@
 
 /* system switching for Philips FI1216MF MK2
    from datasheet "1996 Jul 09",
+ standard BG L L'
+ picture carrier 38.90 38.90 33.95
+ colour 34.47 34.37 38.38
+ sound 1 33.40 32.40 40.45
+ sound 2 33.16 - -
+ NICAM 33.05 33.05 39.80
  */
 #define PHILIPS_MF_SET_BG 0x01 /* Bit 2 must be zero, Bit 3 is system output */
-#define PHILIPS_MF_SET_PAL_L 0x03
-#define PHILIPS_MF_SET_PAL_L2 0x02
+#define PHILIPS_MF_SET_PAL_L 0x03 // France
+#define PHILIPS_MF_SET_PAL_L2 0x02 // L'
 
 
 /* ---------------------------------------------------------------------- */
@@ -121,7 +127,9 @@
         unsigned char VHF_H;
         unsigned char UHF;
         unsigned char config;
- unsigned short IFPCoff; /* 622.4=16*38.90 MHz PAL, 732=16*45.75 NTSC */
+ unsigned short IFPCoff; /* 622.4=16*38.90 MHz PAL,
+ 732 =16*45.75 NTSCi,
+ 940 =58.75 NTSC-Japan */
 };
 
 /*
@@ -132,16 +140,16 @@
 static struct tunertype tuners[] = {
         { "Temic PAL (4002 FH5)", TEMIC, PAL,
           16*140.25,16*463.25,0x02,0x04,0x01,0x8e,623},
- { "Philips PAL_I", Philips, PAL_I,
+ { "Philips PAL_I (FI1246 and compatibles)", Philips, PAL_I,
           16*140.25,16*463.25,0xa0,0x90,0x30,0x8e,623},
- { "Philips NTSC", Philips, NTSC,
+ { "Philips NTSC (FI1236 and compatibles)", Philips, NTSC,
           16*157.25,16*451.25,0xA0,0x90,0x30,0x8e,732},
- { "Philips SECAM", Philips, SECAM,
+ { "Philips (SECAM+PAL_BG) (FI1216MF, FM1216MF, FR1216MF)", Philips, SECAM,
           16*168.25,16*447.25,0xA7,0x97,0x37,0x8e,623},
 
         { "NoTuner", NoTuner, NOTUNER,
           0,0,0x00,0x00,0x00,0x00,0x00},
- { "Philips PAL", Philips, PAL,
+ { "Philips PAL_BG (FI1216 and compatibles)", Philips, PAL,
           16*168.25,16*447.25,0xA0,0x90,0x30,0x8e,623},
         { "Temic NTSC (4032 FY5)", TEMIC, NTSC,
           16*157.25,16*463.25,0x02,0x04,0x01,0x8e,732},
@@ -181,7 +189,7 @@
           16*158.00, 16*453.00, 0xa0,0x90,0x30,0x8e,732},
         { "Temic PAL/SECAM multi (4046 FM5)", TEMIC, PAL,
           16*169.00, 16*454.00, 0xa0,0x90,0x30,0x8e,623},
- { "Philips PAL_DK", Philips, PAL,
+ { "Philips PAL_DK (FI1256 and compatibles)", Philips, PAL,
           16*170.00,16*450.00,0xa0,0x90,0x30,0x8e,623},
 
         { "Philips PAL/SECAM multi (FQ1216ME)", Philips, PAL,
@@ -200,7 +208,7 @@
         { "Temic PAL* auto + FM (4009 FN5)", TEMIC, PAL,
           16*141.00, 16*464.00, 0xa0,0x90,0x30,0x8e,623},
         { "SHARP NTSC_JP (2U5JF5540)", SHARP, NTSC, /* 940=16*58.75 NTSC@Japan */
- 16*137.25,16*317.25,0x01,0x02,0x08,0x8e,940},
+ 16*137.25,16*317.25,0x01,0x02,0x08,0x8e,732 }, // Corrected to NTSC=732 (was:940)
 
         { "Samsung PAL TCPM9091PD27", Samsung, PAL, /* from sourceforge v3tv */
           16*169,16*464,0xA0,0x90,0x30,0x8e,623},
@@ -215,8 +223,10 @@
           16*158.00, 16*453.00, 0xa0,0x90,0x30,0x8e,732},
         { "LG PAL (newer TAPC series)", LGINNOTEK, PAL,
           16*170.00, 16*450.00, 0x01,0x02,0x08,0x8e,623},
- { "Philips PAL/SECAM multi (FM1216ME)", Philips, PAL,
+ { "Philips PAL/SECAM multi (FM1216ME MK3)", Philips, PAL,
           16*160.00,16*442.00,0x01,0x02,0x04,0x8e,623 },
+ { "LG NTSC (newer TAPC series)", LGINNOTEK, NTSC,
+ 16*170.00, 16*450.00, 0x01,0x02,0x08,0x8e,732},
 };
 #define TUNERS (sizeof(tuners)/sizeof(struct tunertype))
 
@@ -295,6 +305,13 @@
                 }
                 printk("\n ");
         }
+ // Look for MT2032 id:
+ // part= 0x04(MT2032), 0x06(MT2030), 0x07(MT2040)
+ if((buf[0x11] != 0x4d) || (buf[0x12] != 0x54) || (buf[0x13] != 0x04)) {
+ printk("not a MT2032.\n");
+ return 0;
+ }
+
 
         // Initialize Registers per spec.
         buf[1]=2; // Index to register 2
@@ -621,7 +638,7 @@
 
         /* tv norm specific stuff for multi-norm tuners */
         switch (t->type) {
- case TUNER_PHILIPS_SECAM:
+ case TUNER_PHILIPS_SECAM: // FI1216MF
                 /* 0x01 -> ??? no change ??? */
                 /* 0x02 -> PAL BDGHI / SECAM L */
                 /* 0x04 -> ??? PAL others / SECAM others ??? */
@@ -751,7 +768,7 @@
         buffer[1] = div & 0xff;
         buffer[2] = tun->config;
         switch (t->type) {
- case TUNER_PHILIPS_FM1216ME:
+ case TUNER_PHILIPS_FM1216ME_MK3:
                 buffer[3] = 0x19;
                 break;
         default:
@@ -857,12 +874,14 @@
 
         /* --- configuration --- */
         case TUNER_SET_TYPE:
- if (t->type != -1)
+ if (t->type != -1) {
+ printk("tuner: type already set\n");
                         return 0;
+ }
                 if (*iarg < 0 || *iarg >= TUNERS)
                         return 0;
                 t->type = *iarg;
- dprintk("tuner: type set to %d (%s)\n",
+ printk("tuner: type set to %d (%s)\n",
                         t->type,tuners[t->type].name);
                 strncpy(client->name, tuners[t->type].name, sizeof(client->name));
                 if (t->type == TUNER_MT2032)
@@ -965,7 +984,7 @@
 };
 static struct i2c_client client_template =
 {
- name: "(unset)",
+ name: "(tuner unset)",
         flags: I2C_CLIENT_ALLOW_USE,
         driver: &driver,
 };
--- linux-2.5.45/drivers/media/video/tuner.h 2002-10-31 14:04:38.000000000 +0100
+++ linux/drivers/media/video/tuner.h 2002-10-31 14:20:28.000000000 +0100
@@ -62,7 +62,9 @@
 #define TUNER_TEMIC_4012FY5 35 /* 4012 FY5 (3X 0971, 1099)*/
 #define TUNER_TEMIC_4136FY5 36 /* 4136 FY5 (3X 7708, 7746)*/
 #define TUNER_LG_PAL_NEW_TAPC 37
-#define TUNER_PHILIPS_FM1216ME 38
+#define TUNER_PHILIPS_FM1216ME_MK3 38
+#define TUNER_LG_NTSC_NEW_TAPC 39
+
 
 
 
@@ -84,7 +86,9 @@
 
 #define TUNER_SET_TYPE _IOW('t',1,int) /* set tuner type */
 #define TUNER_SET_TVFREQ _IOW('t',2,int) /* set tv freq */
-#define TUNER_SET_RADIOFREQ _IOW('t',3,int) /* set radio freq */
-#define TUNER_SET_MODE _IOW('t',4,int) /* set tuner mode */
+#if 0 /* obsolete */
+# define TUNER_SET_RADIOFREQ _IOW('t',3,int) /* set radio freq */
+# define TUNER_SET_MODE _IOW('t',4,int) /* set tuner mode */
+#endif
 
 #endif

-- 
You can't please everybody.  And usually if you _try_ to please
everybody, the end result is one big mess.
				-- Linus Torvalds, 2002-04-20
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Oct 31 2002 - 22:00:54 EST