patch-2.4.20 linux-2.4.20/drivers/media/video/tuner.c
Next file: linux-2.4.20/drivers/media/video/tuner.h
Previous file: linux-2.4.20/drivers/media/video/tda9875.c
Back to the patch index
Back to the overall index
- Lines: 213
- Date:
Thu Nov 28 15:53:13 2002
- Orig file:
linux-2.4.19/drivers/media/video/tuner.c
- Orig date:
Fri Aug 2 17:39:44 2002
diff -urN linux-2.4.19/drivers/media/video/tuner.c linux-2.4.20/drivers/media/video/tuner.c
@@ -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'
/* ---------------------------------------------------------------------- */
@@ -132,16 +138,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 +187,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 +206,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,7 +221,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 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))
@@ -253,7 +262,7 @@
return (tuner_getstatus (c) & TUNER_STEREO);
}
-
+#if 0 /* unused */
static int tuner_islocked (struct i2c_client *c)
{
return (tuner_getstatus (c) & TUNER_FL);
@@ -264,12 +273,12 @@
return (tuner_getstatus (c) & TUNER_AFC) - 2;
}
-#if 0 /* unused */
static int tuner_mode (struct i2c_client *c)
{
return (tuner_getstatus (c) & TUNER_MODE) >> 3;
}
#endif
+
// Initalization as described in "MT203x Programming Procedures", Rev 1.2, Feb.2001
static int mt2032_init(struct i2c_client *c)
{
@@ -620,7 +629,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 ??? */
@@ -651,8 +660,9 @@
default:
config |= TEMIC_SET_PAL_BG;
break;
- break;
}
+ break;
+
case TUNER_PHILIPS_FQ1216ME:
config &= ~0x0f;
switch (pal[0]) {
@@ -672,8 +682,8 @@
case 'G':
config |= PHILIPS_SET_PAL_BGDK;
break;
- break;
}
+ break;
}
@@ -703,6 +713,8 @@
buffer[2] = tun->config;
buffer[3] = config;
}
+ dprintk("tuner: tv 0x%02x 0x%02x 0x%02x 0x%02x\n",
+ buffer[0],buffer[1],buffer[2],buffer[3]);
if (4 != (rc = i2c_master_send(c,buffer,4)))
printk("tuner: i2c i/o error: rc == %d (should be 4)\n",rc);
@@ -720,12 +732,10 @@
static void set_radio_freq(struct i2c_client *c, int freq)
{
- u8 config;
- u16 div;
struct tunertype *tun;
struct tuner *t = (struct tuner*)c->data;
unsigned char buffer[4];
- int rc;
+ int rc,div;
if (freq < radio_range[0]*16 || freq > radio_range[1]*16) {
printk("tuner: radio freq (%d.%02d) out of range (%d-%d)\n",
@@ -744,35 +754,27 @@
}
tun=&tuners[t->type];
- config = 0xa4 /* 0xa5 */; /* bit 0 is AFC (set) vs. RF-Signal (clear) */
- div=freq + (int)(16*10.7);
- div&=0x7fff;
-
+ div = freq + (int)(16*10.7);
buffer[0] = (div>>8) & 0x7f;
buffer[1] = div & 0xff;
- buffer[2] = tun->config;
- buffer[3] = config;
- if (4 != (rc = i2c_master_send(c,buffer,4)))
- printk("tuner: i2c i/o error: rc == %d (should be 4)\n",rc);
+ buffer[2] = tun->config;
+ switch (t->type) {
+ case TUNER_PHILIPS_FM1216ME_MK3:
+ buffer[3] = 0x19;
+ break;
+ default:
+ buffer[3] = 0xa4;
+ break;
+ }
- if (debug) {
- current->state = TASK_INTERRUPTIBLE;
- schedule_timeout(HZ/10);
-
- if (tuner_islocked (c))
- printk ("tuner: PLL locked\n");
- else
- printk ("tuner: PLL not locked\n");
+ dprintk("tuner: radio 0x%02x 0x%02x 0x%02x 0x%02x\n",
+ buffer[0],buffer[1],buffer[2],buffer[3]);
- if (config & 1) {
- printk ("tuner: AFC: %d\n", tuner_afcstatus(c));
- } else {
- printk ("tuner: Signal: %d\n", tuner_signal(c));
- }
- }
+ if (4 != (rc = i2c_master_send(c,buffer,4)))
+ printk("tuner: i2c i/o error: rc == %d (should be 4)\n",rc);
}
-/* ---------------------------------------------------------------------- */
+/* ---------------------------------------------------------------------- */
static int tuner_attach(struct i2c_adapter *adap, int addr,
unsigned short flags, int kind)
@@ -824,6 +826,7 @@
this_adap = 0;
switch (adap->id) {
case I2C_ALGO_BIT | I2C_HW_B_BT848:
+ case I2C_ALGO_BIT | I2C_HW_B_RIVA:
case I2C_ALGO_SAA7134:
printk("tuner: probing %s i2c adapter [id=0x%x]\n",
adap->name,adap->id);
@@ -988,7 +991,6 @@
module_init(tuner_init_module);
module_exit(tuner_cleanup_module);
-EXPORT_NO_SYMBOLS;
/*
* Overrides for Emacs so that we follow Linus's tabbing style.
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)